WRF-chem入门已更新,有兴趣可点击查看WRF-chem入门指南

WRF简介

WRF(Weather Research and Forecasting Model)模式是由美国环境预测中心(NCEP),美国国家大气研究中心(NCAR)等美国科研机构中心着手开发的一种统一的中尺度天气预报模式。
WRF模式系统具有的可移植,易维护,可扩充,高效率,方便等特点,使其成为改进从云尺度到各种不同天气尺度的重要天气特征预报精度的工具。
WRF系统组成可分为四部分。即:

  • 前处理(WPS)
  • 资料同化(WRFDA)
  • 主模块(ARW/NMM)
  • 后处理

其中,主模块分为ARW(the Advanced Research WRF)和NMM(the Nonhydrostatic Mesoscale Model)两种,即研究用和业务用两种形式,本文运行的是的是 ARW WRF。关于二者的具体区别,可参考相关文献。

**图1 WRF流程图**
图1 WRF流程图
在进行中尺度模式的大气研究时,WRF是最常见的模式之一。对于笔者这种初学者而言,想要掌握WRF模式、首先就是要解决它的安装与运行问题。对于更为深入的参数化方案,则需要在熟练的基础上进行更多的研究。
目前网上已有许多WRF安装、运行教程,但绝大多数都是以PPT、PDF文档形式,要获取相对完整的WRF教程,需要一定的渠道,而类似于博文这类的学习教程则过于零散,需要大量的时间搜索。这无疑为一些想要学习WRF模式的人增加了门槛。
作为刚接触WRF模式不到一周的初学者,为了更好的理解WRF运行的流程,也为之后研究生阶段对WRF模式的学习打下一定基础。
WRF模式通常需要基于Linux系统安装运行。而本文选用步骤更为简单的基于Cygwin的WRF运行。**Cygwin是一个可原生运行于Windows系统上的POSXI兼容环境。**简单来说,它是Windows系统下的一个模拟Linux环境的应用软件,虚拟机中运行的是完全的Linux系统,而Cygwin相当于提供了一个Linux的API接口。当然,在Cygwin下的WRF模式并不能替代完全Linux系统下的WRF运行,但仅就WRF模式入门、熟练掌握运行步骤而言,Cygwin版与虚拟机版并没有太大区别(只是计算速度和计算量的限制)。
此外,作为气象专业的学生,笔者并不建议在私人电脑上安装虚拟机运行WRF,而是在实验室电脑或者大型机上安装运行。除去虚拟机本身安装步骤较为繁琐,虚拟机对电脑硬件配置也较高。尽管如今网上已有许多安装教程,但很多教程由于年代较早往往适用性不高,会出现各种报错乃至电脑崩溃等事故。 而Cygwin在搭建Linux环境步骤则简便得多。通过Cygwin,来掌握一些Linux基本操作与熟悉WRF运行对初学者绰绰有余。

步骤

软件安装

将下载的Cygwin压缩包(约5GB)解压至盘根目录中,运行cmd,进入cygwin路径下,运行Cygwin.bat,如下图,搭建好Linux环境。
在这里插入图片描述
图2 Linux环境
此后你可以尝试一些基础的Linux命令:如文件的解压、连接、权限设置,可参考Linux常用命令
之后,下载WRF与WPS安装包与相应数据,在/cygwin/opt目录下创建WPS、WRF两个文件夹。记得先安装WRF,再安装WPS。
WRF压缩包下载中下载好WRF压缩包,在之前创建的WRF文件夹中,解压WRF压缩包。

tar –zvxf xxx.tar.gz    #xxx为对应文件名

紧接着,使用相同的命令在WPS文件夹下解压WPS压缩包(WPS下载)。
在cygwin/opt目录下创建GEOG文件夹,将下载的数据文件拷贝并解压至该文件夹下。
至此,前期准备工作完成。

WPS(WRF前处理)配置

在运行前,我们需要了解它的相关配置。
WPS(WRF Preprocessing System)主要对资料进行预处理,定义并创建模式区域,将数据插值到模式的计算格点上。也就是在运行WRF模型前,需要进行三个预处理步骤,由三个子程序完成,即:
在这里插入图片描述
图3 WPS流程

  • geogrid.exe,将各种地形数据插入到模式的格点上去,建立“静态的”地面数据。即定义模型的投影、区域范围、嵌套关系、地表参数插值。
  • ungrib.exe 从grib数据中提取所需要的气象参数。
  • metgrid.exe 将气象参数插值到模拟区域。

