添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

用WRF模型进行气象模拟入门(2)——WPS的配置与使用

安装好WRF之后,还不能直接使用。需要先使用WPS进行数据预处理,准备好必须的输入数据与模拟参数,才能顺利运行模拟程序。

WRF提供了多种气象模拟模式,本文只介绍进行真实模拟(real)所必须的相关操作。

运行WRF模型之前,需要进行以下三个预处理操作:

  • 定义模型运行空间,以及嵌套区域
  • 进行数据重投影,转坐标
  • 对地表参数、气象数据进行时空插值
  • 这三个功能则由WPS的三个子程序完成,分别为:

  • geogrid.exe  主要功能为定义模型投影、区域范围,嵌套关系,对地表参数进行插值
  • ungrib.exe 主要功能为从grib数据中提取所需要的气象参数
  • metgrid.exe 主要功能为将气象参数插值到模拟区域
  • 这三个程序运行前需要先对它们的配置文件进行相应的修改。配置文件文件名为  namelist.wps, 位于WPS 源码根目录下。

    一个namelist.wps文件样例如下:

    &share
     wrf_core = 'ARW',
     max_dom = 2,
     start_date = '2006-08-16_12:00:00','2006-08-16_12:00:00',
     end_date = '2006-08-16_18:00:00','2006-08-16_12:00:00',
     interval_seconds = 21600
     io_form_geogrid = 2,
    &geogrid
     parent_id = 1, 1,
     parent_grid_ratio = 1, 3,
     i_parent_start = 1, 31,
     j_parent_start = 1, 17,
     e_we = 74, 112,
     e_sn = 61, 97,
     geog_data_res = '10m','2m',
     dx = 30000,
     dy = 30000,
     map_proj = 'lambert',
     ref_lat = 34.83,
     ref_lon = -81.03,
     truelat1 = 30.0,
     truelat2 = 60.0,
     stand_lon = -98.0,
     geog_data_path = '/glade/p/work/wrfhelp/WPS_GEOG/'
    &ungrib
     out_format = 'WPS',
     prefix = 'FILE',
    &metgrid
     fg_name = 'FILE'
     io_form_metgrid = 2,
    

    其中以&符号开头的为配置模块名称。 &share 模块描述了通用配置选项,&geogrid 描述了geogrid.exe的配置选项,&ungrib 描述了 ungrib.exe的配置选项,&metgrid 描述了 metgrid.exe的配置选项。

    在&SHARE部分中,

    wrf_core = ‘ARW’,

    用于设定WRF 的运行核心,其值为’ARW’ 或 ‘NMM’之一,本文只介绍’ARW’的配置

    max_dom = 2,

    用于设定嵌套区域数量

    start_date = '2006-08-16_12:00:00','2006-08-16_12:00:00',
    end_date = '2006-08-16_12:00:00','2006-08-16_12:00:00',

    是输入数据的起始和结束时间,对于ARW的嵌套区(样例中的区域2)只需要指定start_date即可,end_date的设定一般是无效的。

    interval_seconds = 21600

    设置输入数据的时间间隔,单位为秒;对于6小时再分析资料,就设为21600秒

    io_form_geogrid = 2,

    这是geogrid.exe的输出格式,2代表netCDF格式,推荐使用这个格式

    2. 嵌套关系定义与投影设定

    2.1 嵌套关系定义

    以下为区域嵌套关系的设定,结合下图来说明:

    parent_id = 1, 1,

    定义了各个嵌套区域的上级区域编号,在样例里:区域1(d01) 是根区域,因此区域1(d01)的上级区域还是区域1(d01);而区域2(d02)嵌套在区域1(d01) 中,那么
    区域2(d02) 的上级区域是区域1(d01)。

    i_parent_start = 1, 31,
    j_parent_start = 1, 17,

    设定了子区域左下角起点在上级区域的位置(栅格数)

    e_we = 74, 112,
    e_sn = 61, 97,

    设定了各个区域的矢量场的栅格数。矢量场的栅格数要比标量场栅格数多1。也就是说,在样例文件中,区域2的栅格数为\(111\times 96\)

    parent_grid_ratio = 1, 3,

    上级区域与下级区域之间的栅格尺寸比率;如果使用真实数据模拟,这个数必须设为奇数。

    各个区域中的 parent_grid_ratio 与 e_we, e_sn 之间必须满足\(\frac{e\_we-1}{parent\_grid\_ratio}\)和\(\frac{e\_sn-1}{parent\_grid\_ratio}\)为整数

    geog_data_res = '10m','2m',

    设定该嵌套区域静态数据的数据来源(WRF的自带数据通过分辨率来命名的)

    dx = 30000,
    dy = 30000,

    定义了根区域的栅格尺寸,在经纬度投影下,其单位是度;其他投影下其单位是米

    样例文件中的嵌套定义结果如下

    2.2 定义研究区范围与投影

    接下来定义研究区范围与投影

    map_proj = 'lambert',

    定义投影类型。在ARW中有4中投影类型供选择,分别为:’lambert’, ‘polar’, ‘mercator’, 和 ‘lat-lon’;而对于NMM只能使用’rotated\_ll’投影。本文仅讨论ARW四种投影。

    ref_lat = 34.83,
    ref_lon = -81.03,

    定义了根区域的中心经纬度坐标,含义如下图所示:

    通过 ref_lon, ref_lat 以及上文中提到的 e_we, e_sn, dx, dy 这六个参数共同确定了总研究区的空间范围。

    truelat1 = 30.0,
    truelat2 = 60.0,
    stand_lon = -98.0,

    这三个是投影参数,对于不同的投影类型有不用的含义,具体解释如下:

    对于lambert投影

    需要定义truelat1 和 truelat2,stand_lon则定义了在投影后与y轴平行的那条经线(见前一个图中的投影参数)。这个投影适合在中纬度地区使用

    对于 polar 投影

    只需要定义 truelat1 和 stand_lon 即可。适合在高纬度地区使用

    对于 mercator 投影,

    也只需要定义 truelat1 和 stand_lon 即可。适合在低纬度地区使用

    对于 lat-lon 投影,

    需要定义的参数为pole_lat, pole_lon, stand_lon。用于全球范围的模拟。
    如果用于对于北半球区域模拟,一般进行如下设定

    pole_lat=90.0 - ref_lat 
    pole_lon=180.0 
    stand_lon= -ref_lon

    而对于南半球区域模拟,一般设定

    pole_lat=90.0 + ref_lat 
    pole_lon=0.0
    stand_lon=180.0 - ref_lon

    注意以上 ref_lat 和 ref_lon 要代入计算后的值

    最后一个配置参数:

    geog_data_path = '/glade/p/work/wrfhelp/WPS_GEOG/'

    指明地理基础数据(如landcover)所在路径,该数据通常可以从WRF/ARW官网下载到(如 http://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html)。

    以上配置完成后,要确保在WPS根目录下存在 geogrid/GEOGRID.TBL 文件链接指向 GEOGRID.TBL.ARW,如果不存在,则需要使用如下命令手动生成文件链接

    cd geogrid; ln -s GEOGRID.TBL.ARW GEOGRID.TBL

    完成后即可执行 ./geogrid.exe

    如果执行成功,会在WPS目录生成相应的 geo_em.d0x.nc 文件。如果出现错误,先确认下载的数据与使用的WRF版本是否匹配。

    此外,如果计算机中安装了NCL,可以执行 WPS 目录下的 util/plotgrids.ncl 脚本,它会将 namelist.wps 中的嵌套区域绘制出来,来确保配置正确

    绘图命令为:

    ncl util/plotgrids_new.ncl

    就能得到这样的图示

    3. 气象数据的准备(Ungrib.exe)

    我们可以使用多种来源的气象数据驱动WRF运行,各种来源的数据都会被ungrib.exe处理为统一的格式。

    在WPS源码目录的 ungrib/Variable_Tables/ 路径下可以找到许多名为 Vtable.* 的文件,如:

    README                        Vtable.ECMWF                  Vtable.NCEP2
    Vtable.AFWAICE                Vtable.ECMWF_sigma            Vtable.NNRP
    Vtable.AGRMETSNOW             Vtable.ERA-interim.ml         Vtable.NOGAPS
    Vtable.AGRMETSOIL             Vtable.ERA-interim.pl         Vtable.NOGAPS_needs_GFS_soil
    Vtable.AGRMETSOIL2            Vtable.GFDL                   Vtable.RAP.hybrid.ncep
    Vtable.AGRWRF                 Vtable.GFS                    Vtable.RAP.pressure.ncep
    Vtable.ARW                    Vtable.GFSENS                 Vtable.RAP.sigma.gsd
    Vtable.ARWp                   Vtable.GFS+TROP               Vtable.RUCb
    Vtable.AVN0P5WRF              Vtable.GODAS                  Vtable.RUCp
    Vtable.AWIP                   Vtable.GSM                    Vtable.SST
    Vtable.CFSR2_web              Vtable.JMAGSM                 Vtable.TCRP
    Vtable.CFSR_mean              Vtable.NAM                    Vtable.UKMO_ENDGame
    Vtable.CFSR_press_pgbh06      Vtable.NARR                   Vtable.UKMO_LANDSEA
    Vtable.CFSR_sfc_flxf06        Vtable.NavySST                Vtable.UKMO_no_heights

    点后面的名称即为WRF 所支持的气象数据来源,比如 ECMWP, NCEP2。这些文件就描述了各个来源的气象数据应当如何读取。

    但是我们更加关心的事情是这些气象数据从哪里获取?这也可以在这些描述文件中找到,以 Vtable.GFS 文件为例,其最后一部分内容为:

     35 #  Vtable for GFS pressure-level data from the ncep server.

     37 #  ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.ccyymmddhh/    (note hh at end)

     39 #                          approx.    grid    hours      domain  dx      notes

     40 #                         file size   no.

     42 #  gfs.t12z.pgrb2f00       56000 Kb     4  3-h to 192-h  global  0.5 deg  (26 p-levels plus sfc and trop, 1000 to 10 mb).

     43 #  gfs.t12z.pgrbf00.grib2  18000 Kb     3  3-h to 384-h  global  1.0 deg  (26 p-levels plus sfc and trop, 1000 to 10 mb).

     47 #  For SNOWH, NCEP starts with the AFWA snow depth analysis and converts it to a water-equivalent.

     48 #  For some reason, NCEP uses a different ratio in the GFS/GDAS than in the NAM and that which is assumed in WRF.

     49 #  Therefore, we need to adjust SNOW and compute SNOWH in ungrib.

    这里已经将GFS的下载地址,文件名等信息介绍的十分清楚了,直接前往下载即可。下载好数据之后需要配置 namelist.wps 文件

    首先确保 &share 模块的三个参数 start_date , end_date , interval_seconds 覆盖的时间范围和步长与已经下载的数据一致,然后编辑 &ungrib 模块的参数

    out_format = 'WPS',

    用于指定输出格式,有’WPS’, ‘SI’, ‘MM5’三中选项;推荐使用’WPS’

    prefix = 'FILE’,

    指定输出文件的前缀

    接下来需要设定所使用 Vtable 文件。Vtable 文件描述了输入的气象场数据中各个参数的名称、单位,以及他们对应与WRF所需的什么变量。对于不同的气象数据,需要一个不同的Vtable来描述。WRF所支持的气象数据集对应的 Vtable 保存在WPS代码目录的 ungrib/Variable_Tables/ 中。

    我们需要做的就是把需要的Vtable链接到ungrib.exe运行目录,例如

    ln -s ungrib/Variable_Tables/Vtable.GFS Vtable

    ungrib.exe 通常会在目录下寻找名为 GRIBFILE.AAA, GRIBFILE.AAB, GRIBFILE.AAC, 等的气象数据文件,所以需要使用WPS根目录下的脚本 link_grib.csh 来自动生成所需要的链接,命令如下:

    link_grib.csh /data/GRIB/GFS/gfs*

    其中 /data/GRIB/GFS/ 要替换为存放了气象数据文件的路径。

    然后执行 ./ungrib.exe 即可从气象数据中提取所需要的数据。提取出来的文件的前缀是 FILE,与namelist.wps中的prefix参数一致。文件名形如 FILE:yyyy-mm-dd_hh

    4. 气象数据的重投影重采样

    最后需要把 ./geogrid.exe 和 ./ungrib.exe 准备好的数据重投影采样,为模型运行做准备。

    首先修改 namelist.wps 中的 &metgrid 模块

    fg_name = 'FILE'

    用于指定 ungrib.exe 得到的中间文件的文件名前缀,与 &ungrib 中的 prefix 保持一致即可

    io_form_metgrid = 2,

    指定输出文件格式,2代表netCDF格式。通常推荐使用这种格式

    这样 namelist.wps 中的配置就完成了,接下来要配置metgrid自己的配置文件METGRID.TBL。通常在 WPS根目录下的 metgrid/ 目录中有常用的默认配置,本文使用ARW,则确保WPS目录下的 METGRID.TBL 链接文件指向 ./metgrid/METGRID.TBL.ARW

    METGRID.TBL -> ./metgrid/METGRID.TBL.ARW
    如果不是,需要使用如下命令重新链接
    ln -s ./metgrid/METGRID.TBL.ARW METGRID.TBL

    接下来即可执行 ./metgrid.exe

    会给各个嵌套区都生成形如 met_em.d0x.yyyy-mm-dd_hh:mm:ss.nc 的数据文件,这些文件将会用来驱动WRF运行。如果执行失败,则需要根据错误原因上网搜索解决办法。

    至此所有使用WPS的准备工作已经全部完成。

    相关文章:

    1. 用WRF模型进行气象模拟入门(1)——简介以及代码编译
    2. 克里金(Kriging)插值的原理与公式推导
    3. 用WRF模型进行气象模拟入门(3)——WRF的运行
    《用WRF模型进行气象模拟入门(2)——WPS的配置与使用》有49个想法

    你好,我也是学习地理专业 正在学习使用WRF model. 您的文章对我非常有帮助。但是有一个问题我一直不是很清楚。就是WRF里面的datum是什么?WGS84,NAD83?其实地图投影并不影响经纬度坐标的计算。但是不同基准面会影响经纬度坐标。

    期待您的答复,

    datum 是基准面的意思,是测绘学里的概念。 测绘学里,真实的坑洼地球被一个椭球体拟合,称之为地球椭球体;为了更好拟合地表某个区域,需要对这个椭球进行适当偏移旋转,就变成了基准面;然后再投影成经纬度坐标等等。WGS 84是一个拟合全球最优的椭球,NAD 应该是跟北美最拟合的椭球

    “首先确保 &share 模块的三个参数 start_date , end_date , interval_seconds 覆盖的时间范围和步长与已经下载的数据一致”,请问如何查看已经下载的数据的start_date , end_date , interval_seconds 覆盖的时间范围和步长?

    parent_grid_ratio在真实数据模拟中为何要为基数,在WRF的USER GUIDE里面没有找到;另在“样例文件中,区域2的栅格数为 111×97”不应该是111×96吗?本人刚接触WRF,很多不懂得地方,求解答,谢谢~

    USER GUID 里面有这句话 parent_grid_ratio *Note: for real data cases the ratio must be odd; for ideal data cases, the ratio can be even if feedback is set to 0.

    这个PPT也有一页详细图解了:http://www2.mmm.ucar.edu/wrf/users/tutorial/201201/WRFNesting.ppt.pdf

    大意是:奇数比例能保证上下级网格的中心点重合,便于计算求解

    确实是111×96,感谢指正!

    老师,您好,我在运行WPS下的geogrid.exe时出现了下面的错误:
    Parsed 25 entries in GEOGRID.TBL
    Processing domain 1 of 1
    ERROR: Could not open /home/lliu/model/WPS/WPS-GEOG/geog/topo_10m/index
    Warning: ieee_inexact is signaling
    FORTRAN STOP
    为什么会打不开这个文件呢,路径什么的都没问题。
    谢谢你了~~

    您好,刚开始在Linux中使用WRF,看到你的博文对我帮助很大,但是目前存在一个问题,geogrid.exe和ungrib.exe显示执行成功,但是metgrid.exe则显示不正确,error:Error in ext_pkg_open_for_write_begin,并且其中有couldn’t find ST****,couldn’t find SM*****等问题。想请教一下出现这样的问题该从哪种角度考虑一下呢?

    您好,还有个问题要咨询一下,执行完ungrib.exe之后生成的FILE:YYYY-MM-DD_HH类型的文件,怎么一刷新就没有了,只剩下文件名为FILE的空文件,这个问题您知道有啥解决办法么?或者在哪里修改这个删除命令的代码?麻烦啦~

    您好,当执行wrf.exe的时候,没有生成rsl.out和rsl.error这两个文件,是没有使用并行计算的原因么,并行计算不懂,之前没有搞过。但是运行过程中让输入Please specify an authentication passphrase for smpd:了,不知道这算不算并行计算,还有就是执行wrf.exe这一步运行的时间好长啊~所使用的时间跨度是YYYY-MM-25_06:00:00-YYYY-MM-26_00:00:00.执行这一步大约需要12个小时,这样是不是 有什么问题?

    d02 区域的矢量场栅格数为 112 x 97,对应的标量栅格数为 111 x 96.
    由于d02 的栅格尺寸为 d01 的三分之一(parent_grid_ratio = 1, 3)
    因此 d02 区域在 d01 像元单位下的尺寸为 37 x 32 (111 x 96除以3)
    加上 d02 区域的起点坐标 (31,17),可以得到其终点坐标是(68,49)

    你好,麻烦咨询一下您,我在运行metgrid.exe时,出现WARNING: Entry in METGRID.TBL not found for field UTROP. Default options will be used for this field!类似的还有VTROP,TTROP等,请问这些是什么意思呢?谢谢您。

    请问stand_lon一般如何设置?有的是和ref_lon一样,有的不一样。
    官网给的定义是:A real value specifying, for ARW, the longitude that is parallel with the y-axis in the Lambert conformal and polar stereographic projections. For the regular latitude-longitude projection, this value gives the rotation about the earth’s geographic poles. For NMM, stand_lon is ignored. No default value.

    你好,请问,wrf输出的变量里面,只有U和V两个变量有值,其他变量,如热通量、气压、降雨和蒸发这些数据都是为0,我用的数据源是NCEP GFS的数据。请问这是什么问题?谢谢。。。

    请问,start_date,end_date是输入数据的起始和结束时间,对于ARW的嵌套区(样例中的区域2)只需要指定start_date即可,end_date的设定一般是无效的:起始时间是气象数据所代表的某天的时间吗,而结束时间是否可以不用修改指定

    对了 不知道是不是您自己发的 这三篇博文在百度文库里已被盗取并获益170次 https://wenku.baidu.com/view/098cee23524de518974b7d1d.html?re=view

    请问在运行./metgrid.exe时
    Processing domain 1 of 3
    ERROR: Couldn’t open file ./geo_em.d01.nc for input.
    application called MPI_Abort(MPI_COMM_WORLD, 0) – process 0
    出现了这个问题是什么原因啊,运行ungrib.exe没有问题。

    老师您好,我想请问我不小心下载的ECMWF数据均为nc格式,这种情况下如何代入WPS中运行ungrib呢?或者如何跳过ungrib和metgrid直接处理成real.exe可以接受的格式呢,请问这部分是否有相关教程呢,我在网上目前没有看到类似的教程。

    大佬您好,请问下用gfs数据跑wrf预报,假说起报时间为世界时9月1日00时,我要预报未来3天共72个小时的,就下载9月1日gfs公布的t00z***f000一直到t00z***f072吗?是否是说下载gfs的数据,就按照起报时间来看,06时起报就下载t06z系列的?如果不是按起报时间的话,那06 12 18时公布的数据有啥用呢? 还有就是https://ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs.20210901/00/atmos/这里的gfs数据和wrf官方的NECP GFS(ds084.1)有啥区别呢?都能驱动wrf跑预报吗?

    Creative Commons License
    Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
    本站内容授权方式为[署名-非商业性使用-禁止演绎 4.0 国际] (CC BY-NC-ND 4.0)

    欢迎通过微信联系我