2013-07-13 47 views
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

+0

一:什么样的结果改变?文件中的值,运行时变量的值?其次:在两个不同的调用中,变量看起来不同,所以如果您消除一个调用,则需要将变量添加到另一个调用中。 –

+0

第一:运行时间更改期间我的变量的值。第二:变量是不同的。正如你所说,我可以将变量添加到其他变量中,但是我想在每个子程序中进行调用。事实是:当我不使用第二次调用时,我的模拟结果很好,但是当我想在第二次调用中用未格式化的语句保存数据时,我的模拟结果发生了变化。我的模拟变得不稳定,我不明白他们为什么会改变(模拟的运行时数据),如果我只是将数据保存在文件中。 – flaviusaetius

回答

1

我解决了我的问题。 问题是我使用的是20号频道,我的一位同事告诉我这个频道被计算机或某些设备用来处理数据。 我改变了频道号码10,它再次运作良好。 感谢您的意见。 现在看起来这样:

 open(10,file=nfichier1(1:longueur1),form='unformatted') 
    write(10) real(ppm,4) 
    close(10)