1 | subroutine CMiPhy |
---|
2 | |
---|
3 | !------------------------------------------------------------------------------+ |
---|
4 | ! Mon 17-Jun-2013 MAR | |
---|
5 | ! MAR CMiPhy | |
---|
6 | ! subroutine CMiPhy contains the MAR Cloud Microphysical Scheme | |
---|
7 | ! | |
---|
8 | ! version 3.p.4.1 created by H. Gallee, Thu 21-Mar-2013 | |
---|
9 | ! Last Modification by H. Gallee, Mon 17-Jun-2013 | |
---|
10 | ! | |
---|
11 | !------------------------------------------------------------------------------+ |
---|
12 | ! | |
---|
13 | ! INPUT / OUTPUT: qv__DY(kcolp,mzp) : air specific humidity [kg/kg] | |
---|
14 | ! ^^^^^^^^^^^^^^ qw__CM(kcolp,mzp) : cloud drops [kg/kg] | |
---|
15 | ! qi__CM(kcolp,mzp) : ice crystals Concentration [kg/kg] | |
---|
16 | ! qs__CM(kcolp,mzp) : Snow Particl. Concentration [kg/kg] | |
---|
17 | ! qr__CM(kcolp,mzp) : Rain Drops Concentration [kg/kg] | |
---|
18 | ! | |
---|
19 | ! (to be added: qg__CM(kcolp,mzp) : Graupels Concentration [kg/kg])| |
---|
20 | ! | |
---|
21 | ! CCNwCM(kcolp,mzp) : cloud droplets number [Nb/m3] | |
---|
22 | ! CCNiCM(kcolp,mzp) : ice crystals number [Nb/m3] | |
---|
23 | ! | |
---|
24 | ! CFraCM(kcolp,mzp) : cloud fraction [-] | |
---|
25 | ! | |
---|
26 | ! RainCM(kcolp ) : rain Precipitation [m w.e.] | |
---|
27 | ! SnowCM(kcolp ) : snow Precipitation [m w.e.] | |
---|
28 | ! Ice_CM(kcolp ) : ice Precipitation [m w.e.] | |
---|
29 | ! | |
---|
30 | ! qid_CM(kcolp,mzp) : Ice Water Formation [kg/kg] | |
---|
31 | ! qwd_CM(kcolp,mzp) : Liquid Water Formation [kg/kg] | |
---|
32 | ! | |
---|
33 | ! INPUT : wa__DY(kcolp,mzp) : Vertical Wind Speed [m/s] | |
---|
34 | ! ^^^^^ roa_DY(kcolp,mzp) : Air Density [T/m3] | |
---|
35 | ! qvsiCM(kcolp,mzp) : Satur.specific humidity (ICE) [kg/kg] | |
---|
36 | ! qvswCM(kcolp,mzp) : Satur.specific humidity (LIQ.) [kg/kg] | |
---|
37 | ! | |
---|
38 | ! OUTPUT: | |
---|
39 | ! ^^^^^^ | |
---|
40 | ! | |
---|
41 | ! | |
---|
42 | ! REFER. : 1) Ntezimana, unpubl.thes.LLN, 115 pp, 1993 | |
---|
43 | ! ^^^^^ 2) Lin et al. JCAM 22, 1065--1092, 1983 | |
---|
44 | ! (very similar, except that graupels are represented) | |
---|
45 | ! 3) Emde and Kahlig, Annal.Geophys. 7, 405-- 414, 1989 | |
---|
46 | ! 4) Levkov et al., Contr.Atm.Phys. 65, 35-- 57, 1992 | |
---|
47 | ! 5) Meyers et al., JAM 31, 708-- 731, 1992 | |
---|
48 | ! (Primary Ice-Nucleation Parameterization) | |
---|
49 | ! 6) Delobbe and Gallee, BLM 89, 75-- 107 1998 | |
---|
50 | ! (Partial Condensation Scheme) | |
---|
51 | ! | |
---|
52 | ! # OPTIONS: #hy Additional IF/THEN/ELSE added precluding vectorization | |
---|
53 | ! # ^^^^^^^ #qg Graupel Conservation Equation (to verify & include) | |
---|
54 | ! # #cn Intercept Parameter / snow gamma distribution = fct(Ta) | |
---|
55 | ! # #kk Limitation of SCu fraction | |
---|
56 | ! # #VW Cloud Drop. Sediment.(Duynkerke .. 1995, JAS 52, p.2763 | |
---|
57 | ! # #pp Emde & Kahlig Ice Crystal Deposition (not included) | |
---|
58 | ! # #wi QSat modified by qw/qi Ratio (not included) | |
---|
59 | ! | |
---|
60 | ! # DEBUG: #WH Additional Output (Each Process is detailled) | |
---|
61 | ! # ^^^^^ #WQ FULL Output (Each Process is detailled) | |
---|
62 | ! # #wH Additional Output | |
---|
63 | ! # #wh Additional Output (Include write CMiPhy_Debug.h) | |
---|
64 | ! # #EW Additional Output (Energy and Water Conservation) | |
---|
65 | ! # #ew Additional Output (Energy and Water Conservation) | |
---|
66 | ! | |
---|
67 | ! REMARK : the sign '~' indicates that reference must be verified | |
---|
68 | ! ^^^^^^^^ | |
---|
69 | ! CAUTION: Partial Condensation Scheme NOT validated | |
---|
70 | ! ^^^^^^^ for SCu -- Cu Transition | |
---|
71 | ! erf fonction is erroneous on HP | |
---|
72 | ! | |
---|
73 | !------------------------------------------------------------------------------+ |
---|
74 | |
---|
75 | |
---|
76 | |
---|
77 | ! Global Variables |
---|
78 | ! ================ |
---|
79 | |
---|
80 | use Mod_Real |
---|
81 | use Mod_PHY____dat |
---|
82 | use Mod_PHY____grd |
---|
83 | use Mod_PHY_CM_dat |
---|
84 | use Mod_PHY_CM_grd |
---|
85 | use Mod_PHY_CM_kkl |
---|
86 | use Mod_PHY_DY_kkl |
---|
87 | use Mod_PHY_AT_kkl |
---|
88 | |
---|
89 | |
---|
90 | |
---|
91 | ! Local Variables |
---|
92 | ! ================ |
---|
93 | |
---|
94 | use Mod_CMiPhy_loc |
---|
95 | |
---|
96 | |
---|
97 | IMPLICIT NONE |
---|
98 | |
---|
99 | |
---|
100 | logical :: Heter_Freezng = .FALSE. ! .TRUE. => Levkov et al. (1992) Heterogeneous Freezing of Cloud Droplets |
---|
101 | logical :: Homog_Sublima = .FALSE. ! .TRUE. => Levkov et al. (1992) Homogeneous Sublimation of Cloud Ice Particles |
---|
102 | logical :: Meyers = .TRUE. ! .TRUE. => Meyers et al. (1992) Ice Nucleation I |
---|
103 | logical :: AUTO_w_Sundqv = .TRUE. ! .TRUE. => Sundqvist (1988) Autoconversion Cloud Droplets --> Rain |
---|
104 | logical :: AUTO_w_LiouOu = .FALSE. ! .TRUE. => Liou and Ou (1989) Autoconversion Cloud Droplets --> Rain (Tropical SCu ONLY) |
---|
105 | logical :: AUTO_w_LinAll = .FALSE. ! .TRUE. => Lin et al. (1983) Autoconversion Cloud Droplets --> Rain |
---|
106 | logical :: AUTO_i_Levkov = .TRUE. ! .TRUE. => Levkov et al. (1992) Autoconversion Cloud Ice --> Snow |
---|
107 | logical :: AUTO_i_LevkXX = .TRUE. ! .TRUE. => Levkov et al. (1992) Autoconversion Cloud Ice --> Snow (Deposition.Growth) |
---|
108 | logical :: AUTO_i_EmdeKa = .FALSE. ! .TRUE. => Emde & Kahlig (1989) Autoconversion Cloud Ice --> Snow |
---|
109 | logical :: AUTO_i_Sundqv = .FALSE. ! .TRUE. => Sundqvist Autoconversion Cloud Ice --> Snow |
---|
110 | ! .FALSE. => Emde & Kahlig (1989) Bergeron-Findeisen Process |
---|
111 | logical :: fracSC = .FALSE. ! .TRUE. => Delobbe SCu Fractional Cloudiness may be set up if Frac__Clouds = .TRUE. |
---|
112 | logical :: fraCEP = .FALSE. ! .TRUE. => ECMWF SCu Fractional Cloudiness |
---|
113 | logical :: HalMos = .TRUE. ! .TRUE. => Levkov et al. (1992) Ice Nucleation II (Hallet-Mossop Process) |
---|
114 | logical :: graupel_shape = .TRUE. ! .TRUE. => Snow Particles Shape: Graupellike Snow Flakes of Hexagonal Type |
---|
115 | logical :: planes__shape = .FALSE. ! .TRUE. => Snow Particles Shape: Unrimed Side Planes |
---|
116 | logical :: aggrega_shape = .FALSE. ! .TRUE. => Snow Particles Shape: Aggregates of unrimed radiating assemblages |
---|
117 | |
---|
118 | logical :: NO_Vec = .TRUE. ! .TRUE. => Preference of IF/THEN/ELSE to sign and max/min Functions |
---|
119 | |
---|
120 | real(kind=real8) :: rad_ww ! Cloud Droplets Radius [...] |
---|
121 | real(kind=real8) :: qvs_wi ! Saturation Specific Humididy over Liquid Water [kg/kg] |
---|
122 | ! Ref.: Emde & Kahlig 1989, Ann.Geophys. 7, p.407 (5) |
---|
123 | real(kind=real8) :: BNUCVI ! Nucleation I: Deposition & Condensation-Freez. Nucl. [kg/kg] |
---|
124 | real(kind=real8) :: SSat_I ! Nucleation I: Sursaturation % ICE [%] |
---|
125 | |
---|
126 | real(kind=real8) :: Flag_T_NuId ! Flag: T < T_NuId => Nucleation I (Dep./Cond.) may occur [-] |
---|
127 | real(kind=real8) :: CCNiId ! [Nb/m3] |
---|
128 | |
---|
129 | real(kind=real8) :: Flag___NuIc ! Flag: 1 => Nucleation I (Cont.Frz.) may occur [-] |
---|
130 | real(kind=real8) :: Flag_T_NuIc ! Flag: T < T_NuIc => Nucleation I (Cont.Frz.) may occur [-] |
---|
131 | real(kind=real8) :: qw__OK ! Flag: 1 => Non-zero cloud droplets Concentration |
---|
132 | real(kind=real8) :: qi__OK ! Flag: 1 => Non-zero cloud ice Concentration |
---|
133 | real(kind=real8) :: CCNiOK ! Flag: 1 => Non-zero cloud ice Particles |
---|
134 | real(kind=real8) :: CCNiIc ! [Nb/m3] |
---|
135 | |
---|
136 | real(kind=real8) :: Flag_TmaxHM ! Flag: T < TmaxHM => Nucleation II (Hall-Mossop) may occur [-] |
---|
137 | real(kind=real8) :: Flag_TminHM ! Flag: T > TminHM => Nucleation II (Hall-Mossop) may occur [-] |
---|
138 | real(kind=real8) :: Flag_wa__HM ! Flag: w > wa__HM => Nucleation II (Hall-Mossop) may occur [-] |
---|
139 | real(kind=real8) :: SplinJ ! Hallet-Mossop Theory (Levkov et al., 1992, |
---|
140 | real(kind=real8) :: SplinP ! Contr.Atm.Phy. 65, p.40) |
---|
141 | |
---|
142 | real(kind=real8) :: Flag_Ta_Neg ! Flag: T < 0.0dgC [-] |
---|
143 | real(kind=real8) :: Flag_TqwFrz ! Flag: T < Temper. => Instantaneous Freezing may occur [-] |
---|
144 | |
---|
145 | real(kind=real8) :: RHumid ! Relative Humidity [-] |
---|
146 | |
---|
147 | real(kind=real8) :: qi_Nu1,qi_Nu2 ! Nucleation ( 0 > Ta > -35 dgC ), Generations 1 and 2 [kg/kg] |
---|
148 | real(kind=real8) :: qi_Nuc ! Nucleation ( 0 > Ta > -35 dgC ), Generation (effective) [kg/kg] |
---|
149 | real(kind=real8) :: NuIdOK ! Nucleation I: Contact -Freez. Nucl. [-] |
---|
150 | real(kind=real8) :: BSPRWI ! Nucleation I: Contact -Freez. Nucl. [kg/kg] |
---|
151 | real(kind=real8) :: BHAMWI ! Nucleation II: Hallett-Mossop Ice-Multiplic. Process [kg/kg] |
---|
152 | real(kind=real8) :: BNUFWI ! Heterogeneous Freezing of Cloud Droplets [kg/kg] |
---|
153 | real(kind=real8) :: BDEPVI ! Ice Crystals Sublim. [kg/kg] |
---|
154 | real(kind=real8) :: Flag_SURSat ! Flag = 1/0 if (SUR/sub)Saturation FLAG [-] |
---|
155 | real(kind=real8) :: Flag_SUBSat ! Flag = 1/0 if (SUB/sur)Saturation FLAG [-] |
---|
156 | real(kind=real8) :: Flag_Sublim ! Flag = 1/0 for Sublimation Occurence or not [-] |
---|
157 | real(kind=real8) :: RH_Ice ! Relative Humidity vs Ice [-] |
---|
158 | real(kind=real8) :: RH_Liq ! Relative Humidity vs Water [-] |
---|
159 | real(kind=real8) :: DenDi1,DenDi2 ! dqi/dt|sublimation: terms of the denominator [...] |
---|
160 | real(kind=real8) :: dqsiqv ! SUBsaturation qsi - qv [kg/kg] |
---|
161 | real(kind=real8) :: dqvSUB ! SURsaturation qv - qsiEFF [kg/kg] |
---|
162 | real(kind=real8) :: dqvDUM ! Water Vapor Variation, dummy variable [kg/kg] |
---|
163 | real(kind=real8) :: dqiDUM ! Ice Crystals Variation, dummy variable [kg/kg] |
---|
164 | |
---|
165 | real(kind=real8) :: qCloud ! qw + qi [kg/kg] |
---|
166 | real(kind=real8) :: coefC2 ! Coefficient of Ek and Mahrt parameter C2_EkM [../..] |
---|
167 | real(kind=real8) :: pa_hPa,es_hPa ! Pressure, Pressure of Vapor at Saturat., over Water [hPa] |
---|
168 | real(kind=real8) :: Qsat_L ! Specific Concentration of Vapor at Saturat., over Water [kg/kg] |
---|
169 | ! (even for temperatures smaller than freezing pt) |
---|
170 | real(kind=real8) :: t_qvqw ! qv+qw mixing ratio used in Partial Condensation Scheme [kg/kg] |
---|
171 | real(kind=real8) :: d_qvqw ! qv+qw mixing ratio variation [kg/kg] |
---|
172 | real(kind=real8) :: Kdqvqw ! qv+qw vertical turbulent Flux [kg/kg m/s] |
---|
173 | real(kind=real8) :: ww_TKE ! vertical Velocity Variance [m2/s2] |
---|
174 | real(kind=real8) :: RH_TKE ! Relative Humidity Variance [../..] |
---|
175 | real(kind=real8) :: qt_TKE ! qv+qw Variance [../..] |
---|
176 | real(kind=real8) :: TLiqid ! Liquid Temperature [K] |
---|
177 | real(kind=real8) :: CFr_t1,CFr_t2 ! [-] |
---|
178 | real(kind=real8) :: CFrCoe ! [-] |
---|
179 | real(kind=real8) :: CFraOK ! [-] |
---|
180 | real(kind=real8) :: qwCFra ! CloudAveraged Liquid Water Mixing Ratio [kg/kg] |
---|
181 | real(kind=real8) :: qwMesh ! Mesh Averaged Liquid Water Mixing Ratio [kg/kg] |
---|
182 | real(kind=real8) :: dwMesh ! Mesh Averaged Liquid Water Mixing Ratio Variation [kg/kg] |
---|
183 | real(kind=real8) :: signdw ! Sign of Liquid Water Mixing Ratio Variation (-1/1) [-] |
---|
184 | real(kind=real8) :: Flag_dqwPos ! Flag = 1/0 if Liquid Water Mixing Ratio Variation >/< 0 [-] |
---|
185 | real(kind=real8) :: updatw ! [-] |
---|
186 | real(kind=real8) :: SCuLim ! Fraction Limit [-] |
---|
187 | real(kind=real8) :: ARGerf ! Argument of erf function (used in partial condensation Scheme) |
---|
188 | real(kind=real8) :: OUTerf ! OUTPUT of erf function |
---|
189 | real(kind=real8) :: erf ! erf function |
---|
190 | real(kind=real8) :: dwTUR4,dwTURi ! |
---|
191 | real(kind=real8) :: dwTUR3,dwTUR2 ! |
---|
192 | real(kind=real8) :: dwTUR8,dwTURc ! |
---|
193 | real(kind=real8) :: dwTUR5,dwTUR1 ! |
---|
194 | |
---|
195 | real(kind=real8) :: Di_Pri ! Pristine Ice Diameter |
---|
196 | real(kind=real8) :: c1saut,cnsaut ! Ice Crystals AUToconv. Parameters |
---|
197 | real(kind=real8) :: dtsaut ! Ice Crystals AUToconv. Time Scale |
---|
198 | real(kind=real8) :: ps_AUT ! Ice Crystals AUToconv. (BDEPIS, BAGRIS,...) Rate [kg/kg/s] |
---|
199 | real(kind=real8) :: qs_AUT ! Ice Crystals AUToconv. (BDEPIS, BAGRIS,...) [kg/kg] |
---|
200 | |
---|
201 | real(kind=real8) :: Flag_Ta_Pos ! Flag = 1/0 if Ta >/< 273.15 K FLAG [-] |
---|
202 | real(kind=real8) :: Flag_qiMELT ! Flag = 1/0 for qi Melting or not FLAG [-] |
---|
203 | real(kind=real8) :: qxMelt ! Potential qi to Melt [kg/kg] |
---|
204 | real(kind=real8) :: qiMELT ! Effective qi to Melt [kg/kg] |
---|
205 | real(kind=real8) :: CiMelt ! Effective CCNi removed by qi Melting [nb/m3] |
---|
206 | |
---|
207 | real(kind=real8) :: Flag_qsMELT ! Flag = 1/0 for qs Melting or not FLAG [-] |
---|
208 | real(kind=real8) :: xCoefM ! |
---|
209 | real(kind=real8) :: AcoefM,BcoefM ! |
---|
210 | real(kind=real8) :: dTMELT ! Temperature Offset before Snow Particles Melting [K] |
---|
211 | real(kind=real8) :: qsMELT ! Melt of Snow Particles [kg/kg] |
---|
212 | |
---|
213 | real(kind=real8) :: qs_ACW ! Accretion of Cloud Drop. by Snow Particl. [kg/kg] |
---|
214 | real(kind=real8) :: Flag_qs_ACW ! Accretion of Cloud Drop. by Snow Particl. FLAG [-] |
---|
215 | real(kind=real8) :: Flag_qs_ACI ! Accretion of Cloud Ice by Snow Particl. FLAG [-] |
---|
216 | real(kind=real8) :: effACI ! Accretion of Cloud Ice by Snow Particl. Efficiency [-] |
---|
217 | real(kind=real8) :: ps_ACI ! Accretion of Cloud Ice by Snow Particl. Rate [kg/kg/s] |
---|
218 | real(kind=real8) :: qs_ACI ! Accretion of Cloud Ice by Snow Particl. [kg/kg] |
---|
219 | real(kind=real8) :: CNsACI ! Accretion of Cloud Ice by Snow Particl. CCNi decrease [nb/m3] |
---|
220 | real(kind=real8) :: Flag_qs_ACR ! Accretion of Snow by Rain FLAG [-] |
---|
221 | real(kind=real8) :: coeACR ! Accretion of Snow by Rain Sedimentation Coeffic. [...] |
---|
222 | real(kind=real8) :: qs_ACR ! Accretion of Snow by Rain [kg/kg] |
---|
223 | real(kind=real8) :: qs_ACR_R ! Accretion of Snow by Rain => Rain [kg/kg] |
---|
224 | real(kind=real8) :: qs_ACR_S ! => Graupels [kg/kg] |
---|
225 | real(kind=real8) :: Flag_qr_ACS ! Accretion of Rain by Snow Particl. => Snow FLAG [-] |
---|
226 | real(kind=real8) :: coeACS ! Accretion of Rain by Snow Sedimentation Coeffic. [...] |
---|
227 | real(kind=real8) :: pr_ACS ! Accretion of Rain by Snow Particl. => Snow Rate [kg/kg/s] |
---|
228 | real(kind=real8) :: qr_ACS ! Accretion of Rain by Snow Particl. => Snow [kg/kg] |
---|
229 | real(kind=real8) :: qr_ACS_S ! Accretion of Rain by Snow Particl. => Snow [kg/kg] |
---|
230 | real(kind=real8) :: ps_SUB ! Deposition/Sublim. on/of Snow Particl. Rate [kg/kg/s] |
---|
231 | real(kind=real8) :: qs_SUB ! Deposition/Sublim. on/of Snow Particl. [kg/kg] |
---|
232 | real(kind=real8) :: ls_NUM ! Sublimation of Snow: NUMerator of Snow Distribut.Coef. [...] |
---|
233 | real(kind=real8) :: ls_DEN ! Sublimation of Snow: DENominator of Snow Distribut.Coef. [...] |
---|
234 | |
---|
235 | real(kind=real8) :: Flag_Freeze ! Freezing of Rain FLAG [-] |
---|
236 | real(kind=real8) :: ps_FRZ ! Freezing of Rain Rate [kg/kg/s] |
---|
237 | real(kind=real8) :: qs_FRZ ! Freezing of Rain [kg/kg] |
---|
238 | |
---|
239 | real(kind=real8) :: rwMEAN ! Droplets Autoconversion: Mean Radius |
---|
240 | |
---|
241 | real(kind=real8) :: th_AUT ! Cloud Droplets AUToconv. Threshold [-] |
---|
242 | real(kind=real8) :: pr_AUT ! Cloud Droplets AUToconv. Rate [kg/kg/s] |
---|
243 | real(kind=real8) :: qr_AUT ! Cloud Droplets AUToconv. [kg/kg] |
---|
244 | real(kind=real8) :: Flag_qr_ACW ! Accretion of Cloud Drop. by Rain FLAG [-] |
---|
245 | real(kind=real8) :: pr_ACW ! Accretion of Cloud Drop. by Rain Rate [kg/kg/s] |
---|
246 | real(kind=real8) :: qr_ACW ! Accretion of Cloud Drop. by Rain [kg/kg] |
---|
247 | real(kind=real8) :: Flag_qr_ACI ! Accretion of Cloud Drop. by Rain => Rain FLAG [-] |
---|
248 | real(kind=real8) :: pr_ACI ! Accretion of Cloud Ice by Rain => Rain Rate [kg/kg/s] |
---|
249 | real(kind=real8) :: qr_ACI ! Accretion of Cloud Ice by Rain => Rain [kg/kg] |
---|
250 | real(kind=real8) :: CNrACI ! Accretion of Cloud Ice by Rain CCNi decrease [nb/m3] |
---|
251 | real(kind=real8) :: pi_ACR ! Accretion of Cloud Ice by Rain => Snow Rate [kg/kg/s] |
---|
252 | real(kind=real8) :: qi_ACR ! Accretion of Cloud Ice by Rain => Snow [kg/kg] |
---|
253 | real(kind=real8) :: Flag_DryAir ! 1 => RH_Liq < 1 FLAG [-] |
---|
254 | real(kind=real8) :: Flag_qr_EVP ! Evaporation of Rain FLAG [-] |
---|
255 | real(kind=real8) :: lr_NUM ! Evaporation of Rain: NUMerator of rain Distribut.Coef. [...] |
---|
256 | real(kind=real8) :: lr_DEN ! Evaporation of Rain: DENominator of rain Distribut.Coef. [...] |
---|
257 | real(kind=real8) :: pr_EVP ! Evaporation of Rain Rate [kg/kg/s] |
---|
258 | real(kind=real8) :: qr_EVP ! Evaporation of Rain [kg/kg] |
---|
259 | |
---|
260 | real(kind=real8) :: effACS ! Accretion of Snow by Graupels Efficiency [-] |
---|
261 | |
---|
262 | real(kind=real8) :: a_rodz ! Air Mass |
---|
263 | real(kind=real8) :: qwFlux ! qw Sedimentation Flux Coefficient |
---|
264 | real(kind=real8) :: qwrodz ! Droplets Mass |
---|
265 | real(kind=real8) :: wRatio ! Droplets Mass Ratio [-] |
---|
266 | real(kind=real8) :: qiFlux ! qi Sedimentation Flux Coefficient |
---|
267 | real(kind=real8) :: qirodz ! Crystals Mass |
---|
268 | real(kind=real8) :: iRatio ! Crystals Mass Ratio [-] |
---|
269 | real(kind=real8) :: qsFlux ! qs Sedimentation Flux Coefficient |
---|
270 | real(kind=real8) :: qsrodz ! Snow Mass |
---|
271 | real(kind=real8) :: sRatio ! Snow Mass Ratio [-] |
---|
272 | real(kind=real8) :: qrFlux ! qr Sedimentation Flux Coefficient |
---|
273 | real(kind=real8) :: qrrodz ! Rain Mass |
---|
274 | real(kind=real8) :: rRatio ! Rain Mass Ratio [-] |
---|
275 | |
---|
276 | real(kind=real8) :: Vw_MAX ! MAX Sedimentation Velocity of Droplets |
---|
277 | real(kind=real8) :: Flag_Fall_i ! Sedimentation of Ice FLAG [-] |
---|
278 | real(kind=real8) :: Vi_MAX ! MAX Sedimentation Velocity of Ice Particles |
---|
279 | real(kind=real8) :: Vs_MAX,VsMMAX ! MAX Sedimentation Velocity of Snow Particles |
---|
280 | real(kind=real8) :: Vs__OK ! Sedimentation Velocity of Snow Particles |
---|
281 | real(kind=real8) :: Vr_MAX,VrMMAX ! MAX Sedimentation Velocity of Rain Drops |
---|
282 | real(kind=real8) :: Vr__OK ! Sedimentation Velocity of Rain Drops |
---|
283 | real(kind=real8) :: dtPrec ! Sedimentation Time Step |
---|
284 | real(kind=real8) :: d_Snow ! Sedimented Snow Part. over 1 time step [m] |
---|
285 | real(kind=real8) :: d_Rain ! Sedimented Rain Drops over 1 time step [m] |
---|
286 | |
---|
287 | real(kind=real8) :: SatiOK ! |
---|
288 | real(kind=real8) :: FlagNu ! 1 =>Nucleation for -35 dgC < Ta < 0 dgc |
---|
289 | |
---|
290 | real(kind=real8) :: Qw0_OK ! HYDROMETEORS INPUT STATUS |
---|
291 | real(kind=real8) :: Qi0_OK ! |
---|
292 | real(kind=real8) :: Qi0qOK ! |
---|
293 | real(kind=real8) :: Ci0_OK ! |
---|
294 | real(kind=real8) :: Ci0cOK ! |
---|
295 | real(kind=real8) :: Qs0_OK ! |
---|
296 | real(kind=real8) :: Qr0_OK ! |
---|
297 | |
---|
298 | real(kind=real8) :: qiBerg ! Bergeron-Findeisen Process: avaiklable qi |
---|
299 | real(kind=real8) :: qwBerg ! Bergeron-Findeisen Process: avaiklable qw |
---|
300 | real(kind=real8) :: qxBerg ! Bergeron-Findeisen Process: potential qi Generation |
---|
301 | real(kind=real8) :: a1Berg,a2Berg ! Bergeron-Findeisen Process: parameters |
---|
302 | real(kind=real8) :: a0Berg,afBerg ! Bergeron-Findeisen Process: integration constants |
---|
303 | |
---|
304 | real(kind=real8) :: WaterB ! Vertically Integrated Water Budget |
---|
305 | |
---|
306 | real(kind=real8) :: argEXP ! |
---|
307 | |
---|
308 | integer :: k ,ikl ! |
---|
309 | integer :: i_Berg ! |
---|
310 | integer :: nItMAX,itFall ! |
---|
311 | integer :: ikl_io,io__Pt ! |
---|
312 | |
---|
313 | |
---|
314 | ! Debug Variables |
---|
315 | ! --------------- |
---|
316 | |
---|
317 | ! #wH character(len=70) :: debugH ! |
---|
318 | ! #wH character(len=10) :: proc_1,proc_2 ! |
---|
319 | ! #wH character(len=10) :: proc_3,proc_4 ! |
---|
320 | ! #wH real(kind=real8) :: procv1,procv2 ! |
---|
321 | ! #wH real(kind=real8) :: procv3,procv4 ! |
---|
322 | ! #wH integer :: kv ,nl ! |
---|
323 | |
---|
324 | |
---|
325 | |
---|
326 | |
---|
327 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
328 | ! ! |
---|
329 | ! ALLOCATION ! |
---|
330 | ! ========== ! |
---|
331 | |
---|
332 | IF (it_RUN.EQ.1 .OR. FlagDALLOC) THEN ! |
---|
333 | |
---|
334 | allocate ( qw_io0( mzp) ) ! Droplets Concentration entering CMiPhy [kg/kg] |
---|
335 | allocate ( qi_io0( mzp) ) ! Ice Part. Concentration entering CMiPhy [kg/kg] |
---|
336 | allocate ( qs___0(kcolp,mzp) ) ! Snow Part. Concentration entering CMiPhy [kg/kg] |
---|
337 | ! #qg allocate ( qg___0(kcolp,mzp) ) ! Graupels Concentration entering CMiPhy [kg/kg] |
---|
338 | allocate ( qr___0(kcolp,mzp) ) ! Rain Drops Concentration entering CMiPhy [kg/kg] |
---|
339 | allocate ( Ta_dgC(kcolp,mzp) ) ! Air Temperature [dgC] |
---|
340 | allocate ( sqrrro(kcolp,mzp) ) ! sqrt(roa(mzp)/roa(k)) [-] |
---|
341 | allocate ( qsiEFF(kcolp,mzp) ) ! EFFective Saturation Specific Humidity over Ice [kg/kg] |
---|
342 | allocate ( Fletch(kcolp,mzp) ) ! Monodisperse Nb of hexagonal Plates, Fletcher (1962) [-] |
---|
343 | allocate ( lamdaS(kcolp,mzp) ) ! Marshall-Palmer distribution parameter for Snow Particl. |
---|
344 | ! #qg allocate ( lamdaG(kcolp,mzp) ) ! Marshall-Palmer distribution parameter for Graupels |
---|
345 | allocate ( lamdaR(kcolp,mzp) ) ! Marshall-Palmer distribution parameter for Rain Drops |
---|
346 | allocate ( ps_ACR(kcolp,mzp) ) ! Accretion of Snow by Rain Rate [kg/kg/s] |
---|
347 | allocate ( ps_ACW(kcolp,mzp) ) ! Accretion of Cloud Drop. by Snow Particl. Rate [kg/kg/s] |
---|
348 | allocate ( FallVw(kcolp,mzp) ) ! Sedimentation Velocity of Droplets |
---|
349 | allocate ( FallVi(kcolp,mzp) ) ! Sedimentation Velocity of Ice Particles |
---|
350 | allocate ( FallVs(kcolp,mzp) ) ! Sedimentation Velocity of Snow Particles |
---|
351 | ! #qg allocate ( FallVg(kcolp,mzp) ) ! Sedimentation Velocity of Snow Particles |
---|
352 | allocate ( FallVr(kcolp,mzp) ) ! Sedimentation Velocity of Rain Drops |
---|
353 | allocate ( qwLoss( mzp) ) ! Mass Loss related to Sedimentation of Rain Droplets |
---|
354 | allocate ( qiLoss( mzp) ) ! Mass Loss related to Sedimentation of Ice Crystals |
---|
355 | allocate ( qsLoss( mzp) ) ! Mass Loss related to Sedimentation of Snow Particles |
---|
356 | allocate ( qrLoss( mzp) ) ! Mass Loss related to Sedimentation of Rain Drops |
---|
357 | ! #wH allocate ( debugV( mzp,16) ) ! Debug Variable (of 16 microphysical processes) |
---|
358 | |
---|
359 | ! #WH allocate ( wihm1(mzp) ) ! Cloud Droplets Freezing |
---|
360 | ! #WH allocate ( wihm2(mzp) ) ! Ice Crystals Homogeneous Sublimation |
---|
361 | ! #WH allocate ( wicnd(mzp) ) ! Ice Crystals Nucleation (Emde & Kahlig) |
---|
362 | ! #WH allocate ( widep(mzp) ) ! Ice Crystals Growth Bergeron Process (Emde & Kahlig) |
---|
363 | ! #WH allocate ( wisub(mzp) ) ! Ice Crystals Sublimation (Levkov) |
---|
364 | ! #WH allocate ( wimlt(mzp) ) ! Ice Crystals Melting |
---|
365 | ! #WH allocate ( wwevp(mzp) ) ! Water Vapor Condensation / Evaporation (Fractional Cloudiness) |
---|
366 | ! #WH allocate ( wraut(mzp) ) ! Cloud Droplets AUTO-Conversion |
---|
367 | ! #WH allocate ( wsaut(mzp) ) ! Ice Crystals AUTO-Conversion |
---|
368 | ! #WH allocate ( wracw(mzp) ) ! Accretion of Cloud Droplets by Rain, Ta > 0, --> Rain |
---|
369 | ! #WH allocate ( wsacw(mzp) ) ! Accretion of Cloud Droplets by Rain, Ta < 0, --> Snow |
---|
370 | ! #WH allocate ( wsaci(mzp) ) ! Accretion of Ice Crystals by Snow --> Snow |
---|
371 | ! #WH allocate ( wraci(mzp) ) ! Accretion of Ice Crystals by Rain --> Snow |
---|
372 | ! #WH allocate ( wiacr(mzp) ) ! Accretion of Rain by Ice Crystals --> Snow |
---|
373 | ! #WH allocate ( wsacr(mzp) ) ! Accretion of Rain by Snow --> Snow |
---|
374 | ! #WH allocate ( wracs(mzp) ) ! Accretion of Snow by Rain --> Snow, Rain |
---|
375 | ! #WH allocate ( wrevp(mzp) ) ! Rain Drops Evaporation |
---|
376 | ! #WH allocate ( wssub(mzp) ) ! Snow Particles Sublimation |
---|
377 | ! #WH allocate ( wsmlt(mzp) ) ! Snow Particles Melting |
---|
378 | ! #WH allocate ( wsfre(mzp) ) ! Rain Drops Freezing |
---|
379 | |
---|
380 | END IF ! |
---|
381 | ! ! |
---|
382 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
383 | |
---|
384 | |
---|
385 | |
---|
386 | |
---|
387 | ! +++++++++++++++++++ |
---|
388 | DO ikl=1,kcolp |
---|
389 | ! +++++++++++++++++++ |
---|
390 | |
---|
391 | |
---|
392 | |
---|
393 | |
---|
394 | ! Debug |
---|
395 | ! ~~~~~ |
---|
396 | ! #wH DO k=mz1_CM,mzp |
---|
397 | ! #wH debugH( 1:35) = 'CMiPhy: Debugged Variables: Initial' |
---|
398 | ! #wH debugH(36:70) = ' ' |
---|
399 | ! #wH proc_1 = 'R.Hum W[%]' |
---|
400 | ! #wH procv1 = 0.1*qv__DY(ikl,k)/(RHcrit * qvswCM(ikl,k)) |
---|
401 | ! #wH proc_2 = 'R.Hum I[%]' |
---|
402 | ! #wH procv2 = 0.1*qv__DY(ikl,k)/(RHcrit * qvsiCM(ikl,k)) |
---|
403 | ! #wH proc_3 = ' ' |
---|
404 | ! #wH procv3 = 0. |
---|
405 | ! #wH proc_4 = ' ' |
---|
406 | ! #wH procv4 = 0. |
---|
407 | |
---|
408 | ! #wh include 'CMiPhy_Debug.h' |
---|
409 | |
---|
410 | ! #wH DO kv=1,16 |
---|
411 | ! #wH debugV(k,kv) = 0. |
---|
412 | ! #wH ENDDO |
---|
413 | ! #wH END DO |
---|
414 | |
---|
415 | |
---|
416 | |
---|
417 | |
---|
418 | ! Vertical Integrated Energy and Water Content |
---|
419 | ! ============================================ |
---|
420 | |
---|
421 | ! #EW enr0EW(ikl) = 0.0 |
---|
422 | ! #EW wat0EW(ikl) = 0.0 |
---|
423 | |
---|
424 | ! #EW DO k=1,mzp |
---|
425 | ! #EW enr0EW(ikl) = enr0EW( ikl) & |
---|
426 | ! #EW& +(Ta__CM(ikl,k) & |
---|
427 | ! #EW& -(qw__CM(ikl,k)+qr__CM(ikl,k))*Lv_Cpd & |
---|
428 | ! #EW& -(qi__CM(ikl,k)+qs__CM(ikl,k))*Ls_Cpd) & |
---|
429 | ! #EW& * dsigmi(k) |
---|
430 | ! #EW wat0EW(ikl) = wat0EW( ikl) & |
---|
431 | ! #EW& +(qv__DY(ikl,k) & |
---|
432 | ! #EW& + qw__CM(ikl,k)+qr__CM(ikl,k) & |
---|
433 | ! #EW& + qi__CM(ikl,k)+qs__CM(ikl,k) ) & |
---|
434 | ! #EW& * dsigmi(k) |
---|
435 | ! #EW END DO |
---|
436 | |
---|
437 | ! #EW mphyEW(ikl) =' ' |
---|
438 | ! .. mphy2D --> '12345678901234567890' |
---|
439 | |
---|
440 | ! #ew enr0EW(ikl) = enr0EW(ikl) * psa_DY(ikl) * Grav_I |
---|
441 | ! #EW wat0EW(ikl) = wat0EW(ikl) * psa_DY(ikl) * Grav_I |
---|
442 | ! .. wat0EW [m] contains an implicit factor 1.d3 [kPa-->Pa] /ro_Wat |
---|
443 | |
---|
444 | |
---|
445 | ! #WH VsMMAX = 0.0 |
---|
446 | ! #WH VrMMAX = 0.0 |
---|
447 | |
---|
448 | |
---|
449 | |
---|
450 | |
---|
451 | ! Set lower limit on Hydrometeor Concentration |
---|
452 | ! ============================================ |
---|
453 | |
---|
454 | ! #hy IF (NO_Vec) THEN |
---|
455 | |
---|
456 | ! #hy DO k=mz1_CM,mzp |
---|
457 | |
---|
458 | ! #hy IF (qw__CM(ikl,k).lt.epsn) THEN |
---|
459 | ! #hy qv__DY(ikl,k) = qv__DY(ikl,k)+qw__CM(ikl,k) |
---|
460 | ! #hy Ta__CM(ikl,k) = Ta__CM(ikl,k)-qw__CM(ikl,k)*Lv_Cpd |
---|
461 | ! #hy qwd_CM(ikl,k)= qwd_CM(ikl,k)-qw__CM(ikl,k) |
---|
462 | ! #hy qw__CM(ikl,k) = 0.0 |
---|
463 | ! #hy END IF |
---|
464 | |
---|
465 | ! #hy IF (qr__CM(ikl,k).lt.epsn) THEN |
---|
466 | ! #hy qv__DY(ikl,k) = qv__DY(ikl,k)+qr__CM(ikl,k) |
---|
467 | ! #hy Ta__CM(ikl,k) = Ta__CM(ikl,k)-qr__CM(ikl,k)*Lv_Cpd |
---|
468 | ! #hy qwd_CM(ikl,k) = qwd_CM(ikl,k)-qr__CM(ikl,k) |
---|
469 | ! #hy qr__CM(ikl,k) = 0.0 |
---|
470 | ! #hy END IF |
---|
471 | |
---|
472 | ! #hy IF (qi__CM(ikl,k).lt.epsn.or.CCNiCM(ikl,k).lt.un_1) THEN |
---|
473 | ! #hy qv__DY(ikl,k) = qv__DY(ikl,k)+qi__CM(ikl,k) |
---|
474 | ! #hy Ta__CM(ikl,k) = Ta__CM(ikl,k)-qi__CM(ikl,k)*Ls_Cpd |
---|
475 | ! #hy qid_CM(ikl,k) = qid_CM(ikl,k)-qi__CM(ikl,k) |
---|
476 | ! #hy qi__CM(ikl,k) = 0.0 |
---|
477 | ! #hy CCNiCM(ikl,k) = 0.0 |
---|
478 | ! #hy END IF |
---|
479 | |
---|
480 | ! #hy IF (qs__CM(ikl,k).lt.epsn) THEN |
---|
481 | ! #hy qv__DY(ikl,k) = qv__DY(ikl,k)+qs__CM(ikl,k) |
---|
482 | ! #hy Ta__CM(ikl,k) = Ta__CM(ikl,k)-qs__CM(ikl,k)*Ls_Cpd |
---|
483 | ! #hy qid_CM(ikl,k) = qid_CM(ikl,k)-qs__CM(ikl,k) |
---|
484 | ! #hy qs__CM(ikl,k) = 0.0 |
---|
485 | ! #hy END IF |
---|
486 | ! #hy END DO |
---|
487 | |
---|
488 | ! #hy ELSE |
---|
489 | |
---|
490 | DO k=mz1_CM,mzp |
---|
491 | |
---|
492 | Qw0_OK = max(zer0,sign(un_1,epsn-qw__CM(ikl,k)))*qw__CM(ikl,k) |
---|
493 | qw__CM(ikl,k) = qw__CM(ikl,k) -Qw0_OK |
---|
494 | qwd_CM(ikl,k) = qwd_CM(ikl,k) -Qw0_OK |
---|
495 | qv__DY(ikl,k) = qv__DY(ikl,k) +Qw0_OK |
---|
496 | Ta__CM(ikl,k) = Ta__CM(ikl,k) -Qw0_OK*Lv_Cpd |
---|
497 | |
---|
498 | Qr0_OK = max(zer0,sign(un_1,epsn-qr__CM(ikl,k)))*qr__CM(ikl,k) |
---|
499 | qr__CM(ikl,k) = qr__CM(ikl,k) -Qr0_OK |
---|
500 | qwd_CM(ikl,k) = qwd_CM(ikl,k) -Qr0_OK |
---|
501 | qv__DY(ikl,k) = qv__DY(ikl,k) +Qr0_OK |
---|
502 | Ta__CM(ikl,k) = Ta__CM(ikl,k) -Qr0_OK*Lv_Cpd |
---|
503 | |
---|
504 | Qi0qOK = max(zer0,sign(un_1,epsn-qi__CM(ikl,k))) |
---|
505 | Ci0cOK = max(zer0,sign(un_1,un_1-CCNiCM(ikl,k))) |
---|
506 | |
---|
507 | Ci0_OK = max(Ci0cOK,Qi0qOK) |
---|
508 | Qi0_OK = Ci0_OK*qi__CM(ikl,k) |
---|
509 | |
---|
510 | CCNiCM(ikl,k) = Ci0_OK*CCNiCM(ikl,k) |
---|
511 | qi__CM(ikl,k) = qi__CM(ikl,k) - Qi0_OK |
---|
512 | qid_CM(ikl,k) = qid_CM(ikl,k) - Qi0_OK |
---|
513 | qv__DY(ikl,k) = qv__DY(ikl,k) + Qi0_OK |
---|
514 | Ta__CM(ikl,k) = Ta__CM(ikl,k) - Qi0_OK*Ls_Cpd |
---|
515 | |
---|
516 | Qs0_OK = max(zer0,sign(un_1,epsn-qs__CM(ikl,k)))*qs__CM(ikl,k) |
---|
517 | qs__CM(ikl,k) = qs__CM(ikl,k) -Qs0_OK |
---|
518 | qid_CM(ikl,k) = qid_CM(ikl,k) -Qs0_OK |
---|
519 | qv__DY(ikl,k) = qv__DY(ikl,k) +Qs0_OK |
---|
520 | Ta__CM(ikl,k) = Ta__CM(ikl,k) -Qs0_OK*Ls_Cpd |
---|
521 | |
---|
522 | END DO |
---|
523 | |
---|
524 | ! #hy END IF |
---|
525 | |
---|
526 | |
---|
527 | |
---|
528 | |
---|
529 | ! Initial Concentrations |
---|
530 | ! ====================== |
---|
531 | |
---|
532 | DO k=1,mzp |
---|
533 | Ta_dgC(ikl,k) = Ta__CM(ikl,k) -Tf_Sno |
---|
534 | Fletch(ikl,k) = 1.e-2*exp(-0.6*Ta_dgC(ikl,k)) ! Ice Crystals Number (Fletcher, 1962) |
---|
535 | |
---|
536 | qr___0(ikl,k) = qr__CM(ikl,k) |
---|
537 | qs___0(ikl,k) = qs__CM(ikl,k) |
---|
538 | ! #qg qg___0(ikl,k) = qg__CM(ikl,k) |
---|
539 | |
---|
540 | ! #WH IF (ikl.eq.ikl0CM(1)) THEN |
---|
541 | ! #WH qw_io0(k) = qw__CM(ikl,k) |
---|
542 | ! #WH qi_io0(k) = qi__CM(ikl,k) |
---|
543 | ! #WH END IF |
---|
544 | |
---|
545 | END DO |
---|
546 | |
---|
547 | |
---|
548 | |
---|
549 | |
---|
550 | ! Saturation Specific Humidity |
---|
551 | ! ============================ |
---|
552 | |
---|
553 | DO k=1,mzp |
---|
554 | |
---|
555 | qsiEFF(ikl,k) = RHcrit * qvsiCM(ikl,k ) ! Saturation Specific Humidity over Ice |
---|
556 | |
---|
557 | sqrrro(ikl,k) = sqrt((psa_DY(ikl )+pt__DY) &! |
---|
558 | & /(roa_DY(ikl,k )*R_DAir &! |
---|
559 | & * Ta__CM(ikl,mzp))) ! |
---|
560 | |
---|
561 | |
---|
562 | |
---|
563 | |
---|
564 | ! Hydrometeors Fall Velocities |
---|
565 | ! ============================== |
---|
566 | |
---|
567 | ! Cloud Droplets Fall Velocity (Calcul de la Vitesse Terminale Moyenne) FALL VELOCITY |
---|
568 | ! ---------------------------- |
---|
569 | |
---|
570 | ! #VW IF (qw__CM(ikl,k).ge.epsn) THEN |
---|
571 | |
---|
572 | ! #VW CCNwCM(ikl,k) = 1.2d+8 ! ASTEX case (Duynkerke et al. 1995, JAS 52, p.2763) |
---|
573 | |
---|
574 | ! #VW qwCFra = qw__CM(ikl,k) / max(CFrMIN ,CFraCM(ikl,k)) |
---|
575 | ! #VW dwTUR4 = 4.5 *qwTURB *qwTURB |
---|
576 | ! #VW dwTUR1 = 12.5 *qwTURB *qwTURB |
---|
577 | ! #VW dwTURi = qwCFra * roa_DY(ikl,k) & |
---|
578 | ! #VW& * 6.0d+0/(piNmbr*CCNwCM(ikl,k)*exp(dwTUR4)) |
---|
579 | ! #VW dwTUR5 = exp(R_5by3*log(dwTURi)) |
---|
580 | |
---|
581 | ! #VW FallVw(ikl,k) = 1.19d8* piNmbr*CCNwCM(ikl,k) *dwTUR5 & |
---|
582 | ! #VW& * exp(dwTUR1)/(24.0 *roa_DY(ikl,k) *qwCFra) |
---|
583 | ! #VW ELSE |
---|
584 | ! #VW FallVw(ikl,k) = 0.00 |
---|
585 | ! #VW END IF |
---|
586 | |
---|
587 | |
---|
588 | ! Rain Fall Velocity FALL VELOCITY |
---|
589 | ! ---------------------------- |
---|
590 | |
---|
591 | lamdaR(ikl,k) = exp(0.25*log((piNmbr*n0___r) &! Marshall-Palmer Distribution Parameter for Rain |
---|
592 | & / (roa_DY(ikl,k)*max( epsn ,qr__CM(ikl,k))))) ! Ref.: Emde and Kahlig 1989, Ann.Geoph. 7, p.407 (3) |
---|
593 | ! Note that a simplification occurs |
---|
594 | ! between the 1000. factor of rho, and rho_water=1000. |
---|
595 | |
---|
596 | ! #hy IF (qr__CM(ikl,k).gt.epsn) THEN |
---|
597 | |
---|
598 | Vr__OK = max(zer0,sign(un_1, qr__CM(ikl,k) - epsn)) ! Vr__OK = 1.0 if qr__CM(ikl,k) > epsn |
---|
599 | ! = 0.0 otherwise |
---|
600 | |
---|
601 | FallVr(ikl,k) = Vr__OK*392. *sqrrro(ikl,k) &! Terminal Fall Velocity for Rain |
---|
602 | & / exp(0.8 *log(lamdaR(ikl,k))) ! 392 = a Gamma[4+b] / 6 |
---|
603 | ! where a = 842. b = 0.8 |
---|
604 | |
---|
605 | ! #hy ELSE |
---|
606 | ! #hy FallVr(ikl,k)= 0.0 |
---|
607 | ! #hy END IF |
---|
608 | |
---|
609 | |
---|
610 | ! Snow Fall Velocity (c and d parameters: see Locatelli and Hobbs, 1974, JGR: table 1 p.2188) FALL VELOCITY |
---|
611 | ! ------------------ |
---|
612 | |
---|
613 | ! #cn n0___s = min(2.e8 & |
---|
614 | ! #cn& ,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
615 | |
---|
616 | lamdaS(ikl,k) = exp(0.25*log((0.50*piNmbr*n0___s) &! Marshall-Palmer distribution parameter for Snow |
---|
617 | & / (roa_DY(ikl,k)*max(epsn,qs__CM(ikl,k)))))! Ref.: Emde and Kahlig 1989, Ann.Geoph. 7, p.407 (3) |
---|
618 | ! Levkov et al. 1992, Cont.Atm.Phys. 65(1) p.37 (5) (rho_snow) |
---|
619 | ! Note that a partial simplification occurs |
---|
620 | ! between the 1000. factor of rho, and rho_snow=500. |
---|
621 | |
---|
622 | ! #hy IF (qs__CM(ikl,k).gt.epsn) THEN |
---|
623 | |
---|
624 | Vs__OK = max(zer0,sign(un_1, qs__CM(ikl,k) - epsn)) ! Vs__OK = 1.0 if qs__CM(ikl,k) > epsn |
---|
625 | ! = 0.0 otherwise |
---|
626 | |
---|
627 | IF (graupel_shape) THEN |
---|
628 | FallVs(ikl,k) = Vs__OK*2.19 *sqrrro(ikl,k) &! Terminal Fall Velocity for Graupellike Snow Flakes of Hexagonal Type |
---|
629 | & / exp(0.25*log(lamdaS(ikl,k))) ! 2.19 = c Gamma[4+d] / 6 |
---|
630 | ! where c = 4.836, d = 0.25 |
---|
631 | ! = 0.86 *1000.**0.25 |
---|
632 | ELSE IF (planes__shape) THEN |
---|
633 | FallVs(ikl,k) = Vs__OK*2976.*sqrrro(ikl,k) &! Terminal Fall Velocity for Unrimed Side Planes |
---|
634 | & / exp(0.99*log(lamdaS(ikl,k))) ! 2976.= c Gamma[4+d] / 6 |
---|
635 | ! where c = 755.9, d = 0.99 |
---|
636 | ! = 0.81 *1000.**0.99 |
---|
637 | |
---|
638 | ELSE IF (aggrega_shape) THEN |
---|
639 | FallVs(ikl,k) = Vs__OK*20.06*sqrrro(ikl,k) &! Terminal Fall Velocity for Aggregates of unrimed radiating assemblages |
---|
640 | & / exp(0.41*log(lamdaS(ikl,k))) ! 2976.= c Gamma[4+d] / 6 |
---|
641 | ! where c = 755.9, d = 0.41 |
---|
642 | ! = 0.69 *1000.**0.41 |
---|
643 | ELSE |
---|
644 | STOP 'Snow Particles Shape is not defined' |
---|
645 | END IF |
---|
646 | |
---|
647 | ! #hy ELSE |
---|
648 | ! #hy FallVs(ikl,k) = 0.0 ! FALL VELOCITY |
---|
649 | ! #hy END IF |
---|
650 | |
---|
651 | |
---|
652 | ! Graupel Fall Velocity |
---|
653 | ! --------------------- |
---|
654 | |
---|
655 | ! #qg IF (qg__CM(ikl,k).ge.epsn) THEN |
---|
656 | ! #qg lamdaG(ikl,k) =exp(0.250*log((piNmbr*n0___g) &! Marshall-Palmer distribution parameter for Graupel |
---|
657 | ! #qg& /(roa_DY(ikl,k)*max(epsn ,qg__CM(ikl,k))))) ! Note that a simplification occurs |
---|
658 | ! between the 1000. factor of rho, and rho_ice=1000. |
---|
659 | ! #qg FallVg(ikl,k) = 25.1 *sqrrro(ikl,k) &! 25.1 = c Gamma[4+d] / 6 |
---|
660 | ! #qg& / exp(0.57*log(lamdaG(ikl,k))) ! where c = 4.836 = 1.10 *1000.**0.57 and d = 0.57 |
---|
661 | ! ! Hexagonal Graupel, Locatelli and Hobbs, 1974, JGR: table 1 p.2188: |
---|
662 | |
---|
663 | ! #qg ELSE |
---|
664 | ! #qg FallVg(ikl,k) = 0.0 |
---|
665 | ! #qg lamdaG(ikl,k) = 0.0 |
---|
666 | ! #qg END IF |
---|
667 | |
---|
668 | END DO |
---|
669 | |
---|
670 | |
---|
671 | !=============================================================================== CLOUD ICE PARTICLES |
---|
672 | ! ++++++++++++++++++++ |
---|
673 | ! Microphysical Processes affecting non Precipitating Cloud Particles |
---|
674 | ! =================================================================== |
---|
675 | |
---|
676 | DO k=mz1_CM,mzp |
---|
677 | |
---|
678 | |
---|
679 | ! Homogeneous Nucleation by Cloud Dropplets Solidification ! BFREWI |
---|
680 | ! Reference: Emde and Kahlig 1989, Ann.Geoph. 7, p.407 (11) ! Levkov (24) p.40 |
---|
681 | ! --------------------------------------------------------- |
---|
682 | |
---|
683 | ! #wH Flag_Ta_Neg= 0. |
---|
684 | ! #wH qw__OK = 0. |
---|
685 | |
---|
686 | ! #hy IF (Ta_dgC(ikl,k).lt.TqwFrz)THEN |
---|
687 | |
---|
688 | Flag_TqwFrz=max(zer0,-sign(un_1,Ta_dgC(ikl,k) - TqwFrz)) ! Flag_TqwFrz = 1.0 if Ta_dgC(ikl,k) < TqwFrz |
---|
689 | ! = 0.0 otherwise |
---|
690 | |
---|
691 | ! #EW IF(Flag_TqwFrz.gt.eps6) THEN |
---|
692 | ! #EW mauxEW = mphyEW(ikl) |
---|
693 | ! #EW mauxEW(01:01) = 'i' |
---|
694 | ! #EW mphyEW(ikl) = mauxEW |
---|
695 | ! #EW END IF |
---|
696 | |
---|
697 | qw__OK = qw__CM(ikl,k) * Flag_TqwFrz |
---|
698 | qi__CM(ikl,k) = qi__CM(ikl,k) + qw__OK |
---|
699 | CCNiCM(ikl,k) = CCNiCM(ikl,k) + roa_DY(ikl,k) *qw__OK/qw_VOL |
---|
700 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lc_Cpd *qw__OK |
---|
701 | |
---|
702 | ! #WQ write(6,*) 'Qihm1',qw__CM(ikl,k), & |
---|
703 | ! #WQ& ' Qi' ,qi__CM(ikl,k), & |
---|
704 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k |
---|
705 | ! #WH IF (ikl.eq.ikl0CM(1)) wihm1(k) = qw__OK |
---|
706 | |
---|
707 | qw__CM(ikl,k) = qw__CM(ikl,k) - qw__OK |
---|
708 | |
---|
709 | ! #hy END IF |
---|
710 | |
---|
711 | |
---|
712 | ! Heterogeneous Freezing of Cloud Droplets ! BNUFWI CLOUD ICE PARTICLES |
---|
713 | ! Reference: Levkov et al., 1992 (21) p.40 ! Levkov (21) p.40 ++++++++++++++++++++ |
---|
714 | ! ---------------------------------------- |
---|
715 | |
---|
716 | IF (Heter_Freezng) THEN |
---|
717 | ! #hy IF (Ta_dgC(ikl,k).lt.0.0) THEN |
---|
718 | |
---|
719 | Flag_Ta_Neg=max(zer0,-sign(un_1,Ta_dgC(ikl,k) - 0.0)) ! Flag_Ta_Neg = 1.0 if Ta_dgC(ikl,k) < 0.00dgC |
---|
720 | ! = 0.0 otherwise |
---|
721 | |
---|
722 | argEXP = min(max(ea_MIN , -Ta_dgC(ikl,k)) ,ea_MAX) |
---|
723 | BNUFWI = Flag_Ta_Neg*(exp(argEXP) -1. ) &! |
---|
724 | & * 100.* qw__CM(ikl,k) *qw_VOL |
---|
725 | BNUFWI = min( BNUFWI , qw__CM(ikl,k) ) |
---|
726 | |
---|
727 | qi__CM(ikl,k) = qi__CM(ikl,k) + BNUFWI |
---|
728 | CCNiCM(ikl,k) = CCNiCM(ikl,k) + roa_DY(ikl,k)*BNUFWI/qw_VOL |
---|
729 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lc_Cpd *BNUFWI |
---|
730 | qw__CM(ikl,k) = qw__CM(ikl,k) - BNUFWI |
---|
731 | |
---|
732 | |
---|
733 | ! Debug |
---|
734 | ! ~~~~~ |
---|
735 | ! #wH debugH( 1:35) = 'Homo+Hetero Nucleation by Droplets ' |
---|
736 | ! #wH debugH(36:70) = 'Solidification (BFREWI+BNUFWI) ' |
---|
737 | ! #wH proc_1 = 'BFREWI ' |
---|
738 | ! #wH procv1 = Flag_TqwFrz |
---|
739 | ! #wH proc_2 = 'BNUFWI ' |
---|
740 | ! #wH procv2 = BNUFWI |
---|
741 | ! #wH proc_3 = ' ' |
---|
742 | ! #wH procv3 = 0. |
---|
743 | ! #wH proc_4 = ' ' |
---|
744 | ! #wH procv4 = 0. |
---|
745 | ! #wh include 'CMiPhy_Debug.h' |
---|
746 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
747 | ! #wH& debugV(k,01) = qw__OK+BNUFWI |
---|
748 | |
---|
749 | ! #hy END IF |
---|
750 | END IF |
---|
751 | |
---|
752 | |
---|
753 | !=============================================================================== CLOUD ICE PARTICLES |
---|
754 | ! ++++++++++++++++++++ |
---|
755 | ! Homogeneous Sublimation ! XXXXXX |
---|
756 | ! Reference: Emde and Kahlig 1989, Ann.Geoph. 7, p.407 (12) ! Levkov |
---|
757 | ! --------------------------------------------------------- |
---|
758 | |
---|
759 | ! #EW IF (Flag_TqwFrz.gt.eps6) THEN |
---|
760 | ! #EW mauxEW = mphyEW(ikl) |
---|
761 | ! #EW mauxEW(02:02) = 'I' |
---|
762 | ! #EW mphyEW(ikl) = mauxEW |
---|
763 | ! #EW END IF |
---|
764 | |
---|
765 | IF (Homog_Sublima) THEN |
---|
766 | dqvSUB = (qv__DY(ikl,k)-qsiEFF(ikl,k)) &! |
---|
767 | & /(1.00 +1.733e7*qsiEFF(ikl,k) &! 1.733e7=Ls*Ls*0.622/Cpa/Ra with Ls = 2833600 J/kg |
---|
768 | & /(Ta__CM(ikl,k)*Ta__CM(ikl,k))) ! |
---|
769 | |
---|
770 | dqvSUB = Flag_TqwFrz*max(zer0,dqvSUB) |
---|
771 | dqvDUM = dqvSUB |
---|
772 | |
---|
773 | qi__CM(ikl,k) = qi__CM(ikl,k) + dqvDUM |
---|
774 | qid_CM(ikl,k) = qid_CM(ikl,k) + dqvDUM |
---|
775 | ! CCNiCM(ikl,k) : NO VARIATION |
---|
776 | qv__DY(ikl,k) = qv__DY(ikl,k) - dqvDUM |
---|
777 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Ls_Cpd * dqvDUM |
---|
778 | |
---|
779 | ! Full Debug |
---|
780 | ! ~~~~~~~~~~ |
---|
781 | ! #WQ write(6,*) 'Qihm2',dqvDUM, & |
---|
782 | ! #WQ& ' Qi' ,qi__CM(ikl,k), & |
---|
783 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k |
---|
784 | ! #WH if (ikl.eq.ikl0CM(1)) wihm2(k) = dqvDUM |
---|
785 | |
---|
786 | ! Debug |
---|
787 | ! ~~~~~ |
---|
788 | ! #wH debugH( 1:35) = 'Emde and Kahlig: Homogeneous Sublim' |
---|
789 | ! #wH debugH(36:70) = 'ation ' |
---|
790 | ! #wH proc_1 = 'dQv g/kg' |
---|
791 | ! #wH procv1 = dqvDUM |
---|
792 | ! #wH proc_2 = ' ' |
---|
793 | ! #wH procv2 = 0. |
---|
794 | ! #wH proc_3 = ' ' |
---|
795 | ! #wH procv3 = 0. |
---|
796 | ! #wH proc_4 = 'CCNI/1.e15' |
---|
797 | ! #wH procv4 = CCNiCM(ikl,k)*1.e-18 |
---|
798 | ! #wh include 'CMiPhy_Debug.h' |
---|
799 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
800 | ! #wH& debugV(k,01) = dqvDUM + debugV(k,01) |
---|
801 | |
---|
802 | END IF |
---|
803 | END DO |
---|
804 | |
---|
805 | |
---|
806 | |
---|
807 | |
---|
808 | !=============================================================================== CLOUD ICE PARTICLES, MEYERS |
---|
809 | ! ++++++++++++++++++++ |
---|
810 | ! Nucleation I: Deposition & Condensation-Freezing Nucleat. |
---|
811 | ! Source : Water Vapor ! BNUCVI |
---|
812 | ! Reference: Meyers et al., 1992, JAM 31, (2.4) p.712 ! Levkov (20) p.40 |
---|
813 | ! ----------------------------------------------------------- |
---|
814 | |
---|
815 | IF (Meyers) THEN |
---|
816 | DO k=mz1_CM,mzp |
---|
817 | |
---|
818 | ! #wH NuIdOK = 0. |
---|
819 | ! #wH CCNiId = 0. |
---|
820 | ! #wH BNUCVI = 0. |
---|
821 | ! #wH BSPRWI = 0. |
---|
822 | ! #wH BHAMWI = 0. |
---|
823 | |
---|
824 | ! #hy IF (Ta_dgC(ikl,k).lt.T_NuId) THEN |
---|
825 | Flag_T_NuId=max(zer0,-sign(un_1,Ta_dgC(ikl,k) - T_NuId))! Flag_T_NuId = 1.0 if Ta_dgC(ikl,k) < T_NuId |
---|
826 | ! ! = 0.0 otherwise |
---|
827 | |
---|
828 | dqvDUM = qv__DY(ikl,k) - qsiEFF(ikl,k) ! Sursaturat. |
---|
829 | |
---|
830 | ! #hy IF (dqvDUM.gt.0.) THEN |
---|
831 | SatiOK = max(zer0,sign(un_1,dqvDUM)) ! SatiOK = 1.0 if qv__DY(ikl,k) > qsiEFF |
---|
832 | ! ! = 0.0 otherwise |
---|
833 | dqvDUM = max(zer0, dqvDUM) |
---|
834 | |
---|
835 | NuIdOK = Flag_T_NuId * SatiOK |
---|
836 | |
---|
837 | SSat_I = 1.e2*dqvDUM / qsiEFF(ikl,k) ! Sursaturat.%I |
---|
838 | SSat_I = min(SSat_I,SSImax) ! |
---|
839 | CCNiId = 1.0e3 * exp(a_NuId+b_NuId*SSat_I) ! Meyers et al. 1992 JAM, 2.4 |
---|
840 | CCNiId = max(CCNiId-CCNiCM(ikl,k),zer0) &! |
---|
841 | & * NuIdOK ! |
---|
842 | CCNiCM(ikl,k) = CCNiId+CCNiCM(ikl,k) ! |
---|
843 | dqiDUM = 1.e-15* CCNiId/roa_DY(ikl,k) ! 1.e-15 = 0.001 * Initial Ice Crystal Mass |
---|
844 | dqiDUM = min(dqiDUM , dqvDUM) |
---|
845 | qi__CM(ikl,k) = qi__CM(ikl,k) + dqiDUM |
---|
846 | qid_CM(ikl,k) = qid_CM(ikl,k) + dqiDUM |
---|
847 | qv__DY(ikl,k) = qv__DY(ikl,k) - dqiDUM |
---|
848 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + dqiDUM*Ls_Cpd |
---|
849 | BNUCVI = dqiDUM |
---|
850 | |
---|
851 | ! #hy END IF |
---|
852 | ! #hy END IF |
---|
853 | |
---|
854 | |
---|
855 | ! Nucleation I: Contact -Freezing Nucleat. CLOUD ICE PARTICLES, MEYERS |
---|
856 | ! Source : Cloud Dropplets ! BSPRWI ++++++++++++++++++++ |
---|
857 | ! Reference: Meyers et al., 1992, JAM 31, (2.6) p.713 ! Levkov (20) p.40 |
---|
858 | ! ----------------------------------------------------------- |
---|
859 | |
---|
860 | ! #wH CCNiIc = 0. |
---|
861 | ! #wH dqiDUM = 0. |
---|
862 | |
---|
863 | ! #hy IF (qw__CM(ikl,k).gt.0.) THEN |
---|
864 | qw__OK = max(zer0,sign(un_1,qw__CM(ikl,k))) ! qw__OK = 1.0 if qw__CM(ikl,k) > 0. |
---|
865 | ! = 0.0 otherwise |
---|
866 | |
---|
867 | ! #hy IF (Ta_dgC(ikl,k).lt.T_NuIc) THEN |
---|
868 | Flag_T_NuIc = max(zer0,-sign(un_1,Ta_dgC(ikl,k) - T_NuIc)) |
---|
869 | ! Flag_T_NuIc = 1.0 if Ta_dgC(ikl,k) < T_NuIc |
---|
870 | ! = 0.0 otherwise |
---|
871 | |
---|
872 | Flag___NuIc = Flag_T_NuIc * qw__OK |
---|
873 | |
---|
874 | CCNiIc = 1.e3 * Flag___NuIc &! Contact-Freez |
---|
875 | & * exp(a_NuIc &! Potent.Nuclei |
---|
876 | & -b_NuIc &! Meyers et al. |
---|
877 | & *Ta_dgC(ikl,k)) ! 1992 JAM, 2.6 |
---|
878 | rad_ww = (1.e3 * roa_DY(ikl,k) &! Drop. Radius |
---|
879 | & * qw__CM(ikl,k) &! |
---|
880 | & * .2e-11 ) ** 0.33 ! |
---|
881 | ! .2e-11 = 1. / (1.2e+8 * 1.e3 * 4.19) |
---|
882 | ! CCNwCM (ASTEX) ro_w 4 pi /3 |
---|
883 | CCNiIc = 603.2e+3 * CCNiIc * rad_ww &! Levkov et al. |
---|
884 | & * roa_DY(ikl,k) ! 1992 CAM,(23) |
---|
885 | ! 603.2e3 = 4.0e-7 * 4 pi * 1.2e+8 * 1.e3 |
---|
886 | ! DFar CCNwCM fact(rolv) |
---|
887 | CCNiCM(ikl,k) = CCNiCM(ikl,k) &! |
---|
888 | & + CCNiIc ! |
---|
889 | dqiDUM = 1.e-15 * CCNiIc/roa_DY(ikl,k) |
---|
890 | ! 1.e-15 = 1.0e-3 * Ice Crystal Mass |
---|
891 | dqiDUM = min( qw__CM(ikl,k) , dqiDUM) |
---|
892 | qi__CM(ikl,k) = qi__CM(ikl,k) + dqiDUM |
---|
893 | qw__CM(ikl,k) = qw__CM(ikl,k) - dqiDUM |
---|
894 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + dqiDUM*Lc_Cpd |
---|
895 | BSPRWI = dqiDUM |
---|
896 | |
---|
897 | ! #hy END IF |
---|
898 | ! #hy END IF |
---|
899 | |
---|
900 | |
---|
901 | ! Nucleation II: Hallett-Mossop Ice-Multiplication Process ! BSPRWI CLOUD ICE PARTICLES, MEYERS |
---|
902 | ! Reference: Levkov et al., 1992, Contr.Atm.Ph.65,(25) p.40 ! Levkov (25) p.40 ++++++++++++++++++++ |
---|
903 | ! ----------------------------------------------------------- |
---|
904 | |
---|
905 | IF (HalMos) THEN |
---|
906 | ! #hy IF (Ta_dgC(ikl,k).lt.TmaxHM.AND. & |
---|
907 | ! #hy& Ta_dgC(ikl,k).gt.TminHM.AND. & |
---|
908 | ! #hy& wa__DY(ikl,k).gt.wa__HM ) THEN |
---|
909 | Flag_TmaxHM = max(zer0,-sign(un_1,Ta_dgC(ikl,k) - TmaxHM)) |
---|
910 | ! Flag_TmaxHM = 1.0 if Ta_dgC(ikl,k) < TmaxHM |
---|
911 | ! = 0.0 otherwise |
---|
912 | |
---|
913 | Flag_TminHM = max(zer0, sign(un_1,Ta_dgC(ikl,k) - TminHM)) |
---|
914 | ! Flag_TminHM = 1.0 if Ta_dgC(ikl,k) > TminHM |
---|
915 | ! = 0.0 otherwise |
---|
916 | |
---|
917 | Flag_wa__HM = max(zer0, sign(un_1,wa__DY(ikl,k) - wa__HM)) |
---|
918 | ! Flag_wa__HM = 1.0 if wa__DY(ikl,k) > wa__HM |
---|
919 | ! = 0.0 otherwise |
---|
920 | |
---|
921 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(Ta_dgC(ikl,k),0.))) |
---|
922 | |
---|
923 | SplinJ = 1.358e12 *qw__CM(ikl,k) &! |
---|
924 | & *n0___s /(lamdaS(ikl,k)**.33) |
---|
925 | ! 1.358e12=pi *Gamma(3.5) *g *ro_s /(3 *Cd *4.19e-12) |
---|
926 | ! [=3.14 *3.3233625 *9.81*0.1 /(3 *0.6 *4.19e-12)] |
---|
927 | SplinP = 0.003 * (1. - 0.05 *SplinJ) * Flag_TmaxHM &! |
---|
928 | & * Flag_TminHM * Flag_wa__HM ! |
---|
929 | SplinP = max(zer0, SplinP) |
---|
930 | |
---|
931 | dqiDUM = 1.e-15 * SplinP / roa_DY(ikl,k) ! 1.e-15 = 1.0e-3 * Ice Crystal Mass |
---|
932 | SplinP = (min(1.0,qs__CM(ikl,k)/max(dqiDUM,epsn))) *SplinP |
---|
933 | CCNiCM(ikl,k) = CCNiCM(ikl,k) +SplinP |
---|
934 | dqiDUM = min(qs__CM(ikl,k), dqiDUM) |
---|
935 | qi__CM(ikl,k) = qi__CM(ikl,k) + dqiDUM |
---|
936 | qid_CM(ikl,k) = qid_CM(ikl,k) + dqiDUM |
---|
937 | qs__CM(ikl,k) = qs__CM(ikl,k) - dqiDUM |
---|
938 | BHAMWI = dqiDUM |
---|
939 | ! #hy END IF |
---|
940 | END IF |
---|
941 | |
---|
942 | |
---|
943 | ! Debug |
---|
944 | ! ~~~~~ |
---|
945 | ! #wH debugH( 1:35) = 'Meyers: Nucl. I, Depot & Cond-Freez' |
---|
946 | ! #wH debugH(36:70) = 'Nucl. / Freez / Nucl. II / Bergeron' |
---|
947 | ! #wH proc_1 = 'dQi1 Meyer' |
---|
948 | ! #wH procv1 = BNUCVI |
---|
949 | ! #wH proc_2 = 'dQi2 Meyer' |
---|
950 | ! #wH procv2 = BSPRWI |
---|
951 | ! #wH proc_3 = 'dQi Ha-Mos' |
---|
952 | ! #wH procv3 = BHAMWI |
---|
953 | ! #wH proc_4 = ' ' |
---|
954 | ! #wH procv4 = 0. |
---|
955 | ! #wh include 'CMiPhy_Debug.h' |
---|
956 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
957 | ! #wH& debugV(k,02) = BNUCVI + BSPRWI + BHAMWI |
---|
958 | |
---|
959 | END DO |
---|
960 | |
---|
961 | |
---|
962 | |
---|
963 | |
---|
964 | !=============================================================================== |
---|
965 | |
---|
966 | ELSE |
---|
967 | |
---|
968 | !=============================================================================== CLOUD ICE PARTICLES, EMDE & KAHLIG |
---|
969 | ! ++++++++++++++++++++ |
---|
970 | ! Ice Crystals Nucleation Process between 0.C and -35.C |
---|
971 | ! (each crystal has a mass equal or less than 10d-12 kg) |
---|
972 | ! Reference: Emde and Kahlig 1989, Ann.Geoph. 7, p.408 (13) |
---|
973 | ! --------------------------------------------------------- |
---|
974 | |
---|
975 | DO k=mz1_CM,mzp |
---|
976 | |
---|
977 | ! #wH qi_Nu1 = 0. |
---|
978 | ! #wH qi_Nu2 = 0. |
---|
979 | ! #wH qi_Nuc = 0. |
---|
980 | |
---|
981 | ! #hy IF (Ta_dgC(ikl,k).gt.TqwFrz) THEN |
---|
982 | Flag_TqwFrz = max(zer0, sign(un_1,Ta_dgC(ikl,k) - TqwFrz)) |
---|
983 | ! Flag_TqwFrz = 1.0 if Ta_dgC(ikl,k) > TqwFrz |
---|
984 | ! = 0.0 otherwise |
---|
985 | |
---|
986 | ! #hy IF (Ta_dgC(ikl,k).lt.0.e0 ) THEN |
---|
987 | Flag_Ta_Neg = max(zer0,-sign(un_1,Ta_dgC(ikl,k) )) |
---|
988 | ! Flag_Ta_Neg = 1.0 if Ta_dgC(ikl,k) < 0.e0 |
---|
989 | ! = 0.0 otherwise |
---|
990 | |
---|
991 | ! #hy IF (qv__DY(ikl,k).gt.qsiEFF(ikl,k)) THEN |
---|
992 | SatiOK = max(zer0, sign(un_1,qv__DY(ikl,k) - qsiEFF(ikl,k))) |
---|
993 | ! SatiOK = 1.0 if qv__DY(ikl,k) > qsiEFF(ikl,k) |
---|
994 | ! = 0.0 otherwise |
---|
995 | |
---|
996 | FlagNu = Flag_TqwFrz * Flag_Ta_Neg * SatiOK |
---|
997 | |
---|
998 | ! #EW IF(FlagNu.gt.eps6) THEN |
---|
999 | ! #EW mauxEW = mphyEW(ikl) |
---|
1000 | ! #EW mauxEW(03:03) = 'I' |
---|
1001 | ! #EW mphyEW(ikl) = mauxEW |
---|
1002 | ! #EW END IF |
---|
1003 | |
---|
1004 | qi_Nu1 = FlagNu * 1.d-15 * Fletch(ikl,k) /roa_DY(ikl,k) |
---|
1005 | ! qi_Nu1 : amount of nucleated ice crystals (first condition) |
---|
1006 | |
---|
1007 | qi_Nu1 = qi_Nu1*max(zer0,sign(un_1,qi_Nu1-qi__CM(ikl,k))) |
---|
1008 | |
---|
1009 | qi_Nu2 = ( qv__DY(ikl,k)-qsiEFF(ikl,k)) & |
---|
1010 | & /(1.0d0+1.733d7*qsiEFF(ikl,k) & |
---|
1011 | & /(Ta__CM(ikl,k)*Ta__CM(ikl,k))) |
---|
1012 | qi_Nu2 = FlagNu * max(zer0 ,qi_Nu2) ! amount of nucleated ice crystals (second condition) |
---|
1013 | |
---|
1014 | qi_Nuc = min(qi_Nu1,qi_Nu2) |
---|
1015 | |
---|
1016 | qi__CM(ikl,k) = qi__CM(ikl,k) + qi_Nuc |
---|
1017 | qid_CM(ikl,k) = qid_CM(ikl,k) + qi_Nuc |
---|
1018 | CCNiCM(ikl,k) = CCNiCM(ikl,k) + roa_DY(ikl,k) *qi_Nuc & |
---|
1019 | & *1.e15 |
---|
1020 | qv__DY(ikl,k) = qv__DY(ikl,k) - qi_Nuc |
---|
1021 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Ls_Cpd *qi_Nuc |
---|
1022 | |
---|
1023 | ! Full Debug |
---|
1024 | ! ~~~~~~~~~~ |
---|
1025 | ! #WQ write(6,*) 'QiCnd',qi_Nuc, & |
---|
1026 | ! #WQ& ' Qi' ,qi__CM(ikl,k), & |
---|
1027 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k |
---|
1028 | ! #WH IF (ikl.eq.ikl0CM(1)) wicnd(k) = qi_Nuc |
---|
1029 | |
---|
1030 | ! Debug |
---|
1031 | ! ~~~~~ |
---|
1032 | ! #wH debugH( 1:35) = 'Emde and Kahlig: Ice Crystals Nucle' |
---|
1033 | ! #wH debugH(36:70) = 'ation Process between 0.C and -35.C' |
---|
1034 | ! #wH proc_1 = 'Qicnd1 ' |
---|
1035 | ! #wH procv1 = qi_Nu1 |
---|
1036 | ! #wH proc_2 = 'Qicnd2 ' |
---|
1037 | ! #wH procv2 = qi_Nu2 |
---|
1038 | ! #wH proc_3 = 'Qicnd g/kg' |
---|
1039 | ! #wH procv3 = qi_Nuc |
---|
1040 | ! #wH proc_4 = ' ' |
---|
1041 | ! #wH procv4 = 0. |
---|
1042 | ! #wh include 'CMiPhy_Debug.h' |
---|
1043 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1))& |
---|
1044 | ! #wH& debugV(k,02) = qi_Nuc |
---|
1045 | |
---|
1046 | |
---|
1047 | ! #hy END IF |
---|
1048 | ! #hy END IF |
---|
1049 | ! #hy END IF |
---|
1050 | |
---|
1051 | |
---|
1052 | END DO |
---|
1053 | |
---|
1054 | END IF |
---|
1055 | |
---|
1056 | |
---|
1057 | |
---|
1058 | |
---|
1059 | !============================================================================== CLOUD PARTICLES, MIXED PHASE |
---|
1060 | ! +++++++++++++++ |
---|
1061 | ! Bergeron Process (water vapor diffusion-deposition on ice crystals) |
---|
1062 | ! Reference: Koenig 1971, J.A.S. 28, p.235 |
---|
1063 | ! Emde and Kahlig 1989, Ann.Geoph. 7, p.408 (14) |
---|
1064 | ! --------------------------------------------------------- |
---|
1065 | |
---|
1066 | IF (.NOT.AUTO_i_LevkXX) THEN |
---|
1067 | |
---|
1068 | DO k=mz1_CM,mzp |
---|
1069 | |
---|
1070 | ! #wH qi0_OK = 0. |
---|
1071 | ! #wH qxBerg = 0. |
---|
1072 | ! #wH qwBerg = 0. |
---|
1073 | |
---|
1074 | ! #hy IF (qi__CM(ikl,k).gt.epsn |
---|
1075 | ! #hy& .AND. Ta_dgC(ikl,k).lt.0.e0) THEN |
---|
1076 | |
---|
1077 | qi0_OK = max(zer0, sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
1078 | ! qi0_OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
1079 | ! = 0.0 otherwise |
---|
1080 | |
---|
1081 | Flag_Ta_Neg = max(zer0,-sign(un_1,Ta_dgC(ikl,k) )) |
---|
1082 | ! Flag_Ta_Neg = 1.0 if Ta_dgC(ikl,k) < 0.e0 |
---|
1083 | ! = 0.0 otherwise |
---|
1084 | |
---|
1085 | qi0_OK = Flag_Ta_Neg * qi0_OK |
---|
1086 | |
---|
1087 | ! #EW IF(qi0_OK.gt.eps6) THEN |
---|
1088 | ! #EW mauxEW = mphyEW(ikl) |
---|
1089 | ! #EW mauxEW(04:04) = 'i' |
---|
1090 | ! #EW mphyEW(ikl) = mauxEW |
---|
1091 | ! #EW END IF |
---|
1092 | |
---|
1093 | i_Berg = abs(Ta_dgC(ikl,k)-un_1) |
---|
1094 | i_Berg = min(i_Berg,31) |
---|
1095 | i_Berg = max(i_Berg, 1) |
---|
1096 | a1Berg = aa1(i_Berg) |
---|
1097 | a2Berg = aa2(i_Berg) |
---|
1098 | |
---|
1099 | a0Berg = 1.d+3*roa_DY(ikl,k)*qi__CM(ikl,k) / Fletch(ikl,k) |
---|
1100 | afBerg =(a1Berg *(1.0-a2Berg) * dt__CM &! analytical integration of (14) p.408 |
---|
1101 | & +a0Berg**(1.0-a2Berg))**(1.0/(1.0-a2Berg)) ! Emde and Kahlig 1989, Ann.Geoph. 7 |
---|
1102 | qxBerg =(1.d-3*Fletch(ikl,k)/roa_DY(ikl,k)) &! |
---|
1103 | & *(afBerg-a0Berg) ! |
---|
1104 | qxBerg = max(zer0,qxBerg) |
---|
1105 | |
---|
1106 | qwBerg = max(zer0,qw__CM(ikl,k)) ! qwBerg : to avoid the use of qwd_CM < 0. |
---|
1107 | |
---|
1108 | qxBerg = qi0_OK*min(qwBerg,qxBerg) |
---|
1109 | qi__CM(ikl,k)= qi__CM(ikl,k) +qxBerg |
---|
1110 | ! CCNiCM(ikl,k):NO VARIATION |
---|
1111 | |
---|
1112 | qw__CM(ikl,k)= qw__CM(ikl,k) -qxBerg |
---|
1113 | Ta__CM(ikl,k)= Ta__CM(ikl,k)+Lc_Cpd *qxBerg |
---|
1114 | |
---|
1115 | ! Full Debug |
---|
1116 | ! ~~~~~~~~~~ |
---|
1117 | ! #WQ write(6,*) 'QiDep',qxBerg, |
---|
1118 | ! #WQ& ' Qi' ,qi__CM(ikl,k), |
---|
1119 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k |
---|
1120 | ! #WH IF (ikl.eq.ikl0CM(1)) widep(k)= qxBerg |
---|
1121 | |
---|
1122 | ! Debug |
---|
1123 | ! ~~~~~ |
---|
1124 | ! #wH debugH( 1:35) = 'Bergeron Process (water vapor diffu' |
---|
1125 | ! #wH debugH(36:70) = 'sion-deposition on ice crystals) ' |
---|
1126 | ! #wH proc_1 = 'qi0_OK ICE' |
---|
1127 | ! #wH procv1 = qi0_OK |
---|
1128 | ! #wH proc_2 = 'Qicnd g/kg' |
---|
1129 | ! #wH procv2 = qwBerg |
---|
1130 | ! #wH proc_3 = 'Qidep g/kg' |
---|
1131 | ! #wH procv3 = qxBerg |
---|
1132 | ! #wH proc_4 = ' ' |
---|
1133 | ! #wH procv4 = 0. |
---|
1134 | ! #wh include 'CMiPhy_Debug.h' |
---|
1135 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1136 | ! #wH& debugV(k,02) = qxBerg + debugV(k,02) |
---|
1137 | |
---|
1138 | |
---|
1139 | ! #hy END IF |
---|
1140 | |
---|
1141 | END DO |
---|
1142 | |
---|
1143 | END IF |
---|
1144 | |
---|
1145 | |
---|
1146 | |
---|
1147 | |
---|
1148 | !=============================================================================== CLOUD ICE PARTICLES |
---|
1149 | |
---|
1150 | ! Ice Crystals Sublimation ! BDEPVI |
---|
1151 | ! Reference: Emde and Kahlig, 1989 p.408 (15) ! Levkov (27) p.40 |
---|
1152 | ! ------------------------------------------- |
---|
1153 | |
---|
1154 | DO k=mz1_CM,mzp |
---|
1155 | |
---|
1156 | ! #wH BDEPVI = 0. |
---|
1157 | |
---|
1158 | ! #hy IF (qsiEFF(ikl,k).gt.qv__DY(ikl,k)) THEN |
---|
1159 | |
---|
1160 | dqsiqv = qsiEFF(ikl,k) - qv__DY(ikl,k) |
---|
1161 | ! #pp Flag_SUBSat = max(zer0,sign(un_1,dqsiqv)) |
---|
1162 | ! Flag_SUBSat = 1.0 if qsiEFF(ikl,k) > qv__DY(ikl,k) |
---|
1163 | ! = 0.0 otherwise |
---|
1164 | |
---|
1165 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
1166 | |
---|
1167 | qi0_OK = max(zer0,sign(un_1, qi__CM(ikl,k) - epsn)) |
---|
1168 | ! qi0_OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
1169 | ! = 0.0 otherwise |
---|
1170 | |
---|
1171 | Flag_Sublim = qi0_OK & |
---|
1172 | ! #pp& * Flag_SUBSat & |
---|
1173 | & + 0.0 |
---|
1174 | |
---|
1175 | ! #EW IF(Flag_Sublim.gt.eps6) THEN |
---|
1176 | ! #EW mauxEW = mphyEW(ikl) |
---|
1177 | ! #EW mauxEW(05:05) = 'V' |
---|
1178 | ! #EW mphyEW(ikl) = mauxEW |
---|
1179 | ! #EW END IF |
---|
1180 | |
---|
1181 | RH_Ice = qv__DY(ikl,k) / qsiEFF(ikl,k) |
---|
1182 | DenDi1 = 6.959d+11 / (Ta__CM(ikl,k)*Ta__CM(ikl,k)) |
---|
1183 | ! 6.959e+11 |
---|
1184 | ! = [Ls=2833600J/kg] * Ls / [kT=0.025W/m/K] / [Rv=461.J/kg/K] |
---|
1185 | ! kT: Air thermal Conductivity |
---|
1186 | DenDi2 = 1.0d0 / (1.875d-2*roa_DY(ikl,k)*qsiEFF(ikl,k)) |
---|
1187 | ! 1.875d-5: Water Vapor Diffusivity in Air |
---|
1188 | BDEPVI = dt__CM *(1.-RH_Ice)*4.0*Di_Hex *Fletch(ikl,k) &! |
---|
1189 | & /(DenDi1+DenDi2) |
---|
1190 | BDEPVI = max(BDEPVI, -qv__DY(ikl,k)) ! H2O deposit.limit = H2O content |
---|
1191 | BDEPVI = min(BDEPVI, qi__CM(ikl,k)) ! qi sublim. limit = qi content |
---|
1192 | BDEPVI = min(BDEPVI, dqsiqv ) &! qi sublim. limit = Saturation |
---|
1193 | & * Flag_Sublim |
---|
1194 | |
---|
1195 | qi__CM(ikl,k) = qi__CM(ikl,k) - BDEPVI |
---|
1196 | qid_CM(ikl,k) = qid_CM(ikl,k) - BDEPVI |
---|
1197 | qv__DY(ikl,k) = qv__DY(ikl,k) + BDEPVI |
---|
1198 | Ta__CM(ikl,k) = Ta__CM(ikl,k) - Ls_Cpd *BDEPVI |
---|
1199 | |
---|
1200 | ! Full Debug |
---|
1201 | ! ~~~~~~~~~~ |
---|
1202 | ! #WQ write(6,*) 'QiSub', BDEPVI, & |
---|
1203 | ! #WQ& ' Qi' , qi__CM(ikl,k), & |
---|
1204 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k |
---|
1205 | ! #WH IF (ikl.eq.ikl0CM(1)) wisub(k) = BDEPVI |
---|
1206 | |
---|
1207 | ! #hy END IF |
---|
1208 | ! #hy END IF |
---|
1209 | |
---|
1210 | ! Debug |
---|
1211 | ! ~~~~~ |
---|
1212 | ! #wH debugH( 1:35) = 'Emde and Kahlig: Ice Crystals Subli' |
---|
1213 | ! #wH debugH(36:70) = 'mation ' |
---|
1214 | ! #wH proc_1 = 'Qisub g/kg' |
---|
1215 | ! #wH procv1 = BDEPVI |
---|
1216 | ! #wH proc_2 = 'R.Hum I[%]' |
---|
1217 | ! #wH procv2 = 0.1 * RH_Ice |
---|
1218 | ! #wH proc_3 = ' ' |
---|
1219 | ! #wH procv3 = 0. |
---|
1220 | ! #wH proc_4 = ' ' |
---|
1221 | ! #wH procv4 = 0. |
---|
1222 | ! #wh include 'CMiPhy_Debug.h' |
---|
1223 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1224 | ! #wH& debugV(k,03) = -BDEPVI |
---|
1225 | |
---|
1226 | END DO |
---|
1227 | |
---|
1228 | DO k=mz1_CM,mzp |
---|
1229 | IF (qi__CM(ikl,k).le.0.e0) THEN |
---|
1230 | qi__CM(ikl,k) = 0.e0 |
---|
1231 | CCNiCM(ikl,k) = 0.e0 |
---|
1232 | END IF |
---|
1233 | END DO |
---|
1234 | |
---|
1235 | |
---|
1236 | |
---|
1237 | |
---|
1238 | !=============================================================================== |
---|
1239 | |
---|
1240 | ! Ice Crystals Instantaneous Melting |
---|
1241 | ! ---------------------------------- |
---|
1242 | |
---|
1243 | DO k=mz1_CM,mzp |
---|
1244 | |
---|
1245 | ! #wH qiMELT = 0. |
---|
1246 | ! #wH CiMelt = 0. |
---|
1247 | |
---|
1248 | ! #hy IF (Ta_dgC(ikl,k).gt.0.e0)THEN |
---|
1249 | |
---|
1250 | Flag_Ta_Pos = max(zer0, sign(un_1,Ta_dgC(ikl,k) )) |
---|
1251 | ! Flag_Ta_Pos = 1.0 if Ta_dgC(ikl,k) > 0.e0 |
---|
1252 | ! = 0.0 otherwise |
---|
1253 | |
---|
1254 | ! #hy IF (qi__CM(ikl,k).gt.epsn)THEN |
---|
1255 | qi0_OK = max(zer0, sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
1256 | ! qi0_OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
1257 | ! = 0.0 otherwise |
---|
1258 | |
---|
1259 | Flag_qiMELT = Flag_Ta_Pos * qi0_OK |
---|
1260 | |
---|
1261 | ! #EW IF(Flag_qiMELT .gt.eps6) THEN |
---|
1262 | ! #EW mauxEW = mphyEW(ikl) |
---|
1263 | ! #EW mauxEW(06:06) = 'w' |
---|
1264 | ! #EW mphyEW(ikl) = mauxEW |
---|
1265 | ! #EW END IF |
---|
1266 | |
---|
1267 | qxMelt = Ta_dgC(ikl,k) / Lc_Cpd |
---|
1268 | qiMELT = min(qi__CM(ikl,k) , qxMelt)*Flag_qiMELT |
---|
1269 | CiMelt = CCNiCM(ikl,k) * qiMELT & |
---|
1270 | & /max(qi__CM(ikl,k) , epsn) |
---|
1271 | qi__CM(ikl,k) = qi__CM(ikl,k) - qiMELT |
---|
1272 | CCNiCM(ikl,k) = CCNiCM(ikl,k) - CiMelt |
---|
1273 | qw__CM(ikl,k) = qw__CM(ikl,k) + qiMELT |
---|
1274 | Ta__CM(ikl,k) = Ta__CM(ikl,k) - Lc_Cpd *qiMELT |
---|
1275 | |
---|
1276 | ! Full Debug |
---|
1277 | ! ~~~~~~~~~~ |
---|
1278 | ! #WQ write(6,*) 'QiMlt',qiMELT, & |
---|
1279 | ! #WQ& ' Qi' ,qi__CM(ikl,k), & |
---|
1280 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k |
---|
1281 | ! #WH IF (ikl.eq.ikl0CM(1)) wimlt(k) = qiMELT |
---|
1282 | |
---|
1283 | ! #hy END IF |
---|
1284 | ! #hy END IF |
---|
1285 | |
---|
1286 | ! Debug |
---|
1287 | ! ~~~~~ |
---|
1288 | ! #wH debugH( 1:35) = 'Emde and Kahlig: Ice Crystals Insta' |
---|
1289 | ! #wH debugH(36:70) = 'ntaneous Melting ' |
---|
1290 | ! #wH proc_1 = 'Qimlt g/kg' |
---|
1291 | ! #wH procv1 = qiMELT |
---|
1292 | ! #wH proc_2 = 'CiMelt /e15' |
---|
1293 | ! #wH procv2 = CiMelt*1.e-18 |
---|
1294 | ! #wH proc_3 = ' ' |
---|
1295 | ! #wH procv3 = 0. |
---|
1296 | ! #wH proc_4 = ' ' |
---|
1297 | ! #wH procv4 = 0. |
---|
1298 | ! #wh include 'CMiPhy_Debug.h' |
---|
1299 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1300 | ! #wH& debugV(k,04) = -qiMELT |
---|
1301 | |
---|
1302 | END DO |
---|
1303 | |
---|
1304 | |
---|
1305 | |
---|
1306 | |
---|
1307 | !=============================================================================== CONDENSATION, Delobbe SCu |
---|
1308 | ! +++++++++++++++++++++++++ |
---|
1309 | ! Water Vapor Condensation / Evaporation (Fractional Cloudiness) |
---|
1310 | ! Reference: Laurent Delobbe Thesis (Ek &Mahrt 1991) |
---|
1311 | ! -------------------------------------------------------------- |
---|
1312 | |
---|
1313 | DO k=mz1_CM,mzp ! Zeroing needed since |
---|
1314 | CFraCM(ikl,k) = 0.0 ! a maximization process |
---|
1315 | END DO |
---|
1316 | |
---|
1317 | IF (Frac__Clouds.AND.fracSC) THEN |
---|
1318 | |
---|
1319 | DO k=mz1_CM,mzp |
---|
1320 | |
---|
1321 | ! #wH dwMesh = 0. |
---|
1322 | |
---|
1323 | ! #hy IF (Ta_dgC(ikl,k).ge.TqwFrz) THEN |
---|
1324 | |
---|
1325 | Flag_TqwFrz = max(zer0,sign(un_1,Ta_dgC(ikl,k) - TqwFrz)) |
---|
1326 | ! Flag_TqwFrz = 1.0 if Ta_dgC(ikl,k) > TqwFrz |
---|
1327 | ! = 0.0 otherwise |
---|
1328 | |
---|
1329 | t_qvqw = qv__DY(ikl,k) + qw__CM(ikl,k) ! Total Water Mixing Ratio |
---|
1330 | TLiqid = Ta__CM(ikl,k) - Lv_Cpd * qw__CM(ikl,k) ! Liquid Temperature |
---|
1331 | |
---|
1332 | ! Saturation specific humidity over water, |
---|
1333 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ corresponding to liquid temperature |
---|
1334 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1335 | pa_hPa =(psa_DY(ikl) * sigma(k) + pt__DY) * 10.0d0 ! Dudhia (1989) JAS, (B1) and (B2) p.3103 |
---|
1336 | es_hPa = 6.1078d0 * exp (ExpWat* log(WatIce /TLiqid)) &! (see also Pielke (1984), p.234, and |
---|
1337 | & * exp (ExpWa2*(un_1/WatIce-un_1/TLiqid)) ! Stull (1988), p.276 |
---|
1338 | |
---|
1339 | Qsat_L = .622d0*es_hPa /(pa_hPa - .378d0*es_hPa) ! Saturation Vapor Specific Concentration over Water |
---|
1340 | ! (even for temperatures less than freezing point) |
---|
1341 | |
---|
1342 | ! Partial Condensation/Scheme |
---|
1343 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1344 | d_qvqw = qv__DY(ikl,MIN(k+1,mzp))-qv__DY(ikl,k) & |
---|
1345 | & + qwd_CM(ikl,MIN(k+1,mzp))-qw__CM(ikl,k) |
---|
1346 | Kdqvqw = Kzh_AT(ikl,k)*d_qvqw/(Z___DY(ikl,k+1)-Z___DY(ikl,k)) |
---|
1347 | |
---|
1348 | ww_TKE = 0.66d+0 * TKE_AT(ikl,k) ! Vertical Velocity Variance |
---|
1349 | |
---|
1350 | coefC2 = Kdqvqw/(sqrt(ww_TKE)*Qsat_L) |
---|
1351 | RH_TKE = C1_EkM + C2_EkM * coefC2 * coefC2 ! Relative Humidity Variance |
---|
1352 | ! (Ek and Mahrt, 1991, An. Geoph., 9, 716--724) |
---|
1353 | |
---|
1354 | qt_TKE = sqrt(RH_TKE)*Qsat_L ! Total Water Variance |
---|
1355 | |
---|
1356 | ARGerf = (t_qvqw-Qsat_L)/(1.414d+0*qt_TKE) |
---|
1357 | OUTerf = erf(ARGerf) |
---|
1358 | |
---|
1359 | CFraCM(ikl,k) = 0.5d+0 * (1.d+0 + OUTerf) ! Cloud Fraction |
---|
1360 | |
---|
1361 | CFrCoe = 1.d+0/(1.d+0+1.349d7*Qsat_L/(TLiqid*TLiqid)) ! |
---|
1362 | CFr_t1 = qt_TKE/sqrt(piNmbr+piNmbr) &! |
---|
1363 | & * exp(-min(ARGerf*ARGerf,ea_MAX)) ! |
---|
1364 | CFr_t2 = CFraCM(ikl,k) *(t_qvqw-Qsat_L) ! |
---|
1365 | |
---|
1366 | CFraOK = max(zer0,sign(un_1,CFraCM(ikl,k) - CFrMIN)) ! CFraOK = 1.0 if CFraCM(ikl,k) > CFrMIN |
---|
1367 | ! = 0.0 otherwise |
---|
1368 | |
---|
1369 | CFraCM(ikl,k) = CFraCM(ikl,k) * CFraOK * Flag_TqwFrz ! |
---|
1370 | qwMesh = CFrCoe * (CFr_t1+CFr_t2) * CFraOK ! Mesh Averaged Liquid Water Mixing Ratio |
---|
1371 | dwMesh = qwMesh - qw__CM(ikl,k) |
---|
1372 | |
---|
1373 | ! Vectorisation of the Atmospheric Water Update |
---|
1374 | ! ~~~~~~~~~~~~~+-------------------------------------------------+ |
---|
1375 | ! | if (dwMesh.gt.0.d0) then | |
---|
1376 | ! | dwMesh = min(qv__DY(ikl,k), dwMesh) | |
---|
1377 | ! | else | |
---|
1378 | ! | dwMesh =-min(qw__CM(ikl,k),-dwMesh) | |
---|
1379 | ! | end if | |
---|
1380 | ! +-------------------------------------------------+ |
---|
1381 | |
---|
1382 | signdw = sign(un_1,dwMesh) |
---|
1383 | Flag_dqwPos = max(zer0,signdw) |
---|
1384 | updatw = Flag_dqwPos * qv__DY(ikl,k) &! |
---|
1385 | & + (1.d0 -Flag_dqwPos)* qw__CM(ikl,k) ! |
---|
1386 | ! #kk SCuLim = exp(min(0.,300.-Ta__CM(ikl,k))) ! SCu Lim. |
---|
1387 | dwMesh = signdw *min(updatw, signdw*dwMesh) &! |
---|
1388 | & *Flag_TqwFrz &! |
---|
1389 | ! #kk& * SCuLim &! SCu |
---|
1390 | & + 0.0 |
---|
1391 | ! #kk CFraCM(ikl,k) = CFraCM(ikl,k) * SCuLim ! Limitor |
---|
1392 | |
---|
1393 | ! Update of qv__DY, qw__CM and Ta__CM |
---|
1394 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1395 | qw__CM(ikl,k) = qw__CM(ikl,k) + dwMesh |
---|
1396 | qwd_CM(ikl,k) = qwd_CM(ikl,k) + dwMesh |
---|
1397 | qv__DY(ikl,k) = qv__DY(ikl,k) - dwMesh |
---|
1398 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lv_Cpd * dwMesh |
---|
1399 | |
---|
1400 | ! Full Debug |
---|
1401 | ! ~~~~~~~~~~ |
---|
1402 | ! #WQ write(6,*) 'QwEvp',dwMesh,it_EXP,ikl,k |
---|
1403 | ! #WH if (ikl.eq.ikl0CM(1)) wwevp(k) = dwMesh |
---|
1404 | |
---|
1405 | ! #EW IF(Ta_dgC(ikl,k).ge.TqwFrz) THEN |
---|
1406 | ! #EW mauxEW = mphyEW(ikl) |
---|
1407 | ! #EW mauxEW(07:07) = 'W' |
---|
1408 | ! #EW mphyEW(ikl) = mauxEW |
---|
1409 | ! #EW END IF |
---|
1410 | |
---|
1411 | ! #hy END IF |
---|
1412 | |
---|
1413 | ! Debug |
---|
1414 | ! ~~~~~ |
---|
1415 | ! #wH debugH( 1:35) = 'Delobbe: Condensation ' |
---|
1416 | ! #wH debugH(36:70) = ' ' |
---|
1417 | ! #wH proc_1 = 'dQw g/kg' |
---|
1418 | ! #wH procv1 = dwMesh |
---|
1419 | ! #wH proc_2 = ' ' |
---|
1420 | ! #wH procv2 = 0. |
---|
1421 | ! #wH proc_3 = ' ' |
---|
1422 | ! #wH procv3 = 0. |
---|
1423 | ! #wH proc_4 = ' ' |
---|
1424 | ! #wH procv4 = 0. |
---|
1425 | ! #wh include 'CMiPhy_Debug.h' |
---|
1426 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1427 | ! #wH& debugV(k,05) = dwMesh |
---|
1428 | |
---|
1429 | END DO |
---|
1430 | |
---|
1431 | |
---|
1432 | |
---|
1433 | |
---|
1434 | !=============================================================================== CONDENSATION, NO SCu |
---|
1435 | ! ++++++++++++++++++++ |
---|
1436 | ! Water Vapor Condensation / Evaporation |
---|
1437 | ! Reference: Emde and Kahlig 1989, Ann.Geoph. 7, p.407 (7) |
---|
1438 | ! -------------------------------------------------------- |
---|
1439 | |
---|
1440 | ELSE |
---|
1441 | |
---|
1442 | DO k=mz1_CM,mzp |
---|
1443 | |
---|
1444 | ! #wH dwMesh = 0. |
---|
1445 | |
---|
1446 | ! #hy IF (Ta_dgC(ikl,k).ge.TqwFrz) THEN |
---|
1447 | Flag_TqwFrz = max(zer0, sign(un_1,Ta_dgC(ikl,k) - TqwFrz)) |
---|
1448 | ! Flag_TqwFrz = 1.0 if Ta_dgC(ikl,k) > TqwFrz |
---|
1449 | ! = 0.0 otherwise |
---|
1450 | |
---|
1451 | dwMesh = (qv__DY(ikl,k) -qvswCM(ikl,k)*RHcrit) & |
---|
1452 | & / (1.0d0+1.349d7*qvswCM(ikl,k) & |
---|
1453 | & /(Ta__CM(ikl,k)*Ta__CM(ikl,k))) |
---|
1454 | ! 1.349e7=Lv*Lv*0.622/Cpa/Ra with Lv = 2500000 J/kg |
---|
1455 | |
---|
1456 | ! Vectorisation of the Atmospheric Water Update |
---|
1457 | ! ~~~~~~~~~~~~~+-------------------------------------------------+ |
---|
1458 | ! | if (dwMesh.gt.0.d0) then | |
---|
1459 | ! | dwMesh = min(qv__DY(ikl,k), dwMesh) | |
---|
1460 | ! | else | |
---|
1461 | ! | dwMesh =-min(qw__CM(ikl,k),-dwMesh) | |
---|
1462 | ! | end if | |
---|
1463 | ! +-------------------------------------------------+ |
---|
1464 | |
---|
1465 | signdw = sign(un_1,dwMesh) |
---|
1466 | Flag_dqwPos = max(zer0,signdw) |
---|
1467 | updatw = Flag_dqwPos * qv__DY(ikl,k) & |
---|
1468 | & + (1.d0 -Flag_dqwPos)* qw__CM(ikl,k) |
---|
1469 | dwMesh = signdw *min(updatw,signdw*dwMesh) & |
---|
1470 | & *Flag_TqwFrz |
---|
1471 | |
---|
1472 | ! Update of qv__DY, qw__CM and Ta__CM |
---|
1473 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1474 | qw__CM(ikl,k) = qw__CM(ikl,k) + dwMesh |
---|
1475 | qwd_CM(ikl,k) = qwd_CM(ikl,k) + dwMesh |
---|
1476 | qv__DY(ikl,k) = qv__DY(ikl,k) - dwMesh |
---|
1477 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lv_Cpd * dwMesh |
---|
1478 | ! [Ls=2500000J/kg]/[Cp=1004J/kg/K]=2490.04 |
---|
1479 | |
---|
1480 | ! #EW IF(Ta_dgC(ikl,k).ge.TqwFrz) THEN |
---|
1481 | ! #EW mauxEW = mphyEW(ikl) |
---|
1482 | ! #EW mauxEW(07:07) = 'W' |
---|
1483 | ! #EW mphyEW(ikl) = mauxEW |
---|
1484 | ! #EW END IF |
---|
1485 | |
---|
1486 | ! Full Debug |
---|
1487 | ! ~~~~~~~~~~ |
---|
1488 | ! #WQ write(6,*) 'QwEvp',dwMesh,it_EXP,ikl,k |
---|
1489 | ! #WH if (ikl.eq.ikl0CM(1)) wwevp(k) = dwMesh |
---|
1490 | |
---|
1491 | ! #hy END IF |
---|
1492 | |
---|
1493 | ! Debug |
---|
1494 | ! ~~~~~ |
---|
1495 | ! #wH debugH( 1:35) = 'Emde and Kahlig: Water Vapor Conden' |
---|
1496 | ! #wH debugH(36:70) = 'sation / Evaporation ' |
---|
1497 | ! #wH proc_1 = 'dQw g/kg' |
---|
1498 | ! #wH procv1 = dwMesh |
---|
1499 | ! #wH proc_2 = ' ' |
---|
1500 | ! #wH procv2 = 0. |
---|
1501 | ! #wH proc_3 = ' ' |
---|
1502 | ! #wH procv3 = 0. |
---|
1503 | ! #wH proc_4 = ' ' |
---|
1504 | ! #wH procv4 = 0. |
---|
1505 | ! #wh include 'CMiPhy_Debug.h' |
---|
1506 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1507 | ! #wH& debugV(k,05) = dwMesh |
---|
1508 | |
---|
1509 | END DO |
---|
1510 | |
---|
1511 | END IF |
---|
1512 | |
---|
1513 | |
---|
1514 | |
---|
1515 | |
---|
1516 | !=============================================================================== CONDENSATION, SCu added AFTER |
---|
1517 | ! +++++++++++++++++++++++++++++ |
---|
1518 | ! Fractional Cloudiness ! Guess may be computed (Ek&Mahrt91 fracSC=.T.) |
---|
1519 | ! ====================== ! Final value computed below |
---|
1520 | |
---|
1521 | ! #sc IF (Frac__Clouds.AND..NOT.fracSC) THEN |
---|
1522 | IF (Frac__Clouds) THEN |
---|
1523 | IF(fraCEP) THEN ! ECMWF Large Scale Cloudiness |
---|
1524 | ! ---------------------------- |
---|
1525 | DO k=mz1_CM,mzp |
---|
1526 | CFraCM(ikl,k) = (qi__CM(ikl,k) + qw__CM(ikl,k) &! |
---|
1527 | & +qs__CM(ikl,k) * 0.33 &! |
---|
1528 | & * (1.-min(un_1,exp((Ta__CM(ikl,k) -258.15)*0.1))))&! |
---|
1529 | & / (0.02 * qvswCM(ikl,k) ) ! |
---|
1530 | CFraCM(ikl,k) =min(un_1 , CFraCM(ikl,k)) |
---|
1531 | CFraCM(ikl,k) =max(0.001 , CFraCM(ikl,k)) &! |
---|
1532 | & * max(zer0,sign(un_1,qi__CM(ikl,k) + qw__CM(ikl,k) &! |
---|
1533 | & +qs__CM(ikl,k) -3.E-9 ))! |
---|
1534 | END DO |
---|
1535 | ELSE ! XU and Randall 1996, JAS 21, p.3099 (4) |
---|
1536 | ! ---------------------------- |
---|
1537 | DO k=mz1_CM,mzp |
---|
1538 | qvs_wi= qvswCM(ikl,k) |
---|
1539 | ! #wi qvs_wi=max(epsn,((qi__CM(ikl,k)+qs__CM(ikl,k))*qvsiCM(ikl,k) & |
---|
1540 | ! #wi& +qw__CM(ikl,k) *qvswCM(ikl,k)) & |
---|
1541 | ! #wi& /max(epsn, qi__CM(ikl,k)+qs__CM(ikl,k) +qw__CM(ikl,k))) |
---|
1542 | RHumid= min( RH_MAX, max(qv__DY(ikl,k) ,qv_MIN) & |
---|
1543 | & / qvs_wi) |
---|
1544 | argEXP= ( (RH_MAX -RHumid) * qvs_wi) ** 0.49 |
---|
1545 | argEXP= min(100.*(qi__CM(ikl,k)+qw__CM(ikl,k) & |
---|
1546 | & +qs__CM(ikl,k) * 0.33 & |
---|
1547 | & * (1.-min(1.,exp((Ta__CM(ikl,k) -258.15)*0.1))))& |
---|
1548 | & /max( epsn , argEXP ) & |
---|
1549 | & ,ea_MAX ) |
---|
1550 | |
---|
1551 | CFraCM(ikl,k) = ( RHumid ** 0.25 )& |
---|
1552 | & * (1. - exp(-argEXP) ) |
---|
1553 | END DO |
---|
1554 | END IF |
---|
1555 | |
---|
1556 | ELSE |
---|
1557 | ! #sc ELSE IF ( .NOT.Frac__Clouds) THEN |
---|
1558 | ! #sc IF (fracSC) stop 'fracSC set up when Frac__Clouds NOT' |
---|
1559 | DO k=mz1_CM,mzp |
---|
1560 | qCloud = qi__CM(ikl,k) + qw__CM(ikl,k) |
---|
1561 | |
---|
1562 | ! #hy IF (qCloud >.epsn) THEN |
---|
1563 | CFraCM(ikl,k) = max(zer0,sign(un_1, qCloud - epsn)) |
---|
1564 | ! CFraCM(ikl,k) = 1.0 if qCloud > epsn |
---|
1565 | ! = 0.0 otherwise |
---|
1566 | |
---|
1567 | ! #hy END IF |
---|
1568 | END DO |
---|
1569 | |
---|
1570 | END IF |
---|
1571 | |
---|
1572 | |
---|
1573 | ! Debug |
---|
1574 | ! ~~~~~ |
---|
1575 | ! #wH DO k=mz1_CM,mzp |
---|
1576 | ! #wH debugH( 1:35) = 'Fractional Cloudiness (XU .OR. CEP)' |
---|
1577 | ! #wH debugH(36:70) = ' ' |
---|
1578 | ! #wH proc_1 = ' ' |
---|
1579 | ! #wH procv1 = 0. |
---|
1580 | ! #wH proc_2 = ' ' |
---|
1581 | ! #wH procv2 = 0. |
---|
1582 | ! #wH proc_3 = ' ' |
---|
1583 | ! #wH procv3 = 0. |
---|
1584 | ! #wH proc_4 = ' ' |
---|
1585 | ! #wH procv4 = 0. |
---|
1586 | ! #wh include 'CMiPhy_Debug.h' |
---|
1587 | ! #wH END DO |
---|
1588 | |
---|
1589 | |
---|
1590 | |
---|
1591 | |
---|
1592 | !=============================================================================== AUTO-CONVERSION, LIQUID |
---|
1593 | ! +++++++++++++++++++++++ |
---|
1594 | ! Autoconversion (i.e., generation of precipitating particles), liquid water |
---|
1595 | ! ========================================================================== |
---|
1596 | |
---|
1597 | ! Cloud Droplets Autoconversion |
---|
1598 | ! Reference: Sundqvist 1988, Schlesinger, Reidel, p. 433) |
---|
1599 | ! Reference: Lin et al. 1983, JCAM 22, p.1076 (50) |
---|
1600 | ! ---------------------------------------------------------- |
---|
1601 | |
---|
1602 | DO k=mz1_CM,mzp |
---|
1603 | |
---|
1604 | ! #wH qr_AUT = 0.0 |
---|
1605 | |
---|
1606 | ! #hy IF (qw__CM(ikl,k).gt.epsn) THEN |
---|
1607 | qw__OK = max(zer0,sign(un_1,qw__CM(ikl,k) - epsn)) |
---|
1608 | ! qw__OK = 1.0 if qw__CM(ikl,k) > epsn |
---|
1609 | ! = 0.0 otherwise |
---|
1610 | |
---|
1611 | ! #hy IF (CFraCM(ikl,k).gt.CFrMIN) THEN |
---|
1612 | CFraOK = max(zer0,sign(un_1,CFraCM(ikl,k) - CFrMIN)) |
---|
1613 | ! CFraOK = 1.0 if CFraCM(ikl,k) > CFrMIN |
---|
1614 | ! = 0.0 otherwise |
---|
1615 | |
---|
1616 | qw__OK = qw__OK * CFraOK |
---|
1617 | |
---|
1618 | ! #EW IF(qw__OK.gt.eps6) THEN |
---|
1619 | ! #EW mauxEW = mphyEW(ikl) |
---|
1620 | ! #EW mauxEW(08:08) = 'r' |
---|
1621 | ! #EW mphyEW(ikl) = mauxEW |
---|
1622 | ! #EW END IF |
---|
1623 | |
---|
1624 | ! Sundqvist (1988, Schlesinger, Reidel, p. 433) Autoconversion Scheme |
---|
1625 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1626 | IF (AUTO_w_Sundqv) THEN |
---|
1627 | dwMesh = qw__OK *qw__CM(ikl,k)/qw_MAX &! |
---|
1628 | & /max(CFrMIN,CFraCM(ikl,k)) ! |
---|
1629 | pr_AUT = qw__OK *qw__CM(ikl,k)*c_Sund &! |
---|
1630 | & *(1.-exp(-min(dwMesh*dwMesh,ea_MAX))) &! |
---|
1631 | & /max(CFrMIN,CFraCM(ikl,k)) ! |
---|
1632 | |
---|
1633 | ! Liou and Ou (1989, JGR 94, p. 8599) Autoconversion Scheme |
---|
1634 | ! Boucher et al. (1995, JGR 100, p.16395) ~~~~~~~~~~~~~~~~~~~~~ |
---|
1635 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1636 | ELSE IF (AUTO_w_LiouOu) THEN |
---|
1637 | CCNwCM(ikl,k) = 1.2e+8 ! ASTEX (Duynkerke&al.1995, JAS 52, p.2763) |
---|
1638 | ! #lo CCNwCM(ikl,k) = 1.e+11 ! (polluted air, Rogers&Yau 89, p.90) |
---|
1639 | |
---|
1640 | qwCFra = qw__CM(ikl,k) / CFraCM(ikl,k) |
---|
1641 | dwTUR4 = 4.5 * qwTURB * qwTURB |
---|
1642 | dwTURi = qwCFra * roa_DY(ikl,k) &! |
---|
1643 | & * 6.0 /piNmbr / CCNwCM(ikl,k) /exp(dwTUR4) |
---|
1644 | dwTUR3 = exp(R_1by3*log(dwTURi)) |
---|
1645 | dwTUR2 = dwTUR3 * dwTUR3 |
---|
1646 | dwTUR8 = 8.0 * qwTURB * qwTURB |
---|
1647 | dwTURc = exp(dwTUR8) * dwTUR2 * dwTUR2 |
---|
1648 | rwMEAN = 0.5 *sqrt(sqrt(dwTURc)) |
---|
1649 | |
---|
1650 | th_AUT = max(zer0,sign(un_1, rwMEAN -rwCrit)) ! Heaviside Function |
---|
1651 | |
---|
1652 | pr_AUT = qw__OK*CFraCM(ikl,k) *th_AUT*4.09d6*piNmbr &! |
---|
1653 | & *CCNwCM(ikl,k) *dwTURc*qwCFra |
---|
1654 | |
---|
1655 | ! Lin et al.(1983) Autoconversion Scheme |
---|
1656 | ! ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ |
---|
1657 | ELSE IF (AUTO_w_LinAll) THEN |
---|
1658 | dwMesh = qw__OK * (qw__CM(ikl,k)-qw_MAX) |
---|
1659 | pr_AUT = dwMesh * dwMesh *dwMesh/(cc1*dwMesh+1000.d0*cc2/dd0) |
---|
1660 | ELSE |
---|
1661 | STOP 'AutoConversion of Cloud droplets is not defined' |
---|
1662 | END IF |
---|
1663 | |
---|
1664 | qr_AUT = pr_AUT * dt__CM |
---|
1665 | qr_AUT = min(qr_AUT,qw__CM(ikl,k)) |
---|
1666 | qw__CM(ikl,k) = qw__CM(ikl,k) - qr_AUT |
---|
1667 | qr__CM(ikl,k) = qr__CM(ikl,k) + qr_AUT |
---|
1668 | |
---|
1669 | ! #WQ write(6,*) 'QrAut',qr_AUT,it_EXP,ikl,k |
---|
1670 | ! #WH if (ikl.eq.ikl0CM(1)) wraut(k) = qr_AUT |
---|
1671 | |
---|
1672 | ! #hy END IF |
---|
1673 | ! #hy END IF |
---|
1674 | |
---|
1675 | ! Debug |
---|
1676 | ! ~~~~~ |
---|
1677 | ! #wH debugH( 1:35) = 'Lin et al.(1983) Autoconversion Sch' |
---|
1678 | ! #wH debugH(36:70) = 'eme ' |
---|
1679 | ! #wH proc_1 = 'Qraut g/kg' |
---|
1680 | ! #wH procv1 = qr_AUT |
---|
1681 | ! #wH proc_2 = ' ' |
---|
1682 | ! #wH procv2 = 0. |
---|
1683 | ! #wH proc_3 = ' ' |
---|
1684 | ! #wH procv3 = 0. |
---|
1685 | ! #wH proc_4 = ' ' |
---|
1686 | ! #wH procv4 = 0. |
---|
1687 | ! #wh include 'CMiPhy_Debug.h' |
---|
1688 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1689 | ! #wH& debugV(k,06) = qr_AUT |
---|
1690 | |
---|
1691 | END DO |
---|
1692 | |
---|
1693 | |
---|
1694 | |
---|
1695 | |
---|
1696 | !=============================================================================== AUTO-CONVERSION, SOLID |
---|
1697 | ! ++++++++++++++++++++++ |
---|
1698 | ! Autoconversion (i.e., generation of precipitating particles), Ice --> Snow |
---|
1699 | ! ========================================================================== |
---|
1700 | |
---|
1701 | ! Conversion from Cloud Ice Crystals to Snow Flakes |
---|
1702 | ! Reference: Levkov et al. 1992, Contr.Atm.Phys. 65, p.41 |
---|
1703 | ! --------------------------------------------------------- |
---|
1704 | |
---|
1705 | IF (AUTO_i_Levkov) THEN |
---|
1706 | |
---|
1707 | |
---|
1708 | ! Depositional Growth: Ice Crystals => Snow Flakes (BDEPIS) |
---|
1709 | ! Reference: Levkov et al. 1992, Contr.Atm.Phys. 65, p.41 (28) |
---|
1710 | ! -------------------------------------------------------------- |
---|
1711 | |
---|
1712 | IF (AUTO_i_LevkXX) THEN |
---|
1713 | |
---|
1714 | DO k=mz1_CM,mzp |
---|
1715 | |
---|
1716 | ! #wH qs_AUT = 0.0 |
---|
1717 | |
---|
1718 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
1719 | qi__OK = max(zer0, sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
1720 | ! qi__OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
1721 | ! = 0.0 otherwise |
---|
1722 | |
---|
1723 | ! #hy IF (CCNiCM(ikl,k).gt.1.e0) THEN |
---|
1724 | CCNiOK = max(zer0, sign(un_1,CCNiCM(ikl,k) - 1.e0)) |
---|
1725 | ! CCNiOK = 1.0 if CCNiCM(ikl,k) > 1.e0 |
---|
1726 | ! = 0.0 otherwise |
---|
1727 | |
---|
1728 | qi__OK = qi__OK * CCNiOK * qi__CM(ikl,k) |
---|
1729 | |
---|
1730 | ! Pristine Ice Crystals Diameter |
---|
1731 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1732 | Di_Pri = 0.156 *exp(R_1by3*log(R_1000*roa_DY(ikl,k) &! Pristine Ice Crystals Diameter |
---|
1733 | & *max(epsn ,qi__CM(ikl,k)) &! Levkov et al. 1992, Contr.Atm.Phys. 65, (5) p.37 |
---|
1734 | & /max(un_1 ,CCNiCM(ikl,k)))) ! where 6/(pi*ro_I)**1/3 ~ 0.156 |
---|
1735 | |
---|
1736 | ! Deposition Time Scale |
---|
1737 | ! ~~~~~~~~~~~~~~~~~~~~~ |
---|
1738 | RH_Ice = max(epsq, qv__DY(ikl,k)) / qsiEFF(ikl,k) |
---|
1739 | |
---|
1740 | dtsaut = 0.125 *(qs__D0*qs__D0-Di_Pri*Di_Pri) &! |
---|
1741 | & *(0.702e12/(Ta__CM(ikl,k)*Ta__CM(ikl,k)) &! 0.702e12 ~ 0.701987755e12 = (2.8345e+6)**2/0.0248/461.5 |
---|
1742 | ! Ls_H2O **2/Ka /Rw |
---|
1743 | & +1.0 /(2.36e-2 *roa_DY(ikl,k) &! 2.36e-2 = 2.36e-5 *1.e3 |
---|
1744 | & *max(epsq,qv__DY(ikl,k))*RH_Ice)) ! Dv |
---|
1745 | |
---|
1746 | ! Deposition |
---|
1747 | ! ~~~~~~~~~~ |
---|
1748 | qs_AUT = dt__CM *qi__OK*(RH_Ice-1.)/dtsaut |
---|
1749 | qs_AUT = min( qi__CM(ikl,k) , qs_AUT) |
---|
1750 | qs_AUT = max(-qs__CM(ikl,k) , qs_AUT) |
---|
1751 | qi__CM(ikl,k) = qi__CM(ikl,k) - qs_AUT |
---|
1752 | qs__CM(ikl,k) = qs__CM(ikl,k) + qs_AUT |
---|
1753 | |
---|
1754 | ! #hy END IF |
---|
1755 | ! #hy END IF |
---|
1756 | |
---|
1757 | ! Debug |
---|
1758 | ! ~~~~~ |
---|
1759 | ! #wH debugH( 1:35) = 'Lin et al.(1983) Depositional Growt' |
---|
1760 | ! #wH debugH(36:70) = 'h ' |
---|
1761 | ! #wH proc_1 = 'QsAUT g/kg' |
---|
1762 | ! #wH procv1 = qs_AUT |
---|
1763 | ! #wH proc_2 = ' ' |
---|
1764 | ! #wH procv2 = 0. |
---|
1765 | ! #wH proc_3 = ' ' |
---|
1766 | ! #wH procv3 = 0. |
---|
1767 | ! #wH proc_4 = ' ' |
---|
1768 | ! #wH procv4 = 0. |
---|
1769 | ! #wh include 'CMiPhy_Debug.h' |
---|
1770 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1771 | ! #wH& debugV(k,07) = qs_AUT |
---|
1772 | |
---|
1773 | END DO |
---|
1774 | |
---|
1775 | END IF |
---|
1776 | |
---|
1777 | |
---|
1778 | ! Ice Crystals Aggregation => Snow Flakes (BAGRIS) AUTO-CONVERSION, SOLID |
---|
1779 | ! Reference: Levkov et al. 1992, Contr.Atm.Phys. 65, p.41 (31) ++++++++++++++++++++++ |
---|
1780 | ! -------------------------------------------------------------- |
---|
1781 | |
---|
1782 | DO k=mz1_CM,mzp |
---|
1783 | |
---|
1784 | ! #wH qs_AUT = 0.0 |
---|
1785 | ! #wH dtsaut = 0.0 |
---|
1786 | |
---|
1787 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
1788 | qi__OK = max(zer0,sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
1789 | ! qi__OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
1790 | ! = 0.0 otherwise |
---|
1791 | |
---|
1792 | ! #hy IF (CCNiCM(ikl,k).gt.1.e0) THEN |
---|
1793 | CCNiOK = max(zer0,sign(un_1,CCNiCM(ikl,k) - 1.e0)) |
---|
1794 | ! CCNiOK = 1.0 if CCNiCM(ikl,k) > 1.e0 |
---|
1795 | ! = 0.0 otherwise |
---|
1796 | |
---|
1797 | qi__OK = qi__OK * CCNiOK * qi__CM(ikl,k) |
---|
1798 | |
---|
1799 | ! #EW IF(qi__OK.gt.eps6) THEN |
---|
1800 | ! #EW mauxEW = mphyEW(ikl) |
---|
1801 | ! #EW mauxEW(09:09) = 's' |
---|
1802 | ! #EW mphyEW(ikl) = mauxEW |
---|
1803 | ! #EW END IF |
---|
1804 | |
---|
1805 | ! Pristine Ice Crystals Diameter |
---|
1806 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1807 | Di_Pri = 0.156 *exp(R_1by3*log(R_1000*roa_DY(ikl,k) &! Pristine Ice Crystals Diameter |
---|
1808 | & *max(epsn, qi__CM(ikl,k)) &! Levkov et al. 1992, Contr. Atm. Phys. 65, (5) p.37 |
---|
1809 | & /max(un_1, CCNiCM(ikl,k)))) ! where [6/(pi*ro_I)]**1/3 ~ 0.156 |
---|
1810 | |
---|
1811 | ! Time needed for Ice Crystals Diameter to reach Snow Diameter Threshold |
---|
1812 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
1813 | c1saut = max(epsn,qi__OK) *roa_DY(ikl,k) *35.0 &! |
---|
1814 | & *exp(R_1by3*log(roa_DY(ikl,mzp) /roa_DY(ikl,k))) ! |
---|
1815 | |
---|
1816 | dtsaut =-6.d0*log(Di_Pri/qs__D0) /c1saut ! |
---|
1817 | dtsaut = max(dt__CM, dtsaut) ! qi fully used if dtsaut<dt__CM |
---|
1818 | |
---|
1819 | ! Time needed for Ice Crystals Diameter to reach Snow Diameter Threshold |
---|
1820 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(ALTERNATE PARAMETERIZATION)~ |
---|
1821 | ! #nt dtsaut =-2.0 *(3.0*log( Di_Pri /qs__D0) &! |
---|
1822 | ! #nt& + log(max(qi__CM(ikl,k),epsn))) /c1saut ! |
---|
1823 | ! #nt dtsaut = max(epsn,dtsaut) |
---|
1824 | |
---|
1825 | ! Aggregation |
---|
1826 | ! ~~~~~~~~~~~ |
---|
1827 | qs_AUT = dt__CM*qi__OK / dtsaut |
---|
1828 | qs_AUT = min( qi__CM(ikl,k) , qs_AUT) |
---|
1829 | qs_AUT = max(-qs__CM(ikl,k) , qs_AUT) |
---|
1830 | qi__CM(ikl,k) = qi__CM(ikl,k) - qs_AUT |
---|
1831 | qs__CM(ikl,k) = qs__CM(ikl,k) + qs_AUT |
---|
1832 | |
---|
1833 | |
---|
1834 | ! Decrease of Ice Crystals Number (BAGRII) |
---|
1835 | ! Reference: Levkov et al. 1992, Contr.Atm.Phys. 65, p.41 (34) |
---|
1836 | ! -------------------------------------------------------------- |
---|
1837 | |
---|
1838 | CCNiCM(ikl,k) = CCNiCM(ikl,k) * exp(-0.5*c1saut*dt__CM) |
---|
1839 | |
---|
1840 | ! #WQ write(6,*) 'QsAut', qs_AUT, &! |
---|
1841 | ! #WQ& ' Qi' , qi__CM(ikl,k), &! |
---|
1842 | ! #WQ& ' CcnI' ,CCNiCM(ikl,k),it_EXP,ikl,k ! |
---|
1843 | ! #WH if (ikl.eq.ikl0CM(1)) wsaut(k) = qs_AUT |
---|
1844 | |
---|
1845 | ! #hy END IF |
---|
1846 | ! #hy END IF |
---|
1847 | |
---|
1848 | ! Debug |
---|
1849 | ! ~~~~~ |
---|
1850 | ! #wH debugH( 1:35) = 'Lin et al.(1983) Ice Crystals Aggre' |
---|
1851 | ! #wH debugH(36:70) = 'gation ' |
---|
1852 | ! #wH proc_1 = 'dtsaut sec' |
---|
1853 | ! #wH procv1 = dtsaut |
---|
1854 | ! #wH proc_2 = 'QsAUT g/kg' |
---|
1855 | ! #wH procv2 = qs_AUT |
---|
1856 | ! #wH proc_3 = ' ' |
---|
1857 | ! #wH procv3 = 0. |
---|
1858 | ! #wH proc_4 = ' ' |
---|
1859 | ! #wH procv4 = 0. |
---|
1860 | ! #wh include 'CMiPhy_Debug.h' |
---|
1861 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1862 | ! #wH& debugV(k,07) = qs_AUT + debugV(k,07) |
---|
1863 | |
---|
1864 | END DO |
---|
1865 | |
---|
1866 | |
---|
1867 | ! Ice Crystals Autoconversion => Snow Flakes AUTO-CONVERSION, SOLID |
---|
1868 | ! Reference: Lin et al. 1983, JCAM 22, p.1070 (21) ++++++++++++++++++++++ |
---|
1869 | ! Lin et al. 1983, JCAM 22, p.1074 (38) |
---|
1870 | ! Emde and Kahlig 1989, Ann.Geoph. 7, p. 408 (18) |
---|
1871 | ! ---------------------------------------------------------- |
---|
1872 | |
---|
1873 | ELSE IF (AUTO_i_EmdeKa) THEN |
---|
1874 | |
---|
1875 | DO k=mz1_CM,mzp |
---|
1876 | |
---|
1877 | ! #wH qs_AUT = 0.0 |
---|
1878 | ! #wH cnsaut = 0.0 |
---|
1879 | |
---|
1880 | ! #hy IF (qi__CM(ikl,k) .ge. qisMAX) THEN |
---|
1881 | |
---|
1882 | ps_AUT = 0.001d0*(qi__CM(ikl,k)-qisMAX) &! |
---|
1883 | & *exp(0.025d0* Ta_dgC(ikl,k)) |
---|
1884 | qs_AUT = ps_AUT * dt__CM |
---|
1885 | qs_AUT = max(qs_AUT, zer0 ) |
---|
1886 | qs_AUT = min(qs_AUT, qi__CM(ikl,k)) |
---|
1887 | cnsaut = qs_AUT* CCNiCM(ikl,k) &! |
---|
1888 | & /max(qisMAX , qi__CM(ikl,k)) |
---|
1889 | CCNiCM(ikl,k) = CCNiCM(ikl,k) - cnsaut |
---|
1890 | qi__CM(ikl,k) = qi__CM(ikl,k) - qs_AUT |
---|
1891 | qs__CM(ikl,k) = qs__CM(ikl,k) + qs_AUT |
---|
1892 | ! #WQ write(6,*) 'QsAut',qs_AUT ,it_EXP,ikl,k |
---|
1893 | ! #WH IF (ikl.eq.ikl0CM(1)) wsaut(k)= qs_AUT |
---|
1894 | |
---|
1895 | ! #EW IF (qi__CM(ikl,k) .ge. qisMAX) THEN |
---|
1896 | ! #EW mauxEW = mphyEW(ikl) |
---|
1897 | ! #EW mauxEW(09:09) = 's' |
---|
1898 | ! #EW mphyEW(ikl) = mauxEW |
---|
1899 | ! #EW END IF |
---|
1900 | |
---|
1901 | ! #hy END IF |
---|
1902 | |
---|
1903 | ! Debug |
---|
1904 | ! ~~~~~ |
---|
1905 | ! #wH debugH( 1:35) = 'Emde and Kahlig Ice Crystals Autoc' |
---|
1906 | ! #wH debugH(36:70) = 'onversion ' |
---|
1907 | ! #wH proc_1 = 'QsAUT g/kg' |
---|
1908 | ! #wH procv1 = qs_AUT |
---|
1909 | ! #wH proc_2 = 'cnsaut/e15' |
---|
1910 | ! #wH procv2 = cnsaut*1.e-18 |
---|
1911 | ! #wH proc_3 = ' ' |
---|
1912 | ! #wH procv3 = 0. |
---|
1913 | ! #wH proc_4 = ' ' |
---|
1914 | ! #wH procv4 = 0. |
---|
1915 | ! #wh include 'CMiPhy_Debug.h' |
---|
1916 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1917 | ! #wH& debugV(k,07) = qs_AUT |
---|
1918 | |
---|
1919 | END DO |
---|
1920 | |
---|
1921 | |
---|
1922 | ! Sundqvist (1988, Schlesinger, Reidel, p. 433) Autoconversion Scheme AUTO-CONVERSION, SOLID |
---|
1923 | ! ------------------------------------------------------------------------- ++++++++++++++++++++++ |
---|
1924 | |
---|
1925 | ELSE IF (AUTO_i_Sundqv) THEN |
---|
1926 | |
---|
1927 | DO k=mz1_CM,mzp |
---|
1928 | |
---|
1929 | ! #wH qs_AUT = 0.0 |
---|
1930 | ! #wH cnsaut = 0.0 |
---|
1931 | |
---|
1932 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
1933 | qi__OK = max(zer0,sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
1934 | ! qi__OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
1935 | ! = 0.0 otherwise |
---|
1936 | |
---|
1937 | dqiDUM = qi__OK *qi__CM(ikl,k)/qi0_DC &! |
---|
1938 | ! #mf& /max( CFrMIN ,CFraCM(ikl,k)) &! |
---|
1939 | & + 0. ! |
---|
1940 | ps_AUT = qi__OK *qi__CM(ikl,k)*c_Sund &! |
---|
1941 | & *(1.-exp(-dqiDUM *dqiDUM)) &! |
---|
1942 | ! #mf& *max( CFrMIN ,CFraCM(ikl,k)) &! |
---|
1943 | & + 0. ! |
---|
1944 | qs_AUT = ps_AUT * dt__CM |
---|
1945 | qs_AUT = min(qi__CM(ikl,k) , qs_AUT) |
---|
1946 | qs_AUT = max(zer0 , qs_AUT) |
---|
1947 | cnsaut = CCNiCM(ikl,k) * qs_AUT &! |
---|
1948 | & /max(qi__CM(ikl,k) , epsn) |
---|
1949 | CCNiCM(ikl,k) = CCNiCM(ikl,k) - cnsaut |
---|
1950 | qi__CM(ikl,k) = qi__CM(ikl,k) - qs_AUT |
---|
1951 | qs__CM(ikl,k) = qs__CM(ikl,k) + qs_AUT |
---|
1952 | |
---|
1953 | ! #hy END IF |
---|
1954 | |
---|
1955 | ! Debug |
---|
1956 | ! ~~~~~ |
---|
1957 | ! #wH debugH( 1:35) = 'Sundqvist (1988) Ice Crystals Autoc' |
---|
1958 | ! #wH debugH(36:70) = 'onversion ' |
---|
1959 | ! #wH proc_1 = 'QsAUT g/kg' |
---|
1960 | ! #wH procv1 = qs_AUT |
---|
1961 | ! #wH proc_2 = 'cnsaut/e15' |
---|
1962 | ! #wH procv2 = cnsaut*1.e-18 |
---|
1963 | ! #wH proc_3 = ' ' |
---|
1964 | ! #wH procv3 = 0. |
---|
1965 | ! #wH proc_4 = ' ' |
---|
1966 | ! #wH procv4 = 0. |
---|
1967 | ! #wh include 'CMiPhy_Debug.h' |
---|
1968 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
1969 | ! #wH& debugV(k,07) = qs_AUT |
---|
1970 | |
---|
1971 | END DO |
---|
1972 | ELSE |
---|
1973 | STOP 'AutoConversion of Cloud crystals is not defined' |
---|
1974 | END IF |
---|
1975 | |
---|
1976 | |
---|
1977 | |
---|
1978 | |
---|
1979 | !=============================================================================== AUTO-CONVERSION, SOLID |
---|
1980 | ! ++++++++++++++++++++++ |
---|
1981 | ! Autoconversion (i.e., generation of precipitating particles), Ice --> Graupels |
---|
1982 | ! ============================================================================== |
---|
1983 | |
---|
1984 | ! #qg DO k=mz1_CM,mzp |
---|
1985 | |
---|
1986 | ! #qg IF (qi__CM(ikl,k) .ge. qigMAX) THEN |
---|
1987 | |
---|
1988 | ! #qg pgaut = 0.001*( qi__CM(ikl,k)-qigMAX)*exp(0.090* Ta_dgC(ikl,k)) |
---|
1989 | ! #qg qgaut = pgaut * dt__CM |
---|
1990 | ! #qg qgaut = max(qgaut,zer0 ) |
---|
1991 | ! #qg qgaut = min(qgaut,qi__CM(ikl,k)) |
---|
1992 | ! #qg qi__CM(ikl,k) = qi__CM(ikl,k) - qgaut |
---|
1993 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qgaut |
---|
1994 | |
---|
1995 | ! #qg END IF |
---|
1996 | |
---|
1997 | ! #qg END DO |
---|
1998 | |
---|
1999 | |
---|
2000 | |
---|
2001 | |
---|
2002 | !=============================================================================== ACCRETION |
---|
2003 | ! +++++++++ |
---|
2004 | ! Accretion Processes (i.e. increase in size of precipitating particles |
---|
2005 | ! ==================== through a collision-coalescence process)=== |
---|
2006 | ! ============================================== |
---|
2007 | |
---|
2008 | ! Accretion of Cloud Droplets by Rain ACCRETION, o > . |
---|
2009 | ! Reference: Lin et al. 1983, JCAM 22, p.1076 (51) +++++++++++++++++ |
---|
2010 | ! Emde and Kahlig 1989, Ann.Geoph. 7, p. 407 (10) |
---|
2011 | ! ---------------------------------------------------------- |
---|
2012 | |
---|
2013 | DO k=mz1_CM,mzp |
---|
2014 | |
---|
2015 | ! #wH qr_ACW = 0.0 |
---|
2016 | |
---|
2017 | ! #hy IF (qw__CM(ikl,k).gt.epsn) THEN |
---|
2018 | qw__OK = max(zer0,sign(un_1,qw__CM(ikl,k) - epsn)) |
---|
2019 | ! qw__OK = 1.0 if qw__CM(ikl,k) > epsn |
---|
2020 | ! = 0.0 otherwise |
---|
2021 | |
---|
2022 | ! #hy IF (qr___0(ikl,k).gt.epsn) THEN |
---|
2023 | qr0_OK = max(zer0,sign(un_1,qr___0(ikl,k) - epsn)) |
---|
2024 | ! qr0_OK = 1.0 if qr___0(ikl,k) > epsn |
---|
2025 | ! = 0.0 otherwise |
---|
2026 | |
---|
2027 | Flag_qr_ACW = qw__OK * qr0_OK |
---|
2028 | |
---|
2029 | ! #EW IF(Flag_qr_ACW.gt.eps6) THEN |
---|
2030 | ! #EW mauxEW = mphyEW(ikl) |
---|
2031 | ! #EW mauxEW(10:10) = 'r' |
---|
2032 | ! #EW mphyEW(ikl) = mauxEW |
---|
2033 | ! #EW END IF |
---|
2034 | |
---|
2035 | pr_ACW = 3104.28d0 * n0___r * sqrrro(ikl,k) &! 3104.28 = a pi Gamma[3+b] / 4 |
---|
2036 | & *qw__CM(ikl,k)/exp(3.8d0*log(lamdaR(ikl,k))) ! where a = 842. and b = 0.8 |
---|
2037 | qr_ACW = pr_ACW*dt__CM *Flag_qr_ACW |
---|
2038 | qr_ACW = min(qr_ACW,qw__CM(ikl,k)) |
---|
2039 | |
---|
2040 | qw__CM(ikl,k) = qw__CM(ikl,k) -qr_ACW |
---|
2041 | qr__CM(ikl,k) = qr__CM(ikl,k) +qr_ACW |
---|
2042 | |
---|
2043 | ! #WQ write(6,*) 'Qracw',qr_ACW,it_EXP,ikl,k |
---|
2044 | ! #WH if (ikl.eq.ikl0CM(1)) wracw(k) = qr_ACW |
---|
2045 | |
---|
2046 | ! #hy END IF |
---|
2047 | ! #hy END IF |
---|
2048 | |
---|
2049 | ! Debug |
---|
2050 | ! ~~~~~ |
---|
2051 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Accretion of Clou' |
---|
2052 | ! #wH debugH(36:70) = 'd Droplets by Rain ' |
---|
2053 | ! #wH proc_1 = 'Qracw g/kg' |
---|
2054 | ! #wH procv1 = qr_ACW |
---|
2055 | ! #wH proc_2 = ' ' |
---|
2056 | ! #wH procv2 = 0. |
---|
2057 | ! #wH proc_3 = ' ' |
---|
2058 | ! #wH procv3 = 0. |
---|
2059 | ! #wH proc_4 = ' ' |
---|
2060 | ! #wH procv4 = 0. |
---|
2061 | ! #wh include 'CMiPhy_Debug.h' |
---|
2062 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2063 | ! #wH& debugV(k,08) = qr_ACW |
---|
2064 | |
---|
2065 | END DO |
---|
2066 | |
---|
2067 | |
---|
2068 | ! Accretion of Cloud Droplets by Snow Flakes ACCRETION, * > . |
---|
2069 | ! Reference: Lin et al. 1983, JCAM 22, p.1070 (24) ++++++++++++++++ |
---|
2070 | ! ---------------------------------------------------------- |
---|
2071 | |
---|
2072 | DO k=mz1_CM,mzp |
---|
2073 | |
---|
2074 | ! #hy IF (qw__CM(ikl,k).gt.epsn) THEN |
---|
2075 | qw__OK = max(zer0,sign(un_1,qw__CM(ikl,k) - epsn)) |
---|
2076 | ! qw__OK = 1.0 if qw__CM(ikl,k) > epsn |
---|
2077 | ! = 0.0 otherwise |
---|
2078 | |
---|
2079 | ! #hy IF (qs___0(ikl,k).gt.epsn) THEN |
---|
2080 | qs0_OK = max(zer0,sign(un_1,qs___0(ikl,k) - epsn)) |
---|
2081 | ! qs0_OK = 1.0 if qs___0(ikl,k) > epsn |
---|
2082 | ! = 0.0 otherwise |
---|
2083 | |
---|
2084 | Flag_qs_ACW = qw__OK * qs0_OK |
---|
2085 | |
---|
2086 | ! #EW IF(Flag_qs_ACW.gt.eps6) THEN |
---|
2087 | ! #EW mauxEW = mphyEW(ikl) |
---|
2088 | ! #EW mauxEW(11:11) = 's' |
---|
2089 | ! #EW mphyEW(ikl) = mauxEW |
---|
2090 | ! #EW END IF |
---|
2091 | |
---|
2092 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
2093 | |
---|
2094 | ! ps_ACW is taken into account in the snow melting process (if positive temperatures) |
---|
2095 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
2096 | IF (graupel_shape) THEN! Graupellike Snow Flakes of Hexagonal Type |
---|
2097 | ps_ACW(ikl,k)= 9.682d0 * n0___s * sqrrro(ikl,k) &! 9.682 = c pi Gamma[3+d] / 4 |
---|
2098 | & *qw__CM(ikl,k) /exp(3.25d0*log(lamdaS(ikl,k))) ! where c = 4.836 and d = 0.25 |
---|
2099 | ! Ref.: Locatelli and Hobbs, 1974, JGR: table 1 p.2188 |
---|
2100 | |
---|
2101 | ELSE IF (planes__shape) THEN! Unrimed Side Plane |
---|
2102 | ps_ACW(ikl,k)= 3517. * n0___s * sqrrro(ikl,k) &! 3517. = c pi Gamma[3+d] / 4 |
---|
2103 | & *qw__CM(ikl,k) /exp(3.99d0*log(lamdaS(ikl,k))) ! where c = 755.9 and d = 0.99 |
---|
2104 | |
---|
2105 | ELSE IF (aggrega_shape) THEN! Aggregates of unrimed radiating assemblages |
---|
2106 | ps_ACW(ikl,k)= 27.73 * n0___s * sqrrro(ikl,k) &! 27.73 = c pi Gamma[3+d] / 4 |
---|
2107 | & *qw__CM(ikl,k) /exp(3.41d0*log(lamdaS(ikl,k))) ! where c = 11.718and d = 0.41 |
---|
2108 | |
---|
2109 | ELSE |
---|
2110 | STOP 'Snow Particles Shape is not defined' |
---|
2111 | END IF |
---|
2112 | |
---|
2113 | qs_ACW = dt__CM*ps_ACW(ikl,k)*Flag_qs_ACW |
---|
2114 | qs_ACW = min(qs_ACW,qw__CM(ikl,k)) |
---|
2115 | |
---|
2116 | Flag_Ta_Pos = max(zer0,sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2117 | ! Flag_Ta_Pos = 1.0 if Ta__CM(ikl,k) > Tf_Sno |
---|
2118 | ! = 0.0 otherwise |
---|
2119 | |
---|
2120 | qw__CM(ikl,k) = qw__CM(ikl,k) - qs_ACW |
---|
2121 | qr__CM(ikl,k) = qr__CM(ikl,k) + Flag_Ta_Pos * qs_ACW |
---|
2122 | Flag_qs_ACW = (1.d0 - Flag_Ta_Pos) * qs_ACW |
---|
2123 | qs__CM(ikl,k) = qs__CM(ikl,k) + Flag_qs_ACW |
---|
2124 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lc_Cpd * Flag_qs_ACW |
---|
2125 | ! Negative Temperatures => Latent Heat is released by Freezing |
---|
2126 | |
---|
2127 | ! Full Debug |
---|
2128 | ! ~~~~~~~~~~ |
---|
2129 | ! #WQ write(6,*) 'Qsacw',qs_ACW,it_EXP,ikl,k |
---|
2130 | ! #WH if (ikl.eq.ikl0CM(1)) wsacw(k) = qs_ACW |
---|
2131 | |
---|
2132 | ! #hy END IF |
---|
2133 | ! #hy END IF |
---|
2134 | |
---|
2135 | ! Debug |
---|
2136 | ! ~~~~~ |
---|
2137 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Accretion of Clou' |
---|
2138 | ! #wH debugH(36:70) = 'd Droplets by Snow Particles ' |
---|
2139 | ! #wH proc_1 = 'Qsacw g/kg' |
---|
2140 | ! #wH procv1 = Flag_qs_ACW |
---|
2141 | ! #wH proc_3 = ' ' |
---|
2142 | ! #wH procv2 = 0. |
---|
2143 | ! #wH proc_2 = ' ' |
---|
2144 | ! #wH procv3 = 0. |
---|
2145 | ! #wH proc_4 = ' ' |
---|
2146 | ! #wH procv4 = 0. |
---|
2147 | ! #wh include 'CMiPhy_Debug.h' |
---|
2148 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2149 | ! #wH& debugV(k,09) = Flag_qs_ACW |
---|
2150 | |
---|
2151 | END DO |
---|
2152 | |
---|
2153 | |
---|
2154 | ! Accretion of Cloud Droplets by Graupels (Dry Growth Mode) ACCRETION, # > . | # |
---|
2155 | ! Reference: Lin et al. 1983, JCAM 22, p.1075 (40) ++++++++++++++++++++ |
---|
2156 | ! Emde and Kahlig 1989, Ann.Geoph. 7, p. 407 (~20) |
---|
2157 | ! ----------------------------------------------------------- |
---|
2158 | |
---|
2159 | ! #qg DO k=mz1_CM,mzp |
---|
2160 | |
---|
2161 | ! #qg IF (qw__CM(ikl,k).gt.epsn) THEN |
---|
2162 | ! #qg WbyG_w = max(zer0, sign(un_1,qw__CM(ikl,k) - epsn)) |
---|
2163 | ! WbyG_w = 1.0 if qw__CM(ikl,k) > epsn |
---|
2164 | ! = 0.0 otherwise |
---|
2165 | |
---|
2166 | ! #qg IF (qg__CM(ikl,k).gt.epsn) THEN |
---|
2167 | ! #qg WbyG_g = max(zer0, sign(un_1,qg__CM(ikl,k) - epsn)) |
---|
2168 | ! WbyG_g = 1.0 if qg__CM(ikl,k) > epsn |
---|
2169 | ! = 0.0 otherwise |
---|
2170 | |
---|
2171 | ! #qg WbyGOK = WbyG_w * WbyG_g |
---|
2172 | |
---|
2173 | ! #qg IF (Ta__CM(ikl,k).lt.Tf_Sno) THEN |
---|
2174 | ! #qg Fact_G = max(zer0,-sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2175 | ! Fact_G = 1.0 if Ta__CM(ikl,k) > Tf_Sno |
---|
2176 | ! = 0.0 otherwise |
---|
2177 | |
---|
2178 | ! #qg pgacw = PATATRAS |
---|
2179 | ! #qg qgacw = pgacw * dt__CM * WbyGOK |
---|
2180 | ! #qg qgacw = min(qgacw,qw__CM(ikl,k)) |
---|
2181 | |
---|
2182 | ! #qg qw__CM(ikl,k) = qw__CM(ikl,k) - qgacw |
---|
2183 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qgacw |
---|
2184 | ! #qg Ta__CM(ikl,k) = Ta__CM(ikl,k) +Lc_Cpd gacw |
---|
2185 | |
---|
2186 | ! #qg END IF |
---|
2187 | ! #qg END IF |
---|
2188 | ! #qg END IF |
---|
2189 | |
---|
2190 | ! #qg END DO |
---|
2191 | |
---|
2192 | |
---|
2193 | |
---|
2194 | |
---|
2195 | ! Accretion of Cloud Ice by Snow Particles ACCRETION, * > / |
---|
2196 | ! Reference: Lin et al. 1983, JCAM 22, p.1070 (22) ++++++++++++++++ |
---|
2197 | ! ---------------------------------------------------------- |
---|
2198 | |
---|
2199 | DO k=mz1_CM,mzp |
---|
2200 | |
---|
2201 | ! #wH qs_ACI = 0.0 |
---|
2202 | ! #wH CNsACI = 0.0 |
---|
2203 | |
---|
2204 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
2205 | qi__OK = max(zer0,sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
2206 | ! qi__OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
2207 | ! = 0.0 otherwise |
---|
2208 | |
---|
2209 | ! #hy IF (qs___0(ikl,k).gt.epsn) THEN |
---|
2210 | qs0_OK = max(zer0,sign(un_1,qs___0(ikl,k) - epsn)) |
---|
2211 | ! qs0_OK = 1.0 if qs___0(ikl,k) > epsn |
---|
2212 | ! = 0.0 otherwise |
---|
2213 | |
---|
2214 | ! #hy IF (Ta__CM(ikl,k).lt.Tf_Sno) THEN |
---|
2215 | Flag_Ta_Neg = max(zer0,-sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2216 | ! Flag_Ta_Neg = 1.0 if Ta__CM(ikl,k) < Tf_Sno |
---|
2217 | ! = 0.0 otherwise |
---|
2218 | |
---|
2219 | Flag_qs_ACI = qi__OK * qs0_OK * Flag_Ta_Neg |
---|
2220 | |
---|
2221 | ! #EW IF(Flag_qs_ACI.gt.eps6) THEN |
---|
2222 | ! #EW mauxEW = mphyEW(ikl) |
---|
2223 | ! #EW mauxEW(12:12) = 's' |
---|
2224 | ! #EW mphyEW(ikl) = mauxEW |
---|
2225 | ! #EW END IF |
---|
2226 | |
---|
2227 | effACI = exp(0.025d0*Ta_dgC(ikl,k)) ! Collection Efficiency |
---|
2228 | ! Lin et al. 1983 JCAM 22 p.1070 (23) |
---|
2229 | |
---|
2230 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
2231 | |
---|
2232 | ! ps_ACI |
---|
2233 | ! ~~~~~~ |
---|
2234 | IF (graupel_shape) THEN |
---|
2235 | ps_ACI = effACI * 9.682d0 * n0___s * sqrrro(ikl,k) & |
---|
2236 | & *qi__CM(ikl,k) /exp(3.25d0*log(lamdaS(ikl,k))) |
---|
2237 | |
---|
2238 | ELSE IF (planes__shape) THEN |
---|
2239 | ps_ACI = effACI * 3517.d0 * n0___s * sqrrro(ikl,k) & |
---|
2240 | & *qi__CM(ikl,k) /exp(3.99d0*log(lamdaS(ikl,k))) |
---|
2241 | |
---|
2242 | ELSE IF (aggrega_shape) THEN |
---|
2243 | ps_ACI = effACI * 27.73d0 * n0___s * sqrrro(ikl,k) & |
---|
2244 | & *qi__CM(ikl,k) /exp(3.41d0*log(lamdaS(ikl,k))) |
---|
2245 | ELSE |
---|
2246 | STOP 'Snow Particles Shape is not defined' |
---|
2247 | END IF |
---|
2248 | |
---|
2249 | qs_ACI = ps_ACI * dt__CM * Flag_qs_ACI |
---|
2250 | qs_ACI = min(qs_ACI,qi__CM(ikl,k)) |
---|
2251 | |
---|
2252 | CNsACI = CCNiCM(ikl,k) * qs_ACI &! |
---|
2253 | & /max(qi__CM(ikl,k) , epsn) |
---|
2254 | CCNiCM(ikl,k) = CCNiCM(ikl,k) - CNsACI |
---|
2255 | qi__CM(ikl,k) = qi__CM(ikl,k) - qs_ACI |
---|
2256 | qs__CM(ikl,k) = qs__CM(ikl,k) + qs_ACI |
---|
2257 | |
---|
2258 | ! #WQ write(6,*) 'Qsaci',qs_ACI,it_EXP,ikl,k |
---|
2259 | ! #WH if (ikl.eq.ikl0CM(1)) wsaci(k) = qs_ACI |
---|
2260 | |
---|
2261 | ! #hy END IF |
---|
2262 | ! #hy END IF |
---|
2263 | ! #hy END IF |
---|
2264 | |
---|
2265 | ! Debug |
---|
2266 | ! ~~~~~ |
---|
2267 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Accretion of Clou' |
---|
2268 | ! #wH debugH(36:70) = 'd Ice by Snow Particles ' |
---|
2269 | ! #wH proc_1 = 'Qsaci g/kg' |
---|
2270 | ! #wH procv1 = qs_ACI |
---|
2271 | ! #wH proc_2 = 'CNsaci/e15' |
---|
2272 | ! #wH procv2 = CNsACI*1.e-18 |
---|
2273 | ! #wH proc_3 = ' ' |
---|
2274 | ! #wH procv3 = 0. |
---|
2275 | ! #wH proc_4 = ' ' |
---|
2276 | ! #wH procv4 = 0. |
---|
2277 | ! #wh include 'CMiPhy_Debug.h' |
---|
2278 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2279 | ! #wH& debugV(k,10) = qs_ACI |
---|
2280 | |
---|
2281 | END DO |
---|
2282 | |
---|
2283 | |
---|
2284 | |
---|
2285 | |
---|
2286 | ! Accretion of Cloud Ice by Graupel (Cloud Ice Sink) ACCRETION, # > / |
---|
2287 | ! Reference: Lin et al. 1983, JCAM 22, p.1075 (41) ++++++++++++++++ |
---|
2288 | ! Emde and Kahlig 1989, Ann.Geoph. 7, p. 407 (~19) |
---|
2289 | ! ----------------------------------------------------------- |
---|
2290 | |
---|
2291 | ! #qg DO k=mz1_CM,mzp |
---|
2292 | |
---|
2293 | ! #qg IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
2294 | ! #qg CbyG_c = max(zer0, sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
2295 | ! CbyG_c = 1.0 if qi__CM(ikl,k) > epsn |
---|
2296 | ! = 0.0 otherwise |
---|
2297 | |
---|
2298 | ! #qg IF (qg__CM(ikl,k).gt.epsn) THEN |
---|
2299 | ! #qg CbyG_g = max(zer0, sign(un_1,qg__CM(ikl,k) - epsn)) |
---|
2300 | ! CbyG_g = 1.0 if qg__CM(ikl,k) > epsn |
---|
2301 | ! = 0.0 otherwise |
---|
2302 | |
---|
2303 | ! #qg IF (Ta__CM(ikl,k).lt.Tf_Sno) THEN |
---|
2304 | ! #qg Fact_G = max(zer0,-sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2305 | ! Fact_G = 1.0 if Ta__CM(ikl,k) < Tf_Sno |
---|
2306 | ! = 0.0 otherwise |
---|
2307 | |
---|
2308 | ! #qg CbyGOK = CbyG_c * CbyG_g * Fact_G |
---|
2309 | |
---|
2310 | ! #qg pgaci = PATATRAS |
---|
2311 | ! #qg qgaci = pgaci *dt__CM *CbyGOK |
---|
2312 | ! #qg qgaci = min(qgaci,qi__CM(ikl,k)) |
---|
2313 | |
---|
2314 | ! #qg qi__CM(ikl,k) = qi__CM(ikl,k) - qgaci |
---|
2315 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qgaci |
---|
2316 | |
---|
2317 | ! #qg END IF |
---|
2318 | ! #qg END IF |
---|
2319 | ! #qg END IF |
---|
2320 | |
---|
2321 | ! #qg END DO |
---|
2322 | |
---|
2323 | |
---|
2324 | ! Accretion of Cloud Ice by Rain (Cloud Ice Sink) ACCRETION, o > / | o |
---|
2325 | ! Reference: Lin et al. 1983, JCAM 22, p.1071 (25) ++++++++++++++++++++ |
---|
2326 | ! ---------------------------------------------------------- |
---|
2327 | |
---|
2328 | DO k=mz1_CM,mzp |
---|
2329 | |
---|
2330 | ! #wH qr_ACI = 0.0 |
---|
2331 | ! #wH qi_ACR = 0.0 |
---|
2332 | |
---|
2333 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
2334 | qi__OK = max(zer0,sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
2335 | ! qi__OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
2336 | ! = 0.0 otherwise |
---|
2337 | |
---|
2338 | ! #hy IF (qr___0(ikl,k).gt.epsn) THEN |
---|
2339 | qr0_OK = max(zer0,sign(un_1,qr___0(ikl,k) - epsn)) |
---|
2340 | ! qr0_OK = 1.0 if qr___0(ikl,k) > epsn |
---|
2341 | ! = 0.0 otherwise |
---|
2342 | |
---|
2343 | ! #hy IF (Ta__CM(ikl,k).lt.Tf_Sno) THEN |
---|
2344 | Flag_Ta_Neg = max(zer0,-sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2345 | ! Flag_Ta_Neg = 1.0 if Ta__CM(ikl,k) < Tf_Sno |
---|
2346 | ! = 0.0 otherwise |
---|
2347 | |
---|
2348 | Flag_qr_ACI = qi__OK * qr0_OK * Flag_Ta_Neg |
---|
2349 | |
---|
2350 | ! #EW IF(Flag_qr_ACI.gt.eps6) THEN |
---|
2351 | ! #EW mauxEW = mphyEW(ikl) |
---|
2352 | ! #EW IF (mauxEW(13:13).eq.'s'.or.mauxEW(13:13).eq.'A') THEN |
---|
2353 | ! #EW mauxEW(13:13) = 'A' |
---|
2354 | ! #EW ELSE |
---|
2355 | ! #EW mauxEW(13:13) = 'r' |
---|
2356 | ! #EW END IF |
---|
2357 | ! #EW mphyEW(ikl) = mauxEW |
---|
2358 | ! #EW END IF |
---|
2359 | |
---|
2360 | pr_ACI = 3104.28d0 * n0___r * sqrrro(ikl,k) &! |
---|
2361 | & *qi__CM(ikl,k) /exp(3.8d0*log(lamdaR(ikl,k))) |
---|
2362 | qr_ACI = pr_ACI*dt__CM * Flag_qr_ACI |
---|
2363 | qr_ACI = min(qr_ACI,qi__CM(ikl,k)) |
---|
2364 | CNrACI = CCNiCM(ikl,k)* qr_ACI/max(qi__CM(ikl,k),epsn) |
---|
2365 | CCNiCM(ikl,k) = CCNiCM(ikl,k)- CNrACI |
---|
2366 | qi__CM(ikl,k) = qi__CM(ikl,k)- qr_ACI |
---|
2367 | |
---|
2368 | ! #qg IF(qr__CM(ikl,k) .gt. 1.e-4 ) THEN |
---|
2369 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qr_ACI |
---|
2370 | ! CAUTION : Graupels Formation is not taken into account |
---|
2371 | ! This could be a reasonable assumption for Antarctica |
---|
2372 | |
---|
2373 | ! #qg ELSE |
---|
2374 | qs__CM(ikl,k) = qs__CM(ikl,k) + qr_ACI |
---|
2375 | ! #qg END IF |
---|
2376 | |
---|
2377 | ! #WQ write(6,*) 'Qraci',qr_ACI,it_EXP,ikl,k |
---|
2378 | ! #WH if (ikl.eq.ikl0CM(1)) wraci(k) = qr_ACI |
---|
2379 | |
---|
2380 | |
---|
2381 | ! Accretion of Rain by Cloud Ice (Rain Sink) ACCRETION, / > o | * |
---|
2382 | ! Reference: Lin et al. 1983, JCAM 22, p.1071 (26) ++++++++++++++++++++ |
---|
2383 | ! ---------------------------------------------------------- |
---|
2384 | |
---|
2385 | ! #EW IF (Flag_qr_ACI.gt.eps6) THEN |
---|
2386 | ! #EW mauxEW = mphyEW(ikl) |
---|
2387 | ! #EW IF (mauxEW(13:13).eq.'r'.or.mauxEW(13:13).eq.'A') THEN |
---|
2388 | ! #EW mauxEW(13:13) = 'A' |
---|
2389 | ! #EW ELSE |
---|
2390 | ! #EW mauxEW(13:13) = 's' |
---|
2391 | ! #EW END IF |
---|
2392 | ! #EW mphyEW(ikl) = mauxEW |
---|
2393 | ! #EW END IF |
---|
2394 | |
---|
2395 | pi_ACR = 4.1d20 * n0___r * sqrrro(ikl,k) &! 4.1e20 = a pi**2 rhow/mi Gamma[6+b] / 24 |
---|
2396 | & *qi__CM(ikl,k) /exp(6.8d0*log(lamdaR(ikl,k))) ! where a=842., rhow=1000, mi=4.19e-13 |
---|
2397 | ! b = 0.8 |
---|
2398 | ! Lin et al, 1983, JAM,p1071: mi:Ice Crystal Mass |
---|
2399 | qi_ACR = pi_ACR*dt__CM * Flag_qr_ACI |
---|
2400 | qi_ACR = min(qi_ACR,qr__CM(ikl,k)) |
---|
2401 | qr__CM(ikl,k) = qr__CM(ikl,k) - qi_ACR |
---|
2402 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lc_Cpd *qi_ACR |
---|
2403 | |
---|
2404 | ! #qg IF (qr__CM(ikl,k) .gt. 1.e-4 ) THEN |
---|
2405 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qi_ACR |
---|
2406 | ! CAUTION : Graupels Formation is not taken into account |
---|
2407 | ! This could be a reasonable assumption for Antarctica |
---|
2408 | |
---|
2409 | ! #qg ELSE |
---|
2410 | qs__CM(ikl,k) = qs__CM(ikl,k) + qi_ACR |
---|
2411 | ! #qg END IF |
---|
2412 | |
---|
2413 | ! Full Debug |
---|
2414 | ! ~~~~~~~~~~ |
---|
2415 | ! #WQ write(6,*) 'Qiacr',qi_ACR,it_EXP,ikl,k |
---|
2416 | ! #WH if (ikl.eq.ikl0CM(1)) wiacr(k) = qi_ACR |
---|
2417 | |
---|
2418 | ! #hy END IF |
---|
2419 | ! #hy END IF |
---|
2420 | ! #hy END IF |
---|
2421 | |
---|
2422 | ! Debug |
---|
2423 | ! ~~~~~ |
---|
2424 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Accretion of Clou' |
---|
2425 | ! #wH debugH(36:70) = 'd Ice by Rain ' |
---|
2426 | ! #wH proc_1 = 'Qraci g/kg' |
---|
2427 | ! #wH procv1 = qr_ACI |
---|
2428 | ! #wH proc_2 = 'qi_ACR g/kg' |
---|
2429 | ! #wH procv2 = qi_ACR |
---|
2430 | ! #wH proc_3 = ' ' |
---|
2431 | ! #wH procv3 = 0. |
---|
2432 | ! #wH proc_4 = ' ' |
---|
2433 | ! #wH procv4 = 0. |
---|
2434 | ! #wh include 'CMiPhy_Debug.h' |
---|
2435 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2436 | ! #wH& debugV(k,11) = qi_ACR |
---|
2437 | |
---|
2438 | END DO |
---|
2439 | |
---|
2440 | |
---|
2441 | |
---|
2442 | |
---|
2443 | ! Accretion of Rain by Snow Flakes ACCRETION o > *, * > o |
---|
2444 | ! Accretion of Snow Flakes by Rain ++++++++++++++++++++++ |
---|
2445 | ! Reference: Lin et al. 1983, JCAM 22, p.1071 (27) |
---|
2446 | ! Lin et al. 1983, JCAM 22, p.1071 (28) |
---|
2447 | ! Emde and Kahlig 1989, Ann.Geoph. 7, p. 408 (~21) |
---|
2448 | ! ----------------------------------------------------------- |
---|
2449 | |
---|
2450 | DO k=mz1_CM,mzp |
---|
2451 | |
---|
2452 | ps_ACR(ikl,k) = 0.0 |
---|
2453 | qs_ACR = 0.0 |
---|
2454 | qs_ACR_S = 0.0 |
---|
2455 | qs_ACR_R = 0.0 |
---|
2456 | |
---|
2457 | ! #hy IF (qr___0(ikl,k).gt.epsn) THEN |
---|
2458 | qr0_OK = max(zer0,sign(un_1,qr___0(ikl,k) - epsn)) |
---|
2459 | ! qr0_OK = 1.0 if qr___0(ikl,k) > epsn |
---|
2460 | ! = 0.0 otherwise |
---|
2461 | |
---|
2462 | ! #hy IF (qs___0(ikl,k).gt.epsn) THEN |
---|
2463 | qs0_OK = max(zer0,sign(un_1,qs___0(ikl,k) - epsn)) |
---|
2464 | ! qs0_OK = 1.0 if qs___0(ikl,k) > epsn |
---|
2465 | ! = 0.0 otherwise |
---|
2466 | |
---|
2467 | Flag_qr_ACS = qr0_OK * qs0_OK |
---|
2468 | |
---|
2469 | ! #EW IF(Flag_qr_ACI.gt.eps6) THEN |
---|
2470 | ! #EW mauxEW = mphyEW(ikl) |
---|
2471 | ! #EW mauxEW(14:14) = 'A' |
---|
2472 | ! #EW mphyEW(ikl) = mauxEW |
---|
2473 | ! #EW END IF |
---|
2474 | |
---|
2475 | ! Accretion of Rain by Snow --> Snow | lamdaR : lambda_r |
---|
2476 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | lamdaS : lambda_s |
---|
2477 | coeACS=(5.0d0/(lamdaS(ikl,k)*lamdaS(ikl,k)*lamdaR(ikl,k)) &! |
---|
2478 | & +2.0d0/(lamdaS(ikl,k)*lamdaR(ikl,k)*lamdaR(ikl,k)) &! |
---|
2479 | & +0.5d0/(lamdaR(ikl,k)*lamdaR(ikl,k)*lamdaR(ikl,k))) &! |
---|
2480 | & /(lamdaS(ikl,k)*lamdaS(ikl,k)*lamdaS(ikl,k)*lamdaS(ikl,k)) ! |
---|
2481 | |
---|
2482 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12 *min(0.,Ta_dgC(ikl,k)))) |
---|
2483 | |
---|
2484 | pr_ACS = 986.96d-3*(n0___r*n0___s/roa_DY(ikl,k)) &! 986.96: pi**2 * rhos |
---|
2485 | & * abs(FallVr(ikl,k)-FallVs(ikl,k))*coeACS ! (snow density assumed equal to 100 kg/m3) |
---|
2486 | qr_ACS = pr_ACS *dt__CM * Flag_qr_ACS |
---|
2487 | qr_ACS = min(qr_ACS, qr__CM(ikl,k)) |
---|
2488 | |
---|
2489 | ! #WQ write(6,*) 'Qracs',qr_ACS,it_EXP,ikl,k |
---|
2490 | ! #WH if (ikl.eq.ikl0CM(1)) wracs(k) = qr_ACS |
---|
2491 | |
---|
2492 | ! Accretion of Snow by Rain --> Rain |
---|
2493 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
2494 | qr0_OK = max(zer0,sign(un_1,qr___0(ikl,k) - 1.e-4)) |
---|
2495 | ! qr0_OK = 1.0 if qr___0(ikl,k) > 1.e-4 |
---|
2496 | ! = 0.0 otherwise |
---|
2497 | |
---|
2498 | qs0_OK = max(zer0,sign(un_1,qs___0(ikl,k) - 1.e-4)) |
---|
2499 | ! qs0_OK = 1.0 if qs___0(ikl,k) > 1.e-4 |
---|
2500 | ! = 0.0 otherwise |
---|
2501 | |
---|
2502 | Flag_qs_ACR = max(qr0_OK,qs0_OK) |
---|
2503 | |
---|
2504 | ! #hy IF (Flag_qs_ACR.gt.eps6) THEN |
---|
2505 | coeACR=(5.0d0/(lamdaR(ikl,k)*lamdaR(ikl,k)*lamdaS(ikl,k)) & |
---|
2506 | & +2.0d0/(lamdaR(ikl,k)*lamdaS(ikl,k)*lamdaS(ikl,k)) & |
---|
2507 | & +0.5d0/(lamdaS(ikl,k)*lamdaS(ikl,k)*lamdaS(ikl,k))) & |
---|
2508 | & /(lamdaR(ikl,k) *lamdaR(ikl,k)*lamdaR(ikl,k)*lamdaR(ikl,k)) |
---|
2509 | |
---|
2510 | ps_ACR(ikl,k)=9869.6d-3*(n0___r*n0___s/roa_DY(ikl,k)) &! 9869.6: pi**2 * rhow |
---|
2511 | & * abs(FallVr(ikl,k)-FallVs(ikl,k))*coeACR! (water density assumed equal to 1000 kg/m3) |
---|
2512 | qs_ACR = ps_ACR(ikl,k)*dt__CM *Flag_qr_ACS *Flag_qs_ACR |
---|
2513 | qs_ACR = min(qs_ACR,qs__CM(ikl,k)) |
---|
2514 | |
---|
2515 | ! #WQ write(6,*) 'Qsacr',qs_ACR,it_EXP,ikl,k |
---|
2516 | ! #WH if (ikl.eq.ikl0CM(1)) wsacr(k) = qs_ACR |
---|
2517 | ! #hy ELSE |
---|
2518 | ! #hy ps_ACR(ikl,k) = 0.d0 |
---|
2519 | ! #hy qs_ACR = 0.d0 |
---|
2520 | ! #hy END IF |
---|
2521 | |
---|
2522 | Flag_Ta_Neg = max(zer0,-sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2523 | ! Flag_Ta_Neg = 1.0 if Ta__CM(ikl,k) < Tf_Sno |
---|
2524 | ! = 0.0 otherwise |
---|
2525 | |
---|
2526 | qr_ACS_S = qr_ACS * Flag_Ta_Neg |
---|
2527 | qs_ACR_R = qs_ACR *(1.d0-Flag_Ta_Neg) |
---|
2528 | qr__CM(ikl,k) = qr__CM(ikl,k) - qr_ACS_S |
---|
2529 | ! #qg IF (qr___0(ikl,k).lt.1.e-4 .and. qs___0(ikl,k).lt.1.e-4)THEN |
---|
2530 | ! CAUTION : Graupel Formation is not taken into Account |
---|
2531 | qs__CM(ikl,k) = qs__CM(ikl,k) + qr_ACS_S |
---|
2532 | ! #qg ELSE² |
---|
2533 | ! #qg qs__CM(ikl,k) = qs__CM(ikl,k) - qr_ACS_S |
---|
2534 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qs_ACR_S + qr_ACS_S |
---|
2535 | ! #qg REND IF |
---|
2536 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + qs_ACR_S * Lc_Cpd |
---|
2537 | |
---|
2538 | qr__CM(ikl,k) = qr__CM(ikl,k) + qs_ACR_R |
---|
2539 | qs__CM(ikl,k) = qs__CM(ikl,k) - qs_ACR_R |
---|
2540 | Ta__CM(ikl,k) = Ta__CM(ikl,k) - qs_ACR_R * Lc_Cpd |
---|
2541 | |
---|
2542 | ! #hy END IF |
---|
2543 | ! #hy END IF |
---|
2544 | |
---|
2545 | ! Debug |
---|
2546 | ! ~~~~~ |
---|
2547 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Accretion of Snow' |
---|
2548 | ! #wH debugH(36:70) = '(Rain) by Rain(Snow) ' |
---|
2549 | ! #wH proc_1 = 'Qracs g/kg' |
---|
2550 | ! #wH procv1 = qs_ACR_S |
---|
2551 | ! #wH proc_2 = 'Qsacr g/kg' |
---|
2552 | ! #wH procv2 = qs_ACR_R |
---|
2553 | ! #wH proc_3 = ' ' |
---|
2554 | ! #wH procv3 = 0. |
---|
2555 | ! #wH proc_4 = ' ' |
---|
2556 | ! #wH procv4 = 0. |
---|
2557 | ! #wh include 'CMiPhy_Debug.h' |
---|
2558 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2559 | ! #wH& debugV(k,12) = qs_ACR_S - qs_ACR_R |
---|
2560 | |
---|
2561 | END DO |
---|
2562 | |
---|
2563 | |
---|
2564 | |
---|
2565 | |
---|
2566 | ! Accretion of Snow by Graupels ACCRETION, # > * |
---|
2567 | ! Reference: Lin et al. 1983, JCAM 22, p.1071 (29) ++++++++++++++++ |
---|
2568 | ! ---------------------------------------------------------- |
---|
2569 | |
---|
2570 | ! #qg DO k=mz1_CM,mzp |
---|
2571 | |
---|
2572 | ! #qg IF (qg___0(ikl,k).gt.epsn) THEN |
---|
2573 | ! #qg SbyG_g = max(zer0,sign(un_1,qg___0(ikl,k) - epsn)) |
---|
2574 | ! SbyG_g = 1.0 if qg___0(ikl,k) > epsn |
---|
2575 | ! = 0.0 otherwise |
---|
2576 | |
---|
2577 | ! #qg IF (qs___0(ikl,k).gt.epsn) THEN |
---|
2578 | ! #qg SbyG_s = max(zer0,sign(un_1,qs___0(ikl,k) - epsn)) |
---|
2579 | ! SbyG_s = 1.0 if qs___0(ikl,k) > epsn |
---|
2580 | ! = 0.0 otherwise |
---|
2581 | |
---|
2582 | ! #qg SbyGOK = SbyG_g * SbyG_s |
---|
2583 | ! #qg effACS = exp(0.090*Ta_dgC(ikl,k)) &! Collection Efficiency |
---|
2584 | ! ! Lin et al. 1983 JCAM 22 p.1072 (30) |
---|
2585 | |
---|
2586 | ! #qg flg=exp(-6.0d0*log(lamdaS(ikl,k)) &! |
---|
2587 | ! #qg& *(5.0/lamdaG(ikl,k) &! |
---|
2588 | ! #qg& +2.0*lamdaS(ikl,k)/(lamdaG(ikl,k)*lamdaG(ikl,k)) &! |
---|
2589 | ! #qg& +0.5*lamdaS(ikl,k)* lamdaS(ikl,k) &! |
---|
2590 | ! #qg& /exp(3.0d0*log(lamdaG(ikl,k)))) ! |
---|
2591 | |
---|
2592 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
2593 | |
---|
2594 | ! #qg pgacs = 986.96d-3*(n0___g*n0___s/roa_DY(ikl,k)) &! 986.96: pi**2 * rhog |
---|
2595 | ! #qg& * abs(FallVg(ikl,k)-FallVs(ikl,k))*flg*effACS !(graupel densitity assumed equal to snow density) |
---|
2596 | ! #qg qgacs = pgacs*dt__CM * SbyGOK |
---|
2597 | ! #qg qgacs = min(qgacs,qs__CM(ikl,k)) |
---|
2598 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qgacs |
---|
2599 | ! #qg qs__CM(ikl,k) = qs__CM(ikl,k) - qgacs |
---|
2600 | |
---|
2601 | ! #qg END IF |
---|
2602 | ! #qg END IF |
---|
2603 | |
---|
2604 | ! #qg END DO |
---|
2605 | |
---|
2606 | |
---|
2607 | ! Accretion of Rain by Graupels (Dry Growth Mode) ACCRETION, # > o |
---|
2608 | ! Reference: Lin et al. 1983, JCAM 22, p.1075 (42) ++++++++++++++++ |
---|
2609 | ! ---------------------------------------------------------- |
---|
2610 | |
---|
2611 | ! #qg DO k=mz1_CM,mzp |
---|
2612 | |
---|
2613 | ! #qg IF (qg___0(ikl,k).gt.epsn) THEN |
---|
2614 | ! #qg RbyG_g = max(zer0,sign(un_1,qg___0(ikl,k) - epsn)) |
---|
2615 | ! RbyG_g = 1.0 if qg___0(ikl,k) > epsn |
---|
2616 | ! = 0.0 otherwise |
---|
2617 | |
---|
2618 | ! #qg IF (qr___0(ikl,k).gt.epsn) THEN |
---|
2619 | ! #qg RbyG_r = max(zer0,sign(un_1,qr___0(ikl,k) - epsn)) |
---|
2620 | ! RbyG_r = 1.0 if qr___0(ikl,k) > epsn |
---|
2621 | ! = 0.0 otherwise |
---|
2622 | |
---|
2623 | ! #qg IF (Ta__CM(ikl,k).lt.Tf_Sno) THEN |
---|
2624 | ! #qg Fact_G = max(zer0,-sign(un_1,Ta__CM(ikl,k) - Tf_Sno)) |
---|
2625 | ! Fact_G = 1.0 if Ta__CM(ikl,k) < Tf_Sno |
---|
2626 | ! = 0.0 otherwise |
---|
2627 | |
---|
2628 | ! #qg RbyGOK = RbyG_g * RbyG_s * Fact_G |
---|
2629 | |
---|
2630 | ! #qg flg=exp(-6.0d0*log(lamdaS(ikl,k)) &! |
---|
2631 | ! #qg& *(5.0/lamdaG(ikl,k) &! |
---|
2632 | ! #qg& +2.0*lamdaS(ikl,k)/(lamdaG(ikl,k)*lamdaG(ikl,k)) &! |
---|
2633 | ! #qg& +0.5*lamdaS(ikl,k)* lamdaS(ikl,k) &! |
---|
2634 | ! #qg& /exp(3.0d0*log(lamdaG(ikl,k)))) ! |
---|
2635 | |
---|
2636 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
2637 | |
---|
2638 | ! #qg pgacr = 986.96d-3*(n0___g*n0___s/roa_DY(ikl,k)) &! |
---|
2639 | ! #qg& * abs(FallVg(ikl,k)-FallVr(ikl,k))*flg |
---|
2640 | ! #qg qgacr = pgacr * dt__CM *RbyGOK |
---|
2641 | ! #qg qgacr = min(qgacr,qr__CM(ikl,k)) |
---|
2642 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qgacr |
---|
2643 | ! #qg qr__CM(ikl,k) = qr__CM(ikl,k) - qgacr |
---|
2644 | ! #qg Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lc_Cpd*qgacr |
---|
2645 | |
---|
2646 | ! #qg END IF |
---|
2647 | ! #qg END IF |
---|
2648 | ! #qg END IF |
---|
2649 | |
---|
2650 | ! #qg END DO |
---|
2651 | |
---|
2652 | |
---|
2653 | ! Graupels Wet Growth Mode |
---|
2654 | ! Reference: Lin et al. 1983, JCAM 22, p.1075 (43) |
---|
2655 | ! ---------------------------------------------------------- |
---|
2656 | |
---|
2657 | ! #qg ! TO BE ADDED ! |
---|
2658 | |
---|
2659 | |
---|
2660 | |
---|
2661 | |
---|
2662 | ! Microphysical Processes affecting Precipitating Cloud Particles |
---|
2663 | ! =================================================================== |
---|
2664 | |
---|
2665 | |
---|
2666 | ! Rain Drops Evaporation RAIN, EVAPORATION |
---|
2667 | ! Reference: Lin et al. 1983, JCAM 22, p.1077 (52) +++++++++++++++++ |
---|
2668 | ! ---------------------------------------------------------- |
---|
2669 | |
---|
2670 | DO k=mz1_CM,mzp |
---|
2671 | |
---|
2672 | ! #wH qr_EVP = 0.0 |
---|
2673 | |
---|
2674 | ! #hy IF (qr___0(ikl,k).gt.epsn) THEN |
---|
2675 | qr0_OK = max(zer0,sign(un_1,qr___0(ikl,k) - epsn)) |
---|
2676 | ! qr0_OK = 1.0 if qr___0(ikl,k) > epsn |
---|
2677 | ! = 0.0 otherwise |
---|
2678 | |
---|
2679 | ! #EW IF(qr0_OK.gt.eps6) THEN |
---|
2680 | ! #EW mauxEW = mphyEW(ikl) |
---|
2681 | ! #EW mauxEW(15:15) = 'v' |
---|
2682 | ! #EW mphyEW(ikl) = mauxEW |
---|
2683 | ! #EW END IF |
---|
2684 | |
---|
2685 | RH_Liq = qv__DY(ikl,k)/(RHcrit*qvswCM(ikl,k)) |
---|
2686 | ! RH_Liq : grid scale saturation humidity |
---|
2687 | |
---|
2688 | ! #hy IF (RH_Liq.lt.un_1) THEN |
---|
2689 | Flag_DryAir = max(zer0,-sign(un_1,RH_Liq - un_1)) |
---|
2690 | ! Flag_DryAir = 1.0 if RH_Liq < un_1 |
---|
2691 | ! = 0.0 otherwise |
---|
2692 | |
---|
2693 | Flag_qr_EVP = qr0_OK * Flag_DryAir |
---|
2694 | |
---|
2695 | lr_NUM = 0.78d0 /(lamdaR(ikl,k) *lamdaR(ikl,k)) &! |
---|
2696 | & + 3940.d0 * sqrt(sqrrro(ikl,k)) &! 3940.: 0.31 Sc**(1/3) *(a/nu)**(1/2) * Gamma[(b+5)/2] |
---|
2697 | & /exp(2.9d0 *log(lamdaR(ikl,k))) ! where Sc=0.8(Schm.) nu=1.5e-5 (Air Kinematic Viscosity) |
---|
2698 | lr_DEN = 5.423d11/(Ta__CM(ikl,k) *Ta__CM(ikl,k)) &! 5.423e11 = [Lv=2500000J/kg] * Lv / [kT=0.025W/m/K] / [Rv=461.J/kg/K] |
---|
2699 | & + 1.d0/(1.875d-2* roa_DY(ikl,k) *qvswCM(ikl,k)) ! kT: Air Thermal Conductivity |
---|
2700 | |
---|
2701 | pr_EVP = 2. *piNmbr*(1.d0 -RH_Liq)*n0___r*lr_NUM/lr_DEN |
---|
2702 | qr_EVP = pr_EVP* dt__CM |
---|
2703 | qr_EVP = min(qr_EVP, qr__CM(ikl,k)) |
---|
2704 | |
---|
2705 | qr_EVP = min(qr_EVP,RHcrit*qvswCM(ikl,k) -qv__DY(ikl,k)) |
---|
2706 | ! supersaturation is not allowed to occur |
---|
2707 | |
---|
2708 | qr_EVP = max(qr_EVP,zer0) * Flag_qr_EVP |
---|
2709 | ! condensation is not allowed to occur |
---|
2710 | |
---|
2711 | qr__CM(ikl,k) = qr__CM(ikl,k) - qr_EVP |
---|
2712 | qwd_CM(ikl,k) = qwd_CM(ikl,k) - qr_EVP |
---|
2713 | qv__DY(ikl,k) = qv__DY(ikl,k) + qr_EVP |
---|
2714 | Ta__CM(ikl,k) = Ta__CM(ikl,k) - Lv_Cpd *qr_EVP |
---|
2715 | |
---|
2716 | ! Full Debug |
---|
2717 | ! ~~~~~~~~~~ |
---|
2718 | ! #WQ write(6,*) 'Qrevp',qr_EVP,it_EXP,ikl,k |
---|
2719 | ! #WH if (ikl.eq.ikl0CM(1)) wrevp(k) = qr_EVP |
---|
2720 | |
---|
2721 | ! #hy END IF |
---|
2722 | ! #hy END IF |
---|
2723 | |
---|
2724 | ! Debug |
---|
2725 | ! ~~~~~ |
---|
2726 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Rain Drops Evapor' |
---|
2727 | ! #wH debugH(36:70) = 'ation ' |
---|
2728 | ! #wH proc_1 = 'Qrevp g/kg' |
---|
2729 | ! #wH procv1 = qr_EVP |
---|
2730 | ! #wH proc_2 = 'R.Hum [%]' |
---|
2731 | ! #wH procv2 = RH_Liq*0.1 |
---|
2732 | ! #wH proc_3 = ' ' |
---|
2733 | ! #wH procv3 = 0. |
---|
2734 | ! #wH proc_4 = ' ' |
---|
2735 | ! #wH procv4 = 0. |
---|
2736 | ! #wh include 'CMiPhy_Debug.h' |
---|
2737 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2738 | ! #wH& debugV(k,13) = -qr_EVP |
---|
2739 | |
---|
2740 | END DO |
---|
2741 | |
---|
2742 | |
---|
2743 | ! (Deposition on) Snow Flakes (Sublimation) SNOW, (SUBLI)/(DEPOSI)TION |
---|
2744 | ! Reference: Lin et al. 1983, JCAM 22, p.1072 (31) ++++++++++++++++++++++++++ |
---|
2745 | ! ---------------------------------------------------------- |
---|
2746 | |
---|
2747 | DO k=mz1_CM,mzp |
---|
2748 | |
---|
2749 | ! #wH qs_SUB = 0.0 |
---|
2750 | |
---|
2751 | ! #hy IF (qs___0(ikl,k).gt.epsn) THEN |
---|
2752 | qs0_OK = max(zer0,sign(un_1,qs___0(ikl,k) - epsn)) |
---|
2753 | ! qs0_OK = 1.0 if qs___0(ikl,k) > epsn |
---|
2754 | ! = 0.0 otherwise |
---|
2755 | |
---|
2756 | ! #EW IF(qs0_OK.gt.eps6) THEN |
---|
2757 | ! #EW mauxEW = mphyEW(ikl) |
---|
2758 | ! #EW mauxEW(16:16) = 'V' |
---|
2759 | ! #EW mphyEW(ikl) = mauxEW |
---|
2760 | ! #EW END IF |
---|
2761 | |
---|
2762 | RH_ICE = qv__DY(ikl,k)/qsiEFF(ikl,k) |
---|
2763 | |
---|
2764 | ls_NUM = 0.78d0 /(lamdaS(ikl,k)*lamdaS(ikl,k)) &! |
---|
2765 | & + 238.d0 * sqrt(sqrrro(ikl,k)) &! 238.: 0.31 Sc**(1/3) *(c/nu)**(1/2) * Gamma[(d+5)/2] |
---|
2766 | & /exp(2.625d0*log(lamdaS(ikl,k))) ! where Sc=0.8(Schm.) nu=1.5e-5 (Air Kinematic Viscosity) |
---|
2767 | ls_DEN = 6.959d11/(Ta__CM(ikl,k)*Ta__CM(ikl,k)) &! 6.959e11 = [Ls=2833600J/kg]*Ls /[kT=0.025W/m/K] /[Rv=461.J/kg/K] |
---|
2768 | & + 1.d0/(1.875d-2*roa_DY(ikl,k)*qsiEFF(ikl,k)) ! kT: Air Thermal Conductivity |
---|
2769 | |
---|
2770 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
2771 | |
---|
2772 | ps_SUB = 2*piNmbr*(1.d0-RH_ICE)*n0___s*ls_NUM &! |
---|
2773 | & /(1.d3*roa_DY(ikl,k)*ls_DEN) |
---|
2774 | qs_SUB = ps_SUB * dt__CM |
---|
2775 | |
---|
2776 | dqsiqv = qsiEFF(ikl,k) -qv__DY(ikl,k) |
---|
2777 | |
---|
2778 | Flag_SURSat = max(zer0,sign(un_1,RH_ICE - un_1)) |
---|
2779 | ! Flag_SURSat = 1.0 if RH_ICE > un_1 |
---|
2780 | ! = 0.0 otherwise |
---|
2781 | |
---|
2782 | qs_SUB = max(qs_SUB ,dqsiqv)* Flag_SURSat &! qs_SUB < 0 ... Deposition |
---|
2783 | & + min(min(qs_SUB,qs__CM(ikl,k)),dqsiqv)*(1.-Flag_SURSat) ! > 0 ... Sublimation |
---|
2784 | |
---|
2785 | qs_SUB = qs_SUB * qs0_OK |
---|
2786 | |
---|
2787 | qs__CM(ikl,k) = qs__CM(ikl,k)- qs_SUB |
---|
2788 | qid_CM(ikl,k) = qid_CM(ikl,k)- qs_SUB |
---|
2789 | qv__DY(ikl,k) = qv__DY(ikl,k)+ qs_SUB |
---|
2790 | Ta__CM(ikl,k) = Ta__CM(ikl,k)-Ls_Cpd *qs_SUB |
---|
2791 | |
---|
2792 | ! Full Debug |
---|
2793 | ! ~~~~~~~~~~ |
---|
2794 | ! #WQ write(6,*) 'Qssub',qs_SUB,it_EXP,ikl,k |
---|
2795 | ! #WH if (ikl.eq.ikl0CM(1)) wssub(k) = -qs_SUB |
---|
2796 | |
---|
2797 | ! #hy END IF |
---|
2798 | |
---|
2799 | ! Debug |
---|
2800 | ! ~~~~~ |
---|
2801 | ! #wH debugH( 1:35) = 'Lin et al.(1983): (Deposition on) S' |
---|
2802 | ! #wH debugH(36:70) = 'now Particles (Sublimation) ' |
---|
2803 | ! #wH proc_1 = 'Qssub g/kg' |
---|
2804 | ! #wH procv1 = qs_SUB |
---|
2805 | ! #wH proc_2 = ' ' |
---|
2806 | ! #wH procv2 = 0. |
---|
2807 | ! #wH proc_3 = ' ' |
---|
2808 | ! #wH procv3 = 0. |
---|
2809 | ! #wH proc_4 = ' ' |
---|
2810 | ! #wH procv4 = 0. |
---|
2811 | ! #wh include 'CMiPhy_Debug.h' |
---|
2812 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2813 | ! #wH& debugV(k,14) = -qs_SUB |
---|
2814 | |
---|
2815 | END DO |
---|
2816 | |
---|
2817 | |
---|
2818 | ! Graupels Sublimation GRAUPEL, SUBLIMATION |
---|
2819 | ! Reference: Lin et al. 1983, JCAM 22, p.1076 (46) ++++++++++++++++++++ |
---|
2820 | ! ---------------------------------------------------------- |
---|
2821 | |
---|
2822 | ! #qg ! TO BE ADDED ! |
---|
2823 | |
---|
2824 | |
---|
2825 | ! Snow Flakes Melting PSMLT SNOW, MELT |
---|
2826 | ! Reference: Lin et al. 1983, JCAM 22, p.1072 (32) ++++++++++ |
---|
2827 | ! ---------------------------------------------------------- |
---|
2828 | |
---|
2829 | DO k=mz1_CM,mzp |
---|
2830 | |
---|
2831 | ! #wH qsMELT = 0.0 |
---|
2832 | |
---|
2833 | ! #hy IF (qs___0(ikl,k).gt.epsn) THEN |
---|
2834 | qs0_OK = max(zer0,sign(un_1,qs___0(ikl,k) - epsn)) |
---|
2835 | ! qs0_OK = 1.0 if qs___0(ikl,k) > epsn |
---|
2836 | ! = 0.0 otherwise |
---|
2837 | |
---|
2838 | ! #hy IF (Ta_dgC(ikl,k).gt.0.) THEN! Ta_dgC : old Celsius Temperature |
---|
2839 | Flag_Ta_Pos = max(zer0,sign(un_1,Ta_dgC(ikl,k) - 0.)) |
---|
2840 | ! Flag_Ta_Pos = 1.0 if Ta_dgC(ikl,k) > 0. |
---|
2841 | ! = 0.0 otherwise |
---|
2842 | |
---|
2843 | Flag_qsMELT = qs0_OK * Flag_Ta_Pos |
---|
2844 | |
---|
2845 | ! #EW IF(Flag_qsMELT.gt.eps6) THEN |
---|
2846 | ! #EW mauxEW = mphyEW(ikl) |
---|
2847 | ! #EW mauxEW(17:17) = 'r' |
---|
2848 | ! #EW mphyEW(ikl) = mauxEW |
---|
2849 | ! #EW END IF |
---|
2850 | |
---|
2851 | ls_NUM = 0.78 / (lamdaS(ikl,k) *lamdaS(ikl,k)) & |
---|
2852 | & + 238. * sqrt(sqrrro(ikl,k)) & |
---|
2853 | & / exp(2.625d0 *log(lamdaS(ikl,k))) |
---|
2854 | |
---|
2855 | ! #cn n0___s = min(2.e8,2.e6*exp(-.12*min(0.,Ta_dgC(ikl,k)))) |
---|
2856 | |
---|
2857 | xCoefM = 1.904d-8 *n0___s *ls_NUM *Lc_Cpd /roa_DY(ikl,k) ! 1.904e-8: 2 pi / Lc /[1.e3=rho Factor] |
---|
2858 | |
---|
2859 | AcoefM = 0.025d00 *xCoefM &! |
---|
2860 | & +(ps_ACW(ikl,k) + ps_ACR(ikl,k)) *Lc_Cpd /78.8d0 ! 78.8 : Lc /[Cpw=4.187e3 J/kg/K] |
---|
2861 | |
---|
2862 | BcoefM = 62.34d+3 *roa_DY(ikl,k) &! 62.34 : Ls *[psiv=2.200e-5 m2/s] |
---|
2863 | & *(qv__DY(ikl,k)-qsiEFF(ikl,k)) &! 46.88 : Lv *[psiv=1.875e-5 m2/s] |
---|
2864 | & *xCoefM |
---|
2865 | BcoefM = min(-epsn,BcoefM) |
---|
2866 | |
---|
2867 | dTMELT = ( Ta__CM(ikl,k) -Tf_Sno -AcoefM/BcoefM) &! |
---|
2868 | & *exp(-AcoefM*dt__CM) ! |
---|
2869 | qsMELT = ( Ta__CM(ikl,k) -Tf_Sno -dTMELT )/ Lc_Cpd ! |
---|
2870 | qsMELT = max( qsMELT,0. ) *Flag_qsMELT ! |
---|
2871 | qsMELT = min( qsMELT,qs__CM(ikl,k)) ! |
---|
2872 | |
---|
2873 | qs__CM(ikl,k) = qs__CM(ikl,k) - qsMELT |
---|
2874 | qr__CM(ikl,k) = qr__CM(ikl,k) + qsMELT |
---|
2875 | Ta__CM(ikl,k) = Ta__CM(ikl,k) - Lc_Cpd *qsMELT |
---|
2876 | |
---|
2877 | ! Full Debug |
---|
2878 | ! ~~~~~~~~~~ |
---|
2879 | ! #WQ write(6,*) 'Qsmlt',qsMELT,it_EXP,ikl,k |
---|
2880 | ! #WH if (ikl.eq.ikl0CM(1)) wsmlt(k) = qsMELT |
---|
2881 | |
---|
2882 | ! #hy END IF |
---|
2883 | ! #hy END IF |
---|
2884 | |
---|
2885 | ! Debug |
---|
2886 | ! ~~~~~ |
---|
2887 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Snow Particles Me' |
---|
2888 | ! #wH debugH(36:70) = 'lting ' |
---|
2889 | ! #wH proc_1 = 'Qsmlt g/kg' |
---|
2890 | ! #wH procv1 = qsMELT |
---|
2891 | ! #wH proc_2 = ' ' |
---|
2892 | ! #wH procv2 = 0. |
---|
2893 | ! #wH proc_3 = ' ' |
---|
2894 | ! #wH procv3 = 0. |
---|
2895 | ! #wH proc_4 = ' ' |
---|
2896 | ! #wH procv4 = 0. |
---|
2897 | ! #wh include 'CMiPhy_Debug.h' |
---|
2898 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2899 | ! #wH& debugV(k,15) = -qsMELT |
---|
2900 | |
---|
2901 | END DO |
---|
2902 | |
---|
2903 | |
---|
2904 | ! Graupels Melting GRAUPELS, MELT |
---|
2905 | ! Reference: Lin et al. 1983, JCAM 22, p.1076 (47) ++++++++++++++ |
---|
2906 | ! ---------------------------------------------------------- |
---|
2907 | |
---|
2908 | ! #qg ! TO BE ADDED ! |
---|
2909 | |
---|
2910 | |
---|
2911 | ! Rain Freezing RAIN, FREEZING |
---|
2912 | ! Reference: Lin et al. 1983, JCAM 22, p.1075 (45) ++++++++++++++ |
---|
2913 | ! ---------------------------------------------------------- |
---|
2914 | |
---|
2915 | ! **CAUTION**: Graupel Formation TO BE ADDED ! |
---|
2916 | |
---|
2917 | DO k=1,mzp |
---|
2918 | |
---|
2919 | ! #wH qs_FRZ = 0.0 |
---|
2920 | |
---|
2921 | ! #hy IF (qr___0(ikl,k).gt.epsn) THEN |
---|
2922 | qr0_OK = max(zer0,sign(un_1,qr___0(ikl,k) - epsn)) |
---|
2923 | ! qr0_OK = 1.0 if qr___0(ikl,k) > epsn |
---|
2924 | ! = 0.0 otherwise |
---|
2925 | |
---|
2926 | ! #hy IF (Ta_dgC(ikl,k).lt.0.e0)THEN! Ta_dgC : old Celsius Temperature |
---|
2927 | Flag_Ta_Neg = max(zer0,-sign(un_1,Ta_dgC(ikl,k) - 0.e0)) |
---|
2928 | ! Flag_Ta_Neg = 1.0 if Ta_dgC(ikl,k) < 0.e0 |
---|
2929 | ! = 0.0 otherwise |
---|
2930 | |
---|
2931 | Flag_Freeze = qr0_OK * Flag_Ta_Neg |
---|
2932 | |
---|
2933 | ! #EW IF(Flag_Freeze.gt.eps6) THEN |
---|
2934 | ! #EW mauxEW = mphyEW(ikl) |
---|
2935 | ! #EW mauxEW(19:19) = 's' |
---|
2936 | ! #EW mphyEW(ikl) = mauxEW |
---|
2937 | ! #EW END IF |
---|
2938 | |
---|
2939 | ps_FRZ = 1.974d4 *n0___r & |
---|
2940 | & /(roa_DY(ikl,k)*exp(7.d0 *log(lamdaR(ikl,k)))) & |
---|
2941 | & *(exp(-0.66d0 *Ta_dgC(ikl,k))-1.d0) |
---|
2942 | qs_FRZ = ps_FRZ * dt__CM *Flag_Freeze |
---|
2943 | qs_FRZ = min(qs_FRZ,qr__CM(ikl,k)) |
---|
2944 | |
---|
2945 | qr__CM(ikl,k) = qr__CM(ikl,k) - qs_FRZ |
---|
2946 | qs__CM(ikl,k) = qs__CM(ikl,k) + qs_FRZ |
---|
2947 | ! CAUTION : graupel production is included into snow production |
---|
2948 | ! proposed modification in line below. |
---|
2949 | ! #qg qg__CM(ikl,k) = qg__CM(ikl,k) + qs_FRZ |
---|
2950 | Ta__CM(ikl,k) = Ta__CM(ikl,k) + Lc_Cpd *qs_FRZ |
---|
2951 | |
---|
2952 | ! Full Debug |
---|
2953 | ! ~~~~~~~~~~ |
---|
2954 | ! #WQ write(6,*) 'Qsfre',qs_FRZ,it_EXP,ikl,k |
---|
2955 | ! #WH if (ikl.eq.ikl0CM(1)) wsfre(kl) = qs_FRZ |
---|
2956 | |
---|
2957 | ! #hy END IF |
---|
2958 | ! #hy END IF |
---|
2959 | |
---|
2960 | ! Debug |
---|
2961 | ! ~~~~~ |
---|
2962 | ! #wH debugH( 1:35) = 'Lin et al.(1983): Rain Freezing ' |
---|
2963 | ! #wH debugH(36:70) = ' ' |
---|
2964 | ! #wH proc_1 = 'Qsfr g/kg' |
---|
2965 | ! #wH procv1 = qs_FRZ |
---|
2966 | ! #wH proc_2 = ' ' |
---|
2967 | ! #wH procv2 = 0. |
---|
2968 | ! #wH proc_3 = ' ' |
---|
2969 | ! #wH procv3 = 0. |
---|
2970 | ! #wH proc_4 = ' ' |
---|
2971 | ! #wH procv4 = 0. |
---|
2972 | ! #wh include 'CMiPhy_Debug.h' |
---|
2973 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1)) & |
---|
2974 | ! #wH& debugV(k,16) = qs_FRZ |
---|
2975 | |
---|
2976 | END DO |
---|
2977 | |
---|
2978 | |
---|
2979 | |
---|
2980 | |
---|
2981 | ! Debug (Summary) |
---|
2982 | ! =============== |
---|
2983 | |
---|
2984 | ! #wH DO k=mz1_CM,mzp |
---|
2985 | |
---|
2986 | ! #wH IF (ii__AP(ikl).EQ.i0__CM(1).AND.jj__AP(ikl).EQ.j0__CM(1))THEN |
---|
2987 | ! #wH IF (k .EQ.mz1_CM) THEN |
---|
2988 | ! #wH write(6,6022) |
---|
2989 | 6022 format(/,'CMiPhy STATISTICS' & |
---|
2990 | & /,'=================') |
---|
2991 | ! #wH write(6,6026) |
---|
2992 | 6026 format( ' T_Air Qv Qw g/kg Qi g/kg CLOUDS % ' & |
---|
2993 | & , ' Qs g/kg Qr g/kg' & |
---|
2994 | & ,' Qi+ E.K.' & |
---|
2995 | & ,' Qi+ Mey.' & |
---|
2996 | & ,' Qi- Sub.' & |
---|
2997 | & ,' Qi- Mlt.' & |
---|
2998 | & ,' Qw+ Cds.' & |
---|
2999 | & ,' Qraut r+' & |
---|
3000 | & ,' QsAUT s+' & |
---|
3001 | & ,' Qracw r+') |
---|
3002 | ! #wH END IF |
---|
3003 | ! #wH write(6,6023) k & |
---|
3004 | ! #wH& , Ta__CM(ikl,k)-Tf_Sno & |
---|
3005 | ! #wH& ,1.e3* qv__DY(ikl,k) & |
---|
3006 | ! #wH& ,1.e3* qw__CM(ikl,k) & |
---|
3007 | ! #wH& ,1.e3* qi__CM(ikl,k) & |
---|
3008 | ! #wH& ,1.e2* CFraCM(ikl,k) & |
---|
3009 | ! #wH& ,1.e3* qs__CM(ikl,k) & |
---|
3010 | ! #wH& ,1.e3* qr__CM(ikl,k) & |
---|
3011 | ! #wH& ,(1.e3* debugV(k,kv),kv=1,08) |
---|
3012 | 6023 format(i3,f6.1,f5.2,2f9.6,f9.1,2f9.3,8f9.6) |
---|
3013 | ! #wH IF (k .EQ.mzp ) THEN |
---|
3014 | ! #wH write(6,6026) |
---|
3015 | ! #wH write(6,*) ' ' |
---|
3016 | ! #wH write(6,6024) |
---|
3017 | 6024 format( 8x,'Z [km]' & |
---|
3018 | & ,' RH.w.[%]' & |
---|
3019 | & ,' RH.i.[%]' ,9x & |
---|
3020 | & ,' Vss cm/s' & |
---|
3021 | & ,' Vrr cm/s' & |
---|
3022 | & ,' Qsacw s+' & |
---|
3023 | & ,' Qsaci s+' & |
---|
3024 | & ,' Qiacr r+' & |
---|
3025 | & ,' Qracs ds' & |
---|
3026 | & ,' Qrevp w-' & |
---|
3027 | & ,' Qssub s-' & |
---|
3028 | & ,' Qsmlt s-' & |
---|
3029 | & ,' Qsfr s+') |
---|
3030 | ! #wH DO nl=mz1_CM,mzp |
---|
3031 | ! #wH write(6,6025) nl ,zsigma( nl)*1.e-3 & |
---|
3032 | ! #wH& ,1.e2* qv__DY(ikl,nl)/qvswCM(ikl,nl) & |
---|
3033 | ! #wH& ,1.e2* qv__DY(ikl,nl)/qvsiCM(ikl,nl) & |
---|
3034 | ! #wH& ,1.e2* FallVs(ikl,nl) & |
---|
3035 | ! #wH& ,1.e2* FallVr(ikl,nl) & |
---|
3036 | ! #wH& ,(1.e3* debugV(nl,kv),kv=9,16) |
---|
3037 | 6025 format(i3,f11.3, 2f9.1,9x, 2f9.1,8f9.6) |
---|
3038 | ! #wH END DO |
---|
3039 | ! #wH write(6,6024) |
---|
3040 | ! #wH write(6,*) ' ' |
---|
3041 | ! #wH END IF |
---|
3042 | |
---|
3043 | ! #wH END IF |
---|
3044 | |
---|
3045 | ! #wH END DO |
---|
3046 | |
---|
3047 | |
---|
3048 | |
---|
3049 | |
---|
3050 | ! Vertical Integrated Energy and Water Content |
---|
3051 | ! ============================================ |
---|
3052 | |
---|
3053 | ! #EW enr1EW(ikl) = 0.0d00 |
---|
3054 | ! #EW wat1EW(ikl) = 0.0d00 |
---|
3055 | |
---|
3056 | ! #EW DO k=1,mzp |
---|
3057 | ! #EW enr1EW(ikl) = enr1EW(ikl ) & |
---|
3058 | ! #EW& +(Ta__CM(ikl,k) & |
---|
3059 | ! #EW& -(qw__CM(ikl,k)+qr__CM(ikl,k)) *Lv_Cpd & |
---|
3060 | ! #EW& -(qi__CM(ikl,k)+qs__CM(ikl,k)) *Ls_Cpd)*dsigmi(k) |
---|
3061 | ! #EW wat1EW(ikl) = wat1EW(ikl ) & |
---|
3062 | ! #EW& +(qv__DY(ikl,k) & |
---|
3063 | ! #EW& + qw__CM(ikl,k)+qr__CM(ikl,k) & |
---|
3064 | ! #EW& + qi__CM(ikl,k)+qs__CM(ikl,k) )*dsigmi(k) |
---|
3065 | ! #EW END DO |
---|
3066 | |
---|
3067 | ! #ew enr1EW(ikl) = enr1EW(ikl ) * psa_DY(ikl) * Grav_I |
---|
3068 | ! #EW wat1EW(ikl) = wat1EW(ikl ) * psa_DY(ikl) * Grav_I |
---|
3069 | ! .. wat1EW [m] contains implicit factor 1.d3 [kPa-->Pa] /ro_Wat |
---|
3070 | |
---|
3071 | |
---|
3072 | |
---|
3073 | |
---|
3074 | ! Precipitation |
---|
3075 | ! ============= |
---|
3076 | |
---|
3077 | ! Hydrometeors Fall Velocity |
---|
3078 | ! -------------------------- |
---|
3079 | |
---|
3080 | ! Pristine Ice Crystals Diameter and Fall Velocity |
---|
3081 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
3082 | DO k=mz1_CM,mzp |
---|
3083 | |
---|
3084 | ! #hy IF (qi__CM(ikl,k).gt.epsn) THEN |
---|
3085 | qi__OK = max(zer0,sign(un_1,qi__CM(ikl,k) - epsn)) |
---|
3086 | ! qi__OK = 1.0 if qi__CM(ikl,k) > epsn |
---|
3087 | ! = 0.0 otherwise |
---|
3088 | |
---|
3089 | ! #hy IF (CCNiCM(ikl,k).gt.1.e0) THEN |
---|
3090 | CCNiOK = max(zer0,sign(un_1,CCNiCM(ikl,k) - 1.e0)) |
---|
3091 | ! CCNiOK = 1.0 if CCNiCM(ikl,k) > 1.e0 |
---|
3092 | ! = 0.0 otherwise |
---|
3093 | |
---|
3094 | Flag_Fall_i = qi__OK * CCNiOK |
---|
3095 | |
---|
3096 | Di_Pri = 0.16d0 *exp(R_1by3*log(R_1000*roa_DY(ikl,k) &! Pristine Ice Crystals Diameter, where 6/(pi*ro_I)**1/3 ~ 0.16 |
---|
3097 | & *max(epsn,qi__CM(ikl,k))/max(un_1 ,CCNiCM(ikl,k)))) ! REF.: Levkov et al. 1992, Contr. Atm. Phys. 65, (5) p.37 |
---|
3098 | |
---|
3099 | FallVi(ikl,k) = Flag_Fall_i * 7.d2*Di_Pri &! Terminal Fall Velocity for Pristine Ice Crystals |
---|
3100 | & *exp( 0.35d0 *log(roa_DY(ikl,mzp) / roa_DY(ikl,k))) ! REF.: Levkov et al. 1992, Contr. Atm. Phys. 65, (4) p.37 |
---|
3101 | ! #hy ELSE |
---|
3102 | ! #hy FallVi(ikl,k) = 0.0d00 |
---|
3103 | |
---|
3104 | ! #hy END IF |
---|
3105 | ! #hy END IF |
---|
3106 | |
---|
3107 | END DO |
---|
3108 | |
---|
3109 | ! Set Up of the Numerical Scheme |
---|
3110 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
3111 | ! #EW watfEW(ikl) = 0.d0 ! Water Flux (Atmosphere --> Surface) |
---|
3112 | |
---|
3113 | ! Snow and Rain Fall Velocity (Correction) |
---|
3114 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
3115 | DO k=mz1_CM,mzp |
---|
3116 | FallVi(ikl,k) = FallVi(ikl,k) *qi__CM(ikl,k)/max(qi__CM(ikl,k),epsn) |
---|
3117 | FallVs(ikl,k) = FallVs(ikl,k) *qs__CM(ikl,k)/max(qs__CM(ikl,k),epsn) |
---|
3118 | ! #VW FallVw(ikl,k) = FallVw(ikl,k) *qw__CM(ikl,k)/max(qw__CM(ikl,k),epsn) |
---|
3119 | FallVr(ikl,k) = FallVr(ikl,k) *qr__CM(ikl,k)/max(qr__CM(ikl,k),epsn) |
---|
3120 | END DO |
---|
3121 | |
---|
3122 | |
---|
3123 | ! ----------------------------------------------------- |
---|
3124 | ! Droplets Precipitation (Implicit Scheme) |
---|
3125 | ! Pristine Ice Crystals Precipitation (Implicit Scheme) |
---|
3126 | ! Snow Particles Precipitation (Implicit Scheme) |
---|
3127 | ! Rain Drops Precipitation (Implicit Scheme) |
---|
3128 | ! ----------------------------------------------------- |
---|
3129 | |
---|
3130 | qwLoss(mz1_CM-1) = 0. |
---|
3131 | qiLoss(mz1_CM-1) = 0. |
---|
3132 | qsLoss(mz1_CM-1) = 0. |
---|
3133 | qrLoss(mz1_CM-1) = 0. |
---|
3134 | |
---|
3135 | ! Precipitation Mass & Flux |
---|
3136 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
3137 | DO k= mz1_CM,mzp |
---|
3138 | qwLoss(k) = 0. |
---|
3139 | |
---|
3140 | a_rodz = Grav_I* psa_DY( ikl) *dsigmi(k) ! Air Mass |
---|
3141 | ! #VW qwFlux = dt__CM* FallVw(ikl,k) *roa_DY(ikl,k) ! Flux Fact. (droplets) |
---|
3142 | qiFlux = dt__CM* FallVi(ikl,k) *roa_DY(ikl,k) ! Flux Fact. (crystals) |
---|
3143 | qsFlux = dt__CM* FallVs(ikl,k) *roa_DY(ikl,k) ! Flux Fact. (snow) |
---|
3144 | qrFlux = dt__CM* FallVr(ikl,k) *roa_DY(ikl,k) ! Flux Fact. (rain) |
---|
3145 | |
---|
3146 | ! #VW qwrodz = qw__CM(ikl,k) *a_rodz &! Droplets Mass |
---|
3147 | ! #VW& + 0.5 *qwLoss(k-1) ! From abov. |
---|
3148 | qirodz = qi__CM(ikl,k) *a_rodz &! Crystals Mass |
---|
3149 | & + 0.5 *qiLoss(k-1) ! From abov. |
---|
3150 | qsrodz = qs__CM(ikl,k) *a_rodz &! Snow Mass |
---|
3151 | & + 0.5 *qsLoss(k-1) ! From abov. |
---|
3152 | qrrodz = qr__CM(ikl,k) *a_rodz &! Rain Mass |
---|
3153 | & + 0.5 *qrLoss(k-1) ! From abov. |
---|
3154 | |
---|
3155 | ! #VW wRatio = &! Var. Fact. |
---|
3156 | ! #VW& min(2.,qwFlux /a_rodz ) ! Flux Limi. |
---|
3157 | iRatio = &! Var. Fact. |
---|
3158 | & min(2.,qiFlux /a_rodz ) ! Flux Limi. |
---|
3159 | sRatio = &! Var. Fact. |
---|
3160 | & min(2.,qsFlux /a_rodz ) ! Flux Limi. |
---|
3161 | rRatio = &! Var. Fact. |
---|
3162 | & min(2.,qrFlux /a_rodz ) ! Flux Limi. |
---|
3163 | |
---|
3164 | ! #VW qwLoss(k) = qwrodz *wRatio &! Mass Loss |
---|
3165 | ! #VW& /(1.+wRatio *0.5) ! |
---|
3166 | qiLoss(k) = qirodz *iRatio &! Mass Loss |
---|
3167 | & /(1.+iRatio *0.5) ! |
---|
3168 | qsLoss(k) = qsrodz *sRatio &! Mass Loss |
---|
3169 | & /(1.+sRatio *0.5) ! |
---|
3170 | qrLoss(k) = qrrodz *rRatio &! Mass Loss |
---|
3171 | & /(1.+rRatio *0.5) ! |
---|
3172 | |
---|
3173 | ! #VW qwrodz = qwrodz -qwLoss(k) &! |
---|
3174 | ! #VW& + 0.5 *qwLoss(k-1) ! From abov. |
---|
3175 | qirodz = qirodz -qiLoss(k) &! |
---|
3176 | & + 0.5 *qiLoss(k-1) ! From abov. |
---|
3177 | qsrodz = qsrodz -qsLoss(k) &! |
---|
3178 | & + 0.5 *qsLoss(k-1) ! From abov. |
---|
3179 | qrrodz = qrrodz -qrLoss(k) &! |
---|
3180 | & + 0.5 *qrLoss(k-1) ! From abov. |
---|
3181 | |
---|
3182 | ! Cooling from above precipitating flux |
---|
3183 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
3184 | Ta__CM(ikl,k) = &! |
---|
3185 | & (Ta__CM(ikl,k ) * a_rodz &! |
---|
3186 | & +Ta__CM(ikl,k-1) *(qwLoss(k-1)+qiLoss(k-1)+qsLoss(k-1)+qrLoss(k-1))) &! |
---|
3187 | & /(a_rodz +qwLoss(k-1)+qiLoss(k-1)+qsLoss(k-1)+qrLoss(k-1)) |
---|
3188 | |
---|
3189 | ! #VW qw__CM(ikl,k) = qwrodz /a_rodz |
---|
3190 | qi__CM(ikl,k) = qirodz /a_rodz |
---|
3191 | qs__CM(ikl,k) = qsrodz /a_rodz |
---|
3192 | qr__CM(ikl,k) = qrrodz /a_rodz |
---|
3193 | ENDDO |
---|
3194 | |
---|
3195 | ! Precipitation reaching the Surface |
---|
3196 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
3197 | d_rain = qrLoss(mzp) + qwLoss(mzp) ! d_rain contains implicit factor 1.e3[kPa->Pa]/ro_Wat[kg/m2->m w.e.] |
---|
3198 | RainCM(ikl) = RainCM(ikl) + d_rain ! RainCM: rain precipitation height since start of run [m] |
---|
3199 | d_snow = qiLoss(mzp) ! d_snow contains implicit factor 1.e3[kPa->Pa]/ro_Wat[kg/m2->m w.e.] |
---|
3200 | Ice_CM(ikl) = Ice_CM(ikl) + d_snow ! Ice_CM: ice precipitation height since start of run [m] |
---|
3201 | d_snow = qsLoss(mzp) + qiLoss(mzp) ! d_snow contains implicit factor 1.e3[kPa->Pa]/ro_Wat[kg/m2->m w.e.] |
---|
3202 | SnowCM(ikl) = SnowCM(ikl) + d_snow ! SnowCM: ice + snow precipitation height since start of run [m] |
---|
3203 | |
---|
3204 | ! #EW watfEW(ikl ) = watfEW(ikl ) - d_rain - d_snow |
---|
3205 | |
---|
3206 | d_rain = 0.0 |
---|
3207 | d_snow = 0.0 |
---|
3208 | |
---|
3209 | |
---|
3210 | |
---|
3211 | |
---|
3212 | ! Fractional Cloudiness ! Guess may be computed (Ek&Mahrt91 fracSC=.T.) |
---|
3213 | ! ====================== ! Final value computed below |
---|
3214 | |
---|
3215 | ! #sc IF (Frac__Clouds.AND..NOT.fracSC) THEN |
---|
3216 | IF (Frac__Clouds) THEN |
---|
3217 | IF(fraCEP) THEN ! ECMWF Large Scale Cloudiness |
---|
3218 | ! ---------------------------- |
---|
3219 | DO k=mz1_CM,mzp |
---|
3220 | CFraCM(ikl,k) = (qi__CM(ikl,k) + qw__CM(ikl,k)& |
---|
3221 | & +qs__CM(ikl,k) * 0.33 & |
---|
3222 | & * (1.-min(1.,exp((Ta__CM(ikl,k) -258.15)*0.1)))) & |
---|
3223 | & / (0.02 * qvswCM(ikl,k) ) |
---|
3224 | CFraCM(ikl,k) =min(1.000 , CFraCM(ikl,k)) |
---|
3225 | CFraCM(ikl,k) =max(0.001 , CFraCM(ikl,k)) & |
---|
3226 | & *max(zer0,sign(un_1,qi__CM(ikl,k) + qw__CM(ikl,k)& |
---|
3227 | & +qs__CM(ikl,k) -3.E-9 )) |
---|
3228 | END DO |
---|
3229 | ELSE ! XU and Randall 1996, JAS 21, p.3099 (4) |
---|
3230 | ! ---------------------------- |
---|
3231 | DO k=mz1_CM,mzp |
---|
3232 | qvs_wi= qvswCM(ikl,k) |
---|
3233 | ! #wi qvs_wi=max(epsn,((qi__CM(ikl,k)+qs__CM(ikl,k))*qvsiCM(ikl,k) & |
---|
3234 | ! #wi& +qw__CM(ikl,k) *qvswCM(ikl,k)) & |
---|
3235 | ! #wi& /max(epsn,qi__CM(ikl,k)+qs__CM(ikl,k) +qw__CM(ikl,k))) |
---|
3236 | RHumid=min(RH_MAX,max(qv__DY(ikl,k),qv_MIN) / qvs_wi) |
---|
3237 | argEXP= ((RH_MAX -RHumid) * qvs_wi)**0.49 |
---|
3238 | argEXP=min(100. *(qi__CM(ikl,k)+qw__CM(ikl,k) & |
---|
3239 | & +qs__CM(ikl,k) * 0.33 & |
---|
3240 | & * (1.-min(1.,exp((Ta__CM(ikl,k)-258.15)*0.1)))) & |
---|
3241 | & /max(epsn ,argEXP),ea_MAX) |
---|
3242 | |
---|
3243 | CFraCM(ikl,k) = ( RHumid ** 0.25 ) * ( 1. - exp(-argEXP) ) |
---|
3244 | END DO |
---|
3245 | END IF |
---|
3246 | |
---|
3247 | ELSE |
---|
3248 | ! #sc ELSE IF (.NOT.Frac__Clouds) THEN |
---|
3249 | DO k=mz1_CM,mzp |
---|
3250 | qCloud = qi__CM(ikl,k) + qw__CM(ikl,k) |
---|
3251 | ! #hy IF (qCloud.gt.epsn) THEN |
---|
3252 | CFraCM(ikl,k) = max(zer0,sign(un_1, qCloud - epsn)) |
---|
3253 | ! CFraCM(ikl,k) = 1.0 if qCloud > epsn |
---|
3254 | ! = 0.0 otherwise |
---|
3255 | |
---|
3256 | ! #hy END IF |
---|
3257 | END DO |
---|
3258 | |
---|
3259 | END IF |
---|
3260 | |
---|
3261 | |
---|
3262 | |
---|
3263 | |
---|
3264 | ! Vertically Integrated Energy and Water Content |
---|
3265 | ! ============================================== |
---|
3266 | |
---|
3267 | ! #EW enr2EW(ikl) = 0.0d00 |
---|
3268 | ! #EW wat2EW(ikl) = 0.0d00 |
---|
3269 | ! .. Vertical Integrated Energy and Water Content |
---|
3270 | |
---|
3271 | ! #EW DO k=1,mzp |
---|
3272 | ! #EW enr2EW(ikl) = enr2EW(ikl) & |
---|
3273 | ! #EW& + (Ta__CM(ikl,k) & |
---|
3274 | ! #EW& - (qw__CM(ikl,k)+qr__CM(ikl,k))*Lv_Cpd & |
---|
3275 | ! #EW& - (qi__CM(ikl,k)+qs__CM(ikl,k))*Ls_Cpd) *dsigmi(k) |
---|
3276 | ! #EW wat2EW(ikl) = wat2EW(ikl) & |
---|
3277 | ! #EW& + (qv__DY(ikl,k) & |
---|
3278 | ! #EW& + qw__CM(ikl,k)+qr__CM(ikl,k) & |
---|
3279 | ! #EW& + qi__CM(ikl,k)+qs__CM(ikl,k) ) *dsigmi(k) |
---|
3280 | ! #EW END DO |
---|
3281 | |
---|
3282 | ! #ew enr2EW(ikl) = enr2EW(ikl) * psa_DY(ikl) * Grav_I |
---|
3283 | ! #EW wat2EW(ikl) = wat2EW(ikl) * psa_DY(ikl) * Grav_I |
---|
3284 | ! .. wat2EW [m] contains implicit factor 1.d3 [kPa-->Pa] /ro_Wat |
---|
3285 | |
---|
3286 | |
---|
3287 | |
---|
3288 | |
---|
3289 | ! Limits on Microphysical Variables |
---|
3290 | ! ================================= |
---|
3291 | |
---|
3292 | DO k=1,mz1_CM |
---|
3293 | qv__DY(ikl,k)=max(qv__DY(ikl,k),qv_MIN) |
---|
3294 | qv__DY(ikl,k)=min(qv__DY(ikl,k),qvsiCM(ikl,k)) |
---|
3295 | qw__CM(ikl,k)= zer0 |
---|
3296 | qi__CM(ikl,k)= zer0 |
---|
3297 | CCNiCM(ikl,k)= zer0 |
---|
3298 | qr__CM(ikl,k)= zer0 |
---|
3299 | qs__CM(ikl,k)= zer0 |
---|
3300 | END DO |
---|
3301 | |
---|
3302 | DO k=mz1_CM,mzp |
---|
3303 | qw__CM(ikl,k)=max(zer0, qw__CM(ikl,k)) |
---|
3304 | qi__CM(ikl,k)=max(zer0, qi__CM(ikl,k)) |
---|
3305 | CCNiCM(ikl,k)=max(zer0, CCNiCM(ikl,k)) |
---|
3306 | qr__CM(ikl,k)=max(zer0, qr__CM(ikl,k)) |
---|
3307 | qs__CM(ikl,k)=max(zer0, qs__CM(ikl,k)) |
---|
3308 | END DO |
---|
3309 | |
---|
3310 | |
---|
3311 | |
---|
3312 | |
---|
3313 | ! +++++++++++++++++++ |
---|
3314 | ENDDO ! ikl=1,kcolp |
---|
3315 | ! +++++++++++++++++++ |
---|
3316 | |
---|
3317 | |
---|
3318 | |
---|
3319 | |
---|
3320 | ! OUTPUT |
---|
3321 | ! ====== |
---|
3322 | |
---|
3323 | ! #WH IF (mod(MinuTU,6).eq.0.and.Sec_TU.eq.0.and.ikl0CM(1).gt.0) THEN |
---|
3324 | ! #WH write(6,1030) HourTU,MinuTU,Sec_TU,it_EXP,i0__CM(1),j0__CM(1) |
---|
3325 | 1030 format(//,i4,'UT',i2,'m',i2,'s (iter.',i6,') / Pt.(',2i4,')' & |
---|
3326 | & ,/,' ==========================================') |
---|
3327 | ! #WH write(6,1031)(k, Z___DY(ikl0CM(1),k),qv__DY(ikl0CM(1),k), & |
---|
3328 | ! #WH& 1.d3*qi_io0(k), 1.d3*qi__CM(ikl0CM(1),k), & |
---|
3329 | ! #WH& 1.d3* wihm1(k),1.d3* wihm2(k), 1.d3* wicnd(k), & |
---|
3330 | ! #WH& 1.d3* widep(k),1.d3* wisub(k), 1.d3* wimlt(k),k=mz1_CM,mzp) |
---|
3331 | 1031 format(/, & |
---|
3332 | & ' | Water Vapor | Cloud Ice, Time n & n+1', & |
---|
3333 | & ' Cloud Ice Nucleation Processes |', & |
---|
3334 | & ' Bergeron Sublimation Melting ', & |
---|
3335 | & /,' k z[m] | qv [g/kg] | qi_n [g/kg] qi_n+[g/kg]', & |
---|
3336 | & ' QiHm1[g/kg] QiHm2[g/kg] QiCnd[g/kg] |', & |
---|
3337 | & ' QiDep[g/kg] QiSub[g/kg] QiMlt[q/kg]', & |
---|
3338 | & /,'------------+--------------+-------------------------', & |
---|
3339 | & '-------------------------------------+', & |
---|
3340 | & '-------------------------------------', & |
---|
3341 | & /,(i3,f8.1,' | ',f12.6,' | ',2f12.6,3d12.4,' | ',3d12.4)) |
---|
3342 | |
---|
3343 | ! #WH write(6,1032)(k,Z___DY(ikl0CM(1),k) & |
---|
3344 | ! #WH& ,1.d3*qs___0(ikl0CM(1),k),1.d3*qs__CM(ikl0CM(1),k) & |
---|
3345 | ! #WH& ,1.d3* wsaut(k), 1.d3* wsaci(k) & |
---|
3346 | ! #WH& ,1.d3* wsacw(k), 1.d3* wiacr(k) & |
---|
3347 | ! #WH& ,1.d3* wsacr(k), 1.d3* wssub(k) & |
---|
3348 | ! #WH& , FallVs(k,ikl0CM(1)),k=mz1_CM,mzp) |
---|
3349 | 1032 format(/, & |
---|
3350 | & ' | Snow Flakes, Time n&n+1 Autoconver. |', & |
---|
3351 | & ' Accretion Processes ===> Snow Flakes |', & |
---|
3352 | & ' Sublimation | Term.F.Vel', & |
---|
3353 | & /,' k z[m] | qs_n [g/kg] qs_n+[g/kg] QsAUT[g/kg] |', & |
---|
3354 | & ' Qsaci[g/kg] Qsacw[g/kg] Qiacr[g/kg] Qsacr[g/kg] |', & |
---|
3355 | & ' QsSub[g/kg] | vs [m/s]', & |
---|
3356 | & /,'------------+--------------------------------------+', & |
---|
3357 | & '--------------------------------------------------+', & |
---|
3358 | & '--------------+-----------', & |
---|
3359 | & /,(i3,f8.1,' | ',2f12.6,e12.4,' | ',4d12.4,' | ',e12.4, & |
---|
3360 | & ' | ',f10.6)) |
---|
3361 | |
---|
3362 | ! #WH write(6,1033)(k,Z___DY(ikl0CM(1),k),Ta__CM(ikl0CM(1),k) |
---|
3363 | ! #WH& ,1.d3*qw_io0(k) ,1.d3*qw__CM(ikl0CM(1),k) |
---|
3364 | ! #WH& ,1.d3* wwevp(k) ,1.d2*CFraCM(ikl0CM(1),k),k=mz1_CM,mzp) |
---|
3365 | 1033 format(/, & |
---|
3366 | & /,' | Temperat.| Cloud Water, Time n&n+1', & |
---|
3367 | & ' Condens/Evp | Cloud ', & |
---|
3368 | & /,' k z[m] | T [K] | qw_n [g/kg] qw_n+[g/kg]', & |
---|
3369 | & ' QwEvp[g/kg] | Fract.', & |
---|
3370 | & /,'------------+----------+-------------------------', & |
---|
3371 | & '-------------+-------', & |
---|
3372 | & /,(i3,f8.1,' | ',f8.3,' | ',2f12.6,e12.4,' | ',f5.1)) |
---|
3373 | |
---|
3374 | ! #WH write(6,1034)(k,Z___DY(ikl0CM(1),k), & |
---|
3375 | ! #WH& ,1.d3*qr___0(k,ikl0CM(1)),1.d3*qr__CM(ikl0CM(1),k), & |
---|
3376 | ! #WH& ,1.d3* wraut(k) ,1.d3* wracw(k) & |
---|
3377 | ! #WH& ,1.d3* wraci(k) ,1.d3* wracs(k) & |
---|
3378 | ! #WH& ,1.d3* wrevp(k) ,1.d3* wsfre(k) & |
---|
3379 | ! #WH& , FallVr(k,ikl0CM(1)), k=mz1_CM,mzp) |
---|
3380 | 1034 format(/, & |
---|
3381 | & /,' | Rain Drops, Time n&n+1 Autoconver. |', & |
---|
3382 | & ' Accretion Processes ===> Rain Drops |', & |
---|
3383 | & ' Evaporation Freezing | Term.F.Vel', & |
---|
3384 | & /,' k z[m] | qr_n [g/kg] qr_n+[g/kg] Qraut[g/kg] |', & |
---|
3385 | & ' Qracw[g/kg] Qraci[g/kg] Qracs[g/kg] |', & |
---|
3386 | & ' QrEvp[g/kg] QsFre[g/kg] | vr [m/s]', & |
---|
3387 | & /,'------------+--------------------------------------+', & |
---|
3388 | & '--------------------------------------+', & |
---|
3389 | & '--------------------------+-----------', & |
---|
3390 | & /,(i3,f8.1,' | ',2f12.6,e12.4,' | ',3d12.4,' | ',2d12.4, & |
---|
3391 | & ' | ',f10.6)) |
---|
3392 | |
---|
3393 | ! #WH DO k=mz1_CM,mzp |
---|
3394 | ! #WH wihm1(k) = 0.d0 |
---|
3395 | ! #WH wihm2(k) = 0.d0 |
---|
3396 | ! #WH wicnd(k) = 0.d0 |
---|
3397 | ! #WH widep(k) = 0.d0 |
---|
3398 | ! #WH wisub(k) = 0.d0 |
---|
3399 | ! #WH wimlt(k) = 0.d0 |
---|
3400 | ! #WH wwevp(k) = 0.d0 |
---|
3401 | ! #WH wraut(k) = 0.d0 |
---|
3402 | ! #WH wsaut(k) = 0.d0 |
---|
3403 | ! #WH wracw(k) = 0.d0 |
---|
3404 | ! #WH wsacw(k) = 0.d0 |
---|
3405 | ! #WH wsaci(k) = 0.d0 |
---|
3406 | ! #WH wraci(k) = 0.d0 |
---|
3407 | ! #WH wiacr(k) = 0.d0 |
---|
3408 | ! #WH wsacr(k) = 0.d0 |
---|
3409 | ! #WH wracs(k) = 0.d0 |
---|
3410 | ! #WH wrevp(k) = 0.d0 |
---|
3411 | ! #WH wssub(k) = 0.d0 |
---|
3412 | ! #WH wsmlt(k) = 0.d0 |
---|
3413 | ! #WH wsfre(k) = 0.d0 |
---|
3414 | ! #WH END DO |
---|
3415 | ! #WH END IF |
---|
3416 | |
---|
3417 | |
---|
3418 | ! Vertical Integrated Energy and Water Content: OUTPUT |
---|
3419 | ! ==================================================== |
---|
3420 | |
---|
3421 | ! #EW IF (ikl0CM(1).gt.0) THEN |
---|
3422 | ! #EW WaterB = wat2EW(ikl0CM(1))-wat1EW(ikl0CM(1))-watfEW(ikl0CM(1)) |
---|
3423 | ! #EW write(6,606) it_EXP, & |
---|
3424 | ! #EW& enr0EW(ikl0CM(1)),1.d3*wat0EW(ikl0CM(1)), & |
---|
3425 | ! #EW& mphyEW(ikl0CM(1)), & |
---|
3426 | ! #EW& enr1EW(ikl0CM(1)),1.d3*wat1EW(ikl0CM(1)), & |
---|
3427 | ! #EW& enr2EW(ikl0CM(1)),1.d3*wat2EW(ikl0CM(1)), & |
---|
3428 | ! #EW& 1.d3*watfEW(ikl0CM(1)), & |
---|
3429 | ! #EW& 1.d3*WaterB |
---|
3430 | 606 format(i9,' Before mPhy: E0 =',f12.6,' W0 = ',f9.6,3x,a20 & |
---|
3431 | & ,3x,/,9x,' Before Prec: E1 =',f12.6,' W1 = ',f9.6 & |
---|
3432 | & , /,9x,' After Prec: E2 =',f12.6,' W2 = ',f9.6 & |
---|
3433 | & , ' W Flux =',f9.6 & |
---|
3434 | & , ' Div(W) =',e9.3) |
---|
3435 | ! #EW END IF |
---|
3436 | |
---|
3437 | IF (MinuTU.eq.0.and.Sec_TU.eq.0.and.mod(HourTU,3).eq.0) THEN |
---|
3438 | DO ipt_CM=1,npt_CM |
---|
3439 | ikl=ikl0CM(ipt_CM) |
---|
3440 | |
---|
3441 | write(4,1037) HourTU,MinuTU, & |
---|
3442 | & i0__CM(ipt_CM),j0__CM(ipt_CM) |
---|
3443 | 1037 format(/,' Ice-Crystal mPhy ', & |
---|
3444 | & 2x,' ',2x,1x,i2,'h',i2,'UT', & |
---|
3445 | & ' -- Grid Point (',i5,',',i5,')', & |
---|
3446 | & /,' =========================================================='& |
---|
3447 | & , /,' | z [m] | T [K] | qi[g/kg] |' & |
---|
3448 | & , ' Ni [m-3] | Ni0[m-3] | vi [m/s] | qs[g/kg] |' & |
---|
3449 | & , /,'-----+---------+--------+----------+' & |
---|
3450 | & , '----------+----------+----------+----------+') |
---|
3451 | write(4,1038)(k,Z___DY(ikl,k),Ta__CM(ikl,k) & |
---|
3452 | & ,qi__CM(ikl,k)*1.d3 & |
---|
3453 | & ,CCNiCM(ikl,k),Fletch(ikl,k) & |
---|
3454 | & ,FallVi(ikl,k),qs__CM(ikl,k)*1.d3 & |
---|
3455 | & ,k=mz1_CM,mzp) |
---|
3456 | 1038 format((i4,' |' , f8.1,' |',f7.2,' |',f9.6,' |', & |
---|
3457 | & 2(d9.3,' |'),2(f9.6,' |'))) |
---|
3458 | |
---|
3459 | END DO |
---|
3460 | END IF |
---|
3461 | |
---|
3462 | |
---|
3463 | |
---|
3464 | |
---|
3465 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
3466 | ! ! |
---|
3467 | ! DE-ALLOCATION ! |
---|
3468 | ! ============= ! |
---|
3469 | ! ! |
---|
3470 | IF (FlagDALLOC) THEN ! |
---|
3471 | |
---|
3472 | deallocate ( qw_io0 ) ! Droplets Concentration entering CMiPhy [kg/kg] |
---|
3473 | deallocate ( qi_io0 ) ! Ice Part. Concentration entering CMiPhy [kg/kg] |
---|
3474 | deallocate ( qs___0 ) ! Snow Part. Concentration entering CMiPhy [kg/kg] |
---|
3475 | ! #qg deallocate ( qg___0 ) ! Graupels Concentration entering CMiPhy [kg/kg] |
---|
3476 | deallocate ( qr___0 ) ! Rain Drops Concentration entering CMiPhy [kg/kg] |
---|
3477 | deallocate ( Ta_dgC ) ! Air Temperature [dgC] |
---|
3478 | deallocate ( sqrrro ) ! sqrt(roa(mzp)/roa(k)) [-] |
---|
3479 | deallocate ( qsiEFF ) ! EFFective Saturation Specific Humidity over Ice [kg/kg] |
---|
3480 | deallocate ( Fletch ) ! Monodisperse Nb of hexagonal Plates, Fletcher (1962) [-] |
---|
3481 | deallocate ( lamdaS ) ! Marshall-Palmer distribution parameter for Snow Particl. |
---|
3482 | ! #qg deallocate ( lamdaG ) ! Marshall-Palmer distribution parameter for Graupels |
---|
3483 | deallocate ( lamdaR ) ! Marshall-Palmer distribution parameter for Rain Drops |
---|
3484 | deallocate ( ps_ACR ) ! Accretion of Snow by Rain Rate [kg/kg/s] |
---|
3485 | deallocate ( ps_ACW ) ! Accretion of Cloud Drop. by Snow Particl. Rate [kg/kg/s] |
---|
3486 | deallocate ( FallVw ) ! Sedimentation Velocity of Droplets |
---|
3487 | deallocate ( FallVi ) ! Sedimentation Velocity of Ice Particles |
---|
3488 | deallocate ( FallVs ) ! Sedimentation Velocity of Snow Particles |
---|
3489 | ! #qg deallocate ( FallVg ) ! Sedimentation Velocity of Snow Particles |
---|
3490 | deallocate ( FallVr ) ! Sedimentation Velocity of Rain Drops |
---|
3491 | deallocate ( qwLoss ) ! Mass Loss related to Sedimentation of Rain Droplets |
---|
3492 | deallocate ( qiLoss ) ! Mass Loss related to Sedimentation of Ice Crystals |
---|
3493 | deallocate ( qsLoss ) ! Mass Loss related to Sedimentation of Snow Particles |
---|
3494 | deallocate ( qrLoss ) ! Mass Loss related to Sedimentation of Rain Drops |
---|
3495 | ! #wH deallocate ( debugV ) ! Debug Variable (of 16 microphysical processes) |
---|
3496 | |
---|
3497 | ! #WH deallocate ( wihm1 ) ! Cloud Droplets Freezing |
---|
3498 | ! #WH deallocate ( wihm2 ) ! Ice Crystals Homogeneous Sublimation |
---|
3499 | ! #WH deallocate ( wicnd ) ! Ice Crystals Nucleation (Emde & Kahlig) |
---|
3500 | ! #WH deallocate ( widep ) ! Ice Crystals Growth Bergeron Process (Emde & Kahlig) |
---|
3501 | ! #WH deallocate ( wisub ) ! Ice Crystals Sublimation (Levkov) |
---|
3502 | ! #WH deallocate ( wimlt ) ! Ice Crystals Melting |
---|
3503 | ! #WH deallocate ( wwevp ) ! Water Vapor Condensation / Evaporation (Fractional Cloudiness) |
---|
3504 | ! #WH deallocate ( wraut ) ! Cloud Droplets AUTO-Conversion |
---|
3505 | ! #WH deallocate ( wsaut ) ! Ice Crystals AUTO-Conversion |
---|
3506 | ! #WH deallocate ( wracw ) ! Accretion of Cloud Droplets by Rain, Ta > 0, --> Rain |
---|
3507 | ! #WH deallocate ( wsacw ) ! Accretion of Cloud Droplets by Rain, Ta < 0, --> Snow |
---|
3508 | ! #WH deallocate ( wsaci ) ! Accretion of Ice Crystals by Snow --> Snow |
---|
3509 | ! #WH deallocate ( wraci ) ! Accretion of Ice Crystals by Rain --> Snow |
---|
3510 | ! #WH deallocate ( wiacr ) ! Accretion of Rain by Ice Crystals --> Snow |
---|
3511 | ! #WH deallocate ( wsacr ) ! Accretion of Rain by Snow --> Snow |
---|
3512 | ! #WH deallocate ( wracs ) ! Accretion of Snow by Rain --> Snow, Rain |
---|
3513 | ! #WH deallocate ( wrevp ) ! Rain Drops Evaporation |
---|
3514 | ! #WH deallocate ( wssub ) ! Snow Particles Sublimation |
---|
3515 | ! #WH deallocate ( wsmlt ) ! Snow Particles Melting |
---|
3516 | ! #WH deallocate ( wsfre ) ! Rain Drops Freezing |
---|
3517 | ! ! |
---|
3518 | END IF ! |
---|
3519 | ! ! |
---|
3520 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
3521 | |
---|
3522 | |
---|
3523 | |
---|
3524 | |
---|
3525 | return |
---|
3526 | end subroutine CMiPhy |
---|