# Re: Converting hybrid height coordinates to standard pressure levels (CMIP output)

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Tue Apr 23 2013 - 12:33:08 MDT

 If you have the pressures at each hybrid height level,
you could use (say) linear interpolation [linint1_n],

pres(time,lev,lat,lon) and (say) Q(time,lev,lat,lon)
plev = (/ 1000, 950,...... /)

Q_p = linint_n_Wrap(pres, Q, False, plev, 0, 1)
printVarSummary(Q_p)

 Could you not use the hydrostatic formula?

R=GasConstant, T is layer mean temperature for z1 to z2

con = g/R
p2 = p1 * exp[-(con/T)*(z2-z1)]

At the lowest level p1 would be the surface pressure and z1
would be surface height.

On 4/22/13 11:52 PM, Nathan Serota wrote:
> Hi all,
>
> I am trying to produce plots of zonal-mean cloud fraction (i.e., Height vs. Latitude) from CMIP5 output. However, for the variables I am looking at, the data is reported on model levels rather than on standard pressures. The vertical coordinate reads "hybrid height coordinates (m)". Does anybody know how to convert vertical coordinates from "hybrid height coordinates" to standard pressure levels. I have tried the vinth2p function, however, I have had no success and I imagine there is an easier way to do this.
>
> I've attached the file information (clipped from ncdump) with the vertical layer info of the data set (netcdf format, CMIP5 data, in this case: HadGEM2-ES model).
>
> Any help would be appreciated.
>
> -Nathan
> -------------------------------------------------------------
> dimensions:
> time = UNLIMITED ; // (841 currently)
> lev = 38 ;
> lat = 145 ;
> lon = 192 ;
> bnds = 2 ;
> variables:
> double time(time) ;
> time:bounds = "time_bnds" ;
> time:units = "days since 1859-12-01" ;
> time:calendar = "360_day" ;
> time:axis = "T" ;
> time:long_name = "time" ;
> time:standard_name = "time" ;
> double time_bnds(time, bnds) ;
> double lev(lev) ;
> lev:bounds = "lev_bnds" ;
> lev:units = "m" ;
> lev:axis = "Z" ;
> lev:positive = "up" ;
> lev:long_name = "hybrid height coordinate" ;
> lev:standard_name = "atmosphere_hybrid_height_coordinate" ;
> lev:formula = "z = a + b*orog" ;
> lev:formula_terms = "a: lev b: b orog: orog" ;
> double lev_bnds(lev, bnds) ;
> lev_bnds:formula = "z = a + b*orog" ;
> lev_bnds:standard_name = "atmosphere_hybrid_height_coordinate" ;
> lev_bnds:units = "m" ;
> lev_bnds:formula_terms = "a: lev_bnds b: b_bnds orog: orog" ;
> double b(lev) ;
> b:long_name = "vertical coordinate formula term: b(k)" ;
> float orog(lat, lon) ;
> .....
>
> lev = 20.000337600708, 80.001350402832, 179.999114990234, 320.00146484375,
> 500.000579833984, 720.000366210938, 980.000854492188, 1279.998046875,
> 1619.99987792969, 1999.99841308594, 2420.00170898438, 2880.00146484375,
> 3379.99829101562, 3919.99951171875, 4500.00146484375, 5120,
> 5779.99951171875, 6479.99951171875, 7220, 8000.00146484375, 8820,
> 9679.9990234375, 10579.998046875, 11519.998046875, 12499.9990234375,
> 13520.0009765625, 14580.7998046875, 15694.6396484375, 16875.310546875,
> 18138.626953125, 19503.009765625, 20990.1875, 22626.08203125,
> 24458.28515625, 26583.640625, 29219.080078125, 32908.69140625,
> 39254.83203125 ;
>
> - - -
> Nathan Serota
> Princeton University
> T (305) 979-9385
>
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Apr 23 12:33:18 2013

This archive was generated by hypermail 2.1.8 : Tue Apr 23 2013 - 12:54:13 MDT