预处理系统 WPS 详解:以4.5版本为例
- WPS 嵌套域(WPS Nested Domains)
- USGS 和 MODIS 土地利用
- 重力波拖拽方案静态数据(Gravity Wave Drag Scheme Static Data)
- 1. 什么是重力波拖拽方案(GWDO)静态数据?
- 2. GWDO 静态数据的分辨率
- 3. 配置 GWDO 静态数据
- 4. GWDO 数据的使用
- 使用多个气象数据源
- 1. 插值时间不变场(Interpolating Time-invariant Fields)
- 2. 从多个气象数据源进行插值(Interpolating from Multiple Sources of Meteorological Data)
- 参考
WPS 嵌套域(WPS Nested Domains)
运行 WPS 进行嵌套域模拟与运行单域情况类似;嵌套域模拟的不同之处在于,geogrid 和 metgrid 程序在运行时处理多个网格,而不是模拟单个网格。为了指定嵌套的大小和位置,必须为 namelist.wps 文件中的多个变量提供值列表,每个嵌套一个值。
namelist.wps 文件中share和geogrid内容如下:
&share
max_dom = 2,
start_date = '2019-09-04_12:00:00','2019-09-04_12:00:00',
end_date = '2019-09-04_18:00:00','2019-09-04_12:00:00',
/
&geogrid
parent_id = 1, 1,
parent_grid_ratio = 1, 3,
i_parent_start = 1, 53,
j_parent_start = 1, 25,
e_we = 150, 220,
e_sn = 130, 214,
geog_data_res = 'default','default',
/
受嵌套影响的名称列表变量显示在上面的(部分)名称列表记录中。示例显示了 双域运行(粗域加上单个嵌套) 的名称列表变量,并且对名称列表变量的影响以显而易见的方式推广到多个嵌套:不是指定两个值的列表,而是必须指定 N 个值的列表,其中 N 是模型网格的总数。
在上面的例子中,共享名称列表记录中的 max_dom 变量设置为模拟中的嵌套总数,包括粗域。然后,必须为所有其他受影响的名称列表变量提供一个 N 值列表,每个网格一个。共享名称列表记录的唯一其他更改是开始和结束时间。这里,必须为每个嵌套提供开始和结束时间,限制是嵌套不能在其父域之前开始或在其父域之后结束;此外,建议在运行 WPS 时将嵌套开始和结束时间都设置为嵌套的开始时间。这是因为嵌套从其父域获取其横向边界条件,因此,除了在 WRF 中使用网格微调(也称为分析微调)和/或 sst_update 选项时,WPS 只需要处理嵌套的初始时间。请注意,在运行 WRF 时,必须在 WRF namelist.input 文件中给出所有嵌套的实际开始和结束时间。
在 geogrid namelist 记录中,必须使用 parent_id 变量指定每个嵌套的父级。每个嵌套必须是另一个嵌套的子级,粗域是其自己的父级。嵌套相对于其父级的细化比率由 parent_grid_ratio 变量给出,该比率决定了嵌套相对于其父级网格间距的标称网格间距。
接下来,使用 i_parent_start 和 j_parent_start 变量将嵌套的左下角指定为嵌套父域中的 (i, j) 位置,并相对于非交错网格给出指定位置。
最后,使用 s_we、e_we、s_sn 和 e_sn 变量为每个嵌套给出每个嵌套的尺寸(以网格点为单位)。
上图说明了示例名称列表中的嵌套设置,从中可以看出如何确定上述每个变量。南北 (s_sn) 和东西 (s_we) 方向的起始网格点值必须指定为 1,而结束网格点值 (e_sn 和 e_we) 决定了嵌套的完整尺寸;为了确保嵌套网格的右上角与父域中的非交错网格点重合,e_we 和 e_sn 都必须比嵌套比率的某个整数倍大一。
此外,对于每个嵌套,要插入的源数据分辨率(或分辨率列表)由 geog_data_res 变量指定。有关这些名称列表变量的完整描述,请参阅 WPS 名称列表变量。
USGS 和 MODIS 土地利用
默认情况下,geogrid 程序会从 MODIS IGBP 21 类数据中插入土地利用类别。但是,可以选择基于 USGS 土地覆盖分类的替代土地利用类别集。尽管基于 MODIS 的数据包含 21 个土地利用类别,但这些类别并不是 24 个 USGS 类别的子集。请参阅静态数据中的土地利用和土壤类别,了解任一数据集的具体土地利用类别列表。
可以使用 &geogrid 名称列表记录中的 geog_data_res 变量在运行时选择基于 USGS 的 24 类土地利用数据,而不是 MODIS 数据,方法是将字符串 usgs_lakes+ 作为静态数据的每个分辨率的前缀。
例如,在双域配置中,geog_data_res 通常指定为
geog_data_res = 'default', 'default',
应该将其指定为
geog_data_res = 'usgs_lakes+default', 'usgs_lakes+default',
此更改指示地理网格程序在 GEOGRID.TBL 的每个条目中查找由“usgs_lakes”表示的静态数据分辨率,如果找不到这样的分辨率,则改为查找由“+”后面的字符串表示的分辨率。
因此,对于 LANDUSEF 字段的 GEOGRID.TBL 条目,将使用由字符串“usgs_lakes”标识的基于 USGS 的土地使用数据,而不是上例中的“默认”土地使用数据分辨率(或来源);对于所有其他字段,将使用“默认”分辨率作为第一和第二个分辨率。
另外,当在 GEOGRID.TBL 条目中找不到 geog_data_res 中为域指定的任何分辨率时,将使用由“默认”表示的分辨率。
注意:要更改默认的 21 类 MODIS 土地利用数据,必须在 WRF namelist.input 文件中的“physics”名称列表记录中将“num_land_cat”变量设置为“21”。对于 24 类 USGS 数据,“num_land_cat”应设置为 24。
重力波拖拽方案静态数据(Gravity Wave Drag Scheme Static Data)
**重力波拖拽方案(GWDO,Gravity Wave Drag by Orography)**是 WRF 模型中的一个物理过程模块,用于模拟由地形(山脉等)引起的重力波对大气层的影响。这些波可能导致能量和动量在大气中的垂直传播,从而影响天气模式、风场、湍流等现象。为了正确运行 GWDO 模块,WRF 要求从地形数据中提取特定的静态数据字段,并将其作为输入。
1. 什么是重力波拖拽方案(GWDO)静态数据?
GWDO 静态数据是与地形相关的地理信息数据,这些数据主要用于描述地形特征及其对重力波产生和传播的影响。WRF 模型使用这些静态数据来计算由地形引发的重力波的特性,包括波的振幅、波长、传播方向等。
GWDO 静态数据的关键字段
WRF 重力波地形拖曳 (GWDO) 方案需要WPS 中的 10 个静态字段,它们通常由 WPS(WRF Preprocessing System)中的 geogrid 程序处理。这些字段即使在不使用 GWDO 方案时也会被 geogrid 插值,但如果未启用 GWDO,它们不会被 WRF 使用。
这些字段包括:
- 地形高度(Topographic height)
表示地形的海拔高度,是重力波生成的主要影响因子。 - 地形高度的标准差(Standard deviation of topographic height)
用于描述局部地形的粗糙程度(或复杂性),如山脉的起伏幅度。 - 地形高度的方差(Variance of topographic height)
类似标准差,描述地形的高程变化。 - 地形高度的梯度(Gradient of topographic height)
用于计算地形坡度和方向。 - 地形高度的方向(Direction of topographic height gradient)
确定地形的主要坡度方向,影响重力波传播路径。 - 次一级的地形高度标准差(Secondary standard deviation of topographic height)
进一步细化地形特征。 - 地形高度的波数(Wave number of topographic height)
反映地形波动的频率,用于计算波数谱。 - 地形高度的带宽(Bandwidth of topographic height spectrum)
用于描述地形波长的范围。 - 地形高度的对称性(Symmetry of topographic height)
用于分析地形的对称性或不对称性。 - 地形高度的偏度(Skewness of topographic height)
衡量地形高度分布的倾斜程度。
如果使用 GWDO 方案,则应从比模型网格分辨率略低(即更粗糙)的源数据分辨率中插值这些字段;因此,应选择适当的 GWDO 静态数据分辨率。
2. GWDO 静态数据的分辨率
数据分辨率的重要性
GWDO 静态数据的分辨率对模拟结果的准确性有很大影响。如果数据分辨率过低,可能无法捕捉到重要的地形细节;但如果分辨率过高,可能会引入过多的小尺度特征,导致重力波参数化方案不稳定。因此,选择合适的分辨率非常重要。
可用的分辨率
WRF 提供了以下 5 种分辨率的 GWDO 静态数据(2 度、1 度、30 分钟、20 分钟和 10 分钟),分别用字符串“2deg”、“1deg”、“30m”、“20m”和“10m”表示,适用于不同的模型分辨率:
- 2 度分辨率(2-degree):非常粗糙,适用于大尺度全球模拟。
- 1 度分辨率(1-degree):适用于全球模拟或低分辨率区域模拟。
- 30 分钟分辨率(30-minute):适用于中等分辨率的区域模拟。
- 20 分钟分辨率(20-minute):适用于高分辨率区域模拟。
- 10 分钟分辨率(10-minute):最精细的分辨率,适用于超高分辨率模拟。
如何选择分辨率
WRF 要求 GWDO 数据的分辨率应 略低于模型网格分辨率。
例如,当模型网格分辨率为 48 km 时,推荐使用 30 分钟分辨率的数据。
如果未明确指定分辨率,默认会使用最精细的 10 分钟分辨率,这在大部分情况下是可接受的。
3. 配置 GWDO 静态数据
(1) 在 geogrid 中配置
在运行 WPS 的 geogrid 程序时,需要在 namelist.wps 文件的 &geogrid 块中指定静态数据的分辨率。
关键变量:geog_data_res
geog_data_res 用于指定地理数据分辨率,并可以同时指定多个数据分辨率。对于 GWDO 静态数据,可以使用以下格式:
要选择插值的分辨率,应在地理网格名称列表记录中通过字符串“XXX+”设置 geog_data_res 变量,其中 XXX 是五个可用分辨率之一。例如,在网格间距为 48 公里的模型配置中,geog_data_res 通常指定为
geog_data_res = 'default',
geog_data_res = 'XXX+default',
其中,XXX 是 GWDO 数据分辨率(如 30m、20m 等),default 表示其他静态数据(如地形高度、土地利用等)使用默认分辨率。
然而,如果采用 GWDO 方案,分辨率仍然低于模型网格的 GWDO 静态数据的最佳分辨率将是 30 分钟数据,在这种情况下设置应该是
geog_data_res = '30m+default',
如果 geog_data_res 变量中未指定“2deg”、“1deg”、“30m”或“20m”与其他静态数据分辨率的组合,则将使用默认分辨率“10m”GWDO 静态数据。请注意,如果使用 10 分钟分辨率 GWDO 数据,但其他静态字段(例如地形高度)需要不同的分辨率,则应从 geog_data_res 变量的给定值中发出“10m”,因为指定
geog_data_res = '10m+30s',
例如,对于非 GWDO 字段(例如地形高度和土地利用类别)以及 GWDO 字段,将导致土工格栅优先使用 10 分钟数据而不是 30 秒数据。
(2) geogrid 的工作方式
geogrid 程序会根据 geog_data_res 的设置,从静态数据文件中提取对应分辨率的 GWDO 数据。
如果未指定 GWDO 数据分辨率,geogrid 会默认使用最高分辨率的 10 分钟数据。
4. GWDO 数据的使用
(1) GWDO 数据是否必须
- 如果未启用 GWDO 方案,WRF 模型会忽略这些静态数据,尽管它们仍然会被 geogrid 插值。
- 如果启用了 GWDO 方案(通过在 namelist.input 文件的 &physics 块中设置 gravity_wave_drag 参数),模型会使用这些静态数据。
(2) 在 namelist.input 中配置 GWDO
在 namelist.input 文件的 &physics 块中,启用 GWDO 方案的关键参数为:
gravity_wave_drag = 1
这会启用重力波拖拽方案,并使用 geogrid 插值的 GWDO 静态数据字段。
使用多个气象数据源
1. 插值时间不变场(Interpolating Time-invariant Fields)
简介
在某些模拟中,需要使用时间不变的地理或气象场(例如固定的海表温度、土地利用类型或海陆掩码)。metgrid 支持引入这些时间不变场,并在每个时间步中都使用它们,而无需为每个时间步提供不同的输入数据。
实现方法
通过在 metgrid 的 namelist 配置文件中设置 constants_name 变量,指定时间不变场的中间格式文件路径和名称即可。
示例 1:使用单个时间不变文件(固定 SST)
&metgrid
constants_name = '/data/ungribbed/constants/SST_FILE:2006-08-16_12'
/
解释:
- 文件 /data/ungribbed/constants/SST_FILE:2006-08-16_12 包含时间不变的 SST 数据。
- 无论模拟的时间跨度如何,metgrid 都会在每个时间步中使用该文件中的 SST 值。
示例 2:使用多个时间不变文件
&metgrid
constants_name = 'LANDSEA', 'SOILHGT'
/
解释:
- LANDSEA 和 SOILHGT 是两个时间不变的中间格式文件,分别表示海陆掩码和土壤高度。
- 这些文件中的信息将被插值到模拟网格并用于整个模拟过程。
应用场景
- 模拟中只需使用某个固定时刻的场(例如海表温度、地表属性),而无需为每个时间步生成这些数据。
- 减少输入数据的准备复杂性,提高模拟效率。
2. 从多个气象数据源进行插值(Interpolating from Multiple Sources of Meteorological Data)
简介
metgrid 可以从多个气象数据源插值数据,这在需要结合多个数据集以生成完整的输入数据时非常有用。例如:
- 一个数据源提供地面数据,另一个数据源提供高空气象数据。
- 区域模型数据不足以覆盖整个模拟域,需要补充全球模型数据。
实现方法
通过在 metgrid 的 namelist 配置文件中设置 fg_name 变量,指定多个中间格式文件的路径前缀。
示例 1:结合地面数据和高空气象数据
&metgrid
fg_name = '/data/ungribbed/SFC', '/data/ungribbed/UPPER_AIR'
/
解释:
- /data/ungribbed/SFC:包含地面气象场的中间文件前缀。
- /data/ungribbed/UPPER_AIR:包含高空气象场的中间文件前缀。
- 如果某个气象场在多个数据源中同时存在,metgrid 会优先使用 fg_name 中最后指定的数据源中的值(这里是 UPPER_AIR 数据)。
示例 2:结合 NAM 和 GFS 数据
&metgrid
fg_name = '/data/ungribbed/GFS', '/data/ungribbed/NAM'
/
解释:
- GFS 数据和 NAM 数据被组合使用。
- 如果 GFS 或 NAM 提供了相同的气象场,则优先使用 NAM 数据,因为它在 fg_name 中的优先级更高。
数据准备:以 NARR 数据为例
使用 NARR(北美区域再分析)数据时,可以通过 ungrib 处理多个数据源,并为每个数据源定义不同的文件前缀:
1、3D 大气数据:
&ungrib
out_format = 'WPS',
prefix = 'NARR_3D',
/
运行后生成文件:
NARR_3D:2008-08-16_12
NARR_3D:2008-08-16_15
2、地面数据:
&ungrib
out_format = 'WPS',
prefix = 'NARR_SFC',
/
运行后生成文件:
NARR_SFC:2008-08-16_12
3、固定字段数据:
&ungrib
out_format = 'WPS',
prefix = 'NARR_FIXED',
/
生成文件:
NARR_FIXED:1979-11-08_00
将固定文件重命名为无日期格式(如 NARR_FIXED),并在 constants_name 中引用。
4、组合使用:
&metgrid
constants_name = 'NARR_FIXED',
fg_name = 'NARR_3D', 'NARR_SFC'
/
metgrid 将从 NARR 的 3D 数据、地面数据和固定字段中生成完整的输入数据。
高级场景:区域与全球数据的结合
当区域模型数据不足以覆盖整个模拟域时,可以通过以下方式结合区域和全球数据:
&metgrid
fg_name = '/data/ungribbed/GFS', '/data/ungribbed/NAM'
/
- 优先级:NAM 数据覆盖的区域优先使用 NAM,其余区域使用 GFS 数据。
- 结果:生成的模拟域数据包含了 NAM 和 GFS 的结合。