WRF学习之 ch3 WPS(二)创建嵌套网格、选取土地利用数据、选取重力波拖曳方案的静态数据、使用多个数据源,使用非等压面数据,湖面SST替代初始化

参考自 WRF用户手册http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_V4/WRFUsersGuide.pdf第三章
3. The WRF Preprocessing System (WPS)

  • Introduction ................................................................................. 3-1
  • Function of Each WPS Program ................................................. 3-2
  • Installing the WPS ...................................................................... 3-5
  • Running the WPS ....................................................................... 3-8
  • Creating Nested Domains with the WPS .................................. 3-20
  • Selecting Between USGS and MODIS-based Land Use Data .......................................................................... 3-22
  • Selecting Static Data for the Gravity Wave Drag Scheme ........ 3-23
  • Using Multiple Meteorological Data Sources ............................ 3-23
  • Using Non-isobaric Meteorological Datasets .............................3-26
  • Alternative Initialization of Lake SSTs ............................. 3-27
  • Parallelism in the WPS ............................................................. 3-28
  • Checking WPS Output .............................................................. 3-29
  • WPS Utility Programs ............................................................... 3-30
  • Writing Meteorological Data to the Intermediate Format ........... 3-34
  • Required Meteorological Fields for Running WRF.....................3-36
  • Using MPAS Output for WRF Initial and Boundary Conditions..3-37
  • Creating and Editing Vtables .................................................... 3-39
  • Writing Static Data to the Geogrid Binary Format ..................... 3-41
  • Creating an Urban Fraction Field from NLCD Data .................. 3-44
  • Description of Namelist Variables ............................................. 3-46
  • Description of GEOGRID.TBL Options ..................................... 3-52
  • Description of index Options ..................................................... 3-55
  • Description of METGRID.TBL Options ..................................... 3-58
  • Available Interpolation Options in Geogrid and Metgrid ............ 3-61
  • Land Use and Soil Categories in the Static Data ...................... 3-64
  • WPS Output Fields ................................................................... 3-66

使用WPS创建嵌套网格

本质上,为嵌套网格模拟运行WPS,其实并不比为单网格个例运行WPS困难;不同之处是,当嵌套网格情况时,geogrid和metgrid程序在运行时处理多个网格,而不是用于模拟的单个网格。为了指定嵌套的大小和位置,必须为namelist.wps文件中的许多变量提供值列表,每个嵌套网格一个值。

&share
wrf_core = 'ARW',
max_dom = 2,
start_date = '2008-03-24_12:00:00','2008-03-24_12:00:00',
end_date = '2008-03-24_18:00:00','2008-03-24_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 = 'default','default',
dx = 30000,
dy = 30000,
map_proj = 'lambert',
ref_lat = 34.83,
ref_lon = -81.03,
truelat1 = 30.0,
truelat2 = 60.0,
stand_lon = -98.
geog_data_path = '/mmm/users/wrfhelp/WPS_GEOG/'
/
上面的namelist 片段显示了,受嵌套影响的namelist变量。该示例显示了两个网格运行(粗网格加上一个单独的子网格)的namelist变量,namelist变量的作用是生成多个子网格:必须指定N(网格的总数)。
在上面的例子中,首先要对namelist 记录中"share"字段中的max_dom变量进行更改,该max_dom必须设置为模拟中的总嵌套数,包括粗网格。在确定了嵌套的数量之后,所有其他受影响的namelist变量都必须得到一个N个值的列表,每个值对应一个网格。此外,还要更改"share"中的start_date 和end_date 。这里,必须为每个嵌套指定起始和结束时间,还有一个限制是,子网格的起始时间和结束时间,分别不能早于和晚于母网格的起始时间和结束时间;此外,当运行WPS时,建议设置的子网格的起始时间结束时间等于子网格的起始时间,除非在WRF中使用网格nudging,(也称为分析 nudging)。这是因为嵌套(子)网格的侧边界条件是从母网格获得的,这样,WPS只需要处理子网格的初始时间。值得之处的是,运行WRF时,所有子网格的开始和结束时间必须在WRF namelist.input文件中给定。

另外是对"geogrid"namelist记录的更改。在该记录中,每个网格的母网格必须用parent_id变量指定。每个子网格都必须是另一个网格的子网格,粗网格是它自己的母网格。与嵌套母网格的标识相关的是相对于其父网格的parent_grid_ratio,该比率由parent_grid_ratio变量给定;该比率决定了父网格间距和子网格间距的比值。

