我有一个执行数值积分的 FORTRAN 代码。所有计算的数据都写入外部文件 (data.out)。这是代码的简单草图
OPEN(UNIT=10,FILE='data.out')
DO i=1,n
........
WRITE(10,'(7(E22.16,1x))')a,b,c,d,e,f,g
........
ENDDO
CLOSE(10)
程序持续运行很长时间(约 1.5 小时),直到数值积分完成。在执行期间,我想在 .out 文件中查看结果。但是,当我在 .exe 运行时尝试打开 .out 文件时,我收到以下消息:“文档 data.out 已被另一个应用程序使用,无法访问。” 那么,有没有办法在执行过程中打开 .out 文件呢?观察输出值对我来说很重要(它们不仅仅是上面示例中的 7 个),因此在屏幕输出中发送它们并不方便(显着降低了代码的速度)。提前谢谢了。
* 编辑 *
这是与上述情况非常相似的另一种情况。在这里,集成例程从输入文件读取初始条件并将输出写入另一个外部文件。下面我给出对应的代码骨架
OPEN(UNIT=10,FILE='input.par',STATUS='UNKNOWN')
2 READ(10,*,END=1) x_0,y_0
! INTEGRATION LOOP
DO i=1,n
........
ENDDO
OPEN(UNIT=12,FILE='data.out')
WRITE(12,'(7(E22.16,1x))')a,b,c,d,e,f,g
GOTO 2
1 CLOSE(10)
CLOSE(12)
因此,例程打开 UNIT 10 读取初始条件,执行积分,并在积分结束时将输出写入 UNIT 12。然后,它采用另一组初始条件并重复相同的过程,直到不再存在UNIT 10 中的初始条件。同样,我希望能够打开和监视 UNIT 12。我尝试了您的方法,但在这种情况下它不能正常工作。我可以随时打开 UNIT 12,但该例程不会在此处写入所有输出。事实上,它只写入最后一组初始条件的输出。有任何想法吗?我坚信对您的方法稍作修改就可以完成这项工作。