在Fortran中的两个不同位置写入未格式化的文件

时间:2013-07-13 16:25:17

标签: file fortran format

我正在尝试在Fortran代码中的两个不同位置(主程序和子程序)中编写未格式化的文件。问题在于,当我这样做时,结果会发生变化,我怀疑这是因为内存分配正在覆盖我用来在我的CFD代码中进行模拟的数据。我问:是否可以在代码中使用未格式化的文件(写入)一次?我的意思是,我必须使用相同的文件来保存我的所有数据,而不是使用不同的文件。

我复制并通过代码的两个部分来展示我想要描述的内容:

在主程序中,循环是:

         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

1 个答案:

答案 0 :(得分:1)

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

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