WRF运行

注:linux中文件命名不要出现空格和括号

1.研究区域确定

确定研究区域可以输出namelist.wps的研究范围,跳转https://jiririchter.github.io/WRFDomainWizard/可以实现在官网上绘制研究区域并生成namelist.wps文件,也可以在windows或linux上下载domain wizard工具(比较麻烦)

点击保存下载就可以得到研究范围了

研究域说明:我这里采用外层和内层在1:3左右,主要是内域不要太靠近外域,同时内域不一定要正中心。调整位置的主要考量在于,边界处尽量不要有特别大的地形变化

2.WPS处理

2.1 修改namelist.wps文件

2.2 WPS主操作

进入wps文件后操作:

链接再分析气象数据

./link_grib.csh path(气象数据所在的文件夹)/fnl_2019061*
ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
./ungrib.exe

地理数据处理,如果对研究范围的地理数据修改了,需要在geogrid文件夹的GEOGRID.TBL中加入新的地理数据位置

./geogrid.exe 

 将气象数据和地理数据整合

./metgrid.exe 

2.3 WPS辅操作(可以不管) 

查看自己的嵌套域大小

ln -sf util/plotgrids_new.ncl .
ncl plotgrids_new.ncl 

3.WRF运行

3.1 WRF主操作

将WPS生成的met文件链接过来

ln -sf ../../wps/met_em.d0* .

初始化

./real.exe #初始化

可选项:移除对当前 shell 及其子进程堆栈大小的限制 ,当运行多个wrf或输出结果很大的时候可以输入这个

ulimit -s unlimited

wrf运行几种选择,最后一种最优

第一种: 直接运行wrf,且不能关闭终端,受限制大

./wrf.exe 

第二种 :后台运行wrf,不受终端关闭影响,不关机就行

nohup ./wrf.exe >& out.log 
#nohup:这个命令使得后面的进程能够忽略挂起信号(SIGHUP),即使关闭了启动它的终端,进程也会继续运行。
#>& out.log:这部分将标准输出重定向到一个名为out.log的文件中。>&是>和2>&1的简写形式,表示将标准输出和标准错误都重定向到同一个文件。

第三种: 多核运行wrf,速度最快,推荐

time nohup mpirun -n 9 ./wrf.exe >& out.log &

#time:会输出命令运行时长
#mpirun:这是MPI的运行命令,用于启动一个并行应用程序。
#-n 9:这个选项指定了要使用的MPI进程数量,这里是9个进程。
#&:将整个命令放在后台执行。

wrf.exe 应该使用多少个处理器?
使用的最小处理器数量应基于尺寸最大的域,而使用的最大处理器数量应基于尺寸最小的域。比如说,你有 2 个域,域 01 是 20x20 的网格空间,而域 02 是 30x30的网格空间。您可以通过计算大致估算出处理器的数量:
最大处理器数量:
(20/10)*(20/10) = 4 个处理器

使用过多处理器的问题在于,当您使用多个处理器时,会根据使用的处理器数量将域划分为多个正方形。但每个方格都有光环(或从每个边界向内一定数量的网格空间),可以获得靠近边界区域的相邻计算结果。如果使用的处理器数量过多,每个方格都会变得小于光环的大小,这就会造成问题

可以通过ps和htop查看后台运行的进程,可以通过kill 进程号杀死后台进程

ps -ef | grep 'wrf.exe' | grep -v grep | awk '{print $2}' | xargs -n 1 kill -SIGTERM
#杀死所有进程
ps -ef | grep wrf.exe
#查看与wrf有关的进程

并行运算参考:https://www.mmasclub.cn/thread-290-1-1.html

wrf运行是否成功判定

并行运算的wrf会输出多个rsl.out.*文件,如果仿真成功,则应在这些文件的末尾打印消息 SUCCESS COMPLETE WRF。这可以通过键入tail rsl.out.0000 快速检查

3.2 wrfout结果查看

(1)wrf输出参数查看

ncview wrfout数据
ncdump -h wrfout数据 

(2)wrf运行时间查看

namelist.input 中的所有选项都保留在名为 namelist.output 的文件中。

要检查写入 netCDF 文件的输出时间,可以使用以下 netCDF 命令(例如)

ncdump -v Times wrfout_d01_yyyy-mm-dd_hh:00:00

若要查看每个模型时间步长的计算时间,请打开记录这些时间的 rsl.out.0000 文件(或其他标准输出文件)。例如

模型时间步长

Timing for main: time 2006-01-21_23:55:00 on domain  2: 4.91110 elapsed seconds.
Timing for main: time 2006-01-21_23:56:00 on domain  2: 4.73350 elapsed seconds.
Timing for main: time 2006-01-21_23:57:00 on domain  2: 4.72360 elapsed seconds.
Timing for main: time 2006-01-21_23:57:00 on domain  1: 19.55880 elapsed seconds.

4.地理数据替换

4.1通过GIS将最新地理数据替换并生成3类UCM数据分类

(1)重分类(在GIS中将栅格数据转化为二进制数据,数据精度为10m*10m)最后输出文件坐标系为地理坐标系wgs1984,其中1类可以修改为31?

重分类土地利用栅格数据,将中国土地利用分类换成美国土地利用分类

