Variables representing dimensional height or depth axes must always
explicitly include the `units`

attribute; there is
no default value.

The direction of positive (i.e., the direction in which the coordinate
values are increasing), whether up or down, cannot in all cases be
inferred from the units. The direction of positive is useful for
applications displaying the data. For this reason the attribute
`positive`

as defined in the COARDS standard is
required if the vertical axis units are not a valid unit of pressure
(a determination which can be made using the udunits routine, utScan)
-- otherwise its inclusion is optional. The `positive`

attribute may have the value `up`

or
`down`

(case insensitive). This attribute may be
applied to either coordinate variables or auxillary coordinate
variables that contain vertical coordinate data.

For example, if an oceanographic netCDF file encodes the depth of the surface as 0 and the depth of 1000 meters as 1000 then the axis would use attributes as follows:

axis_name:units = "meters" ; axis_name:positive = "down" ;

If, on the other hand, the depth of 1000 meters were represented
as -1000 then the value of the `positive`

attribute
would have been `up`

. If the `units`

attribute value is a valid pressure unit the default value of the
`positive`

attribute is `down`

.

A vertical coordinate will be identifiable by:

units of pressure; or

the presence of the positive attribute with a value of

`up`

or`down`

(case insensitive).

Optionally, the vertical type may be indicated additionally by
providing the `standard_name`

attribute with an
appropriate value, and/or the `axis`

attribute
with the value `Z`

.

The `units`

attribute for dimensional coordinates will
be a string formatted as per the
`udunits.dat`

file.
The acceptable units for vertical (depth or height) coordinate variables are:

units of pressure as listed in the file

`udunits.dat`

. For vertical axes the most commonly used of these include include`bar`

,`millibar`

,`decibar`

,`atmosphere (atm)`

,`pascal (Pa)`

, and`hPa`

.units of length as listed in the file udunits.dat. For vertical axes the most commonly used of these include

`meter (metre, m)`

, and`kilometer (km)`

.other units listed in the file udunits.dat that may under certain circumstances reference vertical position such as units of density or temperature.

Plural forms are also acceptable.

The `units`

attribute is not required for dimensionless coordinates. For backwards compatibility with COARDS we continue to allow the `units`

attribute to take one of the values: `level`

, `layer`

, or `sigma_level`

. These values are not recognized by the Udunits package, and are considered a deprecated feature in the CF standard.

For dimensionless vertical coordinates we extend the COARDS standard by making use of the `standard_name`

attribute to associate a coordinate with its definition from Appendix D, *Dimensionless Vertical Coordinates*. The definition provides a mapping between the dimensionless coordinate values and dimensional values that can positively and uniquely indicate the location of the data. A new attribute, `formula_terms`

, is used to associate terms in the definitions with variables in a netCDF file. To maintain backwards compatibility with COARDS the use of these attributes is not required, but is strongly recommended.

**Example 4.3. Atmosphere sigma coordinate**

float lev(lev) ; lev:long_name = "sigma at layer midpoints" ; lev:positive = "down" ; lev:standard_name = "atmosphere_sigma_coordinate" ; lev:formula_terms = "sigma: lev ps: PS ptop: PTOP" ;

In this example the `standard_name`

value
`atmosphere_sigma_coordinate`

identifies the following
definition from Appendix D, *Dimensionless Vertical Coordinates* which specifies
how to compute pressure at gridpoint `(n,k,j,i)`

where
`j`

and `i`

are horizontal indices,
`k`

is a vertical index, and `n`

is a time index:

p(n,k,j,i) = ptop + sigma(k)*(ps(n,j,i)-ptop)

The `formula_terms`

attribute associates the variable `lev`

with the term `sigma`

, the variable `PS`

with the term `ps`

, and the variable `PTOP`

with the term `ptop`

. Thus the pressure at gridpoint `(n,k,j,i)`

would be calculated by

p(n,k,j,i) = PTOP + lev(k)*(PS(n,j,i)-PTOP)