首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用netcdf4编写netcdf经典格式文件

使用netcdf4编写netcdf经典格式文件
EN

Stack Overflow用户
提问于 2014-02-17 05:49:21
回答 1查看 416关注 0票数 0

我最近才接触到netcdf,对它的使用没有多少头绪。此外,我的问题是具体的,我还没有找到任何有用的东西。我有一个使用MPI在parralel中执行计算的fortran代码。最终结果-笛卡尔坐标系统中的3D字段-然后使用netcdf将每个字段写入另一个文件。编写过程由以下代码定义:

代码语言:javascript
复制
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命令:

代码语言:javascript
复制
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格式编写所需的数据,而不会出现上述问题。如果问题的表达不清楚,我可以提供给我带来麻烦的原始子例程。

感谢您提前提出的所有意见

EN

回答 1

Stack Overflow用户

发布于 2014-02-18 18:22:03

您是否检查了NetCDF例程返回的状态?以并行方式写入NetCDF3格式无论如何都是不可能的,因此nf90_open语句中可能已经存在错误。尝试将NetCDF调用封装到提供的Check子例程中。这应该会给出更有意义的错误消息:

代码语言:javascript
复制
call check( nf90_open(...) )


contains
  subroutine check(status)
    integer, intent ( in) :: status

    if(status /= nf90_noerr) then 
      print *, trim(nf90_strerror(status))
      stop "Stopped"
    end if
  end subroutine check 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21817158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档