WRF嵌套网格的设计
o(╥﹏╥)o
为了设计WRF嵌套网格,我在网上冲浪查找了许多的教程ᕦ(・ㅂ・)ᕤ,参考了六出的博客:怎么利用QGIS设计WRF嵌套域网格,也参考了B站唐学秋的视频:学习备忘录/ 如何使用WRFDomainWizard以及利用panoply简单处理nc文件,两位的方法都很好,推荐大家阅读参考,我这里总结一下,顺便也提出一些自己的一点想法o(´^`)o
2022.11.7更新
今天冲浪的时候,在气象家园发现了帖子新网页版 WRF Domain Wizard才知道,原来,WRF Domain Wizard还有网页版,大家可以去试一下。另外还有帖子里提到的QGIS的插件GIS4WRF,大家感兴趣也可以试试,我看这个插件还蛮方便,有时间我想试用一下哈哈。
一、网格的粗略设计
网格的粗略设计我用的ArcGiS来替代QGIS,因为用了五年ArcGIS比较顺手(✪ω✪)。(PS.QGIS吹爆,太好用啦,还开源,我近期正在转QGIS,但是还有一点生疏,这里就不献丑啦|ू・ω・` )
首先需要下载中国各省行政地图,最好是只有国界线和省界限的,可以去麻辣 GIS 网站搜索中国地图然后下载解压。用 ArcGIS 打开中国地图 shp 文件,可以看到,看source这个文件的坐标系是CGCS2000的,用ArcGIS工具箱中的Project工具(如下图)把它转化成WGS84坐标,这样地理坐标系就有啦,同理再为它定义一个投影坐标系,一般选择Asia_Lambert_Conformal_Conic投影,然后参考各省位置,绘制你感兴趣区域的网格。
接下来就可以设置网格啦,使用Create Fishnet工具(如下图)
我设计的是27000m,9000m,1000m三层嵌套,所以直接将cell size分别设置为27000m,9000m,1000m即可
2022.11.7更新
大家不要像我这样设计网格,最好让内层网格处于外层网格的中心位置,我这样设计,后面运行会出错,详见WRF运行wrf.exe出现forrtl: severe (174): SIGSEGV, segmentation fault occurred问题原因与解决合集第六点。
这样就可以愉快地查网格啦,使用ArcGIS的这个工具:
选中网格即可自动跳出选中网格数
按照下图查就可以啦,默认左下角为(0,0)
查好后得到
parent_id =
parent_grid_ratio =
i_parent_start =
j_parent_start =
e_we =
e_sn =
geog_data_res =
dx =
dy =
再把网格在WGS84坐标系下打开,找d01中心网格,软件右下角看它的坐标,就是中心点坐标
二、利用WRFDomainWizard得到namelist.wps
运行WRFDomainWizard
在WRFDomainWizard文件夹下面,打开终端,输入:
chmod +x run_DomainWizard
run_DomainWizard
初始界面如下,设置WPS路径,地理数据路径,在WPS同级文件夹下创建Domains文件夹:
创建新的Domain,点击Next:
命名完domain,输入刚才设置的网格参数:
中心经纬度,投影选择兰伯特投影,外层网格大小
设置嵌套网格,点击Netsts→New
其中Parent ID: 指定每一个网格嵌套进的上一层粗网格的编号(也称为父网格)。如图1,编号为1,2,3,4(图中以d01,d02,d03,d04表示)四个网格的parent_id分别是1(编号为1的网格的父网格即自身),1,2,1:最大父网格左下角是原点0,0
Grid spacing ratio to parent:父网格格点间距/嵌套网格格点间距
Geographic data resolution:地理数据分辨率
外层网格左下角为坐标0,0点
(LLI)Left:嵌套网格左侧边界网格数(按照外层网格数算)
(URI)Right :嵌套网格右侧边界网格数(按照外层网格数算)
(URJ) Top :嵌套网格上边界网格数(按照外层网格数算)
(LLJ)Bottom:嵌套网格下边界网格数(按照外层网格数算)
点击Next,在Domains下面生成文件:
最主要的是namelist.wps
在运行geogrids.exe前,可利用WPS根目录下util文件夹中的plotgrids.ncl程序查看设置的网格。只需要设置好namelist中网格个数、大小、位置信息,即可调用该程序。
输入:
ncl util/plotgrids_new.ncl
查看结果如下:
基本没啥问题
将WRF主程序链接过来:
ln -sf /home/master2020/guolh/Build_WRF/WRFV3/run/* .
去掉程序原有namelist.input
rm -rf namelist.input
修改EAT层数设置,选择线性化,27层
根据需要,修改时间步长,防止段错误吐核
注意time_step=6*dx 要与嵌套网格元胞尺寸匹配,最好弄小一点,别乘以6
运行geogrid时,缺文件去https://www2.mmm.ucar.edu/wrf/src/wps_files/和https://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html找
依次运行geogrid、ungrid、metgrid后
编辑namelist.input如下:
&time_control run_days = 0, (运行时间(天)) run_hours = 06, (时) run_minutes = 0, (分) run_seconds = 0, (秒) start_year = 2006, 2006, 2003, (起始年份) start_month = 08, 08, 07, (起始月份) start_day = 16, 16, 09, (起始日数) start_hour = 12, 12, 00, (起始小时) start_minute = 00, 00, 0 (起始分钟) start_second = 00, 00, 00, (起始秒数) end_year = 2006, 2006, 2003, end_month = 08, 08, 07, (对应的结束时间) end_day = 16, 16, 10, end_hour = 18, 18, 00, end_minute = 00, 00, 00, end_second = 00, 00, 00, interval_seconds = 21600,(前处理程序的两次分析时间之间的时间间隔) input_from_file = .true.,.true.,.false.,(嵌套初始场输入选项。嵌套时,指定嵌套网格是否用不同的初始场文件) history_interval =180, 60, 60,(指定模式结果输出的时间间隔,以分钟为单位) frames_per_outfile =1000, 1000, 1000, restart = .false., (是否进行重行启动) restart_interval = 1440, (重起时间间隔) io_form_history = 2, (2 = NetCDF ) io_form_restart = 2, (指定模式断点重启输出的格式, 2为netCDF格式) io_form_input = 2, (2 = NetCDF ) io_form_boundary = 2, (指定模式边界条件数据的格式) 1 二进制格式 2 NetCDF格式 4 PHD5格式 5 GRIB1格式 debug_level=0(此选项指定模式运行时的调试信息输出等级。取值可为0,50,100,200,300,数值越大,调试信息输出就越多,默认值为0) / &domains time_step =180, (积分的时间步长,为整型数,单位为秒,在真实大气中推荐值为dx公里数的6倍) time_step_fract_num =0, (实数型时间步长的分子部分) time_step_fract_den =1, (实数型时间步长的分母部分) max_dom =2, (最大区域数) s_we =1, 1, 1, (x方向(西—东方向)的起始格点值(通常为1)) e_we =74, 112, 94, (x方向(西—东方向)的终止格点值(通常为x方向的格点数)) s_sn =1, 1, 1, (y方向(南—北方向)的起始格点值(通常为1)) e_sn =61, 97, 91, (y方向(南—北方向)的终止格点值(通常为y方向的格点数)) s_vert =1, 1, 1, (z方向(垂直方向)的起始格点值) e_vert = 28, 28, 28, (z方向(垂直方向)的终止格点值,即全垂直eta层的总层数。垂直层数在各嵌套网格中必须保持一致) dx = 30000, 10000, 3333, (指定 方向的格距(单位为米) 。在真实大气方案中,此参数值必须与输入数据中的x方向格距一致) dy = 30000, 10000, 3333, (指定y方向的格距(单位为米)。在真实大气方案中,此参数值必须与输入数据中的x方向格距一致) grid_id =1, 2, 3, (计算区域的编号,一般是从1开始) parent id =0, 1, 2, (嵌套网格的上一级网格(母网格)的编号,一般是从0开始) i_parent start =0, 31, 30, (嵌套网格的左下角(LLC)在上一级网格(母网格)中x方向的起始位置) j.parent_start =0, 17, 30, (嵌套网格的左下角(LLC)在上一级网格(母网格)中y方向的起始位置) parent grid_ratic =1, 3, 3, (母网格相对于嵌套网格的水平网格比例) parent time_step_ratio =1, 3, 3, (嵌套时,母网格相对于嵌套网格的时间步长比例) feedback =1. (嵌套时,嵌套网格向母网格得反馈作用。设置为0时,无反馈作用。而反馈作用也只有在母网格和子网格的网格比例(parentgrid—ratio)为奇数时才起作用) smooth_option =0 (向上一级网格(母网格)反馈的平滑选项,只有设置了反馈选项为1时才起作用的) / &physics mp_physics = 3, 3, 3, 设置微物理过程方案,默认值为 0。 0 不采用微物理过程方案 1 Kessler 方案 (暖雨方案) 2 Lin 等的方案 (水汽、雨、雪、云水、冰、冰雹) 3 WSM 3类简单冰方案 4 WSM 5类方案 5 Ferrier(new Eta)微物理方案(水汽、云水) 6 WSM 6类冰雹方案 8 新Thompson的冰雹方案 98 NCEP 3类简冰方案 (水汽、云/冰和雨/雪) 99 NCEP 5类方案(水汽、雨、雪、云水和冰) ra_lw_physics = 1, 1, 1, 此选项指定长波辐射方案,默认值为 0。 0 不采用长波辐射方案 1 rrtm 方案 99 GFDL (Eta) 长波方案 (semi-supported) ra_sw_physics = 1, 1, 1, 此选项指定短波辐射方案,默认值为 0。 0 不采用短波辐射方案 1 Dudhia 方案 2 Goddard 短波方案 99 GFDL (Eta) 短波方案 (semi-supported) radt = 10, 10, 10, (此参数指定调用辐散物理方案的时间间隔,默认值为 0, 单位为分钟。建议与dx的公里数取同样的值) sf_sfclay_physics = 1, 1, 1, 此选项指定近地面层(surface-layer)方案,默认值为 0。 0 不采用近地面层方案 1 Monin-Obukhov 方案 2 MYJ Monin-Obukhov 方案 (仅用于MYJ 边界层方案) sf_surface_physics = 1, 1, 1, 此选项指定陆面过程方案,默认值为 0。 0 不采用陆面过程方案 1 热量扩散方案 2 Noah 陆面过程方案 3 RUC 陆面过程方案 bl_pbl_physics =1, 1, 1, 此选项指定边界层方案,默认值为 0 0 不采用边界层方案 1 YSU 方案 2 Eta Mellor-Yamada-Janjic TKE(湍流动能) 方案 3 NCEP Global Forecast System方案 99 MRF 方案 bldt = 0, 0, 0, (此参数指定调用边界层物理方案的时间间隔,默认值为 0,单位为分钟。此参数指定调用边界层物理方案的时间间隔,默认值为 0,单位为分钟。0 (推荐值)表示每一个时间步长都调用边界层物理方案) cu_physics = 1, 1, 0, 此选项指定积云参数化方案,默认值为 0。 0 不采用积云参数化方案 1 浅对流Kain-Fritsch (new Eta)方案 2 Betts-Miller-Janjic 方案 3 Grell-Devenyi 集合方案 4 Simplified Arakawa-Schubert方案 99 老Kain-Fritsch 方案 cud = 5, 5, 5, (积云参数化方案的调用时间间隔,默认值为 0, 单位为分钟。 一般的积云参数化方案是每一步都要调用,但如果是用Kain-Fritsch 方案(cu_physics=1),则可以设cudt=5) isfflx = 1, 在选用扰动边界层和陆面物理过程时(sf_sfclay_physics = 1)是否考虑地面热量和水汽通量,默认值为1。 0 不考虑地面通量 1 考虑地面通量 ifsnow = 0, 是否考虑雪盖效应。考虑雪盖效应时,必须要有雪盖输入场。默认值为0,只有在利用扰动边界层PBL预报土壤温度时才有效,即sf_surface_physics = 1。 0 不考虑雪盖效应 1 考虑雪盖效应 icloud = 1, 辐射光学厚度中是否考虑云的影响,默认值为1。仅当ra_sw_physics = 1 和 ra_lw_physics = 1时有效。 0 不考虑云的影响 1 考虑云的影响 surface_input_source = 1, 1 SI/gridgen(由SI的gridgen_model.exe程序产生) 土地利用类型和土壤类型数据的来源格式,默认值为1。 2 其他模式产生的GRIB码数据(VEGCAT/SOILCAT 数据) num_soil_layers = 5, 指定陆面模式中的土壤层数,默认值为5 5 热量扩散方案 4 Noah 陆面过程方案 6 RUC 陆面过程方案
修改完退出保存
然后运行WRF模块,命令如下:
ulimit -s unlimited (or:unlimited ,此命令防止溢出问题出现,当出现此问题为溢出: (5 points exceeded cfl=2 in domain 1 at time 4.200000 MAX AT i,j,k: 123 48 3 cfl,w,d(eta)= 4.165821 21 points exceeded cfl=2 in domain 1 at time 4.200000 MAX AT i,j,k: 123 49 4 cfl,w,d(eta)= 10.66290),解决方案检查时间积分步长,减少时间积分步长)
./real.exe
vi rsl.error.0000
看运行成功了没
运行成功会提示:SUCCESS COMPLETE REAL_EM INIT
ls
将会有这几个文件生成
wrfinput_d01 (初始场文件) wrfinput_d02 (初始场文件) wrfbdy_d01 (边界条件文件)
然后接下来运行主模块
然后并行运算运行wrf.exe:
mpirun -np 8 ./wrf.exe
检查日志文件:
vi rsl.error.0007
看到success complete WRF即运行成功
ls
wrfout_d01_2019-04-01_12:00:00 wrfout_d02_2019-04-01_12:00:00
最近比较忙,没时间写博客啦─=≡Σ(((つ•̀ω•́)つ,暂时就是这样,下期见
本文作者:陆詟水栗
本文链接:https://www.cnblogs.com/AllenG/p/18078641
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步