The module MAPL_SatVaporMod provides a function that returns
the saturation specific humidity , mixing ratio, ,
or vapor pressure , over either liquid water or ice.
The function can also return the derivatives ,
, or through an optional argument.
The module does not depend on ESMF and its only dependence
on the rest of MAPL is for the definition
of gas constants. If the preprocessor macro 1 is not defined,
these are assigned standard values and the build becomes
independent of the rest of MAPL.
File Used
The main computations are done in the following include files:
eqsat.H esatlqu.H esatice.H qsatlqu.H qsatice.H.
@note Bug
The tables and some control parameters are globals.
This can result in unsafe race conditions when called from
multiple threads. Most of these, however, will be benign.
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
private recursive function QSAT0(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL32),
intent(in)
::
TL
real(kind=REAL32),
intent(in),
optional
::
PL
real(kind=REAL32),
intent(out),
optional
::
DQ
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL32)
private function QSAT1(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL32),
intent(in)
::
TL(:)
real(kind=REAL32),
intent(in),
optional
::
PL(:)
real(kind=REAL32),
intent(out),
optional
::
DQ(:)
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL32), (SIZE(TL,1))
private function QSAT2(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL32),
intent(in)
::
TL(:,:)
real(kind=REAL32),
intent(in),
optional
::
PL(:,:)
real(kind=REAL32),
intent(out),
optional
::
DQ(:,:)
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL32), (SIZE(TL,1),SIZE(TL,2))
private function QSAT3(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL32),
intent(in)
::
TL(:,:,:)
real(kind=REAL32),
intent(in),
optional
::
PL(:,:,:)
real(kind=REAL32),
intent(out),
optional
::
DQ(:,:,:)
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL32), (SIZE(TL,1),SIZE(TL,2),SIZE(TL,3))
private recursive function QSATD0(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL64),
intent(in)
::
TL
real(kind=REAL64),
intent(in),
optional
::
PL
real(kind=REAL64),
intent(out),
optional
::
DQ
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL64)
private function QSATD1(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL64),
intent(in)
::
TL(:)
real(kind=REAL64),
intent(in),
optional
::
PL(:)
real(kind=REAL64),
intent(out),
optional
::
DQ(:)
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL64), (SIZE(TL,1))
private function QSATD2(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL64),
intent(in)
::
TL(:,:)
real(kind=REAL64),
intent(in),
optional
::
PL(:,:)
real(kind=REAL64),
intent(out),
optional
::
DQ(:,:)
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL64), (SIZE(TL,1),SIZE(TL,2))
private function QSATD3(TL, PL, DQ, OverIce) result(QS)
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=REAL64),
intent(in)
::
TL(:,:,:)
real(kind=REAL64),
intent(in),
optional
::
PL(:,:,:)
real(kind=REAL64),
intent(out),
optional
::
DQ(:,:,:)
logical,
intent(in),
optional
::
OverIce
Return Value
real(kind=REAL64), (SIZE(TL,1),SIZE(TL,2),SIZE(TL,3))
Subroutines
public subroutine MAPL_EQsatSET(UseTable, Formulation, Subdivisions, MixingRatio)
The subroutine MAPL_EQsatSET set behavior of MAPL_EQsat.
MAPL_EQsatSet can be used to set three parameters that control
the behavior of the working routine, MAPL_EQsat.