减少输出变量
WRF的模拟结果wrfout中包含了大量的变量,从网格点到模拟变量值,但如果输出变量太多,导致数据存储压力大,因此可以考虑减少输出到wrfout中的变量。
具体方法在userguide中也提到过,可以通过修改Registry来实现,ARW内核对应的是Registry/Registry.EM_COMMON
文件,对其修改,然后再重新编译(clean -a
、configure
、compile
)。
但在3.2版本后,可以通过直接在namelist.input
中可以指定剔除不需要输出的变量,即:
&time_control
iofields_filename = "my_file_d01.txt", "my_file_d02.txt"
ignore_iofields_warning = .true.,
在my_file_d01.txt
文件中,可以指明需要删除的变量有哪些,具体内容如下:
-:h:0:RAINC,RAINNC
-
表示删除,
表示增加;
h
表示history,这里可以理解为输出,i
表示输入;
0
-24
:表示经过的通道,一般默认0
;
可以直接进行换行,但每一行的的开头需要类似于-:h:0:
格式,然后后面的变量之间用英文逗号隔开。
ignore_iofields_warning
表示碰到错误时如何处理,如果设置为.true.
则会打印警告信息且继续运行,如果设置为.false.
时碰到错误会直接中断,推荐设置为.true.
,所有的domain都通用,不用单独设置。
实操
使用了my_file_d01.txt
类似如下,其中的变量来自于默认输出的wrfout,将自己用不到的变量提了出来,放到了里面。
txt
对应的namelist.input
如下,两层网格都使用了同一个my_file_d01.txt
&time_control
iofields_filename = "my_file_d01.txt", "my_file_d01.txt"
ignore_iofields_warning = .true.,
&domains
max_dom = 2
最后输出了对应的wrfout,大小对比如下:
filesize
模拟了12个小时,对比默认的wrfout(nochanged.nc
),文件大小差不多缩小了接近一半,仍包含了常用的2m温度,10m风速,UV风,感热潜热通量等。
其中注意事项包括:
- 多个domain可以使用同一个控制文件,类似上面的
my_file_d01.txt
; my_file_d01.txt
文件中的变量需完全正确,如果某个变量设置不正确,可以正常运行,但会出现warning,如下:WARNING: Unable to modify mask for wdntc. Variable not found. File: my_file_d01.txt at line 4
,根据报错可以发现第4行中的wdntc
不正确,重新修改以后可以正常运行。
如果需要上面使用的my_file_d01.txt
,可以后台回复my-file