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.
