Project

General

Profile

interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p

Added by 秩序 孙 about 1 year ago

I have an nc file that seems to be in a vertical coordinate form (forgive me for not understanding this part very well). Now I need to interpolate this file based on pressure and be able to interpolate a variable named plev. I used ml2pl , but I got a Warning: No 3D variable with hybrid sigma pressure coordinate found! Can someone help me with this? I have attached the description of my nc file below. I am not very familiar with nc file processing.

netcdf ofile {
dimensions:
        time = UNLIMITED ; // (33 currently)
        lon = 192 ;
        bnds = 2 ;
        lat = 144 ;
        lev = 85 ;
variables:
        double time(time) ;
                time:standard_name = "time" ;
                time:long_name = "time" ;
                time:units = "days since 1850-01-01" ;
                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" ;
                lon:bounds = "lon_bnds" ;
        double lon_bnds(lon, bnds) ;
        double lat(lat) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "Latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;
                lat:bounds = "lat_bnds" ;
        double lat_bnds(lat, bnds) ;
        double lev(lev) ;
                lev:long_name = "hybrid height coordinate" ;
                lev:units = "m" ;
                lev:positive = "up" ;
                lev:axis = "Z" ;
                lev:bounds = "lev_bnds" ;
                lev:standard_name = "atmosphere_hybrid_height_coordinate" ;
                lev:formula = "z = a + b*orog" ;
        double lev_bnds(lev, bnds) ;
        float ua(time, lev, lat, lon) ;
                ua:standard_name = "eastward_wind" ;
                ua:long_name = "Eastward Wind" ;
                ua:units = "m s-1" ;
                ua:_FillValue = 1.e+20f ;
                ua:missing_value = 1.e+20f ;
                ua:comment = "Zonal wind (positive in a eastward direction)." ;
                ua:cell_methods = "time: point" ;
                ua:history = "2019-11-09T02:09:42Z altered by CMOR: replaced missing value flag (-1.07374e+09) with standard missing value (1e+20)." ;


Replies (9)

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by Ralf Mueller about 1 year ago

hi!

For more information about what might be in your file, please have a look at http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#parametric-vertical-coordinate

your vertical coordinate seems to be a hybrid height coordinate based on coefficients a and b and a 2d orography field.

the ml2pl operators expects a hybrid sigma pressure coordinate, so it will not work on hybrid height coordinates

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by 秩序 孙 about 1 year ago

Thank you for providing me with such helpful information. You are truly generous. I have learned a lot. However, if ml2pl doesn't work, is there any way to achieve the functionality I need using cdo? I need to perform pressure interpolation to drive WRF.

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by 秩序 孙 about 1 year ago

Ralf Mueller wrote in RE: interpolate to pure pressure levels according to the ...:

hi!

For more information about what might be in your file, please have a look at http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#parametric-vertical-coordinate

your vertical coordinate seems to be a hybrid height coordinate based on coefficients a and b and a 2d orography field.

the ml2pl operators expects a hybrid sigma pressure coordinate, so it will not work on hybrid height coordinates

I hope you don't mind my inquiry, and please forgive me. What I ultimately want to achieve is interpolation based on pressure. If it's not hybrid sigma pressure coordinate, can the coordinates provided in this nc file achieve pressure interpolation?

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by Ralf Mueller about 1 year ago

hi again!

if the content your show above is all that is in the file, it will not be enough to perform any vertical interpolation. you need the coefficients a and b as well as the orog variable to compute real heights in meters. For hybrid sigma pressure you also coefficients and surface pressure.

sorry for the bad news
ralf

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by 秩序 孙 about 1 year ago

Ralf Mueller wrote in RE: interpolate to pure pressure levels according to the ...:

hi again!

if the content your show above is all that is in the file, it will not be enough to perform any vertical interpolation. you need the coefficients a and b as well as the orog variable to compute real heights in meters. For hybrid sigma pressure you also coefficients and surface pressure.

sorry for the bad news
ralf

hi
Sorry to bother you again.
What if this information about the nc file ?
I found b and orog ,but it seems do not have a var.

netcdf ua_6hrLev_ACCESS-CM2_ssp126_r1i1p1f1_gn_206001020000-206001100000 {
dimensions:
        time = UNLIMITED ; // (33 currently)
        lon = 192 ;
        bnds = 2 ;
        lat = 144 ;
        lev = 85 ;
variables:
        double time(time) ;
                time:standard_name = "time" ;
                time:long_name = "time" ;
                time:units = "days since 1850-01-01" ;
                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" ;
                lon:bounds = "lon_bnds" ;
        double lon_bnds(lon, bnds) ;
        double lat(lat) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "Latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;
                lat:bounds = "lat_bnds" ;
        double lat_bnds(lat, bnds) ;
        double lev(lev) ;
                lev:long_name = "hybrid height coordinate" ;
                lev:units = "m" ;
                lev:positive = "up" ;
                lev:axis = "Z" ;
                lev:bounds = "lev_bnds" ;
                lev:standard_name = "atmosphere_hybrid_height_coordinate" ;
                lev:formula = "z = a + b*orog" ;
        double lev_bnds(lev, bnds) ;
        double b(lev) ;
                b:long_name = "vertical coordinate formula term: b(k)" ;
                b:original_units = "1" ;
                b:history = "2019-11-09T02:09:42Z altered by CMOR: Converted units from \'1\' to \'\'." ;
        float orog(lat, lon) ;
                orog:long_name = "Surface Altitude" ;
                orog:units = "m" ;
        double b_bnds(lev, bnds) ;
                b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ;
                b_bnds:original_units = "1" ;
                b_bnds:history = "2019-11-09T02:09:42Z altered by CMOR: Converted units from \'1\' to \'\'." ;
        float ua(time, lev, lat, lon) ;
                ua:standard_name = "eastward_wind" ;
                ua:long_name = "Eastward Wind" ;
                ua:units = "m s-1" ;
                ua:_FillValue = 1.e+20f ;
                ua:missing_value = 1.e+20f ;
                ua:comment = "Zonal wind (positive in a eastward direction)." ;
                ua:cell_methods = "time: point" ;
                ua:history = "2019-11-09T02:09:42Z altered by CMOR: replaced missing value flag (-1.07374e+09) with standard missing value (1e+20)." ;

// global attributes:
                :CDI = "Climate Data Interface version 1.9.7.1 (http://mpimet.mpg.de/cdi)" ;
                :history = "Fri Mar 17 19:17:38 2023: cdo seltimestep,4/36 ua_6hrLev_ACCESS-CM2_ssp126_r1i1p1f1_gn_206001010600-206101010000.
                lev:positive = "up" ;
                lev:axis = "Z" ;
                lev:bounds = "lev_bnds" ;
                lev:standard_name = "atmosphere_hybrid_height_coordinate" ;
                lev:formula = "z = a + b*orog" ;
        double lev_bnds(lev, bnds) ;
        double b(lev) ;
                b:long_name = "vertical coordinate formula term: b(k)" ;
                b:original_units = "1" ;
                b:history = "2019-11-09T02:09:42Z altered by CMOR: Converted units from \'1\' to \'\'." ;
        float orog(lat, lon) ;
                orog:long_name = "Surface Altitude" ;
                orog:units = "m" ;
        double b_bnds(lev, bnds) ;
                b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ;
                b_bnds:original_units = "1" ;
                b_bnds:history = "2019-11-09T02:09:42Z altered by CMOR: Converted units from \'1\' to \'\'." ;
        float ua(time, lev, lat, lon) ;
                ua:standard_name = "eastward_wind" ;
                ua:long_name = "Eastward Wind" ;
                ua:units = "m s-1" ;
                ua:_FillValue = 1.e+20f ;
                ua:missing_value = 1.e+20f ;
                ua:comment = "Zonal wind (positive in a eastward direction)." ;
                ua:cell_methods = "time: point" ;
                ua:history = "2019-11-09T02:09:42Z altered by CMOR: replaced missing value flag (-1.07374e+09) with standard missing value (1
e+20)." ;

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by Ralf Mueller about 1 year ago

good morning!

I think you have to get in contact with someone, who knows where the data comes from. I think it might be from a simulation, so the model owners would be good to ask. Without the a coefficient you cannot compute the heights. the vertical coordinate is not complete given only the data in your file.

good luck ;-)

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by 秩序 孙 about 1 year ago

Ralf Mueller wrote in RE: interpolate to pure pressure levels according to the ...:

good morning!

I think you have to get in contact with someone, who knows where the data comes from. I think it might be from a simulation, so the model owners would be good to ask. Without the a coefficient you cannot compute the heights. the vertical coordinate is not complete given only the data in your file.

good luck ;-)

hi!!

thank you very much!! ^ ^

RE: interpolate to pure pressure levels according to the model specific vertical coordinate system e.g. sigma or sigma-p - Added by Ferran Lopez Marti 6 months ago

Hello!

I am facing the same problem, have you managed to find the a var or managed to do the interpolation successfully?

Thank you

Ferran

    (1-9/9)