1 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 ! User-defined Rate Law functions
4 ! !! FROM chem/KPP/kpp/kpp-2.1/util/WRFconform/WRFUserRateLaws !!!!
6 ! Note: the default argument type for rate laws, as read from the equations file, is single precision
7 ! but all the internal calculations are performed in double precision
8 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 ! Arrhenius (added by psaide 15-07-2009)
11 KPP_REAL
FUNCTION ARR( A0
,B0
,C0
, TEMP
)
14 ARR
= A0
* EXP( -B0
/TEMP
) * (TEMP
/300._dp
)**C0
17 !~~~> Simplified Arrhenius, with two arguments
18 KPP_REAL
FUNCTION ARR2( A0
,B0
, TEMP
)
21 ARR2
= A0
* EXP( -B0
/TEMP
)
24 ! EP2 (added by psaide 22-07-2009)
25 KPP_REAL
FUNCTION EP2( A0
,C0
,A2
,C2
,A3
,C3
,TEMP
,cair
)
28 KPP_REAL A0
,C0
,A2
,C2
,A3
,C3
31 K0
= A0
* EXP(-C0
/TEMP
)
32 K2
= A2
* EXP(-C2
/TEMP
)
33 K3
= A3
* EXP(-C3
/TEMP
)
34 ! K3 = K3 * 2.45E13_dp * 1.0E6_dp
36 EP2
= K0
+ K3
/(1._dp
+K3
/K2
)
39 ! EP3 (added by psaide 15-07-2009)
40 KPP_REAL
FUNCTION EP3(A1
,C1
,A2
,C2
,TEMP
,cair
)
43 KPP_REAL A1
, C1
, A2
, C2
46 K1
= A1
* EXP(-C1
/TEMP
)
47 K2
= A2
* EXP(-C2
/TEMP
)
48 ! EP3 = K1 + K2*(1.0E6_dp * 2.45E13_dp)
52 ! FALL (added by psaide 15-07-2009)
53 KPP_REAL
FUNCTION FALL( A0
,B0
,C0
,A1
,B1
,C1
,CF
,TEMP
,cair
)
59 KPP_REAL A0
,B0
,C0
,A1
,B1
,C1
,CF
62 K0
= A0
* EXP(-B0
/TEMP
)* (TEMP
/300._dp
)**C0
63 K1
= A1
* EXP(-B1
/TEMP
)* (TEMP
/300._dp
)**C1
64 ! K0 = K0 * 2.45E13_dp * 1.0E6_dp
67 FALL
= (K0
/(1._dp
+K1
))*CF
**(1._dp
/(1._dp
+(LOG10(K1
))**2))
71 ! FALL2 (added by psaide 28-10-2009)
72 KPP_REAL
FUNCTION F2( A0
,B0
,C0
,A1
,B1
,C1
,CF
,CN
,TEMP
,cair
)
78 KPP_REAL A0
,B0
,C0
,A1
,B1
,C1
,CF
,CN
81 K0
= A0
* EXP(-B0
/TEMP
)* (TEMP
/300._dp
)**C0
82 K1
= A1
* EXP(-B1
/TEMP
)* (TEMP
/300._dp
)**C1
83 ! K0 = K0 * 2.45E13_dp * 1.0E6_dp
86 F2
= (K0
/(1._dp
+K1
))*CF
**(1._dp
/(1._dp
+(LOG10(K1
)/CN
)**2))
90 !------------------------------------
91 ! Troe reactions (as in Stockwell et al, 1997)
93 KPP_REAL
FUNCTION TROE(k0_300K
,n
,kinf_300K
,m
,temp
,cair
)
97 KPP_REAL
, INTENT(IN
) :: temp
! temperature [K]
98 KPP_REAL
, INTENT(IN
) :: cair
! air concentration [molecules/cm3]
99 KPP_REAL
, INTENT(IN
) :: k0_300K
! low pressure limit at 300 K
100 KPP_REAL
, INTENT(IN
) :: n
! exponent for low pressure limit
101 KPP_REAL
, INTENT(IN
) :: kinf_300K
! high pressure limit at 300 K
102 KPP_REAL
, INTENT(IN
) :: m
! exponent for high pressure limit
103 KPP_REAL
:: zt_help
, k0_T
, kinf_T
, k_ratio
105 zt_help
= 300._dp
/temp
106 k0_T
= k0_300K
* zt_help
**(n
) * cair
! k_0 at current T
107 kinf_T
= kinf_300K
* zt_help
**(m
) ! k_inf at current T
108 k_ratio
= k0_T
/kinf_T
109 TROE
= k0_T
/(1._dp
+k_ratio
)*0.6_dp
**(1._dp
/(1._dp
+LOG10(k_ratio
)**2))
115 !-------------------------------------------
116 ! Troe equilibrium reactions (as in Stockwell et al, 1997)
118 KPP_REAL
FUNCTION TROEE(A
, B
, k0_300K
,n
,kinf_300K
,m
,temp
,cair
)
122 KPP_REAL
, INTENT(IN
) :: temp
! temperature [K]
123 KPP_REAL
, INTENT(IN
) :: cair
! air concentration [molecules/cm3]
124 KPP_REAL
, INTENT(IN
) :: k0_300K
! low pressure limit at 300 K
125 KPP_REAL
, INTENT(IN
) :: n
! exponent for low pressure limit
126 KPP_REAL
, INTENT(IN
) :: kinf_300K
! high pressure limit at 300 K
127 KPP_REAL
, INTENT(IN
) :: m
! exponent for high pressure limit
128 KPP_REAL
, INTENT(IN
) :: A
, B
129 KPP_REAL
:: zt_help
, k0_T
, kinf_T
, k_ratio
, troe
132 zt_help
= 300._dp
/temp
133 k0_T
= k0_300K
* zt_help
**(n
) * cair
! k_0 at current T
134 kinf_T
= kinf_300K
* zt_help
**(m
) ! k_inf at current T
135 k_ratio
= k0_T
/kinf_T
136 troe
= k0_T
/(1._dp
+k_ratio
)*0.6_dp
**(1._dp
/(1._dp
+LOG10(k_ratio
)**2))
138 TROEE
= A
* EXP( - B
/ temp
) * troe
144 !------------------------
145 ! k=T^2 C exp (-D/T) reactions
147 KPP_REAL
FUNCTION THERMAL_T2(c
, d
,temp
)
148 KPP_REAL
, INTENT(IN
) :: temp
! temperature [K]
149 KPP_REAL
, INTENT(IN
) :: c
, d
152 THERMAL_T2
= temp
**2._dp
* c
* EXP(- d
/ temp
)
154 END FUNCTION THERMAL_T2
156 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
157 ! End of User-defined Rate Law functions
158 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~