1 !WRF:MEDIATION_LAYER:PHYSICS
2 ! *** add new modules of schemes here
4 MODULE module_microphysics_driver
7 SUBROUTINE microphysics_driver( &
9 ,ht, dz8w, p8w, dt,dx,dy &
10 ,mp_physics, spec_zone &
11 ,specified, channel_switch &
15 ,cldfra, cldfra_old, exch_h, nsource &
16 ,qlsink, precr, preci, precs, precg &
18 ,f_ice_phy,f_rain_phy,f_rimef_phy &
20 ,ids,ide, jds,jde, kds,kde &
21 ,ims,ime, jms,jme, kms,kme &
22 ,ips,ipe, jps,jpe, kps,kpe &
23 ,i_start,i_end,j_start,j_end,kts,kte &
25 ,qv_curr,qc_curr,qr_curr,qi_curr,qs_curr,qg_curr &
26 ,qndrop_curr,qni_curr &
27 ,qns_curr,qnr_curr,qng_curr &
28 ,f_qv,f_qc,f_qr,f_qi,f_qs,f_qg,f_qndrop,f_qni &
30 ,qrcuten, qscuten, qicuten, mu &
32 ,mp_restart_state,tbpvs_state,tbpvs0_state & ! for etampnew
33 ,hail,ice2 & ! for gsfcgce
37 ,graupelnc, graupelncv &
40 USE module_state_description, ONLY : &
41 KESSLERSCHEME, LINSCHEME, WSM3SCHEME, WSM5SCHEME &
42 ,WSM6SCHEME, ETAMPNEW, THOMPSON, MORR_TWO_MOMENT &
47 USE module_model_constants
50 ! *** add new modules of schemes here
58 USE module_mp_thompson
60 USE module_mp_morr_two_moment
62 USE module_mixactivate, only: prescribe_aerosol_mixactivate
64 !----------------------------------------------------------------------
65 ! This driver calls subroutines for the microphys.
70 ! Lin et al. (1983), Rutledge and Hobbs (1984)
71 ! WRF Single-Moment 3-class, Hong, Dudhia and Chen (2004)
72 ! WRF Single-Moment 5-class, Hong, Dudhia and Chen (2004)
73 ! WRF Single-Moment 6-class, Lim and Hong (2003 WRF workshop)
74 ! Eta Grid-scale Cloud and Precipitation scheme (EGCP01, Ferrier)
76 !----------------------------------------------------------------------
78 !======================================================================
79 ! Grid structure in physics part of WRF
80 !----------------------------------------------------------------------
81 ! The horizontal velocities used in the physics are unstaggered
82 ! relative to temperature/moisture variables. All predicted
83 ! variables are carried at half levels except w, which is at full
84 ! levels. Some arrays with names (*8w) are at w (full) levels.
86 !----------------------------------------------------------------------
87 ! In WRF, kms (smallest number) is the bottom level and kme (largest
88 ! number) is the top level. In your scheme, if 1 is at the top level,
89 ! then you have to reverse the order in the k direction.
91 ! kme - half level (no data at this level)
92 ! kme ----- full level
94 ! kme-1 ----- full level
99 ! kms+2 ----- full level
101 ! kms+1 ----- full level
103 ! kms ----- full level
105 !======================================================================
108 ! Rho_d dry density (kg/m^3)
109 ! Theta_m moist potential temperature (K)
110 ! Qv water vapor mixing ratio (kg/kg)
111 ! Qc cloud water mixing ratio (kg/kg)
112 ! Qr rain water mixing ratio (kg/kg)
113 ! Qi cloud ice mixing ratio (kg/kg)
114 ! Qs snow mixing ratio (kg/kg)
115 ! Qndrop droplet number mixing ratio (#/kg)
116 ! Qni cloud ice number concentration (#/kg)
117 ! Qns snow number concentration (#/kg),
118 ! Qnr rain number concentration (#/kg),
119 ! Qng graupel number concentration (#/kg),
122 !----------------------------------------------------------------------
123 !-- th potential temperature (K)
124 !-- moist_new updated moisture array (kg/kg)
125 !-- moist_old Old moisture array (kg/kg)
126 !-- rho density of air (kg/m^3)
127 !-- pi_phy exner function (dimensionless)
129 !-- RAINNC grid scale precipitation (mm)
130 !-- RAINNCV one time step grid scale precipitation (mm/step)
131 !-- SNOWNC grid scale snow and ice (mm)
132 !-- SNOWNCV one time step grid scale snow and ice (mm/step)
133 !-- GRAUPELNC grid scale graupel (mm)
134 !-- GRAUPELNCV one time step grid scale graupel (mm/step)
135 !-- SR one time step mass ratio of snow to total precip
136 !-- z Height above sea level (m)
138 !-- G acceleration due to gravity (m/s^2)
139 !-- CP heat capacity at constant pressure for dry air (J/kg/K)
140 !-- R_d gas constant for dry air (J/kg/K)
141 !-- R_v gas constant for water vapor (J/kg/K)
142 !-- XLS latent heat of sublimation (J/kg)
143 !-- XLV latent heat of vaporization (J/kg)
144 !-- XLF latent heat of melting (J/kg)
145 !-- rhowater water density (kg/m^3)
146 !-- rhosnow snow density (kg/m^3)
147 !-- F_ICE_PHY Fraction of ice.
148 !-- F_RAIN_PHY Fraction of rain.
149 !-- F_RIMEF_PHY Mass ratio of rimed ice (rime factor)
150 !-- t8w temperature at layer interfaces
151 !-- cldfra, cldfra_old, current, previous cloud fraction
152 !-- exch_h vertical diffusivity (m2/s)
153 !-- qlsink Fractional cloud water sink (/s)
154 !-- precr rain precipitation rate at all levels (kg/m2/s)
155 !-- preci ice precipitation rate at all levels (kg/m2/s)
156 !-- precs snow precipitation rate at all levels (kg/m2/s)
157 !-- precg graupel precipitation rate at all levels (kg/m2/s) &
158 !-- P_QV species index for water vapor
159 !-- P_QC species index for cloud water
160 !-- P_QR species index for rain water
161 !-- P_QI species index for cloud ice
162 !-- P_QS species index for snow
163 !-- P_QG species index for graupel
164 !-- P_QNDROP species index for cloud drop mixing ratio
165 !-- P_QNI species index for cloud ice number concentration
166 !-- P_QNS species index for snow number concentration,
167 !-- P_QNR species index for rain number concentration,
168 !-- P_QNG species index for graupel number concentration,
169 !-- id grid id number
170 !-- ids start index for i in domain
171 !-- ide end index for i in domain
172 !-- jds start index for j in domain
173 !-- jde end index for j in domain
174 !-- kds start index for k in domain
175 !-- kde end index for k in domain
176 !-- ims start index for i in memory
177 !-- ime end index for i in memory
178 !-- jms start index for j in memory
179 !-- jme end index for j in memory
180 !-- kms start index for k in memory
181 !-- kme end index for k in memory
182 !-- i_start start indices for i in tile
183 !-- i_end end indices for i in tile
184 !-- j_start start indices for j in tile
185 !-- j_end end indices for j in tile
186 !-- its start index for i in tile
187 !-- ite end index for i in tile
188 !-- jts start index for j in tile
189 !-- jte end index for j in tile
190 !-- kts start index for k in tile
191 !-- kte end index for k in tile
192 !-- num_tiles number of tiles
194 !======================================================================
196 INTEGER, INTENT(IN ) :: mp_physics
197 LOGICAL, INTENT(IN ) :: specified
198 INTEGER, OPTIONAL, INTENT(IN ) :: chem_opt, progn
199 INTEGER, OPTIONAL, INTENT(IN ) :: hail, ice2
201 INTEGER, INTENT(IN ) :: ids,ide, jds,jde, kds,kde
202 INTEGER, INTENT(IN ) :: ims,ime, jms,jme, kms,kme
203 INTEGER, OPTIONAL, INTENT(IN ) :: ips,ipe, jps,jpe, kps,kpe
204 INTEGER, INTENT(IN ) :: kts,kte
205 INTEGER, INTENT(IN ) :: itimestep,num_tiles,spec_zone
206 INTEGER, DIMENSION(num_tiles), INTENT(IN) :: &
207 & i_start,i_end,j_start,j_end
209 LOGICAL, INTENT(IN ) :: warm_rain
211 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), &
216 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), &
225 REAL, INTENT(INOUT), DIMENSION(ims:ime, kms:kme, jms:jme ) :: &
226 F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY
228 ! REAL, INTENT(OUT), DIMENSION(ims:ime, kms:kme, jms:jme ) :: &
229 REAL, OPTIONAL, INTENT(OUT), DIMENSION(ims:ime, kms:kme, jms:jme ) :: &
231 !!$ REAL, DIMENSION(ims:ime, kms:kme, jms:jme ) :: &
233 qlsink, & ! cloud water sink (/s)
234 precr, & ! rain precipitation rate at all levels (kg/m2/s)
235 preci, & ! ice precipitation rate at all levels (kg/m2/s)
236 precs, & ! snow precipitation rate at all levels (kg/m2/s)
237 precg ! graupel precipitation rate at all levels (kg/m2/s)
241 REAL , DIMENSION( ims:ime , jms:jme ) , INTENT(IN) :: XLAND
243 REAL , DIMENSION( ims:ime , jms:jme ) , INTENT(OUT) :: SR
245 REAL, INTENT(IN ) :: dt,dx,dy
247 INTEGER, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT) :: LOWLYR
252 LOGICAL, OPTIONAL, INTENT(IN ) :: channel_switch
253 REAL, OPTIONAL, INTENT(INOUT ) :: naer ! aerosol number concentration (/kg)
254 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
258 ,cldfra, cldfra_old, exch_h &
259 ,qv_curr,qc_curr,qr_curr,qi_curr,qs_curr,qg_curr &
260 ,qt_curr,qndrop_curr,qni_curr &
261 ,qns_curr,qnr_curr,qng_curr
263 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
265 INTENT(IN) :: qrcuten, qscuten, qicuten
266 REAL, DIMENSION( ims:ime, jms:jme ), &
271 REAL, DIMENSION(ims:ime, kms:kme, jms:jme ), &
277 REAL, DIMENSION( ims:ime , jms:jme ), &
286 INTEGER,OPTIONAL,INTENT(IN ) :: id
288 REAL , DIMENSION( ims:ime , jms:jme ) , OPTIONAL , &
291 REAL, DIMENSION (:), OPTIONAL, INTENT(INOUT) :: mp_restart_state &
292 ,tbpvs_state,tbpvs0_state
295 LOGICAL, OPTIONAL :: f_qv,f_qc,f_qr,f_qi,f_qs,f_qg,f_qndrop,f_qni,f_qt &
300 INTEGER :: i,j,k,its,ite,jts,jte,ij,sz,n
303 !---------------------------------------------------------------------
304 ! check for microphysics type. We need a clean way to
305 ! specify these things!
306 !---------------------------------------------------------------------
309 IF ( PRESENT ( channel_switch ) ) channel = channel_switch
311 if (mp_physics .eq. 0) return
320 !$OMP PRIVATE ( ij, its, ite, jts, jte, i,j,k,n )
322 DO ij = 1 , num_tiles
324 its = max(i_start(ij),ids)
325 ite = min(i_end(ij),ide-1)
327 its = max(i_start(ij),ids+sz)
328 ite = min(i_end(ij),ide-1-sz)
330 jts = max(j_start(ij),jds+sz)
331 jte = min(j_end(ij),jde-1-sz)
338 its = max(ips,ids+sz)
339 ite = min(ipe,ide-1-sz)
341 jts = max(jps,jds+sz)
342 jte = min(jpe,jde-1-sz)
346 IF( PRESENT(qlsink) ) qlsink(its:ite,kts:kte,jts:jte) = 0.
349 IF( PRESENT(chem_opt) .AND. PRESENT(progn) ) THEN
350 IF( chem_opt==0 .AND. progn==1 .AND. mp_physics==LINSCHEME ) THEN
351 IF( PRESENT( QNDROP_CURR ) ) THEN
352 CALL wrf_debug ( 100 , 'microphysics_driver: calling prescribe_aerosol_mixactivate' )
353 ! 06-nov-2005 rce - id & itimestep added to arg list
354 call prescribe_aerosol_mixactivate ( &
355 id, itimestep, dt, naer, &
356 rho, th, pi_phy, w, cldfra, cldfra_old, &
357 z, dz8w, p8w, t8w, exch_h, &
358 qv_curr, qc_curr, qi_curr, qndrop_curr, &
360 ids,ide, jds,jde, kds,kde, &
361 ims,ime, jms,jme, kms,kme, &
362 its,ite, jts,jte, kts,kte, &
363 F_QC=f_qc, F_QI=f_qi )
365 ELSE IF( progn==1 .AND. mp_physics/=LINSCHEME ) THEN
366 call wrf_error_fatal("SETTINGS ERROR: Prognostic cloud droplet number can only be used with the mp_physics=LINSCHEME.")
370 micro_select: SELECT CASE(mp_physics)
373 CALL wrf_debug ( 100 , 'microphysics_driver: calling kessler' )
374 IF ( PRESENT( QV_CURR ) .AND. PRESENT( QC_CURR ) .AND. &
375 PRESENT( QR_CURR ) .AND. &
376 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) .AND. &
383 ,RHO=rho, PII=pi_phy,DT_IN=dt, Z=z, XLV=xlv, CP=cp &
384 ,EP2=ep_2,SVP1=svp1,SVP2=svp2 &
385 ,SVP3=svp3,SVPT0=svpt0,RHOWATER=rhowater &
387 ,RAINNC=rainnc,RAINNCV=rainncv &
388 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
389 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
390 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
393 CALL wrf_error_fatal ( 'arguments not present for calling kessler' )
398 CALL wrf_debug ( 100 , 'microphysics_driver: calling thompson et al' )
399 IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. &
400 PRESENT( QR_CURR ) .AND. PRESENT ( QI_CURR ) .AND. &
401 PRESENT( QS_CURR ) .AND. PRESENT ( QG_CURR ) .AND. &
402 PRESENT ( QNI_CURR ).AND. &
403 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) ) THEN
417 ITIMESTEP=itimestep, &
421 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
422 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
423 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte)
425 CALL wrf_error_fatal ( 'arguments not present for calling thompson_et_al' )
429 CASE (MORR_TWO_MOMENT)
430 CALL wrf_debug(100, 'microphysics_driver: calling morrison two moment')
431 IF (PRESENT (QV_CURR) .AND. PRESENT (QC_CURR) .AND. &
432 PRESENT (QR_CURR) .AND. PRESENT (QI_CURR) .AND. &
433 PRESENT (QS_CURR) .AND. PRESENT (QG_CURR) .AND. &
434 PRESENT (QR_CURR) .AND. PRESENT (QI_CURR) .AND. &
435 PRESENT (QNS_CURR) .AND. PRESENT (QNI_CURR).AND. &
436 PRESENT (QNR_CURR) .AND. PRESENT (QNG_CURR).AND. &
437 PRESENT (MU) .AND. PRESENT (QSCUTEN).AND. &
438 PRESENT (QRCUTEN) .AND. PRESENT (QICUTEN).AND. &
439 PRESENT (RAINNC ) .AND. PRESENT (RAINNCV) .AND. &
440 PRESENT (Z ) .AND.PRESENT ( W ) ) THEN
441 CALL mp_morr_two_moment( &
442 ITIMESTEP=itimestep, & !*
451 NS=qns_curr, & !* ! VVT
452 NR=qnr_curr, & !* ! VVT
453 NG=qng_curr, & !* ! VVT
462 ,RAINNCV=RAINNCV & !*
464 ,qrcuten=qrcuten & ! hm
465 ,qscuten=qscuten & ! hm
466 ,qicuten=qicuten & ! hm
468 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
469 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
470 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
473 Call wrf_error_fatal( 'arguments not present for calling morrison two moment')
478 CALL wrf_debug ( 100 , 'microphysics_driver: calling GSFCGCE' )
479 IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. &
480 PRESENT( QR_CURR ) .AND. PRESENT ( QI_CURR ) .AND. &
481 PRESENT( QS_CURR ) .AND. &
482 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) .AND. &
483 PRESENT( HAIL ) .AND. PRESENT ( ICE2 ) .AND. &
484 PRESENT( Z ) .AND. PRESENT ( W ) ) THEN
492 ,RHO=rho, PII=pi_phy, P=p, DT_IN=dt, Z=z &
493 ,HT=ht, DZ8W=dz8w, GRAV=G &
494 ,RHOWATER=rhowater, RHOSNOW=rhosnow &
495 ,ITIMESTEP=itimestep &
496 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
497 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
498 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
499 ,RAINNC=rainnc, RAINNCV=rainncv &
500 ,SNOWNC=snownc, SNOWNCV=snowncv ,SR=sr &
501 ,GRAUPELNC=graupelnc ,GRAUPELNCV=graupelncv &
504 ,IHAIL=hail, ICE2=ice2 &
506 ! HAIL = 1, run gsfcgce with hail option
507 ! 0, run gsfcgce with graupel option <---- default
508 ! note: no effect if ice2 = 1
509 ! ICE2 = 1, run gsfcgce with only snow, ice
510 ! 2, run gsfcgce with only graupel, ice
511 ! 0, run gsfcgce with snow, ice and hail/graupel <---- default
514 CALL wrf_error_fatal ( 'arguments not present for calling GSFCGCE' )
518 CALL wrf_debug ( 100 , 'microphysics_driver: calling lin_et_al' )
519 IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. &
520 PRESENT( QR_CURR ) .AND. PRESENT ( QI_CURR ) .AND. &
521 PRESENT( QS_CURR ) .AND. &
522 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) .AND. &
532 ,RHO=rho, PII=pi_phy, P=p, DT_IN=dt, Z=z &
533 ,HT=ht, DZ8W=dz8w, GRAV=G, CP=cp &
534 ,RAIR=r_d, RVAPOR=R_v &
535 ,XLS=xls, XLV=xlv, XLF=xlf &
536 ,RHOWATER=rhowater, RHOSNOW=rhosnow &
537 ,EP2=ep_2,SVP1=svp1,SVP2=svp2 &
538 ,SVP3=svp3,SVPT0=svpt0 &
539 ,RAINNC=rainnc, RAINNCV=rainncv &
540 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
541 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
542 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
543 ,PRECR=precr,PRECI=preci,PRECS=precs,PRECG=precg &
544 ,F_QG=f_qg, F_QNDROP=f_qndrop &
546 ,QNDROP=qndrop_curr &
549 CALL wrf_error_fatal ( 'arguments not present for calling lin_et_al' )
553 CALL wrf_debug ( 100 , 'microphysics_driver: calling wsm3' )
554 IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. &
555 PRESENT( QR_CURR ) .AND. &
556 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) .AND. &
563 ,W=w,DEN=rho,PII=pi_phy,P=p,DELZ=dz8w &
564 ,DELT=dt,G=g,CPD=cp,CPV=cpv &
565 ,RD=r_d,RV=r_v,T0C=svpt0 &
566 ,EP1=ep_1, EP2=ep_2, QMIN=epsilon &
567 ,XLS=xls, XLV0=xlv, XLF0=xlf &
568 ,DEN0=rhoair0, DENR=rhowater &
569 ,CLIQ=cliq,CICE=cice,PSAT=psat &
570 ,RAIN=rainnc ,RAINNCV=rainncv &
571 ,SNOW=snownc ,SNOWNCV=snowncv &
573 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
574 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
575 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
578 CALL wrf_error_fatal ( 'arguments not present for calling wsm3' )
582 CALL wrf_debug ( 100 , 'microphysics_driver: calling wsm5' )
583 IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. &
584 PRESENT( QR_CURR ) .AND. PRESENT ( QI_CURR ) .AND. &
585 PRESENT( QS_CURR ) .AND. &
586 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) ) THEN
594 ,DEN=rho,PII=pi_phy,P=p,DELZ=dz8w &
595 ,DELT=dt,G=g,CPD=cp,CPV=cpv &
596 ,RD=r_d,RV=r_v,T0C=svpt0 &
597 ,EP1=ep_1, EP2=ep_2, QMIN=epsilon &
598 ,XLS=xls, XLV0=xlv, XLF0=xlf &
599 ,DEN0=rhoair0, DENR=rhowater &
600 ,CLIQ=cliq,CICE=cice,PSAT=psat &
601 ,RAIN=rainnc ,RAINNCV=rainncv &
602 ,SNOW=snownc ,SNOWNCV=snowncv &
604 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
605 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
606 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
609 CALL wrf_error_fatal ( 'arguments not present for calling wsm5' )
613 CALL wrf_debug ( 100 , 'microphysics_driver: calling wsm6' )
614 IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. &
615 PRESENT( QR_CURR ) .AND. PRESENT ( QI_CURR ) .AND. &
616 PRESENT( QS_CURR ) .AND. PRESENT ( QG_CURR ) .AND. &
617 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) ) THEN
626 ,DEN=rho,PII=pi_phy,P=p,DELZ=dz8w &
627 ,DELT=dt,G=g,CPD=cp,CPV=cpv &
628 ,RD=r_d,RV=r_v,T0C=svpt0 &
629 ,EP1=ep_1, EP2=ep_2, QMIN=epsilon &
630 ,XLS=xls, XLV0=xlv, XLF0=xlf &
631 ,DEN0=rhoair0, DENR=rhowater &
632 ,CLIQ=cliq,CICE=cice,PSAT=psat &
633 ,RAIN=rainnc ,RAINNCV=rainncv &
634 ,SNOW=snownc ,SNOWNCV=snowncv &
636 ,GRAUPEL=graupelnc ,GRAUPELNCV=graupelncv &
637 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
638 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
639 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
642 CALL wrf_error_fatal ( 'arguments not present for calling wsm6' )
646 CALL wrf_debug ( 100 , 'microphysics_driver: calling etampnew')
648 IF ( PRESENT( qv_curr ) .AND. PRESENT( qt_curr ) .AND. &
649 PRESENT( RAINNC ) .AND. PRESENT ( RAINNCV ) .AND. &
650 PRESENT( mp_restart_state ) .AND. &
651 PRESENT( tbpvs_state ) .AND. &
652 PRESENT( tbpvs0_state ) ) THEN
654 ITIMESTEP=itimestep,DT=dt,DX=dx,DY=dy &
655 ,DZ8W=dz8w,RHO_PHY=rho,P_PHY=p,PI_PHY=pi_phy,TH_PHY=th &
661 ,LOWLYR=LOWLYR,SR=SR &
662 ,F_ICE_PHY=F_ICE_PHY,F_RAIN_PHY=F_RAIN_PHY &
663 ,F_RIMEF_PHY=F_RIMEF_PHY &
664 ,RAINNC=rainnc,RAINNCV=rainncv &
665 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
666 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
667 ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte &
668 ,MP_RESTART_STATE=mp_restart_state &
669 ,TBPVS_STATE=tbpvs_state,TBPVS0_STATE=tbpvs0_state &
672 CALL wrf_error_fatal ( 'arguments not present for calling etampnew' )
678 WRITE( wrf_err_message , * ) 'The microphysics option does not exist: mp_physics = ', mp_physics
679 CALL wrf_error_fatal ( wrf_err_message )
681 END SELECT micro_select
685 !$OMP END PARALLEL DO
688 CALL wrf_debug ( 200 , 'microphysics_driver: returning from' )
692 END SUBROUTINE microphysics_driver
694 END MODULE module_microphysics_driver