WRF前处理(WPS)
熟悉一下WPS三个程序组成模块的作用(为模拟准备输入场)
(1)geogrid:确定模式区域并把静态地理数据插值到格点。
(2)ungrib:从GRIB格式的数据中提取气象要素场。
(3)metgrid:把提取出的气象要素场水平插值到由geogrid确定的网格点上。
放置WRF和WPS及其他数据的文件夹如下设置:
运行geogrid(准备陆面要素静态数据)
由于静态数据集对时间不敏感,通常只需要下载一次就可以反复使用,这也表明,如果研究区域不发生变化时,geogrid这一步只需要运行一次即可,只有当研究区域发生变化时才需要再次运行这一步。
1、下载静态数据集:
打开这个网址:Index of /wrf/src/wps_files (ucar.edu)(这里基本上包括了模型运行基本上所有的静态地理数据。最后运行geogrid.exe时,遇到数据不全时,也可以直接在里面下载。Static Data Downloads (ucar.edu)这个网址也可以)。
下载geog_10m.tar.gz,它其中包括地形和土地用途分类等字段。下载后将geog_10m.tar.gz放在Build_WRF目录,直接将其解压。
解压命令为:tar xvzf geog_10m.tar.gz
将解压出来的geog文件夹重命名为WPS_GEOG:mv geog WPS_GEOG
2、编辑namelist.wps:
进入WPS,打开namelist.wps(命令:vi namelist.wps),修改其中的参数(键盘按一下 i 进入编辑模式,编辑结束后按“esc”键,再输入:wq即可保存)
3、编辑完namelist.wps文件后,执行geogrid.exe进行陆面要素插值
./geogrid.exe
这时候可能会出现报错信息:
这代表WPS_GEOG中的地理数据不全(所需地理数据包的种类与namelist.wps的设置有关),打开这个网址:Index of /wrf/src/wps_files (ucar.edu)或Static Data Downloads (ucar.edu)下载缺少的地理数据,放到WPS_GEOG中解压再运行,直到成功为止。以下我是下载的所有地理数据:
运行成功会生成geo_em.d01.nc文件:
运行./ungrib.exe
1、在与WPS同级别目录下创建DATA文件夹,将下载的数据放进去。本次使用ERA5数据驱动WRF,下载的是ERA5的single pressure数据和pressure数据,使用python脚本+IDM批量下载,关于ERA5的下载请参见博文:批量下载ERA5数据(Python+IDM)_import cdsapi-CSDN博客
首先创建链接,进入WPS这个文件夹,由于是ERA5数据,Table应为ECMWF:
ln -sf ungrib/Variable_Tables/Vtable.ECMWF Vtable
./link_grib.csh ../DATA_ERA0620/*.grib
成功后会出现下图的两个文件:
2、运行ungrib.exe:
./ungrib.exe
遇到error:libpng没有安装到它默认的路径下。
遇到error:libpng没有安装到它默认的路径下。解决办法如下:找到libpng12.so.0的安装路径,一般实在一个/lib文件夹下面。终端在WPS目录下输入以下命令:vim /etc/ld.so.conf,按i进入编辑模式将libpng12.so.0的安装路径输入进去。然后esc,输入“:wq”保存退出,接着输入命令:sudo ldconfig,再运行./ungrib.exe即可。
但上述方法在服务器上可能不行,因为没有管理员的权限。这时候可以用下面这种方法解决:参考博客:已解决:动态库加载失败:cannot open shared object file: No such file or directory-CSDN博客
vi ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/workspace/liy/Build_WRF/libraries/grib2/lib)
运行成功后将创建文件:
运行./metgrid.exe
./metgrid.exe
成功后生成:
如果报错:WARNING: Field PRES has missing values at level 200100 at (i,j)=(1,1)
WARNING: Field PMSL has missing values at level 200100 at (i,j)=(1,1)
WARNING: Field PSFC has missing values at level 200100 at (i,j)=(1,1)
ERROR: Missing values encountered in interpolated fields. Stopping.
是因为下载的驱动数据范围小于实际范围导致的,需要重新下载数据。
运行WRF
将上一步生成的met_em.文件链接到WRF运行的路径下(如果链接没成功,可以直接复制过来)
路径:../Build_WRF/WRF/run
ln -sf ../../../WPS/met_em.d01.2018-06* .(这里的WPS要换成自己的路径)
修改namelist.input::
vi namelist.input
运行./real.exe,可在rsl.error.0000中查看报错信息,******error******以下为报错信息,根据信息修改即可。例如有ERROR in psfc: flag_psfc = 1, flag_soilhgt = 1, flag_slp = 0, sfcp_to_sfcp = F报错,解决方法为:在namelist.input文件的“domains”部分添加下面这一条即可:
sfcp_to_sfcp = .true.
use_surface = .true.
成功运行之后会生成边界文件:
接着运行./wrf.exe,报错信息仍然在rsl.error.0000中查看(注意time_step的设置应该与dx的设置有关)
放置后台运行:nohup mpirun -np 4 ./wrf.exe &
运行成功后会生成文件: