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_LES_MARS
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/mesoscale/LMD_LES_MARS/LMD_LES_MARS_install

    r34 r94  
    3535ln -sf ../modif_mars/module_em.F .
    3636ln -sf ../modif_mars/module_diffusion_em.F .
     37ln -sf ../modif_mars/Makefile_dyn_em Makefile
    3738cd ..
    3839
     
    5051ln -sf ../modif_mars/module_lmd_driver.F .
    5152ln -sf ../modif_mars/module_physics_addtendc.F .
     53ln -sf ../modif_mars/module_physics_init.F .
    5254cd ..
    5355
  • trunk/mesoscale/LMD_LES_MARS/modif_mars/Makefile

    r17 r94  
    77
    88MODULES = \
    9         module_bl_ysu.o \
    10         module_bl_mrf.o \
    11         module_bl_gfs.o \
    12         module_bl_myjpbl.o \
    13         module_bl_acm.o \
    14         module_cu_g3.o \
    15         module_cu_kf.o  \
    16         module_cu_bmj.o \
    17         module_cu_kfeta.o \
    18         module_cu_gd.o \
    19         module_cu_sas.o \
    20         module_mp_kessler.o \
    21         module_mp_lin.o  \
    22         module_mp_wsm3.o \
    23         module_mp_wsm5.o \
    24         module_mp_wsm6.o \
    25         module_mp_etanew.o \
    26         module_mp_thompson.o \
    27         module_mp_gsfcgce.o \
    28         module_mp_morr_two_moment.o \
    29         module_ra_sw.o  \
    30         module_ra_gsfcsw.o \
    31         module_ra_rrtm.o  \
    32         module_ra_cam_support.o \
    33         module_ra_cam.o \
    34         module_ra_gfdleta.o \
    35         module_ra_hs.o  \
    36         module_sf_sfclay.o \
    37         module_sf_gfs.o \
    38         module_sf_slab.o  \
    39         module_sf_noahdrv.o  \
    40         module_sf_noahlsm.o  \
    41         module_sf_urban.o  \
    42         module_sf_lsm_nmm.o  \
    43         module_sf_pxlsm.o \
    44         module_sf_ruclsm.o \
    45         module_sf_sfcdiags.o \
    46         module_sf_myjsfc.o \
    47         module_sf_pxsfclay.o \
    489        module_physics_addtendc.o \
    4910        module_physics_init.o \
    50         module_gfs_machine.o \
    51         module_gfs_funcphys.o \
    52         module_gfs_physcons.o \
    53         module_progtm.o \
    54         module_pbl_driver.o \
    55         module_data_gocart_dust.o \
    56         module_cumulus_driver.o \
    57         module_microphysics_driver.o \
    58         module_microphysics_zero_out.o \
    59         module_mixactivate.o \
    60         module_radiation_driver.o \
    61         module_surface_driver.o \
    62         module_diagnostics.o \
    63         module_fdda_psufddagd.o \
    64         module_fddagd_driver.o  \
    65         module_fddaobs_rtfdda.o \
    66         module_fddaobs_driver.o \
    6711        module_lmd_driver.o
    6812 
     
    9438# DEPENDENCIES : only dependencies after this line (don't remove the word DEPENDENCIES)
    9539
    96 module_bl_myjpbl.o: ../share/module_model_constants.o
    97 
    98 module_bl_gfs.o: module_gfs_machine.o \
    99                  module_gfs_physcons.o
    100 
    101 module_cu_bmj.o: ../share/module_model_constants.o
    102 
    103 module_cu_kf.o:  ../frame/module_wrf_error.o
    104 
    105 module_cu_kfeta.o: ../frame/module_wrf_error.o
    106 
    107 module_cu_gd.o:
    108 
    109 module_gfs_physcons.o: module_gfs_machine.o
    110 
    111 module_gfs_funcphys.o: module_gfs_machine.o \
    112                        module_gfs_physcons.o
    113 
    114 module_cu_sas.o: module_gfs_machine.o \
    115                  module_gfs_funcphys.o \
    116                  module_gfs_physcons.o
    117 
    118 module_ra_gfdleta.o:  ../frame/module_dm.o
    119 
    120 module_ra_rrtm.o: ../frame/module_wrf_error.o \
    121                 ../frame/module_dm.o
    122 
    123 module_ra_cam_support.o: ../frame/module_wrf_error.o
    124 
    125 module_ra_cam.o: module_ra_cam_support.o \
    126                 ../frame/module_wrf_error.o
    127 
    128 module_mp_lin.o : ../frame/module_wrf_error.o
    129 
    130 module_sf_lsm_nmm.o: ../share/module_model_constants.o \
    131                 ../share/module_MPP.o
    132 
    133 module_sf_myjsfc.o: ../share/module_model_constants.o
    134 
    135 module_sf_gfs.o: module_gfs_machine.o \
    136                  module_gfs_funcphys.o \
    137                  module_gfs_physcons.o \
    138                  module_progtm.o
    139 
    140 module_sf_noahdrv.o: module_sf_noahlsm.o module_data_gocart_dust.o \
    141                      module_sf_urban.o
    142 
    143 module_sf_noahlsm.o: ../share/module_model_constants.o
    144 
    145 module_sf_ruclsm.o: ../frame/module_wrf_error.o module_data_gocart_dust.o
    146 
    147 module_sf_pxlsm.o: ../share/module_model_constants.o
    148 
    14940module_physics_addtendc.o: \
    150                 module_cu_kf.o                  \
    151                 module_cu_kfeta.o               \
    15241                ../frame/module_state_description.o \
    15342                ../frame/module_configure.o
    15443
    15544module_physics_init.o : \
    156                 module_ra_rrtm.o                \
    157                 module_ra_cam.o         \
    158                 module_ra_cam_support.o         \
    159                 module_ra_sw.o                  \
    160                 module_ra_gsfcsw.o              \
    161                 module_ra_gfdleta.o             \
    162                 module_ra_hs.o                  \
    163                 module_sf_sfclay.o              \
    164                 module_sf_slab.o                \
    165                 module_sf_myjsfc.o              \
    166                 module_sf_pxsfclay.o            \
    167                 module_sf_noahlsm.o             \
    168                 module_sf_noahdrv.o             \
    169                 module_sf_ruclsm.o              \
    170                 module_sf_pxlsm.o               \
    171                 module_bl_ysu.o                 \
    172                 module_bl_mrf.o                 \
    173                 module_bl_gfs.o                 \
    174                 module_bl_acm.o                 \
    175                 module_bl_myjpbl.o              \
    176                 module_cu_kf.o                  \
    177                 module_cu_g3.o                  \
    178                 module_cu_kfeta.o               \
    179                 module_cu_bmj.o                 \
    180                 module_cu_gd.o                  \
    181                 module_cu_sas.o                 \
    182                 module_mp_wsm3.o                \
    183                 module_mp_wsm5.o                \
    184                 module_mp_wsm6.o                \
    185                 module_mp_etanew.o              \
    186                 module_fdda_psufddagd.o         \
    187                 module_fddaobs_rtfdda.o         \
    188                 module_mp_thompson.o            \
    189                 module_mp_gsfcgce.o             \
    190                 module_mp_morr_two_moment.o     \
    19145                ../frame/module_state_description.o \
    19246                ../frame/module_configure.o \
    19347                ../frame/module_wrf_error.o \
    19448                ../frame/module_dm.o \
    195                 ../share/module_model_constants.o \
    196                 module_sf_lsm_nmm.o     
    197 
    198 module_microphysics_driver.o: \
    199                 module_mixactivate.o \
    200                 module_mp_kessler.o module_mp_lin.o \
    201                 module_mp_wsm3.o module_mp_wsm5.o \
    202                 module_mp_wsm6.o module_mp_etanew.o \
    203                 module_mp_thompson.o            \
    204                 module_mp_gsfcgce.o             \
    205                 module_mp_morr_two_moment.o     \
    206                 ../frame/module_driver_constants.o \
    207                 ../frame/module_state_description.o \
    208                 ../frame/module_wrf_error.o \
    209                 ../frame/module_configure.o \
    21049                ../share/module_model_constants.o
    211 
    212 module_cumulus_driver.o: \
    213                 module_cu_kf.o \
    214                 module_cu_g3.o \
    215                 module_cu_kfeta.o \
    216                 module_cu_bmj.o \
    217                 module_cu_gd.o \
    218                 module_cu_sas.o \
    219                 ../frame/module_state_description.o \
    220                 ../frame/module_configure.o \
    221                 ../share/module_model_constants.o
    222 
    223 module_pbl_driver.o:  \
    224                 module_bl_myjpbl.o \
    225                 module_bl_acm.o \
    226                 module_bl_ysu.o \
    227                 module_bl_mrf.o \
    228                 module_bl_gfs.o \
    229                 ../frame/module_state_description.o \
    230                 ../frame/module_configure.o \
    231                 ../share/module_model_constants.o
    232 
    233 module_data_gocart_dust.o:
    234 
    235 module_mixactivate.o: \
    236                 module_radiation_driver.o
    237 
    238 module_radiation_driver.o: \
    239                 module_ra_sw.o \
    240                 module_ra_gsfcsw.o \
    241                 module_ra_rrtm.o \
    242                 module_ra_cam.o \
    243                 module_ra_gfdleta.o \
    244                 module_ra_hs.o \
    245                 ../frame/module_driver_constants.o \
    246                 ../frame/module_state_description.o \
    247                 ../frame/module_dm.o \
    248                 ../frame/module_domain.o \
    249                 ../frame/module_wrf_error.o \
    250                 ../frame/module_configure.o \
    251                 ../share/module_bc.o  \
    252                 ../share/module_model_constants.o
    253 
    254 module_surface_driver.o: \
    255                 module_sf_sfclay.o              \
    256                 module_sf_slab.o                \
    257                 module_sf_myjsfc.o              \
    258                 module_sf_pxsfclay.o            \
    259                 module_sf_gfs.o                 \
    260                 module_sf_noahdrv.o             \
    261                 module_sf_ruclsm.o              \
    262                 module_sf_pxlsm.o               \
    263                 module_sf_sfcdiags.o            \
    264                 ../frame/module_state_description.o \
    265                 ../frame/module_configure.o \
    266                 ../share/module_model_constants.o  \
    267                 module_sf_lsm_nmm.o
    268 
    269 module_diagnostics.o: ../frame/module_dm.o
    270 
    271 
    272 module_mixactivate.o: \
    273                 module_radiation_driver.o
    274 
    275 module_fddagd_driver.o: \
    276                 ../frame/module_state_description.o \
    277                 ../frame/module_configure.o \
    278                 ../share/module_model_constants.o  \
    279                 module_fdda_psufddagd.o
    280 
    281 module_fddaobs_driver.o: \
    282                 ../frame/module_domain.o \
    283                 ../share/module_bc.o  \
    284                 ../share/module_model_constants.o  \
    285                 module_fddaobs_rtfdda.o
    28650
    28751module_lmd_driver.o: \
  • trunk/mesoscale/LMD_LES_MARS/modif_mars/module_first_rk_step_part1.F

    r92 r94  
    3232    USE module_domain, ONLY : domain
    3333    USE module_configure, ONLY : grid_config_rec_type, model_config_rec
    34     USE module_radiation_driver, ONLY : pre_radiation_driver, radiation_driver
    35     USE module_surface_driver, ONLY : surface_driver
    36     USE module_cumulus_driver, ONLY : cumulus_driver
    37     USE module_pbl_driver, ONLY : pbl_driver
    38     USE module_fddagd_driver, ONLY : fddagd_driver
     34!!!!****MARS MARS
     35!!!!****MARS MARS
     36!    USE module_radiation_driver, ONLY : pre_radiation_driver, radiation_driver
     37!    USE module_surface_driver, ONLY : surface_driver
     38!    USE module_cumulus_driver, ONLY : cumulus_driver
     39!    USE module_pbl_driver, ONLY : pbl_driver
     40!    USE module_fddagd_driver, ONLY : fddagd_driver
    3941    USE module_em, ONLY : init_zero_tendency
    4042!!MARS
     
    172174BENCH_END(phy_prep_tim)
    173175
    174 ! radiation
    175 
    176 ! this driver is only needed to handle non-local shadowing effects
    177       CALL pre_radiation_driver ( grid, config_flags                        &
    178      &        ,itimestep=grid%itimestep, ra_call_offset=grid%ra_call_offset    &
    179      &        ,XLAT=grid%xlat, XLONG=grid%xlong, GMT=grid%gmt                  &
    180      &        ,julian=grid%julian, xtime=grid%xtime, RADT=grid%radt            &
    181      &        ,STEPRA=grid%stepra                                              &
    182      &        ,ht=grid%ht,dx=grid%dx,dy=grid%dy,sina=grid%sina,cosa=grid%cosa  &
    183      &        ,shadowmask=shadowmask,slope_rad=config_flags%slope_rad          &
    184      &        ,topo_shading=config_flags%topo_shading                          &
    185      &        ,shadlen=config_flags%shadlen,ht_shad=grid%ht_shad,ht_loc=ht_loc &
    186      &        ,ht_shad_bxs=grid%ht_shad_bxs, ht_shad_bxe=grid%ht_shad_bxe      &
    187      &        ,ht_shad_bys=grid%ht_shad_bys, ht_shad_bye=grid%ht_shad_bye      &
    188      &        ,nested=config_flags%nested, min_ptchsz=grid%min_ptchsz          &
    189      &        ,spec_bdy_width=config_flags%spec_bdy_width                      &
    190             ! indexes
    191      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    192      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    193      &        ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe          &
    194      &        ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1)          &
    195      &        ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1)          &
    196      &        ,kts=k_start, kte=min(k_end,kde-1)                          &
    197      &        ,num_tiles=grid%num_tiles                                   )
    198 
    199       CALL wrf_debug ( 200 , ' call radiation_driver' )
    200 BENCH_START(rad_driver_tim)
    201 
    202       CALL radiation_driver(                                                  &
    203      &         ACFRCV=grid%acfrcv      ,ACFRST=grid%acfrst      ,ALBEDO=grid%albedo  &
    204      &        ,CFRACH=grid%cfrach      ,CFRACL=grid%cfracl      ,CFRACM=grid%cfracm  &
    205      &        ,CUPPT=grid%cuppt        ,CZMEAN=grid%czmean      ,DT=grid%dt          &
    206      &        ,DZ8W=dz8w               ,EMISS=grid%emiss        ,GLW=grid%glw        &
    207      &        ,GMT=grid%gmt            ,GSW=grid%gsw            ,HBOT=grid%hbot      &
    208      &        ,HTOP=grid%htop          ,HBOTR=grid%hbotr        ,HTOPR=grid%htopr    &
    209      &        ,ICLOUD=config_flags%icloud                                            &
    210      &        ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday      , JULIAN=grid%julian &
    211      &        ,JULYR=grid%julyr        ,LW_PHYSICS=config_flags%ra_lw_physics        &
    212      &        ,NCFRCV=grid%ncfrcv      ,NCFRST=grid%ncfrst      ,NPHS=1              &
    213      &        ,P8W=p8w                 ,P=p_phy                 ,PI=pi_phy           &
    214      &        ,RADT=grid%radt          ,RA_CALL_OFFSET=grid%ra_call_offset           &
    215      &        ,RHO=rho                 ,RLWTOA=grid%rlwtoa                           &
    216      &        ,RSWTOA=grid%rswtoa      ,RTHRATEN=grid%rthraten                       &
    217      &        ,RTHRATENLW=grid%rthratenlw       ,RTHRATENSW=grid%rthratensw          &
    218      &        ,SNOW=grid%snow          ,STEPRA=grid%stepra      ,SWDOWN=grid%swdown  &
    219      &        ,SWDOWNC=grid%swdownc    ,SW_PHYSICS=config_flags%ra_sw_physics        &
    220      &        ,T8W=t8w                 ,T=t_phy                 ,TAUCLDC=grid%taucldc &
    221      &        ,TAUCLDI=grid%taucldi    ,TSK=grid%tsk            ,VEGFRA=grid%vegfra  &
    222      &        ,WARM_RAIN=grid%warm_rain ,XICE=grid%xice         ,XLAND=grid%xland    &
    223      &        ,XLAT=grid%xlat          ,XLONG=grid%xlong        &
    224 !Optional urban
    225      &        ,DECLIN_URB=grid%declin_urb        ,COSZ_URB2D=grid%cosz_urb2d   &
    226      &        ,OMG_URB2D=grid%omg_urb2d                                        &
    227 !
    228      &        ,Z=grid%z                                                   &
    229      &        ,LEVSIZ=grid%levsiz, N_OZMIXM=num_ozmixm                    &
    230      &        ,N_AEROSOLC=num_aerosolc                                    &
    231      &        ,PAERLEV=grid%paerlev                                       &
    232      &        ,CAM_ABS_DIM1=grid%cam_abs_dim1, CAM_ABS_DIM2=grid%cam_abs_dim2 &
    233      &        ,CAM_ABS_FREQ_S=grid%cam_abs_freq_s                         &
    234      &        ,XTIME=grid%xtime                                                &
    235               ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag       &
    236             ! indexes
    237      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    238      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    239      &        ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1)          &
    240      &        ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1)          &
    241      &        ,kts=k_start, kte=min(k_end,kde-1)                          &
    242      &        ,num_tiles=grid%num_tiles                                   &
    243             ! Optional                         
    244      &        , CLDFRA=grid%cldfra                                        &
    245      &        , PB=grid%pb                                                     &
    246      &        , F_ICE_PHY=grid%f_ice_phy,F_RAIN_PHY=grid%f_rain_phy                 &
    247      &        , QV=moist(ims,kms,jms,P_QV), F_QV=F_QV                     &
    248      &        , QC=moist(ims,kms,jms,P_QC), F_QC=F_QC                     &
    249      &        , QR=moist(ims,kms,jms,P_QR), F_QR=F_QR                     &
    250      &        , QI=moist(ims,kms,jms,P_QI), F_QI=F_QI                     &
    251      &        , QS=moist(ims,kms,jms,P_QS), F_QS=F_QS                     &
    252      &        , QG=moist(ims,kms,jms,P_QG), F_QG=F_QG                     &
    253      &        , QNDROP=scalar(ims,kms,jms,P_QNDROP), F_QNDROP=F_QNDROP    &
    254 #ifdef ACFLUX
    255      &        ,ACSWUPT=acswupt    ,ACSWUPTC=acswuptc                      &
    256      &        ,ACSWDNT=acswdnt    ,ACSWDNTC=acswdntc                      &
    257      &        ,ACSWUPB=acswupb    ,ACSWUPBC=acswupbc                      &
    258      &        ,ACSWDNB=acswdnb    ,ACSWDNBC=acswdnbc                      &
    259      &        ,ACLWUPT=aclwupt    ,ACLWUPTC=aclwuptc                      &
    260      &        ,ACLWDNT=aclwdnt    ,ACLWDNTC=aclwdntc                      &
    261      &        ,ACLWUPB=aclwupb    ,ACLWUPBC=aclwupbc                      &
    262      &        ,ACLWDNB=aclwdnb    ,ACLWDNBC=aclwdnbc                      &
    263      &        ,SWUPT=swupt    ,SWUPTC=swuptc                              &
    264      &        ,SWDNT=swdnt    ,SWDNTC=swdntc                              &
    265      &        ,SWUPB=swupb    ,SWUPBC=swupbc                              &
    266      &        ,SWDNB=swdnb    ,SWDNBC=swdnbc                              &
    267      &        ,LWUPT=lwupt    ,LWUPTC=lwuptc                              &
    268      &        ,LWDNT=lwdnt    ,LWDNTC=lwdntc                              &
    269      &        ,LWUPB=lwupb    ,LWUPBC=lwupbc                              &
    270      &        ,LWDNB=lwdnb    ,LWDNBC=lwdnbc                              &
    271 #endif
    272      &        ,LWCF=grid%lwcf                                                  &
    273      &        ,SWCF=grid%swcf                                                  &
    274      &        ,OLR=grid%olr                                                    &
    275      &        ,OZMIXM=grid%ozmixm, PIN=grid%pin                                     &
    276      &        ,M_PS_1=grid%m_ps_1, M_PS_2=grid%m_ps_2, AEROSOLC_1=grid%aerosolc_1        &
    277      &        ,AEROSOLC_2=grid%aerosolc_2, M_HYBI0=grid%m_hybi                      &
    278      &        ,ABSTOT=grid%abstot, ABSNXT=grid%absnxt, EMSTOT=grid%emstot                &
    279 #ifdef WRF_CHEM
    280      &        ,CU_RAD_FEEDBACK=config_flags%cu_rad_feedback                &
    281      &        ,AER_RA_FEEDBACK=config_flags%aer_ra_feedback                &
    282      &        ,QC_ADJUST=grid%GD_CLOUD_B , QI_ADJUST=grid%GD_CLOUD2_B         &
    283      &        ,PM2_5_DRY=grid%pm2_5_dry, PM2_5_WATER=grid%pm2_5_water               &
    284      &        ,PM2_5_DRY_EC=grid%pm2_5_dry_ec                                  &
    285      &        ,TAUAER300=grid%tauaer1, TAUAER400=grid%tauaer2 & ! jcb
    286      &        ,TAUAER600=grid%tauaer3, TAUAER999=grid%tauaer4 & ! jcb
    287      &        ,GAER300=grid%gaer1, GAER400=grid%gaer2, GAER600=grid%gaer3, GAER999=grid%gaer4 & ! jcb
    288      &        ,WAER300=grid%waer1, WAER400=grid%waer2, WAER600=grid%waer3, WAER999=grid%waer4 & ! jcb
    289 #endif
    290      &         ,slope_rad=config_flags%slope_rad,topo_shading=config_flags%topo_shading     &
    291      &         ,shadowmask=shadowmask,ht=grid%ht,dx=grid%dx,dy=grid%dy,sina=grid%sina,cosa=grid%cosa    )
    292 
    293 BENCH_END(rad_driver_tim)
    294 
    295 !********* Surface driver
    296 ! surface
    297 
    298 BENCH_START(surf_driver_tim)
    299 
    300 !-----------------------------------------------------------------
    301 ! urban related variable are added to arguments of surface_driver
    302 !-----------------------------------------------------------------
    303       num_roof_layers = grid%num_soil_layers !urban
    304       num_wall_layers = grid%num_soil_layers !urban
    305       num_road_layers = grid%num_soil_layers !urban
    306       CALL nl_get_iswater(grid%id, iswater)
    307 
    308       CALL wrf_debug ( 200 , ' call surface_driver' )
    309 
    310       CALL surface_driver(                                                &
    311      &         ACSNOM=grid%acsnom      ,ACSNOW=grid%acsnow      ,AKHS=grid%akhs          &
    312      &        ,AKMS=grid%akms          ,ALBBCK=grid%albbck      ,ALBEDO=grid%albedo      &
    313      &        ,EMBCK=grid%embck                                                          &
    314      &        ,BR=br              ,CANWAT=grid%canwat      ,CHKLOWQ=chklowq    &
    315      &        ,CT=grid%ct              ,DT=grid%dt         ,DX=grid%dx         &
    316      &        ,DZ8W=dz8w          ,DZS=grid%dzs            ,FLHC=grid%flhc          &
    317      &        ,FLQC=grid%flqc          ,GLW=grid%glw            ,GRDFLX=grid%grdflx      &
    318      &        ,GSW=grid%gsw    ,SWDOWN=grid%swdown        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx              &
    319      &        ,HT=grid%ht              ,IFSNOW=config_flags%ifsnow      ,ISFFLX=config_flags%isfflx      &
    320      &        ,ISLTYP=grid%isltyp      ,ITIMESTEP=grid%itimestep                    &
    321      &        ,IVGTYP=grid%ivgtyp      ,LH=grid%lh              ,LOWLYR=grid%lowlyr      &
    322      &        ,MAVAIL=grid%mavail      ,NUM_SOIL_LAYERS=config_flags%num_soil_layers        &
    323      &        ,P8W=p8w            ,PBLH=grid%pblh          ,PI_PHY=pi_phy      &
    324      &        ,PSFC=grid%psfc          ,PSHLTR=grid%pshltr      ,PSIH=psih          &
    325      &        ,BLDT=grid%bldt     ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag  &
    326      &        ,PSIM=psim          ,P_PHY=p_phy        ,Q10=grid%q10            &
    327      &        ,Q2=grid%q2              ,QFX=grid%qfx            ,QSFC=grid%qsfc          &
    328      &        ,QSHLTR=grid%qshltr      ,QZ0=grid%qz0            ,RAINCV=grid%raincv      &
    329      &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics            ,RHO=rho            &
    330      &        ,RMOL=grid%rmol          ,SFCEVP=grid%sfcevp      ,SFCEXC=grid%sfcexc      &
    331      &        ,SFCRUNOFF=grid%sfcrunoff                                        &
    332      &        ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics                        &
    333      &        ,SF_SURFACE_PHYSICS=config_flags%sf_surface_physics  ,SH2O=grid%sh2o          &
    334      &        ,SHDMAX=grid%shdmax      ,SHDMIN=grid%shdmin      ,SMOIS=grid%smois        &
    335      &        ,SMSTAV=grid%smstav      ,SMSTOT=grid%smstot      ,SNOALB=grid%snoalb      &
    336      &        ,SNOW=grid%snow          ,SNOWC=grid%snowc        ,SNOWH=grid%snowh        &
    337      &        ,SST=grid%sst            ,SST_UPDATE=grid%sst_update                  &
    338      &        ,STEPBL=grid%stepbl      ,TH10=grid%th10          ,TH2=grid%th2            &
    339      &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
    340      &        ,TMN=grid%tmn            ,TSHLTR=grid%tshltr      ,TSK=grid%tsk            &
    341      &        ,TSLB=grid%tslb          ,T_PHY=t_phy        ,U10=grid%u10            &
    342      &        ,URATX=grid%uratx        ,VRATX=grid%vratx   ,TRATX=grid%tratx        &
    343      &        ,UDRUNOFF=grid%udrunoff  ,UST=grid%ust       ,UZ0=grid%uz0            &
    344      &        ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        ,V10=grid%v10            &
    345      &        ,VEGFRA=grid%vegfra      ,VZ0=grid%vz0       ,V_FRAME=grid%v_frame    &
    346      &        ,V_PHY=v_phy             ,WARM_RAIN=grid%warm_rain                    &
    347      &        ,WSPD=wspd               ,XICE=grid%xice     ,XLAND=grid%xland        &
    348      &        ,Z0=grid%z0              ,Z=grid%z        ,ZNT=grid%znt            &
    349      &        ,ZS=grid%zs              ,XICEM=grid%xicem   ,ISICE=grid%landuse_isice&
    350      &        ,USTM=grid%ustm          ,CK=grid%ck         ,CKA=grid%cka            &
    351      &                                 ,CD=grid%cd         ,CDA=grid%cda            &
    352      &        ,ISFTCFLX=config_flags%isftcflx                                       &
    353      &        ,OMLCALL=config_flags%omlcall ,OML_HML0=config_flags%oml_hml0 ,OML_GAMMA=config_flags%oml_gamma &
    354      &        ,TML=grid%tml, T0ML=grid%t0ml, HML=grid%hml, H0ML=grid%h0ml, HUML=grid%huml, HVML=grid%hvml, F=grid%f &
    355      &        ,ISWATER=iswater &
    356      &        ,DECLIN_URB=grid%declin_urb  ,COSZ_URB2D=grid%cosz_urb2d    & !I urban
    357      &        ,OMG_URB2D=grid%omg_urb2d    ,xlat_urb2d=grid%XLAT          & !I urban
    358      &        ,NUM_ROOF_LAYERS=num_roof_layers                            & !I urban
    359      &        ,NUM_WALL_LAYERS=num_wall_layers                            & !I urban
    360      &        ,NUM_ROAD_LAYERS=num_road_layers                            &
    361      &        ,DZR=grid%dzr ,DZB=grid%dzb ,DZG=grid%dzg                   & !I urban
    362      &        ,TR_URB2D=grid%tr_urb2d ,TB_URB2D=grid%tb_urb2d             &
    363      &        ,TG_URB2D=grid%tg_urb2d                                     & !H urban
    364      &        ,TC_URB2D=grid%tc_urb2d ,QC_URB2D=grid%qc_urb2d             & !H urban
    365      &        ,UC_URB2D=grid%uc_urb2d                                     & !H urban
    366      &        ,XXXR_URB2D=grid%xxxr_urb2d                                 &
    367      &        ,XXXB_URB2D=grid%xxxb_urb2d                                 & !H urban
    368      &        ,XXXG_URB2D=grid%xxxg_urb2d                                 &
    369      &        ,XXXC_URB2D=grid%xxxc_urb2d                                 & !H urban
    370      &        ,TRL_URB3D=grid%trl_urb3d   ,TBL_URB3D=grid%tbl_urb3d       & !H urban
    371      &        ,TGL_URB3D=grid%tgl_urb3d                                   & !H urban
    372      &        ,SH_URB2D=grid%sh_urb2d     ,LH_URB2D=grid%lh_urb2d         &
    373      &        ,G_URB2D=grid%g_urb2d                                       & !H urban
    374      &        ,RN_URB2D=grid%rn_urb2d     , TS_URB2D=grid%ts_urb2d        & !H urban
    375      &        ,FRC_URB2D=grid%frc_urb2d                                   & !H urban
    376      &        ,UTYPE_URB2D=grid%utype_urb2d                               & !H urban
    377      &        ,ucmcall=grid%ucmcall                                       & !H urban
    378            ! P-X LSM Variables
    379      &        ,LANDUSEF=grid%landusef, SOILCTOP=grid%soilctop             &   ! P-X LSM
    380      &        ,SOILCBOT=grid%soilcbot                                     &   ! P-X LSM
    381      &        ,RA=grid%ra, RS=grid%rs, LAI=grid%lai                       &   ! P-X LSM
    382      &        ,NLCAT=grid%num_land_cat,  NSCAT=grid%num_soil_cat          &   ! P-X LSM
    383      &        ,VEGF_PX=grid%vegf_px, SNOWNCV=grid%snowncv                 &   ! P-X LSM
    384      &        ,ANAL_INTERVAL=config_flags%interval_seconds                &   ! P-X LSM
    385      &        ,PXLSM_SMOIS_INIT=config_flags%pxlsm_smois_init             &   ! P-X LSM
    386      &        ,PXLSM_SOIL_NUDGE=config_flags%grid_fdda                    &   ! P-X LSM
    387            ! Optional PX LSM nudging
    388      &        ,t2_ndg_old=fdda2d(ims,1,jms,P_t2_ndg_old)                  &
    389      &        ,q2_ndg_old=fdda2d(ims,1,jms,P_q2_ndg_old)                  &
    390      &        ,t2_ndg_new=fdda2d(ims,1,jms,P_t2_ndg_new)                  &
    391      &        ,q2_ndg_new=fdda2d(ims,1,jms,P_q2_ndg_new)                  &
    392      &        ,sn_ndg_old=fdda2d(ims,1,jms,P_sn_ndg_old)                  &
    393      &        ,sn_ndg_new=fdda2d(ims,1,jms,P_sn_ndg_new)                  &
    394            ! Indexes
    395      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    396      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    397      &        , I_START=grid%i_start,I_END=min(grid%i_end, ide-1)         &
    398      &        , J_START=grid%j_start,J_END=min(grid%j_end, jde-1)         &
    399      &        , KTS=k_start, KTE=min(k_end,kde-1)                         &
    400      &        , NUM_TILES=grid%num_tiles                                  &
    401            ! Optional
    402      &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
    403      &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
    404      &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
    405      &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
    406      &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
    407      &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
    408      &        ,CAPG=grid%capg, EMISS=grid%emiss, HOL=hol,MOL=grid%mol                    &
    409      &        ,T2OBS=grid%t2obs, Q2OBS=grid%q2obs                         &
    410      &        ,RAINBL=grid%rainbl,SR=grid%sr                                              &
    411      &        ,RAINNCV=grid%rainncv,REGIME=grid%regime,T2=grid%t2,THC=grid%thc                &
    412      &        ,QSG=grid%qsg,QVG=grid%qvg,QCG=grid%qcg,SOILT1=grid%soilt1,TSNAV=grid%tsnav          & ! ruc lsm
    413      &        ,SMFR3D=grid%smfr3d,KEEPFR3DFLAG=grid%keepfr3dflag                    & ! ruc lsm
    414      &        ,POTEVP=grid%POTEVP, SNOPCX=grid%SNOPCX, SOILTB=grid%SOILTB                & ! ruc lsm
    415      &                                                              )
    416 BENCH_END(surf_driver_tim)
    417 
    418 !*********
    419 ! pbl
    420 
    421       CALL wrf_debug ( 200 , ' call pbl_driver' )
    422 BENCH_START(pbl_driver_tim)
    423       CALL pbl_driver(                                                    &
    424      &         AKHS=grid%akhs          ,AKMS=grid%akms                              &
    425      &        ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics                 &
    426      &        ,BLDT=grid%bldt, CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
    427      &        ,BR=br              ,CHKLOWQ=chklowq    ,CT=grid%ct         &
    428      &        ,DT=grid%dt              ,DX=grid%dx              ,DZ8W=dz8w          &
    429      &        ,EL_MYJ=grid%el_myj      ,EXCH_H=grid%exch_h      ,GRDFLX=grid%grdflx      &
    430      &        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx            ,HT=grid%ht              &
    431      &        ,ITIMESTEP=grid%itimestep                    ,KPBL=grid%kpbl          &
    432      &        ,LH=grid%lh              ,LOWLYR=grid%lowlyr      ,P8W=p8w            &
    433      &        ,PBLH=grid%pblh          ,PI_PHY=pi_phy      ,PSIH=psih          &
    434      &        ,PSIM=psim          ,P_PHY=p_phy        ,QFX=grid%qfx            &
    435      &        ,QSFC=grid%qsfc          ,QZ0=grid%qz0                                &
    436      &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics                   &
    437      &        ,RHO=rho            ,RQCBLTEN=grid%rqcblten  ,RQIBLTEN=grid%rqiblten  &
    438      &        ,RQVBLTEN=grid%rqvblten  ,RTHBLTEN=grid%rthblten  ,RUBLTEN=grid%rublten    &
    439      &        ,RVBLTEN=grid%rvblten    ,SNOW=grid%snow          ,STEPBL=grid%stepbl      &
    440      &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
    441      &        ,TSK=grid%tsk            ,T_PHY=t_phy        ,UST=grid%ust            &
    442      &        ,U10=grid%u10 ,UZ0=grid%uz0      ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        &
    443      &        ,V10=grid%v10 ,VZ0=grid%vz0      ,V_FRAME=grid%v_frame    ,V_PHY=v_phy        &
    444      &        ,WARM_RAIN=grid%warm_rain                    ,WSPD=wspd          &
    445      &        ,XICE=grid%xice          ,XLAND=grid%xland        ,Z=grid%z                &
    446      &        ,ZNT=grid%znt                                                    &
    447      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
    448      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
    449      &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)          &
    450      &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)          &
    451      &        ,KTS=k_start, KTE=min(k_end,kde-1)                          &
    452      &        ,NUM_TILES=grid%num_tiles                                   &
    453           ! Variables Required by ACM PBL  - jp
    454      &        ,ZNU=grid%znu,ZNW=grid%znw,MUT=grid%mut,P_TOP=grid%p_top    &
    455           ! optional
    456      &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
    457      &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
    458      &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
    459      &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
    460      &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
    461      &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
    462      &        ,HOL=HOL, MOL=grid%mol, REGIME=grid%REGIME                  &
    463      &                                                          )
    464 
    465 BENCH_END(pbl_driver_tim)
    466 
    467 ! cumulus para.
    468 
    469       CALL wrf_debug ( 200 , ' call cumulus_driver' )
    470 
    471 
    472 BENCH_START(cu_driver_tim)
    473       CALL cumulus_driver(grid                                             &
    474                  ! Prognostic variables
    475      &             ,U=u_phy   ,V=v_phy   ,TH=th_phy  ,T=t_phy             &
    476      &             ,W=grid%w_2     ,P=p_phy   ,PI=pi_phy  ,RHO=rho             &
    477                  ! Other arguments
    478      &             ,ITIMESTEP=grid%itimestep ,DT=grid%dt      ,DX=grid%dx                &
    479      &             ,CUDT=grid%cudt,CURR_SECS=curr_secs,ADAPT_STEP_FLAG=adapt_step_flag &
    480      &             ,RAINC=grid%rainc   ,RAINCV=grid%raincv   ,PRATEC=grid%pratec         &
    481      &             , NCA=grid%nca                                         &
    482      &             ,HTOP=grid%cutop     ,HBOT=grid%cubot       ,KPBL=grid%kpbl             &
    483      &             ,DZ8W=dz8w     ,P8W=p8w                                &
    484      &             ,W0AVG=grid%w0avg   ,STEPCU=grid%stepcu                          &
    485      &             ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland             &
    486      &             ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w   ,APR_MC=grid%apr_mc           &
    487      &             ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma     &
    488      &             ,APR_CAPME=grid%apr_capme          ,APR_CAPMI=grid%apr_capmi     &
    489      &             ,MASS_FLUX=grid%mass_flux          ,XF_ENS=grid%xf_ens           &
    490      &             ,PR_ENS=grid%pr_ens ,HT=grid%ht,EDT_OUT=grid%edt_out             &
    491      &             ,imomentum=grid%imomentum,clos_choice=grid%clos_choice       &
    492      &             ,cugd_tten=grid%cugd_tten,cugd_qvten=grid%cugd_qvten,cugd_qcten=grid%cugd_qcten   &
    493      &             ,cugd_ttens=grid%cugd_ttens,cugd_qvtens=grid%cugd_qvtens   &
    494      &             ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens         &
    495      &             ,MAXENS2=config_flags%maxens2                ,MAXENS3=config_flags%maxens3       &
    496      &             ,CU_ACT_FLAG=cu_act_flag   ,WARM_RAIN=grid%warm_rain        &
    497      &             ,GSW=grid%gsw,cugd_avedx=config_flags%cugd_avedx &
    498      &             ,PERIODIC_X=(config_flags%polar .OR. config_flags%periodic_x)  &
    499      &             ,PERIODIC_Y=config_flags%periodic_y  &
    500                  ! Selection flag
    501      &             ,CU_PHYSICS=config_flags%cu_physics                    &
    502                  ! Dimension arguments
    503      &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
    504      &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
    505      &             ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe     &
    506      &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
    507      &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
    508      &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
    509      &             ,NUM_TILES=grid%num_tiles                              &
    510                  ! Moisture tendency arguments
    511      &             ,RQVCUTEN=grid%rqvcuten , RQCCUTEN=grid%rqccuten                 &
    512      &             ,RQSCUTEN=grid%rqscuten , RQICUTEN=grid%rqicuten                 &
    513      &             ,RQRCUTEN=grid%rqrcuten , RQVBLTEN=grid%rqvblten                 &
    514      &             ,RQVFTEN=grid%rqvften                                       &
    515                  ! Other tendency arguments
    516      &             ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten                 &
    517      &             ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften                   &
    518                  ! Moisture tracer arguments
    519      &             ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV            &
    520      &             ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC            &
    521      &             ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR            &
    522      &             ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI            &
    523      &             ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS            &
    524      &             ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG            &
    525 #ifdef WRF_CHEM
    526      &             ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2                          &
    527 #endif
    528      &                                                          )
    529 BENCH_END(cu_driver_tim)
    530 
    531       CALL wrf_debug ( 200 , ' call fddagd_driver' )
    532 
    533 BENCH_START(fdda_driver_tim)
    534       CALL fddagd_driver(itimestep=grid%itimestep,dt=grid%dt,xtime=grid%XTIME,   &
    535                   id=grid%id,      &
    536                   RUNDGDTEN=grid%rundgdten,RVNDGDTEN=grid%rvndgdten,             &
    537                   RTHNDGDTEN=grid%rthndgdten,RQVNDGDTEN=grid%rqvndgdten,         &
    538                   RMUNDGDTEN=grid%rmundgdten,                                    &
    539                   u_ndg_old=fdda3d(ims,kms,jms,P_u_ndg_old),              &
    540                   v_ndg_old=fdda3d(ims,kms,jms,P_v_ndg_old),              &
    541                   t_ndg_old=fdda3d(ims,kms,jms,P_t_ndg_old),              &
    542                   q_ndg_old=fdda3d(ims,kms,jms,P_q_ndg_old),              &
    543                   mu_ndg_old=fdda2d(ims,1,jms,P_mu_ndg_old),              &
    544                   u_ndg_new=fdda3d(ims,kms,jms,P_u_ndg_new),              &
    545                   v_ndg_new=fdda3d(ims,kms,jms,P_v_ndg_new),              &
    546                   t_ndg_new=fdda3d(ims,kms,jms,P_t_ndg_new),              &
    547                   q_ndg_new=fdda3d(ims,kms,jms,P_q_ndg_new),              &
    548                   mu_ndg_new=fdda2d(ims,1,jms,P_mu_ndg_new),              &
    549                   u3d=grid%u_2,v3d=grid%v_2,th_phy=th_phy,rho=rho,moist=moist,      &
    550                   p_phy=p_phy,pi_phy=pi_phy,p8w=p8w,t_phy=t_phy,          &
    551                   dz8w=dz8w,z=grid%z,z_at_w=z_at_w,                            &
    552                   config_flags=config_flags,dx=grid%DX,n_moist=num_moist,  &
    553                   STEPFG=grid%STEPFG,                                          &
    554                   pblh=grid%pblh,ht=grid%ht,                                        &
    555                     IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
    556                    ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
    557                    ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
    558                    ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
    559                    ,KTS=k_start, KTE=min(k_end,kde-1)                     &
    560                    , num_tiles=grid%num_tiles                             )
    561 BENCH_END(fdda_driver_tim)
     176!!!!****MARS MARS
     177!!!!****MARS MARS
     178
     179!! radiation
     180!
     181!! this driver is only needed to handle non-local shadowing effects
     182!      CALL pre_radiation_driver ( grid, config_flags                        &
     183!     &        ,itimestep=grid%itimestep, ra_call_offset=grid%ra_call_offset    &
     184!     &        ,XLAT=grid%xlat, XLONG=grid%xlong, GMT=grid%gmt                  &
     185!     &        ,julian=grid%julian, xtime=grid%xtime, RADT=grid%radt            &
     186!     &        ,STEPRA=grid%stepra                                              &
     187!     &        ,ht=grid%ht,dx=grid%dx,dy=grid%dy,sina=grid%sina,cosa=grid%cosa  &
     188!     &        ,shadowmask=shadowmask,slope_rad=config_flags%slope_rad          &
     189!     &        ,topo_shading=config_flags%topo_shading                          &
     190!     &        ,shadlen=config_flags%shadlen,ht_shad=grid%ht_shad,ht_loc=ht_loc &
     191!     &        ,ht_shad_bxs=grid%ht_shad_bxs, ht_shad_bxe=grid%ht_shad_bxe      &
     192!     &        ,ht_shad_bys=grid%ht_shad_bys, ht_shad_bye=grid%ht_shad_bye      &
     193!     &        ,nested=config_flags%nested, min_ptchsz=grid%min_ptchsz          &
     194!     &        ,spec_bdy_width=config_flags%spec_bdy_width                      &
     195!            ! indexes
     196!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     197!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     198!     &        ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe          &
     199!     &        ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1)          &
     200!     &        ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1)          &
     201!     &        ,kts=k_start, kte=min(k_end,kde-1)                          &
     202!     &        ,num_tiles=grid%num_tiles                                   )
     203!
     204!      CALL wrf_debug ( 200 , ' call radiation_driver' )
     205!BENCH_START(rad_driver_tim)
     206!
     207!      CALL radiation_driver(                                                  &
     208!     &         ACFRCV=grid%acfrcv      ,ACFRST=grid%acfrst      ,ALBEDO=grid%albedo  &
     209!     &        ,CFRACH=grid%cfrach      ,CFRACL=grid%cfracl      ,CFRACM=grid%cfracm  &
     210!     &        ,CUPPT=grid%cuppt        ,CZMEAN=grid%czmean      ,DT=grid%dt          &
     211!     &        ,DZ8W=dz8w               ,EMISS=grid%emiss        ,GLW=grid%glw        &
     212!     &        ,GMT=grid%gmt            ,GSW=grid%gsw            ,HBOT=grid%hbot      &
     213!     &        ,HTOP=grid%htop          ,HBOTR=grid%hbotr        ,HTOPR=grid%htopr    &
     214!     &        ,ICLOUD=config_flags%icloud                                            &
     215!     &        ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday      , JULIAN=grid%julian &
     216!     &        ,JULYR=grid%julyr        ,LW_PHYSICS=config_flags%ra_lw_physics        &
     217!     &        ,NCFRCV=grid%ncfrcv      ,NCFRST=grid%ncfrst      ,NPHS=1              &
     218!     &        ,P8W=p8w                 ,P=p_phy                 ,PI=pi_phy           &
     219!     &        ,RADT=grid%radt          ,RA_CALL_OFFSET=grid%ra_call_offset           &
     220!     &        ,RHO=rho                 ,RLWTOA=grid%rlwtoa                           &
     221!     &        ,RSWTOA=grid%rswtoa      ,RTHRATEN=grid%rthraten                       &
     222!     &        ,RTHRATENLW=grid%rthratenlw       ,RTHRATENSW=grid%rthratensw          &
     223!     &        ,SNOW=grid%snow          ,STEPRA=grid%stepra      ,SWDOWN=grid%swdown  &
     224!     &        ,SWDOWNC=grid%swdownc    ,SW_PHYSICS=config_flags%ra_sw_physics        &
     225!     &        ,T8W=t8w                 ,T=t_phy                 ,TAUCLDC=grid%taucldc &
     226!     &        ,TAUCLDI=grid%taucldi    ,TSK=grid%tsk            ,VEGFRA=grid%vegfra  &
     227!     &        ,WARM_RAIN=grid%warm_rain ,XICE=grid%xice         ,XLAND=grid%xland    &
     228!     &        ,XLAT=grid%xlat          ,XLONG=grid%xlong        &
     229!!Optional urban
     230!     &        ,DECLIN_URB=grid%declin_urb        ,COSZ_URB2D=grid%cosz_urb2d   &
     231!     &        ,OMG_URB2D=grid%omg_urb2d                                        &
     232!!
     233!     &        ,Z=grid%z                                                   &
     234!     &        ,LEVSIZ=grid%levsiz, N_OZMIXM=num_ozmixm                    &
     235!     &        ,N_AEROSOLC=num_aerosolc                                    &
     236!     &        ,PAERLEV=grid%paerlev                                       &
     237!     &        ,CAM_ABS_DIM1=grid%cam_abs_dim1, CAM_ABS_DIM2=grid%cam_abs_dim2 &
     238!     &        ,CAM_ABS_FREQ_S=grid%cam_abs_freq_s                         &
     239!     &        ,XTIME=grid%xtime                                                &
     240!              ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag       &
     241!            ! indexes
     242!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     243!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     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                                   &
     248!            ! Optional                         
     249!     &        , CLDFRA=grid%cldfra                                        &
     250!     &        , PB=grid%pb                                                     &
     251!     &        , F_ICE_PHY=grid%f_ice_phy,F_RAIN_PHY=grid%f_rain_phy                 &
     252!     &        , QV=moist(ims,kms,jms,P_QV), F_QV=F_QV                     &
     253!     &        , QC=moist(ims,kms,jms,P_QC), F_QC=F_QC                     &
     254!     &        , QR=moist(ims,kms,jms,P_QR), F_QR=F_QR                     &
     255!     &        , QI=moist(ims,kms,jms,P_QI), F_QI=F_QI                     &
     256!     &        , QS=moist(ims,kms,jms,P_QS), F_QS=F_QS                     &
     257!     &        , QG=moist(ims,kms,jms,P_QG), F_QG=F_QG                     &
     258!     &        , QNDROP=scalar(ims,kms,jms,P_QNDROP), F_QNDROP=F_QNDROP    &
     259!#ifdef ACFLUX
     260!     &        ,ACSWUPT=acswupt    ,ACSWUPTC=acswuptc                      &
     261!     &        ,ACSWDNT=acswdnt    ,ACSWDNTC=acswdntc                      &
     262!     &        ,ACSWUPB=acswupb    ,ACSWUPBC=acswupbc                      &
     263!     &        ,ACSWDNB=acswdnb    ,ACSWDNBC=acswdnbc                      &
     264!     &        ,ACLWUPT=aclwupt    ,ACLWUPTC=aclwuptc                      &
     265!     &        ,ACLWDNT=aclwdnt    ,ACLWDNTC=aclwdntc                      &
     266!     &        ,ACLWUPB=aclwupb    ,ACLWUPBC=aclwupbc                      &
     267!     &        ,ACLWDNB=aclwdnb    ,ACLWDNBC=aclwdnbc                      &
     268!     &        ,SWUPT=swupt    ,SWUPTC=swuptc                              &
     269!     &        ,SWDNT=swdnt    ,SWDNTC=swdntc                              &
     270!     &        ,SWUPB=swupb    ,SWUPBC=swupbc                              &
     271!     &        ,SWDNB=swdnb    ,SWDNBC=swdnbc                              &
     272!     &        ,LWUPT=lwupt    ,LWUPTC=lwuptc                              &
     273!     &        ,LWDNT=lwdnt    ,LWDNTC=lwdntc                              &
     274!     &        ,LWUPB=lwupb    ,LWUPBC=lwupbc                              &
     275!     &        ,LWDNB=lwdnb    ,LWDNBC=lwdnbc                              &
     276!#endif
     277!     &        ,LWCF=grid%lwcf                                                  &
     278!     &        ,SWCF=grid%swcf                                                  &
     279!     &        ,OLR=grid%olr                                                    &
     280!     &        ,OZMIXM=grid%ozmixm, PIN=grid%pin                                     &
     281!     &        ,M_PS_1=grid%m_ps_1, M_PS_2=grid%m_ps_2, AEROSOLC_1=grid%aerosolc_1        &
     282!     &        ,AEROSOLC_2=grid%aerosolc_2, M_HYBI0=grid%m_hybi                      &
     283!     &        ,ABSTOT=grid%abstot, ABSNXT=grid%absnxt, EMSTOT=grid%emstot                &
     284!#ifdef WRF_CHEM
     285!     &        ,CU_RAD_FEEDBACK=config_flags%cu_rad_feedback                &
     286!     &        ,AER_RA_FEEDBACK=config_flags%aer_ra_feedback                &
     287!     &        ,QC_ADJUST=grid%GD_CLOUD_B , QI_ADJUST=grid%GD_CLOUD2_B         &
     288!     &        ,PM2_5_DRY=grid%pm2_5_dry, PM2_5_WATER=grid%pm2_5_water               &
     289!     &        ,PM2_5_DRY_EC=grid%pm2_5_dry_ec                                  &
     290!     &        ,TAUAER300=grid%tauaer1, TAUAER400=grid%tauaer2 & ! jcb
     291!     &        ,TAUAER600=grid%tauaer3, TAUAER999=grid%tauaer4 & ! jcb
     292!     &        ,GAER300=grid%gaer1, GAER400=grid%gaer2, GAER600=grid%gaer3, GAER999=grid%gaer4 & ! jcb
     293!     &        ,WAER300=grid%waer1, WAER400=grid%waer2, WAER600=grid%waer3, WAER999=grid%waer4 & ! jcb
     294!#endif
     295!     &         ,slope_rad=config_flags%slope_rad,topo_shading=config_flags%topo_shading     &
     296!     &         ,shadowmask=shadowmask,ht=grid%ht,dx=grid%dx,dy=grid%dy,sina=grid%sina,cosa=grid%cosa    )
     297!
     298!BENCH_END(rad_driver_tim)
     299!
     300!!********* Surface driver
     301!! surface
     302!
     303!BENCH_START(surf_driver_tim)
     304!
     305!!-----------------------------------------------------------------
     306!! urban related variable are added to arguments of surface_driver
     307!!-----------------------------------------------------------------
     308!      num_roof_layers = grid%num_soil_layers !urban
     309!      num_wall_layers = grid%num_soil_layers !urban
     310!      num_road_layers = grid%num_soil_layers !urban
     311!      CALL nl_get_iswater(grid%id, iswater)
     312!
     313!      CALL wrf_debug ( 200 , ' call surface_driver' )
     314!
     315!      CALL surface_driver(                                                &
     316!     &         ACSNOM=grid%acsnom      ,ACSNOW=grid%acsnow      ,AKHS=grid%akhs          &
     317!     &        ,AKMS=grid%akms          ,ALBBCK=grid%albbck      ,ALBEDO=grid%albedo      &
     318!     &        ,EMBCK=grid%embck                                                          &
     319!     &        ,BR=br              ,CANWAT=grid%canwat      ,CHKLOWQ=chklowq    &
     320!     &        ,CT=grid%ct              ,DT=grid%dt         ,DX=grid%dx         &
     321!     &        ,DZ8W=dz8w          ,DZS=grid%dzs            ,FLHC=grid%flhc          &
     322!     &        ,FLQC=grid%flqc          ,GLW=grid%glw            ,GRDFLX=grid%grdflx      &
     323!     &        ,GSW=grid%gsw    ,SWDOWN=grid%swdown        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx              &
     324!     &        ,HT=grid%ht              ,IFSNOW=config_flags%ifsnow      ,ISFFLX=config_flags%isfflx      &
     325!     &        ,ISLTYP=grid%isltyp      ,ITIMESTEP=grid%itimestep                    &
     326!     &        ,IVGTYP=grid%ivgtyp      ,LH=grid%lh              ,LOWLYR=grid%lowlyr      &
     327!     &        ,MAVAIL=grid%mavail      ,NUM_SOIL_LAYERS=config_flags%num_soil_layers        &
     328!     &        ,P8W=p8w            ,PBLH=grid%pblh          ,PI_PHY=pi_phy      &
     329!     &        ,PSFC=grid%psfc          ,PSHLTR=grid%pshltr      ,PSIH=psih          &
     330!     &        ,BLDT=grid%bldt     ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag  &
     331!     &        ,PSIM=psim          ,P_PHY=p_phy        ,Q10=grid%q10            &
     332!     &        ,Q2=grid%q2              ,QFX=grid%qfx            ,QSFC=grid%qsfc          &
     333!     &        ,QSHLTR=grid%qshltr      ,QZ0=grid%qz0            ,RAINCV=grid%raincv      &
     334!     &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics            ,RHO=rho            &
     335!     &        ,RMOL=grid%rmol          ,SFCEVP=grid%sfcevp      ,SFCEXC=grid%sfcexc      &
     336!     &        ,SFCRUNOFF=grid%sfcrunoff                                        &
     337!     &        ,SF_SFCLAY_PHYSICS=config_flags%sf_sfclay_physics                        &
     338!     &        ,SF_SURFACE_PHYSICS=config_flags%sf_surface_physics  ,SH2O=grid%sh2o          &
     339!     &        ,SHDMAX=grid%shdmax      ,SHDMIN=grid%shdmin      ,SMOIS=grid%smois        &
     340!     &        ,SMSTAV=grid%smstav      ,SMSTOT=grid%smstot      ,SNOALB=grid%snoalb      &
     341!     &        ,SNOW=grid%snow          ,SNOWC=grid%snowc        ,SNOWH=grid%snowh        &
     342!     &        ,SST=grid%sst            ,SST_UPDATE=grid%sst_update                  &
     343!     &        ,STEPBL=grid%stepbl      ,TH10=grid%th10          ,TH2=grid%th2            &
     344!     &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
     345!     &        ,TMN=grid%tmn            ,TSHLTR=grid%tshltr      ,TSK=grid%tsk            &
     346!     &        ,TSLB=grid%tslb          ,T_PHY=t_phy        ,U10=grid%u10            &
     347!     &        ,URATX=grid%uratx        ,VRATX=grid%vratx   ,TRATX=grid%tratx        &
     348!     &        ,UDRUNOFF=grid%udrunoff  ,UST=grid%ust       ,UZ0=grid%uz0            &
     349!     &        ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        ,V10=grid%v10            &
     350!     &        ,VEGFRA=grid%vegfra      ,VZ0=grid%vz0       ,V_FRAME=grid%v_frame    &
     351!     &        ,V_PHY=v_phy             ,WARM_RAIN=grid%warm_rain                    &
     352!     &        ,WSPD=wspd               ,XICE=grid%xice     ,XLAND=grid%xland        &
     353!     &        ,Z0=grid%z0              ,Z=grid%z        ,ZNT=grid%znt            &
     354!     &        ,ZS=grid%zs              ,XICEM=grid%xicem   ,ISICE=grid%landuse_isice&
     355!     &        ,USTM=grid%ustm          ,CK=grid%ck         ,CKA=grid%cka            &
     356!     &                                 ,CD=grid%cd         ,CDA=grid%cda            &
     357!     &        ,ISFTCFLX=config_flags%isftcflx                                       &
     358!     &        ,OMLCALL=config_flags%omlcall ,OML_HML0=config_flags%oml_hml0 ,OML_GAMMA=config_flags%oml_gamma &
     359!     &        ,TML=grid%tml, T0ML=grid%t0ml, HML=grid%hml, H0ML=grid%h0ml, HUML=grid%huml, HVML=grid%hvml, F=grid%f &
     360!     &        ,ISWATER=iswater &
     361!     &        ,DECLIN_URB=grid%declin_urb  ,COSZ_URB2D=grid%cosz_urb2d    & !I urban
     362!     &        ,OMG_URB2D=grid%omg_urb2d    ,xlat_urb2d=grid%XLAT          & !I urban
     363!     &        ,NUM_ROOF_LAYERS=num_roof_layers                            & !I urban
     364!     &        ,NUM_WALL_LAYERS=num_wall_layers                            & !I urban
     365!     &        ,NUM_ROAD_LAYERS=num_road_layers                            &
     366!     &        ,DZR=grid%dzr ,DZB=grid%dzb ,DZG=grid%dzg                   & !I urban
     367!     &        ,TR_URB2D=grid%tr_urb2d ,TB_URB2D=grid%tb_urb2d             &
     368!     &        ,TG_URB2D=grid%tg_urb2d                                     & !H urban
     369!     &        ,TC_URB2D=grid%tc_urb2d ,QC_URB2D=grid%qc_urb2d             & !H urban
     370!     &        ,UC_URB2D=grid%uc_urb2d                                     & !H urban
     371!     &        ,XXXR_URB2D=grid%xxxr_urb2d                                 &
     372!     &        ,XXXB_URB2D=grid%xxxb_urb2d                                 & !H urban
     373!     &        ,XXXG_URB2D=grid%xxxg_urb2d                                 &
     374!     &        ,XXXC_URB2D=grid%xxxc_urb2d                                 & !H urban
     375!     &        ,TRL_URB3D=grid%trl_urb3d   ,TBL_URB3D=grid%tbl_urb3d       & !H urban
     376!     &        ,TGL_URB3D=grid%tgl_urb3d                                   & !H urban
     377!     &        ,SH_URB2D=grid%sh_urb2d     ,LH_URB2D=grid%lh_urb2d         &
     378!     &        ,G_URB2D=grid%g_urb2d                                       & !H urban
     379!     &        ,RN_URB2D=grid%rn_urb2d     , TS_URB2D=grid%ts_urb2d        & !H urban
     380!     &        ,FRC_URB2D=grid%frc_urb2d                                   & !H urban
     381!     &        ,UTYPE_URB2D=grid%utype_urb2d                               & !H urban
     382!     &        ,ucmcall=grid%ucmcall                                       & !H urban
     383!           ! P-X LSM Variables
     384!     &        ,LANDUSEF=grid%landusef, SOILCTOP=grid%soilctop             &   ! P-X LSM
     385!     &        ,SOILCBOT=grid%soilcbot                                     &   ! P-X LSM
     386!     &        ,RA=grid%ra, RS=grid%rs, LAI=grid%lai                       &   ! P-X LSM
     387!     &        ,NLCAT=grid%num_land_cat,  NSCAT=grid%num_soil_cat          &   ! P-X LSM
     388!     &        ,VEGF_PX=grid%vegf_px, SNOWNCV=grid%snowncv                 &   ! P-X LSM
     389!     &        ,ANAL_INTERVAL=config_flags%interval_seconds                &   ! P-X LSM
     390!     &        ,PXLSM_SMOIS_INIT=config_flags%pxlsm_smois_init             &   ! P-X LSM
     391!     &        ,PXLSM_SOIL_NUDGE=config_flags%grid_fdda                    &   ! P-X LSM
     392!           ! Optional PX LSM nudging
     393!     &        ,t2_ndg_old=fdda2d(ims,1,jms,P_t2_ndg_old)                  &
     394!     &        ,q2_ndg_old=fdda2d(ims,1,jms,P_q2_ndg_old)                  &
     395!     &        ,t2_ndg_new=fdda2d(ims,1,jms,P_t2_ndg_new)                  &
     396!     &        ,q2_ndg_new=fdda2d(ims,1,jms,P_q2_ndg_new)                  &
     397!     &        ,sn_ndg_old=fdda2d(ims,1,jms,P_sn_ndg_old)                  &
     398!     &        ,sn_ndg_new=fdda2d(ims,1,jms,P_sn_ndg_new)                  &
     399!           ! Indexes
     400!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     401!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     402!     &        , I_START=grid%i_start,I_END=min(grid%i_end, ide-1)         &
     403!     &        , J_START=grid%j_start,J_END=min(grid%j_end, jde-1)         &
     404!     &        , KTS=k_start, KTE=min(k_end,kde-1)                         &
     405!     &        , NUM_TILES=grid%num_tiles                                  &
     406!           ! Optional
     407!     &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
     408!     &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
     409!     &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
     410!     &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
     411!     &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
     412!     &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
     413!     &        ,CAPG=grid%capg, EMISS=grid%emiss, HOL=hol,MOL=grid%mol                    &
     414!     &        ,T2OBS=grid%t2obs, Q2OBS=grid%q2obs                         &
     415!     &        ,RAINBL=grid%rainbl,SR=grid%sr                                              &
     416!     &        ,RAINNCV=grid%rainncv,REGIME=grid%regime,T2=grid%t2,THC=grid%thc                &
     417!     &        ,QSG=grid%qsg,QVG=grid%qvg,QCG=grid%qcg,SOILT1=grid%soilt1,TSNAV=grid%tsnav          & ! ruc lsm
     418!     &        ,SMFR3D=grid%smfr3d,KEEPFR3DFLAG=grid%keepfr3dflag                    & ! ruc lsm
     419!     &        ,POTEVP=grid%POTEVP, SNOPCX=grid%SNOPCX, SOILTB=grid%SOILTB                & ! ruc lsm
     420!     &                                                              )
     421!BENCH_END(surf_driver_tim)
     422!
     423!!*********
     424!! pbl
     425!
     426!      CALL wrf_debug ( 200 , ' call pbl_driver' )
     427!BENCH_START(pbl_driver_tim)
     428!      CALL pbl_driver(                                                    &
     429!     &         AKHS=grid%akhs          ,AKMS=grid%akms                              &
     430!     &        ,BL_PBL_PHYSICS=config_flags%bl_pbl_physics                 &
     431!     &        ,BLDT=grid%bldt, CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag &
     432!     &        ,BR=br              ,CHKLOWQ=chklowq    ,CT=grid%ct         &
     433!     &        ,DT=grid%dt              ,DX=grid%dx              ,DZ8W=dz8w          &
     434!     &        ,EL_MYJ=grid%el_myj      ,EXCH_H=grid%exch_h      ,GRDFLX=grid%grdflx      &
     435!     &        ,GZ1OZ0=gz1oz0      ,HFX=grid%hfx            ,HT=grid%ht              &
     436!     &        ,ITIMESTEP=grid%itimestep                    ,KPBL=grid%kpbl          &
     437!     &        ,LH=grid%lh              ,LOWLYR=grid%lowlyr      ,P8W=p8w            &
     438!     &        ,PBLH=grid%pblh          ,PI_PHY=pi_phy      ,PSIH=psih          &
     439!     &        ,PSIM=psim          ,P_PHY=p_phy        ,QFX=grid%qfx            &
     440!     &        ,QSFC=grid%qsfc          ,QZ0=grid%qz0                                &
     441!     &        ,RA_LW_PHYSICS=config_flags%ra_lw_physics                   &
     442!     &        ,RHO=rho            ,RQCBLTEN=grid%rqcblten  ,RQIBLTEN=grid%rqiblten  &
     443!     &        ,RQVBLTEN=grid%rqvblten  ,RTHBLTEN=grid%rthblten  ,RUBLTEN=grid%rublten    &
     444!     &        ,RVBLTEN=grid%rvblten    ,SNOW=grid%snow          ,STEPBL=grid%stepbl      &
     445!     &        ,THZ0=grid%thz0          ,TH_PHY=th_phy      ,TKE_MYJ=grid%tke_myj    &
     446!     &        ,TSK=grid%tsk            ,T_PHY=t_phy        ,UST=grid%ust            &
     447!     &        ,U10=grid%u10 ,UZ0=grid%uz0      ,U_FRAME=grid%u_frame    ,U_PHY=u_phy        &
     448!     &        ,V10=grid%v10 ,VZ0=grid%vz0      ,V_FRAME=grid%v_frame    ,V_PHY=v_phy        &
     449!     &        ,WARM_RAIN=grid%warm_rain                    ,WSPD=wspd          &
     450!     &        ,XICE=grid%xice          ,XLAND=grid%xland        ,Z=grid%z                &
     451!     &        ,ZNT=grid%znt                                                    &
     452!     &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde          &
     453!     &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme          &
     454!     &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)          &
     455!     &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)          &
     456!     &        ,KTS=k_start, KTE=min(k_end,kde-1)                          &
     457!     &        ,NUM_TILES=grid%num_tiles                                   &
     458!          ! Variables Required by ACM PBL  - jp
     459!     &        ,ZNU=grid%znu,ZNW=grid%znw,MUT=grid%mut,P_TOP=grid%p_top    &
     460!          ! optional
     461!     &        ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV                 &
     462!     &        ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC                 &
     463!     &        ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR                 &
     464!     &        ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI                 &
     465!     &        ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS                 &
     466!     &        ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG                 &
     467!     &        ,HOL=HOL, MOL=grid%mol, REGIME=grid%REGIME                  &
     468!     &                                                          )
     469!
     470!BENCH_END(pbl_driver_tim)
     471!
     472!! cumulus para.
     473!
     474!      CALL wrf_debug ( 200 , ' call cumulus_driver' )
     475!
     476!
     477!BENCH_START(cu_driver_tim)
     478!      CALL cumulus_driver(grid                                             &
     479!                 ! Prognostic variables
     480!     &             ,U=u_phy   ,V=v_phy   ,TH=th_phy  ,T=t_phy             &
     481!     &             ,W=grid%w_2     ,P=p_phy   ,PI=pi_phy  ,RHO=rho             &
     482!                 ! Other arguments
     483!     &             ,ITIMESTEP=grid%itimestep ,DT=grid%dt      ,DX=grid%dx                &
     484!     &             ,CUDT=grid%cudt,CURR_SECS=curr_secs,ADAPT_STEP_FLAG=adapt_step_flag &
     485!     &             ,RAINC=grid%rainc   ,RAINCV=grid%raincv   ,PRATEC=grid%pratec         &
     486!     &             , NCA=grid%nca                                         &
     487!     &             ,HTOP=grid%cutop     ,HBOT=grid%cubot       ,KPBL=grid%kpbl             &
     488!     &             ,DZ8W=dz8w     ,P8W=p8w                                &
     489!     &             ,W0AVG=grid%w0avg   ,STEPCU=grid%stepcu                          &
     490!     &             ,CLDEFI=grid%cldefi ,LOWLYR=grid%lowlyr ,XLAND=grid%xland             &
     491!     &             ,APR_GR=grid%apr_gr ,APR_W=grid%apr_w   ,APR_MC=grid%apr_mc           &
     492!     &             ,APR_ST=grid%apr_st ,APR_AS=grid%apr_as ,APR_CAPMA=grid%apr_capma     &
     493!     &             ,APR_CAPME=grid%apr_capme          ,APR_CAPMI=grid%apr_capmi     &
     494!     &             ,MASS_FLUX=grid%mass_flux          ,XF_ENS=grid%xf_ens           &
     495!     &             ,PR_ENS=grid%pr_ens ,HT=grid%ht,EDT_OUT=grid%edt_out             &
     496!     &             ,imomentum=grid%imomentum,clos_choice=grid%clos_choice       &
     497!     &             ,cugd_tten=grid%cugd_tten,cugd_qvten=grid%cugd_qvten,cugd_qcten=grid%cugd_qcten   &
     498!     &             ,cugd_ttens=grid%cugd_ttens,cugd_qvtens=grid%cugd_qvtens   &
     499!     &             ,ENSDIM=config_flags%ensdim ,MAXIENS=config_flags%maxiens ,MAXENS=config_flags%maxens         &
     500!     &             ,MAXENS2=config_flags%maxens2                ,MAXENS3=config_flags%maxens3       &
     501!     &             ,CU_ACT_FLAG=cu_act_flag   ,WARM_RAIN=grid%warm_rain        &
     502!     &             ,GSW=grid%gsw,cugd_avedx=config_flags%cugd_avedx &
     503!     &             ,PERIODIC_X=(config_flags%polar .OR. config_flags%periodic_x)  &
     504!     &             ,PERIODIC_Y=config_flags%periodic_y  &
     505!                 ! Selection flag
     506!     &             ,CU_PHYSICS=config_flags%cu_physics                    &
     507!                 ! Dimension arguments
     508!     &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
     509!     &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
     510!     &             ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe     &
     511!     &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
     512!     &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
     513!     &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
     514!     &             ,NUM_TILES=grid%num_tiles                              &
     515!                 ! Moisture tendency arguments
     516!     &             ,RQVCUTEN=grid%rqvcuten , RQCCUTEN=grid%rqccuten                 &
     517!     &             ,RQSCUTEN=grid%rqscuten , RQICUTEN=grid%rqicuten                 &
     518!     &             ,RQRCUTEN=grid%rqrcuten , RQVBLTEN=grid%rqvblten                 &
     519!     &             ,RQVFTEN=grid%rqvften                                       &
     520!                 ! Other tendency arguments
     521!     &             ,RTHRATEN=grid%rthraten , RTHBLTEN=grid%rthblten                 &
     522!     &             ,RTHCUTEN=grid%rthcuten , RTHFTEN=grid%rthften                   &
     523!                 ! Moisture tracer arguments
     524!     &             ,QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV            &
     525!     &             ,QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC            &
     526!     &             ,QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR            &
     527!     &             ,QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI            &
     528!     &             ,QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS            &
     529!     &             ,QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG            &
     530!#ifdef WRF_CHEM
     531!     &             ,GD_CLOUD=grid%GD_CLOUD,GD_CLOUD2=grid%GD_CLOUD2                          &
     532!#endif
     533!     &                                                          )
     534!BENCH_END(cu_driver_tim)
     535!
     536!      CALL wrf_debug ( 200 , ' call fddagd_driver' )
     537!
     538!BENCH_START(fdda_driver_tim)
     539!      CALL fddagd_driver(itimestep=grid%itimestep,dt=grid%dt,xtime=grid%XTIME,   &
     540!                  id=grid%id,      &
     541!                  RUNDGDTEN=grid%rundgdten,RVNDGDTEN=grid%rvndgdten,             &
     542!                  RTHNDGDTEN=grid%rthndgdten,RQVNDGDTEN=grid%rqvndgdten,         &
     543!                  RMUNDGDTEN=grid%rmundgdten,                                    &
     544!                  u_ndg_old=fdda3d(ims,kms,jms,P_u_ndg_old),              &
     545!                  v_ndg_old=fdda3d(ims,kms,jms,P_v_ndg_old),              &
     546!                  t_ndg_old=fdda3d(ims,kms,jms,P_t_ndg_old),              &
     547!                  q_ndg_old=fdda3d(ims,kms,jms,P_q_ndg_old),              &
     548!                  mu_ndg_old=fdda2d(ims,1,jms,P_mu_ndg_old),              &
     549!                  u_ndg_new=fdda3d(ims,kms,jms,P_u_ndg_new),              &
     550!                  v_ndg_new=fdda3d(ims,kms,jms,P_v_ndg_new),              &
     551!                  t_ndg_new=fdda3d(ims,kms,jms,P_t_ndg_new),              &
     552!                  q_ndg_new=fdda3d(ims,kms,jms,P_q_ndg_new),              &
     553!                  mu_ndg_new=fdda2d(ims,1,jms,P_mu_ndg_new),              &
     554!                  u3d=grid%u_2,v3d=grid%v_2,th_phy=th_phy,rho=rho,moist=moist,      &
     555!                  p_phy=p_phy,pi_phy=pi_phy,p8w=p8w,t_phy=t_phy,          &
     556!                  dz8w=dz8w,z=grid%z,z_at_w=z_at_w,                            &
     557!                  config_flags=config_flags,dx=grid%DX,n_moist=num_moist,  &
     558!                  STEPFG=grid%STEPFG,                                          &
     559!                  pblh=grid%pblh,ht=grid%ht,                                        &
     560!                    IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
     561!                   ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
     562!                   ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
     563!                   ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
     564!                   ,KTS=k_start, KTE=min(k_end,kde-1)                     &
     565!                   , num_tiles=grid%num_tiles                             )
     566!BENCH_END(fdda_driver_tim)
    562567
    563568!!****MARS
  • trunk/mesoscale/LMD_LES_MARS/modif_mars/module_first_rk_step_part2.F

    r17 r94  
    3737                                    tke_rhs
    3838    USE module_em, ONLY : calculate_phy_tend
    39     USE module_fddaobs_driver, ONLY : fddaobs_driver
     39!!!!****MARS MARS
     40!    USE module_fddaobs_driver, ONLY : fddaobs_driver
    4041    USE module_bc, ONLY : set_physical_bc3d, set_physical_bc2d
    4142    USE module_physics_addtendc, ONLY : update_phy_ten
     
    540541       ENDIF
    541542
    542        IF ( grid%obs_nudge_opt .EQ. 1 ) THEN
    543 # ifdef DM_PARALLEL
    544 #       include "HALO_OBS_NUDGE.inc"
    545 #endif
    546 !***********************************************************************
    547 ! This section for obs nudging
    548          !$OMP PARALLEL DO   &
    549          !$OMP PRIVATE ( ij )
    550 
    551          DO ij = 1 , grid%num_tiles
    552 
    553            CALL fddaobs_driver (grid%grid_id, model_config_rec%grid_id, &
    554                    model_config_rec%parent_id, config_flags%restart,    &
    555                    grid%obs_nudge_opt,                                  &
    556                    grid%obs_ipf_errob,                                  &
    557                    grid%obs_ipf_nudob,                                  &
    558                    grid%fdda_start,                                     &
    559                    grid%fdda_end,                                       &
    560                    grid%obs_nudge_wind,                                 &
    561                    grid%obs_nudge_temp,                                 &
    562                    grid%obs_nudge_mois,                                 &
    563                    grid%obs_nudge_pstr,                                 &
    564                    grid%obs_coef_wind,                                  &
    565                    grid%obs_coef_temp,                                  &
    566                    grid%obs_coef_mois,                                  &
    567                    grid%obs_coef_pstr,                                  &             
    568                    grid%obs_rinxy,                                      &
    569                    grid%obs_rinsig,                                     &
    570                    grid%obs_npfi,                                       &
    571                    grid%obs_ionf,                                       &
    572                    grid%obs_nobs_prt,                                   &
    573                    grid%obs_idynin,                                     &
    574                    grid%obs_dtramp,                                     &
    575                    model_config_rec%cen_lat(1),                         &
    576                    model_config_rec%cen_lon(1),                         &
    577                    config_flags%truelat1,                               &
    578                    config_flags%truelat2,                               &
    579                    config_flags%map_proj,                               &
    580                    model_config_rec%i_parent_start,                     &
    581                    model_config_rec%j_parent_start,                     &
    582                    grid%parent_grid_ratio,                              &
    583                    grid%max_dom, grid%itimestep,                        &
    584                    grid%dt, grid%gmt, grid%julday, grid%fdob,           &
    585                    grid%max_obs,                                        &
    586                    model_config_rec%nobs_ndg_vars,                      &
    587                    model_config_rec%nobs_err_flds,                      &
    588                    grid%fdob%nstat, grid%fdob%varobs, grid%fdob%errf,   &
    589                    grid%dx, grid%KPBL,grid%HT,                          &
    590                    grid%mut, grid%muu, grid%muv,               &
    591                    grid%msftx, grid%msfty, grid%msfux, grid%msfuy, grid%msfvx, grid%msfvy, &
    592                    p_phy, t_tendf, t0,                                  &
    593                    grid%u_2, grid%v_2, grid%t_2,               &
    594                    moist(ims,kms,jms,P_QV),                                   &
    595                    grid%pb, grid%p_top, grid%p,                   &
    596                    grid%uratx, grid%vratx, grid%tratx,                  &
    597                    ru_tendf, rv_tendf,                                  &
    598                    moist_tend(ims,kms,jms,P_QV), grid%obs_savwt,           &
    599                    ids,ide, jds,jde, kds,kde,                           &
    600                    ims,ime, jms,jme, kms,kme,                           &
    601                    grid%i_start(ij), min(grid%i_end(ij),ide-1),         &
    602                    grid%j_start(ij), min(grid%j_end(ij),jde-1),         &
    603                    k_start    , min(k_end,kde-1)                     )
    604  
    605          ENDDO
    606          !$OMP END PARALLEL DO
    607        ENDIF  ! obs_nudge_opt .eq. 1
     543!!!!****MARS MARS
     544!!!!****MARS MARS
     545
     546!       IF ( grid%obs_nudge_opt .EQ. 1 ) THEN
     547!# ifdef DM_PARALLEL
     548!#       include "HALO_OBS_NUDGE.inc"
     549!#endif
     550!!***********************************************************************
     551!! This section for obs nudging
     552!         !$OMP PARALLEL DO   &
     553!         !$OMP PRIVATE ( ij )
     554!
     555!         DO ij = 1 , grid%num_tiles
     556!
     557!           CALL fddaobs_driver (grid%grid_id, model_config_rec%grid_id, &
     558!                   model_config_rec%parent_id, config_flags%restart,    &
     559!                   grid%obs_nudge_opt,                                  &
     560!                   grid%obs_ipf_errob,                                  &
     561!                   grid%obs_ipf_nudob,                                  &
     562!                   grid%fdda_start,                                     &
     563!                   grid%fdda_end,                                       &
     564!                   grid%obs_nudge_wind,                                 &
     565!                   grid%obs_nudge_temp,                                 &
     566!                   grid%obs_nudge_mois,                                 &
     567!                   grid%obs_nudge_pstr,                                 &
     568!                   grid%obs_coef_wind,                                  &
     569!                   grid%obs_coef_temp,                                  &
     570!                   grid%obs_coef_mois,                                  &
     571!                   grid%obs_coef_pstr,                                  &             
     572!                   grid%obs_rinxy,                                      &
     573!                   grid%obs_rinsig,                                     &
     574!                   grid%obs_npfi,                                       &
     575!                   grid%obs_ionf,                                       &
     576!                   grid%obs_nobs_prt,                                   &
     577!                   grid%obs_idynin,                                     &
     578!                   grid%obs_dtramp,                                     &
     579!                   model_config_rec%cen_lat(1),                         &
     580!                   model_config_rec%cen_lon(1),                         &
     581!                   config_flags%truelat1,                               &
     582!                   config_flags%truelat2,                               &
     583!                   config_flags%map_proj,                               &
     584!                   model_config_rec%i_parent_start,                     &
     585!                   model_config_rec%j_parent_start,                     &
     586!                   grid%parent_grid_ratio,                              &
     587!                   grid%max_dom, grid%itimestep,                        &
     588!                   grid%dt, grid%gmt, grid%julday, grid%fdob,           &
     589!                   grid%max_obs,                                        &
     590!                   model_config_rec%nobs_ndg_vars,                      &
     591!                   model_config_rec%nobs_err_flds,                      &
     592!                   grid%fdob%nstat, grid%fdob%varobs, grid%fdob%errf,   &
     593!                   grid%dx, grid%KPBL,grid%HT,                          &
     594!                   grid%mut, grid%muu, grid%muv,               &
     595!                   grid%msftx, grid%msfty, grid%msfux, grid%msfuy, grid%msfvx, grid%msfvy, &
     596!                   p_phy, t_tendf, t0,                                  &
     597!                   grid%u_2, grid%v_2, grid%t_2,               &
     598!                   moist(ims,kms,jms,P_QV),                                   &
     599!                   grid%pb, grid%p_top, grid%p,                   &
     600!                   grid%uratx, grid%vratx, grid%tratx,                  &
     601!                   ru_tendf, rv_tendf,                                  &
     602!                   moist_tend(ims,kms,jms,P_QV), grid%obs_savwt,           &
     603!                   ids,ide, jds,jde, kds,kde,                           &
     604!                   ims,ime, jms,jme, kms,kme,                           &
     605!                   grid%i_start(ij), min(grid%i_end(ij),ide-1),         &
     606!                   grid%j_start(ij), min(grid%j_end(ij),jde-1),         &
     607!                   k_start    , min(k_end,kde-1)                     )
    608608!
    609 !***********************************************************************
     609!         ENDDO
     610!         !$OMP END PARALLEL DO
     611!       ENDIF  ! obs_nudge_opt .eq. 1
     612!!
     613!!***********************************************************************
    610614
    611615  END SUBROUTINE first_rk_step_part2
  • trunk/mesoscale/LMD_LES_MARS/modif_mars/module_physics_addtendc.F

    r17 r94  
    788788!----------------------------------------------------------------------
    789789   USE module_state_description
    790    USE module_cu_kf
    791    USE module_cu_kfeta
     790!!!******MARS MARS
     791!!!******MARS MARS
     792!   USE module_cu_kf
     793!   USE module_cu_kfeta
    792794!----------------------------------------------------------------------
    793795   IMPLICIT NONE
  • trunk/mesoscale/LMD_LES_MARS/modif_mars/solve_em.F

    r17 r94  
    3232   USE module_diffusion_em
    3333   USE module_polarfft
    34    USE module_microphysics_driver
    35    USE module_microphysics_zero_out
    36    USE module_fddaobs_driver
    37    USE module_diagnostics
     34!!!!****MARS MARS
     35!!!!****MARS MARS
     36!   USE module_microphysics_driver
     37!   USE module_microphysics_zero_out
     38!   USE module_fddaobs_driver
     39!   USE module_diagnostics
    3840#ifdef WRF_CHEM
    3941   USE module_input_chem_data
     
    26382640   ENDIF
    26392641
    2640    IF (config_flags%mp_physics /= 0)  then
    2641 
    2642      !$OMP PARALLEL DO   &
    2643      !$OMP PRIVATE ( ij, its, ite, jts, jte )
    2644 
    2645      scalar_tile_loop_1a: DO ij = 1 , grid%num_tiles
    2646 
    2647        IF ( config_flags%periodic_x ) THEN
    2648          its = max(grid%i_start(ij),ids)
    2649          ite = min(grid%i_end(ij),ide-1)
    2650        ELSE
    2651          its = max(grid%i_start(ij),ids+sz)
    2652          ite = min(grid%i_end(ij),ide-1-sz)
    2653        ENDIF
    2654        jts = max(grid%j_start(ij),jds+sz)
    2655        jte = min(grid%j_end(ij),jde-1-sz)
    2656 
    2657        CALL wrf_debug ( 200 , ' call moist_physics_prep' )
    2658 BENCH_START(moist_physics_prep_tim)
    2659        CALL moist_physics_prep_em( grid%t_2, grid%t_1, t0, rho,                &
    2660                                    grid%al, grid%alb, grid%p, p8w, p0, grid%pb,          &
    2661                                    grid%ph_2, grid%phb, th_phy, pi_phy, p_phy, &
    2662                                    grid%z, z_at_w, dz8w,                  &
    2663                                    dtm, grid%h_diabatic,                  &
    2664                                    config_flags,grid%fnm, grid%fnp,            &
    2665                                    ids, ide, jds, jde, kds, kde,     &
    2666                                    ims, ime, jms, jme, kms, kme,     &
    2667                                    its, ite, jts, jte,               &
    2668                                    k_start    , k_end               )
    2669 BENCH_END(moist_physics_prep_tim)
    2670      END DO scalar_tile_loop_1a
    2671      !$OMP END PARALLEL DO
    2672 
    2673      CALL wrf_debug ( 200 , ' call microphysics_driver' )
    2674 
    2675      grid%sr = 0.
    2676      specified_bdy = config_flags%specified .OR. config_flags%nested
    2677      channel_bdy = config_flags%specified .AND. config_flags%periodic_x
    2678 
    2679 BENCH_START(micro_driver_tim)
    2680 
    2681      CALL microphysics_driver(                                            &
    2682       &         DT=dtm             ,DX=grid%dx              ,DY=grid%dy   &
    2683       &        ,DZ8W=dz8w          ,F_ICE_PHY=grid%f_ice_phy              &
    2684       &        ,ITIMESTEP=grid%itimestep                    ,LOWLYR=grid%lowlyr  &
    2685       &        ,P8W=p8w            ,P=p_phy            ,PI_PHY=pi_phy     &
    2686       &        ,RHO=rho            ,SPEC_ZONE=grid%spec_zone              &
    2687       &        ,SR=grid%sr              ,TH=th_phy                        &
    2688       &        ,WARM_RAIN=grid%warm_rain                                  &
    2689       &        ,T8W=t8w                                                   &
    2690       &        ,CLDFRA=grid%cldfra, EXCH_H=grid%exch_h &
    2691       &        ,NSOURCE=grid%qndropsource                                 &
    2692 #ifdef WRF_CHEM
    2693       &        ,QLSINK=grid%qlsink,CLDFRA_OLD=grid%cldfra_old             &
    2694       &        ,PRECR=grid%precr, PRECI=grid%preci, PRECS=grid%precs, PRECG=grid%precg &
    2695       &        ,CHEM_OPT=config_flags%chem_opt, PROGN=config_flags%progn  &
    2696 #endif
    2697       &        ,XLAND=grid%xland                                          &
    2698       &        ,SPECIFIED=specified_bdy, CHANNEL_SWITCH=channel_bdy       &
    2699       &        ,F_RAIN_PHY=grid%f_rain_phy                                &
    2700       &        ,F_RIMEF_PHY=grid%f_rimef_phy                              &
    2701       &        ,MP_PHYSICS=config_flags%mp_physics                        &
    2702       &        ,ID=grid%id                                                &
    2703       &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde         &
    2704       &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme         &
    2705 #ifdef RUN_ON_GPU
    2706       &        ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe         &
    2707 #endif
    2708       &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)         &
    2709       &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)         &
    2710       &        ,KTS=k_start, KTE=min(k_end,kde-1)                         &
    2711       &        ,NUM_TILES=grid%num_tiles                                  &
    2712       &        ,NAER=grid%naer                                            &
    2713                  ! Optional
    2714       &        , RAINNC=grid%rainnc, RAINNCV=grid%rainncv                 &
    2715       &        , SNOWNC=grid%snownc, SNOWNCV=grid%snowncv                 &
    2716       &        , GRAUPELNC=grid%graupelnc, GRAUPELNCV=grid%graupelncv     &
    2717       &        , W=grid%w_2, Z=grid%z, HT=grid%ht                         &
    2718       &        , MP_RESTART_STATE=grid%mp_restart_state                   &
    2719       &        , TBPVS_STATE=grid%tbpvs_state                             & ! etampnew
    2720       &        , TBPVS0_STATE=grid%tbpvs0_state                           & ! etampnew
    2721       &        , QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV               &
    2722       &        , QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC               &
    2723       &        , QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR               &
    2724       &        , QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI               &
    2725       &        , QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS               &
    2726       &        , QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG               &
    2727       &        , QNDROP_CURR=scalar(ims,kms,jms,P_QNDROP), F_QNDROP=F_QNDROP &
    2728       &        , QNI_CURR=scalar(ims,kms,jms,P_QNI), F_QNI=F_QNI          &
    2729       &        , QT_CURR=scalar(ims,kms,jms,P_QT), F_QT=F_QT              &
    2730       &        , QNS_CURR=scalar(ims,kms,jms,P_QNS), F_QNS=F_QNS          & 
    2731       &        , QNR_CURR=scalar(ims,kms,jms,P_QNR), F_QNR=F_QNR          & 
    2732       &        , QNG_CURR=scalar(ims,kms,jms,P_QNG), F_QNG=F_QNG          & 
    2733       &        , qrcuten=grid%rqrcuten, qscuten=grid%rqscuten             & 
    2734       &        , qicuten=grid%rqicuten,mu=grid%mut                        & 
    2735       &        , HAIL=config_flags%gsfcgce_hail                           & ! for gsfcgce
    2736       &        , ICE2=config_flags%gsfcgce_2ice                           & ! for gsfcgce
    2737                                                                           )
    2738 BENCH_END(micro_driver_tim)
    2739 
    2740 #if 0
    2741 BENCH_START(microswap_2)
    2742 ! for load balancing; communication to redistribute the points
    2743      IF ( config_flags%mp_physics .EQ. ETAMPNEW ) THEN
    2744 #include "SWAP_ETAMP_NEW.inc"
    2745      ELSE IF ( config_flags%mp_physics .EQ. WSM3SCHEME ) THEN
    2746 #include "SWAP_WSM3.inc"
    2747      ENDIF
    2748 BENCH_END(microswap_2)
    2749 #endif
    2750 
    2751      CALL wrf_debug ( 200 , ' call moist_physics_finish' )
    2752 BENCH_START(moist_phys_end_tim)
    2753 
    2754      !$OMP PARALLEL DO   &
    2755      !$OMP PRIVATE ( ij, its, ite, jts, jte, im, ii, jj, kk )
    2756 
    2757      DO ij = 1 , grid%num_tiles
    2758 
    2759        IF ( config_flags%periodic_x ) THEN
    2760          its = max(grid%i_start(ij),ids)
    2761          ite = min(grid%i_end(ij),ide-1)
    2762        ELSE
    2763          its = max(grid%i_start(ij),ids+sz)
    2764          ite = min(grid%i_end(ij),ide-1-sz)
    2765        ENDIF
    2766        jts = max(grid%j_start(ij),jds+sz)
    2767        jte = min(grid%j_end(ij),jde-1-sz)
    2768 
    2769        CALL microphysics_zero_out (                                    &
    2770                       moist , num_moist , config_flags ,                &
    2771                       ids, ide, jds, jde, kds, kde,                     &
    2772                       ims, ime, jms, jme, kms, kme,                     &
    2773                       its, ite, jts, jte,                               &
    2774                       k_start    , k_end                                )
    2775 
    2776 
    2777        CALL moist_physics_finish_em( grid%t_2, grid%t_1, t0, grid%muts, th_phy,       &
    2778                                       grid%h_diabatic, dtm, config_flags,    &
    2779                                       ids, ide, jds, jde, kds, kde,     &
    2780                                       ims, ime, jms, jme, kms, kme,     &
    2781                                       its, ite, jts, jte,               &
    2782                                       k_start    , k_end               )
    2783 
    2784      END DO
    2785      !$OMP END PARALLEL DO
    2786 
    2787    ENDIF  ! microphysics test
     2642!!!!****MARS MARS
     2643!!!!****MARS MARS
     2644
     2645!   IF (config_flags%mp_physics /= 0)  then
     2646!
     2647!     !$OMP PARALLEL DO   &
     2648!     !$OMP PRIVATE ( ij, its, ite, jts, jte )
     2649!
     2650!     scalar_tile_loop_1a: DO ij = 1 , grid%num_tiles
     2651!
     2652!       IF ( config_flags%periodic_x ) THEN
     2653!         its = max(grid%i_start(ij),ids)
     2654!         ite = min(grid%i_end(ij),ide-1)
     2655!       ELSE
     2656!         its = max(grid%i_start(ij),ids+sz)
     2657!         ite = min(grid%i_end(ij),ide-1-sz)
     2658!       ENDIF
     2659!       jts = max(grid%j_start(ij),jds+sz)
     2660!       jte = min(grid%j_end(ij),jde-1-sz)
     2661!
     2662!       CALL wrf_debug ( 200 , ' call moist_physics_prep' )
     2663!BENCH_START(moist_physics_prep_tim)
     2664!       CALL moist_physics_prep_em( grid%t_2, grid%t_1, t0, rho,                &
     2665!                                   grid%al, grid%alb, grid%p, p8w, p0, grid%pb,          &
     2666!                                   grid%ph_2, grid%phb, th_phy, pi_phy, p_phy, &
     2667!                                   grid%z, z_at_w, dz8w,                  &
     2668!                                   dtm, grid%h_diabatic,                  &
     2669!                                   config_flags,grid%fnm, grid%fnp,            &
     2670!                                   ids, ide, jds, jde, kds, kde,     &
     2671!                                   ims, ime, jms, jme, kms, kme,     &
     2672!                                   its, ite, jts, jte,               &
     2673!                                   k_start    , k_end               )
     2674!BENCH_END(moist_physics_prep_tim)
     2675!     END DO scalar_tile_loop_1a
     2676!     !$OMP END PARALLEL DO
     2677!
     2678!     CALL wrf_debug ( 200 , ' call microphysics_driver' )
     2679!
     2680!     grid%sr = 0.
     2681!     specified_bdy = config_flags%specified .OR. config_flags%nested
     2682!     channel_bdy = config_flags%specified .AND. config_flags%periodic_x
     2683!
     2684!BENCH_START(micro_driver_tim)
     2685!
     2686!     CALL microphysics_driver(                                            &
     2687!      &         DT=dtm             ,DX=grid%dx              ,DY=grid%dy   &
     2688!      &        ,DZ8W=dz8w          ,F_ICE_PHY=grid%f_ice_phy              &
     2689!      &        ,ITIMESTEP=grid%itimestep                    ,LOWLYR=grid%lowlyr  &
     2690!      &        ,P8W=p8w            ,P=p_phy            ,PI_PHY=pi_phy     &
     2691!      &        ,RHO=rho            ,SPEC_ZONE=grid%spec_zone              &
     2692!      &        ,SR=grid%sr              ,TH=th_phy                        &
     2693!      &        ,WARM_RAIN=grid%warm_rain                                  &
     2694!      &        ,T8W=t8w                                                   &
     2695!      &        ,CLDFRA=grid%cldfra, EXCH_H=grid%exch_h &
     2696!      &        ,NSOURCE=grid%qndropsource                                 &
     2697!#ifdef WRF_CHEM
     2698!      &        ,QLSINK=grid%qlsink,CLDFRA_OLD=grid%cldfra_old             &
     2699!      &        ,PRECR=grid%precr, PRECI=grid%preci, PRECS=grid%precs, PRECG=grid%precg &
     2700!      &        ,CHEM_OPT=config_flags%chem_opt, PROGN=config_flags%progn  &
     2701!#endif
     2702!      &        ,XLAND=grid%xland                                          &
     2703!      &        ,SPECIFIED=specified_bdy, CHANNEL_SWITCH=channel_bdy       &
     2704!      &        ,F_RAIN_PHY=grid%f_rain_phy                                &
     2705!      &        ,F_RIMEF_PHY=grid%f_rimef_phy                              &
     2706!      &        ,MP_PHYSICS=config_flags%mp_physics                        &
     2707!      &        ,ID=grid%id                                                &
     2708!      &        ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde         &
     2709!      &        ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme         &
     2710!#ifdef RUN_ON_GPU
     2711!      &        ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe         &
     2712!#endif
     2713!      &        ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)         &
     2714!      &        ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)         &
     2715!      &        ,KTS=k_start, KTE=min(k_end,kde-1)                         &
     2716!      &        ,NUM_TILES=grid%num_tiles                                  &
     2717!      &        ,NAER=grid%naer                                            &
     2718!                 ! Optional
     2719!      &        , RAINNC=grid%rainnc, RAINNCV=grid%rainncv                 &
     2720!      &        , SNOWNC=grid%snownc, SNOWNCV=grid%snowncv                 &
     2721!      &        , GRAUPELNC=grid%graupelnc, GRAUPELNCV=grid%graupelncv     &
     2722!      &        , W=grid%w_2, Z=grid%z, HT=grid%ht                         &
     2723!      &        , MP_RESTART_STATE=grid%mp_restart_state                   &
     2724!      &        , TBPVS_STATE=grid%tbpvs_state                             & ! etampnew
     2725!      &        , TBPVS0_STATE=grid%tbpvs0_state                           & ! etampnew
     2726!      &        , QV_CURR=moist(ims,kms,jms,P_QV), F_QV=F_QV               &
     2727!      &        , QC_CURR=moist(ims,kms,jms,P_QC), F_QC=F_QC               &
     2728!      &        , QR_CURR=moist(ims,kms,jms,P_QR), F_QR=F_QR               &
     2729!      &        , QI_CURR=moist(ims,kms,jms,P_QI), F_QI=F_QI               &
     2730!      &        , QS_CURR=moist(ims,kms,jms,P_QS), F_QS=F_QS               &
     2731!      &        , QG_CURR=moist(ims,kms,jms,P_QG), F_QG=F_QG               &
     2732!      &        , QNDROP_CURR=scalar(ims,kms,jms,P_QNDROP), F_QNDROP=F_QNDROP &
     2733!      &        , QNI_CURR=scalar(ims,kms,jms,P_QNI), F_QNI=F_QNI          &
     2734!      &        , QT_CURR=scalar(ims,kms,jms,P_QT), F_QT=F_QT              &
     2735!      &        , QNS_CURR=scalar(ims,kms,jms,P_QNS), F_QNS=F_QNS          & 
     2736!      &        , QNR_CURR=scalar(ims,kms,jms,P_QNR), F_QNR=F_QNR          & 
     2737!      &        , QNG_CURR=scalar(ims,kms,jms,P_QNG), F_QNG=F_QNG          & 
     2738!      &        , qrcuten=grid%rqrcuten, qscuten=grid%rqscuten             & 
     2739!      &        , qicuten=grid%rqicuten,mu=grid%mut                        & 
     2740!      &        , HAIL=config_flags%gsfcgce_hail                           & ! for gsfcgce
     2741!      &        , ICE2=config_flags%gsfcgce_2ice                           & ! for gsfcgce
     2742!                                                                          )
     2743!BENCH_END(micro_driver_tim)
     2744!
     2745!#if 0
     2746!BENCH_START(microswap_2)
     2747!! for load balancing; communication to redistribute the points
     2748!     IF ( config_flags%mp_physics .EQ. ETAMPNEW ) THEN
     2749!#include "SWAP_ETAMP_NEW.inc"
     2750!     ELSE IF ( config_flags%mp_physics .EQ. WSM3SCHEME ) THEN
     2751!#include "SWAP_WSM3.inc"
     2752!     ENDIF
     2753!BENCH_END(microswap_2)
     2754!#endif
     2755!
     2756!     CALL wrf_debug ( 200 , ' call moist_physics_finish' )
     2757!BENCH_START(moist_phys_end_tim)
     2758!
     2759!     !$OMP PARALLEL DO   &
     2760!     !$OMP PRIVATE ( ij, its, ite, jts, jte, im, ii, jj, kk )
     2761!
     2762!     DO ij = 1 , grid%num_tiles
     2763!
     2764!       IF ( config_flags%periodic_x ) THEN
     2765!         its = max(grid%i_start(ij),ids)
     2766!         ite = min(grid%i_end(ij),ide-1)
     2767!       ELSE
     2768!         its = max(grid%i_start(ij),ids+sz)
     2769!         ite = min(grid%i_end(ij),ide-1-sz)
     2770!       ENDIF
     2771!       jts = max(grid%j_start(ij),jds+sz)
     2772!       jte = min(grid%j_end(ij),jde-1-sz)
     2773!
     2774!       CALL microphysics_zero_out (                                    &
     2775!                      moist , num_moist , config_flags ,                &
     2776!                      ids, ide, jds, jde, kds, kde,                     &
     2777!                      ims, ime, jms, jme, kms, kme,                     &
     2778!                      its, ite, jts, jte,                               &
     2779!                      k_start    , k_end                                )
     2780!
     2781!
     2782!       CALL moist_physics_finish_em( grid%t_2, grid%t_1, t0, grid%muts, th_phy,       &
     2783!                                      grid%h_diabatic, dtm, config_flags,    &
     2784!                                      ids, ide, jds, jde, kds, kde,     &
     2785!                                      ims, ime, jms, jme, kms, kme,     &
     2786!                                      its, ite, jts, jte,               &
     2787!                                      k_start    , k_end               )
     2788!
     2789!     END DO
     2790!     !$OMP END PARALLEL DO
     2791!
     2792!   ENDIF  ! microphysics test
    27882793
    27892794!-----------------------------------------------------------
     
    31313136   ENDIF
    31323137
    3133 ! calculate some model diagnostics.
    3134 
    3135    CALL wrf_debug ( 200 , ' call diagnostic_driver' )
    3136    
    3137    CALL diagnostic_output_calc(                                            &
    3138       &              DPSDT=grid%dpsdt   ,DMUDT=grid%dmudt                  &
    3139       &             ,P8W=p8w   ,PK1M=grid%pk1m                             &
    3140       &             ,MU_2=grid%mu_2  ,MU_2M=grid%mu_2m                     &
    3141       &             ,U=grid%u_2    ,V=grid%v_2                             &
    3142       &             ,RAINCV=grid%raincv    ,RAINNCV=grid%rainncv           &
    3143       &             ,RAINC=grid%rainc    ,RAINNC=grid%rainnc               &
    3144       &             ,HFX=grid%hfx   ,SFCEVP=grid%sfcevp    ,LH=grid%lh     &
    3145       &             ,DT=grid%dt      ,SBW=config_flags%spec_bdy_width      &
    3146       &             ,XTIME=grid%xtime                                      &
    3147                   ! Selection flag
    3148       &             ,DIAG_PRINT=config_flags%diag_print                    &
    3149                   ! Dimension arguments
    3150       &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
    3151       &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
    3152       &             ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe     &
    3153       &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
    3154       &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
    3155       &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
    3156       &             ,NUM_TILES=grid%num_tiles                              &
    3157       &                                                          )
     3138!!!!****MARS MARS
     3139!!!!****MARS MARS
     3140
     3141!! calculate some model diagnostics.
     3142!
     3143!   CALL wrf_debug ( 200 , ' call diagnostic_driver' )
     3144!   
     3145!   CALL diagnostic_output_calc(                                            &
     3146!      &              DPSDT=grid%dpsdt   ,DMUDT=grid%dmudt                  &
     3147!      &             ,P8W=p8w   ,PK1M=grid%pk1m                             &
     3148!      &             ,MU_2=grid%mu_2  ,MU_2M=grid%mu_2m                     &
     3149!      &             ,U=grid%u_2    ,V=grid%v_2                             &
     3150!      &             ,RAINCV=grid%raincv    ,RAINNCV=grid%rainncv           &
     3151!      &             ,RAINC=grid%rainc    ,RAINNC=grid%rainnc               &
     3152!      &             ,HFX=grid%hfx   ,SFCEVP=grid%sfcevp    ,LH=grid%lh     &
     3153!      &             ,DT=grid%dt      ,SBW=config_flags%spec_bdy_width      &
     3154!      &             ,XTIME=grid%xtime                                      &
     3155!                  ! Selection flag
     3156!      &             ,DIAG_PRINT=config_flags%diag_print                    &
     3157!                  ! Dimension arguments
     3158!      &             ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde     &
     3159!      &             ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme     &
     3160!      &             ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe     &
     3161!      &             ,I_START=grid%i_start,I_END=min(grid%i_end, ide-1)     &
     3162!      &             ,J_START=grid%j_start,J_END=min(grid%j_end, jde-1)     &
     3163!      &             ,KTS=k_start, KTE=min(k_end,kde-1)                     &
     3164!      &             ,NUM_TILES=grid%num_tiles                              &
     3165!      &                                                          )
    31583166
    31593167#ifdef DM_PARALLEL
Note: See TracChangeset for help on using the changeset viewer.