Java中子程序输出到输出文件中,在Fortran子程序中读取许多文件

博主在使用Fortran编写子程序时遇到了一个读取大量文件的问题。子程序根据输入参数从数千个文件中读取一行数据。在本地运行时一切正常,但在多核环境下与主程序一起运行时,部分文件无法正确读取,表现为IOSTAT值不一致。博主检查了错误代码,发现29可能意味着文件未找到,但文件实际存在。怀疑问题可能与并行执行有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个Fortran子例程,在主程序中调用了几次(我无法访问) . 在我的子程序中,我希望根据输入参数在每次迭代中从几个(~10 ^ 4)个文件中的一个读取数据 . 每个文件都有一行数据;我的数据格式如下:

0.97014199999999995 0.24253600000000000 0.0000000000000000

我正在使用以下代码行来打开和读取文件:

program test_read

implicit none

integer :: i, iopen_status, iread_status

real :: gb

CHARACTER(len=25) :: filename

CHARACTER(*), PARAMETER :: fileplace =

& "/home/ajax/hexmesh_readn/G3/"

dimension gb(3)

i = 5

WRITE(filename,'(a,I0,a)')'GBn_',i,'.txt'

open(unit=15,

& file=fileplace//filename,IOSTAT=iopen_status)

read (15,*,IOSTAT=iread_status) gb

print *,"gb",gb(1),gb(2),gb(3)

close(15)

end program test_read

在主程序中,i是一个变量,但我有一个文件,表示i的所有可能值 .

现在,当我在本地计算机上运行时,此代码运行良好 . 但是,当我将它与主程序一起提交时,它表现得有些奇怪 . 具体来说,它会读取一些文件,但不会读取其他文件 .

当我打开IOSTAT进行打开和读取时,我看到所有文件的打开IOSTAT为0,而对于某些文件,读取命令的值为0,有些为-1,其他为29!我查看了错误代码29的含义,并了解到它可能表明该文件未在路径中找到 . 但文件绝对是存在的 .

另外,我不能阅读 . 事实上,我甚至看到同一个文件给出IOSTAT值为0和29!

需要注意的一点是,我在几个核心上运行主程序 . 这可能与错误有关吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值