繁体   English   中英

使用带有名称列表的allocatable / assume-size数组读写

[英]Using allocatable/assumed-size arrays with namelist read write

我正在使用VS2012和Intel Visual Fortran 2015。

根据https://software.intel.com/en-us/forums/topic/269585 ,现在允许使用带有名称列表读取和写入的可分配和假定大小的数组; 但是,我仍然收到错误“namelist-group-object不能是假定大小的数组”。

示例代码:

subroutine writeGrid(fname, grid)

    character*(*) :: fname
    real*8, dimension(:,:) :: grid

    namelist /gridNML/ grid

    open(1, file=fname)
    write(1, nml=gridNML)
    close(1)

end subroutine writeGrid

我启用了F2003语义。

我错过了什么?

这看起来像编译器错误。 假设阵列grid形状 ,而不是假设的大小 从F2003开始,在名单中允许假定的形状数组,假设大小数组仍然被禁止(在运行时,假定大小数组的大小不一定是已知的,因此禁止需要知道大小的操作)。

一个简单的解决方法是将伪参数重命名为其他内容,然后将其值复制到本地可分配的命名grid

subroutine writeGrid(fname, grid_renamed)
  character*(*) :: fname
  real, dimension(:,:) :: grid_renamed
  real, dimension(:,:), allocatable :: grid

  namelist /gridNML/ grid

  open(1, file=fname)
  allocate(grid, source=grid_renamed)
  write(1, nml=gridNML)
  close(1)
end subroutine writeGrid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM