【发布时间】:2014-02-18 18:22:03
【问题描述】:
我最近才遇到 netcdf 并且对使用它没有太多线索。此外,我遇到的问题是具体的,我还没有发现任何有用的东西。我有一个使用 MPI 以并行方式执行计算的 fortran 代码。然后使用 netcdf 将最终结果(笛卡尔坐标系中的 3d 字段)分别写入另一个文件。编写过程由以下代码定义:
nf90_create(path=file_name,&
cmode=IOR(NF90_NETCDF4,NF90_MPIIO),ncid=ncid,&
comm=mpid%comm,info=MPI_INFO_NULL))
现在,我有另一个使用 netcdf3 的代码,因此它无法读取 netcdf4 格式。我想做的是用NF90_CLASSIC_MODEL改变cmode NF90_NETCDF4。当我这样做时,代码会编译、运行,但它会以完全错误的方式写入数据。此外,它在从写入变量 A 到写入变量 B 之前停止。或者在它必须退出使用该命令的子例程之前。澄清一点:在给出的命令之后,代码根据 MPI 定义 start 和 count 并使用以下 netcdf 命令:
nf90_def_dim(ncid,dim_name(i),dim_len(i),dimid(i))
nf90_def_var(ncid,var_name,nf90_real,dimid,varid(1))
nf90_enddef(ncid)
nf90_put_var(ncid,varid(1),var,start=startv,count=countv)
nf90_close(ncid)
所以,我很感兴趣,我应该对代码进行哪些更改才能以经典或 64bit_offstring 格式写入所需的数据而没有提到的问题。如果问题的表现不清楚,我可以提供给我带来麻烦的原始子程序。
提前感谢所有的cmets
【问题讨论】:
-
从代码的 CMakeList 中我看到使用了 netcdf4。更具体地说,这里是使用的库的完整列表,与 netcdf 连接:-I/opt/netcdf/netcdf4/include -L/opt/netcdf/netcdf4/lib -lnetcdff -L/opt/pnetcdf/pnetcdf-1.2 .0/lib -L/opt/netcdf/netcdf4/hdf5.1.8.8/lib -lnetcdf -lpnetcdf -lhdf5_hl -lhdf5 -lm -lz -lcurl;