Ignore:
Timestamp:
Mar 14, 2011, 12:11:24 PM (14 years ago)
Author:
aslmd
Message:

LMD_MM_MARS et LMD_LES_MARS:

routines physique terrestres commentees dans WRF
pour accelerer la compilation des sources dans le cas martien
--> la premiere compilation est toujours un peu longue, mais les recompilations sont desormais plus rapides
--> les executables sont plus legers (passe de 15-20 Mo a 5-10 Mo)
--> bien que les .F soient presents, la plupart des routines de phys/ ne sont plus compilees
--> regle le bug avec certaines routines dans le cas de g95

NB: verifie sur LMD_MM_MARS
NB: a confirmer sur LMD_LES_MARS

Routines modifiees:


M 93 mesoscale/LMD_LES_MARS/modif_mars/module_first_rk_step_part2.F
M 93 mesoscale/LMD_LES_MARS/modif_mars/solve_em.F
A 0 mesoscale/LMD_LES_MARS/modif_mars/module_physics_init.F
M 93 mesoscale/LMD_LES_MARS/modif_mars/module_physics_addtendc.F
A 0 mesoscale/LMD_LES_MARS/modif_mars/Makefile_dyn_em
M 93 mesoscale/LMD_LES_MARS/modif_mars/Makefile
M 93 mesoscale/LMD_LES_MARS/modif_mars/module_first_rk_step_part1.F
M 93 mesoscale/LMD_LES_MARS/LMD_LES_MARS_install
M 93 mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/Makefile
M 93 mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/solve_em.F
M 93 mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/Makefile
M 93 mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
M 93 mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_physics_init.F
M 93 mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_physics_addtendc.F

