[英]Reading columns from data file in fortran
我编写了以下块以读取外部数据文件:
open(unit=338,file='bounnodes.dat',form='formatted')
DO I=1,NQBOUN
DO J=1,NUMBOUNNODES(I)
read(338,2001) NODEBOUN(i,j)
write(6,*) 'BOUNDARY NODES', NODEBOUN(i,j)
ENDDO
ENDDO
2001
FORMAT(32I5)
据我了解,这应该从bounnodes.dat
读取2 x 32数组。 但是,在读取过程中出现错误end-of-file
并且它打印第一列。
我试图使用相同的代码读取32 x 2的数组,它读取第一列的32个元素,但为下一列输出0s
。
您能解释一下发生了什么吗? 我的格式有误吗?
Fortran中的每个已读语句都会前进到下一条记录。 这意味着普通文本文件中将换行。 尝试这个:
DO I=1,NQBOUN
DO J=1,NUMBOUNNODES(I)
read(338,2001,advance='no') NODEBOUN(i,j)
write(*,*) 'BOUNDARY NODES', NODEBOUN(i,j)
ENDDO
read(338,*)
ENDDO
其中NQBOUN是行数,NUMBOUNNODES(I)是一行中的列数。 (我总是遇到问题,什么是32x2与2x32)
您可以使用隐含的方法使其更短
DO I=1,NQBOUN
read(338,2001) ( NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
write(*,*) ( 'BOUNDARY NODES', NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
ENDDO
甚至
DO I=1,NQBOUN
read(338,2001) NODEBOUN(i,:)
write(*,*) 'BOUNDARY NODES', NODEBOUN(i,1:NUMBOUNNODES(I))
ENDDO
所有这些都使用Fortran 90功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.