!>\file bl_mynn_common.f90
!! Define Model-specific constants/parameters.
!! This module will be used at the initialization stage
!! where all model-specific constants are read and saved into
!! memory. This module is then used again in the MYNN-EDMF. All
!! MYNN-specific constants are declared globally in the main 
!! module (module_bl_mynn) further below:

!>\ingroup gp_mynnedmf
!! Define Model-specific constants/parameters
 module bl_mynn_common

!------------------------------------------
!
!------------------------------------------

! The following 5-6 lines are the only lines in this file that are not 
! universal for all dycores... Any ideas how to universalize it?
! For MPAS:
! use mpas_kind_types,only: kind_phys => RKIND
! For CCPP:
  use machine,  only : kind_phys

 implicit none
 save

! To be specified from dycore
 real(kind=kind_phys):: cp           !<= 7.*r_d/2. (J/kg/K)
 real(kind=kind_phys):: cpv          !<= 4.*r_v    (J/kg/K) Spec heat H2O gas
 real(kind=kind_phys):: cice         !<= 2106.     (J/kg/K) Spec heat H2O ice
 real(kind=kind_phys):: cliq         !<= 4190.     (J/kg/K) Spec heat H2O liq
 real(kind=kind_phys):: p608         !<= R_v/R_d-1.
 real(kind=kind_phys):: ep_2         !<= R_d/R_v
 real(kind=kind_phys):: grav         !<= accel due to gravity
 real(kind=kind_phys):: karman       !<= von Karman constant
 real(kind=kind_phys):: t0c          !<= temperature of water at freezing, 273.15 K
 real(kind=kind_phys):: rcp          !<= r_d/cp
 real(kind=kind_phys):: r_d          !<= 287.  (J/kg/K) gas const dry air
 real(kind=kind_phys):: r_v          !<= 461.6 (J/kg/K) gas const water
 real(kind=kind_phys):: xlf          !<= 0.35E6 (J/kg) fusion at 0 C
 real(kind=kind_phys):: xlv          !<= 2.50E6 (J/kg) vaporization at 0 C
 real(kind=kind_phys):: xls          !<= 2.85E6 (J/kg) sublimation
 real(kind=kind_phys):: rvovrd       !<= r_v/r_d != 1.608

! Specified locally
 real(kind=kind_phys),parameter:: zero   = 0.0
 real(kind=kind_phys),parameter:: half   = 0.5
 real(kind=kind_phys),parameter:: one    = 1.0
 real(kind=kind_phys),parameter:: two    = 2.0
 real(kind=kind_phys),parameter:: onethird  = 1./3.
 real(kind=kind_phys),parameter:: twothirds = 2./3.
 real(kind=kind_phys),parameter:: tref  = 300.0   !< reference temperature (K)
 real(kind=kind_phys),parameter:: TKmin = 253.0   !< for total water conversion, Tripoli and Cotton (1981)
 real(kind=kind_phys),parameter:: p1000mb=100000.0
 real(kind=kind_phys),parameter:: svp1  = 0.6112 !<(kPa)
 real(kind=kind_phys),parameter:: svp2  = 17.67  !<(dimensionless)
 real(kind=kind_phys),parameter:: svp3  = 29.65  !<(K)
 real(kind=kind_phys),parameter:: tice  = 240.0  !<-33 (C), temp at saturation w.r.t. ice

! To be derived in the init routine
 real(kind=kind_phys):: ep_3         !<= 1.-ep_2 != 0.378
 real(kind=kind_phys):: gtr          !<= grav/tref
 real(kind=kind_phys):: rk           !<= cp/r_d
 real(kind=kind_phys):: tv0          !<= p608*tref
 real(kind=kind_phys):: tv1          !<= (1.+p608)*tref
 real(kind=kind_phys):: xlscp        !<= (xlv+xlf)/cp
 real(kind=kind_phys):: xlvcp        !<= xlv/cp
 real(kind=kind_phys):: g_inv        !<= 1./grav

 end module bl_mynn_common