[idvusers] help in coding the atmosphere_hybrid_height_coordinate for IDV

We have some 3-d+time data in lat-lon + height above ground (not sea
level) and would like a better way to visualize it in IDV.  We've had no
problem bringing it into IDV and viewing it as layers and IDV recognizes
the data as having a vertical aspect (you can get crossectional planes
through the domain by selecting the appropriate "level" in the dialog
box) when I do plan views.  

A followed the guide to CF1 for the hybrid_height_coordinate and based
it after a successful one with CF1's sigma coordinate by reverse
engineering a successful netcdf file that performs well in IDV.

However, unlike sigma coordinates which can create a 2D surface that
follow the underlying terrain (and float upward as you select higher
levels) when plotted in IDV, these fields are rendered as "flat" (not
hugging an underlying surface) no different than if they were heights
above sea level.

Likewise, the X/Y vs Z cross-sections also begin at "sea level" and not
at the ground level.  

Meanwhile all other aspects of the rendering (the georegistring in
lat-lon space, and a 3D rendering of the surface terrain) are just fine.

Am I doing something wrong (my interpretation of the relevant CF1
attributes from an NCDUMP are below)?  Or does IDV only handle height,
any height (above ground or sea level) as flat planes.

Or better still is there a much easier way to do this? (I feel a bit
silly doing this very plain jane concept as a hybrid coordinate, so I'm
thinking dollars to donuts there is a much more basic way to render this
data correctly.)



   float Geopotential_height_surface(lon=50, lat=50);
     :long_name = "Geopotential height @ surface";
     :units = "m";
     :missing_value = 9999.0f; // float
     :standard_name = "surface_altitude";
     :coordinates = "lat lon";
     :maxvalue = 3238.1f; // float
     :minvalue = 0.0f; // float

   double unity(height_above_ground_p=15);
     :long_name = "unity";
     :units = "";
     :missing_value = 9999.0; // double
     :standard_name = "unity";
(this is just an array of 15 "ones" to go with the formula required for
the hybrid height)

   double height_above_ground_p(height_above_ground_p=15);
     :long_name = "Geopotential Height";
     :standard_name = "atmosphere_hybrid_height_coordinate";
     :units = "m";
     :positive = "up";
     :formula_terms = "a: height_above_ground_p b: unity orog:
Geopotential_height_surface";
     :_CoordinateTransformType = "Vertical";
     :_CoordinateAxisType = "GeoZ";
     :_CoordinateAxes = "height_above_ground_p";
     :_CoordinateZisPositive = "up";

   float Air_Pressure(lon=50, lat=50, height_above_ground_p=15, time=9);
     :long_name = "Air_Pressure @ geopotential_height";
     :units = "hPa";
     :missing_value = -9999.0f; // float
     :standard_name = "air_pressure";
     :coordinates = "time height_above_ground_p lat lon";

   double lon(lon=50);
     :long_name = "longitude";
     :units = "degrees_east";
     :standard_name = "longitude";
     :_CoordinateAxisType = "Lon";
   double lat(lat=50);
     :long_name = "latitude";
     :units = "degrees_north";
     :standard_name = "latitude";
     :_CoordinateAxisType = "Lat";

================================================================
Bill Capehart <William.Capehart@xxxxxxxxx>   Associate Professor
Institute of Atmospheric Sciences         Land Surface Processes
213 Mineral Industries Building                 Hydrometeorology
South Dakota School of Mines and Technology Ph:  +1-605-394-1994
501 East Saint Joseph Street                Fax: +1-605-394-6061
Rapid City, SD 57701-3995                Mobile: +1-605-484-5692
=================== http://capehart.sdsmt.edu ==================