将中国土地利用分类系统转换成USGS(WRF可识别)
USGS类型中国土地类型USGS类型中国土地类型USGS类型中国土地类型
151,53

10

1961,62,63,65,67
21120
311,12,521221
41322
514212366
61531
731,32,331641,42,43,4632
822,231745,6433
92418

 (2)在新地形的基础上继续分类,将城市建成区分为低密度住宅、高密度住宅和工商业运输,根据不透水面比例确定

(3)镶嵌至新栅格 (底图放在第一位,后面两行都是first,像素和波段点根据原栅格输入),将新的3类UCM镶嵌到土地利用数据中

(4)将最终的数据的投影转成WGS_1984

(5)将数据导出,NoDaTa值修改为255,网格大小为0.001*0.001

(6)栅格转ASCII,WRF只能识别二进制数据,数据转换

(7)其他土地利用SinoLC-1

4.2 在Linux中把二进制数据转换成WRF识别的二进制数据

(1)将asciitowps.f90、write_geogrid.o和二进制txt文件复制进wps/geogrid/src中

(2)修改asciitowps.f90中的二进制文件夹路径

(3)执行gfortran -free asciitowps.f90 writr_geogrid.o命令生成a.out文件

(4)执行./a.out命令生成地理数据

(5)从已有地理数据中拷贝index文件修改参数(改tile)

4.3 设置namelist.wps的参数调用新的地理数据

(1)在wps/geogrid里面修改GEOGRID.TBL文件,把新的地理数据加入进去(在name=LANDUSEF属性下添加)一般加到每种类型的最后面,以下图片加到最前面了

(2)修改namelist.wps的geogrid的部分

(3) geog_data_res后参数解释,比如以下代码:

geog_data_res = ‘usgs_lakes+default’, ‘usgs_lakes+default’,

此更改的效果是指示geogrid程序在GEOGRID.TBL文件的每个条目中查找静态数据的分辨率,该分辨率由“usgs_lakes”表示,如果此分辨率不可用,则采用“+”后面的字符串表示的分辨率。 因此,对于LANDUSEF字段的GEOGRID.TBL条目,将使用以字符串“usgs_lakes”标识的基于USG的土地利用数据,而不是上例中的“default”分辨率。 但当在GEOGRID.TBL条目中找不到geog_data_res中为域指定的分辨率时,将使用“default”表示的分辨率。

在更改默认的21类MODIS土地利用数据时,用户还必须确保在WRF namelist.input文件的&physics namelist记录中正确设置num_land_cat namelist变量。 对于24类USGS数据,num_land_cat应设置为24。

interp_option =    nlcd2006_9s:average_gcell(0.0)
interp_option =   nlcd2006_30s:average_gcell(0.0)
interp_option =    nlcd2011_9s:average_gcell(0.0)  
interp_option =       nlcd2006:nearest_neighbor
interp_option =       ssib_10m:four_pt
interp_option =        ssib_5m:four_pt
interp_option =      modis_15s:nearest_neighbor #modis15s约450m分辨率土地利用
interp_option = modis_15s_lake:nearest_neighbor #modis土地利用带水体450m分辨率
interp_option =      modis_30s:nearest_neighbor #modis30s约900m分辨率土地利用
interp_option = modis_30s_lake:nearest_neighbor #modis土地利用带水体900m分辨率
interp_option =       usgs_30s:nearest_neighbor #usgs30s约900m分辨率土地利用
interp_option =     usgs_lakes:nearest_neighbor #usgs土地利用带水体
interp_option =    modis_lakes:nearest_neighbor #modis土地利用带水体
interp_option =        usgs_2m:four_pt          #usgs2分约4000m分辨率土地利用
interp_option =        usgs_5m:four_pt          #usgs5分约9000m分辨率土地利用
interp_option =       usgs_10m:four_pt          #usgs9分约19000m分辨率土地利用
interp_option =         lowres:average_gcell(4.0)+four_pt
interp_option =        default:nearest_neighbor #default默认数据是modis_lakes数据

5.WRF运行问题

5.1WRF-UCM问题

(1)ZDC + Z0C + 2m is larger than the 1st WRF level - Stop in subroutine urban - change ZDC and Z0C(在城市化参数设置中,ZDC(城市屋顶高度)加上Z0C(粗糙度长度)再加上 2 米的高度超过了 WRF 模型的第一个垂直层的高度)

这是因为UCM 对第一个模型级别有限制(第一个 WRF 级别必须高于 ZDC + Z0C + 2 m,其中 ZDC 和 Z0C 是平均建筑高度及其标准偏差),而BEP和BEM没有限制,所以UCM第一级别设置为55m。也就是dzbot =55

解决:修改eta_levels ,使WRF第一个垂直层高度增加,dzbot =50,e_vert

参考模型垂直水平设置:

参考文章https://forum.mmm.ucar.edu/threads/wrf-ucm-problem-wrf-exe-only-output-the-first-time-period-gfs-fnl-used.8336/

(2)WRF-BEP/BEM问题

问题:At line 2372 of file module_sf_urban.f90
Fortran runtime error: Bad real number in item 1 of list input

解决:打开wrf/run下的URBPARM.TBL文件,检查最后几段关于1、2、3类城市的建筑高度和所占比例输入情况,建议重新输入,不要从windows复制粘贴

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值