1 !WRF:MEDIATION_LAYER:SOLVER
6 MODULE module_first_rk_step_part1
10 SUBROUTINE first_rk_step_part1 ( grid , config_flags &
11 , moist , moist_tend &
13 , tracer, tracer_tend &
14 , scalar , scalar_tend &
16 , ru_tendf, rv_tendf &
18 , ph_tendf, mu_tendf &
20 , adapt_step_flag , curr_secs &
21 , psim , psih , wspd , gz1oz0 , br , chklowq &
22 , cu_act_flag , hol , th_phy &
23 , pi_phy , p_phy , t_phy , u_phy , v_phy &
24 , dz8w , p8w , t8w , rho_phy , rho &
25 , ids, ide, jds, jde, kds, kde &
26 , ims, ime, jms, jme, kms, kme &
27 , ips, ipe, jps, jpe, kps, kpe &
28 , imsx,imex,jmsx,jmex,kmsx,kmex &
29 , ipsx,ipex,jpsx,jpex,kpsx,kpex &
30 , imsy,imey,jmsy,jmey,kmsy,kmey &
31 , ipsy,ipey,jpsy,jpey,kpsy,kpey &
35 USE module_state_description
36 USE module_model_constants
37 USE module_domain, ONLY : domain, domain_clock_get, get_ijk_from_subgrid
38 USE module_configure, ONLY : grid_config_rec_type, model_config_rec
39 USE module_radiation_driver, ONLY : pre_radiation_driver, radiation_driver
40 USE module_surface_driver, ONLY : surface_driver
41 USE module_cumulus_driver, ONLY : cumulus_driver
42 USE module_shallowcu_driver, ONLY : shallowcu_driver
43 USE module_pbl_driver, ONLY : pbl_driver
44 USE module_fr_sfire_driver_wrf, ONLY : sfire_driver_em_step
45 USE module_fddagd_driver, ONLY : fddagd_driver
46 USE module_em, ONLY : init_zero_tendency
48 USE module_convtrans_prep
49 USE module_big_step_utilities_em, ONLY : phy_prep
50 use module_scalar_tables
52 USE module_dm, ONLY : local_communicator, mytask, ntasks, ntasks_x, ntasks_y, local_communicator_periodic, wrf_dm_maxval
53 USE module_comm_dm, ONLY : halo_em_phys_a_sub,halo_em_fdda_sfc_sub
58 TYPE ( domain ), INTENT(INOUT) :: grid
59 TYPE ( grid_config_rec_type ), INTENT(IN) :: config_flags
60 TYPE(WRFU_Time) :: currentTime
62 INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
63 ims, ime, jms, jme, kms, kme, &
64 ips, ipe, jps, jpe, kps, kpe, &
65 imsx,imex,jmsx,jmex,kmsx,kmex, &
66 ipsx,ipex,jpsx,jpex,kpsx,kpex, &
67 imsy,imey,jmsy,jmey,kmsy,kmey, &
68 ipsy,ipey,jpsy,jpey,kpsy,kpey
71 LOGICAL ,INTENT(IN) :: adapt_step_flag
72 REAL, INTENT(IN) :: curr_secs
74 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist
75 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist_tend
76 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem
77 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem_tend
78 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer
79 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer_tend
80 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar
81 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar_tend
82 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_fdda3d),INTENT(INOUT) :: fdda3d
83 REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d
84 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim
85 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih
86 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wspd
87 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0
88 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: br
89 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq
90 LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag
91 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: hol
93 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: th_phy
94 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: pi_phy
95 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p_phy
96 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_phy
97 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: u_phy
98 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: v_phy
99 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: dz8w
100 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p8w
101 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t8w
102 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rho_phy
103 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rho
105 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ru_tendf
106 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rv_tendf
107 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rw_tendf
108 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ph_tendf
109 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_tendf
110 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: tke_tend
112 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: mu_tendf
114 INTEGER, INTENT(IN) :: k_start, k_end
115 LOGICAL, INTENT(IN), OPTIONAL :: f_flux
118 REAL, DIMENSION( ims:ime, jms:jme ) :: exch_temf ! 1/7/09 WA
120 REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc, mixht
122 INTEGER num_roof_layers
123 INTEGER num_wall_layers
124 INTEGER num_road_layers
129 INTEGER :: yr, month, day, hr, minute, sec, rc
132 INTEGER :: sids , side , sjds , sjde , skds , skde , &
133 sims , sime , sjms , sjme , skms , skme , &
134 sips , sipe , sjps , sjpe , skps , skpe
136 CHARACTER (LEN=256) :: mminlu
138 #if ( WRF_DFI_RADAR == 1 )
139 INTEGER do_capsupress ! =1 do CAP supress, other = don't
142 CALL get_ijk_from_subgrid ( grid , &
143 sids, side, sjds, sjde, skds, skde, &
144 sims, sime, sjms, sjme, skms, skme, &
145 sips, sipe, sjps, sjpe, skps, skpe )
147 ! initialize all tendencies to zero in order to update physics
148 ! tendencies first (separate from dry dynamics).
151 if (present(f_flux)) l_flux=f_flux
155 BENCH_START(init_zero_tend_tim)
159 DO ij = 1 , grid%num_tiles
161 CALL wrf_debug ( 200 , ' call init_zero_tendency' )
162 CALL init_zero_tendency ( ru_tendf, rv_tendf, rw_tendf, &
163 ph_tendf, t_tendf, tke_tend, &
165 moist_tend,chem_tend,scalar_tend, &
166 tracer_tend,num_tracer, &
167 num_moist,num_chem,num_scalar, &
169 ids, ide, jds, jde, kds, kde, &
170 ims, ime, jms, jme, kms, kme, &
171 grid%i_start(ij), grid%i_end(ij), &
172 grid%j_start(ij), grid%j_end(ij), &
176 !$OMP END PARALLEL DO
177 BENCH_END(init_zero_tend_tim)
180 # include "HALO_EM_PHYS_A.inc"
185 DO ij = 1 , grid%num_tiles
187 CALL wrf_debug ( 200 , ' call phy_prep' )
188 CALL phy_prep ( config_flags, &
189 grid%mut, grid%muu, grid%muv, grid%u_2, &
190 grid%v_2, grid%p, grid%pb, grid%alt, &
191 grid%ph_2, grid%phb, grid%t_2, grid%tsk, moist, num_moist, &
192 rho,th_phy, p_phy, pi_phy, u_phy, v_phy, &
193 p8w, t_phy, t8w, grid%z, grid%z_at_w, dz8w, &
194 grid%p_hyd, grid%p_hyd_w, grid%dnw, &
195 grid%fnm, grid%fnp, grid%znw, grid%p_top, &
197 grid%rthblten, grid%rublten, grid%rvblten, &
198 grid%rqvblten, grid%rqcblten, grid%rqiblten, &
199 grid%rucuten, grid%rvcuten, grid%rthcuten, &
200 grid%rqvcuten, grid%rqccuten, grid%rqrcuten, &
201 grid%rqicuten, grid%rqscuten, &
202 grid%rushten, grid%rvshten, grid%rthshten, &
203 grid%rqvshten, grid%rqcshten, grid%rqrshten, &
204 grid%rqishten, grid%rqsshten, grid%rqgshten, &
205 grid%rthften, grid%rqvften, &
206 grid%RUNDGDTEN, grid%RVNDGDTEN, grid%RTHNDGDTEN, &
207 grid%RPHNDGDTEN,grid%RQVNDGDTEN, grid%RMUNDGDTEN,&
208 ids, ide, jds, jde, kds, kde, &
209 ims, ime, jms, jme, kms, kme, &
210 grid%i_start(ij), grid%i_end(ij), &
211 grid%j_start(ij), grid%j_end(ij), &
214 !$OMP END PARALLEL DO
216 BENCH_END(phy_prep_tim)
219 CALL domain_clock_get( grid, current_time=currentTime, &
220 current_timestr=mesg )
221 CALL WRFU_TimeGet( currentTime, YY=yr, dayOfYear=day, H=hr, M=minute, S=sec, rc=rc)
222 IF( rc/= WRFU_SUCCESS)THEN
223 CALL wrf_error_fatal('WRFU_TimeGet failed')
226 ! this driver is only needed to handle non-local shadowing effects
227 CALL pre_radiation_driver ( grid, config_flags &
228 & ,itimestep=grid%itimestep, ra_call_offset=grid%ra_call_offset &
229 & ,XLAT=grid%xlat, XLONG=grid%xlong, GMT=grid%gmt &
230 & ,julian=grid%julian, xtime=grid%xtime, RADT=grid%radt &
231 & ,STEPRA=grid%stepra &
232 & ,ht=grid%ht,dx=grid%dx,dy=grid%dy,sina=grid%sina,cosa=grid%cosa &
233 & ,shadowmask=grid%shadowmask,slope_rad=config_flags%slope_rad &
234 & ,topo_shading=config_flags%topo_shading &
235 & ,shadlen=config_flags%shadlen,ht_shad=grid%ht_shad,ht_loc=ht_loc &
236 & ,ht_shad_bxs=grid%ht_shad_bxs, ht_shad_bxe=grid%ht_shad_bxe &
237 & ,ht_shad_bys=grid%ht_shad_bys, ht_shad_bye=grid%ht_shad_bye &
238 & ,nested=config_flags%nested, min_ptchsz=grid%min_ptchsz &
239 & ,spec_bdy_width=config_flags%spec_bdy_width &
241 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
242 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
243 & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
244 & ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1) &
245 & ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1) &
246 & ,kts=k_start, kte=min(k_end,kde-1) &
247 & ,num_tiles=grid%num_tiles )
249 CALL wrf_debug ( 200 , ' call radiation_driver' )
250 BENCH_START(rad_driver_tim)
252 CALL radiation_driver( &
253 & ACFRCV=grid%acfrcv ,ACFRST=grid%acfrst ,ALBEDO=grid%albedo &
254 & ,CFRACH=grid%cfrach ,CFRACL=grid%cfracl ,CFRACM=grid%cfracm &
255 & ,CUPPT=grid%cuppt ,CZMEAN=grid%czmean ,DT=grid%dt &
256 & ,DZ8W=dz8w ,EMISS=grid%emiss ,GLW=grid%glw &
257 & ,GMT=grid%gmt ,GSW=grid%gsw ,HBOT=grid%hbot &
258 & ,HTOP=grid%htop ,HBOTR=grid%hbotr ,HTOPR=grid%htopr &
259 & ,ICLOUD=config_flags%icloud &
260 & ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday , JULIAN=grid%julian &
261 & ,JULYR=grid%julyr ,LW_PHYSICS=config_flags%ra_lw_physics &
262 & ,NCFRCV=grid%ncfrcv ,NCFRST=grid%ncfrst ,NPHS=1 &
263 & ,P8W=grid%p_hyd_w ,P=grid%p_hyd ,PI=pi_phy &
264 & ,RADT=grid%radt ,RA_CALL_OFFSET=grid%ra_call_offset &
265 & ,RHO=rho ,RLWTOA=grid%rlwtoa &
266 & ,RSWTOA=grid%rswtoa ,RTHRATEN=grid%rthraten &
267 & ,RTHRATENLW=grid%rthratenlw ,RTHRATENSW=grid%rthratensw &
268 & ,SNOW=grid%snow ,STEPRA=grid%stepra ,SWDOWN=grid%swdown &
269 & ,SWDOWNC=grid%swdownc ,SW_PHYSICS=config_flags%ra_sw_physics &
270 & ,T8W=t8w ,T=grid%t_phy ,TAUCLDC=grid%taucldc &
271 & ,TAUCLDI=grid%taucldi ,TSK=grid%tsk ,VEGFRA=grid%vegfra &
272 & ,WARM_RAIN=grid%warm_rain ,XICE=grid%xice ,XLAND=grid%xland &
273 & ,XLAT=grid%xlat ,XLONG=grid%xlong ,YR=yr &
274 !Optional solar variables
275 & ,DECLINX=grid%declin ,SOLCONX=grid%solcon ,COSZEN=grid%coszen ,HRANG=grid%hrang &
276 & , CEN_LAT=grid%cen_lat &
278 & ,LEVSIZ=grid%levsiz, N_OZMIXM=num_ozmixm &
279 & ,N_AEROSOLC=num_aerosolc &
280 & ,PAERLEV=grid%paerlev &
281 & ,CAM_ABS_DIM1=grid%cam_abs_dim1, CAM_ABS_DIM2=grid%cam_abs_dim2 &
282 & ,CAM_ABS_FREQ_S=grid%cam_abs_freq_s &
283 & ,XTIME=grid%xtime &
284 ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
286 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
287 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
288 & ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1) &
289 & ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1) &
290 & ,kts=k_start, kte=min(k_end,kde-1) &
291 & ,num_tiles=grid%num_tiles &
294 & , TLWDN=grid%tlwdn, TLWUP=grid%tlwup & ! goddard schemes
295 & , SLWDN=grid%slwdn, SLWUP=grid%slwup & ! goddard schemes
296 & , TSWDN=grid%tswdn, TSWUP=grid%tswup & ! goddard schemes
297 & , SSWDN=grid%sswdn, SSWUP=grid%sswup & ! goddard schemes
300 & , CLDFRA=grid%cldfra &
302 & , F_ICE_PHY=grid%f_ice_phy,F_RAIN_PHY=grid%f_rain_phy &
303 & , QV=moist(ims,kms,jms,P_QV), F_QV=F_QV &
304 & , QC=moist(ims,kms,jms,P_QC), F_QC=F_QC &
305 & , QR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
306 & , QI=moist(ims,kms,jms,P_QI), F_QI=F_QI &
307 & , QS=moist(ims,kms,jms,P_QS), F_QS=F_QS &
308 & , QG=moist(ims,kms,jms,P_QG), F_QG=F_QG &
309 & , QNDROP=scalar(ims,kms,jms,P_QNDROP), F_QNDROP=F_QNDROP &
310 & ,ACSWUPT=grid%acswupt ,ACSWUPTC=grid%acswuptc &
311 & ,ACSWDNT=grid%acswdnt ,ACSWDNTC=grid%acswdntc &
312 & ,ACSWUPB=grid%acswupb ,ACSWUPBC=grid%acswupbc &
313 & ,ACSWDNB=grid%acswdnb ,ACSWDNBC=grid%acswdnbc &
314 & ,ACLWUPT=grid%aclwupt ,ACLWUPTC=grid%aclwuptc &
315 & ,ACLWDNT=grid%aclwdnt ,ACLWDNTC=grid%aclwdntc &
316 & ,ACLWUPB=grid%aclwupb ,ACLWUPBC=grid%aclwupbc &
317 & ,ACLWDNB=grid%aclwdnb ,ACLWDNBC=grid%aclwdnbc &
318 & ,SWUPT=grid%swupt ,SWUPTC=grid%swuptc &
319 & ,SWDNT=grid%swdnt ,SWDNTC=grid%swdntc &
320 & ,SWUPB=grid%swupb ,SWUPBC=grid%swupbc &
321 & ,SWDNB=grid%swdnb ,SWDNBC=grid%swdnbc &
322 & ,LWUPT=grid%lwupt ,LWUPTC=grid%lwuptc &
323 & ,LWDNT=grid%lwdnt ,LWDNTC=grid%lwdntc &
324 & ,LWUPB=grid%lwupb ,LWUPBC=grid%lwupbc &
325 & ,LWDNB=grid%lwdnb ,LWDNBC=grid%lwdnbc &
329 & ,OZMIXM=grid%ozmixm, PIN=grid%pin &
330 & ,M_PS_1=grid%m_ps_1, M_PS_2=grid%m_ps_2, AEROSOLC_1=grid%aerosolc_1 &
331 & ,AEROSOLC_2=grid%aerosolc_2, M_HYBI0=grid%m_hybi &
332 & ,ABSTOT=grid%abstot, ABSNXT=grid%absnxt, EMSTOT=grid%emstot &
333 & ,RADTACTTIME=grid%radtacttime &
335 & ,CU_RAD_FEEDBACK=config_flags%cu_rad_feedback &
336 & ,AER_RA_FEEDBACK=config_flags%aer_ra_feedback &
337 & ,QC_ADJUST=grid%GD_CLOUD_B , QI_ADJUST=grid%GD_CLOUD2_B &
338 & ,PM2_5_DRY=grid%pm2_5_dry, PM2_5_WATER=grid%pm2_5_water &
339 & ,PM2_5_DRY_EC=grid%pm2_5_dry_ec &
340 & ,TAUAER300=grid%tauaer1, TAUAER400=grid%tauaer2 & ! jcb
341 & ,TAUAER600=grid%tauaer3, TAUAER999=grid%tauaer4 & ! jcb
342 & ,GAER300=grid%gaer1, GAER400=grid%gaer2, GAER600=grid%gaer3, GAER999=grid%gaer4 & ! jcb
343 & ,WAER300=grid%waer1, WAER400=grid%waer2, WAER600=grid%waer3, WAER999=grid%waer4 & ! jcb
344 & ,TAUAERlw1 =grid%tauaerlw1, TAUAERlw2=grid%tauaerlw2 &
345 & ,TAUAERlw3 =grid%tauaerlw3, TAUAERlw4=grid%tauaerlw4 &
346 & ,TAUAERlw5 =grid%tauaerlw5, TAUAERlw6=grid%tauaerlw6 &
347 & ,TAUAERlw7 =grid%tauaerlw7, TAUAERlw8=grid%tauaerlw8 &
348 & ,TAUAERlw9 =grid%tauaerlw9, TAUAERlw10=grid%tauaerlw10 &
349 & ,TAUAERlw11 =grid%tauaerlw11, TAUAERlw12=grid%tauaerlw12 &
350 & ,TAUAERlw13 =grid%tauaerlw13, TAUAERlw14=grid%tauaerlw14 &
351 & ,TAUAERlw15 =grid%tauaerlw15, TAUAERlw16=grid%tauaerlw16 &
352 & ,progn=config_flags%progn &
354 & ,slope_rad=config_flags%slope_rad,topo_shading=config_flags%topo_shading &
355 & ,shadowmask=grid%shadowmask,ht=grid%ht,dx=grid%dx,dy=grid%dy )
357 BENCH_END(rad_driver_tim)
359 !********* Surface driver
362 BENCH_START(surf_driver_tim)
364 !-----------------------------------------------------------------
365 ! urban related variable are added to arguments of surface_driver
366 !-----------------------------------------------------------------
367 num_roof_layers = grid%num_soil_layers !urban
368 num_wall_layers = grid%num_soil_layers !urban
369 num_road_layers = grid%num_soil_layers !urban
370 CALL nl_get_iswater(grid%id, iswater)
371 CALL nl_get_isurban(grid%id, isurban)
372 call nl_get_mminlu(grid%id, mminlu)
374 CALL wrf_debug ( 200 , ' call surface_driver' )
376 CALL surface_driver( &
377 & ACGRDFLX=grid%acgrdflx ,ACHFX=grid%achfx ,ACLHF=grid%aclhf &
378 & ,ACSNOM=grid%acsnom ,ACSNOW=grid%acsnow ,AKHS=grid%akhs &
379 & ,AKMS=grid%akms ,ALBBCK=grid%albbck ,ALBEDO=grid%albedo &
380 & ,EMBCK=grid%embck &
381 & ,BR=br ,CANWAT=grid%canwat ,CHKLOWQ=chklowq &
382 & ,CT=grid%ct ,DT=grid%dt ,DX=grid%dx &
383 & ,DZ8W=dz8w ,DZS=grid%dzs ,FLHC=grid%flhc &
384 & ,FLQC=grid%flqc ,GLW=grid%glw ,GRDFLX=grid%grdflx &
385 & ,GSW=grid%gsw ,SWDOWN=grid%swdown ,GZ1OZ0=gz1oz0 ,HFX=grid%hfx &
386 & ,HT=grid%ht ,IFSNOW=config_flags%ifsnow ,ISFFLX=config_flags%isfflx &
387 & ,FRACTIONAL_SEAICE=config_flags%fractional_seaice &
388 & ,TICE2TSK_IF2COLD=config_flags%tice2tsk_if2cold &
389 & ,ISLTYP=grid%isltyp ,ITIMESTEP=grid%itimestep, JULIAN_IN=grid%julian &
390 & ,IVGTYP=grid%ivgtyp ,LH=grid%lh ,LOWLYR=grid%lowlyr &
391 & ,MAVAIL=grid%mavail ,NUM_SOIL_LAYERS=config_flags%num_soil_layers &
392 & ,P8W=grid%p_hyd_w ,PBLH=grid%pblh ,PI_PHY=pi_phy &
393 & ,PSFC=grid%psfc ,PSHLTR=grid%pshltr ,PSIH=psih &
394 & ,BLDT=grid%bldt ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
395 & ,BLDTACTTIME=grid%bldtacttime &
396 & ,PSIM=psim ,P_PHY=grid%p_hyd ,Q10=grid%q10 &
397 & ,Q2=grid%q2 ,QFX=grid%qfx ,QSFC=grid%qsfc &
398 & ,QSHLTR=grid%qshltr ,QZ0=grid%qz0 ,RAINCV=grid%raincv &
399 & ,RA_LW_PHYSICS=config_flags%ra_lw_physics ,RHO=rho &
400 & ,RMOL=grid%rmol ,SFCEVP=grid%sfcevp ,SFCEXC=grid%sfcexc &
401 & ,SFCRUNOFF=grid%sfcrunoff &
402 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
403 & ,SF_SURFACE_PHYSICS=config_flags%sf_surface_physics ,SH2O=grid%sh2o &
404 & ,SHDMAX=grid%shdmax ,SHDMIN=grid%shdmin ,SMOIS=grid%smois &
405 & ,SMSTAV=grid%smstav ,SMSTOT=grid%smstot ,SNOALB=grid%snoalb &
406 & ,SNOW=grid%snow ,SNOWC=grid%snowc ,SNOWH=grid%snowh &
407 & ,SMCREL=grid%smcrel &
408 & ,SST=grid%sst ,SST_UPDATE=grid%sst_update &
409 & ,SSTSK=grid%sstsk ,DTW=grid%dtw ,SST_SKIN=grid%sst_skin &
410 & ,STEPBL=grid%stepbl ,TH10=grid%th10 ,TH2=grid%th2 &
411 & ,THZ0=grid%thz0 ,TH_PHY=th_phy ,TKE_PBL=grid%tke_pbl &
412 & ,TMN=grid%tmn ,TSHLTR=grid%tshltr ,TSK=grid%tsk &
413 & ,TYR=grid%tyr ,TYRA=grid%tyra ,TDLY=grid%tdly &
414 & ,TLAG=grid%tlag ,LAGDAY=config_flags%lagday ,NYEAR=grid%nyear &
415 & ,NDAY=grid%nday ,TMN_UPDATE=grid%tmn_update ,YR=yr &
416 & ,TSLB=grid%tslb ,T_PHY=t_phy ,U10=grid%u10 &
417 & ,URATX=grid%uratx ,VRATX=grid%vratx ,TRATX=grid%tratx &
418 & ,UDRUNOFF=grid%udrunoff ,UST=grid%ust ,UZ0=grid%uz0 &
419 & ,U_FRAME=grid%u_frame ,U_PHY=u_phy ,V10=grid%v10 &
420 & ,VEGFRA=grid%vegfra ,VZ0=grid%vz0 ,V_FRAME=grid%v_frame &
421 & ,V_PHY=v_phy ,WARM_RAIN=grid%warm_rain &
422 & ,WSPD=wspd ,XICE=grid%xice ,XLAND=grid%xland &
423 & ,Z0=grid%z0 ,Z=grid%z ,ZNT=grid%znt &
424 & ,ZS=grid%zs ,XICEM=grid%xicem ,ISICE=grid%landuse_isice&
425 & ,USTM=grid%ustm ,CK=grid%ck ,CKA=grid%cka &
426 & ,CD=grid%cd ,CDA=grid%cda &
427 & ,ISFTCFLX=config_flags%isftcflx, IZ0TLND=config_flags%iz0tlnd &
428 & ,OMLCALL=config_flags%omlcall ,OML_HML0=config_flags%oml_hml0 ,OML_GAMMA=config_flags%oml_gamma &
429 & ,TML=grid%tml, T0ML=grid%t0ml, HML=grid%hml, H0ML=grid%h0ml, HUML=grid%huml, HVML=grid%hvml, F=grid%f &
430 & ,TMOML=grid%TMOML,ISWATER=iswater &
431 & ,SLOPE_RAD=config_flags%slope_rad,TOPO_SHADING=config_flags%topo_shading & ! solar
432 & ,SHADOWMASK=grid%shadowmask & ! solar
433 & ,SLOPE=grid%slope, SLP_AZI=grid%slp_azi, SWNORM=grid%swnorm & ! solar
434 & ,DECLIN=grid%declin ,SOLCON=grid%solcon ,COSZEN=grid%coszen ,HRANG=grid%hrang &
435 & ,xlat_urb2d=grid%XLAT & !I urban
436 & ,NUM_ROOF_LAYERS=num_roof_layers & !I urban
437 & ,NUM_WALL_LAYERS=num_wall_layers & !I urban
438 & ,NUM_ROAD_LAYERS=num_road_layers &
439 & ,DZR=grid%dzr ,DZB=grid%dzb ,DZG=grid%dzg & !I urban
440 & ,TR_URB2D=grid%tr_urb2d ,TB_URB2D=grid%tb_urb2d &
441 & ,TG_URB2D=grid%tg_urb2d & !H urban
442 & ,TC_URB2D=grid%tc_urb2d ,QC_URB2D=grid%qc_urb2d & !H urban
443 & ,UC_URB2D=grid%uc_urb2d & !H urban
444 & ,XXXR_URB2D=grid%xxxr_urb2d &
445 & ,XXXB_URB2D=grid%xxxb_urb2d & !H urban
446 & ,XXXG_URB2D=grid%xxxg_urb2d &
447 & ,XXXC_URB2D=grid%xxxc_urb2d & !H urban
448 & ,TRL_URB3D=grid%trl_urb3d ,TBL_URB3D=grid%tbl_urb3d & !H urban
449 & ,TGL_URB3D=grid%tgl_urb3d & !H urban
450 & ,SH_URB2D=grid%sh_urb2d ,LH_URB2D=grid%lh_urb2d &
451 & ,G_URB2D=grid%g_urb2d & !H urban
452 & ,RN_URB2D=grid%rn_urb2d , TS_URB2D=grid%ts_urb2d & !H urban
453 & ,FRC_URB2D=grid%frc_urb2d & !H urban
454 & ,UTYPE_URB2D=grid%utype_urb2d & !H urban
455 ! Optional urban for BEP scheme
456 & ,SF_URBAN_PHYSICS=config_flags%sf_urban_physics &
457 & ,NUM_URBAN_LAYERS=config_flags%num_urban_layers & !multi-layer urban
458 & ,TRB_URB4D=grid%trb_urb4d,TW1_URB4D=grid%tw1_urb4d & !multi-layer urban
459 & ,TW2_URB4D=grid%tw2_urb4d,TGB_URB4D=grid%tgb_urb4d & !multi-layer urban
460 & ,TLEV_URB3D=grid%tlev_urb3d & !multi-layer urban
461 & ,QLEV_URB3D=grid%qlev_urb3d & !multi-layer urban
462 & ,TW1LEV_URB3D=grid%tw1lev_urb3d & !multi-layer urban
463 & ,TW2LEV_URB3D=grid%tw2lev_urb3d & !multi-layer urban
464 & ,TGLEV_URB3D=grid%tglev_urb3d & !multi-layer urban
465 & ,TFLEV_URB3D=grid%tflev_urb3d & !multi-layer urban
466 & ,SF_AC_URB3D=grid%sf_ac_urb3d & !multi-layer urban
467 & ,LF_AC_URB3D=grid%lf_ac_urb3d & !multi-layer urban
468 & ,CM_AC_URB3D=grid%cm_ac_urb3d & !multi-layer urban
469 & ,SFVENT_URB3D=grid%sfvent_urb3d & !multi-layer urban
470 & ,LFVENT_URB3D=grid%lfvent_urb3d & !multi-layer urban
471 & ,SFWIN1_URB3D=grid%sfwin1_urb3d & !multi-layer urban
472 & ,SFWIN2_URB3D=grid%sfwin2_urb3d & !multi-layer urban
473 & ,SFW1_URB3D=grid%sfw1_urb3d,SFW2_URB3D=grid%sfw2_urb3d & !multi-layer urban
474 & ,SFR_URB3D=grid%sfr_urb3d,SFG_URB3D=grid%sfg_urb3d & !multi-layer urban
475 & ,GMT=grid%gmt,XLAT=grid%xlat,XLONG=grid%xlong,JULDAY=grid%julday &
476 & ,A_U_BEP=grid%a_u_bep,A_V_BEP=grid%a_v_bep,A_T_BEP=grid%a_t_bep &
477 & ,A_Q_BEP=grid%a_q_bep &
478 & ,B_U_BEP=grid%b_u_bep,B_V_BEP=grid%b_v_bep,B_T_BEP=grid%b_t_bep &
479 & ,B_Q_BEP=grid%b_q_bep &
480 & ,SF_BEP=grid%sf_bep,VL_BEP=grid%vl_bep &
481 & ,A_E_BEP=grid%a_e_bep,B_E_BEP=grid%b_e_bep,DLG_BEP=grid%dlg_bep &
482 & ,DL_U_BEP=grid%dl_u_bep &
483 & ,CMR_SFCDIF=grid%cmr_sfcdif, CHR_SFCDIF=grid%chr_sfcdif & !I/O urban
484 & ,CMC_SFCDIF=grid%cmc_sfcdif, CHC_SFCDIF=grid%chc_sfcdif & !I/O urban
486 & ,LANDUSEF=grid%landusef, SOILCTOP=grid%soilctop & ! P-X LSM
487 & ,SOILCBOT=grid%soilcbot & ! P-X LSM
488 & ,RA=grid%ra, RS=grid%rs, LAI=grid%lai & ! P-X LSM
489 & ,NLCAT=grid%num_land_cat, NSCAT=grid%num_soil_cat & ! P-X LSM
490 & ,VEGF_PX=grid%vegf_px, SNOWNCV=grid%snowncv & ! P-X LSM
491 & ,ANAL_INTERVAL=config_flags%auxinput9_interval_s+config_flags%auxinput9_interval_m*60 & ! P-X LSM
492 & ,PXLSM_SMOIS_INIT=config_flags%pxlsm_smois_init & ! P-X LSM
493 & ,PXLSM_SOIL_NUDGE=config_flags%pxlsm_soil_nudge & ! P-X LSM
494 ! Optional PX LSM nudging
495 & ,t2_ndg_old=grid%t2_ndg_old &
496 & ,q2_ndg_old=grid%q2_ndg_old &
497 & ,t2_ndg_new=grid%t2_ndg_new &
498 & ,q2_ndg_new=grid%q2_ndg_new &
499 & ,sn_ndg_old=grid%sn_ndg_old &
500 & ,sn_ndg_new=grid%sn_ndg_new &
502 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
503 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
504 & , I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
505 & , J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
506 & , KTS=k_start, KTE=min(k_end,kde-1) &
507 & , NUM_TILES=grid%num_tiles &
508 ! Variables required by TEMF PBL - WA 1/7/09
509 ,te_temf=grid%te_temf,hd_temf=grid%hd_temf &
510 ,fCor=grid%f,exch_temf=exch_temf,wm_temf=grid%wm_temf &
511 ! Variables required by IDEAL SCM sfc scheme - WA 1/6/10
512 ,hfx_force=grid%hfx_force,lh_force=grid%lh_force &
513 ,tsk_force=grid%tsk_force &
514 ,hfx_force_tend=grid%hfx_force_tend &
515 ,lh_force_tend=grid%lh_force_tend &
516 ,tsk_force_tend=grid%tsk_force_tend &
518 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
519 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
520 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
521 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
522 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
523 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
524 & ,CAPG=grid%capg, EMISS=grid%emiss, HOL=hol,MOL=grid%mol &
525 & ,T2OBS=grid%t2obs, Q2OBS=grid%q2obs &
526 & ,RAINBL=grid%rainbl,SR=grid%sr,RAINSHV=grid%rainshv &
527 & ,RAINNCV=grid%rainncv,REGIME=grid%regime,T2=grid%t2,THC=grid%thc &
528 & ,QSG=grid%qsg,QVG=grid%qvg,QCG=grid%qcg,SOILT1=grid%soilt1,TSNAV=grid%tsnav & ! ruc lsm
529 & ,SMFR3D=grid%smfr3d,KEEPFR3DFLAG=grid%keepfr3dflag,DEW=grid%dew & ! ruc lsm
530 & ,POTEVP=grid%POTEVP, SNOPCX=grid%SNOPCX, SOILTB=grid%SOILTB & ! ruc lsm
531 & ,ISURBAN=isurban, MMINLU=TRIM(mminlu) &
532 & ,SNOTIME = grid%SNOTIME &
533 & ,RDLAI2D=config_flags%rdlai2d &
534 & ,usemonalb=config_flags%usemonalb &
535 & ,NOAHRES=grid%noahres &
537 & ,ch=grid%ch,tsq=grid%tsq,qsq=grid%qsq,cov=grid%cov &
539 BENCH_END(surf_driver_tim)
544 CALL wrf_debug ( 200 , ' call pbl_driver' )
545 BENCH_START(pbl_driver_tim)
547 & AKHS=grid%akhs ,AKMS=grid%akms &
548 & ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics &
549 & ,BLDT=grid%bldt, CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
550 & ,BLDTACTTIME=grid%bldtacttime &
551 & ,BR=br ,CHKLOWQ=chklowq ,CT=grid%ct &
552 & ,DT=grid%dt ,DX=grid%dx ,DZ8W=dz8w &
553 & ,EXCH_H=grid%exch_h ,EXCH_M=grid%exch_m &
554 & ,F=grid%f ,GRDFLX=grid%grdflx &
555 & ,GZ1OZ0=gz1oz0 ,HFX=grid%hfx ,HT=grid%ht &
556 & ,ID=grid%id ,ITIMESTEP=grid%itimestep ,KPBL=grid%kpbl &
557 & ,LH=grid%lh ,LOWLYR=grid%lowlyr ,P8W=grid%p_hyd_w &
558 & ,PBLH=grid%pblh ,PI_PHY=pi_phy ,PSIH=psih &
559 & ,PSIM=psim ,P_PHY=grid%p_hyd ,QFX=grid%qfx &
560 & ,QSFC=grid%qsfc ,QZ0=grid%qz0 ,MIXHT=mixht &
561 & ,RA_LW_PHYSICS=config_flags%ra_lw_physics &
562 & ,RHO=rho ,RQCBLTEN=grid%rqcblten ,RQIBLTEN=grid%rqiblten &
563 & ,RQVBLTEN=grid%rqvblten ,RTHBLTEN=grid%rthblten ,RUBLTEN=grid%rublten &
564 & ,RVBLTEN=grid%rvblten ,SNOW=grid%snow ,STEPBL=grid%stepbl &
565 & ,THZ0=grid%thz0 ,TH_PHY=th_phy &
566 & ,TSK=grid%tsk ,T_PHY=grid%t_phy ,UST=grid%ust &
567 & ,U10=grid%u10 ,UZ0=grid%uz0 ,U_FRAME=grid%u_frame ,U_PHY=u_phy &
568 & ,V10=grid%v10 ,VZ0=grid%vz0 ,V_FRAME=grid%v_frame ,V_PHY=v_phy &
570 & ,WARM_RAIN=grid%warm_rain ,WSPD=wspd &
571 & ,XICE=grid%xice ,XLAND=grid%xland ,Z=grid%z &
573 ! variables added for BEP
574 & ,FRC_URB2D=grid%frc_urb2d &
575 & ,A_U_BEP=grid%a_u_bep,A_V_BEP=grid%a_v_bep,A_T_BEP=grid%a_t_bep &
576 & ,A_Q_BEP=grid%a_q_bep &
577 & ,B_U_BEP=grid%b_u_bep,B_V_BEP=grid%b_v_bep,B_T_BEP=grid%b_t_bep &
578 & ,B_Q_BEP=grid%b_q_bep &
579 & ,SF_BEP=grid%sf_bep,VL_BEP=grid%vl_bep &
580 & ,A_E_BEP=grid%a_e_bep,B_E_BEP=grid%b_e_bep,DLG_BEP=grid%dlg_bep &
581 & ,DL_U_BEP=grid%dl_u_bep &
582 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
583 & ,SF_URBAN_PHYSICS=config_flags%sf_urban_physics &
585 ! add tke_pbl, and turbulent fluxes
586 & ,TKE_PBL=grid%tke_pbl,EL_PBL=grid%el_pbl,WU_TUR=grid%wu_tur,WV_tur=grid%wv_tur,WT_tur=grid%wt_tur,WQ_tur=grid%wq_tur &
587 ! end add tke_pbl, and turbulent fluxes
588 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
589 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
590 & ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
591 & ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
592 & ,KTS=k_start, KTE=min(k_end,kde-1) &
593 & ,NUM_TILES=grid%num_tiles &
594 ! Variables Required by ACM PBL - jp
595 & ,ZNU=grid%znu,ZNW=grid%znw,MUT=grid%mut,P_TOP=grid%p_top &
596 ! Variables required by TEMF PBL - WA 9/9/08
597 ,te_temf=grid%te_temf &
598 ,kh_temf=grid%kh_temf,km_temf=grid%km_temf &
599 ,shf_temf=grid%shf_temf,qf_temf=grid%qf_temf &
600 ,uw_temf=grid%uw_temf,vw_temf=grid%vw_temf &
601 ,hd_temf=grid%hd_temf,lcl_temf=grid%lcl_temf &
602 ,wupd_temf=grid%wupd_temf,mf_temf=grid%mf_temf &
603 ,thup_temf=grid%thup_temf,qtup_temf=grid%qtup_temf &
604 ,qlup_temf=grid%qlup_temf &
605 ,cf3d_temf=grid%cf3d_temf,cfm_temf=grid%cfm_temf &
606 ,hct_temf=grid%hct_temf &
607 ,flhc=grid%flhc,flqc=grid%flqc &
608 ,exch_temf=exch_temf &
610 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
611 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
612 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
613 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
614 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
615 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
616 & ,HOL=HOL, MOL=grid%mol, REGIME=grid%REGIME &
618 & ,QKE=scalar(ims,kms,jms,P_qke), tsq=grid%tsq, qsq=grid%qsq, cov=grid%cov &
619 & ,rmol=grid%rmol, ch=grid%ch &
620 & ,qcg=grid%qcg, grav_settling=grid%grav_settling &
621 ! & ,K_m=grid%K_m, K_h=grid%K_h, K_q=grid%K_q &
623 & ,GWD_OPT=config_flags%gwd_opt &
624 & ,DTAUX3D=grid%dtaux3d,DTAUY3D=grid%dtauy3d &
625 & ,DUSFCG=grid%dusfcg,DVSFCG=grid%dvsfcg &
626 & ,VAR2D=grid%var2d,OC12D=grid%oc12d &
627 & ,OA1=grid%oa1,OA2=grid%oa2,OA3=grid%oa3,OA4=grid%oa4 &
628 & ,OL1=grid%ol1,OL2=grid%ol2,OL3=grid%ol3,OL4=grid%ol4 &
629 ! For Wind Turbine Drag Parameterizations
631 & ,XLAT_U=grid%xlat_u,XLONG_U=grid%xlong_u &
632 !Variables required for camuwpbl scheme
633 & ,Z_AT_W=grid%z_at_w,CLDFRA=grid%cldfra &
634 & ,RTHRATENLW=grid%rthratenlw,TAURESX2D=grid%tauresx2d &
635 & ,TAURESY2D=grid%tauresy2d &
636 & ,TPERT2D=grid%tpert2d,QPERT2D=grid%qpert2d &
637 & ,WPERT2D=grid%wpert2d &
638 & ,XLAT_V=grid%xlat_v,XLONG_V=grid%xlong_v &
642 BENCH_END(pbl_driver_tim)
647 ! Jan Mandel's call to SFIRE
649 IF ((grid%sr_x > 0 .OR. grid%sr_y > 0) .AND. config_flags%ifire == 2) THEN
651 BENCH_START(fire_driver_tim)
652 if(config_flags%ifire.eq.2)then
653 ! initialization moved to start_em:start_domain_em
654 ! if(grid%initestep.eq.1) &
655 ! call sfire_driver_em_init ( grid , config_flags &
656 ! ,ids,ide, kds,kde, jds,jde &
657 ! ,ims,ime, kms,kme, jms,jme &
658 ! ,ips,ipe, kps,kpe, jps,jpe )
659 ! one timestep of the fire model
660 call sfire_driver_em_step ( grid , config_flags &
661 ,ids,ide, kds,kde, jds,jde &
662 ,ims,ime, kms,kme, jms,jme &
663 ,ips,ipe, kps,kpe, jps,jpe &
664 ,rho,grid%z_at_w,dz8w)
667 BENCH_END(fire_driver_tim)
673 CALL wrf_debug ( 200 , ' call cumulus_driver' )
675 #if ( WRF_DFI_RADAR == 1 )
677 if (config_flags%dfi_radar == 1) then
678 if(grid%dfi_stage == DFI_FWD ) do_capsupress=1
679 if(grid%itimestep <= 31 .and. grid%dfi_stage == DFI_FST ) do_capsupress=1
683 BENCH_START(cu_driver_tim)
684 CALL cumulus_driver(grid &
685 ! Prognostic variables
686 & ,U=u_phy ,V=v_phy ,TH=th_phy ,T=grid%t_phy &
687 & ,W=grid%w_2 ,P=grid%p_hyd ,PI=pi_phy ,RHO=rho &
689 & ,ITIMESTEP=grid%itimestep ,DT=grid%dt ,DX=grid%dx &
690 & ,CUDT=grid%cudt,CURR_SECS=curr_secs,ADAPT_STEP_FLAG=adapt_step_flag &
691 & ,CUDTACTTIME=grid%cudtacttime &
692 & ,RAINC=grid%rainc ,RAINCV=grid%raincv ,PRATEC=grid%pratec &
694 & ,HTOP=grid%cutop ,HBOT=grid%cubot ,KPBL=grid%kpbl &
695 & ,Z=grid%z ,Z_AT_W=grid%z_at_w ,MAVAIL=grid%mavail ,PBLH=grid%pblh &
696 & ,DZ8W=dz8w ,P8W=grid%p_hyd_w, PSFC=grid%psfc, TSK=grid%tsk &
697 & ,TKE_PBL=grid%tke_pbl, UST=grid%ust &
698 & ,W0AVG=grid%w0avg ,STEPCU=grid%stepcu &
699 & ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland &
700 & ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w ,APR_MC=grid%apr_mc &
701 & ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma &
702 & ,APR_CAPME=grid%apr_capme ,APR_CAPMI=grid%apr_capmi &
703 & ,MASS_FLUX=grid%mass_flux ,XF_ENS=grid%xf_ens &
704 & ,PR_ENS=grid%pr_ens ,HT=grid%ht,EDT_OUT=grid%edt_out &
705 & ,imomentum=grid%imomentum,clos_choice=grid%clos_choice &
706 & ,ishallow=config_flags%ishallow &
707 & ,cugd_tten=grid%cugd_tten,cugd_qvten=grid%cugd_qvten,cugd_qcten=grid%cugd_qcten &
708 & ,cugd_ttens=grid%cugd_ttens,cugd_qvtens=grid%cugd_qvtens &
709 & ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens &
710 & ,MAXENS2=config_flags%maxens2 ,MAXENS3=config_flags%maxens3 &
711 & ,CU_ACT_FLAG=cu_act_flag ,WARM_RAIN=grid%warm_rain &
712 & ,HFX=grid%hfx, QFX=grid%qfx &
713 & ,CLDFRA=grid%cldfra, TPERT2D=grid%tpert2d &
714 & ,GSW=grid%gsw,cugd_avedx=config_flags%cugd_avedx &
715 & ,k22_shallow=grid%k22_shallow,kbcon_shallow=grid%kbcon_shallow &
716 & ,ktop_shallow=grid%ktop_shallow,xmb_shallow=grid%xmb_shallow &
717 & ,PERIODIC_X=(config_flags%polar .OR. config_flags%periodic_x) &
718 & ,PERIODIC_Y=config_flags%periodic_y &
719 ! Zhang-McFarlane outputs
720 & ,CAPE=grid%cape ,ZMMU=grid%zmmu ,ZMMD=grid%zmmd &
721 & ,ZMDT=grid%zmdt ,ZMDQ=grid%zmdq &
722 & ,DLF=grid%dlf, RLIQ=grid%rliq &
723 & ,PCONVB=grid%pconvb, PCONVT=grid%pconvt &
724 & ,EVAPTZM=grid%evaptzm, FZSNTZM=grid%fzsntzm, EVSNTZM=grid%evsntzm &
725 & ,EVAPQZM=grid%evapqzm, ZMFLXPRC=grid%zmflxprc &
726 & ,ZMFLXSNW=grid%zmflxsnw, ZMNTPRPD=grid%zmntprpd &
727 & ,ZMNTSNPD=grid%zmntsnpd, ZMEIHEAT=grid%zmeiheat &
728 & ,CMFMC=grid%cmfmc, CMFMCDZM=grid%cmfmcdzm &
729 & ,PRECCDZM=grid%preccdzm, PRECZ=grid%precz &
730 & ,ZMMTU=grid%zmmtu, ZMMTV=grid%zmmtv &
731 & ,ZMUPGU=grid%zmupgu, ZMUPGD=grid%zmupgd &
732 & ,ZMVPGU=grid%zmvpgu, ZMVPGD=grid%zmvpgd &
733 & ,ZMICUU=grid%zmicuu, ZMICUD=grid%zmicud &
734 & ,ZMICVU=grid%zmicvu, ZMICVD=grid%zmicvd &
735 & ,ZMDICE=grid%zmdice, ZMDLIQ=grid%zmdliq &
737 & ,CU_PHYSICS=config_flags%cu_physics &
738 & ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics &
739 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
740 & ,KFETA_TRIGGER=config_flags%kfeta_trigger &
741 ! Dimension arguments
742 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
743 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
744 & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
745 & ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
746 & ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
747 & ,KTS=k_start, KTE=min(k_end,kde-1) &
748 & ,NUM_TILES=grid%num_tiles &
749 ! Moisture tendency arguments
750 & ,RQVCUTEN=grid%rqvcuten , RQCCUTEN=grid%rqccuten &
751 & ,RQSCUTEN=grid%rqscuten , RQICUTEN=grid%rqicuten &
752 & ,RQRCUTEN=grid%rqrcuten &
753 & ,RQVBLTEN=grid%rqvblten , RQVFTEN=grid%rqvften &
754 ! Other tendency arguments
755 & ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten &
756 & ,RUCUTEN=grid%rucuten , RVCUTEN=grid%rvcuten &
757 & ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften &
758 ! Moisture tracer arguments
759 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
760 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
761 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
762 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
763 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
764 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
765 ! Variables for Tiedtke and NSAS schemes
767 & ,MP_PHYSICS=config_flags%mp_physics &
769 & ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2 &
771 #if ( WRF_DFI_RADAR == 1 )
772 & ,DO_CAPSUPPRESS=do_capsupress &
774 & ,cfu1=grid%cfu1,cfd1=grid%cfd1,dfu1=grid%dfu1,efu1=grid%efu1,dfd1=grid%dfd1,efd1=grid%efd1,f_flux=l_flux)
775 BENCH_END(cu_driver_tim)
777 ! this for calculating (G3 scheme only) time averaged variables for online (WRF-CHem) or offline (other models) chem runs
779 if(config_flags%cu_diag.eq.1)then
782 DO ij = 1 , grid%num_tiles
783 call convtrans_prep(grid%gd_cloud,grid%gd_cloud2,grid%gd_cloud_a,&
784 & grid%gd_cloud_b,grid%raincv,grid%raincv_a,grid%raincv_b, &
785 & grid%gd_cldfr,moist,p_QV,p_QC,p_qi,T_PHY,P_PHY,num_moist, &
786 & grid%gd_cloud2_a,grid%gd_cloud2_b,grid%convtrans_avglen_m,&
787 & adapt_step_flag,curr_secs, &
788 & grid%itimestep,grid%dt, &
789 & config_flags%cu_physics, &
790 & ids,ide, jds,jde, kds,kde, &
791 & ims,ime, jms,jme, kms,kme &
792 & ,ITS=grid%i_start(ij),ITE=min(grid%i_end(ij), ide-1) &
793 & ,JTS=grid%j_start(ij),JTE=min(grid%j_end(ij), jde-1) &
794 & ,KTS=k_start, KTE=min(k_end,kde-1))
796 !$OMP END PARALLEL DO
799 ! shallow cumulus parameterization
800 CALL wrf_debug ( 200 , ' call shallow_cumulus_driver' )
802 BENCH_START(shcu_driver_tim)
803 CALL shallowcu_driver( &
804 & IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
805 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
806 & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
807 & ,I_START=grid%i_start, I_END=min(grid%i_end, ide-1) &
808 & ,J_START=grid%j_start, J_END=min(grid%j_end, jde-1) &
809 & ,KTS=k_start, KTE=min(k_end, kde-1) &
810 & ,NUM_TILES=grid%num_tiles &
811 & ,U=u_phy, V=v_phy, TH=th_phy, T=t_phy &
812 & ,P=grid%p_hyd, PI=pi_phy, RHO=rho, MOIST=moist &
813 & ,NUM_MOIST=num_moist &
814 & ,ITIMESTEP=grid%itimestep, DT=grid%dt, DX=grid%dx &
816 & ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
817 & ,RAINSH=grid%rainsh, PRATESH=grid%pratesh, NCA=grid%nca&
818 & ,RAINSHV=grid%rainshv &
819 & ,Z=grid%z, Z_AT_W=grid%z_at_w, DZ8W=dz8w &
820 & ,MAVAIL=grid%mavail, PBLH=grid%pblh, P8W=grid%p_hyd_w &
821 & ,TKE_PBL=grid%tke_pbl &
822 & ,CLDFRA=grid%cldfra, CLDFRA_OLD=grid%cldfra_old &
823 & ,CLDFRASH=grid%cldfrash, HTOP=grid%htop, HBOT=grid%hbot&
824 & ,SHCU_PHYSICS=grid%shcu_physics &
825 & ,QV_CURR=moist(ims,kms,jms,P_QV) &
826 & ,QC_CURR=moist(ims,kms,jms,P_QC) &
827 & ,QR_CURR=moist(ims,kms,jms,P_QR) &
828 & ,QI_CURR=moist(ims,kms,jms,P_QI) &
829 & ,QS_CURR=moist(ims,kms,jms,P_QI) &
830 & ,QG_CURR=moist(ims,kms,jms,P_QG) &
831 & ,DLF=grid%dlf, RLIQ=grid%rliq, RLIQ2=grid%rliq2 &
832 & ,CMFMC=grid%cmfmc, CMFMC2=grid%cmfmc2 &
833 & ,CUSH=grid%cush, SNOWSH=grid%snowsh &
834 & ,ICWMRSH=grid%icwmrsh, RPRDSH=grid%rprdsh &
835 & ,CBMF=grid%cbmf_cu, CMFSL=grid%cmfsl, CMFLQ=grid%cmflq &
836 & ,EVAPCSH=grid%evapcsh &
837 & ,RQVSHTEN=grid%rqvshten, RQCSHTEN=grid%rqcshten &
838 & ,RQRSHTEN=grid%rqrshten, RQISHTEN=grid%rqishten &
839 & ,RQSSHTEN=grid%rqsshten, RQGSHTEN=grid%rqgshten &
840 & ,RQVBLTEN=grid%rqvblten, RQVFTEN=grid%rqvften &
841 & ,RUSHTEN=grid%rushten, RVSHTEN=grid%rvshten &
842 & ,RTHSHTEN=grid%rthshten, RTHRATEN=grid%rthraten &
843 & ,RTHBLTEN=grid%rthblten, RTHFTEN=grid%rthften &
844 & ,F_QV=f_qv,F_QC=f_qc,F_QR=f_qr &
845 & ,F_QI=f_qi,F_QS=f_qs,F_QG=f_qg &
848 BENCH_END(shcu_driver_tim)
850 ! JPH call force_scm to update bl tendencies
851 CALL force_scm(itimestep=grid%itimestep,dt=grid%dt &
852 & ,scm_force=config_flags%scm_force &
853 & ,dx=config_flags%scm_force_dx &
854 & ,num_force_layers=grid%num_force_layers &
855 & ,scm_th_adv=config_flags%scm_th_adv &
856 & ,scm_qv_adv=config_flags%scm_qv_adv &
857 & ,scm_ql_adv=config_flags%scm_ql_adv &
858 & ,scm_wind_adv=config_flags%scm_wind_adv &
859 & ,scm_vert_adv=config_flags%scm_vert_adv &
860 & ,scm_soilT_force=config_flags%scm_soilT_force &
861 & ,scm_soilQ_force=config_flags%scm_soilQ_force &
862 & ,scm_force_th_largescale=config_flags%scm_force_th_largescale &
863 & ,scm_force_qv_largescale=config_flags%scm_force_qv_largescale &
864 & ,scm_force_ql_largescale=config_flags%scm_force_ql_largescale &
865 & ,scm_force_wind_largescale=config_flags%scm_force_wind_largescale &
866 & ,u_base=grid%u_base,v_base=grid%v_base &
867 & ,z_base=grid%z_base &
868 & ,z_force=grid%z_force,z_force_tend=grid%z_force_tend &
869 & ,u_g=grid%u_g,v_g=grid%v_g &
870 & ,u_g_tend=grid%u_g_tend,v_g_tend=grid%v_g_tend &
871 & ,w_subs=grid%w_subs, w_subs_tend=grid%w_subs_tend &
872 & ,th_upstream_x=grid%th_upstream_x &
873 & ,th_upstream_x_tend=grid%th_upstream_x_tend &
874 & ,th_upstream_y=grid%th_upstream_y &
875 & ,th_upstream_y_tend=grid%th_upstream_y_tend &
876 & ,qv_upstream_x=grid%qv_upstream_x &
877 & ,qv_upstream_x_tend=grid%qv_upstream_x_tend &
878 & ,qv_upstream_y=grid%qv_upstream_y &
879 & ,qv_upstream_y_tend=grid%qv_upstream_y_tend &
880 & ,ql_upstream_x=grid%ql_upstream_x &
881 & ,ql_upstream_x_tend=grid%ql_upstream_x_tend &
882 & ,ql_upstream_y=grid%ql_upstream_y &
883 & ,ql_upstream_y_tend=grid%ql_upstream_y_tend &
884 & ,u_upstream_x=grid%u_upstream_x &
885 & ,u_upstream_x_tend=grid%u_upstream_x_tend &
886 & ,u_upstream_y=grid%u_upstream_y &
887 & ,u_upstream_y_tend=grid%u_upstream_y_tend &
888 & ,v_upstream_x=grid%v_upstream_x &
889 & ,v_upstream_x_tend=grid%v_upstream_x_tend &
890 & ,v_upstream_y=grid%v_upstream_y &
891 & ,v_upstream_y_tend=grid%v_upstream_y_tend &
892 & ,tau_x=grid%tau_x &
893 & ,tau_x_tend=grid%tau_x_tend &
894 & ,tau_y=grid%tau_y &
895 & ,tau_y_tend=grid%tau_y_tend &
896 & ,th_largescale=grid%th_largescale &
897 & ,th_largescale_tend=grid%th_largescale_tend &
898 & ,qv_largescale=grid%qv_largescale &
899 & ,qv_largescale_tend=grid%qv_largescale_tend &
900 & ,ql_largescale=grid%ql_largescale &
901 & ,ql_largescale_tend=grid%ql_largescale_tend &
902 & ,u_largescale=grid%u_largescale &
903 & ,u_largescale_tend=grid%u_largescale_tend &
904 & ,v_largescale=grid%v_largescale &
905 & ,v_largescale_tend=grid%v_largescale_tend &
906 & ,tau_largescale=grid%tau_largescale &
907 & ,tau_largescale_tend=grid%tau_largescale_tend &
908 & ,num_force_soil_layers=config_flags%num_force_soil_layers &
909 & ,num_soil_layers=config_flags%num_soil_layers &
910 & ,soil_depth_force=grid%soil_depth_force &
912 & ,tslb=grid%tslb,smois=grid%smois &
913 & ,t_soil_forcing_val=grid%t_soil_forcing_val &
914 & ,t_soil_forcing_tend=grid%t_soil_forcing_tend &
915 & ,q_soil_forcing_val=grid%q_soil_forcing_val &
916 & ,q_soil_forcing_tend=grid%q_soil_forcing_tend &
917 & ,tau_soil=grid%tau_soil &
918 & ,z=grid%z,z_at_w=grid%z_at_w &
919 & ,th=th_phy, qv=moist(ims,kms,jms,P_QV) &
920 & ,ql=moist(ims,kms,jms,P_QC) &
921 & ,u=u_phy, v=v_phy &
922 & ,thten=grid%rthblten, qvten=grid%rqvblten &
923 & ,qlten=grid%rqcblten &
924 & ,uten=grid%rublten, vten=grid%rvblten &
925 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
926 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
927 & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
928 & ,KTS=k_start, KTE=min(k_end,kde-1) &
932 # include "HALO_EM_FDDA_SFC.inc"
934 CALL wrf_debug ( 200 , ' call fddagd_driver' )
936 BENCH_START(fdda_driver_tim)
937 CALL fddagd_driver(itimestep=grid%itimestep,dt=grid%dt,xtime=grid%XTIME, &
939 RUNDGDTEN=grid%rundgdten,RVNDGDTEN=grid%rvndgdten, &
940 RTHNDGDTEN=grid%rthndgdten,RPHNDGDTEN=grid%rphndgdten, &
941 RQVNDGDTEN=grid%rqvndgdten,RMUNDGDTEN=grid%rmundgdten, &
942 u_ndg_old=fdda3d(ims,kms,jms,P_u_ndg_old), &
943 v_ndg_old=fdda3d(ims,kms,jms,P_v_ndg_old), &
944 t_ndg_old=fdda3d(ims,kms,jms,P_t_ndg_old), &
945 ph_ndg_old=fdda3d(ims,kms,jms,P_ph_ndg_old), &
946 q_ndg_old=fdda3d(ims,kms,jms,P_q_ndg_old), &
947 mu_ndg_old=fdda2d(ims,1,jms,P_mu_ndg_old), &
948 u_ndg_new=fdda3d(ims,kms,jms,P_u_ndg_new), &
949 v_ndg_new=fdda3d(ims,kms,jms,P_v_ndg_new), &
950 t_ndg_new=fdda3d(ims,kms,jms,P_t_ndg_new), &
951 ph_ndg_new=fdda3d(ims,kms,jms,P_ph_ndg_new), &
952 q_ndg_new=fdda3d(ims,kms,jms,P_q_ndg_new), &
953 mu_ndg_new=fdda2d(ims,1,jms,P_mu_ndg_new), &
954 u3d=grid%u_2,v3d=grid%v_2,th_phy=th_phy, &
955 ph=grid%ph_2,rho=rho,moist=moist, &
956 p_phy=p_phy,pi_phy=pi_phy,p8w=p8w,t_phy=grid%t_phy, &
957 dz8w=dz8w,z=grid%z,z_at_w=grid%z_at_w, &
958 grid=grid,config_flags=config_flags,dx=grid%DX,n_moist=num_moist, &
959 STEPFG=grid%STEPFG, &
960 pblh=grid%pblh,ht=grid%ht,REGIME=grid%regime,ZNT=grid%znt &
961 ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
962 ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
963 ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
964 ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
965 ,KTS=k_start, KTE=min(k_end,kde-1) &
966 , num_tiles=grid%num_tiles, &
967 u10=grid%u10, v10=grid%v10, th2=grid%th2, q2=grid%q2, &
968 u10_ndg_old=grid%u10_ndg_old, &
969 v10_ndg_old=grid%v10_ndg_old, &
970 t2_ndg_old=grid%t2_ndg_old, &
971 th2_ndg_old=grid%th2_ndg_old, &
972 q2_ndg_old=grid%q2_ndg_old, &
973 rh_ndg_old=grid%rh_ndg_old, &
974 psl_ndg_old=grid%psl_ndg_old, &
975 ps_ndg_old=grid%ps_ndg_old, &
976 tob_ndg_old=grid%tob_ndg_old, &
977 odis_ndg_old=grid%odis_ndg_old, &
978 u10_ndg_new=grid%u10_ndg_new, &
979 v10_ndg_new=grid%v10_ndg_new, &
980 t2_ndg_new=grid%t2_ndg_new, &
981 th2_ndg_new=grid%th2_ndg_new, &
982 q2_ndg_new=grid%q2_ndg_new, &
983 rh_ndg_new=grid%rh_ndg_new, &
984 psl_ndg_new=grid%psl_ndg_new, &
985 ps_ndg_new=grid%ps_ndg_new, &
986 tob_ndg_new=grid%tob_ndg_new, &
987 odis_ndg_new=grid%odis_ndg_new &
988 ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
989 ,IMSX=imsx,IMEX=imex,JMSX=jmsx,JMEX=jmex,KMSX=kmsx,KMEX=kmex &
990 ,IPSX=ipsx,IPEX=ipex,JPSX=jpsx,JPEX=jpex,KPSX=kpsx,KPEX=kpex &
991 ,IMSY=imsy,IMEY=imey,JMSY=jmsy,JMEY=jmey,KMSY=kmsy,KMEY=kmey &
992 ,IPSY=ipsy,IPEY=ipey,JPSY=jpsy,JPEY=jpey,KPSY=kpsy,KPEY=kpey )
994 BENCH_END(fdda_driver_tim)
996 END SUBROUTINE first_rk_step_part1
998 END MODULE module_first_rk_step_part1