前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WRF模式之WPS的配置运行

WRF模式之WPS的配置运行

作者头像
bugsuse
发布2020-04-21 17:17:01
4.7K0
发布2020-04-21 17:17:01
举报
文章被收录于专栏:气象杂货铺气象杂货铺

编译安装好可以模拟实际个例的WRF模式之后,在模拟之前需要先确定模拟域(即模拟范围)以及数据预处理(插值陆面数据,比如地形,土壤等数据;差插值气象数据到模拟域)过程。这就是WPS——模式前处理系统。

模式前处理过程主要由三个程序处理:geogrid,ungrib,metgrid。每一个程序负责一个部分:

  • geogrid 主要用于定义模拟域,插值陆面数据到模拟域 根据 namelist.wps 中 &geogrid 字段的参数确定模拟域,投影以及嵌套关系。可用的地形数据精度为:10‘,5’,2‘,30’‘(更高精度的地形数据需要自定义)。
  • ungirb 主要从 GRIB 文件中提取模式所需的气象场数据,然后写入到中间格式文件
  • metgrid 主要将 ungrib 提取的气象场数据水平插值到 geogrid 定义的模拟域

namelist.wps 文件控制着上述三个程序的行为,通常的 namelist.wps 文件包含以下信息:

代码语言:javascript
复制
&share
 wrf_core = 'ARW',
 max_dom = 2,
 start_date = '2015-10-04_00:00:00','2015-10-04_00:00:00',
 end_date   = '2015-10-05_00:00:00','2015-10-05_00:00:00',
 interval_seconds = 21600
 io_form_geogrid = 2,
/

&geogrid
 parent_id         =   1,      1,      2,
 parent_grid_ratio =   1,      3,      3,
 i_parent_start    =   1,      50,    200,
 j_parent_start    =   1,      40,    180,
 e_we              =   241,    424,   1781,    
 e_sn              =   220,    421,   1781,
 geog_data_res     = '10m', '2m',  '30s',
 dx = 9000,
 dy = 9000,
 map_proj  = 'lambert',
 ref_lat   =  23.00,
 ref_lon   = 113.00,
 truelat1  =  15.0,
 truelat2  =  30.0,
 stand_lon = 117.00,
 geog_data_path = '/geog/path/'
/

&ungrib
 out_format = 'WPS',
 prefix = 'FILE',
/

&metgrid
 fg_name = 'FILE'
 io_form_metgrid = 2, 
/

namelist.wps 中包含四个部分: &share,&geogrid,&ungrib,&metgrid。

  • &share 部分控制三个程序共享的参数设置
代码语言:javascript
复制
 wrf_core = 'ARW',  # 控制动力核
 max_dom = 2,       # 控制模拟域嵌套层数
 start_date = '2015-10-04_00:00:00','2015-10-04_00:00:00',  #控制模拟开始时间
 end_date = '2015-10-05_00:00:00','2015-10-05_00:00:00',    #控制模拟结束时间
 interval_seconds = 21600     # 初始场文件的时间间隔
 io_form_geogrid = 2,   # geogrid输出文件格式,默认为 netcdf
 
 # 除了上述参数设置之外,还有一些可选参数设置
  • &geogrid 控制 geogrid.exe 的参数设置
代码语言:javascript
复制
 parent_id         =   1,      1,      2,  # 模拟域 ID,除第一层之外,其余层ID递增,第2层为1,第3层为2
 parent_grid_ratio =   1,      3,      3,  # 每一层之间的网格格距比
 i_parent_start    =   1,      50,    200, # 每一层在其上一层中X方向的起始点
 j_parent_start    =   1,      40,    180, # 每一层在其上一层中Y方向的起始点
 e_we              =   241,    424,   1781,  # 每一层的X方向格点总数  
 e_sn              =   220,    421,   1781,  # 每一层Y方向的格点总数
 geog_data_res     = '10m', '2m',  '30s',   # 每一层的地形数据精度 parent_grid_ratio = 1, 3,  
 dx = 9000,       # 最外层X方向网格格距,单位 km
 dy = 9000,       # 最外层Y方向网格格距,单位 km
 map_proj = 'lambert',  # 投影方式
 ref_lat = 23,    # 最外层模拟域中心纬度
 ref_lon = 113,   # 最外层模拟域中心经度
 truelat1 = 15,    # Lambert 投影的第一个真实纬度
 truelat2 = 30,    # Lambert 投影的第二个真实纬度
 stand_lon = 117,  # Lambert 投影和Y轴平行的经度
 geog_data_path = '/glade/p/work/wrfhelp/WPS_GEOG/'  # 地形数据存放路径
  • &ungrib 控制 ungrib.exe 的参数设置