这三个程序运行前需要先对它们的配置文件进行相应的修改。配置文件文件名为 namelist.wps, 位于WPS 源码根目录下。
除此之外,上述程序还需要控制参数文件,如GEOGRID.TBL、 METGRID.TBL和Vtable。
Vtable定义了ungrib.exe提取气象场所需要的参数。对于常用气象数据集而言,比如NCEP,EC等机构提供的气象场,WRF中都提供了Vtable模版文件,一般直接链接使用即可。一般运行前,使用命令:

ln –sf ungrib/Variable_Tables/Vtable.GFS  Vtable

检验是否由正确链接生成。
对于WPS流程与细解,请参看博客WRF模式WPS前处理细解

WPS运行

进入WPS目录,使用命令:

chmod –R u+rwx WPS

给予读写权限。
随后:vi namelist.wps
打开并根据自己需求,修改namelist.wps参数文件。关于vi命令,参考vi-文件修改
namelist.wps样例与基本参数解释如下:

&share
 wrf_core = 'ARW',#运行核心模块
 max_dom = 1,#最大网格嵌套层数
 start_date = '2000-01-24_12:00:00','2000-01-24_12:00:00',
 end_date   = '2000-01-25_00:00:00','2000-01-25_00:00:00',
 interval_seconds = 21600 #前处理的两次分析时间之间的时间间隔,以s为单位,对于6小时在分析文件设为21600
 io_form_geogrid = 2,#geogrid输出格式,一般为2,输入1时为binary,后缀是.int文件,当输入2时为NetCDF,后缀为.nc文件,当输入3时为GRIB1,后缀为.gr1文件
/

&geogrid
 parent_id         =   1,   1,#嵌套区域的母区域的标号。注意MOAD 本身没有母区域,因此PARENT_ID 
的第一列总是设为1。第二列必须等于1。总列数必须等于NUM_DOMAINS
 parent_grid_ratio =   1,   3,#嵌套时母网格与子网格之间的比例
 i_parent_start    =   1,  31,#嵌套网格的左下角(LLC)在上一级网格(母网格)中x方向的起始位置
 j_parent_start    =   1,  17,#嵌套网格的左下角(LLC)在上一级网格(母网格)中y方向的起始位置
 e_we              =  74, 112,#不同层网格x方向格点数
 e_sn              =  61,  97,#不同层网格y方向格点数
 geog_data_res     = '10m','2m',#区域所对应选择的地表面静态数据
 dx = 30000,
 dy = 30000,#x/y方向格距,单位m,
 map_proj = 'lambert',#选择的投影方式'lambert', 'polar', 'mercator', and 'lat-lon'
 ref_lat   =  34.83,#中心纬度,即模式最外层中心位置纬度
 ref_lon   = -81.03,#中心经度,即模式最外层中心位置经度
 truelat1  =  30.0,
 truelat2  =  60.0,#标准经纬度,根据投影确定
 stand_lon = -98.0,#标准经度,与中心经度保持一致
 geog_data_path = '/opt/GEOG'#地表静态数据的路径
/

&ungrib
 out_format = 'WPS',#输出文件的形式,有MM5,WPS和SI三种形式
 prefix = 'FILE',#输出文件的前缀,默认为FILE形式
/

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

以&符号开头的为配置模块名称。 &share 模块描述了通用配置选项,&geogrid 描述了geogrid.exe的配置选项,&ungrib 描述了 ungrib.exe的配置选项,&metgrid 描述了 metgrid.exe的配置选项。
修改完成后,分别运行程序:

../geogrid.exe >& geogrid.log  # 得到geo_em.d01&geogrid运行日志
.ln –sf ungrib/Variable_Tables/Vtable.GFS  Vtable #检验是否正确链接
../link_grib.csh  /opt/your_path/fnl_* #链接外部数据
../ungrib.exe >& ungrib.log  #得到, FILE文件与ungrib运行日志
../metgrid.exe >& metgrid.log  #得到met_em.d01 与运行日志
#注意:多层嵌套网格将会有多个文件生成,xxxx.d01 d02 d03等