Location:
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/Makefile

    r11 r94  
    198198                ../share/module_model_constants.o \
    199199                ../share/module_bc.o \
    200                 ../phys/module_radiation_driver.o \
    201200                ../phys/module_lmd_driver.o \
    202                 ../phys/module_surface_driver.o \
    203                 ../phys/module_cumulus_driver.o \
    204                 ../phys/module_microphysics_driver.o \
    205                 ../phys/module_microphysics_zero_out.o \
    206                 ../phys/module_pbl_driver.o \
    207                 ../phys/module_fddagd_driver.o \
    208                 ../phys/module_fddaobs_driver.o \
    209201                ../phys/module_physics_addtendc.o
    210202
  • trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/solve_em.F

    r76 r94  
    2727! Registry generated module
    2828   USE module_state_description
    29    USE module_radiation_driver
    30    USE module_surface_driver
    31    USE module_cumulus_driver
    32    USE module_microphysics_driver
    33    USE module_microphysics_zero_out
    34    USE module_pbl_driver
    35    USE module_fddagd_driver
    36    USE module_fddaobs_driver
    37    USE module_diagnostics
     29!!!******MARS MARS
     30!!!******MARS MARS
     31!!!******MARS MARS
     32!   USE module_radiation_driver
     33!   USE module_surface_driver
     34!   USE module_cumulus_driver
     35!   USE module_microphysics_driver
     36!   USE module_microphysics_zero_out
     37!   USE module_pbl_driver
     38!   USE module_fddagd_driver
     39!   USE module_fddaobs_driver
     40!   USE module_diagnostics
    3841!****MARS
    3942! in the dyn_em folder physics driver are only used here
     
    480483!-----------------------------------------------------------------
    481484
    482          CALL wrf_debug ( 200 , ' call radiation_driver' )
    483 BENCH_START(rad_driver_tim)
    484 
    485          CALL radiation_driver(                                           &
    486      &         ACFRCV=grid%acfrcv      ,ACFRST=grid%acfrst      ,ALBEDO=grid%albedo      &
    487      &        ,CFRACH=grid%cfrach      ,CFRACL=grid%cfracl      ,CFRACM=grid%cfracm      &
    488      &        ,CUPPT=grid%cuppt        ,CZMEAN=grid%czmean      ,DT=grid%dt              &
    489      &        ,DZ8W=dz8w          ,EMISS=grid%emiss        ,GLW=grid%glw            &
    490      &        ,GMT=grid%gmt            ,GSW=grid%gsw            ,HBOT=grid%hbot          &
    491      &        ,HTOP=grid%htop ,HBOTR=grid%hbotr, HTOPR=grid%htopr ,ICLOUD=config_flags%icloud &
    492      &        ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday, JULIAN=grid%julian      &
    493      &        ,JULYR=grid%julyr        ,LW_PHYSICS=config_flags%ra_lw_physics  &
    494      &        ,NCFRCV=grid%ncfrcv      ,NCFRST=grid%ncfrst      ,NPHS=1             &
    495      &        ,P8W=p8w            ,P=p_phy            ,PI=pi_phy          &
    496      &        ,RADT=grid%radt     ,RA_CALL_OFFSET=grid%ra_call_offset     &
    497      &        ,RHO=rho            ,RLWTOA=grid%rlwtoa                          &
    498      &        ,RSWTOA=grid%rswtoa      ,RTHRATEN=grid%rthraten                      &
    499      &        ,RTHRATENLW=grid%rthratenlw                                      &
    500      &        ,RTHRATENSW=grid%rthratensw                  ,SNOW=grid%snow          &
    501      &        ,STEPRA=grid%stepra      ,SWDOWN=grid%swdown      ,SWDOWNC=grid%swdownc    &
    502      &        ,SW_PHYSICS=config_flags%ra_sw_physics  ,T8W=t8w            &
    503      &        ,T=t_phy            ,TAUCLDC=grid%taucldc    ,TAUCLDI=grid%taucldi    &
    504      &        ,TSK=grid%tsk            ,VEGFRA=grid%vegfra     ,WARM_RAIN=grid%warm_rain &
    505      &        ,XICE=grid%xice                                                  &
    506      &        ,XLAND=grid%xland        ,XLAT=grid%xlat          ,XLONG=grid%xlong        &
    507 !Optional urban
    508      &        ,DECLIN_URB=grid%declin_urb        ,COSZ_URB2D=grid%cosz_urb2d        &
    509      &        ,OMG_URB2D=grid%omg_urb2d                                        &
    510 !
    511      &        ,Z=grid%em_z                                                        &
    512      &        ,LEVSIZ=grid%levsiz, N_OZMIXM=num_ozmixm                    &
    513      &        ,N_AEROSOLC=num_aerosolc                                    &
    514      &        ,PAERLEV=grid%paerlev                                       &
    515      &        ,CAM_ABS_DIM1=grid%cam_abs_dim1, CAM_ABS_DIM2=grid%cam_abs_dim2 &
    516      &        ,CAM_ABS_FREQ_S=grid%cam_abs_freq_s                         &
    517      &        ,XTIME=grid%xtime                                                &
    518             ! indexes
    519      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    520      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    521      &        ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1)          &
    522      &        ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1)          &
    523      &        ,kts=k_start, kte=min(k_end,kde-1)                          &
    524      &        ,num_tiles=grid%num_tiles                                   &
    525             ! Optional                         
    526      &        , CLDFRA=grid%cldfra                                             &
    527      &        , PB=grid%em_pb                                                     &
    528      &        , F_ICE_PHY=grid%f_ice_phy,F_RAIN_PHY=grid%f_rain_phy                 &
    529      &        , QV=moist(ims,kms,jms,P_QV), F_QV=F_QV                     &
    530      &        , QC=moist(ims,kms,jms,P_QC), F_QC=F_QC                                        &
    531      &        , QR=moist(ims,kms,jms,P_QR), F_QR=F_QR                     &
    532      &        , QI=moist(ims,kms,jms,P_QI), F_QI=F_QI                                        &
    533      &        , QS=moist(ims,kms,jms,P_QS), F_QS=F_QS                     &
    534      &        , QG=moist(ims,kms,jms,P_QG), F_QG=F_QG                     &
    535 #ifdef ACFLUX
    536      &        ,ACSWUPT=acswupt    ,ACSWUPTC=acswuptc                      &
    537      &        ,ACSWDNT=acswdnt    ,ACSWDNTC=acswdntc                      &
    538      &        ,ACSWUPB=acswupb    ,ACSWUPBC=acswupbc                      &
    539      &        ,ACSWDNB=acswdnb    ,ACSWDNBC=acswdnbc                      &
    540      &        ,ACLWUPT=aclwupt    ,ACLWUPTC=aclwuptc                      &
    541      &        ,ACLWDNT=aclwdnt    ,ACLWDNTC=aclwdntc                      &
    542      &        ,ACLWUPB=aclwupb    ,ACLWUPBC=aclwupbc                      &
    543      &        ,ACLWDNB=aclwdnb    ,ACLWDNBC=aclwdnbc                      &
    544      &        ,SWUPT=swupt    ,SWUPTC=swuptc                              &
    545      &        ,SWDNT=swdnt    ,SWDNTC=swdntc                              &
    546      &        ,SWUPB=swupb    ,SWUPBC=swupbc                              &
    547      &        ,SWDNB=swdnb    ,SWDNBC=swdnbc                              &
    548      &        ,LWUPT=lwupt    ,LWUPTC=lwuptc                              &
    549      &        ,LWDNT=lwdnt    ,LWDNTC=lwdntc                              &
    550      &        ,LWUPB=lwupb    ,LWUPBC=lwupbc                              &
    551      &        ,LWDNB=lwdnb    ,LWDNBC=lwdnbc                              &
    552 #endif
    553      &        ,LWCF=grid%lwcf                                                  &
    554      &        ,SWCF=grid%swcf                                                  &
    555      &        ,OLR=grid%olr                                                    &
    556      &        ,OZMIXM=grid%ozmixm, PIN=grid%pin                                     &
    557      &        ,M_PS_1=grid%m_ps_1, M_PS_2=grid%m_ps_2, AEROSOLC_1=grid%aerosolc_1        &
    558      &        ,AEROSOLC_2=grid%aerosolc_2, M_HYBI0=grid%m_hybi                      &
    559      &        ,ABSTOT=grid%abstot, ABSNXT=grid%absnxt, EMSTOT=grid%emstot                &
    560 #ifdef WRF_CHEM
    561      &        ,QC_ADJUST=grid%GD_CLOUD , QI_ADJUST=grid%GD_CLOUD2         &
    562      &        ,PM2_5_DRY=grid%pm2_5_dry, PM2_5_WATER=grid%pm2_5_water               &
    563      &        ,PM2_5_DRY_EC=grid%pm2_5_dry_ec                                  &
    564      &        ,TAUAER300=grid%tauaer1, TAUAER400=grid%tauaer2 & ! jcb
    565      &        ,TAUAER600=grid%tauaer3, TAUAER999=grid%tauaer4 & ! jcb
    566      &        ,GAER300=grid%gaer1, GAER400=grid%gaer2, GAER600=grid%gaer3, GAER999=grid%gaer4 & ! jcb
    567      &        ,WAER300=grid%waer1, WAER400=grid%waer2, WAER600=grid%waer3, WAER999=grid%waer4 & ! jcb
    568 #endif
    569      &                                                              )
    570 
    571 BENCH_END(rad_driver_tim)
    572 
    573 !********* Surface driver
    574 ! surface
    575 
    576 BENCH_START(surf_driver_tim)
    577 
    578 !-----------------------------------------------------------------
    579 ! urban related variable are added to arguments of surface_driver
    580 !-----------------------------------------------------------------
    581       NUM_ROOF_LAYERS = grid%num_soil_layers !urban
    582       NUM_WALL_LAYERS = grid%num_soil_layers !urban
    583       NUM_ROAD_LAYERS = grid%num_soil_layers !urban
    584 
    585       CALL wrf_debug ( 200 , ' call surface_driver' )
    586       CALL surface_driver(                                                &
    587      &         ACSNOM=grid%acsnom      ,ACSNOW=grid%acsnow      ,AKHS=grid%akhs          &
    588      &        ,AKMS=grid%akms          ,ALBBCK=grid%albbck      ,ALBEDO=grid%albedo      &
    589      &        ,BR=br              ,CANWAT=grid%canwat      ,CHKLOWQ=chklowq    &
    590      &        ,CT=grid%ct              ,DT=grid%dt         ,DX=grid%dx         &
    591      &        ,DZ8W=dz8w          ,DZS=grid%dzs            ,FLHC=grid%flhc          &
    592      &        ,FLQC=grid%flqc          ,GLW=grid%glw            ,GRDFLX=grid%grdflx      &
    593      &        ,GSW=grid%gsw    ,SWDOWN=grid%swdown        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx              &
    594      &        ,HT=grid%ht              ,IFSNOW=config_flags%ifsnow      ,ISFFLX=config_flags%isfflx      &
    595      &        ,ISLTYP=grid%isltyp      ,ITIMESTEP=grid%itimestep                    &
    596      &        ,IVGTYP=grid%ivgtyp      ,LH=grid%lh              ,LOWLYR=grid%lowlyr      &
    597      &        ,MAVAIL=grid%mavail      ,NUM_SOIL_LAYERS=config_flags%num_soil_layers        &
    598      &        ,P8W=p8w            ,PBLH=grid%pblh          ,PI_PHY=pi_phy      &
    599      &        ,PSFC=grid%psfc          ,PSHLTR=pshltr      ,PSIH=psih          &
    600      &        ,PSIM=psim          ,P_PHY=p_phy        ,Q10=q10            &
    601      &        ,Q2=grid%q2              ,QFX=grid%qfx            ,QSFC=grid%qsfc          &
    602      &        ,QSHLTR=qshltr      ,QZ0=grid%qz0            ,RAINCV=grid%raincv      &
    603      &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics            ,RHO=rho            &
    604      &        ,RMOL=grid%rmol          ,SFCEVP=grid%sfcevp      ,SFCEXC=grid%sfcexc      &
    605      &        ,SFCRUNOFF=grid%sfcrunoff                                        &
    606      &        ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics                        &
    607      &        ,SF_SURFACE_PHYSICS=config_flags%sf_surface_physics  ,SH2O=grid%sh2o          &
    608      &        ,SHDMAX=grid%shdmax      ,SHDMIN=grid%shdmin      ,SMOIS=grid%smois        &
    609      &        ,SMSTAV=grid%smstav      ,SMSTOT=grid%smstot      ,SNOALB=grid%snoalb      &
    610      &        ,SNOW=grid%snow          ,SNOWC=grid%snowc        ,SNOWH=grid%snowh        &
    611      &        ,SST=grid%sst            ,SST_UPDATE=grid%sst_update                  &
    612      &        ,STEPBL=grid%stepbl      ,TH10=th10          ,TH2=grid%th2            &
    613      &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
    614      &        ,TMN=grid%tmn            ,TSHLTR=tshltr      ,TSK=grid%tsk            &
    615      &        ,TSLB=grid%tslb          ,T_PHY=t_phy        ,U10=grid%u10            &
    616      &        ,URATX=grid%uratx        ,VRATX=grid%vratx   ,TRATX=grid%tratx        &
    617      &        ,UDRUNOFF=grid%udrunoff  ,UST=grid%ust       ,UZ0=grid%uz0            &
    618      &        ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        ,V10=grid%v10            &
    619      &        ,VEGFRA=grid%vegfra      ,VZ0=grid%vz0       ,V_FRAME=grid%v_frame    &
    620      &        ,V_PHY=v_phy             ,WARM_RAIN=grid%warm_rain                    &
    621      &        ,WSPD=wspd               ,XICE=grid%xice     ,XLAND=grid%xland        &
    622      &        ,Z0=grid%z0              ,Z=grid%em_z        ,ZNT=grid%znt            &
    623      &        ,ZS=grid%zs                                                           &
    624      &        ,DECLIN_URB=grid%declin_urb  ,COSZ_URB2D=grid%cosz_urb2d    & !I urban
    625      &        ,OMG_URB2D=grid%omg_urb2d    ,xlat_urb2d=grid%XLAT          & !I urban
    626      &        ,NUM_ROOF_LAYERS=num_roof_layers                            & !I urban
    627      &        ,NUM_WALL_LAYERS=num_wall_layers                            & !I urban
    628      &        ,NUM_ROAD_LAYERS=num_road_layers                            &
    629      &        ,DZR=grid%dzr ,DZB=grid%dzb ,DZG=grid%dzg                   & !I urban
    630      &        ,TR_URB2D=grid%tr_urb2d ,TB_URB2D=grid%tb_urb2d             &
    631      &        ,TG_URB2D=grid%tg_urb2d                                     & !H urban
    632      &        ,TC_URB2D=grid%tc_urb2d ,QC_URB2D=grid%qc_urb2d             & !H urban
    633      &        ,UC_URB2D=grid%uc_urb2d                                     & !H urban
    634      &        ,XXXR_URB2D=grid%xxxr_urb2d                                 &
    635      &        ,XXXB_URB2D=grid%xxxb_urb2d                                 & !H urban
    636      &        ,XXXG_URB2D=grid%xxxg_urb2d                                 &
    637      &        ,XXXC_URB2D=grid%xxxc_urb2d                                 & !H urban
    638      &        ,TRL_URB3D=grid%trl_urb3d   ,TBL_URB3D=grid%tbl_urb3d       & !H urban
    639      &        ,TGL_URB3D=grid%tgl_urb3d                                   & !H urban
    640      &        ,SH_URB2D=grid%sh_urb2d     ,LH_URB2D=grid%lh_urb2d         &
    641      &        ,G_URB2D=grid%g_urb2d                                       & !H urban
    642      &        ,RN_URB2D=grid%rn_urb2d     , TS_URB2D=grid%ts_urb2d        & !H urban
    643      &        ,FRC_URB2D=grid%frc_urb2d                                   & !H urban
    644      &        ,UTYPE_URB2D=grid%utype_urb2d                               & !H urban
    645      &        ,ucmcall=grid%ucmcall                                       & !H urban
    646            ! Indexes
    647      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    648      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    649      &        , I_START=grid%i_start,I_END=min(grid%i_end, ide-1)         &
    650      &        , J_START=grid%j_start,J_END=min(grid%j_end, jde-1)         &
    651      &        , KTS=k_start, KTE=min(k_end,kde-1)                         &
    652      &        , NUM_TILES=grid%num_tiles                                  &
    653            ! Optional
    654      &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
    655      &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
    656      &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
    657      &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
    658      &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
    659      &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
    660      &        ,CAPG=grid%capg, EMISS=grid%emiss, HOL=hol,MOL=grid%mol                    &
    661      &        ,RAINBL=grid%rainbl,SR=grid%em_sr                                              &
    662      &        ,RAINNCV=grid%rainncv,REGIME=regime,T2=grid%t2,THC=grid%thc                &
    663      &        ,QSG=grid%qsg,QVG=grid%qvg,QCG=grid%qcg,SOILT1=grid%soilt1,TSNAV=grid%tsnav          & ! ruc lsm
    664      &        ,SMFR3D=grid%smfr3d,KEEPFR3DFLAG=grid%keepfr3dflag                    & ! ruc lsm
    665      &        ,POTEVP=grid%em_POTEVP, SNOPCX=grid%em_SNOPCX, SOILTB=grid%em_SOILTB                & ! ruc lsm
    666      &                                                              )
    667 BENCH_END(surf_driver_tim)
    668 
    669 !*********
    670 ! pbl
    671 
    672       CALL wrf_debug ( 200 , ' call pbl_driver' )
    673 BENCH_START(pbl_driver_tim)
    674       CALL pbl_driver(                                                    &
    675      &         AKHS=grid%akhs          ,AKMS=grid%akms                              &
    676      &        ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics                 &
    677      &        ,BR=br              ,CHKLOWQ=chklowq    ,CT=grid%ct              &
    678      &        ,DT=grid%dt              ,DX=grid%dx              ,DZ8W=dz8w          &
    679      &        ,EL_MYJ=grid%el_myj      ,EXCH_H=grid%exch_h      ,GRDFLX=grid%grdflx      &
    680      &        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx            ,HT=grid%ht              &
    681      &        ,ITIMESTEP=grid%itimestep                    ,KPBL=grid%kpbl          &
    682      &        ,LH=grid%lh              ,LOWLYR=grid%lowlyr      ,P8W=p8w            &
    683      &        ,PBLH=grid%pblh          ,PI_PHY=pi_phy      ,PSIH=psih          &
    684      &        ,PSIM=psim          ,P_PHY=p_phy        ,QFX=grid%qfx            &
    685      &        ,QSFC=grid%qsfc          ,QZ0=grid%qz0                                &
    686      &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics                   &
    687      &        ,RHO=rho            ,RQCBLTEN=grid%rqcblten  ,RQIBLTEN=grid%rqiblten  &
    688      &        ,RQVBLTEN=grid%rqvblten  ,RTHBLTEN=grid%rthblten  ,RUBLTEN=grid%rublten    &
    689      &        ,RVBLTEN=grid%rvblten    ,SNOW=grid%snow          ,STEPBL=grid%stepbl      &
    690      &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
    691      &        ,TSK=grid%tsk            ,T_PHY=t_phy        ,UST=grid%ust            &
    692      &        ,UZ0=grid%uz0            ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        &
    693      &        ,VZ0=grid%vz0            ,V_FRAME=grid%v_frame    ,V_PHY=v_phy        &
    694      &        ,WARM_RAIN=grid%warm_rain                    ,WSPD=wspd          &
    695      &        ,XICE=grid%xice          ,XLAND=grid%xland        ,Z=grid%em_z                &
    696      &        ,ZNT=grid%znt                                                    &
    697      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    698      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    699      &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)          &
    700      &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)          &
    701      &        ,KTS=k_start, KTE=min(k_end,kde-1)                          &
    702      &        ,NUM_TILES=grid%num_tiles                                   &
    703           ! optional
    704      &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
    705      &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
    706      &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
    707      &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
    708      &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
    709      &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
    710      &        ,HOL=HOL, MOL=grid%mol, REGIME=REGIME                            &
    711      &                                                          )
    712 
    713 BENCH_END(pbl_driver_tim)
    714 
    715 ! cumulus para.
    716 
    717           CALL wrf_debug ( 200 , ' call cumulus_driver' )
    718 
    719 BENCH_START(cu_driver_tim)
    720          CALL cumulus_driver(                                             &
    721                  ! Prognostic variables
    722      &              U=u_phy   ,V=v_phy   ,TH=th_phy  ,T=t_phy             &
    723      &             ,W=grid%em_w_2     ,P=p_phy   ,PI=pi_phy  ,RHO=rho             &
    724                  ! Other arguments
    725      &             ,ITIMESTEP=grid%itimestep ,DT=grid%dt      ,DX=grid%dx                &
    726      &             ,RAINC=grid%rainc   ,RAINCV=grid%raincv   ,NCA=grid%nca               &
    727      &             ,HTOP=grid%cutop    ,HBOT=grid%cubot      ,KPBL=grid%kpbl             &
    728      &             ,DZ8W=dz8w     ,P8W=p8w                                &
    729      &             ,W0AVG=grid%w0avg   ,STEPCU=grid%stepcu                          &
    730      &             ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland             &
    731      &             ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w   ,APR_MC=grid%apr_mc           &
    732      &             ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma     &
    733      &             ,APR_CAPME=grid%apr_capme          ,APR_CAPMI=grid%apr_capmi     &
    734      &             ,MASS_FLUX=grid%mass_flux          ,XF_ENS=grid%xf_ens           &
    735      &             ,PR_ENS=grid%pr_ens ,HT=grid%ht                                  &
    736      &             ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens         &
    737      &             ,MAXENS2=config_flags%maxens2                ,MAXENS3=config_flags%maxens3       &
    738      &             ,CU_ACT_FLAG=cu_act_flag   ,WARM_RAIN=grid%warm_rain        &
    739      &             ,GSW=grid%gsw                                               &
    740                  ! Selection flag
    741      &             ,CU_PHYSICS=config_flags%cu_physics                    &
    742                  ! Dimension arguments
    743      &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
    744      &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
    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 , RQVBLTEN=grid%rqvblten                 &
    753      &             ,RQVFTEN=grid%rqvften                                       &
    754                  ! Other tendency arguments
    755      &             ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten                 &
    756      &             ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften                   &
    757                  ! Moisture tracer arguments
    758      &             ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV            &
    759      &             ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC            &
    760      &             ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR            &
    761      &             ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI            &
    762      &             ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS            &
    763      &             ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG            &
    764 #ifdef WRF_CHEM
    765      &             ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2                          &
    766 #endif
    767      &                                                          )
    768 BENCH_END(cu_driver_tim)
    769 
    770 ! fdda
    771 
    772           CALL wrf_debug ( 200 , ' call fddagd_driver' )
    773 
    774 BENCH_START(fdda_driver_tim)
    775    CALL fddagd_driver(itimestep=grid%itimestep,dt=grid%dt,xtime=grid%XTIME,         &
    776                   id=grid%id,      &
    777                   RUNDGDTEN=grid%rundgdten,RVNDGDTEN=grid%rvndgdten,                &
    778                   RTHNDGDTEN=grid%rthndgdten,RQVNDGDTEN=grid%rqvndgdten,            &
    779                   RMUNDGDTEN=grid%rmundgdten,                                  &
    780                   u_ndg_old=fdda3d(ims,kms,jms,P_u_ndg_old),              &
    781                   v_ndg_old=fdda3d(ims,kms,jms,P_v_ndg_old),              &
    782                   t_ndg_old=fdda3d(ims,kms,jms,P_t_ndg_old),              &
    783                   q_ndg_old=fdda3d(ims,kms,jms,P_q_ndg_old),              &
    784                   mu_ndg_old=fdda2d(ims,1,jms,P_mu_ndg_old),              &
    785                   u_ndg_new=fdda3d(ims,kms,jms,P_u_ndg_new),              &
    786                   v_ndg_new=fdda3d(ims,kms,jms,P_v_ndg_new),              &
    787                   t_ndg_new=fdda3d(ims,kms,jms,P_t_ndg_new),              &
    788                   q_ndg_new=fdda3d(ims,kms,jms,P_q_ndg_new),              &
    789                   mu_ndg_new=fdda2d(ims,1,jms,P_mu_ndg_new),              &
    790                   u3d=grid%em_u_2,v3d=grid%em_v_2,th_phy=th_phy,rho=rho,moist=moist,      &
    791                   p_phy=p_phy,pi_phy=pi_phy,p8w=p8w,t_phy=t_phy,          &
    792                   dz8w=dz8w,z=grid%em_z,z_at_w=z_at_w,                            &
    793                   config_flags=config_flags,dx=grid%DX,n_moist=num_3d_m,  &
    794                   STEPFG=grid%STEPFG,                                          &
    795                   pblh=grid%pblh,ht=grid%ht,                                        &
    796                     IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
    797                    ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
    798                    ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
    799                    ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
    800                    ,KTS=k_start, KTE=min(k_end,kde-1)                     &
    801                    , num_tiles=grid%num_tiles                             )
    802 BENCH_END(fdda_driver_tim)
     485!!!******MARS MARS
     486!!!******MARS MARS
     487!!!******MARS MARS
     488
     489
     490!         CALL wrf_debug ( 200 , ' call radiation_driver' )
     491!BENCH_START(rad_driver_tim)
     492!
     493!         CALL radiation_driver(                                           &
     494!     &         ACFRCV=grid%acfrcv      ,ACFRST=grid%acfrst      ,ALBEDO=grid%albedo      &
     495!     &        ,CFRACH=grid%cfrach      ,CFRACL=grid%cfracl      ,CFRACM=grid%cfracm      &
     496!     &        ,CUPPT=grid%cuppt        ,CZMEAN=grid%czmean      ,DT=grid%dt              &
     497!     &        ,DZ8W=dz8w          ,EMISS=grid%emiss        ,GLW=grid%glw            &
     498!     &        ,GMT=grid%gmt            ,GSW=grid%gsw            ,HBOT=grid%hbot          &
     499!     &        ,HTOP=grid%htop ,HBOTR=grid%hbotr, HTOPR=grid%htopr ,ICLOUD=config_flags%icloud &
     500!     &        ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday, JULIAN=grid%julian      &
     501!     &        ,JULYR=grid%julyr        ,LW_PHYSICS=config_flags%ra_lw_physics  &
     502!     &        ,NCFRCV=grid%ncfrcv      ,NCFRST=grid%ncfrst      ,NPHS=1             &
     503!     &        ,P8W=p8w            ,P=p_phy            ,PI=pi_phy          &
     504!     &        ,RADT=grid%radt     ,RA_CALL_OFFSET=grid%ra_call_offset     &
     505!     &        ,RHO=rho            ,RLWTOA=grid%rlwtoa                          &
     506!     &        ,RSWTOA=grid%rswtoa      ,RTHRATEN=grid%rthraten                      &
     507!     &        ,RTHRATENLW=grid%rthratenlw                                      &
     508!     &        ,RTHRATENSW=grid%rthratensw                  ,SNOW=grid%snow          &
     509!     &        ,STEPRA=grid%stepra      ,SWDOWN=grid%swdown      ,SWDOWNC=grid%swdownc    &
     510!     &        ,SW_PHYSICS=config_flags%ra_sw_physics  ,T8W=t8w            &
     511!     &        ,T=t_phy            ,TAUCLDC=grid%taucldc    ,TAUCLDI=grid%taucldi    &
     512!     &        ,TSK=grid%tsk            ,VEGFRA=grid%vegfra     ,WARM_RAIN=grid%warm_rain &
     513!     &        ,XICE=grid%xice                                                  &
     514!     &        ,XLAND=grid%xland        ,XLAT=grid%xlat          ,XLONG=grid%xlong        &
     515!!Optional urban
     516!     &        ,DECLIN_URB=grid%declin_urb        ,COSZ_URB2D=grid%cosz_urb2d        &
     517!     &        ,OMG_URB2D=grid%omg_urb2d                                        &
     518!!
     519!     &        ,Z=grid%em_z                                                        &
     520!     &        ,LEVSIZ=grid%levsiz, N_OZMIXM=num_ozmixm                    &
     521!     &        ,N_AEROSOLC=num_aerosolc                                    &
     522!     &        ,PAERLEV=grid%paerlev                                       &
     523!     &        ,CAM_ABS_DIM1=grid%cam_abs_dim1, CAM_ABS_DIM2=grid%cam_abs_dim2 &
     524!     &        ,CAM_ABS_FREQ_S=grid%cam_abs_freq_s                         &
     525!     &        ,XTIME=grid%xtime                                                &
     526!            ! indexes
     527!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     528!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     529!     &        ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1)          &
     530!     &        ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1)          &
     531!     &        ,kts=k_start, kte=min(k_end,kde-1)                          &
     532!     &        ,num_tiles=grid%num_tiles                                   &
     533!            ! Optional                         
     534!     &        , CLDFRA=grid%cldfra                                             &
     535!     &        , PB=grid%em_pb                                                     &
     536!     &        , F_ICE_PHY=grid%f_ice_phy,F_RAIN_PHY=grid%f_rain_phy                 &
     537!     &        , QV=moist(ims,kms,jms,P_QV), F_QV=F_QV                     &
     538!     &        , QC=moist(ims,kms,jms,P_QC), F_QC=F_QC                                        &
     539!     &        , QR=moist(ims,kms,jms,P_QR), F_QR=F_QR                     &
     540!     &        , QI=moist(ims,kms,jms,P_QI), F_QI=F_QI                                        &
     541!     &        , QS=moist(ims,kms,jms,P_QS), F_QS=F_QS                     &
     542!     &        , QG=moist(ims,kms,jms,P_QG), F_QG=F_QG                     &
     543!#ifdef ACFLUX
     544!     &        ,ACSWUPT=acswupt    ,ACSWUPTC=acswuptc                      &
     545!     &        ,ACSWDNT=acswdnt    ,ACSWDNTC=acswdntc                      &
     546!     &        ,ACSWUPB=acswupb    ,ACSWUPBC=acswupbc                      &
     547!     &        ,ACSWDNB=acswdnb    ,ACSWDNBC=acswdnbc                      &
     548!     &        ,ACLWUPT=aclwupt    ,ACLWUPTC=aclwuptc                      &
     549!     &        ,ACLWDNT=aclwdnt    ,ACLWDNTC=aclwdntc                      &
     550!     &        ,ACLWUPB=aclwupb    ,ACLWUPBC=aclwupbc                      &
     551!     &        ,ACLWDNB=aclwdnb    ,ACLWDNBC=aclwdnbc                      &
     552!     &        ,SWUPT=swupt    ,SWUPTC=swuptc                              &
     553!     &        ,SWDNT=swdnt    ,SWDNTC=swdntc                              &
     554!     &        ,SWUPB=swupb    ,SWUPBC=swupbc                              &
     555!     &        ,SWDNB=swdnb    ,SWDNBC=swdnbc                              &
     556!     &        ,LWUPT=lwupt    ,LWUPTC=lwuptc                              &
     557!     &        ,LWDNT=lwdnt    ,LWDNTC=lwdntc                              &
     558!     &        ,LWUPB=lwupb    ,LWUPBC=lwupbc                              &
     559!     &        ,LWDNB=lwdnb    ,LWDNBC=lwdnbc                              &
     560!#endif
     561!     &        ,LWCF=grid%lwcf                                                  &
     562!     &        ,SWCF=grid%swcf                                                  &
     563!     &        ,OLR=grid%olr                                                    &
     564!     &        ,OZMIXM=grid%ozmixm, PIN=grid%pin                                     &
     565!     &        ,M_PS_1=grid%m_ps_1, M_PS_2=grid%m_ps_2, AEROSOLC_1=grid%aerosolc_1        &
     566!     &        ,AEROSOLC_2=grid%aerosolc_2, M_HYBI0=grid%m_hybi                      &
     567!     &        ,ABSTOT=grid%abstot, ABSNXT=grid%absnxt, EMSTOT=grid%emstot                &
     568!#ifdef WRF_CHEM
     569!     &        ,QC_ADJUST=grid%GD_CLOUD , QI_ADJUST=grid%GD_CLOUD2         &
     570!     &        ,PM2_5_DRY=grid%pm2_5_dry, PM2_5_WATER=grid%pm2_5_water               &
     571!     &        ,PM2_5_DRY_EC=grid%pm2_5_dry_ec                                  &
     572!     &        ,TAUAER300=grid%tauaer1, TAUAER400=grid%tauaer2 & ! jcb
     573!     &        ,TAUAER600=grid%tauaer3, TAUAER999=grid%tauaer4 & ! jcb
     574!     &        ,GAER300=grid%gaer1, GAER400=grid%gaer2, GAER600=grid%gaer3, GAER999=grid%gaer4 & ! jcb
     575!     &        ,WAER300=grid%waer1, WAER400=grid%waer2, WAER600=grid%waer3, WAER999=grid%waer4 & ! jcb
     576!#endif
     577!     &                                                              )
     578!
     579!BENCH_END(rad_driver_tim)
     580!
     581!!********* Surface driver
     582!! surface
     583!
     584!BENCH_START(surf_driver_tim)
     585!
     586!!-----------------------------------------------------------------
     587!! urban related variable are added to arguments of surface_driver
     588!!-----------------------------------------------------------------
     589!      NUM_ROOF_LAYERS = grid%num_soil_layers !urban
     590!      NUM_WALL_LAYERS = grid%num_soil_layers !urban
     591!      NUM_ROAD_LAYERS = grid%num_soil_layers !urban
     592!
     593!      CALL wrf_debug ( 200 , ' call surface_driver' )
     594!      CALL surface_driver(                                                &
     595!     &         ACSNOM=grid%acsnom      ,ACSNOW=grid%acsnow      ,AKHS=grid%akhs          &
     596!     &        ,AKMS=grid%akms          ,ALBBCK=grid%albbck      ,ALBEDO=grid%albedo      &
     597!     &        ,BR=br              ,CANWAT=grid%canwat      ,CHKLOWQ=chklowq    &
     598!     &        ,CT=grid%ct              ,DT=grid%dt         ,DX=grid%dx         &
     599!     &        ,DZ8W=dz8w          ,DZS=grid%dzs            ,FLHC=grid%flhc          &
     600!     &        ,FLQC=grid%flqc          ,GLW=grid%glw            ,GRDFLX=grid%grdflx      &
     601!     &        ,GSW=grid%gsw    ,SWDOWN=grid%swdown        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx              &
     602!     &        ,HT=grid%ht              ,IFSNOW=config_flags%ifsnow      ,ISFFLX=config_flags%isfflx      &
     603!     &        ,ISLTYP=grid%isltyp      ,ITIMESTEP=grid%itimestep                    &
     604!     &        ,IVGTYP=grid%ivgtyp      ,LH=grid%lh              ,LOWLYR=grid%lowlyr      &
     605!     &        ,MAVAIL=grid%mavail      ,NUM_SOIL_LAYERS=config_flags%num_soil_layers        &
     606!     &        ,P8W=p8w            ,PBLH=grid%pblh          ,PI_PHY=pi_phy      &
     607!     &        ,PSFC=grid%psfc          ,PSHLTR=pshltr      ,PSIH=psih          &
     608!     &        ,PSIM=psim          ,P_PHY=p_phy        ,Q10=q10            &
     609!     &        ,Q2=grid%q2              ,QFX=grid%qfx            ,QSFC=grid%qsfc          &
     610!     &        ,QSHLTR=qshltr      ,QZ0=grid%qz0            ,RAINCV=grid%raincv      &
     611!     &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics            ,RHO=rho            &
     612!     &        ,RMOL=grid%rmol          ,SFCEVP=grid%sfcevp      ,SFCEXC=grid%sfcexc      &
     613!     &        ,SFCRUNOFF=grid%sfcrunoff                                        &
     614!     &        ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics                        &
     615!     &        ,SF_SURFACE_PHYSICS=config_flags%sf_surface_physics  ,SH2O=grid%sh2o          &
     616!     &        ,SHDMAX=grid%shdmax      ,SHDMIN=grid%shdmin      ,SMOIS=grid%smois        &
     617!     &        ,SMSTAV=grid%smstav      ,SMSTOT=grid%smstot      ,SNOALB=grid%snoalb      &
     618!     &        ,SNOW=grid%snow          ,SNOWC=grid%snowc        ,SNOWH=grid%snowh        &
     619!     &        ,SST=grid%sst            ,SST_UPDATE=grid%sst_update                  &
     620!     &        ,STEPBL=grid%stepbl      ,TH10=th10          ,TH2=grid%th2            &
     621!     &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
     622!     &        ,TMN=grid%tmn            ,TSHLTR=tshltr      ,TSK=grid%tsk            &
     623!     &        ,TSLB=grid%tslb          ,T_PHY=t_phy        ,U10=grid%u10            &
     624!     &        ,URATX=grid%uratx        ,VRATX=grid%vratx   ,TRATX=grid%tratx        &
     625!     &        ,UDRUNOFF=grid%udrunoff  ,UST=grid%ust       ,UZ0=grid%uz0            &
     626!     &        ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        ,V10=grid%v10            &
     627!     &        ,VEGFRA=grid%vegfra      ,VZ0=grid%vz0       ,V_FRAME=grid%v_frame    &
     628!     &        ,V_PHY=v_phy             ,WARM_RAIN=grid%warm_rain                    &
     629!     &        ,WSPD=wspd               ,XICE=grid%xice     ,XLAND=grid%xland        &
     630!     &        ,Z0=grid%z0              ,Z=grid%em_z        ,ZNT=grid%znt            &
     631!     &        ,ZS=grid%zs                                                           &
     632!     &        ,DECLIN_URB=grid%declin_urb  ,COSZ_URB2D=grid%cosz_urb2d    & !I urban
     633!     &        ,OMG_URB2D=grid%omg_urb2d    ,xlat_urb2d=grid%XLAT          & !I urban
     634!     &        ,NUM_ROOF_LAYERS=num_roof_layers                            & !I urban
     635!     &        ,NUM_WALL_LAYERS=num_wall_layers                            & !I urban
     636!     &        ,NUM_ROAD_LAYERS=num_road_layers                            &
     637!     &        ,DZR=grid%dzr ,DZB=grid%dzb ,DZG=grid%dzg                   & !I urban
     638!     &        ,TR_URB2D=grid%tr_urb2d ,TB_URB2D=grid%tb_urb2d             &
     639!     &        ,TG_URB2D=grid%tg_urb2d                                     & !H urban
     640!     &        ,TC_URB2D=grid%tc_urb2d ,QC_URB2D=grid%qc_urb2d             & !H urban
     641!     &        ,UC_URB2D=grid%uc_urb2d                                     & !H urban
     642!     &        ,XXXR_URB2D=grid%xxxr_urb2d                                 &
     643!     &        ,XXXB_URB2D=grid%xxxb_urb2d                                 & !H urban
     644!     &        ,XXXG_URB2D=grid%xxxg_urb2d                                 &
     645!     &        ,XXXC_URB2D=grid%xxxc_urb2d                                 & !H urban
     646!     &        ,TRL_URB3D=grid%trl_urb3d   ,TBL_URB3D=grid%tbl_urb3d       & !H urban
     647!     &        ,TGL_URB3D=grid%tgl_urb3d                                   & !H urban
     648!     &        ,SH_URB2D=grid%sh_urb2d     ,LH_URB2D=grid%lh_urb2d         &
     649!     &        ,G_URB2D=grid%g_urb2d                                       & !H urban
     650!     &        ,RN_URB2D=grid%rn_urb2d     , TS_URB2D=grid%ts_urb2d        & !H urban
     651!     &        ,FRC_URB2D=grid%frc_urb2d                                   & !H urban
     652!     &        ,UTYPE_URB2D=grid%utype_urb2d                               & !H urban
     653!     &        ,ucmcall=grid%ucmcall                                       & !H urban
     654!           ! Indexes
     655!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     656!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     657!     &        , I_START=grid%i_start,I_END=min(grid%i_end, ide-1)         &
     658!     &        , J_START=grid%j_start,J_END=min(grid%j_end, jde-1)         &
     659!     &        , KTS=k_start, KTE=min(k_end,kde-1)                         &
     660!     &        , NUM_TILES=grid%num_tiles                                  &
     661!           ! Optional
     662!     &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
     663!     &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
     664!     &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
     665!     &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
     666!     &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
     667!     &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
     668!     &        ,CAPG=grid%capg, EMISS=grid%emiss, HOL=hol,MOL=grid%mol                    &
     669!     &        ,RAINBL=grid%rainbl,SR=grid%em_sr                                              &
     670!     &        ,RAINNCV=grid%rainncv,REGIME=regime,T2=grid%t2,THC=grid%thc                &
     671!     &        ,QSG=grid%qsg,QVG=grid%qvg,QCG=grid%qcg,SOILT1=grid%soilt1,TSNAV=grid%tsnav          & ! ruc lsm
     672!     &        ,SMFR3D=grid%smfr3d,KEEPFR3DFLAG=grid%keepfr3dflag                    & ! ruc lsm
     673!     &        ,POTEVP=grid%em_POTEVP, SNOPCX=grid%em_SNOPCX, SOILTB=grid%em_SOILTB                & ! ruc lsm
     674!     &                                                              )
     675!BENCH_END(surf_driver_tim)
     676!
     677!!*********
     678!! pbl
     679!
     680!      CALL wrf_debug ( 200 , ' call pbl_driver' )
     681!BENCH_START(pbl_driver_tim)
     682!      CALL pbl_driver(                                                    &
     683!     &         AKHS=grid%akhs          ,AKMS=grid%akms                              &
     684!     &        ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics                 &
     685!     &        ,BR=br              ,CHKLOWQ=chklowq    ,CT=grid%ct              &
     686!     &        ,DT=grid%dt              ,DX=grid%dx              ,DZ8W=dz8w          &
     687!     &        ,EL_MYJ=grid%el_myj      ,EXCH_H=grid%exch_h      ,GRDFLX=grid%grdflx      &
     688!     &        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx            ,HT=grid%ht              &
     689!     &        ,ITIMESTEP=grid%itimestep                    ,KPBL=grid%kpbl          &
     690!     &        ,LH=grid%lh              ,LOWLYR=grid%lowlyr      ,P8W=p8w            &
     691!     &        ,PBLH=grid%pblh          ,PI_PHY=pi_phy      ,PSIH=psih          &
     692!     &        ,PSIM=psim          ,P_PHY=p_phy        ,QFX=grid%qfx            &
     693!     &        ,QSFC=grid%qsfc          ,QZ0=grid%qz0                                &
     694!     &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics                   &
     695!     &        ,RHO=rho            ,RQCBLTEN=grid%rqcblten  ,RQIBLTEN=grid%rqiblten  &
     696!     &        ,RQVBLTEN=grid%rqvblten  ,RTHBLTEN=grid%rthblten  ,RUBLTEN=grid%rublten    &
     697!     &        ,RVBLTEN=grid%rvblten    ,SNOW=grid%snow          ,STEPBL=grid%stepbl      &
     698!     &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
     699!     &        ,TSK=grid%tsk            ,T_PHY=t_phy        ,UST=grid%ust            &
     700!     &        ,UZ0=grid%uz0            ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        &
     701!     &        ,VZ0=grid%vz0            ,V_FRAME=grid%v_frame    ,V_PHY=v_phy        &
     702!     &        ,WARM_RAIN=grid%warm_rain                    ,WSPD=wspd          &
     703!     &        ,XICE=grid%xice          ,XLAND=grid%xland        ,Z=grid%em_z                &
     704!     &        ,ZNT=grid%znt                                                    &
     705!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     706!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     707!     &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)          &
     708!     &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)          &
     709!     &        ,KTS=k_start, KTE=min(k_end,kde-1)                          &
     710!     &        ,NUM_TILES=grid%num_tiles                                   &
     711!          ! optional
     712!     &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
     713!     &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
     714!     &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
     715!     &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
     716!     &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
     717!     &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
     718!     &        ,HOL=HOL, MOL=grid%mol, REGIME=REGIME                            &
     719!     &                                                          )
     720!
     721!BENCH_END(pbl_driver_tim)
     722!
     723!! cumulus para.
     724!
     725!          CALL wrf_debug ( 200 , ' call cumulus_driver' )
     726!
     727!BENCH_START(cu_driver_tim)
     728!         CALL cumulus_driver(                                             &
     729!                 ! Prognostic variables
     730!     &              U=u_phy   ,V=v_phy   ,TH=th_phy  ,T=t_phy             &
     731!     &             ,W=grid%em_w_2     ,P=p_phy   ,PI=pi_phy  ,RHO=rho             &
     732!                 ! Other arguments
     733!     &             ,ITIMESTEP=grid%itimestep ,DT=grid%dt      ,DX=grid%dx                &
     734!     &             ,RAINC=grid%rainc   ,RAINCV=grid%raincv   ,NCA=grid%nca               &
     735!     &             ,HTOP=grid%cutop    ,HBOT=grid%cubot      ,KPBL=grid%kpbl             &
     736!     &             ,DZ8W=dz8w     ,P8W=p8w                                &
     737!     &             ,W0AVG=grid%w0avg   ,STEPCU=grid%stepcu                          &
     738!     &             ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland             &
     739!     &             ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w   ,APR_MC=grid%apr_mc           &
     740!     &             ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma     &
     741!     &             ,APR_CAPME=grid%apr_capme          ,APR_CAPMI=grid%apr_capmi     &
     742!     &             ,MASS_FLUX=grid%mass_flux          ,XF_ENS=grid%xf_ens           &
     743!     &             ,PR_ENS=grid%pr_ens ,HT=grid%ht                                  &
     744!     &             ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens         &
     745!     &             ,MAXENS2=config_flags%maxens2                ,MAXENS3=config_flags%maxens3       &
     746!     &             ,CU_ACT_FLAG=cu_act_flag   ,WARM_RAIN=grid%warm_rain        &
     747!     &             ,GSW=grid%gsw                                               &
     748!                 ! Selection flag
     749!     &             ,CU_PHYSICS=config_flags%cu_physics                    &
     750!                 ! Dimension arguments
     751!     &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
     752!     &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
     753!     &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
     754!     &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
     755!     &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
     756!     &             ,NUM_TILES=grid%num_tiles                              &
     757!                 ! Moisture tendency arguments
     758!     &             ,RQVCUTEN=grid%rqvcuten , RQCCUTEN=grid%rqccuten                 &
     759!     &             ,RQSCUTEN=grid%rqscuten , RQICUTEN=grid%rqicuten                 &
     760!     &             ,RQRCUTEN=grid%rqrcuten , RQVBLTEN=grid%rqvblten                 &
     761!     &             ,RQVFTEN=grid%rqvften                                       &
     762!                 ! Other tendency arguments
     763!     &             ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten                 &
     764!     &             ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften                   &
     765!                 ! Moisture tracer arguments
     766!     &             ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV            &
     767!     &             ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC            &
     768!     &             ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR            &
     769!     &             ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI            &
     770!     &             ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS            &
     771!     &             ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG            &
     772!#ifdef WRF_CHEM
     773!     &             ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2                          &
     774!#endif
     775!     &                                                          )
     776!BENCH_END(cu_driver_tim)
     777!
     778!! fdda
     779!
     780!          CALL wrf_debug ( 200 , ' call fddagd_driver' )
     781!
     782!BENCH_START(fdda_driver_tim)
     783!   CALL fddagd_driver(itimestep=grid%itimestep,dt=grid%dt,xtime=grid%XTIME,         &
     784!                  id=grid%id,      &
     785!                  RUNDGDTEN=grid%rundgdten,RVNDGDTEN=grid%rvndgdten,                &
     786!                  RTHNDGDTEN=grid%rthndgdten,RQVNDGDTEN=grid%rqvndgdten,            &
     787!                  RMUNDGDTEN=grid%rmundgdten,                                  &
     788!                  u_ndg_old=fdda3d(ims,kms,jms,P_u_ndg_old),              &
     789!                  v_ndg_old=fdda3d(ims,kms,jms,P_v_ndg_old),              &
     790!                  t_ndg_old=fdda3d(ims,kms,jms,P_t_ndg_old),              &
     791!                  q_ndg_old=fdda3d(ims,kms,jms,P_q_ndg_old),              &
     792!                  mu_ndg_old=fdda2d(ims,1,jms,P_mu_ndg_old),              &
     793!                  u_ndg_new=fdda3d(ims,kms,jms,P_u_ndg_new),              &
     794!                  v_ndg_new=fdda3d(ims,kms,jms,P_v_ndg_new),              &
     795!                  t_ndg_new=fdda3d(ims,kms,jms,P_t_ndg_new),              &
     796!                  q_ndg_new=fdda3d(ims,kms,jms,P_q_ndg_new),              &
     797!                  mu_ndg_new=fdda2d(ims,1,jms,P_mu_ndg_new),              &
     798!                  u3d=grid%em_u_2,v3d=grid%em_v_2,th_phy=th_phy,rho=rho,moist=moist,      &
     799!                  p_phy=p_phy,pi_phy=pi_phy,p8w=p8w,t_phy=t_phy,          &
     800!                  dz8w=dz8w,z=grid%em_z,z_at_w=z_at_w,                            &
     801!                  config_flags=config_flags,dx=grid%DX,n_moist=num_3d_m,  &
     802!                  STEPFG=grid%STEPFG,                                          &
     803!                  pblh=grid%pblh,ht=grid%ht,                                        &
     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!                   ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
     807!                   ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
     808!                   ,KTS=k_start, KTE=min(k_end,kde-1)                     &
     809!                   , num_tiles=grid%num_tiles                             )
     810!BENCH_END(fdda_driver_tim)
    803811
    804812
     
    12591267     ENDIF
    12601268
    1261 # ifdef DM_PARALLEL
    1262 #     include "HALO_OBS_NUDGE.inc"
    1263 #endif
    1264 !***********************************************************************
    1265 ! This section for obs nudging
    1266       !$OMP PARALLEL DO   &
    1267       !$OMP PRIVATE ( ij )
    1268 
    1269       DO ij = 1 , grid%num_tiles
    1270 
    1271          CALL fddaobs_driver (grid%grid_id, model_config_rec%grid_id,  &
    1272                   model_config_rec%parent_id, config_flags%restart,    &
    1273                   grid%obs_nudge_opt,                                  &
    1274                   grid%obs_ipf_errob,                                  &
    1275                   grid%obs_ipf_nudob,                                  &
    1276                   grid%fdda_start,                                     &
    1277                   grid%fdda_end,                                       &
    1278                   grid%obs_nudge_wind,                                 &
    1279                   grid%obs_nudge_temp,                                 &
    1280                   grid%obs_nudge_mois,                                 &
    1281                   grid%obs_nudge_pstr,                                 &
    1282                   grid%obs_coef_wind,                                  &
    1283                   grid%obs_coef_temp,                                  &
    1284                   grid%obs_coef_mois,                                  &
    1285                   grid%obs_coef_pstr,                                  &             
    1286                   grid%obs_rinxy,                                      &
    1287                   grid%obs_rinsig,                                     &
    1288                   grid%obs_twindo,                                     &
    1289                   grid%obs_npfi,                                       &
    1290                   grid%obs_ionf,                                       &
    1291                   grid%obs_idynin,                                     &
    1292                   grid%obs_dtramp,                                     &
    1293                   model_config_rec%cen_lat(1),                         &
    1294                   model_config_rec%cen_lon(1),                         &
    1295                   config_flags%truelat1,                               &
    1296                   config_flags%truelat2,                               &
    1297                   config_flags%map_proj,                               &
    1298                   model_config_rec%i_parent_start,                     &
    1299                   model_config_rec%j_parent_start,                     &
    1300                   grid%parent_grid_ratio,                              &
    1301                   grid%max_dom, grid%itimestep,                        &
    1302                   grid%dt, grid%gmt, grid%julday, grid%fdob,           &
    1303                   grid%max_obs,                                        &
    1304                   model_config_rec%nobs_ndg_vars,                      &
    1305                   model_config_rec%nobs_err_flds,                      &
    1306                   grid%fdob%nstat, grid%fdob%varobs, grid%fdob%errf,   &
    1307                   grid%dx, grid%KPBL,grid%HT,                          &
    1308                   grid%em_mut, grid%em_muu, grid%em_muv,               &
    1309                   grid%msft, grid%msfu, grid%msfv,                     &
    1310                   p_phy, t_tendf, t0,                                  &
    1311                   grid%em_u_2, grid%em_v_2, grid%em_t_2,               &
    1312                   moist(:,:,:,P_QV),                                   &
    1313                   grid%em_pb, grid%p_top, grid%em_p,                   &
    1314                   grid%uratx, grid%vratx, grid%tratx,                  &
    1315                   ru_tendf, rv_tendf,                                  &
    1316                   moist_tend(:,:,:,P_QV), grid%em_obs_savwt,           &
    1317                   ids,ide, jds,jde, kds,kde,                           &
    1318                   ims,ime, jms,jme, kms,kme,                           &
    1319                   grid%i_start(ij), min(grid%i_end(ij),ide-1),         &
    1320                   grid%j_start(ij), min(grid%j_end(ij),jde-1),         &
    1321                   k_start    , min(k_end,kde-1)                     )
    1322 
    1323       ENDDO
    1324 
    1325      !$OMP END PARALLEL DO
    1326 !
    1327 !***********************************************************************
     1269!# ifdef DM_PARALLEL
     1270!#     include "HALO_OBS_NUDGE.inc"
     1271!#endif
     1272!!***********************************************************************
     1273!! This section for obs nudging
     1274!      !$OMP PARALLEL DO   &
     1275!      !$OMP PRIVATE ( ij )
     1276!
     1277!      DO ij = 1 , grid%num_tiles
     1278!
     1279!         CALL fddaobs_driver (grid%grid_id, model_config_rec%grid_id,  &
     1280!                  model_config_rec%parent_id, config_flags%restart,    &
     1281!                  grid%obs_nudge_opt,                                  &
     1282!                  grid%obs_ipf_errob,                                  &
     1283!                  grid%obs_ipf_nudob,                                  &
     1284!                  grid%fdda_start,                                     &
     1285!                  grid%fdda_end,                                       &
     1286!                  grid%obs_nudge_wind,                                 &
     1287!                  grid%obs_nudge_temp,                                 &
     1288!                  grid%obs_nudge_mois,                                 &
     1289!                  grid%obs_nudge_pstr,                                 &
     1290!                  grid%obs_coef_wind,                                  &
     1291!                  grid%obs_coef_temp,                                  &
     1292!                  grid%obs_coef_mois,                                  &
     1293!                  grid%obs_coef_pstr,                                  &             
     1294!                  grid%obs_rinxy,                                      &
     1295!                  grid%obs_rinsig,                                     &
     1296!                  grid%obs_twindo,                                     &
     1297!                  grid%obs_npfi,                                       &
     1298!                  grid%obs_ionf,                                       &
     1299!                  grid%obs_idynin,                                     &
     1300!                  grid%obs_dtramp,                                     &
     1301!                  model_config_rec%cen_lat(1),                         &
     1302!                  model_config_rec%cen_lon(1),                         &
     1303!                  config_flags%truelat1,                               &
     1304!                  config_flags%truelat2,                               &
     1305!                  config_flags%map_proj,                               &
     1306!                  model_config_rec%i_parent_start,                     &
     1307!                  model_config_rec%j_parent_start,                     &
     1308!                  grid%parent_grid_ratio,                              &
     1309!                  grid%max_dom, grid%itimestep,                        &
     1310!                  grid%dt, grid%gmt, grid%julday, grid%fdob,           &
     1311!                  grid%max_obs,                                        &
     1312!                  model_config_rec%nobs_ndg_vars,                      &
     1313!                  model_config_rec%nobs_err_flds,                      &
     1314!                  grid%fdob%nstat, grid%fdob%varobs, grid%fdob%errf,   &
     1315!                  grid%dx, grid%KPBL,grid%HT,                          &
     1316!                  grid%em_mut, grid%em_muu, grid%em_muv,               &
     1317!                  grid%msft, grid%msfu, grid%msfv,                     &
     1318!                  p_phy, t_tendf, t0,                                  &
     1319!                  grid%em_u_2, grid%em_v_2, grid%em_t_2,               &
     1320!                  moist(:,:,:,P_QV),                                   &
     1321!                  grid%em_pb, grid%p_top, grid%em_p,                   &
     1322!                  grid%uratx, grid%vratx, grid%tratx,                  &
     1323!                  ru_tendf, rv_tendf,                                  &
     1324!                  moist_tend(:,:,:,P_QV), grid%em_obs_savwt,           &
     1325!                  ids,ide, jds,jde, kds,kde,                           &
     1326!                  ims,ime, jms,jme, kms,kme,                           &
     1327!                  grid%i_start(ij), min(grid%i_end(ij),ide-1),         &
     1328!                  grid%j_start(ij), min(grid%j_end(ij),jde-1),         &
     1329!                  k_start    , min(k_end,kde-1)                     )
     1330!
     1331!      ENDDO
     1332!
     1333!     !$OMP END PARALLEL DO
     1334!!
     1335!!***********************************************************************
    13281336
    13291337     END IF rk_step_is_one
     
    30913099!</DESCRIPTION>
    30923100
    3093   IF (config_flags%mp_physics /= 0)  then
    3094 
    3095    IF( config_flags%specified .or. config_flags%nested ) THEN
    3096      sz = grid%spec_zone
    3097    ELSE
    3098      sz = 0
    3099    ENDIF
    3100 
    3101    !$OMP PARALLEL DO   &
    3102    !$OMP PRIVATE ( ij, its, ite, jts, jte )
    3103 
    3104    scalar_tile_loop_1a: DO ij = 1 , grid%num_tiles
    3105 
    3106        IF ( config_flags%periodic_x ) THEN
    3107          its = max(grid%i_start(ij),ids)
    3108          ite = min(grid%i_end(ij),ide-1)
    3109        ELSE
    3110          its = max(grid%i_start(ij),ids+sz)
    3111          ite = min(grid%i_end(ij),ide-1-sz)
    3112        ENDIF
    3113        jts = max(grid%j_start(ij),jds+sz)
    3114        jte = min(grid%j_end(ij),jde-1-sz)
    3115 
    3116        CALL wrf_debug ( 200 , ' call moist_physics_prep' )
    3117 BENCH_START(moist_physics_prep_tim)
    3118        CALL moist_physics_prep_em( grid%em_t_2, grid%em_t_1, t0, rho,                &
    3119                                    grid%em_al, grid%em_alb, grid%em_p, p8w, p0, grid%em_pb,          &
    3120                                    grid%em_ph_2, grid%em_phb, th_phy, pi_phy, p_phy, &
    3121                                    grid%em_z, z_at_w, dz8w,                  &
    3122                                    dtm, grid%h_diabatic,                  &
    3123                                    config_flags,grid%em_fnm, grid%em_fnp,            &
    3124                                    ids, ide, jds, jde, kds, kde,     &
    3125                                    ims, ime, jms, jme, kms, kme,     &
    3126                                    its, ite, jts, jte,               &
    3127                                    k_start    , k_end               )
    3128 BENCH_END(moist_physics_prep_tim)
    3129    END DO scalar_tile_loop_1a
    3130    !$OMP END PARALLEL DO
    3131 
    3132        CALL wrf_debug ( 200 , ' call microphysics_driver' )
    3133 
    3134        grid%em_sr = 0.
    3135        specified_bdy = config_flags%specified .OR. config_flags%nested
    3136        channel_bdy = config_flags%specified .AND. config_flags%periodic_x
    3137 
    3138 #if 0
    3139 BENCH_START(microswap_1)
    3140 ! for load balancing; communication to redistribute the points
    3141    IF ( config_flags%mp_physics .EQ. ETAMPNEW ) THEN
    3142 #include "SWAP_ETAMP_NEW.inc"
    3143    ELSE IF ( config_flags%mp_physics .EQ. WSM3SCHEME ) THEN
    3144 #include "SWAP_WSM3.inc"
    3145    ENDIF
    3146 BENCH_END(microswap_1)
    3147 #endif
    3148 
    3149 BENCH_START(micro_driver_tim)
    3150 
    3151        CALL microphysics_driver(                                          &
    3152      &         DT=dtm             ,DX=grid%dx              ,DY=grid%dy              &
    3153      &        ,DZ8W=dz8w          ,F_ICE_PHY=grid%f_ice_phy                    &
    3154      &        ,ITIMESTEP=grid%itimestep                    ,LOWLYR=grid%lowlyr      &
    3155      &        ,P8W=p8w            ,P=p_phy            ,PI_PHY=pi_phy      &
    3156      &        ,RHO=rho            ,SPEC_ZONE=grid%spec_zone                    &
    3157      &        ,SR=grid%em_sr              ,TH=th_phy                              &
    3158      &        ,WARM_RAIN=grid%warm_rain                    ,XLAND=grid%xland        &
    3159      &        ,SPECIFIED=specified_bdy, CHANNEL_SWITCH=channel_bdy        &
    3160      &        ,F_RAIN_PHY=grid%f_rain_phy                                      &
    3161      &        ,F_RIMEF_PHY=grid%f_rimef_phy                                    &
    3162      &        ,MP_PHYSICS=config_flags%mp_physics                         &
    3163      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    3164      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    3165      &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)          &
    3166      &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)          &
    3167      &        ,KTS=k_start, KTE=min(k_end,kde-1)                          &
    3168      &        ,NUM_TILES=grid%num_tiles                                   &
    3169                  ! Optional
    3170      &        , RAINNC=grid%rainnc, RAINNCV=grid%rainncv                            &
    3171      &        , SNOWNC=grid%snownc, SNOWNCV=grid%snowncv                            &
    3172      &        , GRAUPELNC=grid%graupelnc, GRAUPELNCV=grid%graupelncv                &
    3173      &        , W=grid%em_w_2, Z=grid%em_z, HT=grid%ht                                         &
    3174      &        , MP_RESTART_STATE=grid%mp_restart_state                         &
    3175      &        , TBPVS_STATE=grid%tbpvs_state                                   & ! etampnew
    3176      &        , TBPVS0_STATE=grid%tbpvs0_state                                 & ! etampnew
    3177      &        , QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV              &
    3178      &        , QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC              &
    3179      &        , QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR              &
    3180      &        , QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI              &
    3181      &        , QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS              &
    3182      &        , QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG              &
    3183      &        , QNI_CURR=scalar(ims,kms,jms,P_QNI), F_QNI=F_QNI         &
    3184      &        , QT_CURR=scalar(ims,kms,jms,P_QT), F_QT=F_QT             &
    3185                                                                           )
    3186 BENCH_END(micro_driver_tim)
    3187 
    3188 #if 0
    3189 BENCH_START(microswap_2)
    3190 ! for load balancing; communication to redistribute the points
    3191    IF ( config_flags%mp_physics .EQ. ETAMPNEW ) THEN
    3192 #include "SWAP_ETAMP_NEW.inc"
    3193    ELSE IF ( config_flags%mp_physics .EQ. WSM3SCHEME ) THEN
    3194 #include "SWAP_WSM3.inc"
    3195    ENDIF
    3196 BENCH_END(microswap_2)
    3197 #endif
    3198 
    3199        CALL wrf_debug ( 200 , ' call moist_physics_finish' )
    3200 BENCH_START(moist_phys_end_tim)
    3201    !$OMP PARALLEL DO   &
    3202    !$OMP PRIVATE ( ij, its, ite, jts, jte )
    3203 
    3204    scalar_tile_loop_1b: DO ij = 1 , grid%num_tiles
    3205 
    3206        IF ( config_flags%periodic_x ) THEN
    3207          its = max(grid%i_start(ij),ids)
    3208          ite = min(grid%i_end(ij),ide-1)
    3209        ELSE
    3210          its = max(grid%i_start(ij),ids+sz)
    3211          ite = min(grid%i_end(ij),ide-1-sz)
    3212        ENDIF
    3213        jts = max(grid%j_start(ij),jds+sz)
    3214        jte = min(grid%j_end(ij),jde-1-sz)
    3215 
    3216        CALL microphysics_zero_out (                                    &
    3217                      moist , num_moist , config_flags ,              &
    3218                      ids, ide, jds, jde, kds, kde,                     &
    3219                      ims, ime, jms, jme, kms, kme,                     &
    3220                      its, ite, jts, jte,                               &
    3221                      k_start    , k_end                                )
    3222 
    3223        CALL moist_physics_finish_em( grid%em_t_2, grid%em_t_1, t0, grid%em_muts, th_phy,       &
    3224                                      grid%h_diabatic, dtm, config_flags,    &
    3225                                      ids, ide, jds, jde, kds, kde,     &
    3226                                      ims, ime, jms, jme, kms, kme,     &
    3227                                      its, ite, jts, jte,               &
    3228                                      k_start    , k_end               )
    3229 
    3230        CALL calc_p_rho_phi( moist, num_3d_m,                &
    3231                             grid%em_al, grid%em_alb, grid%em_mu_2, grid%em_muts,              &
    3232                             grid%em_ph_2, grid%em_p, grid%em_pb, grid%em_t_2,                 &
    3233                             p0, t0, grid%em_znu, grid%em_dnw, grid%em_rdnw,           &
    3234                             grid%em_rdn, config_flags%non_hydrostatic,             &
    3235                             ids, ide, jds, jde, kds, kde,     &
    3236                             ims, ime, jms, jme, kms, kme,     &
    3237                             its, ite, jts, jte,               &
    3238                             k_start    , k_end               )
    3239 
    3240    END DO scalar_tile_loop_1b
    3241    !$OMP END PARALLEL DO
    3242 BENCH_END(moist_phys_end_tim)
    3243 
    3244   ENDIF
     3101!!!******MARS MARS
     3102!!!******MARS MARS
     3103!!!******MARS MARS
     3104
     3105!  IF (config_flags%mp_physics /= 0)  then
     3106!
     3107!   IF( config_flags%specified .or. config_flags%nested ) THEN
     3108!     sz = grid%spec_zone
     3109!   ELSE
     3110!     sz = 0
     3111!   ENDIF
     3112!
     3113!   !$OMP PARALLEL DO   &
     3114!   !$OMP PRIVATE ( ij, its, ite, jts, jte )
     3115!
     3116!   scalar_tile_loop_1a: DO ij = 1 , grid%num_tiles
     3117!
     3118!       IF ( config_flags%periodic_x ) THEN
     3119!         its = max(grid%i_start(ij),ids)
     3120!         ite = min(grid%i_end(ij),ide-1)
     3121!       ELSE
     3122!         its = max(grid%i_start(ij),ids+sz)
     3123!         ite = min(grid%i_end(ij),ide-1-sz)
     3124!       ENDIF
     3125!       jts = max(grid%j_start(ij),jds+sz)
     3126!       jte = min(grid%j_end(ij),jde-1-sz)
     3127!
     3128!       CALL wrf_debug ( 200 , ' call moist_physics_prep' )
     3129!BENCH_START(moist_physics_prep_tim)
     3130!       CALL moist_physics_prep_em( grid%em_t_2, grid%em_t_1, t0, rho,                &
     3131!                                   grid%em_al, grid%em_alb, grid%em_p, p8w, p0, grid%em_pb,          &
     3132!                                   grid%em_ph_2, grid%em_phb, th_phy, pi_phy, p_phy, &
     3133!                                   grid%em_z, z_at_w, dz8w,                  &
     3134!                                   dtm, grid%h_diabatic,                  &
     3135!                                   config_flags,grid%em_fnm, grid%em_fnp,            &
     3136!                                   ids, ide, jds, jde, kds, kde,     &
     3137!                                   ims, ime, jms, jme, kms, kme,     &
     3138!                                   its, ite, jts, jte,               &
     3139!                                   k_start    , k_end               )
     3140!BENCH_END(moist_physics_prep_tim)
     3141!   END DO scalar_tile_loop_1a
     3142!   !$OMP END PARALLEL DO
     3143!
     3144!       CALL wrf_debug ( 200 , ' call microphysics_driver' )
     3145!
     3146!       grid%em_sr = 0.
     3147!       specified_bdy = config_flags%specified .OR. config_flags%nested
     3148!       channel_bdy = config_flags%specified .AND. config_flags%periodic_x
     3149!
     3150!#if 0
     3151!BENCH_START(microswap_1)
     3152!! for load balancing; communication to redistribute the points
     3153!   IF ( config_flags%mp_physics .EQ. ETAMPNEW ) THEN
     3154!#include "SWAP_ETAMP_NEW.inc"
     3155!   ELSE IF ( config_flags%mp_physics .EQ. WSM3SCHEME ) THEN
     3156!#include "SWAP_WSM3.inc"
     3157!   ENDIF
     3158!BENCH_END(microswap_1)
     3159!#endif
     3160!
     3161!BENCH_START(micro_driver_tim)
     3162!
     3163!       CALL microphysics_driver(                                          &
     3164!     &         DT=dtm             ,DX=grid%dx              ,DY=grid%dy              &
     3165!     &        ,DZ8W=dz8w          ,F_ICE_PHY=grid%f_ice_phy                    &
     3166!     &        ,ITIMESTEP=grid%itimestep                    ,LOWLYR=grid%lowlyr      &
     3167!     &        ,P8W=p8w            ,P=p_phy            ,PI_PHY=pi_phy      &
     3168!     &        ,RHO=rho            ,SPEC_ZONE=grid%spec_zone                    &
     3169!     &        ,SR=grid%em_sr              ,TH=th_phy                              &
     3170!     &        ,WARM_RAIN=grid%warm_rain                    ,XLAND=grid%xland        &
     3171!     &        ,SPECIFIED=specified_bdy, CHANNEL_SWITCH=channel_bdy        &
     3172!     &        ,F_RAIN_PHY=grid%f_rain_phy                                      &
     3173!     &        ,F_RIMEF_PHY=grid%f_rimef_phy                                    &
     3174!     &        ,MP_PHYSICS=config_flags%mp_physics                         &
     3175!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     3176!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     3177!     &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)          &
     3178!     &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)          &
     3179!     &        ,KTS=k_start, KTE=min(k_end,kde-1)                          &
     3180!     &        ,NUM_TILES=grid%num_tiles                                   &
     3181!                 ! Optional
     3182!     &        , RAINNC=grid%rainnc, RAINNCV=grid%rainncv                            &
     3183!     &        , SNOWNC=grid%snownc, SNOWNCV=grid%snowncv                            &
     3184!     &        , GRAUPELNC=grid%graupelnc, GRAUPELNCV=grid%graupelncv                &
     3185!     &        , W=grid%em_w_2, Z=grid%em_z, HT=grid%ht                                         &
     3186!     &        , MP_RESTART_STATE=grid%mp_restart_state                         &
     3187!     &        , TBPVS_STATE=grid%tbpvs_state                                   & ! etampnew
     3188!     &        , TBPVS0_STATE=grid%tbpvs0_state                                 & ! etampnew
     3189!     &        , QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV              &
     3190!     &        , QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC              &
     3191!     &        , QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR              &
     3192!     &        , QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI              &
     3193!     &        , QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS              &
     3194!     &        , QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG              &
     3195!     &        , QNI_CURR=scalar(ims,kms,jms,P_QNI), F_QNI=F_QNI         &
     3196!     &        , QT_CURR=scalar(ims,kms,jms,P_QT), F_QT=F_QT             &
     3197!                                                                          )
     3198!BENCH_END(micro_driver_tim)
     3199!
     3200!#if 0
     3201!BENCH_START(microswap_2)
     3202!! for load balancing; communication to redistribute the points
     3203!   IF ( config_flags%mp_physics .EQ. ETAMPNEW ) THEN
     3204!#include "SWAP_ETAMP_NEW.inc"
     3205!   ELSE IF ( config_flags%mp_physics .EQ. WSM3SCHEME ) THEN
     3206!#include "SWAP_WSM3.inc"
     3207!   ENDIF
     3208!BENCH_END(microswap_2)
     3209!#endif
     3210!
     3211!       CALL wrf_debug ( 200 , ' call moist_physics_finish' )
     3212!BENCH_START(moist_phys_end_tim)
     3213!   !$OMP PARALLEL DO   &
     3214!   !$OMP PRIVATE ( ij, its, ite, jts, jte )
     3215!
     3216!   scalar_tile_loop_1b: DO ij = 1 , grid%num_tiles
     3217!
     3218!       IF ( config_flags%periodic_x ) THEN
     3219!         its = max(grid%i_start(ij),ids)
     3220!         ite = min(grid%i_end(ij),ide-1)
     3221!       ELSE
     3222!         its = max(grid%i_start(ij),ids+sz)
     3223!         ite = min(grid%i_end(ij),ide-1-sz)
     3224!       ENDIF
     3225!       jts = max(grid%j_start(ij),jds+sz)
     3226!       jte = min(grid%j_end(ij),jde-1-sz)
     3227!
     3228!       CALL microphysics_zero_out (                                    &
     3229!                     moist , num_moist , config_flags ,              &
     3230!                     ids, ide, jds, jde, kds, kde,                     &
     3231!                     ims, ime, jms, jme, kms, kme,                     &
     3232!                     its, ite, jts, jte,                               &
     3233!                     k_start    , k_end                                )
     3234!
     3235!       CALL moist_physics_finish_em( grid%em_t_2, grid%em_t_1, t0, grid%em_muts, th_phy,       &
     3236!                                     grid%h_diabatic, dtm, config_flags,    &
     3237!                                     ids, ide, jds, jde, kds, kde,     &
     3238!                                     ims, ime, jms, jme, kms, kme,     &
     3239!                                     its, ite, jts, jte,               &
     3240!                                     k_start    , k_end               )
     3241!
     3242!       CALL calc_p_rho_phi( moist, num_3d_m,                &
     3243!                            grid%em_al, grid%em_alb, grid%em_mu_2, grid%em_muts,              &
     3244!                            grid%em_ph_2, grid%em_p, grid%em_pb, grid%em_t_2,                 &
     3245!                            p0, t0, grid%em_znu, grid%em_dnw, grid%em_rdnw,           &
     3246!                            grid%em_rdn, config_flags%non_hydrostatic,             &
     3247!                            ids, ide, jds, jde, kds, kde,     &
     3248!                            ims, ime, jms, jme, kms, kme,     &
     3249!                            its, ite, jts, jte,               &
     3250!                            k_start    , k_end               )
     3251!
     3252!   END DO scalar_tile_loop_1b
     3253!   !$OMP END PARALLEL DO
     3254!BENCH_END(moist_phys_end_tim)
     3255!
     3256!  ENDIF
    32453257
    32463258
     
    34243436! calculate some model diagnostics.
    34253437
    3426          CALL wrf_debug ( 200 , ' call diagnostic_driver' )
    3427    
    3428          CALL diagnostic_output_calc(                                     &
    3429      &              DPSDT=grid%dpsdt   ,DMUDT=grid%dmudt                  &
    3430      &             ,P_PHY=p_phy   ,PK1M=grid%pk1m                         &
    3431      &             ,MU_2=grid%em_mu_2  ,MU_2M=grid%mu_2m                  &
    3432      &             ,U=grid%em_u_2    ,V=grid%em_v_2                       &
    3433      &             ,RAINCV=grid%raincv    ,RAINNCV=grid%rainncv           &
    3434      &             ,RAINC=grid%rainc    ,RAINNC=grid%rainnc               &
    3435      &             ,HFX=grid%hfx   ,SFCEVP=grid%sfcevp    ,LH=grid%lh     &
    3436      &             ,DT=grid%dt      ,SBW=config_flags%spec_bdy_width      &
    3437      &             ,XTIME=grid%xtime                                      &
    3438                  ! Selection flag
    3439      &             ,DIAG_PRINT=config_flags%diag_print                    &
    3440                  ! Dimension arguments
    3441      &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
    3442      &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
    3443      &             ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe     &
    3444      &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
    3445      &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
    3446      &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
    3447      &             ,NUM_TILES=grid%num_tiles                              &
    3448      &                                                          )
     3438!!!******MARS MARS
     3439!!!******MARS MARS
     3440
     3441!         CALL wrf_debug ( 200 , ' call diagnostic_driver' )
     3442!   
     3443!         CALL diagnostic_output_calc(                                     &
     3444!     &              DPSDT=grid%dpsdt   ,DMUDT=grid%dmudt                  &
     3445!     &             ,P_PHY=p_phy   ,PK1M=grid%pk1m                         &
     3446!     &             ,MU_2=grid%em_mu_2  ,MU_2M=grid%mu_2m                  &
     3447!     &             ,U=grid%em_u_2    ,V=grid%em_v_2                       &
     3448!     &             ,RAINCV=grid%raincv    ,RAINNCV=grid%rainncv           &
     3449!     &             ,RAINC=grid%rainc    ,RAINNC=grid%rainnc               &
     3450!     &             ,HFX=grid%hfx   ,SFCEVP=grid%sfcevp    ,LH=grid%lh     &
     3451!     &             ,DT=grid%dt      ,SBW=config_flags%spec_bdy_width      &
     3452!     &             ,XTIME=grid%xtime                                      &
     3453!                 ! Selection flag
     3454!     &             ,DIAG_PRINT=config_flags%diag_print                    &
     3455!                 ! Dimension arguments
     3456!     &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
     3457!     &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
     3458!     &             ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe     &
     3459!     &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
     3460!     &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
     3461!     &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
     3462!     &             ,NUM_TILES=grid%num_tiles                              &
     3463!     &                                                          )
    34493464
    34503465#ifdef DM_PARALLEL
Note: See TracChangeset for help on using the changeset viewer.