@BeginModule
@NewPage
@Name      = Vertintml
@Title     = Vertical interpolation
@Section   = Interpolation
@Class     = Interpolation
@Arguments = ifile ofile
@Operators = ml2pl ml2hl

@BeginDescription
Interpolate 3D variables on hybrid sigma pressure level to pressure or height levels.
The input file should contain the log. surface pressure or the surface pressure.
To interpolate the temperature, the surface geopotential is also needed.
The pressure, temperature, and surface geopotential are identified by their GRIB1 code number
or netCDF CF standard name.
Supported parameter tables are: WMO standard table number 2 and ECMWF local table number 128.
Use the alias  @bold{ml2plx}/@bold{ml2hlx} or the environment variable @env{EXTRAPOLATE}
to extrapolate missing values. This operator requires all variables on the same horizontal grid.

@EndDescription
@EndModule


@BeginOperator_ml2pl
@Title     = Model to pressure level interpolation
@Parameter = plevels

@BeginDescription
Interpolates 3D variables on hybrid sigma pressure level to pressure level.
@EndDescription
@EndOperator


@BeginOperator_ml2hl
@Title     = Model to height level interpolation
@Parameter = hlevels

@BeginDescription
Interpolates 3D variables on hybrid sigma pressure level to height level.
The procedure is the same as for the operator @oper{mh2pl} except for
the pressure levels being calculated from the heights by:
@math{plevel = 101325*exp(hlevel/-7000)}
@EndDescription
@EndOperator


@BeginParameter
@Item = plevels
FLOAT  Pressure levels in pascal
@Item = hlevels
FLOAT  Height levels in meter (max level: 65535 m)
@EndParameter


@BeginEnvironment
@Item = EXTRAPOLATE
If set to 1 extrapolate missing values.
@EndEnvironment


@BeginNote
The netCDF CF convention for vertical hybrid coordinates is not supported, yet!
The vertical coordinate definition of a netCDF file has to follow the ECHAM convention.
This means:
@BeginItemize
@Item = the dimension of the full level coordinate and the corresponding variable is called mlev,
@Item = the dimension of the half level coordinate and the corresponding variable is called ilev (ilev must have one element more than mlev)
@Item = the hybrid vertical coefficient a is given in units of Pa and called hyai (hyam for level midpoints)
@Item = the hybrid vertical coefficient b is given in units of 1 and called hybi (hybm for level midpoints)
@Item = the mlev variable has a borders attribute containing the character string 'ilev'
@EndItemize

Use the @mod{sinfo} command to test if your vertical coordinate system is recognized as hybrid system.

In case this operator complains about not finding any data on hybrid model levels you may wish
to use the @mod{setzaxis} command to generate a zaxis description which conforms to the ECHAM convention.
See section "1.4 Z-axis description" for an example how to define a hybrid Z-axis.
@EndNote


@BeginExample
To interpolate hybrid model level data to pressure levels of 925, 850, 500 and 200 hPa use:
@BeginVerbatim
   cdo ml2pl,92500,85000,50000,20000 ifile ofile
@EndVerbatim
@EndExample