代码语言:javascript
复制
 out_format = 'WPS',
 prefix = 'FILE',
  • &metgrid 控制 metgrid.exe 的参数设置
代码语言:javascript
复制
 fg_name = 'FILE'
 io_form_metgrid = 2,

介绍好每一部分之后就可以准备数据进行模拟前的处理了。

  1. 定义模拟域 按照上述 &geogrid 部分的参数设置可以确定模拟域。一般情况下最外层的范围很容易确定,而第二层的范围设置时通过 i_parent_start, j_parent_start, parent_grid_ratio, e_we, e_sn 等参数确定。 parent_grid_ratio 表示每一层模拟域之间的网格格距比,因为D01没有父区域,所以D01的 prent_grid_ratio 为 1,而D02的父区域为D01,因此D02的嵌套比可以为其它值,默认值为3,也可以设置为其他值。 i_parent_start 表示每一层在上一层模拟域中的X方向起始点坐标,因为D01没有父区域,所以为1,而D02的父区域为D01,所以其在D01中的起始点为50,此值应小于 e_we 对应的 D01的值;j_parent_start 类似,表示Y方向的值 e_wee_sn 分别表示每个模拟域 X和 Y方向的总格点数 D02 和 D01左侧边界之间的距离通过 i_parent_start 来确定,那么如何确定右侧边界之间的距离呢?见下图(清晰大图见底部链接下载) 其实右侧的距离不需要通过参数指定,只需要在计算 e_we 的时候指定就行了。 d02: e_we = (d01:e_we - d02:i_parent_start - d02:i_parent_end)*d02:parent_grid_ratio + 1 其中 d01: ,d02:表示模拟域对应的值,i_parent_end 表示D02和D01右侧的网格距离,这是虚拟参数,非 namelist.wps 中的参数,这个值在计算 e_we 的时候直接指定即可,比如想设置 D02 和 D01 左侧的距离为 50, 右侧的距离为 50,那么 d02:e_we = (241 - 50 - 50)*3 + 1 = 424,当然也可以设置左侧距离为30,右侧距离为 20, 那么 d02:e_we = (241 - 30 - 20)*3 + 1 = 574。 Y方向的计算方式类似X方向的计算。 注意: 每个模拟域之间的网格数不要小于5。

设置好参数之后就可以运行了:

代码语言:javascript
复制
./geogrid.exe

然后看到屏幕输出以下内容则表示成功:

代码语言:javascript
复制
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Successful completion of geogrid. !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

B.提取气象场 下载好初始场文件之后就可以提取气象要素并写入到中间文件中,此部分处理需要 &share 和 &ungrib 部分的参数设置。

代码语言:javascript
复制
&share
 wrf_core = 'ARW',
 max_dom = 2,
 start_date = '2015-10-04_00:00:00','2015-10-04_00:00:00',
 end_date   = '2015-10-05_00:00:00','2015-10-05_00:00:00',
 interval_seconds = 21600  # 初始场文件的时间间隔,6小时再分析数据的时间间隔为 21600
 io_form_geogrid = 2,
/

&ungrib
 out_format = 'WPS',  # 中间文件的格式
 prefix = 'FILE',   # 中间文件的路径和前缀,默认为当前路径
/

设置好参数之后,先将初始场文件对应的 Vtable 文件链接到WPS目录:

代码语言:javascript
复制
ln -s ungrib/Variable_Tables/Vtable.GFS Vtable

注意: 通常使用NECP FNL再分析数据时,可以链接Vtable.GFS文件,但是由于有些时段的文件更新了,需要链接 Vtable.GFS_new 链接好 Vtable 文件之后,要链接 初始场文件:

代码语言:javascript
复制
./link_grib.csh /data/fnl/fnl_2015*

链接好 GRIB和Vtable文件之后,就可以执行 ungrib.exe 提取气象场数据了:

代码语言:javascript
复制
./ungrib.exe

同样会得到如下信息:

代码语言:javascript
复制
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Successful completion of ungrib. !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

C.水平插值气象场 这一部会用到 &share 和 &metgrid 部分的参数设置。 fg_name 表示中间文件的路径和前缀,默认路径为当前路径,前缀为FILE,可以根据需要更改。

代码语言:javascript
复制
&metgrid
 fg_name = 'FILE'
 io_form_metgrid = 2,  # 控制输出文件的格式
/

进行水平插值时,设置好参数之后直接运行 metgrid.exe 即可:

代码语言:javascript
复制

./metgrid.exe
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Successful completion of metgrid. !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

上面就是运行WPS所需要的流程,流程基本一致。关于 namelist.wps 的参数设置以及高级应用以后再说。


注1:链接: https://pan.baidu.com/s/1ctYglK 密码: thvp

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档