PageRenderTime 60ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 1ms

/wrfv2_fire/phys/module_surface_driver.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 4662 lines | 3098 code | 345 blank | 1219 comment | 27 complexity | 2cebd156424e3b0f3c100847e14ccdf1 MD5 | raw file
Possible License(s): AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  1. !WRF:MEDIATION_LAYER:PHYSICS
  2. !
  3. MODULE module_surface_driver
  4. CONTAINS
  5. SUBROUTINE surface_driver( &
  6. & acgrdflx,achfx,aclhf &
  7. & ,acsnom,acsnow,akhs,akms,albedo,br,canwat &
  8. & ,chklowq,dt,dx,dz8w,dzs,glw &
  9. & ,grdflx,gsw,swdown,gz1oz0,hfx,ht,ifsnow,isfflx &
  10. & ,fractional_seaice,seaice_albedo_opt,tice2tsk_if2cold &
  11. & ,isltyp,itimestep,julian_in,ivgtyp,lowlyr,mavail,rmol &
  12. & ,num_soil_layers,p8w,pblh,pi_phy,pshltr,psih &
  13. #if (NMM_CORE==1)
  14. & ,psim,p_phy,q10,q2,qfx,taux,tauy,qsfc,qshltr,qz0 &
  15. #else
  16. & ,psim,p_phy,q10,q2,qfx,qsfc,qshltr,qz0 &
  17. #endif
  18. & ,raincv,rho,sfcevp,sfcexc,sfcrunoff &
  19. & ,smois,smstav,smstot,snoalb,snow,snowc,snowh,stepbl &
  20. & ,smcrel &
  21. & ,th10,th2,thz0,th_phy,tmn,tshltr,tsk,tslb &
  22. & ,tyr,tyra,tdly,tlag,lagday,nyear,nday,tmn_update,yr &
  23. & ,t_phy,u10,udrunoff,ust,uz0,u_frame,u_phy,v10,vegfra &
  24. & ,vz0,v_frame,v_phy,warm_rain,wspd,xice,xland,z,znt,zs &
  25. #if (NMM_CORE==1)
  26. & ,xicem,isice,iswater,ct,tke_pbl,sfenth &
  27. #else
  28. & ,xicem,isice,iswater,ct,tke_pbl &
  29. #endif
  30. & ,albbck,embck,lh,sh2o,shdmax,shdmin,z0 &
  31. & ,flqc,flhc,psfc,sst,sstsk,dtw,sst_update,sst_skin &
  32. & ,scm_force_skintemp,scm_force_flux,t2,emiss &
  33. & ,sf_sfclay_physics,sf_surface_physics,ra_lw_physics &
  34. & ,mosaic_lu,mosaic_soil &
  35. & ,landusef,soilctop,soilcbot,ra,rs,nlcat,nscat,vegf_px & ! PX-LSM
  36. & ,snowncv, anal_interval, lai, pxlsm_smois_init & ! PX-LSM
  37. & ,pxlsm_soil_nudge & ! PX-LSM
  38. & ,idveg, iopt_crs, iopt_btr, iopt_run, iopt_sfc, iopt_frz, iopt_inf &
  39. & ,iopt_rad ,iopt_alb ,iopt_snf ,iopt_tbot, iopt_stc &
  40. & ,isnowxy ,tvxy ,tgxy ,canicexy &
  41. & ,canliqxy ,eahxy ,tahxy ,cmxy ,chxy &
  42. & ,fwetxy ,sneqvoxy ,alboldxy ,qsnowxy ,wslakexy ,zwtxy ,waxy &
  43. & ,wtxy ,tsnoxy ,zsnsoxy ,snicexy ,snliqxy ,lfmassxy ,rtmassxy &
  44. & ,stmassxy ,woodxy ,stblcpxy ,fastcpxy ,xsaixy &
  45. & ,tradxy ,tsxy ,neexy ,gppxy ,nppxy ,fvegxy ,qinxy &
  46. & ,runsfxy ,runsbxy ,ecanxy ,edirxy ,etranxy ,fsaxy ,firaxy &
  47. & ,aparxy ,psnxy ,savxy ,sagxy &
  48. & ,fsnoxy &
  49. & ,t2mvxy ,t2mbxy ,chstarxy ,rssunxy ,rsshaxy ,bgapxy ,wgapxy &
  50. & ,gapxy ,tgvxy ,tgbxy ,q2mvxy ,q2mbxy ,chvxy ,chbxy &
  51. #if ( EM_CORE==1)
  52. & ,ch,tsq,qsq,cov & ! MYNN
  53. #endif
  54. ! Optional urban
  55. & ,slope_rad,topo_shading,shadowmask & !I solar
  56. & ,swnorm,slope,slp_azi & !I solar
  57. & ,declin,solcon,coszen,hrang,xlat_urb2d & !I solar/urban
  58. & ,num_roof_layers, num_wall_layers & !I urban
  59. & ,num_road_layers, dzr, dzb, dzg & !I urban
  60. & ,tr_urb2d,tb_urb2d,tg_urb2d,tc_urb2d,qc_urb2d & !H urban
  61. & ,uc_urb2d & !H urban
  62. & ,xxxr_urb2d,xxxb_urb2d,xxxg_urb2d,xxxc_urb2d & !H urban
  63. & ,trl_urb3d,tbl_urb3d,tgl_urb3d & !H urban
  64. & ,sh_urb2d,lh_urb2d,g_urb2d,rn_urb2d,ts_urb2d & !H urban
  65. & ,frc_urb2d, utype_urb2d & !H urban
  66. & ,cmr_sfcdif,chr_sfcdif,cmc_sfcdif,chc_sfcdif &
  67. !-----SSiB LSM (fds 06/2010)---------------------------------------------------
  68. & ,alswvisdir, alswvisdif, alswnirdir, alswnirdif & ! ssib
  69. & ,swvisdir, swvisdif, swnirdir, swnirdif & ! ssib
  70. & ,ssib_br ,ssib_fm ,ssib_fh ,ssib_cm ,ssibxdd & ! ssib
  71. & ,ssib_lhf ,ssib_shf ,ssib_ghf ,ssib_egs ,ssib_eci & ! ssib
  72. & ,ssib_ect ,ssib_egi ,ssib_egt ,ssib_sdn ,ssib_sup & ! ssib
  73. & ,ssib_ldn ,ssib_lup ,ssib_wat ,ssib_shc ,ssib_shg & ! ssib
  74. & ,ssib_lai ,ssib_vcf ,ssib_z00 ,ssib_veg & ! ssib
  75. & ,ISNOW ,SWE ,SNOWDEN ,SNOWDEPTH ,TKAIR & ! ssib-snow
  76. & ,DZO1 ,WO1 ,TSSN1 ,TSSNO1 ,BWO1 ,BTO1 & ! ssib-snow
  77. & ,CTO1 ,FIO1 ,FLO1 ,BIO1 ,BLO1 ,HO1 & ! ssib-snow
  78. & ,DZO2 ,WO2 ,TSSN2 ,TSSNO2 ,BWO2 ,BTO2 & ! ssib-snow
  79. & ,CTO2 ,FIO2 ,FLO2 ,BIO2 ,BLO2 ,HO2 & ! ssib-snow
  80. & ,DZO3 ,WO3 ,TSSN3 ,TSSNO3 ,BWO3 ,BTO3 & ! ssib-snow
  81. & ,CTO3 ,FIO3 ,FLO3 ,BIO3 ,BLO3 ,HO3 & ! ssib-snow
  82. & ,DZO4 ,WO4 ,TSSN4 ,TSSNO4 ,BWO4 ,BTO4 & ! ssib-snow
  83. & ,CTO4 ,FIO4 ,FLO4 ,BIO4 ,BLO4 ,HO4 & ! ssib-snow
  84. & ,ra_sw_physics & ! ssib
  85. !------------------------------------------------------------------------------
  86. & , ids,ide,jds,jde,kds,kde &
  87. & , ims,ime,jms,jme,kms,kme &
  88. & , i_start,i_end,j_start,j_end,kts,kte,num_tiles &
  89. ! Optional moisture tracers
  90. & ,qv_curr, qc_curr, qr_curr &
  91. & ,qi_curr, qs_curr, qg_curr &
  92. ! Optional moisture tracer flags
  93. & ,f_qv,f_qc,f_qr &
  94. & ,f_qi,f_qs,f_qg &
  95. ! Other optionals (more or less em specific)
  96. & ,capg,hol,mol &
  97. & ,rainncv,rainshv,rainbl,regime,thc &
  98. & ,qsg,qvg,qcg,soilt1,tsnav &
  99. & ,smfr3d,keepfr3dflag,dew &
  100. ! Other optionals (more or less nmm specific)
  101. & ,potevp,snopcx,soiltb,sr &
  102. ! Optional observation PX LSM surface nudging
  103. & ,t2_ndg_old, q2_ndg_old, t2_ndg_new, q2_ndg_new &
  104. & ,sn_ndg_old, sn_ndg_new &
  105. & ,t2obs, q2obs &
  106. ! OPTIONAL, Required by TEMF surface layer 1/7/09 WA
  107. & ,hd_temf,te_temf,fCor,exch_temf,wm_temf &
  108. ! Required by ideal SCM surface layer 1/6/10 WA
  109. & ,hfx_force,lh_force,tsk_force &
  110. & ,hfx_force_tend,lh_force_tend,tsk_force_tend &
  111. ! Optional observation nudging
  112. & ,uratx,vratx,tratx &
  113. ! Optional simple oml model
  114. & ,omlcall,oml_hml0,oml_gamma &
  115. & ,tml,t0ml,hml,h0ml,huml,hvml,f,tmoml &
  116. & ,ustm,ck,cka,cd,cda,isftcflx,iz0tlnd &
  117. & ,isurban, mminlu &
  118. & ,snotime &
  119. & ,rdlai2d &
  120. & ,usemonalb &
  121. & ,noahres &
  122. ! Optional adaptive time step
  123. & ,bldt,curr_secs,adapt_step_flag,bldtacttime &
  124. ! Optional urban with BEP
  125. & ,sf_urban_physics,gmt,xlat,xlong,julday &
  126. & ,num_urban_layers & !multi-layer urban
  127. & ,trb_urb4d,tw1_urb4d,tw2_urb4d,tgb_urb4d & !multi-layer urban
  128. & ,tlev_urb3d,qlev_urb3d & !multi-layer urban
  129. & ,tw1lev_urb3d,tw2lev_urb3d & !multi-layer urban
  130. & ,tglev_urb3d,tflev_urb3d & !multi-layer urban
  131. & ,sf_ac_urb3d,lf_ac_urb3d,cm_ac_urb3d & !multi-layer urban
  132. & ,sfvent_urb3d,lfvent_urb3d & !multi-layer urban
  133. & ,sfwin1_urb3d,sfwin2_urb3d & !multi-layer urban
  134. & ,sfw1_urb3d,sfw2_urb3d,sfr_urb3d,sfg_urb3d & !multi-layer urban
  135. & ,a_u_bep,a_v_bep,a_t_bep,a_q_bep &
  136. & ,b_u_bep,b_v_bep,b_t_bep,b_q_bep &
  137. & ,sf_bep,vl_bep &
  138. & ,a_e_bep,b_e_bep,dlg_bep &
  139. & ,dl_u_bep &
  140. & ,cldfra & !ssib
  141. ! Optional urban Bep end
  142. & )
  143. #if ( ! NMM_CORE == 1 )
  144. USE module_state_description, ONLY : SFCLAYSCHEME &
  145. ,SFCLAYREVSCHEME &
  146. ,MYJSFCSCHEME &
  147. ,QNSESFCSCHEME &
  148. ,GFSSFCSCHEME &
  149. ,PXSFCSCHEME &
  150. ,NOAHMPSCHEME &
  151. ,TEMFSFCSCHEME &
  152. ,IDEALSCMSFCSCHEME &
  153. ,SLABSCHEME &
  154. ,LSMSCHEME &
  155. ,RUCLSMSCHEME &
  156. ,PXLSMSCHEME &
  157. ,SSIBSCHEME & !ssib
  158. ,MYNNSFCSCHEME
  159. #else
  160. USE module_state_description, ONLY : SFCLAYSCHEME &
  161. ,SFCLAYREVSCHEME &
  162. ,MYJSFCSCHEME &
  163. ,QNSESFCSCHEME &
  164. ,GFSSFCSCHEME &
  165. ,PXSFCSCHEME &
  166. ,NOAHMPSCHEME &
  167. ,SLABSCHEME &
  168. ,LSMSCHEME &
  169. ,RUCLSMSCHEME &
  170. ,PXLSMSCHEME &
  171. ,TEMFSFCSCHEME &
  172. ,GFDLSFCSCHEME &
  173. ,SSIBSCHEME & ! ssib
  174. ,GFDLSLAB
  175. #endif
  176. USE module_model_constants
  177. ! *** add new modules of schemes here
  178. USE module_sf_sfclay
  179. USE module_sf_myjsfc
  180. USE module_sf_qnsesfc
  181. USE module_sf_gfs
  182. USE module_sf_noahdrv, only : lsm
  183. USE module_sf_noahmpdrv, only : noahmplsm
  184. USE module_sf_noah_seaice_drv
  185. USE module_sf_ssib ! ssib
  186. USE module_sf_ruclsm
  187. USE module_sf_pxsfclay
  188. USE module_sf_pxlsm
  189. USE module_sf_temfsfclay
  190. USE module_sf_sfclayrev
  191. USE module_sf_noah_seaice_drv
  192. #if ( EM_CORE==1)
  193. USE module_sf_mynn
  194. USE module_sf_oml
  195. USE module_sf_idealscmsfclay
  196. #endif
  197. USE module_sf_scmflux
  198. USE module_sf_scmskintemp
  199. #if ( NMM_CORE == 1 )
  200. USE module_sf_gfdl
  201. #endif
  202. USE module_sf_slab
  203. !
  204. USE module_sf_sfcdiags
  205. USE module_sf_sfcdiags_ruclsm
  206. USE module_sf_sstskin
  207. USE module_sf_tmnupdate
  208. !
  209. ! This driver calls subroutines for the surface parameterizations.
  210. !
  211. ! surface layer: (between surface and pbl)
  212. ! 1. sfclay
  213. ! 2. myjsfc
  214. ! 7. Pleim surface layer
  215. ! 5. MYNN surface layer
  216. ! surface: ground temp/lsm scheme:
  217. ! 1. slab
  218. ! 2. Noah LSM
  219. ! 7. Pleim-Xiu LSM
  220. ! 11. Revised sfclay (option 1)
  221. !
  222. ! surface: ground temp/lsm scheme for urban:
  223. ! 2. BEP
  224. !
  225. ! ocean mixed layer model
  226. ! omlcall = 1
  227. !------------------------------------------------------------------
  228. IMPLICIT NONE
  229. !======================================================================
  230. ! Grid structure in physics part of WRF
  231. !----------------------------------------------------------------------
  232. ! The horizontal velocities used in the physics are unstaggered
  233. ! relative to temperature/moisture variables. All predicted
  234. ! variables are carried at half levels except w, which is at full
  235. ! levels. Some arrays with names (*8w) are at w (full) levels.
  236. !
  237. !----------------------------------------------------------------------
  238. ! In WRF, kms (smallest number) is the bottom level and kme (largest
  239. ! number) is the top level. In your scheme, if 1 is at the top level,
  240. ! then you have to reverse the order in the k direction.
  241. !
  242. ! kme - half level (no data at this level)
  243. ! kme ----- full level
  244. ! kme-1 - half level
  245. ! kme-1 ----- full level
  246. ! .
  247. ! kms+2 - half level
  248. ! kms+2 ----- full level
  249. ! kms+1 - half level
  250. ! kms+1 ----- full level
  251. ! kms - half level
  252. ! kms ----- full level
  253. !
  254. !======================================================================
  255. ! Definitions
  256. !-----------
  257. ! Theta potential temperature (K)
  258. ! Qv water vapor mixing ratio (kg/kg)
  259. ! Qc cloud water mixing ratio (kg/kg)
  260. ! Qr rain water mixing ratio (kg/kg)
  261. ! Qi cloud ice mixing ratio (kg/kg)
  262. ! Qs snow mixing ratio (kg/kg)
  263. !-----------------------------------------------------------------
  264. !-- itimestep number of time steps
  265. !-- GLW downward long wave flux at ground surface (W/m^2)
  266. !-- GSW net short wave flux at ground surface (W/m^2)
  267. !-- SWDOWN downward short wave flux at ground surface (W/m^2)
  268. !-- EMISS surface emissivity (between 0 and 1)
  269. !-- TSK surface temperature (K)
  270. !-- TMN soil temperature at lower boundary (K)
  271. !-- TYR annual mean surface temperature of previous year (K)
  272. !-- TYRA accumulated surface temperature in the current year (K)
  273. !-- TLAG mean surface temperature of previous 140 days (K)
  274. !-- TDLY accumulated daily mean surface temperature of the current day (K)
  275. !-- XLAND land mask (1 for land, 2 for water)
  276. !-- ZNT time-varying roughness length (m)
  277. !-- Z0 background roughness length (m)
  278. !-- MAVAIL surface moisture availability (between 0 and 1)
  279. !-- UST u* in similarity theory (m/s)
  280. !-- MOL T* (similarity theory) (K)
  281. !-- HOL PBL height over Monin-Obukhov length
  282. !-- PBLH PBL height (m)
  283. !-- CAPG heat capacity for soil (J/K/m^3)
  284. !-- THC thermal inertia (Cal/cm/K/s^0.5)
  285. !-- SNOWC flag indicating snow coverage (1 for snow cover)
  286. !-- HFX net upward heat flux at the surface (W/m^2)
  287. !-- QFX net upward moisture flux at the surface (kg/m^2/s)
  288. !-- TAUX RHO*U**2 for ocean coupling
  289. !-- TAUY RHO*U**2 for ocean coupling
  290. !-- LH net upward latent heat flux at surface (W/m^2)
  291. !-- REGIME flag indicating PBL regime (stable, unstable, etc.)
  292. !-- tke_pbl turbulence kinetic energy from PBL schemes (m^2/s^2)
  293. !-- akhs sfc exchange coefficient of heat/moisture from MYJ
  294. !-- akms sfc exchange coefficient of momentum from MYJ
  295. !-- thz0 potential temperature at roughness length (K)
  296. !-- uz0 u wind component at roughness length (m/s)
  297. !-- vz0 v wind component at roughness length (m/s)
  298. !-- qsfc specific humidity at lower boundary (kg/kg)
  299. !-- uratx ratio of u over u10 (Added for obs-nudging)
  300. !-- vratx ratio of v over v10 (Added for obs-nudging)
  301. !-- tratx ratio of t over th2 (Added for obs-nudging)
  302. !-- u10 diagnostic 10-m u component from surface layer
  303. !-- v10 diagnostic 10-m v component from surface layer
  304. !-- th2 diagnostic 2-m theta from surface layer and lsm
  305. !-- t2 diagnostic 2-m temperature from surface layer and lsm
  306. !-- q2 diagnostic 2-m mixing ratio from surface layer and lsm
  307. !-- tshltr diagnostic 2-m theta from MYJ
  308. !-- th10 diagnostic 10-m theta from MYJ
  309. !-- qshltr diagnostic 2-m specific humidity from MYJ
  310. !-- q10 diagnostic 10-m specific humidity from MYJ
  311. !-- lowlyr index of lowest model layer above ground
  312. !-- rr dry air density (kg/m^3)
  313. !-- u_phy u-velocity interpolated to theta points (m/s)
  314. !-- v_phy v-velocity interpolated to theta points (m/s)
  315. !-- th_phy potential temperature (K)
  316. !-- moist moisture array (4D - last index is species) (kg/kg)
  317. !-- p_phy pressure (Pa)
  318. !-- pi_phy exner function (dimensionless)
  319. !-- pshltr diagnostic shelter (2m) pressure from MYJ (Pa)
  320. !-- p8w pressure at full levels (Pa)
  321. !-- t_phy temperature (K)
  322. !-- dz8w dz between full levels (m)
  323. !-- z height above sea level (m)
  324. !-- DX horizontal space interval (m)
  325. !-- DT time step (second)
  326. !-- PSFC pressure at the surface (Pa)
  327. !-- SST sea-surface temperature (K)
  328. !-- SSTSK skin sea-surface temperature (K)
  329. !-- DTW warm layer temp diff (K)
  330. !-- TSLB
  331. !-- ZS
  332. !-- DZS
  333. !-- num_soil_layers number of soil layer
  334. !-- IFSNOW ifsnow=1 for snow-cover effects
  335. !-- omlcall whether to call simple ocean mixed layer model from slab (1 = use oml)
  336. !-- oml_hml0 initial mixed layer depth (if real-data not available, default 50 m)
  337. !-- oml_gamma lapse rate below mixed layer in ocean (default 0.14 K m-1)
  338. !-- ck enthalpy exchange coeff at 10 meters
  339. !-- cd momentum exchange coeff at 10 meters
  340. !-- cka enthalpy exchange coeff at the lowest model level
  341. !-- cda momentum exchange coeff at the lowest model level
  342. !!!!!!!!!!!!!!
  343. !
  344. !
  345. !-- LANDUSEF Landuse fraction ! P-X LSM
  346. !-- SOILCTOP Top soil fraction ! P-X LSM
  347. !-- SOILCBOT Bottom soil fraction ! P-X LSM
  348. !-- RA Aerodynamic resistence ! P-X LSM
  349. !-- RS Stomatal resistence ! P-X LSM
  350. !-- NLCAT Number of landuse categories ! P-X LSM
  351. !-- NSCAT Number of soil categories ! P-X LSM
  352. !-- ch - drag coefficient for heat/moisture ! MYNN LSM
  353. !
  354. !-- ids start index for i in domain
  355. !-- ide end index for i in domain
  356. !-- jds start index for j in domain
  357. !-- jde end index for j in domain
  358. !-- kds start index for k in domain
  359. !-- kde end index for k in domain
  360. !-- ims start index for i in memory
  361. !-- ime end index for i in memory
  362. !-- jms start index for j in memory
  363. !-- jme end index for j in memory
  364. !-- kms start index for k in memory
  365. !-- kme end index for k in memory
  366. !-- its start index for i in tile
  367. !-- ite end index for i in tile
  368. !-- jts start index for j in tile
  369. !-- jte end index for j in tile
  370. !-- kts start index for k in tile
  371. !-- kte end index for k in tile
  372. !
  373. !******************************************************************
  374. !------------------------------------------------------------------
  375. INTEGER, INTENT(IN) :: &
  376. & ids,ide,jds,jde,kds,kde &
  377. & ,ims,ime,jms,jme,kms,kme &
  378. & ,kts,kte,num_tiles
  379. INTEGER, INTENT(IN):: FRACTIONAL_SEAICE
  380. INTEGER, INTENT(IN):: SEAICE_ALBEDO_OPT
  381. INTEGER, INTENT(IN):: NLCAT, mosaic_lu, mosaic_soil
  382. INTEGER, INTENT(IN):: NSCAT
  383. INTEGER, INTENT(IN) :: sf_sfclay_physics, sf_surface_physics, &
  384. sf_urban_physics,ra_lw_physics,sst_update, &
  385. ra_sw_physics
  386. INTEGER, INTENT(IN),OPTIONAL :: sst_skin, tmn_update, &
  387. scm_force_skintemp, scm_force_flux
  388. INTEGER, DIMENSION(num_tiles), INTENT(IN) :: &
  389. & i_start,i_end,j_start,j_end
  390. INTEGER, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ):: ISLTYP
  391. INTEGER, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: IVGTYP
  392. INTEGER, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: LOWLYR
  393. INTEGER, INTENT(IN ):: IFSNOW
  394. INTEGER, INTENT(IN ):: ISFFLX
  395. INTEGER, INTENT(IN ):: ITIMESTEP
  396. INTEGER, INTENT(IN ):: NUM_SOIL_LAYERS
  397. REAL, INTENT(IN ),OPTIONAL :: JULIAN_in
  398. INTEGER, INTENT(IN ):: LAGDAY
  399. INTEGER, INTENT(IN ):: STEPBL
  400. INTEGER, INTENT(IN ):: ISICE
  401. INTEGER, INTENT(IN ):: ISWATER
  402. INTEGER, INTENT(IN ), OPTIONAL :: ISURBAN
  403. CHARACTER(LEN=*), INTENT(IN ), OPTIONAL :: MMINLU
  404. LOGICAL, INTENT(IN ):: WARM_RAIN
  405. LOGICAL, INTENT(IN):: tice2tsk_if2cold
  406. INTEGER, INTENT(INOUT ),OPTIONAL :: NYEAR
  407. REAL , INTENT(INOUT ),OPTIONAL :: NDAY
  408. INTEGER, INTENT(IN ),OPTIONAL :: YR
  409. REAL , INTENT(IN ):: U_FRAME
  410. REAL , INTENT(IN ):: V_FRAME
  411. #if (NMM_CORE==1)
  412. real , intent(IN ):: SFENTH
  413. #endif
  414. REAL, DIMENSION( ims:ime , 1:num_soil_layers, jms:jme ), INTENT(INOUT):: SMOIS
  415. REAL, DIMENSION( ims:ime , 1:num_soil_layers, jms:jme ), INTENT(INOUT):: TSLB
  416. REAL, DIMENSION( ims:ime , 1:num_soil_layers, jms:jme ), INTENT(OUT) :: SMCREL
  417. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: GLW
  418. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: GSW,SWDOWN
  419. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: HT
  420. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: RAINCV
  421. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: SST
  422. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ),OPTIONAL :: SSTSK
  423. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ),OPTIONAL :: DTW
  424. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: TMN
  425. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ),OPTIONAL :: TYR
  426. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ),OPTIONAL :: TYRA
  427. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ),OPTIONAL :: TDLY
  428. REAL, DIMENSION( ims:ime , 1:lagday , jms:jme ), INTENT(INOUT ),OPTIONAL :: TLAG
  429. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: VEGFRA
  430. !------fds (06/2010)--------------------------
  431. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: XICE
  432. !---------------------------------------------
  433. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: XLAND
  434. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: XICEM
  435. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: MAVAIL
  436. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: SNOALB
  437. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: ACSNOW
  438. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SNOTIME
  439. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: AKHS
  440. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: AKMS
  441. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: ALBEDO
  442. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: CANWAT
  443. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: GRDFLX
  444. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: HFX
  445. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: RMOL
  446. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: PBLH
  447. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: Q2
  448. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: QFX
  449. #if (NMM_CORE==1)
  450. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(OUT):: TAUX
  451. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(OUT):: TAUY
  452. #endif
  453. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: QSFC
  454. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: QZ0
  455. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: SFCRUNOFF
  456. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: SMSTAV
  457. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: SMSTOT
  458. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: SNOW
  459. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: SNOWC
  460. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: SNOWH
  461. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: TH2
  462. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: THZ0
  463. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: TSK
  464. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: UDRUNOFF
  465. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: UST
  466. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: UZ0
  467. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: VZ0
  468. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: WSPD
  469. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT):: ZNT
  470. !-----fds (06/2010)---------------------------------------------
  471. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_LHF ! SSiB output
  472. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_SHF ! SSiB output
  473. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_GHF ! SSiB output
  474. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_EGS ! SSiB output
  475. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_ECI ! SSiB output
  476. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_ECT ! SSiB output
  477. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_EGI ! SSiB output
  478. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_EGT ! SSiB output
  479. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_SDN ! SSiB output
  480. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_SUP ! SSiB output
  481. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_LDN ! SSiB output
  482. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_LUP ! SSiB output
  483. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_WAT ! SSiB output
  484. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_SHC ! SSiB output
  485. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_SHG ! SSiB output
  486. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_LAI ! SSiB output
  487. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_VCF ! SSiB output
  488. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_Z00 ! SSiB output
  489. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: SSIB_VEG ! SSiB output
  490. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: ALSWVISDIR! SSiB
  491. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: ALSWVISDIF! SSiB
  492. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: ALSWNIRDIR! SSiB
  493. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(OUT):: ALSWNIRDIF! SSiB
  494. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(IN):: SWVISDIR! SSiB
  495. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(IN):: SWVISDIF! SSiB
  496. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(IN):: SWNIRDIR! SSiB
  497. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(IN):: SWNIRDIF! SSiB
  498. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SSiB_BR ! SSiB
  499. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SSiB_FM ! SSiB
  500. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SSiB_FH ! SSiB
  501. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SSiB_CM ! SSiB
  502. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SSiBXDD ! SSiB
  503. INTEGER, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: ISNOW ! ssib-snow
  504. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SWE ! ssib-snow
  505. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SNOWDEN ! ssib-snow
  506. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: SNOWDEPTH ! ssib-snow
  507. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TKAIR ! ssib-snow
  508. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: DZO1 ! ssib-snow
  509. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: WO1 ! ssib-snow
  510. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSN1 ! ssib-snow
  511. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSNO1 ! ssib-snow
  512. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BWO1 ! ssib-snow
  513. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BTO1 ! ssib-snow
  514. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: CTO1 ! ssib-snow
  515. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FIO1 ! ssib-snow
  516. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FLO1 ! ssib-snow
  517. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BIO1 ! ssib-snow
  518. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BLO1 ! ssib-snow
  519. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: HO1 ! ssib-snow
  520. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: DZO2 ! ssib-snow
  521. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: WO2 ! ssib-snow
  522. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSN2 ! ssib-snow
  523. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSNO2 ! ssib-snow
  524. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BWO2 ! ssib-snow
  525. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BTO2 ! ssib-snow
  526. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: CTO2 ! ssib-snow
  527. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FIO2 ! ssib-snow
  528. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FLO2 ! ssib-snow
  529. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BIO2 ! ssib-snow
  530. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BLO2 ! ssib-snow
  531. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: HO2 ! ssib-snow
  532. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: DZO3 ! ssib-snow
  533. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: WO3 ! ssib-snow
  534. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSN3 ! ssib-snow
  535. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSNO3 ! ssib-snow
  536. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BWO3 ! ssib-snow
  537. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BTO3 ! ssib-snow
  538. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: CTO3 ! ssib-snow
  539. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FIO3 ! ssib-snow
  540. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FLO3 ! ssib-snow
  541. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BIO3 ! ssib-snow
  542. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BLO3 ! ssib-snow
  543. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: HO3 ! ssib-snow
  544. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: DZO4 ! ssib-snow
  545. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: WO4 ! ssib-snow
  546. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSN4 ! ssib-snow
  547. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: TSSNO4 ! ssib-snow
  548. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BWO4 ! ssib-snow
  549. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BTO4 ! ssib-snow
  550. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: CTO4 ! ssib-snow
  551. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FIO4 ! ssib-snow
  552. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: FLO4 ! ssib-snow
  553. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BIO4 ! ssib-snow
  554. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: BLO4 ! ssib-snow
  555. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: HO4 ! ssib-snow
  556. !----------------------------------------------------------
  557. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: BR
  558. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: CHKLOWQ
  559. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: GZ1OZ0
  560. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: PSHLTR
  561. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: PSIH
  562. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: PSIM
  563. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: Q10
  564. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: QSHLTR
  565. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: TH10
  566. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: TSHLTR
  567. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: U10
  568. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: V10
  569. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT):: PSFC
  570. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT):: ACSNOM
  571. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT):: SFCEVP
  572. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT),OPTIONAL :: ACHFX
  573. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT),OPTIONAL :: ACLHF
  574. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(INOUT),OPTIONAL :: ACGRDFLX
  575. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT):: SFCEXC
  576. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT):: FLHC
  577. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT):: FLQC
  578. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CT
  579. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: DZ8W
  580. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: P8W
  581. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: PI_PHY
  582. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: P_PHY
  583. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: RHO
  584. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: TH_PHY
  585. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: T_PHY
  586. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: U_PHY
  587. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: V_PHY
  588. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ):: Z
  589. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) :: TKE_PBL
  590. REAL, DIMENSION(1:num_soil_layers), INTENT(IN):: DZS
  591. REAL, DIMENSION(1:num_soil_layers), INTENT(IN):: ZS
  592. REAL, INTENT(IN ):: DT
  593. REAL, INTENT(IN ):: DX
  594. REAL, INTENT(IN ),OPTIONAL :: bldt
  595. REAL, INTENT(IN ),OPTIONAL :: curr_secs
  596. LOGICAL, INTENT(IN ),OPTIONAL :: adapt_step_flag
  597. REAL, INTENT(INOUT),OPTIONAL :: bldtacttime
  598. ! arguments for NCAR surface physics
  599. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ):: ALBBCK ! INOUT needed for NMM
  600. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ):: EMBCK
  601. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ):: LH
  602. REAL, DIMENSION( ims:ime , 1:num_soil_layers, jms:jme ), INTENT(INOUT):: SH2O
  603. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: SHDMAX
  604. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: SHDMIN
  605. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ):: Z0
  606. INTEGER, OPTIONAL, INTENT(IN) :: idveg, iopt_crs, iopt_btr, iopt_run, iopt_sfc, iopt_frz, iopt_inf, iopt_rad, iopt_alb, iopt_snf, iopt_tbot, iopt_stc
  607. INTEGER, OPTIONAL, DIMENSION(ims:ime , jms:jme), INTENT(INOUT) :: ISNOWXY
  608. REAL, OPTIONAL, DIMENSION(ims:ime ,-2:num_soil_layers, jms:jme), INTENT(INOUT) :: zsnsoxy
  609. REAL, OPTIONAL, DIMENSION(ims:ime ,-2:0, jms:jme), INTENT(INOUT) :: tsnoxy, snicexy, snliqxy
  610. REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme), INTENT(INOUT) :: tvxy, tgxy, canicexy, canliqxy, eahxy, tahxy, cmxy, chxy, &
  611. fwetxy, sneqvoxy, alboldxy, qsnowxy, wslakexy, zwtxy, waxy, wtxy, lfmassxy, rtmassxy, stmassxy, woodxy, stblcpxy, fastcpxy, &
  612. xsaixy, tradxy, tsxy, neexy, gppxy, nppxy, fvegxy, qinxy, runsfxy, runsbxy, ecanxy, edirxy, etranxy, fsaxy, firaxy, &
  613. aparxy, psnxy, savxy, sagxy, fsnoxy, q2mvxy, q2mbxy
  614. REAL, OPTIONAL, DIMENSION(ims:ime , jms:jme), INTENT(INOUT) :: t2mvxy ,t2mbxy ,chstarxy, rssunxy, rsshaxy, bgapxy,wgapxy,gapxy , &
  615. tgvxy ,tgbxy, chvxy, chbxy
  616. ! Variables for multi-layer UCM
  617. REAL, OPTIONAL, INTENT(IN ) :: GMT
  618. INTEGER, OPTIONAL, INTENT(IN ) :: JULDAY
  619. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) ::XLAT, XLONG
  620. INTEGER, INTENT(IN ):: NUM_URBAN_LAYERS
  621. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: trb_urb4d
  622. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tw1_urb4d
  623. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tw2_urb4d
  624. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tgb_urb4d
  625. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tlev_urb3d
  626. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: qlev_urb3d
  627. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tw1lev_urb3d
  628. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tw2lev_urb3d
  629. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tglev_urb3d
  630. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: tflev_urb3d
  631. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: lf_ac_urb3d
  632. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: sf_ac_urb3d
  633. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: cm_ac_urb3d
  634. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: sfvent_urb3d
  635. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: lfvent_urb3d
  636. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: sfwin1_urb3d
  637. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: sfwin2_urb3d
  638. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: sfw1_urb3d
  639. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: sfw2_urb3d
  640. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: sfr_urb3d
  641. REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_urban_layers, jms:jme ), INTENT(INOUT) :: sfg_urb3d
  642. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::a_u_bep !Implicit momemtum component X-direction
  643. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::a_v_bep !Implicit momemtum component Y-direction
  644. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::a_t_bep !Implicit component pot. temperature
  645. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::a_e_bep !Implicit component TKE
  646. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::a_q_bep !Implicit component TKE
  647. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::b_u_bep !Explicit momentum component X-direction
  648. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::b_v_bep !Explicit momentum component Y-direction
  649. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::b_t_bep !Explicit component pot. temperature
  650. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::b_e_bep !Explicit component TKE
  651. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::b_q_bep !Explicit component TKE
  652. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::vl_bep !Fraction air volume in grid cell
  653. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::dlg_bep !Height above ground
  654. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::sf_bep !Fraction air at the face of grid cell
  655. REAL, OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) ::dl_u_bep !Length scale
  656. ! Optional
  657. !
  658. ! arguments for Ocean Mixed Layer Model
  659. REAL, DIMENSION( ims:ime , jms:jme ), OPTIONAL, INTENT(INOUT ):: TML, T0ML, HML, H0ML, HUML, HVML
  660. REAL, DIMENSION( ims:ime , jms:jme ), OPTIONAL, INTENT(IN ):: F, TMOML
  661. REAL, DIMENSION( ims:ime , jms:jme ), OPTIONAL, INTENT(OUT ):: CK, CKA, CD, CDA, USTM
  662. #if ( EM_CORE==1)
  663. REAL, DIMENSION( ims:ime , jms:jme ), &
  664. &OPTIONAL, INTENT(INOUT ):: ch
  665. REAL, DIMENSION( ims:ime , kms:kme, jms:jme ), &
  666. &OPTIONAL, INTENT(IN ):: tsq,qsq,cov
  667. #endif
  668. INTEGER, OPTIONAL, INTENT(IN ):: slope_rad, topo_shading
  669. INTEGER, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(IN):: shadowmask
  670. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: swnorm
  671. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(IN):: slope,slp_azi
  672. INTEGER, OPTIONAL, INTENT(IN ):: ISFTCFLX,IZ0TLND
  673. INTEGER, OPTIONAL, INTENT(IN ):: OMLCALL
  674. REAL , OPTIONAL, INTENT(IN ):: OML_HML0
  675. REAL , OPTIONAL, INTENT(IN ):: OML_GAMMA
  676. !
  677. ! Observation nudging
  678. !
  679. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(OUT):: uratx !Added for obs-nudging
  680. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(OUT):: vratx !Added for obs-nudging
  681. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(OUT):: tratx !Added for obs-nudging
  682. !
  683. ! PX LSM Surface Grid Analysis nudging
  684. !
  685. INTEGER, OPTIONAL, INTENT(IN) :: pxlsm_smois_init, pxlsm_soil_nudge, ANAL_INTERVAL
  686. REAL, DIMENSION( ims:ime, NLCAT, jms:jme ) , OPTIONAL, INTENT(INOUT):: LANDUSEF
  687. REAL, DIMENSION( ims:ime, NSCAT, jms:jme ) , OPTIONAL, INTENT(INOUT):: SOILCTOP, SOILCBOT
  688. REAL, DIMENSION( ims:ime , jms:jme ), OPTIONAL, INTENT(INOUT):: VEGF_PX
  689. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: RA
  690. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: RS
  691. REAL, DIMENSION( ims:ime, jms:jme ) , OPTIONAL, INTENT(INOUT):: LAI
  692. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(OUT):: T2OBS
  693. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(OUT):: Q2OBS
  694. REAL, DIMENSION( ims:ime, jms:jme ), &
  695. OPTIONAL, INTENT(INOUT) :: t2_ndg_old, &
  696. q2_ndg_old, &
  697. t2_ndg_new, &
  698. q2_ndg_new, &
  699. sn_ndg_old, &
  700. sn_ndg_new
  701. !
  702. !
  703. ! Flags relating to the optional tendency arrays declared above
  704. ! Models that carry the optional tendencies will provdide the
  705. ! optional arguments at compile time; these flags all the model
  706. ! to determine at run-time whether a particular tracer is in
  707. ! use or not.
  708. !
  709. LOGICAL, INTENT(IN), OPTIONAL :: &
  710. f_qv &
  711. ,f_qc &
  712. ,f_qr &
  713. ,f_qi &
  714. ,f_qs &
  715. ,f_qg
  716. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
  717. OPTIONAL, INTENT(INOUT) :: &
  718. ! optional moisture tracers
  719. ! 2 time levels; if only one then use CURR
  720. qv_curr, qc_curr, qr_curr &
  721. ,qi_curr, qs_curr, qg_curr
  722. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(IN) :: snowncv
  723. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: capg
  724. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: emiss
  725. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: hol
  726. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: mol
  727. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: regime
  728. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(IN ):: rainncv
  729. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(IN ):: rainshv
  730. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: RAINBL
  731. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: t2
  732. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(IN ):: thc
  733. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: qsg
  734. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: qvg
  735. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: qcg
  736. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: dew
  737. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: soilt1
  738. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: tsnav
  739. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: potevp ! NMM LSM
  740. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: snopcx ! NMM LSM
  741. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: soiltb ! NMM LSM
  742. REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT):: sr ! NMM and RUC LSM
  743. REAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), OPTIONAL, INTENT(INOUT):: smfr3d
  744. REAL, DIMENSION( ims:ime, 1:num_soil_layers, jms:jme ), OPTIONAL, INTENT(INOUT):: keepfr3dflag
  745. REAL, DIMENSION( ims:ime, jms:jme ) , INTENT(OUT), OPTIONAL :: NOAHRES
  746. ! Variables for TEMF surface layer
  747. REAL,OPTIONAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT) :: te_temf
  748. REAL,OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: hd_temf, exch_temf, wm_temf
  749. REAL,OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: fCor
  750. ! Variables for ideal SCM surface layer
  751. REAL,OPTIONAL, INTENT(INOUT) :: hfx_force,lh_force,tsk_force
  752. REAL,OPTIONAL, INTENT(IN ) :: hfx_force_tend,lh_force_tend,tsk_force_tend
  753. ! LOCAL VAR
  754. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ) ::v_phytmp
  755. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ) ::u_phytmp
  756. REAL, DIMENSION( ims:ime, jms:jme ) :: ZOL
  757. REAL, DIMENSION( ims:ime, jms:jme ) :: &
  758. QGH, &
  759. CHS, &
  760. CPM, &
  761. CHS2, &
  762. CQS2
  763. ! SSIB local variables
  764. REAL ZDIFF
  765. !
  766. REAL :: DTMIN,DTBL
  767. !
  768. INTEGER :: i,J,K,NK,jj,ij
  769. INTEGER :: gfdl_ntsflg
  770. LOGICAL :: radiation, myj, frpcpn, isisfc
  771. LOGICAL, INTENT(in), OPTIONAL :: rdlai2d
  772. LOGICAL, INTENT(in), OPTIONAL :: usemonalb
  773. REAL :: total_depth,mid_point_depth
  774. REAL :: tconst,tprior,tnew,yrday,deltat
  775. REAL :: SWSAVE
  776. REAL, DIMENSION( ims:ime, jms:jme ) :: GSWSAVE
  777. !-------------------------------------------------
  778. ! urban related variables are added to declaration
  779. !-------------------------------------------------
  780. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMR_SFCDIF
  781. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CHR_SFCDIF
  782. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMC_SFCDIF
  783. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CHC_SFCDIF
  784. REAL, OPTIONAL, INTENT(IN) :: DECLIN, SOLCON
  785. REAL, OPTIONAL , DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: COSZEN
  786. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: HRANG
  787. REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: XLAT_URB2D !urban
  788. INTEGER, INTENT(IN) :: num_roof_layers !urban
  789. INTEGER, INTENT(IN) :: num_wall_layers

Large files files are truncated, but you can click here to view the full file