Project

General

Profile

General instruction for vertical interpolation?

Added by ep gupal about 1 year ago

I have number of model output 3d data (such as cloud ice and cloud water), and they all have (time, level, latitude, longitude) dimension setup, but the level dimension is model level not in geometric height or in pressure level. In each file, there arn't any extra data such as grid information or surface pressure or pressure in the model level. What I want to do it to interpolate this 3d data into constant pressure levels such as 200 hPa, 500 hPa, 700 hPa, 850 hPa. What is the general method of doing this? From what I can find in the CDP reference (https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-7520002.12.14), the routine 'intlevel3d' maybe the thing I need.

Now here is my question reagarding the 'intlevel3d' routine intent to use it for my situation, and I am confused with the explanation in the reference. Note that 'infile1' and 'infile2' term that I am using below is the very same term that is in the CDO reference.

1. For 'infile1', does this file only contains the single dimensional vertical coordiante information (for the 3d varaible in the 'infile2') such as model level? Note that my model level is only recorded as mere numbers (ex: 1,2,3,4,5, ... , 100), not as presure (hPa) or as geometric height (m).
2. What is the default units for the vertical coordinate for this routine? Is it pressure in hPa or in geometric height in meters?
3. If my 'infile2' has 30 vertical levels, and my target coordinate file 'tgtcoordinate' has 4 vertical levels, would I get 4 vertical levels for my output?

Example model output 3d data ncdump header information.

dimensions:
time = UNLIMITED ; // (8 currently)
lon = 1440 ;
lat = 721 ;
lev = 60 ;
variables:
double time(time) ;
time:standard_name = "time" ;
time:units = "hours since 2020-1-30 00:00:00" ;
time:calendar = "proleptic_gregorian" ;
time:axis = "T" ;
double lon(lon) ;
lon:standard_name = "longitude" ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
lon:axis = "X" ;
double lat(lat) ;
lat:standard_name = "latitude" ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
lat:axis = "Y" ;
double lev(lev) ;
lev:axis = "Z" ;
float cli(time, lat, lev, lon) ;
cli:standard_name = "mass_fraction_of_cloud_ice_in_air" ;
cli:long_name = "Specific cloud ice water content" ;
cli:units = "kg kg-1" ;
cli:param = "84.1.0" ;
cli:origin = "ciwc" ;


Replies (1)

RE: General instruction for vertical interpolation? - Added by Ralf Mueller 9 months ago

the problem ist, that models (no matter if simulation or reanalysis) hat very specific vertical coordinate systems. It is not always geometric height, where you can make geometric assumptions. Instead there is a giant zoo for vertical coordinate systems.

That's why you have to go back to source of the data and check the vertical coordinate in detail to perform a proper interpolation.

cheers
ralf

    (1-1/1)