请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 174393|回复: 181

[原创]WRF输出控制 (Registry + namelist)

  [复制链接]

新浪微博达人勋

发表于 2011-9-27 23:30:23 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 ztftom 于 2011-10-17 23:26 编辑

(转载请注明出自“气象家园”)
目的:
控制WRF输出 (wrfout*, 也称为history文件), 特别是生成辅助输出文件(auxhist*)以及控制输出频率。有时候,WRF输出许多不需要的变量,或者输出太过频繁,占用空间太大; 有时候,WRF输出又不够频繁,有些量没有输出,这些都可以利用以下的步骤解决。

1. Registry简介
WRF内部变量主要通过Registry来控制(WRF/Registry)。与real run相对应的是Registry.EM。

该文件每一行分为9列:
#   Type   Sym   Dims   Use   Tlev   Stag   IO   Dname   Descrip
每个变量对应一列,比如:
state   real   u   ikjb   dyn_em   2   X   i01rhusdf   "U"   "X WIND COMPONENT"
这一行就对应WRF中所用的U变量

控制输出的在于IO一栏(i01rhusdf),
i: 输入。
r: 重启(restart)输出。如果在IO栏中有"r", 则该变量就会输出到wrfrst*文件中,以便于未来restart run(hot start)时作为初始条件使用。
h:输出,即输出到history文件中。
usdf:控制nesting选项(怎样翻译nesting呢?各位帮帮忙~)
我们可以看到,对输出的控制集中在"h"字符上。

举例说明,
如果删除h, 则U变量将不会输出到history文件中(wrfout*),也不会有任何的辅助输出。
如果改为h1, 则U变量将不会输出到history主文件中(wrfout*), 但会输出到辅助输出文件1中。
如果改为h01,则U变量既会输出到history主文件中(wrfout*),同时也会输出到辅助输出文件1中。
h之后可以跟0(主输出),也可以跟"1,2,3,4,5,6,7,8,9",对应1到9号辅助输出文件。以下写法,都是合法的:
h, h01, h012, h347

注意:每次对Registry进行修改后,必须对WRF进行重新编译(compile),即:
$./clean -a
$./compile em_real

2. 修改namelist.input
举例说明,在Registry中修改rainc和rainnc输出为h02后,要在run/namelist.input中修改添加以下变量:
auxhist2_outname = "rainfall_d<domain>_<date>"      #辅助文件2的命名
auxhist2_interval    = 60                                               #变量输出的间隔,以分钟为单位
io_form_auxhist2    = 2                                                 #辅助文件2的输出格式,2对应netcdf
frame_per_auxhist2 = 1                                                #每个文件中包含的输出数

如果想要修改输出频率,可以在这里更改auxhist2_interval
注意: 如果没有添加这些变量在namelist.input中,辅助输出文件(rainfall*)还是不能生成。
=====================================================================

Registry实际上是一个利用PERL来自动生成WRF源代码的输入文件。这也是每次修改Registry之后要重新编译WRF的原因。在对Registry进行修改之前,有必要对原文件进行备份。

评分

参与人数 6金钱 +69 贡献 +9 收起 理由
zhang710758774 + 20 + 2 很给力!
645345 + 2 很给力!
smart_abell + 10 + 1 很给力!
sywyx + 10 + 1 很给力!
天目神眉 + 17 + 2 很给力!
mofangbao + 10 + 3 谢谢分享~

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-2-14 11:54:21 | 显示全部楼层
请教大家,我用WRF_Chem,想输出CCN的值。查看Registry.EM_COMMON文件发现,
rconfig   real    ccn_conc                namelist,physics      1           1.0E8      h     "ccn_conc"                 "CCN concentration"  这里原本就已经是  h 了,但是wrfout中并没有这个变量,请问如何解决?
密码修改失败请联系微信:mofangbao
回复 支持 5 反对 0

使用道具 举报

新浪微博达人勋

发表于 2015-6-9 19:58:50 | 显示全部楼层
楼主registry里面有好多,具体哪些是需要修改的呢。
io_boilerplate_temporary.inc  registry.chem      Registry.EM              registry.lake   registry.tornado
Registry                      registry.chem.bak  Registry.EM_CHEM         registry.les    registry.tracker
registry.afwa                 registry.clm       Registry.EM_COMMON       Registry.NMM    registry.var
registry.avgflx               Registry.CONVERT   Registry.EM_COMMON.var   registry.sbm    registry.var_chem registry.bdy_perturb          registry.diags     registry.fire            registry.ssib   Registry.wrfvar registry.cam                  registry.dimspec   registry.io_boilerplate  registry.stoch
我用的是wrfchem是不是指修改相应的registry.chem和Registry.EM_CHEM就可以了

密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-7-4 11:46:34 | 显示全部楼层
我按照楼主提供的方法修改了registry 也重新编译了
state   real    aod5502d     ij     misc         1         -     i{15}rh "AOD5502D"   "Total aerosol optical depth at 550 nm" ""
state   real    angexp2d     ij     misc         1         -     i{15}rh "ANGEXP2D"   "Aerosol Angstrom exponent" ""
state   real    aerssa2d     ij     misc         1         -     i{15}rh "AERSSA2D"   "Aerosol single-scattering albedo" ""
state   real    aerasy2d     ij     misc         1         -     i{15}rh "AERASY2D"   "Aerosol asymmetry factor" ""
state   real    aod5503d     ikj    misc         1         -     rh      "AOD5503D"   "3D aerosol optical depth at 550 nm" ""