至此,WPS运行完成。

WRF运行

在这里插入图片描述
图4 WRF目录
可以选择到 run/目录或者 test/em_real/目录中去运行 WRF 模式,两者步骤大同小异,仅有进入目录不同。

cd WRFV3/run #或/test/em_real
# 先把 WPS 准备好的文件链接过来
ln –s /home/WRF/WPS/met_em.d0* . 
# 然后修改 namelist.input,里面的设置要与 WPS 中 namelist.wps 相对应。
#主要修改&time_control 和&domain 中的相关设置,其他参数化之类的设置,可以在了解以后再进行修改。详细各项意义请参考 WRF 官方提供的用户手册中关于 namelist 设置的内容。
./real.exe
#运行 real.exe,会产生 wrfbdyd01 和 wrfinputd01 文件。
./wrf.exe
#运行 wrf.exe,,会产生 wrfout_d01_YYYY-MM_DD_hh:mm:ss 文件

namelist.wps主要修改以下部分:
在这里插入图片描述
(a)
在这里插入图片描述
(b)
图5 修改部分
根据namelist.wps修改即可,参数意义可参考WRF NAMELIST.INPUT FILE DESCRIPTION,也可参考WRFV3使用指南WRF的初始化和运行初步
至此,WRF运行完成。

WRF后处理

一般而言,WRF运行后的结果可以用ncview查看,或者用NCL进行绘制。
通常会使用ARWpost将wrfout文件转换成.dat和.ctl文件,随后使用grads绘图。
对于其安装与运行,我在这里不多加赘述。除NCL外,Matlab,Python,R均可对nc实行读写计算操作,python对WRF结果可视化这块目前已较为成熟,笔者日后将会关注这块应用。

补充-网格嵌套

在学习namelist.wps参数含义时,我发现对于网格的设计与嵌套描述较为抽象,母网格与子网格之间的关系并不清楚,于是我去对进行了一些了解,进行相关补充。
在这里插入图片描述
图6 区域嵌套关系
不难得出内层网格的大小和坐标以及网格比例之间存在关系:
e_we = (i_parent_end - i_parent__start) * parent_grid_ratio + 1

e_sn = (j_parent_end - j_parent__start) * parent_grid_ratio + 1
将外层网格作为坐标系,左下角为原点,注意原点坐标为(1,1),定下坐标值时,将内层网格的起点与对应网格格点重合更为方便。

parent_id = 1, 1, 2,

定义了每层网格相对应的根区域 ,对于最外层网格而言,其并没有根区域,选为1,第二层网格选第一层网格为根区域,第三层网格则以第二层网格为根区域。这样互相嵌套。

i_parent_start = 1, 31, 
j_parent_start = 1, 17,

设定了子区域对应原点的位置(根区域左下角),即相对于原点,子区域左下角坐标为(31,17)。

e_we = 74, 112, 
e_sn = 61, 97,
parent_grid_ratio = 1, 3,
dx = 30000, 
dy = 30000,

这几句确定了网格区域的大小,即,该双层嵌套网格的网格1大小为73×60,分辨率为30km×30km;网格2为111×96,分辨率为10km×10km。
在这里插入图片描述
图7 嵌套示例
在实际中,对于区域嵌套网格的设计往往需要结合可视化工具,常用工具为WRFDomainWizard,该软件对于WRF的运行提供极大的便利。可以参考:WRF Domain Wizard运行官网案例01
此外,在查询时还看到有人使用QGIS设计WRF嵌套网格:QGIS设计WRF嵌套域网格

WRF高阶应用

WRF模式在几十年的研究中,发展出了其他各类子模式,在大气化学、水文气象等领域中有着诸多应用。
在这里插入图片描述
图8 WRF应用

参考

1.中山大学环境科学与工程学院大气科学系 杨超锋: 模式学习从 LINUX 安装开始
2. WRFV3使用指南WRF的初始化和运行初步
3. 南京信息工程大学中尺度数值模式及应用教学团队:WRF数值模式介绍
4. 万文龙:气象wrf模式内部培训配置资料
5. xg1990:用WRF模型进行气象模拟入门(2)——WPS的配置与使用https://xg1990.com/blog/archives/206
其他参考博客资料已在文中贴出,此处不再重复。
数据与软件均来源于毕业实习老师。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