FMS
2025.04
Flexible Modeling System
|
Kernel module to be used by sat_vapor_pres_mod for table lookups and calculations. More...
Data Types | |
interface | compute_es_k |
interface | compute_mrs_k |
interface | compute_qs_k |
interface | lookup_des2_k |
interface | lookup_des3_k |
interface | lookup_des_k |
interface | lookup_es2_des2_k |
interface | lookup_es2_k |
interface | lookup_es3_des3_k |
interface | lookup_es3_k |
interface | lookup_es_des_k |
interface | lookup_es_k |
interface | sat_vapor_pres_init_k |
Functions/Subroutines | |
real(kind=fms_svp_kind_) function, dimension(size(tem, 1)) | compute_es_k_ (tem, TFREEZE) |
real(kind=fms_svp_kind_) function, dimension(size(tem, 1)) | compute_es_liq_ice_k_ (tem, TFREEZE) |
real(kind=fms_svp_kind_) function, dimension(size(tem, 1)) | compute_es_liq_k_ (tem, TFREEZE) |
subroutine | compute_mrs_k_0d_ (temp, press, eps, zvir, mrs, nbad, mr, hc, dmrsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_mrs_k_1d_ (temp, press, eps, zvir, mrs, nbad, mr, hc, dmrsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_mrs_k_2d_ (temp, press, eps, zvir, mrs, nbad, mr, hc, dmrsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_mrs_k_3d_ (temp, press, eps, zvir, mrs, nbad, mr, hc, dmrsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_qs_k_0d_ (temp, press, eps, zvir, qs, nbad, q, hc, dqsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_qs_k_1d_ (temp, press, eps, zvir, qs, nbad, q, hc, dqsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_qs_k_2d_ (temp, press, eps, zvir, qs, nbad, q, hc, dqsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | compute_qs_k_3d_ (temp, press, eps, zvir, qs, nbad, q, hc, dqsdT, esat, es_over_liq, es_over_liq_and_ice) |
subroutine | lookup_des2_k_0d_ (temp, desat, nbad) |
subroutine | lookup_des2_k_1d_ (temp, desat, nbad) |
subroutine | lookup_des2_k_2d_ (temp, desat, nbad) |
subroutine | lookup_des2_k_3d_ (temp, desat, nbad) |
subroutine | lookup_des3_k_0d_ (temp, desat, nbad) |
subroutine | lookup_des3_k_1d_ (temp, desat, nbad) |
subroutine | lookup_des3_k_2d_ (temp, desat, nbad) |
subroutine | lookup_des3_k_3d_ (temp, desat, nbad) |
subroutine | lookup_des_k_0d_ (temp, desat, nbad) |
subroutine | lookup_des_k_1d_ (temp, desat, nbad) |
subroutine | lookup_des_k_2d_ (temp, desat, nbad) |
subroutine | lookup_des_k_3d_ (temp, desat, nbad) |
subroutine | lookup_es2_des2_k_0d_ (temp, esat, desat, nbad) |
subroutine | lookup_es2_des2_k_1d_ (temp, esat, desat, nbad) |
subroutine | lookup_es2_des2_k_2d_ (temp, esat, desat, nbad) |
subroutine | lookup_es2_des2_k_3d_ (temp, esat, desat, nbad) |
subroutine | lookup_es2_k_0d_ (temp, esat, nbad) |
subroutine | lookup_es2_k_1d_ (temp, esat, nbad) |
subroutine | lookup_es2_k_2d_ (temp, esat, nbad) |
subroutine | lookup_es2_k_3d_ (temp, esat, nbad) |
subroutine | lookup_es3_des3_k_0d_ (temp, esat, desat, nbad) |
subroutine | lookup_es3_des3_k_1d_ (temp, esat, desat, nbad) |
subroutine | lookup_es3_des3_k_2d_ (temp, esat, desat, nbad) |
subroutine | lookup_es3_des3_k_3d_ (temp, esat, desat, nbad) |
subroutine | lookup_es3_k_0d_ (temp, esat, nbad) |
subroutine | lookup_es3_k_1d_ (temp, esat, nbad) |
subroutine | lookup_es3_k_2d_ (temp, esat, nbad) |
subroutine | lookup_es3_k_3d_ (temp, esat, nbad) |
subroutine | lookup_es_des_k_0d_ (temp, esat, desat, nbad) |
subroutine | lookup_es_des_k_1d_ (temp, esat, desat, nbad) |
subroutine | lookup_es_des_k_2d_ (temp, esat, desat, nbad) |
subroutine | lookup_es_des_k_3d_ (temp, esat, desat, nbad) |
subroutine | lookup_es_k_0d_ (temp, esat, nbad) |
subroutine | lookup_es_k_1d_ (temp, esat, nbad) |
subroutine | lookup_es_k_2d_ (temp, esat, nbad) |
subroutine | lookup_es_k_3d_ (temp, esat, nbad) |
subroutine | sat_vapor_pres_init_k_ (table_size, tcmin, tcmax, TFREEZE, HLV, RVGAS, ES0, err_msg, use_exact_qs_input, do_simple, construct_table_wrt_liq, construct_table_wrt_liq_and_ice, teps, tmin, dtinv) |
This routine has been generalized to return tables for any temperature range and resolution The TABLEs for saturation vapor pressure are computed with r8_kind precision since these TABLES are module level variables that are decared as r8_kind. The subroutines compute_es_k, compute_es_k, compute_es_liq_k, and compute_es_liq_ice_k seem to be mostly used to compute the TABLE values (and thus all variables within them can be declared as r8_kind). However, these compute* subroutines have been modified to accept both r4_kind and r8_kind arguments for general usage and the math can be conducted in either r4_kind and r8_kind. In this initialization routine, r8_kind arguments are passed to these compute* subroutines. This routine does not assume the passed in arguments are in r8_precision. Thus all variables used for the computation of the TABLES (e.g. TABLE, DTABLE*, D2TABLE*) are promoted to r8_kind precision. All local variables used for computation are in r8_kind precision Thus the TABLEs are constructed as accurately as possible and are promoted down to r4_kind when users pass in r4_kind arguments to the LOOKUP* subroutines. More... | |
Kernel module to be used by sat_vapor_pres_mod for table lookups and calculations.
Kernel module to be used by sat_vapor_pres_mod for.
interface sat_vapor_pres_k_mod::compute_es_k |
Definition at line 78 of file sat_vapor_pres_k.F90.
Private Member Functions | |
compute_es_k_r4 | |
compute_es_k_r8 | |
interface sat_vapor_pres_k_mod::compute_mrs_k |
Definition at line 213 of file sat_vapor_pres_k.F90.
Private Member Functions | |
compute_mrs_k_0d_r4 | |
compute_mrs_k_0d_r8 | |
compute_mrs_k_1d_r4 | |
compute_mrs_k_1d_r8 | |
compute_mrs_k_2d_r4 | |
compute_mrs_k_2d_r8 | |
compute_mrs_k_3d_r4 | |
compute_mrs_k_3d_r8 | |
interface sat_vapor_pres_k_mod::compute_qs_k |
Definition at line 202 of file sat_vapor_pres_k.F90.
Private Member Functions | |
compute_qs_k_0d_r4 | |
compute_qs_k_0d_r8 | |
compute_qs_k_1d_r4 | |
compute_qs_k_1d_r8 | |
compute_qs_k_2d_r4 | |
compute_qs_k_2d_r8 | |
compute_qs_k_3d_r4 | |
compute_qs_k_3d_r8 | |
interface sat_vapor_pres_k_mod::lookup_des2_k |
Definition at line 142 of file sat_vapor_pres_k.F90.
Private Member Functions | |
lookup_des2_k_0d_r4 | |
lookup_des2_k_0d_r8 | |
lookup_des2_k_1d_r4 | |
lookup_des2_k_1d_r8 | |
lookup_des2_k_2d_r4 | |
lookup_des2_k_2d_r8 | |
lookup_des2_k_3d_r4 | |
lookup_des2_k_3d_r8 | |
interface sat_vapor_pres_k_mod::lookup_des3_k |
Definition at line 178 of file sat_vapor_pres_k.F90.
Private Member Functions | |
lookup_des3_k_0d_r4 | |
lookup_des3_k_0d_r8 | |
lookup_des3_k_1d_r4 | |
lookup_des3_k_1d_r8 | |
lookup_des3_k_2d_r4 | |
lookup_des3_k_2d_r8 | |
lookup_des3_k_3d_r4 | |
lookup_des3_k_3d_r8 | |
interface sat_vapor_pres_k_mod::lookup_des_k |
Definition at line 106 of file sat_vapor_pres_k.F90.
Private Member Functions | |
lookup_des_k_0d_r4 | |
lookup_des_k_0d_r8 | |
lookup_des_k_1d_r4 | |
lookup_des_k_1d_r8 | |
lookup_des_k_2d_r4 | |
lookup_des_k_2d_r8 | |
lookup_des_k_3d_r4 | |
lookup_des_k_3d_r8 | |
interface sat_vapor_pres_k_mod::lookup_es2_des2_k |
Definition at line 154 of file sat_vapor_pres_k.F90.
interface sat_vapor_pres_k_mod::lookup_es2_k |
Definition at line 130 of file sat_vapor_pres_k.F90.
Private Member Functions | |
lookup_es2_k_0d_r4 | |
lookup_es2_k_0d_r8 | |
lookup_es2_k_1d_r4 | |
lookup_es2_k_1d_r8 | |
lookup_es2_k_2d_r4 | |
lookup_es2_k_2d_r8 | |
lookup_es2_k_3d_r4 | |
lookup_es2_k_3d_r8 | |
interface sat_vapor_pres_k_mod::lookup_es3_des3_k |
Definition at line 190 of file sat_vapor_pres_k.F90.
interface sat_vapor_pres_k_mod::lookup_es3_k |
Definition at line 166 of file sat_vapor_pres_k.F90.
Private Member Functions | |
lookup_es3_k_0d_r4 | |
lookup_es3_k_0d_r8 | |
lookup_es3_k_1d_r4 | |
lookup_es3_k_1d_r8 | |
lookup_es3_k_2d_r4 | |
lookup_es3_k_2d_r8 | |
lookup_es3_k_3d_r4 | |
lookup_es3_k_3d_r8 | |
interface sat_vapor_pres_k_mod::lookup_es_des_k |
Definition at line 118 of file sat_vapor_pres_k.F90.
interface sat_vapor_pres_k_mod::lookup_es_k |
Definition at line 94 of file sat_vapor_pres_k.F90.
Private Member Functions | |
lookup_es_k_0d_r4 | |
lookup_es_k_0d_r8 | |
lookup_es_k_1d_r4 | |
lookup_es_k_1d_r8 | |
lookup_es_k_2d_r4 | |
lookup_es_k_2d_r8 | |
lookup_es_k_3d_r4 | |
lookup_es_k_3d_r8 | |
interface sat_vapor_pres_k_mod::sat_vapor_pres_init_k |
Definition at line 72 of file sat_vapor_pres_k.F90.
Private Member Functions | |
sat_vapor_pres_init_k_r4 | |
sat_vapor_pres_init_k_r8 | |
real(kind=fms_svp_kind_) function, dimension(size(tem,1)) compute_es_k_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | tem, |
real(kind=fms_svp_kind_), intent(in) | TFREEZE | ||
) |
[in] | tem | temperature |
[in] | tfreeze | conversion to Kelvin |
one and ten are declared for code readability. For example, one is easier to read then 1.0_lkind where lkind=FMS_SVP_KIND_ throughout the code
compute es over ice
x = -9.09718(TBASI/tem-1) - 3.56654log(TBASI/tem) + 0.876793(1-tem/TBASI) + log(ESBASI) the coded equation below is the commented equation above
compute es over water greater than -20 c. values over 100 c may not be valid see smithsonian meteorological tables page 350.
x = -7.90298(TBASW/tem-1) + 5.02808log(TBASW/tem) -1.3816d-07*10^[11.344(1-tem/TBASW)-1] +8.1328d-03*10^[-3.49149(TBASW/tem-1)-1] + log(ESBASW) the coded equation below is the commented equation above
derive blended es over ice and supercooled water between -20c and 0c
es = 0.05*[esice*(TBASI-10)+esh2o*(tem-TBASI+20)] the coded equation below is the commented equation above
Definition at line 215 of file sat_vapor_pres_k.inc.
real(kind=fms_svp_kind_) function, dimension(size(tem,1)) compute_es_liq_ice_k_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | tem, |
real(kind=fms_svp_kind_), intent(in) | TFREEZE | ||
) |
[in] | tem | temperature |
[in] | tfreeze | conversion to Kelvin |
one and ten are declared for code readability. For example, one is easier to read then 1.0_lkind where lkind=FMS_SVP_KIND_ throughout the code
compute es over ice x= -9.09718(TBASI/tem-1) -3.56654log(TBASI/tem) +0.87679(1-tem/TBASI)+log(EBASI) the coded equation below is the commented equation above
compute es over water values over 100 c may not be valid see smithsonian meteorological tables page 350. x = -7.90298(TBASW/tem-1) + 5.02808log(TBASW/tem) -1.3816d-07*10^[11.344(1-tem/TBASW)-1] +8.1328d-03*10^[-3.49149(TBASW/tem-1)-1] + log(ESBASW) the coded equation below is the commented equation above
Definition at line 337 of file sat_vapor_pres_k.inc.
real(kind=fms_svp_kind_) function, dimension(size(tem,1)) compute_es_liq_k_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | tem, |
real(kind=fms_svp_kind_), intent(in) | TFREEZE | ||
) |
[in] | tem | temperature |
[in] | tfreeze | conversion to Kelvin |
local kind variable one and ten are declared for code readability. For example, one is easier to read then 1.0_lkind where lkind=FMS_SVP_KIND_ throughout the code
compute es over water for all temps. values over 100 c may not be valid see smithsonian meteorological tables page 350.
x = -7.90298(TBASW/tem-1) + 5.02808log(TBASW/tem) -1.3816d-07*10^[11.344(1-tem/TBASW)-1] +8.1328d-03*10^[-3.49149(TBASW/tem-1)-1] + log(ESBASW) the coded equation below is the commented equation above
Definition at line 292 of file sat_vapor_pres_k.inc.
subroutine compute_mrs_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), intent(out) | mrs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), intent(in), optional | mr, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), intent(out), optional | dmrsdT, | ||
real(kind=fms_svp_kind_), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | mrs | mixing ratio at relative humidity |
[out] | nbad | if temperature is out of range |
[in] | mr | vapor mixing ratio |
[in] | hc | relative humidity |
[out] | dmrsdt | d(mrs)/dT |
[out] | esat | saturation vapor pressure |
Definition at line 1029 of file sat_vapor_pres_k.inc.
subroutine compute_mrs_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out) | mrs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), dimension(:), intent(in), optional | mr, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out), optional | dmrsdT, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | mrs | mixing ratio at relative humidity |
[out] | nbad | if temperature is out of range |
[in] | mr | vapor mixing ratio |
[in] | hc | relative humidity |
[out] | dmrsdt | d(mrs)/dT |
[out] | esat | saturation vapor pressure |
Definition at line 939 of file sat_vapor_pres_k.inc.
subroutine compute_mrs_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | mrs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(in), optional | mr, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out), optional | dmrsdT, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | mrs | mixing ratio at relative humidity |
[out] | nbad | if temperature is out of range |
[in] | mr | vapor mixing ratio |
[in] | hc | relative humidity |
[out] | dmrsdt | d(mrs)/dT |
[out] | esat | saturation vapor pressure |
Definition at line 847 of file sat_vapor_pres_k.inc.
subroutine compute_mrs_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | mrs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(in), optional | mr, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out), optional | dmrsdT, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | mrs | mixing ratio at relative humidity |
[out] | nbad | if temperature is out of range |
[in] | mr | vapor mixing ratio |
[in] | hc | relative humidity |
[out] | dmrsdt | d(mrs)/dT |
[out] | esat | saturation vapor pressure |
Definition at line 753 of file sat_vapor_pres_k.inc.
subroutine compute_qs_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), intent(out) | qs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), intent(in), optional | q, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), intent(out), optional | dqsdT, | ||
real(kind=fms_svp_kind_), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | qs | specific humidity |
[out] | nbad | if temperature is out of range |
[in] | q | vapor specific humidity |
[in] | hc | relative humidity |
[out] | dqsdt | d(qs)/dT |
[out] | esat | saturation vapor pressure |
Definition at line 666 of file sat_vapor_pres_k.inc.
subroutine compute_qs_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out) | qs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), dimension(:), intent(in), optional | q, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out), optional | dqsdT, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | qs | specific humidity |
[out] | nbad | if temperature is out of range |
[in] | q | vapor specific humidity |
[in] | hc | relative humidity |
[out] | dqsdt | d(qs)/dt |
[out] | esat | saturation vapor pressure |
Definition at line 576 of file sat_vapor_pres_k.inc.
subroutine compute_qs_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | qs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(in), optional | q, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out), optional | dqsdT, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | qs | specific humidity |
[out] | nbad | if temperature is out of range |
[in] | q | vapor specific humidty |
[in] | hc | relative humidity |
[out] | dqsdt | d(qs)/dT |
[out] | esat | saturation vapor pressure |
Definition at line 484 of file sat_vapor_pres_k.inc.
subroutine compute_qs_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | press, | ||
real(kind=fms_svp_kind_), intent(in) | eps, | ||
real(kind=fms_svp_kind_), intent(in) | zvir, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | qs, | ||
integer, intent(out) | nbad, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(in), optional | q, | ||
real(kind=fms_svp_kind_), intent(in), optional | hc, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out), optional | dqsdT, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out), optional | esat, | ||
logical, intent(in), optional | es_over_liq, | ||
logical, intent(in), optional | es_over_liq_and_ice | ||
) |
[in] | temp | temperature |
[in] | press | pressure |
[in] | eps | EPSILO |
[out] | qs | specific humidity |
[out] | nbad | if temperature is out of range |
[in] | q | vapor relative humidity |
[in] | hc | relative humidity |
[out] | dqsdt | d(qs)/dT |
[out] | esat | saturation vapor pressure |
[in] | es_over_liq | use es table wrt liquid only |
Definition at line 391 of file sat_vapor_pres_k.inc.
subroutine lookup_des2_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2063 of file sat_vapor_pres_k.inc.
subroutine lookup_des2_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1987 of file sat_vapor_pres_k.inc.
subroutine lookup_des2_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1907 of file sat_vapor_pres_k.inc.
subroutine lookup_des2_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1864 of file sat_vapor_pres_k.inc.
subroutine lookup_des3_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2573 of file sat_vapor_pres_k.inc.
subroutine lookup_des3_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2497 of file sat_vapor_pres_k.inc.
subroutine lookup_des3_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2417 of file sat_vapor_pres_k.inc.
subroutine lookup_des3_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivatove of saturation vap pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2374 of file sat_vapor_pres_k.inc.
subroutine lookup_des_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1555 of file sat_vapor_pres_k.inc.
subroutine lookup_des_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1479 of file sat_vapor_pres_k.inc.
subroutine lookup_des_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1397 of file sat_vapor_pres_k.inc.
subroutine lookup_des_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1354 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_des2_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | esat, | ||
real(kind=fms_svp_kind_), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1774 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_des2_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE
Definition at line 1728 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_des2_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1679 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_des2_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of sat vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1628 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 2099 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 2025 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 1947 of file sat_vapor_pres_k.inc.
subroutine lookup_es2_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 1820 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_des3_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | esat, | ||
real(kind=fms_svp_kind_), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of esat |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2285 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_des3_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of esat |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2238 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_des3_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of desat |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2189 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_des3_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of esat |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 2138 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 2609 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 2535 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 2457 of file sat_vapor_pres_k.inc.
subroutine lookup_es3_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 2330 of file sat_vapor_pres_k.inc.
subroutine lookup_es_des_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | esat, | ||
real(kind=fms_svp_kind_), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of the saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1265 of file sat_vapor_pres_k.inc.
subroutine lookup_es_des_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of the saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1217 of file sat_vapor_pres_k.inc.
subroutine lookup_es_des_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of the saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1168 of file sat_vapor_pres_k.inc.
subroutine lookup_es_des_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | esat, | ||
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | desat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | desat | derivative of saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
desat = DTABLE + 2del*D2TABLE the coded equation below is the commented equation above
Definition at line 1117 of file sat_vapor_pres_k.inc.
subroutine lookup_es_k_0d_ | ( | real(kind=fms_svp_kind_), intent(in) | temp, |
real(kind=fms_svp_kind_), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 1591 of file sat_vapor_pres_k.inc.
subroutine lookup_es_k_1d_ | ( | real(kind=fms_svp_kind_), dimension(:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 1517 of file sat_vapor_pres_k.inc.
subroutine lookup_es_k_2d_ | ( | real(kind=fms_svp_kind_), dimension(:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 1438 of file sat_vapor_pres_k.inc.
subroutine lookup_es_k_3d_ | ( | real(kind=fms_svp_kind_), dimension(:,:,:), intent(in) | temp, |
real(kind=fms_svp_kind_), dimension(:,:,:), intent(out) | esat, | ||
integer, intent(out) | nbad | ||
) |
[in] | temp | temperature |
[out] | esat | saturavation vapor pressure |
[out] | nbad | if temperature is out of range |
dtres, tminl, tepsl, dtinvl are module level variables declared in r8_kind precision for precision consistency and for code readability, the *ll variables are declared and used
esat = TABLE + del*(TABLE + del*D2TABLE) the coded equation below is the commented equation above
Definition at line 1310 of file sat_vapor_pres_k.inc.
subroutine sat_vapor_pres_init_k_ | ( | integer, intent(in) | table_size, |
real(kind=fms_svp_kind_), intent(in) | tcmin, | ||
real(kind=fms_svp_kind_), intent(in) | tcmax, | ||
real(kind=fms_svp_kind_), intent(in) | TFREEZE, | ||
real(kind=fms_svp_kind_), intent(in) | HLV, | ||
real(kind=fms_svp_kind_), intent(in) | RVGAS, | ||
real(kind=fms_svp_kind_), intent(in) | ES0, | ||
character(len=*), intent(out) | err_msg, | ||
logical, intent(in) | use_exact_qs_input, | ||
logical, intent(in) | do_simple, | ||
logical, intent(in) | construct_table_wrt_liq, | ||
logical, intent(in) | construct_table_wrt_liq_and_ice, | ||
real(kind=fms_svp_kind_), intent(out), optional | teps, | ||
real(kind=fms_svp_kind_), intent(out), optional | tmin, | ||
real(kind=fms_svp_kind_), intent(out), optional | dtinv | ||
) |
This routine has been generalized to return tables for any temperature range and resolution The TABLEs for saturation vapor pressure are computed with r8_kind precision since these TABLES are module level variables that are decared as r8_kind. The subroutines compute_es_k, compute_es_k, compute_es_liq_k, and compute_es_liq_ice_k seem to be mostly used to compute the TABLE values (and thus all variables within them can be declared as r8_kind). However, these compute* subroutines have been modified to accept both r4_kind and r8_kind arguments for general usage and the math can be conducted in either r4_kind and r8_kind. In this initialization routine, r8_kind arguments are passed to these compute* subroutines. This routine does not assume the passed in arguments are in r8_precision. Thus all variables used for the computation of the TABLES (e.g. TABLE, DTABLE*, D2TABLE*) are promoted to r8_kind precision. All local variables used for computation are in r8_kind precision Thus the TABLEs are constructed as accurately as possible and are promoted down to r4_kind when users pass in r4_kind arguments to the LOOKUP* subroutines.
[in] | tcmin | TABLE(1) = sat vapor pressure at temperature tcmin (deg C) |
[in] | tcmax | TABLE(table_size) = sat vapor pressure at temperature tcmax (deg C) |
[in] | tfreeze | Conversion to Kelvin |
[in] | hlv | Latent heat of evaporation [J/kg] |
[in] | rvgas | Gas constant for water vapor |
[in] | es0 | Humidity factor [dimensionless] |
increment used to generate derivative table the following variables are used in the computation of the TABLES (which is defined in r8_kind in sat_vapor_pres_mod) Thus these variables are declared with r8_kind
To be able to compute tables for any temperature range and resolution, and at the same time exactly reproduce answers from memphis revision, it is necessary to compute ftact differently than it is in memphis.
compute es tables from tcmin to tcmax estimate es derivative with small +/- difference
TABLE = 610.78ES0*exp(-HLV/RGAS[1/tem - 1.TFREEZE]) DTABLE = HLV(TABLE/RVGAS)^2
compute one-half second derivative using centered differences differencing des values in the table
one-sided derivatives at boundaries
compute es tables from tcmin to tcmax estimate es derivative with small +/- difference
pass in flag to force all values to be wrt liquid
compute one-half second derivative using centered differences differencing des values in the table
one-sided derivatives at boundaries
compute es tables from tcmin to tcmax estimate es derivative with small +/- difference
pass in flag to force all values to be wrt liquid
compute one-half second derivative using centered differences differencing des values in the table
one-sided derivatives at boundaries
Definition at line 37 of file sat_vapor_pres_k.inc.