The definitions given here allow an application to compute
dimensional coordinate values from the dimensionless
ones and associated variables. The formulas are
expressed for a gridpoint
`(n,k,j,i)`

where `i`

and `j`

are
the horizontal indices, `k`

is the vertical
index and `n`

is the time index. A coordinate variable is associated
with its definition by the value of the
`standard_name`

attribute. The terms in the definition are associated
with file variables by the
`formula_terms`

attribute. The
`formula_terms`

attribute takes a string value, the string
being comprised of blank-separated elements of the form
"`term: variable`

", where
`term`

is a keyword that represents
one of the terms in the definition, and
`variable`

is the
name of the variable in a netCDF file that contains
the values for that term. The order of elements is
not significant.

The gridpoint indices are not formally part of the
definitions, but are included to illustrate the indices
that *might* be present in the file variables. For example,
a vertical coordinate whose definition contains a time
index is not necessarily time dependent in all netCDF
files. Also, the definitions are given in general forms
that may be simplified by omitting certain terms. A term
that is omitted from the
`formula_terms`

attribute should
be assumed to be zero.

`standard_name`

= "atmosphere_ln_pressure_coordinate"

- Definition:
p(k) = p0 * exp(-lev(k))

where `p(k)`

is the pressure
at gridpoint `(k)`

, `p0`

is a reference pressure, `lev(k)`

is the dimensionless coordinate
at vertical gridpoint `(k)`

.

The format for the `formula_terms`

attribute is

`formula_terms`

= "p0: var1 lev: var2"

`standard_name`

= "atmosphere_sigma_coordinate"

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

where `p(n,k,j,i)`

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

,
`ptop`

is the pressure
at the top of the model, `sigma(k)`

is the dimensionless coordinate at vertical gridpoint
`(k)`

, and `ps(n,j,i)`

is the surface pressure at horizontal
gridpoint `(j,i)`

and time `(n)`

.

The format for the formula_terms attribute is

`formula_terms`

= "sigma: var1 ps: var2 ptop: var3"

`standard_name`

= "atmosphere_hybrid_sigma_pressure_coordinate"

- Definition:
p(n,k,j,i) = a(k)*p0 + b(k)*ps(n,j,i)

or

p(n,k,j,i) = ap(k) + b(k)*ps(n,j,i)

where
`p(n,k,j,i)`

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

,
`a(k)`

or
`ap(k)`

and
`b(k)`

are components of the hybrid coordinate at
level
`k`

,
`p0`

is a reference
pressure, and
`ps(n,j,i)`

is the surface pressure at horizontal gridpoint
`(j,i)`

and time
`(n)`

.
The choice of whether
`a(k)`

or
`ap(k)`

is used depends on
model formulation; the former is a dimensionless fraction,
the latter a pressure value. In both formulations,
`b(k)`

is a dimensionless
fraction.

The format for the `formula_terms`

attribute is

`formula_terms`

= "a: var1 b: var2 ps: var3 p0: var4"

where
`a`

is replaced by
`ap`

if appropriate.

The hybrid sigma-pressure coordinate for level `k`

is defined as
`a(k)+b(k)`

or
`ap(k)/p0+b(k)`

,
as appropriate.

`standard_name`

= "atmosphere_hybrid_height_coordinate"

- Definition:
z(n,k,j,i) = a(k) + b(k)*orog(n,j,i)

where
`z(n,k,j,i)`

is the height above the geoid (approximately mean sea level) at gridpoint
`(k,j,i)`

and
`time (n)`

,
`orog(n,j,i)`

is the height of the surface above
the geoid at
`(j,i)`

and
`time (n)`

,
and `a(k)`

and `b(k)`

are the coordinates
which define hybrid height level
`k`

.
`a(k)`

has the dimensions of height and
`b(i)`

is dimensionless.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "a: var1 b: var2 orog: var3"

There is no dimensionless hybrid height coordinate. The hybrid
height is best approximated as `a(k)`

if a level-dependent constant is needed.

`standard_name`

= "atmosphere_sleve_coordinate"

- Definition:
z(n,k,j,i) = a(k)*ztop + b1(k)*zsurf1(n,j,i) + b2(k)*zsurf2(n,j,i)

where
`z(n,k,j,i)`

is the height above the geoid (approximately mean sea level) at gridpoint
`(k,j,i)`

and time
`(n)`

,
`ztop`

is the height of the top of the model, and
`a(k)`

,
`b1(k)`

,
and
`b2(k)`

are the dimensionless coordinates which define hybrid level
`k`

.
`zsurf1(n,j,i)`

and
`zsurf2(n,j,i)`

are respectively the large and small parts of the topography. See Shaer et al
[SCH02]
for details.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "a: var1 b1: var2 b2: var3 ztop: var4 zsurf1: var5
zsurf2: var6"

The hybrid height coordinate for level
`k`

is defined as
`a(k)*ztop`

.

`standard_name`

= "ocean_sigma_coordinate"

- Definition:
z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))

where `z(n,k,j,i)`

is height, positive upwards, relative to
ocean datum (e.g. mean sea level) at gridpoint `(n,k,j,i)`

,
`eta(n,j,i)`

is the height of the ocean surface, positive upwards,
relative to ocean datum at gridpoint `(n,j,i)`

,
`sigma(k)`

is the
dimensionless coordinate at vertical gridpoint `(k)`

,
and `depth(j,i)`

is the distance from ocean datum to sea floor (positive value)
at horizontal gridpoint `(j,i)`

