The Intermediate Complexity Atmospheric Research model (ICAR)
A computationally efficient atmospheric model for downscaling.
 All Classes Files Functions Variables
Public Member Functions | Public Attributes | Private Attributes | List of all members
module_mp_thompson Module Reference


This subroutine computes the moisture tendencies of water vapor, cloud droplets, rain, cloud ice (pristine), snow, and graupel. More...

Public Member Functions

subroutine thompson_init (mp_options)
 
subroutine mp_gt_driver (qv, qc, qr, qi, qs, qg, ni, nr, th, pii, p, dz, dt_in, itimestep, RAINNC, RAINNCV, SNOWNC, SNOWNCV, GRAUPELNC, GRAUPELNCV, SR, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
 
subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, nr1d, t1d, p1d, dzq, pptrain, pptsnow, pptgraul, pptice, kts, kte, dt, ii, jj)
 
subroutine qr_acr_qg
 
subroutine qr_acr_qs
 
subroutine freezeh2o
 
subroutine qi_aut_qs
 
subroutine table_efrw
 
subroutine table_efsw
 
subroutine table_dropevap
 
subroutine gcf (GAMMCF, A, X, GLN)
 
subroutine gser (GAMSER, A, X, GLN)
 
real function gammln (XX)
 
real function gammp (A, X)
 
real function wgamma (y)
 
real function rslf (P, T)
 
real function rsif (P, T)
 

Public Attributes

double precision, dimension(nbins+1) xdx
 
