【WRF工具】MPAS(多尺度预测模型)-输出WRF初始和横向边界条件
【WRF工具】MPAS(多尺度预测模型)-输出WRF初始和横向边界条件
- MPAS概述
- 模型概述
- 主要特点
- 使用MPAS输出WRF初始和横向边界条件
- 参考
从WPS的v3.9版本开始,metgrid.exe程序能够从 跨尺度预测模型(The Model for Prediction Across Scales, MPAS) 读取netCDF格式的本机非结构化网格输出。本博客主要简介MPAS(多尺度预测模型)。
MPAS概述
官网-MPAS Overview
模型概述
MPAS(多尺度预测模型)是一个合作项目,旨在开发大气、海洋及其他地球系统模拟组件,用于气候研究、区域气候研究和天气预报。主要开发合作伙伴包括洛斯阿拉莫斯国家实验室(LANL)的气候建模组(COSIM)和国家大气研究中心(NCAR)。这两个主要合作伙伴共同负责MPAS框架、通用操作符和工具的开发;LANL主要负责海洋和陆冰模型,而NCAR主要负责大气模型。
主要特点
- 非结构化Voronoi网格:
MPAS采用非结构化的Voronoi网格,正式称为球面中心Voronoi划分(SCVTs),这使得模型能够进行球体的准均匀离散化和局部细化。 - C-grid离散化:
模型使用C-grid离散化方法,特别适合进行高分辨率的中尺度大气和海洋模拟。在C-grid中,速度的法向分量是在网格边缘上进行预报的,这提高了模拟的精度。 - 陆冰模型:
MPAS的陆冰模型利用SCVT的双重网格结构,采用适用于有限元离散化的三角形Delaunay划分。
使用MPAS输出WRF初始和横向边界条件
WRF User Guide-Using MPAS Output for WRF Initial and Lateral Boundary Conditions
从WPS的v3.9版本开始,metgrid.exe程序能够从跨尺度预测模型(MPAS)读取netCDF格式的本机非结构化网格输出;然后metgrid.exe程序可以水平地将MPAS字段直接插入到由geogrid.exe程序定义的任何域,以产生可由WRF real.exe程序使用的输出文件,其方式与从中间文件插入的metgrid输出完全相同。
这样,海洋资源系统的输出可用于为水资源资源提供初始和横向边界条件。
在运行MPAS模拟时,必须设置输出流以包含初始化WRF模拟所需的最小字段集。对于MPAS v5.x,下面的输出流应该足够了。
<stream name="wrf_ic_bc"type="output"filename_template="MPAS.$Y-$M-$D_$h.nc"output_interval="3:00:00" ><var name="xtime"/><var_array name="scalars"/><var name="pressure"/><var name="zgrid"/><var name="theta"/><var name="uReconstructZonal"/><var name="uReconstructMeridional"/><var name="u10"/><var name="v10"/><var name="q2"/><var name="t2m"/><var name="skintemp"/><var name="surface_pressure"/><var name="mslp"/><var name="tslb"/><var name="smois"/>
</stream>
在运行MPAS并定义合适的输出流之后,将生成一组包含本地MPAS网格上字段的netCDF文件。由于这些文件不包含描述MPAS网格单元的位置、几何形状和连通性的字段,因此必须将这些信息与来自MPAS仿真的“静态”文件一起提供给metgrid程序。因此,有必要在&metgrid命名列表记录中指定带有constants_name和fg_name变量的MPAS netCDF文件(前缀为‘ MPAS: ’),例如:
&metgridconstants_name = ‘mpas:static.nc’fg_name = ‘mpas:MPAS’
/
在上面的例子中,metgrid.exe程序将首先读取MPAS的静态文件。读取网格信息并计算从MPAS网格到由geogrid.exe程序定义的WRF域的重映射权重,然后将处理前缀为“MPAS”(后缀为YYYY-MM-DD_HH.nc)的MPAS文件的所有时间段。real.exe程序就可以正常运行了。
ungrib.exe程序创建的中间文件中的数据可以通过metgrid程序与MPAS数据相结合。这可能是有用的,例如,利用其他来源的海温、海冰或陆地表面场。
下面显示了一个将MPAS数据与带有土壤数据(带有‘ ERAI_SOIL ’前缀)的ERA-Interim中间文件组合在一起的示例。
&metgridconstants_name = ‘mpas:static.nc’fg_name = ‘mpas:MPAS’, ‘ERAI_SOIL’
/
由于MPAS ‘ zgrid ’字段不随时间变化,因此可以从MPAS周期输出流中省略;然而,在这种情况下,‘ zgrid ’字段必须放在它自己的netCDF文件中,该文件还必须将维度‘ Time ’定义为netCDF无限维度。然后,这个文件(比如‘ zgrid.nc ’)可以使用constants_name namelist变量提供给metgrid程序,例如:
&metgridconstants_name = ‘mpas:static.nc’, ‘mpas:zgrid.nc’fg_name = ‘mpas:MPAS’
/
将‘ zgrid ’字段放在它自己的文件中可以节省相当大的空间,当长MPAS模拟运行时,或者当输出流用作WRF初始和边界条件以高时间频率写出来时。下面的python脚本可以作为如何将‘ zgrid ’字段提取到其自己的netCDF文件的示例。
from netCDF4 import Datasetfin = Dataset('init.nc')
fout = Dataset('zgrid.nc','w',format='NETCDF3_64BIT')
nCells = fin.dimensions['nCells'].size
nVertLevelsP1 = fin.dimensions['nVertLevelsP1'].sizefout.createDimension(dimname='Time',size=None)
fout.createDimension(dimname='nCells',size=nCells)
fout.createDimension(dimname='nVertLevelsP1',size=nVertLevelsP1)
fout.createVariable(varname='zgrid',datatype='f',dimensions=('nCells', 'nVertLevelsP1'))
fout.variables['zgrid'][:] = fin.variables['zgrid'][:]
fout.close()
fin.close()
值得注意的是,metgrid.exe使用本机MPAS输出尚未对并行(即“dmpar”)构建的WPS进行彻底测试;因此,从WPS v4.0版本开始,建议在处理MPAS数据集时串行运行metgrid.exe。
此外,在大型MPAS网格的情况下,可能有必要增加metgrid代码中的两个常量的值,这两个常量用于静态分配用于计算从MPAS网格到WRF域的重映射权重的几个数据结构。这两个常量,如下所示,位于WPS/src/metgrid/remapper.F 文件中。
! should be at least (earth circumference / minimum grid distance)
integer, parameter :: max_queue_length = 2700! should be at least (nCells/32)
integer, parameter :: max_dictionary_size = 82000
在更改这些常量的值之后,必须重新编译metgrid。