MPAS后处理:convert_mpas水平插值

2023-06-21 16:06:23 浏览数 (1)

convert_mpas可以将MPAS模式输出结果插值到等经纬度网格,其中整数变量使用最近邻方案映射到目标网格,浮点数(单精度或双精度)采用重心插值(barycentric interpolation)。

安装

下载源码后,设置好编译器直接make即可安装。注意,本地需要有编译器和netcdf库。

代码语言:javascript复制
export FC=ifort
make

使用

新建include_fields文件,指定需要插值的变量。或者新建exclude_fields文件排除不需要的变量。当include_fields和exclude_fields同时存在时,exclude_fields将被忽略。

代码语言:javascript复制
u10
v10
t2m
rainnc
rainc
uReconstructZonal
uReconstructMeridional
pressure
zgrid

新建目标插值区文件target_domain,如果没有指定默认使用全球0.5度网格

代码语言:javascript复制
nlon    = 40
nlat    = 40
startlon   = 110.0
endlon     = 120.0
startlat   = 35.0
endlat     = 45.0

代码内部计算网格的方法

代码语言:javascript复制
delta = (mesh % endLat - mesh % startLat) / real(mesh % nLat)
do i=0,mesh % nLat-1
   mesh % lats(1,i 1) = mesh % startLat   0.5 * delta   real(i) * delta
   mesh % lats(1,i 1) = mesh % lats(1,i 1) * pi_const / 180.0
end do
delta = (mesh % endLon - mesh % startLon) / real(mesh % nLon)
do i=0,mesh % nLon-1
   mesh % lons(i 1,1) = mesh % startLon   0.5 * delta   real(i) * delta
   mesh % lons(i 1,1) = mesh % lons(i 1,1) * pi_const / 180.0
end do

目标网格分辨率为(endLat - startLat)/nLat,插值后网格点纬度数值与startLat和endLat 错开半个网格

插值

代码语言:javascript复制
./convert_mpas ../../history.2022-01-08_00.00.00.nc

当前目录下生成一个latlon.nc文件

代码语言:javascript复制
ncl_filedump latlon.nc

-----

Variable: f
Type: file
filename: latlon
path: latlon.nc

dimensions:
    Time = 1 // unlimited
    latitude = 40
    longitude = 40
    nVertLevelsP1 = 98
    nVertLevels = 97

chunk dimensions:
    Time = 1
    latitude = 40
    longitude = 40

variables:
    Variable: latitude
    Type: float
    Total Size: 40 values
                160 bytes
    Number of Dimensions: 1
    Dimensions and sizes: [ 40 <latitude> ]
    Coordinates:
                latitude: [35.125..44.875]
        Number of Attributes:        4
            _FillValue :  9.96921e 36
            units :  degree_north
            long_name :  latitude
            standard_name :  latitude

    Variable: longitude
    Type: float
    Total Size: 40 values
                160 bytes
    Number of Dimensions: 1
    Dimensions and sizes: [ 40 <longitude> ]
    Coordinates:
                longitude: [110.125..119.875]
        Number of Attributes:        4
            _FillValue :  9.96921e 36
            units :  degree_east
            long_name :  longitude
            standard_name :  longitude

    Variable: zgrid
    Type: float
    Total Size: 156800 values
                627200 bytes
    Number of Dimensions: 3
    Dimensions and sizes: [ 98 <nVertLevelsP1> x 40 <latitude> x 40 <longitude> ]
    Coordinates:
                latitude: [35.125..44.875]
                longitude: [110.125..119.875]
        Number of Attributes:        3
            _FillValue :  9.96921e 36
            units :  m MSL
            long_name :  Geometric height of layer interfaces

0 人点赞