[2759] | 1 | MODULE module_sf_noahlsm |
---|
| 2 | |
---|
| 3 | USE module_model_constants |
---|
| 4 | |
---|
| 5 | ! REAL, PARAMETER :: CP = 1004.5 |
---|
| 6 | REAL, PARAMETER :: RD = 287.04, SIGMA = 5.67E-8, & |
---|
| 7 | CPH2O = 4.218E+3,CPICE = 2.106E+3, & |
---|
| 8 | LSUBF = 3.335E+5, & |
---|
| 9 | EMISSI_S = 0.95 |
---|
| 10 | |
---|
| 11 | ! VEGETATION PARAMETERS |
---|
| 12 | INTEGER :: LUCATS , BARE |
---|
| 13 | integer, PARAMETER :: NLUS=50 |
---|
| 14 | CHARACTER*4 LUTYPE |
---|
| 15 | INTEGER, DIMENSION(1:NLUS) :: NROTBL |
---|
| 16 | real, dimension(1:NLUS) :: SNUPTBL, RSTBL, RGLTBL, HSTBL, LAITBL, & |
---|
| 17 | ALBTBL, Z0TBL, SHDTBL, MAXALB |
---|
| 18 | REAL :: TOPT_DATA,CMCMAX_DATA,CFACTR_DATA,RSMAX_DATA |
---|
| 19 | |
---|
| 20 | ! SOIL PARAMETERS |
---|
| 21 | INTEGER :: SLCATS |
---|
| 22 | INTEGER, PARAMETER :: NSLTYPE=30 |
---|
| 23 | CHARACTER*4 SLTYPE |
---|
| 24 | REAL, DIMENSION (1:NSLTYPE) :: BB,DRYSMC,F11, & |
---|
| 25 | MAXSMC, REFSMC,SATPSI,SATDK,SATDW, WLTSMC,QTZ |
---|
| 26 | |
---|
| 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 | |
---|
| 35 | CHARACTER*256 :: err_message |
---|
| 36 | |
---|
| 37 | ! |
---|
| 38 | CONTAINS |
---|
| 39 | ! |
---|
| 40 | |
---|
| 41 | SUBROUTINE SFLX (FFROZP,ICE,DT,ZLVL,NSOIL,SLDPTH, & !C |
---|
| 42 | LOCAL, & !L |
---|
| 43 | LLANDUSE, LSOIL, & !CL |
---|
| 44 | LWDN,SOLDN,SOLNET,SFCPRS,PRCP,SFCTMP,Q2,SFCSPD, & !F |
---|
| 45 | COSZ,PRCPRAIN, SOLARDIRECT, & !F |
---|
| 46 | TH2,Q2SAT,DQSDT2, & !I |
---|
| 47 | VEGTYP,SOILTYP,SLOPETYP,SHDFAC,SHDMIN,SHDMAX, & !I |
---|
| 48 | ALB, SNOALB,TBOT, Z0BRD, Z0, EMISSI, EMBRD, & !S |
---|
| 49 | CMC,T1,STC,SMC,SH2O,SNOWH,SNEQV,ALBEDO,CH,CM, & !H |
---|
| 50 | ! ---------------------------------------------------------------------- |
---|
| 51 | ! OUTPUTS, DIAGNOSTICS, PARAMETERS BELOW GENERALLY NOT NECESSARY WHEN |
---|
| 52 | ! COUPLED WITH E.G. A NWP MODEL (SUCH AS THE NOAA/NWS/NCEP MESOSCALE ETA |
---|
| 53 | ! MODEL). OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. |
---|
| 54 | ! ---------------------------------------------------------------------- |
---|
| 55 | ETA,SHEAT, ETA_KINEMATIC,FDOWN, & !O |
---|
| 56 | EC,EDIR,ET,ETT,ESNOW,DRIP,DEW, & !O |
---|
| 57 | BETA,ETP,SSOIL, & !O |
---|
| 58 | FLX1,FLX2,FLX3, & !O |
---|
| 59 | SNOMLT,SNCOVR, & !O |
---|
| 60 | RUNOFF1,RUNOFF2,RUNOFF3, & !O |
---|
| 61 | RC,PC,RSMIN,XLAI,RCS,RCT,RCQ,RCSOIL, & !O |
---|
| 62 | SOILW,SOILM,Q1, & !D |
---|
| 63 | SMCWLT,SMCDRY,SMCREF,SMCMAX,NROOT) !P |
---|
| 64 | ! ---------------------------------------------------------------------- |
---|
| 65 | ! SUBROUTINE SFLX - UNIFIED NOAHLSM VERSION 1.0 JULY 2007 |
---|
| 66 | ! ---------------------------------------------------------------------- |
---|
| 67 | ! SUB-DRIVER FOR "Noah LSM" FAMILY OF PHYSICS SUBROUTINES FOR A |
---|
| 68 | ! SOIL/VEG/SNOWPACK LAND-SURFACE MODEL TO UPDATE SOIL MOISTURE, SOIL |
---|
| 69 | ! ICE, SOIL TEMPERATURE, SKIN TEMPERATURE, SNOWPACK WATER CONTENT, |
---|
| 70 | ! SNOWDEPTH, AND ALL TERMS OF THE SURFACE ENERGY BALANCE AND SURFACE |
---|
| 71 | ! WATER BALANCE (EXCLUDING INPUT ATMOSPHERIC FORCINGS OF DOWNWARD |
---|
| 72 | ! RADIATION AND PRECIP) |
---|
| 73 | ! ---------------------------------------------------------------------- |
---|
| 74 | ! SFLX ARGUMENT LIST KEY: |
---|
| 75 | ! ---------------------------------------------------------------------- |
---|
| 76 | ! C CONFIGURATION INFORMATION |
---|
| 77 | ! L LOGICAL |
---|
| 78 | ! CL 4-string character bearing logical meaning |
---|
| 79 | ! F FORCING DATA |
---|
| 80 | ! I OTHER (INPUT) FORCING DATA |
---|
| 81 | ! S SURFACE CHARACTERISTICS |
---|
| 82 | ! H HISTORY (STATE) VARIABLES |
---|
| 83 | ! O OUTPUT VARIABLES |
---|
| 84 | ! D DIAGNOSTIC OUTPUT |
---|
| 85 | ! P Parameters |
---|
| 86 | ! Msic Miscellaneous terms passed from gridded driver |
---|
| 87 | ! ---------------------------------------------------------------------- |
---|
| 88 | ! 1. CONFIGURATION INFORMATION (C): |
---|
| 89 | ! ---------------------------------------------------------------------- |
---|
| 90 | ! ICE SEA-ICE FLAG (=1: SEA-ICE, =0: LAND) |
---|
| 91 | ! DT TIMESTEP (SEC) (DT SHOULD NOT EXCEED 3600 SECS, RECOMMEND |
---|
| 92 | ! 1800 SECS OR LESS) |
---|
| 93 | ! ZLVL HEIGHT (M) ABOVE GROUND OF ATMOSPHERIC FORCING VARIABLES |
---|
| 94 | ! NSOIL NUMBER OF SOIL LAYERS (AT LEAST 2, AND NOT GREATER THAN |
---|
| 95 | ! PARAMETER NSOLD SET BELOW) |
---|
| 96 | ! SLDPTH THE THICKNESS OF EACH SOIL LAYER (M) |
---|
| 97 | ! ---------------------------------------------------------------------- |
---|
| 98 | ! 2. LOGICAL: |
---|
| 99 | ! ---------------------------------------------------------------------- |
---|
| 100 | ! LCH Exchange coefficient (Ch) calculation flag (false: using |
---|
| 101 | ! ch-routine SFCDIF; true: Ch is brought in) |
---|
| 102 | ! LOCAL Flag for local-site simulation (where there is no |
---|
| 103 | ! maps for albedo, veg fraction, and roughness |
---|
| 104 | ! true: all LSM parameters (inluding albedo, veg fraction and |
---|
| 105 | ! roughness length) will be defined by three tables |
---|
| 106 | ! LLANDUSE (=USGS, using USGS landuse classification) |
---|
| 107 | ! LSOIL (=STAS, using FAO/STATSGO soil texture classification) |
---|
| 108 | ! ---------------------------------------------------------------------- |
---|
| 109 | ! 3. FORCING DATA (F): |
---|
| 110 | ! ---------------------------------------------------------------------- |
---|
| 111 | ! LWDN LW DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET LONGWAVE) |
---|
| 112 | ! SOLDN SOLAR DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET SOLAR) |
---|
| 113 | ! SOLNET NET DOWNWARD SOLAR RADIATION ((W M-2; POSITIVE) |
---|
| 114 | ! SFCPRS PRESSURE AT HEIGHT ZLVL ABOVE GROUND (PASCALS) |
---|
| 115 | ! PRCP PRECIP RATE (KG M-2 S-1) (NOTE, THIS IS A RATE) |
---|
| 116 | ! SFCTMP AIR TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND |
---|
| 117 | ! TH2 AIR POTENTIAL TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND |
---|
| 118 | ! Q2 MIXING RATIO AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) |
---|
| 119 | ! COSZ Solar zenith angle (not used for now) |
---|
| 120 | ! PRCPRAIN Liquid-precipitation rate (KG M-2 S-1) (not used) |
---|
| 121 | ! SOLARDIRECT Direct component of downward solar radiation (W M-2) (not used) |
---|
| 122 | ! FFROZP FRACTION OF FROZEN PRECIPITATION |
---|
| 123 | ! ---------------------------------------------------------------------- |
---|
| 124 | ! 4. OTHER FORCING (INPUT) DATA (I): |
---|
| 125 | ! ---------------------------------------------------------------------- |
---|
| 126 | ! SFCSPD WIND SPEED (M S-1) AT HEIGHT ZLVL ABOVE GROUND |
---|
| 127 | ! Q2SAT SAT SPECIFIC HUMIDITY AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) |
---|
| 128 | ! DQSDT2 SLOPE OF SAT SPECIFIC HUMIDITY CURVE AT T=SFCTMP |
---|
| 129 | ! (KG KG-1 K-1) |
---|
| 130 | ! ---------------------------------------------------------------------- |
---|
| 131 | ! 5. CANOPY/SOIL CHARACTERISTICS (S): |
---|
| 132 | ! ---------------------------------------------------------------------- |
---|
| 133 | ! VEGTYP VEGETATION TYPE (INTEGER INDEX) |
---|
| 134 | ! SOILTYP SOIL TYPE (INTEGER INDEX) |
---|
| 135 | ! SLOPETYP CLASS OF SFC SLOPE (INTEGER INDEX) |
---|
| 136 | ! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
| 137 | ! (FRACTION= 0.0-1.0) |
---|
| 138 | ! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
| 139 | ! (FRACTION= 0.0-1.0) <= SHDFAC |
---|
| 140 | ! PTU PHOTO THERMAL UNIT (PLANT PHENOLOGY FOR ANNUALS/CROPS) |
---|
| 141 | ! (NOT YET USED, BUT PASSED TO REDPRM FOR FUTURE USE IN |
---|
| 142 | ! VEG PARMS) |
---|
| 143 | ! ALB BACKROUND SNOW-FREE SURFACE ALBEDO (FRACTION), FOR JULIAN |
---|
| 144 | ! DAY OF YEAR (USUALLY FROM TEMPORAL INTERPOLATION OF |
---|
| 145 | ! MONTHLY MEAN VALUES' CALLING PROG MAY OR MAY NOT |
---|
| 146 | ! INCLUDE DIURNAL SUN ANGLE EFFECT) |
---|
| 147 | ! SNOALB UPPER BOUND ON MAXIMUM ALBEDO OVER DEEP SNOW (E.G. FROM |
---|
| 148 | ! ROBINSON AND KUKLA, 1985, J. CLIM. & APPL. METEOR.) |
---|
| 149 | ! TBOT BOTTOM SOIL TEMPERATURE (LOCAL YEARLY-MEAN SFC AIR |
---|
| 150 | ! TEMPERATURE) |
---|
| 151 | ! Z0BRD Background fixed roughness length (M) |
---|
| 152 | ! Z0 Time varying roughness length (M) as function of snow depth |
---|
| 153 | ! |
---|
| 154 | ! EMBRD Background surface emissivity (between 0 and 1) |
---|
| 155 | ! EMISSI Surface emissivity (between 0 and 1) |
---|
| 156 | ! ---------------------------------------------------------------------- |
---|
| 157 | ! 6. HISTORY (STATE) VARIABLES (H): |
---|
| 158 | ! ---------------------------------------------------------------------- |
---|
| 159 | ! CMC CANOPY MOISTURE CONTENT (M) |
---|
| 160 | ! T1 GROUND/CANOPY/SNOWPACK) EFFECTIVE SKIN TEMPERATURE (K) |
---|
| 161 | ! STC(NSOIL) SOIL TEMP (K) |
---|
| 162 | ! SMC(NSOIL) TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION) |
---|
| 163 | ! SH2O(NSOIL) UNFROZEN SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION) |
---|
| 164 | ! NOTE: FROZEN SOIL MOISTURE = SMC - SH2O |
---|
| 165 | ! SNOWH ACTUAL SNOW DEPTH (M) |
---|
| 166 | ! SNEQV LIQUID WATER-EQUIVALENT SNOW DEPTH (M) |
---|
| 167 | ! NOTE: SNOW DENSITY = SNEQV/SNOWH |
---|
| 168 | ! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT (UNITLESS FRACTION) |
---|
| 169 | ! =SNOW-FREE ALBEDO (ALB) WHEN SNEQV=0, OR |
---|
| 170 | ! =FCT(MSNOALB,ALB,VEGTYP,SHDFAC,SHDMIN) WHEN SNEQV>0 |
---|
| 171 | ! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE |
---|
| 172 | ! (M S-1); NOTE: CH IS TECHNICALLY A CONDUCTANCE SINCE |
---|
| 173 | ! IT HAS BEEN MULTIPLIED BY WIND SPEED. |
---|
| 174 | ! CM SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM (M S-1); NOTE: |
---|
| 175 | ! CM IS TECHNICALLY A CONDUCTANCE SINCE IT HAS BEEN |
---|
| 176 | ! MULTIPLIED BY WIND SPEED. |
---|
| 177 | ! ---------------------------------------------------------------------- |
---|
| 178 | ! 7. OUTPUT (O): |
---|
| 179 | ! ---------------------------------------------------------------------- |
---|
| 180 | ! OUTPUT VARIABLES NECESSARY FOR A COUPLED NUMERICAL WEATHER PREDICTION |
---|
| 181 | ! MODEL, E.G. NOAA/NWS/NCEP MESOSCALE ETA MODEL. FOR THIS APPLICATION, |
---|
| 182 | ! THE REMAINING OUTPUT/DIAGNOSTIC/PARAMETER BLOCKS BELOW ARE NOT |
---|
| 183 | ! NECESSARY. OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. |
---|
| 184 | ! ETA ACTUAL LATENT HEAT FLUX (W m-2: NEGATIVE, IF UP FROM |
---|
| 185 | ! SURFACE) |
---|
| 186 | ! ETA_KINEMATIC atctual latent heat flux in Kg m-2 s-1 |
---|
| 187 | ! SHEAT SENSIBLE HEAT FLUX (W M-2: NEGATIVE, IF UPWARD FROM |
---|
| 188 | ! SURFACE) |
---|
| 189 | ! FDOWN Radiation forcing at the surface (W m-2) = SOLDN*(1-alb)+LWDN |
---|
| 190 | ! ---------------------------------------------------------------------- |
---|
| 191 | ! EC CANOPY WATER EVAPORATION (W m-2) |
---|
| 192 | ! EDIR DIRECT SOIL EVAPORATION (W m-2) |
---|
| 193 | ! ET(NSOIL) PLANT TRANSPIRATION FROM A PARTICULAR ROOT (SOIL) LAYER |
---|
| 194 | ! (W m-2) |
---|
| 195 | ! ETT TOTAL PLANT TRANSPIRATION (W m-2) |
---|
| 196 | ! ESNOW SUBLIMATION FROM (OR DEPOSITION TO IF <0) SNOWPACK |
---|
| 197 | ! (W m-2) |
---|
| 198 | ! DRIP THROUGH-FALL OF PRECIP AND/OR DEW IN EXCESS OF CANOPY |
---|
| 199 | ! WATER-HOLDING CAPACITY (M) |
---|
| 200 | ! DEW DEWFALL (OR FROSTFALL FOR T<273.15) (M) |
---|
| 201 | ! ---------------------------------------------------------------------- |
---|
| 202 | ! BETA RATIO OF ACTUAL/POTENTIAL EVAP (DIMENSIONLESS) |
---|
| 203 | ! ETP POTENTIAL EVAPORATION (W m-2) |
---|
| 204 | ! SSOIL SOIL HEAT FLUX (W M-2: NEGATIVE IF DOWNWARD FROM SURFACE) |
---|
| 205 | ! ---------------------------------------------------------------------- |
---|
| 206 | ! FLX1 PRECIP-SNOW SFC (W M-2) |
---|
| 207 | ! FLX2 FREEZING RAIN LATENT HEAT FLUX (W M-2) |
---|
| 208 | ! FLX3 PHASE-CHANGE HEAT FLUX FROM SNOWMELT (W M-2) |
---|
| 209 | ! ---------------------------------------------------------------------- |
---|
| 210 | ! SNOMLT SNOW MELT (M) (WATER EQUIVALENT) |
---|
| 211 | ! SNCOVR FRACTIONAL SNOW COVER (UNITLESS FRACTION, 0-1) |
---|
| 212 | ! ---------------------------------------------------------------------- |
---|
| 213 | ! RUNOFF1 SURFACE RUNOFF (M S-1), NOT INFILTRATING THE SURFACE |
---|
| 214 | ! RUNOFF2 SUBSURFACE RUNOFF (M S-1), DRAINAGE OUT BOTTOM OF LAST |
---|
| 215 | ! SOIL LAYER (BASEFLOW) |
---|
| 216 | ! RUNOFF3 NUMERICAL TRUNCTATION IN EXCESS OF POROSITY (SMCMAX) |
---|
| 217 | ! FOR A GIVEN SOIL LAYER AT THE END OF A TIME STEP (M S-1). |
---|
| 218 | ! Note: the above RUNOFF2 is actually the sum of RUNOFF2 and RUNOFF3 |
---|
| 219 | ! ---------------------------------------------------------------------- |
---|
| 220 | ! RC CANOPY RESISTANCE (S M-1) |
---|
| 221 | ! PC PLANT COEFFICIENT (UNITLESS FRACTION, 0-1) WHERE PC*ETP |
---|
| 222 | ! = ACTUAL TRANSP |
---|
| 223 | ! XLAI LEAF AREA INDEX (DIMENSIONLESS) |
---|
| 224 | ! RSMIN MINIMUM CANOPY RESISTANCE (S M-1) |
---|
| 225 | ! RCS INCOMING SOLAR RC FACTOR (DIMENSIONLESS) |
---|
| 226 | ! RCT AIR TEMPERATURE RC FACTOR (DIMENSIONLESS) |
---|
| 227 | ! RCQ ATMOS VAPOR PRESSURE DEFICIT RC FACTOR (DIMENSIONLESS) |
---|
| 228 | ! RCSOIL SOIL MOISTURE RC FACTOR (DIMENSIONLESS) |
---|
| 229 | ! ---------------------------------------------------------------------- |
---|
| 230 | ! 8. DIAGNOSTIC OUTPUT (D): |
---|
| 231 | ! ---------------------------------------------------------------------- |
---|
| 232 | ! SOILW AVAILABLE SOIL MOISTURE IN ROOT ZONE (UNITLESS FRACTION |
---|
| 233 | ! BETWEEN SMCWLT AND SMCMAX) |
---|
| 234 | ! SOILM TOTAL SOIL COLUMN MOISTURE CONTENT (FROZEN+UNFROZEN) (M) |
---|
| 235 | ! Q1 Effective mixing ratio at surface (kg kg-1), used for |
---|
| 236 | ! diagnosing the mixing ratio at 2 meter for coupled model |
---|
| 237 | ! ---------------------------------------------------------------------- |
---|
| 238 | ! 9. PARAMETERS (P): |
---|
| 239 | ! ---------------------------------------------------------------------- |
---|
| 240 | ! SMCWLT WILTING POINT (VOLUMETRIC) |
---|
| 241 | ! SMCDRY DRY SOIL MOISTURE THRESHOLD WHERE DIRECT EVAP FRM TOP |
---|
| 242 | ! LAYER ENDS (VOLUMETRIC) |
---|
| 243 | ! SMCREF SOIL MOISTURE THRESHOLD WHERE TRANSPIRATION BEGINS TO |
---|
| 244 | ! STRESS (VOLUMETRIC) |
---|
| 245 | ! SMCMAX POROSITY, I.E. SATURATED VALUE OF SOIL MOISTURE |
---|
| 246 | ! (VOLUMETRIC) |
---|
| 247 | ! NROOT NUMBER OF ROOT LAYERS, A FUNCTION OF VEG TYPE, DETERMINED |
---|
| 248 | ! IN SUBROUTINE REDPRM. |
---|
| 249 | ! ---------------------------------------------------------------------- |
---|
| 250 | |
---|
| 251 | |
---|
| 252 | IMPLICIT NONE |
---|
| 253 | ! ---------------------------------------------------------------------- |
---|
| 254 | |
---|
| 255 | ! DECLARATIONS - LOGICAL AND CHARACTERS |
---|
| 256 | ! ---------------------------------------------------------------------- |
---|
| 257 | LOGICAL, INTENT(IN):: LOCAL |
---|
| 258 | LOGICAL :: FRZGRA, SNOWNG |
---|
| 259 | CHARACTER (LEN=4), INTENT(IN):: LLANDUSE, LSOIL |
---|
| 260 | |
---|
| 261 | ! ---------------------------------------------------------------------- |
---|
| 262 | ! 1. CONFIGURATION INFORMATION (C): |
---|
| 263 | ! ---------------------------------------------------------------------- |
---|
| 264 | INTEGER,INTENT(IN) :: ICE,NSOIL,SLOPETYP,SOILTYP,VEGTYP |
---|
| 265 | INTEGER,INTENT(OUT):: NROOT |
---|
| 266 | INTEGER KZ, K, iout |
---|
| 267 | |
---|
| 268 | ! ---------------------------------------------------------------------- |
---|
| 269 | ! 2. LOGICAL: |
---|
| 270 | ! ---------------------------------------------------------------------- |
---|
| 271 | REAL, INTENT(IN) :: SHDMIN,SHDMAX,DT,DQSDT2,LWDN,PRCP,PRCPRAIN, & |
---|
| 272 | Q2,Q2SAT,SFCPRS,SFCSPD,SFCTMP, SNOALB, & |
---|
| 273 | SOLDN,SOLNET,TBOT,TH2,ZLVL, & |
---|
| 274 | EMBRD, FFROZP |
---|
| 275 | REAL, INTENT(INOUT):: COSZ, SOLARDIRECT,ALBEDO,CH,CM, & |
---|
| 276 | CMC,SNEQV,SNCOVR,SNOWH,T1,XLAI,SHDFAC,Z0BRD,ALB,& |
---|
| 277 | EMISSI |
---|
| 278 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SLDPTH |
---|
| 279 | REAL, DIMENSION(1:NSOIL), INTENT(OUT):: ET |
---|
| 280 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SH2O, SMC, STC |
---|
| 281 | REAL,DIMENSION(1:NSOIL):: RTDIS, ZSOIL |
---|
| 282 | |
---|
| 283 | REAL,INTENT(OUT) :: ETA_KINEMATIC,BETA,DEW,DRIP,EC,EDIR,ESNOW,ETA, & |
---|
| 284 | ETP,FLX1,FLX2,FLX3,SHEAT,PC,RUNOFF1,RUNOFF2, & |
---|
| 285 | RUNOFF3,RC,RSMIN,RCQ,RCS,RCSOIL,RCT,SSOIL, & |
---|
| 286 | SMCDRY,SMCMAX,SMCREF,SMCWLT,SNOMLT, SOILM, & |
---|
| 287 | SOILW,FDOWN,Q1 |
---|
| 288 | REAL :: BEXP,CFACTR,CMCMAX,CSOIL,CZIL,DF1,DF1H,DF1A,DKSAT,DWSAT, & |
---|
| 289 | DSOIL,DTOT,ETT,FRCSNO,FRCSOI,EPSCA,F1,FXEXP,FRZX,HS, & |
---|
| 290 | KDT,LVH2O,PRCP1,PSISAT,QUARTZ,R,RCH,REFKDT,RR,RGL, & |
---|
| 291 | RSMAX, & |
---|
| 292 | RSNOW,SNDENS,SNCOND,SBETA,SN_NEW,SLOPE,SNUP,SALP,SOILWM, & |
---|
| 293 | SOILWW,T1V,T24,T2V,TH2V,TOPT,TFREEZ,TSNOW,ZBOT,Z0,PRCPF, & |
---|
| 294 | ETNS,PTU,LSUBS |
---|
| 295 | |
---|
| 296 | ! ---------------------------------------------------------------------- |
---|
| 297 | ! DECLARATIONS - PARAMETERS |
---|
| 298 | ! ---------------------------------------------------------------------- |
---|
| 299 | PARAMETER (TFREEZ = 273.15) |
---|
| 300 | PARAMETER (LVH2O = 2.501E+6) |
---|
| 301 | PARAMETER (LSUBS = 2.83E+6) |
---|
| 302 | PARAMETER (R = 287.04) |
---|
| 303 | ! ---------------------------------------------------------------------- |
---|
| 304 | ! INITIALIZATION |
---|
| 305 | ! ---------------------------------------------------------------------- |
---|
| 306 | RUNOFF1 = 0.0 |
---|
| 307 | RUNOFF2 = 0.0 |
---|
| 308 | RUNOFF3 = 0.0 |
---|
| 309 | SNOMLT = 0.0 |
---|
| 310 | |
---|
| 311 | ! ---------------------------------------------------------------------- |
---|
| 312 | ! THE VARIABLE "ICE" IS A FLAG DENOTING SEA-ICE CASE |
---|
| 313 | ! ---------------------------------------------------------------------- |
---|
| 314 | ! SEA-ICE LAYERS ARE EQUAL THICKNESS AND SUM TO 3 METERS |
---|
| 315 | ! ---------------------------------------------------------------------- |
---|
| 316 | IF (ICE == 1) THEN |
---|
| 317 | DO KZ = 1,NSOIL |
---|
| 318 | ZSOIL (KZ) = -3.* FLOAT (KZ)/ FLOAT (NSOIL) |
---|
| 319 | END DO |
---|
| 320 | |
---|
| 321 | ! ---------------------------------------------------------------------- |
---|
| 322 | ! CALCULATE DEPTH (NEGATIVE) BELOW GROUND FROM TOP SKIN SFC TO BOTTOM OF |
---|
| 323 | ! EACH SOIL LAYER. NOTE: SIGN OF ZSOIL IS NEGATIVE (DENOTING BELOW |
---|
| 324 | ! GROUND) |
---|
| 325 | ! ---------------------------------------------------------------------- |
---|
| 326 | ELSE |
---|
| 327 | ZSOIL (1) = - SLDPTH (1) |
---|
| 328 | DO KZ = 2,NSOIL |
---|
| 329 | ZSOIL (KZ) = - SLDPTH (KZ) + ZSOIL (KZ -1) |
---|
| 330 | END DO |
---|
| 331 | ! ---------------------------------------------------------------------- |
---|
| 332 | ! NEXT IS CRUCIAL CALL TO SET THE LAND-SURFACE PARAMETERS, INCLUDING |
---|
| 333 | ! SOIL-TYPE AND VEG-TYPE DEPENDENT PARAMETERS. |
---|
| 334 | ! ---------------------------------------------------------------------- |
---|
| 335 | CALL REDPRM (VEGTYP,SOILTYP,SLOPETYP,CFACTR,CMCMAX,RSMAX,TOPT, & |
---|
| 336 | REFKDT,KDT,SBETA, SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX, & |
---|
| 337 | PSISAT,SLOPE,SNUP,SALP,BEXP,DKSAT,DWSAT, & |
---|
| 338 | SMCMAX,SMCWLT,SMCREF,SMCDRY,F1,QUARTZ,FXEXP, & |
---|
| 339 | RTDIS,SLDPTH,ZSOIL,NROOT,NSOIL,Z0BRD,CZIL,XLAI, & |
---|
| 340 | CSOIL,ALB,PTU,LLANDUSE,LSOIL,LOCAL) |
---|
| 341 | END IF |
---|
| 342 | |
---|
| 343 | !urban |
---|
| 344 | IF(VEGTYP==1)THEN |
---|
| 345 | SHDFAC=0.05 |
---|
| 346 | RSMIN=400.0 |
---|
| 347 | SMCMAX = 0.45 |
---|
| 348 | SMCREF = 0.42 |
---|
| 349 | SMCWLT = 0.40 |
---|
| 350 | SMCDRY = 0.40 |
---|
| 351 | ENDIF |
---|
| 352 | |
---|
| 353 | ! ---------------------------------------------------------------------- |
---|
| 354 | ! INITIALIZE PRECIPITATION LOGICALS. |
---|
| 355 | ! ---------------------------------------------------------------------- |
---|
| 356 | SNOWNG = .FALSE. |
---|
| 357 | FRZGRA = .FALSE. |
---|
| 358 | |
---|
| 359 | ! ---------------------------------------------------------------------- |
---|
| 360 | ! IF SEA-ICE CASE, ASSIGN DEFAULT WATER-EQUIV SNOW ON TOP |
---|
| 361 | ! ---------------------------------------------------------------------- |
---|
| 362 | IF (ICE == 1) THEN |
---|
| 363 | SNEQV = 0.01 |
---|
| 364 | SNOWH = 0.05 |
---|
| 365 | ! ---------------------------------------------------------------------- |
---|
| 366 | ! IF INPUT SNOWPACK IS NONZERO, THEN COMPUTE SNOW DENSITY "SNDENS" AND |
---|
| 367 | ! SNOW THERMAL CONDUCTIVITY "SNCOND" (NOTE THAT CSNOW IS A FUNCTION |
---|
| 368 | ! SUBROUTINE) |
---|
| 369 | ! ---------------------------------------------------------------------- |
---|
| 370 | END IF |
---|
| 371 | IF (SNEQV == 0.0) THEN |
---|
| 372 | SNDENS = 0.0 |
---|
| 373 | SNOWH = 0.0 |
---|
| 374 | SNCOND = 1.0 |
---|
| 375 | ELSE |
---|
| 376 | SNDENS = SNEQV / SNOWH |
---|
| 377 | IF(SNDENS > 1.0) THEN |
---|
| 378 | CALL wrf_error_fatal ( 'Physical snow depth is less than snow water equiv.' ) |
---|
| 379 | ENDIF |
---|
| 380 | CALL CSNOW (SNCOND,SNDENS) |
---|
| 381 | END IF |
---|
| 382 | ! ---------------------------------------------------------------------- |
---|
| 383 | ! DETERMINE IF IT'S PRECIPITATING AND WHAT KIND OF PRECIP IT IS. |
---|
| 384 | ! IF IT'S PRCPING AND THE AIR TEMP IS COLDER THAN 0 C, IT'S SNOWING! |
---|
| 385 | ! IF IT'S PRCPING AND THE AIR TEMP IS WARMER THAN 0 C, BUT THE GRND |
---|
| 386 | ! TEMP IS COLDER THAN 0 C, FREEZING RAIN IS PRESUMED TO BE FALLING. |
---|
| 387 | ! ---------------------------------------------------------------------- |
---|
| 388 | IF (PRCP > 0.0) THEN |
---|
| 389 | ! snow defined when fraction of frozen precip (FFROZP) > 0.5, |
---|
| 390 | ! passed in from model microphysics. |
---|
| 391 | IF (FFROZP .GT. 0.5) THEN |
---|
| 392 | SNOWNG = .TRUE. |
---|
| 393 | ELSE |
---|
| 394 | IF (T1 <= TFREEZ) FRZGRA = .TRUE. |
---|
| 395 | END IF |
---|
| 396 | END IF |
---|
| 397 | ! ---------------------------------------------------------------------- |
---|
| 398 | ! IF EITHER PRCP FLAG IS SET, DETERMINE NEW SNOWFALL (CONVERTING PRCP |
---|
| 399 | ! RATE FROM KG M-2 S-1 TO A LIQUID EQUIV SNOW DEPTH IN METERS) AND ADD |
---|
| 400 | ! IT TO THE EXISTING SNOWPACK. |
---|
| 401 | ! NOTE THAT SINCE ALL PRECIP IS ADDED TO SNOWPACK, NO PRECIP INFILTRATES |
---|
| 402 | ! INTO THE SOIL SO THAT PRCP1 IS SET TO ZERO. |
---|
| 403 | ! ---------------------------------------------------------------------- |
---|
| 404 | IF ( (SNOWNG) .OR. (FRZGRA) ) THEN |
---|
| 405 | SN_NEW = PRCP * DT * 0.001 |
---|
| 406 | SNEQV = SNEQV + SN_NEW |
---|
| 407 | PRCPF = 0.0 |
---|
| 408 | |
---|
| 409 | ! ---------------------------------------------------------------------- |
---|
| 410 | ! UPDATE SNOW DENSITY BASED ON NEW SNOWFALL, USING OLD AND NEW SNOW. |
---|
| 411 | ! UPDATE SNOW THERMAL CONDUCTIVITY |
---|
| 412 | ! ---------------------------------------------------------------------- |
---|
| 413 | CALL SNOW_NEW (SFCTMP,SN_NEW,SNOWH,SNDENS) |
---|
| 414 | CALL CSNOW (SNCOND,SNDENS) |
---|
| 415 | |
---|
| 416 | ! ---------------------------------------------------------------------- |
---|
| 417 | ! PRECIP IS LIQUID (RAIN), HENCE SAVE IN THE PRECIP VARIABLE THAT |
---|
| 418 | ! LATER CAN WHOLELY OR PARTIALLY INFILTRATE THE SOIL (ALONG WITH |
---|
| 419 | ! ANY CANOPY "DRIP" ADDED TO THIS LATER) |
---|
| 420 | ! ---------------------------------------------------------------------- |
---|
| 421 | ELSE |
---|
| 422 | PRCPF = PRCP |
---|
| 423 | END IF |
---|
| 424 | ! ---------------------------------------------------------------------- |
---|
| 425 | ! DETERMINE SNOWCOVER AND ALBEDO OVER LAND. |
---|
| 426 | ! ---------------------------------------------------------------------- |
---|
| 427 | ! ---------------------------------------------------------------------- |
---|
| 428 | ! IF SNOW DEPTH=0, SET SNOW FRACTION=0, ALBEDO=SNOW FREE ALBEDO. |
---|
| 429 | ! ---------------------------------------------------------------------- |
---|
| 430 | IF (ICE == 0) THEN |
---|
| 431 | IF (SNEQV == 0.0) THEN |
---|
| 432 | SNCOVR = 0.0 |
---|
| 433 | ALBEDO = ALB |
---|
| 434 | EMISSI = EMBRD |
---|
| 435 | ELSE |
---|
| 436 | ! ---------------------------------------------------------------------- |
---|
| 437 | ! DETERMINE SNOW FRACTIONAL COVERAGE. |
---|
| 438 | ! DETERMINE SURFACE ALBEDO MODIFICATION DUE TO SNOWDEPTH STATE. |
---|
| 439 | ! ---------------------------------------------------------------------- |
---|
| 440 | CALL SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR) |
---|
| 441 | ! limit snow cover fraction to maximum of 0.98 |
---|
| 442 | SNCOVR = MIN(SNCOVR,0.98) |
---|
| 443 | CALL ALCALC (ALB,SNOALB,EMBRD,SHDFAC,SHDMIN,SNCOVR,TSNOW,ALBEDO,EMISSI) |
---|
| 444 | END IF |
---|
| 445 | ! ---------------------------------------------------------------------- |
---|
| 446 | ! SNOW COVER, ALBEDO OVER SEA-ICE |
---|
| 447 | ! ---------------------------------------------------------------------- |
---|
| 448 | ELSE |
---|
| 449 | SNCOVR = 1.0 |
---|
| 450 | ALBEDO = 0.65 |
---|
| 451 | EMISSI = EMISSI_S |
---|
| 452 | END IF |
---|
| 453 | ! ---------------------------------------------------------------------- |
---|
| 454 | ! THERMAL CONDUCTIVITY FOR SEA-ICE CASE |
---|
| 455 | ! ---------------------------------------------------------------------- |
---|
| 456 | IF (ICE == 1) THEN |
---|
| 457 | DF1 = 2.2 |
---|
| 458 | ELSE |
---|
| 459 | ! ---------------------------------------------------------------------- |
---|
| 460 | ! NEXT CALCULATE THE SUBSURFACE HEAT FLUX, WHICH FIRST REQUIRES |
---|
| 461 | ! CALCULATION OF THE THERMAL DIFFUSIVITY. TREATMENT OF THE |
---|
| 462 | ! LATTER FOLLOWS THAT ON PAGES 148-149 FROM "HEAT TRANSFER IN |
---|
| 463 | ! COLD CLIMATES", BY V. J. LUNARDINI (PUBLISHED IN 1981 |
---|
| 464 | ! BY VAN NOSTRAND REINHOLD CO.) I.E. TREATMENT OF TWO CONTIGUOUS |
---|
| 465 | ! "PLANE PARALLEL" MEDIUMS (NAMELY HERE THE FIRST SOIL LAYER |
---|
| 466 | ! AND THE SNOWPACK LAYER, IF ANY). THIS DIFFUSIVITY TREATMENT |
---|
| 467 | ! BEHAVES WELL FOR BOTH ZERO AND NONZERO SNOWPACK, INCLUDING THE |
---|
| 468 | ! LIMIT OF VERY THIN SNOWPACK. THIS TREATMENT ALSO ELIMINATES |
---|
| 469 | ! THE NEED TO IMPOSE AN ARBITRARY UPPER BOUND ON SUBSURFACE |
---|
| 470 | ! HEAT FLUX WHEN THE SNOWPACK BECOMES EXTREMELY THIN. |
---|
| 471 | ! ---------------------------------------------------------------------- |
---|
| 472 | ! FIRST CALCULATE THERMAL DIFFUSIVITY OF TOP SOIL LAYER, USING |
---|
| 473 | ! BOTH THE FROZEN AND LIQUID SOIL MOISTURE, FOLLOWING THE |
---|
| 474 | ! SOIL THERMAL DIFFUSIVITY FUNCTION OF PETERS-LIDARD ET AL. |
---|
| 475 | ! (1998,JAS, VOL 55, 1209-1224), WHICH REQUIRES THE SPECIFYING |
---|
| 476 | ! THE QUARTZ CONTENT OF THE GIVEN SOIL CLASS (SEE ROUTINE REDPRM) |
---|
| 477 | ! ---------------------------------------------------------------------- |
---|
| 478 | ! ---------------------------------------------------------------------- |
---|
| 479 | ! NEXT ADD SUBSURFACE HEAT FLUX REDUCTION EFFECT FROM THE |
---|
| 480 | ! OVERLYING GREEN CANOPY, ADAPTED FROM SECTION 2.1.2 OF |
---|
| 481 | ! PETERS-LIDARD ET AL. (1997, JGR, VOL 102(D4)) |
---|
| 482 | ! ---------------------------------------------------------------------- |
---|
| 483 | CALL TDFCND (DF1,SMC (1),QUARTZ,SMCMAX,SH2O (1)) |
---|
| 484 | |
---|
| 485 | !urban |
---|
| 486 | IF (VEGTYP==1) DF1=3.24 |
---|
| 487 | |
---|
| 488 | DF1 = DF1 * EXP (SBETA * SHDFAC) |
---|
| 489 | ! ---------------------------------------------------------------------- |
---|
| 490 | ! FINALLY "PLANE PARALLEL" SNOWPACK EFFECT FOLLOWING |
---|
| 491 | ! V.J. LINARDINI REFERENCE CITED ABOVE. NOTE THAT DTOT IS |
---|
| 492 | ! COMBINED DEPTH OF SNOWDEPTH AND THICKNESS OF FIRST SOIL LAYER |
---|
| 493 | ! ---------------------------------------------------------------------- |
---|
| 494 | END IF |
---|
| 495 | |
---|
| 496 | DSOIL = - (0.5 * ZSOIL (1)) |
---|
| 497 | IF (SNEQV == 0.) THEN |
---|
| 498 | SSOIL = DF1 * (T1- STC (1) ) / DSOIL |
---|
| 499 | ELSE |
---|
| 500 | DTOT = SNOWH + DSOIL |
---|
| 501 | FRCSNO = SNOWH / DTOT |
---|
| 502 | |
---|
| 503 | ! 1. HARMONIC MEAN (SERIES FLOW) |
---|
| 504 | ! DF1 = (SNCOND*DF1)/(FRCSOI*SNCOND+FRCSNO*DF1) |
---|
| 505 | FRCSOI = DSOIL / DTOT |
---|
| 506 | ! 2. ARITHMETIC MEAN (PARALLEL FLOW) |
---|
| 507 | ! DF1 = FRCSNO*SNCOND + FRCSOI*DF1 |
---|
| 508 | DF1H = (SNCOND * DF1)/ (FRCSOI * SNCOND+ FRCSNO * DF1) |
---|
| 509 | |
---|
| 510 | ! 3. GEOMETRIC MEAN (INTERMEDIATE BETWEEN HARMONIC AND ARITHMETIC MEAN) |
---|
| 511 | ! DF1 = (SNCOND**FRCSNO)*(DF1**FRCSOI) |
---|
| 512 | ! weigh DF by snow fraction |
---|
| 513 | ! DF1 = DF1H*SNCOVR + DF1A*(1.0-SNCOVR) |
---|
| 514 | ! DF1 = DF1H*SNCOVR + DF1*(1.0-SNCOVR) |
---|
| 515 | DF1A = FRCSNO * SNCOND+ FRCSOI * DF1 |
---|
| 516 | |
---|
| 517 | ! ---------------------------------------------------------------------- |
---|
| 518 | ! CALCULATE SUBSURFACE HEAT FLUX, SSOIL, FROM FINAL THERMAL DIFFUSIVITY |
---|
| 519 | ! OF SURFACE MEDIUMS, DF1 ABOVE, AND SKIN TEMPERATURE AND TOP |
---|
| 520 | ! MID-LAYER SOIL TEMPERATURE |
---|
| 521 | ! ---------------------------------------------------------------------- |
---|
| 522 | DF1 = DF1A * SNCOVR + DF1* (1.0- SNCOVR) |
---|
| 523 | SSOIL = DF1 * (T1- STC (1) ) / DTOT |
---|
| 524 | END IF |
---|
| 525 | ! ---------------------------------------------------------------------- |
---|
| 526 | ! DETERMINE SURFACE ROUGHNESS OVER SNOWPACK USING SNOW CONDITION FROM |
---|
| 527 | ! THE PREVIOUS TIMESTEP. |
---|
| 528 | ! ---------------------------------------------------------------------- |
---|
| 529 | IF (SNCOVR > 0. ) THEN |
---|
| 530 | CALL SNOWZ0 (SNCOVR,Z0,Z0BRD) |
---|
| 531 | ELSE |
---|
| 532 | Z0=Z0BRD |
---|
| 533 | END IF |
---|
| 534 | ! ---------------------------------------------------------------------- |
---|
| 535 | ! NEXT CALL ROUTINE SFCDIF TO CALCULATE THE SFC EXCHANGE COEF (CH) FOR |
---|
| 536 | ! HEAT AND MOISTURE. |
---|
| 537 | |
---|
| 538 | ! NOTE !!! |
---|
| 539 | ! DO NOT CALL SFCDIF UNTIL AFTER ABOVE CALL TO REDPRM, IN CASE |
---|
| 540 | ! ALTERNATIVE VALUES OF ROUGHNESS LENGTH (Z0) AND ZILINTINKEVICH COEF |
---|
| 541 | ! (CZIL) ARE SET THERE VIA NAMELIST I/O. |
---|
| 542 | |
---|
| 543 | ! NOTE !!! |
---|
| 544 | ! ROUTINE SFCDIF RETURNS A CH THAT REPRESENTS THE WIND SPD TIMES THE |
---|
| 545 | ! "ORIGINAL" NONDIMENSIONAL "Ch" TYPICAL IN LITERATURE. HENCE THE CH |
---|
| 546 | ! RETURNED FROM SFCDIF HAS UNITS OF M/S. THE IMPORTANT COMPANION |
---|
| 547 | ! COEFFICIENT OF CH, CARRIED HERE AS "RCH", IS THE CH FROM SFCDIF TIMES |
---|
| 548 | ! AIR DENSITY AND PARAMETER "CP". "RCH" IS COMPUTED IN "CALL PENMAN". |
---|
| 549 | ! RCH RATHER THAN CH IS THE COEFF USUALLY INVOKED LATER IN EQNS. |
---|
| 550 | |
---|
| 551 | ! NOTE !!! |
---|
| 552 | ! ---------------------------------------------------------------------- |
---|
| 553 | ! SFCDIF ALSO RETURNS THE SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM, CM, |
---|
| 554 | ! ALSO KNOWN AS THE SURFACE DRAGE COEFFICIENT. Needed as a state variable |
---|
| 555 | ! for iterative/implicit solution of CH in SFCDIF |
---|
| 556 | ! ---------------------------------------------------------------------- |
---|
| 557 | ! IF(.NOT.LCH) THEN |
---|
| 558 | ! T1V = T1 * (1.0+ 0.61 * Q2) |
---|
| 559 | ! TH2V = TH2 * (1.0+ 0.61 * Q2) |
---|
| 560 | ! CALL SFCDIF_off (ZLVL,Z0,T1V,TH2V,SFCSPD,CZIL,CM,CH) |
---|
| 561 | ! ENDIF |
---|
| 562 | |
---|
| 563 | ! ---------------------------------------------------------------------- |
---|
| 564 | ! CALL PENMAN SUBROUTINE TO CALCULATE POTENTIAL EVAPORATION (ETP), AND |
---|
| 565 | ! OTHER PARTIAL PRODUCTS AND SUMS SAVE IN COMMON/RITE FOR LATER |
---|
| 566 | ! CALCULATIONS. |
---|
| 567 | ! ---------------------------------------------------------------------- |
---|
| 568 | ! ---------------------------------------------------------------------- |
---|
| 569 | ! CALCULATE TOTAL DOWNWARD RADIATION (SOLAR PLUS LONGWAVE) NEEDED IN |
---|
| 570 | ! PENMAN EP SUBROUTINE THAT FOLLOWS |
---|
| 571 | ! ---------------------------------------------------------------------- |
---|
| 572 | ! FDOWN = SOLDN * (1.0- ALBEDO) + LWDN |
---|
| 573 | FDOWN = SOLNET + LWDN |
---|
| 574 | ! ---------------------------------------------------------------------- |
---|
| 575 | ! CALC VIRTUAL TEMPS AND VIRTUAL POTENTIAL TEMPS NEEDED BY SUBROUTINES |
---|
| 576 | ! PENMAN. |
---|
| 577 | T2V = SFCTMP * (1.0+ 0.61 * Q2 ) |
---|
| 578 | |
---|
| 579 | iout=0 |
---|
| 580 | if(iout.eq.1) then |
---|
| 581 | print*,'before penman' |
---|
| 582 | print*,' SFCTMP',SFCTMP,'SFCPRS',SFCPRS,'CH',CH,'T2V',T2V, & |
---|
| 583 | 'TH2',TH2,'PRCP',PRCP,'FDOWN',FDOWN,'T24',T24,'SSOIL',SSOIL, & |
---|
| 584 | 'Q2',Q2,'Q2SAT',Q2SAT,'ETP',ETP,'RCH',RCH, & |
---|
| 585 | 'EPSCA',EPSCA,'RR',RR ,'SNOWNG',SNOWNG,'FRZGRA',FRZGRA, & |
---|
| 586 | 'DQSDT2',DQSDT2,'FLX2',FLX2,'SNOWH',SNOWH,'SNEQV',SNEQV, & |
---|
| 587 | ' DSOIL',DSOIL,' FRCSNO',FRCSNO,' SNCOVR',SNCOVR,' DTOT',DTOT, & |
---|
| 588 | ' ZSOIL (1)',ZSOIL(1),' DF1',DF1,'T1',T1,' STC1',STC(1), & |
---|
| 589 | 'ALBEDO',ALBEDO,'SMC',SMC,'STC',STC,'SH2O',SH2O |
---|
| 590 | endif |
---|
| 591 | |
---|
| 592 | CALL PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, & |
---|
| 593 | Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, & |
---|
| 594 | DQSDT2,FLX2,EMISSI,SNEQV) |
---|
| 595 | |
---|
| 596 | ! ---------------------------------------------------------------------- |
---|
| 597 | ! CALL CANRES TO CALCULATE THE CANOPY RESISTANCE AND CONVERT IT INTO PC |
---|
| 598 | ! IF NONZERO GREENNESS FRACTION |
---|
| 599 | ! ---------------------------------------------------------------------- |
---|
| 600 | |
---|
| 601 | ! ---------------------------------------------------------------------- |
---|
| 602 | ! FROZEN GROUND EXTENSION: TOTAL SOIL WATER "SMC" WAS REPLACED |
---|
| 603 | ! BY UNFROZEN SOIL WATER "SH2O" IN CALL TO CANRES BELOW |
---|
| 604 | ! ---------------------------------------------------------------------- |
---|
| 605 | IF (SHDFAC > 0.) THEN |
---|
| 606 | CALL CANRES (SOLDN,CH,SFCTMP,Q2,SFCPRS,SH2O,ZSOIL,NSOIL, & |
---|
| 607 | SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, & |
---|
| 608 | TOPT,RSMAX,RGL,HS,XLAI, & |
---|
| 609 | RCS,RCT,RCQ,RCSOIL,EMISSI) |
---|
| 610 | END IF |
---|
| 611 | ! ---------------------------------------------------------------------- |
---|
| 612 | ! NOW DECIDE MAJOR PATHWAY BRANCH TO TAKE DEPENDING ON WHETHER SNOWPACK |
---|
| 613 | ! EXISTS OR NOT: |
---|
| 614 | ! ---------------------------------------------------------------------- |
---|
| 615 | ESNOW = 0.0 |
---|
| 616 | IF (SNEQV == 0.0) THEN |
---|
| 617 | CALL NOPAC (ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, & |
---|
| 618 | SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & |
---|
| 619 | SHDFAC, & |
---|
| 620 | SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,EMISSI, & |
---|
| 621 | SSOIL, & |
---|
| 622 | STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, & |
---|
| 623 | SH2O,SLOPE,KDT,FRZX,PSISAT,ZSOIL, & |
---|
| 624 | DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, & |
---|
| 625 | RUNOFF3,EDIR,EC,ET,ETT,NROOT,ICE,RTDIS, & |
---|
| 626 | QUARTZ,FXEXP,CSOIL, & |
---|
| 627 | BETA,DRIP,DEW,FLX1,FLX3,VEGTYP) |
---|
| 628 | ETA_KINEMATIC = ETA |
---|
| 629 | ELSE |
---|
| 630 | CALL SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,SMC,SMCMAX,SMCWLT, & |
---|
| 631 | SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & |
---|
| 632 | SBETA,DF1, & |
---|
| 633 | Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA, & |
---|
| 634 | SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,SNEQV,SNDENS,& |
---|
| 635 | SNOWH,SH2O,SLOPE,KDT,FRZX,PSISAT, & |
---|
| 636 | ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, & |
---|
| 637 | RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, & |
---|
| 638 | ICE,RTDIS,QUARTZ,FXEXP,CSOIL, & |
---|
| 639 | BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW,ETNS,EMISSI, & |
---|
| 640 | VEGTYP) |
---|
| 641 | ETA_KINEMATIC = ESNOW + ETNS |
---|
| 642 | END IF |
---|
| 643 | |
---|
| 644 | ! Calculate effective mixing ratio at grnd level (skin) |
---|
| 645 | ! |
---|
| 646 | ! Q1=Q2+ETA*CP/RCH |
---|
| 647 | Q1=Q2+ETA_KINEMATIC*CP/RCH |
---|
| 648 | ! |
---|
| 649 | ! ---------------------------------------------------------------------- |
---|
| 650 | ! DETERMINE SENSIBLE HEAT (H) IN ENERGY UNITS (W M-2) |
---|
| 651 | ! ---------------------------------------------------------------------- |
---|
| 652 | SHEAT = - (CH * CP * SFCPRS)/ (R * T2V) * ( TH2- T1 ) |
---|
| 653 | |
---|
| 654 | ! ---------------------------------------------------------------------- |
---|
| 655 | ! CONVERT EVAP TERMS FROM KINEMATIC (KG M-2 S-1) TO ENERGY UNITS (W M-2) |
---|
| 656 | ! ---------------------------------------------------------------------- |
---|
| 657 | EDIR = EDIR * LVH2O |
---|
| 658 | EC = EC * LVH2O |
---|
| 659 | DO K=1,4 |
---|
| 660 | ET(K) = ET(K) * LVH2O |
---|
| 661 | ENDDO |
---|
| 662 | ETT = ETT * LVH2O |
---|
| 663 | ESNOW = ESNOW * LSUBS |
---|
| 664 | ETP = ETP*((1.-SNCOVR)*LVH2O + SNCOVR*LSUBS) |
---|
| 665 | IF (ETP .GT. 0.) THEN |
---|
| 666 | ETA = EDIR + EC + ETT + ESNOW |
---|
| 667 | ELSE |
---|
| 668 | ETA = ETP |
---|
| 669 | ENDIF |
---|
| 670 | ! ---------------------------------------------------------------------- |
---|
| 671 | ! DETERMINE BETA (RATIO OF ACTUAL TO POTENTIAL EVAP) |
---|
| 672 | ! ---------------------------------------------------------------------- |
---|
| 673 | IF (ETP == 0.0) THEN |
---|
| 674 | BETA = 0.0 |
---|
| 675 | ELSE |
---|
| 676 | BETA = ETA/ETP |
---|
| 677 | ENDIF |
---|
| 678 | |
---|
| 679 | ! ---------------------------------------------------------------------- |
---|
| 680 | ! CONVERT THE SIGN OF SOIL HEAT FLUX SO THAT: |
---|
| 681 | ! SSOIL>0: WARM THE SURFACE (NIGHT TIME) |
---|
| 682 | ! SSOIL<0: COOL THE SURFACE (DAY TIME) |
---|
| 683 | ! ---------------------------------------------------------------------- |
---|
| 684 | SSOIL = -1.0* SSOIL |
---|
| 685 | |
---|
| 686 | ! ---------------------------------------------------------------------- |
---|
| 687 | ! CONVERT RUNOFF3 (INTERNAL LAYER RUNOFF FROM SUPERSAT) FROM M TO M S-1 |
---|
| 688 | ! AND ADD TO SUBSURFACE RUNOFF/DRAINAGE/BASEFLOW |
---|
| 689 | ! ---------------------------------------------------------------------- |
---|
| 690 | RUNOFF3 = RUNOFF3/ DT |
---|
| 691 | RUNOFF2 = RUNOFF2+ RUNOFF3 |
---|
| 692 | |
---|
| 693 | ! ---------------------------------------------------------------------- |
---|
| 694 | ! TOTAL COLUMN SOIL MOISTURE IN METERS (SOILM) AND ROOT-ZONE |
---|
| 695 | ! SOIL MOISTURE AVAILABILITY (FRACTION) RELATIVE TO POROSITY/SATURATION |
---|
| 696 | ! ---------------------------------------------------------------------- |
---|
| 697 | IF (ICE == 0) THEN |
---|
| 698 | SOILM = -1.0* SMC (1)* ZSOIL (1) |
---|
| 699 | DO K = 2,NSOIL |
---|
| 700 | SOILM = SOILM + SMC (K)* (ZSOIL (K -1) - ZSOIL (K)) |
---|
| 701 | END DO |
---|
| 702 | SOILWM = -1.0* (SMCMAX - SMCWLT)* ZSOIL (1) |
---|
| 703 | SOILWW = -1.0* (SMC (1) - SMCWLT)* ZSOIL (1) |
---|
| 704 | |
---|
| 705 | IF (NROOT >= 2) THEN |
---|
| 706 | DO K = 2,NROOT |
---|
| 707 | SOILWM = SOILWM + (SMCMAX - SMCWLT)* (ZSOIL (K -1) - ZSOIL (K)) |
---|
| 708 | SOILWW = SOILWW + (SMC(K) - SMCWLT)* (ZSOIL (K -1) - ZSOIL (K)) |
---|
| 709 | END DO |
---|
| 710 | END IF |
---|
| 711 | IF (SOILWM .LT. 1.E-6) THEN |
---|
| 712 | SOILWM = 0.0 |
---|
| 713 | SOILW = 0.0 |
---|
| 714 | SOILM = 0.0 |
---|
| 715 | ELSE |
---|
| 716 | SOILW = SOILWW / SOILWM |
---|
| 717 | END IF |
---|
| 718 | ELSE |
---|
| 719 | SOILWM = 0.0 |
---|
| 720 | SOILW = 0.0 |
---|
| 721 | SOILM = 0.0 |
---|
| 722 | END IF |
---|
| 723 | |
---|
| 724 | ! ---------------------------------------------------------------------- |
---|
| 725 | END SUBROUTINE SFLX |
---|
| 726 | ! ---------------------------------------------------------------------- |
---|
| 727 | |
---|
| 728 | SUBROUTINE ALCALC (ALB,SNOALB,EMBRD,SHDFAC,SHDMIN,SNCOVR,TSNOW,ALBEDO,EMISSI) |
---|
| 729 | |
---|
| 730 | ! ---------------------------------------------------------------------- |
---|
| 731 | ! CALCULATE ALBEDO INCLUDING SNOW EFFECT (0 -> 1) |
---|
| 732 | ! ALB SNOWFREE ALBEDO |
---|
| 733 | ! SNOALB MAXIMUM (DEEP) SNOW ALBEDO |
---|
| 734 | ! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
| 735 | ! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
| 736 | ! SNCOVR FRACTIONAL SNOW COVER |
---|
| 737 | ! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT |
---|
| 738 | ! TSNOW SNOW SURFACE TEMPERATURE (K) |
---|
| 739 | ! ---------------------------------------------------------------------- |
---|
| 740 | IMPLICIT NONE |
---|
| 741 | |
---|
| 742 | ! ---------------------------------------------------------------------- |
---|
| 743 | ! SNOALB IS ARGUMENT REPRESENTING MAXIMUM ALBEDO OVER DEEP SNOW, |
---|
| 744 | ! AS PASSED INTO SFLX, AND ADAPTED FROM THE SATELLITE-BASED MAXIMUM |
---|
| 745 | ! SNOW ALBEDO FIELDS PROVIDED BY D. ROBINSON AND G. KUKLA |
---|
| 746 | ! (1985, JCAM, VOL 24, 402-411) |
---|
| 747 | ! ---------------------------------------------------------------------- |
---|
| 748 | REAL, INTENT(IN) :: ALB, SNOALB, EMBRD, SHDFAC, SHDMIN, SNCOVR, TSNOW |
---|
| 749 | REAL, INTENT(OUT) :: ALBEDO, EMISSI |
---|
| 750 | ! turn of vegetation effect |
---|
| 751 | ! ALBEDO = ALB + (1.0- (SHDFAC - SHDMIN))* SNCOVR * (SNOALB - ALB) |
---|
| 752 | ! ALBEDO = (1.0-SNCOVR)*ALB + SNCOVR*SNOALB !this is equivalent to below |
---|
| 753 | ALBEDO = ALB + SNCOVR*(SNOALB-ALB) |
---|
| 754 | EMISSI = EMBRD + SNCOVR*(EMISSI_S - EMBRD) |
---|
| 755 | |
---|
| 756 | ! BASE FORMULATION (DICKINSON ET AL., 1986, COGLEY ET AL., 1990) |
---|
| 757 | ! IF (TSNOW.LE.263.16) THEN |
---|
| 758 | ! ALBEDO=SNOALB |
---|
| 759 | ! ELSE |
---|
| 760 | ! IF (TSNOW.LT.273.16) THEN |
---|
| 761 | ! TM=0.1*(TSNOW-263.16) |
---|
| 762 | ! ALBEDO=0.5*((0.9-0.2*(TM**3))+(0.8-0.16*(TM**3))) |
---|
| 763 | ! ELSE |
---|
| 764 | ! ALBEDO=0.67 |
---|
| 765 | ! ENDIF |
---|
| 766 | ! ENDIF |
---|
| 767 | |
---|
| 768 | ! ISBA FORMULATION (VERSEGHY, 1991; BAKER ET AL., 1990) |
---|
| 769 | ! IF (TSNOW.LT.273.16) THEN |
---|
| 770 | ! ALBEDO=SNOALB-0.008*DT/86400 |
---|
| 771 | ! ELSE |
---|
| 772 | ! ALBEDO=(SNOALB-0.5)*EXP(-0.24*DT/86400)+0.5 |
---|
| 773 | ! ENDIF |
---|
| 774 | |
---|
| 775 | IF (ALBEDO > SNOALB) ALBEDO = SNOALB |
---|
| 776 | |
---|
| 777 | ! ---------------------------------------------------------------------- |
---|
| 778 | END SUBROUTINE ALCALC |
---|
| 779 | ! ---------------------------------------------------------------------- |
---|
| 780 | |
---|
| 781 | SUBROUTINE CANRES (SOLAR,CH,SFCTMP,Q2,SFCPRS,SMC,ZSOIL,NSOIL, & |
---|
| 782 | SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, & |
---|
| 783 | TOPT,RSMAX,RGL,HS,XLAI, & |
---|
| 784 | RCS,RCT,RCQ,RCSOIL,EMISSI) |
---|
| 785 | |
---|
| 786 | ! ---------------------------------------------------------------------- |
---|
| 787 | ! SUBROUTINE CANRES |
---|
| 788 | ! ---------------------------------------------------------------------- |
---|
| 789 | ! CALCULATE CANOPY RESISTANCE WHICH DEPENDS ON INCOMING SOLAR RADIATION, |
---|
| 790 | ! AIR TEMPERATURE, ATMOSPHERIC WATER VAPOR PRESSURE DEFICIT AT THE |
---|
| 791 | ! LOWEST MODEL LEVEL, AND SOIL MOISTURE (PREFERABLY UNFROZEN SOIL |
---|
| 792 | ! MOISTURE RATHER THAN TOTAL) |
---|
| 793 | ! ---------------------------------------------------------------------- |
---|
| 794 | ! SOURCE: JARVIS (1976), NOILHAN AND PLANTON (1989, MWR), JACQUEMIN AND |
---|
| 795 | ! NOILHAN (1990, BLM) |
---|
| 796 | ! SEE ALSO: CHEN ET AL (1996, JGR, VOL 101(D3), 7251-7268), EQNS 12-14 |
---|
| 797 | ! AND TABLE 2 OF SEC. 3.1.2 |
---|
| 798 | ! ---------------------------------------------------------------------- |
---|
| 799 | ! INPUT: |
---|
| 800 | ! SOLAR INCOMING SOLAR RADIATION |
---|
| 801 | ! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE |
---|
| 802 | ! SFCTMP AIR TEMPERATURE AT 1ST LEVEL ABOVE GROUND |
---|
| 803 | ! Q2 AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND |
---|
| 804 | ! Q2SAT SATURATION AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND |
---|
| 805 | ! DQSDT2 SLOPE OF SATURATION HUMIDITY FUNCTION WRT TEMP |
---|
| 806 | ! SFCPRS SURFACE PRESSURE |
---|
| 807 | ! SMC VOLUMETRIC SOIL MOISTURE |
---|
| 808 | ! ZSOIL SOIL DEPTH (NEGATIVE SIGN, AS IT IS BELOW GROUND) |
---|
| 809 | ! NSOIL NO. OF SOIL LAYERS |
---|
| 810 | ! NROOT NO. OF SOIL LAYERS IN ROOT ZONE (1.LE.NROOT.LE.NSOIL) |
---|
| 811 | ! XLAI LEAF AREA INDEX |
---|
| 812 | ! SMCWLT WILTING POINT |
---|
| 813 | ! SMCREF REFERENCE SOIL MOISTURE (WHERE SOIL WATER DEFICIT STRESS |
---|
| 814 | ! SETS IN) |
---|
| 815 | ! RSMIN, RSMAX, TOPT, RGL, HS ARE CANOPY STRESS PARAMETERS SET IN |
---|
| 816 | ! SURBOUTINE REDPRM |
---|
| 817 | ! OUTPUT: |
---|
| 818 | ! PC PLANT COEFFICIENT |
---|
| 819 | ! RC CANOPY RESISTANCE |
---|
| 820 | ! ---------------------------------------------------------------------- |
---|
| 821 | |
---|
| 822 | IMPLICIT NONE |
---|
| 823 | INTEGER, INTENT(IN) :: NROOT,NSOIL |
---|
| 824 | INTEGER K |
---|
| 825 | REAL, INTENT(IN) :: CH,DQSDT2,HS,Q2,Q2SAT,RSMIN,RGL,RSMAX, & |
---|
| 826 | SFCPRS,SFCTMP,SMCREF,SMCWLT, SOLAR,TOPT,XLAI, & |
---|
| 827 | EMISSI |
---|
| 828 | REAL,DIMENSION(1:NSOIL), INTENT(IN) :: SMC,ZSOIL |
---|
| 829 | REAL, INTENT(OUT):: PC,RC,RCQ,RCS,RCSOIL,RCT |
---|
| 830 | REAL :: DELTA,FF,GX,P,RR |
---|
| 831 | REAL, DIMENSION(1:NSOIL) :: PART |
---|
| 832 | REAL, PARAMETER :: SLV = 2.501000E6 |
---|
| 833 | |
---|
| 834 | |
---|
| 835 | ! ---------------------------------------------------------------------- |
---|
| 836 | ! INITIALIZE CANOPY RESISTANCE MULTIPLIER TERMS. |
---|
| 837 | ! ---------------------------------------------------------------------- |
---|
| 838 | RCS = 0.0 |
---|
| 839 | RCT = 0.0 |
---|
| 840 | RCQ = 0.0 |
---|
| 841 | RCSOIL = 0.0 |
---|
| 842 | |
---|
| 843 | ! ---------------------------------------------------------------------- |
---|
| 844 | ! CONTRIBUTION DUE TO INCOMING SOLAR RADIATION |
---|
| 845 | ! ---------------------------------------------------------------------- |
---|
| 846 | RC = 0.0 |
---|
| 847 | FF = 0.55*2.0* SOLAR / (RGL * XLAI) |
---|
| 848 | RCS = (FF + RSMIN / RSMAX) / (1.0+ FF) |
---|
| 849 | |
---|
| 850 | ! ---------------------------------------------------------------------- |
---|
| 851 | ! CONTRIBUTION DUE TO AIR TEMPERATURE AT FIRST MODEL LEVEL ABOVE GROUND |
---|
| 852 | ! RCT EXPRESSION FROM NOILHAN AND PLANTON (1989, MWR). |
---|
| 853 | ! ---------------------------------------------------------------------- |
---|
| 854 | RCS = MAX (RCS,0.0001) |
---|
| 855 | RCT = 1.0- 0.0016* ( (TOPT - SFCTMP)**2.0) |
---|
| 856 | |
---|
| 857 | ! ---------------------------------------------------------------------- |
---|
| 858 | ! CONTRIBUTION DUE TO VAPOR PRESSURE DEFICIT AT FIRST MODEL LEVEL. |
---|
| 859 | ! RCQ EXPRESSION FROM SSIB |
---|
| 860 | ! ---------------------------------------------------------------------- |
---|
| 861 | RCT = MAX (RCT,0.0001) |
---|
| 862 | RCQ = 1.0/ (1.0+ HS * (Q2SAT - Q2)) |
---|
| 863 | |
---|
| 864 | ! ---------------------------------------------------------------------- |
---|
| 865 | ! CONTRIBUTION DUE TO SOIL MOISTURE AVAILABILITY. |
---|
| 866 | ! DETERMINE CONTRIBUTION FROM EACH SOIL LAYER, THEN ADD THEM UP. |
---|
| 867 | ! ---------------------------------------------------------------------- |
---|
| 868 | RCQ = MAX (RCQ,0.01) |
---|
| 869 | GX = (SMC (1) - SMCWLT) / (SMCREF - SMCWLT) |
---|
| 870 | IF (GX > 1.) GX = 1. |
---|
| 871 | IF (GX < 0.) GX = 0. |
---|
| 872 | |
---|
| 873 | ! ---------------------------------------------------------------------- |
---|
| 874 | ! USE SOIL DEPTH AS WEIGHTING FACTOR |
---|
| 875 | ! ---------------------------------------------------------------------- |
---|
| 876 | ! ---------------------------------------------------------------------- |
---|
| 877 | ! USE ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
| 878 | ! PART(1) = RTDIS(1) * GX |
---|
| 879 | ! ---------------------------------------------------------------------- |
---|
| 880 | PART (1) = (ZSOIL (1)/ ZSOIL (NROOT)) * GX |
---|
| 881 | DO K = 2,NROOT |
---|
| 882 | GX = (SMC (K) - SMCWLT) / (SMCREF - SMCWLT) |
---|
| 883 | IF (GX > 1.) GX = 1. |
---|
| 884 | IF (GX < 0.) GX = 0. |
---|
| 885 | ! ---------------------------------------------------------------------- |
---|
| 886 | ! USE SOIL DEPTH AS WEIGHTING FACTOR |
---|
| 887 | ! ---------------------------------------------------------------------- |
---|
| 888 | ! ---------------------------------------------------------------------- |
---|
| 889 | ! USE ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
| 890 | ! PART(K) = RTDIS(K) * GX |
---|
| 891 | ! ---------------------------------------------------------------------- |
---|
| 892 | PART (K) = ( (ZSOIL (K) - ZSOIL (K -1))/ ZSOIL (NROOT)) * GX |
---|
| 893 | END DO |
---|
| 894 | DO K = 1,NROOT |
---|
| 895 | RCSOIL = RCSOIL + PART (K) |
---|
| 896 | END DO |
---|
| 897 | |
---|
| 898 | ! ---------------------------------------------------------------------- |
---|
| 899 | ! DETERMINE CANOPY RESISTANCE DUE TO ALL FACTORS. CONVERT CANOPY |
---|
| 900 | ! RESISTANCE (RC) TO PLANT COEFFICIENT (PC) TO BE USED WITH POTENTIAL |
---|
| 901 | ! EVAP IN DETERMINING ACTUAL EVAP. PC IS DETERMINED BY: |
---|
| 902 | ! PC * LINERIZED PENMAN POTENTIAL EVAP = |
---|
| 903 | ! PENMAN-MONTEITH ACTUAL EVAPORATION (CONTAINING RC TERM). |
---|
| 904 | ! ---------------------------------------------------------------------- |
---|
| 905 | RCSOIL = MAX (RCSOIL,0.0001) |
---|
| 906 | |
---|
| 907 | RC = RSMIN / (XLAI * RCS * RCT * RCQ * RCSOIL) |
---|
| 908 | ! RR = (4.* SIGMA * RD / CP)* (SFCTMP **4.)/ (SFCPRS * CH) + 1.0 |
---|
| 909 | RR = (4.* EMISSI *SIGMA * RD / CP)* (SFCTMP **4.)/ (SFCPRS * CH) & |
---|
| 910 | + 1.0 |
---|
| 911 | |
---|
| 912 | DELTA = (SLV / CP)* DQSDT2 |
---|
| 913 | |
---|
| 914 | PC = (RR + DELTA)/ (RR * (1. + RC * CH) + DELTA) |
---|
| 915 | |
---|
| 916 | ! ---------------------------------------------------------------------- |
---|
| 917 | END SUBROUTINE CANRES |
---|
| 918 | ! ---------------------------------------------------------------------- |
---|
| 919 | |
---|
| 920 | SUBROUTINE CSNOW (SNCOND,DSNOW) |
---|
| 921 | |
---|
| 922 | ! ---------------------------------------------------------------------- |
---|
| 923 | ! SUBROUTINE CSNOW |
---|
| 924 | ! FUNCTION CSNOW |
---|
| 925 | ! ---------------------------------------------------------------------- |
---|
| 926 | ! CALCULATE SNOW TERMAL CONDUCTIVITY |
---|
| 927 | ! ---------------------------------------------------------------------- |
---|
| 928 | IMPLICIT NONE |
---|
| 929 | REAL, INTENT(IN) :: DSNOW |
---|
| 930 | REAL, INTENT(OUT):: SNCOND |
---|
| 931 | REAL :: C |
---|
| 932 | REAL, PARAMETER :: UNIT = 0.11631 |
---|
| 933 | |
---|
| 934 | ! ---------------------------------------------------------------------- |
---|
| 935 | ! SNCOND IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) |
---|
| 936 | ! CSNOW IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) |
---|
| 937 | ! BASIC VERSION IS DYACHKOVA EQUATION (1960), FOR RANGE 0.1-0.4 |
---|
| 938 | ! ---------------------------------------------------------------------- |
---|
| 939 | C = 0.328*10** (2.25* DSNOW) |
---|
| 940 | ! CSNOW=UNIT*C |
---|
| 941 | |
---|
| 942 | ! ---------------------------------------------------------------------- |
---|
| 943 | ! DE VAUX EQUATION (1933), IN RANGE 0.1-0.6 |
---|
| 944 | ! ---------------------------------------------------------------------- |
---|
| 945 | ! SNCOND=0.0293*(1.+100.*DSNOW**2) |
---|
| 946 | ! CSNOW=0.0293*(1.+100.*DSNOW**2) |
---|
| 947 | |
---|
| 948 | ! ---------------------------------------------------------------------- |
---|
| 949 | ! E. ANDERSEN FROM FLERCHINGER |
---|
| 950 | ! ---------------------------------------------------------------------- |
---|
| 951 | ! SNCOND=0.021+2.51*DSNOW**2 |
---|
| 952 | ! CSNOW=0.021+2.51*DSNOW**2 |
---|
| 953 | |
---|
| 954 | ! SNCOND = UNIT * C |
---|
| 955 | ! double snow thermal conductivity |
---|
| 956 | SNCOND = 2.0 * UNIT * C |
---|
| 957 | |
---|
| 958 | ! ---------------------------------------------------------------------- |
---|
| 959 | END SUBROUTINE CSNOW |
---|
| 960 | ! ---------------------------------------------------------------------- |
---|
| 961 | |
---|
| 962 | SUBROUTINE DEVAP (EDIR,ETP1,SMC,ZSOIL,SHDFAC,SMCMAX,BEXP, & |
---|
| 963 | DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) |
---|
| 964 | |
---|
| 965 | ! ---------------------------------------------------------------------- |
---|
| 966 | ! SUBROUTINE DEVAP |
---|
| 967 | ! FUNCTION DEVAP |
---|
| 968 | ! ---------------------------------------------------------------------- |
---|
| 969 | ! CALCULATE DIRECT SOIL EVAPORATION |
---|
| 970 | ! ---------------------------------------------------------------------- |
---|
| 971 | IMPLICIT NONE |
---|
| 972 | REAL, INTENT(IN) :: ETP1,SMC,BEXP,DKSAT,DWSAT,FXEXP, & |
---|
| 973 | SHDFAC,SMCDRY,SMCMAX,ZSOIL,SMCREF,SMCWLT |
---|
| 974 | REAL, INTENT(OUT):: EDIR |
---|
| 975 | REAL :: FX, SRATIO |
---|
| 976 | |
---|
| 977 | |
---|
| 978 | ! ---------------------------------------------------------------------- |
---|
| 979 | ! DIRECT EVAP A FUNCTION OF RELATIVE SOIL MOISTURE AVAILABILITY, LINEAR |
---|
| 980 | ! WHEN FXEXP=1. |
---|
| 981 | ! ---------------------------------------------------------------------- |
---|
| 982 | ! ---------------------------------------------------------------------- |
---|
| 983 | ! FX > 1 REPRESENTS DEMAND CONTROL |
---|
| 984 | ! FX < 1 REPRESENTS FLUX CONTROL |
---|
| 985 | ! ---------------------------------------------------------------------- |
---|
| 986 | |
---|
| 987 | SRATIO = (SMC - SMCDRY) / (SMCMAX - SMCDRY) |
---|
| 988 | IF (SRATIO > 0.) THEN |
---|
| 989 | FX = SRATIO**FXEXP |
---|
| 990 | FX = MAX ( MIN ( FX, 1. ) ,0. ) |
---|
| 991 | ELSE |
---|
| 992 | FX = 0. |
---|
| 993 | ENDIF |
---|
| 994 | |
---|
| 995 | ! ---------------------------------------------------------------------- |
---|
| 996 | ! ALLOW FOR THE DIRECT-EVAP-REDUCING EFFECT OF SHADE |
---|
| 997 | ! ---------------------------------------------------------------------- |
---|
| 998 | EDIR = FX * ( 1.0- SHDFAC ) * ETP1 |
---|
| 999 | |
---|
| 1000 | ! ---------------------------------------------------------------------- |
---|
| 1001 | END SUBROUTINE DEVAP |
---|
| 1002 | ! ---------------------------------------------------------------------- |
---|
| 1003 | |
---|
| 1004 | SUBROUTINE EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & |
---|
| 1005 | SH2O, & |
---|
| 1006 | SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & |
---|
| 1007 | SMCREF,SHDFAC,CMCMAX, & |
---|
| 1008 | SMCDRY,CFACTR, & |
---|
| 1009 | EDIR,EC,ET,ETT,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
| 1010 | |
---|
| 1011 | ! ---------------------------------------------------------------------- |
---|
| 1012 | ! SUBROUTINE EVAPO |
---|
| 1013 | ! ---------------------------------------------------------------------- |
---|
| 1014 | ! CALCULATE SOIL MOISTURE FLUX. THE SOIL MOISTURE CONTENT (SMC - A PER |
---|
| 1015 | ! UNIT VOLUME MEASUREMENT) IS A DEPENDENT VARIABLE THAT IS UPDATED WITH |
---|
| 1016 | ! PROGNOSTIC EQNS. THE CANOPY MOISTURE CONTENT (CMC) IS ALSO UPDATED. |
---|
| 1017 | ! FROZEN GROUND VERSION: NEW STATES ADDED: SH2O, AND FROZEN GROUND |
---|
| 1018 | ! CORRECTION FACTOR, FRZFACT AND PARAMETER SLOPE. |
---|
| 1019 | ! ---------------------------------------------------------------------- |
---|
| 1020 | IMPLICIT NONE |
---|
| 1021 | INTEGER, INTENT(IN) :: NSOIL, NROOT |
---|
| 1022 | INTEGER :: I,K |
---|
| 1023 | REAL, INTENT(IN) :: BEXP, CFACTR,CMC,CMCMAX,DKSAT, & |
---|
| 1024 | DT,DWSAT,ETP1,FXEXP,PC,Q2,SFCTMP, & |
---|
| 1025 | SHDFAC,SMCDRY,SMCMAX,SMCREF,SMCWLT |
---|
| 1026 | REAL, INTENT(OUT) :: EC,EDIR,ETA1,ETT |
---|
| 1027 | REAL :: CMC2MS |
---|
| 1028 | REAL,DIMENSION(1:NSOIL), INTENT(IN) :: RTDIS, SMC, SH2O, ZSOIL |
---|
| 1029 | REAL,DIMENSION(1:NSOIL), INTENT(OUT) :: ET |
---|
| 1030 | |
---|
| 1031 | ! ---------------------------------------------------------------------- |
---|
| 1032 | ! EXECUTABLE CODE BEGINS HERE IF THE POTENTIAL EVAPOTRANSPIRATION IS |
---|
| 1033 | ! GREATER THAN ZERO. |
---|
| 1034 | ! ---------------------------------------------------------------------- |
---|
| 1035 | EDIR = 0. |
---|
| 1036 | EC = 0. |
---|
| 1037 | ETT = 0. |
---|
| 1038 | DO K = 1,NSOIL |
---|
| 1039 | ET (K) = 0. |
---|
| 1040 | END DO |
---|
| 1041 | |
---|
| 1042 | ! ---------------------------------------------------------------------- |
---|
| 1043 | ! RETRIEVE DIRECT EVAPORATION FROM SOIL SURFACE. CALL THIS FUNCTION |
---|
| 1044 | ! ONLY IF VEG COVER NOT COMPLETE. |
---|
| 1045 | ! FROZEN GROUND VERSION: SH2O STATES REPLACE SMC STATES. |
---|
| 1046 | ! ---------------------------------------------------------------------- |
---|
| 1047 | IF (ETP1 > 0.0) THEN |
---|
| 1048 | IF (SHDFAC < 1.) THEN |
---|
| 1049 | CALL DEVAP (EDIR,ETP1,SMC (1),ZSOIL (1),SHDFAC,SMCMAX, & |
---|
| 1050 | BEXP,DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) |
---|
| 1051 | END IF |
---|
| 1052 | ! ---------------------------------------------------------------------- |
---|
| 1053 | ! INITIALIZE PLANT TOTAL TRANSPIRATION, RETRIEVE PLANT TRANSPIRATION, |
---|
| 1054 | ! AND ACCUMULATE IT FOR ALL SOIL LAYERS. |
---|
| 1055 | ! ---------------------------------------------------------------------- |
---|
| 1056 | |
---|
| 1057 | IF (SHDFAC > 0.0) THEN |
---|
| 1058 | CALL TRANSP (ET,NSOIL,ETP1,SH2O,CMC,ZSOIL,SHDFAC,SMCWLT, & |
---|
| 1059 | CMCMAX,PC,CFACTR,SMCREF,SFCTMP,Q2,NROOT,RTDIS) |
---|
| 1060 | DO K = 1,NSOIL |
---|
| 1061 | ETT = ETT + ET ( K ) |
---|
| 1062 | END DO |
---|
| 1063 | ! ---------------------------------------------------------------------- |
---|
| 1064 | ! CALCULATE CANOPY EVAPORATION. |
---|
| 1065 | ! IF STATEMENTS TO AVOID TANGENT LINEAR PROBLEMS NEAR CMC=0.0. |
---|
| 1066 | ! ---------------------------------------------------------------------- |
---|
| 1067 | IF (CMC > 0.0) THEN |
---|
| 1068 | EC = SHDFAC * ( ( CMC / CMCMAX ) ** CFACTR ) * ETP1 |
---|
| 1069 | ELSE |
---|
| 1070 | EC = 0.0 |
---|
| 1071 | END IF |
---|
| 1072 | ! ---------------------------------------------------------------------- |
---|
| 1073 | ! EC SHOULD BE LIMITED BY THE TOTAL AMOUNT OF AVAILABLE WATER ON THE |
---|
| 1074 | ! CANOPY. -F.CHEN, 18-OCT-1994 |
---|
| 1075 | ! ---------------------------------------------------------------------- |
---|
| 1076 | CMC2MS = CMC / DT |
---|
| 1077 | EC = MIN ( CMC2MS, EC ) |
---|
| 1078 | END IF |
---|
| 1079 | END IF |
---|
| 1080 | ! ---------------------------------------------------------------------- |
---|
| 1081 | ! TOTAL UP EVAP AND TRANSP TYPES TO OBTAIN ACTUAL EVAPOTRANSP |
---|
| 1082 | ! ---------------------------------------------------------------------- |
---|
| 1083 | ETA1 = EDIR + ETT + EC |
---|
| 1084 | |
---|
| 1085 | ! ---------------------------------------------------------------------- |
---|
| 1086 | END SUBROUTINE EVAPO |
---|
| 1087 | ! ---------------------------------------------------------------------- |
---|
| 1088 | |
---|
| 1089 | SUBROUTINE FRH2O (FREE,TKELV,SMC,SH2O,SMCMAX,BEXP,PSIS) |
---|
| 1090 | |
---|
| 1091 | ! ---------------------------------------------------------------------- |
---|
| 1092 | ! SUBROUTINE FRH2O |
---|
| 1093 | ! ---------------------------------------------------------------------- |
---|
| 1094 | ! CALCULATE AMOUNT OF SUPERCOOLED LIQUID SOIL WATER CONTENT IF |
---|
| 1095 | ! TEMPERATURE IS BELOW 273.15K (T0). REQUIRES NEWTON-TYPE ITERATION TO |
---|
| 1096 | ! SOLVE THE NONLINEAR IMPLICIT EQUATION GIVEN IN EQN 17 OF KOREN ET AL |
---|
| 1097 | ! (1999, JGR, VOL 104(D16), 19569-19585). |
---|
| 1098 | ! ---------------------------------------------------------------------- |
---|
| 1099 | ! NEW VERSION (JUNE 2001): MUCH FASTER AND MORE ACCURATE NEWTON |
---|
| 1100 | ! ITERATION ACHIEVED BY FIRST TAKING LOG OF EQN CITED ABOVE -- LESS THAN |
---|
| 1101 | ! 4 (TYPICALLY 1 OR 2) ITERATIONS ACHIEVES CONVERGENCE. ALSO, EXPLICIT |
---|
| 1102 | ! 1-STEP SOLUTION OPTION FOR SPECIAL CASE OF PARAMETER CK=0, WHICH |
---|
| 1103 | ! REDUCES THE ORIGINAL IMPLICIT EQUATION TO A SIMPLER EXPLICIT FORM, |
---|
| 1104 | ! KNOWN AS THE "FLERCHINGER EQN". IMPROVED HANDLING OF SOLUTION IN THE |
---|
| 1105 | ! LIMIT OF FREEZING POINT TEMPERATURE T0. |
---|
| 1106 | ! ---------------------------------------------------------------------- |
---|
| 1107 | ! INPUT: |
---|
| 1108 | |
---|
| 1109 | ! TKELV.........TEMPERATURE (Kelvin) |
---|
| 1110 | ! SMC...........TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC) |
---|
| 1111 | ! SH2O..........LIQUID SOIL MOISTURE CONTENT (VOLUMETRIC) |
---|
| 1112 | ! SMCMAX........SATURATION SOIL MOISTURE CONTENT (FROM REDPRM) |
---|
| 1113 | ! B.............SOIL TYPE "B" PARAMETER (FROM REDPRM) |
---|
| 1114 | ! PSIS..........SATURATED SOIL MATRIC POTENTIAL (FROM REDPRM) |
---|
| 1115 | |
---|
| 1116 | ! OUTPUT: |
---|
| 1117 | ! FRH2O.........SUPERCOOLED LIQUID WATER CONTENT |
---|
| 1118 | ! FREE..........SUPERCOOLED LIQUID WATER CONTENT |
---|
| 1119 | ! ---------------------------------------------------------------------- |
---|
| 1120 | IMPLICIT NONE |
---|
| 1121 | REAL, INTENT(IN) :: BEXP,PSIS,SH2O,SMC,SMCMAX,TKELV |
---|
| 1122 | REAL, INTENT(OUT) :: FREE |
---|
| 1123 | REAL :: BX,DENOM,DF,DSWL,FK,SWL,SWLK |
---|
| 1124 | INTEGER :: NLOG,KCOUNT |
---|
| 1125 | ! PARAMETER(CK = 0.0) |
---|
| 1126 | REAL, PARAMETER :: CK = 8.0, BLIM = 5.5, ERROR = 0.005, & |
---|
| 1127 | HLICE = 3.335E5, GS = 9.81,DICE = 920.0, & |
---|
| 1128 | DH2O = 1000.0, T0 = 273.15 |
---|
| 1129 | |
---|
| 1130 | ! ---------------------------------------------------------------------- |
---|
| 1131 | ! LIMITS ON PARAMETER B: B < 5.5 (use parameter BLIM) |
---|
| 1132 | ! SIMULATIONS SHOWED IF B > 5.5 UNFROZEN WATER CONTENT IS |
---|
| 1133 | ! NON-REALISTICALLY HIGH AT VERY LOW TEMPERATURES. |
---|
| 1134 | ! ---------------------------------------------------------------------- |
---|
| 1135 | BX = BEXP |
---|
| 1136 | |
---|
| 1137 | ! ---------------------------------------------------------------------- |
---|
| 1138 | ! INITIALIZING ITERATIONS COUNTER AND ITERATIVE SOLUTION FLAG. |
---|
| 1139 | ! ---------------------------------------------------------------------- |
---|
| 1140 | IF (BEXP > BLIM) BX = BLIM |
---|
| 1141 | NLOG = 0 |
---|
| 1142 | |
---|
| 1143 | ! ---------------------------------------------------------------------- |
---|
| 1144 | ! IF TEMPERATURE NOT SIGNIFICANTLY BELOW FREEZING (T0), SH2O = SMC |
---|
| 1145 | ! ---------------------------------------------------------------------- |
---|
| 1146 | KCOUNT = 0 |
---|
| 1147 | ! FRH2O = SMC |
---|
| 1148 | IF (TKELV > (T0- 1.E-3)) THEN |
---|
| 1149 | FREE = SMC |
---|
| 1150 | ELSE |
---|
| 1151 | |
---|
| 1152 | ! ---------------------------------------------------------------------- |
---|
| 1153 | ! OPTION 1: ITERATED SOLUTION FOR NONZERO CK |
---|
| 1154 | ! IN KOREN ET AL, JGR, 1999, EQN 17 |
---|
| 1155 | ! ---------------------------------------------------------------------- |
---|
| 1156 | ! INITIAL GUESS FOR SWL (frozen content) |
---|
| 1157 | ! ---------------------------------------------------------------------- |
---|
| 1158 | IF (CK /= 0.0) THEN |
---|
| 1159 | SWL = SMC - SH2O |
---|
| 1160 | ! ---------------------------------------------------------------------- |
---|
| 1161 | ! KEEP WITHIN BOUNDS. |
---|
| 1162 | ! ---------------------------------------------------------------------- |
---|
| 1163 | IF (SWL > (SMC -0.02)) SWL = SMC -0.02 |
---|
| 1164 | |
---|
| 1165 | ! ---------------------------------------------------------------------- |
---|
| 1166 | ! START OF ITERATIONS |
---|
| 1167 | ! ---------------------------------------------------------------------- |
---|
| 1168 | IF (SWL < 0.) SWL = 0. |
---|
| 1169 | 1001 Continue |
---|
| 1170 | IF (.NOT.( (NLOG < 10) .AND. (KCOUNT == 0))) goto 1002 |
---|
| 1171 | NLOG = NLOG +1 |
---|
| 1172 | DF = ALOG ( ( PSIS * GS / HLICE ) * ( ( 1. + CK * SWL )**2.) * & |
---|
| 1173 | ( SMCMAX / (SMC - SWL) )** BX) - ALOG ( - ( & |
---|
| 1174 | TKELV - T0)/ TKELV) |
---|
| 1175 | DENOM = 2. * CK / ( 1. + CK * SWL ) + BX / ( SMC - SWL ) |
---|
| 1176 | SWLK = SWL - DF / DENOM |
---|
| 1177 | ! ---------------------------------------------------------------------- |
---|
| 1178 | ! BOUNDS USEFUL FOR MATHEMATICAL SOLUTION. |
---|
| 1179 | ! ---------------------------------------------------------------------- |
---|
| 1180 | IF (SWLK > (SMC -0.02)) SWLK = SMC - 0.02 |
---|
| 1181 | IF (SWLK < 0.) SWLK = 0. |
---|
| 1182 | |
---|
| 1183 | ! ---------------------------------------------------------------------- |
---|
| 1184 | ! MATHEMATICAL SOLUTION BOUNDS APPLIED. |
---|
| 1185 | ! ---------------------------------------------------------------------- |
---|
| 1186 | DSWL = ABS (SWLK - SWL) |
---|
| 1187 | |
---|
| 1188 | ! ---------------------------------------------------------------------- |
---|
| 1189 | ! IF MORE THAN 10 ITERATIONS, USE EXPLICIT METHOD (CK=0 APPROX.) |
---|
| 1190 | ! WHEN DSWL LESS OR EQ. ERROR, NO MORE ITERATIONS REQUIRED. |
---|
| 1191 | ! ---------------------------------------------------------------------- |
---|
| 1192 | SWL = SWLK |
---|
| 1193 | IF ( DSWL <= ERROR ) THEN |
---|
| 1194 | KCOUNT = KCOUNT +1 |
---|
| 1195 | END IF |
---|
| 1196 | ! ---------------------------------------------------------------------- |
---|
| 1197 | ! END OF ITERATIONS |
---|
| 1198 | ! ---------------------------------------------------------------------- |
---|
| 1199 | ! BOUNDS APPLIED WITHIN DO-BLOCK ARE VALID FOR PHYSICAL SOLUTION. |
---|
| 1200 | ! ---------------------------------------------------------------------- |
---|
| 1201 | ! FRH2O = SMC - SWL |
---|
| 1202 | goto 1001 |
---|
| 1203 | 1002 continue |
---|
| 1204 | FREE = SMC - SWL |
---|
| 1205 | END IF |
---|
| 1206 | ! ---------------------------------------------------------------------- |
---|
| 1207 | ! END OPTION 1 |
---|
| 1208 | ! ---------------------------------------------------------------------- |
---|
| 1209 | ! ---------------------------------------------------------------------- |
---|
| 1210 | ! OPTION 2: EXPLICIT SOLUTION FOR FLERCHINGER EQ. i.e. CK=0 |
---|
| 1211 | ! IN KOREN ET AL., JGR, 1999, EQN 17 |
---|
| 1212 | ! APPLY PHYSICAL BOUNDS TO FLERCHINGER SOLUTION |
---|
| 1213 | ! ---------------------------------------------------------------------- |
---|
| 1214 | IF (KCOUNT == 0) THEN |
---|
| 1215 | PRINT *,'Flerchinger USEd in NEW version. Iterations=',NLOG |
---|
| 1216 | FK = ( ( (HLICE / (GS * ( - PSIS)))* & |
---|
| 1217 | ( (TKELV - T0)/ TKELV))** ( -1/ BX))* SMCMAX |
---|
| 1218 | ! FRH2O = MIN (FK, SMC) |
---|
| 1219 | IF (FK < 0.02) FK = 0.02 |
---|
| 1220 | FREE = MIN (FK, SMC) |
---|
| 1221 | ! ---------------------------------------------------------------------- |
---|
| 1222 | ! END OPTION 2 |
---|
| 1223 | ! ---------------------------------------------------------------------- |
---|
| 1224 | END IF |
---|
| 1225 | END IF |
---|
| 1226 | ! ---------------------------------------------------------------------- |
---|
| 1227 | END SUBROUTINE FRH2O |
---|
| 1228 | ! ---------------------------------------------------------------------- |
---|
| 1229 | |
---|
| 1230 | SUBROUTINE HRT (RHSTS,STC,SMC,SMCMAX,NSOIL,ZSOIL,YY,ZZ1, & |
---|
| 1231 | TBOT,ZBOT,PSISAT,SH2O,DT,BEXP, & |
---|
| 1232 | F1,DF1,QUARTZ,CSOIL,AI,BI,CI,VEGTYP) |
---|
| 1233 | |
---|
| 1234 | ! ---------------------------------------------------------------------- |
---|
| 1235 | ! SUBROUTINE HRT |
---|
| 1236 | ! ---------------------------------------------------------------------- |
---|
| 1237 | ! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL |
---|
| 1238 | ! THERMAL DIFFUSION EQUATION. ALSO TO COMPUTE ( PREPARE ) THE MATRIX |
---|
| 1239 | ! COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. |
---|
| 1240 | ! ---------------------------------------------------------------------- |
---|
| 1241 | IMPLICIT NONE |
---|
| 1242 | LOGICAL :: ITAVG |
---|
| 1243 | INTEGER, INTENT(IN) :: NSOIL, VEGTYP |
---|
| 1244 | INTEGER :: I, K |
---|
| 1245 | |
---|
| 1246 | REAL, INTENT(IN) :: BEXP, CSOIL, DF1, DT,F1,PSISAT,QUARTZ, & |
---|
| 1247 | SMCMAX ,TBOT,YY,ZZ1, ZBOT |
---|
| 1248 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SMC,STC,ZSOIL |
---|
| 1249 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: SH2O |
---|
| 1250 | REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: RHSTS |
---|
| 1251 | REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: AI, BI,CI |
---|
| 1252 | REAL :: DDZ, DDZ2, DENOM, DF1N, DF1K, DTSDZ, & |
---|
| 1253 | DTSDZ2,HCPCT,QTOT,SSOIL,SICE,TAVG,TBK, & |
---|
| 1254 | TBK1,TSNSR,TSURF,CSOIL_LOC |
---|
| 1255 | REAL, PARAMETER :: T0 = 273.15, CAIR = 1004.0, CICE = 2.106E6,& |
---|
| 1256 | CH2O = 4.2E6 |
---|
| 1257 | |
---|
| 1258 | |
---|
| 1259 | !urban |
---|
| 1260 | IF(VEGTYP==1) then |
---|
| 1261 | CSOIL_LOC=3.0E6 |
---|
| 1262 | ELSE |
---|
| 1263 | CSOIL_LOC=CSOIL |
---|
| 1264 | ENDIF |
---|
| 1265 | |
---|
| 1266 | ! ---------------------------------------------------------------------- |
---|
| 1267 | ! INITIALIZE LOGICAL FOR SOIL LAYER TEMPERATURE AVERAGING. |
---|
| 1268 | ! ---------------------------------------------------------------------- |
---|
| 1269 | ITAVG = .TRUE. |
---|
| 1270 | ! ---------------------------------------------------------------------- |
---|
| 1271 | ! BEGIN SECTION FOR TOP SOIL LAYER |
---|
| 1272 | ! ---------------------------------------------------------------------- |
---|
| 1273 | ! CALC THE HEAT CAPACITY OF THE TOP SOIL LAYER |
---|
| 1274 | ! ---------------------------------------------------------------------- |
---|
| 1275 | HCPCT = SH2O (1)* CH2O + (1.0- SMCMAX)* CSOIL_LOC + (SMCMAX - SMC (1))& |
---|
| 1276 | * CAIR & |
---|
| 1277 | + ( SMC (1) - SH2O (1) )* CICE |
---|
| 1278 | |
---|
| 1279 | ! ---------------------------------------------------------------------- |
---|
| 1280 | ! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER |
---|
| 1281 | ! ---------------------------------------------------------------------- |
---|
| 1282 | DDZ = 1.0 / ( -0.5 * ZSOIL (2) ) |
---|
| 1283 | AI (1) = 0.0 |
---|
| 1284 | CI (1) = (DF1 * DDZ) / (ZSOIL (1) * HCPCT) |
---|
| 1285 | |
---|
| 1286 | ! ---------------------------------------------------------------------- |
---|
| 1287 | ! CALCULATE THE VERTICAL SOIL TEMP GRADIENT BTWN THE 1ST AND 2ND SOIL |
---|
| 1288 | ! LAYERS. THEN CALCULATE THE SUBSURFACE HEAT FLUX. USE THE TEMP |
---|
| 1289 | ! GRADIENT AND SUBSFC HEAT FLUX TO CALC "RIGHT-HAND SIDE TENDENCY |
---|
| 1290 | ! TERMS", OR "RHSTS", FOR TOP SOIL LAYER. |
---|
| 1291 | ! ---------------------------------------------------------------------- |
---|
| 1292 | BI (1) = - CI (1) + DF1 / (0.5 * ZSOIL (1) * ZSOIL (1)* HCPCT * & |
---|
| 1293 | ZZ1) |
---|
| 1294 | DTSDZ = (STC (1) - STC (2)) / ( -0.5 * ZSOIL (2)) |
---|
| 1295 | SSOIL = DF1 * (STC (1) - YY) / (0.5 * ZSOIL (1) * ZZ1) |
---|
| 1296 | ! RHSTS(1) = (DF1 * DTSDZ - SSOIL) / (ZSOIL(1) * HCPCT) |
---|
| 1297 | DENOM = (ZSOIL (1) * HCPCT) |
---|
| 1298 | |
---|
| 1299 | ! ---------------------------------------------------------------------- |
---|
| 1300 | ! NEXT CAPTURE THE VERTICAL DIFFERENCE OF THE HEAT FLUX AT TOP AND |
---|
| 1301 | ! BOTTOM OF FIRST SOIL LAYER FOR USE IN HEAT FLUX CONSTRAINT APPLIED TO |
---|
| 1302 | ! POTENTIAL SOIL FREEZING/THAWING IN ROUTINE SNKSRC. |
---|
| 1303 | ! ---------------------------------------------------------------------- |
---|
| 1304 | ! QTOT = SSOIL - DF1*DTSDZ |
---|
| 1305 | RHSTS (1) = (DF1 * DTSDZ - SSOIL) / DENOM |
---|
| 1306 | |
---|
| 1307 | ! ---------------------------------------------------------------------- |
---|
| 1308 | ! CALCULATE FROZEN WATER CONTENT IN 1ST SOIL LAYER. |
---|
| 1309 | ! ---------------------------------------------------------------------- |
---|
| 1310 | QTOT = -1.0* RHSTS (1)* DENOM |
---|
| 1311 | |
---|
| 1312 | ! ---------------------------------------------------------------------- |
---|
| 1313 | ! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): |
---|
| 1314 | ! SET TEMP "TSURF" AT TOP OF SOIL COLUMN (FOR USE IN FREEZING SOIL |
---|
| 1315 | ! PHYSICS LATER IN FUNCTION SUBROUTINE SNKSRC). IF SNOWPACK CONTENT IS |
---|
| 1316 | ! ZERO, THEN TSURF EXPRESSION BELOW GIVES TSURF = SKIN TEMP. IF |
---|
| 1317 | ! SNOWPACK IS NONZERO (HENCE ARGUMENT ZZ1=1), THEN TSURF EXPRESSION |
---|
| 1318 | ! BELOW YIELDS SOIL COLUMN TOP TEMPERATURE UNDER SNOWPACK. THEN |
---|
| 1319 | ! CALCULATE TEMPERATURE AT BOTTOM INTERFACE OF 1ST SOIL LAYER FOR USE |
---|
| 1320 | ! LATER IN FUNCTION SUBROUTINE SNKSRC |
---|
| 1321 | ! ---------------------------------------------------------------------- |
---|
| 1322 | SICE = SMC (1) - SH2O (1) |
---|
| 1323 | IF (ITAVG) THEN |
---|
| 1324 | TSURF = (YY + (ZZ1-1) * STC (1)) / ZZ1 |
---|
| 1325 | ! ---------------------------------------------------------------------- |
---|
| 1326 | ! IF FROZEN WATER PRESENT OR ANY OF LAYER-1 MID-POINT OR BOUNDING |
---|
| 1327 | ! INTERFACE TEMPERATURES BELOW FREEZING, THEN CALL SNKSRC TO |
---|
| 1328 | ! COMPUTE HEAT SOURCE/SINK (AND CHANGE IN FROZEN WATER CONTENT) |
---|
| 1329 | ! DUE TO POSSIBLE SOIL WATER PHASE CHANGE |
---|
| 1330 | ! ---------------------------------------------------------------------- |
---|
| 1331 | CALL TBND (STC (1),STC (2),ZSOIL,ZBOT,1,NSOIL,TBK) |
---|
| 1332 | IF ( (SICE > 0.) .OR. (STC (1) < T0) .OR. & |
---|
| 1333 | (TSURF < T0) .OR. (TBK < T0) ) THEN |
---|
| 1334 | ! TSNSR = SNKSRC (TAVG,SMC(1),SH2O(1), |
---|
| 1335 | CALL TMPAVG (TAVG,TSURF,STC (1),TBK,ZSOIL,NSOIL,1) |
---|
| 1336 | CALL SNKSRC (TSNSR,TAVG,SMC (1),SH2O (1), & |
---|
| 1337 | ZSOIL,NSOIL,SMCMAX,PSISAT,BEXP,DT,1,QTOT) |
---|
| 1338 | ! RHSTS(1) = RHSTS(1) - TSNSR / ( ZSOIL(1) * HCPCT ) |
---|
| 1339 | RHSTS (1) = RHSTS (1) - TSNSR / DENOM |
---|
| 1340 | END IF |
---|
| 1341 | ELSE |
---|
| 1342 | ! TSNSR = SNKSRC (STC(1),SMC(1),SH2O(1), |
---|
| 1343 | IF ( (SICE > 0.) .OR. (STC (1) < T0) ) THEN |
---|
| 1344 | CALL SNKSRC (TSNSR,STC (1),SMC (1),SH2O (1), & |
---|
| 1345 | ZSOIL,NSOIL,SMCMAX,PSISAT,BEXP,DT,1,QTOT) |
---|
| 1346 | ! RHSTS(1) = RHSTS(1) - TSNSR / ( ZSOIL(1) * HCPCT ) |
---|
| 1347 | RHSTS (1) = RHSTS (1) - TSNSR / DENOM |
---|
| 1348 | END IF |
---|
| 1349 | ! ---------------------------------------------------------------------- |
---|
| 1350 | ! THIS ENDS SECTION FOR TOP SOIL LAYER. |
---|
| 1351 | ! ---------------------------------------------------------------------- |
---|
| 1352 | END IF |
---|
| 1353 | |
---|
| 1354 | ! INITIALIZE DDZ2 |
---|
| 1355 | ! ---------------------------------------------------------------------- |
---|
| 1356 | |
---|
| 1357 | DDZ2 = 0.0 |
---|
| 1358 | DF1K = DF1 |
---|
| 1359 | |
---|
| 1360 | ! ---------------------------------------------------------------------- |
---|
| 1361 | ! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABOVE PROCESS |
---|
| 1362 | ! (EXCEPT SUBSFC OR "GROUND" HEAT FLUX NOT REPEATED IN LOWER LAYERS) |
---|
| 1363 | ! ---------------------------------------------------------------------- |
---|
| 1364 | ! CALCULATE HEAT CAPACITY FOR THIS SOIL LAYER. |
---|
| 1365 | ! ---------------------------------------------------------------------- |
---|
| 1366 | DO K = 2,NSOIL |
---|
| 1367 | HCPCT = SH2O (K)* CH2O + (1.0- SMCMAX)* CSOIL_LOC + (SMCMAX - SMC ( & |
---|
| 1368 | K))* CAIR + ( SMC (K) - SH2O (K) )* CICE |
---|
| 1369 | ! ---------------------------------------------------------------------- |
---|
| 1370 | ! THIS SECTION FOR LAYER 2 OR GREATER, BUT NOT LAST LAYER. |
---|
| 1371 | ! ---------------------------------------------------------------------- |
---|
| 1372 | ! CALCULATE THERMAL DIFFUSIVITY FOR THIS LAYER. |
---|
| 1373 | ! ---------------------------------------------------------------------- |
---|
| 1374 | IF (K /= NSOIL) THEN |
---|
| 1375 | |
---|
| 1376 | ! ---------------------------------------------------------------------- |
---|
| 1377 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THIS LAYER |
---|
| 1378 | ! ---------------------------------------------------------------------- |
---|
| 1379 | CALL TDFCND (DF1N,SMC (K),QUARTZ,SMCMAX,SH2O (K)) |
---|
| 1380 | |
---|
| 1381 | !urban |
---|
| 1382 | IF(VEGTYP==1) DF1N = 3.24 |
---|
| 1383 | |
---|
| 1384 | DENOM = 0.5 * ( ZSOIL (K -1) - ZSOIL (K +1) ) |
---|
| 1385 | |
---|
| 1386 | ! ---------------------------------------------------------------------- |
---|
| 1387 | ! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT |
---|
| 1388 | ! ---------------------------------------------------------------------- |
---|
| 1389 | DTSDZ2 = ( STC (K) - STC (K +1) ) / DENOM |
---|
| 1390 | DDZ2 = 2. / (ZSOIL (K -1) - ZSOIL (K +1)) |
---|
| 1391 | |
---|
| 1392 | ! ---------------------------------------------------------------------- |
---|
| 1393 | ! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): CALCULATE |
---|
| 1394 | ! TEMP AT BOTTOM OF LAYER. |
---|
| 1395 | ! ---------------------------------------------------------------------- |
---|
| 1396 | CI (K) = - DF1N * DDZ2 / ( (ZSOIL (K -1) - ZSOIL (K)) * & |
---|
| 1397 | HCPCT) |
---|
| 1398 | IF (ITAVG) THEN |
---|
| 1399 | CALL TBND (STC (K),STC (K +1),ZSOIL,ZBOT,K,NSOIL,TBK1) |
---|
| 1400 | END IF |
---|
| 1401 | |
---|
| 1402 | ELSE |
---|
| 1403 | ! ---------------------------------------------------------------------- |
---|
| 1404 | ! SPECIAL CASE OF BOTTOM SOIL LAYER: CALCULATE THERMAL DIFFUSIVITY FOR |
---|
| 1405 | ! BOTTOM LAYER. |
---|
| 1406 | ! ---------------------------------------------------------------------- |
---|
| 1407 | |
---|
| 1408 | ! ---------------------------------------------------------------------- |
---|
| 1409 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU BOTTOM LAYER. |
---|
| 1410 | ! ---------------------------------------------------------------------- |
---|
| 1411 | CALL TDFCND (DF1N,SMC (K),QUARTZ,SMCMAX,SH2O (K)) |
---|
| 1412 | |
---|
| 1413 | |
---|
| 1414 | !urban |
---|
| 1415 | IF(VEGTYP==1) DF1N = 3.24 |
---|
| 1416 | |
---|
| 1417 | DENOM = .5 * (ZSOIL (K -1) + ZSOIL (K)) - ZBOT |
---|
| 1418 | |
---|
| 1419 | ! ---------------------------------------------------------------------- |
---|
| 1420 | ! SET MATRIX COEF, CI TO ZERO IF BOTTOM LAYER. |
---|
| 1421 | ! ---------------------------------------------------------------------- |
---|
| 1422 | DTSDZ2 = (STC (K) - TBOT) / DENOM |
---|
| 1423 | |
---|
| 1424 | ! ---------------------------------------------------------------------- |
---|
| 1425 | ! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): CALCULATE |
---|
| 1426 | ! TEMP AT BOTTOM OF LAST LAYER. |
---|
| 1427 | ! ---------------------------------------------------------------------- |
---|
| 1428 | CI (K) = 0. |
---|
| 1429 | IF (ITAVG) THEN |
---|
| 1430 | CALL TBND (STC (K),TBOT,ZSOIL,ZBOT,K,NSOIL,TBK1) |
---|
| 1431 | END IF |
---|
| 1432 | ! ---------------------------------------------------------------------- |
---|
| 1433 | ! THIS ENDS SPECIAL LOOP FOR BOTTOM LAYER. |
---|
| 1434 | END IF |
---|
| 1435 | ! ---------------------------------------------------------------------- |
---|
| 1436 | ! CALCULATE RHSTS FOR THIS LAYER AFTER CALC'NG A PARTIAL PRODUCT. |
---|
| 1437 | ! ---------------------------------------------------------------------- |
---|
| 1438 | DENOM = ( ZSOIL (K) - ZSOIL (K -1) ) * HCPCT |
---|
| 1439 | RHSTS (K) = ( DF1N * DTSDZ2- DF1K * DTSDZ ) / DENOM |
---|
| 1440 | QTOT = -1.0* DENOM * RHSTS (K) |
---|
| 1441 | |
---|
| 1442 | SICE = SMC (K) - SH2O (K) |
---|
| 1443 | IF (ITAVG) THEN |
---|
| 1444 | CALL TMPAVG (TAVG,TBK,STC (K),TBK1,ZSOIL,NSOIL,K) |
---|
| 1445 | ! TSNSR = SNKSRC(TAVG,SMC(K),SH2O(K),ZSOIL,NSOIL, |
---|
| 1446 | IF ( (SICE > 0.) .OR. (STC (K) < T0) .OR. & |
---|
| 1447 | (TBK .lt. T0) .OR. (TBK1 .lt. T0) ) THEN |
---|
| 1448 | CALL SNKSRC (TSNSR,TAVG,SMC (K),SH2O (K),ZSOIL,NSOIL, & |
---|
| 1449 | SMCMAX,PSISAT,BEXP,DT,K,QTOT) |
---|
| 1450 | RHSTS (K) = RHSTS (K) - TSNSR / DENOM |
---|
| 1451 | END IF |
---|
| 1452 | ELSE |
---|
| 1453 | ! TSNSR = SNKSRC(STC(K),SMC(K),SH2O(K),ZSOIL,NSOIL, |
---|
| 1454 | IF ( (SICE > 0.) .OR. (STC (K) < T0) ) THEN |
---|
| 1455 | CALL SNKSRC (TSNSR,STC (K),SMC (K),SH2O (K),ZSOIL,NSOIL, & |
---|
| 1456 | SMCMAX,PSISAT,BEXP,DT,K,QTOT) |
---|
| 1457 | RHSTS (K) = RHSTS (K) - TSNSR / DENOM |
---|
| 1458 | END IF |
---|
| 1459 | END IF |
---|
| 1460 | |
---|
| 1461 | ! ---------------------------------------------------------------------- |
---|
| 1462 | ! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER. |
---|
| 1463 | ! ---------------------------------------------------------------------- |
---|
| 1464 | AI (K) = - DF1K * DDZ / ( (ZSOIL (K -1) - ZSOIL (K)) * HCPCT) |
---|
| 1465 | |
---|
| 1466 | ! ---------------------------------------------------------------------- |
---|
| 1467 | ! RESET VALUES OF DF1, DTSDZ, DDZ, AND TBK FOR LOOP TO NEXT SOIL LAYER. |
---|
| 1468 | ! ---------------------------------------------------------------------- |
---|
| 1469 | BI (K) = - (AI (K) + CI (K)) |
---|
| 1470 | TBK = TBK1 |
---|
| 1471 | DF1K = DF1N |
---|
| 1472 | DTSDZ = DTSDZ2 |
---|
| 1473 | DDZ = DDZ2 |
---|
| 1474 | END DO |
---|
| 1475 | ! ---------------------------------------------------------------------- |
---|
| 1476 | END SUBROUTINE HRT |
---|
| 1477 | ! ---------------------------------------------------------------------- |
---|
| 1478 | |
---|
| 1479 | SUBROUTINE HRTICE (RHSTS,STC,NSOIL,ZSOIL,YY,ZZ1,DF1,AI,BI,CI) |
---|
| 1480 | |
---|
| 1481 | ! ---------------------------------------------------------------------- |
---|
| 1482 | ! SUBROUTINE HRTICE |
---|
| 1483 | ! ---------------------------------------------------------------------- |
---|
| 1484 | ! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL |
---|
| 1485 | ! THERMAL DIFFUSION EQUATION IN THE CASE OF SEA-ICE PACK. ALSO TO |
---|
| 1486 | ! COMPUTE (PREPARE) THE MATRIX COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX |
---|
| 1487 | ! OF THE IMPLICIT TIME SCHEME. |
---|
| 1488 | ! ---------------------------------------------------------------------- |
---|
| 1489 | IMPLICIT NONE |
---|
| 1490 | |
---|
| 1491 | |
---|
| 1492 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 1493 | INTEGER :: K |
---|
| 1494 | |
---|
| 1495 | REAL, INTENT(IN) :: DF1,YY,ZZ1 |
---|
| 1496 | REAL, DIMENSION(1:NSOIL), INTENT(OUT):: AI, BI,CI |
---|
| 1497 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: STC, ZSOIL |
---|
| 1498 | REAL, DIMENSION(1:NSOIL), INTENT(OUT):: RHSTS |
---|
| 1499 | REAL :: DDZ,DDZ2,DENOM,DTSDZ,DTSDZ2,SSOIL, & |
---|
| 1500 | ZBOT,TBOT |
---|
| 1501 | REAL, PARAMETER :: HCPCT = 1.72396E+6 |
---|
| 1502 | |
---|
| 1503 | ! ---------------------------------------------------------------------- |
---|
| 1504 | ! SET A NOMINAL UNIVERSAL VALUE OF THE SEA-ICE SPECIFIC HEAT CAPACITY, |
---|
| 1505 | ! HCPCT = 1880.0*917.0. |
---|
| 1506 | ! ---------------------------------------------------------------------- |
---|
| 1507 | DATA TBOT /271.16/ |
---|
| 1508 | |
---|
| 1509 | ! ---------------------------------------------------------------------- |
---|
| 1510 | ! THE INPUT ARGUMENT DF1 IS A UNIVERSALLY CONSTANT VALUE OF SEA-ICE |
---|
| 1511 | ! THERMAL DIFFUSIVITY, SET IN ROUTINE SNOPAC AS DF1 = 2.2. |
---|
| 1512 | ! ---------------------------------------------------------------------- |
---|
| 1513 | ! SET ICE PACK DEPTH. USE TBOT AS ICE PACK LOWER BOUNDARY TEMPERATURE |
---|
| 1514 | ! (THAT OF UNFROZEN SEA WATER AT BOTTOM OF SEA ICE PACK). ASSUME ICE |
---|
| 1515 | ! PACK IS OF N=NSOIL LAYERS SPANNING A UNIFORM CONSTANT ICE PACK |
---|
| 1516 | ! THICKNESS AS DEFINED BY ZSOIL(NSOIL) IN ROUTINE SFLX. |
---|
| 1517 | ! ---------------------------------------------------------------------- |
---|
| 1518 | ! ---------------------------------------------------------------------- |
---|
| 1519 | ! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER |
---|
| 1520 | ! ---------------------------------------------------------------------- |
---|
| 1521 | ZBOT = ZSOIL (NSOIL) |
---|
| 1522 | DDZ = 1.0 / ( -0.5 * ZSOIL (2) ) |
---|
| 1523 | AI (1) = 0.0 |
---|
| 1524 | CI (1) = (DF1 * DDZ) / (ZSOIL (1) * HCPCT) |
---|
| 1525 | |
---|
| 1526 | ! ---------------------------------------------------------------------- |
---|
| 1527 | ! CALC THE VERTICAL SOIL TEMP GRADIENT BTWN THE TOP AND 2ND SOIL LAYERS. |
---|
| 1528 | ! RECALC/ADJUST THE SOIL HEAT FLUX. USE THE GRADIENT AND FLUX TO CALC |
---|
| 1529 | ! RHSTS FOR THE TOP SOIL LAYER. |
---|
| 1530 | ! ---------------------------------------------------------------------- |
---|
| 1531 | BI (1) = - CI (1) + DF1/ (0.5 * ZSOIL (1) * ZSOIL (1) * HCPCT * & |
---|
| 1532 | ZZ1) |
---|
| 1533 | DTSDZ = ( STC (1) - STC (2) ) / ( -0.5 * ZSOIL (2) ) |
---|
| 1534 | SSOIL = DF1 * ( STC (1) - YY ) / ( 0.5 * ZSOIL (1) * ZZ1 ) |
---|
| 1535 | |
---|
| 1536 | ! ---------------------------------------------------------------------- |
---|
| 1537 | ! INITIALIZE DDZ2 |
---|
| 1538 | ! ---------------------------------------------------------------------- |
---|
| 1539 | RHSTS (1) = ( DF1 * DTSDZ - SSOIL ) / ( ZSOIL (1) * HCPCT ) |
---|
| 1540 | |
---|
| 1541 | ! ---------------------------------------------------------------------- |
---|
| 1542 | ! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABOVE PROCESS |
---|
| 1543 | ! ---------------------------------------------------------------------- |
---|
| 1544 | DDZ2 = 0.0 |
---|
| 1545 | DO K = 2,NSOIL |
---|
| 1546 | |
---|
| 1547 | ! ---------------------------------------------------------------------- |
---|
| 1548 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THIS LAYER. |
---|
| 1549 | ! ---------------------------------------------------------------------- |
---|
| 1550 | IF (K /= NSOIL) THEN |
---|
| 1551 | DENOM = 0.5 * ( ZSOIL (K -1) - ZSOIL (K +1) ) |
---|
| 1552 | |
---|
| 1553 | ! ---------------------------------------------------------------------- |
---|
| 1554 | ! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT. |
---|
| 1555 | ! ---------------------------------------------------------------------- |
---|
| 1556 | DTSDZ2 = ( STC (K) - STC (K +1) ) / DENOM |
---|
| 1557 | DDZ2 = 2. / (ZSOIL (K -1) - ZSOIL (K +1)) |
---|
| 1558 | CI (K) = - DF1 * DDZ2 / ( (ZSOIL (K -1) - ZSOIL (K))*HCPCT) |
---|
| 1559 | |
---|
| 1560 | ! ---------------------------------------------------------------------- |
---|
| 1561 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THE LOWEST LAYER. |
---|
| 1562 | ! ---------------------------------------------------------------------- |
---|
| 1563 | ELSE |
---|
| 1564 | |
---|
| 1565 | ! ---------------------------------------------------------------------- |
---|
| 1566 | ! SET MATRIX COEF, CI TO ZERO. |
---|
| 1567 | ! ---------------------------------------------------------------------- |
---|
| 1568 | DTSDZ2 = (STC (K) - TBOT)/ (.5 * (ZSOIL (K -1) + ZSOIL (K)) & |
---|
| 1569 | - ZBOT) |
---|
| 1570 | CI (K) = 0. |
---|
| 1571 | ! ---------------------------------------------------------------------- |
---|
| 1572 | ! CALC RHSTS FOR THIS LAYER AFTER CALC'NG A PARTIAL PRODUCT. |
---|
| 1573 | ! ---------------------------------------------------------------------- |
---|
| 1574 | END IF |
---|
| 1575 | DENOM = ( ZSOIL (K) - ZSOIL (K -1) ) * HCPCT |
---|
| 1576 | |
---|
| 1577 | ! ---------------------------------------------------------------------- |
---|
| 1578 | ! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER. |
---|
| 1579 | ! ---------------------------------------------------------------------- |
---|
| 1580 | RHSTS (K) = ( DF1 * DTSDZ2- DF1 * DTSDZ ) / DENOM |
---|
| 1581 | AI (K) = - DF1 * DDZ / ( (ZSOIL (K -1) - ZSOIL (K)) * HCPCT) |
---|
| 1582 | |
---|
| 1583 | ! ---------------------------------------------------------------------- |
---|
| 1584 | ! RESET VALUES OF DTSDZ AND DDZ FOR LOOP TO NEXT SOIL LYR. |
---|
| 1585 | ! ---------------------------------------------------------------------- |
---|
| 1586 | BI (K) = - (AI (K) + CI (K)) |
---|
| 1587 | DTSDZ = DTSDZ2 |
---|
| 1588 | DDZ = DDZ2 |
---|
| 1589 | END DO |
---|
| 1590 | ! ---------------------------------------------------------------------- |
---|
| 1591 | END SUBROUTINE HRTICE |
---|
| 1592 | ! ---------------------------------------------------------------------- |
---|
| 1593 | |
---|
| 1594 | SUBROUTINE HSTEP (STCOUT,STCIN,RHSTS,DT,NSOIL,AI,BI,CI) |
---|
| 1595 | |
---|
| 1596 | ! ---------------------------------------------------------------------- |
---|
| 1597 | ! SUBROUTINE HSTEP |
---|
| 1598 | ! ---------------------------------------------------------------------- |
---|
| 1599 | ! CALCULATE/UPDATE THE SOIL TEMPERATURE FIELD. |
---|
| 1600 | ! ---------------------------------------------------------------------- |
---|
| 1601 | IMPLICIT NONE |
---|
| 1602 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 1603 | INTEGER :: K |
---|
| 1604 | |
---|
| 1605 | REAL, DIMENSION(1:NSOIL), INTENT(IN):: STCIN |
---|
| 1606 | REAL, DIMENSION(1:NSOIL), INTENT(OUT):: STCOUT |
---|
| 1607 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: RHSTS |
---|
| 1608 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: AI,BI,CI |
---|
| 1609 | REAL, DIMENSION(1:NSOIL) :: RHSTSin |
---|
| 1610 | REAL, DIMENSION(1:NSOIL) :: CIin |
---|
| 1611 | REAL :: DT |
---|
| 1612 | |
---|
| 1613 | ! ---------------------------------------------------------------------- |
---|
| 1614 | ! CREATE FINITE DIFFERENCE VALUES FOR USE IN ROSR12 ROUTINE |
---|
| 1615 | ! ---------------------------------------------------------------------- |
---|
| 1616 | DO K = 1,NSOIL |
---|
| 1617 | RHSTS (K) = RHSTS (K) * DT |
---|
| 1618 | AI (K) = AI (K) * DT |
---|
| 1619 | BI (K) = 1. + BI (K) * DT |
---|
| 1620 | CI (K) = CI (K) * DT |
---|
| 1621 | END DO |
---|
| 1622 | ! ---------------------------------------------------------------------- |
---|
| 1623 | ! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 |
---|
| 1624 | ! ---------------------------------------------------------------------- |
---|
| 1625 | DO K = 1,NSOIL |
---|
| 1626 | RHSTSin (K) = RHSTS (K) |
---|
| 1627 | END DO |
---|
| 1628 | DO K = 1,NSOIL |
---|
| 1629 | CIin (K) = CI (K) |
---|
| 1630 | END DO |
---|
| 1631 | ! ---------------------------------------------------------------------- |
---|
| 1632 | ! SOLVE THE TRI-DIAGONAL MATRIX EQUATION |
---|
| 1633 | ! ---------------------------------------------------------------------- |
---|
| 1634 | CALL ROSR12 (CI,AI,BI,CIin,RHSTSin,RHSTS,NSOIL) |
---|
| 1635 | ! ---------------------------------------------------------------------- |
---|
| 1636 | ! CALC/UPDATE THE SOIL TEMPS USING MATRIX SOLUTION |
---|
| 1637 | ! ---------------------------------------------------------------------- |
---|
| 1638 | DO K = 1,NSOIL |
---|
| 1639 | STCOUT (K) = STCIN (K) + CI (K) |
---|
| 1640 | END DO |
---|
| 1641 | ! ---------------------------------------------------------------------- |
---|
| 1642 | END SUBROUTINE HSTEP |
---|
| 1643 | ! ---------------------------------------------------------------------- |
---|
| 1644 | |
---|
| 1645 | SUBROUTINE NOPAC (ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, & |
---|
| 1646 | SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT,SHDFAC, & |
---|
| 1647 | SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,EMISSI, & |
---|
| 1648 | SSOIL, & |
---|
| 1649 | STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, & |
---|
| 1650 | SH2O,SLOPE,KDT,FRZFACT,PSISAT,ZSOIL, & |
---|
| 1651 | DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, & |
---|
| 1652 | RUNOFF3,EDIR,EC,ET,ETT,NROOT,ICE,RTDIS, & |
---|
| 1653 | QUARTZ,FXEXP,CSOIL, & |
---|
| 1654 | BETA,DRIP,DEW,FLX1,FLX3,VEGTYP) |
---|
| 1655 | |
---|
| 1656 | ! ---------------------------------------------------------------------- |
---|
| 1657 | ! SUBROUTINE NOPAC |
---|
| 1658 | ! ---------------------------------------------------------------------- |
---|
| 1659 | ! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES AND UPDATE SOIL MOISTURE |
---|
| 1660 | ! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN NO SNOW PACK IS |
---|
| 1661 | ! PRESENT. |
---|
| 1662 | ! ---------------------------------------------------------------------- |
---|
| 1663 | IMPLICIT NONE |
---|
| 1664 | |
---|
| 1665 | INTEGER, INTENT(IN) :: ICE, NROOT,NSOIL,VEGTYP |
---|
| 1666 | INTEGER :: K |
---|
| 1667 | |
---|
| 1668 | REAL, INTENT(IN) :: BEXP,CFACTR, CMCMAX,CSOIL,DKSAT,DT,DWSAT, & |
---|
| 1669 | EPSCA,ETP,FDOWN,F1,FXEXP,FRZFACT,KDT,PC, & |
---|
| 1670 | PRCP,PSISAT,Q2,QUARTZ,RCH,RR,SBETA,SFCTMP,& |
---|
| 1671 | SHDFAC,SLOPE,SMCDRY,SMCMAX,SMCREF,SMCWLT, & |
---|
| 1672 | T24,TBOT,TH2,ZBOT,EMISSI |
---|
| 1673 | REAL, INTENT(INOUT) :: CMC,BETA,T1 |
---|
| 1674 | REAL, INTENT(OUT) :: DEW,DRIP,EC,EDIR,ETA,ETT,FLX1,FLX3, & |
---|
| 1675 | RUNOFF1,RUNOFF2,RUNOFF3,SSOIL |
---|
| 1676 | REAL, DIMENSION(1:NSOIL),INTENT(IN) :: RTDIS,ZSOIL |
---|
| 1677 | REAL, DIMENSION(1:NSOIL),INTENT(OUT) :: ET |
---|
| 1678 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SMC,SH2O,STC |
---|
| 1679 | REAL, DIMENSION(1:NSOIL) :: ET1 |
---|
| 1680 | REAL :: EC1,EDIR1,ETT1,DF1,ETA1,ETP1,PRCP1,YY, & |
---|
| 1681 | YYNUM,ZZ1 |
---|
| 1682 | |
---|
| 1683 | ! ---------------------------------------------------------------------- |
---|
| 1684 | ! EXECUTABLE CODE BEGINS HERE: |
---|
| 1685 | ! CONVERT ETP Fnd PRCP FROM KG M-2 S-1 TO M S-1 AND INITIALIZE DEW. |
---|
| 1686 | ! ---------------------------------------------------------------------- |
---|
| 1687 | PRCP1 = PRCP * 0.001 |
---|
| 1688 | ETP1 = ETP * 0.001 |
---|
| 1689 | DEW = 0.0 |
---|
| 1690 | ! ---------------------------------------------------------------------- |
---|
| 1691 | ! INITIALIZE EVAP TERMS. |
---|
| 1692 | ! ---------------------------------------------------------------------- |
---|
| 1693 | EDIR = 0. |
---|
| 1694 | EDIR1 = 0. |
---|
| 1695 | EC1 = 0. |
---|
| 1696 | EC = 0. |
---|
| 1697 | DO K = 1,NSOIL |
---|
| 1698 | ET(K) = 0. |
---|
| 1699 | ET1(K) = 0. |
---|
| 1700 | END DO |
---|
| 1701 | ETT = 0. |
---|
| 1702 | ETT1 = 0. |
---|
| 1703 | |
---|
| 1704 | IF (ETP > 0.0) THEN |
---|
| 1705 | CALL EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & |
---|
| 1706 | SH2O, & |
---|
| 1707 | SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & |
---|
| 1708 | SMCREF,SHDFAC,CMCMAX, & |
---|
| 1709 | SMCDRY,CFACTR, & |
---|
| 1710 | EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
| 1711 | CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
| 1712 | SH2O,SLOPE,KDT,FRZFACT, & |
---|
| 1713 | SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
| 1714 | SHDFAC,CMCMAX, & |
---|
| 1715 | RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
| 1716 | EDIR1,EC1,ET1, & |
---|
| 1717 | DRIP) |
---|
| 1718 | |
---|
| 1719 | ! ---------------------------------------------------------------------- |
---|
| 1720 | ! CONVERT MODELED EVAPOTRANSPIRATION FROM M S-1 TO KG M-2 S-1. |
---|
| 1721 | ! ---------------------------------------------------------------------- |
---|
| 1722 | |
---|
| 1723 | ETA = ETA1 * 1000.0 |
---|
| 1724 | |
---|
| 1725 | ! ---------------------------------------------------------------------- |
---|
| 1726 | ! IF ETP < 0, ASSUME DEW FORMS (TRANSFORM ETP1 INTO DEW AND REINITIALIZE |
---|
| 1727 | ! ETP1 TO ZERO). |
---|
| 1728 | ! ---------------------------------------------------------------------- |
---|
| 1729 | ELSE |
---|
| 1730 | DEW = - ETP1 |
---|
| 1731 | |
---|
| 1732 | ! ---------------------------------------------------------------------- |
---|
| 1733 | ! CONVERT PRCP FROM 'KG M-2 S-1' TO 'M S-1' AND ADD DEW AMOUNT. |
---|
| 1734 | ! ---------------------------------------------------------------------- |
---|
| 1735 | |
---|
| 1736 | PRCP1 = PRCP1+ DEW |
---|
| 1737 | CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
| 1738 | SH2O,SLOPE,KDT,FRZFACT, & |
---|
| 1739 | SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
| 1740 | SHDFAC,CMCMAX, & |
---|
| 1741 | RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
| 1742 | EDIR1,EC1,ET1, & |
---|
| 1743 | DRIP) |
---|
| 1744 | |
---|
| 1745 | ! ---------------------------------------------------------------------- |
---|
| 1746 | ! CONVERT MODELED EVAPOTRANSPIRATION FROM 'M S-1' TO 'KG M-2 S-1'. |
---|
| 1747 | ! ---------------------------------------------------------------------- |
---|
| 1748 | ! ETA = ETA1 * 1000.0 |
---|
| 1749 | END IF |
---|
| 1750 | |
---|
| 1751 | ! ---------------------------------------------------------------------- |
---|
| 1752 | ! BASED ON ETP AND E VALUES, DETERMINE BETA |
---|
| 1753 | ! ---------------------------------------------------------------------- |
---|
| 1754 | |
---|
| 1755 | IF ( ETP <= 0.0 ) THEN |
---|
| 1756 | BETA = 0.0 |
---|
| 1757 | ETA = ETP |
---|
| 1758 | IF ( ETP < 0.0 ) THEN |
---|
| 1759 | BETA = 1.0 |
---|
| 1760 | END IF |
---|
| 1761 | ELSE |
---|
| 1762 | BETA = ETA / ETP |
---|
| 1763 | END IF |
---|
| 1764 | |
---|
| 1765 | ! ---------------------------------------------------------------------- |
---|
| 1766 | ! CONVERT MODELED EVAPOTRANSPIRATION COMPONENTS 'M S-1' TO 'KG M-2 S-1'. |
---|
| 1767 | ! ---------------------------------------------------------------------- |
---|
| 1768 | EDIR = EDIR1*1000. |
---|
| 1769 | EC = EC1*1000. |
---|
| 1770 | DO K = 1,NSOIL |
---|
| 1771 | ET(K) = ET1(K)*1000. |
---|
| 1772 | END DO |
---|
| 1773 | ETT = ETT1*1000. |
---|
| 1774 | |
---|
| 1775 | ! ---------------------------------------------------------------------- |
---|
| 1776 | ! GET SOIL THERMAL DIFFUXIVITY/CONDUCTIVITY FOR TOP SOIL LYR, |
---|
| 1777 | ! CALC. ADJUSTED TOP LYR SOIL TEMP AND ADJUSTED SOIL FLUX, THEN |
---|
| 1778 | ! CALL SHFLX TO COMPUTE/UPDATE SOIL HEAT FLUX AND SOIL TEMPS. |
---|
| 1779 | ! ---------------------------------------------------------------------- |
---|
| 1780 | |
---|
| 1781 | CALL TDFCND (DF1,SMC (1),QUARTZ,SMCMAX,SH2O (1)) |
---|
| 1782 | |
---|
| 1783 | !urban |
---|
| 1784 | IF (VEGTYP==1) DF1=3.24 |
---|
| 1785 | ! |
---|
| 1786 | |
---|
| 1787 | ! ---------------------------------------------------------------------- |
---|
| 1788 | ! VEGETATION GREENNESS FRACTION REDUCTION IN SUBSURFACE HEAT FLUX |
---|
| 1789 | ! VIA REDUCTION FACTOR, WHICH IS CONVENIENT TO APPLY HERE TO THERMAL |
---|
| 1790 | ! DIFFUSIVITY THAT IS LATER USED IN HRT TO COMPUTE SUB SFC HEAT FLUX |
---|
| 1791 | ! (SEE ADDITIONAL COMMENTS ON VEG EFFECT SUB-SFC HEAT FLX IN |
---|
| 1792 | ! ROUTINE SFLX) |
---|
| 1793 | ! ---------------------------------------------------------------------- |
---|
| 1794 | DF1 = DF1 * EXP (SBETA * SHDFAC) |
---|
| 1795 | ! ---------------------------------------------------------------------- |
---|
| 1796 | ! COMPUTE INTERMEDIATE TERMS PASSED TO ROUTINE HRT (VIA ROUTINE |
---|
| 1797 | ! SHFLX BELOW) FOR USE IN COMPUTING SUBSURFACE HEAT FLUX IN HRT |
---|
| 1798 | ! ---------------------------------------------------------------------- |
---|
| 1799 | YYNUM = FDOWN - EMISSI*SIGMA * T24 |
---|
| 1800 | YY = SFCTMP + (YYNUM / RCH + TH2- SFCTMP - BETA * EPSCA) / RR |
---|
| 1801 | |
---|
| 1802 | ZZ1 = DF1 / ( -0.5 * ZSOIL (1) * RCH * RR ) + 1.0 |
---|
| 1803 | |
---|
| 1804 | !urban |
---|
| 1805 | CALL SHFLX (SSOIL,STC,SMC,SMCMAX,NSOIL,T1,DT,YY,ZZ1,ZSOIL, & |
---|
| 1806 | TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1,ICE, & |
---|
| 1807 | QUARTZ,CSOIL,VEGTYP) |
---|
| 1808 | |
---|
| 1809 | ! ---------------------------------------------------------------------- |
---|
| 1810 | ! SET FLX1 AND FLX3 (SNOPACK PHASE CHANGE HEAT FLUXES) TO ZERO SINCE |
---|
| 1811 | ! THEY ARE NOT USED HERE IN SNOPAC. FLX2 (FREEZING RAIN HEAT FLUX) WAS |
---|
| 1812 | ! SIMILARLY INITIALIZED IN THE PENMAN ROUTINE. |
---|
| 1813 | ! ---------------------------------------------------------------------- |
---|
| 1814 | FLX1 = 0.0 |
---|
| 1815 | FLX3 = 0.0 |
---|
| 1816 | |
---|
| 1817 | ! ---------------------------------------------------------------------- |
---|
| 1818 | END SUBROUTINE NOPAC |
---|
| 1819 | ! ---------------------------------------------------------------------- |
---|
| 1820 | |
---|
| 1821 | SUBROUTINE PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, & |
---|
| 1822 | & Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, & |
---|
| 1823 | & DQSDT2,FLX2,EMISSI_IN,SNEQV) |
---|
| 1824 | |
---|
| 1825 | ! ---------------------------------------------------------------------- |
---|
| 1826 | ! SUBROUTINE PENMAN |
---|
| 1827 | ! ---------------------------------------------------------------------- |
---|
| 1828 | ! CALCULATE POTENTIAL EVAPORATION FOR THE CURRENT POINT. VARIOUS |
---|
| 1829 | ! PARTIAL SUMS/PRODUCTS ARE ALSO CALCULATED AND PASSED BACK TO THE |
---|
| 1830 | ! CALLING ROUTINE FOR LATER USE. |
---|
| 1831 | ! ---------------------------------------------------------------------- |
---|
| 1832 | IMPLICIT NONE |
---|
| 1833 | LOGICAL, INTENT(IN) :: SNOWNG, FRZGRA |
---|
| 1834 | REAL, INTENT(IN) :: CH, DQSDT2,FDOWN,PRCP, & |
---|
| 1835 | Q2, Q2SAT,SSOIL, SFCPRS, SFCTMP, & |
---|
| 1836 | T2V, TH2,EMISSI_IN,SNEQV |
---|
| 1837 | REAL, INTENT(OUT) :: EPSCA,ETP,FLX2,RCH,RR,T24 |
---|
| 1838 | REAL :: A, DELTA, FNET,RAD,RHO,EMISSI,ELCP1,LVS |
---|
| 1839 | |
---|
| 1840 | REAL, PARAMETER :: ELCP = 2.4888E+3, LSUBC = 2.501000E+6,CP = 1004.6 |
---|
| 1841 | REAL, PARAMETER :: LSUBS = 2.83E+6 |
---|
| 1842 | |
---|
| 1843 | ! ---------------------------------------------------------------------- |
---|
| 1844 | ! EXECUTABLE CODE BEGINS HERE: |
---|
| 1845 | ! ---------------------------------------------------------------------- |
---|
| 1846 | ! ---------------------------------------------------------------------- |
---|
| 1847 | ! PREPARE PARTIAL QUANTITIES FOR PENMAN EQUATION. |
---|
| 1848 | ! ---------------------------------------------------------------------- |
---|
| 1849 | EMISSI=EMISSI_IN |
---|
| 1850 | IF(SNEQV == 0.)THEN |
---|
| 1851 | ELCP1=ELCP |
---|
| 1852 | LVS=LSUBC |
---|
| 1853 | ELSE |
---|
| 1854 | ! EMISSI=EMISSI_S ! FOR SNOW |
---|
| 1855 | ELCP1=ELCP*LSUBS/LSUBC |
---|
| 1856 | LVS=LSUBS |
---|
| 1857 | ENDIF |
---|
| 1858 | |
---|
| 1859 | FLX2 = 0.0 |
---|
| 1860 | ! DELTA = ELCP * DQSDT2 |
---|
| 1861 | DELTA = ELCP1 * DQSDT2 |
---|
| 1862 | T24 = SFCTMP * SFCTMP * SFCTMP * SFCTMP |
---|
| 1863 | ! RR = T24 * 6.48E-8 / (SFCPRS * CH) + 1.0 |
---|
| 1864 | RR = EMISSI*T24 * 6.48E-8 / (SFCPRS * CH) + 1.0 |
---|
| 1865 | RHO = SFCPRS / (RD * T2V) |
---|
| 1866 | |
---|
| 1867 | ! ---------------------------------------------------------------------- |
---|
| 1868 | ! ADJUST THE PARTIAL SUMS / PRODUCTS WITH THE LATENT HEAT |
---|
| 1869 | ! EFFECTS CAUSED BY FALLING PRECIPITATION. |
---|
| 1870 | ! ---------------------------------------------------------------------- |
---|
| 1871 | RCH = RHO * CP * CH |
---|
| 1872 | IF (.NOT. SNOWNG) THEN |
---|
| 1873 | IF (PRCP > 0.0) RR = RR + CPH2O * PRCP / RCH |
---|
| 1874 | ELSE |
---|
| 1875 | RR = RR + CPICE * PRCP / RCH |
---|
| 1876 | END IF |
---|
| 1877 | |
---|
| 1878 | ! ---------------------------------------------------------------------- |
---|
| 1879 | ! INCLUDE THE LATENT HEAT EFFECTS OF FRZNG RAIN CONVERTING TO ICE ON |
---|
| 1880 | ! IMPACT IN THE CALCULATION OF FLX2 AND FNET. |
---|
| 1881 | ! ---------------------------------------------------------------------- |
---|
| 1882 | ! FNET = FDOWN - SIGMA * T24- SSOIL |
---|
| 1883 | FNET = FDOWN - EMISSI*SIGMA * T24- SSOIL |
---|
| 1884 | IF (FRZGRA) THEN |
---|
| 1885 | FLX2 = - LSUBF * PRCP |
---|
| 1886 | FNET = FNET - FLX2 |
---|
| 1887 | ! ---------------------------------------------------------------------- |
---|
| 1888 | ! FINISH PENMAN EQUATION CALCULATIONS. |
---|
| 1889 | ! ---------------------------------------------------------------------- |
---|
| 1890 | END IF |
---|
| 1891 | RAD = FNET / RCH + TH2- SFCTMP |
---|
| 1892 | ! A = ELCP * (Q2SAT - Q2) |
---|
| 1893 | A = ELCP1 * (Q2SAT - Q2) |
---|
| 1894 | EPSCA = (A * RR + RAD * DELTA) / (DELTA + RR) |
---|
| 1895 | ! ETP = EPSCA * RCH / LSUBC |
---|
| 1896 | ETP = EPSCA * RCH / LVS |
---|
| 1897 | |
---|
| 1898 | ! ---------------------------------------------------------------------- |
---|
| 1899 | END SUBROUTINE PENMAN |
---|
| 1900 | ! ---------------------------------------------------------------------- |
---|
| 1901 | |
---|
| 1902 | SUBROUTINE REDPRM (VEGTYP,SOILTYP,SLOPETYP,CFACTR,CMCMAX,RSMAX, & |
---|
| 1903 | TOPT, & |
---|
| 1904 | REFKDT,KDT,SBETA, SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX, & |
---|
| 1905 | PSISAT,SLOPE,SNUP,SALP,BEXP,DKSAT,DWSAT, & |
---|
| 1906 | SMCMAX,SMCWLT,SMCREF,SMCDRY,F1,QUARTZ,FXEXP, & |
---|
| 1907 | RTDIS,SLDPTH,ZSOIL, NROOT,NSOIL,Z0BRD,CZIL,LAI, & |
---|
| 1908 | CSOIL,ALBBRD,PTU,LLANDUSE,LSOIL,LOCAL) |
---|
| 1909 | |
---|
| 1910 | IMPLICIT NONE |
---|
| 1911 | ! ---------------------------------------------------------------------- |
---|
| 1912 | ! Internally set (default valuess) |
---|
| 1913 | ! all soil and vegetation parameters required for the execusion oF |
---|
| 1914 | ! the Noah lsm are defined in VEGPARM.TBL, SOILPARM.TB, and GENPARM.TBL. |
---|
| 1915 | ! ---------------------------------------------------------------------- |
---|
| 1916 | ! Vegetation parameters: |
---|
| 1917 | ! ALBBRD: SFC background snow-free albedo |
---|
| 1918 | ! CMXTBL: MAX CNPY Capacity |
---|
| 1919 | ! Z0BRD: Background roughness length |
---|
| 1920 | ! SHDFAC: Green vegetation fraction |
---|
| 1921 | ! NROOT: Rooting depth |
---|
| 1922 | ! RSMIN: Mimimum stomatal resistance |
---|
| 1923 | ! RSMAX: Max. stomatal resistance |
---|
| 1924 | ! RGL: Parameters used in radiation stress function |
---|
| 1925 | ! HS: Parameter used in vapor pressure deficit functio |
---|
| 1926 | ! TOPT: Optimum transpiration air temperature. |
---|
| 1927 | ! CMCMAX: Maximum canopy water capacity |
---|
| 1928 | ! CFACTR: Parameter used in the canopy inteception calculation |
---|
| 1929 | ! SNUP: Threshold snow depth (in water equivalent m) that |
---|
| 1930 | ! implies 100 percent snow cover |
---|
| 1931 | ! LAI: Leaf area index |
---|
| 1932 | ! |
---|
| 1933 | ! ---------------------------------------------------------------------- |
---|
| 1934 | ! Soil parameters: |
---|
| 1935 | ! SMCMAX: MAX soil moisture content (porosity) |
---|
| 1936 | ! SMCREF: Reference soil moisture (field capacity) |
---|
| 1937 | ! SMCWLT: Wilting point soil moisture |
---|
| 1938 | ! SMCWLT: Air dry soil moist content limits |
---|
| 1939 | ! SSATPSI: SAT (saturation) soil potential |
---|
| 1940 | ! DKSAT: SAT soil conductivity |
---|
| 1941 | ! BEXP: B parameter |
---|
| 1942 | ! SSATDW: SAT soil diffusivity |
---|
| 1943 | ! F1: Soil thermal diffusivity/conductivity coef. |
---|
| 1944 | ! QUARTZ: Soil quartz content |
---|
| 1945 | ! Modified by F. Chen (12/22/97) to use the STATSGO soil map |
---|
| 1946 | ! Modified By F. Chen (01/22/00) to include PLaya, Lava, and White San |
---|
| 1947 | ! Modified By F. Chen (08/05/02) to include additional parameters for the Noah |
---|
| 1948 | ! NOTE: SATDW = BB*SATDK*(SATPSI/MAXSMC) |
---|
| 1949 | ! F11 = ALOG10(SATPSI) + BB*ALOG10(MAXSMC) + 2.0 |
---|
| 1950 | ! REFSMC1=MAXSMC*(5.79E-9/SATDK)**(1/(2*BB+3)) 5.79E-9 m/s= 0.5 mm |
---|
| 1951 | ! REFSMC=REFSMC1+1./3.(MAXSMC-REFSMC1) |
---|
| 1952 | ! WLTSMC1=MAXSMC*(200./SATPSI)**(-1./BB) (Wetzel and Chang, 198 |
---|
| 1953 | ! WLTSMC=WLTSMC1-0.5*WLTSMC1 |
---|
| 1954 | ! Note: the values for playa is set for it to have a thermal conductivit |
---|
| 1955 | ! as sand and to have a hydrulic conductivity as clay |
---|
| 1956 | ! |
---|
| 1957 | ! ---------------------------------------------------------------------- |
---|
| 1958 | ! Class parameter 'SLOPETYP' was included to estimate linear reservoir |
---|
| 1959 | ! coefficient 'SLOPE' to the baseflow runoff out of the bottom layer. |
---|
| 1960 | ! lowest class (slopetyp=0) means highest slope parameter = 1. |
---|
| 1961 | ! definition of slopetyp from 'zobler' slope type: |
---|
| 1962 | ! slope class percent slope |
---|
| 1963 | ! 1 0-8 |
---|
| 1964 | ! 2 8-30 |
---|
| 1965 | ! 3 > 30 |
---|
| 1966 | ! 4 0-30 |
---|
| 1967 | ! 5 0-8 & > 30 |
---|
| 1968 | ! 6 8-30 & > 30 |
---|
| 1969 | ! 7 0-8, 8-30, > 30 |
---|
| 1970 | ! 9 GLACIAL ICE |
---|
| 1971 | ! BLANK OCEAN/SEA |
---|
| 1972 | ! SLOPE_DATA: linear reservoir coefficient |
---|
| 1973 | ! SBETA_DATA: parameter used to caluculate vegetation effect on soil heat |
---|
| 1974 | ! FXEXP_DAT: soil evaporation exponent used in DEVAP |
---|
| 1975 | ! CSOIL_DATA: soil heat capacity [J M-3 K-1] |
---|
| 1976 | ! SALP_DATA: shape parameter of distribution function of snow cover |
---|
| 1977 | ! REFDK_DATA and REFKDT_DATA: parameters in the surface runoff parameteriz |
---|
| 1978 | ! FRZK_DATA: frozen ground parameter |
---|
| 1979 | ! ZBOT_DATA: depth[M] of lower boundary soil temperature |
---|
| 1980 | ! CZIL_DATA: calculate roughness length of heat |
---|
| 1981 | ! SMLOW_DATA and MHIGH_DATA: two soil moisture wilt, soil moisture referen |
---|
| 1982 | ! parameters |
---|
| 1983 | ! Set maximum number of soil-, veg-, and slopetyp in data statement. |
---|
| 1984 | ! ---------------------------------------------------------------------- |
---|
| 1985 | INTEGER, PARAMETER :: MAX_SLOPETYP=30,MAX_SOILTYP=30,MAX_VEGTYP=30 |
---|
| 1986 | LOGICAL :: LOCAL |
---|
| 1987 | CHARACTER (LEN=4), INTENT(IN):: LLANDUSE, LSOIL |
---|
| 1988 | |
---|
| 1989 | ! Veg parameters |
---|
| 1990 | INTEGER, INTENT(IN) :: VEGTYP |
---|
| 1991 | INTEGER, INTENT(OUT) :: NROOT |
---|
| 1992 | REAL, INTENT(OUT) :: HS,LAI,RSMIN,RGL,SHDFAC,SNUP,Z0BRD, & |
---|
| 1993 | CMCMAX,RSMAX,TOPT,ALBBRD |
---|
| 1994 | ! Soil parameters |
---|
| 1995 | INTEGER, INTENT(IN) :: SOILTYP |
---|
| 1996 | REAL, INTENT(OUT) :: BEXP,DKSAT,DWSAT,F1,QUARTZ,SMCDRY, & |
---|
| 1997 | SMCMAX,SMCREF,SMCWLT,PSISAT |
---|
| 1998 | ! General parameters |
---|
| 1999 | INTEGER, INTENT(IN) :: SLOPETYP,NSOIL |
---|
| 2000 | INTEGER :: I |
---|
| 2001 | |
---|
| 2002 | REAL, INTENT(OUT) :: SLOPE,CZIL,SBETA,FXEXP, & |
---|
| 2003 | CSOIL,SALP,FRZX,KDT,CFACTR, & |
---|
| 2004 | ZBOT,REFKDT,PTU |
---|
| 2005 | REAL,DIMENSION(1:NSOIL),INTENT(IN) :: SLDPTH,ZSOIL |
---|
| 2006 | REAL,DIMENSION(1:NSOIL),INTENT(OUT):: RTDIS |
---|
| 2007 | REAL :: FRZFACT,FRZK,REFDK |
---|
| 2008 | |
---|
| 2009 | ! SAVE |
---|
| 2010 | ! ---------------------------------------------------------------------- |
---|
| 2011 | ! |
---|
| 2012 | IF (SOILTYP .gt. SLCATS) THEN |
---|
| 2013 | CALL wrf_error_fatal ( 'Warning: too many input soil types' ) |
---|
| 2014 | END IF |
---|
| 2015 | IF (VEGTYP .gt. LUCATS) THEN |
---|
| 2016 | CALL wrf_error_fatal ( 'Warning: too many input landuse types' ) |
---|
| 2017 | END IF |
---|
| 2018 | IF (SLOPETYP .gt. SLPCATS) THEN |
---|
| 2019 | CALL wrf_error_fatal ( 'Warning: too many input slope types' ) |
---|
| 2020 | END IF |
---|
| 2021 | |
---|
| 2022 | ! ---------------------------------------------------------------------- |
---|
| 2023 | ! SET-UP SOIL PARAMETERS |
---|
| 2024 | ! ---------------------------------------------------------------------- |
---|
| 2025 | CSOIL = CSOIL_DATA |
---|
| 2026 | BEXP = BB (SOILTYP) |
---|
| 2027 | DKSAT = SATDK (SOILTYP) |
---|
| 2028 | DWSAT = SATDW (SOILTYP) |
---|
| 2029 | F1 = F11 (SOILTYP) |
---|
| 2030 | PSISAT = SATPSI (SOILTYP) |
---|
| 2031 | QUARTZ = QTZ (SOILTYP) |
---|
| 2032 | SMCDRY = DRYSMC (SOILTYP) |
---|
| 2033 | SMCMAX = MAXSMC (SOILTYP) |
---|
| 2034 | SMCREF = REFSMC (SOILTYP) |
---|
| 2035 | SMCWLT = WLTSMC (SOILTYP) |
---|
| 2036 | ! ---------------------------------------------------------------------- |
---|
| 2037 | ! Set-up universal parameters (not dependent on SOILTYP, VEGTYP or |
---|
| 2038 | ! SLOPETYP) |
---|
| 2039 | ! ---------------------------------------------------------------------- |
---|
| 2040 | ZBOT = ZBOT_DATA |
---|
| 2041 | SALP = SALP_DATA |
---|
| 2042 | SBETA = SBETA_DATA |
---|
| 2043 | REFDK = REFDK_DATA |
---|
| 2044 | FRZK = FRZK_DATA |
---|
| 2045 | FXEXP = FXEXP_DATA |
---|
| 2046 | REFKDT = REFKDT_DATA |
---|
| 2047 | PTU = 0. ! (not used yet) to satisify intent(out) |
---|
| 2048 | KDT = REFKDT * DKSAT / REFDK |
---|
| 2049 | CZIL = CZIL_DATA |
---|
| 2050 | SLOPE = SLOPE_DATA (SLOPETYP) |
---|
| 2051 | |
---|
| 2052 | ! ---------------------------------------------------------------------- |
---|
| 2053 | ! TO ADJUST FRZK PARAMETER TO ACTUAL SOIL TYPE: FRZK * FRZFACT |
---|
| 2054 | ! ---------------------------------------------------------------------- |
---|
| 2055 | FRZFACT = (SMCMAX / SMCREF) * (0.412 / 0.468) |
---|
| 2056 | FRZX = FRZK * FRZFACT |
---|
| 2057 | |
---|
| 2058 | ! ---------------------------------------------------------------------- |
---|
| 2059 | ! SET-UP VEGETATION PARAMETERS |
---|
| 2060 | ! ---------------------------------------------------------------------- |
---|
| 2061 | TOPT = TOPT_DATA |
---|
| 2062 | CMCMAX = CMCMAX_DATA |
---|
| 2063 | CFACTR = CFACTR_DATA |
---|
| 2064 | RSMAX = RSMAX_DATA |
---|
| 2065 | NROOT = NROTBL (VEGTYP) |
---|
| 2066 | SNUP = SNUPTBL (VEGTYP) |
---|
| 2067 | RSMIN = RSTBL (VEGTYP) |
---|
| 2068 | RGL = RGLTBL (VEGTYP) |
---|
| 2069 | HS = HSTBL (VEGTYP) |
---|
| 2070 | LAI = LAITBL (VEGTYP) |
---|
| 2071 | IF(LOCAL) THEN |
---|
| 2072 | ALBBRD = ALBTBL(VEGTYP) |
---|
| 2073 | Z0BRD = Z0TBL(VEGTYP) |
---|
| 2074 | SHDFAC = SHDTBL(VEGTYP) |
---|
| 2075 | ENDIF |
---|
| 2076 | |
---|
| 2077 | IF (VEGTYP .eq. BARE) SHDFAC = 0.0 |
---|
| 2078 | IF (NROOT .gt. NSOIL) THEN |
---|
| 2079 | WRITE (err_message,*) 'Error: too many root layers ', & |
---|
| 2080 | NSOIL,NROOT |
---|
| 2081 | CALL wrf_error_fatal ( err_message ) |
---|
| 2082 | ! ---------------------------------------------------------------------- |
---|
| 2083 | ! CALCULATE ROOT DISTRIBUTION. PRESENT VERSION ASSUMES UNIFORM |
---|
| 2084 | ! DISTRIBUTION BASED ON SOIL LAYER DEPTHS. |
---|
| 2085 | ! ---------------------------------------------------------------------- |
---|
| 2086 | END IF |
---|
| 2087 | DO I = 1,NROOT |
---|
| 2088 | RTDIS (I) = - SLDPTH (I)/ ZSOIL (NROOT) |
---|
| 2089 | ! ---------------------------------------------------------------------- |
---|
| 2090 | ! SET-UP SLOPE PARAMETER |
---|
| 2091 | ! ---------------------------------------------------------------------- |
---|
| 2092 | END DO |
---|
| 2093 | |
---|
| 2094 | ! print*,'end of PRMRED' |
---|
| 2095 | ! print*,'VEGTYP',VEGTYP,'SOILTYP',SOILTYP,'SLOPETYP',SLOPETYP, & |
---|
| 2096 | ! & 'CFACTR',CFACTR,'CMCMAX',CMCMAX,'RSMAX',RSMAX,'TOPT',TOPT, & |
---|
| 2097 | ! & 'REFKDT',REFKDT,'KDT',KDT,'SBETA',SBETA, 'SHDFAC',SHDFAC, & |
---|
| 2098 | ! & 'RSMIN',RSMIN,'RGL',RGL,'HS',HS,'ZBOT',ZBOT,'FRZX',FRZX, & |
---|
| 2099 | ! & 'PSISAT',PSISAT,'SLOPE',SLOPE,'SNUP',SNUP,'SALP',SALP,'BEXP', & |
---|
| 2100 | ! & BEXP, & |
---|
| 2101 | ! & 'DKSAT',DKSAT,'DWSAT',DWSAT, & |
---|
| 2102 | ! & 'SMCMAX',SMCMAX,'SMCWLT',SMCWLT,'SMCREF',SMCREF,'SMCDRY',SMCDRY, & |
---|
| 2103 | ! & 'F1',F1,'QUARTZ',QUARTZ,'FXEXP',FXEXP, & |
---|
| 2104 | ! & 'RTDIS',RTDIS,'SLDPTH',SLDPTH,'ZSOIL',ZSOIL, 'NROOT',NROOT, & |
---|
| 2105 | ! & 'NSOIL',NSOIL,'Z0',Z0,'CZIL',CZIL,'LAI',LAI, & |
---|
| 2106 | ! & 'CSOIL',CSOIL,'PTU',PTU, & |
---|
| 2107 | ! & 'LOCAL', LOCAL |
---|
| 2108 | |
---|
| 2109 | END SUBROUTINE REDPRM |
---|
| 2110 | |
---|
| 2111 | SUBROUTINE ROSR12 (P,A,B,C,D,DELTA,NSOIL) |
---|
| 2112 | |
---|
| 2113 | ! ---------------------------------------------------------------------- |
---|
| 2114 | ! SUBROUTINE ROSR12 |
---|
| 2115 | ! ---------------------------------------------------------------------- |
---|
| 2116 | ! INVERT (SOLVE) THE TRI-DIAGONAL MATRIX PROBLEM SHOWN BELOW: |
---|
| 2117 | ! ### ### ### ### ### ### |
---|
| 2118 | ! #B(1), C(1), 0 , 0 , 0 , . . . , 0 # # # # # |
---|
| 2119 | ! #A(2), B(2), C(2), 0 , 0 , . . . , 0 # # # # # |
---|
| 2120 | ! # 0 , A(3), B(3), C(3), 0 , . . . , 0 # # # # D(3) # |
---|
| 2121 | ! # 0 , 0 , A(4), B(4), C(4), . . . , 0 # # P(4) # # D(4) # |
---|
| 2122 | ! # 0 , 0 , 0 , A(5), B(5), . . . , 0 # # P(5) # # D(5) # |
---|
| 2123 | ! # . . # # . # = # . # |
---|
| 2124 | ! # . . # # . # # . # |
---|
| 2125 | ! # . . # # . # # . # |
---|
| 2126 | ! # 0 , . . . , 0 , A(M-2), B(M-2), C(M-2), 0 # #P(M-2)# #D(M-2)# |
---|
| 2127 | ! # 0 , . . . , 0 , 0 , A(M-1), B(M-1), C(M-1)# #P(M-1)# #D(M-1)# |
---|
| 2128 | ! # 0 , . . . , 0 , 0 , 0 , A(M) , B(M) # # P(M) # # D(M) # |
---|
| 2129 | ! ### ### ### ### ### ### |
---|
| 2130 | ! ---------------------------------------------------------------------- |
---|
| 2131 | IMPLICIT NONE |
---|
| 2132 | |
---|
| 2133 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 2134 | INTEGER :: K, KK |
---|
| 2135 | |
---|
| 2136 | REAL, DIMENSION(1:NSOIL), INTENT(IN):: A, B, D |
---|
| 2137 | REAL, DIMENSION(1:NSOIL),INTENT(INOUT):: C,P,DELTA |
---|
| 2138 | |
---|
| 2139 | ! ---------------------------------------------------------------------- |
---|
| 2140 | ! INITIALIZE EQN COEF C FOR THE LOWEST SOIL LAYER |
---|
| 2141 | ! ---------------------------------------------------------------------- |
---|
| 2142 | C (NSOIL) = 0.0 |
---|
| 2143 | P (1) = - C (1) / B (1) |
---|
| 2144 | ! ---------------------------------------------------------------------- |
---|
| 2145 | ! SOLVE THE COEFS FOR THE 1ST SOIL LAYER |
---|
| 2146 | ! ---------------------------------------------------------------------- |
---|
| 2147 | |
---|
| 2148 | ! ---------------------------------------------------------------------- |
---|
| 2149 | ! SOLVE THE COEFS FOR SOIL LAYERS 2 THRU NSOIL |
---|
| 2150 | ! ---------------------------------------------------------------------- |
---|
| 2151 | DELTA (1) = D (1) / B (1) |
---|
| 2152 | DO K = 2,NSOIL |
---|
| 2153 | P (K) = - C (K) * ( 1.0 / (B (K) + A (K) * P (K -1)) ) |
---|
| 2154 | DELTA (K) = (D (K) - A (K)* DELTA (K -1))* (1.0/ (B (K) + A (K)& |
---|
| 2155 | * P (K -1))) |
---|
| 2156 | END DO |
---|
| 2157 | ! ---------------------------------------------------------------------- |
---|
| 2158 | ! SET P TO DELTA FOR LOWEST SOIL LAYER |
---|
| 2159 | ! ---------------------------------------------------------------------- |
---|
| 2160 | P (NSOIL) = DELTA (NSOIL) |
---|
| 2161 | |
---|
| 2162 | ! ---------------------------------------------------------------------- |
---|
| 2163 | ! ADJUST P FOR SOIL LAYERS 2 THRU NSOIL |
---|
| 2164 | ! ---------------------------------------------------------------------- |
---|
| 2165 | DO K = 2,NSOIL |
---|
| 2166 | KK = NSOIL - K + 1 |
---|
| 2167 | P (KK) = P (KK) * P (KK +1) + DELTA (KK) |
---|
| 2168 | END DO |
---|
| 2169 | ! ---------------------------------------------------------------------- |
---|
| 2170 | END SUBROUTINE ROSR12 |
---|
| 2171 | ! ---------------------------------------------------------------------- |
---|
| 2172 | |
---|
| 2173 | |
---|
| 2174 | SUBROUTINE SHFLX (SSOIL,STC,SMC,SMCMAX,NSOIL,T1,DT,YY,ZZ1,ZSOIL, & |
---|
| 2175 | TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1,ICE, & |
---|
| 2176 | QUARTZ,CSOIL,VEGTYP) |
---|
| 2177 | |
---|
| 2178 | ! ---------------------------------------------------------------------- |
---|
| 2179 | ! SUBROUTINE SHFLX |
---|
| 2180 | ! ---------------------------------------------------------------------- |
---|
| 2181 | ! UPDATE THE TEMPERATURE STATE OF THE SOIL COLUMN BASED ON THE THERMAL |
---|
| 2182 | ! DIFFUSION EQUATION AND UPDATE THE FROZEN SOIL MOISTURE CONTENT BASED |
---|
| 2183 | ! ON THE TEMPERATURE. |
---|
| 2184 | ! ---------------------------------------------------------------------- |
---|
| 2185 | IMPLICIT NONE |
---|
| 2186 | |
---|
| 2187 | INTEGER, INTENT(IN) :: ICE, NSOIL, VEGTYP |
---|
| 2188 | INTEGER :: I |
---|
| 2189 | |
---|
| 2190 | REAL, INTENT(IN) :: BEXP,CSOIL,DF1,DT,F1,PSISAT,QUARTZ, & |
---|
| 2191 | SMCMAX, SMCWLT, TBOT,YY, ZBOT,ZZ1 |
---|
| 2192 | REAL, INTENT(INOUT) :: T1 |
---|
| 2193 | REAL, INTENT(OUT) :: SSOIL |
---|
| 2194 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SMC,ZSOIL |
---|
| 2195 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SH2O |
---|
| 2196 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: STC |
---|
| 2197 | REAL, DIMENSION(1:NSOIL) :: AI, BI, CI, STCF,RHSTS |
---|
| 2198 | REAL, PARAMETER :: T0 = 273.15 |
---|
| 2199 | |
---|
| 2200 | ! ---------------------------------------------------------------------- |
---|
| 2201 | ! HRT ROUTINE CALCS THE RIGHT HAND SIDE OF THE SOIL TEMP DIF EQN |
---|
| 2202 | ! ---------------------------------------------------------------------- |
---|
| 2203 | |
---|
| 2204 | ! ---------------------------------------------------------------------- |
---|
| 2205 | ! SEA-ICE CASE |
---|
| 2206 | ! ---------------------------------------------------------------------- |
---|
| 2207 | IF (ICE == 1) THEN |
---|
| 2208 | |
---|
| 2209 | CALL HRTICE (RHSTS,STC,NSOIL,ZSOIL,YY,ZZ1,DF1,AI,BI,CI) |
---|
| 2210 | |
---|
| 2211 | CALL HSTEP (STCF,STC,RHSTS,DT,NSOIL,AI,BI,CI) |
---|
| 2212 | |
---|
| 2213 | ! ---------------------------------------------------------------------- |
---|
| 2214 | ! LAND-MASS CASE |
---|
| 2215 | ! ---------------------------------------------------------------------- |
---|
| 2216 | ELSE |
---|
| 2217 | CALL HRT (RHSTS,STC,SMC,SMCMAX,NSOIL,ZSOIL,YY,ZZ1,TBOT, & |
---|
| 2218 | ZBOT,PSISAT,SH2O,DT, & |
---|
| 2219 | BEXP,F1,DF1,QUARTZ,CSOIL,AI,BI,CI,VEGTYP) |
---|
| 2220 | |
---|
| 2221 | CALL HSTEP (STCF,STC,RHSTS,DT,NSOIL,AI,BI,CI) |
---|
| 2222 | END IF |
---|
| 2223 | DO I = 1,NSOIL |
---|
| 2224 | STC (I) = STCF (I) |
---|
| 2225 | END DO |
---|
| 2226 | |
---|
| 2227 | ! ---------------------------------------------------------------------- |
---|
| 2228 | ! IN THE NO SNOWPACK CASE (VIA ROUTINE NOPAC BRANCH,) UPDATE THE GRND |
---|
| 2229 | ! (SKIN) TEMPERATURE HERE IN RESPONSE TO THE UPDATED SOIL TEMPERATURE |
---|
| 2230 | ! PROFILE ABOVE. (NOTE: INSPECTION OF ROUTINE SNOPAC SHOWS THAT T1 |
---|
| 2231 | ! BELOW IS A DUMMY VARIABLE ONLY, AS SKIN TEMPERATURE IS UPDATED |
---|
| 2232 | ! DIFFERENTLY IN ROUTINE SNOPAC) |
---|
| 2233 | ! ---------------------------------------------------------------------- |
---|
| 2234 | ! ---------------------------------------------------------------------- |
---|
| 2235 | ! CALCULATE SURFACE SOIL HEAT FLUX |
---|
| 2236 | ! ---------------------------------------------------------------------- |
---|
| 2237 | T1 = (YY + (ZZ1- 1.0) * STC (1)) / ZZ1 |
---|
| 2238 | SSOIL = DF1 * (STC (1) - T1) / (0.5 * ZSOIL (1)) |
---|
| 2239 | |
---|
| 2240 | ! ---------------------------------------------------------------------- |
---|
| 2241 | END SUBROUTINE SHFLX |
---|
| 2242 | ! ---------------------------------------------------------------------- |
---|
| 2243 | |
---|
| 2244 | SUBROUTINE SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
| 2245 | & SH2O,SLOPE,KDT,FRZFACT, & |
---|
| 2246 | & SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
| 2247 | & SHDFAC,CMCMAX, & |
---|
| 2248 | & RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
| 2249 | & EDIR,EC,ET, & |
---|
| 2250 | & DRIP) |
---|
| 2251 | |
---|
| 2252 | ! ---------------------------------------------------------------------- |
---|
| 2253 | ! SUBROUTINE SMFLX |
---|
| 2254 | ! ---------------------------------------------------------------------- |
---|
| 2255 | ! CALCULATE SOIL MOISTURE FLUX. THE SOIL MOISTURE CONTENT (SMC - A PER |
---|
| 2256 | ! UNIT VOLUME MEASUREMENT) IS A DEPENDENT VARIABLE THAT IS UPDATED WITH |
---|
| 2257 | ! PROGNOSTIC EQNS. THE CANOPY MOISTURE CONTENT (CMC) IS ALSO UPDATED. |
---|
| 2258 | ! FROZEN GROUND VERSION: NEW STATES ADDED: SH2O, AND FROZEN GROUND |
---|
| 2259 | ! CORRECTION FACTOR, FRZFACT AND PARAMETER SLOPE. |
---|
| 2260 | ! ---------------------------------------------------------------------- |
---|
| 2261 | IMPLICIT NONE |
---|
| 2262 | |
---|
| 2263 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 2264 | INTEGER :: I,K |
---|
| 2265 | |
---|
| 2266 | REAL, INTENT(IN) :: BEXP, CMCMAX, DKSAT,DWSAT, DT, EC, EDIR, & |
---|
| 2267 | KDT, PRCP1, SHDFAC, SLOPE, SMCMAX, SMCWLT |
---|
| 2268 | REAL, INTENT(OUT) :: DRIP, RUNOFF1, RUNOFF2, RUNOFF3 |
---|
| 2269 | REAL, INTENT(INOUT) :: CMC |
---|
| 2270 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ET,ZSOIL |
---|
| 2271 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: SMC, SH2O |
---|
| 2272 | REAL, DIMENSION(1:NSOIL) :: AI, BI, CI, STCF,RHSTS, RHSTT, & |
---|
| 2273 | SICE, SH2OA, SH2OFG |
---|
| 2274 | REAL :: DUMMY, EXCESS,FRZFACT,PCPDRP,RHSCT,TRHSCT |
---|
| 2275 | |
---|
| 2276 | ! ---------------------------------------------------------------------- |
---|
| 2277 | ! EXECUTABLE CODE BEGINS HERE. |
---|
| 2278 | ! ---------------------------------------------------------------------- |
---|
| 2279 | ! ---------------------------------------------------------------------- |
---|
| 2280 | ! COMPUTE THE RIGHT HAND SIDE OF THE CANOPY EQN TERM ( RHSCT ) |
---|
| 2281 | ! ---------------------------------------------------------------------- |
---|
| 2282 | DUMMY = 0. |
---|
| 2283 | |
---|
| 2284 | ! ---------------------------------------------------------------------- |
---|
| 2285 | ! CONVERT RHSCT (A RATE) TO TRHSCT (AN AMOUNT) AND ADD IT TO EXISTING |
---|
| 2286 | ! CMC. IF RESULTING AMT EXCEEDS MAX CAPACITY, IT BECOMES DRIP AND WILL |
---|
| 2287 | ! FALL TO THE GRND. |
---|
| 2288 | ! ---------------------------------------------------------------------- |
---|
| 2289 | RHSCT = SHDFAC * PRCP1- EC |
---|
| 2290 | DRIP = 0. |
---|
| 2291 | TRHSCT = DT * RHSCT |
---|
| 2292 | EXCESS = CMC + TRHSCT |
---|
| 2293 | |
---|
| 2294 | ! ---------------------------------------------------------------------- |
---|
| 2295 | ! PCPDRP IS THE COMBINED PRCP1 AND DRIP (FROM CMC) THAT GOES INTO THE |
---|
| 2296 | ! SOIL |
---|
| 2297 | ! ---------------------------------------------------------------------- |
---|
| 2298 | IF (EXCESS > CMCMAX) DRIP = EXCESS - CMCMAX |
---|
| 2299 | PCPDRP = (1. - SHDFAC) * PRCP1+ DRIP / DT |
---|
| 2300 | |
---|
| 2301 | ! ---------------------------------------------------------------------- |
---|
| 2302 | ! STORE ICE CONTENT AT EACH SOIL LAYER BEFORE CALLING SRT and SSTEP |
---|
| 2303 | ! |
---|
| 2304 | DO I = 1,NSOIL |
---|
| 2305 | SICE (I) = SMC (I) - SH2O (I) |
---|
| 2306 | END DO |
---|
| 2307 | ! ---------------------------------------------------------------------- |
---|
| 2308 | ! CALL SUBROUTINES SRT AND SSTEP TO SOLVE THE SOIL MOISTURE |
---|
| 2309 | ! TENDENCY EQUATIONS. |
---|
| 2310 | ! IF THE INFILTRATING PRECIP RATE IS NONTRIVIAL, |
---|
| 2311 | ! (WE CONSIDER NONTRIVIAL TO BE A PRECIP TOTAL OVER THE TIME STEP |
---|
| 2312 | ! EXCEEDING ONE ONE-THOUSANDTH OF THE WATER HOLDING CAPACITY OF |
---|
| 2313 | ! THE FIRST SOIL LAYER) |
---|
| 2314 | ! THEN CALL THE SRT/SSTEP SUBROUTINE PAIR TWICE IN THE MANNER OF |
---|
| 2315 | ! TIME SCHEME "F" (IMPLICIT STATE, AVERAGED COEFFICIENT) |
---|
| 2316 | ! OF SECTION 2 OF KALNAY AND KANAMITSU (1988, MWR, VOL 116, |
---|
| 2317 | ! PAGES 1945-1958)TO MINIMIZE 2-DELTA-T OSCILLATIONS IN THE |
---|
| 2318 | ! SOIL MOISTURE VALUE OF THE TOP SOIL LAYER THAT CAN ARISE BECAUSE |
---|
| 2319 | ! OF THE EXTREME NONLINEAR DEPENDENCE OF THE SOIL HYDRAULIC |
---|
| 2320 | ! DIFFUSIVITY COEFFICIENT AND THE HYDRAULIC CONDUCTIVITY ON THE |
---|
| 2321 | ! SOIL MOISTURE STATE |
---|
| 2322 | ! OTHERWISE CALL THE SRT/SSTEP SUBROUTINE PAIR ONCE IN THE MANNER OF |
---|
| 2323 | ! TIME SCHEME "D" (IMPLICIT STATE, EXPLICIT COEFFICIENT) |
---|
| 2324 | ! OF SECTION 2 OF KALNAY AND KANAMITSU |
---|
| 2325 | ! PCPDRP IS UNITS OF KG/M**2/S OR MM/S, ZSOIL IS NEGATIVE DEPTH IN M |
---|
| 2326 | ! ---------------------------------------------------------------------- |
---|
| 2327 | ! IF ( PCPDRP .GT. 0.0 ) THEN |
---|
| 2328 | |
---|
| 2329 | ! ---------------------------------------------------------------------- |
---|
| 2330 | ! FROZEN GROUND VERSION: |
---|
| 2331 | ! SMC STATES REPLACED BY SH2O STATES IN SRT SUBR. SH2O & SICE STATES |
---|
| 2332 | ! INC&UDED IN SSTEP SUBR. FROZEN GROUND CORRECTION FACTOR, FRZFACT |
---|
| 2333 | ! ADDED. ALL WATER BALANCE CALCULATIONS USING UNFROZEN WATER |
---|
| 2334 | ! ---------------------------------------------------------------------- |
---|
| 2335 | IF ( (PCPDRP * DT) > (0.001*1000.0* (- ZSOIL (1))* SMCMAX) ) THEN |
---|
| 2336 | CALL SRT (RHSTT,EDIR,ET,SH2O,SH2O,NSOIL,PCPDRP,ZSOIL, & |
---|
| 2337 | DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
| 2338 | RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI) |
---|
| 2339 | CALL SSTEP (SH2OFG,SH2O,DUMMY,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & |
---|
| 2340 | CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI) |
---|
| 2341 | DO K = 1,NSOIL |
---|
| 2342 | SH2OA (K) = (SH2O (K) + SH2OFG (K)) * 0.5 |
---|
| 2343 | END DO |
---|
| 2344 | CALL SRT (RHSTT,EDIR,ET,SH2O,SH2OA,NSOIL,PCPDRP,ZSOIL, & |
---|
| 2345 | DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
| 2346 | RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI) |
---|
| 2347 | CALL SSTEP (SH2O,SH2O,CMC,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & |
---|
| 2348 | CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI) |
---|
| 2349 | |
---|
| 2350 | ELSE |
---|
| 2351 | CALL SRT (RHSTT,EDIR,ET,SH2O,SH2O,NSOIL,PCPDRP,ZSOIL, & |
---|
| 2352 | DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
| 2353 | RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI) |
---|
| 2354 | CALL SSTEP (SH2O,SH2O,CMC,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & |
---|
| 2355 | CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI) |
---|
| 2356 | ! RUNOF = RUNOFF |
---|
| 2357 | |
---|
| 2358 | END IF |
---|
| 2359 | |
---|
| 2360 | ! ---------------------------------------------------------------------- |
---|
| 2361 | END SUBROUTINE SMFLX |
---|
| 2362 | ! ---------------------------------------------------------------------- |
---|
| 2363 | |
---|
| 2364 | |
---|
| 2365 | SUBROUTINE SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR) |
---|
| 2366 | |
---|
| 2367 | ! ---------------------------------------------------------------------- |
---|
| 2368 | ! SUBROUTINE SNFRAC |
---|
| 2369 | ! ---------------------------------------------------------------------- |
---|
| 2370 | ! CALCULATE SNOW FRACTION (0 -> 1) |
---|
| 2371 | ! SNEQV SNOW WATER EQUIVALENT (M) |
---|
| 2372 | ! SNUP THRESHOLD SNEQV DEPTH ABOVE WHICH SNCOVR=1 |
---|
| 2373 | ! SALP TUNING PARAMETER |
---|
| 2374 | ! SNCOVR FRACTIONAL SNOW COVER |
---|
| 2375 | ! ---------------------------------------------------------------------- |
---|
| 2376 | IMPLICIT NONE |
---|
| 2377 | |
---|
| 2378 | REAL, INTENT(IN) :: SNEQV,SNUP,SALP,SNOWH |
---|
| 2379 | REAL, INTENT(OUT) :: SNCOVR |
---|
| 2380 | REAL :: RSNOW, Z0N |
---|
| 2381 | |
---|
| 2382 | ! ---------------------------------------------------------------------- |
---|
| 2383 | ! SNUP IS VEG-CLASS DEPENDENT SNOWDEPTH THRESHHOLD (SET IN ROUTINE |
---|
| 2384 | ! REDPRM) ABOVE WHICH SNOCVR=1. |
---|
| 2385 | ! ---------------------------------------------------------------------- |
---|
| 2386 | IF (SNEQV < SNUP) THEN |
---|
| 2387 | RSNOW = SNEQV / SNUP |
---|
| 2388 | SNCOVR = 1. - ( EXP ( - SALP * RSNOW) - RSNOW * EXP ( - SALP)) |
---|
| 2389 | ELSE |
---|
| 2390 | SNCOVR = 1.0 |
---|
| 2391 | END IF |
---|
| 2392 | |
---|
| 2393 | ! FORMULATION OF DICKINSON ET AL. 1986 |
---|
| 2394 | ! Z0N = 0.035 |
---|
| 2395 | |
---|
| 2396 | ! SNCOVR=SNOWH/(SNOWH + 5*Z0N) |
---|
| 2397 | |
---|
| 2398 | ! FORMULATION OF MARSHALL ET AL. 1994 |
---|
| 2399 | ! SNCOVR=SNEQV/(SNEQV + 2*Z0N) |
---|
| 2400 | |
---|
| 2401 | ! ---------------------------------------------------------------------- |
---|
| 2402 | END SUBROUTINE SNFRAC |
---|
| 2403 | ! ---------------------------------------------------------------------- |
---|
| 2404 | |
---|
| 2405 | SUBROUTINE SNKSRC (TSNSR,TAVG,SMC,SH2O,ZSOIL,NSOIL, & |
---|
| 2406 | & SMCMAX,PSISAT,BEXP,DT,K,QTOT) |
---|
| 2407 | |
---|
| 2408 | ! ---------------------------------------------------------------------- |
---|
| 2409 | ! SUBROUTINE SNKSRC |
---|
| 2410 | ! ---------------------------------------------------------------------- |
---|
| 2411 | ! CALCULATE SINK/SOURCE TERM OF THE TERMAL DIFFUSION EQUATION. (SH2O) IS |
---|
| 2412 | ! AVAILABLE LIQUED WATER. |
---|
| 2413 | ! ---------------------------------------------------------------------- |
---|
| 2414 | IMPLICIT NONE |
---|
| 2415 | |
---|
| 2416 | INTEGER, INTENT(IN) :: K,NSOIL |
---|
| 2417 | |
---|
| 2418 | REAL, INTENT(IN) :: BEXP, DT, PSISAT, QTOT, SMC, SMCMAX, & |
---|
| 2419 | TAVG |
---|
| 2420 | REAL, INTENT(INOUT) :: SH2O |
---|
| 2421 | |
---|
| 2422 | REAL, DIMENSION(1:NSOIL), INTENT(IN):: ZSOIL |
---|
| 2423 | |
---|
| 2424 | REAL :: DF, DZ, DZH, FREE, TSNSR, & |
---|
| 2425 | TDN, TM, TUP, TZ, X0, XDN, XH2O, XUP |
---|
| 2426 | |
---|
| 2427 | REAL, PARAMETER :: DH2O = 1.0000E3, HLICE = 3.3350E5, & |
---|
| 2428 | T0 = 2.7315E2 |
---|
| 2429 | |
---|
| 2430 | IF (K == 1) THEN |
---|
| 2431 | DZ = - ZSOIL (1) |
---|
| 2432 | ELSE |
---|
| 2433 | DZ = ZSOIL (K -1) - ZSOIL (K) |
---|
| 2434 | END IF |
---|
| 2435 | ! ---------------------------------------------------------------------- |
---|
| 2436 | ! VIA FUNCTION FRH2O, COMPUTE POTENTIAL OR 'EQUILIBRIUM' UNFROZEN |
---|
| 2437 | ! SUPERCOOLED FREE WATER FOR GIVEN SOIL TYPE AND SOIL LAYER TEMPERATURE. |
---|
| 2438 | ! FUNCTION FRH20 INVOKES EQN (17) FROM V. KOREN ET AL (1999, JGR, VOL. |
---|
| 2439 | ! 104, PG 19573). (ASIDE: LATTER EQN IN JOURNAL IN CENTIGRADE UNITS. |
---|
| 2440 | ! ROUTINE FRH2O USE FORM OF EQN IN KELVIN UNITS.) |
---|
| 2441 | ! ---------------------------------------------------------------------- |
---|
| 2442 | ! FREE = FRH2O(TAVG,SMC,SH2O,SMCMAX,BEXP,PSISAT) |
---|
| 2443 | |
---|
| 2444 | ! ---------------------------------------------------------------------- |
---|
| 2445 | ! IN NEXT BLOCK OF CODE, INVOKE EQN 18 OF V. KOREN ET AL (1999, JGR, |
---|
| 2446 | ! VOL. 104, PG 19573.) THAT IS, FIRST ESTIMATE THE NEW AMOUNTOF LIQUID |
---|
| 2447 | ! WATER, 'XH2O', IMPLIED BY THE SUM OF (1) THE LIQUID WATER AT THE BEGIN |
---|
| 2448 | ! OF CURRENT TIME STEP, AND (2) THE FREEZE OF THAW CHANGE IN LIQUID |
---|
| 2449 | ! WATER IMPLIED BY THE HEAT FLUX 'QTOT' PASSED IN FROM ROUTINE HRT. |
---|
| 2450 | ! SECOND, DETERMINE IF XH2O NEEDS TO BE BOUNDED BY 'FREE' (EQUIL AMT) OR |
---|
| 2451 | ! IF 'FREE' NEEDS TO BE BOUNDED BY XH2O. |
---|
| 2452 | ! ---------------------------------------------------------------------- |
---|
| 2453 | CALL FRH2O (FREE,TAVG,SMC,SH2O,SMCMAX,BEXP,PSISAT) |
---|
| 2454 | |
---|
| 2455 | ! ---------------------------------------------------------------------- |
---|
| 2456 | ! FIRST, IF FREEZING AND REMAINING LIQUID LESS THAN LOWER BOUND, THEN |
---|
| 2457 | ! REDUCE EXTENT OF FREEZING, THEREBY LETTING SOME OR ALL OF HEAT FLUX |
---|
| 2458 | ! QTOT COOL THE SOIL TEMP LATER IN ROUTINE HRT. |
---|
| 2459 | ! ---------------------------------------------------------------------- |
---|
| 2460 | XH2O = SH2O + QTOT * DT / (DH2O * HLICE * DZ) |
---|
| 2461 | IF ( XH2O < SH2O .AND. XH2O < FREE) THEN |
---|
| 2462 | IF ( FREE > SH2O ) THEN |
---|
| 2463 | XH2O = SH2O |
---|
| 2464 | ELSE |
---|
| 2465 | XH2O = FREE |
---|
| 2466 | END IF |
---|
| 2467 | END IF |
---|
| 2468 | ! ---------------------------------------------------------------------- |
---|
| 2469 | ! SECOND, IF THAWING AND THE INCREASE IN LIQUID WATER GREATER THAN UPPER |
---|
| 2470 | ! BOUND, THEN REDUCE EXTENT OF THAW, THEREBY LETTING SOME OR ALL OF HEAT |
---|
| 2471 | ! FLUX QTOT WARM THE SOIL TEMP LATER IN ROUTINE HRT. |
---|
| 2472 | ! ---------------------------------------------------------------------- |
---|
| 2473 | IF ( XH2O > SH2O .AND. XH2O > FREE ) THEN |
---|
| 2474 | IF ( FREE < SH2O ) THEN |
---|
| 2475 | XH2O = SH2O |
---|
| 2476 | ELSE |
---|
| 2477 | XH2O = FREE |
---|
| 2478 | END IF |
---|
| 2479 | END IF |
---|
| 2480 | |
---|
| 2481 | ! ---------------------------------------------------------------------- |
---|
| 2482 | ! CALCULATE PHASE-CHANGE HEAT SOURCE/SINK TERM FOR USE IN ROUTINE HRT |
---|
| 2483 | ! AND UPDATE LIQUID WATER TO REFLCET FINAL FREEZE/THAW INCREMENT. |
---|
| 2484 | ! ---------------------------------------------------------------------- |
---|
| 2485 | ! SNKSRC = -DH2O*HLICE*DZ*(XH2O-SH2O)/DT |
---|
| 2486 | IF (XH2O < 0.) XH2O = 0. |
---|
| 2487 | IF (XH2O > SMC) XH2O = SMC |
---|
| 2488 | TSNSR = - DH2O * HLICE * DZ * (XH2O - SH2O)/ DT |
---|
| 2489 | SH2O = XH2O |
---|
| 2490 | |
---|
| 2491 | ! ---------------------------------------------------------------------- |
---|
| 2492 | END SUBROUTINE SNKSRC |
---|
| 2493 | ! ---------------------------------------------------------------------- |
---|
| 2494 | |
---|
| 2495 | SUBROUTINE SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,SMC,SMCMAX,SMCWLT, & |
---|
| 2496 | SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & |
---|
| 2497 | SBETA,DF1, & |
---|
| 2498 | Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA,& |
---|
| 2499 | SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,ESD,SNDENS,& |
---|
| 2500 | SNOWH,SH2O,SLOPE,KDT,FRZFACT,PSISAT, & |
---|
| 2501 | ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, & |
---|
| 2502 | RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, & |
---|
| 2503 | ICE,RTDIS,QUARTZ,FXEXP,CSOIL, & |
---|
| 2504 | BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW,ETNS,EMISSI,& |
---|
| 2505 | VEGTYP) |
---|
| 2506 | |
---|
| 2507 | ! ---------------------------------------------------------------------- |
---|
| 2508 | ! SUBROUTINE SNOPAC |
---|
| 2509 | ! ---------------------------------------------------------------------- |
---|
| 2510 | ! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES & UPDATE SOIL MOISTURE |
---|
| 2511 | ! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN A SNOW PACK IS |
---|
| 2512 | ! PRESENT. |
---|
| 2513 | ! ---------------------------------------------------------------------- |
---|
| 2514 | IMPLICIT NONE |
---|
| 2515 | |
---|
| 2516 | INTEGER, INTENT(IN) :: ICE, NROOT, NSOIL,VEGTYP |
---|
| 2517 | INTEGER :: K |
---|
| 2518 | LOGICAL, INTENT(IN) :: SNOWNG |
---|
| 2519 | REAL, INTENT(IN) :: BEXP,CFACTR, CMCMAX,CSOIL,DF1,DKSAT, & |
---|
| 2520 | DT,DWSAT, EPSCA,ETP,FDOWN,F1,FXEXP, & |
---|
| 2521 | FRZFACT,KDT,PC, PRCP,PSISAT,Q2,QUARTZ, & |
---|
| 2522 | RCH,RR,SBETA,SFCPRS, SFCTMP, SHDFAC, & |
---|
| 2523 | SLOPE,SMCDRY,SMCMAX,SMCREF,SMCWLT, T24, & |
---|
| 2524 | TBOT,TH2,ZBOT,EMISSI |
---|
| 2525 | REAL, INTENT(INOUT) :: CMC, BETA, ESD,FLX2,PRCPF,SNOWH,SNCOVR, & |
---|
| 2526 | SNDENS, T1 |
---|
| 2527 | REAL, INTENT(OUT) :: DEW,DRIP,EC,EDIR, ETNS, ESNOW,ETT, & |
---|
| 2528 | FLX1,FLX3, RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
| 2529 | SSOIL,SNOMLT |
---|
| 2530 | REAL, DIMENSION(1:NSOIL),INTENT(IN) :: RTDIS,ZSOIL |
---|
| 2531 | REAL, DIMENSION(1:NSOIL),INTENT(OUT) :: ET |
---|
| 2532 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SMC,SH2O,STC |
---|
| 2533 | REAL, DIMENSION(1:NSOIL) :: ET1 |
---|
| 2534 | REAL :: DENOM,DSOIL,DTOT,EC1,EDIR1,ESDFLX,ETA, & |
---|
| 2535 | ETT1, ESNOW1, ESNOW2, ETA1,ETP1,ETP2, & |
---|
| 2536 | ETP3, ETNS1, ETANRG, ETAX, EX, FLX3X, & |
---|
| 2537 | FRCSNO,FRCSOI, PRCP1, QSAT,RSNOW, SEH, & |
---|
| 2538 | SNCOND,SSOIL1, T11,T12, T12A, T12AX, & |
---|
| 2539 | T12B, T14, YY, ZZ1 |
---|
| 2540 | ! T12B, T14, YY, ZZ1,EMISSI_S |
---|
| 2541 | |
---|
| 2542 | REAL, PARAMETER :: ESDMIN = 1.E-6, LSUBC = 2.501000E+6, & |
---|
| 2543 | LSUBS = 2.83E+6, TFREEZ = 273.15, & |
---|
| 2544 | SNOEXP = 2.0 |
---|
| 2545 | |
---|
| 2546 | ! ---------------------------------------------------------------------- |
---|
| 2547 | ! EXECUTABLE CODE BEGINS HERE: |
---|
| 2548 | ! INITIALIZE EVAP TERMS. |
---|
| 2549 | ! ---------------------------------------------------------------------- |
---|
| 2550 | ! conversions: |
---|
| 2551 | ! ESNOW [KG M-2 S-1] |
---|
| 2552 | ! ESDFLX [KG M-2 S-1] .le. ESNOW |
---|
| 2553 | ! ESNOW1 [M S-1] |
---|
| 2554 | ! ESNOW2 [M] |
---|
| 2555 | ! ETP [KG M-2 S-1] |
---|
| 2556 | ! ETP1 [M S-1] |
---|
| 2557 | ! ETP2 [M] |
---|
| 2558 | ! ---------------------------------------------------------------------- |
---|
| 2559 | DEW = 0. |
---|
| 2560 | EDIR = 0. |
---|
| 2561 | EDIR1 = 0. |
---|
| 2562 | EC1 = 0. |
---|
| 2563 | EC = 0. |
---|
| 2564 | ! EMISSI_S=0.95 ! For snow |
---|
| 2565 | |
---|
| 2566 | DO K = 1,NSOIL |
---|
| 2567 | ET (K) = 0. |
---|
| 2568 | ET1 (K) = 0. |
---|
| 2569 | END DO |
---|
| 2570 | ETT = 0. |
---|
| 2571 | ETT1 = 0. |
---|
| 2572 | ETNS = 0. |
---|
| 2573 | ETNS1 = 0. |
---|
| 2574 | ESNOW = 0. |
---|
| 2575 | ESNOW1 = 0. |
---|
| 2576 | ESNOW2 = 0. |
---|
| 2577 | |
---|
| 2578 | ! ---------------------------------------------------------------------- |
---|
| 2579 | ! CONVERT POTENTIAL EVAP (ETP) FROM KG M-2 S-1 TO ETP1 IN M S-1 |
---|
| 2580 | ! ---------------------------------------------------------------------- |
---|
| 2581 | PRCP1 = PRCPF *0.001 |
---|
| 2582 | ETP1 = ETP * 0.001 |
---|
| 2583 | ! ---------------------------------------------------------------------- |
---|
| 2584 | ! IF ETP<0 (DOWNWARD) THEN DEWFALL (=FROSTFALL IN THIS CASE). |
---|
| 2585 | ! ---------------------------------------------------------------------- |
---|
| 2586 | BETA = 1.0 |
---|
| 2587 | IF (ETP <= 0.0) THEN |
---|
| 2588 | IF(ETP == 0.) BETA = 0.0 |
---|
| 2589 | DEW = -ETP1 |
---|
| 2590 | ESNOW2 = ETP1*DT |
---|
| 2591 | ETANRG = ETP*((1.-SNCOVR)*LSUBC + SNCOVR*LSUBS) |
---|
| 2592 | ELSE |
---|
| 2593 | IF (ICE /= 1) THEN |
---|
| 2594 | IF (SNCOVR < 1.) THEN |
---|
| 2595 | CALL EVAPO (ETNS1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & |
---|
| 2596 | SH2O, & |
---|
| 2597 | SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & |
---|
| 2598 | SMCREF,SHDFAC,CMCMAX, & |
---|
| 2599 | SMCDRY,CFACTR, & |
---|
| 2600 | EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS, & |
---|
| 2601 | FXEXP) |
---|
| 2602 | ! ---------------------------------------------------------------------------- |
---|
| 2603 | EDIR1 = EDIR1* (1. - SNCOVR) |
---|
| 2604 | EC1 = EC1* (1. - SNCOVR) |
---|
| 2605 | DO K = 1,NSOIL |
---|
| 2606 | ET1 (K) = ET1 (K)* (1. - SNCOVR) |
---|
| 2607 | END DO |
---|
| 2608 | ETT1 = ETT1*(1.-SNCOVR) |
---|
| 2609 | ! ETNS1 = EDIR1+ EC1+ ETT1 |
---|
| 2610 | ETNS1 = ETNS1*(1.-SNCOVR) |
---|
| 2611 | ! ---------------------------------------------------------------------------- |
---|
| 2612 | EDIR = EDIR1*1000. |
---|
| 2613 | EC = EC1*1000. |
---|
| 2614 | DO K = 1,NSOIL |
---|
| 2615 | ET (K) = ET1 (K)*1000. |
---|
| 2616 | END DO |
---|
| 2617 | ETT = ETT1*1000. |
---|
| 2618 | ETNS = ETNS1*1000. |
---|
| 2619 | ! ---------------------------------------------------------------------- |
---|
| 2620 | |
---|
| 2621 | ! end IF (SNCOVR .lt. 1.) |
---|
| 2622 | END IF |
---|
| 2623 | ! end IF (ICE .ne. 1) |
---|
| 2624 | END IF |
---|
| 2625 | ESNOW = ETP*SNCOVR |
---|
| 2626 | ESNOW1 = ESNOW*0.001 |
---|
| 2627 | ESNOW2 = ESNOW1*DT |
---|
| 2628 | ETANRG = ESNOW*LSUBS + ETNS*LSUBC |
---|
| 2629 | ! end IF (ETP .le. 0.0) |
---|
| 2630 | END IF |
---|
| 2631 | |
---|
| 2632 | ! ---------------------------------------------------------------------- |
---|
| 2633 | ! IF PRECIP IS FALLING, CALCULATE HEAT FLUX FROM SNOW SFC TO NEWLY |
---|
| 2634 | ! ACCUMULATING PRECIP. NOTE THAT THIS REFLECTS THE FLUX APPROPRIATE FOR |
---|
| 2635 | ! THE NOT-YET-UPDATED SKIN TEMPERATURE (T1). ASSUMES TEMPERATURE OF THE |
---|
| 2636 | ! SNOWFALL STRIKING THE GROUND IS =SFCTMP (LOWEST MODEL LEVEL AIR TEMP). |
---|
| 2637 | ! ---------------------------------------------------------------------- |
---|
| 2638 | FLX1 = 0.0 |
---|
| 2639 | IF (SNOWNG) THEN |
---|
| 2640 | FLX1 = CPICE * PRCP * (T1- SFCTMP) |
---|
| 2641 | ELSE |
---|
| 2642 | IF (PRCP > 0.0) FLX1 = CPH2O * PRCP * (T1- SFCTMP) |
---|
| 2643 | ! ---------------------------------------------------------------------- |
---|
| 2644 | ! CALCULATE AN 'EFFECTIVE SNOW-GRND SFC TEMP' (T12) BASED ON HEAT FLUXES |
---|
| 2645 | ! BETWEEN THE SNOW PACK AND THE SOIL AND ON NET RADIATION. |
---|
| 2646 | ! INCLUDE FLX1 (PRECIP-SNOW SFC) AND FLX2 (FREEZING RAIN LATENT HEAT) |
---|
| 2647 | ! FLUXES. FLX1 FROM ABOVE, FLX2 BROUGHT IN VIA COMMOM BLOCK RITE. |
---|
| 2648 | ! FLX2 REFLECTS FREEZING RAIN LATENT HEAT FLUX USING T1 CALCULATED IN |
---|
| 2649 | ! PENMAN. |
---|
| 2650 | ! ---------------------------------------------------------------------- |
---|
| 2651 | END IF |
---|
| 2652 | DSOIL = - (0.5 * ZSOIL (1)) |
---|
| 2653 | DTOT = SNOWH + DSOIL |
---|
| 2654 | DENOM = 1.0+ DF1 / (DTOT * RR * RCH) |
---|
| 2655 | ! surface emissivity weighted by snow cover fraction |
---|
| 2656 | ! T12A = ( (FDOWN - FLX1 - FLX2 - & |
---|
| 2657 | ! & ((SNCOVR*EMISSI_S)+EMISSI*(1.0-SNCOVR))*SIGMA *T24)/RCH & |
---|
| 2658 | ! & + TH2 - SFCTMP - ETANRG/RCH ) / RR |
---|
| 2659 | T12A = ( (FDOWN - FLX1- FLX2- EMISSI * SIGMA * T24)/ RCH & |
---|
| 2660 | + TH2- SFCTMP - ETANRG / RCH ) / RR |
---|
| 2661 | |
---|
| 2662 | T12B = DF1 * STC (1) / (DTOT * RR * RCH) |
---|
| 2663 | |
---|
| 2664 | ! ---------------------------------------------------------------------- |
---|
| 2665 | ! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS AT OR BELOW FREEZING, NO SNOW |
---|
| 2666 | ! MELT WILL OCCUR. SET THE SKIN TEMP TO THIS EFFECTIVE TEMP. REDUCE |
---|
| 2667 | ! (BY SUBLIMINATION ) OR INCREASE (BY FROST) THE DEPTH OF THE SNOWPACK, |
---|
| 2668 | ! DEPENDING ON SIGN OF ETP. |
---|
| 2669 | ! UPDATE SOIL HEAT FLUX (SSOIL) USING NEW SKIN TEMPERATURE (T1) |
---|
| 2670 | ! SINCE NO SNOWMELT, SET ACCUMULATED SNOWMELT TO ZERO, SET 'EFFECTIVE' |
---|
| 2671 | ! PRECIP FROM SNOWMELT TO ZERO, SET PHASE-CHANGE HEAT FLUX FROM SNOWMELT |
---|
| 2672 | ! TO ZERO. |
---|
| 2673 | ! ---------------------------------------------------------------------- |
---|
| 2674 | ! SUB-FREEZING BLOCK |
---|
| 2675 | ! ---------------------------------------------------------------------- |
---|
| 2676 | T12 = (SFCTMP + T12A + T12B) / DENOM |
---|
| 2677 | IF (T12 <= TFREEZ) THEN |
---|
| 2678 | T1 = T12 |
---|
| 2679 | SSOIL = DF1 * (T1- STC (1)) / DTOT |
---|
| 2680 | ! ESD = MAX (0.0, ESD- ETP2) |
---|
| 2681 | ESD = MAX(0.0, ESD-ESNOW2) |
---|
| 2682 | FLX3 = 0.0 |
---|
| 2683 | EX = 0.0 |
---|
| 2684 | |
---|
| 2685 | SNOMLT = 0.0 |
---|
| 2686 | ! ---------------------------------------------------------------------- |
---|
| 2687 | ! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS ABOVE FREEZING, SNOW MELT |
---|
| 2688 | ! WILL OCCUR. CALL THE SNOW MELT RATE,EX AND AMT, SNOMLT. REVISE THE |
---|
| 2689 | ! EFFECTIVE SNOW DEPTH. REVISE THE SKIN TEMP BECAUSE IT WOULD HAVE CHGD |
---|
| 2690 | ! DUE TO THE LATENT HEAT RELEASED BY THE MELTING. CALC THE LATENT HEAT |
---|
| 2691 | ! RELEASED, FLX3. SET THE EFFECTIVE PRECIP, PRCP1 TO THE SNOW MELT RATE, |
---|
| 2692 | ! EX FOR USE IN SMFLX. ADJUSTMENT TO T1 TO ACCOUNT FOR SNOW PATCHES. |
---|
| 2693 | ! CALCULATE QSAT VALID AT FREEZING POINT. NOTE THAT ESAT (SATURATION |
---|
| 2694 | ! VAPOR PRESSURE) VALUE OF 6.11E+2 USED HERE IS THAT VALID AT FRZZING |
---|
| 2695 | ! POINT. NOTE THAT ETP FROM CALL PENMAN IN SFLX IS IGNORED HERE IN |
---|
| 2696 | ! FAVOR OF BULK ETP OVER 'OPEN WATER' AT FREEZING TEMP. |
---|
| 2697 | ! UPDATE SOIL HEAT FLUX (S) USING NEW SKIN TEMPERATURE (T1) |
---|
| 2698 | ! ---------------------------------------------------------------------- |
---|
| 2699 | ! ABOVE FREEZING BLOCK |
---|
| 2700 | ! ---------------------------------------------------------------------- |
---|
| 2701 | ELSE |
---|
| 2702 | T1 = TFREEZ * SNCOVR ** SNOEXP + T12 * (1.0- SNCOVR ** SNOEXP) |
---|
| 2703 | BETA = 1.0 |
---|
| 2704 | |
---|
| 2705 | ! ---------------------------------------------------------------------- |
---|
| 2706 | ! IF POTENTIAL EVAP (SUBLIMATION) GREATER THAN DEPTH OF SNOWPACK. |
---|
| 2707 | ! BETA<1 |
---|
| 2708 | ! SNOWPACK HAS SUBLIMATED AWAY, SET DEPTH TO ZERO. |
---|
| 2709 | ! ---------------------------------------------------------------------- |
---|
| 2710 | SSOIL = DF1 * (T1- STC (1)) / DTOT |
---|
| 2711 | IF (ESD-ESNOW2 <= ESDMIN) THEN |
---|
| 2712 | ESD = 0.0 |
---|
| 2713 | EX = 0.0 |
---|
| 2714 | SNOMLT = 0.0 |
---|
| 2715 | ! ---------------------------------------------------------------------- |
---|
| 2716 | ! SUBLIMATION LESS THAN DEPTH OF SNOWPACK |
---|
| 2717 | ! SNOWPACK (ESD) REDUCED BY ESNOW2 (DEPTH OF SUBLIMATED SNOW) |
---|
| 2718 | ! ---------------------------------------------------------------------- |
---|
| 2719 | ELSE |
---|
| 2720 | ESD = ESD-ESNOW2 |
---|
| 2721 | ETP3 = ETP * LSUBC |
---|
| 2722 | SEH = RCH * (T1- TH2) |
---|
| 2723 | T14 = T1* T1 |
---|
| 2724 | T14 = T14* T14 |
---|
| 2725 | ! FLX3 = FDOWN - FLX1 - FLX2 - & |
---|
| 2726 | ! ((SNCOVR*EMISSI_S)+EMISSI*(1-SNCOVR))*SIGMA*T14 - & |
---|
| 2727 | ! SSOIL - SEH - ETANRG |
---|
| 2728 | FLX3 = FDOWN - FLX1- FLX2- EMISSI*SIGMA * T14- SSOIL - SEH - ETANRG |
---|
| 2729 | IF (FLX3 <= 0.0) FLX3 = 0.0 |
---|
| 2730 | ! ---------------------------------------------------------------------- |
---|
| 2731 | ! SNOWMELT REDUCTION DEPENDING ON SNOW COVER |
---|
| 2732 | ! ---------------------------------------------------------------------- |
---|
| 2733 | EX = FLX3*0.001/ LSUBF |
---|
| 2734 | |
---|
| 2735 | ! ---------------------------------------------------------------------- |
---|
| 2736 | ! ESDMIN REPRESENTS A SNOWPACK DEPTH THRESHOLD VALUE BELOW WHICH WE |
---|
| 2737 | ! CHOOSE NOT TO RETAIN ANY SNOWPACK, AND INSTEAD INCLUDE IT IN SNOWMELT. |
---|
| 2738 | ! ---------------------------------------------------------------------- |
---|
| 2739 | SNOMLT = EX * DT |
---|
| 2740 | IF (ESD- SNOMLT >= ESDMIN) THEN |
---|
| 2741 | ESD = ESD- SNOMLT |
---|
| 2742 | ! ---------------------------------------------------------------------- |
---|
| 2743 | ! SNOWMELT EXCEEDS SNOW DEPTH |
---|
| 2744 | ! ---------------------------------------------------------------------- |
---|
| 2745 | ELSE |
---|
| 2746 | EX = ESD / DT |
---|
| 2747 | FLX3 = EX *1000.0* LSUBF |
---|
| 2748 | SNOMLT = ESD |
---|
| 2749 | |
---|
| 2750 | ESD = 0.0 |
---|
| 2751 | ! ---------------------------------------------------------------------- |
---|
| 2752 | ! END OF 'ESD .LE. ETP2' IF-BLOCK |
---|
| 2753 | ! ---------------------------------------------------------------------- |
---|
| 2754 | END IF |
---|
| 2755 | END IF |
---|
| 2756 | |
---|
| 2757 | ! ---------------------------------------------------------------------- |
---|
| 2758 | ! END OF 'T12 .LE. TFREEZ' IF-BLOCK |
---|
| 2759 | ! ---------------------------------------------------------------------- |
---|
| 2760 | PRCP1 = PRCP1+ EX |
---|
| 2761 | |
---|
| 2762 | ! ---------------------------------------------------------------------- |
---|
| 2763 | ! SET THE EFFECTIVE POTNL EVAPOTRANSP (ETP1) TO ZERO SINCE THIS IS SNOW |
---|
| 2764 | ! CASE, SO SURFACE EVAP NOT CALCULATED FROM EDIR, EC, OR ETT IN SMFLX |
---|
| 2765 | ! (BELOW). |
---|
| 2766 | ! IF SEAICE (ICE=1) SKIP CALL TO SMFLX. |
---|
| 2767 | ! SMFLX RETURNS UPDATED SOIL MOISTURE VALUES. IN THIS, THE SNOW PACK |
---|
| 2768 | ! CASE, ETA1 IS NOT USED IN CALCULATION OF EVAP. |
---|
| 2769 | ! ---------------------------------------------------------------------- |
---|
| 2770 | END IF |
---|
| 2771 | IF (ICE /= 1) THEN |
---|
| 2772 | CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
| 2773 | SH2O,SLOPE,KDT,FRZFACT, & |
---|
| 2774 | SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
| 2775 | SHDFAC,CMCMAX, & |
---|
| 2776 | RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
| 2777 | EDIR1,EC1,ET1, & |
---|
| 2778 | DRIP) |
---|
| 2779 | ! ---------------------------------------------------------------------- |
---|
| 2780 | ! BEFORE CALL SHFLX IN THIS SNOWPACK CASE, SET ZZ1 AND YY ARGUMENTS TO |
---|
| 2781 | ! SPECIAL VALUES THAT ENSURE THAT GROUND HEAT FLUX CALCULATED IN SHFLX |
---|
| 2782 | ! MATCHES THAT ALREADY COMPUTER FOR BELOW THE SNOWPACK, THUS THE SFC |
---|
| 2783 | ! HEAT FLUX TO BE COMPUTED IN SHFLX WILL EFFECTIVELY BE THE FLUX AT THE |
---|
| 2784 | ! SNOW TOP SURFACE. T11 IS A DUMMY ARGUEMENT SO WE WILL NOT USE THE |
---|
| 2785 | ! SKIN TEMP VALUE AS REVISED BY SHFLX. |
---|
| 2786 | ! ---------------------------------------------------------------------- |
---|
| 2787 | END IF |
---|
| 2788 | ZZ1 = 1.0 |
---|
| 2789 | YY = STC (1) -0.5* SSOIL * ZSOIL (1)* ZZ1/ DF1 |
---|
| 2790 | |
---|
| 2791 | ! ---------------------------------------------------------------------- |
---|
| 2792 | ! SHFLX WILL CALC/UPDATE THE SOIL TEMPS. NOTE: THE SUB-SFC HEAT FLUX |
---|
| 2793 | ! (SSOIL1) AND THE SKIN TEMP (T11) OUTPUT FROM THIS SHFLX CALL ARE NOT |
---|
| 2794 | ! USED IN ANY SUBSEQUENT CALCULATIONS. RATHER, THEY ARE DUMMY VARIABLES |
---|
| 2795 | ! HERE IN THE SNOPAC CASE, SINCE THE SKIN TEMP AND SUB-SFC HEAT FLUX ARE |
---|
| 2796 | ! UPDATED INSTEAD NEAR THE BEGINNING OF THE CALL TO SNOPAC. |
---|
| 2797 | ! ---------------------------------------------------------------------- |
---|
| 2798 | T11 = T1 |
---|
| 2799 | CALL SHFLX (SSOIL1,STC,SMC,SMCMAX,NSOIL,T11,DT,YY,ZZ1,ZSOIL, & |
---|
| 2800 | TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1,ICE, & |
---|
| 2801 | QUARTZ,CSOIL,VEGTYP) |
---|
| 2802 | |
---|
| 2803 | ! ---------------------------------------------------------------------- |
---|
| 2804 | ! SNOW DEPTH AND DENSITY ADJUSTMENT BASED ON SNOW COMPACTION. YY IS |
---|
| 2805 | ! ASSUMED TO BE THE SOIL TEMPERTURE AT THE TOP OF THE SOIL COLUMN. |
---|
| 2806 | ! ---------------------------------------------------------------------- |
---|
| 2807 | IF (ESD > 0.) THEN |
---|
| 2808 | CALL SNOWPACK (ESD,DT,SNOWH,SNDENS,T1,YY) |
---|
| 2809 | ELSE |
---|
| 2810 | ESD = 0. |
---|
| 2811 | SNOWH = 0. |
---|
| 2812 | SNDENS = 0. |
---|
| 2813 | SNCOND = 1. |
---|
| 2814 | SNCOVR = 0. |
---|
| 2815 | END IF |
---|
| 2816 | ! ---------------------------------------------------------------------- |
---|
| 2817 | END SUBROUTINE SNOPAC |
---|
| 2818 | ! ---------------------------------------------------------------------- |
---|
| 2819 | |
---|
| 2820 | |
---|
| 2821 | SUBROUTINE SNOWPACK (ESD,DTSEC,SNOWH,SNDENS,TSNOW,TSOIL) |
---|
| 2822 | |
---|
| 2823 | ! ---------------------------------------------------------------------- |
---|
| 2824 | ! SUBROUTINE SNOWPACK |
---|
| 2825 | ! ---------------------------------------------------------------------- |
---|
| 2826 | ! CALCULATE COMPACTION OF SNOWPACK UNDER CONDITIONS OF INCREASING SNOW |
---|
| 2827 | ! DENSITY, AS OBTAINED FROM AN APPROXIMATE SOLUTION OF E. ANDERSON'S |
---|
| 2828 | ! DIFFERENTIAL EQUATION (3.29), NOAA TECHNICAL REPORT NWS 19, BY VICTOR |
---|
| 2829 | ! KOREN, 03/25/95. |
---|
| 2830 | ! ---------------------------------------------------------------------- |
---|
| 2831 | ! ESD WATER EQUIVALENT OF SNOW (M) |
---|
| 2832 | ! DTSEC TIME STEP (SEC) |
---|
| 2833 | ! SNOWH SNOW DEPTH (M) |
---|
| 2834 | ! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) |
---|
| 2835 | ! TSNOW SNOW SURFACE TEMPERATURE (K) |
---|
| 2836 | ! TSOIL SOIL SURFACE TEMPERATURE (K) |
---|
| 2837 | |
---|
| 2838 | ! SUBROUTINE WILL RETURN NEW VALUES OF SNOWH AND SNDENS |
---|
| 2839 | ! ---------------------------------------------------------------------- |
---|
| 2840 | IMPLICIT NONE |
---|
| 2841 | |
---|
| 2842 | INTEGER :: IPOL, J |
---|
| 2843 | REAL, INTENT(IN) :: ESD, DTSEC,TSNOW,TSOIL |
---|
| 2844 | REAL, INTENT(INOUT) :: SNOWH, SNDENS |
---|
| 2845 | REAL :: BFAC,DSX,DTHR,DW,SNOWHC,PEXP, & |
---|
| 2846 | TAVGC,TSNOWC,TSOILC,ESDC,ESDCX |
---|
| 2847 | REAL, PARAMETER :: C1 = 0.01, C2 = 21.0, G = 9.81, & |
---|
| 2848 | KN = 4000.0 |
---|
| 2849 | ! ---------------------------------------------------------------------- |
---|
| 2850 | ! CONVERSION INTO SIMULATION UNITS |
---|
| 2851 | ! ---------------------------------------------------------------------- |
---|
| 2852 | SNOWHC = SNOWH *100. |
---|
| 2853 | ESDC = ESD *100. |
---|
| 2854 | DTHR = DTSEC /3600. |
---|
| 2855 | TSNOWC = TSNOW -273.15 |
---|
| 2856 | TSOILC = TSOIL -273.15 |
---|
| 2857 | |
---|
| 2858 | ! ---------------------------------------------------------------------- |
---|
| 2859 | ! CALCULATING OF AVERAGE TEMPERATURE OF SNOW PACK |
---|
| 2860 | ! ---------------------------------------------------------------------- |
---|
| 2861 | ! ---------------------------------------------------------------------- |
---|
| 2862 | ! CALCULATING OF SNOW DEPTH AND DENSITY AS A RESULT OF COMPACTION |
---|
| 2863 | ! SNDENS=DS0*(EXP(BFAC*ESD)-1.)/(BFAC*ESD) |
---|
| 2864 | ! BFAC=DTHR*C1*EXP(0.08*TAVGC-C2*DS0) |
---|
| 2865 | ! NOTE: BFAC*ESD IN SNDENS EQN ABOVE HAS TO BE CAREFULLY TREATED |
---|
| 2866 | ! NUMERICALLY BELOW: |
---|
| 2867 | ! C1 IS THE FRACTIONAL INCREASE IN DENSITY (1/(CM*HR)) |
---|
| 2868 | ! C2 IS A CONSTANT (CM3/G) KOJIMA ESTIMATED AS 21 CMS/G |
---|
| 2869 | ! ---------------------------------------------------------------------- |
---|
| 2870 | TAVGC = 0.5* (TSNOWC + TSOILC) |
---|
| 2871 | IF (ESDC > 1.E-2) THEN |
---|
| 2872 | ESDCX = ESDC |
---|
| 2873 | ELSE |
---|
| 2874 | ESDCX = 1.E-2 |
---|
| 2875 | END IF |
---|
| 2876 | |
---|
| 2877 | ! DSX = SNDENS*((DEXP(BFAC*ESDC)-1.)/(BFAC*ESDC)) |
---|
| 2878 | ! ---------------------------------------------------------------------- |
---|
| 2879 | ! THE FUNCTION OF THE FORM (e**x-1)/x IMBEDDED IN ABOVE EXPRESSION |
---|
| 2880 | ! FOR DSX WAS CAUSING NUMERICAL DIFFICULTIES WHEN THE DENOMINATOR "x" |
---|
| 2881 | ! (I.E. BFAC*ESDC) BECAME ZERO OR APPROACHED ZERO (DESPITE THE FACT THAT |
---|
| 2882 | ! THE ANALYTICAL FUNCTION (e**x-1)/x HAS A WELL DEFINED LIMIT AS |
---|
| 2883 | ! "x" APPROACHES ZERO), HENCE BELOW WE REPLACE THE (e**x-1)/x |
---|
| 2884 | ! EXPRESSION WITH AN EQUIVALENT, NUMERICALLY WELL-BEHAVED |
---|
| 2885 | ! POLYNOMIAL EXPANSION. |
---|
| 2886 | |
---|
| 2887 | ! NUMBER OF TERMS OF POLYNOMIAL EXPANSION, AND HENCE ITS ACCURACY, |
---|
| 2888 | ! IS GOVERNED BY ITERATION LIMIT "IPOL". |
---|
| 2889 | ! IPOL GREATER THAN 9 ONLY MAKES A DIFFERENCE ON DOUBLE |
---|
| 2890 | ! PRECISION (RELATIVE ERRORS GIVEN IN PERCENT %). |
---|
| 2891 | ! IPOL=9, FOR REL.ERROR <~ 1.6 E-6 % (8 SIGNIFICANT DIGITS) |
---|
| 2892 | ! IPOL=8, FOR REL.ERROR <~ 1.8 E-5 % (7 SIGNIFICANT DIGITS) |
---|
| 2893 | ! IPOL=7, FOR REL.ERROR <~ 1.8 E-4 % ... |
---|
| 2894 | ! ---------------------------------------------------------------------- |
---|
| 2895 | BFAC = DTHR * C1* EXP (0.08* TAVGC - C2* SNDENS) |
---|
| 2896 | IPOL = 4 |
---|
| 2897 | PEXP = 0. |
---|
| 2898 | ! PEXP = (1. + PEXP)*BFAC*ESDC/REAL(J+1) |
---|
| 2899 | DO J = IPOL,1, -1 |
---|
| 2900 | PEXP = (1. + PEXP)* BFAC * ESDCX / REAL (J +1) |
---|
| 2901 | END DO |
---|
| 2902 | |
---|
| 2903 | PEXP = PEXP + 1. |
---|
| 2904 | ! ---------------------------------------------------------------------- |
---|
| 2905 | ! ABOVE LINE ENDS POLYNOMIAL SUBSTITUTION |
---|
| 2906 | ! ---------------------------------------------------------------------- |
---|
| 2907 | ! END OF KOREAN FORMULATION |
---|
| 2908 | |
---|
| 2909 | ! BASE FORMULATION (COGLEY ET AL., 1990) |
---|
| 2910 | ! CONVERT DENSITY FROM G/CM3 TO KG/M3 |
---|
| 2911 | ! DSM=SNDENS*1000.0 |
---|
| 2912 | |
---|
| 2913 | ! DSX=DSM+DTSEC*0.5*DSM*G*ESD/ |
---|
| 2914 | ! & (1E7*EXP(-0.02*DSM+KN/(TAVGC+273.16)-14.643)) |
---|
| 2915 | |
---|
| 2916 | ! & CONVERT DENSITY FROM KG/M3 TO G/CM3 |
---|
| 2917 | ! DSX=DSX/1000.0 |
---|
| 2918 | |
---|
| 2919 | ! END OF COGLEY ET AL. FORMULATION |
---|
| 2920 | |
---|
| 2921 | ! ---------------------------------------------------------------------- |
---|
| 2922 | ! SET UPPER/LOWER LIMIT ON SNOW DENSITY |
---|
| 2923 | ! ---------------------------------------------------------------------- |
---|
| 2924 | DSX = SNDENS * (PEXP) |
---|
| 2925 | IF (DSX > 0.40) DSX = 0.40 |
---|
| 2926 | IF (DSX < 0.05) DSX = 0.05 |
---|
| 2927 | ! ---------------------------------------------------------------------- |
---|
| 2928 | ! UPDATE OF SNOW DEPTH AND DENSITY DEPENDING ON LIQUID WATER DURING |
---|
| 2929 | ! SNOWMELT. ASSUMED THAT 13% OF LIQUID WATER CAN BE STORED IN SNOW PER |
---|
| 2930 | ! DAY DURING SNOWMELT TILL SNOW DENSITY 0.40. |
---|
| 2931 | ! ---------------------------------------------------------------------- |
---|
| 2932 | SNDENS = DSX |
---|
| 2933 | IF (TSNOWC >= 0.) THEN |
---|
| 2934 | DW = 0.13* DTHR /24. |
---|
| 2935 | SNDENS = SNDENS * (1. - DW) + DW |
---|
| 2936 | IF (SNDENS >= 0.40) SNDENS = 0.40 |
---|
| 2937 | ! ---------------------------------------------------------------------- |
---|
| 2938 | ! CALCULATE SNOW DEPTH (CM) FROM SNOW WATER EQUIVALENT AND SNOW DENSITY. |
---|
| 2939 | ! CHANGE SNOW DEPTH UNITS TO METERS |
---|
| 2940 | ! ---------------------------------------------------------------------- |
---|
| 2941 | END IF |
---|
| 2942 | SNOWHC = ESDC / SNDENS |
---|
| 2943 | SNOWH = SNOWHC *0.01 |
---|
| 2944 | |
---|
| 2945 | ! ---------------------------------------------------------------------- |
---|
| 2946 | END SUBROUTINE SNOWPACK |
---|
| 2947 | ! ---------------------------------------------------------------------- |
---|
| 2948 | |
---|
| 2949 | SUBROUTINE SNOWZ0 (SNCOVR,Z0, Z0BRD) |
---|
| 2950 | |
---|
| 2951 | ! ---------------------------------------------------------------------- |
---|
| 2952 | ! SUBROUTINE SNOWZ0 |
---|
| 2953 | ! ---------------------------------------------------------------------- |
---|
| 2954 | ! CALCULATE TOTAL ROUGHNESS LENGTH OVER SNOW |
---|
| 2955 | ! SNCOVR FRACTIONAL SNOW COVER |
---|
| 2956 | ! Z0 ROUGHNESS LENGTH (m) |
---|
| 2957 | ! Z0S SNOW ROUGHNESS LENGTH:=0.001 (m) |
---|
| 2958 | ! ---------------------------------------------------------------------- |
---|
| 2959 | IMPLICIT NONE |
---|
| 2960 | REAL, INTENT(IN) :: SNCOVR, Z0BRD |
---|
| 2961 | REAL, INTENT(OUT) :: Z0 |
---|
| 2962 | REAL, PARAMETER :: Z0S=0.001 |
---|
| 2963 | |
---|
| 2964 | !m Z0 = (1.- SNCOVR)* Z0BRD + SNCOVR * Z0S |
---|
| 2965 | Z0 = Z0BRD |
---|
| 2966 | ! ---------------------------------------------------------------------- |
---|
| 2967 | END SUBROUTINE SNOWZ0 |
---|
| 2968 | ! ---------------------------------------------------------------------- |
---|
| 2969 | |
---|
| 2970 | |
---|
| 2971 | SUBROUTINE SNOW_NEW (TEMP,NEWSN,SNOWH,SNDENS) |
---|
| 2972 | |
---|
| 2973 | ! ---------------------------------------------------------------------- |
---|
| 2974 | ! SUBROUTINE SNOW_NEW |
---|
| 2975 | ! ---------------------------------------------------------------------- |
---|
| 2976 | ! CALCULATE SNOW DEPTH AND DENSITITY TO ACCOUNT FOR THE NEW SNOWFALL. |
---|
| 2977 | ! NEW VALUES OF SNOW DEPTH & DENSITY RETURNED. |
---|
| 2978 | |
---|
| 2979 | ! TEMP AIR TEMPERATURE (K) |
---|
| 2980 | ! NEWSN NEW SNOWFALL (M) |
---|
| 2981 | ! SNOWH SNOW DEPTH (M) |
---|
| 2982 | ! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) |
---|
| 2983 | ! ---------------------------------------------------------------------- |
---|
| 2984 | IMPLICIT NONE |
---|
| 2985 | REAL, INTENT(IN) :: NEWSN, TEMP |
---|
| 2986 | REAL, INTENT(INOUT) :: SNDENS, SNOWH |
---|
| 2987 | REAL :: DSNEW, HNEWC, SNOWHC,NEWSNC,TEMPC |
---|
| 2988 | |
---|
| 2989 | ! ---------------------------------------------------------------------- |
---|
| 2990 | ! CONVERSION INTO SIMULATION UNITS |
---|
| 2991 | ! ---------------------------------------------------------------------- |
---|
| 2992 | SNOWHC = SNOWH *100. |
---|
| 2993 | NEWSNC = NEWSN *100. |
---|
| 2994 | |
---|
| 2995 | ! ---------------------------------------------------------------------- |
---|
| 2996 | ! CALCULATING NEW SNOWFALL DENSITY DEPENDING ON TEMPERATURE |
---|
| 2997 | ! EQUATION FROM GOTTLIB L. 'A GENERAL RUNOFF MODEL FOR SNOWCOVERED |
---|
| 2998 | ! AND GLACIERIZED BASIN', 6TH NORDIC HYDROLOGICAL CONFERENCE, |
---|
| 2999 | ! VEMADOLEN, SWEDEN, 1980, 172-177PP. |
---|
| 3000 | !----------------------------------------------------------------------- |
---|
| 3001 | TEMPC = TEMP -273.15 |
---|
| 3002 | IF (TEMPC <= -15.) THEN |
---|
| 3003 | DSNEW = 0.05 |
---|
| 3004 | ELSE |
---|
| 3005 | DSNEW = 0.05+0.0017* (TEMPC +15.)**1.5 |
---|
| 3006 | END IF |
---|
| 3007 | ! ---------------------------------------------------------------------- |
---|
| 3008 | ! ADJUSTMENT OF SNOW DENSITY DEPENDING ON NEW SNOWFALL |
---|
| 3009 | ! ---------------------------------------------------------------------- |
---|
| 3010 | HNEWC = NEWSNC / DSNEW |
---|
| 3011 | IF (SNOWHC + HNEWC .LT. 1.0E-3) THEN |
---|
| 3012 | SNDENS = MAX(DSNEW,SNDENS) |
---|
| 3013 | ELSE |
---|
| 3014 | SNDENS = (SNOWHC * SNDENS + HNEWC * DSNEW)/ (SNOWHC + HNEWC) |
---|
| 3015 | ENDIF |
---|
| 3016 | SNOWHC = SNOWHC + HNEWC |
---|
| 3017 | SNOWH = SNOWHC *0.01 |
---|
| 3018 | |
---|
| 3019 | ! ---------------------------------------------------------------------- |
---|
| 3020 | END SUBROUTINE SNOW_NEW |
---|
| 3021 | ! ---------------------------------------------------------------------- |
---|
| 3022 | |
---|
| 3023 | SUBROUTINE SRT (RHSTT,EDIR,ET,SH2O,SH2OA,NSOIL,PCPDRP, & |
---|
| 3024 | ZSOIL,DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
| 3025 | RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZX,SICE,AI,BI,CI) |
---|
| 3026 | |
---|
| 3027 | ! ---------------------------------------------------------------------- |
---|
| 3028 | ! SUBROUTINE SRT |
---|
| 3029 | ! ---------------------------------------------------------------------- |
---|
| 3030 | ! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL |
---|
| 3031 | ! WATER DIFFUSION EQUATION. ALSO TO COMPUTE ( PREPARE ) THE MATRIX |
---|
| 3032 | ! COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. |
---|
| 3033 | ! ---------------------------------------------------------------------- |
---|
| 3034 | IMPLICIT NONE |
---|
| 3035 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 3036 | INTEGER :: IALP1, IOHINF, J, JJ, K, KS |
---|
| 3037 | REAL, INTENT(IN) :: BEXP, DKSAT, DT, DWSAT, EDIR, FRZX, & |
---|
| 3038 | KDT, PCPDRP, SLOPE, SMCMAX, SMCWLT |
---|
| 3039 | REAL, INTENT(OUT) :: RUNOFF1, RUNOFF2 |
---|
| 3040 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ET, SH2O, SH2OA, SICE, & |
---|
| 3041 | ZSOIL |
---|
| 3042 | REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: RHSTT |
---|
| 3043 | REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: AI, BI, CI |
---|
| 3044 | REAL, DIMENSION(1:NSOIL) :: DMAX |
---|
| 3045 | REAL :: ACRT, DD, DDT, DDZ, DDZ2, DENOM, & |
---|
| 3046 | DENOM2,DICE, DSMDZ, DSMDZ2, DT1, & |
---|
| 3047 | FCR,INFMAX,MXSMC,MXSMC2,NUMER,PDDUM, & |
---|
| 3048 | PX, SICEMAX,SLOPX, SMCAV, SSTT, & |
---|
| 3049 | SUM, VAL, WCND, WCND2, WDF, WDF2 |
---|
| 3050 | INTEGER, PARAMETER :: CVFRZ = 3 |
---|
| 3051 | |
---|
| 3052 | ! ---------------------------------------------------------------------- |
---|
| 3053 | ! FROZEN GROUND VERSION: |
---|
| 3054 | ! REFERENCE FROZEN GROUND PARAMETER, CVFRZ, IS A SHAPE PARAMETER OF |
---|
| 3055 | ! AREAL DISTRIBUTION FUNCTION OF SOIL ICE CONTENT WHICH EQUALS 1/CV. |
---|
| 3056 | ! CV IS A COEFFICIENT OF SPATIAL VARIATION OF SOIL ICE CONTENT. BASED |
---|
| 3057 | ! ON FIELD DATA CV DEPENDS ON AREAL MEAN OF FROZEN DEPTH, AND IT CLOSE |
---|
| 3058 | ! TO CONSTANT = 0.6 IF AREAL MEAN FROZEN DEPTH IS ABOVE 20 CM. THAT IS |
---|
| 3059 | ! WHY PARAMETER CVFRZ = 3 (INT{1/0.6*0.6}). |
---|
| 3060 | ! CURRENT LOGIC DOESN'T ALLOW CVFRZ BE BIGGER THAN 3 |
---|
| 3061 | ! ---------------------------------------------------------------------- |
---|
| 3062 | |
---|
| 3063 | ! ---------------------------------------------------------------------- |
---|
| 3064 | ! DETERMINE RAINFALL INFILTRATION RATE AND RUNOFF. INCLUDE THE |
---|
| 3065 | ! INFILTRATION FORMULE FROM SCHAAKE AND KOREN MODEL. |
---|
| 3066 | ! MODIFIED BY Q DUAN |
---|
| 3067 | ! ---------------------------------------------------------------------- |
---|
| 3068 | ! ---------------------------------------------------------------------- |
---|
| 3069 | ! LET SICEMAX BE THE GREATEST, IF ANY, FROZEN WATER CONTENT WITHIN SOIL |
---|
| 3070 | ! LAYERS. |
---|
| 3071 | ! ---------------------------------------------------------------------- |
---|
| 3072 | IOHINF = 1 |
---|
| 3073 | SICEMAX = 0.0 |
---|
| 3074 | DO KS = 1,NSOIL |
---|
| 3075 | IF (SICE (KS) > SICEMAX) SICEMAX = SICE (KS) |
---|
| 3076 | ! ---------------------------------------------------------------------- |
---|
| 3077 | ! DETERMINE RAINFALL INFILTRATION RATE AND RUNOFF |
---|
| 3078 | ! ---------------------------------------------------------------------- |
---|
| 3079 | END DO |
---|
| 3080 | PDDUM = PCPDRP |
---|
| 3081 | RUNOFF1 = 0.0 |
---|
| 3082 | |
---|
| 3083 | ! ---------------------------------------------------------------------- |
---|
| 3084 | ! MODIFIED BY Q. DUAN, 5/16/94 |
---|
| 3085 | ! ---------------------------------------------------------------------- |
---|
| 3086 | ! IF (IOHINF == 1) THEN |
---|
| 3087 | |
---|
| 3088 | IF (PCPDRP /= 0.0) THEN |
---|
| 3089 | DT1 = DT /86400. |
---|
| 3090 | SMCAV = SMCMAX - SMCWLT |
---|
| 3091 | |
---|
| 3092 | ! ---------------------------------------------------------------------- |
---|
| 3093 | ! FROZEN GROUND VERSION: |
---|
| 3094 | ! ---------------------------------------------------------------------- |
---|
| 3095 | DMAX (1)= - ZSOIL (1)* SMCAV |
---|
| 3096 | |
---|
| 3097 | DICE = - ZSOIL (1) * SICE (1) |
---|
| 3098 | DMAX (1)= DMAX (1)* (1.0- (SH2OA (1) + SICE (1) - SMCWLT)/ & |
---|
| 3099 | SMCAV) |
---|
| 3100 | |
---|
| 3101 | DD = DMAX (1) |
---|
| 3102 | |
---|
| 3103 | ! ---------------------------------------------------------------------- |
---|
| 3104 | ! FROZEN GROUND VERSION: |
---|
| 3105 | ! ---------------------------------------------------------------------- |
---|
| 3106 | DO KS = 2,NSOIL |
---|
| 3107 | |
---|
| 3108 | DICE = DICE+ ( ZSOIL (KS -1) - ZSOIL (KS) ) * SICE (KS) |
---|
| 3109 | DMAX (KS) = (ZSOIL (KS -1) - ZSOIL (KS))* SMCAV |
---|
| 3110 | DMAX (KS) = DMAX (KS)* (1.0- (SH2OA (KS) + SICE (KS) & |
---|
| 3111 | - SMCWLT)/ SMCAV) |
---|
| 3112 | DD = DD+ DMAX (KS) |
---|
| 3113 | ! ---------------------------------------------------------------------- |
---|
| 3114 | ! VAL = (1.-EXP(-KDT*SQRT(DT1))) |
---|
| 3115 | ! IN BELOW, REMOVE THE SQRT IN ABOVE |
---|
| 3116 | ! ---------------------------------------------------------------------- |
---|
| 3117 | END DO |
---|
| 3118 | VAL = (1. - EXP ( - KDT * DT1)) |
---|
| 3119 | DDT = DD * VAL |
---|
| 3120 | PX = PCPDRP * DT |
---|
| 3121 | IF (PX < 0.0) PX = 0.0 |
---|
| 3122 | |
---|
| 3123 | ! ---------------------------------------------------------------------- |
---|
| 3124 | ! FROZEN GROUND VERSION: |
---|
| 3125 | ! REDUCTION OF INFILTRATION BASED ON FROZEN GROUND PARAMETERS |
---|
| 3126 | ! ---------------------------------------------------------------------- |
---|
| 3127 | INFMAX = (PX * (DDT / (PX + DDT)))/ DT |
---|
| 3128 | FCR = 1. |
---|
| 3129 | IF (DICE > 1.E-2) THEN |
---|
| 3130 | ACRT = CVFRZ * FRZX / DICE |
---|
| 3131 | SUM = 1. |
---|
| 3132 | IALP1 = CVFRZ - 1 |
---|
| 3133 | DO J = 1,IALP1 |
---|
| 3134 | K = 1 |
---|
| 3135 | DO JJ = J +1,IALP1 |
---|
| 3136 | K = K * JJ |
---|
| 3137 | END DO |
---|
| 3138 | SUM = SUM + (ACRT ** ( CVFRZ - J)) / FLOAT (K) |
---|
| 3139 | END DO |
---|
| 3140 | FCR = 1. - EXP ( - ACRT) * SUM |
---|
| 3141 | END IF |
---|
| 3142 | |
---|
| 3143 | ! ---------------------------------------------------------------------- |
---|
| 3144 | ! CORRECTION OF INFILTRATION LIMITATION: |
---|
| 3145 | ! IF INFMAX .LE. HYDROLIC CONDUCTIVITY ASSIGN INFMAX THE VALUE OF |
---|
| 3146 | ! HYDROLIC CONDUCTIVITY |
---|
| 3147 | ! ---------------------------------------------------------------------- |
---|
| 3148 | ! MXSMC = MAX ( SH2OA(1), SH2OA(2) ) |
---|
| 3149 | INFMAX = INFMAX * FCR |
---|
| 3150 | |
---|
| 3151 | MXSMC = SH2OA (1) |
---|
| 3152 | CALL WDFCND (WDF,WCND,MXSMC,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
| 3153 | SICEMAX) |
---|
| 3154 | INFMAX = MAX (INFMAX,WCND) |
---|
| 3155 | |
---|
| 3156 | INFMAX = MIN (INFMAX,PX) |
---|
| 3157 | IF (PCPDRP > INFMAX) THEN |
---|
| 3158 | RUNOFF1 = PCPDRP - INFMAX |
---|
| 3159 | PDDUM = INFMAX |
---|
| 3160 | END IF |
---|
| 3161 | ! ---------------------------------------------------------------------- |
---|
| 3162 | ! TO AVOID SPURIOUS DRAINAGE BEHAVIOR, 'UPSTREAM DIFFERENCING' IN LINE |
---|
| 3163 | ! BELOW REPLACED WITH NEW APPROACH IN 2ND LINE: |
---|
| 3164 | ! 'MXSMC = MAX(SH2OA(1), SH2OA(2))' |
---|
| 3165 | ! ---------------------------------------------------------------------- |
---|
| 3166 | END IF |
---|
| 3167 | |
---|
| 3168 | MXSMC = SH2OA (1) |
---|
| 3169 | CALL WDFCND (WDF,WCND,MXSMC,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
| 3170 | SICEMAX) |
---|
| 3171 | ! ---------------------------------------------------------------------- |
---|
| 3172 | ! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER |
---|
| 3173 | ! ---------------------------------------------------------------------- |
---|
| 3174 | DDZ = 1. / ( - .5 * ZSOIL (2) ) |
---|
| 3175 | AI (1) = 0.0 |
---|
| 3176 | BI (1) = WDF * DDZ / ( - ZSOIL (1) ) |
---|
| 3177 | |
---|
| 3178 | ! ---------------------------------------------------------------------- |
---|
| 3179 | ! CALC RHSTT FOR THE TOP LAYER AFTER CALC'NG THE VERTICAL SOIL MOISTURE |
---|
| 3180 | ! GRADIENT BTWN THE TOP AND NEXT TO TOP LAYERS. |
---|
| 3181 | ! ---------------------------------------------------------------------- |
---|
| 3182 | CI (1) = - BI (1) |
---|
| 3183 | DSMDZ = ( SH2O (1) - SH2O (2) ) / ( - .5 * ZSOIL (2) ) |
---|
| 3184 | RHSTT (1) = (WDF * DSMDZ + WCND- PDDUM + EDIR + ET (1))/ ZSOIL (1) |
---|
| 3185 | |
---|
| 3186 | ! ---------------------------------------------------------------------- |
---|
| 3187 | ! INITIALIZE DDZ2 |
---|
| 3188 | ! ---------------------------------------------------------------------- |
---|
| 3189 | SSTT = WDF * DSMDZ + WCND+ EDIR + ET (1) |
---|
| 3190 | |
---|
| 3191 | ! ---------------------------------------------------------------------- |
---|
| 3192 | ! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABV PROCESS |
---|
| 3193 | ! ---------------------------------------------------------------------- |
---|
| 3194 | DDZ2 = 0.0 |
---|
| 3195 | DO K = 2,NSOIL |
---|
| 3196 | DENOM2 = (ZSOIL (K -1) - ZSOIL (K)) |
---|
| 3197 | IF (K /= NSOIL) THEN |
---|
| 3198 | |
---|
| 3199 | ! ---------------------------------------------------------------------- |
---|
| 3200 | ! AGAIN, TO AVOID SPURIOUS DRAINAGE BEHAVIOR, 'UPSTREAM DIFFERENCING' IN |
---|
| 3201 | ! LINE BELOW REPLACED WITH NEW APPROACH IN 2ND LINE: |
---|
| 3202 | ! 'MXSMC2 = MAX (SH2OA(K), SH2OA(K+1))' |
---|
| 3203 | ! ---------------------------------------------------------------------- |
---|
| 3204 | SLOPX = 1. |
---|
| 3205 | |
---|
| 3206 | MXSMC2 = SH2OA (K) |
---|
| 3207 | CALL WDFCND (WDF2,WCND2,MXSMC2,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
| 3208 | SICEMAX) |
---|
| 3209 | ! ----------------------------------------------------------------------- |
---|
| 3210 | ! CALC SOME PARTIAL PRODUCTS FOR LATER USE IN CALC'NG RHSTT |
---|
| 3211 | ! ---------------------------------------------------------------------- |
---|
| 3212 | DENOM = (ZSOIL (K -1) - ZSOIL (K +1)) |
---|
| 3213 | |
---|
| 3214 | ! ---------------------------------------------------------------------- |
---|
| 3215 | ! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT |
---|
| 3216 | ! ---------------------------------------------------------------------- |
---|
| 3217 | DSMDZ2 = (SH2O (K) - SH2O (K +1)) / (DENOM * 0.5) |
---|
| 3218 | DDZ2 = 2.0 / DENOM |
---|
| 3219 | CI (K) = - WDF2 * DDZ2 / DENOM2 |
---|
| 3220 | |
---|
| 3221 | ELSE |
---|
| 3222 | ! ---------------------------------------------------------------------- |
---|
| 3223 | ! SLOPE OF BOTTOM LAYER IS INTRODUCED |
---|
| 3224 | ! ---------------------------------------------------------------------- |
---|
| 3225 | |
---|
| 3226 | ! ---------------------------------------------------------------------- |
---|
| 3227 | ! RETRIEVE THE SOIL WATER DIFFUSIVITY AND HYDRAULIC CONDUCTIVITY FOR |
---|
| 3228 | ! THIS LAYER |
---|
| 3229 | ! ---------------------------------------------------------------------- |
---|
| 3230 | SLOPX = SLOPE |
---|
| 3231 | CALL WDFCND (WDF2,WCND2,SH2OA (NSOIL),SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
| 3232 | SICEMAX) |
---|
| 3233 | |
---|
| 3234 | ! ---------------------------------------------------------------------- |
---|
| 3235 | ! CALC A PARTIAL PRODUCT FOR LATER USE IN CALC'NG RHSTT |
---|
| 3236 | ! ---------------------------------------------------------------------- |
---|
| 3237 | |
---|
| 3238 | ! ---------------------------------------------------------------------- |
---|
| 3239 | ! SET MATRIX COEF CI TO ZERO |
---|
| 3240 | ! ---------------------------------------------------------------------- |
---|
| 3241 | DSMDZ2 = 0.0 |
---|
| 3242 | CI (K) = 0.0 |
---|
| 3243 | ! ---------------------------------------------------------------------- |
---|
| 3244 | ! CALC RHSTT FOR THIS LAYER AFTER CALC'NG ITS NUMERATOR |
---|
| 3245 | ! ---------------------------------------------------------------------- |
---|
| 3246 | END IF |
---|
| 3247 | NUMER = (WDF2 * DSMDZ2) + SLOPX * WCND2- (WDF * DSMDZ) & |
---|
| 3248 | - WCND+ ET (K) |
---|
| 3249 | |
---|
| 3250 | ! ---------------------------------------------------------------------- |
---|
| 3251 | ! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER |
---|
| 3252 | ! ---------------------------------------------------------------------- |
---|
| 3253 | RHSTT (K) = NUMER / ( - DENOM2) |
---|
| 3254 | AI (K) = - WDF * DDZ / DENOM2 |
---|
| 3255 | |
---|
| 3256 | ! ---------------------------------------------------------------------- |
---|
| 3257 | ! RESET VALUES OF WDF, WCND, DSMDZ, AND DDZ FOR LOOP TO NEXT LYR |
---|
| 3258 | ! RUNOFF2: SUB-SURFACE OR BASEFLOW RUNOFF |
---|
| 3259 | ! ---------------------------------------------------------------------- |
---|
| 3260 | BI (K) = - ( AI (K) + CI (K) ) |
---|
| 3261 | IF (K .eq. NSOIL) THEN |
---|
| 3262 | RUNOFF2 = SLOPX * WCND2 |
---|
| 3263 | END IF |
---|
| 3264 | IF (K .ne. NSOIL) THEN |
---|
| 3265 | WDF = WDF2 |
---|
| 3266 | WCND = WCND2 |
---|
| 3267 | DSMDZ = DSMDZ2 |
---|
| 3268 | DDZ = DDZ2 |
---|
| 3269 | END IF |
---|
| 3270 | END DO |
---|
| 3271 | ! ---------------------------------------------------------------------- |
---|
| 3272 | END SUBROUTINE SRT |
---|
| 3273 | ! ---------------------------------------------------------------------- |
---|
| 3274 | |
---|
| 3275 | SUBROUTINE SSTEP (SH2OOUT,SH2OIN,CMC,RHSTT,RHSCT,DT, & |
---|
| 3276 | NSOIL,SMCMAX,CMCMAX,RUNOFF3,ZSOIL,SMC,SICE, & |
---|
| 3277 | AI,BI,CI) |
---|
| 3278 | |
---|
| 3279 | ! ---------------------------------------------------------------------- |
---|
| 3280 | ! SUBROUTINE SSTEP |
---|
| 3281 | ! ---------------------------------------------------------------------- |
---|
| 3282 | ! CALCULATE/UPDATE SOIL MOISTURE CONTENT VALUES AND CANOPY MOISTURE |
---|
| 3283 | ! CONTENT VALUES. |
---|
| 3284 | ! ---------------------------------------------------------------------- |
---|
| 3285 | IMPLICIT NONE |
---|
| 3286 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 3287 | INTEGER :: I, K, KK11 |
---|
| 3288 | |
---|
| 3289 | REAL, INTENT(IN) :: CMCMAX, DT, SMCMAX |
---|
| 3290 | REAL, INTENT(OUT) :: RUNOFF3 |
---|
| 3291 | REAL, INTENT(INOUT) :: CMC |
---|
| 3292 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SH2OIN, SICE, ZSOIL |
---|
| 3293 | REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: SH2OOUT |
---|
| 3294 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: RHSTT, SMC |
---|
| 3295 | REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: AI, BI, CI |
---|
| 3296 | REAL, DIMENSION(1:NSOIL) :: RHSTTin |
---|
| 3297 | REAL, DIMENSION(1:NSOIL) :: CIin |
---|
| 3298 | REAL :: DDZ, RHSCT, STOT, WPLUS |
---|
| 3299 | |
---|
| 3300 | ! ---------------------------------------------------------------------- |
---|
| 3301 | ! CREATE 'AMOUNT' VALUES OF VARIABLES TO BE INPUT TO THE |
---|
| 3302 | ! TRI-DIAGONAL MATRIX ROUTINE. |
---|
| 3303 | ! ---------------------------------------------------------------------- |
---|
| 3304 | DO K = 1,NSOIL |
---|
| 3305 | RHSTT (K) = RHSTT (K) * DT |
---|
| 3306 | AI (K) = AI (K) * DT |
---|
| 3307 | BI (K) = 1. + BI (K) * DT |
---|
| 3308 | CI (K) = CI (K) * DT |
---|
| 3309 | END DO |
---|
| 3310 | ! ---------------------------------------------------------------------- |
---|
| 3311 | ! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 |
---|
| 3312 | ! ---------------------------------------------------------------------- |
---|
| 3313 | DO K = 1,NSOIL |
---|
| 3314 | RHSTTin (K) = RHSTT (K) |
---|
| 3315 | END DO |
---|
| 3316 | DO K = 1,NSOIL |
---|
| 3317 | CIin (K) = CI (K) |
---|
| 3318 | END DO |
---|
| 3319 | ! ---------------------------------------------------------------------- |
---|
| 3320 | ! CALL ROSR12 TO SOLVE THE TRI-DIAGONAL MATRIX |
---|
| 3321 | ! ---------------------------------------------------------------------- |
---|
| 3322 | CALL ROSR12 (CI,AI,BI,CIin,RHSTTin,RHSTT,NSOIL) |
---|
| 3323 | ! ---------------------------------------------------------------------- |
---|
| 3324 | ! SUM THE PREVIOUS SMC VALUE AND THE MATRIX SOLUTION TO GET A |
---|
| 3325 | ! NEW VALUE. MIN ALLOWABLE VALUE OF SMC WILL BE 0.02. |
---|
| 3326 | ! RUNOFF3: RUNOFF WITHIN SOIL LAYERS |
---|
| 3327 | ! ---------------------------------------------------------------------- |
---|
| 3328 | WPLUS = 0.0 |
---|
| 3329 | RUNOFF3 = 0. |
---|
| 3330 | |
---|
| 3331 | DDZ = - ZSOIL (1) |
---|
| 3332 | DO K = 1,NSOIL |
---|
| 3333 | IF (K /= 1) DDZ = ZSOIL (K - 1) - ZSOIL (K) |
---|
| 3334 | SH2OOUT (K) = SH2OIN (K) + CI (K) + WPLUS / DDZ |
---|
| 3335 | STOT = SH2OOUT (K) + SICE (K) |
---|
| 3336 | IF (STOT > SMCMAX) THEN |
---|
| 3337 | IF (K .eq. 1) THEN |
---|
| 3338 | DDZ = - ZSOIL (1) |
---|
| 3339 | ELSE |
---|
| 3340 | KK11 = K - 1 |
---|
| 3341 | DDZ = - ZSOIL (K) + ZSOIL (KK11) |
---|
| 3342 | END IF |
---|
| 3343 | WPLUS = (STOT - SMCMAX) * DDZ |
---|
| 3344 | ELSE |
---|
| 3345 | WPLUS = 0. |
---|
| 3346 | END IF |
---|
| 3347 | SMC (K) = MAX ( MIN (STOT,SMCMAX),0.02 ) |
---|
| 3348 | SH2OOUT (K) = MAX ( (SMC (K) - SICE (K)),0.0) |
---|
| 3349 | END DO |
---|
| 3350 | |
---|
| 3351 | ! ---------------------------------------------------------------------- |
---|
| 3352 | ! UPDATE CANOPY WATER CONTENT/INTERCEPTION (CMC). CONVERT RHSCT TO |
---|
| 3353 | ! AN 'AMOUNT' VALUE AND ADD TO PREVIOUS CMC VALUE TO GET NEW CMC. |
---|
| 3354 | ! ---------------------------------------------------------------------- |
---|
| 3355 | RUNOFF3 = WPLUS |
---|
| 3356 | CMC = CMC + DT * RHSCT |
---|
| 3357 | IF (CMC < 1.E-20) CMC = 0.0 |
---|
| 3358 | CMC = MIN (CMC,CMCMAX) |
---|
| 3359 | |
---|
| 3360 | ! ---------------------------------------------------------------------- |
---|
| 3361 | END SUBROUTINE SSTEP |
---|
| 3362 | ! ---------------------------------------------------------------------- |
---|
| 3363 | |
---|
| 3364 | SUBROUTINE TBND (TU,TB,ZSOIL,ZBOT,K,NSOIL,TBND1) |
---|
| 3365 | |
---|
| 3366 | ! ---------------------------------------------------------------------- |
---|
| 3367 | ! SUBROUTINE TBND |
---|
| 3368 | ! ---------------------------------------------------------------------- |
---|
| 3369 | ! CALCULATE TEMPERATURE ON THE BOUNDARY OF THE LAYER BY INTERPOLATION OF |
---|
| 3370 | ! THE MIDDLE LAYER TEMPERATURES |
---|
| 3371 | ! ---------------------------------------------------------------------- |
---|
| 3372 | IMPLICIT NONE |
---|
| 3373 | INTEGER, INTENT(IN) :: NSOIL |
---|
| 3374 | INTEGER :: K |
---|
| 3375 | REAL, INTENT(IN) :: TB, TU, ZBOT |
---|
| 3376 | REAL, INTENT(OUT) :: TBND1 |
---|
| 3377 | REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL |
---|
| 3378 | REAL :: ZB, ZUP |
---|
| 3379 | REAL, PARAMETER :: T0 = 273.15 |
---|
| 3380 | |
---|
| 3381 | ! ---------------------------------------------------------------------- |
---|
| 3382 | ! USE SURFACE TEMPERATURE ON THE TOP OF THE FIRST LAYER |
---|
| 3383 | ! ---------------------------------------------------------------------- |
---|
| 3384 | IF (K == 1) THEN |
---|
| 3385 | ZUP = 0. |
---|
| 3386 | ELSE |
---|
| 3387 | ZUP = ZSOIL (K -1) |
---|
| 3388 | END IF |
---|
| 3389 | ! ---------------------------------------------------------------------- |
---|
| 3390 | ! USE DEPTH OF THE CONSTANT BOTTOM TEMPERATURE WHEN INTERPOLATE |
---|
| 3391 | ! TEMPERATURE INTO THE LAST LAYER BOUNDARY |
---|
| 3392 | ! ---------------------------------------------------------------------- |
---|
| 3393 | IF (K == NSOIL) THEN |
---|
| 3394 | ZB = 2.* ZBOT - ZSOIL (K) |
---|
| 3395 | ELSE |
---|
| 3396 | ZB = ZSOIL (K +1) |
---|
| 3397 | END IF |
---|
| 3398 | ! ---------------------------------------------------------------------- |
---|
| 3399 | ! LINEAR INTERPOLATION BETWEEN THE AVERAGE LAYER TEMPERATURES |
---|
| 3400 | ! ---------------------------------------------------------------------- |
---|
| 3401 | |
---|
| 3402 | TBND1 = TU + (TB - TU)* (ZUP - ZSOIL (K))/ (ZUP - ZB) |
---|
| 3403 | ! ---------------------------------------------------------------------- |
---|
| 3404 | END SUBROUTINE TBND |
---|
| 3405 | ! ---------------------------------------------------------------------- |
---|
| 3406 | |
---|
| 3407 | |
---|
| 3408 | SUBROUTINE TDFCND ( DF, SMC, QZ, SMCMAX, SH2O) |
---|
| 3409 | |
---|
| 3410 | ! ---------------------------------------------------------------------- |
---|
| 3411 | ! SUBROUTINE TDFCND |
---|
| 3412 | ! ---------------------------------------------------------------------- |
---|
| 3413 | ! CALCULATE THERMAL DIFFUSIVITY AND CONDUCTIVITY OF THE SOIL FOR A GIVEN |
---|
| 3414 | ! POINT AND TIME. |
---|
| 3415 | ! ---------------------------------------------------------------------- |
---|
| 3416 | ! PETERS-LIDARD APPROACH (PETERS-LIDARD et al., 1998) |
---|
| 3417 | ! June 2001 CHANGES: FROZEN SOIL CONDITION. |
---|
| 3418 | ! ---------------------------------------------------------------------- |
---|
| 3419 | IMPLICIT NONE |
---|
| 3420 | REAL, INTENT(IN) :: QZ, SMC, SMCMAX, SH2O |
---|
| 3421 | REAL, INTENT(OUT) :: DF |
---|
| 3422 | REAL :: AKE, GAMMD, THKDRY, THKICE, THKO, & |
---|
| 3423 | THKQTZ,THKSAT,THKS,THKW,SATRATIO,XU, & |
---|
| 3424 | XUNFROZ |
---|
| 3425 | |
---|
| 3426 | ! ---------------------------------------------------------------------- |
---|
| 3427 | ! WE NOW GET QUARTZ AS AN INPUT ARGUMENT (SET IN ROUTINE REDPRM): |
---|
| 3428 | ! DATA QUARTZ /0.82, 0.10, 0.25, 0.60, 0.52, |
---|
| 3429 | ! & 0.35, 0.60, 0.40, 0.82/ |
---|
| 3430 | ! ---------------------------------------------------------------------- |
---|
| 3431 | ! IF THE SOIL HAS ANY MOISTURE CONTENT COMPUTE A PARTIAL SUM/PRODUCT |
---|
| 3432 | ! OTHERWISE USE A CONSTANT VALUE WHICH WORKS WELL WITH MOST SOILS |
---|
| 3433 | ! ---------------------------------------------------------------------- |
---|
| 3434 | ! THKW ......WATER THERMAL CONDUCTIVITY |
---|
| 3435 | ! THKQTZ ....THERMAL CONDUCTIVITY FOR QUARTZ |
---|
| 3436 | ! THKO ......THERMAL CONDUCTIVITY FOR OTHER SOIL COMPONENTS |
---|
| 3437 | ! THKS ......THERMAL CONDUCTIVITY FOR THE SOLIDS COMBINED(QUARTZ+OTHER) |
---|
| 3438 | ! THKICE ....ICE THERMAL CONDUCTIVITY |
---|
| 3439 | ! SMCMAX ....POROSITY (= SMCMAX) |
---|
| 3440 | ! QZ .........QUARTZ CONTENT (SOIL TYPE DEPENDENT) |
---|
| 3441 | ! ---------------------------------------------------------------------- |
---|
| 3442 | ! USE AS IN PETERS-LIDARD, 1998 (MODIF. FROM JOHANSEN, 1975). |
---|
| 3443 | |
---|
| 3444 | ! PABLO GRUNMANN, 08/17/98 |
---|
| 3445 | ! REFS.: |
---|
| 3446 | ! FAROUKI, O.T.,1986: THERMAL PROPERTIES OF SOILS. SERIES ON ROCK |
---|
| 3447 | ! AND SOIL MECHANICS, VOL. 11, TRANS TECH, 136 PP. |
---|
| 3448 | ! JOHANSEN, O., 1975: THERMAL CONDUCTIVITY OF SOILS. PH.D. THESIS, |
---|
| 3449 | ! UNIVERSITY OF TRONDHEIM, |
---|
| 3450 | ! PETERS-LIDARD, C. D., ET AL., 1998: THE EFFECT OF SOIL THERMAL |
---|
| 3451 | ! CONDUCTIVITY PARAMETERIZATION ON SURFACE ENERGY FLUXES |
---|
| 3452 | ! AND TEMPERATURES. JOURNAL OF THE ATMOSPHERIC SCIENCES, |
---|
| 3453 | ! VOL. 55, PP. 1209-1224. |
---|
| 3454 | ! ---------------------------------------------------------------------- |
---|
| 3455 | ! NEEDS PARAMETERS |
---|
| 3456 | ! POROSITY(SOIL TYPE): |
---|
| 3457 | ! POROS = SMCMAX |
---|
| 3458 | ! SATURATION RATIO: |
---|
| 3459 | ! PARAMETERS W/(M.K) |
---|
| 3460 | SATRATIO = SMC / SMCMAX |
---|
| 3461 | ! ICE CONDUCTIVITY: |
---|
| 3462 | THKICE = 2.2 |
---|
| 3463 | ! WATER CONDUCTIVITY: |
---|
| 3464 | THKW = 0.57 |
---|
| 3465 | ! THERMAL CONDUCTIVITY OF "OTHER" SOIL COMPONENTS |
---|
| 3466 | ! IF (QZ .LE. 0.2) THKO = 3.0 |
---|
| 3467 | THKO = 2.0 |
---|
| 3468 | ! QUARTZ' CONDUCTIVITY |
---|
| 3469 | THKQTZ = 7.7 |
---|
| 3470 | ! SOLIDS' CONDUCTIVITY |
---|
| 3471 | THKS = (THKQTZ ** QZ)* (THKO ** (1. - QZ)) |
---|
| 3472 | |
---|
| 3473 | ! UNFROZEN FRACTION (FROM 1., i.e., 100%LIQUID, TO 0. (100% FROZEN)) |
---|
| 3474 | XUNFROZ = SH2O / SMC |
---|
| 3475 | ! UNFROZEN VOLUME FOR SATURATION (POROSITY*XUNFROZ) |
---|
| 3476 | XU = XUNFROZ * SMCMAX |
---|
| 3477 | |
---|
| 3478 | ! SATURATED THERMAL CONDUCTIVITY |
---|
| 3479 | THKSAT = THKS ** (1. - SMCMAX)* THKICE ** (SMCMAX - XU)* THKW ** & |
---|
| 3480 | (XU) |
---|
| 3481 | |
---|
| 3482 | ! DRY DENSITY IN KG/M3 |
---|
| 3483 | GAMMD = (1. - SMCMAX)*2700. |
---|
| 3484 | |
---|
| 3485 | ! DRY THERMAL CONDUCTIVITY IN W.M-1.K-1 |
---|
| 3486 | THKDRY = (0.135* GAMMD+ 64.7)/ (2700. - 0.947* GAMMD) |
---|
| 3487 | ! FROZEN |
---|
| 3488 | IF ( (SH2O + 0.0005) < SMC ) THEN |
---|
| 3489 | AKE = SATRATIO |
---|
| 3490 | ! UNFROZEN |
---|
| 3491 | ! RANGE OF VALIDITY FOR THE KERSTEN NUMBER (AKE) |
---|
| 3492 | ELSE |
---|
| 3493 | |
---|
| 3494 | ! KERSTEN NUMBER (USING "FINE" FORMULA, VALID FOR SOILS CONTAINING AT |
---|
| 3495 | ! LEAST 5% OF PARTICLES WITH DIAMETER LESS THAN 2.E-6 METERS.) |
---|
| 3496 | ! (FOR "COARSE" FORMULA, SEE PETERS-LIDARD ET AL., 1998). |
---|
| 3497 | |
---|
| 3498 | IF ( SATRATIO > 0.1 ) THEN |
---|
| 3499 | |
---|
| 3500 | AKE = LOG10 (SATRATIO) + 1.0 |
---|
| 3501 | |
---|
| 3502 | ! USE K = KDRY |
---|
| 3503 | ELSE |
---|
| 3504 | |
---|
| 3505 | AKE = 0.0 |
---|
| 3506 | END IF |
---|
| 3507 | ! THERMAL CONDUCTIVITY |
---|
| 3508 | |
---|
| 3509 | END IF |
---|
| 3510 | |
---|
| 3511 | DF = AKE * (THKSAT - THKDRY) + THKDRY |
---|
| 3512 | ! ---------------------------------------------------------------------- |
---|
| 3513 | END SUBROUTINE TDFCND |
---|
| 3514 | ! ---------------------------------------------------------------------- |
---|
| 3515 | |
---|
| 3516 | SUBROUTINE TMPAVG (TAVG,TUP,TM,TDN,ZSOIL,NSOIL,K) |
---|
| 3517 | |
---|
| 3518 | ! ---------------------------------------------------------------------- |
---|
| 3519 | ! SUBROUTINE TMPAVG |
---|
| 3520 | ! ---------------------------------------------------------------------- |
---|
| 3521 | ! CALCULATE SOIL LAYER AVERAGE TEMPERATURE (TAVG) IN FREEZING/THAWING |
---|
| 3522 | ! LAYER USING UP, DOWN, AND MIDDLE LAYER TEMPERATURES (TUP, TDN, TM), |
---|
| 3523 | ! WHERE TUP IS AT TOP BOUNDARY OF LAYER, TDN IS AT BOTTOM BOUNDARY OF |
---|
| 3524 | ! LAYER. TM IS LAYER PROGNOSTIC STATE TEMPERATURE. |
---|
| 3525 | ! ---------------------------------------------------------------------- |
---|
| 3526 | IMPLICIT NONE |
---|
| 3527 | INTEGER K |
---|
| 3528 | |
---|
| 3529 | INTEGER NSOIL |
---|
| 3530 | REAL DZ |
---|
| 3531 | REAL DZH |
---|
| 3532 | REAL T0 |
---|
| 3533 | REAL TAVG |
---|
| 3534 | REAL TDN |
---|
| 3535 | REAL TM |
---|
| 3536 | REAL TUP |
---|
| 3537 | REAL X0 |
---|
| 3538 | REAL XDN |
---|
| 3539 | REAL XUP |
---|
| 3540 | |
---|
| 3541 | REAL ZSOIL (NSOIL) |
---|
| 3542 | |
---|
| 3543 | ! ---------------------------------------------------------------------- |
---|
| 3544 | PARAMETER (T0 = 2.7315E2) |
---|
| 3545 | IF (K .eq. 1) THEN |
---|
| 3546 | DZ = - ZSOIL (1) |
---|
| 3547 | ELSE |
---|
| 3548 | DZ = ZSOIL (K -1) - ZSOIL (K) |
---|
| 3549 | END IF |
---|
| 3550 | |
---|
| 3551 | DZH = DZ *0.5 |
---|
| 3552 | IF (TUP .lt. T0) THEN |
---|
| 3553 | IF (TM .lt. T0) THEN |
---|
| 3554 | ! ---------------------------------------------------------------------- |
---|
| 3555 | ! TUP, TM, TDN < T0 |
---|
| 3556 | ! ---------------------------------------------------------------------- |
---|
| 3557 | IF (TDN .lt. T0) THEN |
---|
| 3558 | TAVG = (TUP + 2.0* TM + TDN)/ 4.0 |
---|
| 3559 | ! ---------------------------------------------------------------------- |
---|
| 3560 | ! TUP & TM < T0, TDN .ge. T0 |
---|
| 3561 | ! ---------------------------------------------------------------------- |
---|
| 3562 | ELSE |
---|
| 3563 | X0 = (T0- TM) * DZH / (TDN - TM) |
---|
| 3564 | TAVG = 0.5 * (TUP * DZH + TM * (DZH + X0) + T0* ( & |
---|
| 3565 | & 2.* DZH - X0)) / DZ |
---|
| 3566 | END IF |
---|
| 3567 | ELSE |
---|
| 3568 | ! ---------------------------------------------------------------------- |
---|
| 3569 | ! TUP < T0, TM .ge. T0, TDN < T0 |
---|
| 3570 | ! ---------------------------------------------------------------------- |
---|
| 3571 | IF (TDN .lt. T0) THEN |
---|
| 3572 | XUP = (T0- TUP) * DZH / (TM - TUP) |
---|
| 3573 | XDN = DZH - (T0- TM) * DZH / (TDN - TM) |
---|
| 3574 | TAVG = 0.5 * (TUP * XUP + T0* (2.* DZ - XUP - XDN) & |
---|
| 3575 | & + TDN * XDN) / DZ |
---|
| 3576 | ! ---------------------------------------------------------------------- |
---|
| 3577 | ! TUP < T0, TM .ge. T0, TDN .ge. T0 |
---|
| 3578 | ! ---------------------------------------------------------------------- |
---|
| 3579 | ELSE |
---|
| 3580 | XUP = (T0- TUP) * DZH / (TM - TUP) |
---|
| 3581 | TAVG = 0.5 * (TUP * XUP + T0* (2.* DZ - XUP)) / DZ |
---|
| 3582 | END IF |
---|
| 3583 | END IF |
---|
| 3584 | ELSE |
---|
| 3585 | IF (TM .lt. T0) THEN |
---|
| 3586 | ! ---------------------------------------------------------------------- |
---|
| 3587 | ! TUP .ge. T0, TM < T0, TDN < T0 |
---|
| 3588 | ! ---------------------------------------------------------------------- |
---|
| 3589 | IF (TDN .lt. T0) THEN |
---|
| 3590 | XUP = DZH - (T0- TUP) * DZH / (TM - TUP) |
---|
| 3591 | TAVG = 0.5 * (T0* (DZ - XUP) + TM * (DZH + XUP) & |
---|
| 3592 | & + TDN * DZH) / DZ |
---|
| 3593 | ! ---------------------------------------------------------------------- |
---|
| 3594 | ! TUP .ge. T0, TM < T0, TDN .ge. T0 |
---|
| 3595 | ! ---------------------------------------------------------------------- |
---|
| 3596 | ELSE |
---|
| 3597 | XUP = DZH - (T0- TUP) * DZH / (TM - TUP) |
---|
| 3598 | XDN = (T0- TM) * DZH / (TDN - TM) |
---|
| 3599 | TAVG = 0.5 * (T0* (2.* DZ - XUP - XDN) + TM * & |
---|
| 3600 | & (XUP + XDN)) / DZ |
---|
| 3601 | END IF |
---|
| 3602 | ELSE |
---|
| 3603 | ! ---------------------------------------------------------------------- |
---|
| 3604 | ! TUP .ge. T0, TM .ge. T0, TDN < T0 |
---|
| 3605 | ! ---------------------------------------------------------------------- |
---|
| 3606 | IF (TDN .lt. T0) THEN |
---|
| 3607 | XDN = DZH - (T0- TM) * DZH / (TDN - TM) |
---|
| 3608 | TAVG = (T0* (DZ - XDN) +0.5* (T0+ TDN)* XDN) / DZ |
---|
| 3609 | ! ---------------------------------------------------------------------- |
---|
| 3610 | ! TUP .ge. T0, TM .ge. T0, TDN .ge. T0 |
---|
| 3611 | ! ---------------------------------------------------------------------- |
---|
| 3612 | ELSE |
---|
| 3613 | TAVG = (TUP + 2.0* TM + TDN) / 4.0 |
---|
| 3614 | END IF |
---|
| 3615 | END IF |
---|
| 3616 | END IF |
---|
| 3617 | ! ---------------------------------------------------------------------- |
---|
| 3618 | END SUBROUTINE TMPAVG |
---|
| 3619 | ! ---------------------------------------------------------------------- |
---|
| 3620 | |
---|
| 3621 | SUBROUTINE TRANSP (ET,NSOIL,ETP1,SMC,CMC,ZSOIL,SHDFAC,SMCWLT, & |
---|
| 3622 | & CMCMAX,PC,CFACTR,SMCREF,SFCTMP,Q2,NROOT, & |
---|
| 3623 | & RTDIS) |
---|
| 3624 | |
---|
| 3625 | ! ---------------------------------------------------------------------- |
---|
| 3626 | ! SUBROUTINE TRANSP |
---|
| 3627 | ! ---------------------------------------------------------------------- |
---|
| 3628 | ! CALCULATE TRANSPIRATION FOR THE VEG CLASS. |
---|
| 3629 | ! ---------------------------------------------------------------------- |
---|
| 3630 | IMPLICIT NONE |
---|
| 3631 | INTEGER I |
---|
| 3632 | INTEGER K |
---|
| 3633 | INTEGER NSOIL |
---|
| 3634 | |
---|
| 3635 | INTEGER NROOT |
---|
| 3636 | REAL CFACTR |
---|
| 3637 | REAL CMC |
---|
| 3638 | REAL CMCMAX |
---|
| 3639 | REAL DENOM |
---|
| 3640 | REAL ET (NSOIL) |
---|
| 3641 | REAL ETP1 |
---|
| 3642 | REAL ETP1A |
---|
| 3643 | !.....REAL PART(NSOIL) |
---|
| 3644 | REAL GX (NROOT) |
---|
| 3645 | REAL PC |
---|
| 3646 | REAL Q2 |
---|
| 3647 | REAL RTDIS (NSOIL) |
---|
| 3648 | REAL RTX |
---|
| 3649 | REAL SFCTMP |
---|
| 3650 | REAL SGX |
---|
| 3651 | REAL SHDFAC |
---|
| 3652 | REAL SMC (NSOIL) |
---|
| 3653 | REAL SMCREF |
---|
| 3654 | REAL SMCWLT |
---|
| 3655 | |
---|
| 3656 | ! ---------------------------------------------------------------------- |
---|
| 3657 | ! INITIALIZE PLANT TRANSP TO ZERO FOR ALL SOIL LAYERS. |
---|
| 3658 | ! ---------------------------------------------------------------------- |
---|
| 3659 | REAL ZSOIL (NSOIL) |
---|
| 3660 | DO K = 1,NSOIL |
---|
| 3661 | ET (K) = 0. |
---|
| 3662 | ! ---------------------------------------------------------------------- |
---|
| 3663 | ! CALCULATE AN 'ADJUSTED' POTENTIAL TRANSPIRATION |
---|
| 3664 | ! IF STATEMENT BELOW TO AVOID TANGENT LINEAR PROBLEMS NEAR ZERO |
---|
| 3665 | ! NOTE: GX AND OTHER TERMS BELOW REDISTRIBUTE TRANSPIRATION BY LAYER, |
---|
| 3666 | ! ET(K), AS A FUNCTION OF SOIL MOISTURE AVAILABILITY, WHILE PRESERVING |
---|
| 3667 | ! TOTAL ETP1A. |
---|
| 3668 | ! ---------------------------------------------------------------------- |
---|
| 3669 | END DO |
---|
| 3670 | IF (CMC .ne. 0.0) THEN |
---|
| 3671 | ETP1A = SHDFAC * PC * ETP1 * (1.0- (CMC / CMCMAX) ** CFACTR) |
---|
| 3672 | ELSE |
---|
| 3673 | ETP1A = SHDFAC * PC * ETP1 |
---|
| 3674 | END IF |
---|
| 3675 | SGX = 0.0 |
---|
| 3676 | DO I = 1,NROOT |
---|
| 3677 | GX (I) = ( SMC (I) - SMCWLT ) / ( SMCREF - SMCWLT ) |
---|
| 3678 | GX (I) = MAX ( MIN ( GX (I), 1. ), 0. ) |
---|
| 3679 | SGX = SGX + GX (I) |
---|
| 3680 | END DO |
---|
| 3681 | |
---|
| 3682 | SGX = SGX / NROOT |
---|
| 3683 | DENOM = 0. |
---|
| 3684 | DO I = 1,NROOT |
---|
| 3685 | RTX = RTDIS (I) + GX (I) - SGX |
---|
| 3686 | GX (I) = GX (I) * MAX ( RTX, 0. ) |
---|
| 3687 | DENOM = DENOM + GX (I) |
---|
| 3688 | END DO |
---|
| 3689 | |
---|
| 3690 | IF (DENOM .le. 0.0) DENOM = 1. |
---|
| 3691 | DO I = 1,NROOT |
---|
| 3692 | ET (I) = ETP1A * GX (I) / DENOM |
---|
| 3693 | ! ---------------------------------------------------------------------- |
---|
| 3694 | ! ABOVE CODE ASSUMES A VERTICALLY UNIFORM ROOT DISTRIBUTION |
---|
| 3695 | ! CODE BELOW TESTS A VARIABLE ROOT DISTRIBUTION |
---|
| 3696 | ! ---------------------------------------------------------------------- |
---|
| 3697 | ! ET(1) = ( ZSOIL(1) / ZSOIL(NROOT) ) * GX * ETP1A |
---|
| 3698 | ! ET(1) = ( ZSOIL(1) / ZSOIL(NROOT) ) * ETP1A |
---|
| 3699 | ! ---------------------------------------------------------------------- |
---|
| 3700 | ! USING ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
| 3701 | ! ---------------------------------------------------------------------- |
---|
| 3702 | ! ET(1) = RTDIS(1) * ETP1A |
---|
| 3703 | ! ET(1) = ETP1A * PART(1) |
---|
| 3704 | ! ---------------------------------------------------------------------- |
---|
| 3705 | ! LOOP DOWN THRU THE SOIL LAYERS REPEATING THE OPERATION ABOVE, |
---|
| 3706 | ! BUT USING THE THICKNESS OF THE SOIL LAYER (RATHER THAN THE |
---|
| 3707 | ! ABSOLUTE DEPTH OF EACH LAYER) IN THE FINAL CALCULATION. |
---|
| 3708 | ! ---------------------------------------------------------------------- |
---|
| 3709 | ! DO K = 2,NROOT |
---|
| 3710 | ! GX = ( SMC(K) - SMCWLT ) / ( SMCREF - SMCWLT ) |
---|
| 3711 | ! GX = MAX ( MIN ( GX, 1. ), 0. ) |
---|
| 3712 | ! TEST CANOPY RESISTANCE |
---|
| 3713 | ! GX = 1.0 |
---|
| 3714 | ! ET(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT))*GX*ETP1A |
---|
| 3715 | ! ET(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT))*ETP1A |
---|
| 3716 | ! ---------------------------------------------------------------------- |
---|
| 3717 | ! USING ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
| 3718 | ! ---------------------------------------------------------------------- |
---|
| 3719 | ! ET(K) = RTDIS(K) * ETP1A |
---|
| 3720 | ! ET(K) = ETP1A*PART(K) |
---|
| 3721 | ! END DO |
---|
| 3722 | END DO |
---|
| 3723 | ! ---------------------------------------------------------------------- |
---|
| 3724 | END SUBROUTINE TRANSP |
---|
| 3725 | ! ---------------------------------------------------------------------- |
---|
| 3726 | |
---|
| 3727 | SUBROUTINE WDFCND (WDF,WCND,SMC,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
| 3728 | & SICEMAX) |
---|
| 3729 | |
---|
| 3730 | ! ---------------------------------------------------------------------- |
---|
| 3731 | ! SUBROUTINE WDFCND |
---|
| 3732 | ! ---------------------------------------------------------------------- |
---|
| 3733 | ! CALCULATE SOIL WATER DIFFUSIVITY AND SOIL HYDRAULIC CONDUCTIVITY. |
---|
| 3734 | ! ---------------------------------------------------------------------- |
---|
| 3735 | IMPLICIT NONE |
---|
| 3736 | REAL BEXP |
---|
| 3737 | REAL DKSAT |
---|
| 3738 | REAL DWSAT |
---|
| 3739 | REAL EXPON |
---|
| 3740 | REAL FACTR1 |
---|
| 3741 | REAL FACTR2 |
---|
| 3742 | REAL SICEMAX |
---|
| 3743 | REAL SMC |
---|
| 3744 | REAL SMCMAX |
---|
| 3745 | REAL VKwgt |
---|
| 3746 | REAL WCND |
---|
| 3747 | |
---|
| 3748 | ! ---------------------------------------------------------------------- |
---|
| 3749 | ! CALC THE RATIO OF THE ACTUAL TO THE MAX PSBL SOIL H2O CONTENT |
---|
| 3750 | ! ---------------------------------------------------------------------- |
---|
| 3751 | REAL WDF |
---|
| 3752 | FACTR1 = 0.2 / SMCMAX |
---|
| 3753 | |
---|
| 3754 | ! ---------------------------------------------------------------------- |
---|
| 3755 | ! PREP AN EXPNTL COEF AND CALC THE SOIL WATER DIFFUSIVITY |
---|
| 3756 | ! ---------------------------------------------------------------------- |
---|
| 3757 | FACTR2 = SMC / SMCMAX |
---|
| 3758 | EXPON = BEXP + 2.0 |
---|
| 3759 | |
---|
| 3760 | ! ---------------------------------------------------------------------- |
---|
| 3761 | ! FROZEN SOIL HYDRAULIC DIFFUSIVITY. VERY SENSITIVE TO THE VERTICAL |
---|
| 3762 | ! GRADIENT OF UNFROZEN WATER. THE LATTER GRADIENT CAN BECOME VERY |
---|
| 3763 | ! EXTREME IN FREEZING/THAWING SITUATIONS, AND GIVEN THE RELATIVELY |
---|
| 3764 | ! FEW AND THICK SOIL LAYERS, THIS GRADIENT SUFFERES SERIOUS |
---|
| 3765 | ! TRUNCTION ERRORS YIELDING ERRONEOUSLY HIGH VERTICAL TRANSPORTS OF |
---|
| 3766 | ! UNFROZEN WATER IN BOTH DIRECTIONS FROM HUGE HYDRAULIC DIFFUSIVITY. |
---|
| 3767 | ! THEREFORE, WE FOUND WE HAD TO ARBITRARILY CONSTRAIN WDF |
---|
| 3768 | ! -- |
---|
| 3769 | ! VERSION D_10CM: ........ FACTR1 = 0.2/SMCMAX |
---|
| 3770 | ! WEIGHTED APPROACH...................... PABLO GRUNMANN, 28_SEP_1999. |
---|
| 3771 | ! ---------------------------------------------------------------------- |
---|
| 3772 | WDF = DWSAT * FACTR2 ** EXPON |
---|
| 3773 | IF (SICEMAX .gt. 0.0) THEN |
---|
| 3774 | VKWGT = 1./ (1. + (500.* SICEMAX)**3.) |
---|
| 3775 | WDF = VKWGT * WDF + (1. - VKWGT)* DWSAT * FACTR1** EXPON |
---|
| 3776 | ! ---------------------------------------------------------------------- |
---|
| 3777 | ! RESET THE EXPNTL COEF AND CALC THE HYDRAULIC CONDUCTIVITY |
---|
| 3778 | ! ---------------------------------------------------------------------- |
---|
| 3779 | END IF |
---|
| 3780 | EXPON = (2.0 * BEXP) + 3.0 |
---|
| 3781 | WCND = DKSAT * FACTR2 ** EXPON |
---|
| 3782 | |
---|
| 3783 | ! ---------------------------------------------------------------------- |
---|
| 3784 | END SUBROUTINE WDFCND |
---|
| 3785 | ! ---------------------------------------------------------------------- |
---|
| 3786 | |
---|
| 3787 | SUBROUTINE SFCDIF_off (ZLM,Z0,THZ0,THLM,SFCSPD,CZIL,AKMS,AKHS) |
---|
| 3788 | |
---|
| 3789 | ! ---------------------------------------------------------------------- |
---|
| 3790 | ! SUBROUTINE SFCDIF (renamed SFCDIF_off to avoid clash with Eta PBL) |
---|
| 3791 | ! ---------------------------------------------------------------------- |
---|
| 3792 | ! CALCULATE SURFACE LAYER EXCHANGE COEFFICIENTS VIA ITERATIVE PROCESS. |
---|
| 3793 | ! SEE CHEN ET AL (1997, BLM) |
---|
| 3794 | ! ---------------------------------------------------------------------- |
---|
| 3795 | |
---|
| 3796 | IMPLICIT NONE |
---|
| 3797 | REAL WWST, WWST2, G, VKRM, EXCM, BETA, BTG, ELFC, WOLD, WNEW |
---|
| 3798 | REAL PIHF, EPSU2, EPSUST, EPSIT, EPSA, ZTMIN, ZTMAX, HPBL, & |
---|
| 3799 | & SQVISC |
---|
| 3800 | REAL RIC, RRIC, FHNEU, RFC, RFAC, ZZ, PSLMU, PSLMS, PSLHU, & |
---|
| 3801 | & PSLHS |
---|
| 3802 | REAL XX, PSPMU, YY, PSPMS, PSPHU, PSPHS, ZLM, Z0, THZ0, THLM |
---|
| 3803 | REAL SFCSPD, CZIL, AKMS, AKHS, ZILFC, ZU, ZT, RDZ, CXCH |
---|
| 3804 | REAL DTHV, DU2, BTGH, WSTAR2, USTAR, ZSLU, ZSLT, RLOGU, RLOGT |
---|
| 3805 | REAL RLMO, ZETALT, ZETALU, ZETAU, ZETAT, XLU4, XLT4, XU4, XT4 |
---|
| 3806 | !CC ......REAL ZTFC |
---|
| 3807 | |
---|
| 3808 | REAL XLU, XLT, XU, XT, PSMZ, SIMM, PSHZ, SIMH, USTARK, RLMN, & |
---|
| 3809 | & RLMA |
---|
| 3810 | |
---|
| 3811 | INTEGER ITRMX, ILECH, ITR |
---|
| 3812 | PARAMETER & |
---|
| 3813 | & (WWST = 1.2,WWST2 = WWST * WWST,G = 9.8,VKRM = 0.40, & |
---|
| 3814 | & EXCM = 0.001 & |
---|
| 3815 | & ,BETA = 1./270.,BTG = BETA * G,ELFC = VKRM * BTG & |
---|
| 3816 | & ,WOLD =.15,WNEW = 1. - WOLD,ITRMX = 05, & |
---|
| 3817 | & PIHF = 3.14159265/2.) |
---|
| 3818 | PARAMETER & |
---|
| 3819 | & (EPSU2 = 1.E-4,EPSUST = 0.07,EPSIT = 1.E-4,EPSA = 1.E-8 & |
---|
| 3820 | & ,ZTMIN = -5.,ZTMAX = 1.,HPBL = 1000.0 & |
---|
| 3821 | & ,SQVISC = 258.2) |
---|
| 3822 | PARAMETER & |
---|
| 3823 | & (RIC = 0.183,RRIC = 1.0/ RIC,FHNEU = 0.8,RFC = 0.191 & |
---|
| 3824 | & ,RFAC = RIC / (FHNEU * RFC * RFC)) |
---|
| 3825 | |
---|
| 3826 | ! ---------------------------------------------------------------------- |
---|
| 3827 | ! NOTE: THE TWO CODE BLOCKS BELOW DEFINE FUNCTIONS |
---|
| 3828 | ! ---------------------------------------------------------------------- |
---|
| 3829 | ! LECH'S SURFACE FUNCTIONS |
---|
| 3830 | ! ---------------------------------------------------------------------- |
---|
| 3831 | PSLMU (ZZ)= -0.96* log (1.0-4.5* ZZ) |
---|
| 3832 | PSLMS (ZZ)= ZZ * RRIC -2.076* (1. -1./ (ZZ +1.)) |
---|
| 3833 | PSLHU (ZZ)= -0.96* log (1.0-4.5* ZZ) |
---|
| 3834 | |
---|
| 3835 | ! ---------------------------------------------------------------------- |
---|
| 3836 | ! PAULSON'S SURFACE FUNCTIONS |
---|
| 3837 | ! ---------------------------------------------------------------------- |
---|
| 3838 | PSLHS (ZZ)= ZZ * RFAC -2.076* (1. -1./ (ZZ +1.)) |
---|
| 3839 | PSPMU (XX)= -2.* log ( (XX +1.)*0.5) - log ( (XX * XX +1.)*0.5) & |
---|
| 3840 | & +2.* ATAN (XX) & |
---|
| 3841 | &- PIHF |
---|
| 3842 | PSPMS (YY)= 5.* YY |
---|
| 3843 | PSPHU (XX)= -2.* log ( (XX * XX +1.)*0.5) |
---|
| 3844 | |
---|
| 3845 | ! ---------------------------------------------------------------------- |
---|
| 3846 | ! THIS ROUTINE SFCDIF CAN HANDLE BOTH OVER OPEN WATER (SEA, OCEAN) AND |
---|
| 3847 | ! OVER SOLID SURFACE (LAND, SEA-ICE). |
---|
| 3848 | ! ---------------------------------------------------------------------- |
---|
| 3849 | PSPHS (YY)= 5.* YY |
---|
| 3850 | |
---|
| 3851 | ! ---------------------------------------------------------------------- |
---|
| 3852 | ! ZTFC: RATIO OF ZOH/ZOM LESS OR EQUAL THAN 1 |
---|
| 3853 | ! C......ZTFC=0.1 |
---|
| 3854 | ! CZIL: CONSTANT C IN Zilitinkevich, S. S.1995,:NOTE ABOUT ZT |
---|
| 3855 | ! ---------------------------------------------------------------------- |
---|
| 3856 | ILECH = 0 |
---|
| 3857 | |
---|
| 3858 | ! ---------------------------------------------------------------------- |
---|
| 3859 | ZILFC = - CZIL * VKRM * SQVISC |
---|
| 3860 | ! C.......ZT=Z0*ZTFC |
---|
| 3861 | ZU = Z0 |
---|
| 3862 | RDZ = 1./ ZLM |
---|
| 3863 | CXCH = EXCM * RDZ |
---|
| 3864 | DTHV = THLM - THZ0 |
---|
| 3865 | |
---|
| 3866 | ! ---------------------------------------------------------------------- |
---|
| 3867 | ! BELJARS CORRECTION OF USTAR |
---|
| 3868 | ! ---------------------------------------------------------------------- |
---|
| 3869 | DU2 = MAX (SFCSPD * SFCSPD,EPSU2) |
---|
| 3870 | !cc If statements to avoid TANGENT LINEAR problems near zero |
---|
| 3871 | BTGH = BTG * HPBL |
---|
| 3872 | IF (BTGH * AKHS * DTHV .ne. 0.0) THEN |
---|
| 3873 | WSTAR2 = WWST2* ABS (BTGH * AKHS * DTHV)** (2./3.) |
---|
| 3874 | ELSE |
---|
| 3875 | WSTAR2 = 0.0 |
---|
| 3876 | END IF |
---|
| 3877 | |
---|
| 3878 | ! ---------------------------------------------------------------------- |
---|
| 3879 | ! ZILITINKEVITCH APPROACH FOR ZT |
---|
| 3880 | ! ---------------------------------------------------------------------- |
---|
| 3881 | USTAR = MAX (SQRT (AKMS * SQRT (DU2+ WSTAR2)),EPSUST) |
---|
| 3882 | |
---|
| 3883 | ! ---------------------------------------------------------------------- |
---|
| 3884 | ZT = EXP (ZILFC * SQRT (USTAR * Z0))* Z0 |
---|
| 3885 | ZSLU = ZLM + ZU |
---|
| 3886 | ! PRINT*,'ZSLT=',ZSLT |
---|
| 3887 | ! PRINT*,'ZLM=',ZLM |
---|
| 3888 | ! PRINT*,'ZT=',ZT |
---|
| 3889 | |
---|
| 3890 | ZSLT = ZLM + ZT |
---|
| 3891 | RLOGU = log (ZSLU / ZU) |
---|
| 3892 | |
---|
| 3893 | RLOGT = log (ZSLT / ZT) |
---|
| 3894 | ! PRINT*,'RLMO=',RLMO |
---|
| 3895 | ! PRINT*,'ELFC=',ELFC |
---|
| 3896 | ! PRINT*,'AKHS=',AKHS |
---|
| 3897 | ! PRINT*,'DTHV=',DTHV |
---|
| 3898 | ! PRINT*,'USTAR=',USTAR |
---|
| 3899 | |
---|
| 3900 | RLMO = ELFC * AKHS * DTHV / USTAR **3 |
---|
| 3901 | ! ---------------------------------------------------------------------- |
---|
| 3902 | ! 1./MONIN-OBUKKHOV LENGTH-SCALE |
---|
| 3903 | ! ---------------------------------------------------------------------- |
---|
| 3904 | DO ITR = 1,ITRMX |
---|
| 3905 | ZETALT = MAX (ZSLT * RLMO,ZTMIN) |
---|
| 3906 | RLMO = ZETALT / ZSLT |
---|
| 3907 | ZETALU = ZSLU * RLMO |
---|
| 3908 | ZETAU = ZU * RLMO |
---|
| 3909 | |
---|
| 3910 | ZETAT = ZT * RLMO |
---|
| 3911 | IF (ILECH .eq. 0) THEN |
---|
| 3912 | IF (RLMO .lt. 0.)THEN |
---|
| 3913 | XLU4 = 1. -16.* ZETALU |
---|
| 3914 | XLT4 = 1. -16.* ZETALT |
---|
| 3915 | XU4 = 1. -16.* ZETAU |
---|
| 3916 | |
---|
| 3917 | XT4 = 1. -16.* ZETAT |
---|
| 3918 | XLU = SQRT (SQRT (XLU4)) |
---|
| 3919 | XLT = SQRT (SQRT (XLT4)) |
---|
| 3920 | XU = SQRT (SQRT (XU4)) |
---|
| 3921 | |
---|
| 3922 | XT = SQRT (SQRT (XT4)) |
---|
| 3923 | ! PRINT*,'-----------1------------' |
---|
| 3924 | ! PRINT*,'PSMZ=',PSMZ |
---|
| 3925 | ! PRINT*,'PSPMU(ZETAU)=',PSPMU(ZETAU) |
---|
| 3926 | ! PRINT*,'XU=',XU |
---|
| 3927 | ! PRINT*,'------------------------' |
---|
| 3928 | PSMZ = PSPMU (XU) |
---|
| 3929 | SIMM = PSPMU (XLU) - PSMZ + RLOGU |
---|
| 3930 | PSHZ = PSPHU (XT) |
---|
| 3931 | SIMH = PSPHU (XLT) - PSHZ + RLOGT |
---|
| 3932 | ELSE |
---|
| 3933 | ZETALU = MIN (ZETALU,ZTMAX) |
---|
| 3934 | ZETALT = MIN (ZETALT,ZTMAX) |
---|
| 3935 | ! PRINT*,'-----------2------------' |
---|
| 3936 | ! PRINT*,'PSMZ=',PSMZ |
---|
| 3937 | ! PRINT*,'PSPMS(ZETAU)=',PSPMS(ZETAU) |
---|
| 3938 | ! PRINT*,'ZETAU=',ZETAU |
---|
| 3939 | ! PRINT*,'------------------------' |
---|
| 3940 | PSMZ = PSPMS (ZETAU) |
---|
| 3941 | SIMM = PSPMS (ZETALU) - PSMZ + RLOGU |
---|
| 3942 | PSHZ = PSPHS (ZETAT) |
---|
| 3943 | SIMH = PSPHS (ZETALT) - PSHZ + RLOGT |
---|
| 3944 | END IF |
---|
| 3945 | ! ---------------------------------------------------------------------- |
---|
| 3946 | ! LECH'S FUNCTIONS |
---|
| 3947 | ! ---------------------------------------------------------------------- |
---|
| 3948 | ELSE |
---|
| 3949 | IF (RLMO .lt. 0.)THEN |
---|
| 3950 | ! PRINT*,'-----------3------------' |
---|
| 3951 | ! PRINT*,'PSMZ=',PSMZ |
---|
| 3952 | ! PRINT*,'PSLMU(ZETAU)=',PSLMU(ZETAU) |
---|
| 3953 | ! PRINT*,'ZETAU=',ZETAU |
---|
| 3954 | ! PRINT*,'------------------------' |
---|
| 3955 | PSMZ = PSLMU (ZETAU) |
---|
| 3956 | SIMM = PSLMU (ZETALU) - PSMZ + RLOGU |
---|
| 3957 | PSHZ = PSLHU (ZETAT) |
---|
| 3958 | SIMH = PSLHU (ZETALT) - PSHZ + RLOGT |
---|
| 3959 | ELSE |
---|
| 3960 | ZETALU = MIN (ZETALU,ZTMAX) |
---|
| 3961 | |
---|
| 3962 | ZETALT = MIN (ZETALT,ZTMAX) |
---|
| 3963 | ! PRINT*,'-----------4------------' |
---|
| 3964 | ! PRINT*,'PSMZ=',PSMZ |
---|
| 3965 | ! PRINT*,'PSLMS(ZETAU)=',PSLMS(ZETAU) |
---|
| 3966 | ! PRINT*,'ZETAU=',ZETAU |
---|
| 3967 | ! PRINT*,'------------------------' |
---|
| 3968 | PSMZ = PSLMS (ZETAU) |
---|
| 3969 | SIMM = PSLMS (ZETALU) - PSMZ + RLOGU |
---|
| 3970 | PSHZ = PSLHS (ZETAT) |
---|
| 3971 | SIMH = PSLHS (ZETALT) - PSHZ + RLOGT |
---|
| 3972 | END IF |
---|
| 3973 | ! ---------------------------------------------------------------------- |
---|
| 3974 | ! BELJAARS CORRECTION FOR USTAR |
---|
| 3975 | ! ---------------------------------------------------------------------- |
---|
| 3976 | END IF |
---|
| 3977 | |
---|
| 3978 | ! ---------------------------------------------------------------------- |
---|
| 3979 | ! ZILITINKEVITCH FIX FOR ZT |
---|
| 3980 | ! ---------------------------------------------------------------------- |
---|
| 3981 | USTAR = MAX (SQRT (AKMS * SQRT (DU2+ WSTAR2)),EPSUST) |
---|
| 3982 | |
---|
| 3983 | ZT = EXP (ZILFC * SQRT (USTAR * Z0))* Z0 |
---|
| 3984 | ZSLT = ZLM + ZT |
---|
| 3985 | !----------------------------------------------------------------------- |
---|
| 3986 | RLOGT = log (ZSLT / ZT) |
---|
| 3987 | USTARK = USTAR * VKRM |
---|
| 3988 | AKMS = MAX (USTARK / SIMM,CXCH) |
---|
| 3989 | !----------------------------------------------------------------------- |
---|
| 3990 | ! IF STATEMENTS TO AVOID TANGENT LINEAR PROBLEMS NEAR ZERO |
---|
| 3991 | !----------------------------------------------------------------------- |
---|
| 3992 | AKHS = MAX (USTARK / SIMH,CXCH) |
---|
| 3993 | IF (BTGH * AKHS * DTHV .ne. 0.0) THEN |
---|
| 3994 | WSTAR2 = WWST2* ABS (BTGH * AKHS * DTHV)** (2./3.) |
---|
| 3995 | ELSE |
---|
| 3996 | WSTAR2 = 0.0 |
---|
| 3997 | END IF |
---|
| 3998 | !----------------------------------------------------------------------- |
---|
| 3999 | RLMN = ELFC * AKHS * DTHV / USTAR **3 |
---|
| 4000 | !----------------------------------------------------------------------- |
---|
| 4001 | ! IF(ABS((RLMN-RLMO)/RLMA).LT.EPSIT) GO TO 110 |
---|
| 4002 | !----------------------------------------------------------------------- |
---|
| 4003 | RLMA = RLMO * WOLD+ RLMN * WNEW |
---|
| 4004 | !----------------------------------------------------------------------- |
---|
| 4005 | RLMO = RLMA |
---|
| 4006 | ! PRINT*,'----------------------------' |
---|
| 4007 | ! PRINT*,'SFCDIF OUTPUT ! ! ! ! ! ! ! ! ! ! ! !' |
---|
| 4008 | |
---|
| 4009 | ! PRINT*,'ZLM=',ZLM |
---|
| 4010 | ! PRINT*,'Z0=',Z0 |
---|
| 4011 | ! PRINT*,'THZ0=',THZ0 |
---|
| 4012 | ! PRINT*,'THLM=',THLM |
---|
| 4013 | ! PRINT*,'SFCSPD=',SFCSPD |
---|
| 4014 | ! PRINT*,'CZIL=',CZIL |
---|
| 4015 | ! PRINT*,'AKMS=',AKMS |
---|
| 4016 | ! PRINT*,'AKHS=',AKHS |
---|
| 4017 | ! PRINT*,'----------------------------' |
---|
| 4018 | |
---|
| 4019 | END DO |
---|
| 4020 | ! ---------------------------------------------------------------------- |
---|
| 4021 | END SUBROUTINE SFCDIF_off |
---|
| 4022 | ! ---------------------------------------------------------------------- |
---|
| 4023 | |
---|
| 4024 | END MODULE module_sf_noahlsm |
---|