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