Changeset 94 for trunk


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
Files:
2 added
12 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
  • trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/Makefile

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

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

    r11 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_cu_kf.o  \
    14         module_cu_bmj.o \
    15         module_cu_kfeta.o \
    16         module_cu_gd.o \
    17         module_cu_sas.o \
    18         module_mp_kessler.o \
    19         module_mp_ncloud5.o \
    20         module_mp_lin.o  \
    21         module_mp_ncloud3.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_ra_sw.o  \
    28         module_ra_gsfcsw.o \
    29         module_ra_rrtm.o  \
    30         module_ra_cam.o  \
    31         module_ra_gfdleta.o \
    32         module_sf_sfclay.o \
    33         module_sf_gfs.o \
    34         module_sf_slab.o  \
    35         module_sf_noahlsm.o  \
    36         module_sf_urban.o  \
    37         module_sf_lsm_nmm.o  \
    38         module_sf_ruclsm.o \
    39         module_sf_sfcdiags.o \
    40         module_sf_myjsfc.o \
    419        module_physics_addtendc.o \
    4210        module_physics_init.o \
    43         module_gfs_machine.o \
    44         module_gfs_funcphys.o \
    45         module_gfs_physcons.o \
    46         module_progtm.o \
    47         module_pbl_driver.o \
    48         module_cumulus_driver.o \
    49         module_microphysics_driver.o \
    50         module_microphysics_zero_out.o \
    51         module_radiation_driver.o \
    52         module_surface_driver.o \
    53         module_diagnostics.o \
    54         module_fdda_psufddagd.o \
    55         module_fddagd_driver.o  \
    56         module_fddaobs_rtfdda.o \
    57         module_fddaobs_driver.o \
    5811        module_lmd_driver.o
    5912 
     
    8639# si ce qui est à droite a changé, on recompile à gauche
    8740
    88 module_bl_myjpbl.o: ../share/module_model_constants.o
    89 
    90 module_bl_gfs.o: module_gfs_machine.o \
    91                  module_gfs_physcons.o
    92 
    93 module_cu_bmj.o: ../share/module_model_constants.o
    94 
    95 module_cu_kf.o:  ../frame/module_wrf_error.o
    96 
    97 module_cu_kfeta.o: ../frame/module_wrf_error.o
    98 
    99 module_cu_gd.o:
    100 
    101 module_gfs_physcons.o: module_gfs_machine.o
    102 
    103 module_gfs_funcphys.o: module_gfs_machine.o \
    104                        module_gfs_physcons.o
    105 
    106 module_cu_sas.o: module_gfs_machine.o \
    107                  module_gfs_funcphys.o \
    108                  module_gfs_physcons.o
    109 
    110 module_ra_gfdleta.o:  ../frame/module_dm.o
    111 
    112 module_ra_rrtm.o: ../frame/module_wrf_error.o \
    113                 ../frame/module_dm.o
    114 
    115 module_ra_cam.o: ../frame/module_wrf_error.o \
    116                 ../frame/module_dm.o
    117 
    118 module_mp_lin.o : ../frame/module_wrf_error.o
    119 
    120 module_sf_lsm_nmm.o: ../share/module_model_constants.o \
    121                 ../share/module_MPP.o
    122 
    123 module_sf_myjsfc.o: ../share/module_model_constants.o
    124 
    125 module_sf_gfs.o: module_gfs_machine.o \
    126                  module_gfs_funcphys.o \
    127                  module_gfs_physcons.o \
    128                  module_progtm.o
    129 
    130 module_sf_noahlsm.o: ../share/module_model_constants.o  \
    131                      module_sf_urban.o
    132 
    133 module_sf_ruclsm.o: ../frame/module_wrf_error.o
    134 
    13541module_physics_addtendc.o: \
    136                 module_cu_kf.o                  \
    137                 module_cu_kfeta.o               \
    13842                ../frame/module_state_description.o \
    13943                ../frame/module_configure.o
    14044
    14145module_physics_init.o : \
    142                 module_ra_rrtm.o                \
    143                 module_ra_cam.o         \
    144                 module_ra_sw.o                  \
    145                 module_ra_gsfcsw.o              \
    146                 module_ra_gfdleta.o             \
    147                 module_sf_sfclay.o              \
    148                 module_sf_slab.o                \
    149                 module_sf_myjsfc.o              \
    150                 module_sf_noahlsm.o             \
    151                 module_sf_ruclsm.o              \
    152                 module_bl_ysu.o                 \
    153                 module_bl_mrf.o                 \
    154                 module_bl_gfs.o                 \
    155                 module_bl_myjpbl.o              \
    156                 module_cu_kf.o                  \
    157                 module_cu_kfeta.o               \
    158                 module_cu_bmj.o                 \
    159                 module_cu_gd.o                  \
    160                 module_cu_sas.o                 \
    161                 module_mp_ncloud3.o             \
    162                 module_mp_ncloud5.o             \
    163                 module_mp_wsm3.o                \
    164                 module_mp_wsm5.o                \
    165                 module_mp_wsm6.o                \
    166                 module_mp_etanew.o              \
    167                 module_fdda_psufddagd.o         \
    168                 module_fddaobs_rtfdda.o         \
    169                 module_mp_thompson.o            \
    17046                ../frame/module_state_description.o \
    17147                ../frame/module_configure.o \
    17248                ../frame/module_wrf_error.o \
    17349                ../frame/module_dm.o \
    174                 ../share/module_model_constants.o \
    175                 module_sf_lsm_nmm.o     
    176 
    177 module_microphysics_driver.o: \
    178                 module_mp_kessler.o module_mp_lin.o \
    179                 module_mp_ncloud3.o module_mp_ncloud5.o \
    180                 module_mp_wsm3.o module_mp_wsm5.o \
    181                 module_mp_wsm6.o module_mp_etanew.o \
    182                 module_mp_thompson.o            \
    183                 ../frame/module_state_description.o \
    184                 ../frame/module_wrf_error.o \
    185                 ../frame/module_configure.o \
    18650                ../share/module_model_constants.o
    187 
    188 module_cumulus_driver.o: \
    189                 module_cu_kf.o \
    190                 module_cu_kfeta.o \
    191                 module_cu_bmj.o \
    192                 module_cu_gd.o \
    193                 module_cu_sas.o \
    194                 ../frame/module_state_description.o \
    195                 ../frame/module_configure.o \
    196                 ../share/module_model_constants.o
    197 
    198 module_pbl_driver.o:  \
    199                 module_bl_myjpbl.o \
    200                 module_bl_ysu.o \
    201                 module_bl_mrf.o \
    202                 module_bl_gfs.o \
    203                 ../frame/module_state_description.o \
    204                 ../frame/module_configure.o \
    205                 ../share/module_model_constants.o
    206 
    207 module_radiation_driver.o: \
    208                 module_ra_sw.o \
    209                 module_ra_gsfcsw.o \
    210                 module_ra_rrtm.o \
    211                 module_ra_cam.o \
    212                 module_ra_gfdleta.o \
    213                 ../frame/module_state_description.o \
    214                 ../frame/module_wrf_error.o \
    215                 ../frame/module_configure.o \
    216                 ../share/module_model_constants.o
    217 
    218 module_surface_driver.o: \
    219                 module_sf_sfclay.o              \
    220                 module_sf_slab.o                \
    221                 module_sf_myjsfc.o              \
    222                 module_sf_gfs.o                 \
    223                 module_sf_noahlsm.o             \
    224                 module_sf_ruclsm.o              \
    225                 module_sf_sfcdiags.o            \
    226                 ../frame/module_state_description.o \
    227                 ../frame/module_configure.o \
    228                 ../share/module_model_constants.o  \
    229                 module_sf_lsm_nmm.o
    230 
    231 module_diagnostics.o: ../frame/module_dm.o
    232 
    233 module_fddagd_driver.o: \
    234                 ../frame/module_state_description.o \
    235                 ../frame/module_configure.o \
    236                 ../share/module_model_constants.o  \
    237                 module_fdda_psufddagd.o
    238 
    239 module_fddaobs_driver.o: \
    240                 ../frame/module_domain.o \
    241                 ../share/module_bc.o  \
    242                 ../share/module_model_constants.o  \
    243                 module_fddaobs_rtfdda.o
    24451
    24552module_lmd_driver.o: \
  • trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F

    r77 r94  
    283283jte = j_end(num_tiles)
    284284!!
    285 IF (flag_LES .eq. .false.) THEN
     285IF (flag_LES .eqv. .false.) THEN
    286286 relax=0
    287287 sponge_top=0               ! another value than 0 triggers instabilities 
     
    292292jps=jts
    293293jpe=jte
    294 IF (flag_LES .eq. .false.) THEN
     294IF (flag_LES .eqv. .false.) THEN
    295295 IF (ips .eq. ids)   ips=its+relax !! IF tests necesary for parallel runs
    296296 IF (ipe .eq. ide-1) ipe=ite-relax
     
    299299ENDIF
    300300kps=kts         !! start at surface
    301 IF (flag_LES .eq. .false.) THEN
     301IF (flag_LES .eqv. .false.) THEN
    302302 kpe=kte-sponge_top
    303303ELSE
  • trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_physics_addtendc.F

    r11 r94  
    648648!----------------------------------------------------------------------
    649649   USE module_state_description
    650    USE module_cu_kf
    651    USE module_cu_kfeta
     650
     651!!!******MARS MARS
     652!!!******MARS MARS
     653!!!******MARS MARS
     654
     655!   USE module_cu_kf
     656!   USE module_cu_kfeta
    652657!----------------------------------------------------------------------
    653658   IMPLICIT NONE
  • trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_physics_init.F

    r11 r94  
    373373                kds,kde,kms,kme,kts,kte)
    374374
    375 !-- initialize physics
    376 !-- ra: radiation
    377 !-- bl: pbl
    378 !-- cu: cumulus
    379 !-- mp: microphysics
    380 
    381    CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to ra_init' )
    382 
    383    CALL ra_init(id,STEPRA,RADT,DT,RTHRATEN,RTHRATENLW,             &
    384                 RTHRATENSW,CLDFRA,EMISS,cen_lat,JULYR,JULDAY,GMT,    &
    385                 levsiz,XLAT,n_ozmixm,                           &
    386                 ozmixm,pin,                                     & ! Optional
    387                 m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,     & ! Optional
    388                 paerlev,n_aerosolc,                             &
    389                 sfull,shalf,pptop,swrad_scat,                   &
    390                 config_flags,restart,                           &
    391                 allowed_to_read, start_of_simulation,           &
    392                 ids, ide, jds, jde, kds, kde,                   &
    393                 ims, ime, jms, jme, kms, kme,                   &
    394                 its, ite, jts, jte, kts, kte                    )
    395 
    396    CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to bl_init' )
    397 
    398    CALL bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN,        &
    399                 RQVBLTEN,RQCBLTEN,RQIBLTEN,TSK,TMN,             &
    400                 config_flags,restart,UST,LOWLYR,TSLB,ZS,DZS,    &
    401                 num_soil_layers,TKE_MYJ,EXCH_H,VEGFRA,          &
    402                 SNOW,SNOWC, CANWAT,SMSTAV,                      &
    403                 SMSTOT, SFCRUNOFF,UDRUNOFF,ACSNOW,ACSNOM,       &
    404                 IVGTYP,ISLTYP,SMOIS,SMFR3D,MAVAIL,              &
    405                 SNOWH,SH2O,FNDSOILW, FNDSNOWH,                  &
    406 #if (NMM_CORE == 1)
    407                 Z0,XLAND,XICE,                                  &
    408 #else
    409                 ZNT,XLAND,XICE,                                 &
    410 #endif
    411                 SFCEVP,GRDFLX,                                  &
    412                 allowed_to_read ,                               &
    413                 DZR, DZB, DZG,                                  & !Optional urban
    414                 TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D,   & !Optional urban
    415                 XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D,    & !Optional urban
    416                 TRL_URB3D, TBL_URB3D, TGL_URB3D,                & !Optional urban
    417                 SH_URB2D, LH_URB2D, G_URB2D, RN_URB2D,          & !Optional urban
    418                 TS_URB2D, FRC_URB2D, UTYPE_URB2D, UCMCALL,      & !Optional urban
    419                 ids, ide, jds, jde, kds, kde,                   &
    420                 ims, ime, jms, jme, kms, kme,                   &
    421                 its, ite, jts, jte, kts, kte                    )
    422 
    423    CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to cu_init' )
    424 
    425    CALL cu_init(STEPCU,CUDT,DT,RTHCUTEN,RQVCUTEN,RQRCUTEN,      &
    426                 RQCCUTEN,RQSCUTEN,RQICUTEN,NCA,RAINC,           &
    427                 RAINCV,W0AVG,config_flags,restart,              &
    428                 CLDEFI,LOWLYR,MASS_FLUX,                        &
    429                 RTHFTEN, RQVFTEN,                               &
    430                 APR_GR,APR_W,APR_MC,APR_ST,APR_AS,              &
    431                 APR_CAPMA,APR_CAPME,APR_CAPMI,                  &
    432                 allowed_to_read, start_of_simulation,           &
    433                 ids, ide, jds, jde, kds, kde,                   &
    434                 ims, ime, jms, jme, kms, kme,                   &
    435                 its, ite, jts, jte, kts, kte                    )
    436 
    437    CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to mp_init' )
    438 
    439    CALL mp_init(RAINNC,config_flags,restart,warm_rain,          &
    440                 adv_moist_cond,                                 &
    441                 MPDT, DT, DX, DY, LOWLYR,                       &
    442                 F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY,               &
    443                 mp_restart_state,tbpvs_state,tbpvs0_state,      &
    444                 allowed_to_read, start_of_simulation,           &
    445                 ids, ide, jds, jde, kds, kde,                   &
    446                 ims, ime, jms, jme, kms, kme,                   &
    447                 its, ite, jts, jte, kts, kte                    )
    448 
    449    write(message,*)'STEPRA,STEPCU,STEPBL',STEPRA,STEPCU,STEPBL
    450    CALL wrf_message( message )
    451 
    452 #if  ( EM_CORE == 1 )
    453    CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to fg_init' )
    454 
    455    CALL fg_init(STEPFG,FGDT,DT,id,RUNDGDTEN,RVNDGDTEN,          &
    456                 RTHNDGDTEN,RQVNDGDTEN,RMUNDGDTEN,               &
    457                 config_flags,restart,                           &
    458                 allowed_to_read ,                               &
    459                 ids, ide, jds, jde, kds, kde,                   &
    460                 ims, ime, jms, jme, kms, kme,                   &
    461                 its, ite, jts, jte, kts, kte                    )
    462 
    463    CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to fdob_init' )
    464 
    465    CALL fdob_init(model_config_rec%obs_nudge_opt,               &
    466                   model_config_rec%max_dom,                     &
    467                   id,                                           &
    468                   model_config_rec%parent_id,                   &
    469                   model_config_rec%dx(1),                       &
    470                   config_flags%restart,                         &
    471                   obs_twindo,                                   &
    472                   itimestep,                                    &
    473                   model_config_rec%s_sn(1),                     &
    474                   model_config_rec%e_sn(1),                     &
    475                   model_config_rec%s_we(1),                     &
    476                   model_config_rec%e_we(1),                     &
    477                   fdob,                                         &
    478                   ids, ide, jds, jde, kds, kde,                 &
    479                   ims, ime, jms, jme, kms, kme,                 &
    480                   its, ite, jts, jte, kts, kte                  )
    481 
    482 #endif
     375!!!******MARS MARS
     376!!!******MARS MARS
     377!!!******MARS MARS
     378
     379!!-- initialize physics
     380!!-- ra: radiation
     381!!-- bl: pbl
     382!!-- cu: cumulus
     383!!-- mp: microphysics
     384!
     385!   CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to ra_init' )
     386!
     387!   CALL ra_init(id,STEPRA,RADT,DT,RTHRATEN,RTHRATENLW,             &
     388!                RTHRATENSW,CLDFRA,EMISS,cen_lat,JULYR,JULDAY,GMT,    &
     389!                levsiz,XLAT,n_ozmixm,                           &
     390!                ozmixm,pin,                                     & ! Optional
     391!                m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,     & ! Optional
     392!                paerlev,n_aerosolc,                             &
     393!                sfull,shalf,pptop,swrad_scat,                   &
     394!                config_flags,restart,                           &
     395!                allowed_to_read, start_of_simulation,           &
     396!                ids, ide, jds, jde, kds, kde,                   &
     397!                ims, ime, jms, jme, kms, kme,                   &
     398!                its, ite, jts, jte, kts, kte                    )
     399!
     400!   CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to bl_init' )
     401!
     402!   CALL bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN,        &
     403!                RQVBLTEN,RQCBLTEN,RQIBLTEN,TSK,TMN,             &
     404!                config_flags,restart,UST,LOWLYR,TSLB,ZS,DZS,    &
     405!                num_soil_layers,TKE_MYJ,EXCH_H,VEGFRA,          &
     406!                SNOW,SNOWC, CANWAT,SMSTAV,                      &
     407!                SMSTOT, SFCRUNOFF,UDRUNOFF,ACSNOW,ACSNOM,       &
     408!                IVGTYP,ISLTYP,SMOIS,SMFR3D,MAVAIL,              &
     409!                SNOWH,SH2O,FNDSOILW, FNDSNOWH,                  &
     410!#if (NMM_CORE == 1)
     411!                Z0,XLAND,XICE,                                  &
     412!#else
     413!                ZNT,XLAND,XICE,                                 &
     414!#endif
     415!                SFCEVP,GRDFLX,                                  &
     416!                allowed_to_read ,                               &
     417!                DZR, DZB, DZG,                                  & !Optional urban
     418!                TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D,   & !Optional urban
     419!                XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D,    & !Optional urban
     420!                TRL_URB3D, TBL_URB3D, TGL_URB3D,                & !Optional urban
     421!                SH_URB2D, LH_URB2D, G_URB2D, RN_URB2D,          & !Optional urban
     422!                TS_URB2D, FRC_URB2D, UTYPE_URB2D, UCMCALL,      & !Optional urban
     423!                ids, ide, jds, jde, kds, kde,                   &
     424!                ims, ime, jms, jme, kms, kme,                   &
     425!                its, ite, jts, jte, kts, kte                    )
     426!
     427!   CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to cu_init' )
     428!
     429!   CALL cu_init(STEPCU,CUDT,DT,RTHCUTEN,RQVCUTEN,RQRCUTEN,      &
     430!                RQCCUTEN,RQSCUTEN,RQICUTEN,NCA,RAINC,           &
     431!                RAINCV,W0AVG,config_flags,restart,              &
     432!                CLDEFI,LOWLYR,MASS_FLUX,                        &
     433!                RTHFTEN, RQVFTEN,                               &
     434!                APR_GR,APR_W,APR_MC,APR_ST,APR_AS,              &
     435!                APR_CAPMA,APR_CAPME,APR_CAPMI,                  &
     436!                allowed_to_read, start_of_simulation,           &
     437!                ids, ide, jds, jde, kds, kde,                   &
     438!                ims, ime, jms, jme, kms, kme,                   &
     439!                its, ite, jts, jte, kts, kte                    )
     440!
     441!   CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to mp_init' )
     442!
     443!   CALL mp_init(RAINNC,config_flags,restart,warm_rain,          &
     444!                adv_moist_cond,                                 &
     445!                MPDT, DT, DX, DY, LOWLYR,                       &
     446!                F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY,               &
     447!                mp_restart_state,tbpvs_state,tbpvs0_state,      &
     448!                allowed_to_read, start_of_simulation,           &
     449!                ids, ide, jds, jde, kds, kde,                   &
     450!                ims, ime, jms, jme, kms, kme,                   &
     451!                its, ite, jts, jte, kts, kte                    )
     452!
     453!   write(message,*)'STEPRA,STEPCU,STEPBL',STEPRA,STEPCU,STEPBL
     454!   CALL wrf_message( message )
     455!
     456!#if  ( EM_CORE == 1 )
     457!   CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to fg_init' )
     458!
     459!   CALL fg_init(STEPFG,FGDT,DT,id,RUNDGDTEN,RVNDGDTEN,          &
     460!                RTHNDGDTEN,RQVNDGDTEN,RMUNDGDTEN,               &
     461!                config_flags,restart,                           &
     462!                allowed_to_read ,                               &
     463!                ids, ide, jds, jde, kds, kde,                   &
     464!                ims, ime, jms, jme, kms, kme,                   &
     465!                its, ite, jts, jte, kts, kte                    )
     466!
     467!   CALL wrf_debug ( 200 , 'module_start: phy_init: Before call to fdob_init' )
     468!
     469!   CALL fdob_init(model_config_rec%obs_nudge_opt,               &
     470!                  model_config_rec%max_dom,                     &
     471!                  id,                                           &
     472!                  model_config_rec%parent_id,                   &
     473!                  model_config_rec%dx(1),                       &
     474!                  config_flags%restart,                         &
     475!                  obs_twindo,                                   &
     476!                  itimestep,                                    &
     477!                  model_config_rec%s_sn(1),                     &
     478!                  model_config_rec%e_sn(1),                     &
     479!                  model_config_rec%s_we(1),                     &
     480!                  model_config_rec%e_we(1),                     &
     481!                  fdob,                                         &
     482!                  ids, ide, jds, jde, kds, kde,                 &
     483!                  ims, ime, jms, jme, kms, kme,                 &
     484!                  its, ite, jts, jte, kts, kte                  )
     485!
     486!#endif
    483487
    484488   END SUBROUTINE phy_init
     
    720724   END SUBROUTINE landuse_init
    721725
    722 !=====================================================================
    723    SUBROUTINE ra_init(id,STEPRA,RADT,DT,RTHRATEN,RTHRATENLW,       &
    724                       RTHRATENSW,CLDFRA,EMISS,cen_lat,JULYR,JULDAY,GMT,    &
    725                       levsiz,XLAT,n_ozmixm,                           &
    726                       ozmixm,pin,                                     & ! Optional
    727                       m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,     & ! Optional
    728                       paerlev,n_aerosolc,                             &
    729                       sfull,shalf,pptop,swrad_scat,                  &
    730                       config_flags,restart,                          &
    731                       allowed_to_read, start_of_simulation,          &
    732                       ids, ide, jds, jde, kds, kde,                  &
    733                       ims, ime, jms, jme, kms, kme,                  &
    734                       its, ite, jts, jte, kts, kte                   )
    735 !---------------------------------------------------------------------
    736    USE module_ra_rrtm
    737    USE module_ra_cam
    738    USE module_ra_sw
    739    USE module_ra_gsfcsw
    740    USE module_ra_gfdleta
    741    USE module_domain
    742 !---------------------------------------------------------------------
    743    IMPLICIT NONE
    744 !---------------------------------------------------------------------
    745    INTEGER,  INTENT(IN)           :: id
    746    TYPE (grid_config_rec_type)    :: config_flags
    747    LOGICAL , INTENT(IN)           :: restart
    748    LOGICAL,  INTENT(IN)           :: allowed_to_read
    749 
    750    INTEGER , INTENT(IN)           :: ids, ide, jds, jde, kds, kde,   &
    751                                      ims, ime, jms, jme, kms, kme,   &
    752                                      its, ite, jts, jte, kts, kte
    753 
    754    INTEGER , INTENT(IN)           :: JULDAY,JULYR
    755    REAL ,    INTENT(IN)           :: DT, RADT, cen_lat, GMT, pptop,  &
    756                                      swrad_scat
    757    LOGICAL,  INTENT(IN)           :: start_of_simulation
    758 
    759    INTEGER,      INTENT(IN   )    ::   levsiz, n_ozmixm
    760    INTEGER,      INTENT(IN   )    ::   paerlev, n_aerosolc
    761 
    762    REAL,     DIMENSION( ims:ime , jms:jme ) , INTENT(IN) ::  XLAT
    763 
    764    REAL,  DIMENSION( ims:ime, levsiz, jms:jme, n_ozmixm ), OPTIONAL,      &
    765           INTENT(INOUT) ::                                  OZMIXM
    766 
    767    REAL,  DIMENSION(ims:ime,jms:jme), OPTIONAL, INTENT(INOUT)  :: m_ps_1,m_ps_2
    768    REAL,  DIMENSION(paerlev), OPTIONAL, INTENT(INOUT)  ::         m_hybi
    769    REAL,  DIMENSION( ims:ime, paerlev, jms:jme, n_aerosolc ), OPTIONAL,     &
    770           INTENT(INOUT) ::                      aerosolc_1, aerosolc_2
    771 
    772    REAL,  DIMENSION(levsiz), OPTIONAL, INTENT(INOUT)  ::          PIN
    773 
    774    INTEGER , INTENT(INOUT)        :: STEPRA
    775    INTEGER :: isn
    776 
    777    REAL , DIMENSION( kms:kme ) , INTENT(IN) :: sfull, shalf
    778    REAL , DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::           &
    779                                                            RTHRATEN, &
    780                                                          RTHRATENLW, &
    781                                                          RTHRATENSW, &
    782                                                              CLDFRA
    783    REAL , DIMENSION( ims:ime , jms:jme ) , INTENT(INOUT) :: EMISS
    784    LOGICAL :: etalw = .false.
    785    LOGICAL :: camlw = .false.
    786    LOGICAL :: etamp = .false.
    787    integer :: month,iday
    788    INTEGER :: i, j, k, itf, jtf, ktf
    789 !---------------------------------------------------------------------
    790 
    791    jtf=min0(jte,jde-1)
    792    ktf=min0(kte,kde-1)
    793    itf=min0(ite,ide-1)
    794 
    795 !---------------------------------------------------------------------
    796 
    797 !-- calculate radiation time step
    798 
    799     STEPRA = nint(RADT*60./DT)
    800     STEPRA = max(STEPRA,1)
    801 
    802 !-- initialization
    803 
    804    IF(start_of_simulation)THEN
    805      DO j=jts,jtf
    806      DO k=kts,ktf
    807      DO i=its,itf
    808         RTHRATEN(i,k,j)=0.
    809         RTHRATENLW(i,k,j)=0.
    810         RTHRATENSW(i,k,j)=0.
    811         CLDFRA(i,k,j)=0.
    812      ENDDO
    813      ENDDO
    814      ENDDO
    815    ENDIF
    816 
    817 !-- find out which microphysics option is used first
    818 
    819    mp_select: SELECT CASE(config_flags%mp_physics)
    820 
    821         CASE (ETAMPNEW)
    822              etamp = .true.
    823 
    824    END SELECT mp_select
    825 
    826 !-- chose long wave radiation scheme
    827  
    828    lwrad_select: SELECT CASE(config_flags%ra_lw_physics)
    829 
    830         CASE (RRTMSCHEME)
    831              CALL rrtminit(                                 &
    832                            allowed_to_read ,                &
    833                            ids, ide, jds, jde, kds, kde,    &
    834                            ims, ime, jms, jme, kms, kme,    &
    835                            its, ite, jts, jte, kts, kte     )
    836 
    837         CASE (CAMLWSCHEME)
    838 #ifdef MAC_KLUDGE
    839              CALL wrf_error_fatal ( 'CAM radiation scheme not supported under the chosen build configuration' )
    840 #endif
    841              IF ( PRESENT( OZMIXM ) .AND. PRESENT( PIN ) .AND. &
    842                   PRESENT(M_PS_1) .AND. PRESENT(M_PS_2) .AND.  &
    843                   PRESENT(M_HYBI) .AND. PRESENT(AEROSOLC_1)    &
    844                   .AND. PRESENT(AEROSOLC_2)) THEN
    845              CALL camradinit(                                  &
    846                          R_D,R_V,CP,G,STBOLT,EP_2,shalf,pptop, &
    847                          ozmixm,pin,levsiz,XLAT,n_ozmixm,      &
    848                          m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,&
    849                          paerlev, n_aerosolc,              &
    850                          ids, ide, jds, jde, kds, kde,     &
    851                          ims, ime, jms, jme, kms, kme,     &
    852                          its, ite, jts, jte, kts, kte      )
    853              ELSE
    854                 CALL wrf_error_fatal ( 'arguments not present for calling cam radiation' )
    855              ENDIF
    856 
    857              camlw = .true.
    858 
    859         CASE (GFDLLWSCHEME)
    860              CALL nl_get_start_month(id,month)
    861              CALL nl_get_start_day(id,iday)
    862              CALL gfdletainit(emiss,sfull,shalf,pptop,      &
    863                               julyr,month,iday,gmt,         &
    864                               config_flags,allowed_to_read, &
    865                               ids, ide, jds, jde, kds, kde, &
    866                               ims, ime, jms, jme, kms, kme, &
    867                               its, ite, jts, jte, kts, kte  )
    868              etalw = .true.
    869         CASE DEFAULT
    870 
    871    END SELECT lwrad_select
    872 !-- initialize short wave radiation scheme
    873  
    874    swrad_select: SELECT CASE(config_flags%ra_sw_physics)
    875 
    876         CASE (SWRADSCHEME)
    877              CALL swinit(                                  &
    878                          swrad_scat,                       &
    879                          allowed_to_read ,                 &
    880                          ids, ide, jds, jde, kds, kde,     &
    881                          ims, ime, jms, jme, kms, kme,     &
    882                          its, ite, jts, jte, kts, kte      )
    883 
    884         CASE (CAMSWSCHEME)
    885 #ifdef MAC_KLUDGE
    886              CALL wrf_error_fatal ( 'CAM radiation scheme not supported under the chosen build configuration' )
    887 #endif
    888              IF(.not.camlw)THEN
    889              CALL camradinit(                              &
    890                          R_D,R_V,CP,G,STBOLT,EP_2,shalf,pptop,               &
    891                          ozmixm,pin,levsiz,XLAT,n_ozmixm,     &
    892                          m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,&
    893                          paerlev, n_aerosolc,              &
    894                          ids, ide, jds, jde, kds, kde,     &
    895                          ims, ime, jms, jme, kms, kme,     &
    896                          its, ite, jts, jte, kts, kte      )
    897              ENDIF
    898 
    899         CASE (GSFCSWSCHEME)
    900              CALL gsfc_swinit(cen_lat, allowed_to_read )
    901 
    902         CASE (GFDLSWSCHEME)
    903              IF(.not.etalw)THEN
    904              CALL nl_get_start_month(id,month)
    905              CALL nl_get_start_day(id,iday)
    906              CALL gfdletainit(emiss,sfull,shalf,pptop,      &
    907                               julyr,month,iday,gmt,         &
    908                               config_flags,allowed_to_read, &
    909                               ids, ide, jds, jde, kds, kde, &
    910                               ims, ime, jms, jme, kms, kme, &
    911                               its, ite, jts, jte, kts, kte  )
    912              ENDIF
    913 
    914         CASE DEFAULT
    915 
    916    END SELECT swrad_select
    917 
    918    END SUBROUTINE ra_init
    919 
    920    SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN,  &
    921                 RQVBLTEN,RQCBLTEN,RQIBLTEN,TSK,TMN,             &
    922                 config_flags,restart,UST,LOWLYR,TSLB,ZS,DZS,    &
    923                 num_soil_layers,TKE_MYJ,EXCH_H,VEGFRA,          &
    924                 SNOW,SNOWC, CANWAT,SMSTAV,                      &
    925                 SMSTOT, SFCRUNOFF,UDRUNOFF,ACSNOW,ACSNOM,       &
    926                 IVGTYP,ISLTYP,SMOIS,SMFR3D,mavail,              &
    927                 SNOWH,SH2O,FNDSOILW, FNDSNOWH,                  &
    928 #if  ( NMM_CORE == 1 )
    929                 Z0,XLAND,XICE,                                  &
    930 #else
    931                 ZNT,XLAND,XICE,                                 &
    932 #endif
    933                 SFCEVP,GRDFLX,                                  &
    934                 allowed_to_read,                                &
    935 !                num_roof_layers,num_wall_layers,num_road_layers,& !Optional urban
    936                 DZR, DZB, DZG,                                  & !Optional urban
    937                 TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D,   & !Optional urban
    938                 XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D,    & !Optional urban
    939                 TRL_URB3D, TBL_URB3D, TGL_URB3D,                & !Optional urban
    940                 SH_URB2D,LH_URB2D,G_URB2D,RN_URB2D,             & !Optional urban
    941                 TS_URB2D, FRC_URB2D, UTYPE_URB2D,UCMCALL,       & !Optional urban
    942                 ids, ide, jds, jde, kds, kde,                   &
    943                 ims, ime, jms, jme, kms, kme,                   &
    944                 its, ite, jts, jte, kts, kte                    )
    945 !--------------------------------------------------------------------
    946    USE module_sf_sfclay
    947    USE module_sf_slab
    948    USE module_bl_ysu
    949    USE module_bl_mrf
    950    USE module_bl_gfs
    951    USE module_sf_myjsfc
    952    USE module_sf_noahlsm
    953    USE module_sf_urban
    954    USE module_sf_ruclsm
    955    USE module_bl_myjpbl
    956 #if (NMM_CORE == 1)
    957    USE module_sf_lsm_nmm
    958 #endif
    959 !--------------------------------------------------------------------
    960    IMPLICIT NONE
    961 !--------------------------------------------------------------------
    962    TYPE (grid_config_rec_type) ::     config_flags
    963    LOGICAL , INTENT(IN)        :: restart
    964    LOGICAL, INTENT(IN)         ::   FNDSOILW, FNDSNOWH
    965 
    966    INTEGER , INTENT(IN)        ::     ids, ide, jds, jde, kds, kde, &
    967                                       ims, ime, jms, jme, kms, kme, &
    968                                       its, ite, jts, jte, kts, kte
    969    INTEGER , INTENT(IN)        ::     num_soil_layers
    970    INTEGER , INTENT(IN)        ::     UCMCALL
    971 
    972    REAL ,    INTENT(IN)        ::     DT, BLDT
    973    INTEGER , INTENT(INOUT)     ::     STEPBL
    974 
    975    REAL,     DIMENSION( ims:ime , 1:num_soil_layers , jms:jme ),    &
    976              INTENT(OUT) :: SMFR3D
    977 
    978    REAL,     DIMENSION( ims:ime , 1:num_soil_layers , jms:jme ),&
    979                    INTENT(INOUT) :: SMOIS,SH2O,TSLB
    980 
    981    REAL,    DIMENSION( ims:ime, jms:jme )                     , &
    982             INTENT(INOUT)    ::                           SNOW, &
    983                                                          SNOWH, &
    984                                                          SNOWC, &
    985                                                         CANWAT, &
    986                                                         MAVAIL, &
    987                                                         SMSTAV, &
    988                                                         SMSTOT, &
    989                                                      SFCRUNOFF, &
    990                                                       UDRUNOFF, &
    991                                                         ACSNOW, &
    992                                                         VEGFRA, &
    993                                                         ACSNOM, &
    994                                                         SFCEVP, &
    995                                                         GRDFLX, &
    996                                                            UST, &
    997 #if ( NMM_CORE == 1 )
    998                                                             Z0, &
    999 #else
    1000                                                            ZNT, &
    1001 #endif
    1002                                                          XLAND, &
    1003                                                          XICE
    1004 
    1005    INTEGER, DIMENSION( ims:ime, jms:jme )                     , &
    1006             INTENT(INOUT)    ::                         IVGTYP, &
    1007                                                         ISLTYP, &
    1008                                                         LOWLYR
    1009 
    1010 
    1011    REAL,     DIMENSION(1:num_soil_layers), INTENT(INOUT)  ::  ZS,DZS
    1012 
    1013    REAL,     DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::       &
    1014                                                            RUBLTEN, &
    1015                                                            RVBLTEN, &
    1016                                                           EXCH_H,   &
    1017                                                           RTHBLTEN, &
    1018                                                           RQVBLTEN, &
    1019                                                           RQCBLTEN, &
    1020                                                           RQIBLTEN, &
    1021                                                           TKE_MYJ
    1022 
    1023    REAL,  DIMENSION( ims:ime , jms:jme ) , INTENT(IN) ::     TSK
    1024    REAL,  DIMENSION( ims:ime , jms:jme ) , INTENT(INOUT) ::  TMN
    1025    LOGICAL,  INTENT(IN)           :: allowed_to_read
    1026    INTEGER :: isn, isfc
    1027 
    1028 !URBAN
    1029 !   REAL, DIMENSION(1:num_roof_layers), INTENT(INOUT) :: DZR  !Optional urban
    1030 !   REAL, DIMENSION(1:num_wall_layers), INTENT(INOUT) :: DZB  !Optional urban
    1031 !   REAL, DIMENSION(1:num_road_layers), INTENT(INOUT) :: DZG  !Optional urban
    1032     REAL, OPTIONAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZR  !Optional urban
    1033     REAL, OPTIONAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZB  !Optional urban
    1034     REAL, OPTIONAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZG  !Optional urban
    1035     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TR_URB2D !Optional urban
    1036     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TB_URB2D !Optional urban
    1037     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TG_URB2D !Optional urban
    1038     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TC_URB2D !Optional urban
    1039     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QC_URB2D !Optional urban
    1040     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXR_URB2D !Optional urban
    1041     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXB_URB2D !Optional urban
    1042     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXG_URB2D !Optional urban
    1043     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXC_URB2D !Optional urban
    1044     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SH_URB2D !Optional urban
    1045     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: LH_URB2D !Optional urban
    1046     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: G_URB2D !Optional urban
    1047     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: RN_URB2D !Optional urban
    1048     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TS_URB2D !Optional urban
    1049     REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FRC_URB2D !Optional urban
    1050     INTEGER, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: UTYPE_URB2D !Optional urban
    1051 !    REAL, DIMENSION( ims:ime, 1:num_roof_layers, jms:jme ), INTENT(INOUT) :: TRL_URB3D !Optional urban
    1052 !    REAL, DIMENSION( ims:ime, 1:num_wall_layers, jms:jme ), INTENT(INOUT) :: TBL_URB3D !Optional urban
    1053 !    REAL, DIMENSION( ims:ime, 1:num_road_layers, jms:jme ), INTENT(INOUT) :: TGL_URB3D !Optional urban
    1054     REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), INTENT(INOUT) :: TRL_URB3D !Optional urban
    1055     REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), INTENT(INOUT) :: TBL_URB3D !Optional urban
    1056     REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), INTENT(INOUT) :: TGL_URB3D !Optional urban
    1057 
    1058 
    1059 !-- calculate pbl time step
    1060 
    1061    STEPBL = nint(BLDT*60./DT)
    1062    STEPBL = max(STEPBL,1)
    1063 
    1064 
    1065 !-- initialize surface layer scheme
    1066 
    1067    sfclay_select: SELECT CASE(config_flags%sf_sfclay_physics)
    1068 
    1069       CASE (SFCLAYSCHEME)
    1070            CALL sfclayinit( allowed_to_read )
    1071            isfc = 1
    1072       CASE (MYJSFCSCHEME)
    1073            CALL myjsfcinit(LOWLYR,UST,                         &
    1074 #if ( NMM_CORE == 1 )
    1075                                       Z0,                      &
    1076 #else
    1077                                       ZNT,                     &
    1078 #endif
    1079                                           XLAND,XICE,          &
    1080                          IVGTYP,restart,                       &
    1081                          allowed_to_read ,                     &
    1082                          ids, ide, jds, jde, kds, kde,         &
    1083                          ims, ime, jms, jme, kms, kme,         &
    1084                          its, ite, jts, jte, kts, kte          )
    1085            isfc = 2
    1086 
    1087       CASE (GFSSFCSCHEME)
    1088            CALL myjsfcinit(LOWLYR,UST,                         &
    1089 #if ( NMM_CORE == 1 )
    1090                                       Z0,                      &
    1091 #else
    1092                                       ZNT,                     &
    1093 #endif
    1094                                           XLAND,XICE,          &
    1095                          IVGTYP,restart,                       &
    1096                          allowed_to_read ,                     &
    1097                          ids, ide, jds, jde, kds, kde,         &
    1098                          ims, ime, jms, jme, kms, kme,         &
    1099                          its, ite, jts, jte, kts, kte          )
    1100            isfc = 1
    1101 
    1102       CASE DEFAULT
    1103 
    1104    END SELECT sfclay_select
    1105 
    1106 
    1107 !-- initialize surface scheme
    1108 
    1109    sfc_select: SELECT CASE(config_flags%sf_surface_physics)
    1110 
    1111       CASE (SLABSCHEME)
    1112            CALL slabinit(TSK,TMN,                              &
    1113                          TSLB,ZS,DZS,num_soil_layers,          &
    1114                          restart,                              &
    1115                          allowed_to_read ,                     &
    1116                          ids, ide, jds, jde, kds, kde,         &
    1117                          ims, ime, jms, jme, kms, kme,         &
    1118                          its, ite, jts, jte, kts, kte          )
    1119 #if (NMM_CORE == 1)
    1120       CASE (NMMLSMSCHEME)
    1121            CALL nmmlsminit(isn,XICE,VEGFRA,SNOW,SNOWC, CANWAT,SMSTAV, &
    1122                      SMSTOT, SFCRUNOFF,UDRUNOFF,GRDFLX,ACSNOW,     &
    1123                      ACSNOM,IVGTYP,ISLTYP,TSLB,SMOIS,DZS,SFCEVP,   &
    1124                      TMN,                                          &
    1125                      num_soil_layers,                              &
    1126                      allowed_to_read ,                             &
    1127                      ids,ide, jds,jde, kds,kde,                    &
    1128                      ims,ime, jms,jme, kms,kme,                    &
    1129                      its,ite, jts,jte, kts,kte                     )
    1130 #endif
    1131       CASE (LSMSCHEME)
    1132           CALL LSMINIT(VEGFRA,SNOW,SNOWC,SNOWH,CANWAT,SMSTAV,  &
    1133                      SMSTOT, SFCRUNOFF,UDRUNOFF,ACSNOW,        &
    1134                      ACSNOM,IVGTYP,ISLTYP,TSLB,SMOIS,SH2O,ZS,DZS, &
    1135                      FNDSOILW, FNDSNOWH,                       &
    1136                      num_soil_layers, restart,                 &
    1137                      allowed_to_read ,                         &
    1138                      ids,ide, jds,jde, kds,kde,                &
    1139                      ims,ime, jms,jme, kms,kme,                &
    1140                      its,ite, jts,jte, kts,kte                 )
    1141 
    1142 !URBAN
    1143           IF(UCMCALL.eq.1) THEN
    1144 
    1145              IF ( PRESENT( FRC_URB2D ) .AND. PRESENT( UTYPE_URB2D )) THEN
    1146 
    1147                 CALL urban_param_init(DZR,DZB,DZG,num_soil_layers                    & !urban
    1148                                 )
    1149 !                                num_roof_layers,num_wall_layers,road_soil_layers)   !urban
    1150                 CALL urban_var_init(TSK,TSLB,TMN,IVGTYP,                             & !urban
    1151                               ims,ime,jms,jme,num_soil_layers,                 & !urban
    1152 !                              num_roof_layers,num_wall_layers,num_road_layers, & !urban
    1153                               XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D,     & !urban
    1154                               TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D,    & !urban
    1155                               TRL_URB3D,TBL_URB3D,TGL_URB3D,                   & !urban
    1156                               SH_URB2D,LH_URB2D,G_URB2D,RN_URB2D, TS_URB2D,    & ! urban
    1157                               FRC_URB2D, UTYPE_URB2D)                            !urban
    1158              ELSE
    1159                 CALL wrf_error_fatal ( 'arguments not present for calling urban model' )
    1160              ENDIF
    1161           ENDIF
    1162 
    1163 
    1164       CASE (RUCLSMSCHEME)
    1165 !          if(isfc .ne. 2)CALL wrf_error_fatal &
    1166 !           ( 'module_physics_init: use myjsfc and myjpbl scheme for this lsm option' )
    1167            CALL lsmrucinit( SMFR3D,TSLB,SMOIS,ISLTYP,mavail,       &
    1168                      num_soil_layers, restart,                     &
    1169                      allowed_to_read ,                             &
    1170                      ids,ide, jds,jde, kds,kde,                    &
    1171                      ims,ime, jms,jme, kms,kme,                    &
    1172                      its,ite, jts,jte, kts,kte                     )
    1173 
    1174       CASE DEFAULT
    1175 
    1176    END SELECT sfc_select
    1177 
    1178 
    1179 !-- initialize pbl scheme
    1180 
    1181    pbl_select: SELECT CASE(config_flags%bl_pbl_physics)
    1182 
    1183       CASE (YSUSCHEME)
    1184            if(isfc .ne. 1)CALL wrf_error_fatal &
    1185             ( 'module_physics_init: use sfclay scheme for this pbl option' )
    1186            CALL ysuinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,    &
    1187                         RQCBLTEN,RQIBLTEN,P_QI,               &
    1188                         PARAM_FIRST_SCALAR,                   &
    1189                         restart,                              &
    1190                         allowed_to_read ,                     &
    1191                         ids, ide, jds, jde, kds, kde,         &
    1192                         ims, ime, jms, jme, kms, kme,         &
    1193                         its, ite, jts, jte, kts, kte          )
    1194       CASE (MRFSCHEME)
    1195            if(isfc .ne. 1)CALL wrf_error_fatal &
    1196             ( 'module_physics_init: use sfclay scheme for this pbl option' )
    1197            CALL mrfinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,    &
    1198                         RQCBLTEN,RQIBLTEN,P_QI,               &
    1199                         PARAM_FIRST_SCALAR,                   &
    1200                         restart,                              &
    1201                         allowed_to_read ,                     &
    1202                         ids, ide, jds, jde, kds, kde,         &
    1203                         ims, ime, jms, jme, kms, kme,         &
    1204                         its, ite, jts, jte, kts, kte          )
    1205       CASE (GFSSCHEME)
    1206            if(isfc .ne. 1)CALL wrf_error_fatal &
    1207             ( 'module_physics_init: use sfclay scheme for this pbl option' )
    1208            CALL gfsinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,    &
    1209                         RQCBLTEN,RQIBLTEN,P_QI,               &
    1210                         PARAM_FIRST_SCALAR,                   &
    1211                         restart,                              &
    1212                         allowed_to_read ,                     &
    1213                         ids, ide, jds, jde, kds, kde,         &
    1214                         ims, ime, jms, jme, kms, kme,         &
    1215                         its, ite, jts, jte, kts, kte          )
    1216       CASE (MYJPBLSCHEME)
    1217            if(isfc .ne. 2)CALL wrf_error_fatal &
    1218             ( 'module_physics_init: use myjsfc scheme for this pbl option' )
    1219            CALL myjpblinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN, &
    1220                         TKE_MYJ,EXCH_H,restart,               &
    1221                         allowed_to_read ,                     &
    1222                         ids, ide, jds, jde, kds, kde,         &
    1223                         ims, ime, jms, jme, kms, kme,         &
    1224                         its, ite, jts, jte, kts, kte          )
    1225       CASE DEFAULT
    1226 
    1227    END SELECT pbl_select
    1228 
    1229    END SUBROUTINE bl_init
    1230 
    1231 !==================================================================
    1232    SUBROUTINE cu_init(STEPCU,CUDT,DT,RTHCUTEN,RQVCUTEN,RQRCUTEN,  &
    1233                       RQCCUTEN,RQSCUTEN,RQICUTEN,NCA,RAINC,       &
    1234                       RAINCV,W0AVG,config_flags,restart,          &
    1235                       CLDEFI,LOWLYR,MASS_FLUX,                    &
    1236                       RTHFTEN, RQVFTEN,                           &
    1237                       APR_GR,APR_W,APR_MC,APR_ST,APR_AS,          &
    1238                       APR_CAPMA,APR_CAPME,APR_CAPMI,              &
    1239                       allowed_to_read, start_of_simulation,       &
    1240                       ids, ide, jds, jde, kds, kde,               &
    1241                       ims, ime, jms, jme, kms, kme,               &
    1242                       its, ite, jts, jte, kts, kte                )
    1243 !------------------------------------------------------------------
    1244    USE module_cu_kf
    1245    USE module_cu_kfeta
    1246    USE MODULE_CU_BMJ
    1247    USE module_cu_gd
    1248    USE module_cu_sas
    1249 !------------------------------------------------------------------
    1250    IMPLICIT NONE
    1251 !------------------------------------------------------------------
    1252    TYPE (grid_config_rec_type) ::     config_flags
    1253    LOGICAL , INTENT(IN)        :: restart
    1254 
    1255 
    1256    INTEGER , INTENT(IN)        :: ids, ide, jds, jde, kds, kde,   &
    1257                                   ims, ime, jms, jme, kms, kme,   &
    1258                                   its, ite, jts, jte, kts, kte
    1259 
    1260    REAL ,    INTENT(IN)        :: DT, CUDT
    1261    LOGICAL , INTENT(IN)        :: start_of_simulation
    1262    LOGICAL , INTENT(IN)        :: allowed_to_read
    1263    INTEGER , INTENT(INOUT)     :: STEPCU
    1264 
    1265    REAL ,   DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(INOUT) ::    &
    1266             RTHCUTEN, RQVCUTEN, RQCCUTEN, RQRCUTEN, RQICUTEN,     &
    1267             RQSCUTEN
    1268 
    1269    REAL ,   DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) :: W0AVG
    1270 
    1271    REAL,    DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::    &
    1272             RTHFTEN, RQVFTEN
    1273 
    1274    REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(OUT):: RAINC, RAINCV
    1275 
    1276    REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(OUT):: CLDEFI
    1277 
    1278    REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: NCA
    1279 
    1280    REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: MASS_FLUX,   &
    1281                                    APR_GR,APR_W,APR_MC,APR_ST,APR_AS,    &
    1282                                    APR_CAPMA,APR_CAPME,APR_CAPMI
    1283 
    1284    INTEGER, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: LOWLYR
    1285 
    1286 ! LOCAL VAR
    1287    
    1288   INTEGER :: i,j,itf,jtf
    1289 
    1290 !--------------------------------------------------------------------
    1291 
    1292 !-- calculate cumulus parameterization time step
    1293 
    1294    itf=min0(ite,ide-1)
    1295    jtf=min0(jte,jde-1)
    1296 !
    1297    STEPCU = nint(CUDT*60./DT)
    1298    STEPCU = max(STEPCU,1)
    1299 
    1300 !-- initialization
    1301 
    1302    IF(start_of_simulation)THEN
    1303      DO j=jts,jtf
    1304      DO i=its,itf
    1305         RAINC(i,j)=0.
    1306         RAINCV(i,j)=0.
    1307      ENDDO
    1308      ENDDO
    1309    ENDIF
    1310 
    1311    cps_select: SELECT CASE(config_flags%cu_physics)
    1312 
    1313      CASE (KFSCHEME)
    1314           CALL kfinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,        &
    1315                       RQICUTEN,RQSCUTEN,NCA,W0AVG,P_QI,P_QS,      &
    1316                       PARAM_FIRST_SCALAR,restart,                 &
    1317                       allowed_to_read ,                           &
    1318                       ids, ide, jds, jde, kds, kde,               &
    1319                       ims, ime, jms, jme, kms, kme,               &
    1320                       its, ite, jts, jte, kts, kte                )
    1321 
    1322      CASE (BMJSCHEME)
    1323           CALL bmjinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,       &
    1324                       CLDEFI,LOWLYR,cp,r_d,restart,               &
    1325                       allowed_to_read ,                           &
    1326                       ids, ide, jds, jde, kds, kde,               &
    1327                       ims, ime, jms, jme, kms, kme,               &
    1328                       its, ite, jts, jte, kts, kte                )
    1329 
    1330      CASE (KFETASCHEME)
    1331           CALL kf_eta_init(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,   &
    1332                       RQICUTEN,RQSCUTEN,NCA,W0AVG,P_QI,P_QS,      &
    1333                       SVP1,SVP2,SVP3,SVPT0,                       &
    1334                       PARAM_FIRST_SCALAR,restart,                 &
    1335                       allowed_to_read ,                           &
    1336                       ids, ide, jds, jde, kds, kde,               &
    1337                       ims, ime, jms, jme, kms, kme,               &
    1338                       its, ite, jts, jte, kts, kte                )
    1339      CASE (GDSCHEME)
    1340           CALL gdinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQICUTEN,        &
    1341                       MASS_FLUX,cp,restart,                       &
    1342                       P_QC,P_QI,PARAM_FIRST_SCALAR,               &
    1343                       RTHFTEN, RQVFTEN,                           &
    1344                       APR_GR,APR_W,APR_MC,APR_ST,APR_AS,          &
    1345                       APR_CAPMA,APR_CAPME,APR_CAPMI,              &
    1346                       allowed_to_read ,                           &
    1347                       ids, ide, jds, jde, kds, kde,               &
    1348                       ims, ime, jms, jme, kms, kme,               &
    1349                       its, ite, jts, jte, kts, kte                )
    1350      CASE (SASSCHEME)
    1351           CALL sasinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQICUTEN,       &
    1352                       restart,P_QC,P_QI,PARAM_FIRST_SCALAR,       &
    1353                       allowed_to_read ,                           &
    1354                       ids, ide, jds, jde, kds, kde,               &
    1355                       ims, ime, jms, jme, kms, kme,               &
    1356                       its, ite, jts, jte, kts, kte                )
    1357 
    1358      CASE DEFAULT
    1359 
    1360    END SELECT cps_select
    1361 
    1362    END SUBROUTINE cu_init
    1363 
    1364 !==================================================================
    1365    SUBROUTINE mp_init(RAINNC,config_flags,restart,warm_rain,      &
    1366                       adv_moist_cond,                             &
    1367                       MPDT, DT, DX, DY, LOWLYR,                   & ! for eta mp
    1368                       F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY,           & ! for eta mp
    1369                       mp_restart_state,tbpvs_state,tbpvs0_state,   & ! eta mp
    1370                       allowed_to_read, start_of_simulation,       &
    1371                       ids, ide, jds, jde, kds, kde,               &
    1372                       ims, ime, jms, jme, kms, kme,               &
    1373                       its, ite, jts, jte, kts, kte                )
    1374 !------------------------------------------------------------------
    1375    USE module_mp_ncloud3
    1376    USE module_mp_ncloud5
    1377    USE module_mp_wsm3
    1378    USE module_mp_wsm5
    1379    USE module_mp_wsm6
    1380    USE module_mp_etanew
    1381    USE module_mp_thompson
    1382 !------------------------------------------------------------------
    1383    IMPLICIT NONE
    1384 !------------------------------------------------------------------
    1385 ! Arguments
    1386    TYPE (grid_config_rec_type) ::     config_flags
    1387    LOGICAL , INTENT(IN)        :: restart
    1388    LOGICAL , INTENT(OUT)       :: warm_rain,adv_moist_cond
    1389    REAL    , INTENT(IN)        :: MPDT, DT, DX, DY
    1390    LOGICAL , INTENT(IN)        :: start_of_simulation
    1391 
    1392    INTEGER , INTENT(IN)        :: ids, ide, jds, jde, kds, kde,   &
    1393                                   ims, ime, jms, jme, kms, kme,   &
    1394                                   its, ite, jts, jte, kts, kte
    1395 
    1396    INTEGER , DIMENSION( ims:ime , jms:jme ) ,INTENT(INOUT)  :: LOWLYR
    1397    REAL,     DIMENSION( ims:ime , jms:jme ) , INTENT(INOUT) :: RAINNC
    1398    REAL,     DIMENSION( ims:ime , kms:kme, jms:jme ) , INTENT(INOUT) :: &
    1399                                   F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY
    1400    REAL , DIMENSION(:) ,INTENT(INOUT)  :: mp_restart_state,tbpvs_state,tbpvs0_state
    1401    LOGICAL , INTENT(IN)  :: allowed_to_read
    1402 
    1403 ! Local
    1404    INTEGER :: i, j, itf, jtf
    1405 
    1406    warm_rain = .false.
    1407    adv_moist_cond = .true.
    1408    itf=min0(ite,ide-1)
    1409    jtf=min0(jte,jde-1)
    1410 
    1411    IF(start_of_simulation)THEN
    1412      DO j=jts,jtf
    1413      DO i=its,itf
    1414         RAINNC(i,j) = 0.
    1415      ENDDO
    1416      ENDDO
    1417    ENDIF
    1418 
    1419    mp_select: SELECT CASE(config_flags%mp_physics)
    1420 
    1421      CASE (KESSLERSCHEME)
    1422           warm_rain = .true.
    1423      CASE (WSM3SCHEME)
    1424           CALL wsm3init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
    1425      CASE (WSM5SCHEME)
    1426           CALL wsm5init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
    1427      CASE (WSM6SCHEME)
    1428           CALL wsm6init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
    1429      CASE (ETAMPNEW)
    1430          adv_moist_cond = .false.
    1431          CALL etanewinit (MPDT,DT,DX,DY,LOWLYR,restart,           &
    1432                           F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY,       &
    1433                           mp_restart_state,tbpvs_state,tbpvs0_state,&
    1434                           allowed_to_read,                        &
    1435                           ids, ide, jds, jde, kds, kde,           &
    1436                           ims, ime, jms, jme, kms, kme,           &
    1437                           its, ite, jts, jte, kts, kte            )
    1438      CASE (THOMPSON)
    1439          CALL thompson_init
    1440      CASE (NCEPCLOUD3)
    1441           CALL ncloud3init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
    1442      CASE (NCEPCLOUD5)
    1443           CALL ncloud5init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
    1444 
    1445      CASE DEFAULT
    1446 
    1447    END SELECT mp_select
    1448 
    1449    END SUBROUTINE mp_init
    1450 
    1451 #if  ( EM_CORE == 1 )
    1452 !==========================================================
    1453    SUBROUTINE fg_init(STEPFG,FGDT,DT,id,RUNDGDTEN,RVNDGDTEN,    &
    1454                 RTHNDGDTEN,RQVNDGDTEN,RMUNDGDTEN,               &
    1455                 config_flags,restart,                           &
    1456                 allowed_to_read ,                               &
    1457                 ids, ide, jds, jde, kds, kde,                   &
    1458                 ims, ime, jms, jme, kms, kme,                   &
    1459                 its, ite, jts, jte, kts, kte                    )
    1460 
    1461 
    1462 !--------------------------------------------------------------------
    1463    USE module_fdda_psufddagd
    1464 !--------------------------------------------------------------------
    1465    IMPLICIT NONE
    1466 !--------------------------------------------------------------------
    1467    TYPE (grid_config_rec_type) ::     config_flags
    1468    LOGICAL , INTENT(IN)        :: restart
    1469 
    1470    INTEGER , INTENT(IN)        ::     ids, ide, jds, jde, kds, kde, &
    1471                                       ims, ime, jms, jme, kms, kme, &
    1472                                       its, ite, jts, jte, kts, kte
    1473 
    1474    REAL ,    INTENT(IN)        ::     DT, FGDT
    1475    INTEGER , INTENT(IN)        ::     id
    1476    INTEGER , INTENT(INOUT)     ::     STEPFG
    1477    REAL,     DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::       &
    1478                                                            RUNDGDTEN, &
    1479                                                            RVNDGDTEN, &
    1480                                                           RTHNDGDTEN, &
    1481                                                           RQVNDGDTEN
    1482    REAL,     DIMENSION( ims:ime , jms:jme ) , INTENT(OUT) :: RMUNDGDTEN
    1483 
    1484    LOGICAL,  INTENT(IN)           :: allowed_to_read
    1485 !--------------------------------------------------------------------
    1486 
    1487 !-- calculate pbl time step
    1488 
    1489    STEPFG = nint(FGDT*60./DT)
    1490    STEPFG = max(STEPFG,1)
    1491 
    1492 
    1493 !-- initialize fdda scheme
    1494 
    1495    fdda_select: SELECT CASE(config_flags%grid_fdda)
    1496 
    1497       CASE (PSUFDDAGD)
    1498            CALL fddagdinit(id,rundgdten,rvndgdten,rthndgdten,rqvndgdten,rmundgdten,&
    1499                config_flags%run_hours, &
    1500                config_flags%if_no_pbl_nudging_uv, &
    1501                config_flags%if_no_pbl_nudging_t, &
    1502                config_flags%if_no_pbl_nudging_q, &
    1503                config_flags%if_zfac_uv, &
    1504                config_flags%k_zfac_uv, &
    1505                config_flags%if_zfac_t, &
    1506                config_flags%k_zfac_t, &
    1507                config_flags%if_zfac_q, &
    1508                config_flags%k_zfac_q, &
    1509                config_flags%guv, &
    1510                config_flags%gt, config_flags%gq, &
    1511                config_flags%if_ramping, config_flags%dtramp_min, &
    1512                config_flags%gfdda_end_h, &
    1513                       restart, allowed_to_read,                    &
    1514                       ids, ide, jds, jde, kds, kde,                &
    1515                       ims, ime, jms, jme, kms, kme,                &
    1516                       its, ite, jts, jte, kts, kte                 )
    1517       CASE DEFAULT
    1518 
    1519    END SELECT fdda_select
    1520 
    1521    END SUBROUTINE fg_init
    1522 
    1523 !-------------------------------------------------------------------
    1524    SUBROUTINE fdob_init(obs_nudge_opt, maxdom, inest, parid,       &
    1525                         dx_coarse, restart, obs_twindo, itimestep, &
    1526                         s_sn_cg, e_sn_cg, s_we_cg, e_we_cg,  &
    1527                         fdob,                                      &
    1528                         ids, ide, jds, jde, kds, kde,              &
    1529                         ims, ime, jms, jme, kms, kme,              &
    1530                         its, ite, jts, jte, kts, kte               )
    1531 
    1532 
    1533 !--------------------------------------------------------------------
    1534    USE module_domain
    1535    USE module_fddaobs_rtfdda
    1536 !--------------------------------------------------------------------
    1537    IMPLICIT NONE
    1538 !--------------------------------------------------------------------
    1539    INTEGER , INTENT(IN)    :: maxdom
    1540    INTEGER , INTENT(IN)    :: obs_nudge_opt(maxdom)
    1541    INTEGER , INTENT(IN)    :: ids,ide, jds,jde, kds,kde,           &
    1542                               ims,ime, jms,jme, kms,kme,           &
    1543                               its,ite, jts,jte, kts,kte
    1544    INTEGER , INTENT(IN)    :: inest
    1545    INTEGER , INTENT(IN)    :: parid(maxdom)
    1546    REAL    , INTENT(IN)    :: dx_coarse
    1547    LOGICAL , INTENT(IN)    :: restart
    1548    REAL    , INTENT(INOUT) :: obs_twindo
    1549    INTEGER , INTENT(IN)    :: itimestep
    1550    INTEGER, intent(in)     :: s_sn_cg      ! starting north-south coarse-grid index
    1551    INTEGER, intent(in)     :: e_sn_cg      ! ending   north-south coarse-grid index
    1552    INTEGER, intent(in)     :: s_we_cg      ! starting west-east   coarse-grid index
    1553    INTEGER, intent(in)     :: e_we_cg      ! ending   west-east   coarse-grid index
    1554 
    1555    TYPE(fdob_type), INTENT(INOUT)  :: fdob
    1556 
    1557    INTEGER                 :: e_sn         ! ending   north-south grid index
    1558 !--------------------------------------------------------------------
    1559 !-- initialize fdda obs-nudging scheme
    1560 
    1561       e_sn = jde
    1562       CALL fddaobs_init(obs_nudge_opt, maxdom, inest, parid,       & 
    1563                         dx_coarse, restart, obs_twindo, itimestep, &
    1564                         e_sn, s_sn_cg, e_sn_cg, s_we_cg, e_we_cg,  &
    1565                         fdob,                                      & 
    1566                         ids,ide, jds,jde, kds,kde,                 & 
    1567                         ims,ime, jms,jme, kms,kme,                 & 
    1568                         its,ite, jts,jte, kts,kte)
    1569 
    1570    END SUBROUTINE fdob_init
    1571 #endif
    1572 
     726!!!******MARS MARS
     727!!!******MARS MARS
     728!!!******MARS MARS
     729
     730!!=====================================================================
     731!   SUBROUTINE ra_init(id,STEPRA,RADT,DT,RTHRATEN,RTHRATENLW,       &
     732!                      RTHRATENSW,CLDFRA,EMISS,cen_lat,JULYR,JULDAY,GMT,    &
     733!                      levsiz,XLAT,n_ozmixm,                           &
     734!                      ozmixm,pin,                                     & ! Optional
     735!                      m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,     & ! Optional
     736!                      paerlev,n_aerosolc,                             &
     737!                      sfull,shalf,pptop,swrad_scat,                  &
     738!                      config_flags,restart,                          &
     739!                      allowed_to_read, start_of_simulation,          &
     740!                      ids, ide, jds, jde, kds, kde,                  &
     741!                      ims, ime, jms, jme, kms, kme,                  &
     742!                      its, ite, jts, jte, kts, kte                   )
     743!!---------------------------------------------------------------------
     744!   USE module_ra_rrtm
     745!   USE module_ra_cam
     746!   USE module_ra_sw
     747!   USE module_ra_gsfcsw
     748!   USE module_ra_gfdleta
     749!   USE module_domain
     750!!---------------------------------------------------------------------
     751!   IMPLICIT NONE
     752!!---------------------------------------------------------------------
     753!   INTEGER,  INTENT(IN)           :: id
     754!   TYPE (grid_config_rec_type)    :: config_flags
     755!   LOGICAL , INTENT(IN)           :: restart
     756!   LOGICAL,  INTENT(IN)           :: allowed_to_read
     757!
     758!   INTEGER , INTENT(IN)           :: ids, ide, jds, jde, kds, kde,   &
     759!                                     ims, ime, jms, jme, kms, kme,   &
     760!                                     its, ite, jts, jte, kts, kte
     761!
     762!   INTEGER , INTENT(IN)           :: JULDAY,JULYR
     763!   REAL ,    INTENT(IN)           :: DT, RADT, cen_lat, GMT, pptop,  &
     764!                                     swrad_scat
     765!   LOGICAL,  INTENT(IN)           :: start_of_simulation
     766!
     767!   INTEGER,      INTENT(IN   )    ::   levsiz, n_ozmixm
     768!   INTEGER,      INTENT(IN   )    ::   paerlev, n_aerosolc
     769!
     770!   REAL,     DIMENSION( ims:ime , jms:jme ) , INTENT(IN) ::  XLAT
     771!
     772!   REAL,  DIMENSION( ims:ime, levsiz, jms:jme, n_ozmixm ), OPTIONAL,      &
     773!          INTENT(INOUT) ::                                  OZMIXM
     774!
     775!   REAL,  DIMENSION(ims:ime,jms:jme), OPTIONAL, INTENT(INOUT)  :: m_ps_1,m_ps_2
     776!   REAL,  DIMENSION(paerlev), OPTIONAL, INTENT(INOUT)  ::         m_hybi
     777!   REAL,  DIMENSION( ims:ime, paerlev, jms:jme, n_aerosolc ), OPTIONAL,     &
     778!          INTENT(INOUT) ::                      aerosolc_1, aerosolc_2
     779!
     780!   REAL,  DIMENSION(levsiz), OPTIONAL, INTENT(INOUT)  ::          PIN
     781!
     782!   INTEGER , INTENT(INOUT)        :: STEPRA
     783!   INTEGER :: isn
     784!
     785!   REAL , DIMENSION( kms:kme ) , INTENT(IN) :: sfull, shalf
     786!   REAL , DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::           &
     787!                                                           RTHRATEN, &
     788!                                                         RTHRATENLW, &
     789!                                                         RTHRATENSW, &
     790!                                                             CLDFRA
     791!   REAL , DIMENSION( ims:ime , jms:jme ) , INTENT(INOUT) :: EMISS
     792!   LOGICAL :: etalw = .false.
     793!   LOGICAL :: camlw = .false.
     794!   LOGICAL :: etamp = .false.
     795!   integer :: month,iday
     796!   INTEGER :: i, j, k, itf, jtf, ktf
     797!!---------------------------------------------------------------------
     798!
     799!   jtf=min0(jte,jde-1)
     800!   ktf=min0(kte,kde-1)
     801!   itf=min0(ite,ide-1)
     802!
     803!!---------------------------------------------------------------------
     804!
     805!!-- calculate radiation time step
     806!
     807!    STEPRA = nint(RADT*60./DT)
     808!    STEPRA = max(STEPRA,1)
     809!
     810!!-- initialization
     811!
     812!   IF(start_of_simulation)THEN
     813!     DO j=jts,jtf
     814!     DO k=kts,ktf
     815!     DO i=its,itf
     816!        RTHRATEN(i,k,j)=0.
     817!        RTHRATENLW(i,k,j)=0.
     818!        RTHRATENSW(i,k,j)=0.
     819!        CLDFRA(i,k,j)=0.
     820!     ENDDO
     821!     ENDDO
     822!     ENDDO
     823!   ENDIF
     824!
     825!!-- find out which microphysics option is used first
     826!
     827!   mp_select: SELECT CASE(config_flags%mp_physics)
     828!
     829!        CASE (ETAMPNEW)
     830!             etamp = .true.
     831!
     832!   END SELECT mp_select
     833!
     834!!-- chose long wave radiation scheme
     835!
     836!   lwrad_select: SELECT CASE(config_flags%ra_lw_physics)
     837!
     838!        CASE (RRTMSCHEME)
     839!             CALL rrtminit(                                 &
     840!                           allowed_to_read ,                &
     841!                           ids, ide, jds, jde, kds, kde,    &
     842!                           ims, ime, jms, jme, kms, kme,    &
     843!                           its, ite, jts, jte, kts, kte     )
     844!
     845!        CASE (CAMLWSCHEME)
     846!#ifdef MAC_KLUDGE
     847!             CALL wrf_error_fatal ( 'CAM radiation scheme not supported under the chosen build configuration' )
     848!#endif
     849!             IF ( PRESENT( OZMIXM ) .AND. PRESENT( PIN ) .AND. &
     850!                  PRESENT(M_PS_1) .AND. PRESENT(M_PS_2) .AND.  &
     851!                  PRESENT(M_HYBI) .AND. PRESENT(AEROSOLC_1)    &
     852!                  .AND. PRESENT(AEROSOLC_2)) THEN
     853!             CALL camradinit(                                  &
     854!                         R_D,R_V,CP,G,STBOLT,EP_2,shalf,pptop, &
     855!                         ozmixm,pin,levsiz,XLAT,n_ozmixm,      &
     856!                         m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,&
     857!                         paerlev, n_aerosolc,              &
     858!                         ids, ide, jds, jde, kds, kde,     &
     859!                         ims, ime, jms, jme, kms, kme,     &
     860!                         its, ite, jts, jte, kts, kte      )
     861!             ELSE
     862!                CALL wrf_error_fatal ( 'arguments not present for calling cam radiation' )
     863!             ENDIF
     864!
     865!             camlw = .true.
     866!
     867!        CASE (GFDLLWSCHEME)
     868!             CALL nl_get_start_month(id,month)
     869!             CALL nl_get_start_day(id,iday)
     870!             CALL gfdletainit(emiss,sfull,shalf,pptop,      &
     871!                              julyr,month,iday,gmt,         &
     872!                              config_flags,allowed_to_read, &
     873!                              ids, ide, jds, jde, kds, kde, &
     874!                              ims, ime, jms, jme, kms, kme, &
     875!                              its, ite, jts, jte, kts, kte  )
     876!             etalw = .true.
     877!        CASE DEFAULT
     878!
     879!   END SELECT lwrad_select
     880!!-- initialize short wave radiation scheme
     881!
     882!   swrad_select: SELECT CASE(config_flags%ra_sw_physics)
     883!
     884!        CASE (SWRADSCHEME)
     885!             CALL swinit(                                  &
     886!                         swrad_scat,                       &
     887!                         allowed_to_read ,                 &
     888!                         ids, ide, jds, jde, kds, kde,     &
     889!                         ims, ime, jms, jme, kms, kme,     &
     890!                         its, ite, jts, jte, kts, kte      )
     891!
     892!        CASE (CAMSWSCHEME)
     893!#ifdef MAC_KLUDGE
     894!             CALL wrf_error_fatal ( 'CAM radiation scheme not supported under the chosen build configuration' )
     895!#endif
     896!             IF(.not.camlw)THEN
     897!             CALL camradinit(                              &
     898!                         R_D,R_V,CP,G,STBOLT,EP_2,shalf,pptop,               &
     899!                         ozmixm,pin,levsiz,XLAT,n_ozmixm,     &
     900!                         m_ps_1,m_ps_2,m_hybi,aerosolc_1,aerosolc_2,&
     901!                         paerlev, n_aerosolc,              &
     902!                         ids, ide, jds, jde, kds, kde,     &
     903!                         ims, ime, jms, jme, kms, kme,     &
     904!                         its, ite, jts, jte, kts, kte      )
     905!             ENDIF
     906!
     907!        CASE (GSFCSWSCHEME)
     908!             CALL gsfc_swinit(cen_lat, allowed_to_read )
     909!
     910!        CASE (GFDLSWSCHEME)
     911!             IF(.not.etalw)THEN
     912!             CALL nl_get_start_month(id,month)
     913!             CALL nl_get_start_day(id,iday)
     914!             CALL gfdletainit(emiss,sfull,shalf,pptop,      &
     915!                              julyr,month,iday,gmt,         &
     916!                              config_flags,allowed_to_read, &
     917!                              ids, ide, jds, jde, kds, kde, &
     918!                              ims, ime, jms, jme, kms, kme, &
     919!                              its, ite, jts, jte, kts, kte  )
     920!             ENDIF
     921!
     922!        CASE DEFAULT
     923!
     924!   END SELECT swrad_select
     925!
     926!   END SUBROUTINE ra_init
     927!
     928!   SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN,  &
     929!                RQVBLTEN,RQCBLTEN,RQIBLTEN,TSK,TMN,             &
     930!                config_flags,restart,UST,LOWLYR,TSLB,ZS,DZS,    &
     931!                num_soil_layers,TKE_MYJ,EXCH_H,VEGFRA,          &
     932!                SNOW,SNOWC, CANWAT,SMSTAV,                      &
     933!                SMSTOT, SFCRUNOFF,UDRUNOFF,ACSNOW,ACSNOM,       &
     934!                IVGTYP,ISLTYP,SMOIS,SMFR3D,mavail,              &
     935!                SNOWH,SH2O,FNDSOILW, FNDSNOWH,                  &
     936!#if  ( NMM_CORE == 1 )
     937!                Z0,XLAND,XICE,                                  &
     938!#else
     939!                ZNT,XLAND,XICE,                                 &
     940!#endif
     941!                SFCEVP,GRDFLX,                                  &
     942!                allowed_to_read,                                &
     943!!                num_roof_layers,num_wall_layers,num_road_layers,& !Optional urban
     944!                DZR, DZB, DZG,                                  & !Optional urban
     945!                TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D,   & !Optional urban
     946!                XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D,    & !Optional urban
     947!                TRL_URB3D, TBL_URB3D, TGL_URB3D,                & !Optional urban
     948!                SH_URB2D,LH_URB2D,G_URB2D,RN_URB2D,             & !Optional urban
     949!                TS_URB2D, FRC_URB2D, UTYPE_URB2D,UCMCALL,       & !Optional urban
     950!                ids, ide, jds, jde, kds, kde,                   &
     951!                ims, ime, jms, jme, kms, kme,                   &
     952!                its, ite, jts, jte, kts, kte                    )
     953!!--------------------------------------------------------------------
     954!   USE module_sf_sfclay
     955!   USE module_sf_slab
     956!   USE module_bl_ysu
     957!   USE module_bl_mrf
     958!   USE module_bl_gfs
     959!   USE module_sf_myjsfc
     960!   USE module_sf_noahlsm
     961!   USE module_sf_urban
     962!   USE module_sf_ruclsm
     963!   USE module_bl_myjpbl
     964!#if (NMM_CORE == 1)
     965!   USE module_sf_lsm_nmm
     966!#endif
     967!!--------------------------------------------------------------------
     968!   IMPLICIT NONE
     969!!--------------------------------------------------------------------
     970!   TYPE (grid_config_rec_type) ::     config_flags
     971!   LOGICAL , INTENT(IN)        :: restart
     972!   LOGICAL, INTENT(IN)         ::   FNDSOILW, FNDSNOWH
     973!
     974!   INTEGER , INTENT(IN)        ::     ids, ide, jds, jde, kds, kde, &
     975!                                      ims, ime, jms, jme, kms, kme, &
     976!                                      its, ite, jts, jte, kts, kte
     977!   INTEGER , INTENT(IN)        ::     num_soil_layers
     978!   INTEGER , INTENT(IN)        ::     UCMCALL
     979!
     980!   REAL ,    INTENT(IN)        ::     DT, BLDT
     981!   INTEGER , INTENT(INOUT)     ::     STEPBL
     982!
     983!   REAL,     DIMENSION( ims:ime , 1:num_soil_layers , jms:jme ),    &
     984!             INTENT(OUT) :: SMFR3D
     985!
     986!   REAL,     DIMENSION( ims:ime , 1:num_soil_layers , jms:jme ),&
     987!                   INTENT(INOUT) :: SMOIS,SH2O,TSLB
     988!
     989!   REAL,    DIMENSION( ims:ime, jms:jme )                     , &
     990!            INTENT(INOUT)    ::                           SNOW, &
     991!                                                         SNOWH, &
     992!                                                         SNOWC, &
     993!                                                        CANWAT, &
     994!                                                        MAVAIL, &
     995!                                                        SMSTAV, &
     996!                                                        SMSTOT, &
     997!                                                     SFCRUNOFF, &
     998!                                                      UDRUNOFF, &
     999!                                                        ACSNOW, &
     1000!                                                        VEGFRA, &
     1001!                                                        ACSNOM, &
     1002!                                                        SFCEVP, &
     1003!                                                        GRDFLX, &
     1004!                                                           UST, &
     1005!#if ( NMM_CORE == 1 )
     1006!                                                            Z0, &
     1007!#else
     1008!                                                           ZNT, &
     1009!#endif
     1010!                                                         XLAND, &
     1011!                                                         XICE
     1012!
     1013!   INTEGER, DIMENSION( ims:ime, jms:jme )                     , &
     1014!            INTENT(INOUT)    ::                         IVGTYP, &
     1015!                                                        ISLTYP, &
     1016!                                                        LOWLYR
     1017!
     1018!
     1019!   REAL,     DIMENSION(1:num_soil_layers), INTENT(INOUT)  ::  ZS,DZS
     1020!
     1021!   REAL,     DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::       &
     1022!                                                           RUBLTEN, &
     1023!                                                           RVBLTEN, &
     1024!                                                         EXCH_H,   &
     1025!                                                          RTHBLTEN, &
     1026!                                                          RQVBLTEN, &
     1027!                                                          RQCBLTEN, &
     1028!                                                          RQIBLTEN, &
     1029!                                                          TKE_MYJ
     1030!
     1031!   REAL,  DIMENSION( ims:ime , jms:jme ) , INTENT(IN) ::     TSK
     1032!   REAL,  DIMENSION( ims:ime , jms:jme ) , INTENT(INOUT) ::  TMN
     1033!   LOGICAL,  INTENT(IN)           :: allowed_to_read
     1034!   INTEGER :: isn, isfc
     1035!
     1036!!URBAN
     1037!!   REAL, DIMENSION(1:num_roof_layers), INTENT(INOUT) :: DZR  !Optional urban
     1038!!   REAL, DIMENSION(1:num_wall_layers), INTENT(INOUT) :: DZB  !Optional urban
     1039!!   REAL, DIMENSION(1:num_road_layers), INTENT(INOUT) :: DZG  !Optional urban
     1040!    REAL, OPTIONAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZR  !Optional urban
     1041!    REAL, OPTIONAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZB  !Optional urban
     1042!    REAL, OPTIONAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZG  !Optional urban
     1043!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TR_URB2D !Optional urban
     1044!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TB_URB2D !Optional urban
     1045!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TG_URB2D !Optional urban
     1046!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TC_URB2D !Optional urban
     1047!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QC_URB2D !Optional urban
     1048!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXR_URB2D !Optional urban
     1049!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXB_URB2D !Optional urban
     1050!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXG_URB2D !Optional urban
     1051!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXC_URB2D !Optional urban
     1052!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SH_URB2D !Optional urban
     1053!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: LH_URB2D !Optional urban
     1054!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: G_URB2D !Optional urban
     1055!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: RN_URB2D !Optional urban
     1056!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TS_URB2D !Optional urban
     1057!    REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FRC_URB2D !Optional urban
     1058!    INTEGER, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: UTYPE_URB2D !Optional urban
     1059!!    REAL, DIMENSION( ims:ime, 1:num_roof_layers, jms:jme ), INTENT(INOUT) :: TRL_URB3D !Optional urban
     1060!!    REAL, DIMENSION( ims:ime, 1:num_wall_layers, jms:jme ), INTENT(INOUT) :: TBL_URB3D !Optional urban
     1061!!    REAL, DIMENSION( ims:ime, 1:num_road_layers, jms:jme ), INTENT(INOUT) :: TGL_URB3D !Optional urban
     1062!    REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), INTENT(INOUT) :: TRL_URB3D !Optional urban
     1063!    REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), INTENT(INOUT) :: TBL_URB3D !Optional urban
     1064!    REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), INTENT(INOUT) :: TGL_URB3D !Optional urban
     1065!
     1066!
     1067!!-- calculate pbl time step
     1068!
     1069!   STEPBL = nint(BLDT*60./DT)
     1070!   STEPBL = max(STEPBL,1)
     1071!
     1072!
     1073!!-- initialize surface layer scheme
     1074!
     1075!   sfclay_select: SELECT CASE(config_flags%sf_sfclay_physics)
     1076!
     1077!      CASE (SFCLAYSCHEME)
     1078!           CALL sfclayinit( allowed_to_read )
     1079!           isfc = 1
     1080!      CASE (MYJSFCSCHEME)
     1081!           CALL myjsfcinit(LOWLYR,UST,                         &
     1082!#if ( NMM_CORE == 1 )
     1083!                                      Z0,                      &
     1084!#else
     1085!                                      ZNT,                     &
     1086!#endif
     1087!                                          XLAND,XICE,          &
     1088!                         IVGTYP,restart,                       &
     1089!                         allowed_to_read ,                     &
     1090!                         ids, ide, jds, jde, kds, kde,         &
     1091!                         ims, ime, jms, jme, kms, kme,         &
     1092!                         its, ite, jts, jte, kts, kte          )
     1093!           isfc = 2
     1094!
     1095!      CASE (GFSSFCSCHEME)
     1096!           CALL myjsfcinit(LOWLYR,UST,                         &
     1097!#if ( NMM_CORE == 1 )
     1098!                                      Z0,                      &
     1099!#else
     1100!                                      ZNT,                     &
     1101!#endif
     1102!                                          XLAND,XICE,          &
     1103!                         IVGTYP,restart,                       &
     1104!                         allowed_to_read ,                     &
     1105!                         ids, ide, jds, jde, kds, kde,         &
     1106!                         ims, ime, jms, jme, kms, kme,         &
     1107!                         its, ite, jts, jte, kts, kte          )
     1108!           isfc = 1
     1109!
     1110!      CASE DEFAULT
     1111!
     1112!   END SELECT sfclay_select
     1113!
     1114!
     1115!!-- initialize surface scheme
     1116!
     1117!   sfc_select: SELECT CASE(config_flags%sf_surface_physics)
     1118!
     1119!      CASE (SLABSCHEME)
     1120!           CALL slabinit(TSK,TMN,                              &
     1121!                         TSLB,ZS,DZS,num_soil_layers,          &
     1122!                         restart,                              &
     1123!                         allowed_to_read ,                     &
     1124!                         ids, ide, jds, jde, kds, kde,         &
     1125!                         ims, ime, jms, jme, kms, kme,         &
     1126!                         its, ite, jts, jte, kts, kte          )
     1127!#if (NMM_CORE == 1)
     1128!      CASE (NMMLSMSCHEME)
     1129!           CALL nmmlsminit(isn,XICE,VEGFRA,SNOW,SNOWC, CANWAT,SMSTAV, &
     1130!                     SMSTOT, SFCRUNOFF,UDRUNOFF,GRDFLX,ACSNOW,     &
     1131!                     ACSNOM,IVGTYP,ISLTYP,TSLB,SMOIS,DZS,SFCEVP,   &
     1132!                     TMN,                                          &
     1133!                     num_soil_layers,                              &
     1134!                     allowed_to_read ,                             &
     1135!                     ids,ide, jds,jde, kds,kde,                    &
     1136!                     ims,ime, jms,jme, kms,kme,                    &
     1137!                     its,ite, jts,jte, kts,kte                     )
     1138!#endif
     1139!      CASE (LSMSCHEME)
     1140!          CALL LSMINIT(VEGFRA,SNOW,SNOWC,SNOWH,CANWAT,SMSTAV,  &
     1141!                     SMSTOT, SFCRUNOFF,UDRUNOFF,ACSNOW,        &
     1142!                     ACSNOM,IVGTYP,ISLTYP,TSLB,SMOIS,SH2O,ZS,DZS, &
     1143!                     FNDSOILW, FNDSNOWH,                       &
     1144!                     num_soil_layers, restart,                 &
     1145!                     allowed_to_read ,                         &
     1146!                     ids,ide, jds,jde, kds,kde,                &
     1147!                     ims,ime, jms,jme, kms,kme,                &
     1148!                     its,ite, jts,jte, kts,kte                 )
     1149!
     1150!!URBAN
     1151!          IF(UCMCALL.eq.1) THEN
     1152!
     1153!             IF ( PRESENT( FRC_URB2D ) .AND. PRESENT( UTYPE_URB2D )) THEN
     1154!
     1155!                CALL urban_param_init(DZR,DZB,DZG,num_soil_layers                    & !urban
     1156!                                )
     1157!!                                num_roof_layers,num_wall_layers,road_soil_layers)   !urban
     1158!                CALL urban_var_init(TSK,TSLB,TMN,IVGTYP,                             & !urban
     1159!                              ims,ime,jms,jme,num_soil_layers,                 & !urban
     1160!!                              num_roof_layers,num_wall_layers,num_road_layers, & !urban
     1161!                              XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D,     & !urban
     1162!                              TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D,    & !urban
     1163!                              TRL_URB3D,TBL_URB3D,TGL_URB3D,                   & !urban
     1164!                              SH_URB2D,LH_URB2D,G_URB2D,RN_URB2D, TS_URB2D,    & ! urban
     1165!                              FRC_URB2D, UTYPE_URB2D)                            !urban
     1166!             ELSE
     1167!                CALL wrf_error_fatal ( 'arguments not present for calling urban model' )
     1168!             ENDIF
     1169!          ENDIF
     1170!
     1171!
     1172!      CASE (RUCLSMSCHEME)
     1173!!          if(isfc .ne. 2)CALL wrf_error_fatal &
     1174!!           ( 'module_physics_init: use myjsfc and myjpbl scheme for this lsm option' )
     1175!           CALL lsmrucinit( SMFR3D,TSLB,SMOIS,ISLTYP,mavail,       &
     1176!                     num_soil_layers, restart,                     &
     1177!                     allowed_to_read ,                             &
     1178!                     ids,ide, jds,jde, kds,kde,                    &
     1179!                     ims,ime, jms,jme, kms,kme,                    &
     1180!                     its,ite, jts,jte, kts,kte                     )
     1181!
     1182!      CASE DEFAULT
     1183!
     1184!   END SELECT sfc_select
     1185!
     1186!
     1187!!-- initialize pbl scheme
     1188!
     1189!   pbl_select: SELECT CASE(config_flags%bl_pbl_physics)
     1190!
     1191!      CASE (YSUSCHEME)
     1192!           if(isfc .ne. 1)CALL wrf_error_fatal &
     1193!            ( 'module_physics_init: use sfclay scheme for this pbl option' )
     1194!           CALL ysuinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,    &
     1195!                        RQCBLTEN,RQIBLTEN,P_QI,               &
     1196!                        PARAM_FIRST_SCALAR,                   &
     1197!                        restart,                              &
     1198!                        allowed_to_read ,                     &
     1199!                        ids, ide, jds, jde, kds, kde,         &
     1200!                        ims, ime, jms, jme, kms, kme,         &
     1201!                        its, ite, jts, jte, kts, kte          )
     1202!      CASE (MRFSCHEME)
     1203!           if(isfc .ne. 1)CALL wrf_error_fatal &
     1204!            ( 'module_physics_init: use sfclay scheme for this pbl option' )
     1205!           CALL mrfinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,    &
     1206!                        RQCBLTEN,RQIBLTEN,P_QI,               &
     1207!                        PARAM_FIRST_SCALAR,                   &
     1208!                        restart,                              &
     1209!                        allowed_to_read ,                     &
     1210!                        ids, ide, jds, jde, kds, kde,         &
     1211!                        ims, ime, jms, jme, kms, kme,         &
     1212!                        its, ite, jts, jte, kts, kte          )
     1213!      CASE (GFSSCHEME)
     1214!           if(isfc .ne. 1)CALL wrf_error_fatal &
     1215!            ( 'module_physics_init: use sfclay scheme for this pbl option' )
     1216!           CALL gfsinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,    &
     1217!                        RQCBLTEN,RQIBLTEN,P_QI,               &
     1218!                        PARAM_FIRST_SCALAR,                   &
     1219!                        restart,                              &
     1220!                        allowed_to_read ,                     &
     1221!                        ids, ide, jds, jde, kds, kde,         &
     1222!                        ims, ime, jms, jme, kms, kme,         &
     1223!                        its, ite, jts, jte, kts, kte          )
     1224!      CASE (MYJPBLSCHEME)
     1225!           if(isfc .ne. 2)CALL wrf_error_fatal &
     1226!            ( 'module_physics_init: use myjsfc scheme for this pbl option' )
     1227!           CALL myjpblinit(RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN, &
     1228!                        TKE_MYJ,EXCH_H,restart,               &
     1229!                        allowed_to_read ,                     &
     1230!                        ids, ide, jds, jde, kds, kde,         &
     1231!                        ims, ime, jms, jme, kms, kme,         &
     1232!                        its, ite, jts, jte, kts, kte          )
     1233!      CASE DEFAULT
     1234!
     1235!   END SELECT pbl_select
     1236!
     1237!   END SUBROUTINE bl_init
     1238!
     1239!!==================================================================
     1240!   SUBROUTINE cu_init(STEPCU,CUDT,DT,RTHCUTEN,RQVCUTEN,RQRCUTEN,  &
     1241!                      RQCCUTEN,RQSCUTEN,RQICUTEN,NCA,RAINC,       &
     1242!                      RAINCV,W0AVG,config_flags,restart,          &
     1243!                      CLDEFI,LOWLYR,MASS_FLUX,                    &
     1244!                      RTHFTEN, RQVFTEN,                           &
     1245!                      APR_GR,APR_W,APR_MC,APR_ST,APR_AS,          &
     1246!                      APR_CAPMA,APR_CAPME,APR_CAPMI,              &
     1247!                      allowed_to_read, start_of_simulation,       &
     1248!                      ids, ide, jds, jde, kds, kde,               &
     1249!                      ims, ime, jms, jme, kms, kme,               &
     1250!                      its, ite, jts, jte, kts, kte                )
     1251!!------------------------------------------------------------------
     1252!   USE module_cu_kf
     1253!   USE module_cu_kfeta
     1254!   USE MODULE_CU_BMJ
     1255!   USE module_cu_gd
     1256!   USE module_cu_sas
     1257!!------------------------------------------------------------------
     1258!   IMPLICIT NONE
     1259!!------------------------------------------------------------------
     1260!   TYPE (grid_config_rec_type) ::     config_flags
     1261!   LOGICAL , INTENT(IN)        :: restart
     1262!
     1263!
     1264!   INTEGER , INTENT(IN)        :: ids, ide, jds, jde, kds, kde,   &
     1265!                                  ims, ime, jms, jme, kms, kme,   &
     1266!                                  its, ite, jts, jte, kts, kte
     1267!
     1268!   REAL ,    INTENT(IN)        :: DT, CUDT
     1269!   LOGICAL , INTENT(IN)        :: start_of_simulation
     1270!   LOGICAL , INTENT(IN)        :: allowed_to_read
     1271!   INTEGER , INTENT(INOUT)     :: STEPCU
     1272!
     1273!   REAL ,   DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(INOUT) ::    &
     1274!            RTHCUTEN, RQVCUTEN, RQCCUTEN, RQRCUTEN, RQICUTEN,     &
     1275!            RQSCUTEN
     1276!
     1277!   REAL ,   DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) :: W0AVG
     1278!
     1279!   REAL,    DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::    &
     1280!            RTHFTEN, RQVFTEN
     1281!
     1282!   REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(OUT):: RAINC, RAINCV
     1283!
     1284!   REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(OUT):: CLDEFI
     1285!
     1286!   REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: NCA
     1287!
     1288!   REAL ,   DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: MASS_FLUX,   &
     1289!                                   APR_GR,APR_W,APR_MC,APR_ST,APR_AS,    &
     1290!                                   APR_CAPMA,APR_CAPME,APR_CAPMI
     1291!
     1292!   INTEGER, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: LOWLYR
     1293!
     1294!! LOCAL VAR
     1295!   
     1296!  INTEGER :: i,j,itf,jtf
     1297!
     1298!!--------------------------------------------------------------------
     1299!
     1300!!-- calculate cumulus parameterization time step
     1301!
     1302!   itf=min0(ite,ide-1)
     1303!   jtf=min0(jte,jde-1)
     1304!!
     1305!   STEPCU = nint(CUDT*60./DT)
     1306!   STEPCU = max(STEPCU,1)
     1307!
     1308!!-- initialization
     1309!
     1310!   IF(start_of_simulation)THEN
     1311!     DO j=jts,jtf
     1312!     DO i=its,itf
     1313!        RAINC(i,j)=0.
     1314!        RAINCV(i,j)=0.
     1315!     ENDDO
     1316!     ENDDO
     1317!   ENDIF
     1318!
     1319!   cps_select: SELECT CASE(config_flags%cu_physics)
     1320!
     1321!     CASE (KFSCHEME)
     1322!          CALL kfinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,        &
     1323!                      RQICUTEN,RQSCUTEN,NCA,W0AVG,P_QI,P_QS,      &
     1324!                      PARAM_FIRST_SCALAR,restart,                 &
     1325!                      allowed_to_read ,                           &
     1326!                      ids, ide, jds, jde, kds, kde,               &
     1327!                      ims, ime, jms, jme, kms, kme,               &
     1328!                      its, ite, jts, jte, kts, kte                )
     1329!
     1330!     CASE (BMJSCHEME)
     1331!          CALL bmjinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,       &
     1332!                      CLDEFI,LOWLYR,cp,r_d,restart,               &
     1333!                      allowed_to_read ,                           &
     1334!                      ids, ide, jds, jde, kds, kde,               &
     1335!                      ims, ime, jms, jme, kms, kme,               &
     1336!                      its, ite, jts, jte, kts, kte                )
     1337!
     1338!     CASE (KFETASCHEME)
     1339!          CALL kf_eta_init(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,   &
     1340!                      RQICUTEN,RQSCUTEN,NCA,W0AVG,P_QI,P_QS,      &
     1341!                      SVP1,SVP2,SVP3,SVPT0,                       &
     1342!                      PARAM_FIRST_SCALAR,restart,                 &
     1343!                      allowed_to_read ,                           &
     1344!                      ids, ide, jds, jde, kds, kde,               &
     1345!                      ims, ime, jms, jme, kms, kme,               &
     1346!                      its, ite, jts, jte, kts, kte                )
     1347!     CASE (GDSCHEME)
     1348!          CALL gdinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQICUTEN,        &
     1349!                      MASS_FLUX,cp,restart,                       &
     1350!                      P_QC,P_QI,PARAM_FIRST_SCALAR,               &
     1351!                      RTHFTEN, RQVFTEN,                           &
     1352!                      APR_GR,APR_W,APR_MC,APR_ST,APR_AS,          &
     1353!                      APR_CAPMA,APR_CAPME,APR_CAPMI,              &
     1354!                      allowed_to_read ,                           &
     1355!                      ids, ide, jds, jde, kds, kde,               &
     1356!                      ims, ime, jms, jme, kms, kme,               &
     1357!                      its, ite, jts, jte, kts, kte                )
     1358!     CASE (SASSCHEME)
     1359!          CALL sasinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQICUTEN,       &
     1360!                      restart,P_QC,P_QI,PARAM_FIRST_SCALAR,       &
     1361!                      allowed_to_read ,                           &
     1362!                      ids, ide, jds, jde, kds, kde,               &
     1363!                      ims, ime, jms, jme, kms, kme,               &
     1364!                      its, ite, jts, jte, kts, kte                )
     1365!
     1366!     CASE DEFAULT
     1367!
     1368!   END SELECT cps_select
     1369!
     1370!   END SUBROUTINE cu_init
     1371!
     1372!!==================================================================
     1373!   SUBROUTINE mp_init(RAINNC,config_flags,restart,warm_rain,      &
     1374!                      adv_moist_cond,                             &
     1375!                      MPDT, DT, DX, DY, LOWLYR,                   & ! for eta mp
     1376!                      F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY,           & ! for eta mp
     1377!                      mp_restart_state,tbpvs_state,tbpvs0_state,   & ! eta mp
     1378!                      allowed_to_read, start_of_simulation,       &
     1379!                      ids, ide, jds, jde, kds, kde,               &
     1380!                      ims, ime, jms, jme, kms, kme,               &
     1381!                      its, ite, jts, jte, kts, kte                )
     1382!!------------------------------------------------------------------
     1383!   USE module_mp_ncloud3
     1384!   USE module_mp_ncloud5
     1385!   USE module_mp_wsm3
     1386!   USE module_mp_wsm5
     1387!   USE module_mp_wsm6
     1388!   USE module_mp_etanew
     1389!   USE module_mp_thompson
     1390!!------------------------------------------------------------------
     1391!   IMPLICIT NONE
     1392!!------------------------------------------------------------------
     1393!! Arguments
     1394!   TYPE (grid_config_rec_type) ::     config_flags
     1395!   LOGICAL , INTENT(IN)        :: restart
     1396!   LOGICAL , INTENT(OUT)       :: warm_rain,adv_moist_cond
     1397!   REAL    , INTENT(IN)        :: MPDT, DT, DX, DY
     1398!   LOGICAL , INTENT(IN)        :: start_of_simulation
     1399!
     1400!   INTEGER , INTENT(IN)        :: ids, ide, jds, jde, kds, kde,   &
     1401!                                  ims, ime, jms, jme, kms, kme,   &
     1402!                                  its, ite, jts, jte, kts, kte
     1403!
     1404!   INTEGER , DIMENSION( ims:ime , jms:jme ) ,INTENT(INOUT)  :: LOWLYR
     1405!   REAL,     DIMENSION( ims:ime , jms:jme ) , INTENT(INOUT) :: RAINNC
     1406!   REAL,     DIMENSION( ims:ime , kms:kme, jms:jme ) , INTENT(INOUT) :: &
     1407!                                  F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY
     1408!   REAL , DIMENSION(:) ,INTENT(INOUT)  :: mp_restart_state,tbpvs_state,tbpvs0_state
     1409!   LOGICAL , INTENT(IN)  :: allowed_to_read
     1410!
     1411!! Local
     1412!   INTEGER :: i, j, itf, jtf
     1413!
     1414!   warm_rain = .false.
     1415!   adv_moist_cond = .true.
     1416!   itf=min0(ite,ide-1)
     1417!   jtf=min0(jte,jde-1)
     1418!
     1419!   IF(start_of_simulation)THEN
     1420!     DO j=jts,jtf
     1421!     DO i=its,itf
     1422!        RAINNC(i,j) = 0.
     1423!     ENDDO
     1424!     ENDDO
     1425!   ENDIF
     1426!
     1427!   mp_select: SELECT CASE(config_flags%mp_physics)
     1428!
     1429!     CASE (KESSLERSCHEME)
     1430!          warm_rain = .true.
     1431!     CASE (WSM3SCHEME)
     1432!          CALL wsm3init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
     1433!     CASE (WSM5SCHEME)
     1434!          CALL wsm5init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
     1435!     CASE (WSM6SCHEME)
     1436!          CALL wsm6init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
     1437!     CASE (ETAMPNEW)
     1438!         adv_moist_cond = .false.
     1439!         CALL etanewinit (MPDT,DT,DX,DY,LOWLYR,restart,           &
     1440!                          F_ICE_PHY,F_RAIN_PHY,F_RIMEF_PHY,       &
     1441!                          mp_restart_state,tbpvs_state,tbpvs0_state,&
     1442!                          allowed_to_read,                        &
     1443!                          ids, ide, jds, jde, kds, kde,           &
     1444!                          ims, ime, jms, jme, kms, kme,           &
     1445!                          its, ite, jts, jte, kts, kte            )
     1446!     CASE (THOMPSON)
     1447!         CALL thompson_init
     1448!     CASE (NCEPCLOUD3)
     1449!          CALL ncloud3init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
     1450!     CASE (NCEPCLOUD5)
     1451!          CALL ncloud5init(rhoair0,rhowater,rhosnow,cliq,cv, allowed_to_read )
     1452!
     1453!     CASE DEFAULT
     1454!
     1455!   END SELECT mp_select
     1456!
     1457!   END SUBROUTINE mp_init
     1458!
     1459!#if  ( EM_CORE == 1 )
     1460!!==========================================================
     1461!   SUBROUTINE fg_init(STEPFG,FGDT,DT,id,RUNDGDTEN,RVNDGDTEN,    &
     1462!                RTHNDGDTEN,RQVNDGDTEN,RMUNDGDTEN,               &
     1463!                config_flags,restart,                           &
     1464!                allowed_to_read ,                               &
     1465!                ids, ide, jds, jde, kds, kde,                   &
     1466!                ims, ime, jms, jme, kms, kme,                   &
     1467!                its, ite, jts, jte, kts, kte                    )
     1468!
     1469!
     1470!!--------------------------------------------------------------------
     1471!   USE module_fdda_psufddagd
     1472!!--------------------------------------------------------------------
     1473!   IMPLICIT NONE
     1474!!--------------------------------------------------------------------
     1475!   TYPE (grid_config_rec_type) ::     config_flags
     1476!   LOGICAL , INTENT(IN)        :: restart
     1477!
     1478!   INTEGER , INTENT(IN)        ::     ids, ide, jds, jde, kds, kde, &
     1479!                                      ims, ime, jms, jme, kms, kme, &
     1480!                                      its, ite, jts, jte, kts, kte
     1481!
     1482!   REAL ,    INTENT(IN)        ::     DT, FGDT
     1483!   INTEGER , INTENT(IN)        ::     id
     1484!   INTEGER , INTENT(INOUT)     ::     STEPFG
     1485!   REAL,     DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::       &
     1486!                                                           RUNDGDTEN, &
     1487!                                                           RVNDGDTEN, &
     1488!                                                          RTHNDGDTEN, &
     1489!                                                          RQVNDGDTEN
     1490!   REAL,     DIMENSION( ims:ime , jms:jme ) , INTENT(OUT) :: RMUNDGDTEN
     1491!
     1492!   LOGICAL,  INTENT(IN)           :: allowed_to_read
     1493!!--------------------------------------------------------------------
     1494!
     1495!!-- calculate pbl time step
     1496!
     1497!   STEPFG = nint(FGDT*60./DT)
     1498!   STEPFG = max(STEPFG,1)
     1499!
     1500!
     1501!!-- initialize fdda scheme
     1502!
     1503!   fdda_select: SELECT CASE(config_flags%grid_fdda)
     1504!
     1505!      CASE (PSUFDDAGD)
     1506!           CALL fddagdinit(id,rundgdten,rvndgdten,rthndgdten,rqvndgdten,rmundgdten,&
     1507!               config_flags%run_hours, &
     1508!               config_flags%if_no_pbl_nudging_uv, &
     1509!               config_flags%if_no_pbl_nudging_t, &
     1510!               config_flags%if_no_pbl_nudging_q, &
     1511!               config_flags%if_zfac_uv, &
     1512!               config_flags%k_zfac_uv, &
     1513!               config_flags%if_zfac_t, &
     1514!               config_flags%k_zfac_t, &
     1515!               config_flags%if_zfac_q, &
     1516!               config_flags%k_zfac_q, &
     1517!               config_flags%guv, &
     1518!               config_flags%gt, config_flags%gq, &
     1519!               config_flags%if_ramping, config_flags%dtramp_min, &
     1520!               config_flags%gfdda_end_h, &
     1521!                      restart, allowed_to_read,                    &
     1522!                      ids, ide, jds, jde, kds, kde,                &
     1523!                      ims, ime, jms, jme, kms, kme,                &
     1524!                      its, ite, jts, jte, kts, kte                 )
     1525!      CASE DEFAULT
     1526!
     1527!   END SELECT fdda_select
     1528!
     1529!   END SUBROUTINE fg_init
     1530!
     1531!!-------------------------------------------------------------------
     1532!   SUBROUTINE fdob_init(obs_nudge_opt, maxdom, inest, parid,       &
     1533!                        dx_coarse, restart, obs_twindo, itimestep, &
     1534!                        s_sn_cg, e_sn_cg, s_we_cg, e_we_cg,  &
     1535!                        fdob,                                      &
     1536!                        ids, ide, jds, jde, kds, kde,              &
     1537!                        ims, ime, jms, jme, kms, kme,              &
     1538!                        its, ite, jts, jte, kts, kte               )
     1539!
     1540!
     1541!!--------------------------------------------------------------------
     1542!   USE module_domain
     1543!   USE module_fddaobs_rtfdda
     1544!!--------------------------------------------------------------------
     1545!   IMPLICIT NONE
     1546!!--------------------------------------------------------------------
     1547!   INTEGER , INTENT(IN)    :: maxdom
     1548!   INTEGER , INTENT(IN)    :: obs_nudge_opt(maxdom)
     1549!   INTEGER , INTENT(IN)    :: ids,ide, jds,jde, kds,kde,           &
     1550!                              ims,ime, jms,jme, kms,kme,           &
     1551!                              its,ite, jts,jte, kts,kte
     1552!   INTEGER , INTENT(IN)    :: inest
     1553!   INTEGER , INTENT(IN)    :: parid(maxdom)
     1554!   REAL    , INTENT(IN)    :: dx_coarse
     1555!   LOGICAL , INTENT(IN)    :: restart
     1556!   REAL    , INTENT(INOUT) :: obs_twindo
     1557!   INTEGER , INTENT(IN)    :: itimestep
     1558!   INTEGER, intent(in)     :: s_sn_cg      ! starting north-south coarse-grid index
     1559!   INTEGER, intent(in)     :: e_sn_cg      ! ending   north-south coarse-grid index
     1560!   INTEGER, intent(in)     :: s_we_cg      ! starting west-east   coarse-grid index
     1561!   INTEGER, intent(in)     :: e_we_cg      ! ending   west-east   coarse-grid index
     1562!
     1563!   TYPE(fdob_type), INTENT(INOUT)  :: fdob
     1564!
     1565!   INTEGER                 :: e_sn         ! ending   north-south grid index
     1566!!--------------------------------------------------------------------
     1567!!-- initialize fdda obs-nudging scheme
     1568!
     1569!      e_sn = jde
     1570!      CALL fddaobs_init(obs_nudge_opt, maxdom, inest, parid,       & 
     1571!                        dx_coarse, restart, obs_twindo, itimestep, &
     1572!                        e_sn, s_sn_cg, e_sn_cg, s_we_cg, e_we_cg,  &
     1573!                        fdob,                                      & 
     1574!                        ids,ide, jds,jde, kds,kde,                 & 
     1575!                        ims,ime, jms,jme, kms,kme,                 & 
     1576!                        its,ite, jts,jte, kts,kte)
     1577!
     1578!   END SUBROUTINE fdob_init
     1579!#endif
     1580!
    15731581!--------------------------------------------------------------------
    15741582   SUBROUTINE z2sigma(zf,zh,sf,sh,p_top,pptop,config_flags, &
Note: See TracChangeset for help on using the changeset viewer.