- 积分
- 8
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-1-11
- 最后登录
- 1970-1-1
|
发表于 2019-12-26 10:40:02
|
显示全部楼层
我也遇到这个问题,最近终于解决了。不能输出wrf_d02的原因是文件大小超过了2G, 必须设置netcdf为64-bit offset格式,打开大文件读写功能。
首先,找一个之前输出过的wrfout或wrfrst文件检查一下netcdf格式
> od -An -c -N4 wrfout_d01_xxx.nc
输出 C D F 001,表示32-bit classic格式, 不能读写超过2G的文件。
输出 C D F 002,表示64-bit offset格式, 可以读写超过2G的文件。
注意,必须安装netcdf3.5之后的版本,才自带64-bit offset格式。
果然,我的netcdf文件是32-bit classic格式。
其次,设置环境变量(csh为例),重新configure,compile,run
setenv WRFIO_NCD_LARGE_FILE_SUPPORT 1
>./clean -aa
>./configure
>./compile em_real >& compile.log
查看compile.log出现了
WRFIO_NCD_LARGE_FILE_SUPPORT=1
...
if [ $a -a "$WRFIO_NCD_LARGE_FILE_SUPPORT" = "1" ] ; then \
/lib/cpp -P -P -traditional -DWRFIO_NCD_LARGE_FILE_SUPPORT -I../ioapi_share wrf_io.F90 | m4 -Uinclude -Uindex -Ulen - > wrf_io.f ; \
...
>nohup mpirun -np 200 ./wrf.exe
最后,检查是否生成了wrfrst_d02文件,大小是否超过了2G,用前面的方法检查是否为64-bit offset格式。 |
|