我正在为Fortran代码编写名单输入文件.我知道如果你有一维数组,你可以填充一系列元素,
&namelist
array(10) = 0, 1, 2, ......., n
&END
Run Code Online (Sandbox Code Playgroud)
相当于
&namelist
array(10) = 0
array(11) = 1
array(12) = 2
...
array(10 + n) = n
&END
Run Code Online (Sandbox Code Playgroud)
我现在需要写一个二维数组.我想做最短的等价物
&namelist
array2d(1,1) = 1
array2d(1,2) = 2
&END
Run Code Online (Sandbox Code Playgroud)
我能把它写成
&namelist
array2d(1) = 1, 2
&END
Run Code Online (Sandbox Code Playgroud)
或者我需要写这个
&namelist
array2d(1,1) = 1, 2
&END
Run Code Online (Sandbox Code Playgroud)
哇,谢谢你的问题 - 之前从未听过名单:)这很有用!! :)经过一些测试,较旧的gfortran版本存在问题.让我们说你有
program nltest
implicit none
integer :: a(3,3)
namelist /mylist/ a
a = 0
open(7, file='nlinput.txt')
read(7, nml = mylist)
write(*,*) a
end program nltest
Run Code Online (Sandbox Code Playgroud)
a=1,2,3,4,5,6,7,8,9:这个工作正常并读取(1,1),a(2,1),...无论编译器如何都可以预期.a(2,:)=1,2,3:这适用于ifort和gfortran 4.6.1,但是使用gfortran 4.3则没有.因此,array2d(1,:) = 1,2如果代码是使用最近的编译器编译的,那么为了做你想做的事,你应该能够写.