Hi,
One of the examples in the ongoing discussion about 2D coordinate variables
uses referential attributes to describe a "relative" vertical coordinate.
Because this is an issue I have had to consider in the context of the
NCAR-CSM netCDF conventions I would like to comment further on this
example. The referenced text is from the discussion between John Sheldon
and me.
> > > The point here was that referential attributes provide a *mechanism*
> > > for associating variables.
> >
> > My point was that u, p and vpt are already associated by virtue of having
> > identical dimension lists. The referential attribute provides no new
> > information in example 1.
> >
> > I agree that referential attributes provide a mechanism for associating
> > variables, but they do not describe the relationships between variables so
> > associated.
>
> In the example from the Unidata web page:
>
> float u(record, z, x, y);
> u:z = "vpt, p";
> float p(record, z, x, y);
> float vpt(record, z, x, y);
>
> the fact that "u", "p", and "vpt" are defined on the same grid doesn't
> tell you anything more than that. But the referential attributes do,
> indeed, provide additional information! They tell you that coordinates for
> points along the z-dimension for variable "u" can be found in variables
> "vpt" or "p".
It may be that John and I have different situations in mind when we are
interpreting this example. It is not specified what z is meant to refer
to. So in the remaining discussion I will assume that it refers to a
dimensionless vertical coordinate such as the sigma or hybrid coordinate
commonly used in atmospheric GCMs.
The z coordinate at gridpoint (1,1,1,1) is neither p(1,1,1,1), nor
vpt(1,1,1,1). The z coordinate has not been defined by the referential
attribute, i.e., the relationship between z and p is not given.
When a dimensionless coordinate is used then a rule is required to convert
from the dimensionless to dimensional coordinate so that the gridpoint may
be geo-located. What follows is a proposal for representing this rule for
the hybrid coordinate system used in NCAR's Community Climate Model (CCM3).
float z(z) ;
z:long_name = "hybrid level at layer midpoints" ;
z:units = "hybrid_sigma_pressure" ;
z:positive = "down" ;
z:A_var = "hyam" ;
z:B_var = "hybm" ;
z:P0_var = "P0" ;
z:PS_var = "PS" ;
float hyam(z) ;
hyam:long_name = "hybrid A coefficient at layer midpoints" ;
float hybm(z) ;
hybm:long_name = "hybrid B coefficient at layer midpoints" ;
float P0 ;
P0:long_name = "reference pressure" ;
P0:units = "Pa" ;
float PS(time, lat, lon) ;
PS:long_name = "surface pressure" ;
PS:units = "Pa" ;
// global attributes:
:Conventions = "NCAR-CSM" ;
:hybrid_sigma_pressure = "\n",
"Pressure at a grid point (lon(i),lat(j),lev(k)) is computed \n",
"using the formula: \n",
" p(i,j,k) = A(k)*PO + B(k)*PS(i,j) \n",
"where A, B, PO, and PS are contained in the variables whose \n",
"names are given by the attributes of the vertical coordinate \n",
"variable A_var, B_var, P0_var, and PS_var respectively. \n",
"" ;
Unfortunately this proposal is not consistent with COARDS. But the options
within the COARDS conventions were to use units of either "level", "layer"
or "sigma_level". "level" and "layer" are too generic to be useful for
distinquishing the different types of dimensionless vertical coordinates,
and "sigma_level" is not approriate for the hybrid coordinate. We want to
follow the COARDS lead of using the units attribute to identify the
coordinates, hence we use the unit "hybrid_sigma_pressure" to identify the
rule that maps the hybrid coordinate values to pressure. This rule will
be described in the NCAR-CSM conventions. It is included above as a
global attribute for convenience.
We recognize that not all dimensionless vertical coordinates will be
describable within the scheme outlined above. Our intention is to add
units to our convention as the need arises. In this context a unit becomes
a pointer to a rule that maps a dimensionless coordinate to a dimensional
one.
I would be very interested to hear what others think of this approach.
Brian Eaton
eaton@xxxxxxxxxxxxx
NCAR, Climate and Global Dynamics Division.
Boulder, CO.