That's not a problem.  I've dealt with similar data from weather not
climate models, although not written in netCDF (nor GRIB) in order to
transform between different vertical coordinates systems (e.g., sigma,
terrain-following, isobaric layers).  Since the components of a field can
be manipulated independently, you can import the data on the x,y,i grid.
Then for each time step, warp the grid to the pressure coordinates via
Mark->Compute->Unmark.  The operation leaves the data and topology
invariant.  This is the same approach I recommend for doing cartographic
projections.  You evaluate p(i, t) via Compute.  For convenience, you put
this operation into a macro.




Patrick Joeckel <[EMAIL PROTECTED]>@opendx.watson.ibm.com on
12/07/2001 11:13:44 AM

Please respond to [email protected]

Sent by:    [EMAIL PROTECTED]


To:    [email protected]
cc:
Subject:    [opendx-users] import data on hybrid grid from netCDF



Dear openDX experts,

can you help me with the following (beginner's) question?
I have a netCDF file with output of a climate model. The data is on a
hybrid
grid (time dependent, curvilinear):
The 3-D grid is described as follows:
{x, y, p(i,t)} with x=latitude, y=longitude (both constant, irregular,
time-independent) and the pressure p(i,t)=ha(i)*p0 + hb(i)*ps(x,y,t).
p0 is a constant reference pressure, ha and hb are the constant hybrid
levels,
i is an index for the layers along the vertical (z) direction, and t is
time.
The netCDF file contains the x- and y- lists, the hybrid coordinate lists
ha
and hb, the surface pressure ps(x,y,t) and datafields as e.g.,
data(x,y,i,t).

And here comes my question:
How can I import the datafield 'data' with the above described grid
information? Is there a way to construct such kind of grid from the
variables
in the netCDF file and "put" the data onto it?

The netCDF file looks as follows:

netcdf example {
dimensions:
        x = 64 ;
        i = 28 ;
        y = 32 ;
        time = UNLIMITED ; // (12 currently)

variables:
        float P0 ;
                P0:long_name = "reference pressure" ;
                P0:units = "Pa" ;
        float ha(i) ;
                ha:long_name = "hybrid A coefficient at layer midpoints" ;
                ha:units = "1" ;
        float hb(i) ;
                hb:long_name = "hybrid B coefficient at layer midpoints" ;
                hb:units = "1" ;
        float i(i) ;
                i:long_name = "layer midpoint index" ;
                i:units = "level" ;
                i:positive = "down" ;
        float y(y) ;
                y:long_name = "latitude" ;
                y:units = "degrees_north" ;
        float x(x) ;
                x:long_name = "longitude" ;
                x:units = "degrees_east" ;
        double time(time) ;
                time:long_name = "time" ;
                time:units = "days since 1997-01-01 00:00:00" ;
        float ps(time, y, x) ;
                ps:long_name = "surface pressure" ;
                ps:units = "Pa" ;
        float data(time, i, y, x) ;
                data:long_name = "data field" ;
                data:units = "1" ;

// global attributes:
                ...

data:

 P0 = 100000 ;

 y = -85.76059, -80.26878, -74.74454, -69.21297, -63.67863, -58.14296,
    -52.60653, -47.06964, -41.53246, -35.99508, -30.45755, -24.91993,
    -19.38223, -13.84448, -8.306703, -2.768903, 2.768903, 8.306703,
    13.84448,
    19.38223, 24.91993, 30.45755, 35.99508, 41.53246, 47.06964, 52.60653,
    58.14296, 63.67863, 69.21297, 74.74454, 80.26878, 85.76059 ;

 x = 0, 5.625, 11.25, 16.875, 22.5, 28.125, 33.75, 39.375, 45, 50.625,
    56.25, 61.875, 67.5, 73.125, 78.75, 84.375, 90, 95.625, 101.25,
    106.875,
    112.5, 118.125, 123.75, 129.375, 135, 140.625, 146.25, 151.875, 157.5,
    163.125, 168.75, 174.375, 180, 185.625, 191.25, 196.875, 202.5,
    208.125,
    213.75, 219.375, 225, 230.625, 236.25, 241.875, 247.5, 253.125, 258.75,
    264.375, 270, 275.625, 281.25, 286.875, 292.5, 298.125, 303.75,
    309.375,
    315, 320.625, 326.25, 331.875, 337.5, 343.125, 348.75, 354.375 ;

 i = 2.7, 10.1, 18.3, 28.8, 41.8, 58, 78.2, 102.8, 132.6, 168.2, 210.1,
    258.2, 312.5, 372, 435.7, 501.7, 568.1, 632.9, 694.3, 750.8, 801.4,
    845.8, 883.8, 915.9, 942.5, 964.4, 982.1, 995 ;

 time = 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 ;

 hb = 0.0027, 0.0101, 0.0183, 0.0288, 0.0418, 0.058, 0.0782, 0.1028,
    0.1326, 0.1682, 0.2101, 0.2582, 0.3125, 0.372, 0.4357, 0.5017, 0.5681,
    0.6329, 0.6943, 0.7508, 0.8014, 0.8458, 0.8838, 0.9159, 0.9425, 0.9644,
    0.9821, 0.995 ;

 ha = ...;
 ps = ...;
 data = ...;
}


Any help is very much appreciated!


Sincerely,

        Patrick Joeckel

--
---------------------------------------------------------------
Dr. Patrick Joeckel
Max Planck Institute for Chemistry
Joh.-J. Becher Weg 27
55128 Mainz                   phone:++49-6131-305452
Germany                       fax  :++49-6131-305436
                             e-mail:[EMAIL PROTECTED]
                         http://www.mpch-mainz.mpg.de/~joeckel
---------------------------------------------------------------
Never trust an operating system you don't have sources for.


Reply via email to