登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 kermit 于 2025-5-10 12:32 编辑
WRF数值模式大多需要在高性能Linux集群上运行,但有时我们也想要在自己的个人电脑上学习WRF或者做一些简单的天气模拟。以往我们在Windows环境下运行WRF大多使用容器或者虚拟机或者子系统。但它们往往不够便携,还需要花时间配置各种环境,对于初学者的门槛也很高。
为了让WRF在Windows下运行更简便,Kermit Chen开发了 Piggy_Packages ,它基于Cygwin 深度定制,解压即用。它不仅可以运行WRF,还可以运行NCL、CDO、NCO、Ncview、Panoply、MET、UPP、ESMF、RTTOV等各种Linux下好用的气象软件。
——————系统需求——————
64位版本的Windows 10 (22H2) 、Windows 11 ARM版本的Windows 11;
请注意,随着Windows 10支持周期的结束,对于 Windows 10 的支持将很快被移除。
Windows 11 已经内置了Windows Terminal,您无需额外安装。
~~~~~~~~~~~~~~~~~~~~~~~
下载地址【没有气象家园账号的同学,可以加入Piggy气象科学交流QQ群852983715获取下载地址喔】
~~~~~~~~~~~~~~~~~~~~~~~
简要教程~~
下面以运行WPS为例带大家体验一下Cygwin WRF4.6.1
首先下载并解压缩 Piggy_Packages 然后右键管理员身份运行Piggy-Bash.sh 或者 Piggy-Zsh.sh
Piggy-Bash.sh 提供一种简约经典的交互方式;而Piggy-Zsh.sh 提供一种现代炫酷的交互方式。
(Win10 用户使用Piggy-Zsh.sh需要安装Windows Terminal,下载地址见上文,否则会很丑)
首次启动时会进行环境部署,需要几分钟时间。
Piggy_Packages Version 2025.1 的WRF数值模式安装在/pp_model/WRF-4.6.1 现在我们切换到切换到该目录: 目录结构如下: - /pp_model/WRF-4.6.1
- ├── download_geog.sh # 高精度地形数据下载脚本
- ├── RTTOV # 快速辐射传输模式(v12.1),用于WRFDA卫星资料同化
- ├── WPS # WRF前处理系统
- ├── WPS_GEOG # 静态地形数据(低精度)
- ├── WRF -> WRF-REAL # 指向 WRF-REAL 的软链接
- ├── WRF-Chem # WRF化学模式
- ├── WRFDA # WRF同化系统
- ├── WRF-FIRE # WRF火灾模式
- ├── WRF-Hydro # WRF水文模式
- ├── WRFPLUS # WRF切线性和伴随模式,用于敏感性试验和WRFDA四维变分
- ├── WRF-REAL # WRF 中尺度大气模式
- └── WRF-VF # WRF 中尺度大气模式(启用vortex following)
复制代码 请注意,WRF目录下的RTTOV为WRFDA兼容版本,我们在/pp_module/module/gcc-15.1.0/RTTOV-14.0目录下提供了一个更新版本的RTTOV。
1)地形数据下载:
Piggy_Packages 已经内置了低精度地形数据,对于学习使用已经足够,但是如果您想要更好的模拟结果,您可以通过download_geog.sh脚本下载高精度(解压后约29GB)和可选的完整地形数据(解压后约200GB)。
2)WPS和WRF运行
让我们返回HOME目录 然后将WPS和WRF拷贝过来:
- cp -r /pp_model/WRF-4.6.1/WPS ~/
- cp -r /pp_model/WRF-4.6.1/WRF-REAL ~/WRF
复制代码
进入WPS目录: 用记事本或VS Code打开namelist.wps: (请注意,虽然它的后缀是wps,但是请勿使用金山WPS Office 或者Microsoft Word打开) 提示:如果您安装了VS Code,并在安装时选择了将VS Code添加到PATH,上述命令将默认使用VS Code 打开;否则将使用记事本打开。
清空文件中原有内容,将以下内容粘贴进去:
- &share
- wrf_core = 'ARW',
- max_dom = 3,
- start_date = '2025-05-01_00:00:00','2025-05-01_00:00:00','2025-05-01_00:00:00'
- end_date = '2025-05-01_18:00:00','2025-05-01_18:00:00','2025-05-01_18:00:00'
- interval_seconds = 10800,
- io_form_geogrid = 2,
- /
- &geogrid
- parent_id = 1, 1, 2,
- parent_grid_ratio = 1, 3, 3,
- i_parent_start = 1, 40, 17,
- j_parent_start = 1, 26, 21,
- e_we = 81, 49, 55,
- e_sn = 57, 49, 55,
- geog_data_res = 'lowres','lowres','lowres',
- dx = 81000,
- dy = 81000,
- map_proj = 'lambert',
- ref_lat = 35,
- ref_lon = 110,
- truelat1 = 30,
- truelat2 = 60,
- stand_lon = 116.397,
- geog_data_path = '/pp_model/WRF-4.6.1/WPS_GEOG/'
- /
- &ungrib
- out_format = 'WPS',
- prefix = 'FILE',
- /
- &metgrid
- fg_name = 'FILE'
- io_form_metgrid = 2,
- /
复制代码 【可选】如果您已经下载了高精度地形数据,您可以将:
- geog_data_res = 'lowres','lowres','lowres',
复制代码 更改为:
- geog_data_res = 'highres','highres','highres',
复制代码
更改完之后,您可以输入以下命令可视化WRF模拟区域:
- ncl util/plotgrids_new.ncl
复制代码
(点击图像以关闭图窗)
接下来我们运行geogrid.exe将地形数据插值到模式网格上:
- mpirun -np $NUMBER_OF_PROCESSORS ./geogrid.exe
复制代码 $NUMBER_OF_PROCESSORS 为您的CPU核心数量,也可以任意指定不高于您CPU核心数量的值(下同),例如:
- mpirun -np 4 ./geogrid.exe
复制代码
下面我们用ungrib.exe解码和提取背景场资料。首先从 https://pan.baidu.com/s/1uiSDnEcsSwERz2l6sEGKOQ?pwd=1234 下载一些FNL背景场文件;
然后输入一下命令在资源管理器中打开HOME目录: 打开之后,将下载的FNL背景场文件拷贝进去。
使用链接脚本将背景场文件链接到WPS所在目录:
- ./link_grib.csh ~/fnl_*.grib2
复制代码
由于我们使用的FNL背景场,它和GFS同源,因此我们需要适用于GFS的Vtable,将它链接到当前目录下。Vtable的作用在于告诉ungrib.exe需要提取哪些变量,以及这些变量的GRIB编码信息。
- ln -s ungrib/Variable_Tables/Vtable.GFS Vtable
复制代码 然后我们运行ungrib.exe进行背景场数据的解码和提取。
请注意,ungrib.exe无法使用mpirun并行运行。
运行完成后将会生成FILE:开头的文件。
metgrid.exe的作用是将ungrib.exe提取出的背景场信息水平插值到模式网格上,并且与geogrid.exe插值的地形数据结合,生成模式的输入数据。
- mpirun -np $NUMBER_OF_PROCESSORS ./metgrid.exe
复制代码 运行成功后,将会生成met_em.开头的文件。
让我们切换到WRF运行目录:
将metgrid.exe的输出数据链接到此处:
然后我们编辑WRF的配置文件namelist.input: 清除文件中的所有内容,然后将下方内容粘贴进去:
- &time_control
- run_days = 0,
- run_hours = 18,
- run_minutes = 0,
- run_seconds = 0,
- start_year = 2025, 2025, 2025,
- start_month = 05, 05, 05,
- start_day = 01, 01, 01,
- start_hour = 00, 00, 00,
- end_year = 2025, 2025, 2025,
- end_month = 05, 05, 05,
- end_day = 01, 01, 01,
- end_hour = 18, 18, 18,
- interval_seconds = 10800
- input_from_file = .true.,.true.,.true.,
- history_interval = 60, 60, 60,
- frames_per_outfile = 1, 1, 1,
- restart = .false.,
- restart_interval = 7200,
- io_form_history = 2
- io_form_restart = 2
- io_form_input = 2
- io_form_boundary = 2
- /
- &domains
- time_step = 90,
- time_step_fract_num = 0,
- time_step_fract_den = 1,
- max_dom = 3,
- e_we = 81, 49, 55,
- e_sn = 57, 49, 55,
- e_vert = 45, 45, 45,
- dzstretch_s = 1.1
- p_top_requested = 5000,
- num_metgrid_levels = 34,
- num_metgrid_soil_levels = 4,
- dx = 81000,
- dy = 81000,
- grid_id = 1, 2, 3,
- parent_id = 1, 1, 2,
- i_parent_start = 1, 40, 17,
- j_parent_start = 1, 26, 21,
- parent_grid_ratio = 1, 3, 3,
- parent_time_step_ratio = 1, 1, 1,
- feedback = 1,
- smooth_option = 0
- /
- &physics
- physics_suite = 'CONUS'
- mp_physics = -1, -1,
- cu_physics = -1, -1,
- ra_lw_physics = -1, -1,
- ra_sw_physics = -1, -1,
- bl_pbl_physics = -1, -1,
- sf_sfclay_physics = -1, -1,
- sf_surface_physics = -1, -1,
- radt = 15, 15,
- bldt = 0, 0,
- cudt = 0, 0,
- icloud = 1,
- num_land_cat = 21,
- sf_urban_physics = 0, 0,
- fractional_seaice = 1,
- /
- &fdda
- /
- &dynamics
- hybrid_opt = 2,
- w_damping = 0,
- diff_opt = 2, 2,
- km_opt = 4, 4,
- diff_6th_opt = 0, 0,
- diff_6th_factor = 0.12, 0.12,
- base_temp = 290.
- damp_opt = 3,
- zdamp = 5000., 5000.,
- dampcoef = 0.2, 0.2,
- khdif = 0, 0,
- kvdif = 0, 0,
- non_hydrostatic = .true., .true.,
- moist_adv_opt = 1, 1,
- scalar_adv_opt = 1, 1,
- gwd_opt = 1, 0,
- /
- &bdy_control
- spec_bdy_width = 5,
- specified = .true.
- /
- &grib2
- /
- &namelist_quilt
- nio_tasks_per_group = 0,
- nio_groups = 1,
- /
复制代码
real.exe用于将metgrid.exe的输出在垂直方向上插值到模式网格,生成真实的三维大气结构场。
- mpirun -np $NUMBER_OF_PROCESSORS ./real.exe
复制代码 提示:由于我们的d03区域很小,使用的核心数建议不超过16,否则会出现区域不够分割的错误。
real.exe运行后将会生成WRF的初始场wrfinput_*和边界场wrfbdy_*文件。
下面正式开始运行WRF数值模式:
- mpirun -np $NUMBER_OF_PROCESSORS ./wrf.exe
复制代码 WRF数值模式运行是一个非常耗时的工作,运行上述命令之后,您可以开启一个新的Piggy_Packages 终端,显示WRF运行进度。
开启新终端之后,输入:
- tail -f ~/WRF/run/rsl.out.0000
复制代码
WRF运行结束后,将会生成wrfout开头的结果文件。
3)WRF运行结果的可视化
wrfout开头的结果文件为NetCDF格式,因此,您可以使用Ncview或者Panoply来可视化这些文件。
- ncview wrfout_d01_2025-05-01_18:00:00
复制代码- Panoply wrfout_d01_2025-05-01_18:00:00
复制代码
帖子推荐:【原创资源】全国超高精度海拔高程数据
http://bbs.06climate.com/forum.php?mod=viewthread&tid=104420&fromuid=113111
如想了解 Piggy_Packages 的更多功能,请查看这篇帖子:
Piggy_Packages 气象科研常用软件集合
http://bbs.06climate.com/forum.php?mod=viewthread&tid=104814&fromuid=113111
——————技术支持——————
~欢迎加入Piggy气象科学交流QQ群852983715学习交流~
|