接下来,在母网格中的(i,j)位置的点指定为其子网格的左下角的点;通过设置i_parent_start和j_parent_start变量完成的,并且指定的位置是相对于无交错网格unstaggered grid 指定的。最后,设置s_we, e_we, s_sn, 和 e_sn变量,确定给出每个网格的大小。上图对应于例子中的namelist的设置,可以从中看到每个变量是如何确定的。目前,必须将南北(s_sn)和东西(s_we)方向上的起始网格点值指定为1,并且结束网格点值(e_sn和e_we)基本上确定网格的完整尺寸;为了确保子网格的右上角的点与母网格中的无交错网格点重合,**e_we和e_sn都必须大于嵌套比率的整数倍**。此外,对于每个嵌套,要从中插值的源数据的分辨率(或一个或多个分辨率;请参见namelist变量的说明)是使用geog_data_res变量指定的。有关这些namelist变量的完整说明,请参阅namelist变量的说明。

基于USGS和MODIS的土地利用分类选择

默认情况下,geogrid程序将从MODIS IGBP 21类别数据中插入土地使用类别。但是,用户可以根据USGS(美国地质勘探局)的土地覆盖分类选择一组替代的土地覆盖(land-cover)类别。虽然基于MODIS的数据包含21个土地利用(land use)类别,但这些类别不是24个USGS类别的子集;对这两个数据集中的特定类别感兴趣的用户可以在土地利用和土壤类别部分land use and soil categories找到土地利用类别的列表。

运行时,除了使用MODIS数据之外,还可以通过设置 &geogrid记录中的geog_data_res 变量,选择基于USGS的24类土地利用数据。这是通过在静态数据的每个分辨率前加上字符串"usgs_lakes"来实现的。例如,在双重网格配置中,geog_data_res变量通常指定为
geog_data_res='default','default',
用户可以这样指定
geog_data_res= 'usgs_lakes+default', 'usgs_lakes+default',
此更改的效果是告诉geogrid程序,在geogrid.TBL文件的每个条目中,查找具有由'usgs-lakes'表示的分辨率的静态数据的分辨率,如果此分辨率不可用,则查找由'+'后面的字符串表示的分辨率。因此,对于LANDUSEF字段的GEOGRID.TBL条目,将使用字符串'usgs_lakes'表示基于USGS的土地利用数据,而不是上例中土地利用数据的'默认'分辨率(或源);对于所有其他字段,将对第一个和第二个使用'default'分辨率。另外,如果在GEOGRID.TBL 条目中的geog_data_res中未找到为网格指定的任何分辨率,则将使用'default'表示的分辨率。

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

重力波拖曳方案的静态资料选取

ARW中的地形的重力波阻力(gravity wave drag by orography, GWDO)方案需要WPS的10个静态场。实际上,无论模型中是否使用GWDO格式,都将由geogrid程序对这些场进行插值。当不使用GWDO方案时,WRF中的这些场将被忽略,并且用户不必关心从中插值的场的数据的分辨率。但是,建议从比模型网格分辨率稍低(即更粗)的源数据分辨率插值这些场;因此,如果将使用GWDO方案,应注意选择GWDO静态数据的适当分辨率。目前,GWDO静态数据有五种分辨率:2度、1度、30分、20分和10分,分别由字符串"2deg","1deg","30m","20m",和"10m"表示。要选择要插值的分辨率,用户应该为namelist中"geogrid"部分的geog_data_res变量前面加上字符串"XXX+"指定分辨率,其中XXX是GWDO静态数据的五种可用分辨率之一。例如,在具有48 km网格间距的模式中,geog_data_res变量通常可以指定为
geog_data_res = 'default',
但是,如果使用GWDO方案,则分辨率仍然低于模型网格的GWDO静态数据的最佳分辨率将是30分钟的数据,在这种情况下,用户应指定
geog_data_res='30m+default',
如果"2deg","1deg","30m"或"20m"中的任何一个都未与geog_data_res变量中静态数据的其他分辨率一起指定,则将使用"10m"GWDO静态数据,因为它在GEOGRID.TBL文件中也被指定为'default'分辨率。值得注意的是,如果要使用10分分辨率的GWDO数据,但对于其他静态场(例如,地形高度)需要使用不同的分辨率,用户只需在给定的geog_data_res变量值中省略'10m'。比如,指定
geog_data_res = '10m+30s',
将导致geogrid优先使用10分的数据,而不是使用于非GWDO场的30秒数据,例如地形高度和土地使用类别,以及用于GWDO场。

