1 !WRF:MEDIATION_LAYER:SOLVER
6 MODULE a_module_first_rk_step_part1
10 SUBROUTINE a_first_rk_step_part1 ( grid , config_flags &
11 , moist , a_moist , moist_tend , a_moist_tend &
13 , tracer, a_tracer, tracer_tend, a_tracer_tend &
14 , scalar , a_scalar , scalar_tend , a_scalar_tend &
17 , ru_tendf, a_ru_tendf, rv_tendf, a_rv_tendf &
18 , rw_tendf, a_rw_tendf, t_tendf, a_t_tendf &
19 , ph_tendf, a_ph_tendf, mu_tendf, a_mu_tendf &
20 , tke_tend, a_tke_tend &
21 , adapt_step_flag , curr_secs &
22 , psim , psih , gz1oz0 , chklowq &
23 , cu_act_flag , hol , th_phy , a_th_phy &
24 , pi_phy , a_pi_phy , p_phy , a_p_phy , t_phy , a_t_phy &
25 , dz8w , a_dz8w , p8w , a_p8w , t8w , a_t8w &
26 , ids, ide, jds, jde, kds, kde &
27 , ims, ime, jms, jme, kms, kme &
28 , ips, ipe, jps, jpe, kps, kpe &
29 , imsx,imex,jmsx,jmex,kmsx,kmex &
30 , ipsx,ipex,jpsx,jpex,kpsx,kpex &
31 , imsy,imey,jmsy,jmey,kmsy,kmey &
32 , ipsy,ipey,jpsy,jpey,kpsy,kpey &
37 USE module_state_description
38 USE module_model_constants
39 USE module_domain, ONLY : domain, domain_clock_get, get_ijk_from_subgrid
40 USE module_configure, ONLY : grid_config_rec_type, model_config_rec
41 ! USE module_radiation_driver, ONLY : pre_radiation_driver, radiation_driver
42 ! USE module_surface_driver, ONLY : surface_driver
43 ! USE module_cumulus_driver, ONLY : cumulus_driver
44 ! USE module_shallowcu_driver, ONLY : shallowcu_driver
45 ! USE module_pbl_driver, ONLY : pbl_driver
46 ! USE module_fr_sfire_driver_wrf, ONLY : sfire_driver_em_step
47 ! USE module_fddagd_driver, ONLY : fddagd_driver
48 ! USE module_em, ONLY : init_zero_tendency
49 ! USE module_force_scm
50 ! USE module_convtrans_prep
51 USE module_big_step_utilities_em, ONLY : phy_prep
52 !use module_scalar_tables
54 USE module_dm, ONLY : local_communicator, mytask, ntasks, ntasks_x, ntasks_y, local_communicator_periodic, wrf_dm_maxval
55 USE module_comm_dm, ONLY : halo_em_phys_a_sub,halo_em_fdda_sfc_sub
58 USE a_module_em, ONLY : a_init_zero_tendency
59 USE a_module_big_step_utilities_em, ONLY : a_phy_prep
60 USE a_module_pbl_driver, ONLY : a_pbl_driver
61 USE a_module_cumulus_driver, ONLY : a_cumulus_driver
64 TYPE ( domain ), INTENT(INOUT) :: grid
65 TYPE ( grid_config_rec_type ), INTENT(IN) :: config_flags
66 TYPE(WRFU_Time) :: currentTime
68 INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
69 ims, ime, jms, jme, kms, kme, &
70 ips, ipe, jps, jpe, kps, kpe, &
71 imsx,imex,jmsx,jmex,kmsx,kmex, &
72 ipsx,ipex,jpsx,jpex,kpsx,kpex, &
73 imsy,imey,jmsy,jmey,kmsy,kmey, &
74 ipsy,ipey,jpsy,jpey,kpsy,kpey
77 LOGICAL ,INTENT(IN) :: adapt_step_flag
78 REAL, INTENT(IN) :: curr_secs
80 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist
81 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: a_moist
82 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist_tend
83 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: a_moist_tend
84 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem
85 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem_tend
86 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer
87 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: a_tracer
88 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer_tend
89 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: a_tracer_tend
90 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar
91 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: a_scalar
92 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar_tend
93 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: a_scalar_tend
94 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_fdda3d),INTENT(INOUT) :: fdda3d
95 REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d
96 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_aerod),INTENT(INOUT) :: aerod
97 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim
98 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih
99 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0
100 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq
101 LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag
102 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: hol
104 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: th_phy
105 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_th_phy
106 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: pi_phy
107 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_pi_phy
108 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p_phy
109 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_p_phy
110 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_phy
111 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_t_phy
112 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: dz8w
113 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_dz8w
114 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p8w
115 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_p8w
116 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t8w
117 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_t8w
119 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ru_tendf
120 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_ru_tendf
121 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rv_tendf
122 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_rv_tendf
123 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rw_tendf
124 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_rw_tendf
125 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ph_tendf
126 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_ph_tendf
127 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_tendf
128 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_t_tendf
129 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: tke_tend
130 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: a_tke_tend
132 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: mu_tendf
133 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: a_mu_tendf
135 INTEGER, INTENT(IN) :: k_start, k_end
136 LOGICAL, INTENT(IN), OPTIONAL :: f_flux
137 LOGICAL, INTENT(IN), OPTIONAL :: feedback_is_ready ! For WRF-CMAQ coupled model, indicates feedback information is available
140 REAL, DIMENSION( ims:ime, jms:jme ) :: exch_temf ! 1/7/09 WA
142 REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc, mixht
144 INTEGER num_roof_layers
145 INTEGER num_wall_layers
146 INTEGER num_road_layers
151 INTEGER :: yr, month, day, hr, minute, sec, rc
154 INTEGER :: sids , side , sjds , sjde , skds , skde , &
155 sims , sime , sjms , sjme , skms , skme , &
156 sips , sipe , sjps , sjpe , skps , skpe
158 CHARACTER (LEN=256) :: mminlu
160 #if ( WRF_DFI_RADAR == 1 )
161 INTEGER do_capsupress ! =1 do CAP supress, other = don't
164 CALL get_ijk_from_subgrid ( grid , &
165 sids, side, sjds, sjde, skds, skde, &
166 sims, sime, sjms, sjme, skms, skme, &
167 sips, sipe, sjps, sjpe, skps, skpe )
169 ! initialize all tendencies to zero in order to update physics
170 ! tendencies first (separate from dry dynamics).
173 if (present(f_flux)) l_flux=f_flux
178 # include "HALO_EM_PHYS_A.inc"
183 DO ij = 1 , grid%num_tiles
185 CALL wrf_debug ( 200 , ' call phy_prep' )
186 CALL phy_prep ( config_flags, &
187 grid%mut, grid%muu, grid%muv, &
188 grid%c1h, grid%c2h, grid%c1f, grid%c2f, &
189 grid%u_2, grid%v_2, grid%p, grid%pb, grid%alt, &
190 grid%ph_2, grid%phb, grid%t_2, moist, num_moist, &
191 grid%rho,th_phy, grid%th_phy_m_t0, &
192 p_phy, pi_phy, grid%u_phy, grid%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, &
196 ids, ide, jds, jde, kds, kde, &
197 ims, ime, jms, jme, kms, kme, &
198 grid%i_start(ij), grid%i_end(ij), &
199 grid%j_start(ij), grid%j_end(ij), &
202 !$OMP END PARALLEL DO
204 BENCH_END(phy_prep_tim)
211 CALL wrf_debug ( 200 , ' call a_cumulus_driver' )
213 BENCH_START(a_cu_driver_tim)
214 CALL a_cumulus_driver(grid &
215 ! Prognostic variables
216 & ,U=grid%u_phy, V=grid%v_phy, TH=th_phy, THB=a_th_phy, T=grid%t_phy, TB=grid%a_t_phy &
217 & ,W=grid%w_2, P=grid%p_hyd, PB=grid%a_p_hyd, PI=pi_phy, RHO=grid%rho, RHOB=grid%a_rho &
219 & ,ITIMESTEP=grid%itimestep ,DT=grid%dt ,DX=grid%dx &
220 & ,CUDT=grid%cudt,CURR_SECS=curr_secs,ADAPT_STEP_FLAG=adapt_step_flag &
221 & ,CUDTACTTIME=grid%cudtacttime &
222 & ,RAINC=grid%rainc ,RAINCV=grid%raincv ,PRATEC=grid%pratec &
223 & ,RAINCVB=grid%a_raincv, PRATECB=grid%a_pratec &
225 & ,HTOP=grid%cutop ,HBOT=grid%cubot ,KPBL=grid%kpbl &
226 & ,Z=grid%z ,Z_AT_W=grid%z_at_w ,MAVAIL=grid%mavail ,PBLH=grid%pblh &
227 & ,DZ8W=dz8w ,P8W=grid%p_hyd_w, PSFC=grid%psfc, TSK=grid%tsk &
228 & ,ZB=grid%a_z, DZ8WB=a_dz8w &
229 & ,TKE_PBL=grid%tke_pbl, UST=grid%ust &
230 & ,W0AVG=grid%w0avg ,STEPCU=grid%stepcu &
231 & ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland &
232 & ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w ,APR_MC=grid%apr_mc &
233 & ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma &
234 & ,APR_CAPME=grid%apr_capme ,APR_CAPMI=grid%apr_capmi &
235 & ,MASS_FLUX=grid%mass_flux ,XF_ENS=grid%xf_ens &
236 & ,PR_ENS=grid%pr_ens ,HT=grid%ht,EDT_OUT=grid%edt_out &
237 & ,imomentum=grid%imomentum,clos_choice=grid%clos_choice &
238 & ,ishallow=config_flags%ishallow &
239 & ,cugd_tten=grid%cugd_tten,cugd_qvten=grid%cugd_qvten,cugd_qcten=grid%cugd_qcten &
240 & ,cugd_ttens=grid%cugd_ttens,cugd_qvtens=grid%cugd_qvtens &
241 & ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens &
242 & ,MAXENS2=config_flags%maxens2 ,MAXENS3=config_flags%maxens3 &
243 & ,CU_ACT_FLAG=cu_act_flag ,WARM_RAIN=grid%warm_rain &
244 & ,HFX=grid%hfx, QFX=grid%qfx &
245 & ,CLDFRA=grid%cldfra, TPERT2D=grid%tpert2d &
246 & ,GSW=grid%gsw,cugd_avedx=config_flags%cugd_avedx &
247 & ,k22_shallow=grid%k22_shallow,kbcon_shallow=grid%kbcon_shallow &
248 & ,ktop_shallow=grid%ktop_shallow,xmb_shallow=grid%xmb_shallow &
249 & ,PERIODIC_X=(config_flags%polar .OR. config_flags%periodic_x) &
250 & ,PERIODIC_Y=config_flags%periodic_y &
251 ! Zhang-McFarlane outputs
252 & ,CAPE=grid%cape ,ZMMU=grid%zmmu ,ZMMD=grid%zmmd &
253 & ,ZMDT=grid%zmdt ,ZMDQ=grid%zmdq &
254 & ,DLF=grid%dlf, RLIQ=grid%rliq &
255 & ,PCONVB=grid%pconvb, PCONVT=grid%pconvt &
256 & ,EVAPTZM=grid%evaptzm, FZSNTZM=grid%fzsntzm, EVSNTZM=grid%evsntzm &
257 & ,EVAPQZM=grid%evapqzm, ZMFLXPRC=grid%zmflxprc &
258 & ,ZMFLXSNW=grid%zmflxsnw, ZMNTPRPD=grid%zmntprpd &
259 & ,ZMNTSNPD=grid%zmntsnpd, ZMEIHEAT=grid%zmeiheat &
260 & ,CMFMC=grid%cmfmc, CMFMCDZM=grid%cmfmcdzm &
261 & ,PRECCDZM=grid%preccdzm, PRECZ=grid%precz &
262 & ,ZMMTU=grid%zmmtu, ZMMTV=grid%zmmtv &
263 & ,ZMUPGU=grid%zmupgu, ZMUPGD=grid%zmupgd &
264 & ,ZMVPGU=grid%zmvpgu, ZMVPGD=grid%zmvpgd &
265 & ,ZMICUU=grid%zmicuu, ZMICUD=grid%zmicud &
266 & ,ZMICVU=grid%zmicvu, ZMICVD=grid%zmicvd &
267 & ,ZMDICE=grid%zmdice, ZMDLIQ=grid%zmdliq &
269 & ,pgcon=config_flags%sas_pgcon &
270 & ,CU_PHYSICS=config_flags%cu_physics &
271 & ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics &
272 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
273 & ,KFETA_TRIGGER=config_flags%kfeta_trigger &
274 ! Dimension arguments
275 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
276 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
277 & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
278 & ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
279 & ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
280 & ,KTS=k_start, KTE=min(k_end,kde-1) &
281 & ,NUM_TILES=grid%num_tiles &
282 ! Moisture tendency arguments
283 & ,RQVCUTEN=grid%rqvcuten , RQCCUTEN=grid%rqccuten &
284 & ,RQVCUTENB=grid%a_rqvcuten &
285 & ,RQSCUTEN=grid%rqscuten , RQICUTEN=grid%rqicuten &
286 & ,RQRCUTEN=grid%rqrcuten &
287 & ,RQVBLTEN=grid%rqvblten , RQVFTEN=grid%rqvften &
288 ! Other tendency arguments
289 & ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten &
290 & ,RUCUTEN=grid%rucuten , RVCUTEN=grid%rvcuten &
291 & ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften &
292 & ,RTHCUTENB=grid%a_rthcuten &
293 ! Moisture tracer arguments
294 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
295 & ,QV_CURRB=a_moist(ims,kms,jms,P_QV) &
296 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
297 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
298 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
299 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
300 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
301 ! Variables for Tiedtke and NSAS schemes
303 & ,MP_PHYSICS=config_flags%mp_physics &
304 & ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2 &
305 & ,cfu1=grid%cfu1,cfd1=grid%cfd1,dfu1=grid%dfu1,efu1=grid%efu1,dfd1=grid%dfd1,efd1=grid%efd1,f_flux=l_flux)
306 BENCH_END(a_cu_driver_tim)
312 CALL wrf_debug ( 200 , ' call a_pbl_driver' )
313 BENCH_START(a_pbl_driver_tim)
315 & AKHS=grid%akhs ,AKMS=grid%akms &
316 & ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics &
317 & ,BLDT=grid%bldt, CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
318 & ,BLDTACTTIME=grid%bldtacttime &
319 & ,BR=grid%br ,CHKLOWQ=chklowq ,CT=grid%ct &
320 & ,DT=grid%dt ,DX=grid%dx ,DZ8W=dz8w &
321 & ,EXCH_H=grid%exch_h ,EXCH_M=grid%exch_m &
322 & ,FM=grid%fm ,FHH=grid%fh &
323 & ,F=grid%f ,GRDFLX=grid%grdflx &
324 & ,GZ1OZ0=gz1oz0 ,HFX=grid%hfx ,HT=grid%ht &
325 & ,ID=grid%id ,ITIMESTEP=grid%itimestep ,KPBL=grid%kpbl &
326 & ,LH=grid%lh ,LOWLYR=grid%lowlyr ,P8W=grid%p_hyd_w, P8WB=grid%a_p_hyd_w &
327 & ,PBLH=grid%pblh ,PI_PHY=pi_phy,PI_PHYB=a_pi_phy, PSIH=psih &
328 & ,PSIM=psim ,P_PHY=grid%p_hyd, QFX=grid%qfx &
329 & ,QSFC=grid%qsfc ,QZ0=grid%qz0 ,MIXHT=mixht &
330 & ,RA_LW_PHYSICS=config_flags%ra_lw_physics &
331 & ,RHO=grid%rho ,RQCBLTEN=grid%rqcblten ,RQIBLTEN=grid%rqiblten &
332 & ,RQCBLTENB=grid%a_rqcblten ,RQIBLTENB=grid%a_rqiblten &
333 & ,RQVBLTEN=grid%rqvblten ,RQVBLTENB=grid%a_rqvblten &
334 & ,RTHBLTEN=grid%rthblten ,RTHBLTENB=grid%a_rthblten &
335 & ,RUBLTEN=grid%rublten, RUBLTENB=grid%a_rublten &
336 & ,RVBLTEN=grid%rvblten ,RVBLTENB=grid%a_rvblten ,SNOW=grid%snow ,STEPBL=grid%stepbl &
337 & ,THZ0=grid%thz0 ,TH_PHY=th_phy &
338 & ,TSK=grid%tsk ,T_PHY=grid%t_phy, T_PHYB=grid%a_t_phy ,UST=grid%ust &
339 & ,U10=grid%u10 ,UZ0=grid%uz0 ,U_FRAME=grid%u_frame ,U_PHY=grid%u_phy ,U_PHYB=grid%a_u_phy &
340 & ,V10=grid%v10 ,VZ0=grid%vz0 ,V_FRAME=grid%v_frame ,V_PHY=grid%v_phy ,V_PHYB=grid%a_v_phy &
342 & ,WARM_RAIN=grid%warm_rain ,WSPD=grid%wspd &
343 & ,XICE=grid%xice ,XLAND=grid%xland ,Z=grid%z ,ZB=grid%a_z &
346 & ,CTOPO=grid%ctopo,CTOPO2=grid%ctopo2 &
347 ! variables added for BEP
348 & ,FRC_URB2D=grid%frc_urb2d &
349 & ,A_U_BEP=grid%a_u_bep,A_V_BEP=grid%a_v_bep,A_T_BEP=grid%a_t_bep &
350 & ,A_Q_BEP=grid%a_q_bep &
351 & ,B_U_BEP=grid%b_u_bep,B_V_BEP=grid%b_v_bep,B_T_BEP=grid%b_t_bep &
352 & ,B_Q_BEP=grid%b_q_bep &
353 & ,SF_BEP=grid%sf_bep,VL_BEP=grid%vl_bep &
354 & ,A_E_BEP=grid%a_e_bep,B_E_BEP=grid%b_e_bep,DLG_BEP=grid%dlg_bep &
355 & ,DL_U_BEP=grid%dl_u_bep &
356 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
357 & ,SF_URBAN_PHYSICS=config_flags%sf_urban_physics &
359 ! add tke_pbl, and turbulent fluxes
360 & ,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 &
361 ! end add tke_pbl, and turbulent fluxes
362 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
363 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
364 & ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
365 & ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
366 & ,KTS=k_start, KTE=min(k_end,kde-1) &
367 & ,NUM_TILES=grid%num_tiles &
368 ! Variables Required by ACM PBL - jp
369 & ,ZNU=grid%znu,ZNW=grid%znw,MUT=grid%mut,MUTB=grid%a_mut, P_TOP=grid%p_top &
370 ! Variables required by TEMF PBL - WA 9/9/08
371 ,te_temf=grid%te_temf &
372 ,kh_temf=grid%kh_temf,km_temf=grid%km_temf &
373 ,shf_temf=grid%shf_temf,qf_temf=grid%qf_temf &
374 ,uw_temf=grid%uw_temf,vw_temf=grid%vw_temf &
375 ,hd_temf=grid%hd_temf,lcl_temf=grid%lcl_temf &
376 ,wupd_temf=grid%wupd_temf,mf_temf=grid%mf_temf &
377 ,thup_temf=grid%thup_temf,qtup_temf=grid%qtup_temf &
378 ,qlup_temf=grid%qlup_temf &
379 ,cf3d_temf=grid%cf3d_temf,cfm_temf=grid%cfm_temf &
380 ,hct_temf=grid%hct_temf &
381 ,flhc=grid%flhc,flqc=grid%flqc &
382 ,exch_temf=exch_temf &
384 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
385 & ,QV_CURRB=a_moist(ims,kms,jms,P_QV) &
386 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
387 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
388 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
389 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
390 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
391 & ,HOL=HOL, MOL=grid%mol, REGIME=grid%REGIME &
393 & ,QKE=scalar(ims,kms,jms,P_qke_adv), tsq=grid%tsq, qsq=grid%qsq &
395 & ,DQKE=grid%dqke,QWT=grid%qWT &
396 & ,QSHEAR=grid%qSHEAR,QBUOY=grid%qBUOY,QDISS=grid%qDISS &
397 & ,tke_budget=config_flags%tke_budget &
398 & ,rmol=grid%rmol, ch=grid%ch &
399 & ,qcg=grid%qcg, grav_settling=config_flags%grav_settling &
401 & ,GWD_OPT=config_flags%gwd_opt &
402 & ,DTAUX3D=grid%dtaux3d,DTAUY3D=grid%dtauy3d &
403 & ,DTAUX3DB=grid%a_dtaux3d,DTAUY3DB=grid%a_dtauy3d &
404 & ,DUSFCG=grid%dusfcg,DVSFCG=grid%dvsfcg &
405 & ,DUSFCGB=grid%a_dusfcg,DVSFCGB=grid%a_dvsfcg &
406 & ,VAR2D=grid%var2d,OC12D=grid%oc12d &
407 & ,OA1=grid%oa1,OA2=grid%oa2,OA3=grid%oa3,OA4=grid%oa4 &
408 & ,OL1=grid%ol1,OL2=grid%ol2,OL3=grid%ol3,OL4=grid%ol4 &
409 & ,SINA=grid%sina, COSA=grid%cosa &
410 & ,MFSHCONV=grid%mfshconv &
411 & ,MASSFLUX_EDKF=grid%massflux_EDKF &
412 & ,ENTR_EDKF=grid%entr_EDKF, DETR_EDKF=grid%detr_EDKF &
413 & ,THL_UP=grid%thl_up &
414 & ,THV_UP=grid%thv_up, RT_UP=grid%rt_up ,RV_UP=grid%rv_up &
415 & ,RC_UP=grid%rc_up, U_UP=grid% u_up, V_UP=grid%v_up &
416 & ,FRAC_UP=grid%frac_up, RC_MF=grid%RC_MF &
417 ! For Wind Turbine Drag Parameterizations
419 & ,XLAT_U=grid%xlat_u,XLONG_U=grid%xlong_u &
420 !Variables required for camuwpbl scheme
421 & ,Z_AT_W=grid%z_at_w,CLDFRA=grid%cldfra &
422 & ,RTHRATENLW=grid%rthratenlw,TAURESX2D=grid%tauresx2d &
423 & ,TAURESY2D=grid%tauresy2d &
424 & ,TPERT2D=grid%tpert2d,QPERT2D=grid%qpert2d &
425 & ,WPERT2D=grid%wpert2d &
426 & ,XLAT_V=grid%xlat_v,XLONG_V=grid%xlong_v &
430 BENCH_END(a_pbl_driver_tim)
434 DO ij = 1 , grid%num_tiles
436 CALL wrf_debug ( 200 , ' call a_phy_prep' )
437 CALL a_phy_prep ( config_flags, &
438 grid%mut,grid%a_mut, grid%muu, grid%a_muu, grid%muv, grid%a_muv, &
439 grid%u_2,grid%a_u_2, grid%v_2,grid%a_v_2, &
440 grid%p,grid%a_p, grid%pb, grid%alt,grid%a_alt, &
441 grid%ph_2,grid%a_ph_2, grid%phb, grid%t_2,grid%a_t_2, &
442 moist,a_moist, num_moist, &
443 grid%rho,grid%a_rho, th_phy,a_th_phy, p_phy,a_p_phy, pi_phy,a_pi_phy, &
444 grid%u_phy,grid%a_u_phy, grid%v_phy,grid%a_v_phy, &
445 p8w,a_p8w, grid%t_phy,grid%a_t_phy, t8w,a_t8w, grid%z,grid%a_z, &
446 grid%z_at_w,grid%a_z_at_w, dz8w,a_dz8w, &
447 grid%p_hyd,grid%a_p_hyd, grid%p_hyd_w,grid%a_p_hyd_w, &
449 grid%fnm, grid%fnp, grid%znw, grid%p_top, &
450 ids, ide, jds, jde, kds, kde, &
451 ims, ime, jms, jme, kms, kme, &
452 grid%i_start(ij), grid%i_end(ij), &
453 grid%j_start(ij), grid%j_end(ij), &
456 !$OMP END PARALLEL DO
458 BENCH_END(a_phy_prep_tim)
461 # include "HALO_EM_PHYS_A.inc"
464 BENCH_START(a_init_zero_tend_tim)
468 DO ij = 1 , grid%num_tiles
470 CALL wrf_debug ( 200 , ' call init_zero_tendency' )
471 CALL a_init_zero_tendency(a_ru_tendf, &
482 num_moist,num_chem,num_scalar, &
484 ids, ide, jds, jde, kds, kde, &
485 ims, ime, jms, jme, kms, kme, &
486 grid%i_start(ij), grid%i_end(ij), &
487 grid%j_start(ij), grid%j_end(ij), &
491 !$OMP END PARALLEL DO
492 BENCH_END(a_init_zero_tend_tim)
494 END SUBROUTINE a_first_rk_step_part1
496 END MODULE a_module_first_rk_step_part1