1
我正在嘗試在Fortran代碼中的兩個不同位置(主程序和子例程)未格式化文件中寫入。問題是,當我這樣做時,結果會改變,我懷疑這是因爲內存分配覆蓋了我用來在我的CFD代碼中進行仿真的數據。我問:是否有可能在代碼中只使用一次格式化的文件(寫入)?我的意思是,我必須使用相同的文件來保存所有數據,而不是使用不同的文件。在Fortran中寫入兩個不同格式的未格式化文件
我複製粘貼代碼的兩個部分,顯示什麼,我想描述:
在主程序中,循環是:
call numcar (isave,suffix)
longueur=index(nchamp,' ')-1
nfichier=nchamp(1:longueur)//suffix
longueur=index(nfichier,' ')-1
open(10,file=nfichier(1:longueur),form='unformatted')
write(10) real(uxn,4),real(uyn,4),real(wzn,4),real(ppo,4)
close(10)
! *****************************************
isave=isave+1
,並在子程序,循環是:
call numcar (isavediv,suffix1)
longueur1=index(ndiv,' ')-1
nfichier1=ndiv(1:longueur1)//suffix1
longueur1=index(nfichier1,' ')-1
open(20,file=nfichier1(1:longueur1),form='unformatted')
write(20) real(ppm,4)
close(20)
! *****************************************
isavediv=isavediv+1
所有的變量都聲明爲在這兩個主程序和子程序IMPLICIT NONE
。
一:什麼樣的結果改變?文件中的值,運行時變量的值?其次:在兩個不同的調用中,變量看起來不同,所以如果您消除一個調用,則需要將變量添加到另一個調用中。 –
第一:運行時間更改期間我的變量的值。第二:變量是不同的。正如你所說,我可以將變量添加到其他變量中,但是我想在每個子程序中進行調用。事實是:當我不使用第二次調用時,我的模擬結果很好,但是當我想在第二次調用中用未格式化的語句保存數據時,我的模擬結果發生了變化。我的模擬變得不穩定,我不明白他們爲什麼會改變(模擬的運行時數據),如果我只是將數據保存在文件中。 – flaviusaetius