使用多个气象数据源

metgrid程序既可以对时间不变场进行插值,也可以从多个气象数据源进行插值。
第一个功能使用&metgrid namelist记录中的constants_name变量实现。这个变量可以是一个中间格式文件的文件名列表(必要时包括路径信息),中间格式文件包含时间不变场,并且应在metgrid处理的每个时间段的输出中使用。例如,较短时段的模拟可以使用常量SST场;该场只需在一次可用,并且可以通过将constants_name变量设置为SST中间文件的路径和文件名来使用。常量名称的典型用法可能如下
&metgrid
constants_name = '/data/ungribbed/constants/SST_FILE:2006-08-16_12'
/

&metgrid
constants_name = 'LANDSEA', 'SOILHGT'
/
第二种metgrid功能(即从多个源插入数据)在需要组合两个或多个互补数据集,从而生成real.exe所需的完整输入数据的情况下非常有用。要从多个时变气象数据源进行插值,&metgrid namelist记录中的fg_name变量应设置为中间文件的前缀列表(必要时包括路径信息)。如果给定了多个路径前缀,并且来自多个源的同一气象变量场可用,则来自最后指定源的数据将优先于所有先前的源。因此,可以根据数据源的给定顺序对数据源进行优先级排序。

作为此功能的一个示例,如果在一个数据源中给定地面场,而在另一个数据源中给定高空数据,则赋给fg_name变量的值可能类似于:
&metgrid
fg_name='/data/ungribed/SFC','/data/ungribed/UPPER_AIR'
/
为了简化从GRIB文件提取场的过程,可以使用&ungrib namelist记录中的prefix变量,来控制ungrib创建的中间文件的名称(和路径)。这个namelist变量的实用性很容易通过一个例子来说明。假设我们希望使用北美区域网格再分析(NARR)数据集,该数据集分为三维大气数据、地表数据和固定场数据的单独GRIB文件。我们可以首先使用link_GRIB.csh脚本链接所有"3D"GRIB文件,然后将NARR Vtable链接到文件名Vtable。然后,我们可以在运行ungrib.exe之前适当地编辑&ungrib namelist字段,以便生成的中间文件具有适当的前缀:
&ungrib
out_format = 'WPS',
prefix = 'NARR_3D',
/

运行ungrib.exe后,以下文件应以适当的日期替换:
NARR_3D:2008-08-16_12
NARR_3D:2008-08-16_15
NARR_3D:2008-08-16_18
...

得到三维场的中间文件之后,我们可以通过链接地面场GRIB文件并更改namelist中的prefix变量来处理地面场:
&ungrib
out_format = 'WPS',
prefix = 'NARR_SFC',
/

再次运行ungrib.exe,除了NARR_3D文件意外,会生成以下文件:
NARR_SFC:2008-08-16_12
NARR_SFC:2008-08-16_15
NARR_SFC:2008-08-16_18
...

最后,将固定文件用link_grib.csh脚本链接,并再次设置namelist中的prefix变量:
&ungrib
out_format = 'WPS',
prefix = 'NARR_FIXED',
/

第三次运行ungrib.exe程序之后,除了地面场和"3D"场文件之外,静态场文件也生成了:
NARR_FIXED:1979-11-08_00

为了清楚起见,可以重命名固定文件以删除任何日期信息,例如,将其重命名为简单的NARR_fixed,因为文件中的场是静态的。在本例中,我们注意到NARR固定数据仅在特定时间(1979年11月08日,0000 UTC)可用,因此,在为NARR固定文件运行ungrib之前,用户需要在&share namelist字段中设置正确的开始和结束时间;当然,在运行metgrid之前重新设置时间。

在生成NARR数据集中的所有3部分数据的中间文件后,在&metgrid namelist字段中设置constants_name和fg_names变量,之后就可以运行metgrid.exe了:
&metgrid
constants_name = 'NARR_FIXED',
fg_name = 'NARR_3D', 'NARR_SFC'
/

