r5152 | xinzhang | 2011-09-26 21:04:33 -0700 (Mon, 26 Sep 2011) | 3 lines
[wrffire.git] / wrfv2_fire / dyn_em / module_first_rk_step_part1.F
blobe121682a95903b9fa0ee31df7b0d294bc4cb8323
1 !WRF:MEDIATION_LAYER:SOLVER
3 #define BENCH_START(A)
4 #define BENCH_END(A)
6 MODULE module_first_rk_step_part1
8 CONTAINS
10   SUBROUTINE first_rk_step_part1 (   grid , config_flags              &
11                              , moist , moist_tend               &
12                              , chem  , chem_tend                &
13                              , tracer, tracer_tend              &
14                              , scalar , scalar_tend             &
15                              , fdda3d, fdda2d                   &
16                              , ru_tendf, rv_tendf               &
17                              , rw_tendf, t_tendf                &
18                              , ph_tendf, mu_tendf               &
19                              , tke_tend                         &
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    &
32                              , k_start , k_end                  &
33                              , f_flux                           &
34                             )
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
47     USE module_force_scm
48     USE module_convtrans_prep
49     USE module_big_step_utilities_em, ONLY : phy_prep
50 use module_scalar_tables
51 #ifdef DM_PARALLEL
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
54 #endif
55     USE module_utility
56     IMPLICIT NONE
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
117 ! Local
118     REAL, DIMENSION( ims:ime, jms:jme ) :: exch_temf  ! 1/7/09 WA
120     REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc, mixht
121     INTEGER                             :: ij
122     INTEGER  num_roof_layers
123     INTEGER  num_wall_layers
124     INTEGER  num_road_layers
125     INTEGER  iswater
126     LOGICAL  :: l_flux
127     INTEGER  :: isurban
128     INTEGER  rk_step
129     INTEGER                         :: yr, month, day, hr, minute, sec, rc
130     CHARACTER*80                    :: mesg
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
140 #endif
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).
150    l_flux=.FALSE.
151    if (present(f_flux)) l_flux=f_flux
153     rk_step = 1
155 BENCH_START(init_zero_tend_tim)
156        !$OMP PARALLEL DO   &
157        !$OMP PRIVATE ( ij )
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,      &
164                                    mu_tendf,                         &
165                                    moist_tend,chem_tend,scalar_tend, &
166                                    tracer_tend,num_tracer,           &
167                                    num_moist,num_chem,num_scalar,    &
168                                    rk_step,                          &
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), &
173                                    k_start, k_end                   )
175        END DO
176        !$OMP END PARALLEL DO
177 BENCH_END(init_zero_tend_tim)
179 #ifdef DM_PARALLEL
180 #     include "HALO_EM_PHYS_A.inc"
181 #endif
183       !$OMP PARALLEL DO   &
184       !$OMP PRIVATE ( ij )
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,        &
196                         grid%rthraten,                                   &
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),                &
212                         k_start, k_end                                   )
213       ENDDO
214       !$OMP END PARALLEL DO
216 BENCH_END(phy_prep_tim)
218 ! radiation
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')
224          ENDIF
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                      &
240             ! indexes
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                                      &
277      &        ,Z=grid%z                                                   &
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       &
285             ! indexes
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                                   &
292             ! Optional
293 !JJS 20101020 vvvvv
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
298 !JJS 20101020 ^^^^^
300      &        , CLDFRA=grid%cldfra                                        &
301      &        , PB=grid%pb                                                &
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                    &
326      &        ,LWCF=grid%lwcf                                                  &
327      &        ,SWCF=grid%swcf                                                  &
328      &        ,OLR=grid%olr                                                    &
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                                         &  
334 #ifdef WRF_CHEM
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                                            &
353 #endif
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
360 ! surface
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
485            ! P-X LSM Variables
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                  &
501            ! Indexes
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                         &
517            ! Optional
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                                       &
536 !mynn mp@
537      &         ,ch=grid%ch,tsq=grid%tsq,qsq=grid%qsq,cov=grid%cov &
538      &                                                              )
539 BENCH_END(surf_driver_tim)
541 !*********
542 ! pbl
544       CALL wrf_debug ( 200 , ' call pbl_driver' )
545 BENCH_START(pbl_driver_tim)
546       CALL pbl_driver(                                                              &
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        &
569               ,T2=grid%t2 &
570      &        ,WARM_RAIN=grid%warm_rain                    ,WSPD=wspd          &
571      &        ,XICE=grid%xice          ,XLAND=grid%xland        ,Z=grid%z                &
572      &        ,ZNT=grid%znt                                                    &
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                          &
584 ! Bep changes end
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                      &
609           ! optional
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                  &
617 !mynn mp@
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                   &
622 !GWD for ARW
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
630      &        ,phb=grid%phb                                               &
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                    &
639      &        )
640                                                          
642 BENCH_END(pbl_driver_tim)
644 !*****
645 ! fire 
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)
665         endif
667 BENCH_END(fire_driver_tim)
668        ENDIF
671 ! cumulus para.
673       CALL wrf_debug ( 200 , ' call cumulus_driver' )
675 #if ( WRF_DFI_RADAR == 1 )
676       do_capsupress=0
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
680       endif
681 #endif
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             &
688                  ! Other arguments
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       &
693      &             ,NCA=grid%nca                                                       &
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                &
736                  ! Selection flag
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
766      &             ,ZNU=grid%znu                                          &
767      &             ,MP_PHYSICS=config_flags%mp_physics                    &
768 #ifdef WRF_CHEM
769      &             ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2       &
770 #endif
771 #if ( WRF_DFI_RADAR == 1 )
772      &             ,DO_CAPSUPPRESS=do_capsupress                          &
773 #endif
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
780       !$OMP PARALLEL DO   &
781       !$OMP PRIVATE ( ij )
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))
795       ENDDO
796       !$OMP END PARALLEL DO
797      endif
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      &
815      &             ,CUDT=grid%cudt                                        &
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                         &
846      &             ,HT=grid%ht                                            &
847      &                                                                    )
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                &
911      &             ,zs=grid%zs                                            &
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)                     &
929      &              )
931 #ifdef DM_PARALLEL
932 #     include "HALO_EM_FDDA_SFC.inc"
933 #endif
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,      &
938                   id=grid%id,                                                       &
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