![6deb1a9dae7fd9eb7bc3e6545cf28d29.png](https://i-blog.csdnimg.cn/blog_migrate/d65a46cba83a8cc3e59dc204a80dcc89.png)
上篇文章我们介绍了WRF模式的安装WRF数值模型学习记录 | 安装,接下来就该是WRF的运行了。
本文主要分为两个部分:
WRF模式运行流程 namelist简要介绍 WPS控制文件namelist.wps![6deb1a9dae7fd9eb7bc3e6545cf28d29.png](https://i-blog.csdnimg.cn/blog_migrate/d65a46cba83a8cc3e59dc204a80dcc89.png)
WRF包含两个内核(也叫动力学求解器),分别为ARW(Advanced Research WRF)和NMM(Nonhydrostatic Mesoscale Model)内核,比较常用的是前者,下面的图片就是其整体运行的流程图。
![2a0ce1b8e6da500f4ce7fab29bd8c8ef.png](https://i-blog.csdnimg.cn/blog_migrate/721f3d59d1c1721b89ae351a658f4f28.png)
![2a0ce1b8e6da500f4ce7fab29bd8c8ef.png](https://i-blog.csdnimg.cn/blog_migrate/721f3d59d1c1721b89ae351a658f4f28.png)
![b911835cc62ef1b66c44687a8ac6a531.png](https://i-blog.csdnimg.cn/blog_migrate/cd318bc76ba516e4048afde12c88870a.png)
![b911835cc62ef1b66c44687a8ac6a531.png](https://i-blog.csdnimg.cn/blog_migrate/cd318bc76ba516e4048afde12c88870a.png)
WRF运行一般整体流程就是:准备数据(地形数据+气象数据) -> WPS -> WRF -> 运行结束,数据处理
其中不得不提到两个参数控制文件
namelist.wps(WPS的控制文件)
namelist.input(WRF的控制文件)。
由于namelist.input中内容较多,我们在下一篇文章中介绍。
WRF数值模式主要是采用Fortran语言编写的,接下来大致介绍一下Fortran语言中的namelist语法,以便大家得到一个合适的namelist输入文件,避免基本语法问题导致的报错。
首先namelist是一个包含系列变量的可编辑文件,可以用许多程序来打开,比如linux上的vi/vim/gedit,Windows上的记事本/word/VS+IVF,以及一些代码编辑器如sublime(可下载Fortran的插件,推荐入坑哈~~)等。
namelist在read/write语句中使用,当其中设置参数NML=指定的namelist时,即可读取指定namelist中的变量(数字或者字符串等),read或write语法如下所示
WRITE/READ(UNIT=number, FMT=format, NML=namelist, REC=record, IOSTAT=stat, ERR=errlabel, END=endlabel, ADVANCE=advance, SIZE=size)
接着简单了解一下namelist的具体语法规则。
比如这里设置一个新的namelist文件(命名为namelist.example),其内容如下:
&NAA = 11, 12, 13,B = 21, 22, 23,C = 33, 32, 33,/
第一行为符号 "&"加上组名"NA";
第二、三、四行则为整型变量A、B、C,值之间用空格和逗号来分隔;
第四行以除号 "/" 来结尾,这样就构成了一个简单的namelist文件。
read(UNIT=100, NML=namelist.example)
通过代码,这样就可以直接在程序中读入变量A,B,C了。
小技巧:namelist中参数通常较多,常常面临着参数调试的问题,当需要删除或者调试其中部分变量时,可以在变量最前面添加感叹号"!" 来注释掉相应变量,避免删除后再加回来的麻烦,要取消注释的话直接删除"!"就可以了。
如下,在变量"A"前面加上"!",这样就不会读入变量"A"了。
! A = 11, 12, 13,
WPS作为一个WRF数据的前处理部分,包含了三个运行程序,分别为
geogrid.exe:处理下载的地理数据
ungrib.exe:处理网格气象数据
metgrid.exe:将ungrib中处理的气象数据水平插值到网格中
具体控制文件为namelist.wps,这里以自己使用的namelist.wps为例进行介绍,其中分别包括了share、geogrid、ungrib、metgrid四个部分,下面进行详细介绍。
一、share部分
share部分为WPS整体参数(包括core的选择、运行层数、时间等)以及部分geogrid的设置。
&sharewrf_core = 'ARW', (表示调用的是ARW这个核)max_dom = 2, (表示两层嵌套)start_date = '2016-01-01_00:00:00','2016-01-01_00:00:00', (模式开始运行时刻)end_date = '2016-01-31_18:00:00','2016-01-31_18:00:00', (模式终止运行时刻)interval_seconds = 21600, (输入气象数据的时间间隔,单位s,这里表示6h)io_form_geogrid = 2, (一般均设置为2,表示netCDF格式)opt_output_from_geogrid_path = '../output/', !(这个参数是可选的,表示生成地形数据geo_em.d01.nc等的存放位置,默认放在WPS目录下。为了防止WPS目录下文件太多,我在外面新建了一个output目录来存储WPS中输出的内容)debug_level = 0, (常规设置为0即可)/
二、geogrid部分
其主要对应了geogrid.exe程序,功能包括定义模拟区域、确定空间分辨率、地图投影类型、选择地形数据种类等
&geogridparent_id = 1, 1, (每个域的父域的编号,第1个域均设置为1)parent_grid_ratio = 1, 5, (相对于父域的空间嵌套比率,第1个域为1,其余的官方推荐设为3或5)i_parent_start = 1, 44, (在其父域中左下角的x坐标。同理第一个域为1)j_parent_start = 1, 11, (在其父域中左下角的y坐标。同理第一个域为1)e_we = 90, 91, (每个域的东西向维度)e_sn = 50, 91, (每个域的南北向维度)geog_data_res = '10m','5m', (模型中要使用的地形数据的分辨率,然后会插值到网格点上。可选择的值分别为:10m、5m、2m、30s)dx = 50000, (x 方向的网格空间分辨率,只用设置第一层,如果有多个domain会根据parent_grid_ratio进行换算)dy = 50000, (同理,y 方向的网格空间分辨率)map_proj = 'lambert', (投影类型,可选择:'lambert'、'polar'、'mercator'、'lat-lon')ref_lat = 42.9, (最外层domain中心纬度值,再加上网格数和网格间距就可以确定了模拟区域)ref_lon = 110.0, (同理,最外层domain中心经度值)truelat1 = 30.0, (真实纬度,与投影方式有关,与投影方式有关)truelat2 = 60.0, (同上)stand_lon = 110.0, (标准经度,实际图形以这条轴来展开,一般设置与ref_lon相同)geog_data_path = '/home/lisi/wrf/data/geog/', (地理数据存放位置)/
部分参数演示
! 示例1parent_id = 1, 1, 2, 1,
! 示例2i_parent_start = 1, 31,j_parent_start = 1, 17,
! 示例3e_we = 201, 304,e_sn = 188, 289,
geog_data_res 设置说明
这里使用的是角度,单位为分(m)和秒(s),和距离的换算大致为:10m (~19km), 5m (~9km), 2m (~4km), 30s (~0.9km)。
在分辨率选择上,按照官网的推荐,网格的间距(单位为km)略微大于地形数据的分辨率,比如网格间距为9km,则这里可以选择2m(约4km)。
模型常用的两种地形数据分别为USGS和MODIS,3.8以前版本默认使用USGS,3.8及以后版本默认使用MODIS数据。比如想在3.7版本使用MODIS数据,则可以设置如下:
'modis_30s+10m'
'modis_30s+5m'
'modis_30s+2m'
'modis_30s+30s'
三、ungrib部分
对应了ungrib.exe程序,功能是将模式所需要的气象数据提取成单独的文件,以供后面的metgrid.exe程序使用。
&ungribout_format = 'WPS', (一般均设为'WPS')prefix = '../output/FILE', (设置输出文件路径和前缀,其中'../output/'为存储位置,表示将输出的气象数据文件放到../output/这个目录下;'FILE'表示文件名的前缀,即输出的气象数据文件名类似于'FILExxxx')/
四、metgrid部分
对应了metgrid.exe程序,将气象数据插值到网格点上,并输出包含地形数据和气象数据的文件。
&metgridfg_name = '../output/FILE', (对应了ungrib部分中的prefix参数)io_form_metgrid = 2, (最终输出文件(met_em*.nc)的格式,一般设置为2(netcdf)即可)opt_output_from_metgrid_path = '../output/', (输出文件的位置)/
![6deb1a9dae7fd9eb7bc3e6545cf28d29.png](https://i-blog.csdnimg.cn/blog_migrate/d65a46cba83a8cc3e59dc204a80dcc89.png)
感觉开头完事难,每篇文章原创不易,还望各位大佬在下面来波分享、点赞和在看。
如果您有宝贵的意见或者建议,可直接在公众号内发送消息哦。
再次祝您生活开心,学习愉快哈~~~
![f081c86d5aa7b15cf691f029f7fb259b.png](https://i-blog.csdnimg.cn/blog_migrate/aaca565283eba7e185729968615efda2.png)