1 !WRF:MEDIATION_LAYER:SOLVER
6 MODULE g_module_first_rk_step_part1
10 SUBROUTINE g_first_rk_step_part1 ( grid , config_flags &
11 , moist , g_moist, moist_tend, g_moist_tend &
13 , tracer, g_tracer, tracer_tend, g_tracer_tend &
14 , scalar , g_scalar, scalar_tend, g_scalar_tend &
17 , ru_tendf, g_ru_tendf, rv_tendf, g_rv_tendf &
18 , rw_tendf, g_rw_tendf, t_tendf , g_t_tendf &
19 , ph_tendf, g_ph_tendf, mu_tendf, g_mu_tendf &
20 , tke_tend, g_tke_tend &
21 , adapt_step_flag , curr_secs &
22 , psim , psih , gz1oz0 , chklowq &
23 , cu_act_flag , hol , th_phy , g_th_phy &
24 , pi_phy, g_pi_phy, p_phy ,g_p_phy, t_phy ,g_t_phy &
25 , dz8w , g_dz8w, p8w ,g_p8w, t8w ,g_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,halo_em_phys_a_bl_surf_sub,halo_em_phys_a_tl_sub
59 USE g_module_em, ONLY : g_init_zero_tendency
60 USE g_module_big_step_utilities_em, ONLY : g_phy_prep
61 USE g_module_pbl_driver, ONLY : g_pbl_driver
62 USE g_module_cumulus_driver, ONLY : g_cumulus_driver
65 TYPE ( domain ), INTENT(INOUT) :: grid
66 TYPE ( grid_config_rec_type ), INTENT(IN) :: config_flags
67 TYPE(WRFU_Time) :: currentTime
69 INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
70 ims, ime, jms, jme, kms, kme, &
71 ips, ipe, jps, jpe, kps, kpe, &
72 imsx,imex,jmsx,jmex,kmsx,kmex, &
73 ipsx,ipex,jpsx,jpex,kpsx,kpex, &
74 imsy,imey,jmsy,jmey,kmsy,kmey, &
75 ipsy,ipey,jpsy,jpey,kpsy,kpey
78 LOGICAL ,INTENT(IN) :: adapt_step_flag
79 REAL, INTENT(IN) :: curr_secs
81 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist
82 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: g_moist
83 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist_tend
84 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: g_moist_tend
85 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem
86 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem_tend
87 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer
88 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: g_tracer
89 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer_tend
90 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: g_tracer_tend
91 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar
92 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: g_scalar
93 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar_tend
94 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: g_scalar_tend
95 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_fdda3d),INTENT(INOUT) :: fdda3d
96 REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d
97 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_aerod),INTENT(INOUT) :: aerod
98 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim
99 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih
100 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0
101 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq
102 LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag
103 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: hol
105 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: th_phy
106 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_th_phy
107 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: pi_phy
108 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_pi_phy
109 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p_phy
110 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_p_phy
111 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_phy
112 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_t_phy
113 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: dz8w
114 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_dz8w
115 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p8w
116 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_p8w
117 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t8w
118 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_t8w
120 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ru_tendf
121 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_ru_tendf
122 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rv_tendf
123 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_rv_tendf
124 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rw_tendf
125 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_rw_tendf
126 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ph_tendf
127 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_ph_tendf
128 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_tendf
129 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_t_tendf
130 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: tke_tend
131 REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: g_tke_tend
133 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: mu_tendf
134 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: g_mu_tendf
136 INTEGER, INTENT(IN) :: k_start, k_end
137 LOGICAL, INTENT(IN), OPTIONAL :: f_flux
138 LOGICAL, INTENT(IN), OPTIONAL :: feedback_is_ready ! For WRF-CMAQ coupled model, indicates feedback information is available
141 REAL, DIMENSION( ims:ime, jms:jme ) :: exch_temf ! 1/7/09 WA
143 REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc, mixht
145 INTEGER num_roof_layers
146 INTEGER num_wall_layers
147 INTEGER num_road_layers
152 INTEGER :: yr, month, day, hr, minute, sec, rc
155 INTEGER :: sids , side , sjds , sjde , skds , skde , &
156 sims , sime , sjms , sjme , skms , skme , &
157 sips , sipe , sjps , sjpe , skps , skpe
159 CHARACTER (LEN=256) :: mminlu
161 #if ( WRF_DFI_RADAR == 1 )
162 INTEGER do_capsupress ! =1 do CAP supress, other = don't
165 CALL get_ijk_from_subgrid ( grid , &
166 sids, side, sjds, sjde, skds, skde, &
167 sims, sime, sjms, sjme, skms, skme, &
168 sips, sipe, sjps, sjpe, skps, skpe )
170 ! initialize all tendencies to zero in order to update physics
171 ! tendencies first (separate from dry dynamics).
174 if (present(f_flux)) l_flux=f_flux
178 BENCH_START(g_init_zero_tend_tim)
182 DO ij = 1 , grid%num_tiles
184 CALL wrf_debug ( 200 , ' call init_zero_tendency' )
185 CALL g_init_zero_tendency(ru_tendf, g_ru_tendf, &
186 rv_tendf, g_rv_tendf, &
187 rw_tendf, g_rw_tendf, &
188 ph_tendf, g_ph_tendf, &
189 t_tendf, g_t_tendf, &
190 tke_tend, g_tke_tend, &
191 mu_tendf, g_mu_tendf, &
192 moist_tend, g_moist_tend, &
193 scalar_tend, g_scalar_tend, &
194 tracer_tend, g_tracer_tend, &
196 num_moist,num_chem,num_scalar, &
198 ids, ide, jds, jde, kds, kde, &
199 ims, ime, jms, jme, kms, kme, &
200 grid%i_start(ij), grid%i_end(ij), &
201 grid%j_start(ij), grid%j_end(ij), &
205 !$OMP END PARALLEL DO
206 BENCH_END(g_init_zero_tend_tim)
209 # include "HALO_EM_PHYS_A_TL.inc"
214 DO ij = 1 , grid%num_tiles
216 CALL wrf_debug ( 200 , ' call g_phy_prep' )
217 CALL g_phy_prep ( config_flags, &
218 grid%mut,grid%g_mut, grid%muu, grid%g_muu, grid%muv, grid%g_muv, &
219 grid%u_2,grid%g_u_2, grid%v_2,grid%g_v_2, &
220 grid%p,grid%g_p, grid%pb, grid%alt,grid%g_alt, &
221 grid%ph_2,grid%g_ph_2, grid%phb, grid%t_2,grid%g_t_2, &
222 moist,g_moist, num_moist, &
223 grid%rho,grid%g_rho, th_phy,g_th_phy, p_phy,g_p_phy, pi_phy,g_pi_phy, &
224 grid%u_phy,grid%g_u_phy, grid%v_phy,grid%g_v_phy, &
225 p8w,g_p8w, grid%t_phy,grid%g_t_phy, t8w,g_t8w, grid%z,grid%g_z, &
226 grid%z_at_w,grid%g_z_at_w, dz8w,g_dz8w, &
227 grid%p_hyd,grid%g_p_hyd, grid%p_hyd_w,grid%g_p_hyd_w, &
229 grid%fnm, grid%fnp, grid%znw, grid%p_top, &
230 ids, ide, jds, jde, kds, kde, &
231 ims, ime, jms, jme, kms, kme, &
232 grid%i_start(ij), grid%i_end(ij), &
233 grid%j_start(ij), grid%j_end(ij), &
236 !$OMP END PARALLEL DO
238 BENCH_END(g_phy_prep_tim)
244 IF ( config_flags%bl_pbl_physics .EQ. 98 ) THEN
245 # include "HALO_EM_PHYS_A_BL_SURF.inc"
249 CALL wrf_debug ( 200 , ' call g_pbl_driver' )
250 BENCH_START(g_pbl_driver_tim)
252 & AKHS=grid%akhs ,AKMS=grid%akms &
253 & ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics &
254 & ,BLDT=grid%bldt, CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
255 & ,BLDTACTTIME=grid%bldtacttime &
256 & ,BR=grid%br ,CHKLOWQ=chklowq ,CT=grid%ct &
257 & ,DT=grid%dt ,DX=grid%dx ,DZ8W=dz8w &
258 & ,EXCH_H=grid%exch_h ,EXCH_M=grid%exch_m &
259 & ,FM=grid%fm ,FHH=grid%fh &
260 & ,F=grid%f ,GRDFLX=grid%grdflx &
261 & ,GZ1OZ0=gz1oz0 ,HFX=grid%hfx ,HT=grid%ht &
262 & ,ID=grid%id ,ITIMESTEP=grid%itimestep ,KPBL=grid%kpbl &
263 & ,LH=grid%lh ,LOWLYR=grid%lowlyr ,P8W=grid%p_hyd_w, P8WD=grid%g_p_hyd_w &
264 & ,PBLH=grid%pblh, PI_PHY=pi_phy, PI_PHYD=g_pi_phy ,PSIH=psih &
265 & ,PSIM=psim ,P_PHY=grid%p_hyd, QFX=grid%qfx &
266 & ,QSFC=grid%qsfc ,QZ0=grid%qz0 ,MIXHT=mixht &
267 & ,RA_LW_PHYSICS=config_flags%ra_lw_physics &
268 & ,RHO=grid%rho ,RQCBLTEN=grid%rqcblten ,RQIBLTEN=grid%rqiblten &
269 & ,RQCBLTEND=grid%g_rqcblten ,RQIBLTEND=grid%g_rqiblten &
270 & ,RQVBLTEN=grid%rqvblten ,RQVBLTEND=grid%g_rqvblten &
271 & ,RTHBLTEN=grid%rthblten ,RTHBLTEND=grid%g_rthblten &
272 & ,RUBLTEN=grid%rublten, RUBLTEND=grid%g_rublten &
273 & ,RVBLTEN=grid%rvblten ,RVBLTEND=grid%g_rvblten ,SNOW=grid%snow ,STEPBL=grid%stepbl &
274 & ,THZ0=grid%thz0 ,TH_PHY=th_phy &
275 & ,TSK=grid%tsk ,T_PHY=grid%t_phy, T_PHYD=grid%g_t_phy ,UST=grid%ust &
276 & ,U10=grid%u10 ,UZ0=grid%uz0 ,U_FRAME=grid%u_frame ,U_PHY=grid%u_phy ,U_PHYD=grid%g_u_phy &
277 & ,V10=grid%v10 ,VZ0=grid%vz0 ,V_FRAME=grid%v_frame ,V_PHY=grid%v_phy ,V_PHYD=grid%g_v_phy &
279 & ,WARM_RAIN=grid%warm_rain ,WSPD=grid%wspd &
280 & ,XICE=grid%xice ,XLAND=grid%xland ,Z=grid%z ,ZD=grid%g_z &
283 & ,CTOPO=grid%ctopo,CTOPO2=grid%ctopo2 &
284 ! variables added for BEP
285 & ,FRC_URB2D=grid%frc_urb2d &
286 & ,A_U_BEP=grid%a_u_bep,A_V_BEP=grid%a_v_bep,A_T_BEP=grid%a_t_bep &
287 & ,A_Q_BEP=grid%a_q_bep &
288 & ,B_U_BEP=grid%b_u_bep,B_V_BEP=grid%b_v_bep,B_T_BEP=grid%b_t_bep &
289 & ,B_Q_BEP=grid%b_q_bep &
290 & ,SF_BEP=grid%sf_bep,VL_BEP=grid%vl_bep &
291 & ,A_E_BEP=grid%a_e_bep,B_E_BEP=grid%b_e_bep,DLG_BEP=grid%dlg_bep &
292 & ,DL_U_BEP=grid%dl_u_bep &
293 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
294 & ,SF_URBAN_PHYSICS=config_flags%sf_urban_physics &
296 ! add tke_pbl, and turbulent fluxes
297 & ,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 &
298 ! end add tke_pbl, and turbulent fluxes
299 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
300 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
301 & ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
302 & ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
303 & ,KTS=k_start, KTE=min(k_end,kde-1) &
304 & ,NUM_TILES=grid%num_tiles &
305 ! Variables Required by ACM PBL - jp
306 & ,ZNU=grid%znu,ZNW=grid%znw,MUT=grid%mut,P_TOP=grid%p_top &
308 ! Variables required by TEMF PBL - WA 9/9/08
309 ,te_temf=grid%te_temf &
310 ,kh_temf=grid%kh_temf,km_temf=grid%km_temf &
311 ,shf_temf=grid%shf_temf,qf_temf=grid%qf_temf &
312 ,uw_temf=grid%uw_temf,vw_temf=grid%vw_temf &
313 ,hd_temf=grid%hd_temf,lcl_temf=grid%lcl_temf &
314 ,wupd_temf=grid%wupd_temf,mf_temf=grid%mf_temf &
315 ,thup_temf=grid%thup_temf,qtup_temf=grid%qtup_temf &
316 ,qlup_temf=grid%qlup_temf &
317 ,cf3d_temf=grid%cf3d_temf,cfm_temf=grid%cfm_temf &
318 ,hct_temf=grid%hct_temf &
319 ,flhc=grid%flhc,flqc=grid%flqc &
320 ,exch_temf=exch_temf &
322 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
323 & ,QV_CURRD=g_moist(ims,kms,jms,P_QV) &
324 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
325 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
326 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
327 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
328 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
329 & ,HOL=HOL, MOL=grid%mol, REGIME=grid%REGIME &
331 & ,QKE=scalar(ims,kms,jms,P_qke_adv), tsq=grid%tsq, qsq=grid%qsq &
333 & ,DQKE=grid%dqke,QWT=grid%qWT &
334 & ,QSHEAR=grid%qSHEAR,QBUOY=grid%qBUOY,QDISS=grid%qDISS &
335 & ,bl_mynn_tkebudget=config_flags%bl_mynn_tkebudget &
336 & ,rmol=grid%rmol, ch=grid%ch &
337 & ,qcg=grid%qcg, grav_settling=config_flags%grav_settling &
338 ! & ,K_m=grid%K_m, K_h=grid%K_h, K_q=grid%K_q &
340 & ,GWD_OPT=config_flags%gwd_opt &
341 & ,DTAUX3D=grid%dtaux3d,DTAUY3D=grid%dtauy3d &
342 & ,DTAUX3DD=grid%g_dtaux3d,DTAUY3DD=grid%g_dtauy3d &
343 & ,DUSFCG=grid%dusfcg,DVSFCG=grid%dvsfcg &
344 & ,DUSFCGD=grid%g_dusfcg,DVSFCGD=grid%g_dvsfcg &
345 & ,VAR2D=grid%var2d,OC12D=grid%oc12d &
346 & ,OA1=grid%oa1,OA2=grid%oa2,OA3=grid%oa3,OA4=grid%oa4 &
347 & ,OL1=grid%ol1,OL2=grid%ol2,OL3=grid%ol3,OL4=grid%ol4 &
348 & ,MFSHCONV=grid%mfshconv &
349 & ,MASSFLUX_EDKF=grid%massflux_EDKF &
350 & ,ENTR_EDKF=grid%entr_EDKF, DETR_EDKF=grid%detr_EDKF &
351 & ,THL_UP=grid%thl_up &
352 & ,THV_UP=grid%thv_up, RT_UP=grid%rt_up ,RV_UP=grid%rv_up &
353 & ,RC_UP=grid%rc_up, U_UP=grid% u_up, V_UP=grid%v_up &
354 & ,FRAC_UP=grid%frac_up, RC_MF=grid%RC_MF &
355 ! For Wind Turbine Drag Parameterizations
357 & ,XLAT_U=grid%xlat_u,XLONG_U=grid%xlong_u &
358 !Variables required for camuwpbl scheme
359 & ,Z_AT_W=grid%z_at_w,CLDFRA=grid%cldfra &
360 & ,RTHRATENLW=grid%rthratenlw,TAURESX2D=grid%tauresx2d &
361 & ,TAURESY2D=grid%tauresy2d &
362 & ,TPERT2D=grid%tpert2d,QPERT2D=grid%qpert2d &
363 & ,WPERT2D=grid%wpert2d &
364 & ,XLAT_V=grid%xlat_v,XLONG_V=grid%xlong_v &
368 BENCH_END(g_pbl_driver_tim)
373 CALL wrf_debug ( 200 , ' call g_cumulus_driver' )
375 BENCH_START(g_cu_driver_tim)
376 CALL g_cumulus_driver(grid &
377 ! Prognostic variables
378 & ,U=grid%u_phy, V=grid%v_phy, TH=th_phy, THD=g_th_phy, T=grid%t_phy, TD=grid%g_t_phy &
379 & ,W=grid%w_2, P=grid%p_hyd, PD=grid%g_p_hyd, PI=pi_phy, RHO=grid%rho, RHOD=grid%g_rho &
381 & ,ITIMESTEP=grid%itimestep ,DT=grid%dt ,DX=grid%dx &
382 & ,CUDT=grid%cudt,CURR_SECS=curr_secs,ADAPT_STEP_FLAG=adapt_step_flag &
383 & ,CUDTACTTIME=grid%cudtacttime &
384 & ,RAINC=grid%rainc ,RAINCV=grid%raincv ,PRATEC=grid%pratec &
385 & ,RAINCVD=grid%g_raincv, PRATECD=grid%g_pratec &
387 & ,HTOP=grid%cutop ,HBOT=grid%cubot ,KPBL=grid%kpbl &
388 & ,Z=grid%z ,Z_AT_W=grid%z_at_w ,MAVAIL=grid%mavail ,PBLH=grid%pblh &
389 & ,DZ8W=dz8w ,P8W=grid%p_hyd_w, PSFC=grid%psfc, TSK=grid%tsk &
390 & ,ZD=grid%g_z, DZ8WD=g_dz8w &
391 & ,TKE_PBL=grid%tke_pbl, UST=grid%ust &
392 & ,W0AVG=grid%w0avg ,STEPCU=grid%stepcu &
393 & ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland &
394 & ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w ,APR_MC=grid%apr_mc &
395 & ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma &
396 & ,APR_CAPME=grid%apr_capme ,APR_CAPMI=grid%apr_capmi &
397 & ,MASS_FLUX=grid%mass_flux ,XF_ENS=grid%xf_ens &
398 & ,PR_ENS=grid%pr_ens ,HT=grid%ht,EDT_OUT=grid%edt_out &
399 & ,imomentum=grid%imomentum,clos_choice=grid%clos_choice &
400 & ,ishallow=config_flags%ishallow &
401 & ,cugd_tten=grid%cugd_tten,cugd_qvten=grid%cugd_qvten,cugd_qcten=grid%cugd_qcten &
402 & ,cugd_ttens=grid%cugd_ttens,cugd_qvtens=grid%cugd_qvtens &
403 & ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens &
404 & ,MAXENS2=config_flags%maxens2 ,MAXENS3=config_flags%maxens3 &
405 & ,CU_ACT_FLAG=cu_act_flag ,WARM_RAIN=grid%warm_rain &
406 & ,HFX=grid%hfx, QFX=grid%qfx &
407 & ,CLDFRA=grid%cldfra, TPERT2D=grid%tpert2d &
408 & ,GSW=grid%gsw,cugd_avedx=config_flags%cugd_avedx &
409 & ,k22_shallow=grid%k22_shallow,kbcon_shallow=grid%kbcon_shallow &
410 & ,ktop_shallow=grid%ktop_shallow,xmb_shallow=grid%xmb_shallow &
411 & ,PERIODIC_X=(config_flags%polar .OR. config_flags%periodic_x) &
412 & ,PERIODIC_Y=config_flags%periodic_y &
413 ! Zhang-McFarlane outputs
414 & ,CAPE=grid%cape ,ZMMU=grid%zmmu ,ZMMD=grid%zmmd &
415 & ,ZMDT=grid%zmdt ,ZMDQ=grid%zmdq &
416 & ,DLF=grid%dlf, RLIQ=grid%rliq &
417 & ,PCONVB=grid%pconvb, PCONVT=grid%pconvt &
418 & ,EVAPTZM=grid%evaptzm, FZSNTZM=grid%fzsntzm, EVSNTZM=grid%evsntzm &
419 & ,EVAPQZM=grid%evapqzm, ZMFLXPRC=grid%zmflxprc &
420 & ,ZMFLXSNW=grid%zmflxsnw, ZMNTPRPD=grid%zmntprpd &
421 & ,ZMNTSNPD=grid%zmntsnpd, ZMEIHEAT=grid%zmeiheat &
422 & ,CMFMC=grid%cmfmc, CMFMCDZM=grid%cmfmcdzm &
423 & ,PRECCDZM=grid%preccdzm, PRECZ=grid%precz &
424 & ,ZMMTU=grid%zmmtu, ZMMTV=grid%zmmtv &
425 & ,ZMUPGU=grid%zmupgu, ZMUPGD=grid%zmupgd &
426 & ,ZMVPGU=grid%zmvpgu, ZMVPGD=grid%zmvpgd &
427 & ,ZMICUU=grid%zmicuu, ZMICUD=grid%zmicud &
428 & ,ZMICVU=grid%zmicvu, ZMICVD=grid%zmicvd &
429 & ,ZMDICE=grid%zmdice, ZMDLIQ=grid%zmdliq &
431 & ,pgcon=config_flags%sas_pgcon &
432 & ,CU_PHYSICS=config_flags%cu_physics &
433 & ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics &
434 & ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics &
435 & ,KFETA_TRIGGER=config_flags%kfeta_trigger &
436 ! Dimension arguments
437 & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
438 & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
439 & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
440 & ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
441 & ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
442 & ,KTS=k_start, KTE=min(k_end,kde-1) &
443 & ,NUM_TILES=grid%num_tiles &
444 ! Moisture tendency arguments
445 & ,RQVCUTEN=grid%rqvcuten , RQCCUTEN=grid%rqccuten &
446 & ,RQVCUTEND=grid%g_rqvcuten &
447 & ,RQSCUTEN=grid%rqscuten , RQICUTEN=grid%rqicuten &
448 & ,RQRCUTEN=grid%rqrcuten &
449 & ,RQVBLTEN=grid%rqvblten , RQVFTEN=grid%rqvften &
450 ! Other tendency arguments
451 & ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten &
452 & ,RUCUTEN=grid%rucuten , RVCUTEN=grid%rvcuten &
453 & ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften &
454 & ,RTHCUTEND=grid%g_rthcuten &
455 ! Moisture tracer arguments
456 & ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV &
457 & ,QV_CURRD=g_moist(ims,kms,jms,P_QV) &
458 & ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC &
459 & ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR &
460 & ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI &
461 & ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS &
462 & ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG &
463 ! Variables for Tiedtke and NSAS schemes
465 & ,MP_PHYSICS=config_flags%mp_physics &
466 & ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2 &
467 & ,cfu1=grid%cfu1,cfd1=grid%cfd1,dfu1=grid%dfu1,efu1=grid%efu1,dfd1=grid%dfd1,efd1=grid%efd1,f_flux=l_flux)
468 BENCH_END(g_cu_driver_tim)
471 END SUBROUTINE g_first_rk_step_part1
473 END MODULE g_module_first_rk_step_part1