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@ncar.ucar.edu NCAR, Climate and Global Dynamics Division. Boulder, CO.