PageRenderTime 60ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 1ms

/wrfv2_fire/phys/module_mp_morr_two_moment.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 4277 lines | 2282 code | 883 blank | 1112 comment | 8 complexity | e220149e4d11905453d573b2401b0487 MD5 | raw file
Possible License(s): AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  1. !WRF:MODEL_LAYER:PHYSICS
  2. !
  3. ! THIS MODULE CONTAINS THE TWO-MOMENT MICROPHYSICS CODE DESCRIBED BY
  4. ! MORRISON ET AL. (2009, MWR)
  5. ! CHANGES FOR V3.2, RELATIVE TO MOST RECENT (BUG-FIX) CODE FOR V3.1
  6. ! 1) ADDED ACCELERATED MELTING OF GRAUPEL/SNOW DUE TO COLLISION WITH RAIN, FOLLOWING LIN ET AL. (1983)
  7. ! 2) INCREASED MINIMUM LAMBDA FOR RAIN, AND ADDED RAIN DROP BREAKUP FOLLOWING MODIFIED VERSION
  8. ! OF VERLINDE AND COTTON (1993)
  9. ! 3) CHANGE MINIMUM ALLOWED MIXING RATIOS IN DRY CONDITIONS (RH < 90%), THIS IMPROVES RADAR REFLECTIIVITY
  10. ! IN LOW REFLECTIVITY REGIONS
  11. ! 4) BUG FIX TO MAXIMUM ALLOWED PARTICLE FALLSPEEDS AS A FUNCTION OF AIR DENSITY
  12. ! 5) BUG FIX TO CALCULATION OF LIQUID WATER SATURATION VAPOR PRESSURE (CHANGE IS VERY MINOR)
  13. ! 6) INCLUDE WRF CONSTANTS PER SUGGESTION OF JIMY
  14. ! bug fix, 5/12/10
  15. ! 7) bug fix for saturation vapor pressure in low pressure, to avoid division by zero
  16. ! 8) include 'EP2' WRF constant for saturation mixing ratio calculation, instead of hardwire constant
  17. ! CHANGES FOR V3.3
  18. ! 1) MODIFICATION FOR COUPLING WITH WRF-CHEM (PREDICTED DROPLET NUMBER CONCENTRATION) AS AN OPTION
  19. ! 2) MODIFY FALLSPEED BELOW THE LOWEST LEVEL OF PRECIPITATION, WHICH PREVENTS
  20. ! POTENTIAL FOR SPURIOUS ACCUMULATION OF PRECIPITATION DURING SUB-STEPPING FOR SEDIMENTATION
  21. ! 3) BUG FIX TO LATENT HEAT RELEASE DUE TO COLLISIONS OF CLOUD ICE WITH RAIN
  22. ! 4) CLEAN UP OF COMMENTS IN THE CODE
  23. ! additional minor bug fixes and small changes, 5/30/2011
  24. ! minor revisions by A. Ackerman April 2011:
  25. ! 1) replaced kinematic with dynamic viscosity
  26. ! 2) replaced scaling by air density for cloud droplet sedimentation
  27. ! with viscosity-dependent Stokes expression
  28. ! 3) use Ikawa and Saito (1991) air-density scaling for cloud ice
  29. ! 4) corrected typo in 2nd digit of ventilation constant F2R
  30. ! additional fixes:
  31. ! 5) TEMPERATURE FOR ACCELERATED MELTING DUE TO COLLIIONS OF SNOW AND GRAUPEL
  32. ! WITH RAIN SHOULD USE CELSIUS, NOT KELVIN (BUG REPORTED BY K. VAN WEVERBERG)
  33. ! 6) NPRACS IS NOT SUBTRACTED FROM SNOW NUMBER CONCENTRATION, SINCE
  34. ! DECREASE IN SNOW NUMBER IS ALREADY ACCOUNTED FOR BY NSMLTS
  35. ! 7) fix for switch for running w/o graupel/hail (cloud ice and snow only)
  36. ! hm bug fix 3/16/12
  37. ! 1) very minor change to limits on autoconversion source of rain number when cloud water is depleted
  38. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  39. ! THIS SCHEME IS A BULK DOUBLE-MOMENT SCHEME THAT PREDICTS MIXING
  40. ! RATIOS AND NUMBER CONCENTRATIONS OF FIVE HYDROMETEOR SPECIES:
  41. ! CLOUD DROPLETS, CLOUD (SMALL) ICE, RAIN, SNOW, AND GRAUPEL.
  42. MODULE MODULE_MP_MORR_TWO_MOMENT
  43. USE module_wrf_error
  44. ! USE module_utility, ONLY: WRFU_Clock, WRFU_Alarm ! GT
  45. ! USE module_domain, ONLY : HISTORY_ALARM, Is_alarm_tstep ! GT
  46. ! USE WRF PHYSICS CONSTANTS
  47. use module_model_constants, ONLY: CP, G, R => r_d, RV => r_v, EP_2
  48. ! USE module_state_description
  49. IMPLICIT NONE
  50. REAL, PARAMETER :: PI = 3.1415926535897932384626434
  51. REAL, PARAMETER :: SQRTPI = 0.9189385332046727417803297
  52. PUBLIC :: MP_MORR_TWO_MOMENT
  53. PUBLIC :: POLYSVP
  54. PRIVATE :: GAMMA, DERF1
  55. PRIVATE :: PI, SQRTPI
  56. PRIVATE :: MORR_TWO_MOMENT_MICRO
  57. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  58. ! SWITCHES FOR MICROPHYSICS SCHEME
  59. ! IACT = 1, USE POWER-LAW CCN SPECTRA, NCCN = CS^K
  60. ! IACT = 2, USE LOGNORMAL AEROSOL SIZE DIST TO DERIVE CCN SPECTRA
  61. ! IACT = 3, ACTIVATION CALCULATED IN MODULE_MIXACTIVATE
  62. INTEGER, PRIVATE :: IACT
  63. ! INUM = 0, PREDICT DROPLET CONCENTRATION
  64. ! INUM = 1, ASSUME CONSTANT DROPLET CONCENTRATION
  65. ! !!!NOTE: PREDICTED DROPLET CONCENTRATION NOT AVAILABLE IN THIS VERSION
  66. ! CONTACT HUGH MORRISON (morrison@ucar.edu) FOR FURTHER INFORMATION
  67. INTEGER, PRIVATE :: INUM
  68. ! FOR INUM = 1, SET CONSTANT DROPLET CONCENTRATION (CM-3)
  69. REAL, PRIVATE :: NDCNST
  70. ! SWITCH FOR LIQUID-ONLY RUN
  71. ! ILIQ = 0, INCLUDE ICE
  72. ! ILIQ = 1, LIQUID ONLY, NO ICE
  73. INTEGER, PRIVATE :: ILIQ
  74. ! SWITCH FOR ICE NUCLEATION
  75. ! INUC = 0, USE FORMULA FROM RASMUSSEN ET AL. 2002 (MID-LATITUDE)
  76. ! = 1, USE MPACE OBSERVATIONS
  77. INTEGER, PRIVATE :: INUC
  78. ! IBASE = 1, NEGLECT DROPLET ACTIVATION AT LATERAL CLOUD EDGES DUE TO
  79. ! UNRESOLVED ENTRAINMENT AND MIXING, ACTIVATE
  80. ! AT CLOUD BASE OR IN REGION WITH LITTLE CLOUD WATER USING
  81. ! NON-EQULIBRIUM SUPERSATURATION,
  82. ! IN CLOUD INTERIOR ACTIVATE USING EQUILIBRIUM SUPERSATURATION
  83. ! IBASE = 2, ASSUME DROPLET ACTIVATION AT LATERAL CLOUD EDGES DUE TO
  84. ! UNRESOLVED ENTRAINMENT AND MIXING DOMINATES,
  85. ! ACTIVATE DROPLETS EVERYWHERE IN THE CLOUD USING NON-EQUILIBRIUM
  86. ! SUPERSATURATION, BASED ON THE
  87. ! LOCAL SUB-GRID AND/OR GRID-SCALE VERTICAL VELOCITY
  88. ! AT THE GRID POINT
  89. ! NOTE: ONLY USED FOR PREDICTED DROPLET CONCENTRATION (INUM = 0)
  90. INTEGER, PRIVATE :: IBASE
  91. ! INCLUDE SUB-GRID VERTICAL VELOCITY IN DROPLET ACTIVATION
  92. ! ISUB = 0, INCLUDE SUB-GRID W (RECOMMENDED FOR LOWER RESOLUTION)
  93. ! ISUB = 1, EXCLUDE SUB-GRID W, ONLY USE GRID-SCALE W
  94. INTEGER, PRIVATE :: ISUB
  95. ! SWITCH FOR GRAUPEL/NO GRAUPEL
  96. ! IGRAUP = 0, INCLUDE GRAUPEL
  97. ! IGRAUP = 1, NO GRAUPEL
  98. INTEGER, PRIVATE :: IGRAUP
  99. ! HM ADDED NEW OPTION FOR HAIL
  100. ! SWITCH FOR HAIL/GRAUPEL
  101. ! IHAIL = 0, DENSE PRECIPITATING ICE IS GRAUPEL
  102. ! IHAIL = 1, DENSE PRECIPITATING GICE IS HAIL
  103. INTEGER, PRIVATE :: IHAIL
  104. ! CLOUD MICROPHYSICS CONSTANTS
  105. REAL, PRIVATE :: AI,AC,AS,AR,AG ! 'A' PARAMETER IN FALLSPEED-DIAM RELATIONSHIP
  106. REAL, PRIVATE :: BI,BC,BS,BR,BG ! 'B' PARAMETER IN FALLSPEED-DIAM RELATIONSHIP
  107. ! REAL, PRIVATE :: R ! GAS CONSTANT FOR AIR
  108. ! REAL, PRIVATE :: RV ! GAS CONSTANT FOR WATER VAPOR
  109. ! REAL, PRIVATE :: CP ! SPECIFIC HEAT AT CONSTANT PRESSURE FOR DRY AIR
  110. REAL, PRIVATE :: RHOSU ! STANDARD AIR DENSITY AT 850 MB
  111. REAL, PRIVATE :: RHOW ! DENSITY OF LIQUID WATER
  112. REAL, PRIVATE :: RHOI ! BULK DENSITY OF CLOUD ICE
  113. REAL, PRIVATE :: RHOSN ! BULK DENSITY OF SNOW
  114. REAL, PRIVATE :: RHOG ! BULK DENSITY OF GRAUPEL
  115. REAL, PRIVATE :: AIMM ! PARAMETER IN BIGG IMMERSION FREEZING
  116. REAL, PRIVATE :: BIMM ! PARAMETER IN BIGG IMMERSION FREEZING
  117. REAL, PRIVATE :: ECR ! COLLECTION EFFICIENCY BETWEEN DROPLETS/RAIN AND SNOW/RAIN
  118. REAL, PRIVATE :: DCS ! THRESHOLD SIZE FOR CLOUD ICE AUTOCONVERSION
  119. REAL, PRIVATE :: MI0 ! INITIAL SIZE OF NUCLEATED CRYSTAL
  120. REAL, PRIVATE :: MG0 ! MASS OF EMBRYO GRAUPEL
  121. REAL, PRIVATE :: F1S ! VENTILATION PARAMETER FOR SNOW
  122. REAL, PRIVATE :: F2S ! VENTILATION PARAMETER FOR SNOW
  123. REAL, PRIVATE :: F1R ! VENTILATION PARAMETER FOR RAIN
  124. REAL, PRIVATE :: F2R ! VENTILATION PARAMETER FOR RAIN
  125. ! REAL, PRIVATE :: G ! GRAVITATIONAL ACCELERATION
  126. REAL, PRIVATE :: QSMALL ! SMALLEST ALLOWED HYDROMETEOR MIXING RATIO
  127. REAL, PRIVATE :: CI,DI,CS,DS,CG,DG ! SIZE DISTRIBUTION PARAMETERS FOR CLOUD ICE, SNOW, GRAUPEL
  128. REAL, PRIVATE :: EII ! COLLECTION EFFICIENCY, ICE-ICE COLLISIONS
  129. REAL, PRIVATE :: ECI ! COLLECTION EFFICIENCY, ICE-DROPLET COLLISIONS
  130. REAL, PRIVATE :: RIN ! RADIUS OF CONTACT NUCLEI (M)
  131. ! hm, add for V3.2
  132. REAL, PRIVATE :: CPW ! SPECIFIC HEAT OF LIQUID WATER
  133. ! CCN SPECTRA FOR IACT = 1
  134. REAL, PRIVATE :: C1 ! 'C' IN NCCN = CS^K (CM-3)
  135. REAL, PRIVATE :: K1 ! 'K' IN NCCN = CS^K
  136. ! AEROSOL PARAMETERS FOR IACT = 2
  137. REAL, PRIVATE :: MW ! MOLECULAR WEIGHT WATER (KG/MOL)
  138. REAL, PRIVATE :: OSM ! OSMOTIC COEFFICIENT
  139. REAL, PRIVATE :: VI ! NUMBER OF ION DISSOCIATED IN SOLUTION
  140. REAL, PRIVATE :: EPSM ! AEROSOL SOLUBLE FRACTION
  141. REAL, PRIVATE :: RHOA ! AEROSOL BULK DENSITY (KG/M3)
  142. REAL, PRIVATE :: MAP ! MOLECULAR WEIGHT AEROSOL (KG/MOL)
  143. REAL, PRIVATE :: MA ! MOLECULAR WEIGHT OF 'AIR' (KG/MOL)
  144. REAL, PRIVATE :: RR ! UNIVERSAL GAS CONSTANT
  145. REAL, PRIVATE :: BACT ! ACTIVATION PARAMETER
  146. REAL, PRIVATE :: RM1 ! GEOMETRIC MEAN RADIUS, MODE 1 (M)
  147. REAL, PRIVATE :: RM2 ! GEOMETRIC MEAN RADIUS, MODE 2 (M)
  148. REAL, PRIVATE :: NANEW1 ! TOTAL AEROSOL CONCENTRATION, MODE 1 (M^-3)
  149. REAL, PRIVATE :: NANEW2 ! TOTAL AEROSOL CONCENTRATION, MODE 2 (M^-3)
  150. REAL, PRIVATE :: SIG1 ! STANDARD DEVIATION OF AEROSOL S.D., MODE 1
  151. REAL, PRIVATE :: SIG2 ! STANDARD DEVIATION OF AEROSOL S.D., MODE 2
  152. REAL, PRIVATE :: F11 ! CORRECTION FACTOR FOR ACTIVATION, MODE 1
  153. REAL, PRIVATE :: F12 ! CORRECTION FACTOR FOR ACTIVATION, MODE 1
  154. REAL, PRIVATE :: F21 ! CORRECTION FACTOR FOR ACTIVATION, MODE 2
  155. REAL, PRIVATE :: F22 ! CORRECTION FACTOR FOR ACTIVATION, MODE 2
  156. REAL, PRIVATE :: MMULT ! MASS OF SPLINTERED ICE PARTICLE
  157. REAL, PRIVATE :: LAMMAXI,LAMMINI,LAMMAXR,LAMMINR,LAMMAXS,LAMMINS,LAMMAXG,LAMMING
  158. ! CONSTANTS TO IMPROVE EFFICIENCY
  159. REAL, PRIVATE :: CONS1,CONS2,CONS3,CONS4,CONS5,CONS6,CONS7,CONS8,CONS9,CONS10
  160. REAL, PRIVATE :: CONS11,CONS12,CONS13,CONS14,CONS15,CONS16,CONS17,CONS18,CONS19,CONS20
  161. REAL, PRIVATE :: CONS21,CONS22,CONS23,CONS24,CONS25,CONS26,CONS27,CONS28,CONS29,CONS30
  162. REAL, PRIVATE :: CONS31,CONS32,CONS33,CONS34,CONS35,CONS36,CONS37,CONS38,CONS39,CONS40
  163. REAL, PRIVATE :: CONS41
  164. CONTAINS
  165. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  166. SUBROUTINE MORR_TWO_MOMENT_INIT
  167. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  168. ! THIS SUBROUTINE INITIALIZES ALL PHYSICAL CONSTANTS AMND PARAMETERS
  169. ! NEEDED BY THE MICROPHYSICS SCHEME.
  170. ! NEEDS TO BE CALLED AT FIRST TIME STEP, PRIOR TO CALL TO MAIN MICROPHYSICS INTERFACE
  171. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  172. IMPLICIT NONE
  173. integer n,i
  174. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  175. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  176. ! THE FOLLOWING PARAMETERS ARE USER-DEFINED SWITCHES AND NEED TO BE
  177. ! SET PRIOR TO CODE COMPILATION
  178. ! INUM IS AUTOMATICALLY SET TO 0 FOR WRF-CHEM BELOW,
  179. ! ALLOWING PREDICTION OF DROPLET CONCENTRATION
  180. ! THUS, THIS PARAMETER SHOULD NOT BE CHANGED HERE
  181. ! AND SHOULD BE LEFT TO 1
  182. INUM = 1
  183. ! SET CONSTANT DROPLET CONCENTRATION (UNITS OF CM-3)
  184. ! IF NO COUPLING WITH WRF-CHEM
  185. NDCNST = 250.
  186. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  187. ! NOTE, THE FOLLOWING OPTIONS RELATED TO DROPLET ACTIVATION
  188. ! (IACT, IBASE, ISUB) ARE NOT AVAILABLE IN CURRENT VERSION
  189. ! FOR WRF-CHEM, DROPLET ACTIVATION IS PERFORMED
  190. ! IN 'MIX_ACTIVATE', NOT IN MICROPHYSICS SCHEME
  191. ! IACT = 1, USE POWER-LAW CCN SPECTRA, NCCN = CS^K
  192. ! IACT = 2, USE LOGNORMAL AEROSOL SIZE DIST TO DERIVE CCN SPECTRA
  193. IACT = 2
  194. ! IBASE = 1, NEGLECT DROPLET ACTIVATION AT LATERAL CLOUD EDGES DUE TO
  195. ! UNRESOLVED ENTRAINMENT AND MIXING, ACTIVATE
  196. ! AT CLOUD BASE OR IN REGION WITH LITTLE CLOUD WATER USING
  197. ! NON-EQULIBRIUM SUPERSATURATION ASSUMING NO INITIAL CLOUD WATER,
  198. ! IN CLOUD INTERIOR ACTIVATE USING EQUILIBRIUM SUPERSATURATION
  199. ! IBASE = 2, ASSUME DROPLET ACTIVATION AT LATERAL CLOUD EDGES DUE TO
  200. ! UNRESOLVED ENTRAINMENT AND MIXING DOMINATES,
  201. ! ACTIVATE DROPLETS EVERYWHERE IN THE CLOUD USING NON-EQUILIBRIUM
  202. ! SUPERSATURATION ASSUMING NO INITIAL CLOUD WATER, BASED ON THE
  203. ! LOCAL SUB-GRID AND/OR GRID-SCALE VERTICAL VELOCITY
  204. ! AT THE GRID POINT
  205. ! NOTE: ONLY USED FOR PREDICTED DROPLET CONCENTRATION (INUM = 0)
  206. IBASE = 2
  207. ! INCLUDE SUB-GRID VERTICAL VELOCITY (standard deviation of w) IN DROPLET ACTIVATION
  208. ! ISUB = 0, INCLUDE SUB-GRID W (RECOMMENDED FOR LOWER RESOLUTION)
  209. ! currently, sub-grid w is constant of 0.5 m/s (not coupled with PBL/turbulence scheme)
  210. ! ISUB = 1, EXCLUDE SUB-GRID W, ONLY USE GRID-SCALE W
  211. ! NOTE: ONLY USED FOR PREDICTED DROPLET CONCENTRATION (INUM = 0)
  212. ISUB = 0
  213. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  214. ! SWITCH FOR LIQUID-ONLY RUN
  215. ! ILIQ = 0, INCLUDE ICE
  216. ! ILIQ = 1, LIQUID ONLY, NO ICE
  217. ILIQ = 0
  218. ! SWITCH FOR ICE NUCLEATION
  219. ! INUC = 0, USE FORMULA FROM RASMUSSEN ET AL. 2002 (MID-LATITUDE)
  220. ! = 1, USE MPACE OBSERVATIONS (ARCTIC ONLY)
  221. INUC = 0
  222. ! SWITCH FOR GRAUPEL/HAIL NO GRAUPEL/HAIL
  223. ! IGRAUP = 0, INCLUDE GRAUPEL/HAIL
  224. ! IGRAUP = 1, NO GRAUPEL/HAIL
  225. IGRAUP = 0
  226. ! HM ADDED 11/7/07
  227. ! SWITCH FOR HAIL/GRAUPEL
  228. ! IHAIL = 0, DENSE PRECIPITATING ICE IS GRAUPEL
  229. ! IHAIL = 1, DENSE PRECIPITATING ICE IS HAIL
  230. ! NOTE ---> RECOMMEND IHAIL = 1 FOR CONTINENTAL DEEP CONVECTION
  231. IHAIL = 0
  232. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  233. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  234. ! SET PHYSICAL CONSTANTS
  235. ! FALLSPEED PARAMETERS (V=AD^B)
  236. AI = 700.
  237. AC = 3.E7
  238. AS = 11.72
  239. AR = 841.99667
  240. BI = 1.
  241. BC = 2.
  242. BS = 0.41
  243. BR = 0.8
  244. IF (IHAIL.EQ.0) THEN
  245. AG = 19.3
  246. BG = 0.37
  247. ELSE ! (MATSUN AND HUGGINS 1980)
  248. AG = 114.5
  249. BG = 0.5
  250. END IF
  251. ! CONSTANTS AND PARAMETERS
  252. ! R = 287.15
  253. ! RV = 461.5
  254. ! CP = 1005.
  255. RHOSU = 85000./(287.15*273.15)
  256. RHOW = 997.
  257. RHOI = 500.
  258. RHOSN = 100.
  259. IF (IHAIL.EQ.0) THEN
  260. RHOG = 400.
  261. ELSE
  262. RHOG = 900.
  263. END IF
  264. AIMM = 0.66
  265. BIMM = 100.
  266. ECR = 1.
  267. DCS = 125.E-6
  268. MI0 = 4./3.*PI*RHOI*(10.E-6)**3
  269. MG0 = 1.6E-10
  270. F1S = 0.86
  271. F2S = 0.28
  272. F1R = 0.78
  273. ! F2R = 0.32
  274. ! fix 053011
  275. F2R = 0.308
  276. ! G = 9.806
  277. QSMALL = 1.E-14
  278. EII = 0.1
  279. ECI = 0.7
  280. ! HM, ADD FOR V3.2
  281. CPW = 4218.
  282. ! SIZE DISTRIBUTION PARAMETERS
  283. CI = RHOI*PI/6.
  284. DI = 3.
  285. CS = RHOSN*PI/6.
  286. DS = 3.
  287. CG = RHOG*PI/6.
  288. DG = 3.
  289. ! RADIUS OF CONTACT NUCLEI
  290. RIN = 0.1E-6
  291. MMULT = 4./3.*PI*RHOI*(5.E-6)**3
  292. ! SIZE LIMITS FOR LAMBDA
  293. LAMMAXI = 1./1.E-6
  294. LAMMINI = 1./(2.*DCS+100.E-6)
  295. LAMMAXR = 1./20.E-6
  296. ! LAMMINR = 1./500.E-6
  297. LAMMINR = 1./2800.E-6
  298. LAMMAXS = 1./10.E-6
  299. LAMMINS = 1./2000.E-6
  300. LAMMAXG = 1./20.E-6
  301. LAMMING = 1./2000.E-6
  302. ! CCN SPECTRA FOR IACT = 1
  303. ! MARITIME
  304. ! MODIFIED FROM RASMUSSEN ET AL. 2002
  305. ! NCCN = C*S^K, NCCN IS IN CM-3, S IS SUPERSATURATION RATIO IN %
  306. K1 = 0.4
  307. C1 = 120.
  308. ! CONTINENTAL
  309. ! K1 = 0.5
  310. ! C1 = 1000.
  311. ! AEROSOL ACTIVATION PARAMETERS FOR IACT = 2
  312. ! PARAMETERS CURRENTLY SET FOR AMMONIUM SULFATE
  313. MW = 0.018
  314. OSM = 1.
  315. VI = 3.
  316. EPSM = 0.7
  317. RHOA = 1777.
  318. MAP = 0.132
  319. MA = 0.0284
  320. RR = 8.3187
  321. BACT = VI*OSM*EPSM*MW*RHOA/(MAP*RHOW)
  322. ! AEROSOL SIZE DISTRIBUTION PARAMETERS CURRENTLY SET FOR MPACE
  323. ! (see morrison et al. 2007, JGR)
  324. ! MODE 1
  325. RM1 = 0.052E-6
  326. SIG1 = 2.04
  327. NANEW1 = 72.2E6
  328. F11 = 0.5*EXP(2.5*(LOG(SIG1))**2)
  329. F21 = 1.+0.25*LOG(SIG1)
  330. ! MODE 2
  331. RM2 = 1.3E-6
  332. SIG2 = 2.5
  333. NANEW2 = 1.8E6
  334. F12 = 0.5*EXP(2.5*(LOG(SIG2))**2)
  335. F22 = 1.+0.25*LOG(SIG2)
  336. ! CONSTANTS FOR EFFICIENCY
  337. CONS1=GAMMA(1.+DS)*CS
  338. CONS2=GAMMA(1.+DG)*CG
  339. CONS3=GAMMA(4.+BS)/6.
  340. CONS4=GAMMA(4.+BR)/6.
  341. CONS5=GAMMA(1.+BS)
  342. CONS6=GAMMA(1.+BR)
  343. CONS7=GAMMA(4.+BG)/6.
  344. CONS8=GAMMA(1.+BG)
  345. CONS9=GAMMA(5./2.+BR/2.)
  346. CONS10=GAMMA(5./2.+BS/2.)
  347. CONS11=GAMMA(5./2.+BG/2.)
  348. CONS12=GAMMA(1.+DI)*CI
  349. CONS13=GAMMA(BS+3.)*PI/4.*ECI
  350. CONS14=GAMMA(BG+3.)*PI/4.*ECI
  351. CONS15=-1108.*EII*PI**((1.-BS)/3.)*RHOSN**((-2.-BS)/3.)/(4.*720.)
  352. CONS16=GAMMA(BI+3.)*PI/4.*ECI
  353. CONS17=4.*2.*3.*RHOSU*PI*ECI*ECI*GAMMA(2.*BS+2.)/(8.*(RHOG-RHOSN))
  354. CONS18=RHOSN*RHOSN
  355. CONS19=RHOW*RHOW
  356. CONS20=20.*PI*PI*RHOW*BIMM
  357. CONS21=4./(DCS*RHOI)
  358. CONS22=PI*RHOI*DCS**3/6.
  359. CONS23=PI/4.*EII*GAMMA(BS+3.)
  360. CONS24=PI/4.*ECR*GAMMA(BR+3.)
  361. CONS25=PI*PI/24.*RHOW*ECR*GAMMA(BR+6.)
  362. CONS26=PI/6.*RHOW
  363. CONS27=GAMMA(1.+BI)
  364. CONS28=GAMMA(4.+BI)/6.
  365. CONS29=4./3.*PI*RHOW*(25.E-6)**3
  366. CONS30=4./3.*PI*RHOW
  367. CONS31=PI*PI*ECR*RHOSN
  368. CONS32=PI/2.*ECR
  369. CONS33=PI*PI*ECR*RHOG
  370. CONS34=5./2.+BR/2.
  371. CONS35=5./2.+BS/2.
  372. CONS36=5./2.+BG/2.
  373. CONS37=4.*PI*1.38E-23/(6.*PI*RIN)
  374. CONS38=PI*PI/3.*RHOW
  375. CONS39=PI*PI/36.*RHOW*BIMM
  376. CONS40=PI/6.*BIMM
  377. CONS41=PI*PI*ECR*RHOW
  378. END SUBROUTINE MORR_TWO_MOMENT_INIT
  379. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  380. ! THIS SUBROUTINE IS MAIN INTERFACE WITH THE TWO-MOMENT MICROPHYSICS SCHEME
  381. ! THIS INTERFACE TAKES IN 3D VARIABLES FROM DRIVER MODEL, CONVERTS TO 1D FOR
  382. ! CALL TO THE MAIN MICROPHYSICS SUBROUTINE (SUBROUTINE MORR_TWO_MOMENT_MICRO)
  383. ! WHICH OPERATES ON 1D VERTICAL COLUMNS.
  384. ! 1D VARIABLES FROM THE MAIN MICROPHYSICS SUBROUTINE ARE THEN REASSIGNED BACK TO 3D FOR OUTPUT
  385. ! BACK TO DRIVER MODEL USING THIS INTERFACE.
  386. ! MICROPHYSICS TENDENCIES ARE ADDED TO VARIABLES HERE BEFORE BEING PASSED BACK TO DRIVER MODEL.
  387. ! THIS CODE WAS WRITTEN BY HUGH MORRISON (NCAR) AND SLAVA TATARSKII (GEORGIA TECH).
  388. ! FOR QUESTIONS, CONTACT: HUGH MORRISON, E-MAIL: MORRISON@UCAR.EDU, PHONE:303-497-8916
  389. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  390. SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, &
  391. TH, QV, QC, QR, QI, QS, QG, NI, NS, NR, NG, &
  392. RHO, PII, P, DT_IN, DZ, HT, W, &
  393. RAINNC, RAINNCV, SR, &
  394. qrcuten, qscuten, qicuten, mu & ! hm added
  395. ,F_QNDROP, qndrop & ! hm added, wrf-chem
  396. ,IDS,IDE, JDS,JDE, KDS,KDE & ! domain dims
  397. ,IMS,IME, JMS,JME, KMS,KME & ! memory dims
  398. ,ITS,ITE, JTS,JTE, KTS,KTE & ! tile dims )
  399. !jdf ,C2PREC3D,CSED3D,ISED3D,SSED3D,GSED3D,RSED3D & ! HM ADD, WRF-CHEM
  400. ,QLSINK,PRECR,PRECI,PRECS,PRECG & ! HM ADD, WRF-CHEM
  401. )
  402. ! QV - water vapor mixing ratio (kg/kg)
  403. ! QC - cloud water mixing ratio (kg/kg)
  404. ! QR - rain water mixing ratio (kg/kg)
  405. ! QI - cloud ice mixing ratio (kg/kg)
  406. ! QS - snow mixing ratio (kg/kg)
  407. ! QG - graupel mixing ratio (KG/KG)
  408. ! NI - cloud ice number concentration (1/kg)
  409. ! NS - Snow Number concentration (1/kg)
  410. ! NR - Rain Number concentration (1/kg)
  411. ! NG - Graupel number concentration (1/kg)
  412. ! NOTE: RHO AND HT NOT USED BY THIS SCHEME AND DO NOT NEED TO BE PASSED INTO SCHEME!!!!
  413. ! P - AIR PRESSURE (PA)
  414. ! W - VERTICAL AIR VELOCITY (M/S)
  415. ! TH - POTENTIAL TEMPERATURE (K)
  416. ! PII - exner function - used to convert potential temp to temp
  417. ! DZ - difference in height over interface (m)
  418. ! DT_IN - model time step (sec)
  419. ! ITIMESTEP - time step counter
  420. ! RAINNC - accumulated grid-scale precipitation (mm)
  421. ! RAINNCV - one time step grid scale precipitation (mm/time step)
  422. ! SR - one time step mass ratio of snow to total precip
  423. ! qrcuten, rain tendency from parameterized cumulus convection
  424. ! qscuten, snow tendency from parameterized cumulus convection
  425. ! qicuten, cloud ice tendency from parameterized cumulus convection
  426. ! variables below currently not in use, not coupled to PBL or radiation codes
  427. ! TKE - turbulence kinetic energy (m^2 s-2), NEEDED FOR DROPLET ACTIVATION (SEE CODE BELOW)
  428. ! NCTEND - droplet concentration tendency from pbl (kg-1 s-1)
  429. ! NCTEND - CLOUD ICE concentration tendency from pbl (kg-1 s-1)
  430. ! KZH - heat eddy diffusion coefficient from YSU scheme (M^2 S-1), NEEDED FOR DROPLET ACTIVATION (SEE CODE BELOW)
  431. ! EFFCS - CLOUD DROPLET EFFECTIVE RADIUS OUTPUT TO RADIATION CODE (micron)
  432. ! EFFIS - CLOUD DROPLET EFFECTIVE RADIUS OUTPUT TO RADIATION CODE (micron)
  433. ! HM, ADDED FOR WRF-CHEM COUPLING
  434. ! QLSINK - TENDENCY OF CLOUD WATER TO RAIN, SNOW, GRAUPEL (KG/KG/S)
  435. ! CSED,ISED,SSED,GSED,RSED - SEDIMENTATION FLUXES (KG/M^2/S) FOR CLOUD WATER, ICE, SNOW, GRAUPEL, RAIN
  436. ! PRECI,PRECS,PRECG,PRECR - SEDIMENTATION FLUXES (KG/M^2/S) FOR ICE, SNOW, GRAUPEL, RAIN
  437. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  438. ! reflectivity currently not included!!!!
  439. ! REFL_10CM - CALCULATED RADAR REFLECTIVITY AT 10 CM (DBZ)
  440. !................................
  441. ! GRID_CLOCK, GRID_ALARMS - parameters to limit radar reflectivity calculation only when needed
  442. ! otherwise radar reflectivity calculation every time step is too slow
  443. ! only needed for coupling with WRF, see code below for details
  444. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  445. ! EFFC - DROPLET EFFECTIVE RADIUS (MICRON)
  446. ! EFFR - RAIN EFFECTIVE RADIUS (MICRON)
  447. ! EFFS - SNOW EFFECTIVE RADIUS (MICRON)
  448. ! EFFI - CLOUD ICE EFFECTIVE RADIUS (MICRON)
  449. ! ADDITIONAL OUTPUT FROM MICRO - SEDIMENTATION TENDENCIES, NEEDED FOR LIQUID-ICE STATIC ENERGY
  450. ! QGSTEN - GRAUPEL SEDIMENTATION TEND (KG/KG/S)
  451. ! QRSTEN - RAIN SEDIMENTATION TEND (KG/KG/S)
  452. ! QISTEN - CLOUD ICE SEDIMENTATION TEND (KG/KG/S)
  453. ! QNISTEN - SNOW SEDIMENTATION TEND (KG/KG/S)
  454. ! QCSTEN - CLOUD WATER SEDIMENTATION TEND (KG/KG/S)
  455. ! WVAR - STANDARD DEVIATION OF SUB-GRID VERTICAL VELOCITY (M/S)
  456. IMPLICIT NONE
  457. INTEGER, INTENT(IN ) :: ids, ide, jds, jde, kds, kde , &
  458. ims, ime, jms, jme, kms, kme , &
  459. its, ite, jts, jte, kts, kte
  460. ! Temporary changed from INOUT to IN
  461. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: &
  462. qv, qc, qr, qi, qs, qg, ni, ns, nr, TH, NG
  463. !jdf qndrop ! hm added, wrf-chem
  464. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), optional,INTENT(INOUT):: qndrop
  465. !jdf REAL, DIMENSION(ims:ime, kms:kme, jms:jme),INTENT(INOUT):: CSED3D, &
  466. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), optional,INTENT(INOUT):: QLSINK, &
  467. PRECI,PRECS,PRECG,PRECR ! HM, WRF-CHEM
  468. !, effcs, effis
  469. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN):: &
  470. pii, p, dz, rho, w !, tke, nctend, nitend,kzh
  471. REAL, INTENT(IN):: dt_in
  472. INTEGER, INTENT(IN):: ITIMESTEP
  473. REAL, DIMENSION(ims:ime, jms:jme), INTENT(INOUT):: &
  474. RAINNC, RAINNCV, SR
  475. ! REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: & ! GT
  476. ! refl_10cm
  477. REAL , DIMENSION( ims:ime , jms:jme ) , INTENT(IN) :: ht
  478. ! TYPE (WRFU_Clock):: grid_clock ! GT
  479. ! TYPE (WRFU_Alarm), POINTER:: grid_alarms(:) ! GT
  480. ! LOCAL VARIABLES
  481. REAL, DIMENSION(its:ite, kts:kte, jts:jte):: &
  482. effi, effs, effr, EFFG
  483. REAL, DIMENSION(its:ite, kts:kte, jts:jte):: &
  484. T, WVAR, EFFC
  485. REAL, DIMENSION(kts:kte) :: &
  486. QC_TEND1D, QI_TEND1D, QNI_TEND1D, QR_TEND1D, &
  487. NI_TEND1D, NS_TEND1D, NR_TEND1D, &
  488. QC1D, QI1D, QR1D,NI1D, NS1D, NR1D, QS1D, &
  489. T_TEND1D,QV_TEND1D, T1D, QV1D, P1D, W1D, WVAR1D, &
  490. EFFC1D, EFFI1D, EFFS1D, EFFR1D,DZ1D, &
  491. ! HM ADD GRAUPEL
  492. QG_TEND1D, NG_TEND1D, QG1D, NG1D, EFFG1D, &
  493. ! ADD SEDIMENTATION TENDENCIES (UNITS OF KG/KG/S)
  494. QGSTEN,QRSTEN, QISTEN, QNISTEN, QCSTEN, &
  495. ! ADD CUMULUS TENDENCIES
  496. QRCU1D, QSCU1D, QICU1D
  497. ! add cumulus tendencies
  498. REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN):: &
  499. qrcuten, qscuten, qicuten
  500. REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN):: &
  501. mu
  502. LOGICAL, INTENT(IN), OPTIONAL :: F_QNDROP ! wrf-chem
  503. LOGICAL :: flag_qndrop ! wrf-chem
  504. integer :: iinum ! wrf-chem
  505. ! wrf-chem
  506. REAL, DIMENSION(kts:kte) :: nc1d, nc_tend1d,C2PREC,CSED,ISED,SSED,GSED,RSED
  507. ! HM add reflectivity
  508. ! dbz
  509. REAL PRECPRT1D, SNOWRT1D
  510. INTEGER I,K,J
  511. REAL DT
  512. ! LOGICAL:: dBZ_tstep ! GT
  513. ! below for wrf-chem
  514. flag_qndrop = .false.
  515. IF ( PRESENT ( f_qndrop ) ) flag_qndrop = f_qndrop
  516. !!!!!!!!!!!!!!!!!!!!!!
  517. ! Initialize tendencies (all set to 0) and transfer
  518. ! array to local variables
  519. DT = DT_IN
  520. DO I=ITS,ITE
  521. DO J=JTS,JTE
  522. DO K=KTS,KTE
  523. T(I,K,J) = TH(i,k,j)*PII(i,k,j)
  524. ! NOTE: WVAR NOT CURRENTLY USED IN CODE !!!!!!!!!!
  525. ! currently assign wvar to 0.5 m/s (not coupled with PBL scheme)
  526. WVAR(I,K,J) = 0.5
  527. ! currently mixing of number concentrations also is neglected (not coupled with PBL schemes)
  528. END DO
  529. END DO
  530. END DO
  531. do i=its,ite ! i loop (east-west)
  532. do j=jts,jte ! j loop (north-south)
  533. !
  534. ! Transfer 3D arrays into 1D for microphysical calculations
  535. !
  536. ! hm , initialize 1d tendency arrays to zero
  537. do k=kts,kte ! k loop (vertical)
  538. QC_TEND1D(k) = 0.
  539. QI_TEND1D(k) = 0.
  540. QNI_TEND1D(k) = 0.
  541. QR_TEND1D(k) = 0.
  542. NI_TEND1D(k) = 0.
  543. NS_TEND1D(k) = 0.
  544. NR_TEND1D(k) = 0.
  545. T_TEND1D(k) = 0.
  546. QV_TEND1D(k) = 0.
  547. nc_tend1d(k) = 0. ! wrf-chem
  548. QC1D(k) = QC(i,k,j)
  549. QI1D(k) = QI(i,k,j)
  550. QS1D(k) = QS(i,k,j)
  551. QR1D(k) = QR(i,k,j)
  552. NI1D(k) = NI(i,k,j)
  553. NS1D(k) = NS(i,k,j)
  554. NR1D(k) = NR(i,k,j)
  555. ! HM ADD GRAUPEL
  556. QG1D(K) = QG(I,K,j)
  557. NG1D(K) = NG(I,K,j)
  558. QG_TEND1D(K) = 0.
  559. NG_TEND1D(K) = 0.
  560. T1D(k) = T(i,k,j)
  561. QV1D(k) = QV(i,k,j)
  562. P1D(k) = P(i,k,j)
  563. DZ1D(k) = DZ(i,k,j)
  564. W1D(k) = W(i,k,j)
  565. WVAR1D(k) = WVAR(i,k,j)
  566. ! add cumulus tendencies, decouple from mu
  567. qrcu1d(k) = qrcuten(i,k,j)/mu(i,j)
  568. qscu1d(k) = qscuten(i,k,j)/mu(i,j)
  569. qicu1d(k) = qicuten(i,k,j)/mu(i,j)
  570. end do !jdf added this
  571. ! below for wrf-chem
  572. IF (flag_qndrop .AND. PRESENT( qndrop )) THEN
  573. iact = 3
  574. DO k = kts, kte
  575. nc1d(k)=qndrop(i,k,j)
  576. iinum=0
  577. ENDDO
  578. ELSE
  579. DO k = kts, kte
  580. nc1d(k)=0. ! temporary placeholder, set to constant in microphysics subroutine
  581. iinum=1
  582. ENDDO
  583. ENDIF
  584. !jdf end do
  585. call MORR_TWO_MOMENT_MICRO(QC_TEND1D, QI_TEND1D, QNI_TEND1D, QR_TEND1D, &
  586. NI_TEND1D, NS_TEND1D, NR_TEND1D, &
  587. QC1D, QI1D, QS1D, QR1D,NI1D, NS1D, NR1D, &
  588. T_TEND1D,QV_TEND1D, T1D, QV1D, P1D, DZ1D, W1D, WVAR1D, &
  589. PRECPRT1D,SNOWRT1D, &
  590. EFFC1D,EFFI1D,EFFS1D,EFFR1D,DT, &
  591. IMS,IME, JMS,JME, KMS,KME, &
  592. ITS,ITE, JTS,JTE, KTS,KTE, & ! HM ADD GRAUPEL
  593. QG_TEND1D,NG_TEND1D,QG1D,NG1D,EFFG1D, &
  594. qrcu1d, qscu1d, qicu1d, &
  595. ! ADD SEDIMENTATION TENDENCIES
  596. QGSTEN,QRSTEN,QISTEN,QNISTEN,QCSTEN, &
  597. nc1d, nc_tend1d, iinum, C2PREC,CSED,ISED,SSED,GSED,RSED & !wrf-chem
  598. )
  599. !
  600. ! Transfer 1D arrays back into 3D arrays
  601. !
  602. do k=kts,kte
  603. ! hm, add tendencies to update global variables
  604. ! HM, TENDENCIES FOR Q AND N NOW ADDED IN M2005MICRO, SO WE
  605. ! ONLY NEED TO TRANSFER 1D VARIABLES BACK TO 3D
  606. QC(i,k,j) = QC1D(k)
  607. QI(i,k,j) = QI1D(k)
  608. QS(i,k,j) = QS1D(k)
  609. QR(i,k,j) = QR1D(k)
  610. NI(i,k,j) = NI1D(k)
  611. NS(i,k,j) = NS1D(k)
  612. NR(i,k,j) = NR1D(k)
  613. QG(I,K,j) = QG1D(K)
  614. NG(I,K,j) = NG1D(K)
  615. T(i,k,j) = T1D(k)
  616. TH(I,K,J) = T(i,k,j)/PII(i,k,j) ! CONVERT TEMP BACK TO POTENTIAL TEMP
  617. QV(i,k,j) = QV1D(k)
  618. EFFC(i,k,j) = EFFC1D(k)
  619. EFFI(i,k,j) = EFFI1D(k)
  620. EFFS(i,k,j) = EFFS1D(k)
  621. EFFR(i,k,j) = EFFR1D(k)
  622. EFFG(I,K,j) = EFFG1D(K)
  623. ! wrf-chem
  624. IF (flag_qndrop .AND. PRESENT( qndrop )) THEN
  625. qndrop(i,k,j) = nc1d(k)
  626. !jdf CSED3D(I,K,J) = CSED(K)
  627. END IF
  628. IF ( PRESENT( QLSINK ) ) THEN
  629. if(qc(i,k,j)>1.e-10) then
  630. QLSINK(I,K,J) = C2PREC(K)/QC(I,K,J)
  631. else
  632. QLSINK(I,K,J) = 0.0
  633. endif
  634. END IF
  635. IF ( PRESENT( PRECR ) ) PRECR(I,K,J) = RSED(K)
  636. IF ( PRESENT( PRECI ) ) PRECI(I,K,J) = ISED(K)
  637. IF ( PRESENT( PRECS ) ) PRECS(I,K,J) = SSED(K)
  638. IF ( PRESENT( PRECG ) ) PRECG(I,K,J) = GSED(K)
  639. ! EFFECTIVE RADIUS FOR RADIATION CODE (currently not coupled)
  640. ! HM, ADD LIMIT TO PREVENT BLOWING UP OPTICAL PROPERTIES, 8/18/07
  641. ! EFFCS(I,K,J) = MIN(EFFC(I,K,J),50.)
  642. ! EFFCS(I,K,J) = MAX(EFFCS(I,K,J),1.)
  643. ! EFFIS(I,K,J) = MIN(EFFI(I,K,J),130.)
  644. ! EFFIS(I,K,J) = MAX(EFFIS(I,K,J),13.)
  645. end do
  646. ! hm modified so that m2005 precip variables correctly match wrf precip variables
  647. RAINNC(i,j) = RAINNC(I,J)+PRECPRT1D
  648. RAINNCV(i,j) = PRECPRT1D
  649. SR(i,j) = SNOWRT1D/(PRECPRT1D+1.E-12)
  650. end do
  651. end do
  652. END SUBROUTINE MP_MORR_TWO_MOMENT
  653. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  654. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  655. SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, &
  656. NI3DTEN,NS3DTEN,NR3DTEN,QC3D,QI3D,QNI3D,QR3D,NI3D,NS3D,NR3D, &
  657. T3DTEN,QV3DTEN,T3D,QV3D,PRES,DZQ,W3D,WVAR,PRECRT,SNOWRT, &
  658. EFFC,EFFI,EFFS,EFFR,DT, &
  659. IMS,IME, JMS,JME, KMS,KME, &
  660. ITS,ITE, JTS,JTE, KTS,KTE, & ! ADD GRAUPEL
  661. QG3DTEN,NG3DTEN,QG3D,NG3D,EFFG,qrcu1d,qscu1d, qicu1d, &
  662. QGSTEN,QRSTEN,QISTEN,QNISTEN,QCSTEN, &
  663. nc3d,nc3dten,iinum, & ! wrf-chem
  664. c2prec,CSED,ISED,SSED,GSED,RSED & ! hm added, wrf-chem
  665. )
  666. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  667. ! THIS PROGRAM IS THE MAIN TWO-MOMENT MICROPHYSICS SUBROUTINE DESCRIBED BY
  668. ! MORRISON ET AL. 2005 JAS; MORRISON AND PINTO 2005 JAS.
  669. ! ADDITIONAL CHANGES ARE DESCRIBED IN DETAIL BY MORRISON, THOMPSON, TATARSKII (MWR, SUBMITTED)
  670. ! THIS SCHEME IS A BULK DOUBLE-MOMENT SCHEME THAT PREDICTS MIXING
  671. ! RATIOS AND NUMBER CONCENTRATIONS OF FIVE HYDROMETEOR SPECIES:
  672. ! CLOUD DROPLETS, CLOUD (SMALL) ICE, RAIN, SNOW, AND GRAUPEL.
  673. ! CODE STRUCTURE: MAIN SUBROUTINE IS 'MORR_TWO_MOMENT'. ALSO INCLUDED IN THIS FILE IS
  674. ! 'FUNCTION POLYSVP', 'FUNCTION DERF1', AND
  675. ! 'FUNCTION GAMMA'.
  676. ! NOTE: THIS SUBROUTINE USES 1D ARRAY IN VERTICAL (COLUMN), EVEN THOUGH VARIABLES ARE CALLED '3D'......
  677. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  678. ! DECLARATIONS
  679. IMPLICIT NONE
  680. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  681. ! THESE VARIABLES BELOW MUST BE LINKED WITH THE MAIN MODEL.
  682. ! DEFINE ARRAY SIZES
  683. ! INPUT NUMBER OF GRID CELLS
  684. ! INPUT/OUTPUT PARAMETERS ! DESCRIPTION (UNITS)
  685. INTEGER, INTENT( IN) :: IMS,IME, JMS,JME, KMS,KME, &
  686. ITS,ITE, JTS,JTE, KTS,KTE
  687. REAL, DIMENSION(KTS:KTE) :: QC3DTEN ! CLOUD WATER MIXING RATIO TENDENCY (KG/KG/S)
  688. REAL, DIMENSION(KTS:KTE) :: QI3DTEN ! CLOUD ICE MIXING RATIO TENDENCY (KG/KG/S)
  689. REAL, DIMENSION(KTS:KTE) :: QNI3DTEN ! SNOW MIXING RATIO TENDENCY (KG/KG/S)
  690. REAL, DIMENSION(KTS:KTE) :: QR3DTEN ! RAIN MIXING RATIO TENDENCY (KG/KG/S)
  691. REAL, DIMENSION(KTS:KTE) :: NI3DTEN ! CLOUD ICE NUMBER CONCENTRATION (1/KG/S)
  692. REAL, DIMENSION(KTS:KTE) :: NS3DTEN ! SNOW NUMBER CONCENTRATION (1/KG/S)
  693. REAL, DIMENSION(KTS:KTE) :: NR3DTEN ! RAIN NUMBER CONCENTRATION (1/KG/S)
  694. REAL, DIMENSION(KTS:KTE) :: QC3D ! CLOUD WATER MIXING RATIO (KG/KG)
  695. REAL, DIMENSION(KTS:KTE) :: QI3D ! CLOUD ICE MIXING RATIO (KG/KG)
  696. REAL, DIMENSION(KTS:KTE) :: QNI3D ! SNOW MIXING RATIO (KG/KG)
  697. REAL, DIMENSION(KTS:KTE) :: QR3D ! RAIN MIXING RATIO (KG/KG)
  698. REAL, DIMENSION(KTS:KTE) :: NI3D ! CLOUD ICE NUMBER CONCENTRATION (1/KG)
  699. REAL, DIMENSION(KTS:KTE) :: NS3D ! SNOW NUMBER CONCENTRATION (1/KG)
  700. REAL, DIMENSION(KTS:KTE) :: NR3D ! RAIN NUMBER CONCENTRATION (1/KG)
  701. REAL, DIMENSION(KTS:KTE) :: T3DTEN ! TEMPERATURE TENDENCY (K/S)
  702. REAL, DIMENSION(KTS:KTE) :: QV3DTEN ! WATER VAPOR MIXING RATIO TENDENCY (KG/KG/S)
  703. REAL, DIMENSION(KTS:KTE) :: T3D ! TEMPERATURE (K)
  704. REAL, DIMENSION(KTS:KTE) :: QV3D ! WATER VAPOR MIXING RATIO (KG/KG)
  705. REAL, DIMENSION(KTS:KTE) :: PRES ! ATMOSPHERIC PRESSURE (PA)
  706. REAL, DIMENSION(KTS:KTE) :: DZQ ! DIFFERENCE IN HEIGHT ACROSS LEVEL (m)
  707. REAL, DIMENSION(KTS:KTE) :: W3D ! GRID-SCALE VERTICAL VELOCITY (M/S)
  708. REAL, DIMENSION(KTS:KTE) :: WVAR ! SUB-GRID VERTICAL VELOCITY (M/S)
  709. ! below for wrf-chem
  710. REAL, DIMENSION(KTS:KTE) :: nc3d
  711. REAL, DIMENSION(KTS:KTE) :: nc3dten
  712. integer, intent(in) :: iinum
  713. ! HM ADDED GRAUPEL VARIABLES
  714. REAL, DIMENSION(KTS:KTE) :: QG3DTEN ! GRAUPEL MIX RATIO TENDENCY (KG/KG/S)
  715. REAL, DIMENSION(KTS:KTE) :: NG3DTEN ! GRAUPEL NUMB CONC TENDENCY (1/KG/S)
  716. REAL, DIMENSION(KTS:KTE) :: QG3D ! GRAUPEL MIX RATIO (KG/KG)
  717. REAL, DIMENSION(KTS:KTE) :: NG3D ! GRAUPEL NUMBER CONC (1/KG)
  718. ! HM, ADD 1/16/07, SEDIMENTATION TENDENCIES FOR MIXING RATIO
  719. REAL, DIMENSION(KTS:KTE) :: QGSTEN ! GRAUPEL SED TEND (KG/KG/S)
  720. REAL, DIMENSION(KTS:KTE) :: QRSTEN ! RAIN SED TEND (KG/KG/S)
  721. REAL, DIMENSION(KTS:KTE) :: QISTEN ! CLOUD ICE SED TEND (KG/KG/S)
  722. REAL, DIMENSION(KTS:KTE) :: QNISTEN ! SNOW SED TEND (KG/KG/S)
  723. REAL, DIMENSION(KTS:KTE) :: QCSTEN ! CLOUD WAT SED TEND (KG/KG/S)
  724. ! hm add cumulus tendencies for precip
  725. REAL, DIMENSION(KTS:KTE) :: qrcu1d
  726. REAL, DIMENSION(KTS:KTE) :: qscu1d
  727. REAL, DIMENSION(KTS:KTE) :: qicu1d
  728. ! OUTPUT VARIABLES
  729. REAL PRECRT ! TOTAL PRECIP PER TIME STEP (mm)
  730. REAL SNOWRT ! SNOW PER TIME STEP (mm)
  731. REAL, DIMENSION(KTS:KTE) :: EFFC ! DROPLET EFFECTIVE RADIUS (MICRON)
  732. REAL, DIMENSION(KTS:KTE) :: EFFI ! CLOUD ICE EFFECTIVE RADIUS (MICRON)
  733. REAL, DIMENSION(KTS:KTE) :: EFFS ! SNOW EFFECTIVE RADIUS (MICRON)
  734. REAL, DIMENSION(KTS:KTE) :: EFFR ! RAIN EFFECTIVE RADIUS (MICRON)
  735. REAL, DIMENSION(KTS:KTE) :: EFFG ! GRAUPEL EFFECTIVE RADIUS (MICRON)
  736. ! MODEL INPUT PARAMETERS (FORMERLY IN COMMON BLOCKS)
  737. REAL DT ! MODEL TIME STEP (SEC)
  738. !.....................................................................................................
  739. ! LOCAL VARIABLES: ALL PARAMETERS BELOW ARE LOCAL TO SCHEME AND DON'T NEED TO COMMUNICATE WITH THE
  740. ! REST OF THE MODEL.
  741. ! SIZE PARAMETER VARIABLES
  742. REAL, DIMENSION(KTS:KTE) :: LAMC ! SLOPE PARAMETER FOR DROPLETS (M-1)
  743. REAL, DIMENSION(KTS:KTE) :: LAMI ! SLOPE PARAMETER FOR CLOUD ICE (M-1)
  744. REAL, DIMENSION(KTS:KTE) :: LAMS ! SLOPE PARAMETER FOR SNOW (M-1)
  745. REAL, DIMENSION(KTS:KTE) :: LAMR ! SLOPE PARAMETER FOR RAIN (M-1)
  746. REAL, DIMENSION(KTS:KTE) :: LAMG ! SLOPE PARAMETER FOR GRAUPEL (M-1)
  747. REAL, DIMENSION(KTS:KTE) :: CDIST1 ! PSD PARAMETER FOR DROPLETS
  748. REAL, DIMENSION(KTS:KTE) :: N0I ! INTERCEPT PARAMETER FOR CLOUD ICE (KG-1 M-1)
  749. REAL, DIMENSION(KTS:KTE) :: N0S ! INTERCEPT PARAMETER FOR SNOW (KG-1 M-1)
  750. REAL, DIMENSION(KTS:KTE) :: N0RR ! INTERCEPT PARAMETER FOR RAIN (KG-1 M-1)
  751. REAL, DIMENSION(KTS:KTE) :: N0G ! INTERCEPT PARAMETER FOR GRAUPEL (KG-1 M-1)
  752. REAL, DIMENSION(KTS:KTE) :: PGAM ! SPECTRAL SHAPE PARAMETER FOR DROPLETS
  753. ! MICROPHYSICAL PROCESSES
  754. REAL, DIMENSION(KTS:KTE) :: NSUBC ! LOSS OF NC DURING EVAP
  755. REAL, DIMENSION(KTS:KTE) :: NSUBI ! LOSS OF NI DURING SUB.
  756. REAL, DIMENSION(KTS:KTE) :: NSUBS ! LOSS OF NS DURING SUB.
  757. REAL, DIMENSION(KTS:KTE) :: NSUBR ! LOSS OF NR DURING EVAP
  758. REAL, DIMENSION(KTS:KTE) :: PRD ! DEP CLOUD ICE
  759. REAL, DIMENSION(KTS:KTE) :: PRE ! EVAP OF RAIN
  760. REAL, DIMENSION(KTS:KTE) :: PRDS ! DEP SNOW
  761. REAL, DIMENSION(KTS:KTE) :: NNUCCC ! CHANGE N DUE TO CONTACT FREEZ DROPLETS
  762. REAL, DIMENSION(KTS:KTE) :: MNUCCC ! CHANGE Q DUE TO CONTACT FREEZ DROPLETS
  763. REAL, DIMENSION(KTS:KTE) :: PRA ! ACCRETION DROPLETS BY RAIN
  764. REAL, DIMENSION(KTS:KTE) :: PRC ! AUTOCONVERSION DROPLETS
  765. REAL, DIMENSION(KTS:KTE) :: PCC ! COND/EVAP DROPLETS
  766. REAL, DIMENSION(KTS:KTE) :: NNUCCD ! CHANGE N FREEZING AEROSOL (PRIM ICE NUCLEATION)
  767. REAL, DIMENSION(KTS:KTE) :: MNUCCD ! CHANGE Q FREEZING AEROSOL (PRIM ICE NUCLEATION)
  768. REAL, DIMENSION(KTS:KTE) :: MNUCCR ! CHANGE Q DUE TO CONTACT FREEZ RAIN
  769. REAL, DIMENSION(KTS:KTE) :: NNUCCR ! CHANGE N DUE TO CONTACT FREEZ RAIN
  770. REAL, DIMENSION(KTS:KTE) :: NPRA ! CHANGE IN N DUE TO DROPLET ACC BY RAIN
  771. REAL, DIMENSION(KTS:KTE) :: NRAGG ! SELF-COLLECTION OF RAIN
  772. REAL, DIMENSION(KTS:KTE) :: NSAGG ! SELF-COLLECTION OF SNOW
  773. REAL, DIMENSION(KTS:KTE) :: NPRC ! CHANGE NC AUTOCONVERSION DROPLETS
  774. REAL, DIMENSION(KTS:KTE) :: NPRC1 ! CHANGE NR AUTOCONVERSION DROPLETS
  775. REAL, DIMENSION(KTS:KTE) :: PRAI ! CHANGE Q AUTOCONVERSION CLOUD ICE
  776. REAL, DIMENSION(KTS:KTE) :: PRCI ! CHANGE Q ACCRETION CLOUD ICE BY SNOW
  777. REAL, DIMENSION(KTS:KTE) :: PSACWS ! CHANGE Q DROPLET ACCRETION BY SNOW
  778. REAL, DIMENSION(KTS:KTE) :: NPSACWS ! CHANGE N DROPLET ACCRETION BY SNOW
  779. REAL, DIMENSION(KTS:KTE) :: PSACWI ! CHANGE Q DROPLET ACCRETION BY CLOUD ICE
  780. REAL, DIMENSION(KTS:KTE) :: NPSACWI ! CHANGE N DROPLET ACCRETION BY CLOUD ICE
  781. REAL, DIMENSION(KTS:KTE) :: NPRCI ! CHANGE N AUTOCONVERSION CLOUD ICE BY SNOW
  782. REAL, DIMENSION(KTS:KTE) :: NPRAI ! CHANGE N ACCRETION CLOUD ICE
  783. REAL, DIMENSION(KTS:KTE) :: NMULTS ! ICE MULT DUE TO RIMING DROPLETS BY SNOW
  784. REAL, DIMENSION(KTS:KTE) :: NMULTR ! ICE MULT DUE TO RIMING RAIN BY SNOW
  785. REAL, DIMENSION(KTS:KTE) :: QMULTS ! CHANGE Q DUE TO ICE MULT DROPLETS/SNOW
  786. REAL, DIMENSION(KTS:KTE) :: QMULTR ! CHANGE Q DUE TO ICE RAIN/SNOW
  787. REAL, DIMENSION(KTS:KTE) :: PRACS ! CHANGE Q RAIN-SNOW COLLECTION
  788. REAL, DIMENSION(KTS:KTE) :: NPRACS ! CHANGE N RAIN-SNOW COLLECTION
  789. REAL, DIMENSION(KTS:KTE) :: PCCN ! CHANGE Q DROPLET ACTIVATION
  790. REAL, DIMENSION(KTS:KTE) :: PSMLT ! CHANGE Q MELTING SNOW TO RAIN
  791. REAL, DIMENSION(KTS:KTE) :: EVPMS ! CHNAGE Q MELTING SNOW EVAPORATING
  792. REAL, DIMENSION(KTS:KTE) :: NSMLTS ! CHANGE N MELTING SNOW
  793. REAL, DIMENSION(KTS:KTE) :: NSMLTR ! CHANGE N MELTING SNOW TO RAIN
  794. ! HM ADDED 12/13/06
  795. REAL, DIMENSION(KTS:KTE) :: PIACR ! CHANGE QR, ICE-RAIN COLLECTION
  796. REAL, DIMENSION(KTS:KTE) :: NIACR ! CHANGE N, ICE-RAIN COLLECTION
  797. REAL, DIMENSION(KTS:KTE) :: PRACI ! CHANGE QI, ICE-RAIN COLLECTION
  798. REAL, DIMENSION(KTS:KTE) :: PIACRS ! CHANGE QR, ICE RAIN COLLISION, ADDED TO SNOW
  799. REAL, DIMENSION(KTS:KTE) :: NIACRS ! CHANGE N, ICE RAIN COLLISION, ADDED TO SNOW
  800. REAL, DIMENSION(KTS:KTE) :: PRACIS ! CHANGE QI, ICE RAIN COLLISION, ADDED TO SNOW
  801. REAL, DIMENSION(KTS:KTE) :: EPRD ! SUBLIMATION CLOUD ICE
  802. REAL, DIMENSION(KTS:KTE) :: EPRDS ! SUBLIMATION SNOW
  803. ! HM ADDED GRAUPEL PROCESSES
  804. REAL, DIMENSION(KTS:KTE) :: PRACG ! CHANGE IN Q COLLECTION RAIN BY GRAUPEL
  805. REAL, DIMENSION(KTS:KTE) :: PSACWG ! CHANGE IN Q COLLECTION DROPLETS BY GRAUPEL
  806. REAL, DIMENSION(KTS:KTE) :: PGSACW ! CONVERSION Q TO GRAUPEL DUE TO COLLECTION DROPLETS BY SNOW
  807. REAL, DIMENSION(KTS:KTE) :: PGRACS ! CONVERSION Q TO GRAUPEL DUE TO COLLECTION RAIN BY SNOW
  808. REAL, DIMENSION(KTS:KTE) :: PRDG ! DEP OF GRAUPEL
  809. REAL, DIMENSION(KTS:KTE) :: EPRDG ! SUB OF GRAUPEL
  810. REAL, DIMENSION(KTS:KTE) :: EVPMG ! CHANGE Q MELTING OF GRAUPEL AND EVAPORATION
  811. REAL, DIMENSION(KTS:KTE) :: PGMLT ! CHANGE Q MELTING OF GRAUPEL
  812. REAL, DIMENSION(KTS:KTE) :: NPRACG ! CHANGE N COLLECTION RAIN BY GRAUPEL
  813. REAL, DIMENSION(KTS:KTE) :: NPSACWG ! CHANGE N COLLECTION DROPLETS BY GRAUPEL
  814. REAL, DIMENSION(KTS:KTE) :: NSCNG ! CHANGE N CONVERSION TO GRAUPEL DUE TO COLLECTION DROPLETS BY SNOW
  815. REAL, DIMENSION(KTS:KTE) :: NGRACS ! CHANGE N CONVERSION TO GRAUPEL DUE TO COLLECTION RAIN BY SNOW
  816. REAL, DIMENSION(KTS:KTE) :: NGMLTG ! CHANGE N MELTING GRAUPEL
  817. REAL, DIMENSION(KTS:KTE) :: NGMLTR ! CHANGE N MELTING GRAUPEL TO RAIN
  818. REAL, DIMENSION(KTS:KTE) :: NSUBG ! CHANGE N SUB/DEP OF GRAUPEL
  819. REAL, DIMENSION(KTS:KTE) :: PSACR ! CONVERSION DUE TO COLL OF SNOW BY RAIN
  820. REAL, DIMENSION(KTS:KTE) :: NMULTG ! ICE MULT DUE TO ACC DROPLETS BY GRAUPEL
  821. REAL, DIMENSION(KTS:KTE) :: NMULTRG ! ICE MULT DUE TO ACC RAIN BY GRAUPEL
  822. REAL, DIMENSION(KTS:KTE) :: QMULTG ! CHANGE Q DUE TO ICE MULT DROPLETS/GRAUPEL
  823. REAL, DIMENSION(KTS:KTE) :: QMULTRG ! CHANGE Q DUE TO ICE MULT RAIN/GRAUPEL
  824. ! TIME-VARYING ATMOSPHERIC PARAMETERS
  825. REAL, DIMENSION(KTS:KTE) :: KAP ! THERMAL CONDUCTIVITY OF AIR
  826. REAL, DIMENSION(KTS:KTE) :: EVS ! SATURATION VAPOR PRESSURE
  827. REAL, DIMENSION(KTS:KTE) :: EIS ! ICE SATURATION VAPOR PRESSURE
  828. REAL, DIMENSION(KTS:KTE) :: QVS ! SATURATION MIXING RATIO
  829. REAL, DIMENSION(KTS:KTE) :: QVI ! ICE SATURATION MIXING RATIO
  830. REAL, DIMENSION(KTS:KTE) :: QVQVS ! SAUTRATION RATIO
  831. REAL, DIMENSION(KTS:KTE) :: QVQVSI! ICE SATURAION RATIO
  832. REAL, DIMENSION(KTS:KTE) :: DV ! DIFFUSIVITY OF WATER VAPOR IN AIR
  833. REAL, DIMENSION(KTS:KTE) :: XXLS ! LATENT HEAT OF SUBLIMATION
  834. REAL, DIMENSION(KTS:KTE) :: XXLV ! LATENT HEAT OF VAPORIZATION
  835. REAL, DIMENSION(KTS:KTE) :: CPM ! SPECIFIC HEAT AT CONST PRESSURE FOR MOIST AIR
  836. REAL, DIMENSION(KTS:KTE) :: MU ! VISCOCITY OF AIR
  837. REAL, DIMENSION(KTS:KTE) :: SC ! SCHMIDT NUMBER
  838. REAL, DIMENSION(KTS:KTE) :: XLF ! LATENT HEAT OF FREEZING
  839. REAL, DIMENSION(KTS:KTE) :: RHO ! AIR DENSITY
  840. REAL, DIMENSION(KTS:KTE) :: AB ! CORRECTION TO CONDENSATION RATE DUE TO LATENT HEATING
  841. REAL, DIMENSION(KTS:KTE) :: ABI ! CORRECTION TO DEPOSITION RATE DUE TO LATENT HEATING
  842. ! TIME-VARYING MICROPHYSICS PARAMETERS
  843. REAL, DIMENSION(KTS:KTE) :: DAP ! DIFFUSIVITY OF AEROSOL
  844. REAL NACNT ! NUMBER OF CONTACT IN
  845. REAL FMULT ! TEMP.-DEP. PARAMETER FOR RIME-SPLINTERING
  846. REAL COFFI ! ICE AUTOCONVERSION PARAMETER
  847. ! FALL SPEED WORKING VARIABLES (DEFINED IN CODE)
  848. REAL, DIMENSION(KTS:KTE) :: DUMI,DUMR,DUMFNI,DUMG,DUMFNG
  849. REAL UNI, UMI,UMR
  850. REAL, DIMENSION(KTS:KTE) :: FR, FI, FNI,FG,FNG
  851. REAL RGVM
  852. REAL, DIMENSION(KTS:KTE) :: FALOUTR,FALOUTI,FALOUTNI
  853. REAL FALTNDR,FALTNDI,FALTNDNI,RHO2
  854. REAL, DIMENSION(KTS:KTE) :: DUMQS,DUMFNS
  855. REAL UMS,UNS
  856. REAL, DIMENSION(KTS:KTE) :: FS,FNS, FALOUTS,FALOUTNS,FALOUTG,FALOUTNG
  857. REAL FALTNDS,FALTNDNS,UNR,FALTNDG,FALTNDNG
  858. REAL, DIMENSION(KTS:KTE) :: DUMC,DUMFNC
  859. REAL UNC,UMC,UNG,UMG
  860. REAL, DIMENSION(KTS:KTE) :: FC,FALOUTC,FALOUTNC
  861. REAL FALTNDC,FALTNDNC
  862. REAL, DIMENSION(KTS:KTE) :: FNC,DUMFNR,FALOUTNR
  863. REAL FALTNDNR
  864. REAL, DIMENSION(KTS:KTE) :: FNR
  865. ! FALL-SPEED PARAMETER 'A' WITH AIR DENSITY CORRECTION
  866. REAL, DIMENSION(KTS:KTE) :: AIN,ARN,ASN,ACN,AGN
  867. ! EXTERNAL FUNCTION CALL RETURN VARIABLES
  868. ! REAL GAMMA, ! EULER GAMMA FUNCTION
  869. ! REAL POLYSVP, ! SAT. PRESSURE FUNCTION
  870. ! REAL DERF1 ! ERROR FUNCTION
  871. ! DUMMY VARIABLES
  872. REAL DUM,DUM1,DUM2,DUMT,DUMQV,DUMQSS,DUMQSI,DUMS
  873. ! PROGNOSTIC SUPERSATURATION
  874. REAL DQSDT ! CHANGE OF SAT. MIX. RAT. WITH TEMPERATURE
  875. REAL DQSIDT ! CHANGE IN ICE SAT. MIXING RAT. WITH T
  876. REAL EPSI ! 1/PHASE REL. TIME (SEE M2005), ICE
  877. REAL EPSS ! 1/PHASE REL. TIME (SEE M2005), SNOW
  878. REAL EPSR ! 1/PHASE REL. TIME (SEE M2005), RAIN
  879. REAL EPSG ! 1/PHASE REL. TIME (SEE M2005), GRAUPEL
  880. ! NEW DROPLET ACTIVATION VARIABLES
  881. REAL TAUC ! PHASE REL. TIME (SEE M2005), DROPLETS
  882. REAL TAUR ! PHASE REL. TIME (SEE M2005), RAIN
  883. REAL TAUI ! PHASE REL. TIME (SEE M2005), CLOUD ICE
  884. REAL TAUS ! PHASE REL. TIME (SEE M2005), SNOW
  885. REAL TAUG ! PHASE REL. TIME (SEE M2005), GRAUPEL
  886. REAL DUMACT,DUM3
  887. ! COUNTING/INDEX VARIABLES
  888. INTEGER K,NSTEP,N ! ,I
  889. ! LTRUE IS ONLY USED TO SPEED UP THE CODE !!
  890. ! LTRUE, SWITCH = 0, NO HYDROMETEORS IN COLUMN,
  891. ! = 1, HYDROMETEORS IN COLUMN
  892. INTEGER LTRUE
  893. ! DROPLET ACTIVATION/FREEZING AEROSOL
  894. REAL CT ! DROPLET ACTIVATION PARAMETER
  895. REAL TEMP1 ! DUMMY TEMPERATURE
  896. REAL SAT1 ! DUMMY SATURATION
  897. REAL SIGVL ! SURFACE TENSION LIQ/VAPOR
  898. REAL KEL ! KELVIN PARAMETER
  899. REAL KC2 ! TOTAL ICE NUCLEATION RATE
  900. REAL CRY,KRY ! AEROSOL ACTIVATION PARAMETERS
  901. ! MORE WORKING/DUMMY VARIABLES
  902. REAL DUMQI,DUMNI,DC0,DS0,DG0
  903. REAL DUMQC,DUMQR,RATIO,SUM_DEP,FUDGEF
  904. ! EFFECTIVE VERTICAL VELOCITY (M/S)
  905. REAL WEF
  906. ! WORKING PARAMETERS FOR ICE NUCLEATION
  907. REAL ANUC,BNUC
  908. ! WORKING PARAMETERS FOR AEROSOL ACTIVATION
  909. REAL AACT,GAMM,GG,PSI,ETA1,ETA2,SM1,SM2,SMAX,UU1,UU2,ALPHA
  910. ! DUMMY SIZE DISTRIBUTION PARAMETERS
  911. REAL DLAMS,DLAMR,DLAMI,DLAMC,DLAMG,LAMMAX,LAMMIN
  912. INTEGER IDROP
  913. ! FOR WRF-CHEM
  914. REAL, DIMENSION(KTS:KTE)::C2PREC,CSED,ISED,SSED,GSED,RSED
  915. ! comment lines for wrf-chem since these are intent(in) in that case
  916. ! REAL, DIMENSION(KTS:KTE) :: NC3DTEN ! CLOUD DROPLET NUMBER CONCENTRATION (1/KG/S)
  917. ! REAL, DIMENSION(KTS:KTE) :: NC3D ! CLOUD DROPLET NUMBER CONCENTRATION (1/KG)
  918. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  919. ! SET LTRUE INITIALLY TO 0
  920. LTRUE = 0
  921. ! ATMOSPHERIC PARAMETERS THAT VARY IN TIME AND HEIGHT
  922. DO K = KTS,KTE
  923. ! NC3DTEN LOCAL ARRAY INITIALIZED
  924. NC3DTEN(K) = 0.
  925. ! INITIALIZE VARIABLES FOR WRF-CHEM OUTPUT TO ZERO
  926. C2PREC(K)=0.
  927. CSED(K)=0.
  928. ISED(K)=0.
  929. SSED(K)=0.
  930. GSED(K)=0.
  931. RSED(K)=0.
  932. ! LATENT HEAT OF VAPORATION
  933. XXLV(K) = 3.1484E6-2370.*T3D(K)
  934. ! LATENT HEAT OF SUBLIMATION
  935. XXLS(K) = 3.15E6-2370.*T3D(K)+0.3337E6
  936. CPM(K) = CP*(1.+0.887*QV3D(K))
  937. ! SATURATION VAPOR PRESSURE AND MIXING RATIO
  938. ! hm, add fix for low pressure, 5/12/10
  939. EVS(K) = min(0.99*pres(k),POLYSVP(T3D(K),0)) ! PA
  940. EIS(K) = min(0.99*pres(k),POLYSVP(T3D(K),1)) ! PA
  941. ! MAKE SURE ICE SATURATION DOESN'T EXCEED WATER SAT. NEAR FREEZING
  942. IF (EIS(K).GT.EVS(K)) EIS(K) = EVS(K)
  943. QVS(K) = EP_2*EVS(K)/(PRES(K)-EVS(K))
  944. QVI(K) = EP_2*EIS(K)/(PRES(K)-EIS(K))
  945. QVQVS(K) = QV3D(K)/QVS(K)
  946. QVQVSI(K) = QV3D(K)/QVI(K)
  947. ! AIR DENSITY
  948. RHO(K) = PRES(K)/(R*T3D(K))
  949. ! ADD NUMBER CONCENTRATION DUE TO CUMULUS TENDENCY
  950. ! ASSUME N0 ASSOCIATED WITH CUMULUS PARAM RAIN IS 10^7 M^-4
  951. ! ASSUME N0 ASSOCIATED WITH CUMULUS PARAM SNOW IS 2 X 10^7 M^-4
  952. ! FOR DETRAINED CLOUD ICE, ASSUME MEAN VOLUME DIAM OF 80 MICRON
  953. IF (QRCU1D(K).GE.1.E-10) THEN
  954. DUM=1.8e5*(QRCU1D(K)*DT/(PI*RHOW*RHO(K)**3))**0.25
  955. NR3D(K)=NR3D(K)+DUM
  956. END IF
  957. IF (QSCU1D(K).GE.1.E-10) THEN
  958. DUM=3.e5*(QSCU1D(K)*DT/(CONS1*RHO(K)**3))**(1./(DS+1.))
  959. NS3D(K)=NS3D(K)+DUM

Large files files are truncated, but you can click here to view the full file