Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / phys / module_bl_mynn_common.F
blob7d4057b27a88ac0cdb041c778a373d9cd6c81359
1 !====================================================================
3  module module_bl_mynn_common
5 !------------------------------------------
6 !Define Model-specific constants/parameters.
7 !This module will be used at the initialization stage
8 !where all model-specific constants are read and saved into
9 !memory. This module is then used again in the MYNN-EDMF. All
10 !MYNN-specific constants are declared globally in the main
11 !module (module_bl_mynn) further below:
12 !------------------------------------------
14 ! The following 5-6 lines are the only lines in this file that are not
15 ! universal for all dycores... Any ideas how to universalize it?
16 ! For MPAS:
17 ! use mpas_kind_types,only: kind_phys => RKIND
18 ! For CCPP:
19   use ccpp_kind_types,  only : kind_phys
20 ! For WRF
21 !  use module_gfs_machine,  only : kind_phys
23 !WRF CONSTANTS
24   use module_model_constants, only:         &
25     & karman, g, p1000mb,                   &
26     & cp, r_d, r_v, rcp, xlv, xlf, xls,     &
27     & svp1, svp2, svp3, p608, ep_2, rvovrd, &                                                                         
28     & cpv, cliq, cice, svpt0
30  implicit none
31  save
32 ! save :: cp, cpv, cice, cliq, p608, karman, rcp, & !taken directly from module_model_constants
33 !         r_d, r_v, xls, xlv, xlf, rvovrd, ep_2,  & !taken directly from module_model_constants
34 !         p1000mb, svp1, svp2, svp3,              & !taken directly from module_model_constants
35 !         grav, t0c,                              & !renamed from module_model_constants
36 !         zero, half, one, two, onethird,         & !set here
37 !         twothirds, tref, tkmin, tice,           & !set here
38 !         ep_3, gtr, rk, tv0, tv1, xlscp, xlvcp,  & !derived here
39 !         g_inv                                     !derived here
41 ! To be specified from dycore
42 ! real:: cp           != 7.*r_d/2. (J/kg/K)
43 ! real:: cpv          != 4.*r_v    (J/kg/K) Spec heat H2O gas
44 ! real:: cice         != 2106.     (J/kg/K) Spec heat H2O ice
45 ! real:: cliq         != 4190.     (J/kg/K) Spec heat H2O liq
46 ! real:: p608         != R_v/R_d-1.
47 ! real:: ep_2         != R_d/R_v
48 !! real:: grav         != accel due to gravity
49 ! real:: karman       != von Karman constant
50 !! real:: t0c          != temperature of water at freezing, 273.15 K
51 ! real:: rcp          != r_d/cp
52 ! real:: r_d          != 287.  (J/kg/K) gas const dry air
53 ! real:: r_v          != 461.6 (J/kg/K) gas const water
54 ! real:: xlf          != 0.35E6 (J/kg) fusion at 0 C
55 ! real:: xlv          != 2.50E6 (J/kg) vaporization at 0 C
56 ! real:: xls          != 2.85E6 (J/kg) sublimation
57 ! real:: rvovrd       != r_v/r_d != 1.608
59 ! Specified locally
60 ! Define single & double precision
61  integer, parameter :: sp = selected_real_kind(6, 37)
62  integer, parameter :: dp = selected_real_kind(15, 307)
63 ! integer, parameter :: kind_phys = sp
64  real(kind_phys),parameter:: zero   = 0.0
65  real(kind_phys),parameter:: half   = 0.5
66  real(kind_phys),parameter:: one    = 1.0
67  real(kind_phys),parameter:: two    = 2.0
68  real(kind_phys),parameter:: onethird  = 1./3.
69  real(kind_phys),parameter:: twothirds = 2./3.
70  real(kind_phys),parameter:: tref  = 300.0   ! reference temperature (K)
71  real(kind_phys),parameter:: TKmin = 253.0   ! for total water conversion, Tripoli and Cotton (1981)
72 ! real(kind_phys),parameter:: p1000mb=100000.0
73 ! real(kind_phys),parameter:: svp1  = 0.6112 !(kPa)
74 ! real(kind_phys),parameter:: svp2  = 17.67  !(dimensionless)
75 ! real(kind_phys),parameter:: svp3  = 29.65  !(K)
76  real(kind_phys),parameter:: tice  = 240.0  !-33 (C), temp at saturation w.r.t. ice
77  real(kind_phys),parameter:: grav  = g
78  real(kind_phys),parameter:: t0c   = svpt0        != 273.15
80 ! To be derived in the init routine
81  real(kind_phys),parameter:: ep_3   = 1.-ep_2 != 0.378
82  real(kind_phys),parameter:: gtr    = grav/tref
83  real(kind_phys),parameter:: rk     = cp/r_d
84  real(kind_phys),parameter:: tv0    =  p608*tref
85  real(kind_phys),parameter:: tv1    = (1.+p608)*tref
86  real(kind_phys),parameter:: xlscp  = (xlv+xlf)/cp
87  real(kind_phys),parameter:: xlvcp  = xlv/cp
88  real(kind_phys),parameter:: g_inv  = 1./grav
90 ! grav   = g
91 ! t0c    = svpt0        != 273.15
92 ! ep_3   = 1.-ep_2      != 0.378                                                                                   
93 ! gtr    = grav/tref
94 ! rk     = cp/r_d
95 ! tv0    = p608*tref
96 ! tv1    = (1.+p608)*tref
97 ! xlscp  = (xlv+xlf)/cp
98 ! xlvcp  = xlv/cp
99 ! g_inv  = 1./grav
101  end module module_bl_mynn_common