需要多个数据源的另一种情况(虽然不太常见)是,来自区域模型的气象数据源不足以覆盖整个模拟域,在插值到模拟网格的其余点时,必须使用来自较大区域模型或全局模型的数据。
例如,要尽可能使用NAM数据,否则使用GFS数据,可以在名称列表中分配以下值:
&metgrid
fg_name = '/data/ungribbed/GFS', '/data/ungribbed/NAM'
/
然后生成的模型域将使用如下图所示的数据。

如果没有一个变量场同时出现在多个源中重复出现,那么metgrid不需要应用优先级排序,每个场将像往常一样简单地进行插值;当然,每个源都应该覆盖整个模拟域,以避免丢失数据的区域。

使用非等压气象数据集

当使用非等压气象数据集初始化WRF模拟时,重要的是将这些数据集提供给metgrid.exe程序,其三维气压场和位势高度场与其他三维大气变量(如温度和湿度)处于同一高度。WRF real.exe预处理器使用这些字段来垂直插值到WRF模型级别、计算表面压力以及其他目的。
对于一些数据源,即ECMWF模式层数据和英国气象局模式数据,三维气压和/或位势高度场可以通过使用一系列系数,从表面气压 和/或 表面高度场推导出,并且WPS提供了执行此导出的实用程序;参见WPS实用程序这一节,有关calc_ecmwf_p.exe和height_ukmo.exe程序的详细信息。
其他气象数据集显式提供三维压力场和位势高度场,用户需要确保提供给metgrid.exe程序的中间文件中包含这些变量场。

湖面SST的替代初始化

metgrid程序中对海洋和湖泊表面温度的默认处理方法是简单地将SST场从中间文件插值到WRF域中的所有水点。然而,如果在WRF网格中被解析的湖泊没有在GRIB数据中被解析,特别是如果这些湖泊在地理上远离解析的水体,那么湖泊上的SST场很可能是从GRIB数据中最近的分解水体中外插出来的;这种情况可能导致湖面SST值异常温暖或异常寒冷。
如果没有高分辨率的海温场供metgrid使用,外插湖泊海温值的另一种方法是对湖泊海温进行“最佳猜测”。在metgrid和real程序中,这可以使用(区分湖泊和海洋的)特定土地利用数据集和用于湖上SST代用的场的组合来完成。一个特定的土地利用数据集是必要的,因为WRF的实际预处理程序需要知道哪里应该使用人造的SST场,而不是GRIB数据中的插值SST场。
初始化湖面 SST的替代过程总结如下:

  1. 在运行geogrid前,确保&geogrid namelist 记录中的geog_data_res规格指向的是基于USGS或基于MODIS的内陆水体土地利用数据。geogrid程序中默认使用基于MODIS的土地使用,其中包含湖泊类别。但是,也可以使用包含湖泊类别的USGS的土地利用数据集。例如,在双重网格配置中,设置
    geog_data_res = 'usgs_lakes+default', 'usgs_lakes+default',
    会告诉geogrid,在两层网格都使用基于USGS的土地利用数据。
    运行geogrid时,输出文件应该使用单独的内陆水体类别,而不是用于海洋的一般水体类别。湖类别由geogrid输出文件中的全局属性ISLAKE标识;该属性应设置为28(对于基于USGS的数据)或21(对于基于MODIS的数据)。例如,请参见WPS输出字段列表,其中ISLAKE的值为-1表示没有分开的湖类别。

  2. 运行ungrib程序后,使用avg_tsfc.exe实用程序创建一个中间文件,其中包含一个日平均地表空气温度场,real程序仅替换湖上的SST场;有关avg_tsfc.exe实用程序的更多信息,请参阅WPS实用程序部分。

  3. 在运行metgrid程序之前,将上一步创建的TAVGSFC文件添加到namelist.wps文件的&metgrid字段中的constants_name中。

  4. 在namelist.input文件的&physics字段中设置land categories(num_land_cat)的数值后,像通常一样运行WRF的real.exe程序,使其与metgrid文件中全局属性NUM_LAND_CAT的值匹配。如果metgrid文件中的全局属性ISLAKE指示湖泊有一个特殊的土地使用类别,则real程序将仅在其类别与湖泊类别匹配的网格点上用TAVGSFC场替换SST场;此外,由于LANDUSE.TBL和VEGPARM.TBL文件都不包含湖泊类别的条目,因此real程序将把湖泊的土地使用类别改回一般水体类别(用于海洋的类别)。

posted @ 2020-04-29 18:39  chinagod  阅读(3837)  评论(0)    收藏  举报