PCM vertical coordinate
Contents
Overview
The PCM vertical coordinate, also called "model levels" is rather specific in the PCM and typically consists of "sigma" or hybrid "sigma-pressure" coordinates. What one needs to keep in mind is that model levels are not at fixed altitude, nor in most cases at fixed pressure. The pressure $$P$$ of a model level $$k$$ at time $$t$$ is: $$ \begin{align} P(k,t) & = ap(k) + bp(k) . Ps(t) \end{align} $$ Where $$ap(k)$$ and $$bp(k)$$ are respectively hybrid pressure and hybrid sigma coefficients (note that $$ap()$$ and $$bp()$$ are time-independent) and $$Ps(t)$$ is surface pressure (and typically varies with time).
sigma coordinates
If in the general equation above one sets $$ap(k)=0$$ for all $$k$$, then $$P(k,t)=bp(k).Ps(t)$$, which can be re-written as $$bp(k)=P(k,t)/Ps(t)$$, which is the expression of a "sigma" coordinate (often represented with the notation $$\Sigma=P/Ps$$). In case of a hydrostatic system, pressure monotonically decreases with altitude and thus "sigma" is indeed a coordinate, which monotonically decreases from 1 at the surface (where $$P=P_s$$) to 0 at the top of the atmosphere (where $$P=0$$). "Sigma" coordinates are also often called "terrain-following" coordinates because for given model level $$k$$ the pressure is a constant factor of the surface pressure, which to first order depends on the topography.
pressure coordinates
If in the general equation above one sets $$bp(k)=0$$ for all $$k$$, then $$P(k,t)=ap(k)$$, which implies that a layer k is always at the same pressure. While this is quite fine at high enough altitudes, it is quite easy to see that in the near surface and presence of topography (or if fact even without topography when weather systems will impact on local surface pressure) it will be problematic to use a fixed pressure grid where some points will be undefined.
hybrid sigma-pressure coordinates
The two approaches above can be combined by an appropriate choice of the values of $$ap(k)$$ and $$bp(k)$$, i.e. enforcing that:
- near the surface (small values of $$k$$) $$ap(k) \simeq 0 $$ (i.e. small compared to $$ bp(k) . Ps(t)$$), then the vertical coordinate there is close to being a purely "sigma" coordinate
- high enough (i.e. high enough above the topography, high values of $$k$$) $$bp(k) \simeq 0$$ and $$ bp(k). Ps(t) << ap(k)$$, then the vertical coordinate there is close to being a purely "pressure" coordinate
In practice
Information about the vertical coordinate is only partially stored in the PCM (lon-lat) dynamics start files which contain the number of atmospheric layer (llm), the ap() and bp() coefficients (along with the the $$preff$$ and $$pa$$ parameters discussed below, which are in the "controle" array). Note that the DYNAMICO dynamics start file do not contain this information.
In practice the vertical layer discretisation is generated at run time, using information from the input z2sig.def file and a couple of related parameters : $$preff$$, reference surface pressure, (in Pa), and $$pa$$, a nameless parameter homogeneous to a pressure (also expressed in Pa) which roughly corresponds to a "reference transition pressure" from which hybrid-sigma coordinates become essentially pressure coordinates. Based on these parameters, and the specified atmospheric scale height and related target pseudo-altitudes of model levels from file z2sig.def the model iteratively (requires solving a non-linear problem with no analytic solution) computes and builds the sought model levels.
An additional input parameter that will impact on the generation of model levels is the $$hybrid$$ (logical) parameter set in run.def, e.g.:
# use hybrid vertical coordinate (else will use sigma levels) hybrid=.true.
If $$hybrid$$ is set to $$.false.$$ the generated model levels will be purely sigma levels, i.e. the $$ap()$$ coefficients will be zero.
You can check out the code where this is done, in the disvert_noterre routine: https://trac.lmd.jussieu.fr/Planeto/browser/trunk/LMDZ.COMMON/libf/dyn3d_common/disvert_noterre.F and/or its "mirror" version in the dynamico-LMDZ interface disvert_icosa_lmdz https://trac.lmd.jussieu.fr/Planeto/browser/trunk/ICOSA_LMDZ/src/disvert_icosa_lmdz.f90