[2089] | 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 |
---|