小编phi*_*ilb的帖子

读取名单中的数组部分

考虑包含二维数组的名单。例如,以下程序从文件“input.dat”读取。

program test
    use :: iso_fortran_env

    implicit none

    integer :: ierr, unit, i
    real(kind=kind(0.0d0)), allocatable :: p(:, :)

    namelist /VAR_p/ p

    allocate(p(2,2))
    open(newunit=unit, file='input.dat', status='old', iostat=ierr)
    read(unit, nml=VAR_p, iostat=ierr)
    close(unit)

    do i = 1, size(p, 1)
        write(output_unit, '(F4.2," ",F4.2)') p(i,1), p(i,2)
    end do
end program test
Run Code Online (Sandbox Code Playgroud)

可以在“input.dat”中提供数组 p 作为

! input.dat
&VAR_p
p(1,1) = 1.2
p(1,2) = 3.2
p(2,1) = 1.0
p(2,2) = 0.0
/
Run Code Online (Sandbox Code Playgroud)

有了这个输入,程序就可以正常运行了。尽管如此,我宁愿逐行提供数组 p 。就像是

! input.dat
&VAR_p
p(1,:) = (1.2, 3.2)
p(2,:) = (1.30, 0.0)
/ …
Run Code Online (Sandbox Code Playgroud)

arrays fortran fortran-namelist

5
推荐指数
1
解决办法
1450
查看次数

标签 统计

arrays ×1

fortran ×1

fortran-namelist ×1