PageRenderTime 58ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/wrfv2_fire/phys/module_sf_noahmpdrv.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 1545 lines | 1028 code | 164 blank | 353 comment | 19 complexity | 8474cce8cbf9614dca04b90f4579e1e9 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. MODULE module_sf_noahmpdrv
  2. !-------------------------------
  3. USE module_sf_noahmplsm
  4. USE module_sf_urban
  5. USE module_model_constants, ONLY : R_D, CP, XLF, XLV, RHOWATER, KARMAN
  6. USE module_sf_noahdrv, ONLY : SOIL_VEG_GEN_PARM
  7. USE module_sf_noah_seaice
  8. USE module_sf_noahlsm_glacial_only
  9. USE MODULE_RA_GFDLETA, ONLY: CAL_MON_DAY
  10. #ifdef WRF_CHEM
  11. USE module_data_gocart_dust
  12. #endif
  13. !-------------------------------
  14. !
  15. CONTAINS
  16. !
  17. SUBROUTINE noahmplsm(DZ8W,QV3D,P8W3D,T3D,TSK, &
  18. HFX,QFX,LH,GRDFLX, QGH,GSW,SWDOWN,GLW,SMSTAV,SMSTOT, &
  19. SFCRUNOFF, UDRUNOFF,IVGTYP,ISLTYP,VEGFRA, &
  20. ALBEDO,ALBBCK,ZNT,Z0,TMN,XLAND,XICE,XICE_THRESHOLD,ISICE,EMISS,EMBCK, &
  21. SNOWC,QSFC,RAINBL, &
  22. num_soil_layers,DT,DZS,ITIMESTEP, &
  23. SMOIS,TSLB,SNOW,CANWAT, &
  24. CHS,CHS2,CQS2,CPM,ROVCP,SR,chklowq,qz0, & !H
  25. myj,RIB,frpcpn, &
  26. SH2O,SNOWH, & !H
  27. U_PHY,V_PHY, & !I
  28. COSZ_URB2D, XLAT_URB2D, & !I
  29. SNOALB, & !I
  30. SNOTIME,ACSNOM,ACSNOW, & !O
  31. idveg ,iopt_crs ,iopt_btr ,iopt_run ,iopt_sfc ,iopt_frz ,iopt_inf , &
  32. iopt_rad ,iopt_alb ,iopt_snf ,iopt_tbot,iopt_stc , &
  33. isnowxy ,tvxy ,tgxy ,canicexy , &
  34. canliqxy ,eahxy ,tahxy ,cmxy ,chxy , &
  35. fwetxy ,sneqvoxy ,alboldxy ,qsnowxy ,wslakexy ,zwtxy ,waxy , &
  36. wtxy ,tsnoxy ,zsnsoxy ,snicexy ,snliqxy ,lfmassxy ,rtmassxy , &
  37. stmassxy ,woodxy ,stblcpxy ,fastcpxy ,xlaixy ,xsaixy , &
  38. tradxy ,tsxy ,neexy ,gppxy ,nppxy ,fvegxy ,qinxy , &
  39. runsfxy ,runsbxy ,ecanxy ,edirxy ,etranxy ,fsaxy ,firaxy , &
  40. aparxy ,psnxy ,savxy ,sagxy , &
  41. fsnoxy ,YR ,JULIAN , &
  42. potevp, & !O
  43. !jref:start
  44. qcxy ,pblhxy ,isurban ,iz0tlnd ,dx , & !I
  45. chstarxy ,t2mvxy ,t2mbxy ,rssunxy ,rsshaxy, bgapxy ,wgapxy ,gapxy, & !O
  46. tgvxy ,tgbxy ,q2mvxy ,q2mbxy ,shdmaxxy, chvxy ,chbxy , &
  47. !jref:end
  48. ids,ide, jds,jde, kds,kde, &
  49. ims,ime, jms,jme, kms,kme, &
  50. its,ite, jts,jte, kts,kte )
  51. !----------------------------------------------------------------
  52. IMPLICIT NONE
  53. !----------------------------------------------------------------
  54. !----------------------------------------------------------------
  55. ! --- atmospheric (WRF generic) variables
  56. !-- DT time step (seconds)
  57. !-- DZ8W thickness of layers (m)
  58. !-- T3D temperature (K)
  59. !-- QV3D 3D water vapor mixing ratio (Kg/Kg)
  60. !-- P3D 3D pressure (Pa)
  61. !-- FLHC exchange coefficient for heat (m/s)
  62. !-- FLQC exchange coefficient for moisture (m/s)
  63. !-- PSFC surface pressure (Pa)
  64. !-- XLAND land mask (1 for land, 2 for water)
  65. !-- QGH saturated mixing ratio at 2 meter
  66. !-- GSW downward short wave flux at ground surface (W/m^2)
  67. !-- GLW downward long wave flux at ground surface (W/m^2)
  68. !-- History variables
  69. !-- CANWAT canopy moisture content (mm)
  70. !-- TSK surface temperature (K)
  71. !-- TSLB soil temp (k)
  72. !-- SMOIS total soil moisture content (volumetric fraction)
  73. !-- SH2O unfrozen soil moisture content (volumetric fraction)
  74. ! note: frozen soil moisture (i.e., soil ice) = SMOIS - SH2O
  75. !-- SNOWH actual snow depth (m)
  76. !-- SNOW liquid water-equivalent snow depth (m)
  77. !-- ALBEDO time-varying surface albedo including snow effect (unitless fraction)
  78. !-- ALBBCK background surface albedo (unitless fraction)
  79. !-- CHS surface exchange coefficient for heat and moisture (m s-1);
  80. !-- CHS2 2m surface exchange coefficient for heat (m s-1);
  81. !-- CQS2 2m surface exchange coefficient for moisture (m s-1);
  82. ! --- soil variables
  83. !-- num_soil_layers the number of soil layers
  84. !-- ZS depths of centers of soil layers (m)
  85. !-- DZS thicknesses of soil layers (m)
  86. !-- SLDPTH thickness of each soil layer (m, same as DZS)
  87. !-- TMN soil temperature at lower boundary (K)
  88. !-- SMCMAX porosity, i.e. saturated value of soil moisture (volumetric)
  89. !-- NROOT number of root layers, a function of veg type, determined
  90. ! in subroutine redprm.
  91. !-- SMSTAV Soil moisture availability for evapotranspiration (
  92. ! fraction between SMCWLT and SMCMXA)
  93. !-- SMSTOT Total soil moisture content frozen+unfrozen) in the soil column (mm)
  94. ! --- snow variables
  95. !-- SNOWC fraction snow coverage (0-1.0)
  96. ! --- vegetation variables
  97. !-- SNOALB upper bound on maximum albedo over deep snow
  98. !-- Z0BRD Background fixed roughness length (M)
  99. !-- Z0 Background vroughness length (M) as function
  100. !-- ZNT Time varying roughness length (M) as function
  101. !-- ALBD(IVGTPK,ISN) background albedo reading from a table
  102. ! --- LSM output
  103. !-- HFX upward heat flux at the surface (W/m^2)
  104. !-- QFX upward moisture flux at the surface (kg/m^2/s)
  105. !-- LH upward moisture flux at the surface (W m-2)
  106. !-- GRDFLX(I,J) ground heat flux (W m-2)
  107. !-- FDOWN radiation forcing at the surface (W m-2) = SOLDN*(1-alb)+LWDN
  108. !----------------------------------------------------------------------------
  109. !-- EC canopy water evaporation ((W m-2)
  110. !-- EDIR direct soil evaporation (W m-2)
  111. !-- ESNOW sublimation from (or deposition to if <0) snowpack (W m-2)
  112. !-- DEW dewfall (or frostfall for t<273.15) (M)
  113. ! ----------------------------------------------------------------------
  114. !-- ETP potential evaporation (W m-2)
  115. ! ----------------------------------------------------------------------
  116. !-- FLX1 precip-snow sfc (W m-2)
  117. !-- FLX2 freezing rain latent heat flux (W m-2)
  118. !-- FLX3 phase-change heat flux from snowmelt (W m-2)
  119. ! ----------------------------------------------------------------------
  120. !-- ACSNOM snow melt (mm) (water equivalent)
  121. !-- ACSNOW accumulated snow fall (mm) (water equivalent)
  122. !-- POTEVP accumulated potential evaporation (W/m^2)
  123. !-- RIB Bulk Richardson number from SFCLAY routine
  124. ! ----------------------------------------------------------------------
  125. !-- RUNOFF1 surface runoff (m s-1), not infiltrating the surface
  126. !-- RUNOFF2 subsurface runoff (m s-1), drainage out bottom of last
  127. ! soil layer (baseflow)
  128. ! ----------------------------------------------------------------------
  129. !-- RC canopy resistance (s m-1)
  130. !-- PC plant coefficient (unitless fraction, 0-1) where PC*ETP = actual transp
  131. !-- EMISS surface emissivity (between 0 and 1)
  132. !-- EMBCK Background surface emissivity (between 0 and 1)
  133. !-- SHDMAX Maximum vegetation fraction
  134. !-- ROVCP R/CP
  135. ! (R_d/R_v) (dimensionless)
  136. !-- ids start index for i in domain
  137. !-- ide end index for i in domain
  138. !-- jds start index for j in domain
  139. !-- jde end index for j in domain
  140. !-- kds start index for k in domain
  141. !-- kde end index for k in domain
  142. !-- ims start index for i in memory
  143. !-- ime end index for i in memory
  144. !-- jms start index for j in memory
  145. !-- jme end index for j in memory
  146. !-- kms start index for k in memory
  147. !-- kme end index for k in memory
  148. !-- its start index for i in tile
  149. !-- ite end index for i in tile
  150. !-- jts start index for j in tile
  151. !-- jte end index for j in tile
  152. !-- kts start index for k in tile
  153. !-- kte end index for k in tile
  154. !
  155. !-- SR fraction of frozen precip (0.0 to 1.0)
  156. !----------------------------------------------------------------
  157. ! IN only
  158. INTEGER, INTENT(IN ) :: ids,ide, jds,jde, kds,kde, &
  159. & ims,ime, jms,jme, kms,kme, &
  160. & its,ite, jts,jte, kts,kte
  161. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN) :: U_PHY
  162. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN) :: V_PHY
  163. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: COSZ_URB2D
  164. REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: XLAT_URB2D
  165. REAL, DIMENSION( ims:ime, jms:jme ) , &
  166. & INTENT(IN ) :: TMN, &
  167. & XLAND, &
  168. & XICE, &
  169. & VEGFRA, &
  170. & SNOALB, &
  171. & GSW, &
  172. & SWDOWN, &
  173. & GLW, &
  174. & Z0, &
  175. & ALBBCK, &
  176. & RAINBL, &
  177. & EMBCK, &
  178. & SR
  179. REAL, DIMENSION( ims:ime, kms:kme, jms:jme ) , &
  180. INTENT(IN ) :: QV3D, &
  181. p8w3D, &
  182. DZ8W, &
  183. T3D
  184. !jref:start - changed to inout
  185. REAL, DIMENSION( ims:ime, jms:jme ) , &
  186. INTENT(INOUT ) :: QGH, &
  187. CHS, &
  188. CPM
  189. !jref:end
  190. INTEGER, DIMENSION( ims:ime, jms:jme ) , &
  191. INTENT(IN ) :: IVGTYP, &
  192. ISLTYP
  193. INTEGER, INTENT(IN) :: num_soil_layers,ITIMESTEP
  194. !jref:start - xice_threshold
  195. REAL, INTENT(IN ) :: DT,ROVCP,XICE_THRESHOLD
  196. INTEGER, INTENT(IN ) :: ISICE
  197. !jref:end
  198. REAL, DIMENSION(1:num_soil_layers), INTENT(IN)::DZS
  199. ! IN and OUT
  200. REAL, DIMENSION( ims:ime , 1:num_soil_layers, jms:jme ), &
  201. & INTENT(INOUT) :: SMOIS, &
  202. & SH2O, &
  203. & TSLB
  204. REAL, DIMENSION( ims:ime, jms:jme ) , &
  205. & INTENT(INOUT) :: TSK, &
  206. & HFX, &
  207. & QFX, &
  208. & LH, &
  209. & GRDFLX, &
  210. & QSFC, &
  211. & CQS2, &
  212. & CHS2, &
  213. & SNOW, &
  214. & SNOWC, &
  215. & SNOWH, &
  216. & CANWAT, &
  217. & SMSTAV, &
  218. & SMSTOT, &
  219. & SFCRUNOFF, &
  220. & UDRUNOFF, &
  221. & ACSNOM, &
  222. & ACSNOW, &
  223. & EMISS, &
  224. & POTEVP, &
  225. & RIB, &
  226. & ALBEDO, &
  227. & ZNT
  228. REAL, DIMENSION( ims:ime, jms:jme ) , &
  229. INTENT(OUT) :: CHKLOWQ
  230. REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: QZ0
  231. !niuin:
  232. ! in
  233. INTEGER, INTENT(IN) :: idveg !dynamic vegetation (1 -> off ; 2 -> on) with opt_crs = 1
  234. INTEGER, INTENT(IN) :: iopt_crs !canopy stomatal resistance (1-> Ball-Berry; 2->Jarvis)
  235. INTEGER, INTENT(IN) :: iopt_btr !soil moisture factor for stomatal resistance (1-> Noah; 2-> CLM; 3-> SSiB)
  236. INTEGER, INTENT(IN) :: iopt_run !runoff and groundwater (1->SIMGM; 2->SIMTOP; 3->Schaake96; 4->BATS)
  237. INTEGER, INTENT(IN) :: iopt_sfc !surface layer drag coeff (CH & CM) (1->M-O; 2->Chen97)
  238. INTEGER, INTENT(IN) :: iopt_frz !supercooled liquid water (1-> NY06; 2->Koren99)
  239. INTEGER, INTENT(IN) :: iopt_inf !frozen soil permeability (1-> NY06; 2->Koren99)
  240. INTEGER, INTENT(IN) :: iopt_rad !radiation transfer (1->gap=F(3D,cosz); 2->gap=0; 3->gap=1-Fveg)
  241. INTEGER, INTENT(IN) :: iopt_alb !snow surface albedo (1->BATS; 2->CLASS)
  242. INTEGER, INTENT(IN) :: iopt_snf !rainfall & snowfall (1-Jordan91; 2->BATS; 3->Noah)
  243. INTEGER, INTENT(IN) :: iopt_tbot !lower boundary of soil temperature (1->zero-flux; 2->Noah)
  244. INTEGER, INTENT(IN) :: iopt_stc !snow/soil temperature time scheme
  245. ! in & out
  246. INTEGER, INTENT(IN) :: YR
  247. REAL, INTENT(IN) :: JULIAN
  248. INTEGER, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: isnowxy !actual no. of snow layers
  249. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: tvxy !vegetation canopy temperature
  250. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: tgxy !ground surface temperature
  251. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: canicexy !canopy-intercepted ice (mm)
  252. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: canliqxy !canopy-intercepted liquid water (mm)
  253. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: eahxy !canopy air vapor pressure (pa)
  254. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: tahxy !canopy air temperature (k)
  255. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cmxy !momentum drag coefficient
  256. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chxy !sensible heat exchange coefficient
  257. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: fwetxy !wetted or snowed fraction of the canopy (-)
  258. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: sneqvoxy !snow mass at last time step(mm h2o)
  259. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: alboldxy !snow albedo at last time step (-)
  260. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: qsnowxy !snowfall on the ground [mm/s]
  261. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wslakexy !lake water storage [mm]
  262. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: zwtxy !water table depth [m]
  263. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: waxy !water in the "aquifer" [mm]
  264. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wtxy !groundwater storage [mm]
  265. REAL, DIMENSION(ims:ime,-2:num_soil_layers,jms:jme), INTENT(INOUT) :: zsnsoxy !snow layer depth [m]
  266. REAL, DIMENSION(ims:ime,-2: 0,jms:jme), INTENT(INOUT) :: tsnoxy !snow temperature [K]
  267. REAL, DIMENSION(ims:ime,-2: 0,jms:jme), INTENT(INOUT) :: snicexy !snow layer ice [mm]
  268. REAL, DIMENSION(ims:ime,-2: 0,jms:jme), INTENT(INOUT) :: snliqxy !snow layer liquid water [mm]
  269. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: lfmassxy !leaf mass [g/m2]
  270. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: rtmassxy !mass of fine roots [g/m2]
  271. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: stmassxy !stem mass [g/m2]
  272. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: woodxy !mass of wood (incl. woody roots) [g/m2]
  273. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: stblcpxy !stable carbon in deep soil [g/m2]
  274. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: fastcpxy !short-lived carbon, shallow soil [g/m2]
  275. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: xlaixy !leaf area index
  276. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: xsaixy !stem area index
  277. !jref:start
  278. REAL, DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: SNOTIME !snow age time
  279. !jref:end
  280. !out
  281. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: tradxy !surface radiative temperature (k)
  282. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: tsxy !surface temperature (k)
  283. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: neexy !net ecosys exchange (g/m2/s CO2)
  284. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: gppxy !gross primary assimilation [g/m2/s C]
  285. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: nppxy !net primary productivity [g/m2/s C]
  286. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: fvegxy !greenness vegetation fraction [-]
  287. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: qinxy !groundwater recharge [mm/s]
  288. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: runsfxy !surface runoff [mm/s]
  289. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: runsbxy !subsurface runoff [mm/s]
  290. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: ecanxy !evaporation of intercepted water (mm/s)
  291. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: edirxy !soil surface evaporation rate (mm/s]
  292. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: etranxy !transpiration rate (mm/s)
  293. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: fsaxy !total absorbed solar radiation (w/m2)
  294. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: firaxy !total net longwave rad (w/m2) [+ to atm]
  295. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: aparxy !photosyn active energy by canopy (w/m2)
  296. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: psnxy !total photosynthesis (umol co2/m2/s) [+]
  297. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: savxy !solar rad absorbed by veg. (w/m2)
  298. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: sagxy !solar rad absorbed by ground (w/m2)
  299. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: fsnoxy !snow cover fraction (-)
  300. !jref:start
  301. REAL, DIMENSION(ims:ime, jms:jme), INTENT(INOUT) :: chstarxy !effective ch
  302. REAL, DIMENSION(ims:ime, jms:jme), INTENT(INOUT) :: t2mvxy !2m temperature of vegetation part
  303. REAL, DIMENSION(ims:ime, jms:jme), INTENT(INOUT) :: t2mbxy !2m temperature of bare ground part
  304. REAL, DIMENSION(ims:ime, jms:jme), INTENT(INOUT) :: q2mvxy !2m mixing ratio of vegetation part
  305. REAL, DIMENSION(ims:ime, jms:jme), INTENT(INOUT) :: q2mbxy !2m mixing ratio of bare ground part
  306. REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN) :: qcxy !cloud water mixing ratio
  307. REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN) :: pblhxy !Planetary boundary layer from sfclay
  308. INTEGER , INTENT(IN) :: isurban
  309. INTEGER , INTENT(IN) :: iz0tlnd
  310. REAL , INTENT(IN) :: dx
  311. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: rssunxy !sunlit leaf stomatal resistance (s/m)
  312. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: rsshaxy !shaded leaf stomatal resistance (s/m)
  313. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: bgapxy !between gap fraction
  314. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: wgapxy !within gap fraction
  315. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: gapxy !within gap fraction
  316. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: tgvxy
  317. REAL, DIMENSION(ims:ime, jms:jme), INTENT(OUT) :: tgbxy
  318. REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ):: shdmaxxy
  319. REAL, DIMENSION(ims:ime,jms:jme), INTENT(OUT) :: chvxy !sensible heat exchange coefficient vegetated
  320. REAL, DIMENSION(ims:ime,jms:jme), INTENT(OUT) :: chbxy !sensible heat exchange coefficient bare-ground
  321. !jref:end
  322. !niuout
  323. ! Local variables (moved here from driver to make routine thread safe, 20031007 jm)
  324. INTEGER :: YEARLEN
  325. REAL :: ETP, SSOIL,EC, ESNOW, &
  326. FLX1,FLX2,FLX3,DEW,FDOWN,RC,PC,FFROZP
  327. !niuin
  328. !locals (prognostic):
  329. INTEGER :: isnow !actual no. of snow layers
  330. REAL, DIMENSION(-2:num_soil_layers) :: stc !snow/soil tmperatures
  331. REAL, DIMENSION( 1:num_soil_layers) :: smc !vol. soil moisture (m3/m3)
  332. REAL, DIMENSION( 1:num_soil_layers) :: smh2o !vol. soil liquid water (m3/m3)
  333. REAL :: tv !vegetation canopy temperature
  334. REAL :: tg !ground surface temperature
  335. REAL :: canice !canopy-intercepted ice (mm)
  336. REAL :: canliq !canopy-intercepted liquid water (mm)
  337. REAL :: snowd !snow depth (m)
  338. REAL :: swe !snow water equivalent (mm)
  339. REAL :: eah !canopy air vapor pressure (pa)
  340. REAL :: tah !canopy air temperature (k)
  341. REAL :: cm !momentum drag coefficient
  342. REAL :: ch !sensible heat exchange coefficient
  343. REAL :: fwet !wetted or snowed fraction of the canopy (-)
  344. REAL :: sneqvo !snow mass at last time step(mm h2o)
  345. REAL :: albold !snow albedo at last time step (-)
  346. REAL :: qsnow !snowfall on the ground [mm/s]
  347. REAL :: wslake !lake water storage [mm]
  348. REAL :: zwt !water table depth [m]
  349. REAL :: wa !water in the "aquifer" [mm]
  350. REAL :: wt !groundwater storage [mm]
  351. REAL, DIMENSION(-2:num_soil_layers) :: zsnso !snow layer depth [m]
  352. REAL, DIMENSION(-2: 0) :: tsno !snow temperature [K]
  353. REAL, DIMENSION(-2: 0) :: snice !snow layer ice [mm]
  354. REAL, DIMENSION(-2: 0) :: snliq !snow layer liquid water [mm]
  355. REAL :: lfmass !leaf mass [g/m2]
  356. REAL :: rtmass !mass of fine roots [g/m2]
  357. REAL :: stmass !stem mass [g/m2]
  358. REAL :: wood !mass of wood (incl. woody roots) [g/m2]
  359. REAL :: stblcp !stable carbon in deep soil [g/m2]
  360. REAL :: fastcp !short-lived carbon, shallow soil [g/m2]
  361. REAL :: plai !leaf area index
  362. REAL :: psai !stem area index
  363. !jref:start
  364. REAL :: chstar2
  365. REAL :: cqstar2
  366. REAL :: chstar !effective ch
  367. REAL :: tstar
  368. REAL :: t2mv !2m temperature of vegetation part
  369. REAL :: t2mb !2m temperature of bare ground part
  370. REAL :: q2mv !2m mixing ratio of vegetation part
  371. REAL :: q2mb !2m mixing ratio of bare ground part
  372. REAL :: qc !
  373. REAL :: t2m
  374. REAL :: pblh
  375. REAL :: qsfc1d
  376. REAL, DIMENSION(ims:ime,jms:jme) :: tstarxy !effective skin temperature
  377. REAL, DIMENSION(ims:ime,jms:jme) :: chstar2xy !effective 2m exchange coefficients
  378. REAL :: rssun
  379. REAL :: rssha
  380. REAL :: bgap
  381. REAL :: wgap
  382. REAL :: gap
  383. REAL :: tgv
  384. REAL :: tgb
  385. REAL :: snowhk
  386. REAL :: snotime1
  387. REAL :: qv1d !mixing ratio
  388. REAL :: dz8w1d
  389. REAL :: shdmax
  390. REAL :: chv !sensible heat exchange coefficient vegetated
  391. REAL :: chb !sensible heat exchange coefficient bare-ground
  392. !jref:end
  393. !out (outputs)
  394. REAL :: trad !surface radiative temperature (k)
  395. REAL :: ts !surface temperature (k)
  396. REAL :: nee !net ecosys exchange (g/m2/s CO2)
  397. REAL :: gpp !gross primary assimilation [g/m2/s C]
  398. REAL :: npp !net primary productivity [g/m2/s C]
  399. REAL :: fveg !greenness vegetation fraction [-]
  400. REAL :: qin !groundwater recharge [mm/s]
  401. REAL :: runsf !surface runoff [mm/s]
  402. REAL :: runsb !subsurface runoff [mm/s]
  403. REAL :: ecan !evaporation of intercepted water (mm/s)
  404. REAL :: esoil !soil surface evaporation rate (mm/s]
  405. REAL :: etran !transpiration rate (mm/s)
  406. REAL :: fsa !total absorbed solar radiation (w/m2)
  407. REAL :: fira !total net longwave rad (w/m2) [+ to atm]
  408. REAL :: fsh !total sensible heat (w/m2) [+ to atm]
  409. REAL :: flh !total latent heat (w/m2) [+ to atm]
  410. REAL :: apar !photosyn active energy by canopy (w/m2)
  411. REAL :: psn !total photosynthesis (umol co2/m2/s) [+]
  412. REAL :: sav !solar rad absorbed by veg. (w/m2)
  413. REAL :: sag !solar rad absorbed by ground (w/m2)
  414. REAL :: fsno !snow cover fraction (-)
  415. REAL :: salb !surface albedo (-)
  416. REAL :: errwat
  417. REAL :: qmelt
  418. REAL :: ponding
  419. REAL :: ponding1
  420. REAL :: ponding2
  421. !local
  422. real :: fsr !total reflected solar radiation (w/m2)
  423. real :: fcev !canopy evaporation heat (w/m2) [+ to atm]
  424. real :: fgev !ground evaporation heat (w/m2) [+ to atm]
  425. real :: fctr !transpiration heat flux (w/m2) [+ to atm]
  426. real, dimension(-2: 0) :: ficeold !snow layer liquid water [mm]
  427. INTEGER :: ILOC !grid index
  428. INTEGER :: JLOC !grid index
  429. INTEGER :: ISC !soil color index
  430. INTEGER :: IST !surface type 1-soil; 2-lake
  431. !niuout
  432. LOGICAL, INTENT(IN ) :: myj,frpcpn
  433. ! DECLARATIONS - LOGICAL
  434. ! ----------------------------------------------------------------------
  435. LOGICAL, PARAMETER :: LOCAL=.false.
  436. LOGICAL :: FRZGRA, SNOWNG
  437. LOGICAL :: IPRINT
  438. ! ----------------------------------------------------------------------
  439. ! DECLARATIONS - INTEGER
  440. ! ----------------------------------------------------------------------
  441. INTEGER :: I,J, ICE,NSOIL,SLOPETYP,SOILTYP,VEGTYP
  442. INTEGER :: NROOT
  443. INTEGER :: KZ ,K
  444. INTEGER :: NS
  445. ! ----------------------------------------------------------------------
  446. ! DECLARATIONS - REAL
  447. ! ----------------------------------------------------------------------
  448. REAL :: DQSDT2, LWDN, PRCP, PSFC, UU, VV, CO2AIR, O2AIR, &
  449. & Q2SAT,Q2SATI,SFCPRS,SFCTMP,SHDFAC,SNOALB1, &
  450. & SOLDN,TBOT,ZLVL, Q2K,ALBBRD, ETA, ETA_KINEMATIC, &
  451. & EMBRD, FOLN, LAT, &
  452. & Z0K,RUNOFF1,RUNOFF2,SOLNET,E2SAT,SFCTSNO
  453. REAL :: RIBB
  454. REAL :: FDTW
  455. REAL :: EMISSI
  456. REAL :: SNCOVR,SNEQV,CHK,TH2
  457. REAL :: SMCMAX,SNOMLT,SOILM,SOILW,Q1,T1
  458. REAL :: Z0BRD
  459. !
  460. REAL :: COSZ
  461. !
  462. !niu REAL, DIMENSION(1:num_soil_layers):: SLDPTH, STC,SMC,SWC
  463. REAL, DIMENSION(1:num_soil_layers):: SLDPTH,SWC
  464. !jref:start
  465. REAL, DIMENSION(1:num_soil_layers):: STCNEW
  466. !jref:end
  467. !
  468. REAL, DIMENSION(1:num_soil_layers) :: ZSOIL, RTDIS
  469. REAL, PARAMETER :: TRESH=.95E0, A2=17.67,A3=273.15,A4=29.65, &
  470. T0=273.16E0, ELWV=2.50E6, A23M4=A2*(A3-A4)
  471. ! Used for calculating the 2-m Potential Temperature:
  472. REAL, PARAMETER :: CAPA=R_D/CP
  473. REAL :: APELM
  474. REAL :: APES
  475. REAL :: SFCTH2
  476. ! ----------------------------------------------------------------------
  477. ! ----------------------------------------------------------------------
  478. ! MEK JUL2007
  479. FDTW=DT/(XLV*RHOWATER)
  480. ! debug printout
  481. IPRINT=.false.
  482. ! SLOPETYP=2
  483. SLOPETYP=1
  484. ! SHDMIN=0.00
  485. YEARLEN = 365
  486. if (mod(YR,4) == 0) then
  487. YEARLEN = 366
  488. if (mod(YR,100) == 0) then
  489. YEARLEN = 365
  490. if (mod(YR,400) == 0) then
  491. YEARLEN = 366
  492. endif
  493. endif
  494. endif
  495. NSOIL=num_soil_layers
  496. DO NS=1,NSOIL
  497. SLDPTH(NS)=DZS(NS)
  498. ENDDO
  499. call noahmp_options(idveg ,iopt_crs ,iopt_btr ,iopt_run ,iopt_sfc ,iopt_frz , &
  500. iopt_inf ,iopt_rad ,iopt_alb ,iopt_snf ,iopt_tbot, iopt_stc )
  501. ISC = 4 ! soil color: assuming a middle color category ?????????
  502. ZSOIL(1) = -SLDPTH(1) ! move out of x-y do loops
  503. DO KZ = 2, NSOIL
  504. ZSOIL(KZ) = -SLDPTH(KZ) + ZSOIL(KZ-1)
  505. END DO
  506. FOLN = 1.0
  507. !niuout
  508. DO J=jts,jte
  509. IF(ITIMESTEP.EQ.1)THEN
  510. DO I=its,ite
  511. !*** SET ZERO-VALUE FOR SOME OUTPUT DIAGNOSTIC ARRAYS
  512. IF((XLAND(I,J)-1.5).GE.0.)THEN
  513. ! check sea-ice point
  514. IF(XICE(I,J).EQ.1..and.IPRINT)PRINT*,' sea-ice at water point, I=',I, &
  515. 'J=',J
  516. !*** Open Water Case
  517. SMSTAV(I,J)=1.0
  518. SMSTOT(I,J)=1.0
  519. DO NS=1,NSOIL
  520. SMOIS(I,NS,J)=1.0
  521. TSLB(I,NS,J)=273.16 !STEMP
  522. ENDDO
  523. ELSE
  524. IF(XICE(I,J).EQ.1.)THEN
  525. !*** SEA-ICE CASE
  526. SMSTAV(I,J)=1.0
  527. SMSTOT(I,J)=1.0
  528. DO NS=1,NSOIL
  529. SMOIS(I,NS,J)=1.0
  530. ENDDO
  531. ENDIF
  532. ENDIF
  533. !
  534. ENDDO
  535. ENDIF ! end of initialization over ocean
  536. !-----------------------------------------------------------------------
  537. DO I=its,ite
  538. ! surface pressure
  539. PSFC=P8w3D(i,1,j)
  540. ! pressure in middle of lowest layer
  541. SFCPRS=(P8W3D(I,KTS+1,j)+P8W3D(i,KTS,j))*0.5
  542. ! convert from mixing ratio to specific humidity
  543. Q2K=QV3D(i,1,j)/(1.0+QV3D(i,1,j))
  544. !
  545. ! Q2SAT=QGH(I,j)
  546. Q2SAT=QGH(I,J)/(1.0+QGH(I,J)) ! Q2SAT is sp humidity
  547. ! add check on myj=.true.
  548. ! IF((Q2K.GE.Q2SAT*TRESH).AND.Q2K.LT.QZ0(I,J))THEN
  549. IF((myj).AND.(Q2K.GE.Q2SAT*TRESH).AND.Q2K.LT.QZ0(I,J))THEN
  550. CHKLOWQ(I,J)=0.
  551. ELSE
  552. CHKLOWQ(I,J)=1.
  553. ENDIF
  554. SFCTMP=T3D(i,1,j)
  555. ZLVL=0.5*DZ8W(i,1,j)
  556. ! TH2=SFCTMP+(0.0097545*ZLVL)
  557. ! calculate SFCTH2 via Exner function vs lapse-rate (above)
  558. APES=(1.E5/PSFC)**CAPA
  559. APELM=(1.E5/SFCPRS)**CAPA
  560. SFCTH2=SFCTMP*APELM
  561. TH2=SFCTH2/APES
  562. !
  563. EMISSI = EMISS(I,J)
  564. ! LWDN=GLW(I,J)*EMISSI
  565. LWDN=GLW(I,J)
  566. ! SOLDN is total incoming solar
  567. SOLDN=SWDOWN(I,J)
  568. ! GSW is net downward solar
  569. ! SOLNET=GSW(I,J)
  570. ! use mid-day albedo to determine net downward solar (no solar zenith angle correction)
  571. SOLNET=SOLDN*(1.-ALBEDO(I,J))
  572. PRCP=RAINBL(i,j)/DT
  573. VEGTYP=IVGTYP(I,J)
  574. SOILTYP=ISLTYP(I,J)
  575. SHDFAC=VEGFRA(I,J)/100.
  576. T1=TSK(I,J)
  577. CHK=CHS(I,J)
  578. SNOALB1=SNOALB(I,J) !NEW
  579. ! if "SR" present, set frac of frozen precip ("FFROZP") = snow-ratio ("SR", range:0-1)
  580. ! SR from e.g. Ferrier microphysics
  581. ! otherwise define from 1st atmos level temperature
  582. IF(FRPCPN) THEN
  583. FFROZP=SR(I,J)
  584. ELSE
  585. IF (SFCTMP <= 273.15) THEN
  586. FFROZP = 1.0
  587. ELSE
  588. FFROZP = 0.0
  589. ENDIF
  590. ENDIF
  591. !***
  592. IF((XLAND(I,J)-1.5).GE.0.)THEN ! begining of land/sea if block
  593. ! Open water points
  594. ELSE
  595. ! Land or sea-ice case
  596. IF (XICE(I,J) .GT. 0.5) THEN
  597. ICE=1
  598. ELSE
  599. ICE=0
  600. ENDIF
  601. DQSDT2=Q2SAT*A23M4/(SFCTMP-A4)**2
  602. IF(SNOW(I,J).GT.0.0)THEN
  603. ! snow on surface (use ice saturation properties)
  604. SFCTSNO=SFCTMP
  605. E2SAT=611.2*EXP(6174.*(1./273.15 - 1./SFCTSNO))
  606. Q2SATI=0.622*E2SAT/(SFCPRS-E2SAT)
  607. Q2SATI=Q2SATI/(1.0+Q2SATI) ! spec. hum.
  608. IF(T1 .GT. 273.15)THEN
  609. ! warm ground temps, weight the saturation between ice and water according to SNOWC
  610. Q2SAT=Q2SAT*(1.-SNOWC(I,J)) + Q2SATI*SNOWC(I,J)
  611. DQSDT2=DQSDT2*(1.-SNOWC(I,J)) + Q2SATI*6174./(SFCTSNO**2)*SNOWC(I,J)
  612. ELSE
  613. ! cold ground temps, use ice saturation only
  614. Q2SAT=Q2SATI
  615. DQSDT2=Q2SATI*6174./(SFCTSNO**2)
  616. ENDIF
  617. ! for snow cover fraction at 0 C, ground temp will not change, so DQSDT2 effectively zero
  618. IF(T1 .GT. 273. .AND. SNOWC(I,J) .GT. 0.)DQSDT2=DQSDT2*(1.-SNOWC(I,J))
  619. ENDIF
  620. IF(ICE.EQ.0)THEN
  621. TBOT=TMN(I,J)
  622. ELSE
  623. TBOT=271.16
  624. ENDIF
  625. IF(VEGTYP.EQ.25) SHDFAC=0.0000
  626. IF(VEGTYP.EQ.26) SHDFAC=0.0000
  627. IF(VEGTYP.EQ.27) SHDFAC=0.0000
  628. IF(SOILTYP.EQ.14.AND.XICE(I,J).EQ.0.)THEN
  629. IF(IPRINT)PRINT*,' SOIL TYPE FOUND TO BE WATER AT A LAND-POINT'
  630. IF(IPRINT)PRINT*,i,j,'RESET SOIL in surfce.F'
  631. SOILTYP=7
  632. ENDIF
  633. !-------------------------------------------
  634. ALBBRD=ALBBCK(I,J)
  635. Z0BRD=Z0(I,J)
  636. EMBRD=EMBCK(I,J)
  637. !jref:start - check if this is correct!! Maybe snowd
  638. RIBB=RIB(I,J)
  639. SNOTIME1 = SNOTIME(I,J)
  640. !jref:end
  641. !FEI: temporaray arrays above need to be changed later by using SI
  642. !niu DO 70 NS=1,NSOIL
  643. !niu SMC(NS)=SMOIS(I,NS,J)
  644. !niu STC(NS)=TSLB(I,NS,J) !STEMP
  645. !niu SWC(NS)=SH2O(I,NS,J)
  646. !niu 70 CONTINUE
  647. !
  648. IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == 31 .or. &
  649. IVGTYP(I,J) == 32 .or. IVGTYP(I,J) == 33) THEN
  650. VEGTYP = ISURBAN
  651. ENDIF
  652. IST = 1
  653. IF(VEGTYP == 16) IST = 2 ! lake points
  654. CALL REDPRM (VEGTYP,SOILTYP,SLOPETYP,SLDPTH,ZSOIL,NSOIL,ISURBAN)
  655. UU = U_PHY(I,1,J)
  656. VV = V_PHY(I,1,J)
  657. CO2AIR = 395.E-06 * SFCPRS !partial pressure co2 (pa)
  658. O2AIR = 0.209 * SFCPRS !partial pressure o2 (pa)
  659. COSZ = COSZ_URB2D(I,J)
  660. LAT = XLAT_URB2D(I,J)
  661. isnow = isnowxy (i,j)
  662. stc (isnow+1: 0) = tsnoxy (i,isnow+1: 0,j)
  663. stc ( 1:nsoil) = tslb (i, 1:nsoil,j)
  664. smc ( 1:nsoil) = smois (i, 1:nsoil,j)
  665. smh2o( 1:nsoil) = sh2o (i, 1:nsoil,j)
  666. tv = tvxy (i,j)
  667. tg = tgxy (i,j)
  668. canliq = canliqxy(i,j)
  669. canice = canicexy(i,j)
  670. snowd = snowh (i,j)
  671. swe = snow (i,j)
  672. eah = eahxy (i,j)
  673. tah = tahxy (i,j)
  674. cm = cmxy (i,j)
  675. ch = chxy (i,j)
  676. !jref:start
  677. chstar = chs (i,j)
  678. chstar2 = chs2 (i,j)
  679. cqstar2 = cqs2 (i,j)
  680. tstar = T1
  681. qc = qcxy (i,j)
  682. pblh = pblhxy (i,j)
  683. qsfc1d = qsfc (i,j)
  684. t2mv = t2mvxy (i,j)
  685. t2mb = t2mbxy (i,j)
  686. q2mv = q2mvxy (i,j)
  687. q2mb = q2mbxy (i,j)
  688. qv1d = qv3d (i,1,j) ! seaice/glacial needs mixing ratio (q2k = specific hum).
  689. dz8w1d = dz8w (i,1,j)
  690. shdmax = shdmaxxy (i,j)/100. !fraction
  691. !jref:end
  692. fwet = fwetxy (i,j)
  693. sneqvo = sneqvoxy(i,j)
  694. albold = alboldxy(i,j)
  695. qsnow = qsnowxy (i,j)
  696. wslake = wslakexy(i,j)
  697. zwt = zwtxy (i,j)
  698. wa = waxy (i,j)
  699. wt = wtxy (i,j)
  700. zsnso(isnow+1:nsoil) = zsnsoxy (i,isnow+1:nsoil,j)
  701. snice(isnow+1: 0) = snicexy (i,isnow+1: 0,j)
  702. snliq(isnow+1: 0) = snliqxy (i,isnow+1: 0,j)
  703. lfmass = lfmassxy(i,j)
  704. rtmass = rtmassxy(i,j)
  705. stmass = stmassxy(i,j)
  706. wood = woodxy (i,j)
  707. stblcp = stblcpxy(i,j)
  708. fastcp = fastcpxy(i,j)
  709. plai = xlaixy (i,j)
  710. psai = xsaixy (i,j)
  711. ficeold(isnow+1:0) = snicexy(i,isnow+1:0,j) &
  712. /(snicexy(i,isnow+1:0,j)+snliqxy(i,isnow+1:0,j))
  713. ! glacial, seaice split - jref
  714. IF ( XICE(I,J) >= XICE_THRESHOLD ) THEN
  715. SH2O (i,1:nsoil,j) = 1.0
  716. XLAIXY(i,j) = 0.01
  717. cycle ! Skip any processing at sea-ice points
  718. ELSE IF ( VEGTYP == ISICE ) THEN
  719. SNCOVR = SNOWC(I,J)
  720. swe = swe*0.001 !jref mm -> m
  721. if ( (swe.ne.0..AND.snowd.eq.0.).or.(snowd.le.swe) )THEN
  722. snowd= 5.*swe
  723. endif
  724. CALL SFLX_GLACIAL(I,J,ISICE,FFROZP,DT,ZLVL,NSOIL,SLDPTH, & !C
  725. & LWDN,SOLNET,SFCPRS,PRCP,SFCTMP,Q2K, & !F
  726. & TH2,Q2SAT,DQSDT2, & !I
  727. & ALBBRD, SNOALB1,TBOT, Z0BRD, Z0K, EMISSI, EMBRD, & !S
  728. & tstar,STC(1:NSOIL),snowd,swe,salb,chstar, & !H
  729. & ETA,fsh, ETA_KINEMATIC,FDOWN, & !O
  730. & ESNOW,DEW, & !O
  731. & ETP,SSOIL, & !O
  732. & FLX1,FLX2,FLX3, & !O
  733. & SNOMLT,SNCOVR, & !O
  734. & runsf, & !O
  735. & Q1, & !D
  736. & SNOTIME1, &
  737. & RIBB)
  738. tgb = sfctmp ! Bare ground temperature will be the surface temperature over glacial points.
  739. tgv = 0.0 ! Temperature under vegetation undefined over glacial points.
  740. swe = swe*1000.
  741. plai = 0.01 ! Should make this zero?
  742. smc = 1.00
  743. smh2o = 1.00 ! Something else?
  744. runsb = 0.00
  745. fgev = ETA
  746. fcev = 0.
  747. fctr = 0.
  748. soilm = 1.0 ! Something else?
  749. ! SMAV = 1.00 ! Something else?
  750. SNOWC(I,J) = 1.0
  751. QFX(I,J) = eta_kinematic
  752. POTEVP(I,J)=POTEVP(I,J)+ETP*FDTW
  753. CHS2(I,J) = CQS2(I,J)
  754. IF ( Q1 .GT. QSFC(I,J) ) THEN
  755. CQS2(I,J) = CHS(I,J)
  756. ENDIF
  757. ELSE
  758. !jref:end
  759. nee = -1.E36
  760. npp = -1.E36
  761. #if 0
  762. if ( I == 15 .and. J == 5 ) then
  763. ! Intent (IN) or Intent (INOUT), but not Intent (OUT)
  764. write(*,'("Before call to NOAHMP_SFLX, at point ", I8, I8)') i, j
  765. write(*,'(10x, "ICE = ", I10 )') ICE
  766. write(*,'(10x, "IST = ", I10 )') IST
  767. write(*,'(10x, "VEGTYP = ", I10 )') VEGTYP
  768. write(*,'(10x, "ISC = ", I10 )') ISC
  769. write(*,'(10x, "NSOIL = ", I10 )') NSOIL
  770. write(*,'(10x, "ZSOIL = ", 7F20.10)') ZSOIL
  771. write(*,'(10x, "DT = ", F20.10)') DT
  772. write(*,'(10x, "QV1D = ", F20.10)') QV1D
  773. write(*,'(10x, "SFCTMP = ", F20.10)') SFCTMP
  774. write(*,'(10x, "UU = ", F20.10)') UU
  775. write(*,'(10x, "VV = ", F20.10)') VV
  776. write(*,'(10x, "SOLDN = ", F20.10)') SOLDN
  777. write(*,'(10x, "LWDN = ", F20.10)') LWDN
  778. write(*,'(10x, "PRCP = ", F20.10)') PRCP
  779. write(*,'(10x, "ZLVL = ", F20.10)') ZLVL
  780. write(*,'(10x, "CO2AIR = ", F20.10)') CO2AIR
  781. write(*,'(10x, "O2AIR = ", F20.10)') O2AIR
  782. write(*,'(10x, "COSZ = ", F20.10)') COSZ
  783. write(*,'(10x, "TBOT = ", F20.10)') TBOT
  784. write(*,'(10x, "FOLN = ", F20.10)') FOLN
  785. write(*,'(10x, "SFCPRS = ", F20.10)') SFCPRS
  786. write(*,'(10x, "SHDFAC = ", F20.10)') SHDFAC
  787. write(*,'(10x, "LAT = ", F20.10)') LAT
  788. write(*,'(10x, "DZ8W1D = ", F20.10)') DZ8W1D
  789. write(*,'(10x, "EAH = ", F20.10)') EAH
  790. write(*,'(10x, "TAH = ", F20.10)') TAH
  791. write(*,'(10x, "FWET = ", F20.10)') FWET
  792. write(*,'(10x, "FICEOLD = ", 7F20.10)') FICEOLD
  793. write(*,'(10x, "QSNOW = ", F20.10)') QSNOW
  794. write(*,'(10x, "SNEQVO = ", F20.10)') SNEQVO
  795. write(*,'(10x, "ISNOW = ", F20.10)') ISNOW
  796. write(*,'(10x, "ZSNSO = ", 7F20.10)') ZSNSO
  797. write(*,'(10x, "CANLIQ = ", F20.10)') CANLIQ
  798. write(*,'(10x, "CANICE = ", F20.10)') CANICE
  799. write(*,'(10x, "SNOWD = ", F20.10)') SNOWD
  800. write(*,'(10x, "SWE = ", F20.10)') SWE
  801. write(*,'(10x, "SNICE = ", 7F20.10)') SNICE
  802. write(*,'(10x, "SNLIQ = ", 7F20.10)') SNLIQ
  803. write(*,'(10x, "TV = ", F20.10)') TV
  804. write(*,'(10x, "TG = ", F20.10)') TG
  805. write(*,'(10x, "STC = ", 7F20.10)') STC
  806. write(*,'(10x, "SMH2O = ", 7F20.10)') SMH2O
  807. write(*,'(10x, "SMC = ", 7F20.10)') SMC
  808. write(*,'(10x, "ZWT = ", F20.10)') ZWT
  809. write(*,'(10x, "WA = ", F20.10)') WA
  810. write(*,'(10x, "WT = ", F20.10)') WT
  811. write(*,'(10x, "WSLAKE = ", F20.10)') WSLAKE
  812. write(*,'(10x, "LFMASS = ", F20.10)') LFMASS
  813. write(*,'(10x, "RTMASS = ", F20.10)') RTMASS
  814. write(*,'(10x, "STMASS = ", F20.10)') STMASS
  815. write(*,'(10x, "WOOD = ", F20.10)') WOOD
  816. write(*,'(10x, "STBLCP = ", F20.10)') STBLCP
  817. write(*,'(10x, "FASTCP = ", F20.10)') FASTCP
  818. write(*,'(10x, "PLAI = ", F20.10)') PLAI
  819. write(*,'(10x, "PSAI = ", F20.10)') PSAI
  820. write(*,'(10x, "ALBOLD = ", F20.10)') ALBOLD
  821. write(*,'(10x, "CM = ", F20.10)') CM
  822. write(*,'(10x, "CH = ", F20.10)') CH
  823. write(*,'(10x, "DX = ", F20.10)') DX
  824. write(*,'(10x, "ISURBAN = ", I10 )') ISURBAN
  825. write(*,'(10x, "IZ0TLND = ", I10 )') IZ0TLND
  826. write(*,'(10x, "QC = ", F20.10)') QC
  827. write(*,'(10x, "PBLH = ", F20.10)') PBLH
  828. write(*,'(10x, "QSFC1D = ", F20.10)') QSFC1D
  829. write(*,'(10x, "PSFC = ", F20.10)') PSFC
  830. endif
  831. #endif
  832. CALL NOAHMP_SFLX (&
  833. I , J , LAT , YEARLEN , JULIAN , COSZ , & ! IN : Time/Space-related
  834. DT , DX , DZ8W1D , NSOIL , ZSOIL , 3 , & ! IN : Model configuration
  835. SHDFAC , SHDMAX , VEGTYP , ISURBAN , ICE , IST , & ! IN : Vegetation/Soil characteristics
  836. ISC , & ! IN : Vegetation/Soil characteristics
  837. IZ0TLND , & ! IN : User options
  838. SFCTMP , SFCPRS , PSFC , UU , VV , QV1D , & ! IN : Forcing
  839. QC , SOLDN , LWDN , PRCP , TBOT , CO2AIR , & ! IN : Forcing
  840. O2AIR , FOLN , FICEOLD , PBLH , & ! IN : Forcing
  841. ZLVL , ALBOLD , SNEQVO , & ! IN/OUT :
  842. STC , SMH2O , SMC , TAH , EAH , FWET , & ! IN/OUT :
  843. CANLIQ , CANICE , TV , TG , QSFC1D , QSNOW , & ! IN/OUT :
  844. ISNOW , ZSNSO , SNOWD , SWE , SNICE , SNLIQ , & ! IN/OUT :
  845. ZWT , WA , WT , WSLAKE , LFMASS , RTMASS , & ! IN/OUT :
  846. STMASS , WOOD , STBLCP , FASTCP , PLAI , PSAI , & ! IN/OUT :
  847. CM , CH , CHSTAR , & ! IN/OUT :
  848. FSA , FSR , FIRA , FSH , SSOIL , FCEV , & ! OUT :
  849. FGEV , FCTR , ECAN , ETRAN , ESOIL , TRAD , & ! OUT :
  850. TS , TGB , TGV , T2MV , T2MB , TSTAR , & ! OUT :
  851. Q1 , Q2MV , Q2MB , RUNSF , RUNSB , APAR , & ! OUT :
  852. PSN , SAV , SAG , FSNO , NEE , GPP , & ! OUT :
  853. NPP , FVEG , SALB , QMELT , PONDING , PONDING1, & ! OUT :
  854. PONDING2, RSSUN , RSSHA , BGAP , WGAP , GAP , & ! OUT :
  855. ERRWAT , CHV , CHB , EMISSI) ! OUT :
  856. #if 0
  857. if ( I == 15 .and. J == 5 ) then
  858. ! Intent (OUT) or Intent (INOUT), but not Intent (IN)
  859. write(*,'("After call to NOAHMP_SFLX, at point ", I8, I8)') i, j
  860. write(*,'(10x, "ZLVL = ", 7F20.10)') ZLVL
  861. write(*,'(10x, "EAH = ", F20.10)') EAH
  862. write(*,'(10x, "TAH = ", F20.10)') TAH
  863. write(*,'(10x, "FWET = ", F20.10)') FWET
  864. write(*,'(10x, "QSNOW = ", F20.10)') QSNOW
  865. write(*,'(10x, "SNEQVO = ", F20.10)') SNEQVO
  866. write(*,'(10x, "ISNOW = ", F20.10)') ISNOW
  867. write(*,'(10x, "ZSNSO = ", 7F20.10)') ZSNSO
  868. write(*,'(10x, "CANLIQ = ", F20.10)') CANLIQ
  869. write(*,'(10x, "CANICE = ", F20.10)') CANICE
  870. write(*,'(10x, "SNOWD = ", F20.10)') SNOWD
  871. write(*,'(10x, "SWE = ", F20.10)') SWE
  872. write(*,'(10x, "SNICE = ", 3F20.10)') SNICE
  873. write(*,'(10x, "SNLIQ = ", 3F20.10)') SNLIQ
  874. write(*,'(10x, "TV = ", F20.10)') TV
  875. write(*,'(10x, "TG = ", F20.10)') TG
  876. write(*,'(10x, "STC = …

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