毕业实习笔记——WRF模式入门(Cygwin版)
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流程图
在进行中尺度模式的大气研究时,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样例与基本参数解释如下:
&sharewrf_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小时在分析文件设为21600io_form_geogrid = 2,#geogrid输出格式,一般为2,输入1时为binary,后缀是.int文件,当输入2时为NetCDF,后缀为.nc文件,当输入3时为GRIB1,后缀为.gr1文件
/&geogridparent_id = 1, 1,#嵌套区域的母区域的标号。注意MOAD 本身没有母区域,因此PARENT_ID
的第一列总是设为1。第二列必须等于1。总列数必须等于NUM_DOMAINSparent_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'#地表静态数据的路径
/&ungribout_format = 'WPS',#输出文件的形式,有MM5,WPS和SI三种形式prefix = 'FILE',#输出文件的前缀,默认为FILE形式
/&metgridfg_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
其他参考博客资料已在文中贴出,此处不再重复。
数据与软件均来源于毕业实习老师。
毕业实习笔记——WRF模式入门(Cygwin版)相关推荐
- (附源码)springboot大学医学生毕业实习分配系统 毕业设计212 002
Springboot大学医学生毕业实习分配系统 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐 ...
- SRE运维工程师笔记-Linux基础入门
SRE运维工程师笔记-Linux基础入门 1. Linux基础 1.1 用户类型 1.2 终端terminal 1.2.1 终端类型 1.2.2 查看当前的终端设备 1.3 交互式接口 1.3.1 交 ...
- IEC61850笔记--IEC61850应用入门(二)
IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,<IEC61850应用入门(第二版)>,开源代码libIEC61850及libIEC61850说明文档. ...
- 踏上《软件设计精要与模式》第二版的征途
距离<软件设计精要与模式>的出版已有两年多的时间,从出版之初的热销到后来归于平淡,我也经历了从兴奋期到蛰伏期的过程.这本书的反应不算好,也不算坏.在浩瀚如大海一般的书市里,就好似一滴水珠融 ...
- 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书
[学习笔记]密码学入门(2) 单向散列函数,消息认证码,数字签名,证书 学习笔记 2 – 混合密码系统 在密码学入门(1)中提到了基本的密码形式,对称密码和公钥密码以及混合密码系统. 这一部分将学习到 ...
- Kubernetes CKA认证运维工程师笔记-Docker快速入门
Kubernetes CKA认证运维工程师笔记-Docker快速入门 1. Docker 概念与安装 1.1 Docker 是什么 1.2 Docker 基本组成 1.3 版本与支持平台 1.4 Do ...
- 实习笔记—— AOP开发II(AOP中Advice的类型)
系列文章目录 实习笔记 -- Spring基础 实习笔记 -- IOC反转控制(xml配置文件 + 注解) 实习笔记 -- AOP开发I 文章目录 系列文章目录 一.AOP中Advice的类型的XML ...
- 《算竞(紫书)》笔记1 STL入门
<算竞(紫书)>笔记1 STL入门 16340040 SDCS 目录 算竞紫书笔记1 STL入门 某些抢开头的废话 STL 1 排序 2 不定长数组vector 3 集合set 4 映射m ...
- 视频教程-OpenGL入门2019版-其他
OpenGL入门2019版 在大学期间系统的学习了opengl.计算机图形学.计算机视觉的算法,与2013年加入4399,任职暗黑战神项目组主程,2015年3月底离职创业,创办了战火信息科技有限公司, ...
- 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体
本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...
最新文章
- 多线程写文件_Shell简单实现多线程
- pull to load more data
- Hadoop Map/Reduce教程
- 基因表达可视化工具使用指南
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...
- chrome扩展之4(终结篇):一步步跟我学开发一个表单填写扩展
- 浅析GitLab Flow的十一个规则
- 57.Linux/Unix 系统编程手册(下) -- SOCKET : Unix domain
- R软件和扩展包的升级及R语言数据对象
- 关系数据库到Hbase数据库的数据迁移
- Qt QTableView样式设置
- 直流电动机调速matlab,基于MATLAB龙门刨床直流电动机调速系统仿真研究
- 用 VS2005 类设计器设计类
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java焦虑自测与交流平台k43cf
- 金仓数据库 KingbaseES 插件参考手册 pldbgapi
- 2019-2020年催化类专业期刊的影响因子
- [ 数据结构 -- 手撕排序算法第四篇 ] 选择排序
- Jmeter运行后,查看结果树中的响应数据出现中文乱码。
- C# 鼠标跟随放大镜
- SOLIDWORKS自定义材质库
热门文章
- 1月1日服务器例行维护公告,1月1日服务器例行维护公告(已完成)
- 团队作业8----第二次项目冲刺(Beta阶段) 第四天
- Rockchip | Rockchip Kernel的获取与构建
- Ubuntu16环境安装和使用NFS
- CentOS 搭建NFS
- python实用教程答案 郑阿奇_VisualC++实用教程第4版_郑阿奇,习题参考答案,精品资料...
- 拉丁舞身形研究之恰恰恰
- 单片机设计经验设计技巧集锦
- matlab改变图片尺寸及像素与尺寸的转换
- 基于JQuery网页漂浮广告窗口Js详解