.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "sigma: var1 eta: var2 depth: var3"

`standard_name`

= "ocean_s_coordinate"

- Definition:
`z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) where C(k) = (1-b)*sinh(a*s(k))/sinh(a) + b*[tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5]`

where `z(n,k,j,i)`

is height, positive upwards, relative to ocean
datum (e.g. mean sea level) at gridpoint `(n,k,j,i)`

,
`eta(n,j,i)`

is
the height of the ocean surface, positive upwards, relative to
ocean datum at gridpoint `(n,j,i)`

, `s(k)`

is the dimensionless
coordinate at vertical gridpoint `(k)`

, and `depth(j,i)`

is the distance
from ocean datum to sea floor (positive value) at horizontal
gridpoint `(j,i)`

. The constants
`a`

, `b`

, and `depth_c`

control the stretching.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "s: var1 eta: var2 depth: var3 a: var4 b: var5 depth_c: var6"

`standard_name`

= "ocean_s_coordinate_g1"

- Definition:
`z(n,k,j,i) = S(k,j,i) + eta(n,j,i) * (1 + S(k,j,i) / depth(j,i)) where S(k,j,i) = depth_c * s(k) + (depth(j,i) - depth_c) * C(k)`

where `z(n,k,j,i)`

is height, positive upwards, relative to ocean
datum (e.g. mean sea level) at gridpoint `(n,k,j,i)`

,
`eta(n,j,i)`

is
the height of the ocean surface, positive upwards, relative to
ocean datum at gridpoint `(n,j,i)`

,
`s(k)`

is the dimensionless coordinate at vertical gridpoint
`(k)`

with a range of ` -1 <= s(k) <= 0 `

,
`s(0)`

corresponds to `eta(n,j,i)`

whereas `s(-1)`

corresponds to `depth(j,i)`

;
`C(k)`

is the dimensionless vertical coordinate stretching function at gridpoint `(k)`

with a range of
`-1 <= C(k) <= 0`

, `C(0)`

corresponds to `eta(n,j,i)`

whereas `C(-1)`

corresponds to `depth(j,i)`

; the constant `depth_c`

, (positive value),
is a critical depth controlling the stretching and `depth(j,i)`

is the distance
from ocean datum to sea floor (positive value) at horizontal
gridpoint `(j,i)`

.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "s: var1 C: var2 eta: var3 depth: var4 depth_c: var5"

`standard_name`

= "ocean_s_coordinate_g2"

- Definition:
`z(n,k,j,i) = eta(n,j,i) + (eta(n,j,i) + depth(j,i)) * S(k,j,i) where S(k,j,i) = (depth_c * s(k) + depth(j,i) * C(k)) / (depth_c + depth(j,i))`

where `z(n,k,j,i)`

is height, positive upwards, relative to ocean
datum (e.g. mean sea level) at gridpoint `(n,k,j,i)`

,
`eta(n,j,i)`

is
the height of the ocean surface, positive upwards, relative to
ocean datum at gridpoint `(n,j,i)`

,
`s(k)`

is the dimensionless coordinate at vertical gridpoint
`(k)`

with a range of ` -1 <= s(k) <= 0 `

,
`s(0)`

corresponds to `eta(n,j,i)`

whereas `s(-1)`

corresponds to `depth(j,i)`

;
`C(k)`

is the dimensionless vertical coordinate stretching function at gridpoint `(k)`

with a range of
`-1 <= C(k) <= 0`

, `C(0)`

corresponds to `eta(n,j,i)`

whereas `C(-1)`

corresponds to `depth(j,i)`

; the constant `depth_c`

, (positive value),
is a critical depth controlling the stretching and `depth(j,i)`

is the distance
from ocean datum to sea floor (positive value) at horizontal
gridpoint `(j,i)`

.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "s: var1 C: var2 eta: var3 depth: var4 depth_c: var5"

`standard_name`

= "ocean_sigma_z_coordinate"

- Definition:
for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) for k > nsigma: z(n,k,j,i) = zlev(k)

where `z(n,k,j,i)`

is height, positive upwards, relative to ocean
datum (e.g. mean sea level) at gridpoint `(n,k,j,i)`

,
`eta(n,j,i)`

is the height of the ocean surface, positive upwards, relative
to ocean datum at gridpoint `(n,j,i)`

,
`sigma(k)`

is the dimensionless
coordinate at vertical gridpoint `(k)`

for
`k <= nsigma`

,
and `depth(j,i)`

is the distance from ocean datum to
sea floor (positive value) at horizontal gridpoint `(j,i)`

.
Above depth `depth_c`

there are `nsigma`

layers.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "sigma: var1 eta: var2 depth: var3 depth_c: var4 nsigma: var5
zlev: var6"

`standard_name`

= "ocean_double_sigma_coordinate"

- Definition:
for k <= k_c: z(k,j,i)= sigma(k)*f(j,i) for k > k_c: z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))

where `z(k,j,i)`

is height, positive upwards, relative to ocean
datum (e.g. mean sea level) at gridpoint `(k,j,i)`

,
`sigma(k)`

is the dimensionless coordinate at vertical
gridpoint `(k)`

for `k <= k_c`

,
and `depth(j,i)`

is the distance
from ocean datum to sea floor (positive value) at horizontal
gridpoint `(j,i)`

.
`z1`

, `z2`

, `a`

, and `href`

are constants.

The format for the
`formula_terms`

attribute is

`formula_terms`

= "sigma: var1 depth: var2 z1: var3 z2: var4 a: var5 href: var6
k_c: var7"