并且在wrfout中输出了这几个变量,但是这几个变量的数值都为零,请问这是什么原因呢?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2018-9-6 09:41:20 | 显示全部楼层
xinxin 发表于 2013-4-23 10:25
如果是要增加原始的registry 文件里面没有的变量怎么办呢。。。。。。求大神指点@@

请问您解决这个问题了吗,我想要输出一些过程的中间量,但是因为wrf是并行的,所以追踪到的变量都是块状的,现在想完整的把一个中间变量输出出来,求大神指点
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-12-27 08:24:57 | 显示全部楼层
花小菜 发表于 2016-12-27 08:21
没有解决哎,我也是有些变量加了h仍然输不出~

那你有没有遇到输出之后画图全部是常值0的情况?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2012-11-6 18:25:37 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2011-10-28 21:47:09 | 显示全部楼层
天目神眉 发表于 2011-10-28 20:57
那如果不在namelist里加这句话的话,在wrfout文件中会有增加变量吗?

看你怎么修改Registry的entry了,如果你增加entry,然后h的话(相当于h0),它会output到stream 0, 也就是wrfout文件(也就是你在namelist里定义的history名字,一般是wrfout_d01_2011-01-01_00:00:00)。如果这个entry的h2,它应该要output到stream 2里,但如果你没有定义auxhist2这几个变量的话,就不会有aux输出文件。打个比方,在Registry里定义h*相当于给数据输出指明走哪个出口,但这个出口的大门开不开,是由namelist里的选项控制的。而出口0比较特殊,就是所谓的wrfout。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-5 14:58:25 | 显示全部楼层
楼主,您好厉害!
向您请教一下,我在WPS完成metgrib.exe后,met_em.d01文件中的AOD5502D12M变量中是有值的(非0),但是real.exe步骤后,生成的wrfinput文件中AOD550的数据全部是0,是不是由于Registry.EM文件中没有指定AOD550相关变量呢?如果要更改输入的变量,是不是要修改Registry.EM文件吗?我查看了Registry.EM_COMMON文件,其中已经指定了AOD550的变量,但是Registry.EM没有相关的变量。这样的话,是否需要修改Registry.EM呢?Registry.EM中的变量很少。
具体是修改Registry文件,还是Registry.EM文件呢?好迷茫。
希望您百忙之中能够指点我一下。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2018-10-15 16:10:55 | 显示全部楼层
吴阿好大人 发表于 2016-12-25 08:42
请问前辈有没有解决?我最近也在研究关于如何修改WRF输出变量,我想输出的是湍流扩散系数,可以在Registr ...

请问现在你的湍流扩散系数可以输出了吗?如果可以的话,能不能请教一下你。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2012-5-18 10:32:51 | 显示全部楼层
这个网站真的不错,遇到的问题在这里终于找到了答案。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 19710
发表于 2011-9-28 00:24:13 | 显示全部楼层
nesting——嵌套,OK?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-9-28 08:22:20 | 显示全部楼层
兰溪之水 发表于 2011-9-28 00:24
nesting——嵌套,OK?

嗯,这个词好。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-10-28 18:17:50 | 显示全部楼层
唉,可惜早没看到啊,我还自己研究了半天,原来楼主早就有经验,悲剧的是,你注意以后的事情,我一个都没做,原来还是没起作用啊{:eb343:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-10-28 18:31:19 | 显示全部楼层
再请教一下楼主,这个辅助输出文件(auxhist*)生成在哪里呢?难道是namelist中设置后才生成吗,还有,“修改namelist.input”下面这一段,意思是说把rainc和rainnc两个变量都输入到rainfall_d<domain>_<date>吗? 那123456789这些辅助文件,有什么规则吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-10-28 20:31:11 | 显示全部楼层
天目神眉 发表于 2011-10-28 18:31
再请教一下楼主,这个辅助输出文件(auxhist*)生成在哪里呢?难道是namelist中设置后才生成吗,还 ...

是的,你要在namelist设置了之后才会生成。
如果设置成:
auxhist2_outname = "rainfall_d<domain>_<date>"
会生成在run文件夹里
如果设置成:
auxhist2_outname = “/home/a/wrf/rainfall_d<domain>_<date>"
会生成在/home/a/wrf里
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-10-28 20:57:45 | 显示全部楼层
ztftom 发表于 2011-10-28 20:31
是的,你要在namelist设置了之后才会生成。
如果设置成:
auxhist2_outname = "rainfall_d_"

那如果不在namelist里加这句话的话,在wrfout文件中会有增加变量吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-10-28 22:01:38 | 显示全部楼层
ztftom 发表于 2011-10-28 21:47
看你怎么修改Registry的entry了,如果你增加entry,然后h的话(相当于h0),它会output到stream 0, 也就是 ...

对的,我在Registry.EM中的某个变量的 对应的那一列,原来是rd, 我改成了rhd,namelist中没变,这样的话,按照你的说法,应该也能在wrfout*中输出该量吧? 也就是加个h和h0是一样的效果吧?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-10-28 22:05:01 | 显示全部楼层
天目神眉 发表于 2011-10-28 22:01
对的,我在Registry.EM中的某个变量的 对应的那一列,原来是rd, 我改成了rhd,namelist中没变,这样的话, ...

嗯,理论上是应该有的。你找不到么?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表