Project

General

Profile

Interpolate hybrid sigma pressure coordinates from IPSL model with ml2pl

Added by Ferran Lopez Marti 6 months ago

Hello,

I am trying to interpolate from model levels of the IPSL-CM6-LR to a pressure level using ml2pl:

cdo -L ml2pl,85000 -selvar,hus hus_6hrLev_IPSL-CM6A-LR_historical_r1i1p1f1_gr_195001010600.nc out.nc

But I get the following: "Warning: No 3D variable with hybrid sigma pressure coordinate found!" and nothing is interpolated.

I have attached the file, but my input data ncdump -h looks like this:

dimensions:
        time = UNLIMITED ; // (1 currently)
        bnds = 2 ;
        lon = 144 ;
        lat = 143 ;
        klevp1 = 80 ;
        presnivs = 79 ;
variables:
        double time(time) ;
                time:standard_name = "time" ;
                time:long_name = "Time axis" ;
                time:bounds = "time_bnds" ;
                time:units = "days since 1850-01-01 00:00:00" ;
                time:calendar = "gregorian" ;
                time:axis = "T" ;
        double time_bnds(time, bnds) ;
        float lon(lon) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "Longitude" ;
                lon:units = "degrees_east" ;
                lon:axis = "X" ;
        float lat(lat) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "Latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;
        double klevp1(klevp1) ;
                klevp1:long_name = "number of layer interfaces" ;
                klevp1:units = "1" ;
                klevp1:axis = "X" ;
        float bnds(bnds) ;
                bnds:units = "1" ;
                bnds:axis = "Y" ;
        float presnivs(presnivs) ;
                presnivs:standard_name = "Vertical levels" ;
                presnivs:long_name = "pressure" ;
                presnivs:units = "Pa" ;
                presnivs:positive = "down" ;
                presnivs:axis = "Z" ;
                presnivs:name = "presnivs" ;
        float hus(time, presnivs, lat, lon) ;
                hus:standard_name = "specific_humidity" ;
                hus:long_name = "Specific Humidity" ;
                hus:units = "1" ;
                hus:_FillValue = 1.e+20f ;
                hus:missing_value = 1.e+20f ;
                hus:online_operation = "instant" ;
                hus:cell_methods = "area: mean time: point" ;
                hus:interval_operation = "900 s" ;
                hus:interval_write = "6 h" ;
                hus:description = "Specific Humidity" ;
                hus:history = "none" ;
                hus:cell_measures = "area: areacella" ;
        float ps(time, lat, lon) ;
                ps:standard_name = "surface_air_pressure" ;
                ps:long_name = "Surface Air Pressure" ;
                ps:units = "Pa" ;
                ps:_FillValue = 1.e+20f ;
                ps:missing_value = 1.e+20f ;
                ps:online_operation = "instant" ;
                ps:cell_methods = "area: mean time: point" ;
                ps:interval_operation = "900 s" ;
                ps:interval_write = "6 h" ;
                ps:description = "surface pressure, not mean sea level pressure" ;
                ps:history = "none" ;
                ps:cell_measures = "area: areacella" ;
        double ap(klevp1) ;
                ap:long_name = "vertical coordinate formula term: ap(k)" ;
                ap:_FillValue = 9.96921e+36 ;
                ap:missing_value = 9.96921e+36 ;
                ap:online_operation = "once" ;
        double b(klevp1) ;
                b:long_name = "vertical coordinate formula term: b(k)" ;
                b:_FillValue = 9.96921e+36 ;
                b:missing_value = 9.96921e+36 ;
                b:online_operation = "once" ;
        double b_bnds(bnds, klevp1) ;
                b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ;
                b_bnds:_FillValue = 9.96921e+36 ;
                b_bnds:missing_value = 9.96921e+36 ;
                b_bnds:online_operation = "once" ;
        double ap_bnds(bnds, klevp1) ;
                ap_bnds:long_name = "vertical coordinate formula term: ap(k+1/2)" ;
                ap_bnds:_FillValue = 9.96921e+36 ;
                ap_bnds:missing_value = 9.96921e+36 ;
                ap_bnds:online_operation = "once" ;

I tried to change the attributes of my file but with no luck (adding description and formula), still had the same problem. Any recommendation on how to do this interpolation?

Best,

Ferran