前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MPAS后处理:convert_mpas水平插值

MPAS后处理:convert_mpas水平插值

作者头像
自学气象人
发布2023-06-21 16:06:23
1850
发布2023-06-21 16:06:23
举报
文章被收录于专栏:自学气象人自学气象人

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自学气象人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档