1 ! The National Taiwan University (NTU) scheme is a multi-moment bulk scheme (two moments for the liquid-phase and 3 moments
2 ! for the ice-phase hydrometeors) with consideration for ice crystal shape and density variations. This scheme is developed
3 ! by Dr. Tzu-Chin Tsai and Prof. Jen-Ping Chen at the National Taiwan University. The NTU multi-moment bulk microphysics scheme
4 ! default version implemented into the WRF model by Tzu-Chin Tsai at NTU (d97229002@ntu.edu.tw; tzuchin12@gmail.com)
6 !-------------------------------------------------------------------------------------------------------------------------------
8 ! 1. Chen, J.-P. and S.-T. Liu, 2004: Physically based two-moment bulkwater parametrization for warm-cloud microphysics.
9 ! Quart. J. Roy. Meteor. Soc., 130, 51-78.
10 ! 2. Cheng, C.-T., W.-C. Wang, and J.-P. Chen, 2007: A modeling study of aerosol impacts on cloud microphysics and radiative
11 ! properties. Quart. J. Roy. Meteor. Soc., 133, 283-297.
12 ! 3. Cheng, C.-T., W.-C. Wang, and J.-P. Chen, 2010: Simulation of the effects of increasing cloud condensation nuclei on
13 ! mixed-phase clouds and precipitation of a front system. Atmos. Res., 96, 461-476.
14 ! 4. Chen, J.-P. and T.-C. Tsai, 2016: Triple-moment modal parameterization for the adaptive growth habit of pristine ice
15 ! crystals. J. Atmos. Sci., 73, 2105-2122.
16 ! 5. Tsai, T.-C., and J.-P. Chen, 2020: Multi-moment ice bulk microphysics scheme with consideration for particle shape
17 ! and apparent density. Part I: Methodology and idealized simulation. J. Atmos. Sci., 77, 1821-1850.
19 !--------------------------------------------------------------------------------------------------------------------------------
20 ! The notation for terms involving two interacting categories are denoted by B(x,y)MPxy, where B is the prognostic variable
21 ! MP represents the microphysical processes, and the subscripts x and y indicate the quantity B being transferred from the
22 ! hydrometeor category x to y. If terms involve three interacting categories, then a three-letter subscript of xyz would
23 ! follow the microphysical process with the destination of hydrometeor category z. Another notation denoted by QHomp is
24 ! only used for the change rate of the hailstone mixing ratio, and o indicates whether the dry (denote d) or wet (denote w)
25 ! growth mode occurs. Please referred to supplemental information related to the Tsai and Chen (2020) is available at the
26 ! Journals Online website: https://doi.org/10.1175/JAS-D-19-0125.s1.
28 !=================================================================================================================================
35 PRIVATE :: GAMMA,GAMLN,GAMIN,GAMMP,GSER,CFG,GUESS_RC,YEQU,DYEQU, &
38 INTEGER, PRIVATE, PARAMETER :: ID_NH42SO4 = 1, &! 1. (NH4)2SO4
39 ID_DUST = 0, &! 2. DUST
41 INTEGER, PRIVATE, PARAMETER :: INSPEC = 2 ! 1. SOOT; 2. SD; 3. AD; 4. BT
42 INTEGER, PRIVATE, PARAMETER :: ICE_SHAPE = 1 ! 0. SPHERICAL; 1. ASPHERICAL; PRISTINE ICE (HABIT)
43 INTEGER, PRIVATE, PARAMETER :: AGG_SHAPE = 1 ! 0. SPHERICAL; 1. CL94; ASPHERICAL AGGREGATES
44 INTEGER, PRIVATE, PARAMETER :: ICE_RHOI = 1 ! 0. FIXED; 1. PREDICT; 2. FIXED; PRISTINE ICE DENSITY
45 INTEGER, PRIVATE, PARAMETER :: ICE_RHOS = 1 ! 0. FIXED; 1. PREDICT; 2. MAPPING; AGGREGATES DENSITY
46 INTEGER, PRIVATE, PARAMETER :: ICE_RHOG = 1 ! 0. FIXED; 1. CL1993; 2. RH1985; PREDICT GRAUPEL DENSITY
47 INTEGER, PRIVATE, PARAMETER :: ICE_VENT = 2 ! 0. OFF; 1. HP76; 2. CL94; 3. JW99; VENTILATION EFFECT
48 INTEGER, PRIVATE, PARAMETER :: HAIL_VENT = 1 ! 0. DEFAULT; 1. CHENG ET AL. (2014); VENTILATION EFFECT
49 INTEGER, PRIVATE, PARAMETER :: HWET_MODE = 1 ! 0. OFF; 1. ON; HAILSTONE WET GROWTH
50 INTEGER, PRIVATE, PARAMETER :: LIQ_VTC = 1 ! 0. RAMS/FIXED; 1.,2. CL04; CLOUD DROPS/FLUX FALL SPEED
51 INTEGER, PRIVATE, PARAMETER :: LIQ_VTR = 1 ! 0. RAMS/FIXED; 1.,2. CL04; RAIN DROPS/FLUX FALL SPEED
52 INTEGER, PRIVATE, PARAMETER :: ICE_VTI = 1 ! 0. MORR/FIXED; 1. MH05; PRISTINE ICE FALL SPEED
53 INTEGER, PRIVATE, PARAMETER :: ICE_VTS = 1 ! 0. RAMS/FIXED; 1. MH05/EM16 SYNOPTIC;
54 ! 2. SH09 CRYSTAL-FACE; AGGREGATES FALL SPEED
55 INTEGER, PRIVATE, PARAMETER :: ICE_VTG = 1 ! 0. RAMS/FIXED; 1. MH05; GRAUPEL FALL SPEED
56 INTEGER, PRIVATE, PARAMETER :: ICE_VTH = 1 ! 0. RAMS/FIXED; 1. MH05; HAIL FALL SPEED
57 INTEGER, PRIVATE, PARAMETER :: AFAC_3M = 1 ! 0. FIXED; 1.,2. VARIABLE AFAC PARAMETER
58 INTEGER, PRIVATE, PARAMETER :: AFAR_3M = 1 ! 0. FIXED; 1.,2. VARIABLE AFAR PARAMETER
59 INTEGER, PRIVATE, PARAMETER :: AFAI_3M = 1 ! 0. FIXED; 1.,2. VARIABLE AFAI PARAMETER
60 INTEGER, PRIVATE, PARAMETER :: AFAS_3M = 1 ! 0. FIXED; 1.,2. VARIABLE AFAS PARAMETER
61 INTEGER, PRIVATE, PARAMETER :: AFAG_3M = 1 ! 0. FIXED; 1.,2. VARIABLE AFAG PARAMETER
62 INTEGER, PRIVATE, PARAMETER :: AFAH_3M = 1 ! 0. FIXED; 1.,2. VARIABLE AFAH PARAMETER
63 INTEGER, PRIVATE, PARAMETER :: SAT_ADJ = 0 ! 0. OFF (SUPER-SAT); 1. WITH SATURATION ADJUSTMENT
64 INTEGER, PRIVATE, PARAMETER :: NCCN = 3 ! for aerosol modes
65 INTEGER, PRIVATE, PARAMETER :: NAER = 2 ! for aerosol categories of CCN and IN
66 INTEGER, PRIVATE, PARAMETER :: MAER = 4, NAER1 = 4, NAER2 = 1
67 INTEGER, PRIVATE, PARAMETER :: NAERT = NAER1+NAER2 ! 5
68 INTEGER, PRIVATE, PARAMETER :: NTBXA = 25 ! size of tables for the first guess of Rc
69 INTEGER, PRIVATE, DIMENSION(NAER) :: IBAER
70 INTEGER, PRIVATE, DIMENSION(NAER) :: NAERN(1:NAER)=(/NAER1,NAER2/)
71 DOUBLE PRECISION, PRIVATE, SAVE, DIMENSION(NTBXA) :: TBLRC ! table of curresponding R-cut-off
72 DOUBLE PRECISION, PRIVATE, SAVE, DIMENSION(NTBXA,NAER) :: TBLXF
73 !----------------- FOR MICROPHYSICAL PROCESSES -------------------------
74 REAL, PRIVATE, PARAMETER :: DTMIN = 0.01 ! [sec] mininum dt for cond./evap. calculation
75 REAL, PRIVATE, PARAMETER :: DT20S = 20. ! [sec] dt for coalscence and accretion calculation
76 REAL, PRIVATE, PARAMETER :: PI = 3.1415926535897932384626434
77 REAL, PRIVATE, PARAMETER :: SQRTPI = 9.189385332046727417803297E-1
78 REAL, PRIVATE, PARAMETER :: SQRT2 = 1.4142135623730950488016887
79 REAL, PRIVATE, PARAMETER :: THRD = 1./3., C4PI3 = 4.*PI/3.
80 REAL, PRIVATE, PARAMETER :: CP = 1.00546E3, TK0C = 2.7315E2
81 REAL, PRIVATE, PARAMETER :: R = 2.87058E2, RV = 4.61495E2
82 REAL, PRIVATE, PARAMETER :: CPI = 2.093E3, CPW = 4.218E3 ! SPECIFIC HEAT
83 REAL, PRIVATE, PARAMETER :: CMW = 1.8015E-2
84 REAL, PRIVATE, PARAMETER :: RHOSU = 8.5E4/(2.8715E2*2.7315E2)
85 REAL, PRIVATE, PARAMETER :: RHOW = 9.97E2, RHOG1 = 4.E2 ! BULK DENSITY
86 REAL, PRIVATE, PARAMETER :: RHOI0 = 9.1E2, iRHOI0 = 1./RHOI0 ! SOLID ICE DENSITY
87 REAL, PRIVATE, PARAMETER :: RHOS0 = 1.E2, RHOI1 = 5.E2
88 REAL, PRIVATE, PARAMETER :: RHOG0 = (0.078+0.184*6.-0.015*36.)*1000
89 REAL, PRIVATE, PARAMETER :: RHOH = 9.E2, iRHOH = 1./RHOH
90 REAL, PRIVATE, PARAMETER :: RHOIMIN = 5.E1, RHOIMAX = RHOI0
91 REAL, PRIVATE, PARAMETER :: C4PI3W = 4.*PI*RHOW/3.
92 REAL, PRIVATE, PARAMETER :: iAMI0 = 6./(PI*RHOI0)
93 REAL, PRIVATE, PARAMETER :: G = 9.806, iAPW = 4./(PI*RHOW)
94 REAL, PRIVATE, PARAMETER :: AAW = PI/4., V2M3 = 6./PI
95 REAL, PRIVATE, PARAMETER :: BMW = 3., AMW = PI*RHOW/6. ! MASS-DIAMETER PARAMETERS
96 REAL, PRIVATE, PARAMETER :: BMI0 = 3., AMI0 = PI*RHOI0/6. !
97 REAL, PRIVATE, PARAMETER :: BMS = 3., AMS0 = PI*RHOS0/6. !
98 REAL, PRIVATE, PARAMETER :: BMG = 3., AMG0 = PI*RHOG1/6. !
99 REAL, PRIVATE, PARAMETER :: BMH = 3., AMH = PI*RHOH/6. !
100 REAL, PRIVATE, PARAMETER :: iAMW = 1./AMW, iAMH = 1./AMH !
101 REAL, PRIVATE, PARAMETER :: AIMM = 6.6E-1, BIMM = 1.E2 ! BIGG 1953 PARAMETERS FOR IMMERSION FREEZING
102 REAL, PRIVATE, PARAMETER :: AVSG = 8.6E-1, BVSG = 2.8E-1 ! VENTILATION COEFFICIENTS
103 REAL, PRIVATE, PARAMETER :: AVRH = 7.8E-1, BVRH = 3.08E-1 !
104 REAL, PRIVATE, PARAMETER :: AVIS = 1., BVIS = 1.4E-1 !
105 REAL, PRIVATE, PARAMETER :: VENC1 = 3.09E-2, VENC2 = 1.447E-1 ! VENTILATION COEFFICIENTS
106 REAL, PRIVATE, PARAMETER :: VENP1 = 1.05E-2, VENP2 = 2.28E-2 ! FOR PRISITNE ICE CRYSTAL
107 REAL, PRIVATE, PARAMETER :: VENH1 = 0.22385, VENH2 = 0.00101 ! FOR HAILSTONE (Cheng et al., 2014)
108 REAL, PRIVATE, PARAMETER :: NSMALL = 1.E-2, NSMAL1 = 1.E2 ! MOMENTS LIMITS
109 REAL, PRIVATE, PARAMETER :: RLIMIT = 1.E-32, SLIMIT = 1.E-2 !
110 REAL, PRIVATE, PARAMETER :: QSMAL1 = 1.E-9, QSMALL = 1.E-14 !
111 REAL, PRIVATE, PARAMETER :: QLIMIT = 1.E-6, RSMALL = 1.E-20 !
112 REAL, PRIVATE, PARAMETER :: ASMALL = 1.E-12, ISMALL = 1.E-17 !
113 REAL, PRIVATE, PARAMETER :: BOLTZ = 1.38E-23, MLIMIT = 1.E-2 !
114 REAL, PRIVATE, PARAMETER :: VTZ0 = 5.83, VTC0 = 0.6 ! SURFACE ROUGHNESS PARAMETERS
115 REAL, PRIVATE, PARAMETER :: VTC1 = 0.151931, VTC2 = VTZ0**2./4. ! VTC1=4./(VTZ0**2.*VTC0**5.E-1)
116 REAL, PRIVATE, PARAMETER :: VTA0 = 1.7E-3, VTB0 = 0. ! VTB0 = 0.8
117 REAL, PRIVATE, PARAMETER :: AVC0 = 3.E7, BVC0 = 2. ! Morrison scheme
118 REAL, PRIVATE, PARAMETER :: AVR0 = 841.997, BVR0 = 0.8 ! Morrison scheme
119 REAL, PRIVATE, PARAMETER :: AVI0 = 700., BVI0 = 1. ! Morrison scheme
120 REAL, PRIVATE, PARAMETER :: AVS0 = 11.72, BVS0 = 0.41 ! Locatelli and Hobbs (1974)
121 REAL, PRIVATE, PARAMETER :: AVG0 = 19.3, BVG0 = 0.37 ! Ferrier (1994)
122 REAL, PRIVATE, PARAMETER :: AVH0 = 206.89, BVH0 = 0.6384 ! Ferrier (1994)
123 REAL, PRIVATE, PARAMETER :: VTCMAX = 1., VTSMAX = 10. ! UPPER LIMIT FALL SPEED CHECK
124 REAL, PRIVATE, PARAMETER :: VTIMAX = 10., VTRMAX = 15. !
125 REAL, PRIVATE, PARAMETER :: VTGMAX = 20., VTHMAX = 25. !
126 REAL, PRIVATE, PARAMETER :: AFAC0 = 0., AFAR0 = 0. ! INITIAL SPECTRAL INDEX
127 REAL, PRIVATE, PARAMETER :: AFAI0 = 3., AFAS0 = 0. !
128 REAL, PRIVATE, PARAMETER :: AFAG0 = 0., AFAH0 = 0. !
129 REAL, PRIVATE, PARAMETER :: SASMAX = 1., SASMIN = 1.E-3 ! ASPECT RATIO CHECK FOR AGGREGATES SHAPE
130 REAL, PRIVATE, PARAMETER :: KCCMIN = 0.223, KCCMAX = 0.999 ! MOMENT RATIO CHECK
131 REAL, PRIVATE, PARAMETER :: KCRMIN = 0.223, KCRMAX = 0.999 !
132 REAL, PRIVATE, PARAMETER :: KCIMIN = 0.556, KCIMAX = 0.999 ! KC = 0.999, AFAMAX = 2996
133 REAL, PRIVATE, PARAMETER :: KCSMIN = 0.223, KCSMAX = 0.999 ! KC = 0.995, AFAMAX = 596
134 REAL, PRIVATE, PARAMETER :: KCGMIN = 0.223, KCGMAX = 0.999 ! KC = 0.99, AFAMAX = 296
135 REAL, PRIVATE, PARAMETER :: KCHMIN = 0.223, KCHMAX = 0.999 ! KC = 0.95, AFAMAX = 56
136 REAL, PRIVATE, PARAMETER :: AFAMAX = 3.E4, AFAMIN = 0. ! SPECTRAL INDEX CHECK
137 REAL, PRIVATE, PARAMETER :: AFU = 3.125E-1, BFU = 1.0552E-3 ! CL04 FALL SPEED ADJUSTMENT
138 REAL, PRIVATE, PARAMETER :: CFU = -2.4023
139 REAL, PRIVATE, PARAMETER :: DCMIN = 1.E-7, DCMAX = 1.E-4 ! DIAMETER CHECK
140 REAL, PRIVATE, PARAMETER :: DIMIN = 1.E-6, DIMAX = 5.E-3 !
141 REAL, PRIVATE, PARAMETER :: DRMIN = 3.E-5, DRMAX = 6.E-3 !
142 REAL, PRIVATE, PARAMETER :: DSMIN = 2.E-5, DSMAX = 1.E-2 !
143 REAL, PRIVATE, PARAMETER :: DGMIN = 5.E-5, DGMAX = 2.E-2 !
144 REAL, PRIVATE, PARAMETER :: DHMIN = 1.E-3, DHMAX = 4.E-2 !
145 REAL, PRIVATE, PARAMETER :: RCMIN = DCMIN/2., RCMAX = DCMAX/2. ! RADIUS CHECK
146 REAL, PRIVATE, PARAMETER :: RRMIN = DRMIN/2., RRMAX = DRMAX/2. !
147 REAL, PRIVATE, PARAMETER :: DI0 = 6.E-6, DCR = 100.E-6 ! ISOMETRIC LIMIT FOR PI; THRESHOLD FOR RAINDROPS
148 REAL, PRIVATE, PARAMETER :: MI0 = AMI0*DI0**BMI0 ! INITIAL PI MASS
149 REAL, PRIVATE, PARAMETER :: SIG1 = -6.2685, SIG2 = -2.7312E-1 ! CL04 CLOUD DROPLETS SPECTRUM
150 REAL, PRIVATE, PARAMETER :: SIG3 = 2.2606E-1, MNR1 = -2.2920 !
151 REAL, PRIVATE, PARAMETER :: MNR2 = -3.5158E-1, MNR3 = 3.4708E-1 !
152 REAL, PRIVATE, PARAMETER :: EFC1 = -1.2560, EFC2 = -1.7904E-02 ! CL04 CLOUD DROPLETS EFFECTIVE RADIUS
153 REAL, PRIVATE, PARAMETER :: EFC3 = 8.5536E-01, EFR1 = -9.9216E-02 ! CL04 RAINDROPS EFFECTIVE RADIUS
154 REAL, PRIVATE, PARAMETER :: EFR2 = 2.9490E-02, EFR3 = 9.9238E-01 !
155 REAL, DIMENSION(0:120) :: ITBLE ! DEPOSITION GROWTH COEFFICIENTS
156 DATA ITBLE /1.000000,0.979490,0.959401,0.939723,0.920450, &
157 0.899498,0.879023,0.857038,0.833681,0.810961, &
158 0.783430,0.755092,0.703072,0.537032,0.467735, &
159 0.524807,0.630957,0.812831,1.096478,1.479108, &
160 1.905461,2.089296,2.290868,2.398833,2.454709, &
161 2.426610,2.371374,2.290868,2.137962,1.995262, &
162 1.862087,1.737801,1.621810,1.513561,1.396368, &
163 1.288250,1.188502,1.096478,1.000000,0.922571, &
164 0.851138,0.785236,0.724436,0.668344,0.616595, &
165 0.575440,0.537032,0.501187,0.467735,0.436516, &
166 0.407380,0.380189,0.354813,0.331131,0.316228, &
167 0.301995,0.291743,0.285102,0.281838,0.278612, &
168 0.275423,0.278612,0.281838,0.285102,0.291743, &
169 0.298538,0.309030,0.319890,0.331131,0.346737, &
170 0.367282,0.393550,0.426580,0.457088,0.489779, &
171 0.524807,0.562341,0.609537,0.660693,0.716143, &
172 0.785236,0.860994,0.954993,1.047129,1.148154, &
173 1.258925,1.380384,1.496236,1.603245,1.698244, &
174 1.778279,1.840772,1.883649,1.905461,1.905461, &
175 1.883649,1.862087,1.840772,1.798871,1.737801, &
176 1.698244,1.640590,1.584893,1.548817,1.513561, &
177 1.475707,1.452112,1.428894,1.412538,1.393157, &
178 1.377209,1.361445,1.348963,1.336596,1.327394, &
179 1.318257,1.309182,1.303167,1.294196,1.288250,1.279381/
180 REAL, DIMENSION(0:167) :: IECC ! JW99 RIMING COLLECTION EFFICIENCY COLUMNS
181 DATA IECC /0.00,0.03,0.29,0.25,0.00,0.00,0.00,0.00,0.00,0.00, &
182 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
183 0.00,0.00,0.10,0.42,0.50,0.47,0.21,0.00,0.00,0.00, &
184 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
185 0.00,0.00,0.00,0.15,0.49,0.56,0.55,0.46,0.10,0.00, &
186 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
187 0.00,0.00,0.00,0.00,0.20,0.52,0.61,0.62,0.59,0.49, &
188 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
189 0.00,0.00,0.00,0.00,0.00,0.25,0.62,0.72,0.75,0.74, &
190 0.71,0.68,0.57,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
191 0.00,0.00,0.00,0.00,0.00,0.00,0.30,0.70,0.80,0.84, &
192 0.85,0.85,0.84,0.83,0.81,0.77,0.69,0.10,0.00,0.00, &
193 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.35,0.75,0.85, &
194 0.89,0.91,0.92,0.92,0.91,0.90,0.89,0.87,0.85,0.82, &
195 0.71,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.40,0.80, &
196 0.89,0.93,0.94,0.95,0.95,0.95,0.95,0.95,0.95,0.94, &
197 0.93,0.92,0.91,0.88,0.80,0.15,0.00,0.00/
198 REAL, DIMENSION(0:167) :: IEPC ! JW99 RIMING COLLECTION EFFICIENCY PLATES
199 DATA IEPC /0.00,0.00,0.13,0.41,0.00,0.00,0.00,0.00,0.00,0.00, &
200 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
201 0.00,0.00,0.00,0.25,0.54,0.56,0.39,0.00,0.00,0.00, &
202 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
203 0.00,0.00,0.00,0.08,0.57,0.75,0.83,0.85,0.86,0.84, &
204 0.78,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00, &
205 0.00,0.00,0.00,0.00,0.10,0.65,0.80,0.87,0.90,0.91, &
206 0.91,0.91,0.88,0.78,0.00,0.00,0.00,0.00,0.00,0.00, &
207 0.00,0.00,0.00,0.00,0.00,0.12,0.67,0.81,0.88,0.91, &
208 0.92,0.93,0.93,0.92,0.91,0.89,0.81,0.00,0.00,0.00, &
209 0.00,0.00,0.00,0.00,0.00,0.00,0.15,0.68,0.82,0.89, &
210 0.91,0.93,0.94,0.94,0.95,0.95,0.95,0.94,0.91,0.83, &
211 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.18,0.69,0.82, &
212 0.89,0.92,0.94,0.95,0.95,0.96,0.96,0.96,0.96,0.95, &
213 0.94,0.91,0.80,0.00,0.00,0.00,0.00,0.00,0.22,0.70, &
214 0.83,0.90,0.93,0.95,0.96,0.97,0.98,0.98,0.98,0.98, &
215 0.97,0.96,0.94,0.92,0.84,0.00,0.00,0.00/
216 REAL, DIMENSION(0:44) :: AMS1 ! EM16, MASS-DIAMETER PARAMETERS SYNOPTIC CLOUDS
217 DATA AMS1 /2.728E+01,1.258E+00,6.452E-02,6.259E-03,8.658E-04, &
218 4.657E+01,1.193E+00,3.790E-02,2.688E-03,3.101E-04, &
219 2.260E+01,1.000E+00,5.059E-02,4.889E-03,6.826E-04, &
220 6.176E+00,6.002E-01,5.889E-02,8.892E-03,1.647E-03, &
221 2.982E+00,1.795E-01,1.261E-02,1.647E-03,3.128E-04, &
222 2.783E+00,2.179E-01,1.901E-02,2.825E-03,5.699E-04, &
223 1.630E+00,3.267E-01,6.223E-02,1.493E-02,3.902E-03, &
224 1.145E+01,3.346E-02,1.178E-04,7.701E-05,2.463E-05, &
225 6.606E+01,1.799E-03,1.178E-04,7.701E-05,2.463E-05/
226 REAL, DIMENSION(0:44) :: BMS1 ! SYNOPTIC CLOUDS
227 DATA BMS1 /2.792,2.455,2.085,1.748,1.411,2.846,2.449,2.015,1.618,&
228 1.221,2.773,2.429,2.053,1.710,1.367,2.642,2.371,2.073,&
229 1.802,1.530,2.556,2.254,1.923,1.621,1.320,2.549,2.276,&
230 1.977,1.704,1.431,2.495,2.322,2.133,1.960,1.787,2.686,&
231 2.064,1.382,1.382,1.382,2.863,1.732,1.382,1.382,1.382/
232 REAL, DIMENSION(0:44) :: AAS1 ! EM16, AREA-DIAMETER PARAMETERS SYNOPTIC CLOUDS
233 DATA AAS1 /1.782E+00,2.778E-01,4.794E-02,1.241E-02,4.069E-03, &
234 2.571E+00,2.635E-01,3.180E-02,6.517E-03,1.879E-03, &
235 1.910E+00,2.522E-01,3.759E-02,8.905E-03,2.787E-03, &
236 6.238E-01,1.697E-01,4.686E-02,1.662E-02,6.761E-03, &
237 5.604E-01,9.194E-02,1.726E-02,5.030E-03,1.927E-03, &
238 2.802E-01,8.345E-02,2.602E-02,1.042E-02,4.854E-03, &
239 1.269E-01,1.106E-01,8.453E-02,5.913E-02,3.763E-02, &
240 3.569E-01,2.314E-02,1.664E-03,1.397E-03,8.521E-04, &
241 6.339E-01,5.656E-03,1.664E-03,1.397E-03,8.521E-04/
242 REAL, DIMENSION(0:44) :: BAS1 ! SYNOPTIC CLOUDS
243 DATA BAS1 /2.133,1.938,1.725,1.531,1.337,2.170,1.932,1.671,1.432,&
244 1.194,2.140,1.927,1.693,1.480,1.267,2.027,1.882,1.722,&
245 1.576,1.431,2.011,1.821,1.612,1.422,1.232,1.941,1.810,&
246 1.666,1.534,1.403,1.861,1.842,1.821,1.801,1.782,1.960,&
247 1.669,1.350,1.350,1.350,2.018,1.509,1.350,1.350,1.350/
248 !----------------- FOR AEROSOL PARAMETER -------------------------------
249 REAL, SAVE :: DNC0,DNC1,DNC2,DNC3
250 REAL, SAVE, DIMENSION(NAER) :: SENS,ASH,CMAS,DNAS,AVAN,BETA1,RXMIN
251 REAL, SAVE, DIMENSION(NCCN,NAER) :: ZCCN,CNMOD,CNSTD,WMAS,RFACT
254 !======================================================================
255 SUBROUTINE NTU_INIT(PHB,PH,P,PB,ALT,QV,QDCN,QTCN,QCCN,QRCN,QNIN, &
256 XLAND,CCNTY,RESTART,IDS,IDE,JDS,JDE,KDS,KDE,IMS,IME, &
257 JMS,JME,KMS,KME,ITS,ITE,JTS,JTE,KTS,KTE)
258 !======================================================================
260 LOGICAL, INTENT(IN) :: RESTART
261 INTEGER, INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE,IMS,IME,JMS,JME, &
262 KMS,KME,ITS,ITE,JTS,JTE,KTS,KTE,CCNTY
263 REAL, INTENT(IN), DIMENSION(IMS:IME,JMS:JME) :: XLAND ! 1:land ; 2:ocean
264 REAL, INTENT(IN), DIMENSION(IMS:IME,KMS:KME,JMS:JME) :: PHB,PH,P,&
266 REAL, INTENT(INOUT), DIMENSION(IMS:IME,KMS:KME,JMS:JME) :: QDCN, &
268 REAL, DIMENSION(ITS:ITE,KTS:KTE,JTS:JTE) :: DZ,RHO,DZ8W,P_PHY
269 REAL, DIMENSION(ITS:ITE,KTS:KTE,JTS:JTE,NAERT) :: QAERO
270 INTEGER :: I,J,K,NK,ITF,JTF
274 CALL AERO_CONST(CCNTY)
278 DZ(I,K,J) = (PHB(I,K,J)+PH(I,K,J))/G
286 DZ8W(I,K,J) = DZ(I,NK+1,J)-DZ(I,NK,J)
287 RHO(I,K,J) = 1./ALT(I,NK,J)*(1.+QV(I,NK,J))
288 P_PHY(I,K,J) = P(I,NK,J)+PB(I,NK,J)
289 QAERO(I,K,J,1) = QDCN(I,NK,J)
290 QAERO(I,K,J,2) = QTCN(I,NK,J)
291 QAERO(I,K,J,3) = QCCN(I,NK,J)
292 QAERO(I,K,J,4) = QRCN(I,NK,J)
293 QAERO(I,K,J,5) = QNIN(I,NK,J)
297 IF (.NOT.RESTART) THEN
298 CALL INIT_AEROSOL(P_PHY,RHO,DZ8W,XLAND,QAERO,IDS,IDE,JDS,JDE, &
299 KDS,KDE,IMS,IME,JMS,JME,KMS,KME,ITS,ITE,JTS,JTE,KTS,KTE)
305 QDCN(I,NK,J) = QAERO(I,K,J,1)
306 QTCN(I,NK,J) = QAERO(I,K,J,2)
307 QCCN(I,NK,J) = QAERO(I,K,J,3)
308 QRCN(I,NK,J) = QAERO(I,K,J,4)
309 QNIN(I,NK,J) = QAERO(I,K,J,5)
314 END SUBROUTINE NTU_INIT
315 !======================================================================
317 !======================================================================
318 SUBROUTINE FIND_RC0(XAFRC,CMODE,CSTDV,WMAS,RC,TBLXA,TBLRC)
319 !======================================================================
321 INTEGER, PARAMETER :: ITERMAX = 50
323 !----------------- AEROSOL TRI-MODAL SIZE DISTRIBUTION ----------------
324 REAL :: RC ! cut-off radius [m]
325 REAL, DIMENSION(NCCN) :: WMAS, &! mass weighting for each mode
326 CMODE, &! modal value (ln R) of each mode [m]
327 CSTDV ! standard distribution (in logarithm) of the mode
328 REAL, PARAMETER :: RC_MAX = 99., RC_MIN = 1.E-9, XTOR = 1.E-5
329 DOUBLE PRECISION, DIMENSION(NCCN) :: DWMAS,DMODE,DSTDV
330 !----------------- GET THE FIRST GUESS OF RC ---------------------------
331 DOUBLE PRECISION :: DRC,UL,X1MAFRC,Y0,Y,DY,DX,DERF,DLOG,DEXP, &
332 DSQRT,XAFRC ! ratio of dry/total aerosol mass
333 DOUBLE PRECISION, DIMENSION(NTBXA) :: TBLRC,TBLXA ! table of dry aerosol mass fraction
336 DWMAS(IM) = DBLE(WMAS(IM))
337 DSTDV(IM) = DBLE(CSTDV(IM))
338 DMODE(IM) = DLOG(DBLE(CMODE(IM)))+DBLE(3.*CSTDV(IM)*CSTDV(IM)) ! for mass, the 3rd momentum DBLE(CMODE (IM))+
340 UL = (1.-DERF(5.D+0/DSQRT(2.D+0)))*0.5 ! after 5 sigma, x1mfrc will < 2.86E-7
341 X1MAFRC = 1.D+0-XAFRC
342 IF (XAFRC.LT.1.E-10) THEN
346 IF (X1MAFRC.LT.UL) THEN
350 DRC = GUESS_RC(XAFRC,TBLXA,TBLRC) ! cut-off radius [m]
351 Y0 = YEQU(DRC,XAFRC,DWMAS,DMODE,DSTDV)
354 DY = DYEQU(DRC,DWMAS,DMODE,DSTDV)
355 IF (DY.LE.1.E-50) THEN
356 PRINT *,'IN FIND_RC0.F DY IS',DY
357 PRINT *,I,DX,Y,DY,DEXP(DRC),DRC,XAFRC,X1MAFRC,DMODE,DSTDV, &
362 IF (DABS(DX).GT.3.D+0) DX = DX/(DABS(DX/0.4))
363 IF (DABS(DX).LT.XTOR) THEN
364 RC = REAL(DEXP(DRC+DX))
365 RC = MIN(RC_MAX,MAX(RC,RC_MIN))
368 Y0 = YEQU(DRC+DX,XAFRC,DWMAS,DMODE,DSTDV)
371 Y0 = YEQU(DRC+DX,XAFRC,DWMAS,DMODE,DSTDV)
377 END SUBROUTINE FIND_RC0
378 !======================================================================
380 !======================================================================
381 FUNCTION GUESS_RC(XAFRC,TBLXA,TBLRC)
382 !======================================================================
383 DOUBLE PRECISION :: GUESS_RC,XAFRC,TBLXA(NTBXA),TBLRC(NTBXA)
384 INTEGER :: IBNG,IEND,I
386 IF (XAFRC.GE.TBLXA(NTBXA)) THEN
387 GUESS_RC = TBLRC(NTBXA)
389 ELSEIF (XAFRC.LT.TBLXA(1)) THEN
393 IF (XAFRC.LT.TBLXA(NTBXA/4)) THEN
396 ELSEIF (XAFRC.LT.TBLXA(NTBXA*2/4)) THEN
399 ELSEIF (XAFRC.LT.TBLXA(NTBXA*3/4)) THEN
407 IF (XAFRC.GE.TBLXA(I)) GOTO 111
409 111 GUESS_RC = TBLRC(I)
411 END FUNCTION GUESS_RC
412 !======================================================================
414 !======================================================================
415 FUNCTION YEQU(X,XAFRC,WEGHT,XLBAR,SIGMA)
416 !======================================================================
418 DOUBLE PRECISION :: YEQU,DX,XAFRC,X,DSQRT2,DSQRT
419 DOUBLE PRECISION, DIMENSION(NCCN) :: WEGHT,XLBAR,SIGMA
421 DSQRT2 = DSQRT(2.D+0)
424 DX = (X-XLBAR(I))/SIGMA(I)/DSQRT2
425 YEQU = YEQU+WEGHT(I)*PDF(DX)
430 !----------------------------------------------------------------------
431 FUNCTION DYEQU(X,WEGHT,XLBAR,SIGMA)
432 !======================================================================
434 DOUBLE PRECISION :: DYEQU,X,DX,DSQRT2,DSQRT
435 DOUBLE PRECISION, DIMENSION(NCCN) :: WEGHT,XLBAR,SIGMA
437 DSQRT2 = DSQRT(2.D+0)
440 DX = (X-XLBAR(I))/SIGMA(I)/DSQRT2
441 DYEQU = DYEQU+WEGHT(I)*DPDF(DX)/SIGMA(I)/DSQRT2
445 !======================================================================
447 DOUBLE PRECISION :: PDF,X,DERF
449 PDF = (1.D+0+DERF(X))*5.D-1
452 !----------------------------------------------------------------------
454 DOUBLE PRECISION :: DPDF,X,DPI,DACOS,DEXP,DSQRT
457 DPDF = DEXP(-X*X)/DSQRT(DPI)
460 !======================================================================
462 !======================================================================
463 REAL FUNCTION GAMMA(X) ! IMPLEMETED FROM MORRISON SCHEME
464 !======================================================================
468 REAL :: CONV,EPS,FACT,HALF,ONE,RES,SUM,TWELVE,TWO,X,XBIG, &
469 XDEN,XINF,XMININ,XNUM,Y,Y1,YSQ,Z,ZERO
470 REAL, DIMENSION(7) :: C
471 REAL, DIMENSION(8) :: P
472 REAL, DIMENSION(8) :: Q
473 !----------------------------------------------------------------------
474 ! MATHEMATICAL CONSTANTS
475 !----------------------------------------------------------------------
476 DATA ONE,HALF,TWELVE,TWO,ZERO/1.0E0,0.5E0,12.0E0,2.0E0,0.0E0/
477 !----------------------------------------------------------------------
478 ! MACHINE DEPENDENT PARAMETERS
479 !----------------------------------------------------------------------
480 DATA XBIG,XMININ,EPS/35.040E0,1.18E-38,1.19E-7/,XINF/3.4E38/
481 !----------------------------------------------------------------------
482 ! NUMERATOR AND DENOMINATOR COEFFICIENTS FOR RATIONAL MINIMAX
483 ! APPROXIMATION OVER (1,2).
484 !----------------------------------------------------------------------
485 DATA P /-1.71618513886549492533811E0,2.47656508055759199108314E1,&
486 -3.79804256470945635097577E2,6.29331155312818442661052E2,&
487 8.66966202790413211295064E2,-3.14512729688483675254357E4,&
488 -3.61444134186911729807069E4,6.64561438202405440627855E4/
489 DATA Q /-3.08402300119738975254353E1,3.15350626979604161529144E2,&
490 -1.01515636749021914166146E3,-3.10777167157231109440444E3,&
491 2.25381184209801510330112E4,4.75584627752788110767815E3, &
492 -1.34659959864969306392456E5,-1.15132259675553483497211E5/
493 !----------------------------------------------------------------------
494 ! COEFFICIENTS FOR MINIMAX APPROXIMATION OVER (12, INF).
495 !----------------------------------------------------------------------
496 DATA C /-1.910444077728E-3,8.4171387781295E-4, &
497 -5.952379913043012E-4,7.93650793500350248E-4, &
498 -2.777777777777681622553E-3,8.333333333333333331554247E-2,&
500 !----------------------------------------------------------------------
501 ! STATEMENT FUNCTIONS FOR CONVERSION BETWEEN INTEGER AND FLOAT
502 !----------------------------------------------------------------------
509 !----------------------------------------------------------------------
510 ! ARGUMENT IS NEGATIVE
511 !----------------------------------------------------------------------
515 IF (RES.NE.ZERO) THEN
516 IF (Y1.NE.AINT(Y1*HALF)*TWO) PARITY = .TRUE.
517 FACT = -PI/SIN(PI*RES)
524 !----------------------------------------------------------------------
525 ! ARGUMENT IS POSITIVE
526 !----------------------------------------------------------------------
528 !----------------------------------------------------------------------
530 !----------------------------------------------------------------------
531 IF (Y.GE.XMININ) THEN
537 ELSEIF (Y.LT.TWELVE) THEN
540 !----------------------------------------------------------------------
541 ! 0.0 .LT. ARGUMENT .LT. 1.0
542 !----------------------------------------------------------------------
546 !----------------------------------------------------------------------
547 ! 1.0 .LT. ARGUMENT .LT. 12.0, REDUCE ARGUMENT IF NECESSARY
548 !----------------------------------------------------------------------
553 !----------------------------------------------------------------------
554 ! EVALUATE APPROXIMATION FOR 1.0 .LT. ARGUMENT .LT. 2.0
555 !----------------------------------------------------------------------
564 !----------------------------------------------------------------------
565 ! ADJUST RESULT FOR CASE 0.0 .LT. ARGUMENT .LT. 1.0
566 !----------------------------------------------------------------------
568 ELSEIF (Y1.GT.Y) THEN
569 !----------------------------------------------------------------------
570 ! ADJUST RESULT FOR CASE 2.0 .LT. ARGUMENT .LT. 12.0
571 !----------------------------------------------------------------------
578 !----------------------------------------------------------------------
579 ! EVALUATE FOR ARGUMENT .GE. 12.0,
580 !----------------------------------------------------------------------
588 SUM = SUM+(Y-HALF)*LOG(Y)
595 !----------------------------------------------------------------------
596 ! FINAL ADJUSTMENTS AND RETURN
597 !----------------------------------------------------------------------
598 IF (PARITY) RES = -RES
599 IF (FACT.NE.ONE) RES = FACT/RES
604 !======================================================================
606 !======================================================================
607 REAL FUNCTION POLYSVP(T,TYPE) ! IMPLEMETED FROM MORRISON SCHEME
608 !======================================================================
609 ! COMPUTE SATURATION VAPOR PRESSURE POLYSVP RETURNED IN UNITS OF PA. T IS INPUT IN UNITS OF K.
610 ! TYPE REFERS TO SATURATION WITH RESPECT TO LIQUID (0) OR ICE (1)
611 ! REPLACE GOFF-GRATCH WITH FASTER FORMULATION FROM FLATAU ET AL. 1992, TABLE 4 (RIGHT-HAND COLUMN)
616 REAL :: a0i,a1i,a2i,a3i,a4i,a5i,a6i,a7i,a8i
617 DATA a0i,a1i,a2i,a3i,a4i,a5i,a6i,a7i,a8i /6.11147274,0.503160820,&
618 0.188439774E-1,0.420895665E-3,0.615021634E-5,0.602588177E-7,&
619 0.385852041E-9,0.146898966E-11,0.252751365E-14/
621 REAL :: a0,a1,a2,a3,a4,a5,a6,a7,a8
622 DATA a0,a1,a2,a3,a4,a5,a6,a7,a8 /6.11239921,0.443987641, &
623 0.142986287E-1,0.264847430E-3,0.302950461E-5,0.206739458E-7,&
624 0.640689451E-10,-0.952447341E-13,-0.976195544E-15/
625 IF (TYPE.EQ.1) THEN ! ICE
626 DT = MAX(-80.,T-273.16)
627 POLYSVP = a0i+DT*(a1i+DT*(a2i+DT*(a3i+DT*(a4i+DT* &
628 (a5i+DT*(a6i+DT*(a7i+a8i*DT)))))))
629 POLYSVP = POLYSVP*100.
631 IF (TYPE.EQ.0) THEN ! LIQUID
632 DT = MAX(-80.,T-273.16)
633 POLYSVP = a0+DT*(a1+DT*(a2+DT*(a3+DT*(a4+DT*(a5+DT* &
634 (a6+DT*(a7+a8*DT)))))))
635 POLYSVP = POLYSVP*100.
639 !======================================================================
641 !======================================================================
642 REAL FUNCTION GAMLN(XX) ! Referred to MY2 scheme
643 !======================================================================
644 ! Returns value of ln(GAMMA(XX)) for XX>0 (modified from "Numerical Recipes")
646 REAL, INTENT(IN) :: XX
648 DOUBLE PRECISION :: ser,stp,TMP,X,y,cof(6)
650 DATA cof,stp /76.18009172947146d0,-86.50532032941677d0, &
651 24.01409824083091d0,-1.231739572450155d0, &
652 .1208650973866179d-2,-.5395239384953d-5, &
653 2.5066282746310005d0/
658 TMP = (X+0.5D0)*LOG(TMP)-TMP
659 ser = 1.000000000190015d0
664 #if (DWORDSIZE == 8 && RWORDSIZE == 8)
665 GAMLN = TMP+LOG(stp*ser/X)
666 #elif (DWORDSIZE == 8 && RWORDSIZE == 4)
667 GAMLN = SNGL(TMP+LOG(stp*ser/X))
669 ! This is a temporary hack assuming double precision is 8 bytes.
673 !======================================================================
675 !======================================================================
676 REAL FUNCTION GAMIN(P,XMAX)
677 !======================================================================
678 ! The incomplete gamma function below the limit of P = AFA+1 and XMAX = DI0*LAMDA
681 GAMIN = GAMMP(P,XMAX)*EXP(GAMLN(P))
684 !=======================================================================
685 REAL FUNCTION GAMMP(A,X)
686 !=======================================================================
687 ! The fraction of distribution below the limit of A = AFA+1 and X = Db*LAMDA
689 REAL :: A,X,GAMMCF,GAMSER,GLN
691 IF (X.LT.0..OR.A.LE.0.) &
692 CALL wrf_error_fatal('warning : bad arguments in gammq')
694 CALL GSER(GAMSER,A,X,GLN)
697 CALL CFG(GAMMCF,A,X,GLN)
703 !======================================================================
704 SUBROUTINE GSER(GAMSER,A,X,GLN) ! Referred to MY2 scheme
705 !======================================================================
706 ! USES GAMLN, Returns the incomplete gamma function P(A,X) evaluated by its series
707 ! representation as GAMSER. Also returns GAMMA(A) as GLN.
710 REAL :: A,GAMSER,GLN,X,AP,de1,summ
711 INTEGER, PARAMETER :: ITMAX = 500
712 REAL, PARAMETER :: EPS = 3.E-7
716 IF (X.LT.0.) CALL wrf_error_fatal ( 'WARNING: X <0 in GSER' )
727 IF (ABS(de1).LT.ABS(summ)*EPS) GOTO 777
729 CALL wrf_error_fatal ('Warning : ITMAX too small in GSER')
730 777 GAMSER = summ*EXP(-X+A*LOG(X)-GLN)
735 !=======================================================================
736 SUBROUTINE CFG(GAMMCF,A,X,GLN) ! Referred to MY2 scheme
737 !=======================================================================
738 ! USES GAMLN, Returns the incomplete gamma function (Q(A,X) evaluated by tis continued fraction
739 ! representation as GAMMCF. Also returns ln(GAMMA(A)) as GLN. ITMAX is the maximum allowed number of iterations;
740 ! EPS is the relative accuracy; FPMIN is a number near the smallest representable floating-point number.
743 REAL :: A,GAMMCF,GLN,X,AN,b,c,d,de1,h
744 INTEGER, PARAMETER :: ITMAX = 500
745 REAL, PARAMETER :: EPS = 3.E-7
746 REAL, PARAMETER :: fpmin = 1.E-30
757 IF (ABS(d).LT.fpmin) d = fpmin
759 IF (ABS(c).LT.fpmin) c = fpmin
763 IF (ABS(de1-1.).LT.EPS) GOTO 888
765 CALL wrf_error_fatal ('Warning : ITMAX too small in gcf')
766 888 GAMMCF = EXP(-X+A*LOG(X)-GLN)*h
770 !=======================================================================
772 !======================================================================
773 SUBROUTINE SOLVE_AFAC(TK1D,QC1D,NC1D,LAMC,MVDC,AFAC)
774 !======================================================================
776 REAL :: TK1D,QC1D,NC1D,LAMC,GC1,MVDC,AFAC,LAMCMIN,LAMCMAX,C3M1D, &
777 SIGC,MNRC,MVRC,EFRC,KDX,LTK,LQC
779 IF (NC1D.LT.NSMALL) THEN
782 NC1D = EXP(DNC0+DNC1*LTK+DNC2*LTK**2.+DNC3*LTK**3.-0.25*LQC)
784 IF (QC1D.GE.QSMAL1.AND.NC1D.LT.NSMAL1) THEN
787 NC1D = EXP(DNC0+DNC1*LTK+DNC2*LTK**2.+DNC3*LTK**3.-0.25*LQC)
789 C3M1D = QC1D*V2M3/RHOW
790 IF (AFAC_3M.EQ.0) THEN
792 ELSEIF (AFAC_3M.EQ.1) THEN
793 MVRC = (QC1D/NC1D/C4PI3W)**THRD
794 MVRC = MIN(MAX(MVRC,RCMIN),RCMAX)
795 EFRC = EXP(EFC1+EFC2*LOG(NC1D)+EFC3*LOG(MVRC))
796 ! KDX = MIN(MAX(KCCMIN,C3M1D/(8.*EFRC**3.*NC1D)),KCCMAX)
797 KDX = MAX(KCCMIN,MIN(KCCMAX,(MVRC/EFRC)**3.))
798 AFAC = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
799 AFAC = MIN(MAX(AFAC,AFAMIN),AFAMAX)
800 ELSEIF (AFAC_3M.EQ.2) THEN
801 SIGC = EXP(SIG1+SIG2*LOG(NC1D)+SIG3*LOG(QC1D))
802 MNRC = EXP(MNR1+MNR2*LOG(NC1D)+MNR3*LOG(QC1D))
803 AFAC = MIN(MAX(SIGC/MNRC,AFAMIN),AFAMAX)
806 LAMC = (EXP(GAMLN(AFAC+4.)-GC1)*NC1D/C3M1D)**THRD
807 LAMCMIN = (EXP(GAMLN(AFAC+4.)-GC1))**THRD/DCMAX
808 LAMCMAX = (EXP(GAMLN(AFAC+4.)-GC1))**THRD/DCMIN
809 IF (LAMC.LT.LAMCMIN) THEN
811 NC1D = C3M1D*EXP(GAMLN(AFAC+1.)-GAMLN(AFAC+4.)+3.*LOG(LAMC))
812 ELSEIF (LAMC.GT.LAMCMAX) THEN
814 NC1D = C3M1D*EXP(GAMLN(AFAC+1.)-GAMLN(AFAC+4.)+3.*LOG(LAMC))
816 MVDC = (EXP(GAMLN(AFAC+4.)-GAMLN(AFAC+1.)))**THRD/LAMC
818 END SUBROUTINE SOLVE_AFAC
819 !======================================================================
821 !======================================================================
822 SUBROUTINE SOLVE_AFAR(TK1D,QR1D,NR1D,LAMR,MVDR,AFAR)
823 !======================================================================
825 REAL :: TK1D,QR1D,NR1D,LAMR,GR1,MVDR,LAMRMIN,LAMRMAX,R3M1D,AFAR, &
826 BDR,MVRR,EFRR,KDX,LTK,LQR
828 IF (NR1D.LT.NSMALL) THEN
831 NR1D = EXP(-5793.7852+3191.1171*LTK-582.73279*LTK**2.+ &
832 35.346854*LTK**3.-0.25*LQR)
834 R3M1D = QR1D*V2M3/RHOW
835 IF (AFAR_3M.EQ.0) THEN
837 ELSEIF (AFAR_3M.EQ.1) THEN
838 MVRR = MIN(RRMAX,MAX(RRMIN,(QR1D/NR1D/C4PI3W)**THRD))
839 EFRR = EXP(EFR1+EFR2*LOG(NR1D)+EFR3*LOG(MVRR))
840 ! KDX = MIN(MAX(KCRMIN,R3M1D/(8.*EFRR**3.*NR1D)),KCRMAX)
841 KDX = MAX(KCRMIN,MIN(KCRMAX,(MVRR/EFRR)**3.))
842 AFAR = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
843 AFAR = MIN(MAX(AFAR,AFAMIN),AFAMAX)
844 ELSEIF (AFAR_3M.EQ.2) THEN
845 BDR = MIN(MAX((R3M1D/NR1D)**THRD,DRMIN),DRMAX)
846 AFAR = MAX(AFAMIN,19.*TANH(0.6*(1.E3*BDR-1.8))+17.)
849 LAMR = (EXP(GAMLN(AFAR+4.)-GR1)*NR1D/R3M1D)**THRD
850 LAMRMIN = (EXP(GAMLN(AFAR+4.)-GR1))**THRD/DRMAX
851 LAMRMAX = (EXP(GAMLN(AFAR+4.)-GR1))**THRD/DRMIN
852 IF (LAMR.LT.LAMRMIN) THEN
854 NR1D = R3M1D*EXP(GAMLN(AFAR+1.)-GAMLN(AFAR+4.)+3.*LOG(LAMR))
855 ELSEIF (LAMR.GT.LAMRMAX) THEN
857 NR1D = R3M1D*EXP(GAMLN(AFAR+1.)-GAMLN(AFAR+4.)+3.*LOG(LAMR))
859 MVDR = (EXP(GAMLN(AFAR+4.)-GAMLN(AFAR+1.)))**THRD/LAMR
861 END SUBROUTINE SOLVE_AFAR
862 !======================================================================
864 !======================================================================
865 SUBROUTINE SOLVE_AFAI(TK1D,P1D,RHO,QV1D,QI1D,NI1D,VI1D,FI1D, &
866 I2M1D,I3M1D,ADAGR,ZETA,LAMI,AFAI,MVDI,RHOI,AMI,BMI, &
868 !======================================================================
871 REAL :: TK1D,P1D,RHO,QV1D,QI1D,NI1D,VI1D,FI1D,I2M1D,I3M1D,ADAGR, &
872 ZETA,RHOI,LAMI,AFAI,AMI,BMI,AVI,BVI,MVDI,GI1,TC1D,ESW, &
873 ESI,QVSI,INHGR,I3M0,BEST0,LAMIMIN,LAMIMAX,IPF,IPG,KDX, &
874 ZETA2,ZETA4,KINV,AAI,BAI,IBA1,C1X2,VTA1,VTB1,IPH2,IPG2, &
875 AVIA0,BEST,BDI,FDI,LTK,LQI,MDI
877 IF (ICE_RHOI.EQ.0) THEN
880 ELSEIF (ICE_RHOI.EQ.1) THEN
881 IF (VI1D.LT.ISMALL) THEN
883 HID = MAX(MIN(NINT(ABS(TC1D)/0.25),120),0)
884 ESW = MIN(0.99*P1D,POLYSVP(TK1D,0))
885 ESI = MIN(0.99*P1D,POLYSVP(TK1D,1))
886 IF (ESI.GT.ESW) ESI = ESW
887 QVSI = 0.622*ESI/(P1D-ESI)
889 RHOI = RHOI0*EXP(-3.*MAX((QV1D-QVSI)-5.E-5,0.)/INHGR)
893 IF (RHOI.LT.RHOIMIN) THEN
895 ELSEIF (RHOI.GT.RHOIMAX) THEN
899 ELSEIF (ICE_RHOI.EQ.2) THEN
903 IF (NI1D.LT.NSMALL) THEN
906 MDI = EXP(-3.2653646+2.0539073*LTK-0.25*LQI)/1.E3
907 NI1D = 1.E9*QI1D*V2M3/RHOI/MDI**3.
909 IF (QI1D.GE.QSMAL1.AND.NI1D.LT.NSMAL1) THEN
912 MDI = EXP(-3.2653646+2.0539073*LTK-0.25*LQI)/1.E3
913 NI1D = 1.E9*QI1D*V2M3/RHOI/MDI**3.
915 IF (I2M1D.GE.ASMALL.AND.I3M1D.GE.ISMALL) THEN
916 KDX = MAX(0.,I2M1D**3./(I3M1D**2.*NI1D))
917 IF (KDX.GT.KCIMAX) THEN
919 I2M1D = (KDX*NI1D*I3M1D**2.)**THRD
920 ELSEIF (KDX.LT.KCIMIN) THEN
922 I2M1D = (KDX*NI1D*I3M1D**2.)**THRD
924 AFAI = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
925 AFAI = MIN(MAX(AFAI,AFAMIN),AFAMAX)
926 ! LAMI = SQRT(NI1D*(AFAI+2.)*(AFAI+1.)/I2M1D)
927 ! LAMI = (NI1D*(AFAI+1.)*(AFAI+2.)*(AFAI+3.)/I3M1D)**THRD
928 LAMI = (AFAI+3.)*I2M1D/I3M1D
929 LAMIMIN = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/DIMAX
930 LAMIMAX = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/DIMIN
931 IF (LAMI.LT.LAMIMIN) THEN
933 NI1D = I3M1D*EXP(GAMLN(AFAI+1.)-GAMLN(AFAI+4.)+3.*LOG(LAMI))
934 ELSEIF (LAMI.GT.LAMIMAX) THEN
936 NI1D = I3M1D*EXP(GAMLN(AFAI+1.)-GAMLN(AFAI+4.)+3.*LOG(LAMI))
938 ELSEIF (I2M1D.LT.ASMALL.AND.I3M1D.GE.ISMALL) THEN
939 IF (AFAI_3M.EQ.0) THEN
942 ELSEIF (AFAI_3M.EQ.1) THEN
944 I2M1D = (KCIMIN*NI1D*I3M1D**2.)**THRD
945 ELSEIF (AFAI_3M.EQ.2) THEN
946 BDI = MIN(MAX((I3M1D/NI1D)**THRD*1.E3,DIMIN*1.E3),DIMAX*1.E3)
947 FDI = 0.074015986+0.79866676*BDI-0.0094468892*LOG(NI1D)+ &
948 0.38235092*BDI**2.+0.00029811542*LOG(NI1D)**2.+ &
949 0.019052614*BDI*LOG(NI1D)
950 KDX = MAX(KCIMIN,MIN(KCIMAX,(BDI/FDI)**3.))
951 AFAI = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
952 AFAI = MIN(MAX(AFAI,AFAMIN),AFAMAX)
953 ! AFAI = MAX(AFAMIN,12.*TANH(0.7*(BDI-1.7))+11.)
956 LAMI = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.))*NI1D/I3M1D)**THRD
957 LAMIMIN = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/DIMAX
958 LAMIMAX = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/DIMIN
959 IF (LAMI.LT.LAMIMIN) THEN
961 NI1D = I3M1D*EXP(GAMLN(AFAI+1.)-GAMLN(AFAI+4.)+3.*LOG(LAMI))
962 ELSEIF (LAMI.GT.LAMIMAX) THEN
964 NI1D = I3M1D*EXP(GAMLN(AFAI+1.)-GAMLN(AFAI+4.)+3.*LOG(LAMI))
967 IF (AFAI_3M.EQ.0) THEN
971 BDI = (QI1D*V2M3/NI1D/RHOI)**THRD*1.E3
972 BDI = MAX(MIN(DIMAX*1.E3,BDI),DIMIN*1.E3)
973 FDI = 7.4015986E-2+7.9866676E-1*BDI-9.4468892E-3*LOG( &
974 NI1D)+3.8235092E-1*BDI**2.+2.9811542E-4*LOG(NI1D)** &
975 2.+1.9052614E-2*BDI*LOG(NI1D)
976 KDX = MAX(KCIMIN,MIN(KCIMAX,(BDI/FDI)**3.))
977 AFAI = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
978 AFAI = MIN(MAX(AFAI,AFAMIN),AFAMAX)
979 ! AFAI = MAX(AFAMIN,12.*TANH(0.7*(BDI-1.7))+11.)
980 IF (AFAI_3M.EQ.1) THEN
981 KDX = (AFAI**2.+3.*AFAI+2.)/(AFAI**2.+6.*AFAI+9.)
982 I2M1D = (KDX*NI1D*(QI1D*V2M3/RHOI)**2.)**THRD
983 ELSEIF (AFAI_3M.EQ.2) THEN
988 LAMI = (EXP(GAMLN(AFAI+4.)-GI1)*PI*RHOI*NI1D/QI1D/6.)**THRD
989 LAMIMIN = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/DIMAX
990 LAMIMAX = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/DIMIN
991 IF (LAMI.LT.LAMIMIN) THEN
993 NI1D = QI1D*V2M3/RHOI*EXP(GAMLN(AFAI+1.)-GAMLN(AFAI+4.)+ &
995 ELSEIF (LAMI.GT.LAMIMAX) THEN
997 NI1D = QI1D*V2M3/RHOI*EXP(GAMLN(AFAI+1.)-GAMLN(AFAI+4.)+ &
1001 MVDI = (EXP(GAMLN(AFAI+4.)-GAMLN(AFAI+1.)))**THRD/LAMI
1002 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
1004 IF (MVDI.GT.(DI0+1.E-7)) THEN
1005 IF (ICE_SHAPE.EQ.0) THEN
1006 ZETA = 0.; ADAGR = 1.
1008 ELSEIF (ICE_SHAPE.EQ.1) THEN
1009 ZETA = LOG(FI1D/I3M1D)/LOG(I3M1D/I3M0)
1010 IF (ZETA.GT.0.4) THEN
1012 FI1D = (I3M1D/I3M0)**ZETA*I3M1D
1013 ELSEIF (ZETA.LT.(-0.4)) THEN
1015 FI1D = (I3M1D/I3M0)**ZETA*I3M1D
1017 ADAGR = (1.+2.*ZETA)/(1.-ZETA)
1021 ZETA = 0.; ADAGR = 1.
1024 I3M1D = QI1D*V2M3/RHOI
1025 IF (ICE_SHAPE.EQ.0) THEN
1027 ZETA = 0.; ADAGR = 1.
1028 ELSEIF (ICE_SHAPE.EQ.1) THEN
1030 HID = MAX(MIN(NINT(ABS(TC1D)/0.25),120),0)
1031 ADAGR = MAX(MIN(ITBLE(HID),2.),0.5)**THRD
1032 ZETA = (ADAGR-1.)/(ADAGR+2.)
1034 FI1D = (I3M1D/I3M0)**ZETA*I3M1D
1037 IF ((ADAGR-1.).GE.SLIMIT) THEN
1038 AMI = PI*RHOI*DI0**(2.-2./ADAGR)/6.
1040 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
1041 AMI = PI*RHOI*DI0**(1.-ADAGR)/6.
1043 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
1047 IF (ICE_VTI.EQ.0) THEN
1050 ELSEIF (ICE_VTI.EQ.1) THEN
1051 KINV = (1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5)/RHO
1052 BEST0 = 2.*G*NI1D/(KINV**2.)
1053 IF ((ADAGR-1.).GE.SLIMIT) THEN
1054 AAI = PI/4./DI0**ZETA
1055 BAI = 3.*(ADAGR+1.)/(ADAGR+2.)
1056 IPH2 = 2.*3.*ADAGR/(ADAGR+2.)
1057 ZETA4 = 4.*(ADAGR-1.)/(ADAGR+2.)
1059 BEST = BEST0*AMI*EXP(GAMLN(IBA1+AFAI+1.)-GAMLN(AFAI+1.)- &
1060 IBA1*LOG(LAMI))/(AAI*DI0**ZETA4)
1061 C1X2 = VTC1*BEST**5.E-1
1062 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.- &
1063 VTA0*VTB0*BEST**VTB0/VTC2/(SQRT(1.+C1X2)-1.)**2.
1064 VTA1 = MAX((VTC2*((1.+C1X2)**5.E-1-1.)**2.-VTA0*BEST** &
1065 VTB0)/BEST**VTB1,0.)
1066 AVIA0 = VTA1*KINV**(1.-2.*VTB1)
1067 AVI = AVIA0*(2.*AMI*G/(AAI*DI0**ZETA4))**VTB1
1068 BVI = VTB1*(BMI+IPH2-BAI)-1.
1069 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
1070 ZETA2 = 2.*(ADAGR-1.)/(ADAGR+2.)
1071 AAI = PI*DI0**ZETA2/4.
1072 BAI = 2.*3./(ADAGR+2.)
1073 IPG2 = 2.*3./(ADAGR+2.)
1075 BEST = BEST0*AMI*DI0**ZETA2*EXP(GAMLN(IBA1+AFAI+1.)- &
1076 GAMLN(AFAI+1.)-IBA1*LOG(LAMI))/AAI
1077 C1X2 = VTC1*BEST**5.E-1
1078 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.- &
1079 VTA0*VTB0*BEST**VTB0/VTC2/(SQRT(1.+C1X2)-1.)**2.
1080 VTA1 = MAX((VTC2*((1.+C1X2)**5.E-1-1.)**2.-VTA0*BEST** &
1081 VTB0)/BEST**VTB1,0.)
1082 AVIA0 = VTA1*KINV**(1.-2.*VTB1)
1083 AVI = AVIA0*(2.*AMI*G*DI0**ZETA2/AAI)**VTB1
1084 BVI = VTB1*(BMI+IPG2-BAI)-1.
1085 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
1089 BEST = BEST0*AMI*EXP(GAMLN(IBA1+AFAI+1.)-GAMLN(AFAI+1.)- &
1091 C1X2 = VTC1*BEST**5.E-1
1092 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.- &
1093 VTA0*VTB0*BEST**VTB0/VTC2/(SQRT(1.+C1X2)-1.)**2.
1094 VTA1 = MAX((VTC2*((1.+C1X2)**5.E-1-1.)**2.-VTA0*BEST** &
1095 VTB0)/BEST**VTB1,0.)
1096 AVIA0 = VTA1*KINV**(1.-2.*VTB1)
1097 AVI = AVIA0*(2.*AMI*G/AAI)**VTB1
1102 END SUBROUTINE SOLVE_AFAI
1103 !======================================================================
1105 !======================================================================
1106 SUBROUTINE SOLVE_AFAS(TK1D,RHO,QS1D,QC1D,NS1D,VS1D,FS1D,S2M1D, &
1107 AFAS,LAMS,MVDS,RHOS,SASPR,AMS,AVS,BVS)
1108 !======================================================================
1110 INTEGER :: TBIN,DBIN
1111 REAL :: TK1D,RHO,QS1D,QC1D,NS1D,VS1D,FS1D,S2M1D,AFAS,RHOS,SASPR, &
1112 LAMS,AMS,AVS,BVS,MVDS,LAMSMIN,LAMSMAX,KINV,C1X2,VTA1, &
1113 VTB1,BEST,S3M1D,KDX,TC1D,SBA1,AMS2,AAS2,AMS3,BMS3,AAS3, &
1114 BAS3,LAMD,BDS,FDS,LTK,LQS,MDS
1116 IF (ICE_RHOS.EQ.0) THEN
1119 ELSEIF (ICE_RHOS.EQ.1) THEN
1120 RHOS = QS1D/(VS1D+ISMALL)
1121 IF (RHOS.GT.RHOIMAX) THEN
1123 ELSEIF (RHOS.LT.RHOIMIN) THEN
1127 ELSEIF (ICE_RHOS.EQ.2) THEN
1130 IF (TK1D.LT.TK0C) THEN
1131 RHOS = 15740.702-6098.0087*LTK+503.33089*LQS+594.29913* &
1132 LTK**2.+1.9033961*LQS**2.-94.950429*LTK*LQS
1134 RHOS = EXP(-64808.666+23113.508*LTK-36.46632*LQS-2060.6024*&
1135 LTK**2.-0.005729458*LQS**2.+6.5057411*LTK*LQS)
1137 RHOS = MIN(MAX(RHOS,RHOIMIN),RHOIMAX)
1140 IF (NS1D.LT.NSMALL) THEN
1143 MDS = EXP(-123.23898+40.74706*LTK-3.0333477*LTK**2.- &
1144 0.31219981*LQS+0.0012798222*LQS**2.)/1.E3
1145 NS1D = 1.E9*QS1D*V2M3/RHOS/MDS**3.
1149 IF (AGG_SHAPE.EQ.0) THEN
1152 ELSEIF (AGG_SHAPE.EQ.1) THEN
1154 IF (SASPR.LT.SASMIN) THEN
1157 ELSEIF (SASPR.GT.SASMAX) THEN
1162 IF (S2M1D.GE.ASMALL.AND.S3M1D.GE.ISMALL) THEN
1163 KDX = MAX(0.,S2M1D**3./(S3M1D**2.*NS1D))
1164 IF (KDX.GT.KCSMAX) THEN
1166 S2M1D = (KDX*NS1D*S3M1D**2.)**THRD
1167 ELSEIF (KDX.LT.KCSMIN) THEN
1169 S2M1D = (KDX*NS1D*S3M1D**2.)**THRD
1171 AFAS = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
1172 AFAS = MIN(MAX(AFAS,AFAMIN),AFAMAX)
1173 ! LAMS = (NS1D*(AFAS+1.)*(AFAS+2.)*(AFAS+3.)/S3M1D)**THRD
1174 LAMS = (AFAS+3.)*S2M1D/S3M1D
1176 IF (AFAS_3M.EQ.0) THEN
1179 ELSEIF (AFAS_3M.EQ.1) THEN
1181 S2M1D = (KCSMIN*NS1D*S3M1D**2.)**THRD
1182 ELSEIF (AFAS_3M.EQ.2) THEN
1183 BDS = MIN(MAX((S3M1D/NS1D)**THRD*1.E3,DSMIN*1.E3),DSMAX*1.E3)
1184 IF (TK1D.GE.TK0C) THEN
1185 FDS = -0.21911541+1.2739845*BDS+0.10141003*LOG(NS1D)+ &
1186 0.30063818*BDS**2.-4.3857765E-3*LOG(NS1D)**2.- &
1187 7.8801732E-2*BDS*LOG(NS1D)
1189 IF (QC1D.GE.1.E-8) THEN
1190 FDS = -1.1527014+2.9067645*BDS+0.25316062*LOG(NS1D)- &
1191 0.17768557*BDS**2.-0.013117292*LOG(NS1D)**2.- &
1192 0.17020429*BDS*LOG(NS1D)
1194 FDS = -0.2813929+1.7275463*BDS+0.045550156*LOG(NS1D)-&
1195 0.16526226*BDS**2.-1.7699916E-3*LOG(NS1D)**2.- &
1196 4.6441257E-2*BDS*LOG(NS1D)
1199 KDX = MAX(KCSMIN,MIN(KCSMAX,(BDS/FDS)**3.))
1200 AFAS = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
1201 AFAS = MIN(MAX(AFAS,AFAMIN),AFAMAX)
1202 ! AFAS = MAX(AFAMIN,4.5*TANH(0.5*(BDS-5.))+5.5)
1205 LAMS = (EXP(GAMLN(AFAS+4.)-GAMLN(AFAS+1.))*NS1D/S3M1D)**THRD
1207 LAMSMIN = (EXP(GAMLN(AFAS+4.)-GAMLN(AFAS+1.)))**THRD/DSMAX
1208 LAMSMAX = (EXP(GAMLN(AFAS+4.)-GAMLN(AFAS+1.)))**THRD/DSMIN
1209 IF (LAMS.LT.LAMSMIN) THEN
1211 NS1D = S3M1D*EXP(GAMLN(AFAS+1.)-GAMLN(AFAS+4.)+3.*LOG(LAMS))
1212 ELSEIF (LAMS.GT.LAMSMAX) THEN
1214 NS1D = S3M1D*EXP(GAMLN(AFAS+1.)-GAMLN(AFAS+4.)+3.*LOG(LAMS))
1216 MVDS = (EXP(GAMLN(AFAS+4.)-GAMLN(AFAS+1.)))**THRD/LAMS
1217 IF (ICE_VTS.EQ.0) THEN
1220 ELSEIF (ICE_VTS.EQ.1.OR.ICE_VTS.EQ.2) THEN
1221 KINV = (1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5)/RHO
1222 IF (AGG_SHAPE.EQ.0) THEN
1228 ELSEIF (AGG_SHAPE.EQ.1) THEN
1230 IF (ICE_VTS.EQ.1) THEN
1231 TBIN = MIN(MAX(INT(ABS(TC1D)/5.)-4,0),8)
1232 IF (MVDS.LT.1.5E-4) DBIN = 0
1233 IF (MVDS.GE.1.5E-4.AND.MVDS.LT.3.E-4) DBIN = 1
1234 IF (MVDS.GE.3.E-4.AND.MVDS.LT.1.E-3) DBIN = 2
1235 IF (MVDS.GE.1.E-3.AND.MVDS.LT.3.E-3) DBIN = 3
1236 IF (MVDS.GE.3.E-3) DBIN = 4
1237 DBIN = MIN(MAX(DBIN,0),4)
1238 AMS3 = AMS1(TBIN*5+DBIN)
1239 BMS3 = BMS1(TBIN*5+DBIN)
1240 AAS3 = AAS1(TBIN*5+DBIN)
1241 BAS3 = BAS1(TBIN*5+DBIN)
1242 LAMD = MIN((AMS3*LAMS**3./AMS*EXP(GAMLN(BMS3+AFAS+1.)- &
1243 GAMLN(AFAS+4.)))**(1./BMS3),LAMS)
1244 ELSEIF (ICE_VTS.EQ.2) THEN
1245 BMS3 = 2.4+0.0085*MAX(TC1D,-65.)
1246 BAS3 = 2-0.19+0.0056*MAX(TC1D,-65.)
1247 AMS2 = 0.0102+0.00013*MAX(TC1D,-65.)
1248 AAS2 = 0.29+0.0035*MAX(TC1D,-65.)
1249 AMS3 = ((AMS2*(100.*MVDS)**BMS3)/1.E3)/(MVDS**BMS3)
1250 AAS3 = ((AAS2*(100.*MVDS)**BAS3)/1.E4)/(MVDS**BAS3)
1255 BEST = 2.*G*NS1D*AMS3*EXP(GAMLN(SBA1+AFAS+1.)-GAMLN(AFAS+1.)- &
1256 SBA1*LOG(LAMD))/(KINV**2.*AAS3)
1257 C1X2 = VTC1*BEST**5.E-1
1258 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.
1259 VTA1 = VTC2*((1+C1X2)**5.E-1-1.)**2./BEST**VTB1
1260 AVS = VTA1*KINV**(1.-2.*VTB1)*(2.*AMS3*G/AAS3)**VTB1
1261 BVS = VTB1*(BMS3+2.-BAS3)-1.
1264 END SUBROUTINE SOLVE_AFAS
1265 !======================================================================
1267 !======================================================================
1268 SUBROUTINE SOLVE_AFAG(TK1D,RHO,QG1D,QC1D,NG1D,VG1D,G2M1D,LAMG, &
1269 AFAG,MVDG,RHOG,AMG,AVG,BVG)
1270 !======================================================================
1272 REAL :: TK1D,RHO,QG1D,QC1D,NG1D,VG1D,G2M1D,G3M1D,RHOG,LAMG,AFAG, &
1273 AMG,AVG,BVG,BEST0,LAMGMIN,LAMGMAX,KDX,KINV,GG1,C1X2,VTA1,&
1274 VTB1,BEST,MVDG,GMLR,BDG,FDG,LTK,LQG,MDG
1276 IF (ICE_RHOG.EQ.0) THEN
1279 ELSEIF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
1280 RHOG = QG1D/(VG1D+ISMALL)
1281 IF (TK1D.GE.TK0C) THEN
1282 IF (RHOG.GT.RHOH) THEN
1286 IF (RHOG.GT.RHOG0) THEN
1290 IF (RHOG.LT.RHOIMIN) THEN
1295 IF (NG1D.LT.NSMALL) THEN
1298 MDG = EXP(-2205.8027+1225.8046*LTK-226.27995*LTK**2.+ &
1299 13.929644*LTK**3.-0.25*LQG)/1.E3
1300 NG1D = 1.E9*QG1D*V2M3/RHOG/MDG**3.
1303 G3M1D = QG1D*V2M3/RHOG
1304 IF (G2M1D.GE.ASMALL.AND.G3M1D.GE.ISMALL) THEN
1305 KDX = MAX(0.,G2M1D**3./(G3M1D**2.*NG1D))
1306 IF (KDX.GT.KCGMAX) THEN
1308 G2M1D = (KDX*NG1D*G3M1D**2.)**THRD
1309 ELSEIF (KDX.LT.KCGMIN) THEN
1311 G2M1D = (KDX*NG1D*G3M1D**2.)**THRD
1313 AFAG = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
1314 AFAG = MIN(MAX(AFAG,AFAMIN),AFAMAX)
1315 ! LAMG = (NG1D*(AFAG+1.)*(AFAG+2.)*(AFAG+3.)/G3M1D)**THRD
1316 LAMG = (AFAG+3.)*G2M1D/G3M1D
1318 IF (AFAG_3M.EQ.0) THEN
1321 ELSEIF (AFAG_3M.EQ.1) THEN
1323 G2M1D = (KCGMIN*NG1D*G3M1D**2.)**THRD
1324 ELSEIF (AFAG_3M.EQ.2) THEN
1325 BDG = MIN(MAX((G3M1D/NG1D)**THRD*1.E3,DGMIN*1.E3),DGMAX*1.E3)
1326 IF (TK1D.GE.TK0C) THEN
1327 FDG = 0.58006354+0.79661229*BDG-0.18394382*LOG(NG1D)+ &
1328 0.067371044*BDG**2.+9.832945E-3*LOG(NG1D)**2.+ &
1329 0.12433055*BDG*LOG(NG1D)
1331 IF (QC1D.GE.1.E-8) THEN
1332 FDG = 0.17363469+1.5044291*BDG-0.050639722*LOG(NG1D)+&
1333 0.015101052*BDG**2.+2.5974719E-3*LOG(NG1D)**2.+&
1334 0.01961464*BDG*LOG(NG1D)
1336 FDG = 0.59259317-0.89933515*BDG+2.0893032*BDG**2.- &
1337 0.50305755*BDG**3.-2.2446793E-2*LOG(NG1D)+ &
1338 2.7589047E-3*LOG(NG1D)**2.
1341 KDX = MAX(KCGMIN,MIN(KCGMAX,(BDG/FDG)**3.))
1342 AFAG = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
1343 AFAG = MIN(MAX(AFAG,AFAMIN),AFAMAX)
1344 ! AFAG = MAX(AFAMIN,5.5*TANH(0.7*(BDG-4.5))+8.5)
1347 LAMG = (EXP(GAMLN(AFAG+4.)-GAMLN(AFAG+1.))*NG1D/G3M1D)**THRD
1349 LAMGMIN = (EXP(GAMLN(AFAG+4.)-GAMLN(AFAG+1.)))**THRD/DGMAX
1350 LAMGMAX = (EXP(GAMLN(AFAG+4.)-GAMLN(AFAG+1.)))**THRD/DGMIN
1351 IF (LAMG.LT.LAMGMIN) THEN
1353 NG1D = G3M1D*EXP(GAMLN(AFAG+1.)-GAMLN(AFAG+4.)+3.*LOG(LAMG))
1354 ELSEIF (LAMG.GT.LAMGMAX) THEN
1356 NG1D = G3M1D*EXP(GAMLN(AFAG+1.)-GAMLN(AFAG+4.)+3.*LOG(LAMG))
1358 MVDG = (EXP(GAMLN(AFAG+4.)-GAMLN(AFAG+1.)))**THRD/LAMG
1359 IF (ICE_VTG.EQ.0) THEN
1362 ELSEIF (ICE_VTG.EQ.1) THEN
1363 KINV = (1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5)/RHO
1364 BEST0 = 2.*G*NG1D/(KINV**2.)
1365 GG1 = GAMLN(AFAG+1.)
1366 BEST = BEST0*AMG*EXP(GAMLN(BMG+AFAG+1.)-GG1-BMG*LOG(LAMG))/AAW
1367 C1X2 = VTC1*BEST**5.E-1
1368 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.
1369 VTA1 = VTC2*((1+C1X2)**5.E-1-1.)**2./BEST**VTB1
1370 AVG = VTA1*KINV**(1.-2.*VTB1)*(2.*AMG*G/AAW)**VTB1
1374 END SUBROUTINE SOLVE_AFAG
1375 !======================================================================
1377 !======================================================================
1378 SUBROUTINE SOLVE_AFAH(TK1D,RHO,QH1D,NH1D,H2M1D,LAMH,AFAH,MVDH, &
1380 !======================================================================
1382 REAL :: TK1D,RHO,QH1D,NH1D,H2M1D,H3M1D,LAMH,AFAH,AVH,BVH,BEST0, &
1383 GH1,KDX,MVDH,LAMHMIN,LAMHMAX,KINV,C1X2,VTA1,VTB1,BEST, &
1386 IF (NH1D.LT.NSMALL) THEN
1389 NH1D = EXP(22.929406-4.2328364*LTK+0.30647567*LTK**2.- &
1390 0.009233271*LTK**3.-0.25*LQH)
1392 H3M1D = QH1D*V2M3/RHOH
1393 IF (H2M1D.GE.ASMALL.AND.H3M1D.GE.ISMALL) THEN
1394 KDX = MAX(0.,H2M1D**3./(H3M1D**2.*NH1D))
1395 IF (KDX.GT.KCHMAX) THEN
1397 H2M1D = (KDX*NH1D*H3M1D**2.)**THRD
1398 ELSEIF (KDX.LT.KCHMIN) THEN
1400 H2M1D = (KDX*NH1D*H3M1D**2.)**THRD
1402 AFAH = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
1403 AFAH = MIN(MAX(AFAH,AFAMIN),AFAMAX)
1404 ! LAMH = (NH1D*(AFAH+1.)*(AFAH+2.)*(AFAH+3.)/H3M1D)**THRD
1405 LAMH = (AFAH+3.)*H2M1D/H3M1D
1407 IF (AFAH_3M.EQ.0) THEN
1410 ELSEIF (AFAH_3M.EQ.1) THEN
1412 H2M1D = (KCHMIN*NH1D*H3M1D**2.)**THRD
1413 ELSEIF (AFAH_3M.EQ.2) THEN
1414 BDH = MIN(MAX((H3M1D/NH1D)**THRD*1.E3,DHMIN*1.E3),DHMAX*1.E3)
1415 IF (TK1D.GE.TK0C) THEN
1416 FDH = 1.157754+0.37852874*BDH-0.11129737*LOG(NH1D)+ &
1417 0.13929599*BDH**2.+8.1105237E-3*LOG(NH1D)**2.+ &
1418 5.7432113E-2*BDH*LOG(NH1D)
1420 FDH = -0.48246793+2.0407077*BDH+2.2262969E-2*LOG(NH1D)- &
1421 0.158389*BDH**2.-5.5545804E-3*LOG(NH1D)**2.+ &
1422 2.9443577E-2*BDH*LOG(NH1D)
1424 KDX = MAX(KCHMIN,MIN(KCHMAX,(BDH/FDH)**3.))
1425 AFAH = (6.*KDX-3.+SQRT(8.*KDX+1.))/(2.-2.*KDX)
1426 AFAH = MIN(MAX(AFAH,AFAMIN),AFAMAX)
1427 ! AFAH = MAX(AFAMIN,3.7*TANH(0.3*(BDH-9.))+6.5)
1430 LAMH = (EXP(GAMLN(AFAH+4.)-GAMLN(AFAH+1.))*NH1D/H3M1D)**THRD
1432 LAMHMIN = (EXP(GAMLN(AFAH+4.)-GAMLN(AFAH+1.)))**THRD/DHMAX
1433 LAMHMAX = (EXP(GAMLN(AFAH+4.)-GAMLN(AFAH+1.)))**THRD/DHMIN
1434 IF (LAMH.LT.LAMHMIN) THEN
1436 NH1D = H3M1D*EXP(GAMLN(AFAH+1.)-GAMLN(AFAH+4.)+3.*LOG(LAMH))
1437 ELSEIF (LAMH.GT.LAMHMAX) THEN
1439 NH1D = H3M1D*EXP(GAMLN(AFAH+1.)-GAMLN(AFAH+4.)+3.*LOG(LAMH))
1441 MVDH = (EXP(GAMLN(AFAH+4.)-GAMLN(AFAH+1.)))**THRD/LAMH
1442 IF (ICE_VTH.EQ.0) THEN
1445 ELSEIF (ICE_VTH.EQ.1) THEN
1446 KINV = (1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5)/RHO
1447 BEST0 = 2.*G*NH1D/(KINV**2.)
1448 GH1 = GAMLN(AFAH+1.)
1449 BEST = BEST0*AMH*EXP(GAMLN(BMH+AFAH+1.)-GH1-BMH*LOG(LAMH))/AAW
1450 C1X2 = VTC1*BEST**5.E-1
1451 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.
1452 VTA1 = VTC2*((1+C1X2)**5.E-1-1.)**2./BEST**VTB1
1453 AVH = VTA1*KINV**(1.-2.*VTB1)*(2.*AMH*G/AAW)**VTB1
1457 END SUBROUTINE SOLVE_AFAH
1458 !======================================================================
1460 !======================================================================
1461 SUBROUTINE AERO_CONST(CCNTY)
1462 !======================================================================
1464 INTEGER, INTENT(IN) :: CCNTY ! 1.MARINE(WHITBY,1978);2.CLEAN CONTINENTAL(WHITBY,1978);
1465 ! 3.AVERAGE CONTINENTAL(WHITBY,1978);
1466 ! 4.URBAN(WHITBY,1978); 5.ICE NUECEI
1467 INTEGER, PARAMETER :: ID_SENS = 1 ! sensetivity test ID
1468 INTEGER, PARAMETER :: N1 = NCCN, N2 = 5 ! AEROSOL MODE AND COMPONENT
1469 INTEGER :: IA,I,K,J,IM,IV,IB
1470 INTEGER, DIMENSION(NAER) :: IDAER
1471 REAL, DIMENSION(NAER) :: XMASS
1472 REAL, DIMENSION(N2) :: ASHX,CMASX,DNASX,AVANX ! AEROSOL SCALE HEIGHT. 3.57km-continental, 0.8km-marine;
1473 ! MOLAR WEIGHT OF AEROSOL (kg/mol);
1474 ! DENSITY OF SOLID AEROSOL (kg/m^3);
1476 REAL, DIMENSION(N1,N2) :: ZCCNX,CNMODX,CNSTDX ! AEROSOL TRI-MODAL SPECTRUM PARAMETERS
1477 REAL, DIMENSION(N2,3) :: SENX ! SENSITIVE TEST RATIO
1478 REAL :: XLOG3,XMTOT,XMAS,DUST_IN0,DUST_IN,DAIR,DZ0,ZH ! Height of grid point [m]
1479 DOUBLE PRECISION :: DMODE,D2STDV,DLNXX,DERF,DSQRT,DLOG
1480 DATA ZCCNX/3.4E8,6.E7,3.E6, 1.E9,8.E8,7.2E5, 6.4E9,2.3E9,3.2E6, &! Cheng et al. 2007, Table 1, number concentration
1481 1.06E11,3.2E10,5.4E6, 4.02E-11,4.5E9,5.4E6/
1482 DATA CNMODX/5.E-9,3.55E-8,3.1E-7,8.E-9,3.3E-8,4.6E-7,7.5E-9, &! Cheng et al. 2007, Table 1, mean size
1483 3.8E-8,5.1E-7,7.E-9,2.7E-8,4.3E-7,4.5E-9,2.35E-8, &
1485 DATA CNSTDX/0.47,0.69,0.99,0.47,0.74,0.79,0.53,0.69,0.77,0.59, &! Cheng et al. 2007, Table 1, standard deviation
1486 0.77,0.79,0.53,0.75,0.74/
1487 DATA ASHX/8.E2,3.57E3,3.57E3,2.E3,1.E4/ ! SCALING HEIGHT
1488 DATA CMASX/0.13214,0.13214,0.13214,0.13214,0.13214/ ! MOLAR WEIGHT OF AEROSOL (kg/mol)
1489 DATA DNASX/1769.,1769.,1769.,1769.,1769./ ! DENSITY OF SOLID AEROSOL (kg/m^3)
1490 DATA AVANX/3.,3.,3.,3.,3./ ! VAN'T HOFF FACTOR
1491 DATA SENX/1.,1.,1.,1.,1.,10.,10.,10.,10.,10.,0.1,0.1,0.1,0.1,0.1/ ! 1st, 2nd, and 3rd set for sensetivity test
1493 IF (CCNTY.EQ.1) THEN
1494 DNC0 = 46635.361; DNC1 = -25567.933
1495 DNC2 = 4674.3534; DNC3 = -284.84377
1496 ELSEIF (CCNTY.EQ.2) THEN
1497 DNC0 = -48575.888; DNC1 = 26634.802
1498 DNC2 = -4862.961; DNC3 = 295.7886
1499 ELSEIF (CCNTY.EQ.3) THEN
1500 DNC0 = -63646.587; DNC1 = 34778.66
1501 DNC2 = -6326.6327; DNC3 = 383.28849
1502 ELSEIF (CCNTY.EQ.4) THEN
1503 DNC0 = -6069.3697; DNC1 = 3667.889
1504 DNC2 = -725.3412; DNC3 = 47.260735
1508 IBAER(I) = IBAER(I-1)+NAERN(I-1)
1510 TBLRC(1) = DLOG(1.D-9) ! 0.001 um
1511 TBLRC(NTBXA) = DLOG(1.D-3) ! 1000. um
1513 TBLRC(I) = TBLRC(1)+DBLE(I-1)/DBLE(NTBXA-1)*(TBLRC(NTBXA)- &
1517 PRINT *, 'AEROSOL ID =',IDAER
1519 ASH(J) = ASHX(IDAER(J))
1520 DNAS(J) = DNASX(IDAER(J))
1521 CMAS(J) = CMASX(IDAER(J))
1522 AVAN(J) = AVANX(IDAER(J))
1523 BETA1(J) = CMW*DNAS(J)*AVAN(J)/(CMAS(J)*RHOW)
1526 ZCCN(IM,J) = ZCCNX(IM,IDAER(J))*1. ! change the factor to change the initial concentration
1527 CNMOD(IM,J) = CNMODX(IM,IDAER(J))
1528 CNSTD(IM,J) = CNSTDX(IM,IDAER(J))
1529 XLOG3 = CNMOD(IM,J)*CNMOD(IM,J)*CNMOD(IM,J)
1530 WMAS(IM,J) = ZCCN(IM,J)*XLOG3*EXP(4.5*CNSTD(IM,J)**2.) ! factor for mass, the 3rd momentum
1531 RFACT(IM,J) = 1./(C4PI3*DNAS(J)*XLOG3*EXP(4.5* &
1533 XMTOT = XMTOT+WMAS(IM,J)
1536 WMAS(IM,J) = WMAS(IM,J)/XMTOT
1540 TBLXF(I,J) = DBLE(0.)
1543 DMODE = DLOG(DBLE(CNMOD(IM,J)))+DBLE(3.)*DBLE(CNSTD(IM,J))*DBLE(CNSTD(IM,J))
1544 D2STDV = DSQRT(DBLE(2.))*DBLE(CNSTD(IM,J))
1546 DLNXX = (TBLRC(I)-DMODE)/D2STDV
1547 TBLXF(I,J) = TBLXF(I,J)+DBLE(WMAS(IM,J))*DBLE(0.5)* &
1552 TBLXF(I,J) = DMAX1(1.D-20,TBLXF(I,J))
1555 CALL FIND_RC0(1.D-6,CNMOD(1,J),CNSTD(1,J),WMAS(1,J),RXMIN(J), &
1556 TBLXF(1,J),TBLRC) ! lower limit of dry aerosol fraction is set as 1.E-6
1557 WRITE(*,*)'FOR DRY AEROSOL FRACTION BE > 1.E-6'
1558 WRITE(*,'(A30,I1,A8,F6.4,A3)')'MINIMUN R-CUTOFF FOR AEROSOL' &
1559 ,J,' IS SET ',RXMIN(J)*1.E6,' um'
1560 WRITE(*,*)'SENSITIVITY TEST ID:',ID_SENS
1561 !----------------- FACTOR FOR SENSETIVITY ------------------------------
1562 SENS(J) = SENX(IDAER(J),ID_SENS)
1565 END SUBROUTINE AERO_CONST
1566 !======================================================================
1568 !======================================================================
1569 SUBROUTINE INIT_AEROSOL(P,RHO,DZ,XLAND,QAERO,IDS,IDE,JDS,JDE,KDS,&
1570 KDE,IMS,IME,JMS,JME,KMS,KME,ITS,ITE,JTS,JTE,KTS,KTE)
1571 !======================================================================
1573 INTEGER, INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE,IMS,IME,JMS,JME, &
1574 KMS,KME,ITS,ITE,JTS,JTE,KTS,KTE
1575 INTEGER :: ITF,JTF,IA,I,K,J,IM,K_PBL,IV,IB
1576 INTEGER, DIMENSION(NAER) :: IDAER
1577 REAL, INTENT(IN), DIMENSION(IMS:IME,JMS:JME) :: XLAND ! 1:land ; 2:ocean
1578 REAL, INTENT(IN), DIMENSION(ITS:ITE,KTS:KTE,JTS:JTE) :: P,RHO,DZ
1579 REAL, DIMENSION(ITS:ITE,KTS:KTE,JTS:JTE,NAERT) :: QAERO
1580 REAL, DIMENSION(ITS:ITE,JTS:JTE,NAER) :: RASH
1581 REAL, DIMENSION(NAER) :: XMASS
1582 REAL, PARAMETER :: P_PBL = 85000. ! set PBL pressure [Pa]
1583 REAL, PARAMETER :: BACKIN = 4.E5 ! initial ice nuclei number concentration (#/kg)
1584 REAL :: XLOG3,XMTOT,XMAS,DUST_IN0,DUST_IN,DAIR,DZ0,ZH ! Height of grid point [m]
1585 DOUBLE PRECISION :: DMODE,D2STDV,DLNXX,DERF,DSQRT,DLOG
1587 ITF = MIN(ITE,IDE-1)
1588 JTF = MIN(JTE,JDE-1)
1593 QAERO(I,K,J,IA) = 0.
1601 XMAS = ZCCN(IM,J)*CNMOD(IM,J)**3.*EXP(4.5*CNSTD(IM,J)**2.)
1602 XMASS(J) = XMASS(J)+XMAS
1604 XMASS(J) = XMASS(J)*C4PI3*DNAS(J)*SENS(J)
1606 IF (ID_DUST*ID_IN.NE.0) THEN ! IF DUST EXISTS
1609 ! DUST_IN0 = DUST_IN0+ZCCN(IM,ID_DUST)
1620 QAERO(I,K,J,IV) = XMASS(IA)/RHO(I,K,J) ! dry aerosol [kg/kg]
1621 RASH (I,J,IA) = 1./ASH(IA) ! increase scale height if necessary
1622 DUST_IN = DUST_IN0 ! dust # over land
1623 IF (IA.EQ.ID_IN) THEN ! IN
1624 IF (ID_DUST.NE.0) THEN ! DUST IS CONSIDERED AS IN
1625 ! IF (XLAND(I,J).EQ.2.) THEN ! over ocean
1626 ! DUST_IN = DUST_IN*0.01 ! dust #
1627 ! RASH (I,J,IA) = RASH (I,J,IA)*0.5 ! double scale height
1630 DUST_IN = BACKIN ! set to background value
1631 RASH (I,J,IA) = RASH (I,J,IA)*0.5 ! double scale height
1634 DUST_IN = MAX(BACKIN,DUST_IN)
1635 QAERO(I,K,J,IV) = DUST_IN/DAIR ! 0.5 #/L [#/kg]*[kPa] ! tsai
1636 ELSE ! dust, NH42SO4, chemicals....
1637 ! IF (XLAND(I,J).EQ.2.) THEN ! over ocean
1638 ! IF (IA.EQ.ID_NH42SO4) THEN !
1639 ! QAERO(I,K,J,IV) = QAERO(I,K,J,IV)*0.05 ! reduce it
1640 ! RASH(I,J,IA) = RASH(I,J,IA)*0.5 ! double scale height
1641 ! ELSE ! dust or IN, not sulfate (the same)
1642 ! QAERO(I,K,J,IV) = QAERO(I,K,J,IV)*0.01 ! reduce it
1643 ! RASH(I,J,IA) = RASH (I,J,IA)*0.5 ! double scale height
1644 ! DUST_IN = DUST_IN0*0.01 ! dust #
1650 IF (P(I,K,J).LT.P_PBL) K_PBL = K
1652 K_PBL = MIN(K_PBL,KTE-3+1) ! at least 3 layers are within PBL
1657 ZH = ZH+(DZ0+DZ(I,K,J))*0.5
1661 QAERO(I,K,J,IV)=QAERO(I,K,J,IV)*EXP(-RASH(I,J,IA)*ZH) ! dry aerosol [kg/kg]*[kPa]
1667 DO IB = 2,MIN(2,NAERN(IA)) ! if NV>2
1669 QAERO(I,K,J,IV+IB) = QAERO(I,K,J,IV+1) ! set NV2: total = dry aerosol
1677 PRINT *,'aerosols_init,I,J,NAER',(ITS+ITE)/2,(JTS+JTE)/2,NAER
1679 WRITE(*,'(I2,X,20(E12.6,X))') K,(QAERO((ITS+ITE)/2,K, &
1680 (JTS+JTE)/2,IV),IV=1,NAERT)
1685 END SUBROUTINE INIT_AEROSOL
1686 !======================================================================
1688 !=======================================================================
1689 SUBROUTINE MP_NTU(ITIMESTEP,TH,P,DZ,W,PII,DT_MP,SR,QV,QC,QR,QI, &
1690 QS,QG,QH,NC,NR,NI,NS,NG,NH,QDCN,QTCN,QCCN,QRCN,QNIN, &
1691 FI,FS,VI,VS,VG,AI,AS,AG,AH,I3M,RAINNC,RAINNCV,SNOWNC, &
1692 SNOWNCV,GRAPNC,GRAPNCV,HAILNC,HAILNCV,IDS,IDE,JDS,JDE,&
1693 KDS,KDE,IMS,IME,JMS,JME,KMS,KME,ITS,ITE,JTS,JTE,KTS, &
1695 !======================================================================
1697 INTEGER, INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE,IMS,IME,JMS,JME, &
1698 KMS,KME,ITS,ITE,JTS,JTE,KTS,KTE,ITIMESTEP
1699 REAL, INTENT(IN) :: DT_MP
1700 REAL, DIMENSION(IMS:IME,JMS:JME),INTENT(INOUT) :: RAINNC,RAINNCV,&
1701 SNOWNC,SNOWNCV,GRAPNC,GRAPNCV,HAILNC,HAILNCV,SR
1702 REAL, DIMENSION(IMS:IME,KMS:KME,JMS:JME), INTENT(IN) :: PII,DZ,W,P
1703 REAL, DIMENSION(IMS:IME,KMS:KME,JMS:JME), INTENT(INOUT) :: &
1704 TH,QV,QC,QR,QI,QS,QG,QH,NC,NR,NI,NS,NG,NH,VI,VS,VG,FI,FS, &
1705 AI,AS,AG,AH,I3M,QDCN,QTCN,QCCN,QRCN,QNIN
1706 INTEGER :: I,K,J,NK,ITF,JTF
1708 REAL, DIMENSION(KTS:KTE) :: TK1D,P1D,W1D,S1D,DZ1D,QV1D,QC1D,QR1D,&
1709 QI1D,QS1D,QG1D,QH1D,NC1D,NR1D,NI1D,NS1D,NG1D,NH1D,VI1D, &
1710 VS1D,VG1D,FI1D,FS1D,AI1D,AS1D,AG1D,AH1D,I3M1D,QDCN1D, &
1711 QTCN1D,QCCN1D,QRCN1D,QNIN1D
1712 REAL, DIMENSION(ITS:ITE,JTS:JTE) :: CLODNCV,ICENCV,VINCV,VSNCV, &
1713 VGNCV,FINCV,FSNCV,AINCV,ASNCV,AGNCV,AHNCV,I3MNCV
1714 REAL, DIMENSION(ITS:ITE,KTS:KTE,JTS:JTE) :: TK
1718 ITF = MIN(ITE,IDE-1)
1719 JTF = MIN(JTE,JDE-1)
1722 CLODNCV(I,J) = 0.; RAINNCV(I,J) = 0.; ICENCV(I,J) = 0.
1723 SNOWNCV(I,J) = 0.; GRAPNCV(I,J) = 0.; HAILNCV(I,J) = 0.
1724 VINCV(I,J) = 0.; VSNCV(I,J) = 0.; VGNCV(I,J) = 0.
1725 FINCV(I,J) = 0.; FSNCV(I,J) = 0.; AINCV(I,J) = 0.
1726 ASNCV(I,J) = 0.; AGNCV(I,J) = 0.; AHNCV(I,J) = 0.
1727 I3MNCV(I,J) = 0.; SR(I,J) = 0.
1728 !----------------- write data from 3D to 1D and assign upside down -----
1732 TK1D(K) = TH(I,NK,J)*PII(I,NK,J)
1733 W1D(K) = 0.5*(W(I,NK,J)+W(I,NK+1,J)) ! W at half level
1734 QV1D(K) = QV(I,NK,J)
1735 DZ1D(K) = DZ(I,NK,J)
1737 QC1D(K) = QC(I,NK,J)
1738 QR1D(K) = QR(I,NK,J)
1739 QI1D(K) = QI(I,NK,J)
1740 QS1D(K) = QS(I,NK,J)
1741 QG1D(K) = QG(I,NK,J)
1742 QH1D(K) = QH(I,NK,J)
1743 NC1D(K) = NC(I,NK,J)
1744 NR1D(K) = NR(I,NK,J)
1745 NI1D(K) = NI(I,NK,J)
1746 NS1D(K) = NS(I,NK,J)
1747 NG1D(K) = NG(I,NK,J)
1748 NH1D(K) = NH(I,NK,J)
1749 VI1D(K) = VI(I,NK,J)
1750 VS1D(K) = VS(I,NK,J)
1751 VG1D(K) = VG(I,NK,J)
1752 FI1D(K) = FI(I,NK,J)
1753 FS1D(K) = FS(I,NK,J)
1754 AI1D(K) = AI(I,NK,J)
1755 AS1D(K) = AS(I,NK,J)
1756 AG1D(K) = AG(I,NK,J)
1757 AH1D(K) = AH(I,NK,J)
1758 I3M1D(K) = I3M(I,NK,J)
1759 QDCN1D(K) = MAX(RLIMIT,QDCN(I,NK,J))
1760 QTCN1D(K) = MAX(RLIMIT,QTCN(I,NK,J))
1761 QCCN1D(K) = MAX(RLIMIT,QCCN(I,NK,J))
1762 QRCN1D(K) = MAX(RLIMIT,QRCN(I,NK,J))
1763 QNIN1D(K) = MAX(RLIMIT,QNIN(I,NK,J))
1766 CALL NTU_MICRO(TK1D,QV1D,DZ1D,P1D,S1D,W1D,SR(I,J),ICENCV(I,J),&
1767 VINCV(I,J),VSNCV(I,J),VGNCV(I,J),FINCV(I,J),FSNCV(I,J), &
1768 AINCV(I,J),ASNCV(I,J),AGNCV(I,J),AHNCV(I,J),I3MNCV(I,J), &
1769 CLODNCV(I,J),RAINNC(I,J),RAINNCV(I,J),SNOWNC(I,J), &
1770 SNOWNCV(I,J),GRAPNC(I,J),GRAPNCV(I,J),HAILNC(I,J), &
1771 HAILNCV(I,J),DT,DTMN,QC1D,QR1D,QI1D,QS1D,QG1D,QH1D,NC1D, &
1772 NR1D,NI1D,NS1D,NG1D,NH1D,VI1D,VS1D,VG1D,FI1D,FS1D,AI1D, &
1773 AS1D,AG1D,AH1D,I3M1D,QDCN1D,QTCN1D,QCCN1D,QRCN1D,QNIN1D, &
1778 TH(I,NK,J) = TK1D(K)/PII(I,NK,J)
1779 QV(I,NK,J) = MAX(0.,QV1D(K))
1780 QC(I,NK,J) = MAX(0.,QC1D(K))
1781 QR(I,NK,J) = MAX(0.,QR1D(K))
1782 QI(I,NK,J) = MAX(0.,QI1D(K))
1783 QS(I,NK,J) = MAX(0.,QS1D(K))
1784 QG(I,NK,J) = MAX(0.,QG1D(K))
1785 QH(I,NK,J) = MAX(0.,QH1D(K))
1786 NC(I,NK,J) = MAX(0.,NC1D(K))
1787 NR(I,NK,J) = MAX(0.,NR1D(K))
1788 NI(I,NK,J) = MAX(0.,NI1D(K))
1789 NS(I,NK,J) = MAX(0.,NS1D(K))
1790 NG(I,NK,J) = MAX(0.,NG1D(K))
1791 NH(I,NK,J) = MAX(0.,NH1D(K))
1792 VI(I,NK,J) = MAX(0.,VI1D(K))
1793 VS(I,NK,J) = MAX(0.,VS1D(K))
1794 VG(I,NK,J) = MAX(0.,VG1D(K))
1795 FI(I,NK,J) = MAX(0.,FI1D(K))
1796 FS(I,NK,J) = MAX(0.,FS1D(K))
1797 AI(I,NK,J) = MAX(0.,AI1D(K))
1798 AS(I,NK,J) = MAX(0.,AS1D(K))
1799 AG(I,NK,J) = MAX(0.,AG1D(K))
1800 AH(I,NK,J) = MAX(0.,AH1D(K))
1801 I3M(I,NK,J) = MAX(0.,I3M1D(K))
1802 QDCN(I,NK,J) = MAX(0.,QDCN1D(K))
1803 QTCN(I,NK,J) = MAX(0.,QTCN1D(K))
1804 QCCN(I,NK,J) = MAX(0.,QCCN1D(K))
1805 QRCN(I,NK,J) = MAX(0.,QRCN1D(K))
1806 QNIN(I,NK,J) = MAX(0.,QNIN1D(K))
1811 END SUBROUTINE MP_NTU
1812 !======================================================================
1814 !======================================================================
1815 SUBROUTINE NTU_MICRO(TK3D,QV3D,DZ3D,P3D,S3D,W3D,SR,ICENCV,VINCV, &
1816 VSNCV,VGNCV,FINCV,FSNCV,AINCV,ASNCV,AGNCV,AHNCV, &
1817 I3MNCV,CLODNCV,RAINNC,RAINNCV,SNOWNC,SNOWNCV,GRAPNC, &
1818 GRAPNCV,HAILNC,HAILNCV,DT,DTMN,QC3D,QR3D,QI3D,QS3D, &
1819 QG3D,QH3D,NC3D,NR3D,NI3D,NS3D,NG3D,NH3D,VI3D,VS3D, &
1820 VG3D,FI3D,FS3D,AI3D,AS3D,AG3D,AH3D,I3M3D,QDCN3D, &
1821 QTCN3D,QCCN3D,QRCN3D,QNIN3D,KTS,KTE)
1822 !======================================================================
1824 INTEGER, INTENT(IN) :: KTS,KTE
1825 INTEGER :: K,A,IV,IV0,IV1,IV2,IV3,IV4,IM,IT,J
1826 INTEGER, DIMENSION(KTS:KTE) :: HID
1827 REAL, DIMENSION(KTS:KTE), INTENT(IN) :: W3D,P3D
1828 REAL, DIMENSION(KTS:KTE) :: TK3D,TC3D,QV3D,DZ3D,S3D,QC3D,QR3D, &
1829 QI3D,QS3D,QG3D,QH3D,QDCN3D,QTCN3D,QCCN3D,QRCN3D,QNIN3D, &
1830 NC3D,NR3D,NI3D,NS3D,NG3D,NH3D,VI3D,VS3D,VG3D,FI3D,FS3D, &
1831 AI3D,AS3D,AG3D,AH3D,I3M3D,TAIR,PRES,QVAP,ADAGR,AMI,BMI,AVI,&
1832 BVI,AMS,AVS,BVS,AMG,AVG,BVG,AVH,BVH,INHGR,DCLDMT,DCLDMC, &
1833 DCLDMR,DTAIR,DPDT,DQVAP,QACac,QACar,VT_QC,VT_QR,VT_QI, &
1834 VT_QS,VT_QG,VT_QH,VT_NC,VT_NR,VT_NI,VT_NS,VT_NG,VT_NH, &
1835 VT_VI,VT_VS,VT_VG,VT_FI,VT_FS,VT_AI,VT_AS,VT_AG,VT_AH, &
1836 VTI3M,TK0,P40,RHO,CPM,GQCTR,ESW,ESI,QVSW,QVSI,SSRW,SSRI, &
1837 XXLV,XXLS,XXLF,XDNC,XDNR,IPF,IPG,I3M0,ZETA,BEST,MVRC,MVRR, &
1838 SIGC,MNRC,KDX,BDR,BDI,BDS,BDG,BDH,R3M3D,S3M3D,G3M3D,H3M3D, &
1839 FDI,FDS,FDG,FDH,RHOI,RHOS,RHOG,IASPR,SASPR,MVDC,MVDR,MVDI, &
1840 MVDS,MVDG,MVDH,EFRC,EFRR,AFAC,AFAR,AFAI,AFAS,AFAG,AFAH, &
1841 LAMC,LAMR,LAMI,LAMS,LAMG,LAMH,LTK,LQC,LQR,LQI,LQS,LQG,LQH, &
1843 REAL :: SR,ICENCV,CLODNCV,RAINNC,RAINNCV,SNOWNC,SNOWNCV,GRAPNC, &
1844 GRAPNCV,HAILNC,HAILNCV,DT,DTMN,SDTL,SDTS,DTL,DTS,CNDMAX, &
1845 TMP,XMASS,TEMPC,TEMPR,TEMPT,FINCV,FSNCV,VINCV,VSNCV, &
1846 VGNCV,AINCV,ASNCV,AGNCV,AHNCV,I3MNCV
1847 REAL, DIMENSION(KTS:KTE,3) :: VTMEAN
1848 LOGICAL, DIMENSION(KTS:KTE,NAER) :: DO_FR ! re-construct r-cutoff from XA & XC for once only
1849 REAL, DIMENSION(KTS:KTE,NAER) :: RX0 ! CUTOFF RADIUS (m)
1850 REAL, DIMENSION(KTS:KTE,NAERT) :: AERO ! AEROSOL MIXING RATIO
1851 REAL, DIMENSION(MAER) :: ABCD
1852 REAL, DIMENSION(NCCN,KTS:KTE,NAER) :: ZCCNS ! AEROSOL # OF EACH MODE (#/kg)
1854 !----- AT SUBSATURATION, REMOVE SMALL AMOUNTS OF HYDROMETEORS ----------
1856 AERO(K,1) = MAX(0.,QDCN3D(K))
1857 AERO(K,2) = MAX(0.,QTCN3D(K))
1858 AERO(K,3) = MAX(0.,QCCN3D(K))
1859 AERO(K,4) = MAX(0.,QRCN3D(K))
1860 AERO(K,5) = MAX(0.,QNIN3D(K))
1861 TC3D(K) = TK3D(K)-TK0C
1862 ESW(K) = MIN(0.99*P3D(K),POLYSVP(TK3D(K),0))
1863 ESI(K) = MIN(0.99*P3D(K),POLYSVP(TK3D(K),1))
1864 IF (ESI(K).GT.ESW(K)) ESI(K) = ESW(K)
1865 SSRW(K) = QV3D(K)/(0.622*ESW(K)/(P3D(K)-ESW(K)))-1.
1866 SSRI(K) = QV3D(K)/(0.622*ESI(K)/(P3D(K)-ESI(K)))-1.
1867 XXLV(K) = 3.1484E6-2370.*TK3D(K)
1868 XXLS(K) = 3.15E6-2370.*TK3D(K)+0.3337E6
1869 XXLF(K) = 2836310.8-(3.1484E6-2370.*TK3D(K))
1870 CPM(K) = CP*(1.+0.887*QV3D(K))
1871 HID(K) = MAX(MIN(NINT(ABS(TC3D(K))/0.25),120),0)
1872 !-------------------------------------------------------------------------
1873 IF (QC3D(K).GE.QSMALL.AND.NC3D(K).LT.NSMALL) THEN
1874 LTK(K) = LOG(TK3D(K))
1875 LQC(K) = -1.*LOG(QC3D(K))
1876 NC3D(K) = EXP(DNC0+DNC1*LTK(K)+DNC2*LTK(K)**2.+DNC3* &
1877 LTK(K)**3.-0.25*LQC(K))
1878 IF (AFAC_3M.EQ.0) THEN
1880 ELSEIF (AFAC_3M.EQ.1) THEN
1881 MVRC(K) = (QC3D(K)/NC3D(K)/C4PI3W)**THRD
1882 MVRC(K) = MIN(MAX(MVRC(K),RCMIN),RCMAX)
1883 EFRC(K) = EXP(EFC1+EFC2*LOG(NC3D(K))+EFC3*LOG(MVRC(K)))
1884 KDX(K) = MAX(KCCMIN,MIN(KCCMAX,(MVRC(K)/EFRC(K))**3.))
1885 ! KDX(K) = QC3D(K)*V2M3/(8.*EFRC(K)**3.*NC3D(K)*RHOW)
1886 KDX(K) = MIN(KCCMAX,MAX(KCCMIN,KDX(K)))
1887 AFAC(K) = (6.*KDX(K)-3.+SQRT(8.*KDX(K)+1.))/(2.-2.* &
1889 AFAC(K) = MIN(MAX(AFAC(K),AFAMIN),AFAMAX)
1890 ELSEIF (AFAC_3M.EQ.2) THEN
1891 SIGC(K) = EXP(SIG1+SIG2*LOG(NC3D(K))+SIG3*LOG(QC3D(K)))
1892 MNRC(K) = EXP(MNR1+MNR2*LOG(NC3D(K))+MNR3*LOG(QC3D(K)))
1893 AFAC(K) = MIN(MAX(SIGC(K)/MNRC(K),AFAMIN),AFAMAX)
1896 IF (QR3D(K).GE.QSMALL.AND.NR3D(K).LT.NSMALL) THEN
1897 LTK(K) = LOG(TK3D(K))
1898 LQR(K) = -1.*LOG(QR3D(K))
1899 NR3D(K) = EXP(-5793.7852+3191.1171*LTK(K)-582.73279* &
1900 LTK(K)**2.+35.346854*LTK(K)**3.-0.25*LQR(K))
1901 IF (AFAR_3M.EQ.0) THEN
1903 ELSEIF (AFAR_3M.EQ.1) THEN
1904 MVRR(K) = (QR3D(K)/NR3D(K)/C4PI3W)**THRD
1905 MVRR(K) = MIN(RRMAX,MAX(RRMIN,MVRR(K)))
1906 EFRR(K) = EXP(EFR1+EFR2*LOG(NR3D(K))+EFR3*LOG(MVRR(K)))
1907 KDX(K) = MAX(KCRMIN,MIN(KCRMAX,(MVRR(K)/EFRR(K))**3.))
1908 ! KDX(K) = QR3D(K)*V2M3/(8.*EFRR(K)**3.*NR3D(K)*RHOW)
1909 KDX(K) = MIN(KCRMAX,MAX(KCRMIN,KDX(K)))
1910 AFAR(K) = (6.*KDX(K)-3.+SQRT(8.*KDX(K)+1.))/(2.-2.* &
1912 AFAR(K) = MIN(MAX(AFAR(K),AFAMIN),AFAMAX)
1913 ELSEIF (AFAR_3M.EQ.2) THEN
1914 BDR(K) = (QR3D(K)*V2M3/RHOW/NR3D(K))**THRD
1915 BDR(K) = MIN(MAX(BDR(K),DRMIN),DRMAX)
1916 AFAR(K) = MAX(AFAMIN,19.*TANH(0.6*(1.E3*BDR(K)-1.8))+17.)
1919 IF (QI3D(K).GE.QSMALL.AND.NI3D(K).LT.NSMALL) THEN
1920 IF (ICE_RHOI.EQ.0) THEN
1923 ELSEIF (ICE_RHOI.EQ.1) THEN
1924 QVSI(K) = 0.622*ESI(K)/(P3D(K)-ESI(K))
1925 INHGR(K) = ITBLE(HID(K))
1926 RHOI(K) = RHOI0*EXP(-3.*MAX((QV3D(K)-QVSI(K))-5.E-5, &
1928 VI3D(K) = QI3D(K)/RHOI(K)
1929 ELSEIF (ICE_RHOI.EQ.2) THEN
1933 LTK(K) = LOG(TK3D(K))
1934 LQI(K) = -1.*LOG(QI3D(K))
1935 MDI(K) = EXP(-3.2653646+2.0539073*LTK(K)-0.25*LQI(K))/1.E3
1936 NI3D(K) = 1.E9*QI3D(K)*V2M3/RHOI(K)/MDI(K)**3.
1937 I3M3D(K) = QI3D(K)*V2M3/RHOI(K)
1938 IF (ICE_SHAPE.EQ.0) THEN
1940 ELSEIF (ICE_SHAPE.EQ.1) THEN
1941 ADAGR(K) = (MAX(MIN(ITBLE(HID(K)),2.),0.5))**THRD
1942 ZETA(K) = (ADAGR(K)-1.)/(ADAGR(K)+2.)
1943 I3M0(K) = NI3D(K)*DI0**3.
1944 FI3D(K) = (I3M3D(K)/I3M0(K))**ZETA(K)*I3M3D(K)
1946 IF (AFAI_3M.EQ.0) THEN
1950 BDI(K) = (I3M3D(K)/NI3D(K))**THRD*1.E3
1951 BDI(K) = MIN(MAX(BDI(K),DIMIN*1.E3),DIMAX*1.E3)
1952 FDI(K) = 7.4015986E-2+0.79866676*BDI(K)-9.4468892E-3* &
1953 LOG(NI3D(K))+0.38235092*BDI(K)**2.+ &
1954 2.9811542E-4*LOG(NI3D(K))**2.+1.9052614E-2* &
1956 KDX(K) = MAX(KCIMIN,MIN(KCIMAX,(BDI(K)/FDI(K))**3.))
1957 AFAI(K) = (6.*KDX(K)-3.+SQRT(8.*KDX(K)+1.))/(2.-2.* &
1959 AFAI(K) = MIN(MAX(AFAI(K),AFAMIN),AFAMAX)
1960 ! AFAI(K) = MAX(AFAMIN,12.*TANH(0.7*(BDI(K)-1.7))+11.)
1961 IF (AFAI_3M.EQ.1) THEN
1962 KDX(K) = (AFAI(K)**2.+3.*AFAI(K)+2.)/(AFAI(K)**2.+ &
1964 AI3D(K) = (KDX(K)*NI3D(K)*I3M3D(K)**2.)**THRD
1965 ELSEIF (AFAI_3M.EQ.2) THEN
1970 IF (QS3D(K).GE.QSMALL.AND.NS3D(K).LT.NSMALL) THEN
1971 IF (ICE_RHOS.EQ.0) THEN
1975 LTK(K) = LOG(TK3D(K))
1976 LQS(K) = -1.*LOG(QS3D(K))
1977 IF (TK3D(K).LT.TK0C) THEN
1978 RHOS(K) = 15740.702-6098.0087*LTK(K)+503.33089* &
1979 LQS(K)+594.29913*LTK(K)**2.+1.9033961* &
1980 LQS(K)**2.-94.950429*LTK(K)*LQS(K)
1982 RHOS(K) = EXP(-64808.666+23113.508*LTK(K)-36.46632* &
1983 LQS(K)-2060.6024*LTK(K)**2.-0.005729458* &
1984 LQS(K)**2.+6.5057411*LTK(K)*LQS(K))
1986 RHOS(K) = MIN(RHOIMAX,MAX(RHOIMIN,RHOS(K)))
1987 IF (ICE_RHOS.EQ.1) THEN
1988 VS3D(K) = QS3D(K)/RHOS(K)
1989 ELSEIF (ICE_RHOS.EQ.2) THEN
1993 LTK(K) = LOG(TK3D(K))
1994 LQS(K) = -1.*LOG(QS3D(K))
1995 MDS(K) = EXP(-123.23898+40.74706*LTK(K)-3.0333477* &
1996 LTK(K)**2.-0.31219981*LQS(K)+0.0012798222* &
1998 NS3D(K) = 1.E9*QS3D(K)*V2M3/RHOS(K)/MDS(K)**3.
1999 S3M3D(K) = QS3D(K)*V2M3/RHOS(K)
2000 IF (AGG_SHAPE.EQ.0) THEN
2003 ELSEIF (AGG_SHAPE.EQ.1) THEN
2005 FS3D(K) = SASPR(K)*S3M3D(K)
2007 IF (AFAS_3M.EQ.0) THEN
2011 BDS(K) = (S3M3D(K)/NS3D(K))**THRD*1.E3
2012 BDS(K) = MIN(MAX(BDS(K),DSMIN*1.E3),DSMAX*1.E3)
2013 IF (TK3D(K).GE.TK0C) THEN
2014 FDS(K) = -0.21911541+1.2739845*BDS(K)+0.10141003* &
2015 LOG(NS3D(K))+0.30063818*BDS(K)**2.- &
2016 4.3857765E-3*LOG(NS3D(K))**2.-0.078801732* &
2019 IF (QC3D(K).GE.1.E-8) THEN
2020 FDS(K) = -1.1527014+2.9067645*BDS(K)+0.25316062* &
2021 LOG(NS3D(K))-0.17768557*BDS(K)**2.- &
2022 0.013117292*LOG(NS3D(K))**2.-0.17020429* &
2025 FDS(K) = -0.2813929+1.7275463*BDS(K)+0.045550156* &
2026 LOG(NS3D(K))-0.16526226*BDS(K)**2.- &
2027 1.7699916E-3*LOG(NS3D(K))**2.- &
2028 4.6441257E-2*BDS(K)*LOG(NS3D(K))
2031 KDX(K) = MAX(KCSMIN,MIN(KCSMAX,(BDS(K)/FDS(K))**3.))
2032 AFAS(K) = (6.*KDX(K)-3.+SQRT(8.*KDX(K)+1.))/(2.-2.* &
2034 AFAS(K) = MIN(MAX(AFAS(K),AFAMIN),AFAMAX)
2035 ! AFAS(K) = MAX(AFAMIN,4.5*TANH(0.5*(BDS(K)-5.))+5.5)
2036 IF (AFAS_3M.EQ.1) THEN
2037 KDX(K) = (AFAS(K)**2.+3.*AFAS(K)+2.)/(AFAS(K)**2.+ &
2039 AS3D(K) = (KDX(K)*NS3D(K)*S3M3D(K)**2.)**THRD
2040 ELSEIF (AFAS_3M.EQ.2) THEN
2045 IF (QG3D(K).GE.QSMALL.AND.NG3D(K).LT.NSMALL) THEN
2046 IF (ICE_RHOG.EQ.0) THEN
2049 ELSEIF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
2050 LTK(K) = LOG(TK3D(K))
2051 LQG(K) = -1.*LOG(QG3D(K))
2052 IF (TK3D(K).LT.TK0C) THEN
2053 RHOG(K) = EXP(-509.23219+187.98419*LTK(K)+1.5493489* &
2054 LQG(K)-17.147561*LTK(K)**2.-0.005829723* &
2055 LQG(K)**2.-0.26664109*LTK(K)*LQG(K))
2057 RHOG(K) = EXP(-2894.6795+1050.5173*LTK(K)-11.536497* &
2058 LQG(K)-95.054373*LTK(K)**2.-0.001986964* &
2059 LQG(K)**2.+2.0502147*LTK(K)*LQG(K))
2061 VG3D(K) = QG3D(K)/RHOG(K)
2063 LTK(K) = LOG(TK3D(K))
2064 LQG(K) = -1.*LOG(QG3D(K))
2065 MDG(K) = EXP(-2205.8027+1225.8046*LTK(K)-226.27995* &
2066 LTK(K)**2.+13.929644*LTK(K)**3.-0.25*LQG(K))/1.E3
2067 NG3D(K) = 1.E9*QG3D(K)*V2M3/RHOG(K)/MDG(K)**3.
2068 G3M3D(K) = QG3D(K)*V2M3/RHOG(K)
2069 IF (AFAG_3M.EQ.0) THEN
2073 BDG(K) = (G3M3D(K)/NG3D(K))**THRD*1.E3
2074 BDG(K) = MIN(MAX(BDG(K),DGMIN*1.E3),DGMAX*1.E3)
2075 IF (TK3D(K).GE.TK0C) THEN
2076 FDG(K) = 0.58006354+0.79661229*BDG(K)-0.18394382* &
2077 LOG(NG3D(K))+6.7371044E-2*BDG(K)**2.+ &
2078 9.832945E-3*LOG(NG3D(K))**2.+0.12433055* &
2081 IF (QC3D(K).GE.1.E-8) THEN
2082 FDG(K) = 0.17363469+1.5044291*BDG(K)-0.050639722* &
2083 LOG(NG3D(K))+1.5101052E-2*BDG(K)**2.+ &
2084 2.5974719E-3*LOG(NG3D(K))**2.+0.01961464*&
2087 FDG(K) = 0.59259317-0.89933515*BDG(K)+2.0893032* &
2088 BDG(K)**2.-0.50305755*BDG(K)**3.- &
2089 2.2446793E-2*LOG(NG3D(K))+2.7589047E-3* &
2093 KDX(K) = MAX(KCGMIN,MIN(KCGMAX,(BDG(K)/FDG(K))**3.))
2094 AFAG(K) = (6.*KDX(K)-3.+SQRT(8.*KDX(K)+1.))/(2.-2.* &
2096 AFAG(K) = MIN(MAX(AFAG(K),AFAMIN),AFAMAX)
2097 ! AFAG(K) = MAX(AFAMIN,5.5*TANH(0.7*(BDG(K)-4.5))+8.5)
2098 IF (AFAG_3M.EQ.1) THEN
2099 KDX(K) = (AFAG(K)**2.+3.*AFAG(K)+2.)/(AFAG(K)**2.+ &
2101 AG3D(K) = (KDX(K)*NG3D(K)*G3M3D(K)**2.)**THRD
2102 ELSEIF (AFAG_3M.EQ.2) THEN
2107 IF (QH3D(K).GE.QSMALL.AND.NH3D(K).LT.NSMALL) THEN
2108 LTK(K) = LOG(TK3D(K))
2109 LQH(K) = -1.*LOG(QH3D(K))
2110 NH3D(K) = EXP(22.929406-4.2328364*LTK(K)+0.30647567* &
2111 LTK(K)**2.-0.009233271*LTK(K)**3.-0.25*LQH(K))
2112 H3M3D(K) = QH3D(K)*V2M3/RHOH
2113 IF (AFAH_3M.EQ.0) THEN
2117 BDH(K) = (H3M3D(K)/NH3D(K))**THRD*1.E3
2118 BDH(K) = MIN(MAX(BDH(K),DHMIN*1.E3),DHMAX*1.E3)
2119 IF (TK3D(K).GE.TK0C) THEN
2120 FDH(K) = 1.157754+0.37852874*BDH(K)-0.11129737* &
2121 LOG(NH3D(K))+0.13929599*BDH(K)**2.+ &
2122 8.1105237E-3*LOG(NH3D(K))**2.+5.7432113E-2* &
2125 FDH(K) = -0.48246793+2.0407077*BDH(K)+0.022262969* &
2126 LOG(NH3D(K))-0.158389*BDH(K)**2.- &
2127 5.5545804E-3*LOG(NH3D(K))**2.+2.9443577E-2* &
2130 KDX(K) = MAX(KCHMIN,MIN(KCHMAX,(BDH(K)/FDH(K))**3.))
2131 AFAH(K) = (6.*KDX(K)-3.+SQRT(8.*KDX(K)+1.))/(2.-2.* &
2133 AFAH(K) = MIN(MAX(AFAH(K),AFAMIN),AFAMAX)
2134 ! AFAH(K) = MAX(AFAMIN,3.7*TANH(0.3*(BDH(K)-9.))+6.5)
2135 IF (AFAH_3M.EQ.1) THEN
2136 KDX(K) = (AFAH(K)**2.+3.*AFAH(K)+2.)/(AFAH(K)**2.+ &
2138 AH3D(K) = (KDX(K)*NH3D(K)*H3M3D(K)**2.)**THRD
2139 ELSEIF (AFAH_3M.EQ.2) THEN
2144 !-----------------------------------------------------------------------------
2145 IF (SSRW(K).LT.-1.E-1) THEN
2146 IF (QR3D(K).LT.QSMAL1) THEN
2147 QV3D(K) = QV3D(K)+QR3D(K)
2148 TK3D(K) = TK3D(K)-QR3D(K)*XXLV(K)/CPM(K)
2149 QR3D(K) = 0.; NR3D(K) = 0.
2151 IF (QC3D(K).LT.QSMAL1) THEN
2152 QV3D(K) = QV3D(K)+QC3D(K)
2153 TK3D(K) = TK3D(K)-QC3D(K)*XXLV(K)/CPM(K)
2154 QC3D(K) = 0.; NC3D(K) = 0.
2157 IF (SSRI(K).LT.-1.E-1) THEN
2158 IF (QI3D(K).LT.QSMAL1) THEN
2159 QV3D(K) = QV3D(K)+QI3D(K)
2160 TK3D(K) = TK3D(K)-QI3D(K)*XXLS(K)/CPM(K)
2161 QI3D(K) = 0.; NI3D(K) = 0.; I3M3D(K) = 0.; FI3D(K) = 0.
2162 VI3D(K) = 0.; AI3D(K) = 0.
2164 IF (QS3D(K).LT.QSMAL1) THEN
2165 QV3D(K) = QV3D(K)+QS3D(K)
2166 TK3D(K) = TK3D(K)-QS3D(K)*XXLS(K)/CPM(K)
2167 QS3D(K) = 0.; NS3D(K) = 0.; VS3D(K) = 0.; AS3D(K) = 0.
2170 IF (QG3D(K).LT.QSMAL1) THEN
2171 QV3D(K) = QV3D(K)+QG3D(K)
2172 TK3D(K) = TK3D(K)-QG3D(K)*XXLS(K)/CPM(K)
2173 QG3D(K) = 0.; NG3D(K) = 0.; VG3D(K) = 0.; AG3D(K) = 0.
2175 IF (QH3D(K).LT.QSMAL1) THEN
2176 QV3D(K) = QV3D(K)+QH3D(K)
2177 TK3D(K) = TK3D(K)-QH3D(K)*XXLS(K)/CPM(K)
2178 QH3D(K) = 0.; NH3D(K) = 0.; AH3D(K) = 0.
2181 !----- MELT VERY SMALL SNOW/GRAUPEL/HAIL MIXING RATIOS, ADD TO RAIN ----
2182 IF (TK3D(K).GE.TK0C.AND.QS3D(K).LT.QLIMIT) THEN
2183 QR3D(K) = QR3D(K)+QS3D(K)
2184 NR3D(K) = NR3D(K)+NS3D(K)
2185 TK3D(K) = TK3D(K)-QS3D(K)*XXLF(K)/CPM(K)
2186 QS3D(K) = 0.; NS3D(K) = 0.; VS3D(K) = 0.; AS3D(K) = 0.
2189 IF (TK3D(K).GE.TK0C.AND.QG3D(K).LT.QLIMIT) THEN
2190 QR3D(K) = QR3D(K)+QG3D(K)
2191 NR3D(K) = NR3D(K)+NG3D(K)
2192 TK3D(K) = TK3D(K)-QG3D(K)*XXLF(K)/CPM(K)
2193 QG3D(K) = 0.; NG3D(K) = 0.; VG3D(K) = 0.; AG3D(K) = 0.
2195 IF (TK3D(K).GE.TK0C.AND.QH3D(K).LT.QLIMIT) THEN
2196 QR3D(K) = QR3D(K)+QH3D(K)
2197 NR3D(K) = NR3D(K)+NH3D(K)
2198 TK3D(K) = TK3D(K)-QH3D(K)*XXLF(K)/CPM(K)
2199 QH3D(K) = 0.; NH3D(K) = 0.; AH3D(K) = 0.
2202 !------- INITIALIZE VARIABLE,ONLY T&QV ARE TREATED DIFFERENTLY ---------
2206 DTAIR(K) = -W3D(K)*G/CP ! Lagrangian parcel dry adiabatic lapse rate
2209 TK0(K) = TAIR(K)-DTAIR(K)*DT ! diabatically decend parcel
2210 P40(K) = PRES(K)*(TK0(K)/TAIR(K))**(CP/R)
2215 DO_FR(K,IV) = .TRUE. ! FIND CUT OFF RADIUS
2216 RX0(K,IV) = 99. ! initial R cutoff
2217 IF (NAERN(IV).GE.2) THEN ! have info of dry and total aerosol
2218 AERO(K,IV1) = MIN(AERO(K,IV1),AERO(K,IV2)) ! dry aerosol < total aerosol
2219 DO IM = 1,NCCN ! calculate CCN # [#/kg] from CCN mass
2220 ZCCNS(IM,K,IV) = AERO(K,IV2)*WMAS(IM,IV)*RFACT(IM,IV)
2222 ELSE ! only info available is total aerosol
2223 DO IM = 1,NCCN ! calculate CCN # [#/kg] from CCN mass
2224 ZCCNS(IM,K,IV) = AERO(K,IV1)*WMAS(IM,IV)*RFACT(IM,IV)
2229 ENDDO ! INITILIZATION LOOPS
2231 SDTL = 0. ! initial integrated largedt timestep
2232 DO IT = 1,INT((DT-DT20S*0.01)/DT20S)+1
2233 DTL = MIN(DT20S,DT-SDTL) ! initial largedt timestep
2235 DTS = DTL ! initial smalldt timestep (could be changed later)
2236 SDTS = 0. ! initial integrated smalldt timestep
2237 TMP = W3D(K)*G/CP/TK0(K) ! 1-TAIR/TK0
2238 XDNC(K) = 0.; XDNR(K) = 0.; GQCTR(K) = 0.; ADAGR(K) = 1.
2239 RHOI(K) = RHOI0; RHOS(K) = RHOS0; RHOG(K) = RHOG0
2240 AFAC(K) = AFAC0; AFAR(K) = AFAR0; AFAI(K) = AFAI0
2241 AFAS(K) = AFAS0; AFAG(K) = AFAG0; AFAH(K) = AFAH0
2242 AVI(K) = AVI0; BVI(K) = BVI0; AVS(K) = AVS0; BVS(K) = BVS0
2243 AVG(K) = AVG0; BVG(K) = BVG0; AVH(K) = AVH0; BVH(K) = BVH0
2244 AMI(K) = AMI0; BMI(K) = BMI0; AMS(K) = AMS0; AMG(K) = AMG0
2245 IASPR(K) = 1.; SASPR(K) = 1.; QACac(K) = 0.; QACar(K) = 0.
2248 PRES(K) = P40(K)*(1.-TMP*(SDTL+SDTS))**(CP/R)
2249 DPDT(K) = -G*W3D(K)*PRES(K)/(R*TK0(K)*(1.-TMP*(SDTL+SDTS)))
2250 ESW(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),0))
2251 ESI(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),1))
2252 IF (ESI(K).GT.ESW(K)) ESI(K) = ESW(K)
2253 QVSW(K) = 0.622*ESW(K)/(PRES(K)-ESW(K))
2254 QVSI(K) = 0.622*ESI(K)/(PRES(K)-ESI(K))
2255 SSRW(K) = QVAP(K)/QVSW(K)-1.
2256 SSRI(K) = QVAP(K)/QVSI(K)-1.
2257 XXLV(K) = 3.1484E6-2370.*TAIR(K)
2258 CPM(K) = CP*(1.+0.887*QVAP(K))
2259 RHO(K) = PRES(K)/(TAIR(K)*(1.+0.61*QVAP(K)))/R ! [KG/M**3]
2260 CNDMAX = (QVAP(K)-QVSW(K))/(1.+XXLV(K)**2.*QVAP(K)/ &
2261 (CPM(K)*RV*TAIR(K)**2.))
2262 !--------------------------- CCN ACTIVATION. ---------------------------
2263 IF (SSRW(K).GT.RSMALL.AND.SSRW(K).GT.S3D(K)) THEN
2264 DCLDMT(K) = 0.; DCLDMC(K) = 0.; DCLDMR(K) = 0.
2268 ABCD(J) = AERO(K,IV1-1+J)
2270 IF (AERO(K,IV1).GT.1.E-20.AND.NAERN(IV).GE.2.AND. &
2271 W3D(K).GT.1.E-5) THEN
2272 CALL ACTIVA(TAIR(K),W3D(K),NC3D(K),NR3D(K),ABCD, &
2273 QACac(K),QACar(K),RX0(K,IV),ZCCNS(1,K,IV), &
2274 SSRW(K),IV,DO_FR(K,IV))
2275 DCLDMC(K) = DCLDMC(K)+QACac(K)
2276 DCLDMR(K) = DCLDMR(K)+QACar(K)
2278 AERO(K,IV1-1+J) = ABCD(J)
2283 DCLDMT(K) = DCLDMC(K)+DCLDMR(K)
2284 IF (DCLDMT(K).GT.RLIMIT) THEN
2285 IF (DCLDMT(K).GT.CNDMAX) THEN
2286 DCLDMC(K) = DCLDMC(K)*(CNDMAX/DCLDMT(K))
2287 DCLDMR(K) = DCLDMR(K)*(CNDMAX/DCLDMT(K))
2288 DCLDMT(K) = DCLDMC(K)+DCLDMR(K)
2290 QVAP(K) = MAX(0.,QVAP(K)-DCLDMT(K))
2291 QC3D(K) = MAX(0.,QC3D(K)+DCLDMC(K))
2292 QR3D(K) = MAX(0.,QR3D(K)+DCLDMR(K))
2293 CPM(K) = CP*(1.+0.887*QVAP(K))
2294 XXLV(K) = 3.1484E6-2370.*TAIR(K)
2295 TAIR(K) = TAIR(K)+XXLV(K)*DCLDMT(K)/CPM(K)
2297 ESW(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),0))
2298 ESI(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),1))
2299 IF (ESI(K).GT.ESW(K)) ESI(K) = ESW(K)
2300 SSRW(K) = QVAP(K)/(0.622*ESW(K)/(PRES(K)-ESW(K)))-1.
2301 SSRI(K) = QVAP(K)/(0.622*ESI(K)/(PRES(K)-ESI(K)))-1.
2302 RHO(K) = PRES(K)/(TAIR(K)*(1.+0.61*QVAP(K)))/R
2304 S3D(K) = MAX(S3D(K),SSRW(K))
2305 !------------------------- ICE NUCLEATION ------------------------------
2306 IF (TAIR(K).LT.(TK0C-2.).AND.SSRI(K).GT.1.E-4) THEN
2307 CALL ICENU(TAIR(K),PRES(K),DTS,RHO(K),QVAP(K),QI3D(K), &
2308 NI3D(K),VI3D(K),FI3D(K),AI3D(K),I3M3D(K),AERO(K,5))
2309 ESW(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),0))
2310 ESI(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),1))
2311 IF (ESI(K).GT.ESW(K)) ESI(K) = ESW(K)
2312 SSRW(K) = QVAP(K)/(0.622*ESW(K)/(PRES(K)-ESW(K)))-1.
2313 SSRI(K) = QVAP(K)/(0.622*ESI(K)/(PRES(K)-ESI(K)))-1.
2314 RHO(K) = PRES(K)/(TAIR(K)*(1.+0.61*QVAP(K)))/R
2316 !-----------MICROPHYSICAL TENDENCY CALCULATION IN SMALL TIMESTEP -------
2317 IF (QC3D(K).GE.QSMALL.OR.QR3D(K).GE.QSMALL.OR.QI3D(K).GE. &
2318 QSMALL.OR.QS3D(K).GE.QSMALL.OR.QG3D(K).GE.QSMALL.OR. &
2319 QH3D(K).GE.QSMALL) THEN
2320 CALL SMALL_DT(DTL,DTS,SDTS,DTAIR(K),DQVAP(K),DPDT(K), &
2321 RHO(K),TAIR(K),PRES(K),QVAP(K),QC3D(K),QR3D(K), &
2322 QI3D(K),QS3D(K),QG3D(K),QH3D(K),NC3D(K),NR3D(K), &
2323 NI3D(K),NS3D(K),NG3D(K),NH3D(K),VI3D(K),VS3D(K), &
2324 VG3D(K),FI3D(K),FS3D(K),AI3D(K),AS3D(K),AG3D(K), &
2325 AH3D(K),I3M3D(K),SASPR(K),XDNC(K),XDNR(K),GQCTR(K))
2327 !----------------- UPDATE TIME & PROGNOSTIC VARIABLES ------------------
2328 TAIR(K) = TAIR(K)+DTAIR(K)*DTS
2329 QVAP(K) = QVAP(K)+DQVAP(K)*DTS
2332 IF (SDTS.GE.DTL) GOTO 333
2335 !----------------- RAIN DROP DEACTIVATION. -----------------------------
2336 IF (XDNR(K).GT.1.) THEN
2339 IF (NAERN(IV).EQ.4) THEN
2342 IF (NR3D(K).GT.1.) THEN
2343 XMASS = AERO(K,IV4)*MIN(1.,XDNR(K)/NR3D(K))
2347 AERO(K,IV3) = AERO(K,IV3)+XMASS
2348 AERO(K,IV4) = AERO(K,IV4)-XMASS
2353 !----------------- CLOUD DROP DEACTIVATION. ----------------------------
2354 IF (XDNC(K).GT.1.) THEN
2359 IF (NAERN(IV).GE.3) THEN
2360 IF (NC3D(K).GT.1.) THEN
2361 XMASS = AERO(K,IV3)*MIN(1.,XDNC(K)/NC3D(K))
2365 AERO(K,IV1) = AERO(K,IV1)+XMASS
2366 AERO(K,IV3) = AERO(K,IV3)-XMASS
2367 AERO(K,IV1) = MIN(AERO(K,IV1),AERO(K,IV2))
2368 ELSEIF (NAERN(IV).EQ.2) THEN
2369 CALL DEACTIVA(XDNC(K),QC3D(K),NC3D(K),AERO(K,IV1),&
2370 AERO(K,IV2),AERO(K,IV3),RX0(K,IV), &
2371 ZCCNS(1,K,IV),IV,DO_FR(K,IV))
2373 XMASS = AERO(K,IV1)*MIN(1.,XDNC(K)/ &
2374 (ZCCNS(2,K,IV)+ZCCNS(3,K,IV))) ! COARSE AND ACCUMULATION MODE
2375 AERO(K,IV1) = AERO(K,IV1)+XMASS
2380 PRES(K) = P40(K)*(1.-TMP*(SDTL+SDTS))**(CP/R)
2381 RHO(K) = PRES(K)/(TAIR(K)*(1.+0.61*QVAP(K)))/R
2383 !-----------MICROPHYSICAL TENDENCY CALCULATION IN LARGE TIMESTEP -------
2385 IF (QC3D(K).GE.QSMALL.OR.QR3D(K).GE.QSMALL.OR.QI3D(K).GE. &
2386 QSMALL.OR.QS3D(K).GE.QSMALL.OR.QG3D(K).GE.QSMALL.OR. &
2387 QH3D(K).GE.QSMALL) THEN
2388 CALL LARGE_DT(DTL,TAIR(K),QVAP(K),PRES(K),RHO(K), &
2389 QC3D(K),QR3D(K),QI3D(K),QS3D(K),QG3D(K),QH3D(K), &
2390 NC3D(K),NR3D(K),NI3D(K),NS3D(K),NG3D(K),NH3D(K), &
2391 VI3D(K),VS3D(K),VG3D(K),FI3D(K),FS3D(K),AI3D(K), &
2392 AS3D(K),AG3D(K),AH3D(K),I3M3D(K),SASPR(K),GQCTR(K))
2395 DO IV = 1,NAER ! for all aerosol compoment
2396 IF (NAERN(IV).GE.4) THEN ! with aerosol in cloud/precip. recored
2397 IV3 = IV0+3 ! aerosols in clouds ll
2398 IV4 = IV0+4 ! aerosols in rains
2399 IF (GQCTR(K).GT.0.) THEN ! + from cloud to precip.
2400 XMASS = GQCTR(K)*AERO(K,IV3) ! + from cloud to precip.
2401 ELSE ! - from precip. to cloud
2402 XMASS = GQCTR(K)*AERO(K,IV4) ! - from precip. to cloud
2404 AERO(K,IV3) = AERO(K,IV3)-XMASS ! update aerosol in cloud
2405 AERO(K,IV4) = AERO(K,IV4)+XMASS ! update aerosol in precipi.
2411 ENDDO ! FOR IT LOOPS
2412 !----- AT SUBSATURATION, REMOVE SMALL AMOUNTS OF HYDROMETEORS ----------
2414 ESW(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),0))
2415 ESI(K) = MIN(0.99*PRES(K),POLYSVP(TAIR(K),1))
2416 IF (ESI(K).GT.ESW(K)) ESI(K) = ESW(K)
2417 SSRW(K) = QVAP(K)/(0.622*ESW(K)/(PRES(K)-ESW(K)))-1.
2418 SSRI(K) = QVAP(K)/(0.622*ESI(K)/(PRES(K)-ESI(K)))-1.
2419 XXLV(K) = 3.1484E6-2370.*TAIR(K)
2420 XXLS(K) = 3.15E6-2.37E3*TAIR(K)+0.3337E6
2421 CPM(K) = CP*(1.+0.887*QVAP(K))
2422 IF (SSRW(K).LT.-1.E-1) THEN
2423 IF (QR3D(K).LT.QSMAL1) THEN
2424 QVAP(K) = QVAP(K)+QR3D(K)
2425 TAIR(K) = TAIR(K)-QR3D(K)*XXLV(K)/CPM(K)
2426 QR3D(K) = 0.; NR3D(K) = 0.
2428 IF (QC3D(K).LT.QSMAL1) THEN
2429 QVAP(K) = QVAP(K)+QC3D(K)
2430 TAIR(K) = TAIR(K)-QC3D(K)*XXLV(K)/CPM(K)
2431 QC3D(K) = 0.; NC3D(K) = 0.
2434 IF (SSRI(K).LT.-1.E-1) THEN
2435 IF (QI3D(K).LT.QSMAL1) THEN
2436 QVAP(K) = QVAP(K)+QI3D(K)
2437 TAIR(K) = TAIR(K)-QI3D(K)*XXLS(K)/CPM(K)
2438 QI3D(K) = 0.; NI3D(K) = 0.; I3M3D(K) = 0.; FI3D(K) = 0.
2439 VI3D(K) = 0.; AI3D(K) = 0.
2441 IF (QS3D(K).LT.QSMAL1) THEN
2442 QVAP(K) = QVAP(K)+QS3D(K)
2443 TAIR(K) = TAIR(K)-QS3D(K)*XXLS(K)/CPM(K)
2444 QS3D(K) = 0.; NS3D(K) = 0.; VS3D(K) = 0.; AS3D(K) = 0.
2447 IF (QG3D(K).LT.QSMAL1) THEN
2448 QVAP(K) = QVAP(K)+QG3D(K)
2449 TAIR(K) = TAIR(K)-QG3D(K)*XXLS(K)/CPM(K)
2450 QG3D(K) = 0.; NG3D(K) = 0.; VG3D(K) = 0.; AG3D(K) = 0.
2452 IF (QH3D(K).LT.QSMAL1) THEN
2453 QVAP(K) = QVAP(K)+QH3D(K)
2454 TAIR(K) = TAIR(K)-QH3D(K)*XXLS(K)/CPM(K)
2455 QH3D(K) = 0.; NH3D(K) = 0.; AH3D(K) = 0.
2458 IF (TAIR(K).GT.TK0C.AND.QI3D(K).GT.0.) THEN
2459 QR3D(K) = QR3D(K)+QI3D(K)
2460 TAIR(K) = TAIR(K)-QI3D(K)*XXLF(K)/CPM(K)
2461 NR3D(K) = NR3D(K)+NI3D(K)
2462 QI3D(K) = 0.; NI3D(K) = 0.; I3M3D(K) = 0.; FI3D(K) = 0.
2463 VI3D(K) = 0.; AI3D(K) = 0.
2465 IF (QC3D(K).LT.QSMALL.OR.NC3D(K).LT.NSMALL) THEN
2466 QVAP(K) = QVAP(K)+QC3D(K)
2467 TAIR(K) = TAIR(K)-QC3D(K)*XXLV(K)/CPM(K)
2468 QC3D(K) = 0.; NC3D(K) = 0.
2470 IF (QR3D(K).LT.QSMALL.OR.NR3D(K).LT.NSMALL) THEN
2471 QVAP(K) = QVAP(K)+QR3D(K)
2472 TAIR(K) = TAIR(K)-QR3D(K)*XXLV(K)/CPM(K)
2473 QR3D(K) = 0.; NR3D(K) = 0.
2475 IF (QI3D(K).LT.QSMALL.OR.NI3D(K).LT.NSMALL) THEN
2476 QVAP(K) = QVAP(K)+QI3D(K)
2477 TAIR(K) = TAIR(K)-QI3D(K)*XXLS(K)/CPM(K)
2478 QI3D(K) = 0.; NI3D(K) = 0.; I3M3D(K) = 0.; FI3D(K) = 0.
2479 VI3D(K) = 0.; AI3D(K) = 0.
2481 IF (QS3D(K).LT.QSMALL.OR.NS3D(K).LT.NSMALL) THEN
2482 QVAP(K) = QVAP(K)+QS3D(K)
2483 TAIR(K) = TAIR(K)-QS3D(K)*XXLS(K)/CPM(K)
2484 QS3D(K) = 0.; NS3D(K) = 0.; VS3D(K) = 0.; AS3D(K) = 0.
2487 IF (QG3D(K).LT.QSMALL.OR.NG3D(K).LT.NSMALL) THEN
2488 QVAP(K) = QVAP(K)+QG3D(K)
2489 TAIR(K) = TAIR(K)-QG3D(K)*XXLS(K)/CPM(K)
2490 QG3D(K) = 0.; NG3D(K) = 0.; VG3D(K) = 0.; AG3D(K) = 0.
2492 IF (QH3D(K).LT.QSMALL.OR.NH3D(K).LT.NSMALL) THEN
2493 QVAP(K) = QVAP(K)+QH3D(K)
2494 TAIR(K) = TAIR(K)-QH3D(K)*XXLS(K)/CPM(K)
2495 QH3D(K) = 0.; NH3D(K) = 0.; AH3D(K) = 0.
2497 RHO(K) = PRES(K)/(TAIR(K)*(1.+0.61*QVAP(K)))/R
2498 VT_QC(K) = 0.; VT_NC(K) = 0.; VT_QR(K) = 0.; VT_NR(K) = 0.
2499 VT_QI(K) = 0.; VT_NI(K) = 0.; VT_QS(K) = 0.; VT_NS(K) = 0.
2500 VT_QG(K) = 0.; VT_NG(K) = 0.; VT_QH(K) = 0.; VT_NH(K) = 0.
2501 VT_VI(K) = 0.; VT_VS(K) = 0.; VT_VG(K) = 0.; VT_FI(K) = 0.
2502 VT_FS(K) = 0.; VT_AI(K) = 0.; VT_AS(K) = 0.; VT_AG(K) = 0.
2503 VT_AH(K) = 0.; VTI3M(K) = 0.
2504 IF (QC3D(K).GE.QSMALL.OR.QR3D(K).GE.QSMALL.OR.QI3D(K).GE. &
2505 QSMALL.OR.QS3D(K).GE.QSMALL.OR.QG3D(K).GE.QSMALL.OR. &
2506 QH3D(K).GE.QSMALL) THEN
2507 CALL SEDI_FALL(TAIR(K),PRES(K),QVAP(K),QC3D(K),QR3D(K), &
2508 QI3D(K),QS3D(K),QG3D(K),QH3D(K),NC3D(K),NR3D(K), &
2509 NI3D(K),NS3D(K),NG3D(K),NH3D(K),VI3D(K),VS3D(K), &
2510 VG3D(K),FI3D(K),FS3D(K),AI3D(K),AS3D(K),AG3D(K), &
2511 AH3D(K),I3M3D(K),VT_QC(K),VT_QR(K),VT_QI(K),VT_QS(K), &
2512 VT_QG(K),VT_QH(K),VT_NC(K),VT_NR(K),VT_NI(K),VT_NS(K),&
2513 VT_NG(K),VT_NH(K),VT_VI(K),VT_VS(K),VT_VG(K),VT_FI(K),&
2514 VT_FS(K),VT_AI(K),VT_AS(K),VT_AG(K),VT_AH(K),VTI3M(K),&
2517 IF (QC3D(K).GE.QSMALL.AND.NC3D(K).GE.NSMALL) THEN
2518 MVDC(K) = (QC3D(K)*iAMW/NC3D(K))**THRD
2519 IF (MVDC(K).GT.DCR) THEN
2520 QR3D(K) = QR3D(K)+QC3D(K)
2521 NR3D(K) = NR3D(K)+NC3D(K)
2522 QC3D(K) = 0.; NC3D(K) = 0.
2525 IF (QR3D(K).GE.QSMALL.AND.NR3D(K).GE.NSMALL) THEN
2526 MVDR(K) = (QR3D(K)*iAMW/NR3D(K))**THRD
2527 IF (MVDR(K).LT.DCR) THEN
2528 QC3D(K) = QC3D(K)+QR3D(K)
2529 NC3D(K) = NC3D(K)+NR3D(K)
2530 QR3D(K) = 0.; NR3D(K) = 0.
2533 IF (QH3D(K).GE.QSMALL.AND.NH3D(K).GE.NSMALL) THEN
2534 MVDH(K) = (QH3D(K)*iAMH/NH3D(K))**THRD
2535 IF (MVDH(K).LT.DHMIN) THEN
2536 QG3D(K) = QG3D(K)+QH3D(K)
2537 NG3D(K) = NG3D(K)+NH3D(K)
2538 VG3D(K) = VG3D(K)+QH3D(K)/RHOG0
2539 QH3D(K) = 0.; NH3D(K) = 0.
2540 IF (AH3D(K).GE.ASMALL.AND.AFAG_3M.EQ.1) THEN
2541 AG3D(K) = AG3D(K)+AH3D(K)
2546 !----------------- FOR TENDENCIES DUE TO PRECIPITATION/SEDIMENTATION ---
2547 TEMPC = QC3D(K)+QI3D(K) ! QC+QI
2548 IF (TEMPC.GT.0.) THEN
2549 VTMEAN(K,1) = (VT_QC(K)*QC3D(K)+VT_QI(K)*QI3D(K))/TEMPC ! SEDIMENTATION SPEED OF WET AEROSOL IN QC+QI
2553 TEMPR = QR3D(K)+QS3D(K)+QG3D(K)+QH3D(K) ! QR+QS+QG+QH
2554 IF (TEMPR.GT.0.) THEN
2555 VTMEAN(K,2) = (VT_QR(K)*QR3D(K)+VT_QS(K)*QS3D(K)+VT_QG(K)* &
2556 QG3D(K)+VT_QH(K)*QH3D(K))/TEMPR ! SEDIMENTATION SPEED OF WET AEROSOL IN QR+QS+QG+QH
2560 TEMPT = TEMPC+TEMPR ! QC+QR+QI+QS+QG
2561 IF (TEMPT.GT.0.) THEN
2562 VTMEAN(K,3) = (VTMEAN(K,1)*TEMPC+VTMEAN(K,2)*TEMPR)/TEMPT ! MEAN SEDIMENTATION SPEED OF WET AEROSOL
2563 ! IN QC+QR+QI+QS+QG+QH
2568 !----------------- CALCULATED FALLING TERMS ----------------------------
2569 CALL PTFLUX(QC3D(1),VT_QC(1),RHO(1),DZ3D(1),KTE,DT,DTMN,CLODNCV)
2570 CALL PTFLUX(QR3D(1),VT_QR(1),RHO(1),DZ3D(1),KTE,DT,DTMN,RAINNCV)
2571 CALL PTFLUX(QI3D(1),VT_QI(1),RHO(1),DZ3D(1),KTE,DT,DTMN,ICENCV)
2572 CALL PTFLUX(QS3D(1),VT_QS(1),RHO(1),DZ3D(1),KTE,DT,DTMN,SNOWNCV)
2573 CALL PTFLUX(QG3D(1),VT_QG(1),RHO(1),DZ3D(1),KTE,DT,DTMN,GRAPNCV)
2574 CALL PTFLUX(QH3D(1),VT_QH(1),RHO(1),DZ3D(1),KTE,DT,DTMN,HAILNCV)
2575 RAINNC = RAINNC+CLODNCV+RAINNCV+ICENCV+SNOWNCV+GRAPNCV+HAILNCV
2576 SNOWNC = SNOWNC+ICENCV+SNOWNCV
2577 GRAPNC = GRAPNC+GRAPNCV
2578 HAILNC = HAILNC+HAILNCV
2579 SR = (ICENCV+SNOWNCV+GRAPNCV+HAILNCV)/ &
2580 (CLODNCV+RAINNCV+ICENCV+SNOWNCV+GRAPNCV+HAILNCV+1.E-12)
2581 CALL FLFLUX(NC3D(1),VT_NC(1),RHO(1),DZ3D(1),KTE,DT)
2582 CALL FLFLUX(NR3D(1),VT_NR(1),RHO(1),DZ3D(1),KTE,DT)
2583 CALL FLFLUX(NI3D(1),VT_NI(1),RHO(1),DZ3D(1),KTE,DT)
2584 CALL FLFLUX(NS3D(1),VT_NS(1),RHO(1),DZ3D(1),KTE,DT)
2585 CALL FLFLUX(NG3D(1),VT_NG(1),RHO(1),DZ3D(1),KTE,DT)
2586 CALL FLFLUX(NH3D(1),VT_NH(1),RHO(1),DZ3D(1),KTE,DT)
2587 CALL PTFLUX(VI3D(1),VT_VI(1),RHO(1),DZ3D(1),KTE,DT,DTMN,VINCV)
2588 CALL PTFLUX(VS3D(1),VT_VS(1),RHO(1),DZ3D(1),KTE,DT,DTMN,VSNCV)
2589 CALL PTFLUX(VG3D(1),VT_VG(1),RHO(1),DZ3D(1),KTE,DT,DTMN,VGNCV)
2590 CALL PTFLUX(FI3D(1),VT_FI(1),RHO(1),DZ3D(1),KTE,DT,DTMN,FINCV)
2591 CALL PTFLUX(FS3D(1),VT_FS(1),RHO(1),DZ3D(1),KTE,DT,DTMN,FSNCV)
2592 CALL PTFLUX(AI3D(1),VT_AI(1),RHO(1),DZ3D(1),KTE,DT,DTMN,AINCV)
2593 CALL PTFLUX(AS3D(1),VT_AS(1),RHO(1),DZ3D(1),KTE,DT,DTMN,ASNCV)
2594 CALL PTFLUX(AG3D(1),VT_AG(1),RHO(1),DZ3D(1),KTE,DT,DTMN,AGNCV)
2595 CALL PTFLUX(AH3D(1),VT_AH(1),RHO(1),DZ3D(1),KTE,DT,DTMN,AHNCV)
2596 CALL PTFLUX(I3M3D(1),VTI3M(1),RHO(1),DZ3D(1),KTE,DT,DTMN,I3MNCV)
2600 IF (NAERN(IV).GT.3) THEN
2601 CALL FLFLUX(AERO(1,IV0+3),VTMEAN(1,1),RHO(1),DZ3D(1),KTE,DT)! SEDI. OF AEROSOLS IN CLOUDS
2602 CALL FLFLUX(AERO(1,IV0+4),VTMEAN(1,2),RHO(1),DZ3D(1),KTE,DT)! SEDI. OF AEROSOLS IN PRECIP.
2603 ELSEIF (NAERN(IV).EQ.3) THEN
2604 CALL FLFLUX(AERO(1,IV0+3),VTMEAN(1,3),RHO(1),DZ3D(1),KTE,DT)! SEDI. OF AEROSOLS IN HYDROM.
2608 !----------------------------------------------------------------------
2612 IF (QC3D(K).GE.QSMALL.AND.NC3D(K).GE.NSMALL) THEN
2613 CALL SOLVE_AFAC(TK3D(K),QC3D(K),NC3D(K),LAMC(K),MVDC(K), &
2616 QC3D(K) = 0.; NC3D(K) = 0.; MVDC(K) = 0.; AFAC(K) = 0.
2619 IF (QR3D(K).GE.QSMALL.AND.NR3D(K).GE.NSMALL) THEN
2620 CALL SOLVE_AFAR(TK3D(K),QR3D(K),NR3D(K),LAMR(K),MVDR(K), &
2623 QR3D(K) = 0.; NR3D(K) = 0.; MVDR(K) = 0.; LAMR(K) = 0.
2626 IF (QI3D(K).GE.QSMALL.AND.NI3D(K).GE.NSMALL) THEN
2627 CALL SOLVE_AFAI(TK3D(K),PRES(K),RHO(K),QV3D(K),QI3D(K), &
2628 NI3D(K),VI3D(K),FI3D(K),AI3D(K),I3M3D(K),ADAGR(K), &
2629 ZETA(K),LAMI(K),AFAI(K),MVDI(K),RHOI(K),AMI(K),BMI(K),&
2630 AVI(K),BVI(K),BEST(K))
2631 IASPR(K) = FI3D(K)/I3M3D(K)
2633 QI3D(K) = 0.; NI3D(K) = 0.; MVDI(K) = 0.; I3M3D(K) = 0.
2634 FI3D(K) = 0.; VI3D(K) = 0.; AFAI(K) = 0.; IASPR(K) = 1.
2635 ADAGR(K) = 1.; RHOI(K) = 0.; AI3D(K) = 0.; LAMI(K) = 0.
2637 IF (AS3D(K).LT.ASMALL) THEN
2640 IF (QS3D(K).GE.QSMALL.AND.NS3D(K).GE.NSMALL) THEN
2641 CALL SOLVE_AFAS(TK3D(K),RHO(K),QS3D(K),QC3D(K),NS3D(K), &
2642 VS3D(K),FS3D(K),AS3D(K),AFAS(K),LAMS(K),MVDS(K), &
2643 RHOS(K),SASPR(K),AMS(K),AVS(K),BVS(K))
2645 QS3D(K) = 0.; NS3D(K) = 0.; VS3D(K) = 0.; AS3D(K) = 0.
2646 MVDS(K) = 0.; RHOS(K) = 0.; AFAS(K) = 0.; LAMS(K) = 0.
2647 FS3D(K) = 0.; SASPR(K) = 1.
2649 IF (AG3D(K).LT.ASMALL) THEN
2652 IF (QG3D(K).GE.QSMALL.AND.NG3D(K).GE.NSMALL) THEN
2653 CALL SOLVE_AFAG(TK3D(K),RHO(K),QG3D(K),QC3D(K),NG3D(K), &
2654 VG3D(K),AG3D(K),LAMG(K),AFAG(K),MVDG(K),RHOG(K), &
2655 AMG(K),AVG(K),BVG(K))
2657 QG3D(K) = 0.; NG3D(K) = 0.; MVDG(K) = 0.; VG3D(K) = 0.
2658 AG3D(K) = 0.; AFAG(K) = 0.; RHOG(K) = 0.; LAMG(K) = 0.
2660 IF (AH3D(K).LT.ASMALL) THEN
2663 IF (QH3D(K).GE.QSMALL.AND.NH3D(K).GE.NSMALL) THEN
2664 CALL SOLVE_AFAH(TK3D(K),RHO(K),QH3D(K),NH3D(K),AH3D(K), &
2665 LAMH(K),AFAH(K),MVDH(K),AVH(K),BVH(K))
2667 QH3D(K) = 0.; NH3D(K) = 0.; MVDH(K) = 0.; LAMH(K) = 0.
2668 AH3D(K) = 0.; AFAH(K) = 0.
2670 IF ((QC3D(K)+QR3D(K)).LT.QSMALL) THEN
2671 AERO(K,1) = MAX(RLIMIT,AERO(K,1)+AERO(K,3))
2672 AERO(K,1) = MIN(AERO(K,1),AERO(K,2))
2675 IF ((QR3D(K)+QS3D(K)+QG3D(K)+QH3D(K)).LT.QSMALL) THEN
2676 AERO(K,1) = MAX(RLIMIT,AERO(K,1)+AERO(K,4))
2677 AERO(K,1) = MIN(AERO(K,1),AERO(K,2))
2680 QDCN3D(K) = AERO(K,1)
2681 QTCN3D(K) = AERO(K,2)
2682 QCCN3D(K) = AERO(K,3)
2683 QRCN3D(K) = AERO(K,4)
2684 QNIN3D(K) = AERO(K,5)
2685 !------------------------------------------------------------------------
2688 END SUBROUTINE NTU_MICRO
2689 !======================================================================
2691 !======================================================================
2692 SUBROUTINE ACTIVA(TK1D,W1D,NC1D,NR1D,ABCD,QACac,QACar,RX0,ZCCNS, &
2694 !======================================================================
2696 INTEGER :: IAE ! (I) aerosol component
2697 REAL :: TK1D,NC1D,NR1D,QACac,QACar,NACac,NACar,RX0,SSW
2698 REAL, INTENT(IN) :: W1D
2699 DOUBLE PRECISION :: X1,X3,DMASS,DERF
2700 REAL, DIMENSION(NCCN) :: ZCCNS
2701 REAL, DIMENSION(MAER) :: ABCD
2704 REAL :: GAMAA,ALPHA,SSRW,ES0,RX9,RX1,XMASS,RACT,ZCN9,ZCN99, &
2705 ZCCN10,ZCCN15,ZCCN20,ZCCN25,RACT10,RACT15,RACT20,RACT25, &
2706 WR10,WR15,WR20,WR25,WR10TO15,WR15TO20,WR20TO25,WR25PLUS
2707 REAL, PARAMETER :: RS10 = 10.E-6, RS15 = 15.E-6, RS20 = 20.E-6, &
2710 QACac = 0.; QACar = 0.; NACac = 0.; NACar = 0.
2711 !------ decide the number of each mode and radius for CCN cut-off ------
2713 CALL FIND_RC0(DBLE(ABCD(1)/ABCD(2)),CNMOD(1,IAE),CNSTD(1,IAE),&
2714 WMAS(1,IAE),RX0,TBLXF(1,IAE),TBLRC)
2717 IF (RX0.EQ.1.E-9) RETURN ! RC=RC_MIN, no dry aerosol available
2719 !----------------- Kohler Curve parameters -----------------------------
2720 SSRW = MIN(SSW,0.03)
2721 ES0 = 0.0761-1.55E-4*(TK1D-TK0C) ! [J/M**2]
2722 ALPHA = 2.*ES0/(RV*TK1D*RHOW) ! [J/m^2]/[J/kg/K]/[K]/[kg/m^3] = [m]
2723 GAMAA = 4.*ALPHA**3./(27.*BETA1(IAE)) ! [m^3]
2724 RX9 = (GAMAA/(SSRW**2.))**THRD ! critical dry radius [m]
2725 RX9 = MAX(RX9,RXMIN(IAE)) ! set lower limit of RX
2726 IF (RX1.LE.RX9) RETURN
2727 !----------------- RAINDROP ACTIVATION ---------------------------------
2728 IF (RX1.GT.RS10) THEN ! force all aerosol > RS10 into rain
2731 X3 = DLNX(RX1,CNMOD(IM,IAE),CNSTD(IM,IAE),3)
2732 X1 = DLNX(RS10,CNMOD(IM,IAE),CNSTD(IM,IAE),3)
2733 DMASS = DMASS+DBLE(ZCCNS(IM))/DBLE(RFACT(IM,IAE))*(DERF(X3)-DERF(X1))/2.D+0 ! aerosol into rain
2735 XMASS = MAX(0.,REAL(DMASS))
2736 XMASS = MIN(ABCD(1),XMASS)
2737 IF (NAERN(IAE).GE.4) THEN
2738 ABCD(4) = ABCD(4)+XMASS ! update aerosol in rain
2739 ELSEIF (NAERN(IAE).EQ.3) THEN
2740 ABCD(3) = ABCD(3)+XMASS ! update aerosol in (cloud+rain)
2742 ABCD(1) = ABCD(1)-XMASS ! update dry aerosol
2743 CALL RSWHITBY(W1D,RS10,ZCCN10,RACT10,BETA1(IAE),ALPHA,ZCCNS, &
2744 CNMOD(1,IAE),CNSTD(1,IAE))
2745 CALL RSWHITBY(W1D,RS15,ZCCN15,RACT15,BETA1(IAE),ALPHA,ZCCNS, &
2746 CNMOD(1,IAE),CNSTD(1,IAE))
2747 CALL RSWHITBY(W1D,RS20,ZCCN20,RACT20,BETA1(IAE),ALPHA,ZCCNS, &
2748 CNMOD(1,IAE),CNSTD(1,IAE))
2749 CALL RSWHITBY(W1D,RS25,ZCCN25,RACT25,BETA1(IAE),ALPHA,ZCCNS, &
2750 CNMOD(1,IAE),CNSTD(1,IAE))
2751 WR10 = C4PI3W*RACT10**3. ! [kg]
2752 WR15 = C4PI3W*RACT15**3. ! [kg]
2753 WR20 = C4PI3W*RACT20**3. ! [kg]
2754 WR25 = C4PI3W*RACT25**3. ! [kg]
2755 WR10TO15 = 0.5*(WR10+WR15)*(ZCCN10-ZCCN15) ! [kg/kg]
2756 WR15TO20 = 0.5*(WR15+WR20)*(ZCCN15-ZCCN20) ! [kg/kg]
2757 WR20TO25 = 0.5*(WR20+WR25)*(ZCCN20-ZCCN25) ! [kg/kg]
2758 WR25PLUS = WR25*ZCCN25 ! [kg/kg]
2759 NACar = ZCCN10 ! [1/kg]
2760 QACar = WR10TO15+WR15TO20+WR20TO25+WR25PLUS ! [kg/kg]
2762 !----------------- end sectionalize rain embryo ------------------------
2763 !----------------- single category rain embryo -------------------------
2764 NR1D = NR1D+NACar ! [ #/kg]
2766 !----------------- CLOUD DROP ACTIVATION ------------------------------
2767 IF (RX1.GT.RX9) THEN
2770 X3 = DLNX(RX1,CNMOD(IM,IAE),CNSTD(IM,IAE),3)
2771 X1 = DLNX(RX9,CNMOD(IM,IAE),CNSTD(IM,IAE),3)
2772 DMASS = DMASS+DBLE(ZCCNS(IM))/DBLE(RFACT(IM,IAE))*(DERF(X3)-DERF(X1))/2.D+0 ! aerosol into rain
2774 XMASS = MAX(0.,REAL(DMASS))
2775 XMASS = MIN(XMASS,ABCD(1))
2776 IF (NAERN(IAE).GE.3) THEN
2777 ABCD(3) = ABCD(3)+XMASS ! update wet aerosol in (cloud+rain)
2779 ABCD(1) = ABCD(1)-XMASS ! update dry aerosol
2780 CALL CCNWHITBY(W1D,RS10,RX9,ZCN99,RACT,BETA1(IAE),ALPHA,ZCCNS,&
2781 CNMOD(1,IAE),CNSTD(1,IAE))
2782 CALL CCNWHITBY(W1D,RX1,RX9,ZCN9,RACT,BETA1(IAE),ALPHA,ZCCNS, &
2783 CNMOD(1,IAE),CNSTD(1,IAE))
2784 NACac = MIN(ZCN9,MAX(ZCN99-NC1D,0.)) ! Total # should less than ZCN99
2785 QACac = NACac*C4PI3W*RACT**3. ! [kg/kg]
2786 NC1D = NC1D+NACac ! [#/kg]
2791 END SUBROUTINE ACTIVA
2792 !======================================================================
2794 !----------------- FUNCTION FOR CALCULATE lnX --------------------------
2795 FUNCTION DLNX(RX,XMODE,SIGMA,N)
2796 !======================================================================
2798 REAL :: RX,XMODE,SIGMA
2799 DOUBLE PRECISION :: DRX,DXMODE,DSTDV,DLNX,DLOG,DSQRT
2802 DXMODE = DBLE(XMODE)
2804 DLNX = (DLOG(DRX/DXMODE)-DSTDV**2.*DBLE(N))/(DSQRT(2.D+0)*DSTDV)
2807 !----------------- FUNCTION FOR CALCULATE lnX --------------------------
2808 FUNCTION DLNX2(DRX,XMODE,SIGMA,N)
2811 DOUBLE PRECISION :: DRX,DXMODE,DSTDV,DLNX2,DLOG,DSQRT
2813 DXMODE = DBLE(XMODE)
2815 DLNX2 = (DLOG(DRX/DXMODE)-DSTDV**2.*DBLE(N))/(DSQRT(2.D+0)*DSTDV)
2818 !======================================================================
2820 !======================================================================
2821 SUBROUTINE RSWHITBY(W1D,RSX,Z,RACT,BETA1,ALPHA,ZCCN,CNMOD,CNSTD)
2822 !======================================================================
2824 !----------------- calculate number of CCN with dry radii > R0 ---------
2826 REAL :: RSX, &! smallest dry radius of rain embryo (input)
2827 RWS0, &! wet radius at S = 1
2828 RACT, &! activation radius (output)
2829 Z, &! number of CCN that fits the criterion (output)
2830 BETA1,ALPHA,TEMP,TEMP1,TEMP2,TMPX,TEMP4,ERF
2831 REAL, INTENT(IN) :: W1D
2832 REAL, DIMENSION(NCCN) :: ZCCN,CNMOD,CNSTD
2833 !----- integrate the number concentration of aerosols with size > RACT--
2837 TEMP2 = SQRT2*CNSTD(IM)
2838 TEMP = (LOG(RSX/CNMOD(IM)))/TEMP2
2839 Z = Z+TEMP1*(1.-ERF(TEMP))
2841 RWS0 = SQRT(BETA1*RSX**3./ALPHA) ! wet radius at S = 1
2842 TMPX = LOG10(RSX*1.E6)
2843 TEMP4 = -0.61425115+(-0.66624878-0.17367658*TMPX)*TMPX
2844 RACT = 10.**TEMP4*RWS0*W1D**(-0.11782)
2846 END SUBROUTINE RSWHITBY
2847 !----------------------------------------------------------------------
2848 SUBROUTINE CCNWHITBY(W1D,RSX,RS9,ZCN9,RACT,BETA1,ALPHA,ZCCN, &
2850 !======================================================================
2852 !---- derive number of cloud drop activation according to Whitby's distributions
2854 REAL :: RSX, &! previously activated smallest dry radius
2855 RS9, &! current activated smallest dry radius
2856 ZCN9, &! newly activated number concentration (#/mol)
2857 RACT, &! wet radius of the activated drop
2858 RWS0, &! wet radius at S = 1
2859 BETA1,ALPHA,TMPX,TMP1,TMP2,TMP3,TMP4,TMP5,TMP6,ERF
2860 REAL, INTENT(IN) :: W1D
2861 REAL, DIMENSION(NCCN) :: ZCCN,CNMOD,CNSTD
2863 RWS0 = SQRT(BETA1*RS9**3./ALPHA) ! wet radius at S = 1
2864 TMPX = LOG10(RSX*1.E6)
2865 TMP1 = -0.61425115+(-0.66624878-0.17367658*TMPX)*TMPX
2866 RACT = 10.**TMP1*RWS0*W1D**(-0.11782) ! activation size
2870 TMP3 = SQRT2*CNSTD(IM)
2871 TMP4 = (LOG(RSX/CNMOD(IM)))/TMP3
2872 TMP5 = (LOG(RS9/CNMOD(IM)))/TMP3
2873 TMP6 = TMP2*(ERF(TMP4)-ERF(TMP5))
2877 END SUBROUTINE CCNWHITBY
2878 !======================================================================
2880 !======================================================================
2881 SUBROUTINE DEACTIVA(NACcv,QC1D,NC1D,DCN,TCN,WCN,RC,ZCCNS,IAE, &
2883 !======================================================================
2885 INTEGER :: IAE ! (I) aerosol component
2887 REAL :: NC1D,NACcv,QC1D,DCN,TCN,WCN, &! (I/O) wet aerosol mixing ratio [kg/kg]
2888 RC ! (I/O) R-CUTOFF [um]
2889 REAL, DIMENSION(NCCN) :: ZCCNS ! (I) # of each mode in [#/kg]
2891 DOUBLE PRECISION :: DNACcv, &! # of deactivated cloud droplet
2892 DMASS, &! mass of deactivated wet aerosol
2893 DSQRT2,X0,X1,X2,X3,S1,S2,DERF,DEXP,DSQRT
2894 !----------------- deactivation of cloud drops -------------------------
2895 DSQRT2 = DSQRT(2.D+0)
2896 DNACcv = DBLE(MIN(NACcv,NC1D))
2897 IF (QC1D.LT.RSMALL) THEN
2898 DNACcv = DBLE(NC1D) ! deactivate all cld drop for negligiable QC
2902 IF (DNACcv.GT.1.D+1) THEN
2903 !------ decide the number of each mode and radius for CCN cut-off ------
2905 CALL FIND_RC0(DBLE(DCN/TCN),CNMOD(1,IAE),CNSTD(1,IAE), &
2906 WMAS(1,IAE),RC,TBLXF(1,IAE),TBLRC)
2911 X0 = DLNX(RC,CNMOD(IM,IAE),CNSTD(IM,IAE),0)
2912 S1 = S1+DBLE(ZCCNS(IM))*(1.D+0-DERF(X0))*5.D-1 ! # for all with r > RC
2914 IF (DNACcv.GT.S1) THEN
2917 CALL FIND_RC0(DBLE(DCN/TCN),CNMOD(1,IAE),CNSTD(1,IAE), &
2918 WMAS(1,IAE),RC,TBLXF(1,IAE),TBLRC)
2923 X0 = DLNX(RC,CNMOD(IM,IAE),CNSTD(IM,IAE),0)
2924 S1 = S1+DBLE(ZCCNS(IM)/CNSTD(IM,IAE))/DSQRT2*DPDF(X0) ! # between 0 & RC
2927 X2 = DBLE(RC)*DEXP(DNACcv/S1)
2928 DO I = 1,4 ! iteratively fixed dN 3 times
2932 X0 = DLNX2(X1,CNMOD(IM,IAE),CNSTD(IM,IAE),0)
2933 X3 = DLNX2(X2,CNMOD(IM,IAE),CNSTD(IM,IAE),0)
2934 S1 = S1+DBLE(ZCCNS(IM)/CNSTD(IM,IAE))/DSQRT2*DPDF(X3)
2935 S2 = S2+DBLE(ZCCNS(IM))*(DERF(X3)-DERF(X0))*5.D-1 ! # between X1 & X2
2939 X2 = X2*DEXP(DNACcv/S1)
2944 X0 = DLNX2(X1,CNMOD(IM,IAE),CNSTD(IM,IAE),3)
2945 X3 = DLNX2(X2,CNMOD(IM,IAE),CNSTD(IM,IAE),3)
2946 DMASS = DMASS+DBLE(ZCCNS(IM))/DBLE(RFACT(IM,IAE))*(DERF(X3)-DERF(X0))*5.D-1 ! MASS between X0 & X3
2948 DCN = DCN+MIN(WCN,REAL(DMASS))
2949 WCN = WCN-MIN(WCN,REAL(DMASS))
2953 END SUBROUTINE DEACTIVA
2954 !======================================================================
2956 !======================================================================
2957 SUBROUTINE ICENU(TK1D,P1D,DT,RHO,QV1D,QI1D,NI1D,VI1D,FI1D,AI1D, &
2959 !======================================================================
2962 REAL :: TK1D,P1D,DT,RHO,QV1D,QI1D,NI1D,VI1D,FI1D,AI1D,I3M1D,QNIN,&
2963 QVSI,XXLS,ESI,QNDvi,NNDvi,VNDvi,FNDvi,ANDvi,INDvi,NVI0, &
2964 EPA,RGDEP,SFCTNV,ICED,GGDEP,SRI,ARDEP0,ARDEP,COSM1,GEOF1,&
2965 IJDEP0,IJDEP,DC1,DC2,DC3,TC1D,INR0,DANGLE,DACTE,QVDMAX, &
2968 QNDvi = 0.;NNDvi = 0.;VNDvi = 0.;FNDvi = 0.;ANDvi = 0.;INDvi = 0.
2970 IDEPNU = 8 ! Ice deposition-nucleation equation option
2972 XXLS = 3.15E6-2.37E3*TK1D+0.3337E6
2973 ESI = MIN(0.99*P1D,POLYSVP(TK1D,1))
2974 QVSI = 0.622*ESI/(P1D-ESI)
2977 QVDMAX = (QV1D-QVSI)/(1.+XXLS**2.*QV1D/(CP*RV*TK1D**2.)) ! SUPERSATURATED WATER FIXED DUE TO TEMPERATURE CHANGE
2978 NNUMAX = 0.98*QVDMAX/MI0 ! INITIATION OF CLOUD ICE CONSTRAINED by 0.98*SUPICE
2979 ICED = 916.7-0.175*TC1D-5.E-4*TC1D**2. ! ICE DENSITY
2980 SRI = QV1D/QVSI ! SATURATION RATIO OVER ICE
2981 SFCTNV = ((76.1-0.155*TC1D)+(28.5+0.25*TC1D))*1.E-3 ! SURFACE TENSION OVER ICE/VAPOR
2983 IF (IDEPNU.EQ.0) THEN ! NO DEPOSITION NUCLEATION
2985 ELSEIF (IDEPNU.EQ.1) THEN ! Fletcher (1962)
2986 NVI0 = 1.E-2*EXP(0.6*(TK0C-MAX(TK1D,2.46E2)))
2987 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0/RHO-NI1D))
2988 ELSEIF (IDEPNU.EQ.2) THEN ! Cooper
2989 NVI0 = 5.*EXP(0.304*(TK0C-MAX(TK1D,2.46E2)))
2990 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0/RHO-NI1D))
2991 ELSEIF (IDEPNU.EQ.3) THEN ! Huffman (1973)
2992 NVI0 = 1007.08*SSRI**4.5*1.E3
2993 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0/RHO-NI1D))
2994 ELSEIF (IDEPNU.EQ.4) THEN ! Meyers et al (1992)
2995 NVI0 = 1.E3*EXP(1.296E1*SSRI-6.39E-1)
2996 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0/RHO-NI1D))
2997 ELSEIF (IDEPNU.EQ.5.AND.INSPEC.EQ.4) THEN ! Bacteria(P. syringae):Yankofsky 1981
2998 NVI0 = QNIN*1.1776*EXP(-89318./((LOG(SRI))**2.*TK1D**3.))
2999 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0*DT))
3000 ELSEIF (IDEPNU.EQ.6) THEN ! DUST (Field 2006)(Asia)
3001 NVI0 = QNIN*4.337E-1*EXP(-2.E6/((LOG(SRI))**2.*TK1D**3.))
3002 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0*DT))
3003 ELSEIF (IDEPNU.EQ.7) THEN
3004 IF (INSPEC.EQ.1) THEN ! SOOT
3005 DC1 = -0.5411955; DC2 = 1.879918; DC3 = 1.607947 ! CHEN Table3
3006 INR0 = 0.4E-7; DANGLE = 28.; DACTE = -20.E-20 ! HOOSE Table3
3007 ELSEIF (INSPEC.EQ.2) THEN ! SAHARAN DUST
3008 DC1 = -0.3353619; DC2 = 1.990979; DC3 = 2.175539 ! CHEN Table3
3009 INR0 = 1.75E-7; DANGLE = 5.06; DACTE = 3.35E-20 ! CHEN Table6
3010 ELSEIF (INSPEC.EQ.3) THEN ! ASIAN DUST
3011 DC1 = -0.3598818; DC2 = 1.982032; DC3 = 2.025390 ! CHEN Table3
3012 INR0 = 2.E-7; DANGLE = 8.1; DACTE = 1.82E-20 ! CHEN Table6
3015 RGDEP = 2.*2.99E-26*SFCTNV/(ICED*BOLTZ*TK1D*LOG(SRI)) ! GERM RADIUS FOR DEPOSITION NUCLEATION
3016 GGDEP = C4PI3*SFCTNV*RGDEP**2. ! HOMOGENEOUS ENERGY
3017 ARDEP0 = SFCTNV**5.E-1*(BOLTZ*TK1D)**(-1.5)/1.E13
3018 ARDEP = EPA**2.*ARDEP0/ICED
3019 COSM1 = LOG(1.-COS(DANGLE*PI/1.8E2))
3020 GEOF1 = MIN(1.,EXP(DC1+DC2*COSM1+DC3*RGDEP/INR0))
3021 IJDEP0 = EXP((-1.*DACTE-GEOF1*GGDEP)/(BOLTZ*TK1D))
3022 IJDEP = ARDEP*INR0**2.*GEOF1**5.E-1*IJDEP0
3023 NVI0 = QNIN*(1.-EXP(-IJDEP*DT))
3024 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0))
3025 ELSEIF (IDEPNU.EQ.8) THEN
3026 NVI0 = MAX(0.,5.94E-5*((TK0C-TK1D)**3.33)*((1.E6/1.E6)** &! set naer05=1e6/kg (derived to cm-3 at STP below)
3027 (0.0264*(TK0C-TK1D)+3.3E-3))*1.E3) ! units of #/kg
3028 NNDvi = MIN(QNIN,NNUMAX,MAX(0.,NVI0/RHO-NI1D))
3031 VNDvi = QNDvi*iRHOI0
3032 FNDvi = QNDvi*1.*iAMI0 ! ISOMETRIC
3033 ANDvi = (KCIMIN*NNDvi*INDvi**2.)**THRD
3035 QNIN = MAX(0.,QNIN-NNDvi)
3036 QV1D = MAX(0.,QV1D-QNDvi)
3037 QI1D = MAX(0.,QI1D+QNDvi)
3038 NI1D = MAX(0.,NI1D+NNDvi)
3039 IF (ICE_RHOI.EQ.0.OR.ICE_RHOI.EQ.2) THEN
3041 ELSEIF (ICE_RHOI.EQ.1) THEN
3042 VI1D = MAX(0.,VI1D+VNDvi)
3044 FI1D = MAX(0.,FI1D+FNDvi)
3045 I3M1D = MAX(0.,I3M1D+INDvi)
3046 IF (AFAI_3M.EQ.0.OR.AFAI_3M.EQ.2) THEN
3048 ELSEIF (AFAI_3M.EQ.1) THEN
3049 AI1D = MAX(0.,AI1D+ANDvi)
3051 CPM = CP*(1.+0.887*QV1D)
3052 XXLS = 3.15E6-2370.*TK1D+0.3337E6
3053 TK1D = TK1D+XXLS*QNDvi/CPM
3055 END SUBROUTINE ICENU
3056 !======================================================================
3058 !======================================================================
3059 SUBROUTINE SEDI_FALL(TK1D,P1D,QV1D,QC1D,QR1D,QI1D,QS1D,QG1D,QH1D,&
3060 NC1D,NR1D,NI1D,NS1D,NG1D,NH1D,VI1D,VS1D,VG1D,FI1D, &
3061 FS1D,AI1D,AS1D,AG1D,AH1D,I3M1D,VTQC,VTQR,VTQI,VTQS, &
3062 VTQG,VTQH,VTNC,VTNR,VTNI,VTNS,VTNG,VTNH,VTVI,VTVS, &
3063 VTVG,VTFI,VTFS,VTAI,VTAS,VTAG,VTAH,VTI3M,SASPR,RHO)
3064 !======================================================================
3066 REAL :: TK1D,P1D,QV1D,QC1D,QR1D,QI1D,QS1D,QG1D,QH1D,NC1D,NR1D, &
3067 NI1D,NS1D,NG1D,NH1D,VI1D,VS1D,VG1D,FI1D,FS1D,AI1D,AS1D, &
3068 AG1D,AH1D,I3M1D,VTQC,VTQR,VTQI,VTQS,VTQG,VTQH,VTNC,VTNR, &
3069 VTNI,VTNS,VTNG,VTNH,VTVI,VTVS,VTVG,VTFI,VTFS,VTAI,VTAS, &
3070 VTAG,VTAH,VTI3M,QRHO,RHOAJ,RHO,MVRC,MVRR,GUC,GUR,LAMC, &
3071 LAMR,LAMI,LAMS,LAMG,LAMH,RHOI,RHOS,RHOG,AFAC,AFAR,AFAI, &
3072 AFAS,AFAG,AFAH,ADAGR,ZETA3,AMI,BMI,AMS,AMG,AVI,BVI,AVS, &
3073 BVS,AVG,BVG,AVH,BVH,ZETA,FSQC,FSQR,FSQI,FSQS,FSQG,FSQH, &
3074 FSNC,FSNR,FSNI,FSNS,FSNG,FSNH,FSVI,FSVS,FSVG,FSFI,FSAI, &
3075 FSAS,FSAG,FSAH,MVDC,MVDR,MVDI,MVDS,MVDG,MVDH,BEST,SASPR
3076 REAL, PARAMETER :: AVTC = 8.8462E+02, BVTC = 9.7593E+07
3077 REAL, PARAMETER :: CVTC = -3.4249E+11, AVTR = 2.1454E+00
3078 REAL, PARAMETER :: BVTR = -2.2812E-04, CVTR = 2.9676E-09
3079 REAL, PARAMETER :: CQC1 = 2.0901E+01, CQC2 = 9.9111E-01
3080 REAL, PARAMETER :: CQC3 = 4.4182E+00, CNC1 = 1.8276E+01
3081 REAL, PARAMETER :: CNC2 = 1.0015E+00, CNC3 = 1.9838E+00
3082 REAL, PARAMETER :: CQR1 = 1.5943E+01, CQR2 = 1.1898E+00
3083 REAL, PARAMETER :: CQR3 = 4.0073E+00, CNR1 = 9.4791E+00
3084 REAL, PARAMETER :: CNR2 = 9.7607E-01, CNR3 = 1.0858E+00
3087 RHOAJ = (RHOSU/RHO)**0.54
3088 IF (QC1D.GE.QSMALL) THEN
3089 CALL SOLVE_AFAC(TK1D,QC1D,NC1D,LAMC,MVDC,AFAC)
3090 IF (LIQ_VTC.EQ.0) THEN
3091 FSQC = EXP(GAMLN(BVC0+BMW+AFAC+1.)-GAMLN(BMW+AFAC+1.)- &
3093 FSNC = EXP(GAMLN(BVC0+AFAC+1.)-GAMLN(AFAC+1.)-BVC0* &
3095 VTQC = RHOAJ*FSQC*AVC0
3096 VTNC = RHOAJ*FSNC*AVC0
3097 ELSEIF (LIQ_VTC.EQ.1) THEN
3098 MVRC = MIN(MAX((QC1D/NC1D/C4PI3W)**THRD,RCMIN),RCMAX)
3099 GUC = EXP(EXP(AFU+BFU*(LOG(MVRC))**3.+CFU*QRHO**3.))
3100 VTQC = EXP(CQC1+CQC2*LOG(NC1D)+CQC3*LOG(MVRC))*GUC/QC1D
3101 VTNC = EXP(CNC1+CNC2*LOG(NC1D)+CNC3*LOG(MVRC))*GUC/NC1D
3102 ELSEIF (LIQ_VTC.EQ.2) THEN
3103 MVRC = MIN(MAX((QC1D/NC1D/C4PI3W)**THRD,RCMIN),RCMAX)
3104 GUC = EXP(EXP(AFU+BFU*(LOG(MVRC))**3.+CFU*QRHO**3.))
3105 VTQC = MVRC*(AVTC+BVTC*MVRC+CVTC*MVRC**2.)*GUC
3106 VTNC = MVRC*(AVTC+BVTC*MVRC+CVTC*MVRC**2.)*GUC
3108 VTQC = MIN(VTQC,VTCMAX)
3109 VTNC = MIN(VTNC,VTCMAX)
3111 IF (QR1D.GE.QSMALL) THEN
3112 CALL SOLVE_AFAR(TK1D,QR1D,NR1D,LAMR,MVDR,AFAR)
3113 IF (LIQ_VTR.EQ.0) THEN
3114 FSQR = EXP(GAMLN(BVR0+BMW+AFAR+1.)-GAMLN(BMW+AFAR+1.)- &
3116 FSNR = EXP(GAMLN(BVR0+AFAR+1.)-GAMLN(AFAR+1.)-BVR0* &
3118 VTQR = RHOAJ*FSQR*AVR0
3119 VTNR = RHOAJ*FSNR*AVR0
3120 ELSEIF (LIQ_VTR.EQ.1) THEN
3121 MVRR = MIN(MAX((QR1D/NR1D/C4PI3W)**THRD,RRMIN),RRMAX)
3122 GUR = EXP(EXP(AFU+BFU*(LOG(MVRR))**3.+CFU*QRHO**3.))
3123 VTQR = EXP(CQR1+CQR2*LOG(NR1D)+CQR3*LOG(MVRR))*GUR/QR1D
3124 VTNR = EXP(CNR1+CNR2*LOG(NR1D)+CNR3*LOG(MVRR))*GUR/NR1D
3125 ELSEIF (LIQ_VTR.EQ.2) THEN
3126 MVRR = MIN(MAX((QR1D/NR1D/C4PI3W)**THRD,RRMIN),RRMAX)
3127 GUR = EXP(EXP(AFU+BFU*(LOG(MVRR))**3.+CFU*QRHO**3.))
3128 VTQR = EXP(AVTR+BVTR/MVRR+CVTR/(MVRR**2.))*GUR
3129 VTNR = EXP(AVTR+BVTR/MVRR+CVTR/(MVRR**2.))*GUR
3131 VTQR = MIN(VTQR,VTRMAX)
3132 VTNR = MIN(VTNR,VTRMAX)
3134 IF (QI1D.GE.QSMALL) THEN
3135 CALL SOLVE_AFAI(TK1D,P1D,RHO,QV1D,QI1D,NI1D,VI1D,FI1D,AI1D, &
3136 I3M1D,ADAGR,ZETA,LAMI,AFAI,MVDI,RHOI,AMI,BMI,AVI,BVI, &
3138 FSQI = EXP(GAMLN(BVI+BMI+AFAI+1.)-GAMLN(BMI+AFAI+1.)-BVI* &
3140 FSNI = EXP(GAMLN(BVI+AFAI+1.)-GAMLN(AFAI+1.)-BVI*LOG(LAMI))
3141 FSVI = EXP(GAMLN(BVI+AFAI+4.)-GAMLN(AFAI+4.)-BVI*LOG(LAMI))
3142 VTQI = MIN(RHOAJ*FSQI*AVI,VTIMAX)
3143 VTNI = MIN(RHOAJ*FSNI*AVI,VTIMAX)
3144 VTVI = MIN(RHOAJ*FSVI*AVI,VTIMAX)
3145 IF (AI1D.GE.ASMALL) THEN
3146 FSAI = EXP(GAMLN(BVI+AFAI+3.)-GAMLN(AFAI+3.)-BVI*LOG(LAMI))
3147 VTAI = MIN(RHOAJ*FSAI*AVI,VTIMAX)
3149 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
3150 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3151 FSFI = EXP(GAMLN(BVI+ZETA3+AFAI+4.)-GAMLN(ZETA3+AFAI+4.)- &
3153 VTFI = MIN(RHOAJ*FSFI*AVI,VTIMAX)
3154 VTI3M = MIN(RHOAJ*FSVI*AVI,VTIMAX)
3157 IF (QS1D.GE.QSMALL) THEN
3158 CALL SOLVE_AFAS(TK1D,RHO,QS1D,QC1D,NS1D,VS1D,FS1D,AS1D,AFAS, &
3159 LAMS,MVDS,RHOS,SASPR,AMS,AVS,BVS)
3160 FSQS = EXP(GAMLN(BVS+BMS+AFAS+1.)-GAMLN(BMS+AFAS+1.)-BVS* &
3162 FSNS = EXP(GAMLN(BVS+AFAS+1.)-GAMLN(AFAS+1.)-BVS*LOG(LAMS))
3163 FSVS = EXP(GAMLN(BVS+AFAS+4.)-GAMLN(AFAS+4.)-BVS*LOG(LAMS))
3164 VTQS = MIN(RHOAJ*FSQS*AVS,VTSMAX)
3165 VTNS = MIN(RHOAJ*FSNS*AVS,VTSMAX)
3166 VTVS = MIN(RHOAJ*FSVS*AVS,VTSMAX)
3168 IF (AS1D.GE.ASMALL) THEN
3169 FSAS = EXP(GAMLN(BVS+AFAS+3.)-GAMLN(AFAS+3.)-BVS*LOG(LAMS))
3170 VTAS = MIN(RHOAJ*FSAS*AVS,VTSMAX)
3173 IF (QG1D.GE.QSMALL) THEN
3174 CALL SOLVE_AFAG(TK1D,RHO,QG1D,QC1D,NG1D,VG1D,AG1D,LAMG,AFAG, &
3175 MVDG,RHOG,AMG,AVG,BVG)
3176 FSQG = EXP(GAMLN(BVG+BMG+AFAG+1.)-GAMLN(BMG+AFAG+1.)-BVG* &
3178 FSNG = EXP(GAMLN(BVG+AFAG+1.)-GAMLN(AFAG+1.)-BVG*LOG(LAMG))
3179 FSVG = EXP(GAMLN(BVG+AFAG+4.)-GAMLN(AFAG+4.)-BVG*LOG(LAMG))
3180 VTQG = MIN(RHOAJ*FSQG*AVG,VTGMAX)
3181 VTNG = MIN(RHOAJ*FSNG*AVG,VTGMAX)
3182 VTVG = MIN(RHOAJ*FSVG*AVG,VTGMAX)
3183 IF (AG1D.GE.ASMALL) THEN
3184 FSAG = EXP(GAMLN(BVG+AFAG+3.)-GAMLN(AFAG+3.)-BVG*LOG(LAMG))
3185 VTAG = MIN(RHOAJ*FSAG*AVG,VTGMAX)
3188 IF (QH1D.GE.QSMALL) THEN
3189 CALL SOLVE_AFAH(TK1D,RHO,QH1D,NH1D,AH1D,LAMH,AFAH,MVDH,AVH,BVH)
3190 FSQH = EXP(GAMLN(BVH+BMH+AFAH+1.)-GAMLN(BMH+AFAH+1.)-BVH* &
3192 FSNH = EXP(GAMLN(BVH+AFAH+1.)-GAMLN(AFAH+1.)-BVH*LOG(LAMH))
3193 VTQH = MIN(RHOAJ*FSQH*AVH,VTHMAX)
3194 VTNH = MIN(RHOAJ*FSNH*AVH,VTHMAX)
3195 IF (AH1D.GE.ASMALL) THEN
3196 FSAH = EXP(GAMLN(BVH+AFAH+3.)-GAMLN(AFAH+3.)-BVH*LOG(LAMH))
3197 VTAH = MIN(RHOAJ*FSAH*AVH,VTHMAX)
3201 END SUBROUTINE SEDI_FALL
3202 !======================================================================
3204 !======================================================================
3205 SUBROUTINE PTFLUX(Q1D,VT1D,RHO,DZ,NK,DT,DTMN,PRT1D)
3206 !======================================================================
3208 INTEGER :: K,NK,NS,NSTEP
3209 INTEGER, PARAMETER :: MAXSTP = 1000
3210 REAL :: PRT1D, &! input/output ; accumulative prcipitation (cm)
3211 DT, &! time step for integration(=2*DTMN*60 for leapfrog scheme)
3212 DTMN ! time step (min)
3213 REAL, DIMENSION(NK) :: Q1D,VT1D,RHO,DZ,DQDT
3214 !------------ FOR TENDENCIES DUE TO PRECIPITATION/SEDIMENTATION -------
3217 NSTEP = MAX(NSTEP,INT(VT1D(K)*DT/DZ(K)+1.))
3218 IF (NSTEP.GT.80) THEN
3219 PRINT *,'IN PREFLUX',K,NSTEP,DT,VT1D(K),DZ(K),Q1D(K),RHO(K)
3222 IF (NSTEP.GT.MAXSTP) THEN
3223 PRINT *,'NSTEP FOR PRECIP. IS: ',NSTEP,VT1D,DT,DZ
3227 DQDT(1) = -VT1D(1)*Q1D(1)/DZ(1)
3229 DQDT(K) = (VT1D(K-1)*RHO(K-1)*Q1D(K-1)- &
3230 VT1D(K)*RHO(K)*Q1D(K))/(DZ(K)*RHO(K))
3232 PRT1D = PRT1D+VT1D(NK)*RHO(NK)*Q1D(NK)*DTMN*60./REAL(NSTEP) ! accumulate precipitation [kg/m^2]; 1 kg/m^2 = 1 mm
3234 Q1D(K) = Q1D(K)+DQDT(K)*DT/REAL(NSTEP)
3238 END SUBROUTINE PTFLUX
3239 !======================================================================
3241 !======================================================================
3242 SUBROUTINE FLFLUX(Q1D,VT1D,RHO,DZ,NK,DT)
3243 !======================================================================
3245 INTEGER :: NSTEP,K,NK,NS
3246 INTEGER, PARAMETER :: MAXSTP = 1000
3248 REAL, DIMENSION(NK) :: Q1D,VT1D,RHO,DZ,DQDT
3249 !-- INPUT DATA FOR STEPSIZE RK4 CALCULATION FOR TENDENCIES DUE TO PRECIPITATION/SEDIMENTATION
3252 NSTEP = MAX(NSTEP,INT(VT1D(K)*DT/DZ(K)+1.))
3255 DQDT(1) = -VT1D(1)*Q1D(1)/DZ(1)
3257 DQDT(K) = (VT1D(K-1)*RHO(K-1)*Q1D(K-1)- &
3258 VT1D(K)*RHO(K)*Q1D(K))/(DZ(K)*RHO(K))
3261 Q1D(K) = Q1D(K)+DQDT(K)*DT/REAL(NSTEP)
3265 END SUBROUTINE FLFLUX
3266 !======================================================================
3268 !======================================================================
3269 SUBROUTINE SMALL_DT(DT,DTS,SDTS,DTKDT,DQVDT,DPDT,RHO,TK1D,P1D, &
3270 QV1D,QC1D,QR1D,QI1D,QS1D,QG1D,QH1D,NC1D,NR1D,NI1D, &
3271 NS1D,NG1D,NH1D,VI1D,VS1D,VG1D,FI1D,FS1D,AI1D,AS1D, &
3272 AG1D,AH1D,I3M1D,SASPR,XDNC,XDNR,GQCTR)
3273 !======================================================================
3276 REAL :: DT,DTS,SDTS, &! TIME STEP(s)& SUB-TIME STEP(s)& DTS MUST<DT-SDTS
3277 DTKDT,DQVDT,DPDT ! TEMPERATURE,WATER VAPOR,PRESSURE FORCING
3278 REAL :: RHO,P1D,CPM,ESW,ESI,QVSW,QVSI,SSRW,SSRI,XXLV,XXLS,XXLF, &
3279 QV1D,TK1D,QC1D,QR1D,QI1D,QS1D,QG1D,QH1D,GQCTR,NC1D,NR1D, &
3280 NI1D,NS1D,NG1D,NH1D,VI1D,VS1D,VG1D,FI1D,FS1D,AI1D,AS1D, &
3281 AG1D,AH1D,I3M1D,AFAC,AFAR,AFAI,AFAS,AFAG,AFAH,ADAGR,ZETA,&
3282 AMI,BMI,AMS,AMG,AVI,BVI,AVS,BVS,AVG,BVG,AVH,BVH,DV,MUA, &
3283 KAP,SCN,TC1D,iDT,SASPR,ELCLD,ELDLD,ELCLC,CAPS
3284 REAL :: QVTEND,QCTEND,QRTEND,QITEND,QSTEND,QGTEND,QHTEND,RATIO, &
3285 QVSOUR,QCSOUR,QRSOUR,QISOUR,QSSOUR,QGSOUR,QHSOUR,QVSINK, &
3286 QCSINK,QRSINK,QISINK,QSSINK,QGSINK,QHSINK,NCSOUR,NISOUR, &
3287 NCSINK,NISINK,NSSOUR,NSSINK,FISOUR,FISINK,FSSOUR,FSSINK, &
3288 VISOUR,VISINK,VSSOUR,VSSINK,VGSOUR,VGSINK,AISOUR,AISINK, &
3289 ASSOUR,ASSINK,AGSOUR,AGSINK,AHSOUR,AHSINK,IISOUR,IISINK, &
3290 QVWTEND,QVITEND,DRHIDT,DRHWDT
3291 REAL :: XDNC ! deactivated cloud drops (#/kg) = NACcv*DTS
3292 REAL :: XDNR ! raindrop evap into cloud drop
3293 REAL :: DTSI ! TIME TO REACH RHI=100% (NEGATIVE MEANS THAT TIME IS)
3294 REAL :: DTSW ! TIME TO REACH RHW=100% (NEVER HAPPEN OR ALREADY PAST)
3295 REAL :: QACcv,QACrc,QVDvc,QVDvr,QVDvi,QVDvs,QVDvg,QVDvh,QSBiv, &
3296 QSBsv,QSBgv,QSBhv,QEVcv,QEVrv,QEVsv,QEVgv,QEVhv,NACcv, &
3297 NACrc,NSBiv,NSBsv,NSBgv,NSBhv,VVDvi,VSBiv,VVDvg,VSBgv, &
3298 VEVgv,FVDvi,VVDvs,VSBsv,VEVsv,FSBiv,FVDvs,FSBsv,FEVsv, &
3299 AVDvi,ASBiv,AVDvs,ASBsv,AEVsv,AVDvg,ASBgv,AEVgv,AVDvh, &
3300 ASBhv,AEVhv,IVDvi,ISBiv
3301 REAL :: MVDC,MVDR,MVDI,MVDS,MVDG,MVDH,MVRC,MVRR,BTMP,BSTMP,BGTMP,&
3302 BHTMP,ABW,ABI,RHOAJ,LMVRC,LMVRR,RHOI,RHOS,RHOG,VENQS, &
3303 VENQG,VENQH,SUMDEP,VDMAX,EVMAX,SBMAX,SUMCND,SUMEVP, &
3304 SUMSUB,H2Z,H4Z,ZETA2,ZETA3,ZETA4,ZETA5,GVHAB,IPH,IPG,GI1,&
3305 INHGR,BEST,DNIVD,DNSVD,DNGVD,QTMP0,QTMP1,QTMP2,QTMP3, &
3306 QTMP4,QTMP5,QTMP6,QTMP7,QTMP8,QTMP9,FTMP0,FTMP1,FTMP2, &
3307 FTMP3,FTMP4,FTMP5,FTMP6,FTMP7,FTMP8,FTMP9,ATMP0,ATMP1, &
3308 ATMP2,ATMP3,ATMP4,ATMP5,ATMP6,ATMP7,ATMP8,ATMP9,LAMC, &
3309 LAMR,LAMI,LAMS,LAMG,LAMH,VENQI,VENFI,VENAI,VENAS,VENAG, &
3310 VENAH,VENIC,VENIA,VENQI0,VENAI0,RAT1,RAT2,LLMI,LLMS,LLMG,&
3312 REAL, PARAMETER :: TORR = 1.E-2 ! for 0.01 changes
3313 REAL, PARAMETER :: AQ1 = 6.6793E+0, BQ1 = 1.0090E+0 ! See CL04 Tables
3314 REAL, PARAMETER :: CQ1 = 1.4095E+0, AQ2 = 9.9912E+0 !
3315 REAL, PARAMETER :: BQ2 = -4.7678E-1, CQ2 = -3.1388E-2 !
3316 REAL, PARAMETER :: AN9 = -1.0593E+0, BN9 = 8.9774E-1 !
3317 REAL, PARAMETER :: CN9 = -2.8403E-1, DN9 = 1.6328E+0 !
3318 REAL, PARAMETER :: AN10 = 8.2841E+0, BN10 = 9.7219E-1 !
3319 REAL, PARAMETER :: CN10 = -5.0808E-1 !
3320 REAL :: ZC1,ZC2,ZC3,ZC4,ZP1,ZP2,ZP3,ZP4 ! See CT16
3321 DATA ZC1,ZC2,ZC3,ZC4/0.69509913,-0.46685819,0.30490087,1.62148100/
3322 DATA ZP1,ZP2,ZP3,ZP4/0.36793126,1.82782890,0.63206874,-1.00164090/
3324 QVTEND = 0.; QVWTEND = 0.; QVITEND = 0.; QCTEND = 0.; QRTEND = 0.
3325 QITEND = 0.; QSTEND = 0.; QGTEND = 0.; QHTEND = 0.
3326 MVRC = 0.; MVRR = 0.; MVDC = 0.; MVDR = 0.; MVDI = 0.
3327 MVDS = 0.; MVDG = 0.; MVDH = 0.; QACcv = 0.; QACrc = 0.
3328 QVDvc = 0.; QVDvr = 0.; QVDvi = 0.; QVDvs = 0.; QVDvg = 0.
3329 QVDvh = 0.; QSBiv = 0.; QSBsv = 0.; QSBgv = 0.; QSBhv = 0.
3330 QEVcv = 0.; QEVrv = 0.; QEVsv = 0.; QEVgv = 0.; QEVhv = 0.
3331 NACcv = 0.; NACrc = 0.; NSBiv = 0.; NSBsv = 0.; NSBgv = 0.
3332 NSBhv = 0.; VVDvi = 0.; VSBiv = 0.; VVDvs = 0.; VSBsv = 0.
3333 VEVsv = 0.; VVDvg = 0.; VSBgv = 0.; VEVgv = 0.; FVDvi = 0.
3334 FSBiv = 0.; FVDvs = 0.; FSBsv = 0.; FEVsv = 0.; IVDvi = 0.
3335 ISBiv = 0.; AVDvi = 0.; ASBiv = 0.; AVDvs = 0.; ASBsv = 0.
3336 AEVsv = 0.; AVDvg = 0.; ASBgv = 0.; AEVgv = 0.; AVDvh = 0.
3337 ASBhv = 0.; AEVhv = 0.
3339 ESW = MIN(0.99*P1D,POLYSVP(TK1D,0))
3340 ESI = MIN(0.99*P1D,POLYSVP(TK1D,1))
3341 IF (ESI.GT.ESW) ESI = ESW
3342 QVSW = 0.622*ESW/(P1D-ESW)
3343 QVSI = 0.622*ESI/(P1D-ESI)
3346 XXLV = 3.1484E6-2370.*TK1D
3347 XXLS = 3.15E6-2370.*TK1D+0.3337E6
3348 XXLF = 2836310.8-(3.1484E6-2370.*TK1D)
3349 ELDLD = (1.+XXLS*XXLS*QV1D/(CP*RV*TK1D**2.))
3350 ELCLD = (1.+XXLV*XXLS*QV1D/(CP*RV*TK1D**2.))
3351 ELCLC = (1.+XXLV*XXLV*QV1D/(CP*RV*TK1D**2.))
3352 DRHWDT = (1.+SSRW)*(DPDT/P1D+DQVDT/QV1D-XXLV*DTKDT/(RV*TK1D**2.)) ! caused by large scale QV & P T changes
3353 DRHIDT = (1.+SSRI)*(DPDT/P1D+DQVDT/QV1D-XXLS*DTKDT/(RV*TK1D**2.)) ! caused by large scale QV & P T changes
3355 IF (ABS(DRHWDT).LT.RLIMIT) THEN
3356 DTSW = 1.E7 ! very long time to reach saturation
3358 DTSW = -SSRW/DRHWDT*1.01 ! time to reach saturation
3359 ENDIF ! negative means the right time has past
3360 IF (ABS(DRHIDT).LT.RLIMIT) THEN
3361 DTSI = 1.E7 ! very long time to reach saturation
3363 DTSI = -SSRI/DRHIDT*1.01 ! time to reach saturation
3364 ENDIF ! negative means the right time has past
3365 IF (TK1D.GT.TK0C) THEN
3366 IF (DTSW.GT.0.) DTS = MIN(DT,DTSW,DT-SDTS)
3368 IF (DTSI.GT.0.) DTS = MIN(DT,DTSI,DT-SDTS)
3369 IF (DTSW.GT.0.) DTS = MIN(DT,DTS,DTSW,DT-SDTS)
3371 DTS = MAX(DTMIN,MIN(DT,DT-SDTS))
3375 DV = 2.11E-5*(TK1D/TK0C)**1.94*(101325./P1D) ! DIFFUSIVITY OF WATER VAPOR IN AIR(PRUPPACHER&KLETT:13-3)
3376 MUA = 1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5 ! DYNAMIC VISCOSITY OF AIR (ROGER AND YAU,P.102)
3377 KAP = 2.3971E-2+0.0078E-2*TC1D ! THERMAL CONDUCTIVITY OF AIR
3378 SCN = (MUA/(RHO*DV))**THRD ! SCHMIDT NUMBER
3379 CPM = CP*(1.+0.887*QV1D)
3380 ABW = TK1D*RV/ESW/DV+XXLV*(XXLV/TK1D/RV-1.)/TK1D/KAP
3381 ABI = TK1D*RV/ESI/DV+XXLS*(XXLS/TK1D/RV-1.)/TK1D/KAP
3382 RHOAJ = (RHOSU/RHO)**0.54
3383 HID = MAX(MIN(NINT(ABS(TC1D)/0.25),120),0)
3385 GVHAB = (INHGR-1.)/(INHGR+2.)+1.
3387 IF (QC1D.GE.QSMALL) THEN
3388 CALL SOLVE_AFAC(TK1D,QC1D,NC1D,LAMC,MVDC,AFAC)
3389 MVRC = MIN(MAX((QC1D/NC1D/C4PI3W)**THRD,RCMIN),RCMAX)
3392 IF (QR1D.GE.QSMALL) THEN
3393 CALL SOLVE_AFAR(TK1D,QR1D,NR1D,LAMR,MVDR,AFAR)
3394 MVRR = MIN(MAX((QR1D/NR1D/C4PI3W)**THRD,RRMIN),RRMAX)
3397 IF (QI1D.GE.QSMALL) THEN
3398 CALL SOLVE_AFAI(TK1D,P1D,RHO,QV1D,QI1D,NI1D,VI1D,FI1D,AI1D, &
3399 I3M1D,ADAGR,ZETA,LAMI,AFAI,MVDI,RHOI,AMI,BMI,AVI,BVI, &
3401 GI1 = GAMLN(AFAI+1.)
3403 IF (ICE_VENT.EQ.3) THEN
3404 IF ((ADAGR-1.).GE.SLIMIT) THEN
3405 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3406 IPH = 3.*ADAGR/(ADAGR+2.)
3407 ZETA2 = 2.*(ADAGR-1.)/(ADAGR+2.)
3408 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3409 ZETA4 = 4.*(ADAGR-1.)/(ADAGR+2.)
3410 ZETA5 = 5.*(ADAGR-1.)/(ADAGR+2.)
3413 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
3414 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
3415 QTMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+1.)
3416 QTMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+1.)
3417 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP2)
3418 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP3)
3419 QTMP6 = LLMI*(H2Z+BVI+IPH+1.)
3420 QTMP7 = LLMI*(H4Z+BVI+IPH+1.)
3421 QTMP8 = EXP(GAMLN(H2Z+BVI+IPH+AFAI+2.)-GI1-QTMP6)
3422 QTMP9 = EXP(GAMLN(H4Z+BVI+IPH+AFAI+2.)-GI1-QTMP7)
3423 FTMP0 = EXP(GAMLN(H2Z+ZETA3+AFAI+2.)-GI1-LLMI*(H2Z+ZETA3+ &
3425 FTMP1 = EXP(GAMLN(H4Z+ZETA3+AFAI+2.)-GI1-LLMI*(H4Z+ZETA3+ &
3427 FTMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+ZETA3+1.)
3428 FTMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+ZETA3+1.)
3429 FTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+ZETA3+AFAI+2.)-GI1- &
3431 FTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+ZETA3+AFAI+2.)-GI1- &
3433 FTMP6 = LLMI*(H2Z+BVI+IPH+ZETA3+1.)
3434 FTMP7 = LLMI*(H4Z+BVI+IPH+ZETA3+1.)
3435 FTMP8 = EXP(GAMLN(H2Z+ZETA3+BVI+IPH+AFAI+2.)-GI1-FTMP6)
3436 FTMP9 = EXP(GAMLN(H4Z+ZETA3+BVI+IPH+AFAI+2.)-GI1-FTMP7)
3437 ATMP0 = EXP(GAMLN(H2Z+AFAI+1.)-GI1-LLMI*H2Z)
3438 ATMP1 = EXP(GAMLN(H4Z+AFAI+1.)-GI1-LLMI*H4Z)
3439 ATMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+ZETA3)
3440 ATMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+ZETA3)
3441 ATMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+ZETA3+AFAI+1.)-GI1- &
3443 ATMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+ZETA3+AFAI+1.)-GI1- &
3445 ATMP6 = LLMI*(H2Z+BVI+IPH)
3446 ATMP7 = LLMI*(H4Z+BVI+IPH)
3447 ATMP8 = EXP(GAMLN(H2Z+BVI+IPH+AFAI+1.)-GI1-ATMP6)
3448 ATMP9 = EXP(GAMLN(H4Z+BVI+IPH+AFAI+1.)-GI1-ATMP7)
3449 VENQI = ZC1*QTMP0/DI0**H2Z+ZC3*QTMP1/DI0**H4Z+VENC1*ZC1* &
3450 BTMP*QTMP4/DI0**(H2Z+ZETA)+VENC1*ZC3*BTMP*QTMP5/ &
3451 DI0**(H4Z+ZETA)+VENC2*ZC1*BTMP**2.*QTMP8/DI0**(H2Z+&
3452 ZETA2)+VENC2*ZC3*BTMP**2.*QTMP9/DI0**(H4Z+ZETA2)
3453 VENFI = ZC1*FTMP0/DI0**(ZETA3+H2Z)+ZC3*FTMP1/DI0**(ZETA3+ &
3454 H4Z)+VENC1*ZC1*BTMP*FTMP4/DI0**(H2Z+ZETA4)+VENC1* &
3455 ZC3*BTMP*FTMP5/DI0**(H4Z+ZETA4)+VENC2*ZC1*BTMP**2.*&
3456 FTMP8/DI0**(H2Z+ZETA5)+VENC2*ZC3*BTMP**2.*FTMP9/ &
3458 VENAI = ZC1*ATMP0/DI0**H2Z+ZC3*ATMP1/DI0**H4Z+VENC1*ZC1* &
3459 BTMP*ATMP4/DI0**(H2Z+ZETA)+VENC1*ZC3*BTMP*ATMP5/ &
3460 DI0**(H4Z+ZETA)+VENC2*ZC1*BTMP**2.*ATMP8/DI0**(H2Z+&
3461 ZETA2)+VENC2*ZC3*BTMP**2.*ATMP9/DI0**(H4Z+ZETA2)
3462 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
3463 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3465 ZETA2 = 2.*(ADAGR-1.)/(ADAGR+2.)
3466 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3467 ZETA4 = 2.5*(ADAGR-1.)/(ADAGR+2.)
3470 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
3471 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
3472 QTMP2 = LLMI*(H2Z+BVI/2.+IPG/2.+1.)
3473 QTMP3 = LLMI*(H4Z+BVI/2.+IPG/2.+1.)
3474 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP2)
3475 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP3)
3476 QTMP6 = LLMI*(H2Z+BVI+IPG+1.)
3477 QTMP7 = LLMI*(H4Z+BVI+IPG+1.)
3478 QTMP8 = EXP(GAMLN(H2Z+BVI+IPG+AFAI+2.)-GI1-QTMP6)
3479 QTMP9 = EXP(GAMLN(H4Z+BVI+IPG+AFAI+2.)-GI1-QTMP7)
3480 FTMP0 = EXP(GAMLN(H2Z+ZETA3+AFAI+2.)-GI1-LLMI*(H2Z+ZETA3+ &
3482 FTMP1 = EXP(GAMLN(H4Z+ZETA3+AFAI+2.)-GI1-LLMI*(H4Z+ZETA3+ &
3484 FTMP2 = LLMI*(H2Z+BVI/2.+IPG/2.+ZETA3+1.)
3485 FTMP3 = LLMI*(H4Z+BVI/2.+IPG/2.+ZETA3+1.)
3486 FTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+ZETA3+AFAI+2.)-GI1- &
3488 FTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+ZETA3+AFAI+2.)-GI1- &
3490 FTMP6 = LLMI*(H2Z+BVI+IPG+ZETA3+1.)
3491 FTMP7 = LLMI*(H4Z+BVI+IPG+ZETA3+1.)
3492 FTMP8 = EXP(GAMLN(H2Z+BVI+IPG+ZETA3+AFAI+2.)-GI1-FTMP6)
3493 FTMP9 = EXP(GAMLN(H4Z+BVI+IPG+ZETA3+AFAI+2.)-GI1-FTMP7)
3494 ATMP0 = EXP(GAMLN(H2Z+AFAI+1.)-GI1-LLMI*H2Z)
3495 ATMP1 = EXP(GAMLN(H4Z+AFAI+1.)-GI1-LLMI*H4Z)
3496 ATMP2 = LLMI*(H2Z+BVI/2.+IPG/2.)
3497 ATMP3 = LLMI*(H4Z+BVI/2.+IPG/2.)
3498 ATMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+AFAI+1.)-GI1-ATMP2)
3499 ATMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+AFAI+1.)-GI1-ATMP3)
3500 ATMP6 = LLMI*(H2Z+BVI+IPG)
3501 ATMP7 = LLMI*(H4Z+BVI+IPG)
3502 ATMP8 = EXP(GAMLN(H2Z+BVI+IPG+AFAI+1.)-GI1-ATMP6)
3503 ATMP9 = EXP(GAMLN(H4Z+BVI+IPG+AFAI+1.)-GI1-ATMP7)
3504 VENQI = ZP1*QTMP0/DI0**H2Z+ZP3*QTMP1/DI0**H4Z+VENP1*ZP1* &
3505 BTMP*QTMP4/DI0**(H2Z-ZETA/2.)+VENP1*ZP3*BTMP*QTMP5/&
3506 DI0**(H4Z-ZETA/2.)+VENP2*ZP1*BTMP**2.*QTMP8/DI0** &
3507 (H2Z-ZETA)+VENP2*ZP3*BTMP**2.*QTMP9/DI0**(H4Z-ZETA)
3508 VENFI = ZP1*FTMP0/DI0**(H2Z+ZETA3)+ZP3*FTMP1/DI0**(H4Z+ &
3509 ZETA3)+VENP1*ZP1*BTMP*FTMP4/DI0**(H2Z+ZETA4)+VENP1*&
3510 ZP3*BTMP*FTMP5/DI0**(H4Z+ZETA4)+VENP2*ZP1*BTMP**2.*&
3511 FTMP8/DI0**(H2Z+ZETA2)+VENP2*ZP3*BTMP**2.*FTMP9/ &
3513 VENAI = ZP1*ATMP0/DI0**H2Z+ZP3*ATMP1/DI0**H4Z+VENP1*ZP1* &
3514 BTMP*ATMP4/DI0**(H2Z-ZETA/2.)+VENP1*ZP3*BTMP*ATMP5/&
3515 DI0**(H4Z-ZETA/2.)+VENP2*ZP1*BTMP**2.*ATMP8/DI0**( &
3516 H2Z-ZETA)+VENP2*ZP3*BTMP**2.*ATMP9/DI0**(H4Z-ZETA)
3517 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
3518 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3519 QTMP0 = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
3520 QTMP1 = LLMI*(1.5+BVI/2.)
3521 QTMP2 = EXP(GAMLN(BVI/2.+AFAI+2.5)-GI1-QTMP1)
3522 ATMP1 = LLMI*(0.5+BVI/2.)
3523 ATMP2 = EXP(GAMLN(BVI/2.+AFAI+1.5)-GI1-ATMP1)
3524 VENQI = AVSG*QTMP0+BVSG*BTMP*QTMP2
3526 VENAI = AVSG+BVSG*BTMP*ATMP2
3528 ELSEIF (ICE_VENT.EQ.1.OR.ICE_VENT.EQ.2) THEN
3529 IF ((ADAGR-1.).GE.SLIMIT) THEN
3530 IPH = 3.*ADAGR/(ADAGR+2.)
3532 ZETA2 = 2.*(ADAGR-1.)/(ADAGR+2.)
3533 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3534 ZETA4 = 4.*(ADAGR-1.)/(ADAGR+2.)
3535 ZETA5 = 5.*(ADAGR-1.)/(ADAGR+2.)
3538 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
3539 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
3540 FTMP0 = EXP(GAMLN(H2Z+ZETA3+AFAI+2.)-GI1-LLMI*(H2Z+ZETA3+ &
3542 FTMP1 = EXP(GAMLN(H4Z+ZETA3+AFAI+2.)-GI1-LLMI*(H4Z+ZETA3+ &
3544 ATMP0 = EXP(GAMLN(H2Z+AFAI+1.)-GI1-LLMI*H2Z)
3545 ATMP1 = EXP(GAMLN(H4Z+AFAI+1.)-GI1-LLMI*H4Z)
3546 IF (BEST.LE.1.) THEN
3547 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
3548 QTMP2 = LLMI*(H2Z+BVI+IPH+1.)
3549 QTMP3 = LLMI*(H4Z+BVI+IPH+1.)
3550 QTMP4 = EXP(GAMLN(H2Z+BVI+IPH+AFAI+2.)-GI1-QTMP2)
3551 QTMP5 = EXP(GAMLN(H4Z+BVI+IPH+AFAI+2.)-GI1-QTMP3)
3552 FTMP2 = LLMI*(H2Z+BVI+IPH+ZETA3+1.)
3553 FTMP3 = LLMI*(H4Z+BVI+IPH+ZETA3+1.)
3554 FTMP4 = EXP(GAMLN(H2Z+BVI+IPH+ZETA3+AFAI+2.)-GI1-FTMP2)
3555 FTMP5 = EXP(GAMLN(H4Z+BVI+IPH+ZETA3+AFAI+2.)-GI1-FTMP3)
3556 ATMP2 = LLMI*(H2Z+BVI+IPH)
3557 ATMP3 = LLMI*(H4Z+BVI+IPH)
3558 ATMP4 = EXP(GAMLN(H2Z+BVI+IPH+AFAI+1.)-GI1-ATMP2)
3559 ATMP5 = EXP(GAMLN(H4Z+BVI+IPH+AFAI+1.)-GI1-ATMP3)
3560 VENQI = AVIS*ZC1*QTMP0/DI0**H2Z+AVIS*ZC3*QTMP1/DI0**H4Z+&
3561 BVIS*ZC1*BTMP*QTMP4/DI0**(H2Z+ZETA2)+BVIS*ZC3* &
3562 BTMP*QTMP5/DI0**(H4Z+ZETA2)
3563 VENFI = AVIS*ZC1*FTMP0/DI0**(ZETA3+H2Z)+AVIS*ZC3*FTMP1/ &
3564 DI0**(H4Z+ZETA3)+BVIS*ZC1*BTMP*FTMP4/DI0**(H2Z+ &
3565 ZETA5)+BVIS*ZC3*BTMP*FTMP5/DI0**(H4Z+ZETA5)
3566 VENAI = AVIS*ZC1*ATMP0/DI0**H2Z+AVIS*ZC3*ATMP1/DI0**H4Z+&
3567 BVIS*ZC1*BTMP*ATMP4/DI0**(H2Z+ZETA2)+BVIS*ZC3* &
3568 BTMP*ATMP5/DI0**(H4Z+ZETA2)
3569 IF (ICE_VENT.EQ.2) THEN
3570 QTMP6 = LLMI*(BVI+IPH)
3571 QTMP7 = LLMI*(BVI+IPG)
3572 QTMP8 = EXP(GAMLN(BVI+IPH+AFAI+1.)-GI1-QTMP6)
3573 QTMP9 = EXP(GAMLN(BVI+IPG+AFAI+1.)-GI1-QTMP7)
3574 VENIC = AVIS+BVIS*BTMP*QTMP8/DI0**ZETA2
3575 VENIA = AVIS+BVIS*BTMP*QTMP9*DI0**ZETA
3576 INHGR = INHGR*VENIC/VENIA
3577 GVHAB = (INHGR-1.)/(INHGR+2.)+1.
3579 ELSEIF (BEST.GT.1.) THEN
3580 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3581 QTMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+1.)
3582 QTMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+1.)
3583 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP2)
3584 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP3)
3585 FTMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+ZETA3+1.)
3586 FTMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+ZETA3+1.)
3587 FTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+ZETA3+AFAI+2.)-GI1- &
3589 FTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+ZETA3+AFAI+2.)-GI1- &
3591 ATMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+ZETA3)
3592 ATMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+ZETA3)
3593 ATMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+ZETA3+AFAI+1.)-GI1- &
3595 ATMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+ZETA3+AFAI+1.)-GI1- &
3597 VENQI = AVSG*ZC1*QTMP0/DI0**H2Z+AVSG*ZC3*QTMP1/DI0**H4Z+&
3598 BVSG*ZC1*BTMP*QTMP4/DI0**(H2Z+ZETA)+BVSG*ZC3* &
3599 BTMP*QTMP5/DI0**(H4Z+ZETA)
3600 VENFI = AVSG*ZC1*FTMP0/DI0**(ZETA3+H2Z)+AVSG*ZC3*FTMP1/ &
3601 DI0**(H4Z+ZETA3)+BVSG*ZC1*BTMP*FTMP4/DI0**(H2Z+ &
3602 ZETA4)+BVSG*ZC3*BTMP*FTMP5/DI0**(H4Z+ZETA4)
3603 VENAI = AVSG*ZC1*ATMP0/DI0**H2Z+AVSG*ZC3*ATMP1/DI0**H4Z+&
3604 BVSG*ZC1*BTMP*ATMP4/DI0**(H2Z+ZETA)+BVSG*ZC3* &
3605 BTMP*ATMP5/DI0**(H4Z+ZETA)
3606 IF (ICE_VENT.EQ.2) THEN
3607 QTMP6 = LLMI*(BVI/2.+IPH/2.)
3608 QTMP7 = LLMI*(BVI/2.+IPG/2.)
3609 QTMP8 = EXP(GAMLN(BVI/2.+IPH/2.+AFAI+1.)-GI1-QTMP6)
3610 QTMP9 = EXP(GAMLN(BVI/2.+IPG/2.+AFAI+1.)-GI1-QTMP7)
3611 VENIC = AVSG+BVSG*BTMP*QTMP8/DI0**ZETA
3612 VENIA = AVSG+BVSG*BTMP*QTMP9*DI0**(ZETA/2.)
3613 INHGR = INHGR*VENIC/VENIA
3614 GVHAB = (INHGR-1.)/(INHGR+2.)+1.
3617 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
3619 IPH = 3.*ADAGR/(ADAGR+2.)
3620 ZETA2 = 2.*(ADAGR-1.)/(ADAGR+2.)
3621 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3622 ZETA4 = 2.5*(ADAGR-1.)/(ADAGR+2.)
3625 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
3626 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
3627 FTMP0 = EXP(GAMLN(H2Z+ZETA3+AFAI+2.)-GI1-LLMI*(H2Z+ZETA3+ &
3629 FTMP1 = EXP(GAMLN(H4Z+ZETA3+AFAI+2.)-GI1-LLMI*(H4Z+ZETA3+ &
3631 ATMP0 = EXP(GAMLN(H2Z+AFAI+1.)-GI1-LLMI*H2Z)
3632 ATMP1 = EXP(GAMLN(H4Z+AFAI+1.)-GI1-LLMI*H4Z)
3633 IF (BEST.LE.1.) THEN
3634 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
3635 QTMP2 = LLMI*(H2Z+BVI+IPG+1.)
3636 QTMP3 = LLMI*(H4Z+BVI+IPG+1.)
3637 QTMP4 = EXP(GAMLN(H2Z+BVI+IPG+AFAI+2.)-GI1-QTMP2)
3638 QTMP5 = EXP(GAMLN(H4Z+BVI+IPG+AFAI+2.)-GI1-QTMP3)
3639 FTMP2 = LLMI*(H2Z+BVI+IPG+ZETA3+1.)
3640 FTMP3 = LLMI*(H4Z+BVI+IPG+ZETA3+1.)
3641 FTMP4 = EXP(GAMLN(H2Z+BVI+IPG+ZETA3+AFAI+2.)-GI1-FTMP2)
3642 FTMP5 = EXP(GAMLN(H4Z+BVI+IPG+ZETA3+AFAI+2.)-GI1-FTMP3)
3643 ATMP2 = LLMI*(H2Z+BVI+IPG)
3644 ATMP3 = LLMI*(H4Z+BVI+IPG)
3645 ATMP4 = EXP(GAMLN(H2Z+BVI+IPG+AFAI+1.)-GI1-ATMP2)
3646 ATMP5 = EXP(GAMLN(H4Z+BVI+IPG+AFAI+1.)-GI1-ATMP3)
3647 VENQI = AVIS*ZP1*QTMP0/DI0**H2Z+AVIS*ZP3*QTMP1/DI0**H4Z+&
3648 BVIS*ZP1*BTMP*QTMP4/DI0**(H2Z-ZETA)+BVIS*ZP3* &
3649 BTMP*QTMP5/DI0**(H4Z-ZETA)
3650 VENFI = AVIS*ZP1*FTMP0/DI0**(ZETA3+H2Z)+AVIS*ZP3*FTMP1/ &
3651 DI0**(H4Z+ZETA3)+BVIS*ZP1*BTMP*FTMP4/DI0**(H2Z+ &
3652 ZETA2)+BVIS*ZP3*BTMP*FTMP5/DI0**(H4Z+ZETA2)
3653 VENAI = AVIS*ZP1*ATMP0/DI0**H2Z+AVIS*ZP3*ATMP1/DI0**H4Z+&
3654 BVIS*ZP1*BTMP*ATMP4/DI0**(H2Z-ZETA)+BVIS*ZP3* &
3655 BTMP*ATMP5/DI0**(H4Z-ZETA)
3656 IF (ICE_VENT.EQ.2) THEN
3657 QTMP6 = LLMI*(BVI+IPH)
3658 QTMP7 = LLMI*(BVI+IPG)
3659 QTMP8 = EXP(GAMLN(BVI+IPH+AFAI+1.)-GI1-QTMP6)
3660 QTMP9 = EXP(GAMLN(BVI+IPG+AFAI+1.)-GI1-QTMP7)
3661 VENIC = AVIS+BVIS*BTMP*QTMP8/DI0**ZETA2
3662 VENIA = AVIS+BVIS*BTMP*QTMP9*DI0**ZETA
3663 INHGR = INHGR*VENIC/VENIA
3664 GVHAB = (INHGR-1.)/(INHGR+2.)+1.
3666 ELSEIF (BEST.GT.1.) THEN
3667 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3668 QTMP2 = LLMI*(H2Z+BVI/2.+IPG/2.+1.)
3669 QTMP3 = LLMI*(H4Z+BVI/2.+IPG/2.+1.)
3670 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP2)
3671 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP3)
3672 FTMP2 = LLMI*(H2Z+BVI/2.+IPG/2.+ZETA3+1.)
3673 FTMP3 = LLMI*(H4Z+BVI/2.+IPG/2.+ZETA3+1.)
3674 FTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+ZETA3+AFAI+2.)-GI1- &
3676 FTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+ZETA3+AFAI+2.)-GI1- &
3678 ATMP2 = LLMI*(H2Z+BVI/2.+IPG/2.)
3679 ATMP3 = LLMI*(H4Z+BVI/2.+IPG/2.)
3680 ATMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+AFAI+1.)-GI1-ATMP2)
3681 ATMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+AFAI+1.)-GI1-ATMP3)
3682 VENQI = AVSG*ZP1*QTMP0/DI0**H2Z+AVSG*ZP3*QTMP1/DI0**H4Z+&
3683 BVSG*ZP1*BTMP*QTMP4/DI0**(H2Z-ZETA/2.)+BVSG*ZP3*&
3684 BTMP*QTMP5/DI0**(H4Z-ZETA/2.)
3685 VENFI = AVSG*ZP1*FTMP0/DI0**(ZETA3+H2Z)+AVSG*ZP3*FTMP1/ &
3686 DI0**(H4Z+ZETA3)+BVSG*ZP1*BTMP*FTMP4/DI0**(H2Z+ &
3687 ZETA4)+BVSG*ZP3*BTMP*FTMP5/DI0**(H4Z+ZETA4)
3688 VENAI = AVSG*ZP1*ATMP0/DI0**H2Z+AVSG*ZP3*ATMP1/DI0**H4Z+&
3689 BVSG*ZP1*BTMP*ATMP4/DI0**(H2Z-ZETA/2.)+BVSG*ZP3*&
3690 BTMP*ATMP5/DI0**(H4Z-ZETA/2.)
3691 IF (ICE_VENT.EQ.2) THEN
3692 QTMP6 = LLMI*(BVI/2.+IPH/2.)
3693 QTMP7 = LLMI*(BVI/2.+IPG/2.)
3694 QTMP8 = EXP(GAMLN(BVI/2.+IPH/2.+AFAI+1.)-GI1-QTMP6)
3695 QTMP9 = EXP(GAMLN(BVI/2.+IPG/2.+AFAI+1.)-GI1-QTMP7)
3696 VENIC = AVSG+BVSG*BTMP*QTMP8/DI0**ZETA
3697 VENIA = AVSG+BVSG*BTMP*QTMP9*DI0**(ZETA/2.)
3698 INHGR = INHGR*VENIC/VENIA
3699 GVHAB = (INHGR-1.)/(INHGR+2.)+1.
3702 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
3703 QTMP0 = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
3704 IF (BEST.LE.1.) THEN
3705 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
3706 QTMP2 = LLMI*(2.+BVI)
3707 QTMP3 = EXP(GAMLN(BVI+AFAI+3.)-GI1-QTMP2)
3708 ATMP2 = LLMI*(1.+BVI)
3709 ATMP3 = EXP(GAMLN(BVI+AFAI+2.)-GI1-ATMP2)
3710 VENQI = AVIS*QTMP0+BVIS*BTMP*QTMP3
3712 VENAI = AVIS+BVIS*BTMP*ATMP3
3713 ELSEIF (BEST.GT.1.) THEN
3714 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3715 QTMP2 = LLMI*(1.5+BVI/2.)
3716 QTMP3 = EXP(GAMLN(BVI/2.+AFAI+2.5)-GI1-QTMP2)
3717 ATMP2 = LLMI*(0.5+BVI/2.)
3718 ATMP3 = EXP(GAMLN(BVI/2.+AFAI+1.5)-GI1-ATMP2)
3719 VENQI = AVSG*QTMP0+BVSG*BTMP*QTMP3
3721 VENAI = AVSG+BVSG*BTMP*ATMP3
3724 ELSEIF (ICE_VENT.EQ.0) THEN
3725 IF ((ADAGR-1.).GE.SLIMIT) THEN
3728 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3729 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
3730 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
3731 FTMP0 = EXP(GAMLN(H2Z+ZETA3+AFAI+2.)-GI1-LLMI*(H2Z+ZETA3+ &
3733 FTMP1 = EXP(GAMLN(H4Z+ZETA3+AFAI+2.)-GI1-LLMI*(H4Z+ZETA3+ &
3735 ATMP0 = EXP(GAMLN(H2Z+AFAI+1.)-GI1-LLMI*H2Z)
3736 ATMP1 = EXP(GAMLN(H4Z+AFAI+1.)-GI1-LLMI*H4Z)
3737 VENQI = ZC1*QTMP0/DI0**H2Z+ZC3*QTMP1/DI0**H4Z
3738 VENFI = ZC1*FTMP0/DI0**(H2Z+ZETA3)+ZC3*FTMP1/DI0**(H4Z+ &
3740 VENAI = ZC1*ATMP0/DI0**H2Z+ZC3*ATMP1/DI0**H4Z
3741 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
3744 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
3745 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
3746 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
3747 FTMP0 = EXP(GAMLN(H2Z+ZETA3+AFAI+2.)-GI1-LLMI*(H2Z+ZETA3+ &
3749 FTMP1 = EXP(GAMLN(H4Z+ZETA3+AFAI+2.)-GI1-LLMI*(H4Z+ZETA3+ &
3751 ATMP0 = EXP(GAMLN(H2Z+AFAI+1.)-GI1-LLMI*H2Z)
3752 ATMP1 = EXP(GAMLN(H4Z+AFAI+1.)-GI1-LLMI*H4Z)
3753 VENQI = ZP1*QTMP0/DI0**H2Z+ZP3*QTMP1/DI0**H4Z
3754 VENFI = ZP1*FTMP0/DI0**(H2Z+ZETA3)+ZP3*FTMP1/DI0**(H4Z+ &
3756 VENAI = ZP1*ATMP0/DI0**H2Z+ZP3*ATMP1/DI0**H4Z
3757 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
3758 VENQI = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
3763 IF (ICE_SHAPE.EQ.1.AND.AFAI.LE.20.) THEN
3764 QTMP0 = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
3765 ATMP0 = EXP(GAMLN(AFAI+1.)-GI1-LOG(LAMI))
3766 IF (ICE_VENT.EQ.3) THEN
3767 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3768 QTMP1 = LLMI*(1.5+BVI/2.)
3769 QTMP2 = EXP(GAMLN(BVI/2.+AFAI+2.5)-GI1-QTMP1)
3770 ATMP1 = LLMI*(0.5+BVI/2.)
3771 ATMP2 = EXP(GAMLN(BVI/2.+AFAI+1.5)-GI1-ATMP1)
3772 VENQI0 = AVSG*QTMP0+BVSG*BTMP*QTMP2
3773 VENAI0 = AVSG*ATMP0+BVSG*BTMP*ATMP2
3774 ELSEIF (ICE_VENT.EQ.1.OR.ICE_VENT.EQ.2) THEN
3775 IF (BEST.LE.1.) THEN
3776 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
3777 QTMP2 = LLMI*(2.+BVI)
3778 QTMP3 = EXP(GAMLN(BVI+AFAI+3.)-GI1-QTMP2)
3779 ATMP2 = LLMI*(1.+BVI)
3780 ATMP3 = EXP(GAMLN(BVI+AFAI+2.)-GI1-ATMP2)
3781 VENQI0 = AVIS*QTMP0+BVIS*BTMP*QTMP3
3782 VENAI0 = AVIS*ATMP0+BVIS*BTMP*ATMP3
3783 ELSEIF (BEST.GT.1.) THEN
3784 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
3785 QTMP2 = LLMI*(1.5+BVI/2.)
3786 QTMP3 = EXP(GAMLN(BVI/2.+AFAI+2.5)-GI1-QTMP2)
3787 ATMP2 = LLMI*(0.5+BVI/2.)
3788 ATMP3 = EXP(GAMLN(BVI/2.+AFAI+1.5)-GI1-ATMP2)
3789 VENQI0 = AVSG*QTMP0+BVSG*BTMP*QTMP3
3790 VENAI0 = AVSG*ATMP0+BVSG*BTMP*ATMP3
3792 ELSEIF (ICE_VENT.EQ.0) THEN
3793 VENQI0 = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
3794 VENAI0 = EXP(GAMLN(AFAI+1.)-GI1-LOG(LAMI))
3796 ENDIF ! DI0_CORRECTION
3801 IF (QS1D.GE.QSMALL) THEN
3802 CALL SOLVE_AFAS(TK1D,RHO,QS1D,QC1D,NS1D,VS1D,FS1D,AS1D,AFAS, &
3803 LAMS,MVDS,RHOS,SASPR,AMS,AVS,BVS)
3805 BSTMP = SCN*SQRT(AVS*RHOAJ/MUA)
3806 QTMP1 = LLMS*(1.5+BVS/2.)
3807 QTMP2 = EXP(GAMLN(AFAS+2.)-GAMLN(AFAS+1.)-LOG(LAMS))
3808 QTMP3 = EXP(GAMLN(BVS/2.+AFAS+2.5)-GAMLN(AFAS+1.)-QTMP1)
3809 ATMP1 = LLMS*(0.5+BVS/2.)
3810 ATMP2 = EXP(GAMLN(BVS/2.+AFAS+1.5)-GAMLN(AFAS+1.)-ATMP1)
3811 CAPS = ZP1*SASPR**(ZP2/3.)+ZP3*SASPR**(ZP4/3.)
3812 VENQS = AVSG*QTMP2*CAPS+BVSG*BSTMP*QTMP3*CAPS
3813 VENAS = AVSG*CAPS+BVSG*BSTMP*ATMP2*CAPS
3815 IF (QG1D.GE.QSMALL) THEN
3816 CALL SOLVE_AFAG(TK1D,RHO,QG1D,QC1D,NG1D,VG1D,AG1D,LAMG,AFAG, &
3817 MVDG,RHOG,AMG,AVG,BVG)
3819 BGTMP = SCN*SQRT(AVG*RHOAJ/MUA)
3820 QTMP1 = LLMG*(1.5+BVG/2.)
3821 QTMP2 = EXP(GAMLN(AFAG+2.)-GAMLN(AFAG+1.)-LOG(LAMG))
3822 QTMP3 = EXP(GAMLN(BVG/2.+AFAG+2.5)-GAMLN(AFAG+1.)-QTMP1)
3823 ATMP1 = LLMG*(0.5+BVG/2.)
3824 ATMP2 = EXP(GAMLN(BVG/2.+AFAG+1.5)-GAMLN(AFAG+1.)-ATMP1)
3825 VENQG = AVSG*QTMP2+BVSG*BGTMP*QTMP3
3826 VENAG = AVSG+BVSG*BGTMP*ATMP2
3828 IF (QH1D.GE.QSMALL) THEN
3829 CALL SOLVE_AFAH(TK1D,RHO,QH1D,NH1D,AH1D,LAMH,AFAH,MVDH,AVH,BVH)
3831 BHTMP = SCN*SQRT(AVH*RHOAJ/MUA)
3832 IF (HAIL_VENT.EQ.0) THEN
3833 QTMP1 = LLMH*(1.5+BVH/2.)
3834 QTMP2 = EXP(GAMLN(AFAH+2.)-GAMLN(AFAH+1.)-LOG(LAMH))
3835 QTMP3 = EXP(GAMLN(BVH/2.+AFAH+2.5)-GAMLN(AFAH+1.)-QTMP1)
3836 ATMP1 = LLMH*(0.5+BVH/2.)
3837 ATMP2 = EXP(GAMLN(BVH/2.+AFAH+1.5)-GAMLN(AFAH+1.)-ATMP1)
3838 VENQH = AVRH*QTMP2+BVRH*BHTMP*QTMP3
3839 VENAH = AVRH+BVRH*BHTMP*ATMP2
3840 ELSEIF (HAIL_VENT.EQ.1) THEN
3841 QTMP1 = LLMH*(1.5+BVH/2.)
3842 QTMP2 = EXP(GAMLN(AFAH+2.)-GAMLN(AFAH+1.)-LOG(LAMH))
3843 QTMP3 = EXP(GAMLN(BVH/2.+AFAH+2.5)-GAMLN(AFAH+1.)-QTMP1)
3844 QTMP4 = LLMH*(2.+BVH)
3845 QTMP5 = EXP(GAMLN(BVH+AFAH+3.)-GAMLN(AFAH+1.)-QTMP4)
3846 ATMP1 = LLMH*(0.5+BVH/2.)
3847 ATMP2 = EXP(GAMLN(BVH/2.+AFAH+1.5)-GAMLN(AFAH+1.)-ATMP1)
3848 ATMP3 = LLMH*(1.+BVH)
3849 ATMP4 = EXP(GAMLN(BVH+AFAH+2.)-GAMLN(AFAH+1.)-ATMP3)
3850 VENQH = QTMP2+VENH1*BHTMP*QTMP3+VENH2*BHTMP**2.*QTMP5
3851 VENAH = 1.+VENH1*BHTMP*ATMP2+VENH2*BHTMP**2.*ATMP4
3854 !----------------- WARM RAIN PROCESSES ---------------------------------
3855 IF (QC1D.GE.QSMALL) THEN
3856 IF (SSRW.GT.RSMALL) THEN
3857 QVDvc = SSRW*EXP(AQ1+BQ1*LOG(NC1D)+CQ1*LMVRC)/ABW ! diffusion growth of cloud drops
3858 ELSEIF (SSRW.LT.(-1.*RSMALL)) THEN
3859 QEVcv = MIN(SSRW*EXP(AQ1+BQ1*LOG(NC1D)+CQ1*LMVRC)/ABW,0.) ! diffusion growth of cloud drops
3860 NACcv = -1.*EXP(AN9+BN9*LOG(NC1D)+CN9*LMVRC+DN9*LOG(-SSRW)) ! deactivation of cloud drop into CN
3861 QACcv = NACcv*4.1888E-15 ! deactivation of cloud drop into CN
3862 QACcv = MAX(QACcv,-1.*QC1D*iDT)
3863 NACcv = MAX(NACcv,-1.*NC1D*iDT)
3866 IF (QR1D.GE.QSMALL) THEN
3867 IF (SSRW.GT.RSMALL) THEN
3868 QVDvr = SSRW*NR1D*EXP(AQ2+(BQ2+CQ2*LMVRR)*LMVRR**2.)/ABW ! diffusion growth of raindrops
3869 ELSEIF (SSRW.LT.(-1.*RSMALL)) THEN
3870 QEVrv = SSRW*NR1D*EXP(AQ2+(BQ2+CQ2*LMVRR)*LMVRR**2.)/ABW ! diffusion growth of raindrops
3871 NACrc = SSRW*EXP(AN10+BN10*LOG(NR1D)+CN10*LMVRR)/ABW ! rain drop evaporate into cloud drop
3872 QACrc = NACrc*5.236E-10 ! rain drop evaporate into cloud drop
3873 QEVrv = MIN(QEVrv,0.)
3874 QACrc = MAX(QACrc,-1.*QR1D*iDT)
3875 NACrc = MAX(NACrc,-1.*NR1D*iDT)
3878 IF (SAT_ADJ.EQ.1) THEN
3879 IF ((QVDvc+QVDvr).GE.QSMALL) THEN
3880 VDMAX = (QV1D-QVSW)/(1.+XXLV**2.*QV1D/(CPM*RV*TK1D**2.))*iDT
3881 SUMCND = QVDvc+QVDvr
3882 IF (SUMCND.GT.VDMAX.AND.VDMAX.GE.QSMALL) THEN
3883 RATIO = MIN(1.,VDMAX/(SUMCND+QSMALL))
3889 !-------------- DEPOSITION/SUBLIMATION TERMS FOR QI,QS,QG,QH -----------
3890 IF (TK1D.LT.TK0C) THEN
3891 IF (QI1D.GE.QSMALL) THEN
3892 DNIVD = RHOI0*EXP(-3.*MAX((QV1D-QVSI)-5.E-5,0.)/INHGR)
3893 DNIVD = MIN(MAX(DNIVD,RHOIMIN),RHOIMAX)
3894 IF (ICE_SHAPE.EQ.1.AND.AFAI.LE.20.) THEN
3895 RAT1 = MIN(1.,MAX(0.,ABS(GAMMP(AFAI+1.,DI0*LAMI))))
3897 QVDvi = 2.*PI*NI1D*(RAT2*VENQI+RAT1*VENQI0)*SSRI/ABI
3898 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
3899 FVDvi = 12.*NI1D*(RAT2*VENFI*GVHAB+RAT1*VENQI0)*SSRI/ &
3901 IVDvi = 12.*NI1D*(RAT2*VENQI+RAT1*VENQI0)*SSRI/ABI/DNIVD
3903 IF (AI1D.GE.ASMALL) THEN
3904 AVDvi = 8.*NI1D*(RAT2*VENAI+RAT1*VENAI0)*SSRI/ABI/DNIVD
3907 QVDvi = 2.*PI*NI1D*VENQI*SSRI/ABI
3908 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
3909 FVDvi = 12.*NI1D*GVHAB*VENFI*SSRI/ABI/DNIVD
3910 IVDvi = 12.*NI1D*VENQI*SSRI/ABI/DNIVD
3912 IF (AI1D.GE.ASMALL) THEN
3913 AVDvi = 8.*NI1D*VENAI*SSRI/ABI/DNIVD
3917 IF (QVDvi.LT.0.) THEN
3918 QSBiv = MIN(QVDvi,0.)
3919 VSBiv = MIN(QVDvi/RHOI,0.)
3922 IF (AI1D.GE.ASMALL) THEN
3923 ASBiv = MIN(AVDvi*DNIVD/RHOI,0.)
3926 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
3927 FSBiv = MIN(FVDvi*DNIVD/RHOI,0.)
3928 ISBiv = MIN(IVDvi*DNIVD/RHOI,0.)
3934 IF (QS1D.GE.QSMALL) THEN
3935 DNSVD = RHOS*EXP(-3.*MAX((QV1D-QVSI)-5.E-5,0.)/1.)
3936 DNSVD = MIN(MAX(DNSVD,RHOIMIN),RHOIMAX)
3937 QVDvs = 2.*PI*NS1D*VENQS*SSRI/ABI
3938 IF (ICE_RHOS.EQ.1) THEN
3941 IF (AGG_SHAPE.EQ.1) THEN
3942 FVDvs = QVDvs/DNSVD*SASPR*V2M3
3944 IF (AS1D.GE.ASMALL) THEN
3945 AVDvs = 8.*NS1D*VENAS*SSRI/ABI/DNSVD
3947 IF (QVDvs.LT.0.) THEN
3948 QSBsv = MIN(QVDvs,0.)
3949 VSBsv = MIN(QVDvs/RHOS,0.)
3950 FSBsv = MIN(FVDvs*DNSVD/RHOS,0.)
3954 IF (AS1D.GE.ASMALL) THEN
3955 ASBsv = MIN(AVDvs*DNSVD/RHOS,0.)
3960 IF (QG1D.GE.QSMALL) THEN
3961 DNGVD = RHOG*EXP(-3.*MAX((QV1D-QVSI)-5.E-5,0.))
3962 DNGVD = MIN(MAX(DNGVD,RHOIMIN),RHOG0)
3963 QVDvg = 2.*PI*NG1D*VENQG*SSRI/ABI
3964 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
3967 IF (AG1D.GE.ASMALL) THEN
3968 AVDvg = 8.*NG1D*VENAG*SSRI/ABI/DNGVD
3970 IF (QVDvg.LT.0.) THEN
3971 QSBgv = MIN(QVDvg,0.)
3973 VSBgv = MIN(QVDvg/RHOG,0.)
3975 IF (AG1D.GE.ASMALL) THEN
3976 ASBgv = MIN(AVDvg*DNGVD/RHOG,0.)
3981 IF (QH1D.GE.QSMALL) THEN
3982 QVDvh = 2.*PI*NH1D*VENQH*SSRI/ABI
3983 IF (AH1D.GE.ASMALL) THEN
3984 AVDvh = 8.*NH1D*VENAH*SSRI/ABI/RHOH
3986 IF (QVDvh.LT.0.) THEN
3987 QSBhv = MIN(QVDvh,0.)
3989 IF (AH1D.GE.ASMALL) THEN
3990 ASBhv = MIN(AVDvh,0.)
3995 IF (SAT_ADJ.EQ.1) THEN
3996 IF ((QVDvi+QVDvs+QVDvg+QVDvh).GE.QSMALL) THEN
3997 VDMAX = (QV1D-QVSI)/(1.+XXLS**2.*QV1D/(CPM*RV*TK1D** &
3999 SUMDEP = QVDvi+QVDvs+QVDvg+QVDvh
4000 IF (SUMDEP.GT.VDMAX.AND.VDMAX.GE.QSMALL) THEN
4001 RATIO = MIN(1.,VDMAX/(SUMDEP+QSMALL))
4019 IF ((QSBiv+QSBsv+QSBgv+QSBhv).LT.0.) THEN
4020 SBMAX = (QV1D-QVSI)/(1.+XXLS**2.*QV1D/(CPM*RV*TK1D** &
4022 SUMSUB = QSBiv+QSBsv+QSBgv+QSBhv
4023 IF (SBMAX.LT.0..AND.SUMSUB.LT.SBMAX*0.9999) THEN
4024 QSBiv = QSBiv*MIN(1.,0.9999*SBMAX/SUMSUB)
4025 QSBsv = QSBsv*MIN(1.,0.9999*SBMAX/SUMSUB)
4026 QSBgv = QSBgv*MIN(1.,0.9999*SBMAX/SUMSUB)
4027 QSBhv = QSBhv*MIN(1.,0.9999*SBMAX/SUMSUB)
4028 VSBiv = VSBiv*MIN(1.,0.9999*SBMAX/SUMSUB)
4029 VSBsv = VSBsv*MIN(1.,0.9999*SBMAX/SUMSUB)
4030 VSBgv = VSBgv*MIN(1.,0.9999*SBMAX/SUMSUB)
4031 FSBiv = FSBiv*MIN(1.,0.9999*SBMAX/SUMSUB)
4032 FSBsv = FSBsv*MIN(1.,0.9999*SBMAX/SUMSUB)
4033 ISBiv = ISBiv*MIN(1.,0.9999*SBMAX/SUMSUB)
4034 ASBiv = ASBiv*MIN(1.,0.9999*SBMAX/SUMSUB)
4035 ASBsv = ASBsv*MIN(1.,0.9999*SBMAX/SUMSUB)
4036 ASBgv = ASBgv*MIN(1.,0.9999*SBMAX/SUMSUB)
4037 ASBhv = ASBhv*MIN(1.,0.9999*SBMAX/SUMSUB)
4042 IF (QS1D.GE.QSMALL.AND.SSRW.LT.-1.*RSMALL) THEN
4043 QEVsv = 2.*PI*NS1D*VENQS*SSRW/ABW
4044 QEVsv = MAX(MIN(QEVsv,0.),-1.*QS1D*iDT)
4045 IF (ICE_RHOS.EQ.1) THEN
4046 VEVsv = MAX(MIN(QEVsv/RHOS,0.),-1.*VS1D*iDT)
4048 IF (AGG_SHAPE.EQ.1) THEN
4049 FEVsv = MAX(QEVsv/RHOS*SASPR*V2M3,-1.*FS1D*iDT)
4051 IF (AS1D.GE.ASMALL) THEN
4052 AEVsv = 8.*NS1D*VENAS*SSRW/ABW/RHOS
4053 AEVsv = MAX(MIN(AEVsv,0.),-1.*AS1D*iDT)
4056 IF (QG1D.GE.QSMALL.AND.SSRW.LT.-1.*RSMALL) THEN
4057 QEVgv = 2.*PI*NG1D*VENQG*SSRW/ABW
4058 QEVgv = MAX(MIN(QEVgv,0.),-1.*QG1D*iDT)
4059 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
4060 VEVgv = MAX(MIN(QEVgv/RHOG,0.),-1.*VG1D*iDT)
4062 IF (AG1D.GE.ASMALL) THEN
4063 AEVgv = 8.*NG1D*VENAG*SSRW/ABW/RHOG
4064 AEVgv = MAX(MIN(AEVgv,0.),-1.*AG1D*iDT)
4067 IF (QH1D.GE.QSMALL.AND.SSRW.LT.-1.*RSMALL) THEN
4068 QEVhv = 2.*PI*NH1D*VENQH*SSRW/ABW
4069 QEVhv = MAX(MIN(QEVhv,0.),-1.*QH1D*iDT)
4070 IF (AH1D.GE.ASMALL) THEN
4071 AEVhv = 8.*NH1D*VENAH*SSRW/ABW/RHOH
4072 AEVhv = MAX(MIN(AEVhv,0.),-1.*AH1D*iDT)
4075 IF ((QEVcv+QEVrv+QEVsv+QEVgv+QEVhv).LT.0.) THEN
4076 EVMAX = (QV1D-QVSW)/(1.+XXLV**2.*QV1D/(CPM*RV*TK1D**2.))* &
4078 SUMEVP = QEVcv+QEVrv+QEVsv+QEVgv+QEVhv
4079 IF (EVMAX.LT.0..AND.SUMEVP.LT.EVMAX*0.9999) THEN
4080 QEVcv = QEVcv*MIN(1.,0.9999*EVMAX/SUMEVP)
4081 QEVrv = QEVrv*MIN(1.,0.9999*EVMAX/SUMEVP)
4082 QEVsv = QEVsv*MIN(1.,0.9999*EVMAX/SUMEVP)
4083 QEVgv = QEVgv*MIN(1.,0.9999*EVMAX/SUMEVP)
4084 QEVhv = QEVhv*MIN(1.,0.9999*EVMAX/SUMEVP)
4085 VEVsv = VEVsv*MIN(1.,0.9999*EVMAX/SUMEVP)
4086 VEVgv = VEVgv*MIN(1.,0.9999*EVMAX/SUMEVP)
4087 FEVsv = FEVsv*MIN(1.,0.9999*EVMAX/SUMEVP)
4088 AEVsv = AEVsv*MIN(1.,0.9999*EVMAX/SUMEVP)
4089 AEVgv = AEVgv*MIN(1.,0.9999*EVMAX/SUMEVP)
4090 AEVhv = AEVhv*MIN(1.,0.9999*EVMAX/SUMEVP)
4093 ENDIF ! TEMPERATURE LOOP
4095 QVWTEND = -QACcv-QVDvc-QVDvr-QEVcv-QEVrv-QEVsv-QEVgv-QEVhv
4096 QVITEND = -QVDvi-QVDvs-QVDvg-QVDvh-QSBiv-QSBsv-QSBgv-QSBhv
4097 QVTEND = QVWTEND+QVITEND
4098 QCTEND = QACcv-QACrc+QVDvc+QEVcv
4099 QRTEND = QACrc+QVDvr+QEVrv
4100 QITEND = QVDvi+QSBiv
4101 QSTEND = QVDvs+QEVsv+QSBsv
4102 QGTEND = QVDvg+QEVgv+QSBgv
4103 QHTEND = QVDvh+QEVhv+QSBhv
4105 DTS = MIN(TORR*MAX(QV1D,1.E-7)/MAX(ABS(QVTEND),QSMALL), &! limited by d(QV)
4106 TORR*MAX(QC1D,QLIMIT)/MAX(ABS(QCTEND),QSMALL), &! limited by d(QC)
4107 TORR*MAX(QR1D,QLIMIT)/MAX(ABS(QRTEND),QSMALL), &! limited by d(QR)
4108 TORR*MAX(QI1D,QLIMIT)/MAX(ABS(QITEND),QSMALL), &! limited by d(QI)
4109 TORR*MAX(QS1D,QLIMIT)/MAX(ABS(QSTEND),QSMALL), &! limited by d(QS)
4110 TORR*MAX(QG1D,QLIMIT)/MAX(ABS(QGTEND),QSMALL), &! limited by d(QG)
4111 TORR*MAX(QH1D,QLIMIT)/MAX(ABS(QHTEND),QSMALL), &! limited by d(QH)
4113 DTS = MIN(DT-SDTS,MAX(DTMIN,DTS))
4115 !--- CALCULATE TIME TO REACH RHW=100%, RHI=100%
4116 !--- NEGATIVE VALUE MEANS TIME HAS PAST AND WOULD NEVER REACH 100% IN THE FUTURE
4118 DTSI = -(QVWTEND*ELCLD+QVITEND*ELDLD) ! rate of saturation vapor over ice change
4119 DTSW = -(QVWTEND*ELCLC+QVITEND*ELCLD) ! rate of saturation vapor over liquid change
4120 IF (ABS(DTSI).LT.RLIMIT) THEN
4121 DTSI = 1.E5 ! AN ARBITARY VALUE
4123 DTSI = SSRI*QV1D/((1.+SSRI)*DTSI) ! time to reach saturation over ice
4125 IF (ABS(DTSW).LT.RLIMIT) THEN
4126 DTSW = 1.E5 ! AN ARBITARY VALUE
4128 DTSW = SSRW*QV1D/((1.+SSRW)*DTSW) ! time to reach saturation over liquid
4131 IF (TK1D.GT.TK0C) THEN
4132 IF(DTSW.GT.0.) DTS = MAX(MIN(DTS,DTSW),DTMIN)
4134 IF(DTSI.GT.0.) DTS = MAX(MIN(DTS,DTSI),DTMIN)
4135 IF(DTSW.GT.0.) DTS = MAX(MIN(DTS,DTSW),DTMIN)
4138 QVSOUR = QV1D+(-QACcv-QEVcv-QEVrv-QEVsv-QEVgv-QEVhv-QSBiv-QSBsv- &
4140 QVSINK = (QVDvc+QVDvr+QVDvi+QVDvs+QVDvg+QVDvh)*DTS
4141 IF (QVSINK.GT.QVSOUR.AND.QVSOUR.GE.QSMALL) THEN
4142 RATIO = MIN(1.,QVSOUR/(QVSINK+QSMALL))
4143 QVDvc = QVDvc*RATIO; QVDvr = QVDvr*RATIO
4144 QVDvi = QVDvi*RATIO; QVDvs = QVDvs*RATIO
4145 QVDvg = QVDvg*RATIO; QVDvh = QVDvh*RATIO
4147 QCSOUR = QC1D+(QVDvc-QACrc)*DTS
4148 QCSINK = (-QACcv-QEVcv)*DTS
4149 IF (QCSINK.GT.QCSOUR.AND.QCSOUR.GE.QSMALL) THEN
4150 RATIO = MIN(1.,QCSOUR/(QCSINK+QSMALL))
4151 QACcv = QACcv*RATIO; QEVcv = QEVcv*RATIO
4153 QRSOUR = QR1D+QVDvr*DTS
4154 QRSINK = (-QACrc-QEVrv)*DTS
4155 IF (QRSINK.GT.QRSOUR.AND.QRSOUR.GE.QSMALL) THEN
4156 RATIO = MIN(1.,QRSOUR/(QRSINK+QSMALL))
4157 QACrc = QACrc*RATIO; QEVrv = QEVrv*RATIO
4159 QISOUR = QI1D+QVDvi*DTS
4160 QISINK = (-QSBiv)*DTS
4161 IF (QISINK.GT.QISOUR.AND.QISOUR.GE.QSMALL) THEN
4162 RATIO = MIN(1.,QISOUR/(QISINK+QSMALL))
4165 QSSOUR = QS1D+QVDvs*DTS
4166 QSSINK = (-QEVsv-QSBsv)*DTS
4167 IF (QSSINK.GT.QSSOUR.AND.QSSOUR.GE.QSMALL) THEN
4168 RATIO = MIN(1.,QSSOUR/(QSSINK+QSMALL))
4169 QSBsv = QSBsv*RATIO; QEVsv = QEVsv*RATIO
4171 QGSOUR = QG1D+QVDvg*DTS
4172 QGSINK = (-QSBgv-QEVgv)*DTS
4173 IF (QGSINK.GT.QGSOUR.AND.QGSOUR.GE.QSMALL) THEN
4174 RATIO = MIN(1.,QGSOUR/(QGSINK+QSMALL))
4175 QSBgv = QSBgv*RATIO; QEVgv = QEVgv*RATIO
4177 QHSOUR = QH1D+QVDvh*DTS
4178 QHSINK = (-QSBhv-QEVhv)*DTS
4179 IF (QHSINK.GT.QHSOUR.AND.QHSOUR.GE.QSMALL) THEN
4180 RATIO = MIN(1.,QHSOUR/(QHSINK+QSMALL))
4181 QSBhv = QSBhv*RATIO; QEVhv = QEVhv*RATIO
4183 IF (QI1D.GE.QSMALL) THEN
4184 NSBiv = MIN(QSBiv*NI1D/QI1D,0.)
4186 IF (QS1D.GE.QSMALL) THEN
4187 NSBsv = MIN(QSBsv*NS1D/QS1D,0.)
4189 IF (QG1D.GE.QSMALL) THEN
4190 NSBgv = MIN(QSBgv*NG1D/QG1D,0.)
4192 IF (QH1D.GE.QSMALL) THEN
4193 NSBhv = MIN(QSBhv*NH1D/QH1D,0.)
4195 NCSOUR = NC1D+(-NACrc)*DTS
4196 NCSINK = (-NACcv)*DTS
4197 IF (NCSINK.GT.NCSOUR.AND.NCSOUR.GE.NSMALL) THEN
4198 RATIO = MIN(1.,NCSOUR/(NCSINK+NSMALL))
4202 NISINK = (-NSBiv)*DTS
4203 IF (NISINK.GT.NISOUR.AND.NISOUR.GE.NSMALL) THEN
4204 RATIO = MIN(1.,NISOUR/(NISINK+NSMALL))
4208 NSSINK = (-NSBsv)*DTS
4209 IF (NSSINK.GT.NSSOUR.AND.NSSOUR.GE.NSMALL) THEN
4210 RATIO = MIN(1.,NSSOUR/(NSSINK+NSMALL))
4213 VISOUR = VI1D+VVDvi*DTS
4214 VISINK = (-VSBiv)*DTS
4215 IF (VISINK.GT.VISOUR.AND.VISOUR.GE.ISMALL) THEN
4216 RATIO = MIN(1.,VISOUR/(VISINK+ISMALL))
4219 VSSOUR = VS1D+VVDvs*DTS
4220 VSSINK = (-VEVsv-VSBsv)*DTS
4221 IF (VSSINK.GT.VSSOUR.AND.VSSOUR.GE.ISMALL) THEN
4222 RATIO = MIN(1.,VSSOUR/(VSSINK+ISMALL))
4223 VSBsv = VSBsv*RATIO; VEVsv = VEVsv*RATIO
4225 VGSOUR = VG1D+VVDvg*DTS
4226 VGSINK = (-VSBgv-VEVgv)*DTS
4227 IF (VGSINK.GT.VGSOUR.AND.VGSOUR.GE.ISMALL) THEN
4228 RATIO = MIN(1.,VGSOUR/(VGSINK+ISMALL))
4229 VSBgv = VSBgv*RATIO; VEVgv = VEVgv*RATIO
4231 FISOUR = FI1D+FVDvi*DTS
4232 FISINK = (-FSBiv)*DTS
4233 IF (FISINK.GT.FISOUR.AND.FISOUR.GE.ISMALL) THEN
4234 RATIO = MIN(1.,FISOUR/(FISINK+ISMALL))
4237 FSSOUR = FS1D+FVDvs*DTS
4238 FSSINK = (-FEVsv-FSBsv)*DTS
4239 IF (FSSINK.GT.FSSOUR.AND.FSSOUR.GE.QSMALL) THEN
4240 RATIO = MIN(1.,FSSOUR/(FSSINK+QSMALL))
4241 FSBsv = FSBsv*RATIO; FEVsv = FEVsv*RATIO
4243 AISOUR = AI1D+AVDvi*DTS
4244 AISINK = (-ASBiv)*DTS
4245 IF (AISINK.GT.AISOUR.AND.AISOUR.GE.ASMALL) THEN
4246 RATIO = MIN(1.,AISOUR/(AISINK+ASMALL))
4249 ASSOUR = AS1D+AVDvs*DTS
4250 ASSINK = (-ASBsv-AEVsv)*DTS
4251 IF (ASSINK.GT.ASSOUR.AND.ASSOUR.GE.ASMALL) THEN
4252 RATIO = MIN(1.,ASSOUR/(ASSINK+ASMALL))
4253 ASBsv = ASBsv*RATIO; AEVsv = AEVsv*RATIO
4255 AGSOUR = AG1D+AVDvg*DTS
4256 AGSINK = (-ASBgv-AEVgv)*DTS
4257 IF (AGSINK.GT.AGSOUR.AND.AGSOUR.GE.ASMALL) THEN
4258 RATIO = MIN(1.,AGSOUR/(AGSINK+ASMALL))
4259 ASBgv = ASBgv*RATIO; AEVgv = AEVgv*RATIO
4261 AHSOUR = AH1D+AVDvh*DTS
4262 AHSINK = (-ASBhv-AEVhv)*DTS
4263 IF (AHSINK.GT.AHSOUR.AND.AHSOUR.GE.ASMALL) THEN
4264 RATIO = MIN(1.,AHSOUR/(AHSINK+ASMALL))
4265 ASBhv = ASBhv*RATIO; AEVhv = AEVhv*RATIO
4267 IISOUR = I3M1D+IVDvi*DTS
4268 IISINK = (-ISBiv)*DTS
4269 IF (IISINK.GT.IISOUR.AND.IISOUR.GE.ISMALL) THEN
4270 RATIO = MIN(1.,IISOUR/(IISINK+ISMALL))
4273 !----------------- update values of variables -------------------------
4274 QV1D = MAX(0.,QV1D+(-QACcv-QVDvc-QVDvr-QEVcv-QEVrv-QEVsv-QEVgv- &
4275 QEVhv-QVDvi-QVDvs-QVDvg-QVDvh-QSBiv-QSBsv-QSBgv-QSBhv)*DTS)
4276 QC1D = MAX(0.,QC1D+(QACcv-QACrc+QVDvc+QEVcv)*DTS)
4277 QR1D = MAX(0.,QR1D+(QACrc+QVDvr+QEVrv)*DTS)
4278 QI1D = MAX(0.,QI1D+(QVDvi+QSBiv)*DTS)
4279 QS1D = MAX(0.,QS1D+(QVDvs+QSBsv+QEVsv)*DTS)
4280 QG1D = MAX(0.,QG1D+(QVDvg+QSBgv+QEVgv)*DTS)
4281 QH1D = MAX(0.,QH1D+(QVDvh+QSBhv+QEVhv)*DTS)
4282 NC1D = MAX(0.,NC1D+(NACcv-NACrc)*DTS)
4283 NR1D = MAX(0.,NR1D+(NACrc)*DTS)
4284 NI1D = MAX(0.,NI1D+(NSBiv)*DTS)
4285 NS1D = MAX(0.,NS1D+(NSBsv)*DTS)
4286 NG1D = MAX(0.,NG1D+(NSBgv)*DTS)
4287 NH1D = MAX(0.,NH1D+(NSBhv)*DTS)
4288 IF (ICE_RHOI.EQ.0.OR.ICE_RHOI.EQ.2) THEN
4290 ELSEIF (ICE_RHOI.EQ.1) THEN
4291 VI1D = MAX(0.,VI1D+(VVDvi+VSBiv)*DTS)
4293 IF (ICE_RHOS.EQ.0.OR.ICE_RHOS.EQ.2) THEN
4295 ELSEIF (ICE_RHOS.EQ.1) THEN
4296 VS1D = MAX(0.,VS1D+(VVDvs+VSBsv+VEVsv)*DTS)
4298 IF (ICE_RHOG.EQ.0) THEN
4300 ELSEIF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
4301 VG1D = MAX(0.,VG1D+(VVDvg+VSBgv+VEVgv)*DTS)
4303 FI1D = MAX(0.,FI1D+(FVDvi+FSBiv)*DTS)
4304 IF (AGG_SHAPE.EQ.0) THEN
4306 ELSEIF (AGG_SHAPE.EQ.1) THEN
4307 FS1D = MAX(0.,FS1D+(FVDvs+FSBsv+FEVsv)*DTS)
4309 I3M1D = MAX(0.,I3M1D+(IVDvi+ISBiv)*DTS)
4310 IF (AFAI_3M.EQ.0.OR.AFAI_3M.EQ.2) THEN
4312 ELSEIF (AFAI_3M.EQ.1) THEN
4313 AI1D = MAX(0.,AI1D+(AVDvi+ASBiv)*DTS)
4315 IF (AFAS_3M.EQ.0.OR.AFAS_3M.EQ.2) THEN
4317 ELSEIF (AFAS_3M.EQ.1) THEN
4318 AS1D = MAX(0.,AS1D+(AVDvs+ASBsv+AEVsv)*DTS)
4320 IF (AFAG_3M.EQ.0.OR.AFAG_3M.EQ.2) THEN
4322 ELSEIF (AFAG_3M.EQ.1) THEN
4323 AG1D = MAX(0.,AG1D+(AVDvg+ASBgv+AEVgv)*DTS)
4325 IF (AFAH_3M.EQ.0.OR.AFAH_3M.EQ.2) THEN
4327 ELSEIF (AFAH_3M.EQ.1) THEN
4328 AH1D = MAX(0.,AH1D+(AVDvh+ASBhv+AEVhv)*DTS)
4330 XDNC = XDNC+NACcv*DTS
4331 XDNR = XDNR+NACrc*DTS
4333 TK1D = TK1D+((QACcv+QACrc+QVDvc+QVDvr+QEVcv+QEVrv+QEVsv+QEVgv+ &
4334 QEVhv)*XXLV+(QVDvi+QVDvs+QVDvg+QVDvh+QSBiv+QSBsv+QSBgv+ &
4335 QSBhv)*XXLS)/CPM*DTS
4337 IF (QC1D.GE.QSMALL.AND.NC1D.GE.NSMALL) THEN
4338 MVDC = (QC1D*iAMW/NC1D)**THRD
4339 IF (MVDC.GT.DCR) THEN
4342 QC1D = 0.; NC1D = 0.
4345 IF (QR1D.GE.QSMALL.AND.NR1D.GE.NSMALL) THEN
4346 MVDR = (QR1D*iAMW/NR1D)**THRD
4347 IF (MVDR.LT.DCR) THEN
4350 QR1D = 0.; NR1D = 0.
4353 IF (QH1D.GE.QSMALL.AND.NH1D.GE.NSMALL) THEN
4354 MVDH = (QH1D*iAMH/NH1D)**THRD
4355 IF (MVDH.LT.DHMIN) THEN
4358 VG1D = VG1D+QH1D/RHOG0
4359 QH1D = 0.; NH1D = 0.
4360 IF (AH1D.GE.ASMALL.AND.AFAG_3M.EQ.1) THEN
4367 END SUBROUTINE SMALL_DT
4368 !======================================================================
4370 !======================================================================
4371 SUBROUTINE LARGE_DT(DT,TK1D,QV1D,P1D,RHO,QC1D,QR1D,QI1D,QS1D, &
4372 QG1D,QH1D,NC1D,NR1D,NI1D,NS1D,NG1D,NH1D,VI1D,VS1D, &
4373 VG1D,FI1D,FS1D,AI1D,AS1D,AG1D,AH1D,I3M1D,SASPR,GQCTR)
4374 !=======================================================================
4376 INTEGER :: I,WBIN,CBIN,PBIN,TBIN,DBIN
4377 REAL :: TK1D,QV1D,P1D,TC1D,DT,GQCTR,QI1D,AI1D,AS1D,AG1D,AH1D, &
4378 I3M1D,QNIN,VI1D,VS1D,VG1D,FI1D,FS1D,AFAC,AFAR,AFAI,AFAS, &
4379 AFAG,AFAH,ADAGR,QC1D,QR1D,QS1D,QG1D,QH1D,NC1D,NR1D,NI1D, &
4380 NS1D,NG1D,NH1D,RHOI,RHOS,RHOG,RHOIS,iRHOI,iRHOS,iRHOG, &
4381 ZETA,ZETA2,ZETA3,iAMI,iAMG,DI0Z1,DI0Z2,DI0Z3,DI0Z4,IPG, &
4382 IPH,IPF,SASPR,DNRI,DNIRM,DNIAG,DNSAG,DNSAC,DNGAC,DNSRM, &
4383 DNGRM,AMI,BMI,AMG,AMS,RHO,iRHO,AVI,BVI,AVS,BVS,AVG,BVG, &
4384 AVH,BVH,CAPS,SASR1,SASR2,SASR3,SASR4,SASP1,SASP2,SASP3
4385 REAL :: QHOci,QHOrg,QNMci,QNMrg,QNCci,QFZci,QFZrg,QMLir,QMLic, &
4386 QMLsr,QMLgr,QMLhr,QIMii,QIMcsi,QIMrsi,QIMcgi,QIMrgi, &
4387 QBKrc,QINig,QINsg,QCNcr,QCNis,QCNgh,QRMci,QRMcs,QRMcg, &
4388 QRMch,QRMri,QRMrs,QRMrg,QRMrh,QCLcr,QCLir,QCLis,QCLig, &
4389 QCLih,QCLsr,QCLsg,QCLsh,QCLgr,QCLirg,QCLsrg,QCLgrg,QHwsh,&
4391 REAL :: NHOci,NHOrg,NNMci,NNMrg,NNCci,NFZci,NFZrg,NMLir,NMLic, &
4392 NMLsr,NMLgr,NMLhr,NIMii,NIMcsi,NIMrsi,NIMcgi,NIMrgi, &
4393 NBKrc,NBKrr,NINig,NINsg,NCNcr,NiCNis,NgCNgh,NhCNgh,NRMci,&
4394 NRMcs,NRMcg,NRMch,NRMri,NRMrs,NRMrg,NRMrh,NCLcc,NCLcr, &
4395 NCLrr,NCLir,NCLis,NCLig,NCLih,NCLsr,NCLss,NCLsg,NCLsh, &
4396 NCLgr,NCLirg,NCLsrg,NCLgrg,NHwsh,NsCNis
4397 REAL :: VIMii,VCLis,ViCLis,VsCLis,VCLig,ViCLig,VgCLig,VCLih, &
4398 ViCNis,VsCNis,ViINig,VgINig,VFZci,VFZrg,VIMcsi,VMLir, &
4399 VMLic,VRMci,VCLir,VHOci,VHOrg,VNMci,VNMrg,VNCci,VIMcgi, &
4400 VIMrsi,VIMrgi,VCLss,VCLsg,VsCLsg,VgCLsg,VCLsh,VsINsg, &
4401 VgINsg,VMLsr,VRMcs,VCLsr,VMLgr,VRMcg,VCNgh,VCLgr,VCLirg, &
4402 VCLsrg,VCLgrg,FHOci,FNMci,FNCci,FRMci,FMLir,FMLic,FCLir, &
4403 FiCLis,FCLig,FIMcsi,FCLih,FiCNis,FINig,FFZci,FIMii, &
4404 FIMcgi,FIMrsi,FIMrgi,FsCNis,FsCLis,FCLsg,FCLsh,FINsg, &
4405 FMLsr,FRMcs,FCLsr,FCLss
4406 REAL :: IHOci,INMci,INCci,IRMci,IMLir,IMLic,ICLir,ICLis,ICLig, &
4407 IIMcsi,ICLih,ICNis,IINig,IFZci,IIMii,IIMcgi,IIMrsi, &
4408 IIMrgi,AHOci,ANMci,ANCci,ARMci,AMLir,AMLic,ACLir,AiCLis, &
4409 AiCLig,AIMcsi,AiCLih,AiCNis,AsCNis,AiINig,AgINig,AFZci, &
4410 AIMii,AIMcgi,AIMrsi,AIMrgi,AMLsr,AsCLis,AsCLsg,AsCLsh, &
4411 ARMcs,ACLsr,AgCLig,AsINsg,AgINsg,AMLgr,ARMcg,AgCNgh, &
4412 AhCNgh,AgCLsg,ACLgr,ACLirg,ACLsrg,ACLgrg,AHOrg,ANMrg, &
4413 AFZrg,AMLhr,ACLss,AhCLih,AhCLsh,ARMch,ARMrg,ARMrh,AHdrm, &
4415 REAL :: QCSOUR,QCSINK,QRSOUR,QRSINK,QISOUR,QISINK,QSSOUR,QSSINK, &
4416 QGSOUR,QGSINK,QHSOUR,QHSINK,NCSOUR,NCSINK,NRSOUR,NRSINK, &
4417 NISOUR,NISINK,NSSOUR,NSSINK,NGSOUR,NGSINK,NHSOUR,NHSINK, &
4418 FISOUR,FISINK,FSSOUR,FSSINK,VISOUR,VISINK,VSSOUR,VSSINK, &
4419 VGSOUR,VGSINK,AISOUR,AISINK,ASSOUR,ASSINK,AGSOUR,AGSINK, &
4420 AHSOUR,AHSINK,IISOUR,IISINK
4421 REAL :: RHOAJ,CPM,SSRI,XXLS,XXLF,XXLV,QVSI,ESI,ABI,iDT,SSRW,KAP, &
4422 DV,MUA,SCN,ACTW,ESW,SFCTNW,SFCTNV,EPA,QVSW,TQCI,TQRSG,FF,&
4423 RFZ,ICED,VOLMC,IJHOF,AREAC,RGIMF,GGIMF,ARIMF0,ARIMF, &
4424 COSM2,GEOF2,IJIMF0,IJIMF,GGCNT,NGCNT0,NGCNT1,NGCNT,TCC, &
4425 CNTGG0,CNTGG,PSIA,KDIFF,KAPA,CNTKN,CNTFT0,CNTFT1,CNTF1, &
4426 CNTF2,CNTFT,IJCNT1,IJCNT2,IJCNT3,DC1,DC2,DC3,INR0,FANGLE,&
4427 FACTE,DACTE,RATIO,WNRE,CNRE,PNRE,MRATO,MVRC,MVRR,MVDC, &
4428 MVDR,MVDI,MVDS,MVDG,MVDH,DSMM,LMVRC,LMVRR,TMP1,GUC,GUR, &
4429 RMcsq,RMrsq,RMcgq,RMrgq,RMchq,RMrhq,RMcsa,RMrsa,RMcga, &
4430 RMrga,RMcha,RMrha,VTQ0,VTQC,VTQR,VTQI,VTQS,VTQG,VTQH, &
4431 VTN0,VTNC,VTNR,VTNI,VTNS,VTNG,VTNH,VTAX,VTAC,VTAR,VTAI, &
4432 VTAS,VTAG,VTAH,VTV0,VTVI,VTVS,VTVG,VTF0,VTFI,VTI3M,VTQIC,&
4433 VTQSC,VTQGC,VTQHC,VTQRI,VTQRS,VTQRG,VTQRH,VTQIS,VTQIG, &
4434 VTQIH,VTQSG,VTQSH,VTNIC,VTNSC,VTNGC,VTNHC,VTNRI,VTNRS, &
4435 VTNRG,VTNRH,VTNIS,VTNIG,VTNIH,VTNSG,VTNSH,VTARI,VTARS, &
4436 VTARG,VTARH,VTAIC,VTASC,VTAGC,VTAHC,VTAIS,VTAIG,VTAIH, &
4437 VTASG,VTASH,VTVRI,VTVIC,VTVSC,VTVIS,VTVIG,VTVIH,VTVSG, &
4438 VTFRI,VTFIC,VTFIS,VTFIG,VTFIH,EIS,EIG,EIH,ESG,ESH,EII, &
4439 ESS,ECI,ECS,ECG,ECH,ERI,ERS,ERG,ERH,EII1,EII2,EIS1,EIS2, &
4440 ESS1,ESS2,SMLTQ,GMLTQ,HMLTQ,SMLTA,GMLTA,HMLTA,VENQS, &
4441 VENQG,VENQH,VENAS,VENAG,VENAH,STOKE,DSLL,NGTAL,MVDX,ABW, &
4442 FSQC,FSNC,FSQR,FSNR,FSQI,FSNI,FSQS,FSNS,FSQG,FSNG,FSQH, &
4443 FSNH,FSAC,FSAR,FSAI,FSAS,FSAG,FSAH,FSVI,FSVS,FSVG,FSFI
4444 REAL :: DMWDT,DMIDT,HIdqv,HSdqv,HGdqv,HHdqv,HCwqv,HRwqv,HSwqv, &
4445 HGwqv,HHwqv,HHdcd,HHdrm,HHdcl,HHdtt,HSwcd,HGwcd,HHwcd, &
4446 HSwrm,HGwrm,HHwrm,VDMAX,SBMAX,EVMAX,SUMDEP,SUMSUB,SUMEVP,&
4447 SUMCND,MLMAX,ESW0,ESI0,QVSW0,QVSI0,XXLF0,MLWM,MWT,MLWC, &
4448 DH9,MCORE,ICOR1,DIT,BEST,VENQI,QTMP0,QTMP1,QTMP2,QTMP3, &
4449 QTMP4,QTMP5,QTMP6,QTMP7,QTMP8,QTMP9,ATMP1,ATMP2,ATMP3, &
4450 ATMP4,NCLS2,BTMP,BSTMP,BGTMP,BHTMP,H2Z,H4Z,QRMC1,NRMC1, &
4451 FRMC1,IRMC1,ARMC1,QRMR1,NRMR1,ARMR1,QFZC1,NFZC1,QFZR1, &
4452 NFZR1,AFZR1,QCLI1,NCLI1,QCNI1,NCNI1,ACNI1,FCNI1,QCLG1, &
4453 NCLG1,ACLG1,ACLI1,FCLI1,QCLS1,NCLS1,ACLS1,LIM1,LIM2,LIMA,&
4454 LIMB,LIMC,LIMD,LIME,LIMF,DICC,DICA,DIAC,DIAA,DIC0,DIA0, &
4455 DIF0,DSS0,DSL0,DIC2,DIA2,DILSV,DSLSV,DGLSV,DILSF,DSLSF, &
4456 SMLR,GMLR,SMLF,GMLF,HMLF,AVWSG,BVWSG,CAPWS,WSAPR,RHOWS, &
4457 RHOWG,VENWS,VENWG,SSRW0,SSRI0,LLMI,LLMS,LLMG,LLMH,KDX, &
4458 RHOIW,RHOSW,RHOGW,RHOIG,RHOIH,RHOSG,RHOSH,RHOHW,KINV, &
4459 BEST0,C1X2,VTB1,VTA1,LIM3,LIM4,LIM5,LIM6,LIM7,LIM8
4460 REAL :: LAMC,LAMR,LAMS,LAMG,LAMH,LAMI,GC2,GC3,GC4,GC5,GC6,GC7, &
4461 GR2,GR3,GR4,GR5,GR6,GR7,GI1,GI2,GI2G1,GI2G2,GI2H1,GI3, &
4462 GI3H1,GIF1,GIF2,GIG1,GIG2,GIH1,GIH2,GIM1,GIM2,GI4,GI5, &
4463 GIM2H1,GI2H3,GI2HG1,GIH2G1,GIF3,GI2G3,GI3G1,GIZM2H1,GIG3,&
4464 GIM2G1,GIZM2G1,GIM3,GIMF1,GIZMF1,GIMG1,GIZMG1,GIMH1, &
4465 GIZMH1,GIZM1,GIZ1,GIZ2G1,GIZF1,GIZG1,GIZH1,GIH3,GS2,GS3, &
4466 GS4,GS5,GSM1,GSM2,GSM3,GG2,GG3,GG4,GG5,GGM1,GGM2,GGM3, &
4467 GH2,GH3,GH4,GH5,Z32G,Z32H,Z3BMI
4468 !-----------------------See CL04 Tables--------------------------------------
4469 REAL, PARAMETER :: AVTC = 8.8462E+02, BVTC = 9.7593E+07
4470 REAL, PARAMETER :: CVTC = -3.4249E+11, AVTR = 2.1454E+00
4471 REAL, PARAMETER :: BVTR = -2.2812E-04, CVTR = 2.9676E-09
4472 REAL, PARAMETER :: CQC1 = 2.0901E+01, CQC2 = 9.9111E-01
4473 REAL, PARAMETER :: CQC3 = 4.4182E+00, CNC1 = 1.8276E+01
4474 REAL, PARAMETER :: CNC2 = 1.0015E+00, CNC3 = 1.9838E+00
4475 REAL, PARAMETER :: CQR1 = 1.5943E+01, CQR2 = 1.1898E+00
4476 REAL, PARAMETER :: CQR3 = 4.0073E+00, CNR1 = 9.4791E+00
4477 REAL, PARAMETER :: CNR2 = 9.7607E-01, CNR3 = 1.0858E+00
4478 REAL, PARAMETER :: AQ1 = 6.6793E+0, BQ1 = 1.0090E+0
4479 REAL, PARAMETER :: CQ1 = 1.4095E+0, AQ2 = 9.9912E+0
4480 REAL, PARAMETER :: BQ2 = -4.7678E-1, CQ2 = -3.1388E-2
4481 REAL, PARAMETER :: AN3 = -4.3561E0, BN3 = 1.9934E0
4482 REAL, PARAMETER :: CN3 = 1.6465E-2, AN4 = -4.0731E1
4483 REAL, PARAMETER :: BN4 = 5.3720E5, CN4 = -2.0139E-5
4484 REAL, PARAMETER :: AQ4 = -2.1370E1, BQ4 = 1.9899E9
4485 REAL, PARAMETER :: AN5 = 1.5519E1, BN5 = 3.1491E-0
4486 REAL, PARAMETER :: CN5 = 4.3989E-1, AQ5 = 2.0090E1
4487 REAL, PARAMETER :: BQ5 = 2.9626E0, CQ5 = 3.2358E0
4488 REAL, PARAMETER :: AN6 = -1.8239E1, BN6 = 2.2956E0
4489 REAL, PARAMETER :: CN6 = -2.3261E-4, AN7 = -1.7431E2
4490 REAL, PARAMETER :: BN7 = 2.6031E5, CN7 = -9.3613E7
4491 REAL, PARAMETER :: AN8 = -1.6185E2, BN8 = 2.2786E5
4492 REAL, PARAMETER :: CN8 = -7.6988E7, AQ8 = -2.3531E1
4493 REAL, PARAMETER :: BQ8 = 9.8271E-1, CQ8 = -1.3202E-1
4494 !---------------------------------------------------------------------------
4495 REAL, PARAMETER :: DSHED = 1.E-3, XISP = 0.25 ! SHEDDING DIAMETER
4496 REAL, PARAMETER :: ISEPL = 0.6, ISEPS = 0.6 ! SEPARATION RATIO, See TC20
4497 REAL :: ZC1,ZC2,ZC3,ZC4,ZP1,ZP2,ZP3,ZP4 ! See CT16
4498 DATA ZC1,ZC2,ZC3,ZC4/0.69509913,-0.46685819,0.30490087,1.62148100/
4499 DATA ZP1,ZP2,ZP3,ZP4/0.36793126,1.82782890,0.63206874,-1.00164090/
4501 IF (INSPEC.EQ.1) THEN ! SOOT
4502 DC1 = -0.5411955; DC2 = 1.879918; DC3 = 1.607947 ! Chen et al. 2008 Table3
4503 INR0 = 0.4E-7; FANGLE = 33.2; FACTE = 13.8E-20
4505 ELSEIF (INSPEC.EQ.2) THEN ! SAHARAN DUST
4506 DC1 = -0.3353619; DC2 = 1.990979; DC3 = 2.175539 ! Chen et al. 2008 Table3
4507 INR0 = 1.75E-7; FANGLE = 30.98; FACTE = 15.7E-20
4509 ELSEIF (INSPEC.EQ.3) THEN ! ASIAN DUST
4510 DC1 = -0.3598818; DC2 = 1.982032; DC3 = 2.025390 ! Chen et al. 2008 Table3
4511 INR0 = 2.E-7; FANGLE = 30.98; FACTE = 15.7E-20
4513 ELSEIF (INSPEC.EQ.4) THEN ! BACTERIA
4514 DC1 = -0.3541568; DC2 = 1.983928; DC3 = 2.019456 ! Chen et al. 2008 Table3
4515 INR0 = 5.E-7; FANGLE = 14.82; FACTE = 17.6E-20
4516 DACTE = 1.82E-20 ! DACTE NOT SURE
4519 MVDC = 0.; MVDR = 0.; MVDI = 0.; MVDS = 0.; MVDG = 0.
4520 MVDH = 0.; MVRC = 0.; MVRR = 0.; SMLF = 0.; GMLF = 0.
4521 HMLF = 0.; FF = 0.; DMWDT = 0.; DMIDT = 0.; ACLss1 = 0.
4522 HIdqv = 0.; HSdqv = 0.; HGdqv = 0.; HHdqv = 0.; HCwqv = 0.
4523 HRwqv = 0.; HSwqv = 0.; HGwqv = 0.; HHwqv = 0.; HHdtt = 0.
4524 QHOci = 0.; QHOrg = 0.; QNMci = 0.; QNMrg = 0.; QNCci = 0.
4525 QFZci = 0.; QFZrg = 0.; QMLir = 0.; QMLic = 0.; QMLsr = 0.
4526 QMLgr = 0.; QMLhr = 0.; QIMii = 0.; QIMcsi = 0.; QIMrsi = 0.
4527 QIMcgi = 0.; QIMrgi = 0.; QBKrc = 0.; QINig = 0.; QINsg = 0.
4528 QCNcr = 0.; QCNis = 0.; QCNgh = 0.; QRMci = 0.; QRMcs = 0.
4529 QRMcg = 0.; QRMch = 0.; QRMri = 0.; QRMrs = 0.; QRMrg = 0.
4530 QRMrh = 0.; QCLcr = 0.; QCLir = 0.; QCLis = 0.; QCLig = 0.
4531 QCLih = 0.; QCLsr = 0.; QCLsg = 0.; QCLsh = 0.; QCLgr = 0.
4532 QCLirg = 0.; QCLsrg = 0.; QCLgrg = 0.; QHwsh = 0.; QHdrm = 0.
4533 QHwml = 0.; NHOci = 0.; NHOrg = 0.; NNMci = 0.; NNMrg = 0.
4534 NNCci = 0.; NFZci = 0.; NFZrg = 0.; NMLir = 0.; NMLic = 0.
4535 NMLsr = 0.; NMLgr = 0.; NMLhr = 0.; NIMii = 0.; NIMcsi = 0.
4536 NIMrsi = 0.; NIMcgi = 0.; NIMrgi = 0.; NBKrc = 0.; NBKrr = 0.
4537 NINig = 0.; NINsg = 0.; NCNcr = 0.; NiCNis = 0.; NgCNgh = 0.
4538 NRMci = 0.; NRMcs = 0.; NRMcg = 0.; NRMch = 0.; NRMri = 0.
4539 NRMrs = 0.; NRMrg = 0.; NRMrh = 0.; NCLcc = 0.; NCLcr = 0.
4540 NCLrr = 0.; NCLir = 0.; NCLis = 0.; NCLig = 0.; NCLih = 0.
4541 NCLsr = 0.; NCLss = 0.; NhCNgh = 0.; NCLsg = 0.; NCLsh = 0.
4542 NCLgr = 0.; NCLirg = 0.; NCLsrg = 0.; NCLgrg = 0.; NHwsh = 0.
4543 NsCNis = 0.; VCLss = 0.; ViCNis = 0.; VIMii = 0.; ViCLis = 0.
4544 VsCLis = 0.; ViCLig = 0.; VgCLig = 0.; VCLih = 0.; VCLsg = 0.
4545 VsCNis = 0.; ViINig = 0.; VgINig = 0.; VFZci = 0.; VFZrg = 0.
4546 VMLir = 0.; VMLic = 0.; VRMci = 0.; VCLir = 0.; VHOci = 0.
4547 VHOrg = 0.; VNMci = 0.; VNMrg = 0.; VNCci = 0.; VIMcsi = 0.
4548 VIMcgi = 0.; VIMrsi = 0.; VIMrgi = 0.; VCLsr = 0.; VsCLsg = 0.
4549 VgCLsg = 0.; VCLsh = 0.; VsINsg = 0.; VgINsg = 0.; VMLsr = 0.
4550 VRMcs = 0.; VMLgr = 0.; VRMcg = 0.; VCNgh = 0.; VCLgr = 0.
4551 VCLirg = 0.; VCLsrg = 0.; VCLgrg = 0.; VCLis = 0.; VCLig = 0.
4552 FIMcsi = 0.; FIMcgi = 0.; FIMrsi = 0.; FIMrgi = 0.; FCLss = 0.
4553 FIMii = 0.; FHOci = 0.; FNMci = 0.; FNCci = 0.; FFZci = 0.
4554 FMLir = 0.; FCLir = 0.; FiCLis = 0.; FCLig = 0.; FCLih = 0.
4555 FRMci = 0.; FiCNis = 0.; FINig = 0.; FMLic = 0.; FsCNis = 0.
4556 FsCLis = 0.; FCLsg = 0.; FCLsh = 0.; FINsg = 0.; FMLsr = 0.
4557 FRMcs = 0.; FCLsr = 0.; IINig = 0.; IIMcsi = 0.; IIMcgi = 0.
4558 IIMrsi = 0.; IIMrgi = 0.; IIMii = 0.; IHOci = 0.; INMci = 0.
4559 INCci = 0.; IFZci = 0.; IMLir = 0.; IMLic = 0.; ICLir = 0.
4560 ICLis = 0.; ICLig = 0.; ICLih = 0.; IRMci = 0.; ICNis = 0.
4561 ACLss = 0.; AIMcsi = 0.; AIMcgi = 0.; AIMrsi = 0.; AIMrgi = 0.
4562 AIMii = 0.; AHOci = 0.; ANMci = 0.; ANCci = 0.; AFZci = 0.
4563 AMLic = 0.; AMLir = 0.; ACLir = 0.; AiCLis = 0.; AiCLig = 0.
4564 AiCLih = 0.; ARMci = 0.; AiCNis = 0.; AiINig = 0.; AgINig = 0.
4565 AsINsg = 0.; AgINsg = 0.; AsCLis = 0.; AsCLsg = 0.; AsCLsh = 0.
4566 ARMcs = 0.; ACLsr = 0.; AMLsr = 0.; AgCLig = 0.; AgCLsg = 0.
4567 AMLgr = 0.; ARMcg = 0.; AgCNgh = 0.; ACLgr = 0.; ACLirg = 0.
4568 ACLsrg = 0.; ACLgrg = 0.; AHOrg = 0.; ANMrg = 0.; AFZrg = 0.
4569 AMLhr = 0.; AhCLih = 0.; AhCLsh = 0.; ARMch = 0.; ARMrg = 0.
4570 ARMrh = 0.; AHdrm = 0.; AHwml = 0.; AsCNis = 0.; AhCNgh = 0.
4575 IF (TK1D.GE.265..AND.TK1D.LT.268.) FF = (TC1D+8.)*THRD
4576 IF (TK1D.GE.268..AND.TK1D.LE.270.) FF = (-3.-TC1D)*0.5
4577 RHOAJ = (RHOSU/RHO)**0.54
4578 CPM = CP*(1.+0.887*QV1D)
4579 ESW = POLYSVP(TK1D,0)
4580 ESI = POLYSVP(TK1D,1)
4581 QVSW = 0.622*ESW/(P1D-ESW)
4582 QVSI = 0.622*ESI/(P1D-ESI)
4585 ESW0 = POLYSVP(TK0C,0)
4586 QVSW0 = 0.622*ESW0/(P1D-ESW0)
4587 ESI0 = POLYSVP(TK0C,1)
4588 QVSI0 = 0.622*ESI0/(P1D-ESI0)
4589 XXLV = 3.1484E6-2370.*TK1D
4590 XXLS = 3.15E6-2370.*TK1D+0.3337E6
4591 XXLF = 2836310.8-(3.1484E6-2370.*TK1D)
4592 XXLF0 = 2836310.8-(3.1484E6-2370.*TK0C)
4593 SSRW0 = QV1D/QVSW0-1.
4594 SSRI0 = QV1D/QVSI0-1.
4595 DV = 2.11E-5*(TK1D/TK0C)**1.94*(101325./P1D)
4596 KAP = 2.3971E-2+0.0078E-2*TC1D
4597 MUA = 1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5
4598 SCN = (MUA/(RHO*DV))**THRD
4599 ICED = 916.7-0.175*TC1D-5.E-4*TC1D**2. ! ICE DENSITY
4600 ABW = TK1D*RV/ESW/DV+XXLV*(XXLV/TK1D/RV-1.)/TK1D/KAP
4601 ABI = TK1D*RV/ESI/DV+XXLS*(XXLS/TK1D/RV-1.)/TK1D/KAP
4602 SFCTNV = (0.095*TC1D+104.6)*1.E-3 ! SURFACE TENSION OVER ICE/VAPOR
4603 SFCTNW = (28.+0.25*TC1D)*1.E-3
4604 COSM2 = LOG(1.-COS(FANGLE*PI/180.))
4605 ACTW = LOG(1.*ESW/ESI) ! WATER ACTIVITY NEED TO BE MODIFIED
4606 EIH = MIN(1.,0.01*EXP(0.1*TC1D)) ! FERRIER ET AL., 1995
4607 ESH = MIN(1.,0.01*EXP(0.1*TC1D)) ! FERRIER ET AL., 1995
4609 IF (QC1D.GE.QSMALL) THEN
4610 CALL SOLVE_AFAC(TK1D,QC1D,NC1D,LAMC,MVDC,AFAC)
4611 GC2 = EXP(GAMLN(AFAC+2.)-GAMLN(AFAC+1.)-LOG(LAMC))
4612 GC3 = EXP(GAMLN(AFAC+3.)-GAMLN(AFAC+1.)-2.*LOG(LAMC))
4613 GC4 = EXP(GAMLN(AFAC+4.)-GAMLN(AFAC+1.)-3.*LOG(LAMC))
4614 GC5 = EXP(GAMLN(AFAC+5.)-GAMLN(AFAC+1.)-4.*LOG(LAMC))
4615 GC6 = EXP(GAMLN(AFAC+6.)-GAMLN(AFAC+1.)-5.*LOG(LAMC))
4616 GC7 = EXP(GAMLN(AFAC+7.)-GAMLN(AFAC+1.)-6.*LOG(LAMC))
4617 MVRC = MIN(MAX((QC1D/NC1D/C4PI3W)**THRD,RCMIN),RCMAX)
4619 GUC = EXP(EXP(AFU+BFU*LMVRC**3.+CFU*SQRT(RHO)**3.))
4620 IF (LIQ_VTC.EQ.0) THEN
4621 FSQC = EXP(GAMLN(BVC0+BMW+AFAC+1.)-GAMLN(BMW+AFAC+1.)-BVC0*&
4623 FSNC = EXP(GAMLN(BVC0+AFAC+1.)-GAMLN(AFAC+1.)-BVC0* &
4625 FSAC = EXP(GAMLN(BVC0+AFAC+3.)-GAMLN(AFAC+3.)-BVC0* &
4627 VTQC = RHOAJ*FSQC*AVC0
4628 VTNC = RHOAJ*FSNC*AVC0
4629 VTAC = RHOAJ*FSAC*AVC0
4630 ELSEIF (LIQ_VTC.EQ.1) THEN
4631 VTQC = EXP(CQC1+CQC2*LOG(NC1D)+CQC3*LOG(MVRC))*GUC/QC1D
4632 VTNC = EXP(CNC1+CNC2*LOG(NC1D)+CNC3*LOG(MVRC))*GUC/NC1D
4633 VTAC = VTQC**(3./4.)*VTNC**(1./4.)
4634 ELSEIF (LIQ_VTC.EQ.2) THEN
4635 VTQC = MVRC*(AVTC+BVTC*MVRC+CVTC*MVRC**2.)*GUC
4636 VTNC = MVRC*(AVTC+BVTC*MVRC+CVTC*MVRC**2.)*GUC
4637 VTAC = VTQC**(3./4.)*VTNC**(1./4.)
4639 VTQC = MIN(VTQC,VTCMAX)
4640 VTNC = MIN(VTNC,VTCMAX)
4641 VTAC = MIN(VTAC,VTCMAX)
4642 QRMC1 = PI*PI*RHOW*NC1D/24.
4644 FRMC1 = PI*RHOW*NC1D
4645 IRMC1 = PI*RHOW*NC1D/4.
4647 QFZC1 = PI*PI*RHOW*NC1D*GC7/36.
4648 NFZC1 = PI*NC1D*GC4/6.
4649 HCwqv = SSRW0*EXP(AQ1+BQ1*LOG(NC1D)+CQ1*LMVRC)/ABW
4651 IF (QR1D.GE.QSMALL) THEN
4652 CALL SOLVE_AFAR(TK1D,QR1D,NR1D,LAMR,MVDR,AFAR)
4653 GR2 = EXP(GAMLN(AFAR+2.)-GAMLN(AFAR+1.)-LOG(LAMR))
4654 GR3 = EXP(GAMLN(AFAR+3.)-GAMLN(AFAR+1.)-2.*LOG(LAMR))
4655 GR4 = EXP(GAMLN(AFAR+4.)-GAMLN(AFAR+1.)-3.*LOG(LAMR))
4656 GR5 = EXP(GAMLN(AFAR+5.)-GAMLN(AFAR+1.)-4.*LOG(LAMR))
4657 GR6 = EXP(GAMLN(AFAR+6.)-GAMLN(AFAR+1.)-5.*LOG(LAMR))
4658 GR7 = EXP(GAMLN(AFAR+6.)-GAMLN(AFAR+1.)-6.*LOG(LAMR))
4659 MVRR = MIN(MAX((QR1D/NR1D/C4PI3W)**THRD,RRMIN),RRMAX)
4661 GUR = EXP(EXP(AFU+BFU*LMVRR**3.+CFU*SQRT(RHO)**3.))
4662 IF (LIQ_VTR.EQ.0) THEN
4663 FSQR = EXP(GAMLN(BVR0+BMW+AFAR+1.)-GAMLN(BMW+AFAR+1.)-BVR0*&
4665 FSNR = EXP(GAMLN(BVR0+AFAR+1.)-GAMLN(AFAR+1.)-BVR0* &
4667 FSAR = EXP(GAMLN(BVR0+AFAR+3.)-GAMLN(AFAR+3.)-BVR0* &
4669 VTQR = RHOAJ*FSQR*AVR0
4670 VTNR = RHOAJ*FSNR*AVR0
4671 VTAR = RHOAJ*FSAR*AVR0
4672 ELSEIF (LIQ_VTR.EQ.1) THEN
4673 VTQR = EXP(CQR1+CQR2*LOG(NR1D)+CQR3*LOG(MVRR))*GUR/QR1D
4674 VTNR = EXP(CNR1+CNR2*LOG(NR1D)+CNR3*LOG(MVRR))*GUR/NR1D
4675 VTAR = VTQR**(3./4.)*VTNR*(1./4.)
4676 ELSEIF (LIQ_VTR.EQ.2) THEN
4677 VTQR = EXP(AVTR+BVTR/MVRR+CVTR/(MVRR**2.))*GUR
4678 VTNR = EXP(AVTR+BVTR/MVRR+CVTR/(MVRR**2.))*GUR
4679 VTAR = VTQR**(3./4.)*VTNR*(1./4.)
4681 VTQR = MIN(VTQR,VTRMAX)
4682 VTNR = MIN(VTNR,VTRMAX)
4683 VTAR = MIN(VTAR,VTRMAX)
4684 QRMR1 = PI*PI*RHOW*NR1D/24.
4687 QFZR1 = PI*PI*RHOW*NR1D*GR7/36.
4688 NFZR1 = PI*NR1D*GR4/6.
4689 AFZR1 = PI*NR1D*GR6/6.
4690 HRwqv = SSRW0*NR1D*EXP(AQ2+(BQ2+CQ2*LMVRR)*LMVRR**2.)/ABW
4692 IF (QI1D.GE.QSMALL) THEN
4693 CALL SOLVE_AFAI(TK1D,P1D,RHO,QV1D,QI1D,NI1D,VI1D,FI1D,AI1D, &
4694 I3M1D,ADAGR,ZETA,LAMI,AFAI,MVDI,RHOI,AMI,BMI,AVI,BVI, &
4697 IPH = 3.*ADAGR/(ADAGR+2.)
4698 IPF = 3.*(ADAGR+1.)/(ADAGR+2.)
4699 ZETA2 = 2.*(ADAGR-1.)/(ADAGR+2.)
4700 ZETA3 = 3.*(ADAGR-1.)/(ADAGR+2.)
4704 DI0Z4 = DI0**(4.*ZETA)
4707 QCLI1 = PI*AMI*NI1D/4.
4708 QCNI1 = PI*XISP*AMI*NI1D/6.
4710 NCNI1 = PI*XISP*NI1D/6.
4712 ACNI1 = PI*XISP*NI1D/6.
4713 FCLI1 = PI*NI1D/4./DI0Z3
4714 FCNI1 = AMI*XISP*iRHOI*NI1D
4719 GI1 = GAMLN(AFAI+1.)
4720 GI2 = EXP(GAMLN(AFAI+2.)-GI1-LLMI)
4721 GI3 = EXP(GAMLN(AFAI+3.)-GI1-2.*LLMI)
4722 GI4 = EXP(GAMLN(AFAI+4.)-GI1-3.*LLMI)
4723 GI5 = EXP(GAMLN(AFAI+5.)-GI1-4.*LLMI)
4724 GIM1 = EXP(GAMLN(AFAI+BMI+1.)-GI1-BMI*LLMI)
4725 GIM2 = EXP(GAMLN(AFAI+BMI+2.)-GI1-(BMI+1.)*LLMI)
4726 GIM3 = EXP(GAMLN(AFAI+BMI+3.)-GI1-(BMI+2.)*LLMI)
4727 GIF1 = EXP(GAMLN(AFAI+IPF+1.)-GI1-IPF*LLMI)
4728 GIF2 = EXP(GAMLN(AFAI+IPF+2.)-GI1-(IPF+1.)*LLMI)
4729 GIF3 = EXP(GAMLN(AFAI+IPF+3.)-GI1-(IPF+2.)*LLMI)
4730 GIG1 = EXP(GAMLN(AFAI+IPG+1.)-GI1-IPG*LLMI)
4731 GIG2 = EXP(GAMLN(AFAI+IPG+2.)-GI1-(IPG+1.)*LLMI)
4732 GIG3 = EXP(GAMLN(AFAI+IPG+3.)-GI1-(IPG+2.)*LLMI)
4733 GIH1 = EXP(GAMLN(AFAI+IPH+1.)-GI1-IPH*LLMI)
4734 GIH2 = EXP(GAMLN(AFAI+IPH+2.)-GI1-(IPH+1.)*LLMI)
4735 GIH3 = EXP(GAMLN(AFAI+IPH+3.)-GI1-(IPH+2.)*LLMI)
4736 GIZ1 = EXP(GAMLN(AFAI+ZETA3+1.)-GI1-ZETA3*LLMI)
4737 GI2G1 = EXP(GAMLN(AFAI+2.*IPG+1.)-GI1-2.*IPG*LLMI)
4738 GI2G2 = EXP(GAMLN(AFAI+2.*IPG+2.)-GI1-(2.*IPG+1.)*LLMI)
4739 GI2G3 = EXP(GAMLN(AFAI+2.*IPG+3.)-GI1-(2.*IPG+2.)*LLMI)
4740 GI3G1 = EXP(GAMLN(AFAI+3.*IPG+1.)-GI1-3.*IPG*LLMI)
4741 GI2H1 = EXP(GAMLN(AFAI+2.*IPH+1.)-GI1-2.*IPH*LLMI)
4742 GI2H3 = EXP(GAMLN(AFAI+2.*IPH+3.)-GI1-(2.*IPH+2.)*LLMI)
4743 GI3H1 = EXP(GAMLN(AFAI+3.*IPH+1.)-GI1-3.*IPH*LLMI)
4744 GIMF1 = EXP(GAMLN(AFAI+BMI+IPF+1.)-GI1-(BMI+IPF)*LLMI)
4745 GIMG1 = EXP(GAMLN(AFAI+BMI+IPG+1.)-GI1-(BMI+IPG)*LLMI)
4746 GIMH1 = EXP(GAMLN(AFAI+BMI+IPH+1.)-GI1-(BMI+IPH)*LLMI)
4747 GIZM1 = EXP(GAMLN(AFAI+ZETA3+BMI+1.)-GI1-(ZETA3+BMI)*LLMI)
4748 GIZF1 = EXP(GAMLN(AFAI+ZETA3+IPF+1.)-GI1-(ZETA3+IPF)*LLMI)
4749 GIZG1 = EXP(GAMLN(AFAI+ZETA3+IPG+1.)-GI1-(ZETA3+IPG)*LLMI)
4750 GIZH1 = EXP(GAMLN(AFAI+ZETA3+IPH+1.)-GI1-(ZETA3+IPH)*LLMI)
4751 GI2HG1 = EXP(GAMLN(AFAI+2.*IPH+IPG+1.)-GI1-(2.*IPH+IPG)*LLMI)
4752 GIH2G1 = EXP(GAMLN(AFAI+IPH+2.*IPG+1.)-GI1-(IPH+2.*IPG)*LLMI)
4753 GIM2G1 = EXP(GAMLN(AFAI+BMI+2.*IPG+1.)-GI1-(BMI+2.*IPG)*LLMI)
4754 GIM2H1 = EXP(GAMLN(AFAI+BMI+2.*IPH+1.)-GI1-(BMI+2.*IPH)*LLMI)
4755 GIZ2G1 = EXP(GAMLN(AFAI+Z32G+1.)-GI1-Z32G*LLMI)
4756 GIZMF1 = EXP(GAMLN(AFAI+Z3BMI+IPF+1.)-GI1-(Z3BMI+IPF)*LLMI)
4757 GIZMG1 = EXP(GAMLN(AFAI+Z3BMI+IPG+1.)-GI1-(Z3BMI+IPG)*LLMI)
4758 GIZMH1 = EXP(GAMLN(AFAI+Z3BMI+IPH+1.)-GI1-(Z3BMI+IPH)*LLMI)
4759 GIZM2G1 = EXP(GAMLN(AFAI+Z32G+BMI+1.)-GI1-(Z32G+BMI)*LLMI)
4760 GIZM2H1 = EXP(GAMLN(AFAI+Z32H+BMI+1.)-GI1-(Z32H+BMI)*LLMI)
4761 FSQI = EXP(GAMLN(BVI+BMI+AFAI+1.)-GAMLN(BMI+AFAI+1.)-BVI*LLMI)
4762 FSNI = EXP(GAMLN(BVI+AFAI+1.)-GI1-BVI*LLMI)
4763 FSVI = EXP(GAMLN(BVI+AFAI+4.)-GAMLN(AFAI+4.)-BVI*LLMI)
4764 VTQI = MIN(RHOAJ*FSQI*AVI,VTIMAX)
4765 VTNI = MIN(RHOAJ*FSNI*AVI,VTIMAX)
4766 VTVI = MIN(RHOAJ*FSVI*AVI,VTIMAX)
4767 IF (AI1D.GE.ASMALL) THEN
4768 FSAI = EXP(GAMLN(BVI+AFAI+3.)-GAMLN(AFAI+3.)-BVI*LLMI)
4769 VTAI = MIN(RHOAJ*FSAI*AVI,VTIMAX)
4771 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
4772 FSFI = EXP(GAMLN(BVI+ZETA3+AFAI+4.)-GAMLN(ZETA3+AFAI+4.)- &
4774 FSVI = EXP(GAMLN(BVI+AFAI+4.)-GAMLN(AFAI+4.)-BVI*LLMI)
4775 VTFI = MIN(RHOAJ*FSFI*AVI,VTIMAX)
4776 VTI3M = MIN(RHOAJ*FSVI*AVI,VTIMAX)
4778 IF (ICE_VENT.EQ.3) THEN
4779 IF ((ADAGR-1.).GE.SLIMIT) THEN
4780 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
4783 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
4784 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
4785 QTMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+1.)
4786 QTMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+1.)
4787 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP2)
4788 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP3)
4789 QTMP6 = LLMI*(H2Z+BVI+IPH+1.)
4790 QTMP7 = LLMI*(H4Z+BVI+IPH+1.)
4791 QTMP8 = EXP(GAMLN(H2Z+BVI+IPH+AFAI+2.)-GI1-QTMP6)
4792 QTMP9 = EXP(GAMLN(H4Z+BVI+IPH+AFAI+2.)-GI1-QTMP7)
4793 VENQI = ZC1*QTMP0/DI0**H2Z+ZC3*QTMP1/DI0**H4Z+VENC1*ZC1* &
4794 BTMP*QTMP4/DI0**(H2Z+ZETA)+VENC1*ZC3*BTMP*QTMP5/ &
4795 DI0**(H4Z+ZETA)+VENC2*ZC1*BTMP**2.*QTMP8/DI0**(H2Z+&
4796 ZETA2)+VENC2*ZC3*BTMP**2.*QTMP9/DI0**(H4Z+ZETA2)
4797 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
4798 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
4801 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
4802 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
4803 QTMP2 = LLMI*(H2Z+BVI/2.+IPG/2.+1.)
4804 QTMP3 = LLMI*(H4Z+BVI/2.+IPG/2.+1.)
4805 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP2)
4806 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP3)
4807 QTMP6 = LLMI*(H2Z+BVI+IPG+1.)
4808 QTMP7 = LLMI*(H4Z+BVI+IPG+1.)
4809 QTMP8 = EXP(GAMLN(H2Z+BVI+IPG+AFAI+2.)-GI1-QTMP6)
4810 QTMP9 = EXP(GAMLN(H4Z+BVI+IPG+AFAI+2.)-GI1-QTMP7)
4811 VENQI = ZP1*QTMP0/DI0**H2Z+ZP3*QTMP1/DI0**H4Z+VENP1*ZP1* &
4812 BTMP*QTMP4/DI0**(H2Z-ZETA/2.)+VENP1*ZP3*BTMP*QTMP5/&
4813 DI0**(H4Z-ZETA/2.)+VENP2*ZP1*BTMP**2.*QTMP8/DI0** &
4814 (H2Z-ZETA)+VENP2*ZP3*BTMP**2.*QTMP9/DI0**(H4Z-ZETA)
4815 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
4816 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
4817 QTMP0 = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
4818 QTMP1 = LLMI*(1.5+BVI/2.)
4819 QTMP2 = EXP(GAMLN(BVI/2.+AFAI+2.5)-GI1-QTMP1)
4820 VENQI = AVSG*QTMP0+BVSG*BTMP*QTMP2
4822 ELSEIF (ICE_VENT.EQ.1.OR.ICE_VENT.EQ.2) THEN
4823 IF ((ADAGR-1.).GE.SLIMIT) THEN
4826 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
4827 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
4828 IF (BEST.LE.1.) THEN
4829 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
4830 QTMP2 = LLMI*(H2Z+BVI+IPH+1.)
4831 QTMP3 = LLMI*(H4Z+BVI+IPH+1.)
4832 QTMP4 = EXP(GAMLN(H2Z+BVI+IPH+AFAI+2.)-GI1-QTMP2)
4833 QTMP5 = EXP(GAMLN(H4Z+BVI+IPH+AFAI+2.)-GI1-QTMP3)
4834 VENQI = AVIS*ZC1*QTMP0/DI0**H2Z+AVIS*ZC3*QTMP1/DI0**H4Z+&
4835 BVIS*ZC1*BTMP*QTMP4/DI0**(H2Z+ZETA2)+BVIS*ZC3* &
4836 BTMP*QTMP5/DI0**(H4Z+ZETA2)
4837 ELSEIF (BEST.GT.1.) THEN
4838 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
4839 QTMP2 = LLMI*(H2Z+BVI/2.+IPH/2.+1.)
4840 QTMP3 = LLMI*(H4Z+BVI/2.+IPH/2.+1.)
4841 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP2)
4842 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPH/2.+AFAI+2.)-GI1-QTMP3)
4843 VENQI = AVSG*ZC1*QTMP0/DI0**H2Z+AVSG*ZC3*QTMP1/DI0**H4Z+&
4844 BVSG*ZC1*BTMP*QTMP4/DI0**(H2Z+ZETA)+BVSG*ZC3* &
4845 BTMP*QTMP5/DI0**(H4Z+ZETA)
4847 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
4850 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
4851 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
4852 IF (BEST.LE.1.) THEN
4853 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
4854 QTMP2 = LLMI*(H2Z+BVI+IPG+1.)
4855 QTMP3 = LLMI*(H4Z+BVI+IPG+1.)
4856 QTMP4 = EXP(GAMLN(H2Z+BVI+IPG+AFAI+2.)-GI1-QTMP2)
4857 QTMP5 = EXP(GAMLN(H4Z+BVI+IPG+AFAI+2.)-GI1-QTMP3)
4858 VENQI = AVIS*ZP1*QTMP0/DI0**H2Z+AVIS*ZP3*QTMP1/DI0**H4Z+&
4859 BVIS*ZP1*BTMP*QTMP4/DI0**(H2Z-ZETA)+BVIS*ZP3* &
4860 BTMP*QTMP5/DI0**(H4Z-ZETA)
4861 ELSEIF (BEST.GT.1.) THEN
4862 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
4863 QTMP2 = LLMI*(H2Z+BVI/2.+IPG/2.+1.)
4864 QTMP3 = LLMI*(H4Z+BVI/2.+IPG/2.+1.)
4865 QTMP4 = EXP(GAMLN(H2Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP2)
4866 QTMP5 = EXP(GAMLN(H4Z+BVI/2.+IPG/2.+AFAI+2.)-GI1-QTMP3)
4867 VENQI = AVSG*ZP1*QTMP0/DI0**H2Z+AVSG*ZP3*QTMP1/DI0**H4Z+&
4868 BVSG*ZP1*BTMP*QTMP4/DI0**(H2Z-ZETA/2.)+BVSG*ZP3*&
4869 BTMP*QTMP5/DI0**(H4Z-ZETA/2.)
4871 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
4872 QTMP0 = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
4873 IF (BEST.LE.1.) THEN
4874 BTMP = SCN**2.*(AVI*RHOAJ/MUA)
4875 QTMP1 = LLMI*(BVI+2.)
4876 QTMP2 = EXP(GAMLN(BVI+AFAI+3.)-GI1-QTMP1)
4877 VENQI = AVIS*QTMP0+BVIS*BTMP*QTMP2
4878 ELSEIF (BEST.GT.1.) THEN
4879 BTMP = SCN*SQRT(AVI*RHOAJ/MUA)
4880 QTMP1 = LLMI*(1.5+BVI/2.)
4881 QTMP2 = EXP(GAMLN(BVI/2.+AFAI+2.5)-GI1-QTMP1)
4882 VENQI = AVSG*QTMP0+BVSG*BTMP*QTMP2
4885 ELSEIF (ICE_VENT.EQ.0) THEN
4886 IF ((ADAGR-1.).GE.SLIMIT) THEN
4889 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
4890 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
4891 VENQI = ZC1*QTMP0/DI0**H2Z+ZC3*QTMP1/DI0**H4Z
4892 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
4895 QTMP0 = EXP(GAMLN(H2Z+AFAI+2.)-GI1-LLMI*(H2Z+1.))
4896 QTMP1 = EXP(GAMLN(H4Z+AFAI+2.)-GI1-LLMI*(H4Z+1.))
4897 VENQI = ZP1*QTMP0/DI0**H2Z+ZP3*QTMP1/DI0**H4Z
4898 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
4899 VENQI = EXP(GAMLN(AFAI+2.)-GI1-LOG(LAMI))
4902 HIdqv = 2.*PI*NI1D*VENQI*XXLS*SSRI0/ABI
4904 IF (QS1D.GE.QSMALL) THEN
4905 CALL SOLVE_AFAS(TK1D,RHO,QS1D,QC1D,NS1D,VS1D,FS1D,AS1D,AFAS, &
4906 LAMS,MVDS,RHOS,SASPR,AMS,AVS,BVS)
4908 GS2 = EXP(GAMLN(AFAS+2.)-GAMLN(AFAS+1.)-LLMS)
4909 GS3 = EXP(GAMLN(AFAS+3.)-GAMLN(AFAS+1.)-2.*LLMS)
4910 GS4 = EXP(GAMLN(AFAS+4.)-GAMLN(AFAS+1.)-3.*LLMS)
4911 GS5 = EXP(GAMLN(AFAS+5.)-GAMLN(AFAS+1.)-4.*LLMS)
4912 GSM1 = EXP(GAMLN(AFAS+BMS+1.)-GAMLN(AFAS+1.)-BMS*LLMS)
4913 GSM2 = EXP(GAMLN(AFAS+BMS+2.)-GAMLN(AFAS+1.)-(BMS+1.)*LLMS)
4914 GSM3 = EXP(GAMLN(AFAS+BMS+3.)-GAMLN(AFAS+1.)-(BMS+2.)*LLMS)
4916 FSQS = EXP(GAMLN(BVS+BMS+AFAS+1.)-GAMLN(BMS+AFAS+1.)-BVS*LLMS)
4917 FSNS = EXP(GAMLN(BVS+AFAS+1.)-GAMLN(AFAS+1.)-BVS*LLMS)
4918 FSVS = EXP(GAMLN(BVS+AFAS+4.)-GAMLN(AFAS+4.)-BVS*LOG(LAMS))
4919 VTQS = MIN(RHOAJ*FSQS*AVS,VTSMAX)
4920 VTNS = MIN(RHOAJ*FSNS*AVS,VTSMAX)
4921 VTVS = MIN(RHOAJ*FSVS*AVS,VTSMAX)
4922 IF (AS1D.GE.ASMALL) THEN
4923 FSAS = EXP(GAMLN(BVS+AFAS+3.)-GAMLN(AFAS+3.)-BVS*LLMS)
4924 VTAS = MIN(RHOAJ*FSAS*AVS,VTSMAX)
4926 QCLS1 = PI*AMS*NS1D/4.
4929 BSTMP = SCN*SQRT(AVS*RHOAJ/MUA)
4930 QTMP1 = LLMS*(1.5+BVS/2.)
4931 QTMP2 = EXP(GAMLN(AFAS+2.)-GAMLN(AFAS+1.)-LLMS)
4932 QTMP3 = EXP(GAMLN(BVS/2.+AFAS+2.5)-GAMLN(AFAS+1.)-QTMP1)
4933 CAPS = ZP1*SASPR**(ZP2/3.)+ZP3*SASPR**(ZP4/3.)
4934 VENQS = AVSG*QTMP2*CAPS+BVSG*BSTMP*QTMP3*CAPS
4935 SASR1 = SASPR**(-1./3.)
4936 SASR2 = SASPR**(-2./3.)
4937 SASR3 = SASPR**(1./3.)
4938 SASR4 = SASPR**(2./3.)
4939 HSdqv = 2.*PI*NS1D*VENQS*XXLS*SSRI0/ABI
4940 HSwqv = 2.*PI*NS1D*VENQS*XXLV*SSRW0/ABW
4942 IF (QG1D.GE.QSMALL) THEN
4943 CALL SOLVE_AFAG(TK1D,RHO,QG1D,QC1D,NG1D,VG1D,AG1D,LAMG,AFAG, &
4944 MVDG,RHOG,AMG,AVG,BVG)
4946 GG2 = EXP(GAMLN(AFAG+2.)-GAMLN(AFAG+1.)-LLMG)
4947 GG3 = EXP(GAMLN(AFAG+3.)-GAMLN(AFAG+1.)-2.*LLMG)
4948 GG4 = EXP(GAMLN(AFAG+4.)-GAMLN(AFAG+1.)-3.*LLMG)
4949 GG5 = EXP(GAMLN(AFAG+5.)-GAMLN(AFAG+1.)-4.*LLMG)
4950 GGM1 = EXP(GAMLN(AFAG+BMG+1.)-GAMLN(AFAG+1.)-BMG*LLMG)
4951 GGM2 = EXP(GAMLN(AFAG+BMG+2.)-GAMLN(AFAG+1.)-(BMG+1.)*LLMG)
4952 GGM3 = EXP(GAMLN(AFAG+BMG+3.)-GAMLN(AFAG+1.)-(BMG+2.)*LLMG)
4955 FSQG = EXP(GAMLN(BVG+BMG+AFAG+1.)-GAMLN(BMG+AFAG+1.)-BVG*LLMG)
4956 FSNG = EXP(GAMLN(BVG+AFAG+1.)-GAMLN(AFAG+1.)-BVG*LLMG)
4957 FSVG = EXP(GAMLN(BVG+AFAG+4.)-GAMLN(AFAG+4.)-BVG*LOG(LAMG))
4958 VTQG = MIN(RHOAJ*FSQG*AVG,VTGMAX)
4959 VTNG = MIN(RHOAJ*FSNG*AVG,VTGMAX)
4960 VTVG = MIN(RHOAJ*FSVG*AVG,VTGMAX)
4961 IF (AG1D.GE.ASMALL) THEN
4962 FSAG = EXP(GAMLN(BVG+AFAG+3.)-GAMLN(AFAG+3.)-BVG*LLMG)
4963 VTAG = MIN(RHOAJ*FSAG*AVG,VTGMAX)
4965 QCLG1 = PI*AMG*NG1D/4.
4968 BGTMP = SCN*SQRT(AVG*RHOAJ/MUA)
4969 QTMP1 = LLMG*(1.5+BVG/2.)
4970 QTMP2 = EXP(GAMLN(AFAG+2.)-GAMLN(AFAG+1.)-LLMG)
4971 QTMP3 = EXP(GAMLN(BVG/2.+AFAG+2.5)-GAMLN(AFAG+1.)-QTMP1)
4972 VENQG = AVSG*QTMP2+BVSG*BGTMP*QTMP3
4973 HGdqv = 2.*PI*NG1D*VENQG*XXLS*SSRI0/ABI
4974 HGwqv = 2.*PI*NG1D*VENQG*XXLV*SSRW0/ABW
4976 IF (QH1D.GE.QSMALL) THEN
4977 CALL SOLVE_AFAH(TK1D,RHO,QH1D,NH1D,AH1D,LAMH,AFAH,MVDH,AVH,BVH)
4979 GH2 = EXP(GAMLN(AFAH+2.)-GAMLN(AFAH+1.)-LLMH)
4980 GH3 = EXP(GAMLN(AFAH+3.)-GAMLN(AFAH+1.)-2.*LLMH)
4981 GH4 = EXP(GAMLN(AFAH+4.)-GAMLN(AFAH+1.)-3.*LLMH)
4982 GH5 = EXP(GAMLN(AFAH+5.)-GAMLN(AFAH+1.)-4.*LLMH)
4983 FSQH = EXP(GAMLN(BVH+BMH+AFAH+1.)-GAMLN(BMH+AFAH+1.)-BVH*LLMH)
4984 FSNH = EXP(GAMLN(BVH+AFAH+1.)-GAMLN(AFAH+1.)-BVH*LLMH)
4985 VTQH = MIN(RHOAJ*FSQH*AVH,VTHMAX)
4986 VTNH = MIN(RHOAJ*FSNH*AVH,VTHMAX)
4987 IF (AH1D.GE.ASMALL) THEN
4988 FSAH = EXP(GAMLN(BVH+AFAH+3.)-GAMLN(AFAH+3.)-BVH*LLMH)
4989 VTAH = MIN(RHOAJ*FSAH*AVH,VTHMAX)
4991 BHTMP = SCN*SQRT(AVH*RHOAJ/MUA)
4992 IF (HAIL_VENT.EQ.0) THEN
4993 QTMP1 = LLMH*(1.5+BVH/2.)
4994 QTMP2 = EXP(GAMLN(AFAH+2.)-GAMLN(AFAH+1.)-LOG(LAMH))
4995 QTMP3 = EXP(GAMLN(BVH/2.+AFAH+2.5)-GAMLN(AFAH+1.)-QTMP1)
4996 ATMP1 = LLMH*(0.5+BVH/2.)
4997 ATMP2 = EXP(GAMLN(BVH/2.+AFAH+1.5)-GAMLN(AFAH+1.)-ATMP1)
4998 VENQH = AVRH*QTMP2+BVRH*BHTMP*QTMP3
4999 VENAH = AVRH+BVRH*BHTMP*ATMP2
5000 ELSEIF (HAIL_VENT.EQ.1) THEN
5001 QTMP1 = LLMH*(1.5+BVH/2.)
5002 QTMP2 = EXP(GAMLN(AFAH+2.)-GAMLN(AFAH+1.)-LOG(LAMH))
5003 QTMP3 = EXP(GAMLN(BVH/2.+AFAH+2.5)-GAMLN(AFAH+1.)-QTMP1)
5004 QTMP4 = LLMH*(2.+BVH)
5005 QTMP5 = EXP(GAMLN(BVH+AFAH+3.)-GAMLN(AFAH+1.)-QTMP4)
5006 ATMP1 = LLMH*(0.5+BVH/2.)
5007 ATMP2 = EXP(GAMLN(BVH/2.+AFAH+1.5)-GAMLN(AFAH+1.)-ATMP1)
5008 ATMP3 = LLMH*(1.+BVH)
5009 ATMP4 = EXP(GAMLN(BVH+AFAH+2.)-GAMLN(AFAH+1.)-ATMP3)
5010 VENQH = QTMP2+VENH1*BHTMP*QTMP3+VENH2*BHTMP**2.*QTMP5
5011 VENAH = 1.+VENH1*BHTMP*ATMP2+VENH2*BHTMP**2.*ATMP4
5013 HHdqv = 2.*PI*NH1D*VENQH*XXLS*SSRI0/ABI
5014 HHwqv = 2.*PI*NH1D*VENQH*XXLV*SSRW0/ABW
5016 !----------------- CHEN&LIU WARM CLOUD PROCESSES ----------------------
5017 IF (QC1D.GE.QSMALL) THEN
5018 NCLcc = EXP(AN3+BN3*LOG(NC1D)+CN3*LMVRC**3.)*GUC
5019 NCNcr = NC1D*NC1D*EXP(AN4+BN4*MVRC+CN4/MVRC)*GUC
5020 QCNcr = NCNcr*EXP(AQ4+BQ4*QC1D/NC1D)
5021 NCNcr = MIN(NCNcr,NC1D*iDT)
5022 QCNcr = MIN(QCNcr,QC1D*iDT)
5024 IF (QR1D.GE.QSMALL) THEN
5025 NCLrr = MIN(EXP(AN6+BN6*LOG(NR1D)+CN6/MVRR)*GUR,NR1D*iDT)
5026 NBKrr = NCLrr*EXP(AN7+(BN7+CN7*MVRR)*MVRR)
5027 NBKrc = NCLrr*EXP(AN8+(BN8+CN8*MVRR)*MVRR)
5028 QBKrc = MIN(NBKrc**BQ8*EXP(AQ8+CQ8*LMVRR),QR1D*iDT)
5029 NBKrc = MIN(NBKrc,NR1D*iDT)
5031 IF (QC1D.GE.QSMALL.AND.QR1D.GE.QSMALL) THEN
5032 NCLcr = NC1D*NR1D*GUR*EXP(AN5+BN5*LMVRR+CN5*LMVRC)
5033 QCLcr = NC1D*NR1D*GUR*EXP(AQ5+BQ5*LMVRR+CQ5*LMVRC)
5034 NCLcr = MIN(NCLcr,NC1D*iDT)
5035 QCLcr = MIN(QCLcr,QC1D*iDT)
5037 IF (TK1D.LT.TK0C) THEN
5038 IF ((HIdqv+HSdqv+HGdqv+HHdqv).GE.QSMALL) THEN
5039 VDMAX = XXLS*(QV1D-QVSI0)/(1.+XXLS**2.*QV1D/(CPM*RV* &
5041 SUMDEP = HIdqv+HSdqv+HGdqv+HHdqv
5042 IF (SUMDEP.GT.VDMAX.AND.VDMAX.GE.QSMALL) THEN
5043 RATIO = MIN(1.,VDMAX/(SUMDEP+QSMALL))
5050 IF ((HIdqv+HSdqv+HGdqv+HHdqv).LT.0.) THEN
5051 SBMAX = XXLS*(QV1D-QVSI0)/(1.+XXLS**2.*QV1D/(CPM*RV* &
5053 SUMSUB = HIdqv+HSdqv+HGdqv+HHdqv
5054 IF (SBMAX.LT.0..AND.SUMSUB.LT.SBMAX*0.9999) THEN
5055 HIdqv = HIdqv*MIN(1.,0.9999*SBMAX/SUMSUB)
5056 HSdqv = HSdqv*MIN(1.,0.9999*SBMAX/SUMSUB)
5057 HGdqv = HGdqv*MIN(1.,0.9999*SBMAX/SUMSUB)
5058 HHdqv = HHdqv*MIN(1.,0.9999*SBMAX/SUMSUB)
5061 !---------- HOMO/HETER FREEZING OF DROPLETS AND RAIN DROPS ------------
5062 IF (QC1D.GE.QSMALL) THEN ! DeMott et al. (1994)
5064 VOLMC = C4PI3*(MVRC*1.E6)**3.
5065 IJHOF = (10.**MAX(-20.,(-606.3952-52.6611*TC1D-1.7439*TMP1-&
5066 0.0265*TMP1*TC1D-1.536e-4*TMP1**2.)))
5067 RFZ = 1.-EXP(-IJHOF*VOLMC*DT)
5068 IF (TK1D.GT.243.15) RFZ = 0.
5069 IF (TK1D.LT.223.15) RFZ = 1.
5070 NHOci = RFZ*NC1D*iDT
5071 QHOci = RFZ*QC1D*iDT
5072 VHOci = QHOci*iRHOI0
5073 FHOci = QHOci*1.*iAMI0
5075 AHOci = (KCIMIN*NHOci*IHOci**2.)**THRD
5077 IF (TK1D.LT.269.15.AND.QC1D.GE.QSMALL) THEN
5078 QNMci = QFZC1*BIMM*EXP(AIMM*(TK0C-TK1D)-1.)
5079 NNMci = NFZC1*BIMM*EXP(AIMM*(TK0C-TK1D)-1.)
5080 QNMci = MIN(QNMci,QC1D*iDT)
5081 NNMci = MIN(NNMci,NC1D*iDT)
5082 VNMci = QNMci*iRHOI0
5083 FNMci = QNMci*1.*iAMI0 ! ISOMETRIC
5085 ANMci = (KCIMIN*NNMci*INMci**2.)**THRD
5087 IF (QC1D.GE.QSMALL.AND.TK1D.LT.271.15) THEN ! Referred to MY2 scheme
5088 RGIMF = (2.*2.99E-26*SFCTNW)/(ICED*BOLTZ*TK1D*ACTW)
5089 GGCNT = C4PI3*SFCTNV*RGIMF**2.
5091 GEOF2 = EXP(DC1+DC2*COSM2+DC3*RGIMF/INR0)
5092 NGCNT0 = EXP((-DACTE-GEOF2*GGCNT)/(BOLTZ*TK1D))
5093 NGCNT1 = EPA/(1.61E-11*TK1D**(0.5)) ! 1.61E-11 = vs*(2*PI*mw*k)**0.5
5094 ! NGCNT = MAX(4.*PI*INR0**2.*NGCNT0*NGCNT1,1.)*QNIN
5095 CNTGG0 = (XXLV**2.-XXLV*RV*TK1D)/(KAP*RV*TK1D**2.)
5096 CNTGG = (RV*TK1D/(ESW*DV)+CNTGG0)**(-1.)/RHOW
5097 KDIFF = 9.1018E-11*TK1D**2.+8.8197E-8*TK1D-1.0654E-5 ! AIR THERMAL DIFFUSIVITY (COTTON ET AL., 1986)
5098 TCC = TC1D+CNTGG*SSRW*XXLV/KDIFF ! DROPLETS TEMPERATURE
5099 NGCNT = EXP(4.11-0.262*TCC)
5100 CNTKN = 6.6E-8*TK1D*101325./(293.15*P1D*INR0) ! KNUDSEN NUMBER
5101 PSIA = -1.*BOLTZ*TCC*(1.+CNTKN)/(6.*PI*INR0*MUA) ! AEROSOL DIFFUSIVITY
5102 KAPA = 5.39E5 ! AEROSOL THERMAL CONDUCTIVITY
5103 CNTFT0 = 0.4*(1.+1.45*CNTKN+0.4*CNTKN*EXP(-1./CNTKN))
5104 CNTFT1 = (1.+3.*CNTKN)*(2.*KAP+5.*KAPA*CNTKN+KAPA)
5105 CNTFT = CNTFT0*(KAP+2.5*CNTKN*KAPA)/CNTFT1
5106 CNTF1 = 4.*PI*NGCNT*NC1D*MVRC
5107 CNTF2 = KAP*(TC1D-TCC)/P1D
5108 IJCNT1 = -1.*CNTF1*CNTF2*RV*TK1D/(XXLV*RHO) ! DIFFUSIOPHORESIS
5109 IJCNT2 = CNTF1*CNTF2*CNTFT*iRHO ! THERMEOPHORESIS
5110 IJCNT3 = CNTF1*PSIA ! BROWNIAN DIFFUSION
5111 ! NNCci = MIN(MAX(0.,IJCNT1+IJCNT2+IJCNT3),NC1D*iDT)
5112 ! QNCci = NNCci*QC1D/NC1D
5113 ! VNCci = QNCci*iRHOI0
5114 ! FNCci = QNCci*1.*iAMI0 ! ISOMETRIC
5115 ! INCci = QNCci*iAMI0
5116 ! ANCci = (KCIMIN*NNCci*INCci**2.)**THRD
5118 IF (TK1D.LE.233.15.AND.QR1D.GE.QSMALL) THEN
5121 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5124 AHOrg = (KCGMAX*NHOrg*(QHOrg*V2M3/RHOG0)**2.)**THRD
5126 IF (TK1D.LT.269.15.AND.QR1D.GE.QSMALL) THEN
5127 QNMrg = QFZR1*BIMM*EXP(AIMM*(TK0C-TK1D)-1.)
5128 NNMrg = NFZR1*BIMM*EXP(AIMM*(TK0C-TK1D)-1.)
5129 QNMrg = MIN(QNMrg,QR1D*iDT)
5130 NNMrg = MIN(NNMrg,NR1D*iDT)
5131 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5134 ANMrg = AFZR1*BIMM*EXP(AIMM*(TK0C-TK1D)-1.)
5136 !------------------ AUTO-CONVERSION PROCESSES -------------------------
5137 IF (QI1D.GE.QSMALL.AND.MVDI.GE.1.E-5) THEN
5138 ! EII1 = 0.1*EXP(0.1*TC1D) ! STRAKA AND MANSELL (2005)
5139 EII1 = 10.**(3.5E-2*TC1D-0.7) ! BASEN ON COTTON ET AL. (1986)
5140 IF (ICE_RHOI.EQ.1) THEN
5141 EII2 = 1.-RHOI/RHOI0
5145 EII = MIN(MAX(EII1,EII2,0.),1.)
5146 IF ((ADAGR-1.).GE.SLIMIT) THEN
5147 QCNis = QCNI1*VTQI*EII*NI1D*(GIM2H1/DI0Z4+2.*GIMF1/ &
5149 NiCNis = NCNI1*VTNI*EII*NI1D*(GI2H1/DI0Z4+2.*GIF1/DI0Z1+&
5151 IF (AI1D.GE.ASMALL) THEN
5152 AiCNis = ACNI1*VTAI*EII*NI1D*(GI2H3/DI0Z4+2.*GIF3/ &
5155 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5156 FiCNis = FCNI1*VTFI*EII*NI1D/DI0Z3*(GIZM2H1/DI0Z4+2.*&
5157 GIZMF1/DI0Z1+DI0Z2*GIZM2G1)
5158 ICNis = FCNI1*VTI3M*EII*NI1D*(GIM2H1/DI0Z4+2.*GIMF1/ &
5161 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
5162 QCNis = QCNI1*VTQI*EII*NI1D*4.*DI0Z2*GIM2G1
5163 NiCNis = NCNI1*VTNI*EII*NI1D*4.*DI0Z2*GI2G1
5164 IF (AI1D.GE.ASMALL) THEN
5165 AiCNis = ACNI1*VTAI*EII*NI1D*4.*DI0Z2*GI2G3
5167 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5168 FiCNis = FCNI1*VTFI*EII*NI1D*4.*DI0Z2*GIZM2G1/DI0Z3
5169 ICNis = FCNI1*VTI3M*EII*NI1D*4.*DI0Z2*GIM2G1
5171 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
5172 QCNis = QCNI1*VTQI*EII*NI1D*4.*GIM3
5173 NiCNis = NCNI1*VTNI*EII*NI1D*4.*GI3
5174 IF (AI1D.GE.ASMALL) THEN
5175 AiCNis = ACNI1*VTAI*EII*NI1D*4.*GI5
5177 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5178 FiCNis = FCNI1*VTFI*EII*NI1D*4.*GIM3
5179 ICNis = FCNI1*VTI3M*EII*NI1D*4.*GIM3
5182 QCNis = MIN(2.*QCNis,QI1D*iDT)
5183 NsCNis = MIN(NiCNis,NI1D*iDT)
5184 NiCNis = MIN(2.*NiCNis,NI1D*iDT)
5185 AiCNis = MIN(2.*AiCNis,AI1D*iDT)
5186 FiCNis = MIN(2.*FiCNis,FI1D*iDT)
5187 ICNis = MIN(2.*ICNis,I3M1D*iDT)
5188 ViCNis = MIN(QCNis*iRHOI,VI1D*iDT)
5189 IF (ICE_RHOS.EQ.1.OR.AGG_SHAPE.EQ.1) THEN
5190 LIM1 = 0.7*(1.-RHOI/RHOI0) ! CONTACT ANGLE = 45
5191 LIM2 = SQRT(1.-LIM1*LIM1)
5192 LIM3 = (1.+2.*ISEPS+ISEPS**2.+ISEPL+2.*ISEPS*ISEPL+ &
5195 LIM5 = LIM3*LIM2**2.
5197 LIM7 = 2.*LIM3*LIM2**2.
5198 LIM8 = LIM3*LIM2**3.
5199 LIMA = (1.+2.*ISEPL+ISEPL**2.+ISEPS+2.*ISEPL*ISEPS+ &
5203 LIMD = 2.*LIMA*LIM2**2.
5204 LIME = LIMA*LIM2**2.
5205 LIMF = LIMA*LIM2**3.
5206 DICC = DI0**(-6.*ZETA)*GI3H1
5212 IF ((ADAGR-1.).GE.SLIMIT) THEN
5213 DILSV = (LIMA+LIMB+LIMC+LIMD+LIME+LIMF)*DICA
5214 DILSF = (LIM3+LIM4+LIM5+LIM6+LIM7+LIM8)*DIAC
5215 SASP1 = MIN((1.+LIM2+ISEPS+ISEPS*LIM2)*DIA0,(1.+ &
5216 LIM2+ISEPL+ISEPL*LIM2)*DIC0)/MAX((1.+LIM2+ &
5217 ISEPS+ISEPS*LIM2)*DIA0,(1.+LIM2+ISEPL+ISEPL* &
5219 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
5220 DILSV = (LIMA+LIMB+LIMC+LIMD+LIME+LIMF)*DIAC
5221 DILSF = (LIM3+LIM4+LIM5+LIM6+LIM7+LIM8)*DICA
5222 SASP1 = MIN((1.+LIM2+ISEPS+ISEPS*LIM2)*DIC0,(1.+ &
5223 LIM2+ISEPL+ISEPL*LIM2)*DIA0)/MAX((1.+LIM2+ &
5224 ISEPS+ISEPS*LIM2)*DIC0,(1.+LIM2+ISEPL+ISEPL* &
5226 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
5227 DILSV = (LIMA+LIMB+LIMC+LIMD+LIME+LIMF)*GI4
5228 DILSF = (LIM3+LIM4+LIM5+LIM6+LIM7+LIM8)*GI4
5229 SASP1 = MIN(1.+LIM2+ISEPS+ISEPS*LIM2,1.+LIM2+ISEPL+ &
5230 ISEPL*LIM2)/MAX(1.+LIM2+ISEPS+ISEPS*LIM2,1.+ &
5231 LIM2+ISEPL+ISEPL*LIM2)
5233 DNIAG = 2.*AMI*GIM1*V2M3/DILSV
5234 VsCNis = NiCNis*DILSV/V2M3
5235 FsCNis = NiCNis*DILSF
5236 RATIO = (RHOI/DNIAG)**THRD
5240 IF ((ADAGR-1.).GE.SLIMIT) THEN
5241 AsCNis = ACNI1*VTAI*EII*NI1D*(GI2H3/DI0Z4+2.*GIF3/DI0Z1+&
5242 DI0Z2*GI2G3)*1.5874*RATIO**2.
5243 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
5244 AsCNis = ACNI1*VTAI*EII*NI1D*4.*DI0Z2*GI2G3*1.5874* &
5246 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
5247 AsCNis = ACNI1*VTAI*EII*NI1D*4.*GI5*1.5874*RATIO**2.
5250 IF (QG1D.GE.QSMALL) THEN
5251 DSLL = 2.*1.E-2*(EXP(MIN(20.,-TC1D/(1.1E4*(QC1D+QR1D)- &
5252 1.3E3*QG1D+1.)))-1.)
5253 DSLL = MIN(1.,MAX(1.E-4,DSLL))
5254 IF (AFAG.LE.20.) THEN
5255 RATIO = MIN(1.,MAX(0.,ABS(GAMMP(AFAG+1.,DSLL*LAMG))))
5256 NGTAL = NG1D*(1.-RATIO)
5257 IF (NGTAL.GE.NSMALL) THEN
5258 QCNgh = MIN((1.-RATIO)*QG1D*iDT,QG1D*iDT)
5259 NgCNgh = MIN((1.-RATIO)*NG1D*iDT,NG1D*iDT)
5260 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5261 VCNgh = MIN((1.-RATIO)*VG1D*iDT,VG1D*iDT)
5263 IF (AG1D.GE.ASMALL) THEN
5264 AgCNgh = MIN((1.-RATIO)*AG1D*iDT,AG1D*iDT)
5268 IF (MVDG.GE.DSLL) THEN
5271 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5274 IF (AG1D.GE.ASMALL) THEN
5279 NhCNgh = QCNgh/(AMH*DHMIN**BMH)
5280 AhCNgh = (KCHMIN*NhCNgh*(QCNgh*iAMH)**2.)**THRD
5282 !----------------- RIMING OF CLOUD DROPLETS ----------------------------
5283 IF (QI1D.GE.QSMALL.AND.QC1D.GE.QSMALL) THEN
5289 VTQIC = SQRT(VTQ0*VTQ0+0.04*VTQI*VTQC)
5290 VTNIC = SQRT(VTN0*VTN0+0.04*VTNI*VTNC)
5291 VTAIC = SQRT(VTAX*VTAX+0.04*VTAI*VTAC)
5292 VTVIC = SQRT(VTV0*VTV0+0.04*VTVI*VTQC)
5293 VTFIC = SQRT(VTF0*VTF0+0.04*VTFI*VTQC)
5294 IF (ICE_RHOG.EQ.0) THEN
5296 ELSEIF (ICE_RHOG.EQ.1) THEN
5297 DNRI = MIN(MAX(-5.E5*MVDC*VTQIC/TC1D,0.),6.)
5298 DNIRM = 1.E3*(0.078+0.184*DNRI-0.015*DNRI**2.)
5299 ELSEIF (ICE_RHOG.EQ.2) THEN
5300 DNIRM = 3.E2*(-5.E5*MVDC*0.6*VTQIC/TC1D)**0.44
5302 DNIRM = MIN(MAX(DNIRM,RHOIMIN),RHOG0)
5303 RHOIW = (QI1D+QC1D)/(QI1D/RHOI+QC1D/RHOW+ISMALL)
5304 RATIO = (RHOIW/RHOI)**THRD
5305 MVDX = MAX((MVDC**3.+MVDI**3.)**THRD*RATIO,MVDI)
5306 IF ((ADAGR-1.).GE.SLIMIT.AND.MVDI.GE.1.E-4) THEN
5307 WBIN = MIN(MAX(NINT(MVDC*1.E6/10.),0),20)
5308 CNRE = VTQI*DI0**(-2.*ZETA)*MVDI**IPH*RHO/MUA
5309 IF (CNRE.LT.0.4) CBIN = 0
5310 IF (CNRE.GE.0.4.AND.CNRE.LT.0.6) CBIN = 1
5311 IF (CNRE.GE.0.6.AND.CNRE.LT.0.9) CBIN = 2
5312 IF (CNRE.GE.0.9.AND.CNRE.LT.1.5) CBIN = 3
5313 IF (CNRE.GE.1.5.AND.CNRE.LT.3.5) CBIN = 4
5314 IF (CNRE.GE.3.5.AND.CNRE.LT.7.5) CBIN = 5
5315 IF (CNRE.GE.7.5.AND.CNRE.LT.15.) CBIN = 6
5316 IF (CNRE.GE.15.) CBIN = 7
5317 CBIN = MIN(MAX(CBIN,0),7)
5318 ECI = MAX(0.,IECC(CBIN*21+WBIN))
5319 QRMci = QRMC1*ECI*VTQIC*NI1D*(GIF1*GC4/DI0Z1+GIG1*GC5* &
5320 DI0Z1+GIH1*GC5/DI0Z2+GC6)
5321 NRMci = NRMC1*ECI*VTNIC*NI1D*(GIF1/DI0Z1+GIG1*GC2*DI0Z1+&
5323 IF (AI1D.GE.ASMALL) THEN
5324 ARMci = (MVDX**2.-MVDI**2.)*NRMC1*ECI*VTAIC*NI1D*( &
5325 GIF1/DI0Z1+GIG1*GC2*DI0Z1+GIH1*GC2/DI0Z2+GC3)
5327 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5328 FRMci = FRMC1*ECI*VTFIC*NI1D/DNIRM/8./DI0Z3*(GIZF1* &
5329 GC4/DI0Z1+GIZG1*GC5*DI0Z1+GIZH1*GC5/DI0Z2+ &
5331 IRMci = IRMC1*ECI*VTVIC*NI1D/DNIRM*(GIF1*GC4/DI0Z1+ &
5332 GIG1*GC5*DI0Z1+GIH1*GC5/DI0Z2+GC6)
5334 ELSEIF ((1.-ADAGR).GE.SLIMIT.AND.MVDI.GE.1.5E-4) THEN
5335 WBIN = MIN(MAX(NINT(MVDC*1.E6/10.),0),20)
5336 PNRE = VTQI*DI0**ZETA*MVDI**IPG*RHO/MUA
5337 IF (PNRE.LT.1.5) PBIN = 0
5338 IF (PNRE.GE.1.5.AND.PNRE.LT.6.0) PBIN = 1
5339 IF (PNRE.GE.6.0.AND.PNRE.LT.15.) PBIN = 2
5340 IF (PNRE.GE.15..AND.PNRE.LT.28.) PBIN = 3
5341 IF (PNRE.GE.28..AND.PNRE.LT.43.) PBIN = 4
5342 IF (PNRE.GE.43..AND.PNRE.LT.70.) PBIN = 5
5343 IF (PNRE.GE.70..AND.PNRE.LT.105.) PBIN = 6
5344 IF (PNRE.GE.105.) PBIN = 7
5345 PBIN = MIN(MAX(PBIN,0),7)
5346 ECI = MAX(0.,IEPC(PBIN*21+WBIN))
5347 QRMci = QRMC1*ECI*VTQIC*NI1D*(GI2G1*GC4*DI0Z2+2.*GIG1* &
5349 NRMci = NRMC1*ECI*VTNIC*NI1D*(GI2G1*DI0Z2+2.*GIG1*GC2* &
5351 IF (AI1D.GE.ASMALL) THEN
5352 ARMci = (MVDX**2.-MVDI**2.)*NRMC1*ECI*VTAIC*NI1D*( &
5353 GI2G1*DI0Z2+2.*GIG1*GC2*DI0Z1+GC3)
5355 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5356 FRMci = FRMC1*ECI*VTFIC*NI1D/DNIRM/2./DI0Z3*(GIZ2G1* &
5357 GC4*DI0Z2+2.*GIZG1*GC5*DI0Z1+GIZ1*GC6)
5358 IRMci = IRMC1*ECI*VTVIC*NI1D/DNIRM*(GI2G1*GC4*DI0Z2+ &
5359 2.*GIG1*GC5*DI0Z1+GC6)
5361 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT.AND.MVDI.GE.2.E-4) THEN
5363 QRMci = QRMC1*ECI*VTQIC*NI1D*(GI3*GC4+2.*GI2*GC5+GC6)
5364 NRMci = NRMC1*ECI*VTNIC*NI1D*(GI3+2.*GI2*GC2+GC3)
5365 IF (AI1D.GE.ASMALL) THEN
5366 ARMci = (MVDX**2.-MVDI**2.)*NRMC1*ECI*VTAIC*NI1D*( &
5369 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5370 FRMci = FRMC1*ECI*VTFIC*NI1D/DNIRM/4.*(GI3*GC4+2.* &
5372 IRMci = IRMC1*ECI*VTVIC*NI1D/DNIRM*(GI3*GC4+2.*GI2* &
5376 QRMci = MIN(QRMci,QC1D*iDT)
5377 NRMci = MIN(NRMci,NC1D*iDT)
5379 FRMci = MIN(FRMci,QC1D*iDT/AMW)
5380 IRMci = MIN(IRMci,QC1D*iDT/AMW)
5381 ARMci = MAX(0.,MIN(ARMci,QC1D*iDT*iAPW/MVDC))
5382 IF (QRMci.GT.0.) THEN
5383 QINig = MIN(2.*QRMci,QI1D*iDT)
5384 NINig = MIN(QINig*NI1D/QI1D,NI1D*iDT)
5385 ViINig = MIN(VRMci+QRMci*VI1D/QI1D,VI1D*iDT)
5386 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5389 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5390 FINig = MIN(FRMci+QRMci*FI1D/QI1D,FI1D*iDT)
5391 IINig = MIN(IRMci+QRMci*I3M1D/QI1D,I3M1D*iDT)
5393 IF (AI1D.GE.ASMALL) THEN
5394 AiINig = MIN(ARMci+QRMci*AI1D/QI1D,AI1D*iDT)
5395 AgINig = (KCGMAX*NINig*(QINig*V2M3/DNIRM)**2.)**THRD
5399 IF (QS1D.GE.QSMALL.AND.QC1D.GE.QSMALL.AND.MVDS.GE.1.5E-4) THEN
5400 ECS = MIN(MVDC,3.E-5)*3.333E4*SQRT(MIN(MVDS,1.E-3)*1.E3) ! Pruppacher&Klett(1997) Fig.14-11
5405 VTQSC = SQRT(VTQ0*VTQ0+0.04*VTQS*VTQC)
5406 VTNSC = SQRT(VTN0*VTN0+0.04*VTNS*VTNC)
5407 VTASC = SQRT(VTAX*VTAX+0.04*VTAS*VTAC)
5408 VTVSC = SQRT(VTV0*VTV0+0.04*VTVS*VTQC)
5409 IF (ICE_RHOG.EQ.0) THEN
5411 ELSEIF (ICE_RHOG.EQ.1) THEN
5412 DNRI = MIN(MAX(-5.E5*MVDC*VTQSC/TC1D,0.),6.)
5413 DNSRM = 1.E3*(0.078+0.184*DNRI-0.015*DNRI**2.)
5414 ELSEIF (ICE_RHOG.EQ.2) THEN
5415 DNSRM = 3.E2*(-5.E5*MVDC*0.6*VTQSC/TC1D)**0.44
5417 DNSRM = MIN(MAX(DNSRM,RHOIMIN),RHOG0)
5418 RHOSW = (QS1D+QC1D)/(QS1D/RHOS+QC1D/RHOW+ISMALL)
5419 RATIO = (RHOSW/RHOS)**THRD
5420 MVDX = MAX((MVDC**3.+MVDS**3.)**THRD*RATIO,MVDS)
5421 QRMcs = QRMC1*ECS*VTQSC*NS1D*(SASR2*GS3*GC4+SASR1*2.*GS2* &
5423 NRMcs = NRMC1*ECS*VTNSC*NS1D*(SASR2*GS3+SASR1*2.*GS2*GC2+ &
5425 QRMcs = MIN(QRMcs,QC1D*iDT)
5426 NRMcs = MIN(NRMcs,NC1D*iDT)
5427 IF (ICE_RHOS.EQ.1) THEN
5430 IF (AGG_SHAPE.EQ.1) THEN
5431 FRMcs = FRMC1*ECS*VTVSC*NS1D*SASPR/DNSRM/2.*(SASR2*GS3* &
5432 GC4+SASR1*2.*GS2*GC5+GC6)
5433 FRMcs = MIN(FRMcs,QC1D*iDT/AMW)
5435 IF (AS1D.GE.ASMALL) THEN
5436 ARMcs = (MVDX**2.-MVDS**2.)*NRMC1*ECS*VTASC*NS1D*(SASR2*&
5437 GS3+SASR1*2.*GS2*GC2+GC3)
5438 ARMcs = MAX(0.,MIN(ARMcs,QC1D*iDT*iAPW/MVDC))
5440 IF (QRMcs.GT.0.) THEN
5441 NIMcsi = 3.5E8*QRMcs*FF
5442 QIMcsi = MIN(NIMcsi*MI0,QRMcs)
5443 VIMcsi = QIMcsi*iRHOI0
5444 FIMcsi = QIMcsi*1.*iAMI0
5445 IIMcsi = QIMcsi*iAMI0
5446 AIMcsi = (KCIMIN*NIMcsi*IIMcsi**2.)**THRD
5447 QINsg = MIN(2.*QRMcs,QS1D*iDT)
5448 NINsg = MIN(QINsg*NS1D/QS1D,NS1D*iDT)
5449 IF (ICE_RHOS.EQ.1) THEN
5450 VsINsg = MIN(VRMcs+QRMcs*VS1D/QS1D,VS1D*iDT)
5452 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5455 IF (AGG_SHAPE.EQ.1) THEN
5456 FINsg = MIN(FRMcs+QRMcs*FS1D/QS1D,FS1D*iDT)
5458 IF (AS1D.GE.ASMALL) THEN
5459 AsINsg = MIN(ARMcs+QRMcs*AS1D/QS1D,AS1D*iDT)
5460 AgINsg = (KCGMAX*NINsg*(QINsg*V2M3/DNSRM)**2.)**THRD
5464 IF (QG1D.GE.QSMALL.AND.QC1D.GE.QSMALL.AND.MVDG.GE.2.E-4) THEN
5465 STOKE = (RHOW*VTQG*MVDC**2.)/(9.*MUA*MVDG)
5466 STOKE = MAX(1.5,MIN(10.,STOKE))
5467 ECG = 5.5E-1*LOG10(2.51*STOKE) ! parameterization based on Cober and List,1993 [JAS]
5471 VTQGC = SQRT(VTQ0*VTQ0+0.04*VTQG*VTQC)
5472 VTNGC = SQRT(VTN0*VTN0+0.04*VTNG*VTNC)
5473 VTAGC = SQRT(VTAX*VTAX+0.04*VTAG*VTAC)
5474 IF (ICE_RHOG.EQ.0) THEN
5476 ELSEIF (ICE_RHOG.EQ.1) THEN
5477 DNRI = MIN(MAX(-5.E5*MVDC*VTQGC/TC1D,0.),6.)
5478 DNGRM = 1.E3*(0.078+0.184*DNRI-0.015*DNRI**2.)
5479 ELSEIF (ICE_RHOG.EQ.2) THEN
5480 DNGRM = 3.E2*(-5.E5*MVDC*0.6*VTQGC/TC1D)**0.44
5482 DNGRM = MIN(MAX(DNGRM,RHOIMIN),RHOG0)
5483 RHOGW = (QG1D+QC1D)/(QG1D/RHOG+QC1D/RHOW+ISMALL)
5484 RATIO = (RHOGW/RHOG)**THRD
5485 MVDX = MAX((MVDC**3.+MVDG**3.)**THRD*RATIO,MVDG)
5486 QRMcg = QRMC1*ECG*VTQGC*NG1D*(GG3*GC4+2.*GG2*GC5+GC6)
5487 NRMcg = NRMC1*ECG*VTNGC*NG1D*(GG3+2.*GG2*GC2+GC3)
5488 QRMcg = MIN(QRMcg,QC1D*iDT)
5489 NRMcg = MIN(NRMcg,NC1D*iDT)
5490 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5493 IF (AG1D.GE.ASMALL) THEN
5494 ARMcg = (MVDX**2.-MVDG**2.)*NRMC1*ECG*VTAGC*NG1D*(GG3+ &
5496 ARMcg = MAX(0.,MIN(ARMcg,QC1D*iDT*iAPW/MVDC))
5498 IF (QRMcg.GT.0.) THEN
5499 NIMcgi = 3.5E8*QRMcg*FF
5500 QIMcgi = MIN(NIMcgi*MI0,QRMcg)
5501 VIMcgi = QIMcgi*iRHOI0
5502 FIMcgi = QIMcgi*1.*iAMI0
5503 IIMcgi = QIMcgi*iAMI0
5504 AIMcgi = (KCIMIN*NIMcgi*IIMcgi**2.)**THRD
5507 IF (QH1D.GE.QSMALL.AND.QC1D.GE.QSMALL) THEN
5508 ECH = EXP(-8.68E-7*MVDC**(-1.6)*MVDH) ! Ziegler (1985) A24
5512 VTQHC = SQRT(VTQ0*VTQ0+0.04*VTQH*VTQC)
5513 VTNHC = SQRT(VTN0*VTN0+0.04*VTNH*VTNC)
5514 VTAHC = SQRT(VTAX*VTAX+0.04*VTAH*VTAC)
5515 RHOHW = (QH1D+QC1D)/(QH1D/RHOH+QC1D/RHOW+ISMALL)
5516 RATIO = (RHOHW/RHOH)**THRD
5517 MVDX = MAX((MVDC**3.+MVDH**3.)**THRD*RATIO,MVDH)
5518 QRMch = QRMC1*ECH*VTQHC*NH1D*(GH3*GC4+2.*GH2*GC5+GC6)
5519 NRMch = NRMC1*ECH*VTNHC*NH1D*(GH3+2.*GH2*GC2+GC3)
5520 QRMch = MIN(QRMch,QC1D*iDT)
5521 NRMch = MIN(NRMch,NC1D*iDT)
5522 IF (AH1D.GE.ASMALL) THEN
5523 ARMch = (MVDX**2.-MVDH**2.)*NRMC1*ECH*VTAHC*NH1D*(GH3+ &
5525 ARMch = MAX(0.,MIN(ARMch,QC1D*iDT*iAPW/MVDC))
5528 !----------------- RIMING/COLLECTION OF RAIN DROPS ---------------------
5529 IF (QR1D.GE.QSMALL.AND.QI1D.GE.QSMALL) THEN
5536 VTQRI = SQRT(VTQ0*VTQ0+0.04*VTQR*VTQI)
5537 VTNRI = SQRT(VTN0*VTN0+0.04*VTNR*VTNI)
5538 VTARI = SQRT(VTAX*VTAX+0.04*VTAR*VTAI)
5539 VTVRI = SQRT(VTV0*VTV0+0.04*VTQR*VTVI)
5540 VTFRI = SQRT(VTF0*VTF0+0.04*VTQR*VTFI)
5541 IF ((ADAGR-1.).GE.SLIMIT.AND.MVDR.GE.MVDI) THEN
5542 QCLir = QCLI1*ERI*VTQRI*NR1D*(GIMF1/DI0Z1+GIMG1*GR2* &
5543 DI0Z1+GIMH1*GR2/DI0Z2+GIM1*GR3)
5544 NCLir = NCLI1*ERI*VTNRI*NR1D*(GIF1/DI0Z1+GIG1*GR2*DI0Z1+&
5546 IF (AI1D.GE.ASMALL) THEN
5547 ACLir = ACLI1*ERI*VTARI*NR1D*(GIF3/DI0Z1+GIG3*GR2* &
5548 DI0Z1+GIH3*GR2/DI0Z2+GI3*GR3)
5550 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5551 FCLir = FCLI1*ERI*VTFRI*NR1D*(GIZMF1/DI0Z1+GIZMG1* &
5552 GR2*DI0Z1+GIZMH1*GR2/DI0Z2+GIZM1*GR3)
5553 ICLir = NCLI1*ERI*VTVRI*NR1D*(GIMF1/DI0Z1+GIMG1*GR2* &
5554 DI0Z1+GIMH1*GR2/DI0Z2+GIM1*GR3)
5556 ELSEIF ((1.-ADAGR).GE.SLIMIT.AND.MVDR.GE.MVDI) THEN
5557 QCLir = QCLI1*ERI*VTQRI*NR1D*(GIM2G1*DI0Z2+2.*GIMG1*GR2*&
5559 NCLir = NCLI1*ERI*VTNRI*NR1D*(GI2G1*DI0Z2+2.*GIG1*GR2* &
5561 IF (AI1D.GE.ASMALL) THEN
5562 ACLir = ACLI1*ERI*VTARI*NR1D*(GI2G3*DI0Z2+2.*GIG3* &
5565 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5566 FCLir = FCLI1*ERI*VTFRI*NR1D*(GIZM2G1*DI0Z2+2.* &
5567 GIZMG1*GR2*DI0Z1+GIZM1*GR3)
5568 ICLir = NCLI1*ERI*VTVRI*NR1D*(GIM2G1*DI0Z2+2.*GIMG1* &
5571 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT.AND.MVDR.GE.MVDI) THEN
5572 QCLir = QCLI1*ERI*VTQRI*NR1D*(GIM3+2.*GIM2*GR2+GIM1*GR3)
5573 NCLir = NCLI1*ERI*VTNRI*NR1D*(GI3+2.*GI2*GR2+GR3)
5574 IF (AI1D.GE.ASMALL) THEN
5575 ACLir = ACLI1*ERI*VTARI*NR1D*(GI5+2.*GI4*GR2+GI3*GR3)
5577 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5578 FCLir = NCLI1*ERI*VTFRI*NR1D*(GIM3+2.*GIM2*GR2+GIM1* &
5580 ICLir = NCLI1*ERI*VTVRI*NR1D*(GIM3+2.*GIM2*GR2+GIM1* &
5584 QCLir = MIN(QCLir,QI1D*iDT)
5585 NCLir = MIN(NCLir,NI1D*iDT)
5586 VCLir = MIN(QCLir*iRHOI,VI1D*iDT)
5587 ACLir = MIN(ACLir,AI1D*iDT)
5588 FCLir = MIN(FCLir,FI1D*iDT)
5589 ICLir = MIN(ICLir,I3M1D*iDT)
5590 IF (ICE_RHOG.EQ.0) THEN
5592 ELSEIF (ICE_RHOG.EQ.1) THEN
5593 DNRI = MIN(MAX(-5.E5*MVDR*VTQRI/TC1D,0.),6.)
5594 DNIRM = 1.E3*(0.078+0.184*DNRI-0.015*DNRI**2.)
5595 ELSEIF (ICE_RHOG.EQ.2) THEN
5596 DNIRM = 3.E2*(-5.E5*MVDR*0.6*VTQRI/TC1D)**0.44
5598 DNIRM = MIN(MAX(DNIRM,RHOIMIN),RHOG0)
5599 RHOIW = (QI1D+QR1D)/(QI1D/RHOI+QR1D/RHOW+ISMALL)
5600 RATIO = (RHOIW/DNIRM)**THRD
5601 IF (MVDI.GE.MVDR) THEN
5602 IF ((ADAGR-1.).GE.SLIMIT.AND.MVDI.GE.1.E-4) THEN
5603 QRMri = QRMR1*ERI*VTQRI*NI1D*(GIF1*GR4/DI0Z1+GIG1*GR5* &
5604 DI0Z1+GIH1*GR5/DI0Z2+GR6)
5605 NRMri = NRMR1*ERI*VTNRI*NI1D*(GIF1/DI0Z1+GIG1*GR2*DI0Z1+&
5607 ELSEIF ((1.-ADAGR).GE.SLIMIT.AND.MVDI.GE.1.5E-4) THEN
5608 QRMri = QRMR1*ERI*VTQRI*NI1D*(GI2G1*GR4*DI0Z2+2.*GIG1* &
5610 NRMri = NRMR1*ERI*VTNRI*NI1D*(GI2G1*DI0Z2+2.*GIG1*GR2* &
5612 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT.AND.MVDI.GE.2.E-4) THEN
5613 QRMri = QRMR1*ERI*VTQRI*NI1D*(GI3*GR4+2.*GI2*GR5+GR6)
5614 NRMri = NRMR1*ERI*VTNRI*NI1D*(GI3+2.*GI2*GR2+GR3)
5616 QRMri = MIN(QRMri,QR1D*iDT)
5617 NRMri = MIN(NRMri,NR1D*iDT)
5619 MVDX = MAX((MVDR**3.+MVDI**3.)**THRD*RATIO,MVDI,MVDR)
5620 QCLirg = QRMri+QCLir
5621 NCLirg = QCLirg*V2M3/(DNIRM*(RATIO*MVDX)**3.)
5622 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5623 VCLirg = QCLirg/DNIRM
5625 ACLirg = (KCIMIN*NCLirg*(QCLirg*V2M3/DNIRM)**2.)**THRD
5627 IF (QR1D.GE.QSMALL.AND.QS1D.GE.QSMALL) THEN
5632 VTQRS = SQRT(VTQ0*VTQ0+0.04*VTQR*VTQS)
5633 VTNRS = SQRT(VTN0*VTN0+0.04*VTNR*VTNS)
5634 VTARS = SQRT(VTAX*VTAX+0.04*VTAR*VTAS)
5635 IF (ICE_RHOG.EQ.0) THEN
5637 ELSEIF (ICE_RHOG.EQ.1) THEN
5638 DNRI = MIN(MAX(-5.E5*MVDR*VTQRS/TC1D,0.),6.)
5639 DNSRM = 1.E3*(0.078+0.184*DNRI-0.015*DNRI**2.)
5640 ELSEIF (ICE_RHOG.EQ.2) THEN
5641 DNSRM = 3.E2*(-5.E5*MVDR*0.6*VTQRS/TC1D)**0.44
5643 DNSRM = MIN(MAX(DNSRM,RHOIMIN),RHOG0)
5644 RHOSW = (QS1D+QR1D)/(QS1D/RHOS+QR1D/RHOW+ISMALL)
5645 RATIO = (RHOSW/DNSRM)**THRD
5646 IF (MVDS.GE.2.E-4.AND.MVDS.GE.MVDR) THEN
5647 QRMrs = QRMR1*ERS*VTQRS*NS1D*(SASR2*GS3*GR4+SASR1*2.* &
5649 NRMrs = NRMR1*ERS*VTNRS*NS1D*(SASR2*GS3+SASR1*2.*GS2* &
5651 QRMrs = MIN(QRMrs,QR1D*iDT)
5652 NRMrs = MIN(NRMrs,NR1D*iDT)
5654 IF (MVDR.GE.MVDS) THEN
5655 QCLsr = QCLS1*ERS*VTQRS*NR1D*(SASR2*GSM3+SASR1*2.*GR2* &
5657 NCLsr = NCLS1*ERS*VTNRS*NR1D*(SASR2*GS3+SASR1*2.*GR2* &
5659 QCLsr = MIN(QCLsr,QS1D*iDT)
5660 NCLsr = MIN(NCLsr,NS1D*iDT)
5661 IF (ICE_RHOS.EQ.1) THEN
5662 VCLsr = MIN(QCLsr*iRHOS,VS1D*iDT)
5664 IF (AGG_SHAPE.EQ.1) THEN
5665 FCLsr = MIN(QCLsr*iRHOS*SASPR*V2M3,FS1D*iDT)
5667 IF (AS1D.GE.ASMALL) THEN
5668 ACLsr = ACLS1*ERS*VTARS*NR1D*(SASR2*GS5+SASR1*2.*GR2*&
5670 ACLsr = MIN(ACLsr,AS1D*iDT)
5673 IF (QRMrs.GT.0.) THEN
5674 NIMrsi = 3.5E8*QRMrs*FF
5675 QIMrsi = MIN(NIMrsi*MI0,QRMrs)
5676 VIMrsi = QIMrsi*iRHOI0
5677 FIMrsi = QIMrsi*1.*iAMI0
5678 IIMrsi = QIMrsi*iAMI0
5679 AIMrsi = (KCIMIN*NIMrsi*IIMrsi**2.)**THRD
5681 MVDX = MAX((MVDR**3.+MVDS**3.)**THRD*RATIO,MVDR,MVDS)
5682 QCLsrg = QRMrs+QCLsr
5683 NCLsrg = QCLsrg*V2M3/(DNSRM*(RATIO*MVDX)**3.)
5684 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5685 VCLsrg = QCLsrg/DNSRM
5687 ACLsrg = (KCIMIN*NCLsrg*(QCLsrg*V2M3/DNSRM)**2.)**THRD
5689 IF (QR1D.GE.QSMALL.AND.QG1D.GE.QSMALL) THEN
5693 VTQRG = SQRT(VTQ0*VTQ0+0.04*VTQR*VTQG)
5694 VTNRG = SQRT(VTN0*VTN0+0.04*VTNR*VTNG)
5695 VTARG = SQRT(VTAX*VTAX+0.04*VTAR*VTAG)
5696 RHOGW = (QG1D+QR1D)/(QG1D/RHOG+QR1D/RHOW+ISMALL)
5697 RATIO = (RHOGW/DNGRM)**THRD
5698 STOKE = (RHOW*ABS(VTQ0)*MVDR**2.)/(9.*MUA*MVDG)
5699 STOKE = MAX(1.5,MIN(10.,STOKE))
5700 ERG = 5.5E-1*LOG10(2.51*STOKE) ! parameterization based on Cober and List, 1993 [JAS]
5701 IF (ICE_RHOG.EQ.0) THEN
5703 ELSEIF (ICE_RHOG.EQ.1) THEN
5704 DNRI = MIN(MAX(-5.E5*MVDR*VTQRG/TC1D,0.),6.)
5705 DNGRM = 1.E3*(0.078+0.184*DNRI-0.015*DNRI**2.)
5706 ELSEIF (ICE_RHOG.EQ.2) THEN
5707 DNGRM = 3.E2*(-5.E5*MVDR*0.6*VTQRG/TC1D)**0.44
5709 DNGRM = MIN(MAX(DNGRM,RHOIMIN),RHOG0)
5710 IF (MVDG.GE.2.E-4.AND.MVDG.GE.MVDR) THEN
5711 QRMrg = QRMR1*ERG*VTQRG*NG1D*(GG3*GR4+2.*GG2*GR5+GR6)
5712 NRMrg = NRMR1*ERG*VTNRG*NG1D*(GG3+2.*GG2*GR2+GR3)
5713 QRMrg = MIN(QRMrg,QR1D*iDT)
5714 NRMrg = MIN(NRMrg,NR1D*iDT)
5715 IF (AG1D.GE.ASMALL) THEN
5716 MVDX = MAX((MVDR**3.+MVDG**3.)**THRD*RATIO,MVDG)
5717 ARMrg = (MVDX**2.-MVDG**2.)*NRMR1*ERG*VTARG*NG1D*( &
5719 ARMrg = MIN(ARMrg,QR1D*iDT*iAPW/MVDR)
5722 IF (MVDR.GE.MVDG) THEN
5723 QCLgr = QCLG1*ERG*VTQRG*NR1D*(GGM3+2.*GR2*GGM2+GR3*GGM1)
5724 NCLgr = NCLG1*ERG*VTNRG*NR1D*(GG3+2.*GR2*GG2+GR3)
5725 QCLgr = MIN(QCLgr,QG1D*iDT)
5726 NCLgr = MIN(NCLgr,NG1D*iDT)
5727 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5728 VCLgr = MIN(QCLgr*iRHOG,VG1D*iDT)
5730 IF (AG1D.GE.ASMALL) THEN
5731 ACLgr = ACLG1*ERG*VTARG*NR1D*(GG5+2.*GR2*GG4+GR3*GG3)
5732 ACLgr = MIN(ACLgr,AG1D*iDT)
5735 IF (QRMrg.GT.0.) THEN
5736 NIMrgi = 3.5E8*QRMrg*FF
5737 QIMrgi = MIN(NIMrgi*MI0,QRMrg)
5738 VIMrgi = QIMrgi*iRHOI0
5739 FIMrgi = QIMrgi*1.*iAMI0
5740 IIMrgi = QIMrgi*iAMI0
5741 AIMrgi = (KCIMIN*NIMrgi*IIMrgi**2.)**THRD
5743 MVDX = MAX((MVDR**3.+MVDG**3.)**THRD*RATIO,MVDR,MVDG)
5744 QCLgrg = QRMrg+QCLgr
5745 NCLgrg = QCLgrg*V2M3/(DNGRM*(RATIO*MVDX)**3.)
5746 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
5747 VCLgrg = QCLgrg/DNGRM
5749 ! ACLgrg = (KCIMIN*NCLgrg*(QCLgrg*V2M3/DNGRM)**2.)**THRD
5750 ACLgrg = ARMrg+ACLgr
5752 IF (QH1D.GE.QSMALL.AND.QR1D.GE.QSMALL.AND.MVDH.GE.MVDR) THEN
5757 VTQRH = SQRT(VTQ0*VTQ0+0.04*VTQR*VTQH)
5758 VTNRH = SQRT(VTN0*VTN0+0.04*VTNR*VTNH)
5759 VTARH = SQRT(VTAX*VTAX+0.04*VTAR*VTAH)
5760 RHOHW = (QH1D+QR1D)/(QH1D/RHOH+QR1D/RHOW+ISMALL)
5761 RATIO = (RHOHW/RHOH)**THRD
5762 MVDX = MAX((MVDR**3.+MVDH**3.)**THRD*RATIO,MVDH)
5763 QRMrh = QRMR1*ERH*VTQRH*NH1D*(GH3*GR4+2.*GH2*GR5+GR6)
5764 NRMrh = NRMR1*ERH*VTNRH*NH1D*(GH3+2.*GH2*GR2+GR3)
5765 QRMrh = MIN(QRMrh,QR1D*iDT)
5766 NRMrh = MIN(NRMrh,NR1D*iDT)
5767 IF (AH1D.GE.ASMALL) THEN
5768 ARMrh = (MVDX**2.-MVDH**2.)*NRMR1*ERH*VTARH*NH1D*(GH3+ &
5770 ARMrh = MIN(ARMrh,QR1D*iDT*iAPW/MVDR)
5773 !----------------- ICE-PHASE COLLECTION&CONVERSION*INITILIZATION -------
5774 IF (QS1D.GE.QSMALL.AND.QI1D.GE.QSMALL.AND.MVDS.GE.MVDI) THEN
5775 ! EIS1 = MIN(1.,0.05*EXP(0.1*TC1D)) ! FERRIER ET AL., 1995
5776 EIS1 = 10.**(3.5E-2*TC1D-0.7)
5777 RHOIS = (QI1D+QS1D)/(QI1D/RHOI+QS1D/RHOS+ISMALL)
5778 IF (ICE_RHOI.NE.2.AND.ICE_RHOS.NE.0) THEN
5779 EIS2 = 1.-RHOIS/RHOI0
5783 EIS = MIN(MAX(EIS1,EIS2,0.),1.)
5784 RATIO = (RHOIS/RHOS)**THRD
5785 MVDX = MAX((MVDI**3.+MVDS**3.)**THRD*RATIO,MVDS)
5790 VTQIS = SQRT(VTQ0*VTQ0+0.04*VTQI*VTQS)
5791 VTNIS = SQRT(VTN0*VTN0+0.04*VTNI*VTNS)
5792 VTVIS = SQRT(VTV0*VTV0+0.04*VTVI*VTVS)
5793 VTFIS = SQRT(VTF0*VTF0+0.04*VTFI*VTVS)
5794 IF (AS1D.GE.ASMALL.OR.AI1D.GE.ASMALL) THEN
5796 VTAIS = SQRT(VTAX*VTAX+0.04*VTAI*VTAS)
5798 IF ((ADAGR-1.).GE.SLIMIT) THEN
5799 QCLis = QCLI1*EIS*VTQIS*NS1D*(GIMF1/DI0Z1+SASR1*GIMG1* &
5800 GS2*DI0Z1+SASR1*GIMH1*GS2/DI0Z2+SASR2*GIM1*GS3)
5801 NCLis = NCLI1*EIS*VTNIS*NS1D*(GIF1/DI0Z1+SASR1*GIG1*GS2*&
5802 DI0Z1+SASR1*GIH1*GS2/DI0Z2+SASR2*GS3)
5803 IF (AI1D.GE.ASMALL) THEN
5804 AiCLis = ACLI1*EIS*VTAIS*NS1D*(GIF3/DI0Z1+SASR1*GIG3*&
5805 GS2*DI0Z1+SASR1*GIH3*GS2/DI0Z2+SASR2*GI3*GS3)
5807 IF (AS1D.GE.ASMALL) THEN
5808 AsCLis = (MVDX**2.-MVDS**2.)*NCLI1*EIS*VTAIS*NS1D*( &
5809 GIF1/DI0Z1+SASR1*GIG1*GS2*DI0Z1+SASR1*GIH1* &
5810 GS2/DI0Z2+SASR2*GS3)
5812 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5813 FiCLis = FCLI1*EIS*VTFIS*NS1D*(GIZMF1/DI0Z1+SASR1* &
5814 GIZMG1*GS2*DI0Z1+SASR1*GIZMH1*GS2/DI0Z2+ &
5816 ICLis = NCLI1*EIS*VTVIS*NS1D*(GIMF1/DI0Z1+SASR1* &
5817 GIMG1*GS2*DI0Z1+SASR1*GIMH1*GS2/DI0Z2+SASR2* &
5820 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
5821 QCLis = QCLI1*EIS*VTQIS*NS1D*(GIM2G1*DI0Z2+SASR1*2.* &
5822 GIMG1*GS2*DI0Z1+SASR2*GIM1*GS3)
5823 NCLis = NCLI1*EIS*VTNIS*NS1D*(GI2G1*DI0Z2+SASR1*2.*GIG1*&
5824 GS2*DI0Z1+SASR2*GS3)
5825 IF (AI1D.GE.ASMALL) THEN
5826 AiCLis = ACLI1*EIS*VTAIS*NS1D*(GI2G3*DI0Z2+SASR1*2.* &
5827 GIG3*GS2*DI0Z1+SASR2*GI3*GS3)
5829 IF (AS1D.GE.ASMALL) THEN
5830 AsCLis = (MVDX**2.-MVDS**2.)*NCLI1*EIS*VTAIS*NS1D*( &
5831 GI2G1*DI0Z2+SASR1*2.*GIG1*GS2*DI0Z1+SASR2* &
5834 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5835 FiCLis = FCLI1*EIS*VTFIS*NS1D*(GIZM2G1*DI0Z2+SASR1* &
5836 2.*GIZMG1*GS2*DI0Z1+SASR2*GIZM1*GS3)
5837 ICLis = NCLI1*EIS*VTVIS*NS1D*(GIM2G1*DI0Z2+SASR1*2.* &
5838 GIMG1*GS2*DI0Z1+SASR2*GIM1*GS3)
5840 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
5841 QCLis = QCLI1*EIS*VTQIS*NS1D*(GIM3+SASR1*2.*GIM2*GS2+ &
5843 NCLis = NCLI1*EIS*VTNIS*NS1D*(GI3+SASR1*2.*GI2*GS2+ &
5845 IF (AI1D.GE.ASMALL) THEN
5846 AiCLis = ACLI1*EIS*VTAIS*NS1D*(GI5+SASR1*2.*GI4*GS2+ &
5849 IF (AS1D.GE.ASMALL) THEN
5850 AsCLis = (MVDX**2.-MVDS**2.)*NCLI1*EIS*VTAIS*NS1D*( &
5851 GI3+SASR1*2.*GI2*GS2+SASR2*GS3)
5853 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5854 FiCLis = NCLI1*EIS*VTFIS*NS1D*(GIM3+SASR1*2.*GIM2* &
5856 ICLis = NCLI1*EIS*VTVIS*NS1D*(GIM3+SASR1*2.*GIM2*GS2+&
5860 QCLis = MIN(QCLis,QI1D*iDT)
5861 NCLis = MIN(NCLis,NI1D*iDT)
5862 AiCLis = MIN(AiCLis,AI1D*iDT)
5863 ViCLis = MIN(QCLis*iRHOI,VI1D*iDT)
5864 FiCLis = MIN(FiCLis,FI1D*iDT)
5865 ICLis = MIN(ICLis,I3M1D*iDT)
5866 IF (ICE_RHOS.EQ.1.OR.AGG_SHAPE.EQ.1) THEN
5867 LIM1 = 0.7*(1.-RHOI/RHOI0)
5868 LIM2 = SQRT(1.-LIM1*LIM1)
5869 LIM3 = (1.+2.*ISEPS+ISEPS**2.+ISEPL+2.*ISEPS*ISEPL+ &
5872 LIM5 = LIM3*LIM2**2.
5874 LIM7 = 2.*LIM3*LIM2**2.
5875 LIM8 = LIM3*LIM2**3.
5876 LIMA = (1.+2.*ISEPL+ISEPL**2.+ISEPS+2.*ISEPL*ISEPS+ &
5880 LIMD = 2.*LIMA*LIM2**2.
5881 LIME = LIMA*LIM2**2.
5882 LIMF = LIMA*LIM2**3.
5885 DICC = DI0**(-6.*ZETA)*GI3H1
5894 IF ((ADAGR-1.).GE.SLIMIT) THEN
5895 DSLSV = LIMA*GS4+LIMB*DIA0*GS3*SASR2+LIMC*DIC0*GS3* &
5896 SASR3+LIMD*DIF0*GS2*SASR1+LIME*DIC2*GS2* &
5898 DSLSF = LIM3*GS4*SASPR+LIM4*DIA0*GS3*SASR3+LIM5*DIA2*&
5899 GS2*SASR1+LIM6*DIC0*GS3*SASR4*SASR4+LIM7* &
5900 DIF0*GS2*SASR4+LIM8*DIAC
5901 VCLis = NCLI1*EIS*VTVIS*NS1D*(GIF1/DI0Z1*GSM1+SASR1* &
5902 GIG1*GSM2*DI0Z1+SASR1*GIH1*GSM2/DI0Z2+SASR2* &
5904 SASP2 = MIN(1.,((1.+ISEPS)*(DSS0+LIM2*DIA0))/((1.+ &
5905 ISEPL)*(DSL0+LIM2*DIC0)))
5906 DSLSF = MAX(DSLSF,MAX(DSLSV,GS4)*SASP2)
5907 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
5908 DSLSV = LIMA*GS4+LIMB*GS3*SASR2*DIC0+LIMC*DIA0*GS3* &
5909 SASR3+LIMD*DIF0*GS2*SASR1+LIME*DIA2*GS2* &
5911 DSLSF = LIM3*GS4*SASPR+LIM4*DIC0*GS3*SASR3+LIM5*DIC2*&
5912 GS2*SASR1+LIM6*DIA0*GS3*SASR4*SASR4+LIM7* &
5913 DIF0*GS2*SASR4+LIM8*DICA
5914 VCLis = NCLI1*EIS*VTVIS*NS1D*(GI2G1*DI0Z2*GSM1+SASR1*&
5915 2.*GIG1*GSM2*DI0Z1+SASR2*GSM3)/V2M3
5916 SASP2 = MIN(1.,((1.+ISEPS)*(DSS0+LIM2*DIC0))/((1.+ &
5917 ISEPL)*(DSL0+LIM2*DIA0)))
5918 DSLSF = MAX(DSLSF,MAX(DSLSV,GS4)*SASP2)
5919 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
5920 DSLSV = LIMA*GS4+LIMB*GS3*SASR2*GI2+LIMC*GI2*GS3* &
5921 SASR3+LIMD*GI3*GS2*SASR1+LIME*GI3*GS2*SASR4+ &
5923 DSLSF = LIM3*GS4*SASPR+LIM4*GI2*GS3*SASR3+LIM5*GI3* &
5924 GS2*SASR1+LIM6*GI2*GS3*SASR4*SASR4+LIM7*GI3* &
5926 VCLis = NCLI1*EIS*VTVIS*NS1D*(GI3*GSM1+SASR1*2.*GI2* &
5927 GSM2+SASR2*GSM3)/V2M3
5928 SASP2 = MIN(1.,((1.+ISEPS)*(DSS0+LIM2*GI2))/((1.+ &
5929 ISEPL)*(DSL0+LIM2*GI2)))
5930 DSLSF = MAX(DSLSF,MAX(DSLSV,GS4)*SASP2)
5932 DNSAC = (AMI*GIM1*V2M3+RHOS*GSM1)/MAX(DSLSV,GS4)
5933 DNSAC = MIN(DNSAC,RHOIS)
5934 VsCLis = NCLis*MAX(DSLSV-GS4,0.)/V2M3
5935 FsCLis = NCLis*(DSLSF-GS4*SASPR)
5938 IF (QG1D.GE.QSMALL.AND.QI1D.GE.QSMALL) THEN
5939 ! EIG = MIN(1.,0.01*EXP(0.1*TC1D)) ! FERRIER ET AL., 1995
5941 RHOIG = (QI1D+QG1D)/(QI1D/RHOI+QG1D/RHOG+ISMALL)
5942 RATIO = (RHOIG/RHOG)**THRD
5943 MVDX = MAX((MVDI**3.+MVDG**3.)**THRD*RATIO,MVDG)
5948 VTQIG = SQRT(VTQ0*VTQ0+0.04*VTQI*VTQG)
5949 VTNIG = SQRT(VTN0*VTN0+0.04*VTNI*VTNG)
5950 VTVIG = SQRT(VTV0*VTV0+0.04*VTVI*VTVG)
5951 VTFIG = SQRT(VTF0*VTF0+0.04*VTFI*VTVG)
5952 IF (AG1D.GE.ASMALL.OR.AI1D.GE.ASMALL) THEN
5954 VTAIG = SQRT(VTAX*VTAX+0.04*VTAI*VTAG)
5956 IF ((ADAGR-1.).GE.SLIMIT) THEN
5957 QCLig = QCLI1*EIG*VTQIG*NG1D*(GIMF1/DI0Z1+GIMG1*GG2* &
5958 DI0Z1+GIMH1*GG2/DI0Z2+GIM1*GG3)
5959 NCLig = NCLI1*EIG*VTNIG*NG1D*(GIF1/DI0Z1+GIG1*GG2*DI0Z1+&
5961 IF (AI1D.GE.ASMALL) THEN
5962 AiCLig = ACLI1*EIG*VTAIG*NG1D*(GIF3/DI0Z1+GIG3*GG2* &
5963 DI0Z1+GIH3*GG2/DI0Z2+GI3*GG3)
5965 IF (AG1D.GE.ASMALL) THEN
5966 AgCLig = (MVDX**2.-MVDG**2.)*NCLI1*EIG*VTAIG*NG1D*( &
5967 GIF1/DI0Z1+GIG1*GG2*DI0Z1+GIH1*GG2/DI0Z2+GG3)
5969 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5970 FCLig = FCLI1*EIG*VTFIG*NG1D*(GIZMF1/DI0Z1+GIZMG1* &
5971 GG2*DI0Z1+GIZMH1*GG2/DI0Z2+GIZM1*GG3)
5972 ICLig = NCLI1*EIG*VTVIG*NG1D*(GIMF1/DI0Z1+GIMG1*GG2* &
5973 DI0Z1+GIMH1*GG2/DI0Z2+GIM1*GG3)
5975 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
5976 QCLig = QCLI1*EIG*VTQIG*NG1D*(GIM2G1*DI0Z2+2.*GIMG1*GG2*&
5978 NCLig = NCLI1*EIG*VTNIG*NG1D*(GI2G1*DI0Z2+2.*GIG1*GG2* &
5980 IF (AI1D.GE.ASMALL) THEN
5981 AiCLig = ACLI1*EIG*VTAIG*NG1D*(GI2G3*DI0Z2+2.*GIG3* &
5984 IF (AG1D.GE.ASMALL) THEN
5985 AgCLig = (MVDX**2.-MVDG**2.)*NCLI1*EIG*VTAIG*NG1D*( &
5986 GI2G1*DI0Z2+2.*GIG1*GG2*DI0Z1+GG3)
5988 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
5989 FCLig = FCLI1*EIG*VTFIG*NG1D*(GIZM2G1*DI0Z2+2.* &
5990 GIZMG1*GG2*DI0Z1+GIZM1*GG3)
5991 ICLig = NCLI1*EIG*VTVIG*NG1D*(GIM2G1*DI0Z2+2.*GIMG1* &
5994 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
5995 QCLig = QCLI1*EIG*VTQIG*NG1D*(GIM3+2.*GIM2*GG2+GIM1*GG3)
5996 NCLig = NCLI1*EIG*VTNIG*NG1D*(GI3+2.*GI2*GG2+GG3)
5997 IF (AI1D.GE.ASMALL) THEN
5998 AiCLig = ACLI1*EIG*VTAIG*NG1D*(GI5+2.*GI4*GG2+GI3*GG3)
6000 IF (AG1D.GE.ASMALL) THEN
6001 AgCLig = (MVDX**2.-MVDG**2.)*NCLI1*EIG*VTAIG*NG1D*( &
6004 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
6005 FCLig = NCLI1*EIG*VTFIG*NG1D*(GIM3+2.*GIM2*GG2+GIM1* &
6007 ICLig = NCLI1*EIG*VTVIG*NG1D*(GIM3+2.*GIM2*GG2+GIM1* &
6011 QCLig = MIN(QCLig,QI1D*iDT)
6012 NCLig = MIN(NCLig,NI1D*iDT)
6013 AiCLig = MIN(AiCLig,AI1D*iDT)
6014 AgCLig = MIN(AgCLig,AI1D*iDT)
6015 ViCLig = MIN(QCLig*iRHOI,VI1D*iDT)
6016 FCLig = MIN(FCLig,FI1D*iDT)
6017 ICLig = MIN(ICLig,I3M1D*iDT)
6018 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
6019 LIM1 = 0.7*(1.-RHOI/RHOI0)
6020 LIM2 = SQRT(1.-LIM1*LIM1)
6021 LIMA = (1.+2.*ISEPL+ISEPL**2.+ISEPS+2.*ISEPL*ISEPS+ &
6025 LIMD = 2.*LIMA*LIM2**2.
6026 LIME = LIMA*LIM2**2.
6027 LIMF = LIMA*LIM2**3.
6028 DICC = DI0**(-6.*ZETA)*GI3H1
6037 IF ((ADAGR-1.).GE.SLIMIT) THEN
6038 DGLSV = LIMA*GG4+LIMB*DIA0*GG3+LIMC*DIC0*GG3+LIMD* &
6039 DIF0*GG2+LIME*DIC2*GG2+LIMF*DICA
6040 VCLig = NCLI1*EIG*VTVIG*NG1D*(GIF1/DI0Z1*GGM1+GIG1* &
6041 GGM2*DI0Z1+GIH1*GGM2/DI0Z2+GGM3)/V2M3
6042 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
6043 DGLSV = LIMA*GG4+LIMB*DIC0*GG3+LIMC*DIA0*GG3+LIMD* &
6044 DIF0*GG2+LIME*DIA2*GG2+LIMF*DIAC
6045 VCLig = NCLI1*EIG*VTVIG*NG1D*(GI2G1*DI0Z2*GGM1+2.* &
6046 GIG1*GGM2*DI0Z1+GGM3)/V2M3
6047 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
6048 DGLSV = LIMA*GG4+LIMB*GI2*GG3+LIMC*GI2*GG3+LIMD*GI3* &
6049 GG2+LIME*GI3*GG2+LIMF*GI4
6050 VCLig = NCLI1*EIG*VTVIG*NG1D*(GI3*GGM1+2.*GI2*GGM2+ &
6053 DNGAC = (AMI*GIM1*V2M3+RHOG*GG4)/MAX(DGLSV,GG4)
6054 DNGAC = MAX(MIN(DNGAC,RHOIG),RHOIMIN)
6055 VgCLig = MAX(0.,QCLig/DNGAC+(RHOG/DNGAC-1.)*VCLig)
6058 IF (QH1D.GE.QSMALL.AND.QI1D.GE.QSMALL) THEN
6059 RHOIH = (QI1D+QH1D)/(QI1D/RHOI+QH1D/RHOH+ISMALL)
6060 RATIO = (RHOIH/RHOH)**THRD
6061 MVDX = MAX((MVDI**3.+MVDH**3.)**THRD*RATIO,MVDH)
6066 VTQIH = SQRT(VTQ0*VTQ0+0.04*VTQI*VTQH)
6067 VTNIH = SQRT(VTN0*VTN0+0.04*VTNI*VTNH)
6068 VTVIH = SQRT(VTV0*VTV0+0.04*VTVI*VTQH)
6069 VTFIH = SQRT(VTF0*VTF0+0.04*VTFI*VTQH)
6070 IF (AH1D.GE.ASMALL.OR.AI1D.GE.ASMALL) THEN
6072 VTAIH = SQRT(VTAX*VTAX+0.04*VTAI*VTAH)
6074 IF ((ADAGR-1.).GE.SLIMIT) THEN
6075 QCLih = QCLI1*EIH*VTQIH*NH1D*(GIMF1/DI0Z1+GIMG1*GH2* &
6076 DI0Z1+GIMH1*GH2/DI0Z2+GIM1*GH3)
6077 NCLih = NCLI1*EIH*VTNIH*NH1D*(GIF1/DI0Z1+GIG1*GH2*DI0Z1+&
6079 IF (AI1D.GE.ASMALL) THEN
6080 AiCLih = ACLI1*EIH*VTAIH*NH1D*(GIF3/DI0Z1+GIG3*GH2* &
6081 DI0Z1+GIH3*GH2/DI0Z2+GI3*GH3)
6083 IF (AH1D.GE.ASMALL) THEN
6084 AhCLih = (MVDX**2.-MVDH**2.)*NCLI1*EIH*VTAIH*NH1D*( &
6085 GIF1/DI0Z1+GIG1*GH2*DI0Z1+GIH1*GH2/DI0Z2+GH3)
6087 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
6088 FCLih = FCLI1*EIH*VTFIH*NH1D*(GIZMF1/DI0Z1+GIZMG1* &
6089 GH2*DI0Z1+GIZMH1*GH2/DI0Z2+GIZM1*GH3)
6090 ICLih = NCLI1*EIH*VTVIH*NH1D*(GIMF1/DI0Z1+GIMG1*GH2* &
6091 DI0Z1+GIMH1*GH2/DI0Z2+GIM1*GH3)
6093 ELSEIF ((1.-ADAGR).GE.SLIMIT) THEN
6094 QCLih = QCLI1*EIH*VTQIH*NH1D*(GIM2G1*DI0Z2+2.*GIMG1*GH2*&
6096 NCLih = NCLI1*EIH*VTNIH*NH1D*(GI2G1*DI0Z2+2.*GIG1*GH2* &
6098 IF (AI1D.GE.ASMALL) THEN
6099 AiCLih = ACLI1*EIH*VTAIH*NH1D*(GI2G3*DI0Z2+2.*GIG3* &
6102 IF (AH1D.GE.ASMALL) THEN
6103 AhCLih = (MVDX**2.-MVDH**2.)*NCLI1*EIH*VTAIH*NH1D*( &
6104 GI2G1*DI0Z2+2.*GIG1*GH2*DI0Z1+GH3)
6106 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
6107 FCLih = FCLI1*EIH*VTFIH*NH1D*(GIZM2G1*DI0Z2+2.* &
6108 GIZMG1*GH2*DI0Z1+GIZM1*GH3)
6109 ICLih = NCLI1*EIH*VTVIH*NH1D*(GIM2G1*DI0Z2+2.*GIMG1* &
6112 ELSEIF (ABS(ADAGR-1.).LT.SLIMIT) THEN
6113 QCLih = QCLI1*EIH*VTQIH*NH1D*(GIM3+2.*GIM2*GH2+GIM1*GH3)
6114 NCLih = NCLI1*EIH*VTNIH*NH1D*(GI3+2.*GI2*GH2+GH3)
6115 IF (AI1D.GE.ASMALL) THEN
6116 AiCLih = ACLI1*EIH*VTAIH*NH1D*(GI5+2.*GI4*GH2+GI3*GH3)
6118 IF (AH1D.GE.ASMALL) THEN
6119 AhCLih = (MVDX**2.-MVDH**2.)*NCLI1*EIH*VTAIH*NH1D*( &
6122 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
6123 FCLih = NCLI1*EIH*VTFIH*NH1D*(GIM3+2.*GIM2*GH2+GIM1* &
6125 ICLih = NCLI1*EIH*VTVIH*NH1D*(GIM3+2.*GIM2*GH2+GIM1* &
6129 QCLih = MIN(QCLih,QI1D*iDT)
6130 NCLih = MIN(NCLih,NI1D*iDT)
6131 VCLih = MIN(QCLih*iRHOI,VI1D*iDT)
6132 AiCLih = MIN(AiCLih,AI1D*iDT)
6133 AhCLih = MIN(AhCLih,AI1D*iDT)
6134 FCLih = MIN(FCLih,FI1D*iDT)
6135 ICLih = MIN(ICLih,I3M1D*iDT)
6137 IF (QS1D.GE.QSMALL.AND.QG1D.GE.QSMALL) THEN
6138 ! ESG = MIN(1.,0.01*EXP(0.1*TC1D)) ! FERRIER ET AL., 1995
6140 RHOSG = (QS1D+QG1D)/(QS1D/RHOS+QG1D/RHOG+ISMALL)
6141 RATIO = (RHOSG/RHOG)**THRD
6142 MVDX = MAX((MVDS**3.+MVDG**3.)**THRD*RATIO,MVDG)
6146 VTQSG = SQRT(VTQ0*VTQ0+0.04*VTQS*VTQG)
6147 VTNSG = SQRT(VTN0*VTN0+0.04*VTNS*VTNG)
6148 VTVSG = SQRT(VTV0*VTV0+0.04*VTVS*VTVG)
6149 IF (AS1D.GE.ASMALL.OR.AG1D.GE.ASMALL) THEN
6151 VTASG = SQRT(VTAX*VTAX+0.04*VTAS*VTAG)
6153 QCLsg = QCLS1*ESG*VTQSG*NG1D*(SASR2*GSM3+SASR1*2.*GG2*GSM2+&
6155 NCLsg = NCLS1*ESG*VTNSG*NG1D*(SASR2*GS3+SASR1*2.*GS2*GG2+ &
6157 QCLsg = MIN(QCLsg,QS1D*iDT)
6158 NCLsg = MIN(NCLsg,NS1D*iDT)
6159 IF (ICE_RHOS.EQ.1) THEN
6160 VsCLsg = MIN(QCLsg*iRHOS,VS1D*iDT)
6162 IF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
6163 LIM1 = 0.7*(1.-RHOS/RHOI0)
6164 LIM2 = SQRT(1.-LIM1*LIM1)
6165 LIMA = (1.+2.*ISEPL+ISEPL**2.+ISEPS+2.*ISEPL*ISEPS+ &
6169 LIMD = 2.*LIMA*LIM2**2.
6170 LIME = LIMA*LIM2**2.
6171 LIMF = LIMA*LIM2**3.
6172 DGLSV = LIMA*GG4+(LIMB+LIMC)*GG3*GS2+(LIMD+LIME)*GG2* &
6174 DNGAC = (AMS*GSM1+AMG*GGM1)*V2M3/MAX(DGLSV,GG4)
6175 DNGAC = MAX(MIN(DNGAC,RHOSG),RHOIMIN)
6176 VCLsg = NCLS1*ESG*VTVSG*NG1D*(SASR2*GS3*GGM1+SASR1*2.* &
6178 VgCLsg = MAX(0.,QCLsg/DNGAC+(RHOG/DNGAC-1.)*VCLsg)
6180 IF (AGG_SHAPE.EQ.1) THEN
6181 FCLsg = MIN(QCLsg*iRHOS*SASPR*V2M3,FS1D*iDT)
6183 IF (AS1D.GE.ASMALL) THEN
6184 AsCLsg = ACLS1*ESG*VTASG*NG1D*(SASR2*GS5+SASR1*2.*GG2* &
6186 AsCLsg = MIN(AsCLsg,AS1D*iDT)
6188 IF (AG1D.GE.ASMALL) THEN
6189 AgCLsg = (MVDX**2.-MVDG**2.)*NCLS1*ESG*VTASG*NG1D*( &
6190 SASR2*GS3+SASR1*2.*GS2*GG2+GG3)
6193 IF (QH1D.GE.QSMALL.AND.QS1D.GE.QSMALL) THEN
6194 RHOSH = (QS1D+QH1D)/(QS1D/RHOS+QH1D/RHOH+ISMALL)
6195 RATIO = (RHOSH/RHOH)**THRD
6196 MVDX = MAX((MVDS**3.+MVDH**3.)**THRD*RATIO,MVDH)
6199 VTQSH = SQRT(VTQ0*VTQ0+0.04*VTQS*VTQH)
6200 VTNSH = SQRT(VTN0*VTN0+0.04*VTNS*VTNH)
6201 IF (AH1D.GE.ASMALL.OR.AS1D.GE.ASMALL) THEN
6203 VTASH = SQRT(VTAX*VTAX+0.04*VTAS*VTAH)
6205 QCLsh = QCLS1*ESH*VTQSH*NH1D*(SASR2*GSM3+SASR1*2.*GH2*GSM2+&
6207 NCLsh = NCLS1*ESH*VTNSH*NH1D*(SASR2*GS3 +SASR1*2.*GH2*GS2+ &
6209 QCLsh = MIN(QCLsh,QS1D*iDT)
6210 NCLsh = MIN(NCLsh,NS1D*iDT)
6211 IF (ICE_RHOS.EQ.1) THEN
6212 VCLsh = MIN(QCLsh*iRHOS,VS1D*iDT)
6214 IF (AGG_SHAPE.EQ.1) THEN
6215 FCLsh = MIN(QCLsh*iRHOS*SASPR*V2M3,FS1D*iDT)
6217 IF (AS1D.GE.ASMALL) THEN
6218 AsCLsh = ACLS1*ESH*VTASH*NH1D*(SASR2*GS5+SASR1*2.*GH2* &
6220 AsCLsh = MIN(AsCLsh,AS1D*iDT)
6222 IF (AH1D.GE.ASMALL) THEN
6223 AhCLsh = (MVDX**2.-MVDH**2.)*NCLS1*ESH*VTASH*NH1D*( &
6224 SASR2*GS3 +SASR1*2.*GH2*GS2+GH3)
6227 IF (QS1D.GE.QSMALL.AND.MVDS.GE.2.E-4) THEN
6228 ESS1 = 0.1*MIN(1.,0.05*EXP(0.1*TC1D)) ! FERRIER ET AL., 1995
6229 IF (ICE_RHOS.NE.0) THEN
6230 ESS2 = 1.-RHOS/RHOI0
6234 ! ESS = MIN(MAX(ESS1,ESS2,0.),1.)
6236 QCLss = 2.*PI*XISP*VTQS*ESS*SASR2/3.*NS1D**2.*GSM3*AMS
6237 NCLss = -2.*PI*XISP*VTNS*ESS*SASR2/3.*NS1D**2.*GS3
6238 IF (ICE_RHOS.EQ.1.OR.AGG_SHAPE.EQ.1) THEN
6239 LIM1 = 0.7*(1.-RHOS/RHOI0)
6240 LIM2 = SQRT(1.-LIM1*LIM1)
6241 LIM3 = (1.+2.*ISEPS+ISEPS**2.+ISEPL+2.*ISEPS*ISEPL+ &
6244 LIM5 = LIM3*LIM2**2.
6246 LIM7 = 2.*LIM3*LIM2**2.
6247 LIM8 = LIM3*LIM2**3.
6248 LIMA = (1.+2.*ISEPL+ISEPL**2.+ISEPS+2.*ISEPL*ISEPS+ &
6252 LIMD = 2.*LIMA*LIM2**2.
6253 LIME = LIMA*LIM2**2.
6254 LIMF = LIMA*LIM2**3.
6255 DSLSV = (LIMA+LIMB+LIMC+LIMD+LIME+LIMF)*GS4
6256 DSLSF = (LIM3+LIM4+LIM5+LIM6+LIM7+LIM8)*GS4*SASPR
6257 SASP3 = MIN((1.+LIM2+ISEPS+ISEPS*LIM2)*SASR4,(1.+LIM2+ &
6258 ISEPL+ISEPL*LIM2)*SASR1)/MAX((1.+LIM2+ISEPS+ &
6259 ISEPS*LIM2)*SASR4,(1.+LIM2+ISEPL+ISEPL*LIM2)* &
6261 DNSAG = MAX(RHOIMIN,2.*RHOS*GSM1/DSLSV)
6262 VCLss = 2.*QCLss*MAX(1./DNSAG-iRHOS,0.)
6263 FCLss = 2.*QCLss*V2M3*MAX(SASP3/DNSAG-SASPR*iRHOS,0.)
6264 RATIO = (RHOS/DNSAG)**THRD
6268 IF (AS1D.GE.ASMALL) THEN
6269 ACLss = 2.*PI*XISP*VTAS*ESS*SASR2/3.*NS1D**2.*GS5*( &
6270 1.5874*RATIO**2.-2.)
6271 IF (ACLss.LT.0.) THEN
6272 ACLss1 = MIN(ACLss,0.)
6273 ACLss1 = MAX(ACLss1,-1.*AS1D*iDT)
6278 ELSE ! WARM CLOUD START
6279 IF ((HCwqv+HRwqv+HSwqv+HGwqv+HHwqv).GE.QSMALL) THEN
6280 VDMAX = XXLV*(QV1D-QVSW0)/(1.+XXLV**2.*QV1D/(CPM*RV*TK1D** &
6282 SUMCND = HCwqv+HRwqv+HSwqv+HGwqv+HHwqv
6283 IF (SUMCND.GT.VDMAX.AND.VDMAX.GE.QSMALL) THEN
6284 RATIO = MIN(1.,VDMAX/(SUMCND+QSMALL))
6292 IF ((HCwqv+HRwqv+HSwqv+HGwqv+HHwqv).LT.0.) THEN
6293 EVMAX = XXLV*(QV1D-QVSW0)/(1.+XXLV**2.*QV1D/(CPM*RV*TK1D** &
6295 SUMEVP = HCwqv+HRwqv+HSwqv+HGwqv+HHwqv
6296 IF (EVMAX.LT.0..AND.SUMEVP.LT.EVMAX*0.9999) THEN
6297 HCwqv = HCwqv*MIN(1.,0.9999*EVMAX/SUMEVP)
6298 HRwqv = HRwqv*MIN(1.,0.9999*EVMAX/SUMEVP)
6299 HSwqv = HSwqv*MIN(1.,0.9999*EVMAX/SUMEVP)
6300 HGwqv = HGwqv*MIN(1.,0.9999*EVMAX/SUMEVP)
6301 HHwqv = HHwqv*MIN(1.,0.9999*EVMAX/SUMEVP)
6304 !----------------- MELTING PROXESSES -----------------------------------
6305 IF (QI1D.GE.QSMALL) THEN
6306 IF (MVDI.GT.DCR) THEN
6307 QMLir = -1.*QI1D*iDT
6308 VMLir = -1.*VI1D*iDT
6309 IF (AI1D.GE.ASMALL) THEN
6310 AMLir = -1.*AI1D*iDT
6312 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
6313 FMLir = -1.*FI1D*iDT
6314 IMLir = -1.*I3M1D*iDT
6317 QMLic = -1.*QI1D*iDT
6318 VMLic = -1.*VI1D*iDT
6319 IF (AI1D.GE.ASMALL) THEN
6320 AMLic = -1.*AI1D*iDT
6322 IF (I3M1D.GE.ISMALL.AND.FI1D.GE.ISMALL) THEN
6323 FMLic = -1.*FI1D*iDT
6324 IMLic = -1.*I3M1D*iDT
6327 NMLir = MIN(QMLir*NI1D/QI1D,0.)
6328 NMLic = MIN(QMLic*NI1D/QI1D,0.)
6330 IF (QS1D.GE.QSMALL) THEN
6335 IF (QC1D.GE.QSMALL) THEN
6338 VTQSC = SQRT(VTQ0*VTQ0+4.E-2*VTQS*VTQC)
6339 RMcsq = QRMC1*ECS*VTQSC*NS1D*(GS3*GC4+2.*GS2*GC5+GC6)
6340 RMcsq = MIN(RMcsq,QC1D*iDT)
6341 IF (AS1D.GE.ASMALL) THEN
6342 MVDX = MAX((MVDC**3.+MVDS**3.)**THRD,MVDS)
6343 RMcsa = (MVDX**2.-MVDS**2.)*NRMC1*VTQSC*NS1D*(GS3+ &
6345 RMcsa = MAX(0.,MIN(RMcsa,QC1D*iDT*iAPW/MVDC))
6348 IF (QR1D.GE.QSMALL) THEN
6351 VTQRS = SQRT(VTQ0*VTQ0+4.E-2*VTQR*VTQS)
6352 RMrsq = QRMR1*ERS*VTQRS*NS1D*(GS3*GR4+2.*GS2*GR5+GR6)
6353 RMrsq = MIN(RMrsq,QR1D*iDT)
6354 IF (AS1D.GE.ASMALL) THEN
6355 MVDX = MAX((MVDR**3.+MVDS**3.)**THRD,MVDS)
6356 RMrsa = (MVDX**2.-MVDS**2.)*NRMR1*VTQRS*NS1D*(GS3+ &
6358 RMrsa = MAX(0.,MIN(RMrsa,QR1D*iDT*iAPW/MVDR))
6361 MLMAX = 1.-MIN(1.,RHOS/RHOIMAX)
6362 HSwcd = 2.*PI*NS1D*KAP*VENQS*(TK0C-TK1D)
6363 HSwrm = CPW*(TK0C-TK1D)*(RMrsq+RMcsq)
6364 SMLF = MAX(0.,-1.*(HSwcd+HSwqv+HSwrm)*DT/XXLF0)/QS1D
6365 IF (SMLF.LT.MLIMIT) THEN
6369 SMLF = MIN(MLMAX,MAX(0.,SMLF))
6370 SMLR = 0.01195*EXP(4.411*SMLF)
6372 AVWSG = SMLR*AVRH+(1.-SMLR)*AVSG
6373 BVWSG = SMLR*BVRH+(1.-SMLR)*BVSG
6374 RHOWS = SMLF*RHOW+(1.-SMLF)*RHOS
6375 IF (ICE_VTS.EQ.1.OR.ICE_VTS.EQ.2) THEN
6376 IF (SMLF.GE.MLIMIT) THEN
6377 KINV = (1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)** &
6379 BEST0 = 2.*G*NS1D/(KINV**2.)
6380 BEST = 2.*BEST0*RHOWS*EXP(GAMLN(BMS+AFAS+1.)-GAMLN( &
6381 AFAS+1.)-BMS*LOG(LAMS))/3.
6382 C1X2 = VTC1*BEST**5.E-1
6383 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.
6384 VTA1 = VTC2*((1+C1X2)**5.E-1-1.)**2./BEST**VTB1
6385 AVS = VTA1*KINV**(1.-2.*VTB1)*(4.*RHOWS*G/3.)**VTB1
6392 BSTMP = SCN*SQRT(AVS*RHOAJ/MUA)
6393 QTMP1 = LLMS*(1.5+BVS/2.)
6394 QTMP2 = EXP(GAMLN(AFAS+2.)-GAMLN(AFAS+1.)-LLMS)
6395 QTMP3 = EXP(GAMLN(BVS/2.+AFAS+2.5)-GAMLN(AFAS+1.)-QTMP1)
6396 IF (AGG_SHAPE.EQ.0) THEN
6398 ELSEIF (AGG_SHAPE.EQ.1) THEN
6400 WSAPR = SMLF*(0.9951+2.51E-2*DSMM-3.644E-2*DSMM**2.+5.303E-3*&
6401 DSMM**3.-2.492E-4*DSMM**4.)+(1.-SMLF)*SASPR
6403 CAPWS = ZP1*WSAPR**(ZP2/3.)+ZP3*WSAPR**(ZP4/3.)
6404 VENWS = AVWSG*QTMP2*CAPWS+BVWSG*BSTMP*QTMP3*CAPWS
6405 SMLTQ = CPW/XXLF*(TK0C-TK1D)*(RMcsq+RMrsq)
6406 QMLsr = 2.*PI*NS1D*KAP*(TK0C-TK1D)/XXLF*VENWS+SMLTQ ! NEGATIVE
6407 QMLsr = MAX(MIN(QMLsr,0.),-1.*QS1D*iDT)
6408 NMLsr = MIN(QMLsr*NS1D/QS1D,0.)
6409 IF (ICE_RHOS.EQ.1) THEN
6410 VMLsr = ((QS1D+QMLsr*DT)/RHOWS-VS1D)*iDT
6411 VMLsr = MAX(VMLsr,-1.*VS1D*iDT)
6413 IF (AGG_SHAPE.EQ.1) THEN
6414 FMLsr = MAX((-1.*FS1D+WSAPR*(QS1D/RHOWS*V2M3+QMLsr/ &
6415 RHOWS*V2M3*DT))*iDT,-1.*FS1D*iDT)
6417 IF (AS1D.GE.ASMALL) THEN
6418 ATMP1 = LOG(LAMS)*(0.5+BVS/2.)
6419 ATMP2 = EXP(GAMLN(BVS/2.+AFAS+1.5)-GAMLN(AFAS+1.)-ATMP1)
6420 VENAS = AVWSG*CAPWS+BVWSG*BSTMP*ATMP2*CAPWS
6421 SMLTA = CPW/XXLF*(TK0C-TK1D)*(RMcsa+RMrsa)
6422 AMLsr = 8.*NS1D*KAP*(TK0C-TK1D)/XXLF/RHOWS*VENAS+SMLTA
6423 AMLsr = MAX(MIN(AMLsr,0.),-1.*AS1D*iDT)
6426 IF (QG1D.GE.QSMALL) THEN
6431 IF (QC1D.GE.QSMALL) THEN
6434 VTQGC = SQRT(VTQ0*VTQ0+0.04*VTQG*VTQC)
6435 RMcgq = QRMC1*ECG*VTQGC*NG1D*(GG3*GC4+2.*GG2*GC5+GC6)
6436 RMcgq = MIN(RMcgq,QC1D*iDT)
6437 IF (AG1D.GE.ASMALL) THEN
6438 MVDX = MAX((MVDC**3.+MVDG**3.)**THRD,MVDG)
6439 RMcga = (MVDX**2.-MVDG**2.)*NRMC1*VTQGC*NG1D*(GG3+ &
6441 RMcga = MAX(0.,MIN(RMcga,QC1D*iDT*iAPW/MVDC))
6444 IF (QR1D.GE.QSMALL) THEN
6447 VTQRG = SQRT(VTQ0*VTQ0+0.04*VTQR*VTQG)
6448 RMrgq = QRMR1*ERG*VTQRG*NG1D*(GG3*GR4+2.*GG2*GR5+GR6)
6449 RMrgq = MIN(RMrgq,QR1D*iDT)
6450 IF (AG1D.GE.ASMALL) THEN
6451 MVDX = MAX((MVDR**3.+MVDG**3.)**THRD,MVDG)
6452 RMrga = (MVDX**2.-MVDG**2.)*NRMR1*VTQRG*NG1D*(GG3+ &
6454 RMrga = MAX(0.,MIN(RMrga,QR1D*iDT*iAPW/MVDR))
6457 MLMAX = 1.-MIN(1.,RHOG/RHOIMAX)
6458 HGwcd = 2.*PI*NG1D*KAP*VENQG*(TK0C-TK1D)
6459 HGwrm = CPW*(TK0C-TK1D)*(RMrgq+RMcgq)
6460 GMLF = MAX(0.,-1.*(HGwcd+HGwqv+HGwrm)*DT/XXLF0)/QG1D
6461 IF (GMLF.LT.MLIMIT) THEN
6465 GMLF = MIN(MLMAX,MAX(0.,GMLF))
6466 GMLR = 0.01195*EXP(4.411*GMLF)
6468 AVWSG = GMLR*AVRH+(1.-GMLR)*AVSG
6469 BVWSG = GMLR*BVRH+(1.-GMLR)*BVSG
6470 RHOWG = GMLF*RHOW+(1.-GMLF)*RHOG
6471 IF (ICE_VTG.EQ.1) THEN
6472 KINV = (1.72E-5*(393./(TK1D+120.))*(TK1D/TK0C)**1.5)/RHO
6473 BEST0 = 2.*G*NG1D/(KINV**2.)
6474 BEST = 2.*BEST0*RHOWG*EXP(GAMLN(BMG+AFAG+1.)-GAMLN( &
6475 AFAG+1.)-BMG*LOG(LAMG))/3.
6476 C1X2 = VTC1*BEST**5.E-1
6477 VTB1 = C1X2/(1.+C1X2)**5.E-1/((1.+C1X2)**5.E-1-1.)/2.
6478 VTA1 = VTC2*((1+C1X2)**5.E-1-1.)**2./BEST**VTB1
6479 AVG = VTA1*KINV**(1.-2.*VTB1)*(4.*RHOWG*G/3.)**VTB1
6482 BGTMP = SCN*SQRT(AVG*RHOAJ/MUA)
6483 QTMP1 = LLMG*(1.5+BVG/2.)
6484 QTMP2 = EXP(GAMLN(AFAG+2.)-GAMLN(AFAG+1.)-LLMG)
6485 QTMP3 = EXP(GAMLN(BVG/2.+AFAG+2.5)-GAMLN(AFAG+1.)-QTMP1)
6486 VENWG = AVWSG*QTMP2+BVWSG*BGTMP*QTMP3
6487 GMLTQ = CPW/XXLF*(TK0C-TK1D)*(RMcgq+RMrgq)
6488 QMLgr = 2.*PI*NG1D*KAP*(TK0C-TK1D)/XXLF*VENWG+GMLTQ ! NEGATIVE
6489 QMLgr = MAX(MIN(QMLgr,0.),-1.*QG1D*iDT)
6490 NMLgr = MIN(QMLgr*NG1D/QG1D,0.)
6491 VMLgr = MAX(((QG1D+QMLgr*DT)/RHOWG-VG1D)*iDT,-1.*VG1D*iDT)
6492 IF (AG1D.GE.ASMALL) THEN
6493 ATMP1 = LOG(LAMG)*(0.5+BVG/2.)
6494 ATMP2 = EXP(GAMLN(BVG/2.+AFAG+1.5)-GAMLN(AFAG+1.)-ATMP1)
6495 VENAG = AVWSG+BVWSG*BGTMP*ATMP2
6496 GMLTA = CPW/XXLF*(TK0C-TK1D)*(RMcga+RMrga)
6497 AMLgr = 8.*NG1D*KAP*(TK0C-TK1D)/XXLF/RHOWG*VENAG+GMLTA ! NEGATIVE
6498 AMLgr = MAX(MIN(AMLgr,0.),-1.*AG1D*iDT)
6501 IF (QH1D.GE.QSMALL) THEN
6506 IF (QC1D.GE.QSMALL) THEN
6509 VTQHC = SQRT(VTQ0*VTQ0+0.04*VTQH*VTQC)
6510 RMchq = QRMC1*ECH*VTQHC*NH1D*(GH3*GC4+2.*GH2*GC5+GC6)
6511 RMchq = MIN(RMchq,QC1D*iDT)
6512 IF (AH1D.GE.ASMALL) THEN
6513 MVDX = MAX((MVDC**3.+MVDH**3.)**THRD,MVDH)
6514 RMcha = (MVDX**2.-MVDH**2.)*NRMC1*VTQHC*NH1D*(GH3+ &
6516 RMcha = MAX(0.,MIN(RMcha,QC1D*iDT*iAPW/MVDC))
6519 IF (QR1D.GE.QSMALL) THEN
6522 VTQRH = SQRT(VTQ0*VTQ0+0.04*VTQH*VTQR)
6523 RMrhq = QRMR1*ERH*VTQRH*NH1D*(GH3*GR4+2.*GH2*GR5+GR6)
6524 RMrhq = MIN(RMrhq,QR1D*iDT)
6525 IF (AH1D.GE.ASMALL) THEN
6526 MVDX = MAX((MVDR**3.+MVDH**3.)**THRD,MVDH)
6527 RMrha = (MVDX**2.-MVDH**2.)*NRMR1*VTQRH*NH1D*(GH3+ &
6529 RMrha = MAX(0.,MIN(RMrha,QR1D*iDT*iAPW/MVDR))
6532 HMLTQ = CPW/XXLF*(TK0C-TK1D)*(RMrhq+RMchq)
6533 QMLhr = 2.*PI*NH1D*KAP*(TK0C-TK1D)/XXLF*VENQH+HMLTQ ! NEGATIVE
6534 QMLhr = MAX(MIN(QMLhr,0.),-1.*QH1D*iDT)
6535 NMLhr = MIN(QMLhr*NH1D/QH1D,0.)
6536 IF (AH1D.GE.ASMALL) THEN
6537 HMLTA = CPW/XXLF*(TK0C-TK1D)*(RMrha+RMcha)
6538 AMLhr = 8.*NH1D*KAP*(TK0C-TK1D)/XXLF/RHOH*VENAH+HMLTA ! NEGATIVE
6539 AMLhr = MAX(MIN(AMLhr,0.),-1.*AH1D*iDT)
6542 ENDIF ! TEMPERATURE LOOPS
6543 !----------------- HAILSTONE GROWTH HEATBALANCE ------------------------
6544 IF (HWET_MODE.EQ.1) THEN
6547 IF (QH1D.GE.QLIMIT.AND.DMWDT.GE.QSMALL) THEN
6548 HHdcd = 2.*PI*NH1D*KAP*VENQH*(TK1D-TK0C)
6549 HHdrm = DMWDT*(XXLF+CPW*(TK1D-TK0C))
6550 HHdcl = DMIDT*CPI*(TK1D-TK0C)
6551 HHdtt = HHdcd+HHdqv+HHdrm+HHdcl
6552 IF (HHdtt.GT.0.) THEN ! WET-GROWTH MODE
6553 QCLih = QCLih/EIH; NCLih = NCLih/EIH; VCLih = VCLih/EIH
6554 FCLih = FCLih/EIH; ICLih = ICLih/EIH
6555 QCLsh = QCLsh/ESH; NCLsh = NCLsh/ESH; VCLsh = VCLsh/ESH
6556 AiCLih = AiCLih/EIH; AhCLih = AhCLih/EIH
6557 AsCLsh = AsCLsh/ESH; AhCLsh = AhCLsh/ESH
6558 MCORE = (QH1D*iDT+QCLih+QCLsh)
6559 HHwcd = 2.*PI*NH1D*KAP*VENQH*(TK0C-TK1D)
6560 HHwrm = CPW*(TK0C-TK1D)*DMWDT
6561 MLWM = MAX(0.,-1.*(HHwcd+HHwqv+HHwrm)*DT/XXLF0)
6562 HMLF = MIN(0.9,MAX(0.,MLWM/QH1D))
6563 IF (MLWM.GT.DMWDT) THEN
6564 QHwml = MAX(-1.*MCORE,DMWDT-MLWM)
6565 AHwml = QHwml*4.*iRHOH/PI/MVDH
6567 MLWC = 0.268+0.1389*MCORE*1.E3
6568 IF ((MLWM*1.E3).GT.MLWC) THEN
6569 DH9 = MVDH*1.E2-9.E-1
6570 MWT = (QH1D*iDT+QCLih+QCLsh+DMWDT)*1.E3
6571 ICOR1 = MWT/(1.+10.67*DH9-10.81*DH9**2.+10.26*DH9**3.)
6572 QHwsh = MAX(0.,MLWM-MAX(0.,ICOR1*1.E-3))
6573 NHwsh = QHwsh/(AMW*DSHED**BMW)
6575 ELSE ! DRY-GROWTH MODE
6580 ELSEIF (HWET_MODE.EQ.0) THEN
6583 ENDIF ! HAILSTONE WET GROWTH MODE OPTION
6584 !----------------- CONSERVATION OF HYDROMETEORS ------------------------
6585 QCSOUR = QC1D+(QBKrc-QMLic)*DT
6586 QCSINK = (QHOci+QNMci+QNCci+QRMci+QRMcs+QRMcg+QRMch+QCLcr+QCNcr+ &
6588 IF (QCSINK.GT.QCSOUR.AND.QCSOUR.GE.QSMALL) THEN
6589 RATIO = MIN(1.,QCSOUR/(QCSINK+QSMALL))
6590 QHOci = QHOci*RATIO; QNMci = QNMci*RATIO; QNCci = QNCci*RATIO
6591 QRMci = QRMci*RATIO; QRMcs = QRMcs*RATIO; QRMcg = QRMcg*RATIO
6592 QRMch = QRMch*RATIO; QCLcr = QCLcr*RATIO; QCNcr = QCNcr*RATIO
6593 QIMcsi = QIMcsi*RATIO; QIMcgi = QIMcgi*RATIO
6595 NCSOUR = NC1D+(NBKrc-NMLic)*DT
6596 NCSINK = (NHOci+NNMci+NNCci+NRMci+NRMcs+NRMcg+NRMch+NCLcr+NCLcc+ &
6597 NCNcr+NIMcsi+NIMcgi)*DT
6598 IF (NCSINK.GT.NCSOUR.AND.NCSOUR.GE.NSMALL) THEN
6599 RATIO = MIN(1.,NCSOUR/(NCSINK+NSMALL))
6600 NHOci = NHOci*RATIO; NNMci = NNMci*RATIO; NNCci = NNCci*RATIO
6601 NRMci = NRMci*RATIO; NRMcs = NRMcs*RATIO; NRMcg = NRMcg*RATIO
6602 NRMch = NRMch*RATIO; NCLcr = NCLcr*RATIO; NCLcc = NCLcc*RATIO
6603 NCNcr = NCNcr*RATIO; NIMcsi = NIMcsi*RATIO
6604 NIMcgi = NIMcgi*RATIO
6606 QRSOUR = QR1D+(QCLcr+QCNcr-QMLir-QMLsr-QMLgr-QMLhr+QHwsh-QHwml)*DT
6607 QRSINK = (QHOrg+QNMrg+QRMri+QRMrs+QRMrg+QRMrh+QBKrc+QIMrsi+ &
6609 IF (QRSINK.GT.QRSOUR.AND.QRSOUR.GE.QSMALL) THEN
6610 RATIO = MIN(1.,QRSOUR/(QRSINK+QSMALL))
6611 QHOrg = QHOrg*RATIO; QNMrg = QNMrg*RATIO; QRMri = QRMri*RATIO
6612 QRMrs = QRMrs*RATIO; QRMrg = QRMrg*RATIO; QRMrh = QRMrh*RATIO
6613 QBKrc = QBKrc*RATIO; QIMrsi = QIMrsi*RATIO
6614 QIMrgi = QIMrgi*RATIO
6616 NRSOUR = NR1D+(NCNcr+NBKrr-NMLir-NMLsr-NMLgr-NMLhr+NCLcr+NHwsh)*DT
6617 NRSINK = (NHOrg+NNMrg+NRMri+NRMrs+NRMrg+NRMrh+NCLrr+NBKrc+NIMrsi+&
6619 IF (NRSINK.GT.NRSOUR.AND.NRSOUR.GE.NSMALL) THEN
6620 RATIO = MIN(1.,NRSOUR/(NRSINK+NSMALL))
6621 NHOrg = NHOrg*RATIO; NNMrg = NNMrg*RATIO; NRMri = NRMri*RATIO
6622 NRMrs = NRMrs*RATIO; NRMrg = NRMrg*RATIO; NRMrh = NRMrh*RATIO
6623 NCLrr = NCLrr*RATIO; NBKrc = NBKrc*RATIO; NIMrsi = NIMrsi*RATIO
6624 NIMrgi = NIMrgi*RATIO
6626 QISOUR = QI1D+(QIMcsi+QIMcgi+QIMrsi+QIMrgi+QHOci+QNMci+QNCci+ &
6628 QISINK = (-QMLir-QMLic+QCLir+QCLis+QCLig+QCLih+QINig+QCNis)*DT
6629 IF (QISINK.GT.QISOUR.AND.QISOUR.GE.QSMALL) THEN
6630 RATIO = MIN(1.,QISOUR/(QISINK+QSMALL))
6631 QMLir = QMLir*RATIO; QMLic = QMLic*RATIO; QCLir = QCLir*RATIO
6632 QCLis = QCLis*RATIO; QCLig = QCLig*RATIO; QCLih = QCLih*RATIO
6633 QINig = QINig*RATIO; QCNis = QCNis*RATIO
6635 NISOUR = NI1D+(NIMcsi+NIMcgi+NIMrsi+NIMrgi+NHOci+NNMci+NNCci)*DT
6636 NISINK = (-NMLir-NMLic+NCLir+NCLis+NCLig+NCLih+NINig+NiCNis)*DT
6637 IF (NISINK.GT.NISOUR.AND.NISOUR.GE.NSMALL) THEN
6638 RATIO = MIN(1.,NISOUR/(NISINK+NSMALL))
6639 NCLis = NCLis*RATIO; NCLig = NCLig*RATIO; NCLih = NCLih*RATIO
6640 NINig = NINig*RATIO; NMLir = NMLir*RATIO; NMLic = NMLic*RATIO
6641 NCLir = NCLir*RATIO; NiCNis = NiCNis*RATIO
6643 VISOUR = VI1D+(VIMcsi+VIMcgi+VIMrsi+VIMrgi+VHOci+VNMci+VNCci+ &
6645 VISINK = (-VMLir-VMLic+VCLir+ViCLis+ViCLig+VCLih+ViINig+ViCNis)*DT
6646 IF (VISINK.GT.VISOUR.AND.VISOUR.GE.ISMALL) THEN
6647 RATIO = MIN(1.,VISOUR/(VISINK+ISMALL))
6648 VMLir = VMLir*RATIO; VMLic = VMLic*RATIO; VCLir = VCLir*RATIO
6649 ViCLis = ViCLis*RATIO; ViCLig = ViCLig*RATIO
6650 VCLih = VCLih*RATIO; ViINig = ViINig*RATIO
6651 ViCNis = ViCNis*RATIO
6653 FISOUR = FI1D+(FIMcsi+FIMcgi+FIMrsi+FIMrgi+FHOci+FNMci+FNCci+ &
6655 FISINK = (-FMLir-FMLic+FCLir+FiCLis+FCLig+FCLih+FINig+FiCNis)*DT
6656 IF (FISINK.GT.FISOUR.AND.FISOUR.GE.ISMALL) THEN
6657 RATIO = MIN(1.,FISOUR/(FISINK+ISMALL))
6658 FMLir = FMLir*RATIO; FMLic = FMLic*RATIO; FCLir = FCLir*RATIO
6659 FiCLis = FiCLis*RATIO; FCLig = FCLig*RATIO; FCLih = FCLih*RATIO
6660 FINig = FINig*RATIO; FiCNis = FiCNis*RATIO
6662 AISOUR = AI1D+(AIMcsi+AIMcgi+AIMrsi+AIMrgi+AHOci+ANMci+ANCci+ &
6664 AISINK = (ACLir-AMLir-AMLic+AiCLis+AiCLig+AiCLih+AiINig+AiCNis)*DT
6665 IF (AISINK.GT.AISOUR.AND.AISOUR.GE.ASMALL) THEN
6666 RATIO = MIN(1.,AISOUR/(AISINK+ASMALL))
6667 AMLir = AMLir*RATIO; AMLic = AMLic*RATIO
6668 ACLir = ACLir*RATIO; AiCLis = AiCLis*RATIO
6669 AiCLig = AiCLig*RATIO; AiCLih = AiCLih*RATIO
6670 AiINig = AiINig*RATIO; AiCNis = AiCNis*RATIO
6672 IISOUR = I3M1D+(IIMcsi+IIMcgi+IIMrsi+IIMrgi+IHOci+INMci+INCci+ &
6674 IISINK = (-IMLir-IMLic+ICLir+ICLis+ICLig+ICLih+IINig+ICNis)*DT
6675 IF (IISINK.GT.IISOUR.AND.IISOUR.GE.ISMALL) THEN
6676 RATIO = MIN(1.,IISOUR/(IISINK+ISMALL))
6677 IMLir = IMLir*RATIO; IMLic = IMLic*RATIO; ICLir = ICLir*RATIO
6678 ICLis = ICLis*RATIO; ICLig = ICLig*RATIO; ICLih = ICLih*RATIO
6679 IINig = IINig*RATIO; ICNis = ICNis*RATIO
6681 QSSOUR = QS1D+(QCNis+QCLis+QRMcs)*DT
6682 QSSINK = (-QMLsr+QCLsr+QCLsg+QCLsh+QINsg)*DT
6683 IF (QSSINK.GT.QSSOUR.AND.QSSOUR.GE.QSMALL) THEN
6684 RATIO = MIN(1.,QSSOUR/(QSSINK+QSMALL))
6685 QMLsr = QMLsr*RATIO; QCLsg = QCLsg*RATIO; QCLsh = QCLsh*RATIO
6686 QINsg = QINsg*RATIO; QCLsr = QCLsr*RATIO
6688 NSSOUR = NS1D+NsCNis*DT
6689 NSSINK = (-NMLsr+NCLsr+NCLsg+NCLsh-NCLss+NINsg)*DT
6690 IF (NSSINK.GT.NSSOUR.AND.NSSOUR.GE.NSMALL) THEN
6691 RATIO = MIN(1.,NSSOUR/(NSSINK+NSMALL))
6692 NMLsr = NMLsr*RATIO; NCLsg = NCLsg*RATIO; NCLsh = NCLsh*RATIO
6693 NCLss = NCLss*RATIO; NINsg = NINsg*RATIO; NCLsr = NCLsr*RATIO
6695 VSSOUR = VS1D+(VsCNis+VsCLis+VRMcs+VCLss)*DT
6696 VSSINK = (-VMLsr+VCLsr+VsCLsg+VCLsh+VsINsg)*DT
6697 IF (VSSINK.GT.VSSOUR.AND.VSSOUR.GE.ISMALL) THEN
6698 RATIO = MIN(1.,VSSOUR/(VSSINK+ISMALL))
6699 VMLsr = VMLsr*RATIO; VsCLsg = VsCLsg*RATIO; VCLsh = VCLsh*RATIO
6700 VsINsg = VsINsg*RATIO; VCLsr = VCLsr*RATIO
6702 FSSOUR = FS1D+(FsCNis+FsCLis+FRMcs+FCLss)*DT
6703 FSSINK = (-FMLsr+FCLsr+FCLsg+FCLsh+FINsg)*DT
6704 IF (FSSINK.GT.FSSOUR.AND.FSSOUR.GE.QSMALL) THEN
6705 RATIO = MIN(1.,FSSOUR/(FSSINK+QSMALL))
6706 FMLsr = FMLsr*RATIO; FCLsg = FCLsg*RATIO; FCLsh = FCLsh*RATIO
6707 FINsg = FINsg*RATIO; FCLsr = FCLsr*RATIO
6709 ASSOUR = AS1D+(AsCNis+AsCLis+ARMcs+ACLss)*DT
6710 ASSINK = (-AMLsr+ACLsr+AsCLsg+AsCLsh+AsINsg-ACLss1)*DT
6711 IF (ASSINK.GT.ASSOUR.AND.ASSOUR.GE.ASMALL) THEN
6712 RATIO = MIN(1.,ASSOUR/(ASSINK+ASMALL))
6713 AMLsr = AMLsr*RATIO; AsINsg = AsINsg*RATIO; ACLsr = ACLsr*RATIO
6714 AsCLsg = AsCLsg*RATIO; AsCLsh = AsCLsh*RATIO
6715 ACLss1 = ACLss1*RATIO
6717 QGSOUR = QG1D+(QHOrg+QNMrg+QCLig+QCLsg+QINig+QINsg+QRMcg+QCLirg+ &
6719 QGSINK = (-QMLgr+QCNgh+QCLgr)*DT
6720 IF (QGSINK.GT.QGSOUR.AND.QGSOUR.GE.QSMALL) THEN
6721 RATIO = MIN(1.,QGSOUR/(QGSINK+QSMALL))
6722 QMLgr = QMLgr*RATIO; QCNgh = QCNgh*RATIO; QCLgr = QCLgr*RATIO
6724 NGSOUR = NG1D+(NHOrg+NNMrg+NINig+NINsg+NCLirg+NCLsrg+NCLgrg)*DT
6725 NGSINK = (-NMLgr+NgCNgh+NCLgr)*DT
6726 IF (NGSINK.GT.NGSOUR.AND.NGSOUR.GE.NSMALL) THEN
6727 RATIO = MIN(1.,NGSOUR/(NGSINK+NSMALL))
6728 NMLgr = NMLgr*RATIO; NgCNgh = NgCNgh*RATIO; NCLgr = NCLgr*RATIO
6730 VGSOUR = VG1D+(VHOrg+VNMrg+VgCLig+VgCLsg+VgINig+VgINsg+VRMcg+ &
6731 VCLirg+VCLsrg+VCLgrg)*DT
6732 VGSINK = (-VMLgr+VCNgh+VCLgr)*DT
6733 IF (VGSINK.GT.VGSOUR.AND.VGSOUR.GE.ISMALL) THEN
6734 RATIO = MIN(1.,VGSOUR/(VGSINK+ISMALL))
6735 VMLgr = VMLgr*RATIO; VCNgh = VCNgh*RATIO; VCLgr = VCLgr*RATIO
6737 AGSOUR = AG1D+(AHOrg+ANMrg+AgCLig+AgCLsg+AgINig+AgINsg+ARMcg+ &
6738 ACLirg+ACLsrg+ACLgrg)*DT
6739 AGSINK = (-AMLgr+AgCNgh+ACLgr)*DT
6740 IF (AGSINK.GT.AGSOUR.AND.AGSOUR.GE.ASMALL) THEN
6741 RATIO = MIN(1.,AGSOUR/(AGSINK+ASMALL))
6742 AMLgr = AMLgr*RATIO; AgCNgh = AgCNgh*RATIO; ACLgr = ACLgr*RATIO
6744 QHSOUR = QH1D+(QCNgh+QCLih+QCLsh+QHdrm)*DT
6745 QHSINK = (-QMLhr-QHwml)*DT
6746 IF (QHSINK.GT.QHSOUR.AND.QHSOUR.GE.QSMALL) THEN
6747 RATIO = MIN(1.,QHSOUR/(QHSINK+QSMALL))
6748 QMLhr = QMLhr*RATIO; QHwml = QHwml*RATIO
6750 NHSOUR = NH1D+(NhCNgh)*DT
6751 NHSINK = (-NMLhr)*DT
6752 IF (NHSINK.GT.NHSOUR.AND.NHSOUR.GE.NSMALL) THEN
6753 RATIO = MIN(1.,NHSOUR/(NHSINK+NSMALL))
6756 AHSOUR = AH1D+(AhCNgh+AhCLih+AhCLsh+AHdrm)*DT
6757 AHSINK = (-AMLhr-AHwml)*DT
6758 IF (AHSINK.GT.AHSOUR.AND.AHSOUR.GE.ASMALL) THEN
6759 RATIO = MIN(1.,AHSOUR/(AHSINK+ASMALL))
6760 AMLhr = AMLhr*RATIO; AHwml = AHwml*RATIO
6763 QFZci = QHOci+QNMci+QNCci
6764 NFZci = NHOci+NNMci+NNCci
6765 VFZci = VHOci+VNMci+VNCci
6766 FFZci = FHOci+FNMci+FNCci
6767 AFZci = AHOci+ANMci+ANCci
6768 IFZci = IHOci+INMci+INCci
6773 QIMii = QIMcsi+QIMcgi+QIMrsi+QIMrgi
6774 NIMii = NIMcsi+NIMcgi+NIMrsi+NIMrgi
6775 VIMii = VIMcsi+VIMcgi+VIMrsi+VIMrgi
6776 AIMii = AIMcsi+AIMcgi+AIMrsi+AIMrgi
6777 FIMii = FIMcsi+FIMcgi+FIMrsi+FIMrgi
6778 IIMii = IIMcsi+IIMcgi+IIMrsi+IIMrgi
6779 GQCTR = (QRMcs+QRMcg+QRMch+QCLir+QCLcr+QCLis+QCLig+QCLih+QCNcr+ &
6780 QCNis+QINig-QBKrc-QIMcsi-QIMcgi-QMLir)*DT
6781 !----------------- UPDATE VARIABLES ------------------------------------
6782 QC1D = MAX(0.,QC1D+(QBKrc-QCLcr-QCNcr-QFZci-QMLic-QRMci-QRMcs- &
6783 QRMcg-QRMch-QIMcsi-QIMcgi)*DT)
6784 QR1D = MAX(0.,QR1D+(QCLcr+QCNcr-QBKrc-QFZrg-QIMrsi-QIMrgi-QMLir- &
6785 QMLsr-QMLgr-QMLhr-QRMri-QRMrs-QRMrg-QRMrh+QHwsh-QHwml)*DT)
6786 QI1D = MAX(0.,QI1D+(QIMii-QCNis-QCLis-QCLig-QCLih-QINig+QFZci+ &
6787 QMLir+QMLic+QRMci-QCLir)*DT)
6788 QS1D = MAX(0.,QS1D+(QCNis+QCLis-QCLsg-QCLsh-QINsg+QMLsr+QRMcs- &
6790 QG1D = MAX(0.,QG1D+(QFZrg+QCLig+QCLsg+QINig+QINsg+QMLgr+QRMcg- &
6791 QCNgh-QCLgr+QCLirg+QCLsrg+QCLgrg)*DT)
6792 QH1D = MAX(0.,QH1D+(QMLhr+QCNgh+QHdrm+QCLih+QCLsh+QHwml)*DT)
6793 NC1D = MAX(0.,NC1D+(NBKrc-NCLcr-NCLcc-NCNcr-NFZci-NRMci-NRMcs- &
6794 NRMcg-NRMch-NMLic-NIMcsi-NIMcgi)*DT)
6795 NR1D = MAX(0.,NR1D+(NCNcr+NBKrr-NBKrc-NCLrr-NIMrsi-NIMrgi-NFZrg- &
6796 NMLir-NMLsr-NMLgr-NMLhr-NRMri-NRMrs-NRMrg-NRMrh+NHwsh)*DT)
6797 NI1D = MAX(0.,NI1D+(NIMii-NiCNis-NCLis-NCLig-NCLih-NINig+NFZci+ &
6798 NMLir+NMLic-NCLir)*DT)
6799 NS1D = MAX(0.,NS1D+(NsCNis-NCLsg-NCLsh+NCLss-NINsg+NMLsr-NCLsr)* &
6801 NG1D = MAX(0.,NG1D+(NFZrg+NINig+NINsg+NMLgr-NgCNgh-NCLgr+NCLirg+ &
6803 NH1D = MAX(0.,NH1D+(NMLhr+NhCNgh)*DT)
6804 IF (ICE_RHOI.EQ.0.OR.ICE_RHOI.EQ.2) THEN
6806 ELSEIF (ICE_RHOI.EQ.1) THEN
6807 VI1D = MAX(0.,VI1D+(VIMii-ViCNis-ViCLis-ViCLig-VCLih-ViINig+ &
6808 VFZci+VMLir+VMLic+VRMci-VCLir)*DT)
6810 IF (ICE_RHOS.EQ.0.OR.ICE_RHOS.EQ.2) THEN
6812 ELSEIF (ICE_RHOS.EQ.1) THEN
6813 VS1D = MAX(0.,VS1D+(VsCNis+VsCLis-VsCLsg-VCLsh-VsINsg+VMLsr+ &
6814 VRMcs-VCLsr+VCLss)*DT)
6816 IF (ICE_RHOG.EQ.0) THEN
6818 ELSEIF (ICE_RHOG.EQ.1.OR.ICE_RHOG.EQ.2) THEN
6819 VG1D = MAX(0.,VG1D+(VFZrg+VgCLig+VgCLsg+VgINig+VgINsg+VMLgr+ &
6820 VRMcg-VCNgh-VCLgr+VCLirg+VCLsrg+VCLgrg)*DT)
6822 FI1D = MAX(0.,FI1D+(FIMii-FiCNis-FiCLis-FCLig-FCLih-FINig+FFZci+ &
6823 FMLir+FMLic+FRMci-FCLir)*DT)
6824 IF (AGG_SHAPE.EQ.0) THEN
6826 ELSEIF (AGG_SHAPE.EQ.1) THEN
6827 FS1D = MAX(0.,FS1D+(FsCNis+FsCLis-FCLsg-FCLsh-FINsg+FMLsr+ &
6828 FRMcs-FCLsr+FCLss)*DT)
6830 I3M1D = MAX(0.,I3M1D+(IIMii-ICNis-ICLis-ICLig-ICLih-IINig+IFZci+ &
6831 IMLir+IMLic+IRMci-ICLir)*DT)
6832 IF (AFAI_3M.EQ.0.OR.AFAI_3M.EQ.2) THEN
6834 ELSEIF (AFAI_3M.EQ.1) THEN
6835 AI1D = MAX(0.,AI1D+(AIMii-AiCNis-AiCLis-AiCLig-AiCLih-AiINig+ &
6836 AFZci+AMLir+AMLic+ARMci-ACLir)*DT)
6838 IF (AFAS_3M.EQ.0.OR.AFAS_3M.EQ.2) THEN
6840 ELSEIF (AFAS_3M.EQ.1) THEN
6841 AS1D = MAX(0.,AS1D+(AsCNis+AsCLis-AsCLsg-AsCLsh-AsINsg+AMLsr+ &
6842 ARMcs-ACLsr+ACLss+ACLss1)*DT)
6844 IF (AFAG_3M.EQ.0.OR.AFAG_3M.EQ.2) THEN
6846 ELSEIF (AFAG_3M.EQ.1) THEN
6847 AG1D = MAX(0.,AG1D+(AFZrg+AgCLig+AgCLsg+AgINig+AgINsg+AMLgr+ &
6848 ARMcg-AgCNgh-ACLgr+ACLirg+ACLsrg+ACLgrg)*DT)
6850 IF (AFAH_3M.EQ.0.OR.AFAH_3M.EQ.2) THEN
6852 ELSEIF (AFAH_3M.EQ.1) THEN
6853 AH1D = MAX(0.,AH1D+(AMLhr+AhCNgh+AHdrm+AhCLih+AhCLsh+AHwml)*DT)
6855 ! QNIN = MAX(0.,QNIN-(NNCci+NNMci)*DT)
6856 TK1D = TK1D+((QFZci+QFZrg+QMLir+QMLic+QMLsr+QMLgr+QMLhr+QRMci+ &
6857 QRMcs+QRMcg+QRMri+QRMrs+QRMrg+QIMii+QHdrm+QHwml)*XXLF)/ &
6860 IF (QC1D.GE.QSMALL.AND.NC1D.GE.NSMALL) THEN
6861 MVDC = (QC1D*iAMW/NC1D)**THRD
6862 IF (MVDC.GT.DCR) THEN
6865 QC1D = 0.; NC1D = 0.
6868 IF (QR1D.GE.QSMALL.AND.NR1D.GE.NSMALL) THEN
6869 MVDR = (QR1D*iAMW/NR1D)**THRD
6870 IF (MVDR.LT.DCR) THEN
6873 QR1D = 0.; NR1D = 0.
6876 IF (QH1D.GE.QSMALL.AND.NH1D.GE.NSMALL) THEN
6877 MVDH = (QH1D*iAMH/NH1D)**THRD
6878 IF (MVDH.LT.DHMIN) THEN
6881 VG1D = VG1D+QH1D/RHOG0
6882 QH1D = 0.; NH1D = 0.
6883 IF (AH1D.GE.ASMALL.AND.AFAG_3M.EQ.1) THEN
6889 IF (GQCTR.GT.0.) THEN
6891 IF (TQCI.GT.RLIMIT*2.) THEN
6892 GQCTR = MIN(1.,GQCTR/TQCI)
6897 TQRSG = QR1D+QS1D+QG1D+QH1D
6898 IF (TQRSG.GT.RLIMIT*3.) THEN
6899 GQCTR = MAX(-1.,GQCTR/TQRSG)
6905 END SUBROUTINE LARGE_DT
6906 !======================================================================
6907 END MODULE MODULE_MP_NTU
6908 !======================================================================