double precision, dimension(nbcdc
 
double precision, dimension(nbcdtc
 
double precision, dimension(nbidi
 
double precision, dimension(nbidti
 
double precision, dimension(nbrdr
 
double precision, dimension(nbrdtr
 
double precision, dimension(nbsds
 
double precision, dimension(nbsdts
 
double precision, dimension(nbgdg
 
double precision, dimension(nbgdtg
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tcg_racg
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tmr_racg
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tcr_gacr
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tmg_gacr
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tnr_racg
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tnr_gacr
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tcs_racs1
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tmr_racs1
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tcs_racs2
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tmr_racs2
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tcr_sacr1
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tms_sacr1
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tcr_sacr2
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tms_sacr2
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tnr_racs1
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tnr_racs2
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tnr_sacr1
 
real(kind=r8size), dimension(:,:,:,:),
allocatable 
tnr_sacr2
 
real(kind=r8size), dimension(:,:),
allocatable 
tpi_qcfz
 
real(kind=r8size), dimension(:,:),
allocatable 
tni_qcfz
 
real(kind=r8size), dimension(:,:,:),
allocatable 
tpi_qrfz
 
real(kind=r8size), dimension(:,:,:),
allocatable 
tpg_qrfz
 
real(kind=r8size), dimension(:,:,:),
allocatable 
tni_qrfz
 
real(kind=r8size), dimension(:,:,:),
allocatable 
tnr_qrfz
 
real(kind=r8size), dimension(:,:),
allocatable 
tps_iaus
 
real(kind=r8size), dimension(:,:),
allocatable 
tni_iaus
 
real(kind=r8size), dimension(:,:),
allocatable 
tpi_ide
 
real(kind=r8size), dimension(:,:),
allocatable 
t_efrw
 
real(kind=r8size), dimension(:,:),
allocatable 
t_efsw
 
real(kind=r8size), dimension(:,:,:),
allocatable 
tnr_rev
 
real t1_qr_qc
 
real t1_qr_qi
 
real t2_qr_qi
 
real t1_qg_qc
 
real t1_qs_qc
 
real t1_qs_qi
 
real t1_qr_ev
 
real t2_qr_ev
 
real t1_qs_sd
 
real t2_qs_sd
 
real t1_qg_sd
 
real t2_qg_sd
 
real t1_qs_me
 
real t2_qs_me
 
real t1_qg_me
 
real t2_qg_me
 
character *256 mp_debug
 

Private Attributes

logical, parameter, private iiwarm = .false.
 
integer, parameter, private ifdry = 0
 
real, parameter, private t_0 = 273.15
 
real, parameter, private pi2 = 3.1415926536
 
real, parameter, private rho_w = 1000.0
 
real, parameter, private rho_s = 100.0
 
real, parameter, private rho_i = 890.0
 
real, parameter, private mu_g = 0.0
 
real, parameter, private mu_i = 0.0
 
real, private mu_c
 
real, parameter, private mu_s = 0.6357
 
real, parameter, private kap0 = 490.6
 
real, parameter, private kap1 = 17.46
 
real, parameter, private lam0 = 20.78
 
real, parameter, private lam1 = 3.29
 
real, parameter, private gonv_min = 1.E4
 
real, parameter, private gonv_max = 3.E6
 
real, parameter, private am_r = PI2*rho_w/6.0
 
real, parameter, private bm_r = 3.0
 
real, parameter, private bm_s = 2.0
 
real, parameter, private bm_g = 3.0
 
real, parameter, private am_i = PI2*rho_i/6.0
 
real, parameter, private bm_i = 3.0
 
real, parameter, private av_r = 4854.0
 
real, parameter, private bv_r = 1.0
 
real, parameter, private fv_r = 195.0
 
real, parameter, private bv_i = 1.0
 
real, parameter, private c_cube = 0.5
 
real, parameter, private r1 = 1.E-12
 
real, parameter, private r2 = 1.E-6
 
real, parameter, private eps = 1.E-15
 
real, parameter, private ato = 0.304
 
real, parameter, private rho_not = 101325.0/(287.05*298.0)
 
real, parameter, private sc = 0.632
 
real, private sc3
 
real, parameter, private hgfr = 235.16
 
real, parameter, private rv = 461.5
 
real, parameter, private orv = 1./Rv
 
real, parameter, private rr2 = 287.04
 
real, parameter, private cp2 = 1004.0
 
real, parameter, private lsub = 2.834E6
 
real, parameter, private lvap0 = 2.5E6
 
real, parameter, private lfus = lsub - lvap0
 
real, parameter, private olfus = 1./lfus
 
real, parameter, private xm0i = 1.E-12
 
real, parameter, private d0c = 1.E-6
 
real, parameter, private d0r = 50.E-6
 
real, parameter, private d0s = 200.E-6
 
real, parameter, private d0g = 250.E-6
 
real, private d0i
 
real, private xm0s
 
real, private xm0g
 
integer, parameter, private nbins = 100
 
integer, parameter, private nbc = nbins
 
integer, parameter, private nbi = nbins
 
integer, parameter, private nbr = nbins
 
integer, parameter, private nbs = nbins
 
integer, parameter, private nbg = nbins
 
integer, parameter, private ntb_c = 37
 
integer, parameter, private ntb_i = 64
 
integer, parameter, private ntb_r = 37
 
integer, parameter, private ntb_s = 28
 
integer, parameter, private ntb_g = 28
 
integer, parameter, private ntb_g1 = 28
 
integer, parameter, private ntb_r1 = 37
 
integer, parameter, private ntb_i1 = 55
 
integer, parameter, private ntb_t = 9
 
integer, private nic2
 
integer, private nii2
 
integer, private nii3
 
integer, private nir2
 
integer, private nir3
 
integer, private nis2
 
integer, private nig2
 
integer, private nig3
 
real, dimension(ntb_c),
parameter, private 
r_c = (/1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 
real, dimension(ntb_i),
parameter, private 
r_i = (/1.e-10,2.e-10,3.e-10,4.e-10, 5.e-10,6.e-10,7.e-10,8.e-10,9.e-10, 1.e-9,2.e-9,3.e-9,4.e-9,5.e-9,6.e-9,7.e-9,8.e-9,9.e-9, 1.e-8,2.e-8,3.e-8,4.e-8,5.e-8,6.e-8,7.e-8,8.e-8,9.e-8, 1.e-7,2.e-7,3.e-7,4.e-7,5.e-7,6.e-7,7.e-7,8.e-7,9.e-7, 1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3/)
 
real, dimension(ntb_r),
parameter, private 
r_r = (/1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 
real, dimension(ntb_g),
parameter, private 
r_g = (/1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 
real, dimension(ntb_s),
parameter, private 
r_s = (/1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 
real, dimension(ntb_r1),
parameter, private 
n0r_exp = (/1.e6,2.e6,3.e6,4.e6,5.e6,6.e6,7.e6,8.e6,9.e6, 1.e7,2.e7,3.e7,4.e7,5.e7,6.e7,7.e7,8.e7,9.e7, 1.e8,2.e8,3.e8,4.e8,5.e8,6.e8,7.e8,8.e8,9.e8, 1.e9,2.e9,3.e9,4.e9,5.e9,6.e9,7.e9,8.e9,9.e9, 1.e10/)
 
real, dimension(ntb_g1),
parameter, private 
n0g_exp = (/1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6,2.e6,3.e6,4.e6,5.e6,6.e6,7.e6,8.e6,9.e6, 1.e7/)
 
real, dimension(ntb_i1),
parameter, private 
nt_i = (/1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0, 1.e1,2.e1,3.e1,4.e1,5.e1,6.e1,7.e1,8.e1,9.e1, 1.e2,2.e2,3.e2,4.e2,5.e2,6.e2,7.e2,8.e2,9.e2, 1.e3,2.e3,3.e3,4.e3,5.e3,6.e3,7.e3,8.e3,9.e3, 1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6/)
 
real, dimension(10), parameter,
private 
sa = (/ 5.065339, -0.062659, -3.032362, 0.029469, -0.000285, 0.31255, 0.000204, 0.003199, 0.0, -0.015952/)
 
real, dimension(10), parameter,
private 
sb = (/ 0.476221, -0.015896, 0.165977, 0.007468, -0.000141, 0.060366, 0.000079, 0.000594, 0.0, -0.003577/)
 
real, dimension(ntb_t),
parameter, private 
tc = (/-0.01, -5., -10., -15., -20., -25., -30., -35., -40./)
 
integer, parameter, private r8size = 8
 
real, dimension(3), private cce
 
real, dimension(3), private ccg
 
real, private ocg1
 
real, private ocg2
 
real, dimension(7), private cie
 
real, dimension(7), private cig
 
real, private oig1
 
real, private oig2
 
real, private obmi
 
real, dimension(13), private cre
 
real, dimension(13), private crg
 
real, private ore1
 
real, private org1
 
real, private org2
 
real, private org3
 
real, private obmr
 
real, dimension(18), private cse
 
real, dimension(18), private csg
 
real, private oams
 
real, private obms
 
real, private ocms
 
real, dimension(12), private cge
 
real, dimension(12), private cgg
 
real, private oge1
 
real, private ogg1
 
real, private ogg2
 
real, private ogg3
 
real, private oamg
 
real, private obmg
 
real, private ocmg
 
real, private nt_c
 
real, private tno
 
real, private am_s
 
real, private rho_g
 
real, private av_s
 
real, private bv_s
 
real, private fv_s
 
real, private av_g
 
real, private bv_g
 
real, private av_i
 
real, private ef_si
 
real, private ef_rs
 
real, private ef_rg
 
real, private ef_ri
 
real, private c_cubes
 
real, private c_sqrd
 
real, private mu_r
 
real, private t_adjust
 
logical, private ef_rw_l
 
logical, private ef_sw_l
 
real, private am_g
 

Detailed Description


This subroutine computes the moisture tendencies of water vapor, cloud droplets, rain, cloud ice (pristine), snow, and graupel.

Prior to WRFv2.2 this code was based on Reisner et al (1998), but few of those pieces remain. A complete description is now found in Thompson, G., P. R. Field, R. M. Rasmussen, and W. D. Hall, 2008: Explicit Forecasts of winter precipitation using an improved bulk microphysics scheme. Part II: Implementation of a new snow parameterization. Mon. Wea. Rev., 136, 5095-5115. Prior to WRFv3.1, this code was single-moment rain prediction as described in the reference above, but in v3.1 and higher, the scheme is two-moment rain (predicted rain number concentration).

Most importantly, users may wish to modify the prescribed number of cloud droplets (Nt_c; see guidelines mentioned below). Otherwise, users may alter the rain and graupel size distribution parameters to use exponential (Marshal-Palmer) or generalized gamma shape. The snow field assumes a combination of two gamma functions (from Field et al. 2005) and would require significant modifications throughout the entire code to alter its shape as well as accretion rates. Users may also alter the constants used for density of rain, graupel, ice, and snow, but the latter is not constant when using Paul Field's snow distribution and moments methods. Other values users can modify include the constants for mass and/or velocity power law relations and assumed capacitances used in deposition/ sublimation/evaporation/melting. Remaining values should probably be left alone.

Modifications for ICAR include OPENMP paralellization and the ability to input many important parameters so they are no longer hard coded

Author
Greg Thompson, NCAR-RAL, gthom.nosp@m.psn@.nosp@m.ucar..nosp@m.edu, 303-497-2805 Last modified: 27 Jul 2012

Member Function/Subroutine Documentation

subroutine module_mp_thompson::freezeh2o ( )

Here is the caller graph for this function:

real function module_mp_thompson::gammln ( real, intent(in)  XX)

Here is the caller graph for this function:

real function module_mp_thompson::gammp ( real, intent(in)  A,
real, intent(in)  X 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_mp_thompson::gcf ( real  GAMMCF,
real, intent(in)  A,
real, intent(in)  X,
real  GLN 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_mp_thompson::gser ( real  GAMSER,
real, intent(in)  A,
real, intent(in)  X,
real  GLN 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_mp_thompson::mp_gt_driver ( real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  qv,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  qc,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  qr,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  qi,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  qs,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  qg,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  ni,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  nr,
real, dimension(ims:ime, kms:kme, jms:jme), intent(inout)  th,
real, dimension(ims:ime, kms:kme, jms:jme), intent(in)  pii,
real, dimension(ims:ime, kms:kme, jms:jme), intent(in)  p,
real, dimension(ims:ime, kms:kme, jms:jme), intent(in)  dz,
real, intent(in)  dt_in,
integer, intent(in)  itimestep,
real, dimension(ims:ime, jms:jme), intent(inout)  RAINNC,
real, dimension(ims:ime, jms:jme), intent(inout)  RAINNCV,
real, dimension(ims:ime, jms:jme), intent(inout), optional  SNOWNC,
real, dimension(ims:ime, jms:jme), intent(inout), optional  SNOWNCV,
real, dimension(ims:ime, jms:jme), intent(inout), optional  GRAUPELNC,
real, dimension(ims:ime, jms:jme), intent(inout), optional  GRAUPELNCV,
real, dimension(ims:ime, jms:jme), intent(inout)  SR,
integer, intent(in)  ids,
integer, intent(in)  ide,
integer, intent(in)  jds,
integer, intent(in)  jde,
integer, intent(in)  kds,
integer, intent(in)  kde,
integer, intent(in)  ims,
integer, intent(in)  ime,
integer, intent(in)  jms,
integer, intent(in)  jme,
integer, intent(in)  kms,
integer, intent(in)  kme,
integer, intent(in)  its,
integer, intent(in)  ite,
integer, intent(in)  jts,
integer, intent(in)  jte,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_mp_thompson::mp_thompson ( real, dimension(kts:kte), intent(inout)  qv1d,
real, dimension(kts:kte), intent(inout)  qc1d,
real, dimension(kts:kte), intent(inout)  qi1d,
real, dimension(kts:kte), intent(inout)  qr1d,
real, dimension(kts:kte), intent(inout)  qs1d,
real, dimension(kts:kte), intent(inout)  qg1d,
real, dimension(kts:kte), intent(inout)  ni1d,
real, dimension(kts:kte), intent(inout)  nr1d,
real, dimension(kts:kte), intent(inout)  t1d,
real, dimension(kts:kte), intent(inout)  p1d,
real, dimension(kts:kte), intent(in)  dzq,
real, intent(inout)  pptrain,
real, intent(inout)  pptsnow,
real, intent(inout)  pptgraul,
real, intent(inout)  pptice,
integer, intent(in)  kts,
integer, intent(in)  kte,
real, intent(in)  dt,
integer, intent(in)  ii,
integer, intent(in)  jj 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_mp_thompson::qi_aut_qs ( )

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_mp_thompson::qr_acr_qg ( )

Here is the caller graph for this function:

subroutine module_mp_thompson::qr_acr_qs ( )

Here is the caller graph for this function:

real function module_mp_thompson::rsif ( real, intent(in)  P,
real, intent(in)  T 
)

Here is the caller graph for this function:

real function module_mp_thompson::rslf ( real, intent(in)  P,
real, intent(in)  T 
)

Here is the caller graph for this function:

subroutine module_mp_thompson::table_dropevap ( )

Here is the call graph for this function:

subroutine module_mp_thompson::table_efrw ( )

Here is the caller graph for this function:

subroutine module_mp_thompson::table_efsw ( )

Here is the caller graph for this function:

subroutine module_mp_thompson::thompson_init ( type(mp_options_type), intent(in)  mp_options)

Here is the call graph for this function:

Here is the caller graph for this function:

real function module_mp_thompson::wgamma ( real, intent(in)  y)

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

real, private module_mp_thompson::am_g
private
real, parameter, private module_mp_thompson::am_i = PI2*rho_i/6.0
private
real, parameter, private module_mp_thompson::am_r = PI2*rho_w/6.0
private
real, private module_mp_thompson::am_s
private
real, parameter, private module_mp_thompson::ato = 0.304
private
real, private module_mp_thompson::av_g
private
real, private module_mp_thompson::av_i
private
real, parameter, private module_mp_thompson::av_r = 4854.0
private
real, private module_mp_thompson::av_s
private
real, parameter, private module_mp_thompson::bm_g = 3.0
private
real, parameter, private module_mp_thompson::bm_i = 3.0
private
real, parameter, private module_mp_thompson::bm_r = 3.0
private
real, parameter, private module_mp_thompson::bm_s = 2.0
private
real, private module_mp_thompson::bv_g
private
real, parameter, private module_mp_thompson::bv_i = 1.0
private
real, parameter, private module_mp_thompson::bv_r = 1.0
private
real, private module_mp_thompson::bv_s
private
real, parameter, private module_mp_thompson::c_cube = 0.5
private
real, private module_mp_thompson::c_cubes
private
real, private module_mp_thompson::c_sqrd
private
real, dimension(3), private module_mp_thompson::cce
private
real, dimension(3), private module_mp_thompson::ccg
private
real, dimension(12), private module_mp_thompson::cge
private
real, dimension(12), private module_mp_thompson::cgg
private
real, dimension(7), private module_mp_thompson::cie
private
real, dimension(7), private module_mp_thompson::cig
private
real, parameter, private module_mp_thompson::cp2 = 1004.0
private
real, dimension(13), private module_mp_thompson::cre
private
real, dimension(13), private module_mp_thompson::crg
private
real, dimension(18), private module_mp_thompson::cse
private
real, dimension(18), private module_mp_thompson::csg
private
real, parameter, private module_mp_thompson::d0c = 1.E-6
private
real, parameter, private module_mp_thompson::d0g = 250.E-6
private
real, private module_mp_thompson::d0i
private
real, parameter, private module_mp_thompson::d0r = 50.E-6
private
real, parameter, private module_mp_thompson::d0s = 200.E-6
private
double precision, dimension(nbc) module_mp_thompson::dc
double precision, dimension(nbg) module_mp_thompson::dg
double precision, dimension(nbi) module_mp_thompson::di
double precision, dimension(nbr) module_mp_thompson::dr
double precision, dimension(nbs) module_mp_thompson::ds
double precision, dimension(nbc) module_mp_thompson::dtc
double precision, dimension(nbg) module_mp_thompson::dtg
double precision, dimension(nbi) module_mp_thompson::dti
double precision, dimension(nbr) module_mp_thompson::dtr
double precision, dimension(nbs) module_mp_thompson::dts
real, private module_mp_thompson::ef_rg
private
real, private module_mp_thompson::ef_ri
private
real, private module_mp_thompson::ef_rs
private
logical, private module_mp_thompson::ef_rw_l
private
real, private module_mp_thompson::ef_si
private
logical, private module_mp_thompson::ef_sw_l
private
real, parameter, private module_mp_thompson::eps = 1.E-15
private
real, parameter, private module_mp_thompson::fv_r = 195.0
private
real, private module_mp_thompson::fv_s
private
real, parameter, private module_mp_thompson::gonv_max = 3.E6
private
real, parameter, private module_mp_thompson::gonv_min = 1.E4
private
real, parameter, private module_mp_thompson::hgfr = 235.16
private
integer, parameter, private module_mp_thompson::ifdry = 0
private
logical, parameter, private module_mp_thompson::iiwarm = .false.
private
real, parameter, private module_mp_thompson::kap0 = 490.6
private
real, parameter, private module_mp_thompson::kap1 = 17.46
private
real, parameter, private module_mp_thompson::lam0 = 20.78
private
real, parameter, private module_mp_thompson::lam1 = 3.29
private
real, parameter, private module_mp_thompson::lfus = lsub - lvap0
private
real, parameter, private module_mp_thompson::lsub = 2.834E6
private
real, parameter, private module_mp_thompson::lvap0 = 2.5E6
private
character*256 module_mp_thompson::mp_debug
real, private module_mp_thompson::mu_c
private
real, parameter, private module_mp_thompson::mu_g = 0.0
private
real, parameter, private module_mp_thompson::mu_i = 0.0
private
real, private module_mp_thompson::mu_r
private
real, parameter, private module_mp_thompson::mu_s = 0.6357
private
real, dimension(ntb_g1), parameter, private module_mp_thompson::n0g_exp = (/1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6,2.e6,3.e6,4.e6,5.e6,6.e6,7.e6,8.e6,9.e6, 1.e7/)
private
real, dimension(ntb_r1), parameter, private module_mp_thompson::n0r_exp = (/1.e6,2.e6,3.e6,4.e6,5.e6,6.e6,7.e6,8.e6,9.e6, 1.e7,2.e7,3.e7,4.e7,5.e7,6.e7,7.e7,8.e7,9.e7, 1.e8,2.e8,3.e8,4.e8,5.e8,6.e8,7.e8,8.e8,9.e8, 1.e9,2.e9,3.e9,4.e9,5.e9,6.e9,7.e9,8.e9,9.e9, 1.e10/)
private
integer, parameter, private module_mp_thompson::nbc = nbins
private
integer, parameter, private module_mp_thompson::nbg = nbins
private
integer, parameter, private module_mp_thompson::nbi = nbins
private
integer, parameter, private module_mp_thompson::nbins = 100
private
integer, parameter, private module_mp_thompson::nbr = nbins
private
integer, parameter, private module_mp_thompson::nbs = nbins
private
integer, private module_mp_thompson::nic2
private
integer, private module_mp_thompson::nig2
private
integer, private module_mp_thompson::nig3
private
integer, private module_mp_thompson::nii2
private
integer, private module_mp_thompson::nii3
private
integer, private module_mp_thompson::nir2
private
integer, private module_mp_thompson::nir3
private
integer, private module_mp_thompson::nis2
private
real, private module_mp_thompson::nt_c
private
real, dimension(ntb_i1), parameter, private module_mp_thompson::nt_i = (/1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0, 1.e1,2.e1,3.e1,4.e1,5.e1,6.e1,7.e1,8.e1,9.e1, 1.e2,2.e2,3.e2,4.e2,5.e2,6.e2,7.e2,8.e2,9.e2, 1.e3,2.e3,3.e3,4.e3,5.e3,6.e3,7.e3,8.e3,9.e3, 1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6/)
private
integer, parameter, private module_mp_thompson::ntb_c = 37
private
integer, parameter, private module_mp_thompson::ntb_g = 28
private
integer, parameter, private module_mp_thompson::ntb_g1 = 28
private
integer, parameter, private module_mp_thompson::ntb_i = 64
private
integer, parameter, private module_mp_thompson::ntb_i1 = 55
private
integer, parameter, private module_mp_thompson::ntb_r = 37
private
integer, parameter, private module_mp_thompson::ntb_r1 = 37
private
integer, parameter, private module_mp_thompson::ntb_s = 28
private
integer, parameter, private module_mp_thompson::ntb_t = 9
private
real, private module_mp_thompson::oamg
private
real, private module_mp_thompson::oams
private
real, private module_mp_thompson::obmg
private
real, private module_mp_thompson::obmi
private
real, private module_mp_thompson::obmr
private
real, private module_mp_thompson::obms
private
real, private module_mp_thompson::ocg1
private
real, private module_mp_thompson::ocg2
private
real, private module_mp_thompson::ocmg
private
real, private module_mp_thompson::ocms
private
real, private module_mp_thompson::oge1
private
real, private module_mp_thompson::ogg1
private
real, private module_mp_thompson::ogg2
private
real, private module_mp_thompson::ogg3
private
real, private module_mp_thompson::oig1
private
real, private module_mp_thompson::oig2
private
real, parameter, private module_mp_thompson::olfus = 1./lfus
private
real, private module_mp_thompson::ore1
private
real, private module_mp_thompson::org1
private
real, private module_mp_thompson::org2
private
real, private module_mp_thompson::org3
private
real, parameter, private module_mp_thompson::orv = 1./Rv
private
real, parameter, private module_mp_thompson::pi2 = 3.1415926536
private
real, parameter, private module_mp_thompson::r1 = 1.E-12
private
real, parameter, private module_mp_thompson::r2 = 1.E-6
private
integer, parameter, private module_mp_thompson::r8size = 8
private
real, dimension(ntb_c), parameter, private module_mp_thompson::r_c = (/1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
private
real, dimension(ntb_g), parameter, private module_mp_thompson::r_g = (/1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
private
real, dimension(ntb_i), parameter, private module_mp_thompson::r_i = (/1.e-10,2.e-10,3.e-10,4.e-10, 5.e-10,6.e-10,7.e-10,8.e-10,9.e-10, 1.e-9,2.e-9,3.e-9,4.e-9,5.e-9,6.e-9,7.e-9,8.e-9,9.e-9, 1.e-8,2.e-8,3.e-8,4.e-8,5.e-8,6.e-8,7.e-8,8.e-8,9.e-8, 1.e-7,2.e-7,3.e-7,4.e-7,5.e-7,6.e-7,7.e-7,8.e-7,9.e-7, 1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3/)
private
real, dimension(ntb_r), parameter, private module_mp_thompson::r_r = (/1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
private
real, dimension(ntb_s), parameter, private module_mp_thompson::r_s = (/1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
private
real, private module_mp_thompson::rho_g
private
real, parameter, private module_mp_thompson::rho_i = 890.0
private
real, parameter, private module_mp_thompson::rho_not = 101325.0/(287.05*298.0)
private
real, parameter, private module_mp_thompson::rho_s = 100.0
private
real, parameter, private module_mp_thompson::rho_w = 1000.0
private
real, parameter, private module_mp_thompson::rr2 = 287.04
private
real, parameter, private module_mp_thompson::rv = 461.5
private
real, dimension(10), parameter, private module_mp_thompson::sa = (/ 5.065339, -0.062659, -3.032362, 0.029469, -0.000285, 0.31255, 0.000204, 0.003199, 0.0, -0.015952/)
private
real, dimension(10), parameter, private module_mp_thompson::sb = (/ 0.476221, -0.015896, 0.165977, 0.007468, -0.000141, 0.060366, 0.000079, 0.000594, 0.0, -0.003577/)
private
real, parameter, private module_mp_thompson::sc = 0.632
private
real, private module_mp_thompson::sc3
private
real module_mp_thompson::t1_qg_me
real module_mp_thompson::t1_qg_qc
real module_mp_thompson::t1_qg_sd
real module_mp_thompson::t1_qr_ev
real module_mp_thompson::t1_qr_qc
real module_mp_thompson::t1_qr_qi
real module_mp_thompson::t1_qs_me
real module_mp_thompson::t1_qs_qc
real module_mp_thompson::t1_qs_qi
real module_mp_thompson::t1_qs_sd
real module_mp_thompson::t2_qg_me
real module_mp_thompson::t2_qg_sd
real module_mp_thompson::t2_qr_ev
real module_mp_thompson::t2_qr_qi
real module_mp_thompson::t2_qs_me
real module_mp_thompson::t2_qs_sd
real, parameter, private module_mp_thompson::t_0 = 273.15
private
real, private module_mp_thompson::t_adjust
private
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::t_efrw
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::t_efsw
real, dimension(ntb_t), parameter, private module_mp_thompson::tc = (/-0.01, -5., -10., -15., -20., -25., -30., -35., -40./)
private
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tcg_racg
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tcr_gacr
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tcr_sacr1
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tcr_sacr2
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tcs_racs1
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tcs_racs2
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tmg_gacr
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tmr_racg
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tmr_racs1
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tmr_racs2
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tms_sacr1
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tms_sacr2
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::tni_iaus
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::tni_qcfz
real (kind=r8size), dimension(:,:,:), allocatable module_mp_thompson::tni_qrfz
real, private module_mp_thompson::tno
private
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tnr_gacr
real (kind=r8size), dimension(:,:,:), allocatable module_mp_thompson::tnr_qrfz
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tnr_racg
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tnr_racs1
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tnr_racs2
real (kind=r8size), dimension(:,:,:), allocatable module_mp_thompson::tnr_rev
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tnr_sacr1
real (kind=r8size), dimension(:,:,:,:), allocatable module_mp_thompson::tnr_sacr2
real (kind=r8size), dimension(:,:,:), allocatable module_mp_thompson::tpg_qrfz
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::tpi_ide
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::tpi_qcfz
real (kind=r8size), dimension(:,:,:), allocatable module_mp_thompson::tpi_qrfz
real (kind=r8size), dimension(:,:), allocatable module_mp_thompson::tps_iaus
double precision, dimension(nbins+1) module_mp_thompson::xdx
real, private module_mp_thompson::xm0g
private
real, parameter, private module_mp_thompson::xm0i = 1.E-12
private
real, private module_mp_thompson::xm0s
private

The documentation for this module was generated from the following file: