| 1 | !WRF:MEDIATION_LAYER:SOLVER |
|---|
| 2 | |
|---|
| 3 | #define BENCH_START(A) |
|---|
| 4 | #define BENCH_END(A) |
|---|
| 5 | |
|---|
| 6 | MODULE module_first_rk_step_part1 |
|---|
| 7 | |
|---|
| 8 | CONTAINS |
|---|
| 9 | |
|---|
| 10 | SUBROUTINE first_rk_step_part1 ( grid , config_flags & |
|---|
| 11 | , moist , moist_tend & |
|---|
| 12 | , chem , chem_tend & |
|---|
| 13 | , scalar , scalar_tend & |
|---|
| 14 | , fdda3d, fdda2d & |
|---|
| 15 | , ru_tendf, rv_tendf & |
|---|
| 16 | , rw_tendf, t_tendf & |
|---|
| 17 | , ph_tendf, mu_tendf & |
|---|
| 18 | , tke_tend & |
|---|
| 19 | , adapt_step_flag , curr_secs & |
|---|
| 20 | , psim , psih , wspd , gz1oz0 , br , chklowq & |
|---|
| 21 | , cu_act_flag , hol , th_phy & |
|---|
| 22 | , pi_phy , p_phy , t_phy , u_phy , v_phy & |
|---|
| 23 | , dz8w , p8w , t8w , rho_phy , rho & |
|---|
| 24 | , z_at_w , mu_3d & |
|---|
| 25 | , ids, ide, jds, jde, kds, kde & |
|---|
| 26 | , ims, ime, jms, jme, kms, kme & |
|---|
| 27 | , ips, ipe, jps, jpe, kps, kpe & |
|---|
| 28 | , k_start , k_end & |
|---|
| 29 | ) |
|---|
| 30 | USE module_state_description |
|---|
| 31 | USE module_model_constants |
|---|
| 32 | USE module_domain, ONLY : domain |
|---|
| 33 | USE module_configure, ONLY : grid_config_rec_type, model_config_rec |
|---|
| 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 |
|---|
| 41 | USE module_em, ONLY : init_zero_tendency |
|---|
| 42 | !!MARS |
|---|
| 43 | USE module_lmd_driver |
|---|
| 44 | !!MARS |
|---|
| 45 | USE module_big_step_utilities_em, ONLY : phy_prep |
|---|
| 46 | USE module_dm |
|---|
| 47 | IMPLICIT NONE |
|---|
| 48 | |
|---|
| 49 | TYPE ( domain ), INTENT(INOUT) :: grid |
|---|
| 50 | TYPE ( grid_config_rec_type ), INTENT(IN) :: config_flags |
|---|
| 51 | |
|---|
| 52 | INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde, & |
|---|
| 53 | ims, ime, jms, jme, kms, kme, & |
|---|
| 54 | ips, ipe, jps, jpe, kps, kpe |
|---|
| 55 | |
|---|
| 56 | LOGICAL ,INTENT(IN) :: adapt_step_flag |
|---|
| 57 | REAL, INTENT(IN) :: curr_secs |
|---|
| 58 | |
|---|
| 59 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist |
|---|
| 60 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist_tend |
|---|
| 61 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: chem |
|---|
| 62 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: chem_tend |
|---|
| 63 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: scalar |
|---|
| 64 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: scalar_tend |
|---|
| 65 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_fdda3d),INTENT(INOUT) :: fdda3d |
|---|
| 66 | REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d |
|---|
| 67 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim |
|---|
| 68 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih |
|---|
| 69 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wspd |
|---|
| 70 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0 |
|---|
| 71 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: br |
|---|
| 72 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq |
|---|
| 73 | LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag |
|---|
| 74 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: hol |
|---|
| 75 | |
|---|
| 76 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: th_phy |
|---|
| 77 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: pi_phy |
|---|
| 78 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p_phy |
|---|
| 79 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_phy |
|---|
| 80 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: u_phy |
|---|
| 81 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: v_phy |
|---|
| 82 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme) :: w_phy !!MARS aymeric var loc |
|---|
| 83 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: dz8w |
|---|
| 84 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p8w |
|---|
| 85 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t8w |
|---|
| 86 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rho_phy |
|---|
| 87 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rho |
|---|
| 88 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: z_at_w |
|---|
| 89 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: mu_3d |
|---|
| 90 | |
|---|
| 91 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ru_tendf |
|---|
| 92 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rv_tendf |
|---|
| 93 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rw_tendf |
|---|
| 94 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ph_tendf |
|---|
| 95 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_tendf |
|---|
| 96 | REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: tke_tend |
|---|
| 97 | |
|---|
| 98 | REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: mu_tendf |
|---|
| 99 | |
|---|
| 100 | INTEGER , INTENT(IN) :: k_start, k_end |
|---|
| 101 | |
|---|
| 102 | ! Local |
|---|
| 103 | |
|---|
| 104 | REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc |
|---|
| 105 | INTEGER, DIMENSION( ims:ime, jms:jme ) :: shadowmask |
|---|
| 106 | INTEGER :: ij |
|---|
| 107 | INTEGER num_roof_layers |
|---|
| 108 | INTEGER num_wall_layers |
|---|
| 109 | INTEGER num_road_layers |
|---|
| 110 | INTEGER iswater |
|---|
| 111 | INTEGER rk_step |
|---|
| 112 | |
|---|
| 113 | ! initialize all tendencies to zero in order to update physics |
|---|
| 114 | ! tendencies first (separate from dry dynamics). |
|---|
| 115 | |
|---|
| 116 | rk_step = 1 |
|---|
| 117 | |
|---|
| 118 | BENCH_START(init_zero_tend_tim) |
|---|
| 119 | !$OMP PARALLEL DO & |
|---|
| 120 | !$OMP PRIVATE ( ij ) |
|---|
| 121 | |
|---|
| 122 | DO ij = 1 , grid%num_tiles |
|---|
| 123 | |
|---|
| 124 | CALL wrf_debug ( 200 , ' call init_zero_tendency' ) |
|---|
| 125 | CALL init_zero_tendency ( ru_tendf, rv_tendf, rw_tendf, & |
|---|
| 126 | ph_tendf, t_tendf, tke_tend, & |
|---|
| 127 | mu_tendf, & |
|---|
| 128 | moist_tend,chem_tend,scalar_tend, & |
|---|
| 129 | num_moist,num_chem,num_scalar, & |
|---|
| 130 | rk_step, & |
|---|
| 131 | ids, ide, jds, jde, kds, kde, & |
|---|
| 132 | ims, ime, jms, jme, kms, kme, & |
|---|
| 133 | grid%i_start(ij), grid%i_end(ij), & |
|---|
| 134 | grid%j_start(ij), grid%j_end(ij), & |
|---|
| 135 | k_start, k_end ) |
|---|
| 136 | |
|---|
| 137 | END DO |
|---|
| 138 | !$OMP END PARALLEL DO |
|---|
| 139 | BENCH_END(init_zero_tend_tim) |
|---|
| 140 | |
|---|
| 141 | #ifdef DM_PARALLEL |
|---|
| 142 | # include "HALO_EM_PHYS_A.inc" |
|---|
| 143 | #endif |
|---|
| 144 | |
|---|
| 145 | !$OMP PARALLEL DO & |
|---|
| 146 | !$OMP PRIVATE ( ij ) |
|---|
| 147 | DO ij = 1 , grid%num_tiles |
|---|
| 148 | |
|---|
| 149 | CALL wrf_debug ( 200 , ' call phy_prep' ) |
|---|
| 150 | CALL phy_prep ( config_flags, & |
|---|
| 151 | grid%mut, grid%muu, grid%muv, grid%u_2, & |
|---|
| 152 | grid%v_2, grid%w_2, grid%p, grid%pb, grid%alt, & |
|---|
| 153 | grid%ph_2, grid%phb, grid%t_2, grid%tsk, moist, num_moist, & |
|---|
| 154 | mu_3d, rho, & |
|---|
| 155 | th_phy, p_phy, pi_phy, u_phy, v_phy, w_phy, & |
|---|
| 156 | p8w, t_phy, t8w, grid%z, z_at_w, & |
|---|
| 157 | dz8w, grid%fnm, grid%fnp, & |
|---|
| 158 | grid%rthraten, & |
|---|
| 159 | grid%rthblten, grid%rublten, grid%rvblten, & |
|---|
| 160 | grid%rqvblten, grid%rqcblten, grid%rqiblten, & |
|---|
| 161 | grid%rthcuten, grid%rqvcuten, grid%rqccuten, & |
|---|
| 162 | grid%rqrcuten, grid%rqicuten, grid%rqscuten, & |
|---|
| 163 | grid%rthften, grid%rqvften, & |
|---|
| 164 | grid%RUNDGDTEN, grid%RVNDGDTEN, grid%RTHNDGDTEN, & |
|---|
| 165 | grid%RQVNDGDTEN, grid%RMUNDGDTEN, & |
|---|
| 166 | ids, ide, jds, jde, kds, kde, & |
|---|
| 167 | ims, ime, jms, jme, kms, kme, & |
|---|
| 168 | grid%i_start(ij), grid%i_end(ij), & |
|---|
| 169 | grid%j_start(ij), grid%j_end(ij), & |
|---|
| 170 | k_start, k_end ) |
|---|
| 171 | ENDDO |
|---|
| 172 | !$OMP END PARALLEL DO |
|---|
| 173 | |
|---|
| 174 | BENCH_END(phy_prep_tim) |
|---|
| 175 | |
|---|
| 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) |
|---|
| 567 | |
|---|
| 568 | !!****MARS |
|---|
| 569 | IF (config_flags%modif_wrf) THEN |
|---|
| 570 | !!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 571 | ! call to LMD physics ! |
|---|
| 572 | !!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 573 | CALL wrf_debug ( 200 , ' call lmd_driver' ) |
|---|
| 574 | CALL lmd_driver( & |
|---|
| 575 | ! structure |
|---|
| 576 | & id=grid%id,max_dom=grid%max_dom & |
|---|
| 577 | & ,DT=grid%dt & |
|---|
| 578 | & ,ITIMESTEP=grid%itimestep & |
|---|
| 579 | ! position |
|---|
| 580 | & ,XLAT=grid%xlat,XLONG=grid%xlong & |
|---|
| 581 | & ,DX=grid%dx ,DY=grid%dy & |
|---|
| 582 | & ,MSFT=grid%msftx,MSFU=grid%msfux,MSFV=grid%msfvx & |
|---|
| 583 | ! & ,MSFT=grid%msft,MSFU=grid%msfu,MSFV=grid%msfv & |
|---|
| 584 | ! indexes |
|---|
| 585 | & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde & |
|---|
| 586 | & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme & |
|---|
| 587 | & ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1) & |
|---|
| 588 | & ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1) & |
|---|
| 589 | & ,kts=k_start, kte=min(k_end,kde-1) & |
|---|
| 590 | & ,num_tiles=grid%num_tiles & |
|---|
| 591 | ! time variables |
|---|
| 592 | & ,GMT=grid%gmt ,JULYR=grid%julyr ,JULDAY=grid%julday & |
|---|
| 593 | ! output from phy_prep |
|---|
| 594 | & ,P8W=p8w ,DZ8W=dz8w ,T8W=t8w & |
|---|
| 595 | ! Prognostic variables at p points |
|---|
| 596 | ! & ,Z=grid%em_z & |
|---|
| 597 | & ,Z=grid%z & |
|---|
| 598 | ! z is the geopotential height at p points |
|---|
| 599 | ! ... (cf phy_prep in module_big_step_utilities_em) |
|---|
| 600 | & ,HT=grid%ht & |
|---|
| 601 | & ,U=u_phy ,V=v_phy ,W=w_phy & |
|---|
| 602 | & ,TH=th_phy ,T=t_phy & |
|---|
| 603 | & ,P=p_phy ,EXNER=pi_phy ,RHO=rho & |
|---|
| 604 | !!!!!ADDITION CAS IDEALISES |
|---|
| 605 | & ,PTOP=grid%p_top & |
|---|
| 606 | ! physics calls |
|---|
| 607 | & ,RADT=grid%radt & |
|---|
| 608 | & ,CUDT=grid%cudt & |
|---|
| 609 | ! surface temperature and surface pressure |
|---|
| 610 | & ,TSK=grid%tsk,PSFC=grid%psfc & |
|---|
| 611 | ! tendencies for the dynamics |
|---|
| 612 | & ,RTHBLTEN=grid%rthblten ,RUBLTEN=grid%rublten,RVBLTEN=grid%rvblten & |
|---|
| 613 | ! scalars |
|---|
| 614 | ! & ,NUM_3D_S=num_3d_s,SCALAR=grid%scalar & |
|---|
| 615 | & ,NUM_3D_S=num_scalar,SCALAR=grid%scalar & |
|---|
| 616 | & ,NUM_3D_M=num_moist,MOIST=grid%moist & |
|---|
| 617 | ! mode |
|---|
| 618 | & ,MARS_MODE=config_flags%mars & |
|---|
| 619 | #ifdef NEWPHYS |
|---|
| 620 | ! planet |
|---|
| 621 | & ,planet_type=config_flags%planet & |
|---|
| 622 | #endif |
|---|
| 623 | ! added variables |
|---|
| 624 | & ,M_ALBEDO=grid%m_albedo,M_TI=grid%m_ti & |
|---|
| 625 | & ,M_CO2ICE=grid%m_co2ice,M_EMISS=grid%m_emiss & |
|---|
| 626 | & ,M_H2OICE=grid%m_h2oice & |
|---|
| 627 | & ,M_TSOIL=grid%m_tsoil & |
|---|
| 628 | & ,M_Q2=grid%m_q2 & |
|---|
| 629 | & ,M_TSURF=grid%m_tsurf & |
|---|
| 630 | #ifdef NEWPHYS |
|---|
| 631 | & ,M_FLUXRAD=grid%m_fluxrad & |
|---|
| 632 | & ,M_WSTAR=grid%m_wstar & |
|---|
| 633 | & ,M_ISOIL=grid%m_isoil & |
|---|
| 634 | & ,M_DSOIL=grid%m_dsoil & |
|---|
| 635 | & ,M_Z0=grid%m_z0 & |
|---|
| 636 | & ,CST_Z0=config_flags%init_Z0 & |
|---|
| 637 | #endif |
|---|
| 638 | & ,M_GW=grid%m_gw & |
|---|
| 639 | & ,NUM_SOIL_LAYERS=config_flags%num_soil_layers & |
|---|
| 640 | ! cst fields |
|---|
| 641 | & ,CST_AL=config_flags%init_AL & |
|---|
| 642 | & ,CST_TI=config_flags%init_TI & |
|---|
| 643 | & ,ISFFLX=config_flags%isfflx & |
|---|
| 644 | & ,DIFF_OPT=config_flags%diff_opt & |
|---|
| 645 | & ,KM_OPT=config_flags%km_opt & |
|---|
| 646 | & ,HISTORY_INTERVAL=model_config_rec%history_interval(1) & |
|---|
| 647 | !------------------! |
|---|
| 648 | ! OUTPUT VARIABLES ! |
|---|
| 649 | !------------------! |
|---|
| 650 | #ifdef NEWPHYS |
|---|
| 651 | & ,HR_SW=grid%HR_SW & |
|---|
| 652 | & ,HR_LW=grid%HR_LW & |
|---|
| 653 | & ,HR_DYN=grid%HR_DYN & |
|---|
| 654 | & ,DDT=grid%DDT & |
|---|
| 655 | & ,DT_RAD=grid%DT_RAD & |
|---|
| 656 | & ,DT_VDF=grid%DT_VDF & |
|---|
| 657 | & ,DT_AJS=grid%DT_AJS & |
|---|
| 658 | & ,CLOUDFRAC=grid%CLOUDFRAC & |
|---|
| 659 | & ,TOTCLOUDFRAC=grid%TOTCLOUDFRAC & |
|---|
| 660 | & ,GRAIN=grid%GRAIN & |
|---|
| 661 | & ,GSNOW=grid%GSNOW & |
|---|
| 662 | & ,REEVAP=grid%REEVAP & |
|---|
| 663 | & ,SURFRAIN=grid%SURFRAIN & |
|---|
| 664 | & ,ALBEQ=grid%ALBEQ & |
|---|
| 665 | & ,FLUXTOP_DN=grid%FLUXTOP_DN & |
|---|
| 666 | & ,FLUXABS_SW=grid%FLUXABS_SW & |
|---|
| 667 | & ,FLUXTOP_LW=grid%FLUXTOP_LW & |
|---|
| 668 | & ,FLUXSURF_SW=grid%FLUXSURF_SW & |
|---|
| 669 | & ,FLUXSURF_LW=grid%FLUXSURF_LW & |
|---|
| 670 | & ,FLXGRD=grid%FLXGRD & |
|---|
| 671 | & ,LSCEZ=grid%LSCEZ & |
|---|
| 672 | & ,H2OICE_REFF=grid%H2OICE_REFF & |
|---|
| 673 | & ,LATENT_HF=grid%LATENT_HF & |
|---|
| 674 | & ,SWDOWNZ=grid%SWDOWNZ & |
|---|
| 675 | & ,TAU_DUST=grid%TAU_DUST & |
|---|
| 676 | & ,RDUST=grid%RDUST & |
|---|
| 677 | & ,QSURFDUST=grid%QSURFDUST & |
|---|
| 678 | & ,MTOT=grid%MTOT & |
|---|
| 679 | & ,ICETOT=grid%ICETOT & |
|---|
| 680 | & ,VMR_ICE=grid%VMR_ICE & |
|---|
| 681 | & ,TAU_ICE=grid%TAU_ICE & |
|---|
| 682 | & ,RICE=grid%RICE & |
|---|
| 683 | & ,ZMAX=grid%ZMAX & |
|---|
| 684 | & ,HFMAX=grid%HFMAX & |
|---|
| 685 | & ,USTM=grid%USTM & |
|---|
| 686 | & ,HFX=grid%HFX & |
|---|
| 687 | #else |
|---|
| 688 | #include "module_lmd_driver_output4.inc" |
|---|
| 689 | #endif |
|---|
| 690 | & ,SLPX=grid%slpx,SLPY=grid%slpy,RESTART=config_flags%restart) |
|---|
| 691 | ENDIF |
|---|
| 692 | |
|---|
| 693 | !!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 694 | ! call to LMD physics ! |
|---|
| 695 | !!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 696 | !****MARS |
|---|
| 697 | |
|---|
| 698 | END SUBROUTINE first_rk_step_part1 |
|---|
| 699 | |
|---|
| 700 | END MODULE module_first_rk_step_part1 |
|---|
| 701 | |
|---|