PageRenderTime 63ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 1ms

/wrfv2_fire/phys/module_sf_noahlsm.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 4386 lines | 1824 code | 407 blank | 2155 comment | 16 complexity | 10a90af5021bbb5054ddb7df958396ba 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_noahlsm
  2. USE module_model_constants, only : CP, R_D, XLF, XLV, RHOWATER, STBOLT, KARMAN
  3. ! REAL, PARAMETER :: CP = 1004.5
  4. REAL, PARAMETER :: RD = 287.04, SIGMA = 5.67E-8, &
  5. CPH2O = 4.218E+3,CPICE = 2.106E+3, &
  6. LSUBF = 3.335E+5, &
  7. EMISSI_S = 0.95
  8. ! VEGETATION PARAMETERS
  9. INTEGER :: LUCATS , BARE
  10. INTEGER :: NATURAL
  11. integer, PARAMETER :: NLUS=50
  12. CHARACTER(LEN=256) LUTYPE
  13. INTEGER, DIMENSION(1:NLUS) :: NROTBL
  14. real, dimension(1:NLUS) :: SNUPTBL, RSTBL, RGLTBL, HSTBL, &
  15. SHDTBL, MAXALB, &
  16. EMISSMINTBL, EMISSMAXTBL, &
  17. LAIMINTBL, LAIMAXTBL, &
  18. Z0MINTBL, Z0MAXTBL, &
  19. ALBEDOMINTBL, ALBEDOMAXTBL
  20. REAL :: TOPT_DATA,CMCMAX_DATA,CFACTR_DATA,RSMAX_DATA
  21. ! SOIL PARAMETERS
  22. INTEGER :: SLCATS
  23. INTEGER, PARAMETER :: NSLTYPE=30
  24. CHARACTER(LEN=256) SLTYPE
  25. REAL, DIMENSION (1:NSLTYPE) :: BB,DRYSMC,F11, &
  26. MAXSMC, REFSMC,SATPSI,SATDK,SATDW, WLTSMC,QTZ
  27. ! LSM GENERAL PARAMETERS
  28. INTEGER :: SLPCATS
  29. INTEGER, PARAMETER :: NSLOPE=30
  30. REAL, DIMENSION (1:NSLOPE) :: SLOPE_DATA
  31. REAL :: SBETA_DATA,FXEXP_DATA,CSOIL_DATA,SALP_DATA,REFDK_DATA, &
  32. REFKDT_DATA,FRZK_DATA,ZBOT_DATA, SMLOW_DATA,SMHIGH_DATA, &
  33. CZIL_DATA
  34. REAL :: LVCOEF_DATA
  35. CHARACTER*256 :: err_message
  36. integer, private :: iloc, jloc
  37. !
  38. CONTAINS
  39. !
  40. SUBROUTINE SFLX (IILOC,JJLOC,ICE,FFROZP,ISURBAN,DT,ZLVL,NSOIL,SLDPTH, & !C
  41. LOCAL, & !L
  42. LLANDUSE, LSOIL, & !CL
  43. LWDN,SOLDN,SOLNET,SFCPRS,PRCP,SFCTMP,Q2,SFCSPD, & !F
  44. COSZ,PRCPRAIN, SOLARDIRECT, & !F
  45. TH2,Q2SAT,DQSDT2, & !I
  46. VEGTYP,SOILTYP,SLOPETYP,SHDFAC,SHDMIN,SHDMAX, & !I
  47. ALB, SNOALB,TBOT, Z0BRD, Z0, EMISSI, EMBRD, & !S
  48. CMC,T1,STC,SMC,SH2O,SNOWH,SNEQV,ALBEDO,CH,CM, & !H
  49. ! ----------------------------------------------------------------------
  50. ! OUTPUTS, DIAGNOSTICS, PARAMETERS BELOW GENERALLY NOT NECESSARY WHEN
  51. ! COUPLED WITH E.G. A NWP MODEL (SUCH AS THE NOAA/NWS/NCEP MESOSCALE ETA
  52. ! MODEL). OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES.
  53. ! ----------------------------------------------------------------------
  54. ETA,SHEAT, ETA_KINEMATIC,FDOWN, & !O
  55. EC,EDIR,ET,ETT,ESNOW,DRIP,DEW, & !O
  56. BETA,ETP,SSOIL, & !O
  57. FLX1,FLX2,FLX3, & !O
  58. SNOMLT,SNCOVR, & !O
  59. RUNOFF1,RUNOFF2,RUNOFF3, & !O
  60. RC,PC,RSMIN,XLAI,RCS,RCT,RCQ,RCSOIL, & !O
  61. SOILW,SOILM,Q1,SMAV, & !D
  62. RDLAI2D,USEMONALB, &
  63. SNOTIME1, &
  64. RIBB, &
  65. SMCWLT,SMCDRY,SMCREF,SMCMAX,NROOT) !P
  66. ! ----------------------------------------------------------------------
  67. ! SUBROUTINE SFLX - UNIFIED NOAHLSM VERSION 1.0 JULY 2007
  68. ! ----------------------------------------------------------------------
  69. ! SUB-DRIVER FOR "Noah LSM" FAMILY OF PHYSICS SUBROUTINES FOR A
  70. ! SOIL/VEG/SNOWPACK LAND-SURFACE MODEL TO UPDATE SOIL MOISTURE, SOIL
  71. ! ICE, SOIL TEMPERATURE, SKIN TEMPERATURE, SNOWPACK WATER CONTENT,
  72. ! SNOWDEPTH, AND ALL TERMS OF THE SURFACE ENERGY BALANCE AND SURFACE
  73. ! WATER BALANCE (EXCLUDING INPUT ATMOSPHERIC FORCINGS OF DOWNWARD
  74. ! RADIATION AND PRECIP)
  75. ! ----------------------------------------------------------------------
  76. ! SFLX ARGUMENT LIST KEY:
  77. ! ----------------------------------------------------------------------
  78. ! C CONFIGURATION INFORMATION
  79. ! L LOGICAL
  80. ! CL 4-string character bearing logical meaning
  81. ! F FORCING DATA
  82. ! I OTHER (INPUT) FORCING DATA
  83. ! S SURFACE CHARACTERISTICS
  84. ! H HISTORY (STATE) VARIABLES
  85. ! O OUTPUT VARIABLES
  86. ! D DIAGNOSTIC OUTPUT
  87. ! P Parameters
  88. ! Msic Miscellaneous terms passed from gridded driver
  89. ! ----------------------------------------------------------------------
  90. ! 1. CONFIGURATION INFORMATION (C):
  91. ! ----------------------------------------------------------------------
  92. ! ICE SEA-ICE FLAG (=1: SEA-ICE, =0: LAND (NO ICE), =-1 LAND-ICE).
  93. ! DT TIMESTEP (SEC) (DT SHOULD NOT EXCEED 3600 SECS, RECOMMEND
  94. ! 1800 SECS OR LESS)
  95. ! ZLVL HEIGHT (M) ABOVE GROUND OF ATMOSPHERIC FORCING VARIABLES
  96. ! NSOIL NUMBER OF SOIL LAYERS (AT LEAST 2, AND NOT GREATER THAN
  97. ! PARAMETER NSOLD SET BELOW)
  98. ! SLDPTH THE THICKNESS OF EACH SOIL LAYER (M)
  99. ! ----------------------------------------------------------------------
  100. ! 2. LOGICAL:
  101. ! ----------------------------------------------------------------------
  102. ! LCH Exchange coefficient (Ch) calculation flag (false: using
  103. ! ch-routine SFCDIF; true: Ch is brought in)
  104. ! LOCAL Flag for local-site simulation (where there is no
  105. ! maps for albedo, veg fraction, and roughness
  106. ! true: all LSM parameters (inluding albedo, veg fraction and
  107. ! roughness length) will be defined by three tables
  108. ! LLANDUSE (=USGS, using USGS landuse classification)
  109. ! LSOIL (=STAS, using FAO/STATSGO soil texture classification)
  110. ! ----------------------------------------------------------------------
  111. ! 3. FORCING DATA (F):
  112. ! ----------------------------------------------------------------------
  113. ! LWDN LW DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET LONGWAVE)
  114. ! SOLDN SOLAR DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET SOLAR)
  115. ! SOLNET NET DOWNWARD SOLAR RADIATION ((W M-2; POSITIVE)
  116. ! SFCPRS PRESSURE AT HEIGHT ZLVL ABOVE GROUND (PASCALS)
  117. ! PRCP PRECIP RATE (KG M-2 S-1) (NOTE, THIS IS A RATE)
  118. ! SFCTMP AIR TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND
  119. ! TH2 AIR POTENTIAL TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND
  120. ! Q2 MIXING RATIO AT HEIGHT ZLVL ABOVE GROUND (KG KG-1)
  121. ! COSZ Solar zenith angle (not used for now)
  122. ! PRCPRAIN Liquid-precipitation rate (KG M-2 S-1) (not used)
  123. ! SOLARDIRECT Direct component of downward solar radiation (W M-2) (not used)
  124. ! FFROZP FRACTION OF FROZEN PRECIPITATION
  125. ! ----------------------------------------------------------------------
  126. ! 4. OTHER FORCING (INPUT) DATA (I):
  127. ! ----------------------------------------------------------------------
  128. ! SFCSPD WIND SPEED (M S-1) AT HEIGHT ZLVL ABOVE GROUND
  129. ! Q2SAT SAT SPECIFIC HUMIDITY AT HEIGHT ZLVL ABOVE GROUND (KG KG-1)
  130. ! DQSDT2 SLOPE OF SAT SPECIFIC HUMIDITY CURVE AT T=SFCTMP
  131. ! (KG KG-1 K-1)
  132. ! ----------------------------------------------------------------------
  133. ! 5. CANOPY/SOIL CHARACTERISTICS (S):
  134. ! ----------------------------------------------------------------------
  135. ! VEGTYP VEGETATION TYPE (INTEGER INDEX)
  136. ! SOILTYP SOIL TYPE (INTEGER INDEX)
  137. ! SLOPETYP CLASS OF SFC SLOPE (INTEGER INDEX)
  138. ! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION
  139. ! (FRACTION= 0.0-1.0)
  140. ! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION
  141. ! (FRACTION= 0.0-1.0) <= SHDFAC
  142. ! PTU PHOTO THERMAL UNIT (PLANT PHENOLOGY FOR ANNUALS/CROPS)
  143. ! (NOT YET USED, BUT PASSED TO REDPRM FOR FUTURE USE IN
  144. ! VEG PARMS)
  145. ! ALB BACKROUND SNOW-FREE SURFACE ALBEDO (FRACTION), FOR JULIAN
  146. ! DAY OF YEAR (USUALLY FROM TEMPORAL INTERPOLATION OF
  147. ! MONTHLY MEAN VALUES' CALLING PROG MAY OR MAY NOT
  148. ! INCLUDE DIURNAL SUN ANGLE EFFECT)
  149. ! SNOALB UPPER BOUND ON MAXIMUM ALBEDO OVER DEEP SNOW (E.G. FROM
  150. ! ROBINSON AND KUKLA, 1985, J. CLIM. & APPL. METEOR.)
  151. ! TBOT BOTTOM SOIL TEMPERATURE (LOCAL YEARLY-MEAN SFC AIR
  152. ! TEMPERATURE)
  153. ! Z0BRD Background fixed roughness length (M)
  154. ! Z0 Time varying roughness length (M) as function of snow depth
  155. !
  156. ! EMBRD Background surface emissivity (between 0 and 1)
  157. ! EMISSI Surface emissivity (between 0 and 1)
  158. ! ----------------------------------------------------------------------
  159. ! 6. HISTORY (STATE) VARIABLES (H):
  160. ! ----------------------------------------------------------------------
  161. ! CMC CANOPY MOISTURE CONTENT (M)
  162. ! T1 GROUND/CANOPY/SNOWPACK) EFFECTIVE SKIN TEMPERATURE (K)
  163. ! STC(NSOIL) SOIL TEMP (K)
  164. ! SMC(NSOIL) TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION)
  165. ! SH2O(NSOIL) UNFROZEN SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION)
  166. ! NOTE: FROZEN SOIL MOISTURE = SMC - SH2O
  167. ! SNOWH ACTUAL SNOW DEPTH (M)
  168. ! SNEQV LIQUID WATER-EQUIVALENT SNOW DEPTH (M)
  169. ! NOTE: SNOW DENSITY = SNEQV/SNOWH
  170. ! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT (UNITLESS FRACTION)
  171. ! =SNOW-FREE ALBEDO (ALB) WHEN SNEQV=0, OR
  172. ! =FCT(MSNOALB,ALB,VEGTYP,SHDFAC,SHDMIN) WHEN SNEQV>0
  173. ! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE
  174. ! (M S-1); NOTE: CH IS TECHNICALLY A CONDUCTANCE SINCE
  175. ! IT HAS BEEN MULTIPLIED BY WIND SPEED.
  176. ! CM SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM (M S-1); NOTE:
  177. ! CM IS TECHNICALLY A CONDUCTANCE SINCE IT HAS BEEN
  178. ! MULTIPLIED BY WIND SPEED.
  179. ! ----------------------------------------------------------------------
  180. ! 7. OUTPUT (O):
  181. ! ----------------------------------------------------------------------
  182. ! OUTPUT VARIABLES NECESSARY FOR A COUPLED NUMERICAL WEATHER PREDICTION
  183. ! MODEL, E.G. NOAA/NWS/NCEP MESOSCALE ETA MODEL. FOR THIS APPLICATION,
  184. ! THE REMAINING OUTPUT/DIAGNOSTIC/PARAMETER BLOCKS BELOW ARE NOT
  185. ! NECESSARY. OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES.
  186. ! ETA ACTUAL LATENT HEAT FLUX (W m-2: NEGATIVE, IF UP FROM
  187. ! SURFACE)
  188. ! ETA_KINEMATIC atctual latent heat flux in Kg m-2 s-1
  189. ! SHEAT SENSIBLE HEAT FLUX (W M-2: NEGATIVE, IF UPWARD FROM
  190. ! SURFACE)
  191. ! FDOWN Radiation forcing at the surface (W m-2) = SOLDN*(1-alb)+LWDN
  192. ! ----------------------------------------------------------------------
  193. ! EC CANOPY WATER EVAPORATION (W m-2)
  194. ! EDIR DIRECT SOIL EVAPORATION (W m-2)
  195. ! ET(NSOIL) PLANT TRANSPIRATION FROM A PARTICULAR ROOT (SOIL) LAYER
  196. ! (W m-2)
  197. ! ETT TOTAL PLANT TRANSPIRATION (W m-2)
  198. ! ESNOW SUBLIMATION FROM (OR DEPOSITION TO IF <0) SNOWPACK
  199. ! (W m-2)
  200. ! DRIP THROUGH-FALL OF PRECIP AND/OR DEW IN EXCESS OF CANOPY
  201. ! WATER-HOLDING CAPACITY (M)
  202. ! DEW DEWFALL (OR FROSTFALL FOR T<273.15) (M)
  203. ! ----------------------------------------------------------------------
  204. ! BETA RATIO OF ACTUAL/POTENTIAL EVAP (DIMENSIONLESS)
  205. ! ETP POTENTIAL EVAPORATION (W m-2)
  206. ! SSOIL SOIL HEAT FLUX (W M-2: NEGATIVE IF DOWNWARD FROM SURFACE)
  207. ! ----------------------------------------------------------------------
  208. ! FLX1 PRECIP-SNOW SFC (W M-2)
  209. ! FLX2 FREEZING RAIN LATENT HEAT FLUX (W M-2)
  210. ! FLX3 PHASE-CHANGE HEAT FLUX FROM SNOWMELT (W M-2)
  211. ! ----------------------------------------------------------------------
  212. ! SNOMLT SNOW MELT (M) (WATER EQUIVALENT)
  213. ! SNCOVR FRACTIONAL SNOW COVER (UNITLESS FRACTION, 0-1)
  214. ! ----------------------------------------------------------------------
  215. ! RUNOFF1 SURFACE RUNOFF (M S-1), NOT INFILTRATING THE SURFACE
  216. ! RUNOFF2 SUBSURFACE RUNOFF (M S-1), DRAINAGE OUT BOTTOM OF LAST
  217. ! SOIL LAYER (BASEFLOW)
  218. ! RUNOFF3 NUMERICAL TRUNCTATION IN EXCESS OF POROSITY (SMCMAX)
  219. ! FOR A GIVEN SOIL LAYER AT THE END OF A TIME STEP (M S-1).
  220. ! Note: the above RUNOFF2 is actually the sum of RUNOFF2 and RUNOFF3
  221. ! ----------------------------------------------------------------------
  222. ! RC CANOPY RESISTANCE (S M-1)
  223. ! PC PLANT COEFFICIENT (UNITLESS FRACTION, 0-1) WHERE PC*ETP
  224. ! = ACTUAL TRANSP
  225. ! XLAI LEAF AREA INDEX (DIMENSIONLESS)
  226. ! RSMIN MINIMUM CANOPY RESISTANCE (S M-1)
  227. ! RCS INCOMING SOLAR RC FACTOR (DIMENSIONLESS)
  228. ! RCT AIR TEMPERATURE RC FACTOR (DIMENSIONLESS)
  229. ! RCQ ATMOS VAPOR PRESSURE DEFICIT RC FACTOR (DIMENSIONLESS)
  230. ! RCSOIL SOIL MOISTURE RC FACTOR (DIMENSIONLESS)
  231. ! ----------------------------------------------------------------------
  232. ! 8. DIAGNOSTIC OUTPUT (D):
  233. ! ----------------------------------------------------------------------
  234. ! SOILW AVAILABLE SOIL MOISTURE IN ROOT ZONE (UNITLESS FRACTION
  235. ! BETWEEN SMCWLT AND SMCMAX)
  236. ! SOILM TOTAL SOIL COLUMN MOISTURE CONTENT (FROZEN+UNFROZEN) (M)
  237. ! Q1 Effective mixing ratio at surface (kg kg-1), used for
  238. ! diagnosing the mixing ratio at 2 meter for coupled model
  239. ! SMAV Soil Moisture Availability for each layer, as a fraction
  240. ! between SMCWLT and SMCMAX.
  241. ! Documentation for SNOTIME1 and SNOABL2 ?????
  242. ! What categories of arguments do these variables fall into ????
  243. ! Documentation for RIBB ?????
  244. ! What category of argument does RIBB fall into ?????
  245. ! ----------------------------------------------------------------------
  246. ! 9. PARAMETERS (P):
  247. ! ----------------------------------------------------------------------
  248. ! SMCWLT WILTING POINT (VOLUMETRIC)
  249. ! SMCDRY DRY SOIL MOISTURE THRESHOLD WHERE DIRECT EVAP FRM TOP
  250. ! LAYER ENDS (VOLUMETRIC)
  251. ! SMCREF SOIL MOISTURE THRESHOLD WHERE TRANSPIRATION BEGINS TO
  252. ! STRESS (VOLUMETRIC)
  253. ! SMCMAX POROSITY, I.E. SATURATED VALUE OF SOIL MOISTURE
  254. ! (VOLUMETRIC)
  255. ! NROOT NUMBER OF ROOT LAYERS, A FUNCTION OF VEG TYPE, DETERMINED
  256. ! IN SUBROUTINE REDPRM.
  257. ! ----------------------------------------------------------------------
  258. IMPLICIT NONE
  259. ! ----------------------------------------------------------------------
  260. ! DECLARATIONS - LOGICAL AND CHARACTERS
  261. ! ----------------------------------------------------------------------
  262. INTEGER, INTENT(IN) :: IILOC, JJLOC
  263. LOGICAL, INTENT(IN):: LOCAL
  264. LOGICAL :: FRZGRA, SNOWNG
  265. CHARACTER (LEN=256), INTENT(IN):: LLANDUSE, LSOIL
  266. ! ----------------------------------------------------------------------
  267. ! 1. CONFIGURATION INFORMATION (C):
  268. ! ----------------------------------------------------------------------
  269. INTEGER,INTENT(IN) :: ICE,NSOIL,SLOPETYP,SOILTYP,VEGTYP
  270. INTEGER, INTENT(IN) :: ISURBAN
  271. INTEGER,INTENT(OUT):: NROOT
  272. INTEGER KZ, K, iout
  273. ! ----------------------------------------------------------------------
  274. ! 2. LOGICAL:
  275. ! ----------------------------------------------------------------------
  276. LOGICAL, INTENT(IN) :: RDLAI2D
  277. LOGICAL, INTENT(IN) :: USEMONALB
  278. REAL, INTENT(IN) :: SHDMIN,SHDMAX,DT,DQSDT2,LWDN,PRCP,PRCPRAIN, &
  279. Q2,Q2SAT,SFCPRS,SFCSPD,SFCTMP, SNOALB, &
  280. SOLDN,SOLNET,TBOT,TH2,ZLVL, &
  281. FFROZP
  282. REAL, INTENT(OUT) :: EMBRD
  283. REAL, INTENT(OUT) :: ALBEDO
  284. REAL, INTENT(INOUT):: COSZ, SOLARDIRECT,CH,CM, &
  285. CMC,SNEQV,SNCOVR,SNOWH,T1,XLAI,SHDFAC,Z0BRD, &
  286. EMISSI, ALB
  287. REAL, INTENT(INOUT):: SNOTIME1
  288. REAL, INTENT(INOUT):: RIBB
  289. REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SLDPTH
  290. REAL, DIMENSION(1:NSOIL), INTENT(OUT):: ET
  291. REAL, DIMENSION(1:NSOIL), INTENT(OUT):: SMAV
  292. REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SH2O, SMC, STC
  293. REAL,DIMENSION(1:NSOIL):: RTDIS, ZSOIL
  294. REAL,INTENT(OUT) :: ETA_KINEMATIC,BETA,DEW,DRIP,EC,EDIR,ESNOW,ETA, &
  295. ETP,FLX1,FLX2,FLX3,SHEAT,PC,RUNOFF1,RUNOFF2, &
  296. RUNOFF3,RC,RSMIN,RCQ,RCS,RCSOIL,RCT,SSOIL, &
  297. SMCDRY,SMCMAX,SMCREF,SMCWLT,SNOMLT, SOILM, &
  298. SOILW,FDOWN,Q1
  299. REAL :: BEXP,CFACTR,CMCMAX,CSOIL,CZIL,DF1,DF1H,DF1A,DKSAT,DWSAT, &
  300. DSOIL,DTOT,ETT,FRCSNO,FRCSOI,EPSCA,F1,FXEXP,FRZX,HS, &
  301. KDT,LVH2O,PRCP1,PSISAT,QUARTZ,R,RCH,REFKDT,RR,RGL, &
  302. RSMAX, &
  303. RSNOW,SNDENS,SNCOND,SBETA,SN_NEW,SLOPE,SNUP,SALP,SOILWM, &
  304. SOILWW,T1V,T24,T2V,TH2V,TOPT,TFREEZ,TSNOW,ZBOT,Z0,PRCPF, &
  305. ETNS,PTU,LSUBS
  306. REAL :: LVCOEF
  307. REAL :: INTERP_FRACTION
  308. REAL :: LAIMIN, LAIMAX
  309. REAL :: ALBEDOMIN, ALBEDOMAX
  310. REAL :: EMISSMIN, EMISSMAX
  311. REAL :: Z0MIN, Z0MAX
  312. ! ----------------------------------------------------------------------
  313. ! DECLARATIONS - PARAMETERS
  314. ! ----------------------------------------------------------------------
  315. PARAMETER (TFREEZ = 273.15)
  316. PARAMETER (LVH2O = 2.501E+6)
  317. PARAMETER (LSUBS = 2.83E+6)
  318. PARAMETER (R = 287.04)
  319. ! ----------------------------------------------------------------------
  320. ! INITIALIZATION
  321. ! ----------------------------------------------------------------------
  322. ILOC = IILOC
  323. JLOC = JJLOC
  324. RUNOFF1 = 0.0
  325. RUNOFF2 = 0.0
  326. RUNOFF3 = 0.0
  327. SNOMLT = 0.0
  328. ! ----------------------------------------------------------------------
  329. ! THE VARIABLE "ICE" IS A FLAG DENOTING SEA-ICE / LAND-ICE / ICE-FREE LAND
  330. ! SEA-ICE CASE, ICE = 1
  331. ! NON-GLACIAL LAND, ICE = 0
  332. ! GLACIAL ICE, ICE = -1
  333. IF (ICE == 1) call wrf_error_fatal("Sea-ice point in Noah-LSM")
  334. IF (ICE == -1) SHDFAC = 0.0
  335. ! ----------------------------------------------------------------------
  336. ! CALCULATE DEPTH (NEGATIVE) BELOW GROUND FROM TOP SKIN SFC TO BOTTOM OF
  337. ! EACH SOIL LAYER. NOTE: SIGN OF ZSOIL IS NEGATIVE (DENOTING BELOW
  338. ! GROUND)
  339. ! ----------------------------------------------------------------------
  340. ZSOIL (1) = - SLDPTH (1)
  341. DO KZ = 2,NSOIL
  342. ZSOIL (KZ) = - SLDPTH (KZ) + ZSOIL (KZ -1)
  343. END DO
  344. ! ----------------------------------------------------------------------
  345. ! NEXT IS CRUCIAL CALL TO SET THE LAND-SURFACE PARAMETERS, INCLUDING
  346. ! SOIL-TYPE AND VEG-TYPE DEPENDENT PARAMETERS.
  347. ! ----------------------------------------------------------------------
  348. CALL REDPRM (VEGTYP,SOILTYP,SLOPETYP,CFACTR,CMCMAX,RSMAX,TOPT, &
  349. REFKDT,KDT,SBETA, SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX, &
  350. PSISAT,SLOPE,SNUP,SALP,BEXP,DKSAT,DWSAT, &
  351. SMCMAX,SMCWLT,SMCREF,SMCDRY,F1,QUARTZ,FXEXP, &
  352. RTDIS,SLDPTH,ZSOIL,NROOT,NSOIL,CZIL, &
  353. LAIMIN, LAIMAX, EMISSMIN, EMISSMAX, ALBEDOMIN, &
  354. ALBEDOMAX, Z0MIN, Z0MAX, CSOIL, PTU, LLANDUSE, &
  355. LSOIL,LOCAL,LVCOEF)
  356. !urban
  357. IF(VEGTYP==ISURBAN)THEN
  358. SHDFAC=0.05
  359. RSMIN=400.0
  360. SMCMAX = 0.45
  361. SMCREF = 0.42
  362. SMCWLT = 0.40
  363. SMCDRY = 0.40
  364. ENDIF
  365. IF ( SHDFAC >= SHDMAX ) THEN
  366. EMBRD = EMISSMAX
  367. IF (.NOT. RDLAI2D) THEN
  368. XLAI = LAIMAX
  369. ENDIF
  370. IF (.NOT. USEMONALB) THEN
  371. ALB = ALBEDOMIN
  372. ENDIF
  373. Z0BRD = Z0MAX
  374. ELSE IF ( SHDFAC <= SHDMIN ) THEN
  375. EMBRD = EMISSMIN
  376. IF(.NOT. RDLAI2D) THEN
  377. XLAI = LAIMIN
  378. ENDIF
  379. IF(.NOT. USEMONALB) then
  380. ALB = ALBEDOMAX
  381. ENDIF
  382. Z0BRD = Z0MIN
  383. ELSE
  384. IF ( SHDMAX > SHDMIN ) THEN
  385. INTERP_FRACTION = ( SHDFAC - SHDMIN ) / ( SHDMAX - SHDMIN )
  386. ! Bound INTERP_FRACTION between 0 and 1
  387. INTERP_FRACTION = MIN ( INTERP_FRACTION, 1.0 )
  388. INTERP_FRACTION = MAX ( INTERP_FRACTION, 0.0 )
  389. ! Scale Emissivity and LAI between EMISSMIN and EMISSMAX by INTERP_FRACTION
  390. EMBRD = ( ( 1.0 - INTERP_FRACTION ) * EMISSMIN ) + ( INTERP_FRACTION * EMISSMAX )
  391. IF (.NOT. RDLAI2D) THEN
  392. XLAI = ( ( 1.0 - INTERP_FRACTION ) * LAIMIN ) + ( INTERP_FRACTION * LAIMAX )
  393. ENDIF
  394. if (.not. USEMONALB) then
  395. ALB = ( ( 1.0 - INTERP_FRACTION ) * ALBEDOMAX ) + ( INTERP_FRACTION * ALBEDOMIN )
  396. endif
  397. Z0BRD = ( ( 1.0 - INTERP_FRACTION ) * Z0MIN ) + ( INTERP_FRACTION * Z0MAX )
  398. ELSE
  399. EMBRD = 0.5 * EMISSMIN + 0.5 * EMISSMAX
  400. IF (.NOT. RDLAI2D) THEN
  401. XLAI = 0.5 * LAIMIN + 0.5 * LAIMAX
  402. ENDIF
  403. if (.not. USEMONALB) then
  404. ALB = 0.5 * ALBEDOMIN + 0.5 * ALBEDOMAX
  405. endif
  406. Z0BRD = 0.5 * Z0MIN + 0.5 * Z0MAX
  407. ENDIF
  408. ENDIF
  409. ! ----------------------------------------------------------------------
  410. ! INITIALIZE PRECIPITATION LOGICALS.
  411. ! ----------------------------------------------------------------------
  412. SNOWNG = .FALSE.
  413. FRZGRA = .FALSE.
  414. ! ----------------------------------------------------------------------
  415. IF ( ICE == -1 ) THEN
  416. !
  417. ! FOR GLACIAL ICE, IF S.W.E. (SNEQV) BELOW THRESHOLD LOWER
  418. ! BOUND (0.10 M FOR GLACIAL ICE), THEN SET AT LOWER BOUND.
  419. !
  420. IF ( SNEQV < 0.10 ) THEN
  421. SNEQV = 0.10
  422. SNOWH = 0.50
  423. ENDIF
  424. !
  425. ! FOR GLACIAL ICE, SET SMC AND SH20 VALUES = 1.0
  426. !
  427. DO KZ = 1,NSOIL
  428. SMC(KZ) = 1.0
  429. SH2O(KZ) = 1.0
  430. END DO
  431. ENDIF
  432. ! ----------------------------------------------------------------------
  433. ! IF INPUT SNOWPACK IS NONZERO, THEN COMPUTE SNOW DENSITY "SNDENS" AND
  434. ! SNOW THERMAL CONDUCTIVITY "SNCOND" (NOTE THAT CSNOW IS A FUNCTION
  435. ! SUBROUTINE)
  436. ! ----------------------------------------------------------------------
  437. IF ( SNEQV <= 1.E-7 ) THEN ! safer IF kmh (2008/03/25)
  438. SNEQV = 0.0
  439. SNDENS = 0.0
  440. SNOWH = 0.0
  441. SNCOND = 1.0
  442. ELSE
  443. SNDENS = SNEQV / SNOWH
  444. IF(SNDENS > 1.0) THEN
  445. CALL wrf_error_fatal ( 'Physical snow depth is less than snow water equiv.' )
  446. ENDIF
  447. CALL CSNOW (SNCOND,SNDENS)
  448. END IF
  449. ! ----------------------------------------------------------------------
  450. ! DETERMINE IF IT'S PRECIPITATING AND WHAT KIND OF PRECIP IT IS.
  451. ! IF IT'S PRCPING AND THE AIR TEMP IS COLDER THAN 0 C, IT'S SNOWING!
  452. ! IF IT'S PRCPING AND THE AIR TEMP IS WARMER THAN 0 C, BUT THE GRND
  453. ! TEMP IS COLDER THAN 0 C, FREEZING RAIN IS PRESUMED TO BE FALLING.
  454. ! ----------------------------------------------------------------------
  455. IF (PRCP > 0.0) THEN
  456. ! snow defined when fraction of frozen precip (FFROZP) > 0.5,
  457. ! passed in from model microphysics.
  458. IF (FFROZP .GT. 0.5) THEN
  459. SNOWNG = .TRUE.
  460. ELSE
  461. IF (T1 <= TFREEZ) FRZGRA = .TRUE.
  462. END IF
  463. END IF
  464. ! ----------------------------------------------------------------------
  465. ! IF EITHER PRCP FLAG IS SET, DETERMINE NEW SNOWFALL (CONVERTING PRCP
  466. ! RATE FROM KG M-2 S-1 TO A LIQUID EQUIV SNOW DEPTH IN METERS) AND ADD
  467. ! IT TO THE EXISTING SNOWPACK.
  468. ! NOTE THAT SINCE ALL PRECIP IS ADDED TO SNOWPACK, NO PRECIP INFILTRATES
  469. ! INTO THE SOIL SO THAT PRCP1 IS SET TO ZERO.
  470. ! ----------------------------------------------------------------------
  471. IF ( (SNOWNG) .OR. (FRZGRA) ) THEN
  472. SN_NEW = PRCP * DT * 0.001
  473. SNEQV = SNEQV + SN_NEW
  474. PRCPF = 0.0
  475. ! ----------------------------------------------------------------------
  476. ! UPDATE SNOW DENSITY BASED ON NEW SNOWFALL, USING OLD AND NEW SNOW.
  477. ! UPDATE SNOW THERMAL CONDUCTIVITY
  478. ! ----------------------------------------------------------------------
  479. CALL SNOW_NEW (SFCTMP,SN_NEW,SNOWH,SNDENS)
  480. !
  481. ! kmh 09/04/2006 set Snow Density at 0.2 g/cm**3
  482. ! for "cold permanent ice" or new "dry" snow
  483. !
  484. IF ( (ICE == -1) .and. (SNCOVR .GT. 0.99) ) THEN
  485. ! if soil temperature less than 268.15 K, treat as typical Antarctic/Greenland snow firn
  486. IF ( STC(1) .LT. (TFREEZ - 5.) ) SNDENS = 0.2
  487. IF ( SNOWNG .AND. (T1.LT.273.) .AND. (SFCTMP.LT.273.) ) SNDENS=0.2
  488. ENDIF
  489. !
  490. CALL CSNOW (SNCOND,SNDENS)
  491. ! ----------------------------------------------------------------------
  492. ! PRECIP IS LIQUID (RAIN), HENCE SAVE IN THE PRECIP VARIABLE THAT
  493. ! LATER CAN WHOLELY OR PARTIALLY INFILTRATE THE SOIL (ALONG WITH
  494. ! ANY CANOPY "DRIP" ADDED TO THIS LATER)
  495. ! ----------------------------------------------------------------------
  496. ELSE
  497. PRCPF = PRCP
  498. ENDIF
  499. ! ----------------------------------------------------------------------
  500. ! DETERMINE SNOWCOVER AND ALBEDO OVER LAND.
  501. ! ----------------------------------------------------------------------
  502. ! ----------------------------------------------------------------------
  503. ! IF SNOW DEPTH=0, SET SNOW FRACTION=0, ALBEDO=SNOW FREE ALBEDO.
  504. ! ----------------------------------------------------------------------
  505. IF (SNEQV == 0.0) THEN
  506. SNCOVR = 0.0
  507. ALBEDO = ALB
  508. EMISSI = EMBRD
  509. ELSE
  510. ! ----------------------------------------------------------------------
  511. ! DETERMINE SNOW FRACTIONAL COVERAGE.
  512. ! DETERMINE SURFACE ALBEDO MODIFICATION DUE TO SNOWDEPTH STATE.
  513. ! ----------------------------------------------------------------------
  514. CALL SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR)
  515. ! kmh 2008/03/25
  516. ! Don't limit snow cover fraction over permanent ice
  517. IF ( ICE == 0 ) SNCOVR = MIN(SNCOVR,0.98)
  518. CALL ALCALC (ALB,SNOALB,EMBRD,SHDFAC,SHDMIN,SNCOVR,T1, &
  519. ALBEDO,EMISSI,DT,SNOWNG,SNOTIME1,LVCOEF)
  520. ENDIF
  521. ! ----------------------------------------------------------------------
  522. ! THERMAL CONDUCTIVITY FOR GLACIAL ICE CASE
  523. ! ----------------------------------------------------------------------
  524. IF ( ICE == -1 ) THEN
  525. DF1 = 2.2
  526. !
  527. ! kmh 09/03/2006
  528. ! kmh 03/25/2008 change SNCOVR threshold to 0.97
  529. !
  530. ! only apply (small) DF1 conductivity for permanent land ice
  531. !
  532. IF ( SNCOVR .GT. 0.97 ) THEN
  533. DF1 = SNCOND
  534. ENDIF
  535. ELSEIF ( ICE == 0 ) THEN
  536. ! ----------------------------------------------------------------------
  537. ! NEXT CALCULATE THE SUBSURFACE HEAT FLUX, WHICH FIRST REQUIRES
  538. ! CALCULATION OF THE THERMAL DIFFUSIVITY. TREATMENT OF THE
  539. ! LATTER FOLLOWS THAT ON PAGES 148-149 FROM "HEAT TRANSFER IN
  540. ! COLD CLIMATES", BY V. J. LUNARDINI (PUBLISHED IN 1981
  541. ! BY VAN NOSTRAND REINHOLD CO.) I.E. TREATMENT OF TWO CONTIGUOUS
  542. ! "PLANE PARALLEL" MEDIUMS (NAMELY HERE THE FIRST SOIL LAYER
  543. ! AND THE SNOWPACK LAYER, IF ANY). THIS DIFFUSIVITY TREATMENT
  544. ! BEHAVES WELL FOR BOTH ZERO AND NONZERO SNOWPACK, INCLUDING THE
  545. ! LIMIT OF VERY THIN SNOWPACK. THIS TREATMENT ALSO ELIMINATES
  546. ! THE NEED TO IMPOSE AN ARBITRARY UPPER BOUND ON SUBSURFACE
  547. ! HEAT FLUX WHEN THE SNOWPACK BECOMES EXTREMELY THIN.
  548. ! ----------------------------------------------------------------------
  549. ! FIRST CALCULATE THERMAL DIFFUSIVITY OF TOP SOIL LAYER, USING
  550. ! BOTH THE FROZEN AND LIQUID SOIL MOISTURE, FOLLOWING THE
  551. ! SOIL THERMAL DIFFUSIVITY FUNCTION OF PETERS-LIDARD ET AL.
  552. ! (1998,JAS, VOL 55, 1209-1224), WHICH REQUIRES THE SPECIFYING
  553. ! THE QUARTZ CONTENT OF THE GIVEN SOIL CLASS (SEE ROUTINE REDPRM)
  554. ! ----------------------------------------------------------------------
  555. ! ----------------------------------------------------------------------
  556. ! NEXT ADD SUBSURFACE HEAT FLUX REDUCTION EFFECT FROM THE
  557. ! OVERLYING GREEN CANOPY, ADAPTED FROM SECTION 2.1.2 OF
  558. ! PETERS-LIDARD ET AL. (1997, JGR, VOL 102(D4))
  559. ! ----------------------------------------------------------------------
  560. CALL TDFCND (DF1,SMC (1),QUARTZ,SMCMAX,SH2O (1))
  561. !urban
  562. IF ( VEGTYP == ISURBAN ) DF1=3.24
  563. DF1 = DF1 * EXP (SBETA * SHDFAC)
  564. !
  565. ! kmh 09/03/2006
  566. ! kmh 03/25/2008 change SNCOVR threshold to 0.97
  567. !
  568. IF ( SNCOVR .GT. 0.97 ) THEN
  569. DF1 = SNCOND
  570. ENDIF
  571. !
  572. ! ----------------------------------------------------------------------
  573. ! FINALLY "PLANE PARALLEL" SNOWPACK EFFECT FOLLOWING
  574. ! V.J. LINARDINI REFERENCE CITED ABOVE. NOTE THAT DTOT IS
  575. ! COMBINED DEPTH OF SNOWDEPTH AND THICKNESS OF FIRST SOIL LAYER
  576. ! ----------------------------------------------------------------------
  577. END IF
  578. DSOIL = - (0.5 * ZSOIL (1))
  579. IF (SNEQV == 0.) THEN
  580. SSOIL = DF1 * (T1- STC (1) ) / DSOIL
  581. ELSE
  582. DTOT = SNOWH + DSOIL
  583. FRCSNO = SNOWH / DTOT
  584. ! 1. HARMONIC MEAN (SERIES FLOW)
  585. ! DF1 = (SNCOND*DF1)/(FRCSOI*SNCOND+FRCSNO*DF1)
  586. FRCSOI = DSOIL / DTOT
  587. ! 2. ARITHMETIC MEAN (PARALLEL FLOW)
  588. ! DF1 = FRCSNO*SNCOND + FRCSOI*DF1
  589. DF1H = (SNCOND * DF1)/ (FRCSOI * SNCOND+ FRCSNO * DF1)
  590. ! 3. GEOMETRIC MEAN (INTERMEDIATE BETWEEN HARMONIC AND ARITHMETIC MEAN)
  591. ! DF1 = (SNCOND**FRCSNO)*(DF1**FRCSOI)
  592. ! weigh DF by snow fraction
  593. ! DF1 = DF1H*SNCOVR + DF1A*(1.0-SNCOVR)
  594. ! DF1 = DF1H*SNCOVR + DF1*(1.0-SNCOVR)
  595. DF1A = FRCSNO * SNCOND+ FRCSOI * DF1
  596. ! ----------------------------------------------------------------------
  597. ! CALCULATE SUBSURFACE HEAT FLUX, SSOIL, FROM FINAL THERMAL DIFFUSIVITY
  598. ! OF SURFACE MEDIUMS, DF1 ABOVE, AND SKIN TEMPERATURE AND TOP
  599. ! MID-LAYER SOIL TEMPERATURE
  600. ! ----------------------------------------------------------------------
  601. DF1 = DF1A * SNCOVR + DF1* (1.0- SNCOVR)
  602. IF ( ICE == -1 ) then
  603. ! kmh 12/15/2005 correct for too deep snow layer
  604. ! kmh 09/03/2006 adjust DTOT
  605. IF ( DTOT .GT. 2.*DSOIL ) then
  606. DTOT = 2.*DSOIL
  607. ENDIF
  608. ENDIF
  609. SSOIL = DF1 * (T1- STC (1) ) / DTOT
  610. END IF
  611. ! ----------------------------------------------------------------------
  612. ! DETERMINE SURFACE ROUGHNESS OVER SNOWPACK USING SNOW CONDITION FROM
  613. ! THE PREVIOUS TIMESTEP.
  614. ! ----------------------------------------------------------------------
  615. IF (SNCOVR > 0. ) THEN
  616. CALL SNOWZ0 (SNCOVR,Z0,Z0BRD,SNOWH)
  617. ELSE
  618. Z0=Z0BRD
  619. END IF
  620. ! ----------------------------------------------------------------------
  621. ! NEXT CALL ROUTINE SFCDIF TO CALCULATE THE SFC EXCHANGE COEF (CH) FOR
  622. ! HEAT AND MOISTURE.
  623. ! NOTE !!!
  624. ! DO NOT CALL SFCDIF UNTIL AFTER ABOVE CALL TO REDPRM, IN CASE
  625. ! ALTERNATIVE VALUES OF ROUGHNESS LENGTH (Z0) AND ZILINTINKEVICH COEF
  626. ! (CZIL) ARE SET THERE VIA NAMELIST I/O.
  627. ! NOTE !!!
  628. ! ROUTINE SFCDIF RETURNS A CH THAT REPRESENTS THE WIND SPD TIMES THE
  629. ! "ORIGINAL" NONDIMENSIONAL "Ch" TYPICAL IN LITERATURE. HENCE THE CH
  630. ! RETURNED FROM SFCDIF HAS UNITS OF M/S. THE IMPORTANT COMPANION
  631. ! COEFFICIENT OF CH, CARRIED HERE AS "RCH", IS THE CH FROM SFCDIF TIMES
  632. ! AIR DENSITY AND PARAMETER "CP". "RCH" IS COMPUTED IN "CALL PENMAN".
  633. ! RCH RATHER THAN CH IS THE COEFF USUALLY INVOKED LATER IN EQNS.
  634. ! NOTE !!!
  635. ! ----------------------------------------------------------------------
  636. ! SFCDIF ALSO RETURNS THE SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM, CM,
  637. ! ALSO KNOWN AS THE SURFACE DRAGE COEFFICIENT. Needed as a state variable
  638. ! for iterative/implicit solution of CH in SFCDIF
  639. ! ----------------------------------------------------------------------
  640. ! IF(.NOT.LCH) THEN
  641. ! T1V = T1 * (1.0+ 0.61 * Q2)
  642. ! TH2V = TH2 * (1.0+ 0.61 * Q2)
  643. ! CALL SFCDIF_off (ZLVL,Z0,T1V,TH2V,SFCSPD,CZIL,CM,CH)
  644. ! ENDIF
  645. ! ----------------------------------------------------------------------
  646. ! CALL PENMAN SUBROUTINE TO CALCULATE POTENTIAL EVAPORATION (ETP), AND
  647. ! OTHER PARTIAL PRODUCTS AND SUMS SAVE IN COMMON/RITE FOR LATER
  648. ! CALCULATIONS.
  649. ! ----------------------------------------------------------------------
  650. ! ----------------------------------------------------------------------
  651. ! CALCULATE TOTAL DOWNWARD RADIATION (SOLAR PLUS LONGWAVE) NEEDED IN
  652. ! PENMAN EP SUBROUTINE THAT FOLLOWS
  653. ! ----------------------------------------------------------------------
  654. ! FDOWN = SOLDN * (1.0- ALBEDO) + LWDN
  655. FDOWN = SOLNET + LWDN
  656. ! ----------------------------------------------------------------------
  657. ! CALC VIRTUAL TEMPS AND VIRTUAL POTENTIAL TEMPS NEEDED BY SUBROUTINES
  658. ! PENMAN.
  659. T2V = SFCTMP * (1.0+ 0.61 * Q2 )
  660. iout=0
  661. if(iout.eq.1) then
  662. print*,'before penman'
  663. print*,' SFCTMP',SFCTMP,'SFCPRS',SFCPRS,'CH',CH,'T2V',T2V, &
  664. 'TH2',TH2,'PRCP',PRCP,'FDOWN',FDOWN,'T24',T24,'SSOIL',SSOIL, &
  665. 'Q2',Q2,'Q2SAT',Q2SAT,'ETP',ETP,'RCH',RCH, &
  666. 'EPSCA',EPSCA,'RR',RR ,'SNOWNG',SNOWNG,'FRZGRA',FRZGRA, &
  667. 'DQSDT2',DQSDT2,'FLX2',FLX2,'SNOWH',SNOWH,'SNEQV',SNEQV, &
  668. ' DSOIL',DSOIL,' FRCSNO',FRCSNO,' SNCOVR',SNCOVR,' DTOT',DTOT, &
  669. ' ZSOIL (1)',ZSOIL(1),' DF1',DF1,'T1',T1,' STC1',STC(1), &
  670. 'ALBEDO',ALBEDO,'SMC',SMC,'STC',STC,'SH2O',SH2O
  671. endif
  672. CALL PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, &
  673. Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, &
  674. !
  675. ! kmh 01/09/2007 add T1,ICE,SNCOVR to call
  676. !
  677. DQSDT2,FLX2,EMISSI,SNEQV,T1,ICE,SNCOVR)
  678. !
  679. ! ----------------------------------------------------------------------
  680. ! CALL CANRES TO CALCULATE THE CANOPY RESISTANCE AND CONVERT IT INTO PC
  681. ! IF NONZERO GREENNESS FRACTION
  682. ! ----------------------------------------------------------------------
  683. ! ----------------------------------------------------------------------
  684. ! FROZEN GROUND EXTENSION: TOTAL SOIL WATER "SMC" WAS REPLACED
  685. ! BY UNFROZEN SOIL WATER "SH2O" IN CALL TO CANRES BELOW
  686. ! ----------------------------------------------------------------------
  687. IF (SHDFAC > 0.) THEN
  688. CALL CANRES (SOLDN,CH,SFCTMP,Q2,SFCPRS,SH2O,ZSOIL,NSOIL, &
  689. SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, &
  690. TOPT,RSMAX,RGL,HS,XLAI, &
  691. RCS,RCT,RCQ,RCSOIL,EMISSI)
  692. ELSE
  693. RC = 0.0
  694. END IF
  695. ! ----------------------------------------------------------------------
  696. ! NOW DECIDE MAJOR PATHWAY BRANCH TO TAKE DEPENDING ON WHETHER SNOWPACK
  697. ! EXISTS OR NOT:
  698. ! ----------------------------------------------------------------------
  699. ESNOW = 0.0
  700. IF (SNEQV == 0.0) THEN
  701. CALL NOPAC (ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, &
  702. SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, &
  703. SHDFAC, &
  704. SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,EMISSI, &
  705. SSOIL, &
  706. STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, &
  707. SH2O,SLOPE,KDT,FRZX,PSISAT,ZSOIL, &
  708. DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, &
  709. RUNOFF3,EDIR,EC,ET,ETT,NROOT,ICE,RTDIS, &
  710. QUARTZ,FXEXP,CSOIL, &
  711. BETA,DRIP,DEW,FLX1,FLX3,VEGTYP,ISURBAN)
  712. ETA_KINEMATIC = ETA
  713. ELSE
  714. CALL SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,SMC,SMCMAX,SMCWLT, &
  715. SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, &
  716. SBETA,DF1, &
  717. Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA, &
  718. SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,SNEQV,SNDENS,&
  719. SNOWH,SH2O,SLOPE,KDT,FRZX,PSISAT, &
  720. ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, &
  721. RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, &
  722. ICE,RTDIS,QUARTZ,FXEXP,CSOIL, &
  723. BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW,ETNS,EMISSI, &
  724. RIBB,SOLDN, &
  725. ISURBAN, &
  726. VEGTYP)
  727. ETA_KINEMATIC = ESNOW + ETNS
  728. END IF
  729. ! Calculate effective mixing ratio at grnd level (skin)
  730. !
  731. ! Q1=Q2+ETA*CP/RCH
  732. Q1=Q2+ETA_KINEMATIC*CP/RCH
  733. !
  734. ! ----------------------------------------------------------------------
  735. ! DETERMINE SENSIBLE HEAT (H) IN ENERGY UNITS (W M-2)
  736. ! ----------------------------------------------------------------------
  737. SHEAT = - (CH * CP * SFCPRS)/ (R * T2V) * ( TH2- T1 )
  738. ! ----------------------------------------------------------------------
  739. ! CONVERT EVAP TERMS FROM KINEMATIC (KG M-2 S-1) TO ENERGY UNITS (W M-2)
  740. ! ----------------------------------------------------------------------
  741. EDIR = EDIR * LVH2O
  742. EC = EC * LVH2O
  743. DO K=1,4
  744. ET(K) = ET(K) * LVH2O
  745. ENDDO
  746. ETT = ETT * LVH2O
  747. ESNOW = ESNOW * LSUBS
  748. ETP = ETP*((1.-SNCOVR)*LVH2O + SNCOVR*LSUBS)
  749. IF (ETP .GT. 0.) THEN
  750. ETA = EDIR + EC + ETT + ESNOW
  751. ELSE
  752. ETA = ETP
  753. ENDIF
  754. ! ----------------------------------------------------------------------
  755. ! DETERMINE BETA (RATIO OF ACTUAL TO POTENTIAL EVAP)
  756. ! ----------------------------------------------------------------------
  757. IF (ETP == 0.0) THEN
  758. BETA = 0.0
  759. ELSE
  760. BETA = ETA/ETP
  761. ENDIF
  762. ! ----------------------------------------------------------------------
  763. ! CONVERT THE SIGN OF SOIL HEAT FLUX SO THAT:
  764. ! SSOIL>0: WARM THE SURFACE (NIGHT TIME)
  765. ! SSOIL<0: COOL THE SURFACE (DAY TIME)
  766. ! ----------------------------------------------------------------------
  767. SSOIL = -1.0* SSOIL
  768. ! ----------------------------------------------------------------------
  769. ! FOR THE CASE OF LAND (BUT NOT GLACIAL ICE):
  770. ! CONVERT RUNOFF3 (INTERNAL LAYER RUNOFF FROM SUPERSAT) FROM M TO M S-1
  771. ! AND ADD TO SUBSURFACE RUNOFF/DRAINAGE/BASEFLOW. RUNOFF2 IS ALREADY
  772. ! A RATE AT THIS POINT
  773. ! ----------------------------------------------------------------------
  774. IF (ICE == 0) THEN
  775. RUNOFF3 = RUNOFF3/ DT
  776. RUNOFF2 = RUNOFF2+ RUNOFF3
  777. SOILM = -1.0* SMC (1)* ZSOIL (1)
  778. DO K = 2,NSOIL
  779. SOILM = SOILM + SMC (K)* (ZSOIL (K -1) - ZSOIL (K))
  780. END DO
  781. SOILWM = -1.0* (SMCMAX - SMCWLT)* ZSOIL (1)
  782. SOILWW = -1.0* (SMC (1) - SMCWLT)* ZSOIL (1)
  783. !
  784. DO K = 1,NSOIL
  785. SMAV(K)=(SMC(K) - SMCWLT)/(SMCMAX - SMCWLT)
  786. END DO
  787. IF (NROOT >= 2) THEN
  788. DO K = 2,NROOT
  789. SOILWM = SOILWM + (SMCMAX - SMCWLT)* (ZSOIL (K -1) - ZSOIL (K))
  790. SOILWW = SOILWW + (SMC(K) - SMCWLT)* (ZSOIL (K -1) - ZSOIL (K))
  791. END DO
  792. END IF
  793. IF (SOILWM .LT. 1.E-6) THEN
  794. SOILWM = 0.0
  795. SOILW = 0.0
  796. SOILM = 0.0
  797. ELSE
  798. SOILW = SOILWW / SOILWM
  799. END IF
  800. ELSEIF ( ICE == -1 ) THEN
  801. ! ----------------------------------------------------------------------
  802. ! FOR THE CASE OF GLACIAL ICE (ICE == -1), ADD ANY SNOWMELT DIRECTLY TO
  803. ! SURFACE RUNOFF (RUNOFF1) SINCE THERE IS NO SOIL MEDIUM, AND THUS NO
  804. ! CALL TO SUBROUTINE SMFLX (FOR SOIL MOISTURE TENDENCY).
  805. ! ----------------------------------------------------------------------
  806. RUNOFF1 = SNOMLT/DT
  807. SOILWM = 0.0
  808. SOILW = 0.0
  809. SOILM = 0.0
  810. DO K = 1,NSOIL
  811. SMAV(K)= 1.0
  812. END DO
  813. END IF
  814. ! ----------------------------------------------------------------------
  815. END SUBROUTINE SFLX
  816. ! ----------------------------------------------------------------------
  817. SUBROUTINE ALCALC (ALB,SNOALB,EMBRD,SHDFAC,SHDMIN,SNCOVR,TSNOW,ALBEDO,EMISSI, &
  818. DT,SNOWNG,SNOTIME1,LVCOEF)
  819. ! ----------------------------------------------------------------------
  820. ! CALCULATE ALBEDO INCLUDING SNOW EFFECT (0 -> 1)
  821. ! ALB SNOWFREE ALBEDO
  822. ! SNOALB MAXIMUM (DEEP) SNOW ALBEDO
  823. ! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION
  824. ! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION
  825. ! SNCOVR FRACTIONAL SNOW COVER
  826. ! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT
  827. ! TSNOW SNOW SURFACE TEMPERATURE (K)
  828. ! ----------------------------------------------------------------------
  829. IMPLICIT NONE
  830. ! ----------------------------------------------------------------------
  831. ! SNOALB IS ARGUMENT REPRESENTING MAXIMUM ALBEDO OVER DEEP SNOW,
  832. ! AS PASSED INTO SFLX, AND ADAPTED FROM THE SATELLITE-BASED MAXIMUM
  833. ! SNOW ALBEDO FIELDS PROVIDED BY D. ROBINSON AND G. KUKLA
  834. ! (1985, JCAM, VOL 24, 402-411)
  835. ! ----------------------------------------------------------------------
  836. REAL, INTENT(IN) :: ALB, SNOALB, EMBRD, SHDFAC, SHDMIN, SNCOVR, TSNOW
  837. REAL, INTENT(IN) :: DT
  838. LOGICAL, INTENT(IN) :: SNOWNG
  839. REAL, INTENT(INOUT):: SNOTIME1
  840. REAL, INTENT(OUT) :: ALBEDO, EMISSI
  841. REAL :: SNOALB2
  842. REAL :: TM,SNOALB1
  843. REAL, INTENT(IN) :: LVCOEF
  844. REAL, PARAMETER :: SNACCA=0.94,SNACCB=0.58,SNTHWA=0.82,SNTHWB=0.46
  845. ! turn of vegetation effect
  846. ! ALBEDO = ALB + (1.0- (SHDFAC - SHDMIN))* SNCOVR * (SNOALB - ALB)
  847. ! ALBEDO = (1.0-SNCOVR)*ALB + SNCOVR*SNOALB !this is equivalent to below
  848. ALBEDO = ALB + SNCOVR*(SNOALB-ALB)
  849. EMISSI = EMBRD + SNCOVR*(EMISSI_S - EMBRD)
  850. ! BASE FORMULATION (DICKINSON ET AL., 1986, COGLEY ET AL., 1990)
  851. ! IF (TSNOW.LE.263.16) THEN
  852. ! ALBEDO=SNOALB
  853. ! ELSE
  854. ! IF (TSNOW.LT.273.16) THEN
  855. ! TM=0.1*(TSNOW-263.16)
  856. ! SNOALB1=0.5*((0.9-0.2*(TM**3))+(0.8-0.16*(TM**3)))
  857. ! ELSE
  858. ! SNOALB1=0.67
  859. ! IF(SNCOVR.GT.0.95) SNOALB1= 0.6
  860. ! SNOALB1 = ALB + SNCOVR*(SNOALB-ALB)
  861. ! ENDIF
  862. ! ENDIF
  863. ! ALBEDO = ALB + SNCOVR*(SNOALB1-ALB)
  864. ! ISBA FORMULATION (VERSEGHY, 1991; BAKER ET AL., 1990)
  865. ! SNOALB1 = SNOALB+COEF*(0.85-SNOALB)
  866. ! SNOALB2=SNOALB1
  867. !!m LSTSNW=LSTSNW+1
  868. ! SNOTIME1 = SNOTIME1 + DT
  869. ! IF (SNOWNG) THEN
  870. ! SNOALB2=SNOALB
  871. !!m LSTSNW=0
  872. ! SNOTIME1 = 0.0
  873. ! ELSE
  874. ! IF (TSNOW.LT.273.16) THEN
  875. !! SNOALB2=SNOALB-0.008*LSTSNW*DT/86400
  876. !!m SNOALB2=SNOALB-0.008*SNOTIME1/86400
  877. ! SNOALB2=(SNOALB2-0.65)*EXP(-0.05*DT/3600)+0.65
  878. !! SNOALB2=(ALBEDO-0.65)*EXP(-0.01*DT/3600)+0.65
  879. ! ELSE
  880. ! SNOALB2=(SNOALB2-0.5)*EXP(-0.0005*DT/3600)+0.5
  881. !! SNOALB2=(SNOALB-0.5)*EXP(-0.24*LSTSNW*DT/86400)+0.5
  882. !!m SNOALB2=(SNOALB-0.5)*EXP(-0.24*SNOTIME1/86400)+0.5
  883. ! ENDIF
  884. ! ENDIF
  885. !
  886. !! print*,'SNOALB2',SNOALB2,'ALBEDO',ALBEDO,'DT',DT
  887. ! ALBEDO = ALB + SNCOVR*(SNOALB2-ALB)
  888. ! IF (ALBEDO .GT. SNOALB2) ALBEDO=SNOALB2
  889. !!m LSTSNW1=LSTSNW
  890. !! SNOTIME = SNOTIME1
  891. ! formulation by Livneh
  892. ! ----------------------------------------------------------------------
  893. ! SNOALB IS CONSIDERED AS THE MAXIMUM SNOW ALBEDO FOR NEW SNOW, AT
  894. ! A VALUE OF 85%. SNOW ALBEDO CURVE DEFAULTS ARE FROM BRAS P.263. SHOULD
  895. ! NOT BE CHANGED EXCEPT FOR SERIOUS PROBLEMS WITH SNOW MELT.
  896. ! TO IMPLEMENT ACCUMULATIN PARAMETERS, SNACCA AND SNACCB, ASSERT THAT IT
  897. ! IS INDEED ACCUMULATION SEASON. I.E. THAT SNOW SURFACE TEMP IS BELOW
  898. ! ZERO AND THE DATE FALLS BETWEEN OCTOBER AND FEBRUARY
  899. ! ----------------------------------------------------------------------
  900. SNOALB1 = SNOALB+LVCOEF*(0.85-SNOALB)
  901. SNOALB2=SNOALB1
  902. ! ---------------- Initial LSTSNW --------------------------------------
  903. IF (SNOWNG) THEN
  904. SNOTIME1 = 0.
  905. ELSE
  906. SNOTIME1=SNOTIME1+DT
  907. ! IF (TSNOW.LT.273.16) THEN
  908. SNOALB2=SNOALB1*(SNACCA**((SNOTIME1/86400.0)**SNACCB))
  909. ! ELSE
  910. ! SNOALB2 =SNOALB1*(SNTHWA**((SNOTIME1/86400.0)**SNTHWB))
  911. ! ENDIF
  912. ENDIF
  913. !
  914. SNOALB2 = MAX ( SNOALB2, ALB )
  915. ALBEDO = ALB + SNCOVR*(SNOALB2-ALB)
  916. IF (ALBEDO .GT. SNOALB2) ALBEDO=SNOALB2
  917. ! IF (TSNOW.LT.273.16) THEN
  918. ! ALBEDO=SNOALB-0.008*DT/86400
  919. ! ELSE
  920. ! ALBEDO=(SNOALB-0.5)*EXP(-0.24*DT/86400)+0.5
  921. ! ENDIF
  922. ! IF (ALBEDO > SNOALB) ALBEDO = SNOALB
  923. ! ----------------------------------------------------------------------
  924. END SUBROUTINE ALCALC
  925. ! ----------------------------------------------------------------------
  926. SUBROUTINE CANRES (SOLAR,CH,SFCTMP,Q2,SFCPRS,SMC,ZSOIL,NSOIL, &
  927. SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, &
  928. TOPT,RSMAX,RGL,HS,XLAI, &
  929. RCS,RCT,RCQ,RCSOIL,EMISSI)
  930. ! ----------------------------------------------------------------------
  931. ! SUBROUTINE CANRES
  932. ! ----------------------------------------------------------------------
  933. ! CALCULATE CANOPY RESISTANCE WHICH DEPENDS ON INCOMING SOLAR RADIATION,
  934. ! AIR TEMPERATURE, ATMOSPHERIC WATER VAPOR PRESSURE DEFICIT AT THE
  935. ! LOWEST MODEL LEVEL, AND SOIL MOISTURE (PREFERABLY UNFROZEN SOIL
  936. ! MOISTURE RATHER THAN TOTAL)
  937. ! ----------------------------------------------------------------------
  938. ! SOURCE: JARVIS (1976), NOILHAN AND PLANTON (1989, MWR), JACQUEMIN AND
  939. ! NOILHAN (1990, BLM)
  940. ! SEE ALSO: CHEN ET AL (1996, JGR, VOL 101(D3), 7251-7268), EQNS 12-14
  941. ! AND TABLE 2 OF SEC. 3.1.2
  942. ! ----------------------------------------------------------------------
  943. ! INPUT:
  944. ! SOLAR INCOMING SOLAR RADIATION
  945. ! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE
  946. ! SFCTMP AIR TEMPERATURE AT 1ST LEVEL ABOVE GROUND
  947. ! Q2 AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND
  948. ! Q2SAT SATURATION AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND
  949. ! DQSDT2 SLOPE OF SATURATION HUMIDITY FUNCTION WRT TEMP
  950. ! SFCPRS SURFACE PRESSURE
  951. ! SMC VOLUMETRIC SOIL MOISTURE
  952. ! ZSOIL SOIL DEPTH (NEGATIVE SIGN, AS IT IS BELOW GROUND)
  953. ! NSOIL NO. OF SOIL LAYERS
  954. ! NROOT NO. OF SOIL LAYERS IN ROOT ZONE (1.LE.NROOT.LE.NSOIL)
  955. ! XLAI LEAF AREA INDEX
  956. ! SMCWLT WILTING POINT
  957. ! SMCREF REFERENCE SOIL MOISTURE (WHERE SOIL WATER DEFICIT STRESS
  958. ! SETS IN)
  959. ! RSMIN, RSMAX, TOPT, RGL, HS ARE CANOPY STRESS PARAMETERS SET IN
  960. ! SURBOUTINE REDPRM
  961. ! OUTPUT:
  962. ! PC PLANT COEFFICIENT
  963. ! RC CANOPY RESISTANCE
  964. ! ----------------------------------------------------------------------
  965. IMPLICIT NONE
  966. INTEGER, INTENT(IN) :: NROOT,NSOIL
  967. INTEGER K
  968. REAL, INTENT(IN) :: CH,DQSDT2,HS,Q2,Q2SAT,RSMIN,RGL,RSMAX, &
  969. SFCPRS,SFCTMP,SMCREF,SMCWLT, SOLAR,TOPT,XLAI, &
  970. EMISSI
  971. REAL,DIMENSION(1:NSOIL), INTENT(IN) :: SMC,ZSOIL
  972. REAL, INTENT(OUT):: PC,RC,RCQ,RCS,RCSOIL,RCT
  973. REAL :: DELTA,FF,GX,P,RR
  974. REAL, DIMENSION(1:NSOIL) :: PART
  975. REAL, PARAMETER :: SLV = 2.501000E6
  976. ! ----------------------------------------------------------------------
  977. ! INITIALIZE CANOPY RESISTANCE MULTIPLIER TERMS.
  978. ! ----------------------------------------------------------------------
  979. RCS = 0.0
  980. RCT = 0.0
  981. RCQ = 0.0
  982. RCSOIL = 0.0
  983. ! ----------------------------------------------------------------------
  984. ! CONTRIBUTION DUE TO INCOMING SOLAR RADIATION
  985. ! ----------------------------------------------------------------------
  986. RC = 0.0
  987. FF = 0.55*2.0* SOLAR / (RGL * XLAI)
  988. RCS = (FF + RSMIN / RSMAX) / (1.0+ FF)
  989. ! ----------------------------------------------------------------------
  990. ! CONTRIBUTION DUE TO AIR TEMPERATURE AT FIRST MODEL LEVEL ABOVE GROUND
  991. ! RCT EXPRESSION FROM NOILHAN AND PLANTON (1989, MWR).
  992. ! ----------------------------------------------------------------------
  993. RCS = MAX (RCS,0.0001)
  994. RCT = 1.0- 0.0016* ( (TOPT - SFCTMP)**2.0)
  995. ! ----------------------------------------------------------------------
  996. ! CONTRIBUTION DUE TO VAPOR PRESSURE DEFICIT AT FIRST MODEL LEVEL.
  997. ! RCQ EXPRESSION FROM SSIB
  998. ! ----------------------------------------------------------------------
  999. RCT = MAX (RCT,0.0001)
  1000. RCQ = 1.0/ (1.0+ HS * (Q2SAT - Q2))
  1001. ! ----------------------------------------------------------------------

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