1 | !WRF:MODEL_LAYER:PHYSICS |
---|
2 | ! |
---|
3 | MODULE MODULE_SF_LSM_NMM |
---|
4 | |
---|
5 | USE MODULE_MPP |
---|
6 | USE MODULE_MODEL_CONSTANTS |
---|
7 | |
---|
8 | REAL, SAVE :: SCFX(30) |
---|
9 | |
---|
10 | INTEGER, SAVE :: ISEASON |
---|
11 | CHARACTER*256 :: errmess |
---|
12 | |
---|
13 | CONTAINS |
---|
14 | |
---|
15 | !----------------------------------------------------------------------- |
---|
16 | SUBROUTINE NMMLSM(DZ8W,QV3D,P8W3D,RHO3D, & |
---|
17 | & T3D,TH3D,TSK,CHS, & |
---|
18 | & HFX,QFX,QGH,GSW,GLW,ELFLX,RMOL, & ! added for WRF CHEM |
---|
19 | & SMSTAV,SMSTOT,SFCRUNOFF, & |
---|
20 | & UDRUNOFF,IVGTYP,ISLTYP,VEGFRA,SFCEVP,POTEVP, & |
---|
21 | & GRDFLX,SFCEXC,ACSNOW,ACSNOM,SNOPCX, & |
---|
22 | & ALBSF,TMN,XLAND,XICE,QZ0, & |
---|
23 | & TH2,Q2,SNOWC,CHS2,QSFC,TBOT,CHKLOWQ,RAINBL, & |
---|
24 | & NUM_SOIL_LAYERS,DT,DZS,ITIMESTEP, & |
---|
25 | & SMOIS,TSLB,SNOW,CANWAT,CPM,ROVCP,SR, & |
---|
26 | & ALB,SNOALB,SMLIQ,SNOWH, & |
---|
27 | & IDS,IDE, JDS,JDE, KDS,KDE, & |
---|
28 | & IMS,IME, JMS,JME, KMS,KME, & |
---|
29 | & ITS,ITE, JTS,JTE, KTS,KTE ) |
---|
30 | !----------------------------------------------------------------------- |
---|
31 | !----------------------------------------------------------------------- |
---|
32 | IMPLICIT NONE |
---|
33 | !----------------------------------------------------------------------- |
---|
34 | !----------------------------------------------------------------------- |
---|
35 | !-- DZ8W thickness of layers (m) |
---|
36 | !-- T3D temperature (K) |
---|
37 | !-- QV3D 3D water vapor mixing ratio (Kg/Kg) |
---|
38 | !-- P8W3D 3D pressure on layer interfaces (Pa) |
---|
39 | !-- FLHC exchange coefficient for heat (m/s) |
---|
40 | !-- FLQC exchange coefficient for moisture (m/s) |
---|
41 | !-- PSFC surface pressure (Pa) |
---|
42 | !-- XLAND land mask (1 for land, 2 for water) |
---|
43 | !-- TMN soil temperature at lower boundary (K) |
---|
44 | !-- HFX upward heat flux at the surface (W/m^2) |
---|
45 | !-- QFX upward moisture flux at the surface (kg/m^2/s) |
---|
46 | !-- TSK surface temperature (K) |
---|
47 | !-- GSW NET downward short wave flux at ground surface (W/m^2) |
---|
48 | !-- GLW downward long wave flux at ground surface (W/m^2) |
---|
49 | !-- ELFLX actual latent heat flux (w m-2: positive, if up from surface) |
---|
50 | !-- SFCEVP accumulated surface evaporation (W/m^2) |
---|
51 | !-- POTEVP accumulated potential evaporation (W/m^2) |
---|
52 | !-- CAPG heat capacity for soil (J/K/m^3) |
---|
53 | !-- THC thermal inertia (Cal/cm/K/s^0.5) |
---|
54 | !-- TBOT bottom soil temperature (local yearly-mean sfc air temperature) |
---|
55 | !-- SNOWC flag indicating snow coverage (1 for snow cover) |
---|
56 | !-- EMISS surface emissivity (between 0 and 1) |
---|
57 | !-- DELTSM time step (second) |
---|
58 | !-- ROVCP R/CP |
---|
59 | !-- SR fraction of frozen precip (0.0 to 1.0) |
---|
60 | !-- XLV latent heat of melting (J/kg) |
---|
61 | !-- DTMIN time step (minute) |
---|
62 | !-- IFSNOW ifsnow=1 for snow-cover effects |
---|
63 | !-- SVP1 constant for saturation vapor pressure (kPa) |
---|
64 | !-- SVP2 constant for saturation vapor pressure (dimensionless) |
---|
65 | !-- SVP3 constant for saturation vapor pressure (K) |
---|
66 | !-- SVPT0 constant for saturation vapor pressure (K) |
---|
67 | !-- EP1 constant for virtual temperature (R_v/R_d - 1) (dimensionless) |
---|
68 | !-- EP2 constant for specific humidity calculation |
---|
69 | ! (R_d/R_v) (dimensionless) |
---|
70 | !-- KARMAN Von Karman constant |
---|
71 | !-- EOMEG angular velocity of earth's rotation (rad/s) |
---|
72 | !-- STBOLT Stefan-Boltzmann constant (W/m^2/K^4) |
---|
73 | !-- STEM soil temperature in 5-layer model |
---|
74 | !-- ZS depths of centers of soil layers |
---|
75 | !-- DZS thicknesses of soil layers |
---|
76 | !-- num_soil_layers the number of soil layers |
---|
77 | !-- ACSNOW accumulated snowfall (water equivalent) (mm) |
---|
78 | !-- ACSNOM accumulated snowmelt (water equivalent) (mm) |
---|
79 | !-- SNOPCX snow phase change heat flux (W/m^2) |
---|
80 | !-- ids start index for i in domain |
---|
81 | !-- ide end index for i in domain |
---|
82 | !-- jds start index for j in domain |
---|
83 | !-- jde end index for j in domain |
---|
84 | !-- kds start index for k in domain |
---|
85 | !-- kde end index for k in domain |
---|
86 | !-- ims start index for i in memory |
---|
87 | !-- ime end index for i in memory |
---|
88 | !-- jms start index for j in memory |
---|
89 | !-- jme end index for j in memory |
---|
90 | !-- kms start index for k in memory |
---|
91 | !-- kme end index for k in memory |
---|
92 | !-- its start index for i in tile |
---|
93 | !-- ite end index for i in tile |
---|
94 | !-- jts start index for j in tile |
---|
95 | !-- jte end index for j in tile |
---|
96 | !-- kts start index for k in tile |
---|
97 | !-- kte end index for k in tile |
---|
98 | !----------------------------------------------------------------------- |
---|
99 | INTEGER,INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE, & |
---|
100 | & IMS,IME,JMS,JME,KMS,KME, & |
---|
101 | & ITS,ITE,JTS,JTE,KTS,KTE |
---|
102 | ! |
---|
103 | INTEGER,INTENT(IN) :: NUM_SOIL_LAYERS,ITIMESTEP |
---|
104 | ! |
---|
105 | REAL,INTENT(IN) :: DT,ROVCP |
---|
106 | ! |
---|
107 | REAL,DIMENSION(IMS:IME,1:NUM_SOIL_LAYERS,JMS:JME), & |
---|
108 | & INTENT(INOUT) :: SMOIS, & ! new |
---|
109 | SMLIQ, & ! new |
---|
110 | TSLB ! |
---|
111 | |
---|
112 | REAL,DIMENSION(1:NUM_SOIL_LAYERS),INTENT(IN) :: DZS |
---|
113 | ! |
---|
114 | REAL,DIMENSION(ims:ime,jms:jme),INTENT(INOUT) :: & |
---|
115 | & TSK, & !was TGB (temperature) |
---|
116 | & HFX, & |
---|
117 | & QFX, & |
---|
118 | & QSFC,& |
---|
119 | & SNOW, & !new |
---|
120 | & SNOWH, & !new |
---|
121 | & ALB, & |
---|
122 | & SNOALB, & |
---|
123 | & ALBSF, & |
---|
124 | & SNOWC, & |
---|
125 | & CANWAT, & ! new |
---|
126 | & SMSTAV, & |
---|
127 | & SMSTOT, & |
---|
128 | & SFCRUNOFF, & |
---|
129 | & UDRUNOFF, & |
---|
130 | & SFCEVP, & |
---|
131 | & POTEVP, & |
---|
132 | & GRDFLX, & |
---|
133 | & ACSNOW, & |
---|
134 | & ACSNOM, & |
---|
135 | & SNOPCX, & |
---|
136 | & Q2, & |
---|
137 | & TH2, & |
---|
138 | & SFCEXC |
---|
139 | |
---|
140 | INTEGER,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: IVGTYP, & |
---|
141 | ISLTYP |
---|
142 | |
---|
143 | REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: TMN, & |
---|
144 | XLAND, & |
---|
145 | XICE, & |
---|
146 | VEGFRA, & |
---|
147 | GSW, & |
---|
148 | GLW, & |
---|
149 | QZ0, & |
---|
150 | SR |
---|
151 | |
---|
152 | REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: QV3D, & |
---|
153 | P8W3D, & |
---|
154 | RHO3D, & |
---|
155 | TH3D, & |
---|
156 | T3D, & |
---|
157 | DZ8W |
---|
158 | |
---|
159 | ! |
---|
160 | REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: RAINBL |
---|
161 | ! |
---|
162 | REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: CHS2, & |
---|
163 | CHS, & |
---|
164 | QGH, & |
---|
165 | CPM |
---|
166 | ! |
---|
167 | REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(OUT) :: TBOT |
---|
168 | ! |
---|
169 | REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(OUT) :: CHKLOWQ, & |
---|
170 | ELFLX |
---|
171 | ! added for WRF-CHEM, 20041205, JM -- not used in this routine as yet |
---|
172 | REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(INOUT) :: RMOL |
---|
173 | |
---|
174 | ! LOCAL VARS |
---|
175 | |
---|
176 | REAL,DIMENSION(ITS:ITE) :: QV1D, & |
---|
177 | & T1D, & |
---|
178 | & TH1D, & |
---|
179 | & ZA1D, & |
---|
180 | & P8W1D, & |
---|
181 | & PSFC1D, & |
---|
182 | & RHO1D, & |
---|
183 | & PREC1D |
---|
184 | |
---|
185 | INTEGER :: I,J |
---|
186 | REAL :: RATIOMX |
---|
187 | !----------------------------------------------------------------------- |
---|
188 | !----------------------------------------------------------------------- |
---|
189 | |
---|
190 | DO J=JTS,JTE |
---|
191 | |
---|
192 | DO I=ITS,ITE |
---|
193 | T1D(I) = T3D(I,1,J) |
---|
194 | TH1D(I) = TH3D(I,1,J) |
---|
195 | !!! QV1D(I) = QV3D(I,1,J) |
---|
196 | RATIOMX = QV3D(I,1,J) |
---|
197 | QV1D(I) = RATIOMX/(1.+RATIOMX) |
---|
198 | P8W1D(I) = (P8W3D(I,KTS+1,j)+P8W3D(i,KTS,j))*0.5 |
---|
199 | PSFC1D(I) = P8W3D(I,1,J) |
---|
200 | ZA1D(I) = 0.5*DZ8W(I,1,J) |
---|
201 | RHO1D(I) = RHO3D(I,1,J) |
---|
202 | PREC1D(I) = RAINBL(I,J)/DT |
---|
203 | ENDDO |
---|
204 | |
---|
205 | !FLHC = SFCEXC |
---|
206 | |
---|
207 | !----------------------------------------------------------------------- |
---|
208 | CALL SURFCE(J,ZA1D,QV1D,P8W1D,PSFC1D,RHO1D,T1D,TH1D,TSK, & |
---|
209 | CHS(IMS,J),PREC1D,HFX,QFX,QGH(IMS,J),GSW,GLW, & |
---|
210 | SMSTAV,SMSTOT,SFCRUNOFF, & |
---|
211 | UDRUNOFF,IVGTYP,ISLTYP,VEGFRA,SFCEVP,POTEVP,GRDFLX, & |
---|
212 | ELFLX,SFCEXC,ACSNOW,ACSNOM,SNOPCX, & |
---|
213 | ALBSF,TMN,XLAND,XICE,QZ0, & |
---|
214 | TH2,Q2,SNOWC,CHS2(IMS,J),QSFC,TBOT,CHKLOWQ, & |
---|
215 | NUM_SOIL_LAYERS,DT,DZS,ITIMESTEP, & |
---|
216 | SMOIS,TSLB,SNOW,CANWAT,CPM(IMS,J),ROVCP,SR, & |
---|
217 | ALB,SNOALB,SMLIQ,SNOWH, & |
---|
218 | IMS,IME,JMS,JME,KMS,KME, & |
---|
219 | ITS,ITE,JTS,JTE,KTS,KTE ) |
---|
220 | ! |
---|
221 | ENDDO |
---|
222 | |
---|
223 | END SUBROUTINE NMMLSM |
---|
224 | |
---|
225 | !----------------------------------------------------------------------- |
---|
226 | !----------------------------------------------------------------------- |
---|
227 | SUBROUTINE SURFCE(J,ZA,QV,P8W,PSFC,RHO,T,TH,TSK,CHS,PREC,HFX,QFX, & |
---|
228 | QGH,GSW,GLW,SMSTAV,SMSTOT,SFCRUNOFF,UDRUNOFF, & |
---|
229 | IVGTYP,ISLTYP,VEGFRA,SFCEVP,POTEVP,GRDFLX, & |
---|
230 | ELFLX,SFCEXC,ACSNOW,ACSNOM,SNOPCX, & |
---|
231 | ALBSF,TMN,XLAND,XICE,QZ0, & |
---|
232 | TH2,Q2,SNOWC,CHS2,QSFC,TBOT,CHKLOWQ, & |
---|
233 | NUM_SOIL_LAYERS,DT,DZS,ITIMESTEP, & |
---|
234 | SMOIS,TSLB,SNOW,CANWAT,CPM,ROVCP,SR, & |
---|
235 | ALB,SNOALB,SMLIQ,SNOWH, & |
---|
236 | IMS,IME,JMS,JME,KMS,KME, & |
---|
237 | ITS,ITE,JTS,JTE,KTS,KTE ) |
---|
238 | !------------------------------------------------------------------------ |
---|
239 | IMPLICIT NONE |
---|
240 | !------------------------------------------------------------------------ |
---|
241 | !$$$ SUBPROGRAM DOCUMENTATION BLOCK |
---|
242 | ! . . . |
---|
243 | ! SUBPROGRAM: SURFCE CALCULATE SURFACE CONDITIONS |
---|
244 | ! PRGRMMR: F. CHEN DATE: 97-12-06 |
---|
245 | ! |
---|
246 | ! ABSTRACT: |
---|
247 | ! THIS ROUTINE IS THE DRIVER FOR COMPUTATION OF GROUND CONDITIONS |
---|
248 | ! BY USING A LAND SURFACE MODEL (LSM). |
---|
249 | ! |
---|
250 | ! PROGRAM HISTORY LOG: |
---|
251 | ! 97-12-06 CHEN - ORIGINATOR |
---|
252 | ! |
---|
253 | ! REFERENCES: |
---|
254 | ! PAN AND MAHRT (1987) BOUN. LAYER METEOR. |
---|
255 | ! CHEN ET AL. (1996) J. GEOPHYS. RES. |
---|
256 | ! CHEN ET AL. (1997) BOUN. LAYER METEOR. |
---|
257 | ! CHEN and Dudhia (2000) Mon. Wea. Rev. |
---|
258 | ! |
---|
259 | ! SUBPROGRAMS CALLED: |
---|
260 | ! SFLX |
---|
261 | ! |
---|
262 | ! SET LOCAL PARAMETERS. |
---|
263 | !---------------------------------------------------------------------- |
---|
264 | INTEGER, INTENT(IN ) :: IMS,IME, JMS,JME, KMS,KME, & |
---|
265 | ITS,ITE, JTS,JTE, KTS,KTE, & |
---|
266 | J,ITIMESTEP |
---|
267 | |
---|
268 | INTEGER , INTENT(IN) :: NUM_SOIL_LAYERS |
---|
269 | |
---|
270 | REAL, INTENT(IN ) :: DT,ROVCP |
---|
271 | |
---|
272 | REAL, DIMENSION(1:num_soil_layers), INTENT(IN)::DZS |
---|
273 | |
---|
274 | |
---|
275 | REAL, PARAMETER :: PQ0=379.90516 |
---|
276 | REAL, PARAMETER :: TRESH=.95E0,A2=17.2693882,A3=273.16,A4=35.86, & |
---|
277 | T0=273.16E0,T1=274.16E0,ROW=1.E3, & |
---|
278 | ELWV=2.50E6,ELIV=XLS,ELIW=XLF, & |
---|
279 | A23M4=A2*(A3-A4), RLIVWV=ELIV/ELWV, & |
---|
280 | ROWLIW=ROW*ELIW,ROWLIV=ROW*ELIV,CAPA=R_D/CP |
---|
281 | |
---|
282 | INTEGER, PARAMETER :: NROOT=3 |
---|
283 | ! |
---|
284 | REAL, DIMENSION( ims:ime , 1:num_soil_layers, jms:jme ), & |
---|
285 | INTENT(INOUT) :: SMOIS, & ! new |
---|
286 | SMLIQ, & ! new |
---|
287 | TSLB ! new !STEMP |
---|
288 | |
---|
289 | |
---|
290 | REAL, DIMENSION( ims:ime, jms:jme ) , & |
---|
291 | INTENT(INOUT) :: TSK, & !was TGB (temperature) |
---|
292 | HFX, & !new |
---|
293 | QFX, & !new |
---|
294 | QSFC,& !new |
---|
295 | SNOW, & !new |
---|
296 | SNOWH, & !new |
---|
297 | ALB, & |
---|
298 | SNOALB, & |
---|
299 | ALBSF, & |
---|
300 | SNOWC, & |
---|
301 | CANWAT, & ! new |
---|
302 | SMSTAV, & |
---|
303 | SMSTOT, & |
---|
304 | SFCRUNOFF, & |
---|
305 | UDRUNOFF, & |
---|
306 | SFCEVP, & |
---|
307 | POTEVP, & |
---|
308 | GRDFLX, & |
---|
309 | ACSNOW, & |
---|
310 | ACSNOM, & |
---|
311 | SNOPCX |
---|
312 | |
---|
313 | INTEGER, DIMENSION( ims:ime, jms:jme ) , & |
---|
314 | INTENT(IN ) :: IVGTYP, & |
---|
315 | ISLTYP |
---|
316 | |
---|
317 | REAL, DIMENSION( ims:ime, jms:jme ) , & |
---|
318 | INTENT(IN ) :: TMN, & |
---|
319 | XLAND, & |
---|
320 | XICE, & |
---|
321 | VEGFRA, & |
---|
322 | GSW, & |
---|
323 | GLW, & |
---|
324 | QZ0, & |
---|
325 | SR |
---|
326 | |
---|
327 | REAL, DIMENSION( ims:ime, jms:jme ) , & |
---|
328 | INTENT(INOUT) :: Q2, & |
---|
329 | TH2, & |
---|
330 | SFCEXC |
---|
331 | |
---|
332 | REAL, DIMENSION( ims:ime, jms:jme ) , & |
---|
333 | INTENT(OUT) :: TBOT |
---|
334 | |
---|
335 | |
---|
336 | REAL, DIMENSION( ims:ime, jms:jme ) , & |
---|
337 | INTENT(OUT) :: CHKLOWQ, & |
---|
338 | ELFLX |
---|
339 | |
---|
340 | REAL, DIMENSION( ims:ime ) , & |
---|
341 | INTENT(IN ) :: QGH, & |
---|
342 | CHS, & |
---|
343 | CPM, & |
---|
344 | CHS2 |
---|
345 | |
---|
346 | ! MODULE-LOCAL VARIABLES, DEFINED IN SUBROUTINE LSM |
---|
347 | REAL, DIMENSION( its:ite ) , & |
---|
348 | INTENT(IN ) :: ZA, & |
---|
349 | TH, & |
---|
350 | QV, & |
---|
351 | T, & |
---|
352 | p8w, & |
---|
353 | PSFC, & |
---|
354 | rho, & |
---|
355 | PREC ! one time step in mm |
---|
356 | |
---|
357 | REAL, DIMENSION( its:ite ) :: TGDSA |
---|
358 | |
---|
359 | ! LOCAL VARS |
---|
360 | |
---|
361 | REAL, DIMENSION(1:num_soil_layers) :: SMLIQ1D,SMOIS1D,STEMP1D |
---|
362 | |
---|
363 | !---------------------------------------------------------------------- |
---|
364 | !*** DECLARATIONS FOR IMPLICIT NONE |
---|
365 | |
---|
366 | REAL :: APELM,APES,FDTLIW,FDTW,Q2SAT,Z,FK,SOLDN,SFCTMP,SFCTH2, & |
---|
367 | SFCPRS,PRCP,Q2K,DQSDTK,SATFLG,TBOTK,CHK,VGFRCK,T1K,LWDN, & |
---|
368 | CMCK,Q2M,SNODPK,PLFLX,HFLX,GFLX,RNOF1K, & |
---|
369 | RNOF2K,Q1K,SMELTK,SOILQW,SOILQM,T2K,PRESK,CHFF,STIMESTEP, & |
---|
370 | ALB1D,SNOALB1D,SNOWH1D,ALBSF1D,SOLNET,FFROZP, & |
---|
371 | DUM1,DUM2,DUM3,DUM4,DUM5,DUM6,DUM7 |
---|
372 | |
---|
373 | INTEGER :: I,K,NS,ICE,IVGTPK,ISLTPK,ISPTPK,NOOUT,NSOIL,LZ |
---|
374 | |
---|
375 | !---------------------------------------------------------------------- |
---|
376 | !*********************************************************************** |
---|
377 | ! START SURFCE HERE |
---|
378 | !*** |
---|
379 | !*** SET CONSTANTS CALCULATED HERE FOR CLARITY. |
---|
380 | !*** |
---|
381 | FDTLIW=DT/ROWLIW |
---|
382 | ! FDTLIV=DT/ROWLIV |
---|
383 | FDTW=DT/(XLV*RHOWATER) |
---|
384 | !*** |
---|
385 | !*** SET LSM CONSTANTS AND TIME INDEPENDENT VARIABLES |
---|
386 | !*** INITIALIZE LSM HISTORICAL VARIABLES |
---|
387 | !*** |
---|
388 | !----------------------------------------------------------------------- |
---|
389 | |
---|
390 | NSOIL=num_soil_layers |
---|
391 | |
---|
392 | IF(ITIMESTEP.EQ.1)THEN |
---|
393 | DO 50 I=its,ite |
---|
394 | !*** SET ZERO-VALUE FOR SOME OUTPUT DIAGNOSTIC ARRAYS |
---|
395 | IF((XLAND(I,J)-1.5).GE.0.)THEN |
---|
396 | ! check sea-ice point |
---|
397 | IF(XICE(I,J).EQ.1.)PRINT*,' sea-ice at water point, I=',I, & |
---|
398 | 'J=',J |
---|
399 | !*** Open Water Case |
---|
400 | SMSTAV(I,J)=1.0 |
---|
401 | SMSTOT(I,J)=1.0 |
---|
402 | DO NS=1,NSOIL |
---|
403 | SMOIS(I,NS,J)=1.0 |
---|
404 | TSLB(I,NS,J)=273.16 !STEMP |
---|
405 | ENDDO |
---|
406 | ELSE |
---|
407 | IF(XICE(I,J).EQ.1.)THEN |
---|
408 | !*** SEA-ICE CASE |
---|
409 | SMSTAV(I,J)=1.0 |
---|
410 | SMSTOT(I,J)=1.0 |
---|
411 | DO NS=1,NSOIL |
---|
412 | SMOIS(I,NS,J)=1.0 |
---|
413 | ENDDO |
---|
414 | ENDIF |
---|
415 | ENDIF |
---|
416 | ! |
---|
417 | 50 CONTINUE |
---|
418 | ENDIF |
---|
419 | !----------------------------------------------------------------------- |
---|
420 | DO 100 I=its,ite |
---|
421 | ! SFCPRS=(A(KL)*PSB(I,J)+PTOP+PP3D(I,J,KL)*0.001)*1.E3 |
---|
422 | SFCPRS=p8w(I) !Pressure in middle of lowest layer |
---|
423 | Q2SAT=QGH(I) |
---|
424 | ! CHKLOWQ(I,J)=1. |
---|
425 | CHFF=CHS(I)*RHO(I)*CPM(I) |
---|
426 | !CHK*RHO*CP |
---|
427 | ! TGDSA: potential T |
---|
428 | TGDSA(I)=TSK(I,J)*(1.E5/SFCPRS)**ROVCP |
---|
429 | ! |
---|
430 | !*** CHECK FOR SATURATION AT THE LOWEST MODEL LEVEL |
---|
431 | ! |
---|
432 | Q2K=QV(I) |
---|
433 | APES=(1.E5/PSFC(I))**CAPA |
---|
434 | ! |
---|
435 | IF((Q2K.GE.Q2SAT*TRESH).AND.Q2K.LT.QZ0(I,J))THEN |
---|
436 | SATFLG=0. |
---|
437 | CHKLOWQ(I,J)=0. |
---|
438 | ELSE |
---|
439 | SATFLG=1.0 |
---|
440 | CHKLOWQ(I,J)=1. |
---|
441 | ENDIF |
---|
442 | ! |
---|
443 | TBOT(I,J)=273.16 |
---|
444 | !*** |
---|
445 | !*** LOADING AND UNLOADING MM5/LSM LAND SOIL VARIABLES |
---|
446 | !*** |
---|
447 | IF((XLAND(I,J)-1.5).GE.0.)THEN |
---|
448 | !*** Water |
---|
449 | HFX(I,J)=HFX(I,J)/APES |
---|
450 | QFX(I,J)=QFX(I,J)*SATFLG |
---|
451 | SFCEVP(I,J)=SFCEVP(I,J)+QFX(I,J)*DT |
---|
452 | ELSE |
---|
453 | !*** LAND OR SEA-ICE |
---|
454 | !ATEC ICE=INT(XICE(I,J)+0.3) |
---|
455 | IF (XICE(I,J) .GT. 0.5) THEN |
---|
456 | ICE=1 |
---|
457 | ELSE |
---|
458 | ICE=0 |
---|
459 | ENDIF |
---|
460 | ! |
---|
461 | Q2K=MIN(QV(I),Q2SAT) |
---|
462 | Z=ZA(I) |
---|
463 | ! FK=GSW(I,J)+GLW(I,J) |
---|
464 | LWDN=GLW(I,J) |
---|
465 | ! |
---|
466 | !*** GSW is net downward shortwave |
---|
467 | ! |
---|
468 | ! SOLNET=GSW(I,J) |
---|
469 | ! |
---|
470 | !*** GSW is total downward shortwave |
---|
471 | ! |
---|
472 | SOLDN=GSW(I,J) |
---|
473 | ! |
---|
474 | !*** Simple use of albedo to determine total incoming solar shortwave SOLDN |
---|
475 | !*** (no solar zenith angle correction) |
---|
476 | ! |
---|
477 | ! SOLDN=SOLNET/(1.-ALB(I,J)) |
---|
478 | SOLNET=SOLDN*(1.-ALB(I,J)) |
---|
479 | ! |
---|
480 | ALBSF1D=ALBSF(I,J) |
---|
481 | SNOALB1D=SNOALB(I,J) |
---|
482 | SFCTMP=T(I) |
---|
483 | !!! SFCTH2=SFCTMP+(0.0097545*Z) |
---|
484 | APELM=(1.E5/SFCPRS)**CAPA |
---|
485 | SFCTH2=SFCTMP*APELM |
---|
486 | SFCTH2=SFCTH2/APES |
---|
487 | PRCP=PREC(I) |
---|
488 | !!! Q2K=QV(I) |
---|
489 | !!! Q2SAT=PQ0/SFCPRS*EXP(A2*(SFCTMP-A3)/(SFCTMP-A4)) |
---|
490 | DQSDTK=Q2SAT*A23M4/(SFCTMP-A4)**2 |
---|
491 | IF(ICE.EQ.0)THEN |
---|
492 | TBOTK=TMN(I,J) |
---|
493 | ELSE |
---|
494 | TBOTK=271.16 |
---|
495 | ENDIF |
---|
496 | CHK=CHS(I) |
---|
497 | IVGTPK=IVGTYP(I,J) |
---|
498 | IF(IVGTPK.EQ.0)IVGTPK=13 |
---|
499 | ISLTPK=ISLTYP(I,J) |
---|
500 | IF(ISLTPK.EQ.0)ISLTPK=9 |
---|
501 | ! hardwire slope type (ISPTPK)=1 |
---|
502 | ISPTPK=1 |
---|
503 | VGFRCK=VEGFRA(I,J)/100. |
---|
504 | IF(IVGTPK.EQ.25) VGFRCK=0.0001 |
---|
505 | IF(ISLTPK.EQ.14.AND.XICE(I,J).EQ.0.)THEN |
---|
506 | PRINT*,' SOIL TYPE FOUND TO BE WATER AT A LAND-POINT' |
---|
507 | PRINT*,i,j,'RESET SOIL in surfce.F' |
---|
508 | ! ISLTYP(I,J)=7 |
---|
509 | ISLTPK=7 |
---|
510 | ENDIF |
---|
511 | T1K=TSK(I,J) |
---|
512 | CMCK=CANWAT(I,J) |
---|
513 | !*** convert snow depth from mm to meter |
---|
514 | SNODPK=SNOW(I,J)*0.001 |
---|
515 | SNOWH1D=SNOWH(I,J)*0.001 |
---|
516 | ! |
---|
517 | !*** fraction of frozen precip |
---|
518 | ! |
---|
519 | FFROZP=SR(I,J) |
---|
520 | ! |
---|
521 | DO 70 NS=1,NSOIL |
---|
522 | SMOIS1D(NS)=SMOIS(I,NS,J) |
---|
523 | SMLIQ1D(NS)=SMLIQ(I,NS,J) |
---|
524 | STEMP1D(NS)=TSLB(I,NS,J) !STEMP |
---|
525 | 70 CONTINUE |
---|
526 | |
---|
527 | ! |
---|
528 | ! print*,'BF SFLX','ISLTPK',ISLTPK,'IVGTPK=',IVGTPK,'SMOIS1D',& |
---|
529 | ! SMOIS1D,'STEMP1',STEMP1D,'VGFRCK',VGFRCK |
---|
530 | !----------------------------------------------------------------------- |
---|
531 | ! old WRF call to SFLX |
---|
532 | ! CALL SFLX(ICE,SATFLG,DT,Z,NSOIL,NROOT,DZS,FK,SOLDN,SFCPRS, & |
---|
533 | ! PRCP,SFCTMP,SFCTH2,Q2K,Q2SAT,DQSDTK,TBOTK,CHK,CHFF, & |
---|
534 | ! IVGTPK,ISLTPK,VGFRCK,PLFLX,ELFLX,HFLX,GFLX,RNOF1K,RNOF2K,& |
---|
535 | ! Q1K,SMELTK,T1K,CMCK,SMOIS1D,STEMP1D,SNODPK,SOILQW,SOILQM) |
---|
536 | !----------------------------------------------------------------------- |
---|
537 | ! ---------------------------------------------------------------------- |
---|
538 | ! Ek 12 June 2002 - NEW CALL SFLX |
---|
539 | ! ops Eta call to SFLX ...'tailor' this to WRF |
---|
540 | ! CALL SFLX |
---|
541 | ! I (ICE,DTK,Z,NSOIL,SLDPTH, |
---|
542 | ! I LWDN,SOLDN,SFCPRS,PRCP,SFCTMP,SFCTH2,Q2K,SFCSPD,Q2SAT,DQSDTK, |
---|
543 | ! I IVGTPK,ISLTPK,ISPTPK, |
---|
544 | ! I VGFRCK,PTU,TBOT,ALB,SNOALB, |
---|
545 | ! 2 CMCK,T1K,STCK,SMCK,SH2OK,SNOWH,SNODPK,ALB2D,CHK,CMK, |
---|
546 | ! O PLFLX,ELFLX,HFLX,GFLX,RNOF1K,RNOF2K,Q1K,SMELTK, |
---|
547 | ! O SOILQW,SOILQM,DUM1,DUM2,DUM3,DUM4) |
---|
548 | !----------------------------------------------------------------------- |
---|
549 | CALL SFLX & |
---|
550 | (FFROZP,ICE,DT,Z,NSOIL,DZS, & |
---|
551 | LWDN,SOLDN,SOLNET,SFCPRS,PRCP,SFCTMP,SFCTH2,Q2K,DUM5,Q2SAT, & |
---|
552 | DQSDTK,IVGTPK,ISLTPK,ISPTPK, & |
---|
553 | VGFRCK,DUM6,TBOTK,ALBSF1D,SNOALB1D, & |
---|
554 | CMCK,T1K,STEMP1D,SMOIS1D,SMLIQ1D,SNOWH1D,SNODPK,ALB1D,CHK,DUM7, & |
---|
555 | PLFLX,ELFLX(I,J),HFLX,GFLX,RNOF1K,RNOF2K,Q1K,SMELTK, & |
---|
556 | SOILQW,SOILQM,DUM1,DUM2,DUM3,DUM4,I,J) |
---|
557 | !----------------------------------------------------------------------- |
---|
558 | !*** DIAGNOSTICS |
---|
559 | ! Convert the water unit into mm |
---|
560 | SFCRUNOFF(I,J)=SFCRUNOFF(I,J)+RNOF1K*DT*1000.0 |
---|
561 | UDRUNOFF(I,J)=UDRUNOFF(I,J)+RNOF2K*DT*1000.0 |
---|
562 | SMSTAV(I,J)=SOILQW |
---|
563 | |
---|
564 | !mp |
---|
565 | if (abs(SMSTAV(I,J)) .lt. 3.5) then |
---|
566 | else |
---|
567 | write(errmess,*) 'bad SMSTAV: ', I,J,SMSTAV(I,J) |
---|
568 | CALL wrf_message( errmess ) |
---|
569 | endif |
---|
570 | !mp |
---|
571 | |
---|
572 | SMSTOT(I,J)=SOILQM*1000. |
---|
573 | SFCEXC(I,J)=CHK |
---|
574 | ! IF(SNOB(I,J).GT.0..OR.SICE(I,J).GT.0.)THEN |
---|
575 | ! QFC1(I,J)=QFC1(I,J)*RLIVWV |
---|
576 | ! ENDIF |
---|
577 | IF(FFROZP.GT.0.5)THEN |
---|
578 | ACSNOW(I,J)=ACSNOW(I,J)+PREC(I)*DT |
---|
579 | ENDIF |
---|
580 | IF(SNOW(I,J).GT.0.)THEN |
---|
581 | ACSNOM(I,J)=ACSNOM(I,J)+SMELTK*1000. |
---|
582 | SNOPCX(I,J)=SNOPCX(I,J)-SMELTK/FDTLIW |
---|
583 | ENDIF |
---|
584 | POTEVP(I,J)=POTEVP(I,J)+PLFLX*FDTW |
---|
585 | ! POTFLX(I,J)=POTFLX(I,J)-PLFLX |
---|
586 | !*** WRF LOWER BOUNDARY CONDITIONS |
---|
587 | GRDFLX(I,J)=GFLX |
---|
588 | HFX(I,J)=HFLX |
---|
589 | QFX(I,J)=ELFLX(I,J)/ELWV |
---|
590 | SFCEVP(I,J)=SFCEVP(I,J)+QFX(I,J)*DT |
---|
591 | TSK(I,J)=T1K |
---|
592 | T2K=T1K-HFX(I,J)/(RHO(I)*CPM(I)*CHS2(I)) |
---|
593 | TH2(I,J)=T2K*(1.E5/SFCPRS)**ROVCP |
---|
594 | Q2M=Q1K-QFX(I,J)/(RHO(I)*CHS2(I)) |
---|
595 | !!!!!! Q2(I,J)=Q2M |
---|
596 | !!!!!! Q2(I,J)=Q2K |
---|
597 | ! t2k=th2k/(1.E5/SFCPRS)**ROVCP |
---|
598 | ! QS(I,J)=Q1K |
---|
599 | !!! QSFC(I,J)=Q1K |
---|
600 | !*** UPDATE STATE VARIABLES |
---|
601 | SNOW(I,J)=SNODPK*1000.0 |
---|
602 | SNOWH(I,J)=SNOWH1D*1000.0 |
---|
603 | CANWAT(I,J)=CMCK |
---|
604 | IF(SNOW(I,J).GT.1.0)THEN |
---|
605 | ! ALB(I,J)=0.01*ALBD(IVGTPK,ISEASON)*(1.+SCFX(IVGTPK)) |
---|
606 | SNOWC(I,J)=1.0 |
---|
607 | ELSE |
---|
608 | ! ALB(I,J)=0.01*ALBD(IVGTPK,ISEASON) |
---|
609 | SNOWC(I,J)=0.0 |
---|
610 | ENDIF |
---|
611 | ! update albedo |
---|
612 | ALB(I,J)=ALB1D |
---|
613 | ! update bottom soil temperature |
---|
614 | TBOT(I,J)=TBOTK |
---|
615 | |
---|
616 | DO 80 NS=1,NSOIL |
---|
617 | SMOIS(I,NS,J)=SMOIS1D(NS) |
---|
618 | SMLIQ(I,NS,J)=SMLIQ1D(NS) |
---|
619 | TSLB(I,NS,J)=STEMP1D(NS) ! STEMP |
---|
620 | 80 CONTINUE |
---|
621 | ENDIF |
---|
622 | #if 0 |
---|
623 | NOOUT=0 |
---|
624 | |
---|
625 | IF((ITIMESTEP.EQ.1.OR.MOD(ITIMESTEP,1).EQ.0) & |
---|
626 | .AND. I .EQ.29.AND.J.EQ.23) THEN |
---|
627 | ! print*, 'GLW',GLW(I,J),'GSW',GSW(I,J) |
---|
628 | print*, 'T2K',T2K,'T1K',T1K,'HFX',HFX(I,J),'RHO',RHO(I),'CPM',CPM(I), & |
---|
629 | 'CHS2',CHS2(I),'soil T',STEMP1D,'soil m', SMOIS1D |
---|
630 | ! print*,'Q2M',Q2M,'Q1K',Q1K,'QFX',QFX(I,J),'RHO',RHO(I),'CHS2',CHS2(I),'latent',ELFLX |
---|
631 | ENDIF |
---|
632 | |
---|
633 | IF(NOOUT.EQ.1)GOTO 100 |
---|
634 | ! write output to 29 |
---|
635 | IF(ITIMESTEP.EQ.1.AND.I.EQ.1.AND.J.EQ.1) & |
---|
636 | WRITE (29,*)& |
---|
637 | 'itimestep ',' FK ',' SOLDN ',' SFCPR ', & |
---|
638 | ' SFCTMP ',' Q2K ',' TBOTK ', & |
---|
639 | ' CHK ',' ELFLX ',' HFLX ',' GFLX ', & |
---|
640 | ' RNOF1K ',' RNOF2K ',' T1K ',' CMCK ', & |
---|
641 | ' SMCK1 ',' SMCK2 ',' SMCK3 ',' SMCK4 ', & |
---|
642 | ' STCK1 ',' STCK2 ',' STCK3 ',' STCK4 ', & |
---|
643 | ' SNODPK ',' T2 ', & |
---|
644 | ' Q2 ',' SMSTOT ',' SFCEVP ', ' RAIN' |
---|
645 | IF((ITIMESTEP.EQ.1.OR.MOD(ITIMESTEP,1).EQ.0) & |
---|
646 | .AND. I .EQ.29.AND.J.EQ.23) THEN |
---|
647 | print *,'outputting at itimestep =', itimestep |
---|
648 | STIMESTEP=FLOAT(itimestep) |
---|
649 | WRITE (29,1029)STIMESTEP,FK,SOLDN,SFCPRS/100.,SFCTMP,1000.* & |
---|
650 | Q2K,TBOTK,1000.*CHK,ELFLX(i,j),HFLX,GFLX,SFCRUNOFF(I,J)& |
---|
651 | ,UDRUNOFF(I,J),T1K,CMCK,SMOIS1D,STEMP1D,SNODPK, & |
---|
652 | ! ,UDRUNOFF(I,J),T1K,CMCK,SMOIS1D(3),SMOIS1D(7),SMOIS1D(11),& |
---|
653 | ! SMOIS1D(14),STEMP1D(3), STEMP1D(7),STEMP1D(11), & |
---|
654 | ! STEMP1D(14), SNODPK, & |
---|
655 | T2K,1000.*Q2M,SMSTOT(I,J),SFCEVP(I,J),PRCP |
---|
656 | 1029 FORMAT (29F10.4) |
---|
657 | ! IF(ITIMESTEP.EQ.0)WRITE (39,*)' P ',' T ', & |
---|
658 | ! ' TH ',' Q ',' U ',' V ', & |
---|
659 | ! ' QC ' |
---|
660 | ! WRITE (39,1039)itimestep |
---|
661 | ! DO K=kts,kte |
---|
662 | ! WRITE (39,1039)PRESK,TX(I,K),THX(I,K),1000.*QX(I,K),UX(I,K),& |
---|
663 | ! VX(I,K),1000.*QCX(I,K) |
---|
664 | 1039 FORMAT (7F10.5) |
---|
665 | ! ENDDO |
---|
666 | ENDIF |
---|
667 | ! |
---|
668 | #endif |
---|
669 | 100 CONTINUE |
---|
670 | ! |
---|
671 | !----------------------------------------------------------------------- |
---|
672 | END SUBROUTINE SURFCE |
---|
673 | !----------------------------------------------------------------------- |
---|
674 | |
---|
675 | SUBROUTINE SFLX ( & |
---|
676 | FFROZP,ICE,DT,ZLVL,NSOIL,SLDPTH, & |
---|
677 | LWDN,SOLDN,SOLNET,SFCPRS,PRCP,SFCTMP,TH2,Q2,SFCSPD,Q2SAT, & |
---|
678 | DQSDT2,VEGTYP,SOILTYP,SLOPETYP, & |
---|
679 | SHDFAC,PTU,TBOT,ALB,SNOALB, & |
---|
680 | CMC,T1,STC,SMC,SH2O,SNOWH,SNEQV,ALBEDO,CH,CM, & |
---|
681 | ETP,ETA,SHEAT,SSOIL,RUNOFF1,RUNOFF2,Q1,SNOMLT, & |
---|
682 | SOILW,SOILM,SMCWLT,SMCDRY,SMCREF,SMCMAX,I,J) |
---|
683 | ! ---------------------------------------------------------------------- |
---|
684 | ! & ETA,SHEAT, & |
---|
685 | ! ---------------------------------------------------------------------- |
---|
686 | ! OUTPUTS, DIAGNOSTICS, PARAMETERS BELOW GENERALLY NOT NECESSARY WHEN |
---|
687 | ! COUPLED WITH E.G. A NWP MODEL (SUCH AS THE NOAA/NWS/NCEP MESOSCALE ETA |
---|
688 | ! MODEL). OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. |
---|
689 | ! ---------------------------------------------------------------------- |
---|
690 | ! & EC,EDIR,ET,ETT,ESNOW,DRIP,DEW, & |
---|
691 | ! & BETA,ETP,SSOIL, & |
---|
692 | ! & FLX1,FLX2,FLX3, & |
---|
693 | ! & SNOMLT,SNCOVR, & |
---|
694 | ! & RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
695 | ! & RC,PC,RSMIN,XLAI,RCS,RCT,RCQ,RCSOIL, & |
---|
696 | ! & SOILW,SOILM, & |
---|
697 | ! & SMCWLT,SMCDRY,SMCREF,SMCMAX,NROOT,I,J) |
---|
698 | |
---|
699 | IMPLICIT NONE |
---|
700 | |
---|
701 | ! ---------------------------------------------------------------------- |
---|
702 | ! SUBROUTINE SFLX - VERSION 2.7 - June 2nd 2003 |
---|
703 | ! ---------------------------------------------------------------------- |
---|
704 | ! SUB-DRIVER FOR "NOAH/OSU LSM" FAMILY OF PHYSICS SUBROUTINES FOR A |
---|
705 | ! SOIL/VEG/SNOWPACK LAND-SURFACE MODEL TO UPDATE SOIL MOISTURE, SOIL |
---|
706 | ! ICE, SOIL TEMPERATURE, SKIN TEMPERATURE, SNOWPACK WATER CONTENT, |
---|
707 | ! SNOWDEPTH, AND ALL TERMS OF THE SURFACE ENERGY BALANCE AND SURFACE |
---|
708 | ! WATER BALANCE (EXCLUDING INPUT ATMOSPHERIC FORCINGS OF DOWNWARD |
---|
709 | ! RADIATION AND PRECIP) |
---|
710 | ! ---------------------------------------------------------------------- |
---|
711 | ! SFLX ARGUMENT LIST KEY: |
---|
712 | ! ---------------------------------------------------------------------- |
---|
713 | ! C CONFIGURATION INFORMATION |
---|
714 | ! F FORCING DATA |
---|
715 | ! I OTHER (INPUT) FORCING DATA |
---|
716 | ! S SURFACE CHARACTERISTICS |
---|
717 | ! H HISTORY (STATE) VARIABLES |
---|
718 | ! O OUTPUT VARIABLES |
---|
719 | ! D DIAGNOSTIC OUTPUT |
---|
720 | ! ---------------------------------------------------------------------- |
---|
721 | ! 1. CONFIGURATION INFORMATION (C): |
---|
722 | ! ---------------------------------------------------------------------- |
---|
723 | ! ICE SEA-ICE FLAG (=1: SEA-ICE, =0: LAND) |
---|
724 | ! DT TIMESTEP (SEC) (DT SHOULD NOT EXCEED 3600 SECS, RECOMMEND |
---|
725 | ! 1800 SECS OR LESS) |
---|
726 | ! ZLVL HEIGHT (M) ABOVE GROUND OF ATMOSPHERIC FORCING VARIABLES |
---|
727 | ! NSOIL NUMBER OF SOIL LAYERS (AT LEAST 2, AND NOT GREATER THAN |
---|
728 | ! PARAMETER NSOLD SET BELOW) |
---|
729 | ! SLDPTH THE THICKNESS OF EACH SOIL LAYER (M) |
---|
730 | ! ---------------------------------------------------------------------- |
---|
731 | ! 2. FORCING DATA (F): |
---|
732 | ! ---------------------------------------------------------------------- |
---|
733 | ! LWDN LW DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET LONGWAVE) |
---|
734 | ! SOLDN SOLAR DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET SOLAR) |
---|
735 | ! SFCPRS PRESSURE AT HEIGHT ZLVL ABOVE GROUND (PASCALS) |
---|
736 | ! PRCP PRECIP RATE (KG M-2 S-1) (NOTE, THIS IS A RATE) |
---|
737 | ! SFCTMP AIR TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND |
---|
738 | ! TH2 AIR POTENTIAL TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND |
---|
739 | ! Q2 MIXING RATIO AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) |
---|
740 | ! ---------------------------------------------------------------------- |
---|
741 | ! 3. OTHER FORCING (INPUT) DATA (I): |
---|
742 | ! ---------------------------------------------------------------------- |
---|
743 | ! SFCSPD WIND SPEED (M S-1) AT HEIGHT ZLVL ABOVE GROUND |
---|
744 | ! Q2SAT SAT MIXING RATIO AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) |
---|
745 | ! DQSDT2 SLOPE OF SAT SPECIFIC HUMIDITY CURVE AT T=SFCTMP |
---|
746 | ! (KG KG-1 K-1) |
---|
747 | ! ---------------------------------------------------------------------- |
---|
748 | ! 4. CANOPY/SOIL CHARACTERISTICS (S): |
---|
749 | ! ---------------------------------------------------------------------- |
---|
750 | ! VEGTYP VEGETATION TYPE (INTEGER INDEX) |
---|
751 | ! SOILTYP SOIL TYPE (INTEGER INDEX) |
---|
752 | ! SLOPETYP CLASS OF SFC SLOPE (INTEGER INDEX) |
---|
753 | ! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
754 | ! (FRACTION= 0.0-1.0) |
---|
755 | ! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
756 | ! (FRACTION= 0.0-1.0) <= SHDFAC |
---|
757 | ! PTU PHOTO THERMAL UNIT (PLANT PHENOLOGY FOR ANNUALS/CROPS) |
---|
758 | ! (NOT YET USED, BUT PASSED TO REDPRM FOR FUTURE USE IN |
---|
759 | ! VEG PARMS) |
---|
760 | ! ALB BACKROUND SNOW-FREE SURFACE ALBEDO (FRACTION), FOR JULIAN |
---|
761 | ! DAY OF YEAR (USUALLY FROM TEMPORAL INTERPOLATION OF |
---|
762 | ! MONTHLY MEAN VALUES' CALLING PROG MAY OR MAY NOT |
---|
763 | ! INCLUDE DIURNAL SUN ANGLE EFFECT) |
---|
764 | ! SNOALB UPPER BOUND ON MAXIMUM ALBEDO OVER DEEP SNOW (E.G. FROM |
---|
765 | ! ROBINSON AND KUKLA, 1985, J. CLIM. & APPL. METEOR.) |
---|
766 | ! TBOT BOTTOM SOIL TEMPERATURE (LOCAL YEARLY-MEAN SFC AIR |
---|
767 | ! TEMPERATURE) |
---|
768 | ! ---------------------------------------------------------------------- |
---|
769 | ! 5. HISTORY (STATE) VARIABLES (H): |
---|
770 | ! ---------------------------------------------------------------------- |
---|
771 | ! CMC CANOPY MOISTURE CONTENT (M) |
---|
772 | ! T1 GROUND/CANOPY/SNOWPACK) EFFECTIVE SKIN TEMPERATURE (K) |
---|
773 | ! STC(NSOIL) SOIL TEMP (K) |
---|
774 | ! SMC(NSOIL) TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION) |
---|
775 | ! SH2O(NSOIL) UNFROZEN SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION) |
---|
776 | ! NOTE: FROZEN SOIL MOISTURE = SMC - SH2O |
---|
777 | ! SNOWH ACTUAL SNOW DEPTH (M) |
---|
778 | ! SNEQV LIQUID WATER-EQUIVALENT SNOW DEPTH (M) |
---|
779 | ! NOTE: SNOW DENSITY = SNEQV/SNOWH |
---|
780 | ! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT (UNITLESS FRACTION) |
---|
781 | ! =SNOW-FREE ALBEDO (ALB) WHEN SNEQV=0, OR |
---|
782 | ! =FCT(MSNOALB,ALB,VEGTYP,SHDFAC,SHDMIN) WHEN SNEQV>0 |
---|
783 | ! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE |
---|
784 | ! (M S-1); NOTE: CH IS TECHNICALLY A CONDUCTANCE SINCE |
---|
785 | ! IT HAS BEEN MULTIPLIED BY WIND SPEED. |
---|
786 | ! CM SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM (M S-1); NOTE: |
---|
787 | ! CM IS TECHNICALLY A CONDUCTANCE SINCE IT HAS BEEN |
---|
788 | ! MULTIPLIED BY WIND SPEED. CM IS NOT NEEDED IN SFLX |
---|
789 | ! ---------------------------------------------------------------------- |
---|
790 | ! 6. OUTPUT (O): |
---|
791 | ! ---------------------------------------------------------------------- |
---|
792 | ! OUTPUT VARIABLES NECESSARY FOR A COUPLED NUMERICAL WEATHER PREDICTION |
---|
793 | ! MODEL, E.G. NOAA/NWS/NCEP MESOSCALE ETA MODEL. FOR THIS APPLICATION, |
---|
794 | ! THE REMAINING OUTPUT/DIAGNOSTIC/PARAMETER BLOCKS BELOW ARE NOT |
---|
795 | ! NECESSARY. OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. |
---|
796 | ! ETA ACTUAL LATENT HEAT FLUX (W M-2: NEGATIVE, IF UP FROM |
---|
797 | ! SURFACE) |
---|
798 | ! SHEAT SENSIBLE HEAT FLUX (W M-2: NEGATIVE, IF UPWARD FROM |
---|
799 | ! SURFACE) |
---|
800 | ! ---------------------------------------------------------------------- |
---|
801 | ! EC CANOPY WATER EVAPORATION (W M-2) |
---|
802 | ! EDIR DIRECT SOIL EVAPORATION (W M-2) |
---|
803 | ! ET(NSOIL) PLANT TRANSPIRATION FROM A PARTICULAR ROOT (SOIL) LAYER |
---|
804 | ! (W M-2) |
---|
805 | ! ETT TOTAL PLANT TRANSPIRATION (W M-2) |
---|
806 | ! ESNOW SUBLIMATION FROM SNOWPACK (W M-2) |
---|
807 | ! DRIP THROUGH-FALL OF PRECIP AND/OR DEW IN EXCESS OF CANOPY |
---|
808 | ! WATER-HOLDING CAPACITY (M) |
---|
809 | ! DEW DEWFALL (OR FROSTFALL FOR T<273.15) (M) |
---|
810 | ! ---------------------------------------------------------------------- |
---|
811 | ! BETA RATIO OF ACTUAL/POTENTIAL EVAP (DIMENSIONLESS) |
---|
812 | ! ETP POTENTIAL EVAPORATION (W M-2) |
---|
813 | ! SSOIL SOIL HEAT FLUX (W M-2: NEGATIVE IF DOWNWARD FROM SURFACE) |
---|
814 | ! ---------------------------------------------------------------------- |
---|
815 | ! FLX1 PRECIP-SNOW SFC (W M-2) |
---|
816 | ! FLX2 FREEZING RAIN LATENT HEAT FLUX (W M-2) |
---|
817 | ! FLX3 PHASE-CHANGE HEAT FLUX FROM SNOWMELT (W M-2) |
---|
818 | ! ---------------------------------------------------------------------- |
---|
819 | ! SNOMLT SNOW MELT (M) (WATER EQUIVALENT) |
---|
820 | ! SNCOVR FRACTIONAL SNOW COVER (UNITLESS FRACTION, 0-1) |
---|
821 | ! ---------------------------------------------------------------------- |
---|
822 | ! RUNOFF1 SURFACE RUNOFF (M S-1), NOT INFILTRATING THE SURFACE |
---|
823 | ! RUNOFF2 SUBSURFACE RUNOFF (M S-1), DRAINAGE OUT BOTTOM OF LAST |
---|
824 | ! SOIL LAYER |
---|
825 | ! RUNOFF3 NUMERICAL TRUNCTATION IN EXCESS OF POROSITY (SMCMAX) |
---|
826 | ! FOR A GIVEN SOIL LAYER AT THE END OF A TIME STEP |
---|
827 | ! ---------------------------------------------------------------------- |
---|
828 | ! RC CANOPY RESISTANCE (S M-1) |
---|
829 | ! PC PLANT COEFFICIENT (UNITLESS FRACTION, 0-1) WHERE PC*ETP |
---|
830 | ! = ACTUAL TRANSPIRATION |
---|
831 | ! XLAI LEAF AREA INDEX (DIMENSIONLESS) |
---|
832 | ! RSMIN MINIMUM CANOPY RESISTANCE (S M-1) |
---|
833 | ! RCS INCOMING SOLAR RC FACTOR (DIMENSIONLESS) |
---|
834 | ! RCT AIR TEMPERATURE RC FACTOR (DIMENSIONLESS) |
---|
835 | ! RCQ ATMOS VAPOR PRESSURE DEFICIT RC FACTOR (DIMENSIONLESS) |
---|
836 | ! RCSOIL SOIL MOISTURE RC FACTOR (DIMENSIONLESS) |
---|
837 | ! ---------------------------------------------------------------------- |
---|
838 | ! 7. DIAGNOSTIC OUTPUT (D): |
---|
839 | ! ---------------------------------------------------------------------- |
---|
840 | ! SOILW AVAILABLE SOIL MOISTURE IN ROOT ZONE (UNITLESS FRACTION |
---|
841 | ! BETWEEN SMCWLT AND SMCMAX) |
---|
842 | ! SOILM TOTAL SOIL COLUMN MOISTURE CONTENT (FROZEN+UNFROZEN) (M) |
---|
843 | ! ---------------------------------------------------------------------- |
---|
844 | ! 8. PARAMETERS (P): |
---|
845 | ! ---------------------------------------------------------------------- |
---|
846 | ! SMCWLT WILTING POINT (VOLUMETRIC) |
---|
847 | ! SMCDRY DRY SOIL MOISTURE THRESHOLD WHERE DIRECT EVAP FRM TOP |
---|
848 | ! LAYER ENDS (VOLUMETRIC) |
---|
849 | ! SMCREF SOIL MOISTURE THRESHOLD WHERE TRANSPIRATION BEGINS TO |
---|
850 | ! STRESS (VOLUMETRIC) |
---|
851 | ! SMCMAX POROSITY, I.E. SATURATED VALUE OF SOIL MOISTURE |
---|
852 | ! (VOLUMETRIC) |
---|
853 | ! NROOT NUMBER OF ROOT LAYERS, A FUNCTION OF VEG TYPE, DETERMINED |
---|
854 | ! IN SUBROUTINE REDPRM. |
---|
855 | ! ---------------------------------------------------------------------- |
---|
856 | INTEGER NSOLD |
---|
857 | PARAMETER(NSOLD = 20) |
---|
858 | |
---|
859 | ! ---------------------------------------------------------------------- |
---|
860 | ! DECLARATIONS - LOGICAL |
---|
861 | ! ---------------------------------------------------------------------- |
---|
862 | LOGICAL FRZGRA |
---|
863 | LOGICAL SATURATED |
---|
864 | LOGICAL SNOWNG |
---|
865 | |
---|
866 | ! ---------------------------------------------------------------------- |
---|
867 | ! DECLARATIONS - INTEGER |
---|
868 | ! ---------------------------------------------------------------------- |
---|
869 | INTEGER ICE |
---|
870 | INTEGER K |
---|
871 | INTEGER KZ |
---|
872 | INTEGER NSOIL |
---|
873 | INTEGER NROOT |
---|
874 | INTEGER SLOPETYP |
---|
875 | INTEGER SOILTYP |
---|
876 | INTEGER VEGTYP |
---|
877 | INTEGER I |
---|
878 | INTEGER J |
---|
879 | |
---|
880 | ! ---------------------------------------------------------------------- |
---|
881 | ! DECLARATIONS - REAL |
---|
882 | ! ---------------------------------------------------------------------- |
---|
883 | REAL ALBEDO |
---|
884 | REAL ALB |
---|
885 | REAL BEXP |
---|
886 | REAL BETA |
---|
887 | REAL CFACTR |
---|
888 | REAL CH |
---|
889 | REAL CM |
---|
890 | REAL CMC |
---|
891 | REAL CMCMAX |
---|
892 | REAL CP |
---|
893 | ! REAL CSNOW |
---|
894 | REAL CSOIL |
---|
895 | REAL CZIL |
---|
896 | REAL DEW |
---|
897 | REAL DF1 |
---|
898 | REAL DF1H |
---|
899 | REAL DF1A |
---|
900 | REAL DKSAT |
---|
901 | REAL DT |
---|
902 | REAL DWSAT |
---|
903 | REAL DQSDT2 |
---|
904 | REAL DSOIL |
---|
905 | REAL DTOT |
---|
906 | REAL DRIP |
---|
907 | REAL EC |
---|
908 | REAL EDIR |
---|
909 | REAL ESNOW |
---|
910 | REAL ET(NSOIL) |
---|
911 | REAL ETT |
---|
912 | REAL FRCSNO |
---|
913 | REAL FRCSOI |
---|
914 | REAL EPSCA |
---|
915 | REAL ETA |
---|
916 | REAL ETP |
---|
917 | REAL FDOWN |
---|
918 | REAL F1 |
---|
919 | REAL FLX1 |
---|
920 | REAL FLX2 |
---|
921 | REAL FLX3 |
---|
922 | REAL FXEXP |
---|
923 | REAL FRZX |
---|
924 | REAL SHEAT |
---|
925 | REAL HS |
---|
926 | REAL KDT |
---|
927 | REAL LWDN |
---|
928 | REAL LVH2O |
---|
929 | REAL PC |
---|
930 | REAL PRCP |
---|
931 | REAL PTU |
---|
932 | REAL PRCP1 |
---|
933 | REAL PSISAT |
---|
934 | REAL Q2 |
---|
935 | REAL Q2SAT |
---|
936 | REAL QUARTZ |
---|
937 | REAL R |
---|
938 | REAL RCH |
---|
939 | REAL REFKDT |
---|
940 | REAL RR |
---|
941 | REAL RTDIS(NSOLD) |
---|
942 | REAL RUNOFF1 |
---|
943 | REAL RUNOFF2 |
---|
944 | REAL RGL |
---|
945 | REAL RUNOFF3 |
---|
946 | REAL RSMAX |
---|
947 | REAL RC |
---|
948 | REAL RSMIN |
---|
949 | REAL RCQ |
---|
950 | REAL RCS |
---|
951 | REAL RCSOIL |
---|
952 | REAL RCT |
---|
953 | REAL RSNOW |
---|
954 | REAL SNDENS |
---|
955 | REAL SNCOND |
---|
956 | REAL SSOIL |
---|
957 | REAL SBETA |
---|
958 | REAL SFCPRS |
---|
959 | REAL SFCSPD |
---|
960 | REAL SFCTMP |
---|
961 | REAL SHDFAC |
---|
962 | REAL SHDMIN |
---|
963 | REAL SH2O(NSOIL) |
---|
964 | REAL SLDPTH(NSOIL) |
---|
965 | REAL SMCDRY |
---|
966 | REAL SMCMAX |
---|
967 | REAL SMCREF |
---|
968 | REAL SMCWLT |
---|
969 | REAL SMC(NSOIL) |
---|
970 | REAL SNEQV |
---|
971 | REAL SNCOVR |
---|
972 | REAL SNOWH |
---|
973 | REAL SN_NEW |
---|
974 | REAL SLOPE |
---|
975 | REAL SNUP |
---|
976 | REAL SALP |
---|
977 | REAL SNOALB |
---|
978 | REAL STC(NSOIL) |
---|
979 | REAL SNOMLT |
---|
980 | REAL SOLDN |
---|
981 | REAL SOILM |
---|
982 | REAL SOILW |
---|
983 | REAL SOILWM |
---|
984 | REAL SOILWW |
---|
985 | REAL T1 |
---|
986 | REAL T1V |
---|
987 | REAL T24 |
---|
988 | REAL T2V |
---|
989 | REAL TBOT |
---|
990 | REAL TH2 |
---|
991 | REAL TH2V |
---|
992 | REAL TOPT |
---|
993 | REAL TFREEZ |
---|
994 | REAL TSNOW |
---|
995 | REAL XLAI |
---|
996 | REAL ZLVL |
---|
997 | REAL ZBOT |
---|
998 | REAL Z0 |
---|
999 | REAL ZSOIL(NSOLD) |
---|
1000 | |
---|
1001 | REAL FFROZP |
---|
1002 | REAL SOLNET |
---|
1003 | REAL LSUBS |
---|
1004 | |
---|
1005 | REAL Q1 |
---|
1006 | |
---|
1007 | ! ---------------------------------------------------------------------- |
---|
1008 | ! DECLARATIONS - PARAMETERS |
---|
1009 | ! ---------------------------------------------------------------------- |
---|
1010 | PARAMETER(TFREEZ = 273.15) |
---|
1011 | PARAMETER(LVH2O = 2.501E+6) |
---|
1012 | PARAMETER(LSUBS = 2.83E+6) |
---|
1013 | PARAMETER(R = 287.04) |
---|
1014 | PARAMETER(CP = 1004.5) |
---|
1015 | |
---|
1016 | ! ---------------------------------------------------------------------- |
---|
1017 | ! INITIALIZATION |
---|
1018 | ! ---------------------------------------------------------------------- |
---|
1019 | RUNOFF1 = 0.0 |
---|
1020 | RUNOFF2 = 0.0 |
---|
1021 | RUNOFF3 = 0.0 |
---|
1022 | SNOMLT = 0.0 |
---|
1023 | |
---|
1024 | ! ---------------------------------------------------------------------- |
---|
1025 | ! THE VARIABLE "ICE" IS A FLAG DENOTING SEA-ICE CASE |
---|
1026 | ! ---------------------------------------------------------------------- |
---|
1027 | IF (ICE .EQ. 1) THEN |
---|
1028 | |
---|
1029 | ! ---------------------------------------------------------------------- |
---|
1030 | ! SEA-ICE LAYERS ARE EQUAL THICKNESS AND SUM TO 3 METERS |
---|
1031 | ! ---------------------------------------------------------------------- |
---|
1032 | DO KZ = 1,NSOIL |
---|
1033 | ZSOIL(KZ) = -3.*FLOAT(KZ)/FLOAT(NSOIL) |
---|
1034 | END DO |
---|
1035 | |
---|
1036 | ELSE |
---|
1037 | |
---|
1038 | ! ---------------------------------------------------------------------- |
---|
1039 | ! CALCULATE DEPTH (NEGATIVE) BELOW GROUND FROM TOP SKIN SFC TO BOTTOM OF |
---|
1040 | ! EACH SOIL LAYER. NOTE: SIGN OF ZSOIL IS NEGATIVE (DENOTING BELOW |
---|
1041 | ! GROUND) |
---|
1042 | ! ---------------------------------------------------------------------- |
---|
1043 | ZSOIL(1) = -SLDPTH(1) |
---|
1044 | DO KZ = 2,NSOIL |
---|
1045 | ZSOIL(KZ) = -SLDPTH(KZ)+ZSOIL(KZ-1) |
---|
1046 | END DO |
---|
1047 | |
---|
1048 | ENDIF |
---|
1049 | |
---|
1050 | ! ---------------------------------------------------------------------- |
---|
1051 | ! NEXT IS CRUCIAL CALL TO SET THE LAND-SURFACE PARAMETERS, INCLUDING |
---|
1052 | ! SOIL-TYPE AND VEG-TYPE DEPENDENT PARAMETERS. |
---|
1053 | ! ---------------------------------------------------------------------- |
---|
1054 | CALL REDPRM (VEGTYP,SOILTYP,SLOPETYP, & |
---|
1055 | & CFACTR,CMCMAX,RSMAX,TOPT,REFKDT,KDT,SBETA, & |
---|
1056 | & SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX,PSISAT,SLOPE, & |
---|
1057 | & SNUP,SALP,BEXP,DKSAT,DWSAT,SMCMAX,SMCWLT,SMCREF, & |
---|
1058 | & SMCDRY,F1,QUARTZ,FXEXP,RTDIS,SLDPTH,ZSOIL, & |
---|
1059 | & NROOT,NSOIL,Z0,CZIL,XLAI,CSOIL,PTU) |
---|
1060 | |
---|
1061 | ! ---------------------------------------------------------------------- |
---|
1062 | ! INITIALIZE PRECIPITATION LOGICALS. |
---|
1063 | ! ---------------------------------------------------------------------- |
---|
1064 | SNOWNG = .FALSE. |
---|
1065 | FRZGRA = .FALSE. |
---|
1066 | |
---|
1067 | ! ---------------------------------------------------------------------- |
---|
1068 | ! IF SEA-ICE CASE, ASSIGN DEFAULT WATER-EQUIV SNOW ON TOP |
---|
1069 | ! ---------------------------------------------------------------------- |
---|
1070 | IF (ICE .EQ. 1) THEN |
---|
1071 | SNEQV = 0.01 |
---|
1072 | SNOWH = 0.05 |
---|
1073 | SNDENS = SNEQV/SNOWH |
---|
1074 | ENDIF |
---|
1075 | |
---|
1076 | ! ---------------------------------------------------------------------- |
---|
1077 | ! IF INPUT SNOWPACK IS NONZERO, THEN COMPUTE SNOW DENSITY "SNDENS" AND |
---|
1078 | ! SNOW THERMAL CONDUCTIVITY "SNCOND" (NOTE THAT CSNOW IS A FUNCTION |
---|
1079 | ! SUBROUTINE) |
---|
1080 | ! ---------------------------------------------------------------------- |
---|
1081 | IF (SNEQV .EQ. 0.0) THEN |
---|
1082 | SNDENS = 0.0 |
---|
1083 | SNOWH = 0.0 |
---|
1084 | SNCOND = 1.0 |
---|
1085 | ELSE |
---|
1086 | SNDENS = SNEQV/SNOWH |
---|
1087 | SNCOND = CSNOW(SNDENS) |
---|
1088 | ENDIF |
---|
1089 | |
---|
1090 | ! ---------------------------------------------------------------------- |
---|
1091 | ! DETERMINE IF IT'S PRECIPITATING AND WHAT KIND OF PRECIP IT IS. |
---|
1092 | ! IF IT'S PRCPING AND THE AIR TEMP IS COLDER THAN 0 C, IT'S SNOWING! |
---|
1093 | ! IF IT'S PRCPING AND THE AIR TEMP IS WARMER THAN 0 C, BUT THE GRND |
---|
1094 | ! TEMP IS COLDER THAN 0 C, FREEZING RAIN IS PRESUMED TO BE FALLING. |
---|
1095 | ! ---------------------------------------------------------------------- |
---|
1096 | IF (PRCP .GT. 0.0) THEN |
---|
1097 | ! IF (SFCTMP .LE. TFREEZ) THEN |
---|
1098 | IF (FFROZP .GT. 0.5) THEN |
---|
1099 | SNOWNG = .TRUE. |
---|
1100 | ELSE |
---|
1101 | IF (T1 .LE. TFREEZ) FRZGRA = .TRUE. |
---|
1102 | ENDIF |
---|
1103 | ENDIF |
---|
1104 | |
---|
1105 | ! ---------------------------------------------------------------------- |
---|
1106 | ! IF EITHER PRCP FLAG IS SET, DETERMINE NEW SNOWFALL (CONVERTING PRCP |
---|
1107 | ! RATE FROM KG M-2 S-1 TO A LIQUID EQUIV SNOW DEPTH IN METERS) AND ADD |
---|
1108 | ! IT TO THE EXISTING SNOWPACK. |
---|
1109 | ! NOTE THAT SINCE ALL PRECIP IS ADDED TO SNOWPACK, NO PRECIP INFILTRATES |
---|
1110 | ! INTO THE SOIL SO THAT PRCP1 IS SET TO ZERO. |
---|
1111 | ! ---------------------------------------------------------------------- |
---|
1112 | IF ( (SNOWNG) .OR. (FRZGRA) ) THEN |
---|
1113 | SN_NEW = PRCP * DT * 0.001 |
---|
1114 | SNEQV = SNEQV + SN_NEW |
---|
1115 | PRCP1 = 0.0 |
---|
1116 | |
---|
1117 | ! ---------------------------------------------------------------------- |
---|
1118 | ! UPDATE SNOW DENSITY BASED ON NEW SNOWFALL, USING OLD AND NEW SNOW. |
---|
1119 | ! UPDATE SNOW THERMAL CONDUCTIVITY |
---|
1120 | ! ---------------------------------------------------------------------- |
---|
1121 | CALL SNOW_NEW (SFCTMP,SN_NEW,SNOWH,SNDENS) |
---|
1122 | SNCOND = CSNOW (SNDENS) |
---|
1123 | ELSE |
---|
1124 | |
---|
1125 | ! ---------------------------------------------------------------------- |
---|
1126 | ! PRECIP IS LIQUID (RAIN), HENCE SAVE IN THE PRECIP VARIABLE THAT |
---|
1127 | ! LATER CAN WHOLELY OR PARTIALLY INFILTRATE THE SOIL (ALONG WITH |
---|
1128 | ! ANY CANOPY "DRIP" ADDED TO THIS LATER) |
---|
1129 | ! ---------------------------------------------------------------------- |
---|
1130 | PRCP1 = PRCP |
---|
1131 | |
---|
1132 | ENDIF |
---|
1133 | |
---|
1134 | ! ---------------------------------------------------------------------- |
---|
1135 | ! DETERMINE SNOWCOVER AND ALBEDO OVER LAND. |
---|
1136 | ! ---------------------------------------------------------------------- |
---|
1137 | IF (ICE .EQ. 0) THEN |
---|
1138 | |
---|
1139 | ! ---------------------------------------------------------------------- |
---|
1140 | ! IF SNOW DEPTH=0, SET SNOW FRACTION=0, ALBEDO=SNOW FREE ALBEDO. |
---|
1141 | ! ---------------------------------------------------------------------- |
---|
1142 | IF (SNEQV .EQ. 0.0) THEN |
---|
1143 | SNCOVR = 0.0 |
---|
1144 | ALBEDO = ALB |
---|
1145 | |
---|
1146 | ELSE |
---|
1147 | ! ---------------------------------------------------------------------- |
---|
1148 | ! DETERMINE SNOW FRACTIONAL COVERAGE. |
---|
1149 | ! DETERMINE SURFACE ALBEDO MODIFICATION DUE TO SNOWDEPTH STATE. |
---|
1150 | ! ---------------------------------------------------------------------- |
---|
1151 | CALL SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR) |
---|
1152 | ! MEK JAN 2006, LIMIT SNOW COVER TO A MAXIMUM FRACTION OF 0.98 |
---|
1153 | SNCOVR = MIN(SNCOVR,0.98) |
---|
1154 | CALL ALCALC (ALB,SNOALB,SHDFAC,SHDMIN,SNCOVR,TSNOW,ALBEDO) |
---|
1155 | ENDIF |
---|
1156 | |
---|
1157 | ELSE |
---|
1158 | ! ---------------------------------------------------------------------- |
---|
1159 | ! SNOW COVER, ALBEDO OVER SEA-ICE |
---|
1160 | ! ---------------------------------------------------------------------- |
---|
1161 | SNCOVR = 1.0 |
---|
1162 | ! changed in version 2.6 on June 2nd 2003 |
---|
1163 | ! ALBEDO = 0.60 |
---|
1164 | ALBEDO = 0.65 |
---|
1165 | ENDIF |
---|
1166 | |
---|
1167 | ! ---------------------------------------------------------------------- |
---|
1168 | ! THERMAL CONDUCTIVITY FOR SEA-ICE CASE |
---|
1169 | ! ---------------------------------------------------------------------- |
---|
1170 | IF (ICE .EQ. 1) THEN |
---|
1171 | DF1 = 2.2 |
---|
1172 | |
---|
1173 | ELSE |
---|
1174 | |
---|
1175 | ! ---------------------------------------------------------------------- |
---|
1176 | ! NEXT CALCULATE THE SUBSURFACE HEAT FLUX, WHICH FIRST REQUIRES |
---|
1177 | ! CALCULATION OF THE THERMAL DIFFUSIVITY. TREATMENT OF THE |
---|
1178 | ! LATTER FOLLOWS THAT ON PAGES 148-149 FROM "HEAT TRANSFER IN |
---|
1179 | ! COLD CLIMATES", BY V. J. LUNARDINI (PUBLISHED IN 1981 |
---|
1180 | ! BY VAN NOSTRAND REINHOLD CO.) I.E. TREATMENT OF TWO CONTIGUOUS |
---|
1181 | ! "PLANE PARALLEL" MEDIUMS (NAMELY HERE THE FIRST SOIL LAYER |
---|
1182 | ! AND THE SNOWPACK LAYER, IF ANY). THIS DIFFUSIVITY TREATMENT |
---|
1183 | ! BEHAVES WELL FOR BOTH ZERO AND NONZERO SNOWPACK, INCLUDING THE |
---|
1184 | ! LIMIT OF VERY THIN SNOWPACK. THIS TREATMENT ALSO ELIMINATES |
---|
1185 | ! THE NEED TO IMPOSE AN ARBITRARY UPPER BOUND ON SUBSURFACE |
---|
1186 | ! HEAT FLUX WHEN THE SNOWPACK BECOMES EXTREMELY THIN. |
---|
1187 | ! ---------------------------------------------------------------------- |
---|
1188 | ! FIRST CALCULATE THERMAL DIFFUSIVITY OF TOP SOIL LAYER, USING |
---|
1189 | ! BOTH THE FROZEN AND LIQUID SOIL MOISTURE, FOLLOWING THE |
---|
1190 | ! SOIL THERMAL DIFFUSIVITY FUNCTION OF PETERS-LIDARD ET AL. |
---|
1191 | ! (1998,JAS, VOL 55, 1209-1224), WHICH REQUIRES THE SPECIFYING |
---|
1192 | ! THE QUARTZ CONTENT OF THE GIVEN SOIL CLASS (SEE ROUTINE REDPRM) |
---|
1193 | ! ---------------------------------------------------------------------- |
---|
1194 | CALL TDFCND (DF1,SMC(1),QUARTZ,SMCMAX,SH2O(1)) |
---|
1195 | |
---|
1196 | ! ---------------------------------------------------------------------- |
---|
1197 | ! NEXT ADD SUBSURFACE HEAT FLUX REDUCTION EFFECT FROM THE |
---|
1198 | ! OVERLYING GREEN CANOPY, ADAPTED FROM SECTION 2.1.2 OF |
---|
1199 | ! PETERS-LIDARD ET AL. (1997, JGR, VOL 102(D4)) |
---|
1200 | ! ---------------------------------------------------------------------- |
---|
1201 | DF1 = DF1 * EXP(SBETA*SHDFAC) |
---|
1202 | ENDIF |
---|
1203 | |
---|
1204 | ! ---------------------------------------------------------------------- |
---|
1205 | ! FINALLY "PLANE PARALLEL" SNOWPACK EFFECT FOLLOWING |
---|
1206 | ! V.J. LINARDINI REFERENCE CITED ABOVE. NOTE THAT DTOT IS |
---|
1207 | ! COMBINED DEPTH OF SNOWDEPTH AND THICKNESS OF FIRST SOIL LAYER |
---|
1208 | ! ---------------------------------------------------------------------- |
---|
1209 | DSOIL = -(0.5 * ZSOIL(1)) |
---|
1210 | |
---|
1211 | IF (SNEQV .EQ. 0.) THEN |
---|
1212 | SSOIL = DF1 * (T1 - STC(1) ) / DSOIL |
---|
1213 | ELSE |
---|
1214 | DTOT = SNOWH + DSOIL |
---|
1215 | FRCSNO = SNOWH/DTOT |
---|
1216 | FRCSOI = DSOIL/DTOT |
---|
1217 | ! |
---|
1218 | ! 1. HARMONIC MEAN (SERIES FLOW) |
---|
1219 | ! DF1 = (SNCOND*DF1)/(FRCSOI*SNCOND+FRCSNO*DF1) |
---|
1220 | DF1H = (SNCOND*DF1)/(FRCSOI*SNCOND+FRCSNO*DF1) |
---|
1221 | ! 2. ARITHMETIC MEAN (PARALLEL FLOW) |
---|
1222 | ! DF1 = FRCSNO*SNCOND + FRCSOI*DF1 |
---|
1223 | DF1A = FRCSNO*SNCOND + FRCSOI*DF1 |
---|
1224 | ! |
---|
1225 | ! 3. GEOMETRIC MEAN (INTERMEDIATE BETWEEN HARMONIC AND ARITHMETIC MEAN) |
---|
1226 | ! DF1 = (SNCOND**FRCSNO)*(DF1**FRCSOI) |
---|
1227 | ! TEST - MBEK, 10 Jan 2002 |
---|
1228 | ! weigh DF by snow fraction |
---|
1229 | ! DF1 = DF1H*SNCOVR + DF1A*(1.0-SNCOVR) |
---|
1230 | ! DF1 = DF1H*SNCOVR + DF1*(1.0-SNCOVR) |
---|
1231 | DF1 = DF1A*SNCOVR + DF1*(1.0-SNCOVR) |
---|
1232 | |
---|
1233 | ! ---------------------------------------------------------------------- |
---|
1234 | ! CALCULATE SUBSURFACE HEAT FLUX, SSOIL, FROM FINAL THERMAL DIFFUSIVITY |
---|
1235 | ! OF SURFACE MEDIUMS, DF1 ABOVE, AND SKIN TEMPERATURE AND TOP |
---|
1236 | ! MID-LAYER SOIL TEMPERATURE |
---|
1237 | ! ---------------------------------------------------------------------- |
---|
1238 | SSOIL = DF1 * (T1 - STC(1) ) / DTOT |
---|
1239 | ENDIF |
---|
1240 | |
---|
1241 | ! MEK -- DEBUG -- AUG 2005 |
---|
1242 | ! WRITE(*,*) 'T1,STC(1),DSOIL=',T1,STC(1),DSOIL |
---|
1243 | ! WRITE(*,*) 'DF1,SBETA,SHDFAC=',DF1,SBETA,SHDFAC |
---|
1244 | ! WRITE(*,*) 'SSOIL=',SSOIL |
---|
1245 | |
---|
1246 | ! ---------------------------------------------------------------------- |
---|
1247 | ! DETERMINE SURFACE ROUGHNESS OVER SNOWPACK USING SNOW CONDITION FROM |
---|
1248 | ! THE PREVIOUS TIMESTEP. |
---|
1249 | ! ---------------------------------------------------------------------- |
---|
1250 | IF (SNCOVR .GT. 0.) THEN |
---|
1251 | CALL SNOWZ0 (SNCOVR,Z0) |
---|
1252 | ENDIF |
---|
1253 | |
---|
1254 | ! ---------------------------------------------------------------------- |
---|
1255 | ! NEXT CALL ROUTINE SFCDIF TO CALCULATE THE SFC EXCHANGE COEF (CH) FOR |
---|
1256 | ! HEAT AND MOISTURE. |
---|
1257 | ! |
---|
1258 | ! NOTE !!! |
---|
1259 | ! COMMENT OUT CALL SFCDIF, IF SFCDIF ALREADY CALLED IN CALLING PROGRAM |
---|
1260 | ! (SUCH AS IN COUPLED ATMOSPHERIC MODEL). |
---|
1261 | ! |
---|
1262 | ! NOTE !!! |
---|
1263 | ! DO NOT CALL SFCDIF UNTIL AFTER ABOVE CALL TO REDPRM, IN CASE |
---|
1264 | ! ALTERNATIVE VALUES OF ROUGHNESS LENGTH (Z0) AND ZILINTINKEVICH COEF |
---|
1265 | ! (CZIL) ARE SET THERE VIA NAMELIST I/O. |
---|
1266 | ! |
---|
1267 | ! NOTE !!! |
---|
1268 | ! ROUTINE SFCDIF RETURNS A CH THAT REPRESENTS THE WIND SPD TIMES THE |
---|
1269 | ! "ORIGINAL" NONDIMENSIONAL "Ch" TYPICAL IN LITERATURE. HENCE THE CH |
---|
1270 | ! RETURNED FROM SFCDIF HAS UNITS OF M/S. THE IMPORTANT COMPANION |
---|
1271 | ! COEFFICIENT OF CH, CARRIED HERE AS "RCH", IS THE CH FROM SFCDIF TIMES |
---|
1272 | ! AIR DENSITY AND PARAMETER "CP". "RCH" IS COMPUTED IN "CALL PENMAN". |
---|
1273 | ! RCH RATHER THAN CH IS THE COEFF USUALLY INVOKED LATER IN EQNS. |
---|
1274 | ! |
---|
1275 | ! NOTE !!! |
---|
1276 | ! SFCDIF ALSO RETURNS THE SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM, CM, |
---|
1277 | ! ALSO KNOWN AS THE SURFACE DRAGE COEFFICIENT, BUT CM IS NOT USED HERE. |
---|
1278 | ! ---------------------------------------------------------------------- |
---|
1279 | ! CALC VIRTUAL TEMPS AND VIRTUAL POTENTIAL TEMPS NEEDED BY SUBROUTINES |
---|
1280 | ! SFCDIF AND PENMAN. |
---|
1281 | ! ---------------------------------------------------------------------- |
---|
1282 | T2V = SFCTMP * (1.0 + 0.61 * Q2 ) |
---|
1283 | ! ---------------------------------------------------------------------- |
---|
1284 | ! COMMENT OUT BELOW 2 LINES IF CALL SFCDIF IS COMMENTED OUT, I.E. IN THE |
---|
1285 | ! COUPLED MODEL. |
---|
1286 | ! ---------------------------------------------------------------------- |
---|
1287 | ! T1V = T1 * (1.0 + 0.61 * Q2) |
---|
1288 | ! TH2V = TH2 * (1.0 + 0.61 * Q2) |
---|
1289 | ! |
---|
1290 | ! CALL SFCDIF (ZLVL,Z0,T1V,TH2V,SFCSPD,CZIL,CM,CH) |
---|
1291 | |
---|
1292 | ! ---------------------------------------------------------------------- |
---|
1293 | ! CALCULATE TOTAL DOWNWARD RADIATION (SOLAR PLUS LONGWAVE) NEEDED IN |
---|
1294 | ! PENMAN EP SUBROUTINE THAT FOLLOWS |
---|
1295 | ! ---------------------------------------------------------------------- |
---|
1296 | ! FDOWN = SOLDN*(1.0-ALBEDO) + LWDN |
---|
1297 | FDOWN = SOLNET + LWDN |
---|
1298 | |
---|
1299 | ! ---------------------------------------------------------------------- |
---|
1300 | ! CALL PENMAN SUBROUTINE TO CALCULATE POTENTIAL EVAPORATION (ETP), AND |
---|
1301 | ! OTHER PARTIAL PRODUCTS AND SUMS SAVE IN COMMON/RITE FOR LATER |
---|
1302 | ! CALCULATIONS. |
---|
1303 | ! ---------------------------------------------------------------------- |
---|
1304 | CALL PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, & |
---|
1305 | & Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, & |
---|
1306 | & DQSDT2,FLX2) |
---|
1307 | |
---|
1308 | ! ---------------------------------------------------------------------- |
---|
1309 | ! CALL CANRES TO CALCULATE THE CANOPY RESISTANCE AND CONVERT IT INTO PC |
---|
1310 | ! IF NONZERO GREENNESS FRACTION |
---|
1311 | ! ---------------------------------------------------------------------- |
---|
1312 | IF (SHDFAC .GT. 0.) THEN |
---|
1313 | |
---|
1314 | ! ---------------------------------------------------------------------- |
---|
1315 | ! FROZEN GROUND EXTENSION: TOTAL SOIL WATER "SMC" WAS REPLACED |
---|
1316 | ! BY UNFROZEN SOIL WATER "SH2O" IN CALL TO CANRES BELOW |
---|
1317 | ! ---------------------------------------------------------------------- |
---|
1318 | CALL CANRES (SOLDN,CH,SFCTMP,Q2,SFCPRS,SH2O,ZSOIL,NSOIL, & |
---|
1319 | & SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, & |
---|
1320 | & TOPT,RSMAX,RGL,HS,XLAI, & |
---|
1321 | & RCS,RCT,RCQ,RCSOIL) |
---|
1322 | |
---|
1323 | ENDIF |
---|
1324 | |
---|
1325 | ! ---------------------------------------------------------------------- |
---|
1326 | ! NOW DECIDE MAJOR PATHWAY BRANCH TO TAKE DEPENDING ON WHETHER SNOWPACK |
---|
1327 | ! EXISTS OR NOT: |
---|
1328 | ! ---------------------------------------------------------------------- |
---|
1329 | ESNOW = 0.0 |
---|
1330 | IF (SNEQV .EQ. 0.0) THEN |
---|
1331 | CALL NOPAC (ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, & |
---|
1332 | & SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT,SHDFAC, & |
---|
1333 | & SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL, & |
---|
1334 | & STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, & |
---|
1335 | & SH2O,SLOPE,KDT,FRZX,PSISAT,ZSOIL, & |
---|
1336 | & DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, & |
---|
1337 | & RUNOFF3,EDIR,EC,ET,ETT,NROOT,ICE,RTDIS, & |
---|
1338 | & QUARTZ,FXEXP,CSOIL, & |
---|
1339 | & BETA,DRIP,DEW,FLX1,FLX2,FLX3) |
---|
1340 | ELSE |
---|
1341 | CALL SNOPAC (ETP,ETA,PRCP,PRCP1,SNOWNG,SMC,SMCMAX,SMCWLT, & |
---|
1342 | & SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & |
---|
1343 | & SBETA,DF1, & |
---|
1344 | & Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA, & |
---|
1345 | & SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,SNEQV,SNDENS, & |
---|
1346 | & SNOWH,SH2O,SLOPE,KDT,FRZX,PSISAT,SNUP, & |
---|
1347 | & ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, & |
---|
1348 | & RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, & |
---|
1349 | & ICE,RTDIS,QUARTZ,FXEXP,CSOIL, & |
---|
1350 | & BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW) |
---|
1351 | ! ESNOW = ETA |
---|
1352 | ENDIF |
---|
1353 | |
---|
1354 | ! ---------------------------------------------------------------------- |
---|
1355 | ! PREPARE SENSIBLE HEAT (H) FOR RETURN TO PARENT MODEL |
---|
1356 | ! ---------------------------------------------------------------------- |
---|
1357 | SHEAT = -(CH * CP * SFCPRS)/(R * T2V) * ( TH2 - T1 ) |
---|
1358 | |
---|
1359 | ! ---------------------------------------------------------------------- |
---|
1360 | ! CONVERT UNITS AND/OR SIGN OF TOTAL EVAP (ETA), POTENTIAL EVAP (ETP), |
---|
1361 | ! SUBSURFACE HEAT FLUX (S), AND RUNOFFS FOR WHAT PARENT MODEL EXPECTS |
---|
1362 | ! CONVERT ETA FROM KG M-2 S-1 TO W M-2 |
---|
1363 | ! ---------------------------------------------------------------------- |
---|
1364 | ! ETA = ETA*LVH2O |
---|
1365 | ! ETP = ETP*LVH2O |
---|
1366 | |
---|
1367 | ! ---------------------------------------------------------------------- |
---|
1368 | EDIR = EDIR * LVH2O |
---|
1369 | EC = EC * LVH2O |
---|
1370 | DO K=1,4 |
---|
1371 | ET(K) = ET(K) * LVH2O |
---|
1372 | ENDDO |
---|
1373 | ETT = ETT * LVH2O |
---|
1374 | ESNOW = ESNOW * LSUBS |
---|
1375 | ETP = ETP*((1.-SNCOVR)*LVH2O + SNCOVR*LSUBS) |
---|
1376 | IF (ETP .GT. 0.) THEN |
---|
1377 | ETA = EDIR + EC + ETT + ESNOW |
---|
1378 | ELSE |
---|
1379 | ETA = ETP |
---|
1380 | ENDIF |
---|
1381 | BETA = ETA/ETP |
---|
1382 | ! ---------------------------------------------------------------------- |
---|
1383 | |
---|
1384 | ! ---------------------------------------------------------------------- |
---|
1385 | ! CONVERT THE SIGN OF SOIL HEAT FLUX SO THAT: |
---|
1386 | ! SSOIL>0: WARM THE SURFACE (NIGHT TIME) |
---|
1387 | ! SSOIL<0: COOL THE SURFACE (DAY TIME) |
---|
1388 | ! ---------------------------------------------------------------------- |
---|
1389 | SSOIL = -1.0*SSOIL |
---|
1390 | |
---|
1391 | ! ---------------------------------------------------------------------- |
---|
1392 | ! CONVERT RUNOFF3 (INTERNAL LAYER RUNOFF FROM SUPERSAT) FROM M TO M S-1 |
---|
1393 | ! AND ADD TO SUBSURFACE RUNOFF/DRAINAGE/BASEFLOW |
---|
1394 | ! ---------------------------------------------------------------------- |
---|
1395 | RUNOFF3 = RUNOFF3/DT |
---|
1396 | RUNOFF2 = RUNOFF2+RUNOFF3 |
---|
1397 | |
---|
1398 | ! ---------------------------------------------------------------------- |
---|
1399 | ! TOTAL COLUMN SOIL MOISTURE IN METERS (SOILM) AND ROOT-ZONE |
---|
1400 | ! SOIL MOISTURE AVAILABILITY (FRACTION) RELATIVE TO POROSITY/SATURATION |
---|
1401 | ! ---------------------------------------------------------------------- |
---|
1402 | SOILM = -1.0*SMC(1)*ZSOIL(1) |
---|
1403 | DO K = 2,NSOIL |
---|
1404 | SOILM = SOILM+SMC(K)*(ZSOIL(K-1)-ZSOIL(K)) |
---|
1405 | END DO |
---|
1406 | SOILWM = -1.0*(SMCMAX-SMCWLT)*ZSOIL(1) |
---|
1407 | SOILWW = -1.0*(SMC(1)-SMCWLT)*ZSOIL(1) |
---|
1408 | DO K = 2,NROOT |
---|
1409 | SOILWM = SOILWM+(SMCMAX-SMCWLT)*(ZSOIL(K-1)-ZSOIL(K)) |
---|
1410 | SOILWW = SOILWW+(SMC(K)-SMCWLT)*(ZSOIL(K-1)-ZSOIL(K)) |
---|
1411 | END DO |
---|
1412 | SOILW = SOILWW/SOILWM |
---|
1413 | |
---|
1414 | ! ---------------------------------------------------------------------- |
---|
1415 | ! END SUBROUTINE SFLX |
---|
1416 | ! ---------------------------------------------------------------------- |
---|
1417 | END SUBROUTINE SFLX |
---|
1418 | |
---|
1419 | SUBROUTINE ALCALC (ALB,SNOALB,SHDFAC,SHDMIN,SNCOVR,TSNOW,ALBEDO) |
---|
1420 | |
---|
1421 | IMPLICIT NONE |
---|
1422 | |
---|
1423 | ! ---------------------------------------------------------------------- |
---|
1424 | ! CALCULATE ALBEDO INCLUDING SNOW EFFECT (0 -> 1) |
---|
1425 | ! ALB SNOWFREE ALBEDO |
---|
1426 | ! SNOALB MAXIMUM (DEEP) SNOW ALBEDO |
---|
1427 | ! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
1428 | ! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION |
---|
1429 | ! SNCOVR FRACTIONAL SNOW COVER |
---|
1430 | ! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT |
---|
1431 | ! TSNOW SNOW SURFACE TEMPERATURE (K) |
---|
1432 | ! ---------------------------------------------------------------------- |
---|
1433 | REAL ALB, SNOALB, SHDFAC, SHDMIN, SNCOVR, ALBEDO, TSNOW |
---|
1434 | |
---|
1435 | ! ---------------------------------------------------------------------- |
---|
1436 | ! SNOALB IS ARGUMENT REPRESENTING MAXIMUM ALBEDO OVER DEEP SNOW, |
---|
1437 | ! AS PASSED INTO SFLX, AND ADAPTED FROM THE SATELLITE-BASED MAXIMUM |
---|
1438 | ! SNOW ALBEDO FIELDS PROVIDED BY D. ROBINSON AND G. KUKLA |
---|
1439 | ! (1985, JCAM, VOL 24, 402-411) |
---|
1440 | ! ---------------------------------------------------------------------- |
---|
1441 | ! changed in version 2.6 on June 2nd 2003 |
---|
1442 | ! ALBEDO = ALB + (1.0-(SHDFAC-SHDMIN))*SNCOVR*(SNOALB-ALB) |
---|
1443 | ALBEDO = ALB + SNCOVR*(SNOALB-ALB) |
---|
1444 | IF (ALBEDO .GT. SNOALB) ALBEDO=SNOALB |
---|
1445 | |
---|
1446 | ! BASE FORMULATION (DICKINSON ET AL., 1986, COGLEY ET AL., 1990) |
---|
1447 | ! IF (TSNOW.LE.263.16) THEN |
---|
1448 | ! ALBEDO=SNOALB |
---|
1449 | ! ELSE |
---|
1450 | ! IF (TSNOW.LT.273.16) THEN |
---|
1451 | ! TM=0.1*(TSNOW-263.16) |
---|
1452 | ! ALBEDO=0.5*((0.9-0.2*(TM**3))+(0.8-0.16*(TM**3))) |
---|
1453 | ! ELSE |
---|
1454 | ! ALBEDO=0.67 |
---|
1455 | ! ENDIF |
---|
1456 | ! ENDIF |
---|
1457 | |
---|
1458 | ! ISBA FORMULATION (VERSEGHY, 1991; BAKER ET AL., 1990) |
---|
1459 | ! IF (TSNOW.LT.273.16) THEN |
---|
1460 | ! ALBEDO=SNOALB-0.008*DT/86400 |
---|
1461 | ! ELSE |
---|
1462 | ! ALBEDO=(SNOALB-0.5)*EXP(-0.24*DT/86400)+0.5 |
---|
1463 | ! ENDIF |
---|
1464 | |
---|
1465 | ! ---------------------------------------------------------------------- |
---|
1466 | ! END SUBROUTINE ALCALC |
---|
1467 | ! ---------------------------------------------------------------------- |
---|
1468 | END SUBROUTINE ALCALC |
---|
1469 | |
---|
1470 | SUBROUTINE CANRES (SOLAR,CH,SFCTMP,Q2,SFCPRS,SMC,ZSOIL,NSOIL, & |
---|
1471 | & SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, & |
---|
1472 | & TOPT,RSMAX,RGL,HS,XLAI, & |
---|
1473 | & RCS,RCT,RCQ,RCSOIL) |
---|
1474 | |
---|
1475 | IMPLICIT NONE |
---|
1476 | |
---|
1477 | ! ---------------------------------------------------------------------- |
---|
1478 | ! SUBROUTINE CANRES |
---|
1479 | ! ---------------------------------------------------------------------- |
---|
1480 | ! CALCULATE CANOPY RESISTANCE WHICH DEPENDS ON INCOMING SOLAR RADIATION, |
---|
1481 | ! AIR TEMPERATURE, ATMOSPHERIC WATER VAPOR PRESSURE DEFICIT AT THE |
---|
1482 | ! LOWEST MODEL LEVEL, AND SOIL MOISTURE (PREFERABLY UNFROZEN SOIL |
---|
1483 | ! MOISTURE RATHER THAN TOTAL) |
---|
1484 | ! ---------------------------------------------------------------------- |
---|
1485 | ! SOURCE: JARVIS (1976), NOILHAN AND PLANTON (1989, MWR), JACQUEMIN AND |
---|
1486 | ! NOILHAN (1990, BLM) |
---|
1487 | ! SEE ALSO: CHEN ET AL (1996, JGR, VOL 101(D3), 7251-7268), EQNS 12-14 |
---|
1488 | ! AND TABLE 2 OF SEC. 3.1.2 |
---|
1489 | ! ---------------------------------------------------------------------- |
---|
1490 | ! INPUT: |
---|
1491 | ! SOLAR INCOMING SOLAR RADIATION |
---|
1492 | ! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE |
---|
1493 | ! SFCTMP AIR TEMPERATURE AT 1ST LEVEL ABOVE GROUND |
---|
1494 | ! Q2 AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND |
---|
1495 | ! Q2SAT SATURATION AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND |
---|
1496 | ! DQSDT2 SLOPE OF SATURATION HUMIDITY FUNCTION WRT TEMP |
---|
1497 | ! SFCPRS SURFACE PRESSURE |
---|
1498 | ! SMC VOLUMETRIC SOIL MOISTURE |
---|
1499 | ! ZSOIL SOIL DEPTH (NEGATIVE SIGN, AS IT IS BELOW GROUND) |
---|
1500 | ! NSOIL NO. OF SOIL LAYERS |
---|
1501 | ! NROOT NO. OF SOIL LAYERS IN ROOT ZONE (1.LE.NROOT.LE.NSOIL) |
---|
1502 | ! XLAI LEAF AREA INDEX |
---|
1503 | ! SMCWLT WILTING POINT |
---|
1504 | ! SMCREF REFERENCE SOIL MOISTURE (WHERE SOIL WATER DEFICIT STRESS |
---|
1505 | ! SETS IN) |
---|
1506 | ! RSMIN, RSMAX, TOPT, RGL, HS ARE CANOPY STRESS PARAMETERS SET IN |
---|
1507 | ! SURBOUTINE REDPRM |
---|
1508 | ! OUTPUT: |
---|
1509 | ! PC PLANT COEFFICIENT |
---|
1510 | ! RC CANOPY RESISTANCE |
---|
1511 | ! ---------------------------------------------------------------------- |
---|
1512 | INTEGER NSOLD |
---|
1513 | PARAMETER(NSOLD = 20) |
---|
1514 | |
---|
1515 | INTEGER K |
---|
1516 | INTEGER NROOT |
---|
1517 | INTEGER NSOIL |
---|
1518 | |
---|
1519 | REAL CH |
---|
1520 | REAL CP |
---|
1521 | REAL DELTA |
---|
1522 | REAL DQSDT2 |
---|
1523 | REAL FF |
---|
1524 | REAL GX |
---|
1525 | REAL HS |
---|
1526 | REAL P |
---|
1527 | REAL PART(NSOLD) |
---|
1528 | REAL PC |
---|
1529 | REAL Q2 |
---|
1530 | REAL Q2SAT |
---|
1531 | REAL RC |
---|
1532 | REAL RSMIN |
---|
1533 | REAL RCQ |
---|
1534 | REAL RCS |
---|
1535 | REAL RCSOIL |
---|
1536 | REAL RCT |
---|
1537 | REAL RD |
---|
1538 | REAL RGL |
---|
1539 | REAL RR |
---|
1540 | REAL RSMAX |
---|
1541 | REAL SFCPRS |
---|
1542 | REAL SFCTMP |
---|
1543 | REAL SIGMA |
---|
1544 | REAL SLV |
---|
1545 | REAL SMC(NSOIL) |
---|
1546 | REAL SMCREF |
---|
1547 | REAL SMCWLT |
---|
1548 | REAL SOLAR |
---|
1549 | REAL TOPT |
---|
1550 | REAL SLVCP |
---|
1551 | REAL ST1 |
---|
1552 | REAL TAIR4 |
---|
1553 | REAL XLAI |
---|
1554 | REAL ZSOIL(NSOIL) |
---|
1555 | |
---|
1556 | PARAMETER(CP = 1004.5) |
---|
1557 | PARAMETER(RD = 287.04) |
---|
1558 | PARAMETER(SIGMA = 5.67E-8) |
---|
1559 | PARAMETER(SLV = 2.501000E6) |
---|
1560 | |
---|
1561 | ! ---------------------------------------------------------------------- |
---|
1562 | ! INITIALIZE CANOPY RESISTANCE MULTIPLIER TERMS. |
---|
1563 | ! ---------------------------------------------------------------------- |
---|
1564 | RCS = 0.0 |
---|
1565 | RCT = 0.0 |
---|
1566 | RCQ = 0.0 |
---|
1567 | RCSOIL = 0.0 |
---|
1568 | RC = 0.0 |
---|
1569 | |
---|
1570 | ! ---------------------------------------------------------------------- |
---|
1571 | ! CONTRIBUTION DUE TO INCOMING SOLAR RADIATION |
---|
1572 | ! ---------------------------------------------------------------------- |
---|
1573 | FF = 0.55*2.0*SOLAR/(RGL*XLAI) |
---|
1574 | RCS = (FF + RSMIN/RSMAX) / (1.0 + FF) |
---|
1575 | RCS = MAX(RCS,0.0001) |
---|
1576 | |
---|
1577 | ! ---------------------------------------------------------------------- |
---|
1578 | ! CONTRIBUTION DUE TO AIR TEMPERATURE AT FIRST MODEL LEVEL ABOVE GROUND |
---|
1579 | ! RCT EXPRESSION FROM NOILHAN AND PLANTON (1989, MWR). |
---|
1580 | ! ---------------------------------------------------------------------- |
---|
1581 | RCT = 1.0 - 0.0016*((TOPT-SFCTMP)**2.0) |
---|
1582 | RCT = MAX(RCT,0.0001) |
---|
1583 | |
---|
1584 | ! ---------------------------------------------------------------------- |
---|
1585 | ! CONTRIBUTION DUE TO VAPOR PRESSURE DEFICIT AT FIRST MODEL LEVEL. |
---|
1586 | ! RCQ EXPRESSION FROM SSIB |
---|
1587 | ! ---------------------------------------------------------------------- |
---|
1588 | RCQ = 1.0/(1.0+HS*(Q2SAT-Q2)) |
---|
1589 | RCQ = MAX(RCQ,0.01) |
---|
1590 | |
---|
1591 | ! ---------------------------------------------------------------------- |
---|
1592 | ! CONTRIBUTION DUE TO SOIL MOISTURE AVAILABILITY. |
---|
1593 | ! DETERMINE CONTRIBUTION FROM EACH SOIL LAYER, THEN ADD THEM UP. |
---|
1594 | ! ---------------------------------------------------------------------- |
---|
1595 | GX = (SMC(1) - SMCWLT) / (SMCREF - SMCWLT) |
---|
1596 | IF (GX .GT. 1.) GX = 1. |
---|
1597 | IF (GX .LT. 0.) GX = 0. |
---|
1598 | |
---|
1599 | ! ---------------------------------------------------------------------- |
---|
1600 | ! USE SOIL DEPTH AS WEIGHTING FACTOR |
---|
1601 | ! ---------------------------------------------------------------------- |
---|
1602 | PART(1) = (ZSOIL(1)/ZSOIL(NROOT)) * GX |
---|
1603 | ! ---------------------------------------------------------------------- |
---|
1604 | ! USE ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
1605 | ! PART(1) = RTDIS(1) * GX |
---|
1606 | ! ---------------------------------------------------------------------- |
---|
1607 | IF (NROOT .GT. 1) THEN |
---|
1608 | DO K = 2,NROOT |
---|
1609 | GX = (SMC(K) - SMCWLT) / (SMCREF - SMCWLT) |
---|
1610 | IF (GX .GT. 1.) GX = 1. |
---|
1611 | IF (GX .LT. 0.) GX = 0. |
---|
1612 | ! ---------------------------------------------------------------------- |
---|
1613 | ! USE SOIL DEPTH AS WEIGHTING FACTOR |
---|
1614 | ! ---------------------------------------------------------------------- |
---|
1615 | PART(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT)) * GX |
---|
1616 | ! ---------------------------------------------------------------------- |
---|
1617 | ! USE ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
1618 | ! PART(K) = RTDIS(K) * GX |
---|
1619 | ! ---------------------------------------------------------------------- |
---|
1620 | END DO |
---|
1621 | ENDIF |
---|
1622 | |
---|
1623 | DO K = 1,NROOT |
---|
1624 | RCSOIL = RCSOIL+PART(K) |
---|
1625 | END DO |
---|
1626 | RCSOIL = MAX(RCSOIL,0.0001) |
---|
1627 | |
---|
1628 | ! ---------------------------------------------------------------------- |
---|
1629 | ! DETERMINE CANOPY RESISTANCE DUE TO ALL FACTORS. CONVERT CANOPY |
---|
1630 | ! RESISTANCE (RC) TO PLANT COEFFICIENT (PC) TO BE USED WITH POTENTIAL |
---|
1631 | ! EVAP IN DETERMINING ACTUAL EVAP. PC IS DETERMINED BY: |
---|
1632 | ! PC * LINERIZED PENMAN POTENTIAL EVAP = |
---|
1633 | ! PENMAN-MONTEITH ACTUAL EVAPORATION (CONTAINING RC TERM). |
---|
1634 | ! ---------------------------------------------------------------------- |
---|
1635 | RC = RSMIN/(XLAI*RCS*RCT*RCQ*RCSOIL) |
---|
1636 | |
---|
1637 | ! TAIR4 = SFCTMP**4. |
---|
1638 | ! ST1 = (4.*SIGMA*RD)/CP |
---|
1639 | ! SLVCP = SLV/CP |
---|
1640 | ! RR = ST1*TAIR4/(SFCPRS*CH) + 1.0 |
---|
1641 | RR = (4.*SIGMA*RD/CP)*(SFCTMP**4.)/(SFCPRS*CH) + 1.0 |
---|
1642 | DELTA = (SLV/CP)*DQSDT2 |
---|
1643 | |
---|
1644 | PC = (RR+DELTA)/(RR*(1.+RC*CH)+DELTA) |
---|
1645 | |
---|
1646 | ! ---------------------------------------------------------------------- |
---|
1647 | ! END SUBROUTINE CANRES |
---|
1648 | ! ---------------------------------------------------------------------- |
---|
1649 | END SUBROUTINE CANRES |
---|
1650 | |
---|
1651 | SUBROUTINE DEVAP (EDIR1,ETP1,SMC,ZSOIL,SHDFAC,SMCMAX,BEXP, & |
---|
1652 | & DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) |
---|
1653 | |
---|
1654 | IMPLICIT NONE |
---|
1655 | |
---|
1656 | ! ---------------------------------------------------------------------- |
---|
1657 | ! SUBROUTINE DEVAP |
---|
1658 | ! ---------------------------------------------------------------------- |
---|
1659 | ! CALCULATE DIRECT SOIL EVAPORATION |
---|
1660 | ! ---------------------------------------------------------------------- |
---|
1661 | REAL BEXP |
---|
1662 | ! REAL DEVAP |
---|
1663 | REAL EDIR1 |
---|
1664 | REAL DKSAT |
---|
1665 | REAL DWSAT |
---|
1666 | REAL ETP1 |
---|
1667 | REAL FX |
---|
1668 | REAL FXEXP |
---|
1669 | REAL SHDFAC |
---|
1670 | REAL SMC |
---|
1671 | REAL SMCDRY |
---|
1672 | REAL SMCMAX |
---|
1673 | REAL ZSOIL |
---|
1674 | REAL SMCREF |
---|
1675 | REAL SMCWLT |
---|
1676 | REAL SRATIO |
---|
1677 | |
---|
1678 | ! ---------------------------------------------------------------------- |
---|
1679 | ! DIRECT EVAP A FUNCTION OF RELATIVE SOIL MOISTURE AVAILABILITY, LINEAR |
---|
1680 | ! WHEN FXEXP=1. |
---|
1681 | ! FX > 1 REPRESENTS DEMAND CONTROL |
---|
1682 | ! FX < 1 REPRESENTS FLUX CONTROL |
---|
1683 | ! ---------------------------------------------------------------------- |
---|
1684 | SRATIO = (SMC - SMCDRY) / (SMCMAX - SMCDRY) |
---|
1685 | IF (SRATIO .GT. 0.) THEN |
---|
1686 | FX = SRATIO**FXEXP |
---|
1687 | FX = MAX ( MIN ( FX, 1. ) ,0. ) |
---|
1688 | ELSE |
---|
1689 | FX = 0. |
---|
1690 | ENDIF |
---|
1691 | |
---|
1692 | ! ---------------------------------------------------------------------- |
---|
1693 | ! ALLOW FOR THE DIRECT-EVAP-REDUCING EFFECT OF SHADE |
---|
1694 | ! ---------------------------------------------------------------------- |
---|
1695 | ! DEVAP = FX * ( 1.0 - SHDFAC ) * ETP1 |
---|
1696 | EDIR1 = FX * ( 1.0 - SHDFAC ) * ETP1 |
---|
1697 | |
---|
1698 | ! ---------------------------------------------------------------------- |
---|
1699 | ! END SUBROUTINE DEVAP |
---|
1700 | ! ---------------------------------------------------------------------- |
---|
1701 | END SUBROUTINE DEVAP |
---|
1702 | |
---|
1703 | SUBROUTINE EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & |
---|
1704 | & SH2O, & |
---|
1705 | & SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & |
---|
1706 | & SMCREF,SHDFAC,CMCMAX, & |
---|
1707 | & SMCDRY,CFACTR, & |
---|
1708 | & EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
1709 | |
---|
1710 | IMPLICIT NONE |
---|
1711 | |
---|
1712 | ! ---------------------------------------------------------------------- |
---|
1713 | ! SUBROUTINE EVAPO |
---|
1714 | ! ---------------------------------------------------------------------- |
---|
1715 | ! CALCULATE SOIL MOISTURE FLUX. THE SOIL MOISTURE CONTENT (SMC - A PER |
---|
1716 | ! UNIT VOLUME MEASUREMENT) IS A DEPENDENT VARIABLE THAT IS UPDATED WITH |
---|
1717 | ! PROGNOSTIC EQNS. THE CANOPY MOISTURE CONTENT (CMC) IS ALSO UPDATED. |
---|
1718 | ! FROZEN GROUND VERSION: NEW STATES ADDED: SH2O, AND FROZEN GROUND |
---|
1719 | ! CORRECTION FACTOR, FRZFACT AND PARAMETER SLOPE. |
---|
1720 | ! ---------------------------------------------------------------------- |
---|
1721 | INTEGER NSOLD |
---|
1722 | PARAMETER(NSOLD = 20) |
---|
1723 | |
---|
1724 | INTEGER I |
---|
1725 | INTEGER K |
---|
1726 | INTEGER NSOIL |
---|
1727 | INTEGER NROOT |
---|
1728 | |
---|
1729 | REAL BEXP |
---|
1730 | REAL CFACTR |
---|
1731 | REAL CMC |
---|
1732 | REAL CMC2MS |
---|
1733 | REAL CMCMAX |
---|
1734 | ! REAL DEVAP |
---|
1735 | REAL DKSAT |
---|
1736 | REAL DT |
---|
1737 | REAL DWSAT |
---|
1738 | REAL EC1 |
---|
1739 | REAL EDIR1 |
---|
1740 | REAL ET1(NSOIL) |
---|
1741 | REAL ETA1 |
---|
1742 | REAL ETP1 |
---|
1743 | REAL ETT1 |
---|
1744 | REAL FXEXP |
---|
1745 | REAL PC |
---|
1746 | REAL Q2 |
---|
1747 | REAL RTDIS(NSOIL) |
---|
1748 | REAL SFCTMP |
---|
1749 | REAL SHDFAC |
---|
1750 | REAL SMC(NSOIL) |
---|
1751 | REAL SH2O(NSOIL) |
---|
1752 | REAL SMCDRY |
---|
1753 | REAL SMCMAX |
---|
1754 | REAL SMCREF |
---|
1755 | REAL SMCWLT |
---|
1756 | REAL ZSOIL(NSOIL) |
---|
1757 | |
---|
1758 | ! ---------------------------------------------------------------------- |
---|
1759 | ! EXECUTABLE CODE BEGINS HERE IF THE POTENTIAL EVAPOTRANSPIRATION IS |
---|
1760 | ! GREATER THAN ZERO. |
---|
1761 | ! ---------------------------------------------------------------------- |
---|
1762 | EDIR1 = 0. |
---|
1763 | EC1 = 0. |
---|
1764 | DO K = 1,NSOIL |
---|
1765 | ET1(K) = 0. |
---|
1766 | END DO |
---|
1767 | ETT1 = 0. |
---|
1768 | |
---|
1769 | IF (ETP1 .GT. 0.0) THEN |
---|
1770 | |
---|
1771 | ! ---------------------------------------------------------------------- |
---|
1772 | ! RETRIEVE DIRECT EVAPORATION FROM SOIL SURFACE. CALL THIS FUNCTION |
---|
1773 | ! ONLY IF VEG COVER NOT COMPLETE. |
---|
1774 | ! FROZEN GROUND VERSION: SH2O STATES REPLACE SMC STATES. |
---|
1775 | ! ---------------------------------------------------------------------- |
---|
1776 | IF (SHDFAC .LT. 1.) THEN |
---|
1777 | CALL DEVAP (EDIR1,ETP1,SH2O(1),ZSOIL(1),SHDFAC,SMCMAX, & |
---|
1778 | ! EDIR = DEVAP(ETP1,SH2O(1),ZSOIL(1),SHDFAC,SMCMAX, & |
---|
1779 | & BEXP,DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) |
---|
1780 | ENDIF |
---|
1781 | |
---|
1782 | ! ---------------------------------------------------------------------- |
---|
1783 | ! INITIALIZE PLANT TOTAL TRANSPIRATION, RETRIEVE PLANT TRANSPIRATION, |
---|
1784 | ! AND ACCUMULATE IT FOR ALL SOIL LAYERS. |
---|
1785 | ! ---------------------------------------------------------------------- |
---|
1786 | IF (SHDFAC.GT.0.0) THEN |
---|
1787 | |
---|
1788 | CALL TRANSP (ET1,NSOIL,ETP1,SH2O,CMC,ZSOIL,SHDFAC,SMCWLT, & |
---|
1789 | & CMCMAX,PC,CFACTR,SMCREF,SFCTMP,Q2,NROOT,RTDIS) |
---|
1790 | |
---|
1791 | DO K = 1,NSOIL |
---|
1792 | ETT1 = ETT1 + ET1(K) |
---|
1793 | END DO |
---|
1794 | |
---|
1795 | ! ---------------------------------------------------------------------- |
---|
1796 | ! CALCULATE CANOPY EVAPORATION. |
---|
1797 | ! IF STATEMENTS TO AVOID TANGENT LINEAR PROBLEMS NEAR CMC=0.0. |
---|
1798 | ! ---------------------------------------------------------------------- |
---|
1799 | IF (CMC .GT. 0.0) THEN |
---|
1800 | EC1 = SHDFAC * ( ( CMC / CMCMAX ) ** CFACTR ) * ETP1 |
---|
1801 | ELSE |
---|
1802 | EC1 = 0.0 |
---|
1803 | ENDIF |
---|
1804 | |
---|
1805 | ! ---------------------------------------------------------------------- |
---|
1806 | ! EC SHOULD BE LIMITED BY THE TOTAL AMOUNT OF AVAILABLE WATER ON THE |
---|
1807 | ! CANOPY. -F.CHEN, 18-OCT-1994 |
---|
1808 | ! ---------------------------------------------------------------------- |
---|
1809 | CMC2MS = CMC / DT |
---|
1810 | EC1 = MIN ( CMC2MS, EC1 ) |
---|
1811 | ENDIF |
---|
1812 | ENDIF |
---|
1813 | |
---|
1814 | ! ---------------------------------------------------------------------- |
---|
1815 | ! TOTAL UP EVAP AND TRANSP TYPES TO OBTAIN ACTUAL EVAPOTRANSP |
---|
1816 | ! ---------------------------------------------------------------------- |
---|
1817 | ETA1 = EDIR1 + ETT1 + EC1 |
---|
1818 | |
---|
1819 | ! ---------------------------------------------------------------------- |
---|
1820 | ! END SUBROUTINE EVAPO |
---|
1821 | ! ---------------------------------------------------------------------- |
---|
1822 | END SUBROUTINE EVAPO |
---|
1823 | |
---|
1824 | SUBROUTINE HRT (RHSTS,STC,SMC,SMCMAX,NSOIL,ZSOIL,YY,ZZ1, & |
---|
1825 | & TBOT,ZBOT,PSISAT,SH2O,DT,BEXP, & |
---|
1826 | & F1,DF1,QUARTZ,CSOIL,AI,BI,CI) |
---|
1827 | |
---|
1828 | IMPLICIT NONE |
---|
1829 | |
---|
1830 | ! ---------------------------------------------------------------------- |
---|
1831 | ! SUBROUTINE HRT |
---|
1832 | ! ---------------------------------------------------------------------- |
---|
1833 | ! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL |
---|
1834 | ! THERMAL DIFFUSION EQUATION. ALSO TO COMPUTE ( PREPARE ) THE MATRIX |
---|
1835 | ! COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. |
---|
1836 | ! ---------------------------------------------------------------------- |
---|
1837 | INTEGER NSOLD |
---|
1838 | PARAMETER(NSOLD = 20) |
---|
1839 | |
---|
1840 | LOGICAL ITAVG |
---|
1841 | |
---|
1842 | INTEGER I |
---|
1843 | INTEGER K |
---|
1844 | INTEGER NSOIL |
---|
1845 | |
---|
1846 | ! ---------------------------------------------------------------------- |
---|
1847 | ! DECLARE WORK ARRAYS NEEDED IN TRI-DIAGONAL IMPLICIT SOLVER |
---|
1848 | ! ---------------------------------------------------------------------- |
---|
1849 | REAL AI(NSOLD) |
---|
1850 | REAL BI(NSOLD) |
---|
1851 | REAL CI(NSOLD) |
---|
1852 | |
---|
1853 | ! ---------------------------------------------------------------------- |
---|
1854 | ! DECLARATIONS |
---|
1855 | ! ---------------------------------------------------------------------- |
---|
1856 | REAL BEXP |
---|
1857 | REAL CAIR |
---|
1858 | REAL CH2O |
---|
1859 | REAL CICE |
---|
1860 | REAL CSOIL |
---|
1861 | REAL DDZ |
---|
1862 | REAL DDZ2 |
---|
1863 | REAL DENOM |
---|
1864 | REAL DF1 |
---|
1865 | REAL DF1N |
---|
1866 | REAL DF1K |
---|
1867 | REAL DT |
---|
1868 | REAL DTSDZ |
---|
1869 | REAL DTSDZ2 |
---|
1870 | REAL F1 |
---|
1871 | REAL HCPCT |
---|
1872 | REAL PSISAT |
---|
1873 | REAL QUARTZ |
---|
1874 | REAL QTOT |
---|
1875 | REAL RHSTS(NSOIL) |
---|
1876 | REAL SSOIL |
---|
1877 | REAL SICE |
---|
1878 | REAL SMC(NSOIL) |
---|
1879 | REAL SH2O(NSOIL) |
---|
1880 | REAL SMCMAX |
---|
1881 | ! REAL SNKSRC |
---|
1882 | REAL STC(NSOIL) |
---|
1883 | REAL T0 |
---|
1884 | REAL TAVG |
---|
1885 | REAL TBK |
---|
1886 | REAL TBK1 |
---|
1887 | REAL TBOT |
---|
1888 | REAL ZBOT |
---|
1889 | REAL TSNSR |
---|
1890 | REAL TSURF |
---|
1891 | REAL YY |
---|
1892 | REAL ZSOIL(NSOIL) |
---|
1893 | REAL ZZ1 |
---|
1894 | |
---|
1895 | PARAMETER(T0 = 273.15) |
---|
1896 | |
---|
1897 | ! ---------------------------------------------------------------------- |
---|
1898 | ! SET SPECIFIC HEAT CAPACITIES OF AIR, WATER, ICE, SOIL MINERAL |
---|
1899 | ! ---------------------------------------------------------------------- |
---|
1900 | PARAMETER(CAIR = 1004.0) |
---|
1901 | PARAMETER(CH2O = 4.2E6) |
---|
1902 | PARAMETER(CICE = 2.106E6) |
---|
1903 | ! NOTE: CSOIL NOW SET IN ROUTINE REDPRM AND PASSED IN |
---|
1904 | ! PARAMETER(CSOIL = 1.26E6) |
---|
1905 | |
---|
1906 | ! ---------------------------------------------------------------------- |
---|
1907 | ! INITIALIZE LOGICAL FOR SOIL LAYER TEMPERATURE AVERAGING. |
---|
1908 | ! ---------------------------------------------------------------------- |
---|
1909 | ITAVG = .TRUE. |
---|
1910 | ! ITAVG = .FALSE. |
---|
1911 | |
---|
1912 | ! ---------------------------------------------------------------------- |
---|
1913 | ! BEGIN SECTION FOR TOP SOIL LAYER |
---|
1914 | ! ---------------------------------------------------------------------- |
---|
1915 | ! CALC THE HEAT CAPACITY OF THE TOP SOIL LAYER |
---|
1916 | ! ---------------------------------------------------------------------- |
---|
1917 | HCPCT = SH2O(1)*CH2O + (1.0-SMCMAX)*CSOIL + (SMCMAX-SMC(1))*CAIR & |
---|
1918 | & + ( SMC(1) - SH2O(1) )*CICE |
---|
1919 | |
---|
1920 | ! ---------------------------------------------------------------------- |
---|
1921 | ! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER |
---|
1922 | ! ---------------------------------------------------------------------- |
---|
1923 | DDZ = 1.0 / ( -0.5 * ZSOIL(2) ) |
---|
1924 | AI(1) = 0.0 |
---|
1925 | CI(1) = (DF1 * DDZ) / (ZSOIL(1) * HCPCT) |
---|
1926 | BI(1) = -CI(1) + DF1 / (0.5 * ZSOIL(1) * ZSOIL(1)*HCPCT*ZZ1) |
---|
1927 | |
---|
1928 | ! ---------------------------------------------------------------------- |
---|
1929 | ! CALCULATE THE VERTICAL SOIL TEMP GRADIENT BTWN THE 1ST AND 2ND SOIL |
---|
1930 | ! LAYERS. THEN CALCULATE THE SUBSURFACE HEAT FLUX. USE THE TEMP |
---|
1931 | ! GRADIENT AND SUBSFC HEAT FLUX TO CALC "RIGHT-HAND SIDE TENDENCY |
---|
1932 | ! TERMS", OR "RHSTS", FOR TOP SOIL LAYER. |
---|
1933 | ! ---------------------------------------------------------------------- |
---|
1934 | DTSDZ = (STC(1) - STC(2)) / (-0.5 * ZSOIL(2)) |
---|
1935 | SSOIL = DF1 * (STC(1) - YY) / (0.5 * ZSOIL(1) * ZZ1) |
---|
1936 | RHSTS(1) = (DF1 * DTSDZ - SSOIL) / (ZSOIL(1) * HCPCT) |
---|
1937 | |
---|
1938 | ! ---------------------------------------------------------------------- |
---|
1939 | ! NEXT CAPTURE THE VERTICAL DIFFERENCE OF THE HEAT FLUX AT TOP AND |
---|
1940 | ! BOTTOM OF FIRST SOIL LAYER FOR USE IN HEAT FLUX CONSTRAINT APPLIED TO |
---|
1941 | ! POTENTIAL SOIL FREEZING/THAWING IN ROUTINE SNKSRC. |
---|
1942 | ! ---------------------------------------------------------------------- |
---|
1943 | QTOT = SSOIL - DF1*DTSDZ |
---|
1944 | |
---|
1945 | ! ---------------------------------------------------------------------- |
---|
1946 | ! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): |
---|
1947 | ! SET TEMP "TSURF" AT TOP OF SOIL COLUMN (FOR USE IN FREEZING SOIL |
---|
1948 | ! PHYSICS LATER IN FUNCTION SUBROUTINE SNKSRC). IF SNOWPACK CONTENT IS |
---|
1949 | ! ZERO, THEN TSURF EXPRESSION BELOW GIVES TSURF = SKIN TEMP. IF |
---|
1950 | ! SNOWPACK IS NONZERO (HENCE ARGUMENT ZZ1=1), THEN TSURF EXPRESSION |
---|
1951 | ! BELOW YIELDS SOIL COLUMN TOP TEMPERATURE UNDER SNOWPACK. THEN |
---|
1952 | ! CALCULATE TEMPERATURE AT BOTTOM INTERFACE OF 1ST SOIL LAYER FOR USE |
---|
1953 | ! LATER IN FUNCTION SUBROUTINE SNKSRC |
---|
1954 | ! ---------------------------------------------------------------------- |
---|
1955 | IF (ITAVG) THEN |
---|
1956 | TSURF = (YY + (ZZ1-1) * STC(1)) / ZZ1 |
---|
1957 | CALL TBND (STC(1),STC(2),ZSOIL,ZBOT,1,NSOIL,TBK) |
---|
1958 | ENDIF |
---|
1959 | |
---|
1960 | ! ---------------------------------------------------------------------- |
---|
1961 | ! CALCULATE FROZEN WATER CONTENT IN 1ST SOIL LAYER. |
---|
1962 | ! ---------------------------------------------------------------------- |
---|
1963 | SICE = SMC(1) - SH2O(1) |
---|
1964 | |
---|
1965 | ! ---------------------------------------------------------------------- |
---|
1966 | ! IF FROZEN WATER PRESENT OR ANY OF LAYER-1 MID-POINT OR BOUNDING |
---|
1967 | ! INTERFACE TEMPERATURES BELOW FREEZING, THEN CALL SNKSRC TO |
---|
1968 | ! COMPUTE HEAT SOURCE/SINK (AND CHANGE IN FROZEN WATER CONTENT) |
---|
1969 | ! DUE TO POSSIBLE SOIL WATER PHASE CHANGE |
---|
1970 | ! ---------------------------------------------------------------------- |
---|
1971 | IF ( (SICE .GT. 0.) .OR. (TSURF .LT. T0) .OR. & |
---|
1972 | & (STC(1) .LT. T0) .OR. (TBK .LT. T0) ) THEN |
---|
1973 | |
---|
1974 | IF (ITAVG) THEN |
---|
1975 | CALL TMPAVG(TAVG,TSURF,STC(1),TBK,ZSOIL,NSOIL,1) |
---|
1976 | ELSE |
---|
1977 | TAVG = STC(1) |
---|
1978 | ENDIF |
---|
1979 | TSNSR = SNKSRC (TAVG,SMC(1),SH2O(1), & |
---|
1980 | & ZSOIL,NSOIL,SMCMAX,PSISAT,BEXP,DT,1,QTOT) |
---|
1981 | |
---|
1982 | RHSTS(1) = RHSTS(1) - TSNSR / ( ZSOIL(1) * HCPCT ) |
---|
1983 | ENDIF |
---|
1984 | |
---|
1985 | ! ---------------------------------------------------------------------- |
---|
1986 | ! THIS ENDS SECTION FOR TOP SOIL LAYER. |
---|
1987 | ! ---------------------------------------------------------------------- |
---|
1988 | ! INITIALIZE DDZ2 |
---|
1989 | ! ---------------------------------------------------------------------- |
---|
1990 | DDZ2 = 0.0 |
---|
1991 | |
---|
1992 | ! ---------------------------------------------------------------------- |
---|
1993 | ! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABOVE PROCESS |
---|
1994 | ! (EXCEPT SUBSFC OR "GROUND" HEAT FLUX NOT REPEATED IN LOWER LAYERS) |
---|
1995 | ! ---------------------------------------------------------------------- |
---|
1996 | DF1K = DF1 |
---|
1997 | DO K = 2,NSOIL |
---|
1998 | |
---|
1999 | ! ---------------------------------------------------------------------- |
---|
2000 | ! CALCULATE HEAT CAPACITY FOR THIS SOIL LAYER. |
---|
2001 | ! ---------------------------------------------------------------------- |
---|
2002 | HCPCT = SH2O(K)*CH2O +(1.0-SMCMAX)*CSOIL +(SMCMAX-SMC(K))*CAIR & |
---|
2003 | & + ( SMC(K) - SH2O(K) )*CICE |
---|
2004 | |
---|
2005 | IF (K .NE. NSOIL) THEN |
---|
2006 | ! ---------------------------------------------------------------------- |
---|
2007 | ! THIS SECTION FOR LAYER 2 OR GREATER, BUT NOT LAST LAYER. |
---|
2008 | ! ---------------------------------------------------------------------- |
---|
2009 | ! CALCULATE THERMAL DIFFUSIVITY FOR THIS LAYER. |
---|
2010 | ! ---------------------------------------------------------------------- |
---|
2011 | CALL TDFCND (DF1N,SMC(K),QUARTZ,SMCMAX,SH2O(K)) |
---|
2012 | |
---|
2013 | ! ---------------------------------------------------------------------- |
---|
2014 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THIS LAYER |
---|
2015 | ! ---------------------------------------------------------------------- |
---|
2016 | DENOM = 0.5 * ( ZSOIL(K-1) - ZSOIL(K+1) ) |
---|
2017 | DTSDZ2 = ( STC(K) - STC(K+1) ) / DENOM |
---|
2018 | |
---|
2019 | ! ---------------------------------------------------------------------- |
---|
2020 | ! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT |
---|
2021 | ! ---------------------------------------------------------------------- |
---|
2022 | DDZ2 = 2. / (ZSOIL(K-1) - ZSOIL(K+1)) |
---|
2023 | CI(K) = -DF1N * DDZ2 / ((ZSOIL(K-1) - ZSOIL(K)) * HCPCT) |
---|
2024 | |
---|
2025 | ! ---------------------------------------------------------------------- |
---|
2026 | ! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): CALCULATE |
---|
2027 | ! TEMP AT BOTTOM OF LAYER. |
---|
2028 | ! ---------------------------------------------------------------------- |
---|
2029 | IF (ITAVG) THEN |
---|
2030 | CALL TBND (STC(K),STC(K+1),ZSOIL,ZBOT,K,NSOIL,TBK1) |
---|
2031 | ENDIF |
---|
2032 | ELSE |
---|
2033 | |
---|
2034 | ! ---------------------------------------------------------------------- |
---|
2035 | ! SPECIAL CASE OF BOTTOM SOIL LAYER: CALCULATE THERMAL DIFFUSIVITY FOR |
---|
2036 | ! BOTTOM LAYER. |
---|
2037 | ! ---------------------------------------------------------------------- |
---|
2038 | CALL TDFCND (DF1N,SMC(K),QUARTZ,SMCMAX,SH2O(K)) |
---|
2039 | |
---|
2040 | ! ---------------------------------------------------------------------- |
---|
2041 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU BOTTOM LAYER. |
---|
2042 | ! ---------------------------------------------------------------------- |
---|
2043 | DENOM = .5 * (ZSOIL(K-1) + ZSOIL(K)) - ZBOT |
---|
2044 | DTSDZ2 = (STC(K)-TBOT) / DENOM |
---|
2045 | |
---|
2046 | ! ---------------------------------------------------------------------- |
---|
2047 | ! SET MATRIX COEF, CI TO ZERO IF BOTTOM LAYER. |
---|
2048 | ! ---------------------------------------------------------------------- |
---|
2049 | CI(K) = 0. |
---|
2050 | |
---|
2051 | ! ---------------------------------------------------------------------- |
---|
2052 | ! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): CALCULATE |
---|
2053 | ! TEMP AT BOTTOM OF LAST LAYER. |
---|
2054 | ! ---------------------------------------------------------------------- |
---|
2055 | IF (ITAVG) THEN |
---|
2056 | CALL TBND (STC(K),TBOT,ZSOIL,ZBOT,K,NSOIL,TBK1) |
---|
2057 | ENDIF |
---|
2058 | |
---|
2059 | ENDIF |
---|
2060 | ! ---------------------------------------------------------------------- |
---|
2061 | ! THIS ENDS SPECIAL LOOP FOR BOTTOM LAYER. |
---|
2062 | ! ---------------------------------------------------------------------- |
---|
2063 | ! CALCULATE RHSTS FOR THIS LAYER AFTER CALC'NG A PARTIAL PRODUCT. |
---|
2064 | ! ---------------------------------------------------------------------- |
---|
2065 | DENOM = ( ZSOIL(K) - ZSOIL(K-1) ) * HCPCT |
---|
2066 | RHSTS(K) = ( DF1N * DTSDZ2 - DF1K * DTSDZ ) / DENOM |
---|
2067 | QTOT = -1.0*DENOM*RHSTS(K) |
---|
2068 | SICE = SMC(K) - SH2O(K) |
---|
2069 | |
---|
2070 | IF ( (SICE .GT. 0.) .OR. (TBK .LT. T0) .OR. & |
---|
2071 | & (STC(K) .LT. T0) .OR. (TBK1 .LT. T0) ) THEN |
---|
2072 | |
---|
2073 | IF (ITAVG) THEN |
---|
2074 | CALL TMPAVG(TAVG,TBK,STC(K),TBK1,ZSOIL,NSOIL,K) |
---|
2075 | ELSE |
---|
2076 | TAVG = STC(K) |
---|
2077 | ENDIF |
---|
2078 | TSNSR = SNKSRC(TAVG,SMC(K),SH2O(K),ZSOIL,NSOIL, & |
---|
2079 | & SMCMAX,PSISAT,BEXP,DT,K,QTOT) |
---|
2080 | RHSTS(K) = RHSTS(K) - TSNSR / DENOM |
---|
2081 | ENDIF |
---|
2082 | |
---|
2083 | ! ---------------------------------------------------------------------- |
---|
2084 | ! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER. |
---|
2085 | ! ---------------------------------------------------------------------- |
---|
2086 | AI(K) = - DF1 * DDZ / ((ZSOIL(K-1) - ZSOIL(K)) * HCPCT) |
---|
2087 | BI(K) = -(AI(K) + CI(K)) |
---|
2088 | |
---|
2089 | ! ---------------------------------------------------------------------- |
---|
2090 | ! RESET VALUES OF DF1, DTSDZ, DDZ, AND TBK FOR LOOP TO NEXT SOIL LAYER. |
---|
2091 | ! ---------------------------------------------------------------------- |
---|
2092 | TBK = TBK1 |
---|
2093 | DF1K = DF1N |
---|
2094 | DTSDZ = DTSDZ2 |
---|
2095 | DDZ = DDZ2 |
---|
2096 | END DO |
---|
2097 | |
---|
2098 | ! ---------------------------------------------------------------------- |
---|
2099 | ! END SUBROUTINE HRT |
---|
2100 | ! ---------------------------------------------------------------------- |
---|
2101 | END SUBROUTINE HRT |
---|
2102 | |
---|
2103 | SUBROUTINE HRTICE (RHSTS,STC,NSOIL,ZSOIL,YY,ZZ1,DF1,AI,BI,CI) |
---|
2104 | |
---|
2105 | IMPLICIT NONE |
---|
2106 | |
---|
2107 | ! ---------------------------------------------------------------------- |
---|
2108 | ! SUBROUTINE HRTICE |
---|
2109 | ! ---------------------------------------------------------------------- |
---|
2110 | ! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL |
---|
2111 | ! THERMAL DIFFUSION EQUATION IN THE CASE OF SEA-ICE PACK. ALSO TO |
---|
2112 | ! COMPUTE (PREPARE) THE MATRIX COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX |
---|
2113 | ! OF THE IMPLICIT TIME SCHEME. |
---|
2114 | ! ---------------------------------------------------------------------- |
---|
2115 | INTEGER NSOLD |
---|
2116 | PARAMETER(NSOLD = 20) |
---|
2117 | |
---|
2118 | INTEGER K |
---|
2119 | INTEGER NSOIL |
---|
2120 | |
---|
2121 | REAL AI(NSOLD) |
---|
2122 | REAL BI(NSOLD) |
---|
2123 | REAL CI(NSOLD) |
---|
2124 | |
---|
2125 | REAL DDZ |
---|
2126 | REAL DDZ2 |
---|
2127 | REAL DENOM |
---|
2128 | REAL DF1 |
---|
2129 | REAL DTSDZ |
---|
2130 | REAL DTSDZ2 |
---|
2131 | REAL HCPCT |
---|
2132 | REAL RHSTS(NSOIL) |
---|
2133 | REAL SSOIL |
---|
2134 | REAL STC(NSOIL) |
---|
2135 | REAL TBOT |
---|
2136 | REAL YY |
---|
2137 | REAL ZBOT |
---|
2138 | REAL ZSOIL(NSOIL) |
---|
2139 | REAL ZZ1 |
---|
2140 | |
---|
2141 | DATA TBOT /271.16/ |
---|
2142 | |
---|
2143 | ! ---------------------------------------------------------------------- |
---|
2144 | ! SET A NOMINAL UNIVERSAL VALUE OF THE SEA-ICE SPECIFIC HEAT CAPACITY, |
---|
2145 | ! HCPCT = 1880.0*917.0. |
---|
2146 | ! ---------------------------------------------------------------------- |
---|
2147 | PARAMETER(HCPCT = 1.72396E+6) |
---|
2148 | |
---|
2149 | ! ---------------------------------------------------------------------- |
---|
2150 | ! THE INPUT ARGUMENT DF1 IS A UNIVERSALLY CONSTANT VALUE OF SEA-ICE |
---|
2151 | ! THERMAL DIFFUSIVITY, SET IN ROUTINE SNOPAC AS DF1 = 2.2. |
---|
2152 | ! ---------------------------------------------------------------------- |
---|
2153 | ! SET ICE PACK DEPTH. USE TBOT AS ICE PACK LOWER BOUNDARY TEMPERATURE |
---|
2154 | ! (THAT OF UNFROZEN SEA WATER AT BOTTOM OF SEA ICE PACK). ASSUME ICE |
---|
2155 | ! PACK IS OF N=NSOIL LAYERS SPANNING A UNIFORM CONSTANT ICE PACK |
---|
2156 | ! THICKNESS AS DEFINED BY ZSOIL(NSOIL) IN ROUTINE SFLX. |
---|
2157 | ! ---------------------------------------------------------------------- |
---|
2158 | ZBOT = ZSOIL(NSOIL) |
---|
2159 | |
---|
2160 | ! ---------------------------------------------------------------------- |
---|
2161 | ! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER |
---|
2162 | ! ---------------------------------------------------------------------- |
---|
2163 | DDZ = 1.0 / ( -0.5 * ZSOIL(2) ) |
---|
2164 | AI(1) = 0.0 |
---|
2165 | CI(1) = (DF1 * DDZ) / (ZSOIL(1) * HCPCT) |
---|
2166 | BI(1) = -CI(1) + DF1/(0.5 * ZSOIL(1) * ZSOIL(1) * HCPCT * ZZ1) |
---|
2167 | |
---|
2168 | ! ---------------------------------------------------------------------- |
---|
2169 | ! CALC THE VERTICAL SOIL TEMP GRADIENT BTWN THE TOP AND 2ND SOIL LAYERS. |
---|
2170 | ! RECALC/ADJUST THE SOIL HEAT FLUX. USE THE GRADIENT AND FLUX TO CALC |
---|
2171 | ! RHSTS FOR THE TOP SOIL LAYER. |
---|
2172 | ! ---------------------------------------------------------------------- |
---|
2173 | DTSDZ = ( STC(1) - STC(2) ) / ( -0.5 * ZSOIL(2) ) |
---|
2174 | SSOIL = DF1 * ( STC(1) - YY ) / ( 0.5 * ZSOIL(1) * ZZ1 ) |
---|
2175 | RHSTS(1) = ( DF1 * DTSDZ - SSOIL ) / ( ZSOIL(1) * HCPCT ) |
---|
2176 | |
---|
2177 | ! ---------------------------------------------------------------------- |
---|
2178 | ! INITIALIZE DDZ2 |
---|
2179 | ! ---------------------------------------------------------------------- |
---|
2180 | DDZ2 = 0.0 |
---|
2181 | |
---|
2182 | ! ---------------------------------------------------------------------- |
---|
2183 | ! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABOVE PROCESS |
---|
2184 | ! ---------------------------------------------------------------------- |
---|
2185 | DO K = 2,NSOIL |
---|
2186 | IF (K .NE. NSOIL) THEN |
---|
2187 | |
---|
2188 | ! ---------------------------------------------------------------------- |
---|
2189 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THIS LAYER. |
---|
2190 | ! ---------------------------------------------------------------------- |
---|
2191 | DENOM = 0.5 * ( ZSOIL(K-1) - ZSOIL(K+1) ) |
---|
2192 | DTSDZ2 = ( STC(K) - STC(K+1) ) / DENOM |
---|
2193 | |
---|
2194 | ! ---------------------------------------------------------------------- |
---|
2195 | ! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT. |
---|
2196 | ! ---------------------------------------------------------------------- |
---|
2197 | DDZ2 = 2. / (ZSOIL(K-1) - ZSOIL(K+1)) |
---|
2198 | CI(K) = -DF1 * DDZ2 / ((ZSOIL(K-1) - ZSOIL(K)) * HCPCT) |
---|
2199 | ELSE |
---|
2200 | |
---|
2201 | ! ---------------------------------------------------------------------- |
---|
2202 | ! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THE LOWEST LAYER. |
---|
2203 | ! ---------------------------------------------------------------------- |
---|
2204 | DTSDZ2 = (STC(K)-TBOT)/(.5 * (ZSOIL(K-1) + ZSOIL(K))-ZBOT) |
---|
2205 | |
---|
2206 | ! ---------------------------------------------------------------------- |
---|
2207 | ! SET MATRIX COEF, CI TO ZERO. |
---|
2208 | ! ---------------------------------------------------------------------- |
---|
2209 | CI(K) = 0. |
---|
2210 | ENDIF |
---|
2211 | |
---|
2212 | ! ---------------------------------------------------------------------- |
---|
2213 | ! CALC RHSTS FOR THIS LAYER AFTER CALC'NG A PARTIAL PRODUCT. |
---|
2214 | ! ---------------------------------------------------------------------- |
---|
2215 | DENOM = ( ZSOIL(K) - ZSOIL(K-1) ) * HCPCT |
---|
2216 | RHSTS(K) = ( DF1 * DTSDZ2 - DF1 * DTSDZ ) / DENOM |
---|
2217 | |
---|
2218 | ! ---------------------------------------------------------------------- |
---|
2219 | ! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER. |
---|
2220 | ! ---------------------------------------------------------------------- |
---|
2221 | AI(K) = - DF1 * DDZ / ((ZSOIL(K-1) - ZSOIL(K)) * HCPCT) |
---|
2222 | BI(K) = -(AI(K) + CI(K)) |
---|
2223 | |
---|
2224 | ! ---------------------------------------------------------------------- |
---|
2225 | ! RESET VALUES OF DTSDZ AND DDZ FOR LOOP TO NEXT SOIL LYR. |
---|
2226 | ! ---------------------------------------------------------------------- |
---|
2227 | DTSDZ = DTSDZ2 |
---|
2228 | DDZ = DDZ2 |
---|
2229 | |
---|
2230 | END DO |
---|
2231 | ! ---------------------------------------------------------------------- |
---|
2232 | ! END SUBROUTINE HRTICE |
---|
2233 | ! ---------------------------------------------------------------------- |
---|
2234 | END SUBROUTINE HRTICE |
---|
2235 | |
---|
2236 | SUBROUTINE HSTEP (STCOUT,STCIN,RHSTS,DT,NSOIL,AI,BI,CI) |
---|
2237 | |
---|
2238 | IMPLICIT NONE |
---|
2239 | |
---|
2240 | ! ---------------------------------------------------------------------- |
---|
2241 | ! SUBROUTINE HSTEP |
---|
2242 | ! ---------------------------------------------------------------------- |
---|
2243 | ! CALCULATE/UPDATE THE SOIL TEMPERATURE FIELD. |
---|
2244 | ! ---------------------------------------------------------------------- |
---|
2245 | INTEGER NSOLD |
---|
2246 | PARAMETER(NSOLD = 20) |
---|
2247 | |
---|
2248 | INTEGER K |
---|
2249 | INTEGER NSOIL |
---|
2250 | |
---|
2251 | REAL AI(NSOLD) |
---|
2252 | REAL BI(NSOLD) |
---|
2253 | REAL CI(NSOLD) |
---|
2254 | REAL CIin(NSOLD) |
---|
2255 | REAL DT |
---|
2256 | REAL RHSTS(NSOIL) |
---|
2257 | REAL RHSTSin(NSOIL) |
---|
2258 | REAL STCIN(NSOIL) |
---|
2259 | REAL STCOUT(NSOIL) |
---|
2260 | |
---|
2261 | ! ---------------------------------------------------------------------- |
---|
2262 | ! CREATE FINITE DIFFERENCE VALUES FOR USE IN ROSR12 ROUTINE |
---|
2263 | ! ---------------------------------------------------------------------- |
---|
2264 | DO K = 1,NSOIL |
---|
2265 | RHSTS(K) = RHSTS(K) * DT |
---|
2266 | AI(K) = AI(K) * DT |
---|
2267 | BI(K) = 1. + BI(K) * DT |
---|
2268 | CI(K) = CI(K) * DT |
---|
2269 | END DO |
---|
2270 | |
---|
2271 | ! ---------------------------------------------------------------------- |
---|
2272 | ! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 |
---|
2273 | ! ---------------------------------------------------------------------- |
---|
2274 | DO K = 1,NSOIL |
---|
2275 | RHSTSin(K) = RHSTS(K) |
---|
2276 | END DO |
---|
2277 | DO K = 1,NSOIL |
---|
2278 | CIin(K) = CI(K) |
---|
2279 | END DO |
---|
2280 | |
---|
2281 | ! ---------------------------------------------------------------------- |
---|
2282 | ! SOLVE THE TRI-DIAGONAL MATRIX EQUATION |
---|
2283 | ! ---------------------------------------------------------------------- |
---|
2284 | CALL ROSR12(CI,AI,BI,CIin,RHSTSin,RHSTS,NSOIL) |
---|
2285 | |
---|
2286 | ! ---------------------------------------------------------------------- |
---|
2287 | ! CALC/UPDATE THE SOIL TEMPS USING MATRIX SOLUTION |
---|
2288 | ! ---------------------------------------------------------------------- |
---|
2289 | DO K = 1,NSOIL |
---|
2290 | STCOUT(K) = STCIN(K) + CI(K) |
---|
2291 | END DO |
---|
2292 | |
---|
2293 | ! ---------------------------------------------------------------------- |
---|
2294 | ! END SUBROUTINE HSTEP |
---|
2295 | ! ---------------------------------------------------------------------- |
---|
2296 | END SUBROUTINE HSTEP |
---|
2297 | |
---|
2298 | SUBROUTINE NOPAC(ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, & |
---|
2299 | & SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT,SHDFAC, & |
---|
2300 | & SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL, & |
---|
2301 | & STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, & |
---|
2302 | & SH2O,SLOPE,KDT,FRZFACT,PSISAT,ZSOIL, & |
---|
2303 | & DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, & |
---|
2304 | & RUNOFF3,EDIR,EC,ET,ETT,NROOT,ICE,RTDIS, & |
---|
2305 | & QUARTZ,FXEXP,CSOIL, & |
---|
2306 | & BETA,DRIP,DEW,FLX1,FLX2,FLX3) |
---|
2307 | |
---|
2308 | IMPLICIT NONE |
---|
2309 | |
---|
2310 | ! ---------------------------------------------------------------------- |
---|
2311 | ! SUBROUTINE NOPAC |
---|
2312 | ! ---------------------------------------------------------------------- |
---|
2313 | ! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES AND UPDATE SOIL MOISTURE |
---|
2314 | ! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN NO SNOW PACK IS |
---|
2315 | ! PRESENT. |
---|
2316 | ! ---------------------------------------------------------------------- |
---|
2317 | INTEGER ICE |
---|
2318 | INTEGER NROOT |
---|
2319 | INTEGER NSOIL |
---|
2320 | |
---|
2321 | REAL BEXP |
---|
2322 | REAL BETA |
---|
2323 | REAL CFACTR |
---|
2324 | REAL CMC |
---|
2325 | REAL CMCMAX |
---|
2326 | REAL CP |
---|
2327 | REAL CSOIL |
---|
2328 | REAL DEW |
---|
2329 | REAL DF1 |
---|
2330 | REAL DKSAT |
---|
2331 | REAL DRIP |
---|
2332 | REAL DT |
---|
2333 | REAL DWSAT |
---|
2334 | REAL EC |
---|
2335 | REAL EDIR |
---|
2336 | REAL EPSCA |
---|
2337 | REAL ETA |
---|
2338 | REAL ETA1 |
---|
2339 | REAL ETP |
---|
2340 | REAL ETP1 |
---|
2341 | REAL ET(NSOIL) |
---|
2342 | REAL ETT |
---|
2343 | REAL FDOWN |
---|
2344 | REAL F1 |
---|
2345 | REAL FXEXP |
---|
2346 | REAL FLX1 |
---|
2347 | REAL FLX2 |
---|
2348 | REAL FLX3 |
---|
2349 | REAL FRZFACT |
---|
2350 | REAL KDT |
---|
2351 | REAL PC |
---|
2352 | REAL PRCP |
---|
2353 | REAL PRCP1 |
---|
2354 | REAL PSISAT |
---|
2355 | REAL Q2 |
---|
2356 | REAL QUARTZ |
---|
2357 | REAL RCH |
---|
2358 | REAL RR |
---|
2359 | REAL RTDIS(NSOIL) |
---|
2360 | REAL RUNOFF1 |
---|
2361 | REAL RUNOFF2 |
---|
2362 | REAL RUNOFF3 |
---|
2363 | REAL SSOIL |
---|
2364 | REAL SBETA |
---|
2365 | REAL SFCTMP |
---|
2366 | REAL SHDFAC |
---|
2367 | REAL SH2O(NSOIL) |
---|
2368 | REAL SIGMA |
---|
2369 | REAL SLOPE |
---|
2370 | REAL SMC(NSOIL) |
---|
2371 | REAL SMCDRY |
---|
2372 | REAL SMCMAX |
---|
2373 | REAL SMCREF |
---|
2374 | REAL SMCWLT |
---|
2375 | REAL STC(NSOIL) |
---|
2376 | REAL T1 |
---|
2377 | REAL T24 |
---|
2378 | REAL TBOT |
---|
2379 | REAL TH2 |
---|
2380 | REAL YY |
---|
2381 | REAL YYNUM |
---|
2382 | REAL ZBOT |
---|
2383 | REAL ZSOIL(NSOIL) |
---|
2384 | REAL ZZ1 |
---|
2385 | |
---|
2386 | REAL EC1 |
---|
2387 | REAL EDIR1 |
---|
2388 | REAL ET1(NSOIL) |
---|
2389 | REAL ETT1 |
---|
2390 | |
---|
2391 | INTEGER K |
---|
2392 | |
---|
2393 | PARAMETER(CP = 1004.5) |
---|
2394 | PARAMETER(SIGMA = 5.67E-8) |
---|
2395 | |
---|
2396 | ! ---------------------------------------------------------------------- |
---|
2397 | ! EXECUTABLE CODE BEGINS HERE: |
---|
2398 | ! CONVERT ETP FROM KG M-2 S-1 TO MS-1 AND INITIALIZE DEW. |
---|
2399 | ! ---------------------------------------------------------------------- |
---|
2400 | PRCP1 = PRCP * 0.001 |
---|
2401 | ETP1 = ETP * 0.001 |
---|
2402 | DEW = 0.0 |
---|
2403 | |
---|
2404 | EDIR = 0. |
---|
2405 | EDIR1 = 0. |
---|
2406 | EC = 0. |
---|
2407 | EC1 = 0. |
---|
2408 | DO K = 1,NSOIL |
---|
2409 | ET(K) = 0. |
---|
2410 | ET1(K) = 0. |
---|
2411 | END DO |
---|
2412 | ETT = 0. |
---|
2413 | ETT1 = 0. |
---|
2414 | |
---|
2415 | IF (ETP .GT. 0.0) THEN |
---|
2416 | |
---|
2417 | ! ---------------------------------------------------------------------- |
---|
2418 | ! CONVERT PRCP FROM 'KG M-2 S-1' TO 'M S-1'. |
---|
2419 | ! ---------------------------------------------------------------------- |
---|
2420 | CALL EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & |
---|
2421 | & SH2O,SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & |
---|
2422 | & SMCREF,SHDFAC,CMCMAX, & |
---|
2423 | & SMCDRY,CFACTR, & |
---|
2424 | & EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
2425 | CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
2426 | & SH2O,SLOPE,KDT,FRZFACT, & |
---|
2427 | & SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
2428 | & SHDFAC,CMCMAX, & |
---|
2429 | & RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
2430 | & EDIR1,EC1,ET1, & |
---|
2431 | & DRIP) |
---|
2432 | |
---|
2433 | ! ---------------------------------------------------------------------- |
---|
2434 | ! CONVERT MODELED EVAPOTRANSPIRATION FM M S-1 TO KG M-2 S-1 |
---|
2435 | ! ---------------------------------------------------------------------- |
---|
2436 | ! ETA = ETA1 * 1000.0 |
---|
2437 | |
---|
2438 | ! ---------------------------------------------------------------------- |
---|
2439 | ! EDIR = EDIR1 * 1000.0 |
---|
2440 | ! EC = EC1 * 1000.0 |
---|
2441 | ! ETT = ETT1 * 1000.0 |
---|
2442 | ! ET(1) = ET1(1) * 1000.0 |
---|
2443 | ! ET(2) = ET1(2) * 1000.0 |
---|
2444 | ! ET(3) = ET1(3) * 1000.0 |
---|
2445 | ! ET(4) = ET1(4) * 1000.0 |
---|
2446 | ! ---------------------------------------------------------------------- |
---|
2447 | |
---|
2448 | ELSE |
---|
2449 | |
---|
2450 | ! ---------------------------------------------------------------------- |
---|
2451 | ! IF ETP < 0, ASSUME DEW FORMS (TRANSFORM ETP1 INTO DEW AND REINITIALIZE |
---|
2452 | ! ETP1 TO ZERO). |
---|
2453 | ! ---------------------------------------------------------------------- |
---|
2454 | DEW = -ETP1 |
---|
2455 | ! ETP1 = 0.0 |
---|
2456 | |
---|
2457 | ! ---------------------------------------------------------------------- |
---|
2458 | ! CONVERT PRCP FROM 'KG M-2 S-1' TO 'M S-1' AND ADD DEW AMOUNT. |
---|
2459 | ! ---------------------------------------------------------------------- |
---|
2460 | PRCP1 = PRCP1 + DEW |
---|
2461 | ! |
---|
2462 | ! CALL EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, |
---|
2463 | ! & SH2O,SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, |
---|
2464 | ! & SMCREF,SHDFAC,CMCMAX, |
---|
2465 | ! & SMCDRY,CFACTR, |
---|
2466 | ! & EDIR1,EC1,ET1,ETT,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
2467 | CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
2468 | & SH2O,SLOPE,KDT,FRZFACT, & |
---|
2469 | & SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
2470 | & SHDFAC,CMCMAX, & |
---|
2471 | & RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
2472 | & EDIR1,EC1,ET1, & |
---|
2473 | & DRIP) |
---|
2474 | |
---|
2475 | ! ---------------------------------------------------------------------- |
---|
2476 | ! CONVERT MODELED EVAPOTRANSPIRATION FROM 'M S-1' TO 'KG M-2 S-1'. |
---|
2477 | ! ---------------------------------------------------------------------- |
---|
2478 | ! ETA = ETA1 * 1000.0 |
---|
2479 | |
---|
2480 | ! ---------------------------------------------------------------------- |
---|
2481 | ! EDIR = EDIR1 * 1000.0 |
---|
2482 | ! EC = EC1 * 1000.0 |
---|
2483 | ! ETT = ETT1 * 1000.0 |
---|
2484 | ! ET(1) = ET1(1) * 1000.0 |
---|
2485 | ! ET(2) = ET1(2) * 1000.0 |
---|
2486 | ! ET(3) = ET1(3) * 1000.0 |
---|
2487 | ! ET(4) = ET1(4) * 1000.0 |
---|
2488 | ! ---------------------------------------------------------------------- |
---|
2489 | |
---|
2490 | ENDIF |
---|
2491 | |
---|
2492 | ! ---------------------------------------------------------------------- |
---|
2493 | ! CONVERT MODELED EVAPOTRANSPIRATION FM M S-1 TO KG M-2 S-1 |
---|
2494 | ! ---------------------------------------------------------------------- |
---|
2495 | ETA = ETA1 * 1000.0 |
---|
2496 | |
---|
2497 | ! ---------------------------------------------------------------------- |
---|
2498 | EDIR = EDIR1 * 1000.0 |
---|
2499 | EC = EC1 * 1000.0 |
---|
2500 | DO K = 1,NSOIL |
---|
2501 | ET(K) = ET1(K) * 1000.0 |
---|
2502 | ! ET(1) = ET1(1) * 1000.0 |
---|
2503 | ! ET(2) = ET1(2) * 1000.0 |
---|
2504 | ! ET(3) = ET1(3) * 1000.0 |
---|
2505 | ! ET(4) = ET1(4) * 1000.0 |
---|
2506 | ENDDO |
---|
2507 | ETT = ETT1 * 1000.0 |
---|
2508 | ! ---------------------------------------------------------------------- |
---|
2509 | |
---|
2510 | ! ---------------------------------------------------------------------- |
---|
2511 | ! BASED ON ETP AND E VALUES, DETERMINE BETA |
---|
2512 | ! ---------------------------------------------------------------------- |
---|
2513 | IF ( ETP .LE. 0.0 ) THEN |
---|
2514 | BETA = 0.0 |
---|
2515 | IF ( ETP .LT. 0.0 ) THEN |
---|
2516 | BETA = 1.0 |
---|
2517 | ! ETA = ETP |
---|
2518 | ENDIF |
---|
2519 | ELSE |
---|
2520 | BETA = ETA / ETP |
---|
2521 | ENDIF |
---|
2522 | |
---|
2523 | ! ---------------------------------------------------------------------- |
---|
2524 | ! GET SOIL THERMAL DIFFUXIVITY/CONDUCTIVITY FOR TOP SOIL LYR, |
---|
2525 | ! CALC. ADJUSTED TOP LYR SOIL TEMP AND ADJUSTED SOIL FLUX, THEN |
---|
2526 | ! CALL SHFLX TO COMPUTE/UPDATE SOIL HEAT FLUX AND SOIL TEMPS. |
---|
2527 | ! ---------------------------------------------------------------------- |
---|
2528 | CALL TDFCND (DF1,SMC(1),QUARTZ,SMCMAX,SH2O(1)) |
---|
2529 | |
---|
2530 | ! ---------------------------------------------------------------------- |
---|
2531 | ! VEGETATION GREENNESS FRACTION REDUCTION IN SUBSURFACE HEAT FLUX |
---|
2532 | ! VIA REDUCTION FACTOR, WHICH IS CONVENIENT TO APPLY HERE TO THERMAL |
---|
2533 | ! DIFFUSIVITY THAT IS LATER USED IN HRT TO COMPUTE SUB SFC HEAT FLUX |
---|
2534 | ! (SEE ADDITIONAL COMMENTS ON VEG EFFECT SUB-SFC HEAT FLX IN |
---|
2535 | ! ROUTINE SFLX) |
---|
2536 | ! ---------------------------------------------------------------------- |
---|
2537 | DF1 = DF1 * EXP(SBETA*SHDFAC) |
---|
2538 | |
---|
2539 | ! ---------------------------------------------------------------------- |
---|
2540 | ! COMPUTE INTERMEDIATE TERMS PASSED TO ROUTINE HRT (VIA ROUTINE |
---|
2541 | ! SHFLX BELOW) FOR USE IN COMPUTING SUBSURFACE HEAT FLUX IN HRT |
---|
2542 | ! ---------------------------------------------------------------------- |
---|
2543 | YYNUM = FDOWN - SIGMA * T24 |
---|
2544 | YY = SFCTMP + (YYNUM/RCH+TH2-SFCTMP-BETA*EPSCA) / RR |
---|
2545 | ZZ1 = DF1 / ( -0.5 * ZSOIL(1) * RCH * RR ) + 1.0 |
---|
2546 | |
---|
2547 | CALL SHFLX (SSOIL,STC,SMC,SMCMAX,NSOIL,T1,DT,YY,ZZ1,ZSOIL, & |
---|
2548 | & TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1,ICE, & |
---|
2549 | & QUARTZ,CSOIL) |
---|
2550 | |
---|
2551 | ! ---------------------------------------------------------------------- |
---|
2552 | ! SET FLX1 AND FLX3 (SNOPACK PHASE CHANGE HEAT FLUXES) TO ZERO SINCE |
---|
2553 | ! THEY ARE NOT USED HERE IN SNOPAC. FLX2 (FREEZING RAIN HEAT FLUX) WAS |
---|
2554 | ! SIMILARLY INITIALIZED IN THE PENMAN ROUTINE. |
---|
2555 | ! ---------------------------------------------------------------------- |
---|
2556 | FLX1 = 0.0 |
---|
2557 | FLX3 = 0.0 |
---|
2558 | |
---|
2559 | ! ---------------------------------------------------------------------- |
---|
2560 | ! END SUBROUTINE NOPAC |
---|
2561 | ! ---------------------------------------------------------------------- |
---|
2562 | END SUBROUTINE NOPAC |
---|
2563 | |
---|
2564 | SUBROUTINE PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, & |
---|
2565 | & Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, & |
---|
2566 | & DQSDT2,FLX2) |
---|
2567 | |
---|
2568 | IMPLICIT NONE |
---|
2569 | |
---|
2570 | ! ---------------------------------------------------------------------- |
---|
2571 | ! SUBROUTINE PENMAN |
---|
2572 | ! ---------------------------------------------------------------------- |
---|
2573 | ! CALCULATE POTENTIAL EVAPORATION FOR THE CURRENT POINT. VARIOUS |
---|
2574 | ! PARTIAL SUMS/PRODUCTS ARE ALSO CALCULATED AND PASSED BACK TO THE |
---|
2575 | ! CALLING ROUTINE FOR LATER USE. |
---|
2576 | ! ---------------------------------------------------------------------- |
---|
2577 | LOGICAL SNOWNG |
---|
2578 | LOGICAL FRZGRA |
---|
2579 | |
---|
2580 | REAL A |
---|
2581 | REAL BETA |
---|
2582 | REAL CH |
---|
2583 | REAL CP |
---|
2584 | REAL CPH2O |
---|
2585 | REAL CPICE |
---|
2586 | REAL DELTA |
---|
2587 | REAL DQSDT2 |
---|
2588 | REAL ELCP |
---|
2589 | REAL EPSCA |
---|
2590 | REAL ETP |
---|
2591 | REAL FDOWN |
---|
2592 | REAL FLX2 |
---|
2593 | REAL FNET |
---|
2594 | REAL LSUBC |
---|
2595 | REAL LSUBF |
---|
2596 | REAL PRCP |
---|
2597 | REAL Q2 |
---|
2598 | REAL Q2SAT |
---|
2599 | REAL R |
---|
2600 | REAL RAD |
---|
2601 | REAL RCH |
---|
2602 | REAL RHO |
---|
2603 | REAL RR |
---|
2604 | REAL SSOIL |
---|
2605 | REAL SFCPRS |
---|
2606 | REAL SFCTMP |
---|
2607 | REAL SIGMA |
---|
2608 | REAL T24 |
---|
2609 | REAL T2V |
---|
2610 | REAL TH2 |
---|
2611 | |
---|
2612 | PARAMETER(CP = 1004.6) |
---|
2613 | PARAMETER(CPH2O = 4.218E+3) |
---|
2614 | PARAMETER(CPICE = 2.106E+3) |
---|
2615 | PARAMETER(R = 287.04) |
---|
2616 | PARAMETER(ELCP = 2.4888E+3) |
---|
2617 | PARAMETER(LSUBF = 3.335E+5) |
---|
2618 | PARAMETER(LSUBC = 2.501000E+6) |
---|
2619 | PARAMETER(SIGMA = 5.67E-8) |
---|
2620 | |
---|
2621 | ! ---------------------------------------------------------------------- |
---|
2622 | ! EXECUTABLE CODE BEGINS HERE: |
---|
2623 | ! ---------------------------------------------------------------------- |
---|
2624 | FLX2 = 0.0 |
---|
2625 | |
---|
2626 | ! ---------------------------------------------------------------------- |
---|
2627 | ! PREPARE PARTIAL QUANTITIES FOR PENMAN EQUATION. |
---|
2628 | ! ---------------------------------------------------------------------- |
---|
2629 | DELTA = ELCP * DQSDT2 |
---|
2630 | T24 = SFCTMP * SFCTMP * SFCTMP * SFCTMP |
---|
2631 | RR = T24 * 6.48E-8 /(SFCPRS * CH) + 1.0 |
---|
2632 | RHO = SFCPRS / (R * T2V) |
---|
2633 | RCH = RHO * CP * CH |
---|
2634 | |
---|
2635 | ! ---------------------------------------------------------------------- |
---|
2636 | ! ADJUST THE PARTIAL SUMS / PRODUCTS WITH THE LATENT HEAT |
---|
2637 | ! EFFECTS CAUSED BY FALLING PRECIPITATION. |
---|
2638 | ! ---------------------------------------------------------------------- |
---|
2639 | IF (.NOT. SNOWNG) THEN |
---|
2640 | IF (PRCP .GT. 0.0) RR = RR + CPH2O*PRCP/RCH |
---|
2641 | ELSE |
---|
2642 | RR = RR + CPICE*PRCP/RCH |
---|
2643 | ENDIF |
---|
2644 | |
---|
2645 | FNET = FDOWN - SIGMA*T24 - SSOIL |
---|
2646 | |
---|
2647 | ! ---------------------------------------------------------------------- |
---|
2648 | ! INCLUDE THE LATENT HEAT EFFECTS OF FRZNG RAIN CONVERTING TO ICE ON |
---|
2649 | ! IMPACT IN THE CALCULATION OF FLX2 AND FNET. |
---|
2650 | ! ---------------------------------------------------------------------- |
---|
2651 | IF (FRZGRA) THEN |
---|
2652 | FLX2 = -LSUBF * PRCP |
---|
2653 | FNET = FNET - FLX2 |
---|
2654 | ENDIF |
---|
2655 | |
---|
2656 | ! ---------------------------------------------------------------------- |
---|
2657 | ! FINISH PENMAN EQUATION CALCULATIONS. |
---|
2658 | ! ---------------------------------------------------------------------- |
---|
2659 | RAD = FNET/RCH + TH2 - SFCTMP |
---|
2660 | A = ELCP * (Q2SAT - Q2) |
---|
2661 | EPSCA = (A*RR + RAD*DELTA) / (DELTA + RR) |
---|
2662 | ETP = EPSCA * RCH / LSUBC |
---|
2663 | |
---|
2664 | ! ---------------------------------------------------------------------- |
---|
2665 | ! END SUBROUTINE PENMAN |
---|
2666 | ! ---------------------------------------------------------------------- |
---|
2667 | END SUBROUTINE PENMAN |
---|
2668 | |
---|
2669 | SUBROUTINE REDPRM ( & |
---|
2670 | & VEGTYP,SOILTYP,SLOPETYP, & |
---|
2671 | & CFACTR,CMCMAX,RSMAX,TOPT,REFKDT,KDT,SBETA, & |
---|
2672 | & SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX,PSISAT,SLOPE, & |
---|
2673 | & SNUP,SALP,BEXP,DKSAT,DWSAT, & |
---|
2674 | & SMCMAX,SMCWLT,SMCREF, & |
---|
2675 | & SMCDRY,F1,QUARTZ,FXEXP,RTDIS,SLDPTH,ZSOIL, & |
---|
2676 | & NROOT,NSOIL,Z0,CZIL,LAI,CSOIL,PTU) |
---|
2677 | |
---|
2678 | IMPLICIT NONE |
---|
2679 | ! ---------------------------------------------------------------------- |
---|
2680 | ! SUBROUTINE REDPRM |
---|
2681 | ! ---------------------------------------------------------------------- |
---|
2682 | ! INTERNALLY SET (DEFAULT VALUESS), OR OPTIONALLY READ-IN VIA NAMELIST |
---|
2683 | ! I/O, ALL SOIL AND VEGETATION PARAMETERS REQUIRED FOR THE EXECUSION OF |
---|
2684 | ! THE NOAH LSM. |
---|
2685 | ! |
---|
2686 | ! OPTIONAL NON-DEFAULT PARAMETERS CAN BE READ IN, ACCOMMODATING UP TO 30 |
---|
2687 | ! SOIL, VEG, OR SLOPE CLASSES, IF THE DEFAULT MAX NUMBER OF SOIL, VEG, |
---|
2688 | ! AND/OR SLOPE TYPES IS RESET. |
---|
2689 | ! |
---|
2690 | ! FUTURE UPGRADES OF ROUTINE REDPRM MUST EXPAND TO INCORPORATE SOME OF |
---|
2691 | ! THE EMPIRICAL PARAMETERS OF THE FROZEN SOIL AND SNOWPACK PHYSICS (SUCH |
---|
2692 | ! AS IN ROUTINES FRH2O, SNOWPACK, AND SNOW_NEW) NOT YET SET IN THIS |
---|
2693 | ! REDPRM ROUTINE, BUT RATHER SET IN LOWER LEVEL SUBROUTINES. |
---|
2694 | ! |
---|
2695 | ! SET MAXIMUM NUMBER OF SOIL-, VEG-, AND SLOPETYP IN DATA STATEMENT. |
---|
2696 | ! ---------------------------------------------------------------------- |
---|
2697 | INTEGER MAX_SLOPETYP |
---|
2698 | INTEGER MAX_SOILTYP |
---|
2699 | INTEGER MAX_VEGTYP |
---|
2700 | |
---|
2701 | PARAMETER(MAX_SLOPETYP = 30) |
---|
2702 | PARAMETER(MAX_SOILTYP = 30) |
---|
2703 | PARAMETER(MAX_VEGTYP = 30) |
---|
2704 | |
---|
2705 | ! ---------------------------------------------------------------------- |
---|
2706 | ! NUMBER OF DEFINED SOIL-, VEG-, AND SLOPETYPS USED. |
---|
2707 | ! ---------------------------------------------------------------------- |
---|
2708 | INTEGER DEFINED_VEG |
---|
2709 | INTEGER DEFINED_SOIL |
---|
2710 | INTEGER DEFINED_SLOPE |
---|
2711 | |
---|
2712 | DATA DEFINED_VEG/27/ |
---|
2713 | DATA DEFINED_SOIL/19/ |
---|
2714 | DATA DEFINED_SLOPE/9/ |
---|
2715 | |
---|
2716 | ! ---------------------------------------------------------------------- |
---|
2717 | ! SET-UP SOIL PARAMETERS FOR GIVEN SOIL TYPE |
---|
2718 | ! INPUT: SOLTYP: SOIL TYPE (INTEGER INDEX) |
---|
2719 | ! OUTPUT: SOIL PARAMETERS: |
---|
2720 | ! MAXSMC: MAX SOIL MOISTURE CONTENT (POROSITY) |
---|
2721 | ! REFSMC: REFERENCE SOIL MOISTURE (ONSET OF SOIL MOISTURE |
---|
2722 | ! STRESS IN TRANSPIRATION) |
---|
2723 | ! WLTSMC: WILTING PT SOIL MOISTURE CONTENTS |
---|
2724 | ! DRYSMC: AIR DRY SOIL MOIST CONTENT LIMITS |
---|
2725 | ! SATPSI: SATURATED SOIL POTENTIAL |
---|
2726 | ! SATDK: SATURATED SOIL HYDRAULIC CONDUCTIVITY |
---|
2727 | ! BB: THE 'B' PARAMETER |
---|
2728 | ! SATDW: SATURATED SOIL DIFFUSIVITY |
---|
2729 | ! F11: USED TO COMPUTE SOIL DIFFUSIVITY/CONDUCTIVITY |
---|
2730 | ! QUARTZ: SOIL QUARTZ CONTENT |
---|
2731 | ! ---------------------------------------------------------------------- |
---|
2732 | ! SOIL STATSGO |
---|
2733 | ! TYPE CLASS |
---|
2734 | ! ---- ------- |
---|
2735 | ! 1 SAND |
---|
2736 | ! 2 LOAMY SAND |
---|
2737 | ! 3 SANDY LOAM |
---|
2738 | ! 4 SILT LOAM |
---|
2739 | ! 5 SILT |
---|
2740 | ! 6 LOAM |
---|
2741 | ! 7 SANDY CLAY LOAM |
---|
2742 | ! 8 SILTY CLAY LOAM |
---|
2743 | ! 9 CLAY LOAM |
---|
2744 | ! 10 SANDY CLAY |
---|
2745 | ! 11 SILTY CLAY |
---|
2746 | ! 12 CLAY |
---|
2747 | ! 13 ORGANIC MATERIAL |
---|
2748 | ! 14 WATER |
---|
2749 | ! 15 BEDROCK |
---|
2750 | ! 16 OTHER(land-ice) |
---|
2751 | ! 17 PLAYA |
---|
2752 | ! 18 LAVA |
---|
2753 | ! 19 WHITE SAND |
---|
2754 | ! ---------------------------------------------------------------------- |
---|
2755 | |
---|
2756 | REAL BB(MAX_SOILTYP) |
---|
2757 | REAL DRYSMC(MAX_SOILTYP) |
---|
2758 | REAL F11(MAX_SOILTYP) |
---|
2759 | REAL MAXSMC(MAX_SOILTYP) |
---|
2760 | REAL REFSMC(MAX_SOILTYP) |
---|
2761 | REAL SATPSI(MAX_SOILTYP) |
---|
2762 | REAL SATDK(MAX_SOILTYP) |
---|
2763 | REAL SATDW(MAX_SOILTYP) |
---|
2764 | REAL WLTSMC(MAX_SOILTYP) |
---|
2765 | REAL QTZ(MAX_SOILTYP) |
---|
2766 | |
---|
2767 | REAL BEXP |
---|
2768 | REAL DKSAT |
---|
2769 | REAL DWSAT |
---|
2770 | REAL F1 |
---|
2771 | REAL PTU |
---|
2772 | REAL QUARTZ |
---|
2773 | REAL REFSMC1 |
---|
2774 | REAL SMCDRY |
---|
2775 | REAL SMCMAX |
---|
2776 | REAL SMCREF |
---|
2777 | REAL SMCWLT |
---|
2778 | REAL WLTSMC1 |
---|
2779 | |
---|
2780 | ! ---------------------------------------------------------------------- |
---|
2781 | ! SOIL TEXTURE-RELATED ARRAYS. |
---|
2782 | ! ---------------------------------------------------------------------- |
---|
2783 | DATA MAXSMC/0.395, 0.421, 0.434, 0.476, 0.476, 0.439, & |
---|
2784 | & 0.404, 0.464, 0.465, 0.406, 0.468, 0.457, & |
---|
2785 | & 0.464, 0.464, 0.200, 0.421, 0.457, 0.200, & |
---|
2786 | & 0.395, 0.000, 0.000, 0.000, 0.000, 0.000, & |
---|
2787 | & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/ |
---|
2788 | ! ---------------------------------------------------------------------- |
---|
2789 | DATA SATPSI/0.0350, 0.0363, 0.1413, 0.7586, 0.7586, 0.3548, & |
---|
2790 | & 0.1349, 0.6166, 0.2630, 0.0977, 0.3236, 0.4677, & |
---|
2791 | & 0.3548, 0.3548, 0.0350, 0.0363, 0.4677, 0.0350, & |
---|
2792 | & 0.0350, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, & |
---|
2793 | & 0.000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000/ |
---|
2794 | ! ---------------------------------------------------------------------- |
---|
2795 | DATA SATDK /1.7600E-4, 1.4078E-5, 5.2304E-6, 2.8089E-6, 2.8089E-6,& |
---|
2796 | & 3.3770E-6, 4.4518E-6, 2.0348E-6, 2.4464E-6, 7.2199E-6,& |
---|
2797 | & 1.3444E-6, 9.7394E-7, 3.3770E-6, 3.3770E-6, 1.4078E-5,& |
---|
2798 | & 1.4078E-5, 9.7394E-7, 1.4078E-5, 1.7600E-4, 0.0,& |
---|
2799 | & 0.0, 0.0, 0.0, 0.0, 0.0,& |
---|
2800 | & 0.0, 0.0, 0.0, 0.0, 0.0/ |
---|
2801 | ! ---------------------------------------------------------------------- |
---|
2802 | DATA BB /4.05, 4.26, 4.74, 5.33, 5.33, 5.25, & |
---|
2803 | & 6.77, 8.72, 8.17, 10.73, 10.39, 11.55, & |
---|
2804 | & 5.25, 5.25, 4.05, 4.26, 11.55, 4.05, & |
---|
2805 | & 4.05, 0.00, 0.00, 0.00, 0.00, 0.00, & |
---|
2806 | & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/ |
---|
2807 | ! ---------------------------------------------------------------------- |
---|
2808 | DATA QTZ /0.92, 0.82, 0.60, 0.25, 0.10, 0.40, & |
---|
2809 | & 0.60, 0.10, 0.35, 0.52, 0.10, 0.25, & |
---|
2810 | & 0.05, 0.05, 0.07, 0.25, 0.60, 0.52, & |
---|
2811 | & 0.92, 0.00, 0.00, 0.00, 0.00, 0.00, & |
---|
2812 | & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/ |
---|
2813 | |
---|
2814 | ! ---------------------------------------------------------------------- |
---|
2815 | ! THE FOLLOWING 5 PARAMETERS ARE DERIVED LATER IN REDPRM.F FROM THE SOIL |
---|
2816 | ! DATA, AND ARE JUST GIVEN HERE FOR REFERENCE AND TO FORCE STATIC |
---|
2817 | ! STORAGE ALLOCATION. -DAG LOHMANN, FEB. 2001 |
---|
2818 | ! ---------------------------------------------------------------------- |
---|
2819 | ! !!!!!!!!!!!!!! The following values in the table are NOT used |
---|
2820 | ! !!!!!!!!!!!!!! and are just given for reference |
---|
2821 | DATA REFSMC/0.196, 0.248, 0.282, 0.332, 0.332, 0.301, & |
---|
2822 | & 0.293, 0.368, 0.361, 0.320, 0.388, 0.389, & |
---|
2823 | & 0.319, 0.000, 0.116, 0.248, 0.389, 0.116, & |
---|
2824 | & 0.196, 0.000, 0.000, 0.000, 0.000, 0.000, & |
---|
2825 | & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/ |
---|
2826 | ! !!!!!!!!!!!!!! The following values in the table are NOT used |
---|
2827 | ! !!!!!!!!!!!!!! and are just given for reference |
---|
2828 | DATA WLTSMC/0.023, 0.028, 0.047, 0.084, 0.084, 0.066, & |
---|
2829 | & 0.069, 0.120, 0.103, 0.100, 0.126, 0.135, & |
---|
2830 | & 0.069, 0.000, 0.012, 0.028, 0.135, 0.012, & |
---|
2831 | & 0.023, 0.000, 0.000, 0.000, 0.000, 0.000, & |
---|
2832 | & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/ |
---|
2833 | ! !!!!!!!!!!!!!! The following values in the table are NOT used |
---|
2834 | ! !!!!!!!!!!!!!! and are just given for reference |
---|
2835 | DATA DRYSMC/0.023, 0.028, 0.047, 0.084, 0.084, 0.066, & |
---|
2836 | & 0.069, 0.120, 0.103, 0.100, 0.126, 0.135, & |
---|
2837 | & 0.069, 0.000, 0.012, 0.028, 0.135, 0.012, & |
---|
2838 | & 0.023, 0.000, 0.000, 0.000, 0.000, 0.000, & |
---|
2839 | & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/ |
---|
2840 | |
---|
2841 | ! !!!!!!!!!!!!!! The following values in the table are NOT used |
---|
2842 | ! !!!!!!!!!!!!!! and are just given for reference |
---|
2843 | DATA SATDW /0.632E-4, 0.517E-5, 0.807E-5, 0.239E-4, 0.239E-4, & |
---|
2844 | & 0.143E-4, 0.101E-4, 0.236E-4, 0.113E-4, 0.186E-4, & |
---|
2845 | & 0.966E-5, 0.115E-4, 0.136E-4, 0.0, 0.998E-5, & |
---|
2846 | & 0.517E-5, 0.115E-4, 0.998E-5, 0.632E-4, 0.0, & |
---|
2847 | & 0.0, 0.0, 0.0, 0.0, 0.0, & |
---|
2848 | & 0.0, 0.0, 0.0, 0.0, 0.0/ |
---|
2849 | ! !!!!!!!!!!!!!! The following values in the table are NOT used |
---|
2850 | ! !!!!!!!!!!!!!! and are just given for reference |
---|
2851 | DATA F11 /-1.090, -1.041, -0.568, 0.162, 0.162, -0.327, & |
---|
2852 | & -1.535, -1.118, -1.297, -3.211, -1.916, -2.258, & |
---|
2853 | & -0.201, 0.000, -2.287, -1.041, -2.258, -2.287, & |
---|
2854 | & -1.090, 0.000, 0.000, 0.000, 0.000, 0.000, & |
---|
2855 | & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/ |
---|
2856 | |
---|
2857 | ! ---------------------------------------------------------------------- |
---|
2858 | ! SET-UP VEGETATION PARAMETERS FOR A GIVEN VEGETAION TYPE: |
---|
2859 | ! INPUT: VEGTYP = VEGETATION TYPE (INTEGER INDEX) |
---|
2860 | ! OUPUT: VEGETATION PARAMETERS |
---|
2861 | ! SHDFAC: VEGETATION GREENNESS FRACTION |
---|
2862 | ! RSMIN: MIMIMUM STOMATAL RESISTANCE |
---|
2863 | ! RGL: PARAMETER USED IN SOLAR RAD TERM OF |
---|
2864 | ! CANOPY RESISTANCE FUNCTION |
---|
2865 | ! HS: PARAMETER USED IN VAPOR PRESSURE DEFICIT TERM OF |
---|
2866 | ! CANOPY RESISTANCE FUNCTION |
---|
2867 | ! SNUP: THRESHOLD SNOW DEPTH (IN WATER EQUIVALENT M) THAT |
---|
2868 | ! IMPLIES 100% SNOW COVER |
---|
2869 | ! ---------------------------------------------------------------------- |
---|
2870 | ! CLASS USGS-WRF VEGETATION/SURFACE TYPE |
---|
2871 | ! 1 Urban and Built-Up Land |
---|
2872 | ! 2 Dryland Cropland and Pasture |
---|
2873 | ! 3 Irrigated Cropland and Pasture |
---|
2874 | ! 4 Mixed Dryland/Irrigated Cropland and Pasture |
---|
2875 | ! 5 Cropland/Grassland Mosaic |
---|
2876 | ! 6 Cropland/Woodland Mosaic |
---|
2877 | ! 7 Grassland |
---|
2878 | ! 8 Shrubland |
---|
2879 | ! 9 Mixed Shrubland/Grassland |
---|
2880 | ! 10 Savanna |
---|
2881 | ! 11 Deciduous Broadleaf Forest |
---|
2882 | ! 12 Deciduous Needleleaf Forest |
---|
2883 | ! 13 Evergreen Broadleaf Forest |
---|
2884 | ! 14 Evergreen Needleleaf Forest |
---|
2885 | ! 15 Mixed Forest |
---|
2886 | ! 16 Water Bodies |
---|
2887 | ! 17 Herbaceous Wetland |
---|
2888 | ! 18 Wooded Wetland |
---|
2889 | ! 19 Barren or Sparsely Vegetated |
---|
2890 | ! 20 Herbaceous Tundra |
---|
2891 | ! 21 Wooded Tundra |
---|
2892 | ! 22 Mixed Tundra |
---|
2893 | ! 23 Bare Ground Tundra |
---|
2894 | ! 24 Snow or Ice |
---|
2895 | ! 25 Playa |
---|
2896 | ! 26 Lava |
---|
2897 | ! 27 White Sand |
---|
2898 | ! ---------------------------------------------------------------------- |
---|
2899 | |
---|
2900 | INTEGER NROOT |
---|
2901 | INTEGER NROOT_DATA(MAX_VEGTYP) |
---|
2902 | |
---|
2903 | REAL FRZFACT |
---|
2904 | REAL HS |
---|
2905 | REAL HSTBL(MAX_VEGTYP) |
---|
2906 | REAL LAI |
---|
2907 | REAL LAI_DATA(MAX_VEGTYP) |
---|
2908 | REAL PSISAT |
---|
2909 | REAL RSMIN |
---|
2910 | REAL RGL |
---|
2911 | REAL RGLTBL(MAX_VEGTYP) |
---|
2912 | REAL RSMTBL(MAX_VEGTYP) |
---|
2913 | REAL SHDFAC |
---|
2914 | REAL SNUP |
---|
2915 | REAL SNUPX(MAX_VEGTYP) |
---|
2916 | REAL Z0 |
---|
2917 | REAL Z0_DATA(MAX_VEGTYP) |
---|
2918 | |
---|
2919 | ! ---------------------------------------------------------------------- |
---|
2920 | ! VEGETATION CLASS-RELATED ARRAYS |
---|
2921 | ! ---------------------------------------------------------------------- |
---|
2922 | ! DATA NROOT_DATA /2,3,3,3,3,3,3,3,3,3, |
---|
2923 | ! & 4,4,4,4,4,2,2,2,2,3, |
---|
2924 | ! & 3,3,2,2,2,2,2,0,0,0/ |
---|
2925 | DATA NROOT_DATA /1,3,3,3,3,3,3,3,3,3, & |
---|
2926 | & 4,4,4,4,4,0,2,2,1,3, & |
---|
2927 | & 3,3,2,1,1,1,1,0,0,0/ |
---|
2928 | DATA RSMTBL /200.0, 70.0, 70.0, 70.0, 70.0, 70.0, & |
---|
2929 | & 70.0, 300.0, 170.0, 70.0, 100.0, 150.0, & |
---|
2930 | & 150.0, 125.0, 125.0, 100.0, 40.0, 100.0, & |
---|
2931 | & 300.0, 150.0, 150.0, 150.0, 200.0, 200.0, & |
---|
2932 | & 40.0, 100.0, 300.0, 0.0, 0.0, 0.0/ |
---|
2933 | DATA RGLTBL /100.0, 100.0, 100.0, 100.0, 100.0, 65.0, & |
---|
2934 | & 100.0, 100.0, 100.0, 65.0, 30.0, 30.0, & |
---|
2935 | & 30.0, 30.0, 30.0, 30.0, 100.0, 30.0, & |
---|
2936 | & 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, & |
---|
2937 | & 100.0, 100.0, 100.0, 0.0, 0.0, 0.0/ |
---|
2938 | DATA HSTBL /42.00, 36.25, 36.25, 36.25, 36.25, 44.14, & |
---|
2939 | & 36.35, 42.00, 39.18, 54.53, 54.53, 47.35, & |
---|
2940 | & 41.69, 47.35, 51.93, 51.75, 60.00, 51.93, & |
---|
2941 | & 42.00, 42.00, 42.00, 42.00, 42.00, 42.00, & |
---|
2942 | & 36.25, 42.00, 42.00, 0.00, 0.00, 0.00/ |
---|
2943 | DATA SNUPX /0.020, 0.020, 0.020, 0.020, 0.020, 0.020, & |
---|
2944 | & 0.020, 0.020, 0.020, 0.040, 0.040, 0.040, & |
---|
2945 | & 0.040, 0.040, 0.040, 0.010, 0.013, 0.020, & |
---|
2946 | & 0.013, 0.020, 0.020, 0.020, 0.020, 0.013, & |
---|
2947 | & 0.013, 0.013, 0.013, 0.000, 0.000, 0.000/ |
---|
2948 | DATA Z0_DATA / 1.00, 0.07, 0.07, 0.07, 0.07, 0.15, & |
---|
2949 | & 0.08, 0.03, 0.05, 0.86, 0.80, 0.85, & |
---|
2950 | & 2.65, 1.09, 0.80, 0.001, 0.04, 0.05, & |
---|
2951 | & 0.01, 0.04, 0.06, 0.05, 0.03, 0.001, & |
---|
2952 | & 0.01, 0.15, 0.01, 0.00, 0.00, 0.00/ |
---|
2953 | DATA LAI_DATA /4.0, 4.0, 4.0, 4.0, 4.0, 4.0, & |
---|
2954 | & 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, & |
---|
2955 | & 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, & |
---|
2956 | & 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, & |
---|
2957 | & 4.0, 4.0, 4.0, 0.0, 0.0, 0.0/ |
---|
2958 | |
---|
2959 | ! ---------------------------------------------------------------------- |
---|
2960 | ! CLASS PARAMETER 'SLOPETYP' WAS INCLUDED TO ESTIMATE LINEAR RESERVOIR |
---|
2961 | ! COEFFICIENT 'SLOPE' TO THE BASEFLOW RUNOFF OUT OF THE BOTTOM LAYER. |
---|
2962 | ! LOWEST CLASS (SLOPETYP=0) MEANS HIGHEST SLOPE PARAMETER = 1. |
---|
2963 | ! DEFINITION OF SLOPETYP FROM 'ZOBLER' SLOPE TYPE: |
---|
2964 | ! SLOPE CLASS PERCENT SLOPE |
---|
2965 | ! 1 0-8 |
---|
2966 | ! 2 8-30 |
---|
2967 | ! 3 > 30 |
---|
2968 | ! 4 0-30 |
---|
2969 | ! 5 0-8 & > 30 |
---|
2970 | ! 6 8-30 & > 30 |
---|
2971 | ! 7 0-8, 8-30, > 30 |
---|
2972 | ! 9 GLACIAL ICE |
---|
2973 | ! BLANK OCEAN/SEA |
---|
2974 | ! ---------------------------------------------------------------------- |
---|
2975 | ! NOTE: |
---|
2976 | ! CLASS 9 FROM 'ZOBLER' FILE SHOULD BE REPLACED BY 8 AND 'BLANK' 9 |
---|
2977 | ! ---------------------------------------------------------------------- |
---|
2978 | REAL SLOPE |
---|
2979 | REAL SLOPE_DATA(MAX_SLOPETYP) |
---|
2980 | |
---|
2981 | DATA SLOPE_DATA /0.1, 0.6, 1.0, 0.35, 0.55, 0.8, & |
---|
2982 | & 0.63, 0.0, 0.0, 0.0, 0.0, 0.0, & |
---|
2983 | & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, & |
---|
2984 | & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, & |
---|
2985 | & 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0/ |
---|
2986 | |
---|
2987 | ! ---------------------------------------------------------------------- |
---|
2988 | ! SET NAMELIST FILE NAME |
---|
2989 | ! ---------------------------------------------------------------------- |
---|
2990 | CHARACTER*50 NAMELIST_NAME |
---|
2991 | |
---|
2992 | ! ---------------------------------------------------------------------- |
---|
2993 | ! SET UNIVERSAL PARAMETERS (NOT DEPENDENT ON SOIL, VEG, SLOPE TYPE) |
---|
2994 | ! ---------------------------------------------------------------------- |
---|
2995 | INTEGER I |
---|
2996 | INTEGER NSOIL |
---|
2997 | INTEGER SLOPETYP |
---|
2998 | INTEGER SOILTYP |
---|
2999 | INTEGER VEGTYP |
---|
3000 | |
---|
3001 | INTEGER BARE |
---|
3002 | ! DATA BARE /11/ |
---|
3003 | DATA BARE /19/ |
---|
3004 | |
---|
3005 | LOGICAL LPARAM |
---|
3006 | DATA LPARAM /.TRUE./ |
---|
3007 | |
---|
3008 | LOGICAL LFIRST |
---|
3009 | DATA LFIRST /.TRUE./ |
---|
3010 | |
---|
3011 | ! ---------------------------------------------------------------------- |
---|
3012 | ! PARAMETER USED TO CALCULATE ROUGHNESS LENGTH OF HEAT. |
---|
3013 | ! ---------------------------------------------------------------------- |
---|
3014 | REAL CZIL |
---|
3015 | REAL CZIL_DATA |
---|
3016 | ! changed in version 2.6 June 2nd 2003 |
---|
3017 | ! DATA CZIL_DATA /0.2/ |
---|
3018 | DATA CZIL_DATA /0.1/ |
---|
3019 | |
---|
3020 | ! ---------------------------------------------------------------------- |
---|
3021 | ! PARAMETER USED TO CALUCULATE VEGETATION EFFECT ON SOIL HEAT FLUX. |
---|
3022 | ! ---------------------------------------------------------------------- |
---|
3023 | REAL SBETA |
---|
3024 | REAL SBETA_DATA |
---|
3025 | DATA SBETA_DATA /-2.0/ |
---|
3026 | |
---|
3027 | ! ---------------------------------------------------------------------- |
---|
3028 | ! BARE SOIL EVAPORATION EXPONENT USED IN DEVAP. |
---|
3029 | ! ---------------------------------------------------------------------- |
---|
3030 | REAL FXEXP |
---|
3031 | REAL FXEXP_DATA |
---|
3032 | DATA FXEXP_DATA /2.0/ |
---|
3033 | |
---|
3034 | ! ---------------------------------------------------------------------- |
---|
3035 | ! SOIL HEAT CAPACITY [J M-3 K-1] |
---|
3036 | ! ---------------------------------------------------------------------- |
---|
3037 | REAL CSOIL |
---|
3038 | REAL CSOIL_DATA |
---|
3039 | ! DATA CSOIL_DATA /1.26E+6/ |
---|
3040 | DATA CSOIL_DATA /2.00E+6/ |
---|
3041 | |
---|
3042 | ! ---------------------------------------------------------------------- |
---|
3043 | ! SPECIFY SNOW DISTRIBUTION SHAPE PARAMETER SALP - SHAPE PARAMETER OF |
---|
3044 | ! DISTRIBUTION FUNCTION OF SNOW COVER. FROM ANDERSON'S DATA (HYDRO-17) |
---|
3045 | ! BEST FIT IS WHEN SALP = 2.6 |
---|
3046 | ! ---------------------------------------------------------------------- |
---|
3047 | REAL SALP |
---|
3048 | REAL SALP_DATA |
---|
3049 | ! changed for version 2.6 June 2nd 2003 |
---|
3050 | ! DATA SALP_DATA /2.6/ |
---|
3051 | DATA SALP_DATA /4.0/ |
---|
3052 | |
---|
3053 | ! ---------------------------------------------------------------------- |
---|
3054 | ! KDT IS DEFINED BY REFERENCE REFKDT AND DKSAT; REFDK=2.E-6 IS THE SAT. |
---|
3055 | ! DK. VALUE FOR THE SOIL TYPE 2 |
---|
3056 | ! ---------------------------------------------------------------------- |
---|
3057 | REAL REFDK |
---|
3058 | REAL REFDK_DATA |
---|
3059 | DATA REFDK_DATA /2.0E-6/ |
---|
3060 | |
---|
3061 | REAL REFKDT |
---|
3062 | REAL REFKDT_DATA |
---|
3063 | DATA REFKDT_DATA /3.0/ |
---|
3064 | |
---|
3065 | REAL FRZX |
---|
3066 | REAL KDT |
---|
3067 | |
---|
3068 | ! ---------------------------------------------------------------------- |
---|
3069 | ! FROZEN GROUND PARAMETER, FRZK, DEFINITION: ICE CONTENT THRESHOLD ABOVE |
---|
3070 | ! WHICH FROZEN SOIL IS IMPERMEABLE REFERENCE VALUE OF THIS PARAMETER FOR |
---|
3071 | ! THE LIGHT CLAY SOIL (TYPE=3) FRZK = 0.15 M. |
---|
3072 | ! ---------------------------------------------------------------------- |
---|
3073 | REAL FRZK |
---|
3074 | REAL FRZK_DATA |
---|
3075 | DATA FRZK_DATA /0.15/ |
---|
3076 | |
---|
3077 | REAL RTDIS(NSOIL) |
---|
3078 | REAL SLDPTH(NSOIL) |
---|
3079 | REAL ZSOIL(NSOIL) |
---|
3080 | |
---|
3081 | ! ---------------------------------------------------------------------- |
---|
3082 | ! SET TWO CANOPY WATER PARAMETERS. |
---|
3083 | ! ---------------------------------------------------------------------- |
---|
3084 | REAL CFACTR |
---|
3085 | REAL CFACTR_DATA |
---|
3086 | DATA CFACTR_DATA /0.5/ |
---|
3087 | |
---|
3088 | REAL CMCMAX |
---|
3089 | REAL CMCMAX_DATA |
---|
3090 | DATA CMCMAX_DATA /0.5E-3/ |
---|
3091 | |
---|
3092 | ! ---------------------------------------------------------------------- |
---|
3093 | ! SET MAX. STOMATAL RESISTANCE. |
---|
3094 | ! ---------------------------------------------------------------------- |
---|
3095 | REAL RSMAX |
---|
3096 | REAL RSMAX_DATA |
---|
3097 | DATA RSMAX_DATA /5000.0/ |
---|
3098 | |
---|
3099 | ! ---------------------------------------------------------------------- |
---|
3100 | ! SET OPTIMUM TRANSPIRATION AIR TEMPERATURE. |
---|
3101 | ! ---------------------------------------------------------------------- |
---|
3102 | REAL TOPT |
---|
3103 | REAL TOPT_DATA |
---|
3104 | DATA TOPT_DATA /298.0/ |
---|
3105 | |
---|
3106 | ! ---------------------------------------------------------------------- |
---|
3107 | ! SPECIFY DEPTH[M] OF LOWER BOUNDARY SOIL TEMPERATURE. |
---|
3108 | ! ---------------------------------------------------------------------- |
---|
3109 | REAL ZBOT |
---|
3110 | REAL ZBOT_DATA |
---|
3111 | ! changed for version 2.5.2 |
---|
3112 | ! DATA ZBOT_DATA /-3.0/ |
---|
3113 | DATA ZBOT_DATA /-8.0/ |
---|
3114 | |
---|
3115 | ! ---------------------------------------------------------------------- |
---|
3116 | ! SET TWO SOIL MOISTURE WILT, SOIL MOISTURE REFERENCE PARAMETERS |
---|
3117 | ! ---------------------------------------------------------------------- |
---|
3118 | REAL SMLOW |
---|
3119 | REAL SMLOW_DATA |
---|
3120 | DATA SMLOW_DATA /0.5/ |
---|
3121 | |
---|
3122 | REAL SMHIGH |
---|
3123 | REAL SMHIGH_DATA |
---|
3124 | ! changed in 2.6 from 3 to 6 on June 2nd 2003 |
---|
3125 | DATA SMHIGH_DATA /3.0/ |
---|
3126 | ! DATA SMHIGH_DATA /6.0/ |
---|
3127 | |
---|
3128 | ! ---------------------------------------------------------------------- |
---|
3129 | ! NAMELIST DEFINITION: |
---|
3130 | ! ---------------------------------------------------------------------- |
---|
3131 | NAMELIST /SOIL_VEG/ SLOPE_DATA, RSMTBL, RGLTBL, HSTBL, SNUPX, & |
---|
3132 | & BB, DRYSMC, F11, MAXSMC, REFSMC, SATPSI, SATDK, SATDW, & |
---|
3133 | & WLTSMC, QTZ, LPARAM, ZBOT_DATA, SALP_DATA, CFACTR_DATA, & |
---|
3134 | & CMCMAX_DATA, SBETA_DATA, RSMAX_DATA, TOPT_DATA, & |
---|
3135 | & REFDK_DATA, FRZK_DATA, BARE, DEFINED_VEG, DEFINED_SOIL, & |
---|
3136 | & DEFINED_SLOPE, FXEXP_DATA, NROOT_DATA, REFKDT_DATA, Z0_DATA, & |
---|
3137 | & CZIL_DATA, LAI_DATA, CSOIL_DATA |
---|
3138 | |
---|
3139 | ! ---------------------------------------------------------------------- |
---|
3140 | ! READ NAMELIST FILE TO OVERRIDE DEFAULT PARAMETERS ONLY ONCE. |
---|
3141 | ! NAMELIST_NAME must be 50 characters or less. |
---|
3142 | ! ---------------------------------------------------------------------- |
---|
3143 | IF (LFIRST) THEN |
---|
3144 | ! WRITE(*,*) 'READ NAMELIST' |
---|
3145 | ! OPEN(58, FILE = 'namelist_filename.txt') |
---|
3146 | ! READ(58,'(A)') NAMELIST_NAME |
---|
3147 | ! CLOSE(58) |
---|
3148 | ! WRITE(*,*) 'Namelist Filename is ', NAMELIST_NAME |
---|
3149 | ! OPEN(59, FILE = NAMELIST_NAME) |
---|
3150 | ! 50 CONTINUE |
---|
3151 | ! READ(59, SOIL_VEG, END=100) |
---|
3152 | ! IF (LPARAM) GOTO 50 |
---|
3153 | ! 100 CONTINUE |
---|
3154 | ! CLOSE(59) |
---|
3155 | ! WRITE(*,NML=SOIL_VEG) |
---|
3156 | LFIRST = .FALSE. |
---|
3157 | IF (DEFINED_SOIL .GT. MAX_SOILTYP) THEN |
---|
3158 | WRITE(*,*) 'Warning: DEFINED_SOIL too large in namelist' |
---|
3159 | STOP 222 |
---|
3160 | ENDIF |
---|
3161 | IF (DEFINED_VEG .GT. MAX_VEGTYP) THEN |
---|
3162 | WRITE(*,*) 'Warning: DEFINED_VEG too large in namelist' |
---|
3163 | STOP 222 |
---|
3164 | ENDIF |
---|
3165 | IF (DEFINED_SLOPE .GT. MAX_SLOPETYP) THEN |
---|
3166 | WRITE(*,*) 'Warning: DEFINED_SLOPE too large in namelist' |
---|
3167 | STOP 222 |
---|
3168 | ENDIF |
---|
3169 | |
---|
3170 | SMLOW = SMLOW_DATA |
---|
3171 | SMHIGH = SMHIGH_DATA |
---|
3172 | |
---|
3173 | DO I = 1,DEFINED_SOIL |
---|
3174 | SATDW(I) = BB(I)*SATDK(I)*(SATPSI(I)/MAXSMC(I)) |
---|
3175 | F11(I) = ALOG10(SATPSI(I)) + BB(I)*ALOG10(MAXSMC(I)) + 2.0 |
---|
3176 | REFSMC1 = MAXSMC(I)*(5.79E-9/SATDK(I)) & |
---|
3177 | & **(1.0/(2.0*BB(I)+3.0)) |
---|
3178 | REFSMC(I) = REFSMC1 + (MAXSMC(I)-REFSMC1) / SMHIGH |
---|
3179 | WLTSMC1 = MAXSMC(I) * (200.0/SATPSI(I))**(-1.0/BB(I)) |
---|
3180 | WLTSMC(I) = WLTSMC1 - SMLOW * WLTSMC1 |
---|
3181 | |
---|
3182 | ! ---------------------------------------------------------------------- |
---|
3183 | ! CURRENT VERSION DRYSMC VALUES THAT EQUATE TO WLTSMC. |
---|
3184 | ! FUTURE VERSION COULD LET DRYSMC BE INDEPENDENTLY SET VIA NAMELIST. |
---|
3185 | ! ---------------------------------------------------------------------- |
---|
3186 | DRYSMC(I) = WLTSMC(I) |
---|
3187 | END DO |
---|
3188 | |
---|
3189 | ! ---------------------------------------------------------------------- |
---|
3190 | ! END LFIRST BLOCK |
---|
3191 | ! ---------------------------------------------------------------------- |
---|
3192 | ENDIF |
---|
3193 | |
---|
3194 | IF (SOILTYP .GT. DEFINED_SOIL) THEN |
---|
3195 | WRITE(*,*) 'Warning: too many soil types' |
---|
3196 | STOP 333 |
---|
3197 | ENDIF |
---|
3198 | IF (VEGTYP .GT. DEFINED_VEG) THEN |
---|
3199 | WRITE(*,*) 'Warning: too many veg types' |
---|
3200 | STOP 333 |
---|
3201 | ENDIF |
---|
3202 | IF (SLOPETYP .GT. DEFINED_SLOPE) THEN |
---|
3203 | WRITE(*,*) 'Warning: too many slope types' |
---|
3204 | STOP 333 |
---|
3205 | ENDIF |
---|
3206 | |
---|
3207 | ! ---------------------------------------------------------------------- |
---|
3208 | ! SET-UP UNIVERSAL PARAMETERS (NOT DEPENDENT ON SOILTYP, VEGTYP OR |
---|
3209 | ! SLOPETYP) |
---|
3210 | ! ---------------------------------------------------------------------- |
---|
3211 | ZBOT = ZBOT_DATA |
---|
3212 | SALP = SALP_DATA |
---|
3213 | CFACTR = CFACTR_DATA |
---|
3214 | CMCMAX = CMCMAX_DATA |
---|
3215 | SBETA = SBETA_DATA |
---|
3216 | RSMAX = RSMAX_DATA |
---|
3217 | TOPT = TOPT_DATA |
---|
3218 | REFDK = REFDK_DATA |
---|
3219 | FRZK = FRZK_DATA |
---|
3220 | FXEXP = FXEXP_DATA |
---|
3221 | REFKDT = REFKDT_DATA |
---|
3222 | CZIL = CZIL_DATA |
---|
3223 | CSOIL = CSOIL_DATA |
---|
3224 | |
---|
3225 | ! ---------------------------------------------------------------------- |
---|
3226 | ! SET-UP SOIL PARAMETERS |
---|
3227 | ! ---------------------------------------------------------------------- |
---|
3228 | BEXP = BB(SOILTYP) |
---|
3229 | DKSAT = SATDK(SOILTYP) |
---|
3230 | DWSAT = SATDW(SOILTYP) |
---|
3231 | F1 = F11(SOILTYP) |
---|
3232 | KDT = REFKDT * DKSAT/REFDK |
---|
3233 | PSISAT = SATPSI(SOILTYP) |
---|
3234 | QUARTZ = QTZ(SOILTYP) |
---|
3235 | SMCDRY = DRYSMC(SOILTYP) |
---|
3236 | SMCMAX = MAXSMC(SOILTYP) |
---|
3237 | SMCREF = REFSMC(SOILTYP) |
---|
3238 | SMCWLT = WLTSMC(SOILTYP) |
---|
3239 | FRZFACT = (SMCMAX / SMCREF) * (0.412 / 0.468) |
---|
3240 | |
---|
3241 | ! ---------------------------------------------------------------------- |
---|
3242 | ! TO ADJUST FRZK PARAMETER TO ACTUAL SOIL TYPE: FRZK * FRZFACT |
---|
3243 | ! ---------------------------------------------------------------------- |
---|
3244 | FRZX = FRZK * FRZFACT |
---|
3245 | |
---|
3246 | ! ---------------------------------------------------------------------- |
---|
3247 | ! SET-UP VEGETATION PARAMETERS |
---|
3248 | ! ---------------------------------------------------------------------- |
---|
3249 | NROOT = NROOT_DATA(VEGTYP) |
---|
3250 | SNUP = SNUPX(VEGTYP) |
---|
3251 | RSMIN = RSMTBL(VEGTYP) |
---|
3252 | RGL = RGLTBL(VEGTYP) |
---|
3253 | HS = HSTBL(VEGTYP) |
---|
3254 | Z0 = Z0_DATA(VEGTYP) |
---|
3255 | LAI = LAI_DATA(VEGTYP) |
---|
3256 | IF (VEGTYP .EQ. BARE) SHDFAC = 0.0 |
---|
3257 | |
---|
3258 | IF (NROOT .GT. NSOIL) THEN |
---|
3259 | WRITE(*,*) 'Warning: too many root layers' |
---|
3260 | STOP 333 |
---|
3261 | ENDIF |
---|
3262 | |
---|
3263 | ! ---------------------------------------------------------------------- |
---|
3264 | ! CALCULATE ROOT DISTRIBUTION. PRESENT VERSION ASSUMES UNIFORM |
---|
3265 | ! DISTRIBUTION BASED ON SOIL LAYER DEPTHS. |
---|
3266 | ! ---------------------------------------------------------------------- |
---|
3267 | DO I = 1,NROOT |
---|
3268 | RTDIS(I) = -SLDPTH(I)/ZSOIL(NROOT) |
---|
3269 | END DO |
---|
3270 | |
---|
3271 | ! ---------------------------------------------------------------------- |
---|
3272 | ! SET-UP SLOPE PARAMETER |
---|
3273 | ! ---------------------------------------------------------------------- |
---|
3274 | SLOPE = SLOPE_DATA(SLOPETYP) |
---|
3275 | |
---|
3276 | ! ---------------------------------------------------------------------- |
---|
3277 | ! END SUBROUTINE REDPRM |
---|
3278 | ! ---------------------------------------------------------------------- |
---|
3279 | END SUBROUTINE REDPRM |
---|
3280 | |
---|
3281 | SUBROUTINE ROSR12 (P,A,B,C,D,DELTA,NSOIL) |
---|
3282 | |
---|
3283 | IMPLICIT NONE |
---|
3284 | |
---|
3285 | ! ---------------------------------------------------------------------- |
---|
3286 | ! SUBROUTINE ROSR12 |
---|
3287 | ! ---------------------------------------------------------------------- |
---|
3288 | ! INVERT (SOLVE) THE TRI-DIAGONAL MATRIX PROBLEM SHOWN BELOW: |
---|
3289 | ! ### ### ### ### ### ### |
---|
3290 | ! #B(1), C(1), 0 , 0 , 0 , . . . , 0 # # # # # |
---|
3291 | ! #A(2), B(2), C(2), 0 , 0 , . . . , 0 # # # # # |
---|
3292 | ! # 0 , A(3), B(3), C(3), 0 , . . . , 0 # # # # D(3) # |
---|
3293 | ! # 0 , 0 , A(4), B(4), C(4), . . . , 0 # # P(4) # # D(4) # |
---|
3294 | ! # 0 , 0 , 0 , A(5), B(5), . . . , 0 # # P(5) # # D(5) # |
---|
3295 | ! # . . # # . # = # . # |
---|
3296 | ! # . . # # . # # . # |
---|
3297 | ! # . . # # . # # . # |
---|
3298 | ! # 0 , . . . , 0 , A(M-2), B(M-2), C(M-2), 0 # #P(M-2)# #D(M-2)# |
---|
3299 | ! # 0 , . . . , 0 , 0 , A(M-1), B(M-1), C(M-1)# #P(M-1)# #D(M-1)# |
---|
3300 | ! # 0 , . . . , 0 , 0 , 0 , A(M) , B(M) # # P(M) # # D(M) # |
---|
3301 | ! ### ### ### ### ### ### |
---|
3302 | ! ---------------------------------------------------------------------- |
---|
3303 | INTEGER K |
---|
3304 | INTEGER KK |
---|
3305 | INTEGER NSOIL |
---|
3306 | |
---|
3307 | REAL A(NSOIL) |
---|
3308 | REAL B(NSOIL) |
---|
3309 | REAL C(NSOIL) |
---|
3310 | REAL D(NSOIL) |
---|
3311 | REAL DELTA(NSOIL) |
---|
3312 | REAL P(NSOIL) |
---|
3313 | |
---|
3314 | ! ---------------------------------------------------------------------- |
---|
3315 | ! INITIALIZE EQN COEF C FOR THE LOWEST SOIL LAYER |
---|
3316 | ! ---------------------------------------------------------------------- |
---|
3317 | C(NSOIL) = 0.0 |
---|
3318 | |
---|
3319 | ! ---------------------------------------------------------------------- |
---|
3320 | ! SOLVE THE COEFS FOR THE 1ST SOIL LAYER |
---|
3321 | ! ---------------------------------------------------------------------- |
---|
3322 | P(1) = -C(1) / B(1) |
---|
3323 | DELTA(1) = D(1) / B(1) |
---|
3324 | |
---|
3325 | ! ---------------------------------------------------------------------- |
---|
3326 | ! SOLVE THE COEFS FOR SOIL LAYERS 2 THRU NSOIL |
---|
3327 | ! ---------------------------------------------------------------------- |
---|
3328 | DO K = 2,NSOIL |
---|
3329 | P(K) = -C(K) * ( 1.0 / (B(K) + A (K) * P(K-1)) ) |
---|
3330 | DELTA(K) = (D(K)-A(K)*DELTA(K-1))*(1.0/(B(K)+A(K)*P(K-1))) |
---|
3331 | END DO |
---|
3332 | |
---|
3333 | ! ---------------------------------------------------------------------- |
---|
3334 | ! SET P TO DELTA FOR LOWEST SOIL LAYER |
---|
3335 | ! ---------------------------------------------------------------------- |
---|
3336 | P(NSOIL) = DELTA(NSOIL) |
---|
3337 | |
---|
3338 | ! ---------------------------------------------------------------------- |
---|
3339 | ! ADJUST P FOR SOIL LAYERS 2 THRU NSOIL |
---|
3340 | ! ---------------------------------------------------------------------- |
---|
3341 | DO K = 2,NSOIL |
---|
3342 | KK = NSOIL - K + 1 |
---|
3343 | P(KK) = P(KK) * P(KK+1) + DELTA(KK) |
---|
3344 | END DO |
---|
3345 | |
---|
3346 | ! ---------------------------------------------------------------------- |
---|
3347 | ! END SUBROUTINE ROSR12 |
---|
3348 | ! ---------------------------------------------------------------------- |
---|
3349 | END SUBROUTINE ROSR12 |
---|
3350 | |
---|
3351 | SUBROUTINE SHFLX (SSOIL,STC,SMC,SMCMAX,NSOIL,T1,DT,YY,ZZ1,ZSOIL, & |
---|
3352 | & TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1,ICE, & |
---|
3353 | & QUARTZ,CSOIL) |
---|
3354 | |
---|
3355 | IMPLICIT NONE |
---|
3356 | |
---|
3357 | ! ---------------------------------------------------------------------- |
---|
3358 | ! SUBROUTINE SHFLX |
---|
3359 | ! ---------------------------------------------------------------------- |
---|
3360 | ! UPDATE THE TEMPERATURE STATE OF THE SOIL COLUMN BASED ON THE THERMAL |
---|
3361 | ! DIFFUSION EQUATION AND UPDATE THE FROZEN SOIL MOISTURE CONTENT BASED |
---|
3362 | ! ON THE TEMPERATURE. |
---|
3363 | ! ---------------------------------------------------------------------- |
---|
3364 | INTEGER NSOLD |
---|
3365 | PARAMETER(NSOLD = 20) |
---|
3366 | |
---|
3367 | INTEGER I |
---|
3368 | INTEGER ICE |
---|
3369 | INTEGER IFRZ |
---|
3370 | INTEGER NSOIL |
---|
3371 | |
---|
3372 | REAL AI(NSOLD) |
---|
3373 | REAL BI(NSOLD) |
---|
3374 | REAL CI(NSOLD) |
---|
3375 | |
---|
3376 | REAL BEXP |
---|
3377 | REAL CSOIL |
---|
3378 | REAL DF1 |
---|
3379 | REAL DT |
---|
3380 | REAL F1 |
---|
3381 | REAL PSISAT |
---|
3382 | REAL QUARTZ |
---|
3383 | REAL RHSTS(NSOLD) |
---|
3384 | REAL SSOIL |
---|
3385 | REAL SH2O(NSOIL) |
---|
3386 | REAL SMC(NSOIL) |
---|
3387 | REAL SMCMAX |
---|
3388 | REAL SMCWLT |
---|
3389 | REAL STC(NSOIL) |
---|
3390 | REAL STCF(NSOLD) |
---|
3391 | REAL T0 |
---|
3392 | REAL T1 |
---|
3393 | REAL TBOT |
---|
3394 | REAL YY |
---|
3395 | REAL ZBOT |
---|
3396 | REAL ZSOIL(NSOIL) |
---|
3397 | REAL ZZ1 |
---|
3398 | |
---|
3399 | PARAMETER(T0 = 273.15) |
---|
3400 | |
---|
3401 | ! ---------------------------------------------------------------------- |
---|
3402 | ! HRT ROUTINE CALCS THE RIGHT HAND SIDE OF THE SOIL TEMP DIF EQN |
---|
3403 | ! ---------------------------------------------------------------------- |
---|
3404 | IF (ICE.EQ.1) THEN |
---|
3405 | |
---|
3406 | ! ---------------------------------------------------------------------- |
---|
3407 | ! SEA-ICE CASE |
---|
3408 | ! ---------------------------------------------------------------------- |
---|
3409 | CALL HRTICE (RHSTS,STC,NSOIL,ZSOIL,YY,ZZ1,DF1,AI,BI,CI) |
---|
3410 | |
---|
3411 | CALL HSTEP (STCF,STC,RHSTS,DT,NSOIL,AI,BI,CI) |
---|
3412 | |
---|
3413 | ELSE |
---|
3414 | |
---|
3415 | ! ---------------------------------------------------------------------- |
---|
3416 | ! LAND-MASS CASE |
---|
3417 | ! ---------------------------------------------------------------------- |
---|
3418 | CALL HRT (RHSTS,STC,SMC,SMCMAX,NSOIL,ZSOIL,YY,ZZ1,TBOT, & |
---|
3419 | & ZBOT,PSISAT,SH2O,DT, & |
---|
3420 | & BEXP,F1,DF1,QUARTZ,CSOIL,AI,BI,CI) |
---|
3421 | |
---|
3422 | CALL HSTEP (STCF,STC,RHSTS,DT,NSOIL,AI,BI,CI) |
---|
3423 | |
---|
3424 | ENDIF |
---|
3425 | |
---|
3426 | DO I = 1,NSOIL |
---|
3427 | STC(I) = STCF(I) |
---|
3428 | END DO |
---|
3429 | |
---|
3430 | ! ---------------------------------------------------------------------- |
---|
3431 | ! IN THE NO SNOWPACK CASE (VIA ROUTINE NOPAC BRANCH,) UPDATE THE GRND |
---|
3432 | ! (SKIN) TEMPERATURE HERE IN RESPONSE TO THE UPDATED SOIL TEMPERATURE |
---|
3433 | ! PROFILE ABOVE. (NOTE: INSPECTION OF ROUTINE SNOPAC SHOWS THAT T1 |
---|
3434 | ! BELOW IS A DUMMY VARIABLE ONLY, AS SKIN TEMPERATURE IS UPDATED |
---|
3435 | ! DIFFERENTLY IN ROUTINE SNOPAC) |
---|
3436 | ! ---------------------------------------------------------------------- |
---|
3437 | T1 = (YY + (ZZ1 - 1.0) * STC(1)) / ZZ1 |
---|
3438 | |
---|
3439 | ! ---------------------------------------------------------------------- |
---|
3440 | ! CALCULATE SURFACE SOIL HEAT FLUX |
---|
3441 | ! ---------------------------------------------------------------------- |
---|
3442 | SSOIL = DF1 * (STC(1) - T1) / (0.5 * ZSOIL(1)) |
---|
3443 | |
---|
3444 | ! ---------------------------------------------------------------------- |
---|
3445 | ! END SUBROUTINE SHFLX |
---|
3446 | ! ---------------------------------------------------------------------- |
---|
3447 | END SUBROUTINE SHFLX |
---|
3448 | |
---|
3449 | SUBROUTINE SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
3450 | & SH2O,SLOPE,KDT,FRZFACT, & |
---|
3451 | & SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
3452 | & SHDFAC,CMCMAX, & |
---|
3453 | & RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
3454 | & EDIR1,EC1,ET1, & |
---|
3455 | & DRIP) |
---|
3456 | |
---|
3457 | IMPLICIT NONE |
---|
3458 | |
---|
3459 | ! ---------------------------------------------------------------------- |
---|
3460 | ! SUBROUTINE SMFLX |
---|
3461 | ! ---------------------------------------------------------------------- |
---|
3462 | ! CALCULATE SOIL MOISTURE FLUX. THE SOIL MOISTURE CONTENT (SMC - A PER |
---|
3463 | ! UNIT VOLUME MEASUREMENT) IS A DEPENDENT VARIABLE THAT IS UPDATED WITH |
---|
3464 | ! PROGNOSTIC EQNS. THE CANOPY MOISTURE CONTENT (CMC) IS ALSO UPDATED. |
---|
3465 | ! FROZEN GROUND VERSION: NEW STATES ADDED: SH2O, AND FROZEN GROUND |
---|
3466 | ! CORRECTION FACTOR, FRZFACT AND PARAMETER SLOPE. |
---|
3467 | ! ---------------------------------------------------------------------- |
---|
3468 | INTEGER NSOLD |
---|
3469 | PARAMETER(NSOLD = 20) |
---|
3470 | |
---|
3471 | INTEGER I |
---|
3472 | INTEGER K |
---|
3473 | INTEGER NSOIL |
---|
3474 | |
---|
3475 | REAL AI(NSOLD) |
---|
3476 | REAL BI(NSOLD) |
---|
3477 | REAL CI(NSOLD) |
---|
3478 | |
---|
3479 | REAL BEXP |
---|
3480 | REAL CMC |
---|
3481 | REAL CMCMAX |
---|
3482 | REAL DKSAT |
---|
3483 | REAL DRIP |
---|
3484 | REAL DT |
---|
3485 | REAL DUMMY |
---|
3486 | REAL DWSAT |
---|
3487 | REAL EC1 |
---|
3488 | REAL EDIR1 |
---|
3489 | REAL ET1(NSOIL) |
---|
3490 | REAL EXCESS |
---|
3491 | REAL FRZFACT |
---|
3492 | REAL KDT |
---|
3493 | REAL PCPDRP |
---|
3494 | REAL PRCP1 |
---|
3495 | REAL RHSCT |
---|
3496 | REAL RHSTT(NSOLD) |
---|
3497 | REAL RUNOFF1 |
---|
3498 | REAL RUNOFF2 |
---|
3499 | REAL RUNOFF3 |
---|
3500 | REAL SHDFAC |
---|
3501 | REAL SMC(NSOIL) |
---|
3502 | REAL SH2O(NSOIL) |
---|
3503 | REAL SICE(NSOLD) |
---|
3504 | REAL SH2OA(NSOLD) |
---|
3505 | REAL SH2OFG(NSOLD) |
---|
3506 | REAL SLOPE |
---|
3507 | REAL SMCMAX |
---|
3508 | REAL SMCWLT |
---|
3509 | REAL TRHSCT |
---|
3510 | REAL ZSOIL(NSOIL) |
---|
3511 | |
---|
3512 | ! ---------------------------------------------------------------------- |
---|
3513 | ! EXECUTABLE CODE BEGINS HERE. |
---|
3514 | ! ---------------------------------------------------------------------- |
---|
3515 | DUMMY = 0. |
---|
3516 | |
---|
3517 | ! ---------------------------------------------------------------------- |
---|
3518 | ! COMPUTE THE RIGHT HAND SIDE OF THE CANOPY EQN TERM ( RHSCT ) |
---|
3519 | ! ---------------------------------------------------------------------- |
---|
3520 | RHSCT = SHDFAC * PRCP1 - EC1 |
---|
3521 | |
---|
3522 | ! ---------------------------------------------------------------------- |
---|
3523 | ! CONVERT RHSCT (A RATE) TO TRHSCT (AN AMOUNT) AND ADD IT TO EXISTING |
---|
3524 | ! CMC. IF RESULTING AMT EXCEEDS MAX CAPACITY, IT BECOMES DRIP AND WILL |
---|
3525 | ! FALL TO THE GRND. |
---|
3526 | ! ---------------------------------------------------------------------- |
---|
3527 | DRIP = 0. |
---|
3528 | TRHSCT = DT * RHSCT |
---|
3529 | EXCESS = CMC + TRHSCT |
---|
3530 | IF (EXCESS .GT. CMCMAX) DRIP = EXCESS - CMCMAX |
---|
3531 | |
---|
3532 | ! ---------------------------------------------------------------------- |
---|
3533 | ! PCPDRP IS THE COMBINED PRCP1 AND DRIP (FROM CMC) THAT GOES INTO THE |
---|
3534 | ! SOIL |
---|
3535 | ! ---------------------------------------------------------------------- |
---|
3536 | PCPDRP = (1. - SHDFAC) * PRCP1 + DRIP / DT |
---|
3537 | |
---|
3538 | ! ---------------------------------------------------------------------- |
---|
3539 | ! STORE ICE CONTENT AT EACH SOIL LAYER BEFORE CALLING SRT & SSTEP |
---|
3540 | ! ---------------------------------------------------------------------- |
---|
3541 | DO I = 1,NSOIL |
---|
3542 | SICE(I) = SMC(I) - SH2O(I) |
---|
3543 | END DO |
---|
3544 | |
---|
3545 | ! ---------------------------------------------------------------------- |
---|
3546 | ! CALL SUBROUTINES SRT AND SSTEP TO SOLVE THE SOIL MOISTURE |
---|
3547 | ! TENDENCY EQUATIONS. |
---|
3548 | ! |
---|
3549 | ! IF THE INFILTRATING PRECIP RATE IS NONTRIVIAL, |
---|
3550 | ! (WE CONSIDER NONTRIVIAL TO BE A PRECIP TOTAL OVER THE TIME STEP |
---|
3551 | ! EXCEEDING ONE ONE-THOUSANDTH OF THE WATER HOLDING CAPACITY OF |
---|
3552 | ! THE FIRST SOIL LAYER) |
---|
3553 | ! THEN CALL THE SRT/SSTEP SUBROUTINE PAIR TWICE IN THE MANNER OF |
---|
3554 | ! TIME SCHEME "F" (IMPLICIT STATE, AVERAGED COEFFICIENT) |
---|
3555 | ! OF SECTION 2 OF KALNAY AND KANAMITSU (1988, MWR, VOL 116, |
---|
3556 | ! PAGES 1945-1958)TO MINIMIZE 2-DELTA-T OSCILLATIONS IN THE |
---|
3557 | ! SOIL MOISTURE VALUE OF THE TOP SOIL LAYER THAT CAN ARISE BECAUSE |
---|
3558 | ! OF THE EXTREME NONLINEAR DEPENDENCE OF THE SOIL HYDRAULIC |
---|
3559 | ! DIFFUSIVITY COEFFICIENT AND THE HYDRAULIC CONDUCTIVITY ON THE |
---|
3560 | ! SOIL MOISTURE STATE |
---|
3561 | ! OTHERWISE CALL THE SRT/SSTEP SUBROUTINE PAIR ONCE IN THE MANNER OF |
---|
3562 | ! TIME SCHEME "D" (IMPLICIT STATE, EXPLICIT COEFFICIENT) |
---|
3563 | ! OF SECTION 2 OF KALNAY AND KANAMITSU |
---|
3564 | ! PCPDRP IS UNITS OF KG/M**2/S OR MM/S, ZSOIL IS NEGATIVE DEPTH IN M |
---|
3565 | ! ---------------------------------------------------------------------- |
---|
3566 | ! IF ( PCPDRP .GT. 0.0 ) THEN |
---|
3567 | IF ( (PCPDRP*DT) .GT. (0.001*1000.0*(-ZSOIL(1))*SMCMAX) ) THEN |
---|
3568 | |
---|
3569 | ! ---------------------------------------------------------------------- |
---|
3570 | ! FROZEN GROUND VERSION: |
---|
3571 | ! SMC STATES REPLACED BY SH2O STATES IN SRT SUBR. SH2O & SICE STATES |
---|
3572 | ! INCLUDED IN SSTEP SUBR. FROZEN GROUND CORRECTION FACTOR, FRZFACT |
---|
3573 | ! ADDED. ALL WATER BALANCE CALCULATIONS USING UNFROZEN WATER |
---|
3574 | ! ---------------------------------------------------------------------- |
---|
3575 | CALL SRT (RHSTT,EDIR1,ET1,SH2O,SH2O,NSOIL,PCPDRP,ZSOIL, & |
---|
3576 | & DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
3577 | & RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI) |
---|
3578 | |
---|
3579 | CALL SSTEP (SH2OFG,SH2O,DUMMY,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & |
---|
3580 | & CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI) |
---|
3581 | |
---|
3582 | DO K = 1,NSOIL |
---|
3583 | SH2OA(K) = (SH2O(K) + SH2OFG(K)) * 0.5 |
---|
3584 | END DO |
---|
3585 | |
---|
3586 | CALL SRT (RHSTT,EDIR1,ET1,SH2O,SH2OA,NSOIL,PCPDRP,ZSOIL, & |
---|
3587 | & DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
3588 | & RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI) |
---|
3589 | |
---|
3590 | CALL SSTEP (SH2O,SH2O,CMC,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & |
---|
3591 | & CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI) |
---|
3592 | |
---|
3593 | ELSE |
---|
3594 | |
---|
3595 | CALL SRT (RHSTT,EDIR1,ET1,SH2O,SH2O,NSOIL,PCPDRP,ZSOIL, & |
---|
3596 | & DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
3597 | & RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI) |
---|
3598 | |
---|
3599 | CALL SSTEP (SH2O,SH2O,CMC,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & |
---|
3600 | & CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI) |
---|
3601 | |
---|
3602 | ENDIF |
---|
3603 | |
---|
3604 | ! RUNOF = RUNOFF |
---|
3605 | |
---|
3606 | ! ---------------------------------------------------------------------- |
---|
3607 | ! END SUBROUTINE SMFLX |
---|
3608 | ! ---------------------------------------------------------------------- |
---|
3609 | END SUBROUTINE SMFLX |
---|
3610 | |
---|
3611 | SUBROUTINE SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR) |
---|
3612 | |
---|
3613 | IMPLICIT NONE |
---|
3614 | |
---|
3615 | ! ---------------------------------------------------------------------- |
---|
3616 | ! SUBROUTINE SNFRAC |
---|
3617 | ! ---------------------------------------------------------------------- |
---|
3618 | ! CALCULATE SNOW FRACTION (0 -> 1) |
---|
3619 | ! SNEQV SNOW WATER EQUIVALENT (M) |
---|
3620 | ! SNUP THRESHOLD SNEQV DEPTH ABOVE WHICH SNCOVR=1 |
---|
3621 | ! SALP TUNING PARAMETER |
---|
3622 | ! SNCOVR FRACTIONAL SNOW COVER |
---|
3623 | ! ---------------------------------------------------------------------- |
---|
3624 | REAL SNEQV, SNUP, SALP, SNCOVR, RSNOW, Z0N, SNOWH |
---|
3625 | |
---|
3626 | ! ---------------------------------------------------------------------- |
---|
3627 | ! SNUP IS VEG-CLASS DEPENDENT SNOWDEPTH THRESHHOLD (SET IN ROUTINE |
---|
3628 | ! REDPRM) ABOVE WHICH SNOCVR=1. |
---|
3629 | ! ---------------------------------------------------------------------- |
---|
3630 | IF (SNEQV .LT. SNUP) THEN |
---|
3631 | RSNOW = SNEQV/SNUP |
---|
3632 | SNCOVR = 1. - ( EXP(-SALP*RSNOW) - RSNOW*EXP(-SALP)) |
---|
3633 | ELSE |
---|
3634 | SNCOVR = 1.0 |
---|
3635 | ENDIF |
---|
3636 | |
---|
3637 | Z0N=0.035 |
---|
3638 | ! FORMULATION OF DICKINSON ET AL. 1986 |
---|
3639 | |
---|
3640 | ! SNCOVR=SNOWH/(SNOWH + 5*Z0N) |
---|
3641 | |
---|
3642 | ! FORMULATION OF MARSHALL ET AL. 1994 |
---|
3643 | ! SNCOVR=SNEQV/(SNEQV + 2*Z0N) |
---|
3644 | |
---|
3645 | ! ---------------------------------------------------------------------- |
---|
3646 | ! END SUBROUTINE SNFRAC |
---|
3647 | ! ---------------------------------------------------------------------- |
---|
3648 | END SUBROUTINE SNFRAC |
---|
3649 | |
---|
3650 | SUBROUTINE SNOPAC (ETP,ETA,PRCP,PRCP1,SNOWNG,SMC,SMCMAX,SMCWLT, & |
---|
3651 | & SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & |
---|
3652 | & SBETA,DF1, & |
---|
3653 | & Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA, & |
---|
3654 | & SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,ESD,SNDENS,& |
---|
3655 | & SNOWH,SH2O,SLOPE,KDT,FRZFACT,PSISAT,SNUP, & |
---|
3656 | & ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, & |
---|
3657 | & RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, & |
---|
3658 | & ICE,RTDIS,QUARTZ,FXEXP,CSOIL, & |
---|
3659 | & BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW) |
---|
3660 | |
---|
3661 | IMPLICIT NONE |
---|
3662 | |
---|
3663 | ! ---------------------------------------------------------------------- |
---|
3664 | ! SUBROUTINE SNOPAC |
---|
3665 | ! ---------------------------------------------------------------------- |
---|
3666 | ! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES & UPDATE SOIL MOISTURE |
---|
3667 | ! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN A SNOW PACK IS |
---|
3668 | ! PRESENT. |
---|
3669 | ! ---------------------------------------------------------------------- |
---|
3670 | INTEGER ICE |
---|
3671 | INTEGER NROOT |
---|
3672 | INTEGER NSOIL |
---|
3673 | |
---|
3674 | LOGICAL SNOWNG |
---|
3675 | |
---|
3676 | REAL BEXP |
---|
3677 | REAL BETA |
---|
3678 | REAL CFACTR |
---|
3679 | REAL CMC |
---|
3680 | REAL CMCMAX |
---|
3681 | REAL CP |
---|
3682 | REAL CPH2O |
---|
3683 | REAL CPICE |
---|
3684 | REAL CSOIL |
---|
3685 | REAL DENOM |
---|
3686 | REAL DEW |
---|
3687 | REAL DF1 |
---|
3688 | REAL DKSAT |
---|
3689 | REAL DRIP |
---|
3690 | REAL DSOIL |
---|
3691 | REAL DTOT |
---|
3692 | REAL DT |
---|
3693 | REAL DWSAT |
---|
3694 | REAL EC |
---|
3695 | REAL EDIR |
---|
3696 | REAL EPSCA |
---|
3697 | REAL ESD |
---|
3698 | REAL ESDMIN |
---|
3699 | REAL EXPSNO |
---|
3700 | REAL EXPSOI |
---|
3701 | REAL ETA |
---|
3702 | REAL ETA1 |
---|
3703 | REAL ETP |
---|
3704 | REAL ETP1 |
---|
3705 | REAL ETP2 |
---|
3706 | REAL ET(NSOIL) |
---|
3707 | REAL ETT |
---|
3708 | REAL EX |
---|
3709 | REAL EXPFAC |
---|
3710 | REAL FDOWN |
---|
3711 | REAL FXEXP |
---|
3712 | REAL FLX1 |
---|
3713 | REAL FLX2 |
---|
3714 | REAL FLX3 |
---|
3715 | REAL F1 |
---|
3716 | REAL KDT |
---|
3717 | REAL LSUBF |
---|
3718 | REAL LSUBC |
---|
3719 | REAL LSUBS |
---|
3720 | REAL PC |
---|
3721 | REAL PRCP |
---|
3722 | REAL PRCP1 |
---|
3723 | REAL Q2 |
---|
3724 | REAL RCH |
---|
3725 | REAL RR |
---|
3726 | REAL RTDIS(NSOIL) |
---|
3727 | REAL SSOIL |
---|
3728 | REAL SBETA |
---|
3729 | REAL SSOIL1 |
---|
3730 | REAL SFCTMP |
---|
3731 | REAL SHDFAC |
---|
3732 | REAL SIGMA |
---|
3733 | REAL SMC(NSOIL) |
---|
3734 | REAL SH2O(NSOIL) |
---|
3735 | REAL SMCDRY |
---|
3736 | REAL SMCMAX |
---|
3737 | REAL SMCREF |
---|
3738 | REAL SMCWLT |
---|
3739 | REAL SNOMLT |
---|
3740 | REAL SNOWH |
---|
3741 | REAL STC(NSOIL) |
---|
3742 | REAL T1 |
---|
3743 | REAL T11 |
---|
3744 | REAL T12 |
---|
3745 | REAL T12A |
---|
3746 | REAL T12B |
---|
3747 | REAL T24 |
---|
3748 | REAL TBOT |
---|
3749 | REAL ZBOT |
---|
3750 | REAL TH2 |
---|
3751 | REAL YY |
---|
3752 | REAL ZSOIL(NSOIL) |
---|
3753 | REAL ZZ1 |
---|
3754 | REAL TFREEZ |
---|
3755 | REAL SALP |
---|
3756 | REAL SFCPRS |
---|
3757 | REAL SLOPE |
---|
3758 | REAL FRZFACT |
---|
3759 | REAL PSISAT |
---|
3760 | REAL SNUP |
---|
3761 | REAL RUNOFF1 |
---|
3762 | REAL RUNOFF2 |
---|
3763 | REAL RUNOFF3 |
---|
3764 | REAL QUARTZ |
---|
3765 | REAL SNDENS |
---|
3766 | REAL SNCOND |
---|
3767 | REAL RSNOW |
---|
3768 | REAL SNCOVR |
---|
3769 | REAL QSAT |
---|
3770 | REAL ETP3 |
---|
3771 | REAL SEH |
---|
3772 | REAL T14 |
---|
3773 | ! REAL CSNOW |
---|
3774 | |
---|
3775 | REAL EC1 |
---|
3776 | REAL EDIR1 |
---|
3777 | REAL ET1(NSOIL) |
---|
3778 | REAL ETT1 |
---|
3779 | |
---|
3780 | REAL ETNS |
---|
3781 | REAL ETNS1 |
---|
3782 | REAL ESNOW |
---|
3783 | REAL ESNOW1 |
---|
3784 | REAL ESNOW2 |
---|
3785 | REAL ETANRG |
---|
3786 | |
---|
3787 | INTEGER K |
---|
3788 | |
---|
3789 | REAL SNOEXP |
---|
3790 | |
---|
3791 | PARAMETER(CP = 1004.5) |
---|
3792 | PARAMETER(CPH2O = 4.218E+3) |
---|
3793 | PARAMETER(CPICE = 2.106E+3) |
---|
3794 | PARAMETER(ESDMIN = 1.E-6) |
---|
3795 | PARAMETER(LSUBF = 3.335E+5) |
---|
3796 | PARAMETER(LSUBC = 2.501000E+6) |
---|
3797 | PARAMETER(LSUBS = 2.83E+6) |
---|
3798 | PARAMETER(SIGMA = 5.67E-8) |
---|
3799 | PARAMETER(TFREEZ = 273.15) |
---|
3800 | |
---|
3801 | ! DATA SNOEXP /1.0/ |
---|
3802 | DATA SNOEXP /2.0/ |
---|
3803 | |
---|
3804 | ! ---------------------------------------------------------------------- |
---|
3805 | ! EXECUTABLE CODE BEGINS HERE: |
---|
3806 | ! CONVERT POTENTIAL EVAP (ETP) FROM KG M-2 S-1 TO M S-1 AND THEN TO AN |
---|
3807 | ! AMOUNT (M) GIVEN TIMESTEP (DT) AND CALL IT AN EFFECTIVE SNOWPACK |
---|
3808 | ! REDUCTION AMOUNT, ETP2 (M). THIS IS THE AMOUNT THE SNOWPACK WOULD BE |
---|
3809 | ! REDUCED DUE TO EVAPORATION FROM THE SNOW SFC DURING THE TIMESTEP. |
---|
3810 | ! EVAPORATION WILL PROCEED AT THE POTENTIAL RATE UNLESS THE SNOW DEPTH |
---|
3811 | ! IS LESS THAN THE EXPECTED SNOWPACK REDUCTION. |
---|
3812 | ! IF SEAICE (ICE=1), BETA REMAINS=1. |
---|
3813 | ! ---------------------------------------------------------------------- |
---|
3814 | PRCP1 = PRCP1*0.001 |
---|
3815 | |
---|
3816 | ! ETP2 = ETP * 0.001 * DT |
---|
3817 | BETA = 1.0 |
---|
3818 | IF (ICE .NE. 1) THEN |
---|
3819 | IF (ESD .LT. ETP2) THEN |
---|
3820 | ! BETA = ESD / ETP2 |
---|
3821 | ENDIF |
---|
3822 | ENDIF |
---|
3823 | |
---|
3824 | ! ---------------------------------------------------------------------- |
---|
3825 | EDIR = 0.0 |
---|
3826 | EDIR1 = 0.0 |
---|
3827 | EC = 0.0 |
---|
3828 | EC1 = 0.0 |
---|
3829 | DO K = 1,NSOIL |
---|
3830 | ET(K) = 0.0 |
---|
3831 | ET1(K) = 0.0 |
---|
3832 | ENDDO |
---|
3833 | ETT = 0.0 |
---|
3834 | ETT1 = 0.0 |
---|
3835 | ETNS = 0.0 |
---|
3836 | ETNS1 = 0.0 |
---|
3837 | ESNOW = 0.0 |
---|
3838 | ESNOW1 = 0.0 |
---|
3839 | ESNOW2 = 0.0 |
---|
3840 | ! ---------------------------------------------------------------------- |
---|
3841 | |
---|
3842 | ! ---------------------------------------------------------------------- |
---|
3843 | ! IF ETP<0 (DOWNWARD) THEN DEWFALL (=FROSTFALL IN THIS CASE). |
---|
3844 | ! ---------------------------------------------------------------------- |
---|
3845 | DEW = 0.0 |
---|
3846 | ETP1 = ETP*0.001 |
---|
3847 | IF (ETP .LT. 0.0) THEN |
---|
3848 | ! DEW = -ETP * 0.001 |
---|
3849 | DEW = -ETP1 |
---|
3850 | ! ESNOW2 = ETP * 0.001 * DT |
---|
3851 | ESNOW2 = ETP1 * DT |
---|
3852 | ETANRG = ETP*((1.-SNCOVR)*LSUBC + SNCOVR*LSUBS) |
---|
3853 | ! ENDIF |
---|
3854 | ELSE |
---|
3855 | ! ---------------------------------------------------------------------- |
---|
3856 | ! ETP1 = 0.0 |
---|
3857 | ! ETP1 = ETP*0.001 |
---|
3858 | IF (ICE .NE. 1) THEN |
---|
3859 | IF (SNCOVR .LT. 1.) THEN |
---|
3860 | ! CALL EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, |
---|
3861 | CALL EVAPO (ETNS1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & |
---|
3862 | & SH2O,SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & |
---|
3863 | & SMCREF,SHDFAC,CMCMAX, & |
---|
3864 | & SMCDRY,CFACTR, & |
---|
3865 | & EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
3866 | ! ENDIF |
---|
3867 | ! ---------------------------------------------------------------------- |
---|
3868 | EDIR1 = EDIR1*(1.-SNCOVR) |
---|
3869 | EC1 = EC1*(1.-SNCOVR) |
---|
3870 | DO K = 1,NSOIL |
---|
3871 | ET1(K) = ET1(K)*(1.-SNCOVR) |
---|
3872 | END DO |
---|
3873 | ETT1 = ETT1*(1.-SNCOVR) |
---|
3874 | ETNS1 = ETNS1*(1.-SNCOVR) |
---|
3875 | ! ---------------------------------------------------------------------- |
---|
3876 | EDIR = EDIR1 * 1000.0 |
---|
3877 | EC = EC1 * 1000.0 |
---|
3878 | DO K = 1,NSOIL |
---|
3879 | ET(K) = ET1(K) * 1000.0 |
---|
3880 | END DO |
---|
3881 | ETT = ETT1 * 1000.0 |
---|
3882 | ETNS = ETNS1 * 1000.0 |
---|
3883 | ! ---------------------------------------------------------------------- |
---|
3884 | ENDIF |
---|
3885 | ESNOW = ETP*SNCOVR |
---|
3886 | ! ESNOW1 = ETP*0.001 |
---|
3887 | ESNOW1 = ESNOW*0.001 |
---|
3888 | ESNOW2 = ESNOW1*DT |
---|
3889 | ETANRG = ESNOW*LSUBS + ETNS*LSUBC |
---|
3890 | ENDIF |
---|
3891 | ENDIF |
---|
3892 | |
---|
3893 | ! ---------------------------------------------------------------------- |
---|
3894 | ! IF PRECIP IS FALLING, CALCULATE HEAT FLUX FROM SNOW SFC TO NEWLY |
---|
3895 | ! ACCUMULATING PRECIP. NOTE THAT THIS REFLECTS THE FLUX APPROPRIATE FOR |
---|
3896 | ! THE NOT-YET-UPDATED SKIN TEMPERATURE (T1). ASSUMES TEMPERATURE OF THE |
---|
3897 | ! SNOWFALL STRIKING THE GOUND IS =SFCTMP (LOWEST MODEL LEVEL AIR TEMP). |
---|
3898 | ! ---------------------------------------------------------------------- |
---|
3899 | FLX1 = 0.0 |
---|
3900 | IF (SNOWNG) THEN |
---|
3901 | FLX1 = CPICE * PRCP * (T1 - SFCTMP) |
---|
3902 | ELSE |
---|
3903 | IF (PRCP .GT. 0.0) FLX1 = CPH2O * PRCP * (T1 - SFCTMP) |
---|
3904 | ENDIF |
---|
3905 | |
---|
3906 | ! ---------------------------------------------------------------------- |
---|
3907 | ! CALCULATE AN 'EFFECTIVE SNOW-GRND SFC TEMP' (T12) BASED ON HEAT FLUXES |
---|
3908 | ! BETWEEN THE SNOW PACK AND THE SOIL AND ON NET RADIATION. |
---|
3909 | ! INCLUDE FLX1 (PRECIP-SNOW SFC) AND FLX2 (FREEZING RAIN LATENT HEAT) |
---|
3910 | ! FLUXES. |
---|
3911 | ! FLX2 REFLECTS FREEZING RAIN LATENT HEAT FLUX USING T1 CALCULATED IN |
---|
3912 | ! PENMAN. |
---|
3913 | ! ---------------------------------------------------------------------- |
---|
3914 | DSOIL = -(0.5 * ZSOIL(1)) |
---|
3915 | DTOT = SNOWH + DSOIL |
---|
3916 | DENOM = 1.0 + DF1 / (DTOT * RR * RCH) |
---|
3917 | ! T12A = ( (FDOWN-FLX1-FLX2-SIGMA*T24)/RCH |
---|
3918 | ! & + TH2 - SFCTMP - BETA*EPSCA ) / RR |
---|
3919 | ! T12A = ( (FDOWN-FLX1-FLX2-SIGMA*T24)/RCH |
---|
3920 | ! M.Ek, 24Nov04, add snow emissivity |
---|
3921 | T12A = ((FDOWN-FLX1-FLX2 & |
---|
3922 | & -(0.95*SNCOVR+(1.0-SNCOVR))*SIGMA*T24)/RCH & |
---|
3923 | & + TH2 - SFCTMP - ETANRG/RCH ) / RR |
---|
3924 | T12B = DF1 * STC(1) / (DTOT * RR * RCH) |
---|
3925 | T12 = (SFCTMP + T12A + T12B) / DENOM |
---|
3926 | |
---|
3927 | ! ---------------------------------------------------------------------- |
---|
3928 | ! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS AT OR BELOW FREEZING, NO SNOW |
---|
3929 | ! MELT WILL OCCUR. SET THE SKIN TEMP TO THIS EFFECTIVE TEMP. REDUCE |
---|
3930 | ! (BY SUBLIMINATION ) OR INCREASE (BY FROST) THE DEPTH OF THE SNOWPACK, |
---|
3931 | ! DEPENDING ON SIGN OF ETP. |
---|
3932 | ! UPDATE SOIL HEAT FLUX (SSOIL) USING NEW SKIN TEMPERATURE (T1) |
---|
3933 | ! SINCE NO SNOWMELT, SET ACCUMULATED SNOWMELT TO ZERO, SET 'EFFECTIVE' |
---|
3934 | ! PRECIP FROM SNOWMELT TO ZERO, SET PHASE-CHANGE HEAT FLUX FROM SNOWMELT |
---|
3935 | ! TO ZERO. |
---|
3936 | ! ---------------------------------------------------------------------- |
---|
3937 | IF (T12 .LE. TFREEZ) THEN |
---|
3938 | T1 = T12 |
---|
3939 | SSOIL = DF1 * (T1 - STC(1)) / DTOT |
---|
3940 | ! ESD = MAX(0.0, ESD-ETP2) |
---|
3941 | ESD = MAX(0.0, ESD-ESNOW2) |
---|
3942 | FLX3 = 0.0 |
---|
3943 | EX = 0.0 |
---|
3944 | SNOMLT = 0.0 |
---|
3945 | |
---|
3946 | ELSE |
---|
3947 | ! ---------------------------------------------------------------------- |
---|
3948 | ! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS ABOVE FREEZING, SNOW MELT |
---|
3949 | ! WILL OCCUR. CALL THE SNOW MELT RATE,EX AND AMT, SNOMLT. REVISE THE |
---|
3950 | ! EFFECTIVE SNOW DEPTH. REVISE THE SKIN TEMP BECAUSE IT WOULD HAVE CHGD |
---|
3951 | ! DUE TO THE LATENT HEAT RELEASED BY THE MELTING. CALC THE LATENT HEAT |
---|
3952 | ! RELEASED, FLX3. SET THE EFFECTIVE PRECIP, PRCP1 TO THE SNOW MELT RATE, |
---|
3953 | ! EX FOR USE IN SMFLX. ADJUSTMENT TO T1 TO ACCOUNT FOR SNOW PATCHES. |
---|
3954 | ! CALCULATE QSAT VALID AT FREEZING POINT. NOTE THAT ESAT (SATURATION |
---|
3955 | ! VAPOR PRESSURE) VALUE OF 6.11E+2 USED HERE IS THAT VALID AT FRZZING |
---|
3956 | ! POINT. NOTE THAT ETP FROM CALL PENMAN IN SFLX IS IGNORED HERE IN |
---|
3957 | ! FAVOR OF BULK ETP OVER 'OPEN WATER' AT FREEZING TEMP. |
---|
3958 | ! UPDATE SOIL HEAT FLUX (S) USING NEW SKIN TEMPERATURE (T1) |
---|
3959 | ! ---------------------------------------------------------------------- |
---|
3960 | ! T1 = TFREEZ * SNCOVR + T12 * (1.0 - SNCOVR) |
---|
3961 | ! mek Feb2004 |
---|
3962 | ! non-linear weighting of snow vs non-snow covered portions of gridbox |
---|
3963 | ! so with SNOEXP = 2.0 (>1), surface skin temperature is higher than for |
---|
3964 | ! the linear case (SNOEXP = 1). |
---|
3965 | T1 = TFREEZ * SNCOVR**SNOEXP + T12 * (1.0 - SNCOVR**SNOEXP) |
---|
3966 | ! QSAT = (0.622*6.11E2)/(SFCPRS-0.378*6.11E2) |
---|
3967 | ! ETP = RCH*(QSAT-Q2)/CP |
---|
3968 | ! ETP2 = ETP*0.001*DT |
---|
3969 | BETA = 1.0 |
---|
3970 | SSOIL = DF1 * (T1 - STC(1)) / DTOT |
---|
3971 | |
---|
3972 | ! ---------------------------------------------------------------------- |
---|
3973 | ! IF POTENTIAL EVAP (SUBLIMATION) GREATER THAN DEPTH OF SNOWPACK. |
---|
3974 | ! BETA<1 |
---|
3975 | ! SNOWPACK HAS SUBLIMATED AWAY, SET DEPTH TO ZERO. |
---|
3976 | ! ---------------------------------------------------------------------- |
---|
3977 | ! IF (ESD .LE. ETP2) THEN |
---|
3978 | ! IF (ESD .LE. ESNOW2) THEN |
---|
3979 | IF (ESD-ESNOW2 .LE. ESDMIN) THEN |
---|
3980 | ! BETA = ESD / ETP2 |
---|
3981 | ESD = 0.0 |
---|
3982 | EX = 0.0 |
---|
3983 | SNOMLT = 0.0 |
---|
3984 | |
---|
3985 | ELSE |
---|
3986 | ! ---------------------------------------------------------------------- |
---|
3987 | ! POTENTIAL EVAP (SUBLIMATION) LESS THAN DEPTH OF SNOWPACK, RETAIN |
---|
3988 | ! BETA=1. |
---|
3989 | ! SNOWPACK (ESD) REDUCED BY POTENTIAL EVAP RATE |
---|
3990 | ! ETP3 (CONVERT TO FLUX) |
---|
3991 | ! ---------------------------------------------------------------------- |
---|
3992 | ! ESD = ESD-ETP2 |
---|
3993 | ESD = ESD-ESNOW2 |
---|
3994 | ! ETP3 = ETP*LSUBC |
---|
3995 | SEH = RCH*(T1-TH2) |
---|
3996 | T14 = T1*T1 |
---|
3997 | T14 = T14*T14 |
---|
3998 | ! FLX3 = FDOWN - FLX1 - FLX2 - SIGMA*T14 - SSOIL - SEH - ETP3 |
---|
3999 | ! FLX3 = FDOWN - FLX1 - FLX2 - SIGMA*T14 - SSOIL - SEH - ETANRG |
---|
4000 | ! M.Ek, 24Nov04, add snow emissivity |
---|
4001 | FLX3 = FDOWN - FLX1 - FLX2 - & |
---|
4002 | & (0.95*SNCOVR+(1.0-SNCOVR))*SIGMA*T14 - SSOIL - SEH - ETANRG |
---|
4003 | IF (FLX3 .LE. 0.0) FLX3 = 0.0 |
---|
4004 | EX = FLX3*0.001/LSUBF |
---|
4005 | |
---|
4006 | ! ---------------------------------------------------------------------- |
---|
4007 | ! SNOWMELT REDUCTION DEPENDING ON SNOW COVER |
---|
4008 | ! IF SNOW COVER LESS THAN 5% NO SNOWMELT REDUCTION |
---|
4009 | ! ***NOTE: DOES 'IF' BELOW FAIL TO MATCH THE MELT WATER WITH THE MELT |
---|
4010 | ! ENERGY? |
---|
4011 | ! ---------------------------------------------------------------------- |
---|
4012 | ! IF (SNCOVR .GT. 0.05) EX = EX * SNCOVR |
---|
4013 | SNOMLT = EX * DT |
---|
4014 | |
---|
4015 | ! ---------------------------------------------------------------------- |
---|
4016 | ! ESDMIN REPRESENTS A SNOWPACK DEPTH THRESHOLD VALUE BELOW WHICH WE |
---|
4017 | ! CHOOSE NOT TO RETAIN ANY SNOWPACK, AND INSTEAD INCLUDE IT IN SNOWMELT. |
---|
4018 | ! ---------------------------------------------------------------------- |
---|
4019 | IF (ESD-SNOMLT .GE. ESDMIN) THEN |
---|
4020 | ESD = ESD - SNOMLT |
---|
4021 | |
---|
4022 | ELSE |
---|
4023 | ! ---------------------------------------------------------------------- |
---|
4024 | ! SNOWMELT EXCEEDS SNOW DEPTH |
---|
4025 | ! ---------------------------------------------------------------------- |
---|
4026 | EX = ESD/DT |
---|
4027 | FLX3 = EX*1000.0*LSUBF |
---|
4028 | SNOMLT = ESD |
---|
4029 | ESD = 0.0 |
---|
4030 | |
---|
4031 | ENDIF |
---|
4032 | ! ---------------------------------------------------------------------- |
---|
4033 | ! END OF 'ESD .LE. ETP2' IF-BLOCK |
---|
4034 | ! ---------------------------------------------------------------------- |
---|
4035 | ENDIF |
---|
4036 | |
---|
4037 | PRCP1 = PRCP1 + EX |
---|
4038 | |
---|
4039 | ! ---------------------------------------------------------------------- |
---|
4040 | ! END OF 'T12 .LE. TFREEZ' IF-BLOCK |
---|
4041 | ! ---------------------------------------------------------------------- |
---|
4042 | ENDIF |
---|
4043 | |
---|
4044 | ! ---------------------------------------------------------------------- |
---|
4045 | ! FINAL BETA NOW IN HAND, SO COMPUTE EVAPORATION. EVAP EQUALS ETP |
---|
4046 | ! UNLESS BETA<1. |
---|
4047 | ! ---------------------------------------------------------------------- |
---|
4048 | ! ETA = BETA*ETP |
---|
4049 | |
---|
4050 | ! ---------------------------------------------------------------------- |
---|
4051 | ! SET THE EFFECTIVE POTNL EVAPOTRANSP (ETP1) TO ZERO SINCE THIS IS SNOW |
---|
4052 | ! CASE, SO SURFACE EVAP NOT CALCULATED FROM EDIR, EC, OR ETT IN SMFLX |
---|
4053 | ! (BELOW). |
---|
4054 | ! IF SEAICE (ICE=1) SKIP CALL TO SMFLX. |
---|
4055 | ! SMFLX RETURNS UPDATED SOIL MOISTURE VALUES. IN THIS, THE SNOW PACK |
---|
4056 | ! CASE, ETA1 IS NOT USED IN CALCULATION OF EVAP. |
---|
4057 | ! ---------------------------------------------------------------------- |
---|
4058 | ! ETP1 = 0.0 |
---|
4059 | IF (ICE .NE. 1) THEN |
---|
4060 | ! CALL EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, |
---|
4061 | ! & SH2O,SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, |
---|
4062 | ! & SMCREF,SHDFAC,CMCMAX, |
---|
4063 | ! & SMCDRY,CFACTR, |
---|
4064 | ! & EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS,FXEXP) |
---|
4065 | CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & |
---|
4066 | & SH2O,SLOPE,KDT,FRZFACT, & |
---|
4067 | & SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & |
---|
4068 | & SHDFAC,CMCMAX, & |
---|
4069 | & RUNOFF1,RUNOFF2,RUNOFF3, & |
---|
4070 | & EDIR1,EC1,ET1, & |
---|
4071 | & DRIP) |
---|
4072 | |
---|
4073 | ENDIF |
---|
4074 | |
---|
4075 | ! ---------------------------------------------------------------------- |
---|
4076 | ! EDIR = EDIR1 * 1000.0 |
---|
4077 | ! EC = EC1 * 1000.0 |
---|
4078 | ! ETT = ETT1 * 1000.0 |
---|
4079 | ! ET(1) = ET1(1) * 1000.0 |
---|
4080 | ! ET(2) = ET1(2) * 1000.0 |
---|
4081 | ! ET(3) = ET1(3) * 1000.0 |
---|
4082 | ! ET(4) = ET1(4) * 1000.0 |
---|
4083 | ! ---------------------------------------------------------------------- |
---|
4084 | |
---|
4085 | ! ---------------------------------------------------------------------- |
---|
4086 | ! BEFORE CALL SHFLX IN THIS SNOWPACK CASE, SET ZZ1 AND YY ARGUMENTS TO |
---|
4087 | ! SPECIAL VALUES THAT ENSURE THAT GROUND HEAT FLUX CALCULATED IN SHFLX |
---|
4088 | ! MATCHES THAT ALREADY COMPUTER FOR BELOW THE SNOWPACK, THUS THE SFC |
---|
4089 | ! HEAT FLUX TO BE COMPUTED IN SHFLX WILL EFFECTIVELY BE THE FLUX AT THE |
---|
4090 | ! SNOW TOP SURFACE. T11 IS A DUMMY ARGUEMENT SO WE WILL NOT USE THE |
---|
4091 | ! SKIN TEMP VALUE AS REVISED BY SHFLX. |
---|
4092 | ! ---------------------------------------------------------------------- |
---|
4093 | ZZ1 = 1.0 |
---|
4094 | YY = STC(1)-0.5*SSOIL*ZSOIL(1)*ZZ1/DF1 |
---|
4095 | T11 = T1 |
---|
4096 | |
---|
4097 | ! ---------------------------------------------------------------------- |
---|
4098 | ! SHFLX WILL CALC/UPDATE THE SOIL TEMPS. NOTE: THE SUB-SFC HEAT FLUX |
---|
4099 | ! (SSOIL1) AND THE SKIN TEMP (T11) OUTPUT FROM THIS SHFLX CALL ARE NOT |
---|
4100 | ! USED IN ANY SUBSEQUENT CALCULATIONS. RATHER, THEY ARE DUMMY VARIABLES |
---|
4101 | ! HERE IN THE SNOPAC CASE, SINCE THE SKIN TEMP AND SUB-SFC HEAT FLUX ARE |
---|
4102 | ! UPDATED INSTEAD NEAR THE BEGINNING OF THE CALL TO SNOPAC. |
---|
4103 | ! ---------------------------------------------------------------------- |
---|
4104 | CALL SHFLX (SSOIL1,STC,SMC,SMCMAX,NSOIL,T11,DT,YY,ZZ1,ZSOIL, & |
---|
4105 | & TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1,ICE, & |
---|
4106 | & QUARTZ,CSOIL) |
---|
4107 | |
---|
4108 | ! ---------------------------------------------------------------------- |
---|
4109 | ! SNOW DEPTH AND DENSITY ADJUSTMENT BASED ON SNOW COMPACTION. YY IS |
---|
4110 | ! ASSUMED TO BE THE SOIL TEMPERTURE AT THE TOP OF THE SOIL COLUMN. |
---|
4111 | ! ---------------------------------------------------------------------- |
---|
4112 | IF (ESD .GT. 0.) THEN |
---|
4113 | CALL SNOWPACK (ESD,DT,SNOWH,SNDENS,T1,YY) |
---|
4114 | ELSE |
---|
4115 | ESD = 0. |
---|
4116 | SNOWH = 0. |
---|
4117 | SNDENS = 0. |
---|
4118 | SNCOND = 1. |
---|
4119 | SNCOVR = 0. |
---|
4120 | ENDIF |
---|
4121 | |
---|
4122 | ! ---------------------------------------------------------------------- |
---|
4123 | ! END SUBROUTINE SNOPAC |
---|
4124 | ! ---------------------------------------------------------------------- |
---|
4125 | END SUBROUTINE SNOPAC |
---|
4126 | |
---|
4127 | SUBROUTINE SNOWPACK (ESD,DTSEC,SNOWH,SNDENS,TSNOW,TSOIL) |
---|
4128 | |
---|
4129 | IMPLICIT NONE |
---|
4130 | |
---|
4131 | ! ---------------------------------------------------------------------- |
---|
4132 | ! SUBROUTINE SNOWPACK |
---|
4133 | ! ---------------------------------------------------------------------- |
---|
4134 | ! CALCULATE COMPACTION OF SNOWPACK UNDER CONDITIONS OF INCREASING SNOW |
---|
4135 | ! DENSITY, AS OBTAINED FROM AN APPROXIMATE SOLUTION OF E. ANDERSON'S |
---|
4136 | ! DIFFERENTIAL EQUATION (3.29), NOAA TECHNICAL REPORT NWS 19, BY VICTOR |
---|
4137 | ! KOREN, 03/25/95. |
---|
4138 | ! ---------------------------------------------------------------------- |
---|
4139 | ! ESD WATER EQUIVALENT OF SNOW (M) |
---|
4140 | ! DTSEC TIME STEP (SEC) |
---|
4141 | ! SNOWH SNOW DEPTH (M) |
---|
4142 | ! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) |
---|
4143 | ! TSNOW SNOW SURFACE TEMPERATURE (K) |
---|
4144 | ! TSOIL SOIL SURFACE TEMPERATURE (K) |
---|
4145 | ! |
---|
4146 | ! SUBROUTINE WILL RETURN NEW VALUES OF SNOWH AND SNDENS |
---|
4147 | ! ---------------------------------------------------------------------- |
---|
4148 | INTEGER IPOL, J |
---|
4149 | |
---|
4150 | REAL BFAC,C1,C2,SNDENS,DSX,DTHR,DTSEC,DW,SNOWHC,SNOWH,PEXP,TAVGC, & |
---|
4151 | & TSNOW,TSNOWC,TSOIL,TSOILC,ESD,ESDC,ESDCX,G,KN |
---|
4152 | |
---|
4153 | PARAMETER(C1 = 0.01, C2=21.0, G=9.81, KN=4000.0) |
---|
4154 | |
---|
4155 | ! ---------------------------------------------------------------------- |
---|
4156 | ! CONVERSION INTO SIMULATION UNITS |
---|
4157 | ! ---------------------------------------------------------------------- |
---|
4158 | SNOWHC = SNOWH*100. |
---|
4159 | ESDC = ESD*100. |
---|
4160 | DTHR = DTSEC/3600. |
---|
4161 | TSNOWC = TSNOW-273.15 |
---|
4162 | TSOILC = TSOIL-273.15 |
---|
4163 | |
---|
4164 | ! ---------------------------------------------------------------------- |
---|
4165 | ! CALCULATING OF AVERAGE TEMPERATURE OF SNOW PACK |
---|
4166 | ! ---------------------------------------------------------------------- |
---|
4167 | TAVGC = 0.5*(TSNOWC+TSOILC) |
---|
4168 | |
---|
4169 | ! ---------------------------------------------------------------------- |
---|
4170 | ! CALCULATING OF SNOW DEPTH AND DENSITY AS A RESULT OF COMPACTION |
---|
4171 | ! SNDENS=DS0*(EXP(BFAC*ESD)-1.)/(BFAC*ESD) |
---|
4172 | ! BFAC=DTHR*C1*EXP(0.08*TAVGC-C2*DS0) |
---|
4173 | ! NOTE: BFAC*ESD IN SNDENS EQN ABOVE HAS TO BE CAREFULLY TREATED |
---|
4174 | ! NUMERICALLY BELOW: |
---|
4175 | ! C1 IS THE FRACTIONAL INCREASE IN DENSITY (1/(CM*HR)) |
---|
4176 | ! C2 IS A CONSTANT (CM3/G) KOJIMA ESTIMATED AS 21 CMS/G |
---|
4177 | ! ---------------------------------------------------------------------- |
---|
4178 | IF (ESDC .GT. 1.E-2) THEN |
---|
4179 | ESDCX = ESDC |
---|
4180 | ELSE |
---|
4181 | ESDCX = 1.E-2 |
---|
4182 | ENDIF |
---|
4183 | BFAC = DTHR*C1*EXP(0.08*TAVGC-C2*SNDENS) |
---|
4184 | |
---|
4185 | ! DSX = SNDENS*((DEXP(BFAC*ESDC)-1.)/(BFAC*ESDC)) |
---|
4186 | ! ---------------------------------------------------------------------- |
---|
4187 | ! THE FUNCTION OF THE FORM (e**x-1)/x IMBEDDED IN ABOVE EXPRESSION |
---|
4188 | ! FOR DSX WAS CAUSING NUMERICAL DIFFICULTIES WHEN THE DENOMINATOR "x" |
---|
4189 | ! (I.E. BFAC*ESDC) BECAME ZERO OR APPROACHED ZERO (DESPITE THE FACT THAT |
---|
4190 | ! THE ANALYTICAL FUNCTION (e**x-1)/x HAS A WELL DEFINED LIMIT AS |
---|
4191 | ! "x" APPROACHES ZERO), HENCE BELOW WE REPLACE THE (e**x-1)/x |
---|
4192 | ! EXPRESSION WITH AN EQUIVALENT, NUMERICALLY WELL-BEHAVED |
---|
4193 | ! POLYNOMIAL EXPANSION. |
---|
4194 | ! |
---|
4195 | ! NUMBER OF TERMS OF POLYNOMIAL EXPANSION, AND HENCE ITS ACCURACY, |
---|
4196 | ! IS GOVERNED BY ITERATION LIMIT "IPOL". |
---|
4197 | ! IPOL GREATER THAN 9 ONLY MAKES A DIFFERENCE ON DOUBLE |
---|
4198 | ! PRECISION (RELATIVE ERRORS GIVEN IN PERCENT %). |
---|
4199 | ! IPOL=9, FOR REL.ERROR <~ 1.6 E-6 % (8 SIGNIFICANT DIGITS) |
---|
4200 | ! IPOL=8, FOR REL.ERROR <~ 1.8 E-5 % (7 SIGNIFICANT DIGITS) |
---|
4201 | ! IPOL=7, FOR REL.ERROR <~ 1.8 E-4 % ... |
---|
4202 | ! ---------------------------------------------------------------------- |
---|
4203 | IPOL = 4 |
---|
4204 | PEXP = 0. |
---|
4205 | DO J = IPOL,1,-1 |
---|
4206 | ! PEXP = (1. + PEXP)*BFAC*ESDC/REAL(J+1) |
---|
4207 | PEXP = (1. + PEXP)*BFAC*ESDCX/REAL(J+1) |
---|
4208 | END DO |
---|
4209 | PEXP = PEXP + 1. |
---|
4210 | |
---|
4211 | DSX = SNDENS*(PEXP) |
---|
4212 | ! ---------------------------------------------------------------------- |
---|
4213 | ! ABOVE LINE ENDS POLYNOMIAL SUBSTITUTION |
---|
4214 | ! ---------------------------------------------------------------------- |
---|
4215 | ! END OF KOREAN FORMULATION |
---|
4216 | |
---|
4217 | ! BASE FORMULATION (COGLEY ET AL., 1990) |
---|
4218 | ! CONVERT DENSITY FROM G/CM3 TO KG/M3 |
---|
4219 | ! DSM=SNDENS*1000.0 |
---|
4220 | |
---|
4221 | ! DSX=DSM+DTSEC*0.5*DSM*G*ESD/ |
---|
4222 | ! & (1E7*EXP(-0.02*DSM+KN/(TAVGC+273.16)-14.643)) |
---|
4223 | |
---|
4224 | ! CONVERT DENSITY FROM KG/M3 TO G/CM3 |
---|
4225 | ! DSX=DSX/1000.0 |
---|
4226 | |
---|
4227 | ! END OF COGLEY ET AL. FORMULATION |
---|
4228 | |
---|
4229 | ! ---------------------------------------------------------------------- |
---|
4230 | ! SET UPPER/LOWER LIMIT ON SNOW DENSITY |
---|
4231 | ! ---------------------------------------------------------------------- |
---|
4232 | IF (DSX .GT. 0.40) DSX = 0.40 |
---|
4233 | IF (DSX .LT. 0.05) DSX = 0.05 |
---|
4234 | SNDENS = DSX |
---|
4235 | ! ---------------------------------------------------------------------- |
---|
4236 | ! UPDATE OF SNOW DEPTH AND DENSITY DEPENDING ON LIQUID WATER DURING |
---|
4237 | ! SNOWMELT. ASSUMED THAT 13% OF LIQUID WATER CAN BE STORED IN SNOW PER |
---|
4238 | ! DAY DURING SNOWMELT TILL SNOW DENSITY 0.40. |
---|
4239 | ! ---------------------------------------------------------------------- |
---|
4240 | IF (TSNOWC .GE. 0.) THEN |
---|
4241 | DW = 0.13*DTHR/24. |
---|
4242 | SNDENS = SNDENS*(1.-DW)+DW |
---|
4243 | IF (SNDENS .GT. 0.40) SNDENS = 0.40 |
---|
4244 | ENDIF |
---|
4245 | |
---|
4246 | ! ---------------------------------------------------------------------- |
---|
4247 | ! CALCULATE SNOW DEPTH (CM) FROM SNOW WATER EQUIVALENT AND SNOW DENSITY. |
---|
4248 | ! CHANGE SNOW DEPTH UNITS TO METERS |
---|
4249 | ! ---------------------------------------------------------------------- |
---|
4250 | SNOWHC = ESDC/SNDENS |
---|
4251 | SNOWH = SNOWHC*0.01 |
---|
4252 | |
---|
4253 | ! ---------------------------------------------------------------------- |
---|
4254 | ! END SUBROUTINE SNOWPACK |
---|
4255 | ! ---------------------------------------------------------------------- |
---|
4256 | END SUBROUTINE SNOWPACK |
---|
4257 | |
---|
4258 | SUBROUTINE SNOWZ0 (SNCOVR,Z0) |
---|
4259 | |
---|
4260 | IMPLICIT NONE |
---|
4261 | |
---|
4262 | ! ---------------------------------------------------------------------- |
---|
4263 | ! SUBROUTINE SNOWZ0 |
---|
4264 | ! ---------------------------------------------------------------------- |
---|
4265 | ! CALCULATE TOTAL ROUGHNESS LENGTH OVER SNOW |
---|
4266 | ! SNCOVR FRACTIONAL SNOW COVER |
---|
4267 | ! Z0 ROUGHNESS LENGTH (m) |
---|
4268 | ! Z0S SNOW ROUGHNESS LENGTH:=0.001 (m) |
---|
4269 | ! ---------------------------------------------------------------------- |
---|
4270 | REAL SNCOVR, Z0, Z0S |
---|
4271 | ! PARAMETER (Z0S=0.001) |
---|
4272 | |
---|
4273 | ! CURRENT NOAH LSM CONDITION - MBEK, 09-OCT-2001 |
---|
4274 | Z0S = Z0 |
---|
4275 | ! |
---|
4276 | Z0 = (1-SNCOVR)*Z0 + SNCOVR*Z0S |
---|
4277 | ! ---------------------------------------------------------------------- |
---|
4278 | ! END SUBROUTINE SNOWZ0 |
---|
4279 | ! ---------------------------------------------------------------------- |
---|
4280 | END SUBROUTINE SNOWZ0 |
---|
4281 | |
---|
4282 | SUBROUTINE SNOW_NEW (TEMP,NEWSN,SNOWH,SNDENS) |
---|
4283 | |
---|
4284 | IMPLICIT NONE |
---|
4285 | |
---|
4286 | ! ---------------------------------------------------------------------- |
---|
4287 | ! SUBROUTINE SNOW_NEW |
---|
4288 | ! ---------------------------------------------------------------------- |
---|
4289 | ! CALCULATE SNOW DEPTH AND DENSITITY TO ACCOUNT FOR THE NEW SNOWFALL. |
---|
4290 | ! NEW VALUES OF SNOW DEPTH & DENSITY RETURNED. |
---|
4291 | ! |
---|
4292 | ! TEMP AIR TEMPERATURE (K) |
---|
4293 | ! NEWSN NEW SNOWFALL (M) |
---|
4294 | ! SNOWH SNOW DEPTH (M) |
---|
4295 | ! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) |
---|
4296 | ! ---------------------------------------------------------------------- |
---|
4297 | REAL SNDENS |
---|
4298 | REAL DSNEW |
---|
4299 | REAL SNOWHC |
---|
4300 | REAL HNEWC |
---|
4301 | REAL SNOWH |
---|
4302 | REAL NEWSN |
---|
4303 | REAL NEWSNC |
---|
4304 | REAL TEMP |
---|
4305 | REAL TEMPC |
---|
4306 | |
---|
4307 | ! ---------------------------------------------------------------------- |
---|
4308 | ! CONVERSION INTO SIMULATION UNITS |
---|
4309 | ! ---------------------------------------------------------------------- |
---|
4310 | SNOWHC = SNOWH*100. |
---|
4311 | NEWSNC = NEWSN*100. |
---|
4312 | TEMPC = TEMP-273.15 |
---|
4313 | |
---|
4314 | ! ---------------------------------------------------------------------- |
---|
4315 | ! CALCULATING NEW SNOWFALL DENSITY DEPENDING ON TEMPERATURE |
---|
4316 | ! EQUATION FROM GOTTLIB L. 'A GENERAL RUNOFF MODEL FOR SNOWCOVERED |
---|
4317 | ! AND GLACIERIZED BASIN', 6TH NORDIC HYDROLOGICAL CONFERENCE, |
---|
4318 | ! VEMADOLEN, SWEDEN, 1980, 172-177PP. |
---|
4319 | !----------------------------------------------------------------------- |
---|
4320 | IF (TEMPC .LE. -15.) THEN |
---|
4321 | DSNEW = 0.05 |
---|
4322 | ELSE |
---|
4323 | DSNEW = 0.05+0.0017*(TEMPC+15.)**1.5 |
---|
4324 | ENDIF |
---|
4325 | |
---|
4326 | ! ---------------------------------------------------------------------- |
---|
4327 | ! ADJUSTMENT OF SNOW DENSITY DEPENDING ON NEW SNOWFALL |
---|
4328 | ! ---------------------------------------------------------------------- |
---|
4329 | HNEWC = NEWSNC/DSNEW |
---|
4330 | SNDENS = (SNOWHC*SNDENS+HNEWC*DSNEW)/(SNOWHC+HNEWC) |
---|
4331 | SNOWHC = SNOWHC+HNEWC |
---|
4332 | SNOWH = SNOWHC*0.01 |
---|
4333 | |
---|
4334 | ! ---------------------------------------------------------------------- |
---|
4335 | ! END SUBROUTINE SNOW_NEW |
---|
4336 | ! ---------------------------------------------------------------------- |
---|
4337 | END SUBROUTINE SNOW_NEW |
---|
4338 | |
---|
4339 | SUBROUTINE SRT (RHSTT,EDIR,ET,SH2O,SH2OA,NSOIL,PCPDRP, & |
---|
4340 | & ZSOIL,DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & |
---|
4341 | & RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZX,SICE,AI,BI,CI) |
---|
4342 | |
---|
4343 | IMPLICIT NONE |
---|
4344 | |
---|
4345 | ! ---------------------------------------------------------------------- |
---|
4346 | ! SUBROUTINE SRT |
---|
4347 | ! ---------------------------------------------------------------------- |
---|
4348 | ! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL |
---|
4349 | ! WATER DIFFUSION EQUATION. ALSO TO COMPUTE ( PREPARE ) THE MATRIX |
---|
4350 | ! COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. |
---|
4351 | ! ---------------------------------------------------------------------- |
---|
4352 | INTEGER NSOLD |
---|
4353 | PARAMETER(NSOLD = 20) |
---|
4354 | |
---|
4355 | INTEGER CVFRZ |
---|
4356 | INTEGER IALP1 |
---|
4357 | INTEGER IOHINF |
---|
4358 | INTEGER J |
---|
4359 | INTEGER JJ |
---|
4360 | INTEGER K |
---|
4361 | INTEGER KS |
---|
4362 | INTEGER NSOIL |
---|
4363 | |
---|
4364 | REAL ACRT |
---|
4365 | REAL AI(NSOLD) |
---|
4366 | REAL BEXP |
---|
4367 | REAL BI(NSOLD) |
---|
4368 | REAL CI(NSOLD) |
---|
4369 | REAL DD |
---|
4370 | REAL DDT |
---|
4371 | REAL DDZ |
---|
4372 | REAL DDZ2 |
---|
4373 | REAL DENOM |
---|
4374 | REAL DENOM2 |
---|
4375 | REAL DICE |
---|
4376 | REAL DKSAT |
---|
4377 | REAL DMAX(NSOLD) |
---|
4378 | REAL DSMDZ |
---|
4379 | REAL DSMDZ2 |
---|
4380 | REAL DT |
---|
4381 | REAL DT1 |
---|
4382 | REAL DWSAT |
---|
4383 | REAL EDIR |
---|
4384 | REAL ET(NSOIL) |
---|
4385 | REAL FCR |
---|
4386 | REAL FRZX |
---|
4387 | REAL INFMAX |
---|
4388 | REAL KDT |
---|
4389 | REAL MXSMC |
---|
4390 | REAL MXSMC2 |
---|
4391 | REAL NUMER |
---|
4392 | REAL PCPDRP |
---|
4393 | REAL PDDUM |
---|
4394 | REAL PX |
---|
4395 | REAL RHSTT(NSOIL) |
---|
4396 | REAL RUNOFF1 |
---|
4397 | REAL RUNOFF2 |
---|
4398 | REAL SH2O(NSOIL) |
---|
4399 | REAL SH2OA(NSOIL) |
---|
4400 | REAL SICE(NSOIL) |
---|
4401 | REAL SICEMAX |
---|
4402 | REAL SLOPE |
---|
4403 | REAL SLOPX |
---|
4404 | REAL SMCAV |
---|
4405 | REAL SMCMAX |
---|
4406 | REAL SMCWLT |
---|
4407 | REAL SSTT |
---|
4408 | REAL SUM |
---|
4409 | REAL VAL |
---|
4410 | REAL WCND |
---|
4411 | REAL WCND2 |
---|
4412 | REAL WDF |
---|
4413 | REAL WDF2 |
---|
4414 | REAL ZSOIL(NSOIL) |
---|
4415 | |
---|
4416 | ! ---------------------------------------------------------------------- |
---|
4417 | ! FROZEN GROUND VERSION: |
---|
4418 | ! REFERENCE FROZEN GROUND PARAMETER, CVFRZ, IS A SHAPE PARAMETER OF |
---|
4419 | ! AREAL DISTRIBUTION FUNCTION OF SOIL ICE CONTENT WHICH EQUALS 1/CV. |
---|
4420 | ! CV IS A COEFFICIENT OF SPATIAL VARIATION OF SOIL ICE CONTENT. BASED |
---|
4421 | ! ON FIELD DATA CV DEPENDS ON AREAL MEAN OF FROZEN DEPTH, AND IT CLOSE |
---|
4422 | ! TO CONSTANT = 0.6 IF AREAL MEAN FROZEN DEPTH IS ABOVE 20 CM. THAT IS |
---|
4423 | ! WHY PARAMETER CVFRZ = 3 (INT{1/0.6*0.6}). |
---|
4424 | ! CURRENT LOGIC DOESN'T ALLOW CVFRZ BE BIGGER THAN 3 |
---|
4425 | ! ---------------------------------------------------------------------- |
---|
4426 | PARAMETER(CVFRZ = 3) |
---|
4427 | |
---|
4428 | ! ---------------------------------------------------------------------- |
---|
4429 | ! DETERMINE RAINFALL INFILTRATION RATE AND RUNOFF. INCLUDE THE |
---|
4430 | ! INFILTRATION FORMULE FROM SCHAAKE AND KOREN MODEL. |
---|
4431 | ! MODIFIED BY Q DUAN |
---|
4432 | ! ---------------------------------------------------------------------- |
---|
4433 | IOHINF=1 |
---|
4434 | |
---|
4435 | ! ---------------------------------------------------------------------- |
---|
4436 | ! LET SICEMAX BE THE GREATEST, IF ANY, FROZEN WATER CONTENT WITHIN SOIL |
---|
4437 | ! LAYERS. |
---|
4438 | ! ---------------------------------------------------------------------- |
---|
4439 | SICEMAX = 0.0 |
---|
4440 | DO KS=1,NSOIL |
---|
4441 | IF (SICE(KS) .GT. SICEMAX) SICEMAX = SICE(KS) |
---|
4442 | END DO |
---|
4443 | |
---|
4444 | ! ---------------------------------------------------------------------- |
---|
4445 | ! DETERMINE RAINFALL INFILTRATION RATE AND RUNOFF |
---|
4446 | ! ---------------------------------------------------------------------- |
---|
4447 | PDDUM = PCPDRP |
---|
4448 | RUNOFF1 = 0.0 |
---|
4449 | IF (PCPDRP .NE. 0.0) THEN |
---|
4450 | |
---|
4451 | ! ---------------------------------------------------------------------- |
---|
4452 | ! MODIFIED BY Q. DUAN, 5/16/94 |
---|
4453 | ! ---------------------------------------------------------------------- |
---|
4454 | ! IF (IOHINF .EQ. 1) THEN |
---|
4455 | |
---|
4456 | DT1 = DT/86400. |
---|
4457 | SMCAV = SMCMAX - SMCWLT |
---|
4458 | DMAX(1)=-ZSOIL(1)*SMCAV |
---|
4459 | |
---|
4460 | ! ---------------------------------------------------------------------- |
---|
4461 | ! FROZEN GROUND VERSION: |
---|
4462 | ! ---------------------------------------------------------------------- |
---|
4463 | DICE = -ZSOIL(1) * SICE(1) |
---|
4464 | |
---|
4465 | DMAX(1)=DMAX(1)*(1.0 - (SH2OA(1)+SICE(1)-SMCWLT)/SMCAV) |
---|
4466 | DD=DMAX(1) |
---|
4467 | |
---|
4468 | DO KS=2,NSOIL |
---|
4469 | |
---|
4470 | ! ---------------------------------------------------------------------- |
---|
4471 | ! FROZEN GROUND VERSION: |
---|
4472 | ! ---------------------------------------------------------------------- |
---|
4473 | DICE = DICE + ( ZSOIL(KS-1) - ZSOIL(KS) ) * SICE(KS) |
---|
4474 | |
---|
4475 | DMAX(KS) = (ZSOIL(KS-1)-ZSOIL(KS))*SMCAV |
---|
4476 | DMAX(KS) = DMAX(KS)*(1.0 - (SH2OA(KS)+SICE(KS)-SMCWLT)/SMCAV) |
---|
4477 | DD = DD+DMAX(KS) |
---|
4478 | END DO |
---|
4479 | |
---|
4480 | ! ---------------------------------------------------------------------- |
---|
4481 | ! VAL = (1.-EXP(-KDT*SQRT(DT1))) |
---|
4482 | ! IN BELOW, REMOVE THE SQRT IN ABOVE |
---|
4483 | ! ---------------------------------------------------------------------- |
---|
4484 | VAL = (1.-EXP(-KDT*DT1)) |
---|
4485 | DDT = DD*VAL |
---|
4486 | PX = PCPDRP*DT |
---|
4487 | IF (PX .LT. 0.0) PX = 0.0 |
---|
4488 | INFMAX = (PX*(DDT/(PX+DDT)))/DT |
---|
4489 | |
---|
4490 | ! ---------------------------------------------------------------------- |
---|
4491 | ! FROZEN GROUND VERSION: |
---|
4492 | ! REDUCTION OF INFILTRATION BASED ON FROZEN GROUND PARAMETERS |
---|
4493 | ! ---------------------------------------------------------------------- |
---|
4494 | FCR = 1. |
---|
4495 | IF (DICE .GT. 1.E-2) THEN |
---|
4496 | ACRT = CVFRZ * FRZX / DICE |
---|
4497 | SUM = 1. |
---|
4498 | IALP1 = CVFRZ - 1 |
---|
4499 | DO J = 1,IALP1 |
---|
4500 | K = 1 |
---|
4501 | DO JJ = J+1,IALP1 |
---|
4502 | K = K * JJ |
---|
4503 | END DO |
---|
4504 | SUM = SUM + (ACRT ** ( CVFRZ-J)) / FLOAT (K) |
---|
4505 | END DO |
---|
4506 | FCR = 1. - EXP(-ACRT) * SUM |
---|
4507 | ENDIF |
---|
4508 | INFMAX = INFMAX * FCR |
---|
4509 | |
---|
4510 | ! ---------------------------------------------------------------------- |
---|
4511 | ! CORRECTION OF INFILTRATION LIMITATION: |
---|
4512 | ! IF INFMAX .LE. HYDROLIC CONDUCTIVITY ASSIGN INFMAX THE VALUE OF |
---|
4513 | ! HYDROLIC CONDUCTIVITY |
---|
4514 | ! ---------------------------------------------------------------------- |
---|
4515 | ! MXSMC = MAX ( SH2OA(1), SH2OA(2) ) |
---|
4516 | MXSMC = SH2OA(1) |
---|
4517 | |
---|
4518 | CALL WDFCND (WDF,WCND,MXSMC,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
4519 | & SICEMAX) |
---|
4520 | |
---|
4521 | INFMAX = MAX(INFMAX,WCND) |
---|
4522 | INFMAX = MIN(INFMAX,PX) |
---|
4523 | |
---|
4524 | IF (PCPDRP .GT. INFMAX) THEN |
---|
4525 | RUNOFF1 = PCPDRP - INFMAX |
---|
4526 | PDDUM = INFMAX |
---|
4527 | ENDIF |
---|
4528 | |
---|
4529 | ENDIF |
---|
4530 | |
---|
4531 | ! ---------------------------------------------------------------------- |
---|
4532 | ! TO AVOID SPURIOUS DRAINAGE BEHAVIOR, 'UPSTREAM DIFFERENCING' IN LINE |
---|
4533 | ! BELOW REPLACED WITH NEW APPROACH IN 2ND LINE: |
---|
4534 | ! 'MXSMC = MAX(SH2OA(1), SH2OA(2))' |
---|
4535 | ! ---------------------------------------------------------------------- |
---|
4536 | MXSMC = SH2OA(1) |
---|
4537 | |
---|
4538 | CALL WDFCND (WDF,WCND,MXSMC,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
4539 | & SICEMAX) |
---|
4540 | |
---|
4541 | ! ---------------------------------------------------------------------- |
---|
4542 | ! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER |
---|
4543 | ! ---------------------------------------------------------------------- |
---|
4544 | DDZ = 1. / ( -.5 * ZSOIL(2) ) |
---|
4545 | AI(1) = 0.0 |
---|
4546 | BI(1) = WDF * DDZ / ( -ZSOIL(1) ) |
---|
4547 | CI(1) = -BI(1) |
---|
4548 | |
---|
4549 | ! ---------------------------------------------------------------------- |
---|
4550 | ! CALC RHSTT FOR THE TOP LAYER AFTER CALC'NG THE VERTICAL SOIL MOISTURE |
---|
4551 | ! GRADIENT BTWN THE TOP AND NEXT TO TOP LAYERS. |
---|
4552 | ! ---------------------------------------------------------------------- |
---|
4553 | DSMDZ = ( SH2O(1) - SH2O(2) ) / ( -.5 * ZSOIL(2) ) |
---|
4554 | RHSTT(1) = (WDF * DSMDZ + WCND - PDDUM + EDIR + ET(1))/ZSOIL(1) |
---|
4555 | SSTT = WDF * DSMDZ + WCND + EDIR + ET(1) |
---|
4556 | |
---|
4557 | ! ---------------------------------------------------------------------- |
---|
4558 | ! INITIALIZE DDZ2 |
---|
4559 | ! ---------------------------------------------------------------------- |
---|
4560 | DDZ2 = 0.0 |
---|
4561 | |
---|
4562 | ! ---------------------------------------------------------------------- |
---|
4563 | ! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABV PROCESS |
---|
4564 | ! ---------------------------------------------------------------------- |
---|
4565 | DO K = 2,NSOIL |
---|
4566 | DENOM2 = (ZSOIL(K-1) - ZSOIL(K)) |
---|
4567 | IF (K .NE. NSOIL) THEN |
---|
4568 | SLOPX = 1. |
---|
4569 | |
---|
4570 | ! ---------------------------------------------------------------------- |
---|
4571 | ! AGAIN, TO AVOID SPURIOUS DRAINAGE BEHAVIOR, 'UPSTREAM DIFFERENCING' IN |
---|
4572 | ! LINE BELOW REPLACED WITH NEW APPROACH IN 2ND LINE: |
---|
4573 | ! 'MXSMC2 = MAX (SH2OA(K), SH2OA(K+1))' |
---|
4574 | ! ---------------------------------------------------------------------- |
---|
4575 | MXSMC2 = SH2OA(K) |
---|
4576 | |
---|
4577 | CALL WDFCND (WDF2,WCND2,MXSMC2,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
4578 | & SICEMAX) |
---|
4579 | |
---|
4580 | ! ---------------------------------------------------------------------- |
---|
4581 | ! CALC SOME PARTIAL PRODUCTS FOR LATER USE IN CALC'NG RHSTT |
---|
4582 | ! ---------------------------------------------------------------------- |
---|
4583 | DENOM = (ZSOIL(K-1) - ZSOIL(K+1)) |
---|
4584 | DSMDZ2 = (SH2O(K) - SH2O(K+1)) / (DENOM * 0.5) |
---|
4585 | |
---|
4586 | ! ---------------------------------------------------------------------- |
---|
4587 | ! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT |
---|
4588 | ! ---------------------------------------------------------------------- |
---|
4589 | DDZ2 = 2.0 / DENOM |
---|
4590 | CI(K) = -WDF2 * DDZ2 / DENOM2 |
---|
4591 | ELSE |
---|
4592 | |
---|
4593 | ! ---------------------------------------------------------------------- |
---|
4594 | ! SLOPE OF BOTTOM LAYER IS INTRODUCED |
---|
4595 | ! ---------------------------------------------------------------------- |
---|
4596 | SLOPX = SLOPE |
---|
4597 | |
---|
4598 | ! ---------------------------------------------------------------------- |
---|
4599 | ! RETRIEVE THE SOIL WATER DIFFUSIVITY AND HYDRAULIC CONDUCTIVITY FOR |
---|
4600 | ! THIS LAYER |
---|
4601 | ! ---------------------------------------------------------------------- |
---|
4602 | CALL WDFCND (WDF2,WCND2,SH2OA(NSOIL),SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
4603 | & SICEMAX) |
---|
4604 | |
---|
4605 | ! ---------------------------------------------------------------------- |
---|
4606 | ! CALC A PARTIAL PRODUCT FOR LATER USE IN CALC'NG RHSTT |
---|
4607 | ! ---------------------------------------------------------------------- |
---|
4608 | DSMDZ2 = 0.0 |
---|
4609 | |
---|
4610 | ! ---------------------------------------------------------------------- |
---|
4611 | ! SET MATRIX COEF CI TO ZERO |
---|
4612 | ! ---------------------------------------------------------------------- |
---|
4613 | CI(K) = 0.0 |
---|
4614 | ENDIF |
---|
4615 | |
---|
4616 | ! ---------------------------------------------------------------------- |
---|
4617 | ! CALC RHSTT FOR THIS LAYER AFTER CALC'NG ITS NUMERATOR |
---|
4618 | ! ---------------------------------------------------------------------- |
---|
4619 | NUMER = (WDF2 * DSMDZ2) + SLOPX * WCND2 - (WDF * DSMDZ) & |
---|
4620 | & - WCND + ET(K) |
---|
4621 | RHSTT(K) = NUMER / (-DENOM2) |
---|
4622 | |
---|
4623 | ! ---------------------------------------------------------------------- |
---|
4624 | ! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER |
---|
4625 | ! ---------------------------------------------------------------------- |
---|
4626 | AI(K) = -WDF * DDZ / DENOM2 |
---|
4627 | BI(K) = -( AI(K) + CI(K) ) |
---|
4628 | |
---|
4629 | ! ---------------------------------------------------------------------- |
---|
4630 | ! RESET VALUES OF WDF, WCND, DSMDZ, AND DDZ FOR LOOP TO NEXT LYR |
---|
4631 | ! RUNOFF2: SUB-SURFACE OR BASEFLOW RUNOFF |
---|
4632 | ! ---------------------------------------------------------------------- |
---|
4633 | IF (K .EQ. NSOIL) THEN |
---|
4634 | RUNOFF2 = SLOPX * WCND2 |
---|
4635 | ENDIF |
---|
4636 | |
---|
4637 | IF (K .NE. NSOIL) THEN |
---|
4638 | WDF = WDF2 |
---|
4639 | WCND = WCND2 |
---|
4640 | DSMDZ = DSMDZ2 |
---|
4641 | DDZ = DDZ2 |
---|
4642 | ENDIF |
---|
4643 | END DO |
---|
4644 | |
---|
4645 | ! ---------------------------------------------------------------------- |
---|
4646 | ! END SUBROUTINE SRT |
---|
4647 | ! ---------------------------------------------------------------------- |
---|
4648 | END SUBROUTINE SRT |
---|
4649 | |
---|
4650 | SUBROUTINE SSTEP (SH2OOUT,SH2OIN,CMC,RHSTT,RHSCT,DT, & |
---|
4651 | & NSOIL,SMCMAX,CMCMAX,RUNOFF3,ZSOIL,SMC,SICE, & |
---|
4652 | & AI,BI,CI) |
---|
4653 | |
---|
4654 | IMPLICIT NONE |
---|
4655 | |
---|
4656 | ! ---------------------------------------------------------------------- |
---|
4657 | ! SUBROUTINE SSTEP |
---|
4658 | ! ---------------------------------------------------------------------- |
---|
4659 | ! CALCULATE/UPDATE SOIL MOISTURE CONTENT VALUES AND CANOPY MOISTURE |
---|
4660 | ! CONTENT VALUES. |
---|
4661 | ! ---------------------------------------------------------------------- |
---|
4662 | INTEGER NSOLD |
---|
4663 | PARAMETER(NSOLD = 20) |
---|
4664 | |
---|
4665 | INTEGER I |
---|
4666 | INTEGER K |
---|
4667 | INTEGER KK11 |
---|
4668 | INTEGER NSOIL |
---|
4669 | |
---|
4670 | REAL AI(NSOLD) |
---|
4671 | REAL BI(NSOLD) |
---|
4672 | REAL CI(NSOLD) |
---|
4673 | REAL CIin(NSOLD) |
---|
4674 | REAL CMC |
---|
4675 | REAL CMCMAX |
---|
4676 | REAL DDZ |
---|
4677 | REAL DT |
---|
4678 | REAL RHSCT |
---|
4679 | REAL RHSTT(NSOIL) |
---|
4680 | REAL RHSTTin(NSOIL) |
---|
4681 | REAL RUNOFF3 |
---|
4682 | REAL SH2OIN(NSOIL) |
---|
4683 | REAL SH2OOUT(NSOIL) |
---|
4684 | REAL SICE(NSOIL) |
---|
4685 | REAL SMC(NSOIL) |
---|
4686 | REAL SMCMAX |
---|
4687 | REAL STOT |
---|
4688 | REAL WPLUS |
---|
4689 | REAL ZSOIL(NSOIL) |
---|
4690 | |
---|
4691 | ! ---------------------------------------------------------------------- |
---|
4692 | ! CREATE 'AMOUNT' VALUES OF VARIABLES TO BE INPUT TO THE |
---|
4693 | ! TRI-DIAGONAL MATRIX ROUTINE. |
---|
4694 | ! ---------------------------------------------------------------------- |
---|
4695 | DO K = 1,NSOIL |
---|
4696 | RHSTT(K) = RHSTT(K) * DT |
---|
4697 | AI(K) = AI(K) * DT |
---|
4698 | BI(K) = 1. + BI(K) * DT |
---|
4699 | CI(K) = CI(K) * DT |
---|
4700 | END DO |
---|
4701 | |
---|
4702 | ! ---------------------------------------------------------------------- |
---|
4703 | ! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 |
---|
4704 | ! ---------------------------------------------------------------------- |
---|
4705 | DO K = 1,NSOIL |
---|
4706 | RHSTTin(K) = RHSTT(K) |
---|
4707 | END DO |
---|
4708 | DO K = 1,NSOIL |
---|
4709 | CIin(K) = CI(K) |
---|
4710 | END DO |
---|
4711 | |
---|
4712 | ! ---------------------------------------------------------------------- |
---|
4713 | ! CALL ROSR12 TO SOLVE THE TRI-DIAGONAL MATRIX |
---|
4714 | ! ---------------------------------------------------------------------- |
---|
4715 | CALL ROSR12 (CI,AI,BI,CIin,RHSTTin,RHSTT,NSOIL) |
---|
4716 | |
---|
4717 | ! ---------------------------------------------------------------------- |
---|
4718 | ! SUM THE PREVIOUS SMC VALUE AND THE MATRIX SOLUTION TO GET A |
---|
4719 | ! NEW VALUE. MIN ALLOWABLE VALUE OF SMC WILL BE 0.02. |
---|
4720 | ! RUNOFF3: RUNOFF WITHIN SOIL LAYERS |
---|
4721 | ! ---------------------------------------------------------------------- |
---|
4722 | WPLUS = 0.0 |
---|
4723 | RUNOFF3 = 0. |
---|
4724 | DDZ = -ZSOIL(1) |
---|
4725 | |
---|
4726 | DO K = 1,NSOIL |
---|
4727 | IF (K .NE. 1) DDZ = ZSOIL(K - 1) - ZSOIL(K) |
---|
4728 | SH2OOUT(K) = SH2OIN(K) + CI(K) + WPLUS / DDZ |
---|
4729 | |
---|
4730 | STOT = SH2OOUT(K) + SICE(K) |
---|
4731 | IF (STOT .GT. SMCMAX) THEN |
---|
4732 | IF (K .EQ. 1) THEN |
---|
4733 | DDZ = -ZSOIL(1) |
---|
4734 | ELSE |
---|
4735 | KK11 = K - 1 |
---|
4736 | DDZ = -ZSOIL(K) + ZSOIL(KK11) |
---|
4737 | ENDIF |
---|
4738 | WPLUS = (STOT-SMCMAX) * DDZ |
---|
4739 | ELSE |
---|
4740 | WPLUS = 0. |
---|
4741 | ENDIF |
---|
4742 | SMC(K) = MAX ( MIN(STOT,SMCMAX),0.02 ) |
---|
4743 | SH2OOUT(K) = MAX((SMC(K)-SICE(K)),0.0) |
---|
4744 | END DO |
---|
4745 | |
---|
4746 | RUNOFF3 = WPLUS |
---|
4747 | |
---|
4748 | ! ---------------------------------------------------------------------- |
---|
4749 | ! UPDATE CANOPY WATER CONTENT/INTERCEPTION (CMC). CONVERT RHSCT TO |
---|
4750 | ! AN 'AMOUNT' VALUE AND ADD TO PREVIOUS CMC VALUE TO GET NEW CMC. |
---|
4751 | ! ---------------------------------------------------------------------- |
---|
4752 | CMC = CMC + DT * RHSCT |
---|
4753 | IF (CMC .LT. 1.E-20) CMC=0.0 |
---|
4754 | CMC = MIN(CMC,CMCMAX) |
---|
4755 | |
---|
4756 | ! ---------------------------------------------------------------------- |
---|
4757 | ! END SUBROUTINE SSTEP |
---|
4758 | ! ---------------------------------------------------------------------- |
---|
4759 | END SUBROUTINE SSTEP |
---|
4760 | |
---|
4761 | SUBROUTINE TBND (TU,TB,ZSOIL,ZBOT,K,NSOIL,TBND1) |
---|
4762 | |
---|
4763 | IMPLICIT NONE |
---|
4764 | |
---|
4765 | ! ---------------------------------------------------------------------- |
---|
4766 | ! SUBROUTINE TBND |
---|
4767 | ! ---------------------------------------------------------------------- |
---|
4768 | ! CALCULATE TEMPERATURE ON THE BOUNDARY OF THE LAYER BY INTERPOLATION OF |
---|
4769 | ! THE MIDDLE LAYER TEMPERATURES |
---|
4770 | ! ---------------------------------------------------------------------- |
---|
4771 | INTEGER NSOIL |
---|
4772 | INTEGER K |
---|
4773 | |
---|
4774 | REAL TBND1 |
---|
4775 | REAL T0 |
---|
4776 | REAL TU |
---|
4777 | REAL TB |
---|
4778 | REAL ZB |
---|
4779 | REAL ZBOT |
---|
4780 | REAL ZUP |
---|
4781 | REAL ZSOIL (NSOIL) |
---|
4782 | |
---|
4783 | PARAMETER(T0 = 273.15) |
---|
4784 | |
---|
4785 | ! ---------------------------------------------------------------------- |
---|
4786 | ! USE SURFACE TEMPERATURE ON THE TOP OF THE FIRST LAYER |
---|
4787 | ! ---------------------------------------------------------------------- |
---|
4788 | IF (K .EQ. 1) THEN |
---|
4789 | ZUP = 0. |
---|
4790 | ELSE |
---|
4791 | ZUP = ZSOIL(K-1) |
---|
4792 | ENDIF |
---|
4793 | |
---|
4794 | ! ---------------------------------------------------------------------- |
---|
4795 | ! USE DEPTH OF THE CONSTANT BOTTOM TEMPERATURE WHEN INTERPOLATE |
---|
4796 | ! TEMPERATURE INTO THE LAST LAYER BOUNDARY |
---|
4797 | ! ---------------------------------------------------------------------- |
---|
4798 | IF (K .EQ. NSOIL) THEN |
---|
4799 | ZB = 2.*ZBOT-ZSOIL(K) |
---|
4800 | ELSE |
---|
4801 | ZB = ZSOIL(K+1) |
---|
4802 | ENDIF |
---|
4803 | |
---|
4804 | ! ---------------------------------------------------------------------- |
---|
4805 | ! LINEAR INTERPOLATION BETWEEN THE AVERAGE LAYER TEMPERATURES |
---|
4806 | ! ---------------------------------------------------------------------- |
---|
4807 | TBND1 = TU+(TB-TU)*(ZUP-ZSOIL(K))/(ZUP-ZB) |
---|
4808 | |
---|
4809 | ! ---------------------------------------------------------------------- |
---|
4810 | ! END SUBROUTINE TBND |
---|
4811 | ! ---------------------------------------------------------------------- |
---|
4812 | END SUBROUTINE TBND |
---|
4813 | |
---|
4814 | SUBROUTINE TDFCND ( DF, SMC, QZ, SMCMAX, SH2O) |
---|
4815 | |
---|
4816 | IMPLICIT NONE |
---|
4817 | |
---|
4818 | ! ---------------------------------------------------------------------- |
---|
4819 | ! SUBROUTINE TDFCND |
---|
4820 | ! ---------------------------------------------------------------------- |
---|
4821 | ! CALCULATE THERMAL DIFFUSIVITY AND CONDUCTIVITY OF THE SOIL FOR A GIVEN |
---|
4822 | ! POINT AND TIME. |
---|
4823 | ! ---------------------------------------------------------------------- |
---|
4824 | ! PETERS-LIDARD APPROACH (PETERS-LIDARD et al., 1998) |
---|
4825 | ! June 2001 CHANGES: FROZEN SOIL CONDITION. |
---|
4826 | ! ---------------------------------------------------------------------- |
---|
4827 | REAL DF |
---|
4828 | REAL GAMMD |
---|
4829 | REAL THKDRY |
---|
4830 | REAL AKE |
---|
4831 | REAL THKICE |
---|
4832 | REAL THKO |
---|
4833 | REAL THKQTZ |
---|
4834 | REAL THKSAT |
---|
4835 | REAL THKS |
---|
4836 | REAL THKW |
---|
4837 | REAL QZ |
---|
4838 | REAL SATRATIO |
---|
4839 | REAL SH2O |
---|
4840 | REAL SMC |
---|
4841 | REAL SMCMAX |
---|
4842 | REAL XU |
---|
4843 | REAL XUNFROZ |
---|
4844 | |
---|
4845 | ! ---------------------------------------------------------------------- |
---|
4846 | ! WE NOW GET QUARTZ AS AN INPUT ARGUMENT (SET IN ROUTINE REDPRM): |
---|
4847 | ! DATA QUARTZ /0.82, 0.10, 0.25, 0.60, 0.52, |
---|
4848 | ! & 0.35, 0.60, 0.40, 0.82/ |
---|
4849 | ! ---------------------------------------------------------------------- |
---|
4850 | ! IF THE SOIL HAS ANY MOISTURE CONTENT COMPUTE A PARTIAL SUM/PRODUCT |
---|
4851 | ! OTHERWISE USE A CONSTANT VALUE WHICH WORKS WELL WITH MOST SOILS |
---|
4852 | ! ---------------------------------------------------------------------- |
---|
4853 | ! THKW ......WATER THERMAL CONDUCTIVITY |
---|
4854 | ! THKQTZ ....THERMAL CONDUCTIVITY FOR QUARTZ |
---|
4855 | ! THKO ......THERMAL CONDUCTIVITY FOR OTHER SOIL COMPONENTS |
---|
4856 | ! THKS ......THERMAL CONDUCTIVITY FOR THE SOLIDS COMBINED(QUARTZ+OTHER) |
---|
4857 | ! THKICE ....ICE THERMAL CONDUCTIVITY |
---|
4858 | ! SMCMAX ....POROSITY (= SMCMAX) |
---|
4859 | ! QZ .........QUARTZ CONTENT (SOIL TYPE DEPENDENT) |
---|
4860 | ! ---------------------------------------------------------------------- |
---|
4861 | ! USE AS IN PETERS-LIDARD, 1998 (MODIF. FROM JOHANSEN, 1975). |
---|
4862 | ! |
---|
4863 | ! PABLO GRUNMANN, 08/17/98 |
---|
4864 | ! REFS.: |
---|
4865 | ! FAROUKI, O.T.,1986: THERMAL PROPERTIES OF SOILS. SERIES ON ROCK |
---|
4866 | ! AND SOIL MECHANICS, VOL. 11, TRANS TECH, 136 PP. |
---|
4867 | ! JOHANSEN, O., 1975: THERMAL CONDUCTIVITY OF SOILS. PH.D. THESIS, |
---|
4868 | ! UNIVERSITY OF TRONDHEIM, |
---|
4869 | ! PETERS-LIDARD, C. D., ET AL., 1998: THE EFFECT OF SOIL THERMAL |
---|
4870 | ! CONDUCTIVITY PARAMETERIZATION ON SURFACE ENERGY FLUXES |
---|
4871 | ! AND TEMPERATURES. JOURNAL OF THE ATMOSPHERIC SCIENCES, |
---|
4872 | ! VOL. 55, PP. 1209-1224. |
---|
4873 | ! ---------------------------------------------------------------------- |
---|
4874 | ! NEEDS PARAMETERS |
---|
4875 | ! POROSITY(SOIL TYPE): |
---|
4876 | ! POROS = SMCMAX |
---|
4877 | ! SATURATION RATIO: |
---|
4878 | SATRATIO = SMC/SMCMAX |
---|
4879 | |
---|
4880 | ! PARAMETERS W/(M.K) |
---|
4881 | THKICE = 2.2 |
---|
4882 | THKW = 0.57 |
---|
4883 | THKO = 2.0 |
---|
4884 | ! IF (QZ .LE. 0.2) THKO = 3.0 |
---|
4885 | THKQTZ = 7.7 |
---|
4886 | ! SOLIDS' CONDUCTIVITY |
---|
4887 | THKS = (THKQTZ**QZ)*(THKO**(1.- QZ)) |
---|
4888 | |
---|
4889 | ! UNFROZEN FRACTION (FROM 1., i.e., 100%LIQUID, TO 0. (100% FROZEN)) |
---|
4890 | XUNFROZ = (SH2O + 1.E-9) / (SMC + 1.E-9) |
---|
4891 | |
---|
4892 | ! UNFROZEN VOLUME FOR SATURATION (POROSITY*XUNFROZ) |
---|
4893 | XU=XUNFROZ*SMCMAX |
---|
4894 | ! SATURATED THERMAL CONDUCTIVITY |
---|
4895 | THKSAT = THKS**(1.-SMCMAX)*THKICE**(SMCMAX-XU)*THKW**(XU) |
---|
4896 | |
---|
4897 | ! DRY DENSITY IN KG/M3 |
---|
4898 | GAMMD = (1. - SMCMAX)*2700. |
---|
4899 | |
---|
4900 | ! DRY THERMAL CONDUCTIVITY IN W.M-1.K-1 |
---|
4901 | THKDRY = (0.135*GAMMD + 64.7)/(2700. - 0.947*GAMMD) |
---|
4902 | |
---|
4903 | IF ( (SH2O + 0.0005) .LT. SMC ) THEN |
---|
4904 | ! FROZEN |
---|
4905 | AKE = SATRATIO |
---|
4906 | ELSE |
---|
4907 | ! UNFROZEN |
---|
4908 | ! RANGE OF VALIDITY FOR THE KERSTEN NUMBER (AKE) |
---|
4909 | IF ( SATRATIO .GT. 0.1 ) THEN |
---|
4910 | |
---|
4911 | ! KERSTEN NUMBER (USING "FINE" FORMULA, VALID FOR SOILS CONTAINING AT |
---|
4912 | ! LEAST 5% OF PARTICLES WITH DIAMETER LESS THAN 2.E-6 METERS.) |
---|
4913 | ! (FOR "COARSE" FORMULA, SEE PETERS-LIDARD ET AL., 1998). |
---|
4914 | |
---|
4915 | AKE = LOG10(SATRATIO) + 1.0 |
---|
4916 | |
---|
4917 | ELSE |
---|
4918 | |
---|
4919 | ! USE K = KDRY |
---|
4920 | AKE = 0.0 |
---|
4921 | |
---|
4922 | ENDIF |
---|
4923 | ENDIF |
---|
4924 | |
---|
4925 | ! THERMAL CONDUCTIVITY |
---|
4926 | |
---|
4927 | DF = AKE*(THKSAT - THKDRY) + THKDRY |
---|
4928 | |
---|
4929 | ! ---------------------------------------------------------------------- |
---|
4930 | ! END SUBROUTINE TDFCND |
---|
4931 | ! ---------------------------------------------------------------------- |
---|
4932 | END SUBROUTINE TDFCND |
---|
4933 | |
---|
4934 | SUBROUTINE TMPAVG (TAVG,TUP,TM,TDN,ZSOIL,NSOIL,K) |
---|
4935 | |
---|
4936 | IMPLICIT NONE |
---|
4937 | |
---|
4938 | ! ---------------------------------------------------------------------- |
---|
4939 | ! SUBROUTINE TMPAVG |
---|
4940 | ! ---------------------------------------------------------------------- |
---|
4941 | ! CALCULATE SOIL LAYER AVERAGE TEMPERATURE (TAVG) IN FREEZING/THAWING |
---|
4942 | ! LAYER USING UP, DOWN, AND MIDDLE LAYER TEMPERATURES (TUP, TDN, TM), |
---|
4943 | ! WHERE TUP IS AT TOP BOUNDARY OF LAYER, TDN IS AT BOTTOM BOUNDARY OF |
---|
4944 | ! LAYER. TM IS LAYER PROGNOSTIC STATE TEMPERATURE. |
---|
4945 | ! ---------------------------------------------------------------------- |
---|
4946 | INTEGER K |
---|
4947 | INTEGER NSOIL |
---|
4948 | |
---|
4949 | REAL DZ |
---|
4950 | REAL DZH |
---|
4951 | REAL T0 |
---|
4952 | REAL TAVG |
---|
4953 | REAL TDN |
---|
4954 | REAL TM |
---|
4955 | REAL TUP |
---|
4956 | REAL X0 |
---|
4957 | REAL XDN |
---|
4958 | REAL XUP |
---|
4959 | REAL ZSOIL (NSOIL) |
---|
4960 | |
---|
4961 | PARAMETER(T0 = 2.7315E2) |
---|
4962 | |
---|
4963 | ! ---------------------------------------------------------------------- |
---|
4964 | IF (K .EQ. 1) THEN |
---|
4965 | DZ = -ZSOIL(1) |
---|
4966 | ELSE |
---|
4967 | DZ = ZSOIL(K-1)-ZSOIL(K) |
---|
4968 | ENDIF |
---|
4969 | |
---|
4970 | DZH=DZ*0.5 |
---|
4971 | |
---|
4972 | IF (TUP .LT. T0) THEN |
---|
4973 | IF (TM .LT. T0) THEN |
---|
4974 | IF (TDN .LT. T0) THEN |
---|
4975 | ! ---------------------------------------------------------------------- |
---|
4976 | ! TUP, TM, TDN < T0 |
---|
4977 | ! ---------------------------------------------------------------------- |
---|
4978 | TAVG = (TUP + 2.0*TM + TDN)/ 4.0 |
---|
4979 | ELSE |
---|
4980 | ! ---------------------------------------------------------------------- |
---|
4981 | ! TUP & TM < T0, TDN >= T0 |
---|
4982 | ! ---------------------------------------------------------------------- |
---|
4983 | X0 = (T0 - TM) * DZH / (TDN - TM) |
---|
4984 | TAVG = 0.5 * (TUP*DZH+TM*(DZH+X0)+T0*(2.*DZH-X0)) / DZ |
---|
4985 | ENDIF |
---|
4986 | ELSE |
---|
4987 | IF (TDN .LT. T0) THEN |
---|
4988 | ! ---------------------------------------------------------------------- |
---|
4989 | ! TUP < T0, TM >= T0, TDN < T0 |
---|
4990 | ! ---------------------------------------------------------------------- |
---|
4991 | XUP = (T0-TUP) * DZH / (TM-TUP) |
---|
4992 | XDN = DZH - (T0-TM) * DZH / (TDN-TM) |
---|
4993 | TAVG = 0.5 * (TUP*XUP+T0*(2.*DZ-XUP-XDN)+TDN*XDN) / DZ |
---|
4994 | ELSE |
---|
4995 | ! ---------------------------------------------------------------------- |
---|
4996 | ! TUP < T0, TM >= T0, TDN >= T0 |
---|
4997 | ! ---------------------------------------------------------------------- |
---|
4998 | XUP = (T0-TUP) * DZH / (TM-TUP) |
---|
4999 | TAVG = 0.5 * (TUP*XUP+T0*(2.*DZ-XUP)) / DZ |
---|
5000 | ENDIF |
---|
5001 | ENDIF |
---|
5002 | ELSE |
---|
5003 | IF (TM .LT. T0) THEN |
---|
5004 | IF (TDN .LT. T0) THEN |
---|
5005 | ! ---------------------------------------------------------------------- |
---|
5006 | ! TUP >= T0, TM < T0, TDN < T0 |
---|
5007 | ! ---------------------------------------------------------------------- |
---|
5008 | XUP = DZH - (T0-TUP) * DZH / (TM-TUP) |
---|
5009 | TAVG = 0.5 * (T0*(DZ-XUP)+TM*(DZH+XUP)+TDN*DZH) / DZ |
---|
5010 | ELSE |
---|
5011 | ! ---------------------------------------------------------------------- |
---|
5012 | ! TUP >= T0, TM < T0, TDN >= T0 |
---|
5013 | ! ---------------------------------------------------------------------- |
---|
5014 | XUP = DZH - (T0-TUP) * DZH / (TM-TUP) |
---|
5015 | XDN = (T0-TM) * DZH / (TDN-TM) |
---|
5016 | TAVG = 0.5 * (T0*(2.*DZ-XUP-XDN)+TM*(XUP+XDN)) / DZ |
---|
5017 | ENDIF |
---|
5018 | ELSE |
---|
5019 | IF (TDN .LT. T0) THEN |
---|
5020 | ! ---------------------------------------------------------------------- |
---|
5021 | ! TUP >= T0, TM >= T0, TDN < T0 |
---|
5022 | ! ---------------------------------------------------------------------- |
---|
5023 | XDN = DZH - (T0-TM) * DZH / (TDN-TM) |
---|
5024 | TAVG = (T0*(DZ-XDN)+0.5*(T0+TDN)*XDN) / DZ |
---|
5025 | ELSE |
---|
5026 | ! ---------------------------------------------------------------------- |
---|
5027 | ! TUP >= T0, TM >= T0, TDN >= T0 |
---|
5028 | ! ---------------------------------------------------------------------- |
---|
5029 | TAVG = (TUP + 2.0*TM + TDN) / 4.0 |
---|
5030 | ENDIF |
---|
5031 | ENDIF |
---|
5032 | ENDIF |
---|
5033 | ! ---------------------------------------------------------------------- |
---|
5034 | ! END SUBROUTINE TMPAVG |
---|
5035 | ! ---------------------------------------------------------------------- |
---|
5036 | END SUBROUTINE TMPAVG |
---|
5037 | |
---|
5038 | SUBROUTINE TRANSP (ET1,NSOIL,ETP1,SMC,CMC,ZSOIL,SHDFAC,SMCWLT, & |
---|
5039 | & CMCMAX,PC,CFACTR,SMCREF,SFCTMP,Q2,NROOT,RTDIS) |
---|
5040 | |
---|
5041 | IMPLICIT NONE |
---|
5042 | |
---|
5043 | ! ---------------------------------------------------------------------- |
---|
5044 | ! SUBROUTINE TRANSP |
---|
5045 | ! ---------------------------------------------------------------------- |
---|
5046 | ! CALCULATE TRANSPIRATION FOR THE VEG CLASS. |
---|
5047 | ! ---------------------------------------------------------------------- |
---|
5048 | INTEGER I |
---|
5049 | INTEGER K |
---|
5050 | INTEGER NSOIL |
---|
5051 | INTEGER NROOT |
---|
5052 | |
---|
5053 | REAL CFACTR |
---|
5054 | REAL CMC |
---|
5055 | REAL CMCMAX |
---|
5056 | REAL DENOM |
---|
5057 | REAL ET1(NSOIL) |
---|
5058 | REAL ETP1 |
---|
5059 | REAL ETP1A |
---|
5060 | REAL GX (7) |
---|
5061 | !.....REAL PART(NSOIL) |
---|
5062 | REAL PC |
---|
5063 | REAL Q2 |
---|
5064 | REAL RTDIS(NSOIL) |
---|
5065 | REAL RTX |
---|
5066 | REAL SFCTMP |
---|
5067 | REAL SGX |
---|
5068 | REAL SHDFAC |
---|
5069 | REAL SMC(NSOIL) |
---|
5070 | REAL SMCREF |
---|
5071 | REAL SMCWLT |
---|
5072 | REAL ZSOIL(NSOIL) |
---|
5073 | |
---|
5074 | ! ---------------------------------------------------------------------- |
---|
5075 | ! INITIALIZE PLANT TRANSP TO ZERO FOR ALL SOIL LAYERS. |
---|
5076 | ! ---------------------------------------------------------------------- |
---|
5077 | DO K = 1,NSOIL |
---|
5078 | ET1(K) = 0. |
---|
5079 | END DO |
---|
5080 | |
---|
5081 | ! ---------------------------------------------------------------------- |
---|
5082 | ! CALCULATE AN 'ADJUSTED' POTENTIAL TRANSPIRATION |
---|
5083 | ! IF STATEMENT BELOW TO AVOID TANGENT LINEAR PROBLEMS NEAR ZERO |
---|
5084 | ! NOTE: GX AND OTHER TERMS BELOW REDISTRIBUTE TRANSPIRATION BY LAYER, |
---|
5085 | ! ET(K), AS A FUNCTION OF SOIL MOISTURE AVAILABILITY, WHILE PRESERVING |
---|
5086 | ! TOTAL ETP1A. |
---|
5087 | ! ---------------------------------------------------------------------- |
---|
5088 | IF (CMC .NE. 0.0) THEN |
---|
5089 | ETP1A = SHDFAC * PC * ETP1 * (1.0 - (CMC /CMCMAX) ** CFACTR) |
---|
5090 | ELSE |
---|
5091 | ETP1A = SHDFAC * PC * ETP1 |
---|
5092 | ENDIF |
---|
5093 | |
---|
5094 | SGX = 0.0 |
---|
5095 | DO I = 1,NROOT |
---|
5096 | GX(I) = ( SMC(I) - SMCWLT ) / ( SMCREF - SMCWLT ) |
---|
5097 | GX(I) = MAX ( MIN ( GX(I), 1. ), 0. ) |
---|
5098 | SGX = SGX + GX (I) |
---|
5099 | END DO |
---|
5100 | SGX = SGX / NROOT |
---|
5101 | |
---|
5102 | DENOM = 0. |
---|
5103 | DO I = 1,NROOT |
---|
5104 | RTX = RTDIS(I) + GX(I) - SGX |
---|
5105 | GX(I) = GX(I) * MAX ( RTX, 0. ) |
---|
5106 | DENOM = DENOM + GX(I) |
---|
5107 | END DO |
---|
5108 | IF (DENOM .LE. 0.0) DENOM = 1. |
---|
5109 | |
---|
5110 | DO I = 1,NROOT |
---|
5111 | ET1(I) = ETP1A * GX(I) / DENOM |
---|
5112 | END DO |
---|
5113 | |
---|
5114 | ! ---------------------------------------------------------------------- |
---|
5115 | ! ABOVE CODE ASSUMES A VERTICALLY UNIFORM ROOT DISTRIBUTION |
---|
5116 | ! CODE BELOW TESTS A VARIABLE ROOT DISTRIBUTION |
---|
5117 | ! ---------------------------------------------------------------------- |
---|
5118 | ! ET(1) = ( ZSOIL(1) / ZSOIL(NROOT) ) * GX * ETP1A |
---|
5119 | ! ET(1) = ( ZSOIL(1) / ZSOIL(NROOT) ) * ETP1A |
---|
5120 | ! ---------------------------------------------------------------------- |
---|
5121 | ! USING ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
5122 | ! ---------------------------------------------------------------------- |
---|
5123 | ! ET(1) = RTDIS(1) * ETP1A |
---|
5124 | ! ET(1) = ETP1A * PART(1) |
---|
5125 | ! ---------------------------------------------------------------------- |
---|
5126 | ! LOOP DOWN THRU THE SOIL LAYERS REPEATING THE OPERATION ABOVE, |
---|
5127 | ! BUT USING THE THICKNESS OF THE SOIL LAYER (RATHER THAN THE |
---|
5128 | ! ABSOLUTE DEPTH OF EACH LAYER) IN THE FINAL CALCULATION. |
---|
5129 | ! ---------------------------------------------------------------------- |
---|
5130 | ! DO K = 2,NROOT |
---|
5131 | ! GX = ( SMC(K) - SMCWLT ) / ( SMCREF - SMCWLT ) |
---|
5132 | ! GX = MAX ( MIN ( GX, 1. ), 0. ) |
---|
5133 | ! TEST CANOPY RESISTANCE |
---|
5134 | ! GX = 1.0 |
---|
5135 | ! ET(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT))*GX*ETP1A |
---|
5136 | ! ET(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT))*ETP1A |
---|
5137 | ! ---------------------------------------------------------------------- |
---|
5138 | ! USING ROOT DISTRIBUTION AS WEIGHTING FACTOR |
---|
5139 | ! ---------------------------------------------------------------------- |
---|
5140 | ! ET(K) = RTDIS(K) * ETP1A |
---|
5141 | ! ET(K) = ETP1A*PART(K) |
---|
5142 | ! END DO |
---|
5143 | ! ---------------------------------------------------------------------- |
---|
5144 | ! END SUBROUTINE TRANSP |
---|
5145 | ! ---------------------------------------------------------------------- |
---|
5146 | END SUBROUTINE TRANSP |
---|
5147 | |
---|
5148 | SUBROUTINE WDFCND (WDF,WCND,SMC,SMCMAX,BEXP,DKSAT,DWSAT, & |
---|
5149 | & SICEMAX) |
---|
5150 | |
---|
5151 | IMPLICIT NONE |
---|
5152 | |
---|
5153 | ! ---------------------------------------------------------------------- |
---|
5154 | ! SUBROUTINE WDFCND |
---|
5155 | ! ---------------------------------------------------------------------- |
---|
5156 | ! CALCULATE SOIL WATER DIFFUSIVITY AND SOIL HYDRAULIC CONDUCTIVITY. |
---|
5157 | ! ---------------------------------------------------------------------- |
---|
5158 | REAL BEXP |
---|
5159 | REAL DKSAT |
---|
5160 | REAL DWSAT |
---|
5161 | REAL EXPON |
---|
5162 | REAL FACTR1 |
---|
5163 | REAL FACTR2 |
---|
5164 | REAL SICEMAX |
---|
5165 | REAL SMC |
---|
5166 | REAL SMCMAX |
---|
5167 | REAL VKwgt |
---|
5168 | REAL WCND |
---|
5169 | REAL WDF |
---|
5170 | |
---|
5171 | ! ---------------------------------------------------------------------- |
---|
5172 | ! CALC THE RATIO OF THE ACTUAL TO THE MAX PSBL SOIL H2O CONTENT |
---|
5173 | ! ---------------------------------------------------------------------- |
---|
5174 | SMC = SMC |
---|
5175 | SMCMAX = SMCMAX |
---|
5176 | FACTR1 = 0.2 / SMCMAX |
---|
5177 | FACTR2 = SMC / SMCMAX |
---|
5178 | |
---|
5179 | ! ---------------------------------------------------------------------- |
---|
5180 | ! PREP AN EXPNTL COEF AND CALC THE SOIL WATER DIFFUSIVITY |
---|
5181 | ! ---------------------------------------------------------------------- |
---|
5182 | EXPON = BEXP + 2.0 |
---|
5183 | WDF = DWSAT * FACTR2 ** EXPON |
---|
5184 | |
---|
5185 | ! ---------------------------------------------------------------------- |
---|
5186 | ! FROZEN SOIL HYDRAULIC DIFFUSIVITY. VERY SENSITIVE TO THE VERTICAL |
---|
5187 | ! GRADIENT OF UNFROZEN WATER. THE LATTER GRADIENT CAN BECOME VERY |
---|
5188 | ! EXTREME IN FREEZING/THAWING SITUATIONS, AND GIVEN THE RELATIVELY |
---|
5189 | ! FEW AND THICK SOIL LAYERS, THIS GRADIENT SUFFERES SERIOUS |
---|
5190 | ! TRUNCTION ERRORS YIELDING ERRONEOUSLY HIGH VERTICAL TRANSPORTS OF |
---|
5191 | ! UNFROZEN WATER IN BOTH DIRECTIONS FROM HUGE HYDRAULIC DIFFUSIVITY. |
---|
5192 | ! THEREFORE, WE FOUND WE HAD TO ARBITRARILY CONSTRAIN WDF |
---|
5193 | ! -- |
---|
5194 | ! VERSION D_10CM: ........ FACTR1 = 0.2/SMCMAX |
---|
5195 | ! WEIGHTED APPROACH...................... PABLO GRUNMANN, 28_SEP_1999. |
---|
5196 | ! ---------------------------------------------------------------------- |
---|
5197 | IF (SICEMAX .GT. 0.0) THEN |
---|
5198 | VKWGT = 1./(1.+(500.*SICEMAX)**3.) |
---|
5199 | WDF = VKWGT*WDF + (1.- VKWGT)*DWSAT*FACTR1**EXPON |
---|
5200 | ENDIF |
---|
5201 | |
---|
5202 | ! ---------------------------------------------------------------------- |
---|
5203 | ! RESET THE EXPNTL COEF AND CALC THE HYDRAULIC CONDUCTIVITY |
---|
5204 | ! ---------------------------------------------------------------------- |
---|
5205 | EXPON = (2.0 * BEXP) + 3.0 |
---|
5206 | WCND = DKSAT * FACTR2 ** EXPON |
---|
5207 | |
---|
5208 | ! ---------------------------------------------------------------------- |
---|
5209 | ! END SUBROUTINE WDFCND |
---|
5210 | ! ---------------------------------------------------------------------- |
---|
5211 | END SUBROUTINE WDFCND |
---|
5212 | |
---|
5213 | SUBROUTINE nmmlsminit(isn,XICE,VEGFRA,SNOW,SNOWC,CANWAT,SMSTAV, & |
---|
5214 | SMSTOT, SFCRUNOFF,UDRUNOFF,GRDFLX,ACSNOW, & |
---|
5215 | ACSNOM,IVGTYP,ISLTYP,TSLB,SMOIS,DZS,SFCEVP, & ! STEMP |
---|
5216 | TMN, & |
---|
5217 | num_soil_layers, & |
---|
5218 | allowed_to_read, & |
---|
5219 | ids,ide, jds,jde, kds,kde, & |
---|
5220 | ims,ime, jms,jme, kms,kme, & |
---|
5221 | its,ite, jts,jte, kts,kte ) |
---|
5222 | |
---|
5223 | IMPLICIT NONE |
---|
5224 | |
---|
5225 | ! Arguments |
---|
5226 | INTEGER, INTENT(IN ) :: ids,ide, jds,jde, kds,kde, & |
---|
5227 | ims,ime, jms,jme, kms,kme, & |
---|
5228 | its,ite, jts,jte, kts,kte |
---|
5229 | |
---|
5230 | INTEGER, INTENT(IN) :: num_soil_layers |
---|
5231 | |
---|
5232 | REAL, DIMENSION( num_soil_layers), INTENT(IN) :: DZS |
---|
5233 | |
---|
5234 | REAL, DIMENSION( ims:ime, num_soil_layers, jms:jme ) , & |
---|
5235 | INTENT(INOUT) :: SMOIS, & |
---|
5236 | TSLB !STEMP |
---|
5237 | |
---|
5238 | REAL, DIMENSION( ims:ime, jms:jme ) , & |
---|
5239 | INTENT(INOUT) :: SNOW, & |
---|
5240 | SNOWC, & |
---|
5241 | CANWAT, & |
---|
5242 | SMSTAV, & |
---|
5243 | SMSTOT, & |
---|
5244 | SFCRUNOFF, & |
---|
5245 | UDRUNOFF, & |
---|
5246 | SFCEVP, & |
---|
5247 | GRDFLX, & |
---|
5248 | ACSNOW, & |
---|
5249 | XICE, & |
---|
5250 | VEGFRA, & |
---|
5251 | TMN, & |
---|
5252 | ACSNOM |
---|
5253 | |
---|
5254 | INTEGER, DIMENSION( ims:ime, jms:jme ) , & |
---|
5255 | INTENT(INOUT) :: IVGTYP, & |
---|
5256 | ISLTYP |
---|
5257 | |
---|
5258 | ! |
---|
5259 | |
---|
5260 | INTEGER, INTENT(IN) :: isn |
---|
5261 | LOGICAL, INTENT(IN) :: allowed_to_read |
---|
5262 | ! Local |
---|
5263 | INTEGER :: iseason |
---|
5264 | INTEGER :: icm,jcm,itf,jtf |
---|
5265 | INTEGER :: I,J,L |
---|
5266 | |
---|
5267 | |
---|
5268 | itf=min0(ite,ide-1) |
---|
5269 | jtf=min0(jte,jde-1) |
---|
5270 | |
---|
5271 | icm = ide/2 |
---|
5272 | jcm = jde/2 |
---|
5273 | |
---|
5274 | iseason=isn |
---|
5275 | |
---|
5276 | DO J=jts,jtf |
---|
5277 | DO I=its,itf |
---|
5278 | ! SNOW(i,j)=0. |
---|
5279 | SNOWC(i,j)=0. |
---|
5280 | ! SMSTAV(i,j)= |
---|
5281 | ! SMSTOT(i,j)= |
---|
5282 | ! SFCRUNOFF(i,j)= |
---|
5283 | ! UDRUNOFF(i,j)= |
---|
5284 | ! GRDFLX(i,j)= |
---|
5285 | ! ACSNOW(i,j)= |
---|
5286 | ! ACSNOM(i,j)= |
---|
5287 | ENDDO |
---|
5288 | ENDDO |
---|
5289 | |
---|
5290 | END SUBROUTINE nmmlsminit |
---|
5291 | |
---|
5292 | FUNCTION CSNOW (DSNOW) |
---|
5293 | |
---|
5294 | IMPLICIT NONE |
---|
5295 | |
---|
5296 | ! ---------------------------------------------------------------------- |
---|
5297 | ! FUNCTION CSNOW |
---|
5298 | ! ---------------------------------------------------------------------- |
---|
5299 | ! CALCULATE SNOW TERMAL CONDUCTIVITY |
---|
5300 | ! ---------------------------------------------------------------------- |
---|
5301 | REAL C |
---|
5302 | REAL DSNOW |
---|
5303 | REAL CSNOW |
---|
5304 | REAL UNIT |
---|
5305 | |
---|
5306 | PARAMETER(UNIT = 0.11631) |
---|
5307 | |
---|
5308 | ! ---------------------------------------------------------------------- |
---|
5309 | ! CSNOW IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) |
---|
5310 | ! BASIC VERSION IS DYACHKOVA EQUATION (1960), FOR RANGE 0.1-0.4 |
---|
5311 | ! ---------------------------------------------------------------------- |
---|
5312 | C=0.328*10**(2.25*DSNOW) |
---|
5313 | ! CSNOW=UNIT*C |
---|
5314 | ! MEK JAN 2006, DOUBLE SNOW THERMAL CONDUCTIVITY |
---|
5315 | CSNOW=2.0*UNIT*C |
---|
5316 | |
---|
5317 | ! ---------------------------------------------------------------------- |
---|
5318 | ! DE VAUX EQUATION (1933), IN RANGE 0.1-0.6 |
---|
5319 | ! ---------------------------------------------------------------------- |
---|
5320 | ! CSNOW=0.0293*(1.+100.*DSNOW**2) |
---|
5321 | |
---|
5322 | ! ---------------------------------------------------------------------- |
---|
5323 | ! E. ANDERSEN FROM FLERCHINGER |
---|
5324 | ! ---------------------------------------------------------------------- |
---|
5325 | ! CSNOW=0.021+2.51*DSNOW**2 |
---|
5326 | |
---|
5327 | ! ---------------------------------------------------------------------- |
---|
5328 | ! END FUNCTION CSNOW |
---|
5329 | ! ---------------------------------------------------------------------- |
---|
5330 | END FUNCTION CSNOW |
---|
5331 | |
---|
5332 | FUNCTION FRH2O (TKELV,SMC,SH2O,SMCMAX,BEXP,PSIS) |
---|
5333 | |
---|
5334 | IMPLICIT NONE |
---|
5335 | |
---|
5336 | ! ---------------------------------------------------------------------- |
---|
5337 | ! FUNCTION FRH2O |
---|
5338 | ! ---------------------------------------------------------------------- |
---|
5339 | ! CALCULATE AMOUNT OF SUPERCOOLED LIQUID SOIL WATER CONTENT IF |
---|
5340 | ! TEMPERATURE IS BELOW 273.15K (T0). REQUIRES NEWTON-TYPE ITERATION TO |
---|
5341 | ! SOLVE THE NONLINEAR IMPLICIT EQUATION GIVEN IN EQN 17 OF KOREN ET AL |
---|
5342 | ! (1999, JGR, VOL 104(D16), 19569-19585). |
---|
5343 | ! ---------------------------------------------------------------------- |
---|
5344 | ! NEW VERSION (JUNE 2001): MUCH FASTER AND MORE ACCURATE NEWTON |
---|
5345 | ! ITERATION ACHIEVED BY FIRST TAKING LOG OF EQN CITED ABOVE -- LESS THAN |
---|
5346 | ! 4 (TYPICALLY 1 OR 2) ITERATIONS ACHIEVES CONVERGENCE. ALSO, EXPLICIT |
---|
5347 | ! 1-STEP SOLUTION OPTION FOR SPECIAL CASE OF PARAMETER CK=0, WHICH |
---|
5348 | ! REDUCES THE ORIGINAL IMPLICIT EQUATION TO A SIMPLER EXPLICIT FORM, |
---|
5349 | ! KNOWN AS THE "FLERCHINGER EQN". IMPROVED HANDLING OF SOLUTION IN THE |
---|
5350 | ! LIMIT OF FREEZING POINT TEMPERATURE T0. |
---|
5351 | ! ---------------------------------------------------------------------- |
---|
5352 | ! INPUT: |
---|
5353 | ! |
---|
5354 | ! TKELV.........TEMPERATURE (Kelvin) |
---|
5355 | ! SMC...........TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC) |
---|
5356 | ! SH2O..........LIQUID SOIL MOISTURE CONTENT (VOLUMETRIC) |
---|
5357 | ! SMCMAX........SATURATION SOIL MOISTURE CONTENT (FROM REDPRM) |
---|
5358 | ! B.............SOIL TYPE "B" PARAMETER (FROM REDPRM) |
---|
5359 | ! PSIS..........SATURATED SOIL MATRIC POTENTIAL (FROM REDPRM) |
---|
5360 | ! |
---|
5361 | ! OUTPUT: |
---|
5362 | ! FRH2O.........SUPERCOOLED LIQUID WATER CONTENT |
---|
5363 | ! ---------------------------------------------------------------------- |
---|
5364 | REAL BEXP |
---|
5365 | REAL BLIM |
---|
5366 | REAL BX |
---|
5367 | REAL CK |
---|
5368 | REAL DENOM |
---|
5369 | REAL DF |
---|
5370 | REAL DH2O |
---|
5371 | REAL DICE |
---|
5372 | REAL DSWL |
---|
5373 | REAL ERROR |
---|
5374 | REAL FK |
---|
5375 | REAL FRH2O |
---|
5376 | REAL GS |
---|
5377 | REAL HLICE |
---|
5378 | REAL PSIS |
---|
5379 | REAL SH2O |
---|
5380 | REAL SMC |
---|
5381 | REAL SMCMAX |
---|
5382 | REAL SWL |
---|
5383 | REAL SWLK |
---|
5384 | REAL TKELV |
---|
5385 | REAL T0 |
---|
5386 | |
---|
5387 | INTEGER NLOG |
---|
5388 | INTEGER KCOUNT |
---|
5389 | |
---|
5390 | PARAMETER(CK = 8.0) |
---|
5391 | ! PARAMETER(CK = 0.0) |
---|
5392 | PARAMETER(BLIM = 5.5) |
---|
5393 | PARAMETER(ERROR = 0.005) |
---|
5394 | |
---|
5395 | PARAMETER(HLICE = 3.335E5) |
---|
5396 | PARAMETER(GS = 9.81) |
---|
5397 | PARAMETER(DICE = 920.0) |
---|
5398 | PARAMETER(DH2O = 1000.0) |
---|
5399 | PARAMETER(T0 = 273.15) |
---|
5400 | |
---|
5401 | ! ---------------------------------------------------------------------- |
---|
5402 | ! LIMITS ON PARAMETER B: B < 5.5 (use parameter BLIM) |
---|
5403 | ! SIMULATIONS SHOWED IF B > 5.5 UNFROZEN WATER CONTENT IS |
---|
5404 | ! NON-REALISTICALLY HIGH AT VERY LOW TEMPERATURES. |
---|
5405 | ! ---------------------------------------------------------------------- |
---|
5406 | BX = BEXP |
---|
5407 | IF (BEXP .GT. BLIM) BX = BLIM |
---|
5408 | |
---|
5409 | ! ---------------------------------------------------------------------- |
---|
5410 | ! INITIALIZING ITERATIONS COUNTER AND ITERATIVE SOLUTION FLAG. |
---|
5411 | ! ---------------------------------------------------------------------- |
---|
5412 | NLOG=0 |
---|
5413 | KCOUNT=0 |
---|
5414 | |
---|
5415 | ! ---------------------------------------------------------------------- |
---|
5416 | ! IF TEMPERATURE NOT SIGNIFICANTLY BELOW FREEZING (T0), SH2O = SMC |
---|
5417 | ! ---------------------------------------------------------------------- |
---|
5418 | IF (TKELV .GT. (T0 - 1.E-3)) THEN |
---|
5419 | FRH2O = SMC |
---|
5420 | ELSE |
---|
5421 | IF (CK .NE. 0.0) THEN |
---|
5422 | |
---|
5423 | ! ---------------------------------------------------------------------- |
---|
5424 | ! OPTION 1: ITERATED SOLUTION FOR NONZERO CK |
---|
5425 | ! IN KOREN ET AL, JGR, 1999, EQN 17 |
---|
5426 | ! ---------------------------------------------------------------------- |
---|
5427 | ! INITIAL GUESS FOR SWL (frozen content) |
---|
5428 | ! ---------------------------------------------------------------------- |
---|
5429 | SWL = SMC-SH2O |
---|
5430 | |
---|
5431 | ! ---------------------------------------------------------------------- |
---|
5432 | ! KEEP WITHIN BOUNDS. |
---|
5433 | ! ---------------------------------------------------------------------- |
---|
5434 | IF (SWL .GT. (SMC-0.02)) SWL = SMC-0.02 |
---|
5435 | IF (SWL .LT. 0.) SWL = 0. |
---|
5436 | |
---|
5437 | ! ---------------------------------------------------------------------- |
---|
5438 | ! START OF ITERATIONS |
---|
5439 | ! ---------------------------------------------------------------------- |
---|
5440 | DO WHILE ( (NLOG .LT. 10) .AND. (KCOUNT .EQ. 0) ) |
---|
5441 | NLOG = NLOG+1 |
---|
5442 | DF = ALOG(( PSIS*GS/HLICE ) * ( ( 1.+CK*SWL )**2. ) * & |
---|
5443 | & ( SMCMAX/(SMC-SWL) )**BX) - ALOG(-(TKELV-T0)/TKELV) |
---|
5444 | DENOM = 2. * CK / ( 1.+CK*SWL ) + BX / ( SMC - SWL ) |
---|
5445 | SWLK = SWL - DF/DENOM |
---|
5446 | ! ---------------------------------------------------------------------- |
---|
5447 | ! BOUNDS USEFUL FOR MATHEMATICAL SOLUTION. |
---|
5448 | ! ---------------------------------------------------------------------- |
---|
5449 | IF (SWLK .GT. (SMC-0.02)) SWLK = SMC - 0.02 |
---|
5450 | IF (SWLK .LT. 0.) SWLK = 0. |
---|
5451 | |
---|
5452 | ! ---------------------------------------------------------------------- |
---|
5453 | ! MATHEMATICAL SOLUTION BOUNDS APPLIED. |
---|
5454 | ! ---------------------------------------------------------------------- |
---|
5455 | DSWL = ABS(SWLK-SWL) |
---|
5456 | SWL = SWLK |
---|
5457 | |
---|
5458 | ! ---------------------------------------------------------------------- |
---|
5459 | ! IF MORE THAN 10 ITERATIONS, USE EXPLICIT METHOD (CK=0 APPROX.) |
---|
5460 | ! WHEN DSWL LESS OR EQ. ERROR, NO MORE ITERATIONS REQUIRED. |
---|
5461 | ! ---------------------------------------------------------------------- |
---|
5462 | IF ( DSWL .LE. ERROR ) THEN |
---|
5463 | KCOUNT = KCOUNT+1 |
---|
5464 | ENDIF |
---|
5465 | END DO |
---|
5466 | |
---|
5467 | ! ---------------------------------------------------------------------- |
---|
5468 | ! END OF ITERATIONS |
---|
5469 | ! ---------------------------------------------------------------------- |
---|
5470 | ! BOUNDS APPLIED WITHIN DO-BLOCK ARE VALID FOR PHYSICAL SOLUTION. |
---|
5471 | ! ---------------------------------------------------------------------- |
---|
5472 | FRH2O = SMC - SWL |
---|
5473 | |
---|
5474 | ! ---------------------------------------------------------------------- |
---|
5475 | ! END OPTION 1 |
---|
5476 | ! ---------------------------------------------------------------------- |
---|
5477 | ENDIF |
---|
5478 | |
---|
5479 | ! ---------------------------------------------------------------------- |
---|
5480 | ! OPTION 2: EXPLICIT SOLUTION FOR FLERCHINGER EQ. i.e. CK=0 |
---|
5481 | ! IN KOREN ET AL., JGR, 1999, EQN 17 |
---|
5482 | ! APPLY PHYSICAL BOUNDS TO FLERCHINGER SOLUTION |
---|
5483 | ! ---------------------------------------------------------------------- |
---|
5484 | IF (KCOUNT .EQ. 0) THEN |
---|
5485 | Print*,'Flerchinger used in NEW version. Iterations=',NLOG |
---|
5486 | FK = (((HLICE/(GS*(-PSIS)))* & |
---|
5487 | & ((TKELV-T0)/TKELV))**(-1/BX))*SMCMAX |
---|
5488 | IF (FK .LT. 0.02) FK = 0.02 |
---|
5489 | FRH2O = MIN (FK, SMC) |
---|
5490 | ! ---------------------------------------------------------------------- |
---|
5491 | ! END OPTION 2 |
---|
5492 | ! ---------------------------------------------------------------------- |
---|
5493 | ENDIF |
---|
5494 | |
---|
5495 | ENDIF |
---|
5496 | |
---|
5497 | ! ---------------------------------------------------------------------- |
---|
5498 | ! END FUNCTION FRH2O |
---|
5499 | ! ---------------------------------------------------------------------- |
---|
5500 | END FUNCTION FRH2O |
---|
5501 | |
---|
5502 | FUNCTION SNKSRC (TAVG,SMC,SH2O,ZSOIL,NSOIL, & |
---|
5503 | & SMCMAX,PSISAT,BEXP,DT,K,QTOT) |
---|
5504 | |
---|
5505 | IMPLICIT NONE |
---|
5506 | |
---|
5507 | ! ---------------------------------------------------------------------- |
---|
5508 | ! FUNCTION SNKSRC |
---|
5509 | ! ---------------------------------------------------------------------- |
---|
5510 | ! CALCULATE SINK/SOURCE TERM OF THE TERMAL DIFFUSION EQUATION. (SH2O) IS |
---|
5511 | ! AVAILABLE LIQUED WATER. |
---|
5512 | ! ---------------------------------------------------------------------- |
---|
5513 | INTEGER K |
---|
5514 | INTEGER NSOIL |
---|
5515 | |
---|
5516 | REAL BEXP |
---|
5517 | REAL DF |
---|
5518 | REAL DH2O |
---|
5519 | REAL DT |
---|
5520 | REAL DZ |
---|
5521 | REAL DZH |
---|
5522 | REAL FREE |
---|
5523 | ! REAL FRH2O |
---|
5524 | REAL HLICE |
---|
5525 | REAL PSISAT |
---|
5526 | REAL QTOT |
---|
5527 | REAL SH2O |
---|
5528 | REAL SMC |
---|
5529 | REAL SMCMAX |
---|
5530 | REAL SNKSRC |
---|
5531 | REAL T0 |
---|
5532 | REAL TAVG |
---|
5533 | REAL TDN |
---|
5534 | REAL TM |
---|
5535 | REAL TUP |
---|
5536 | REAL TZ |
---|
5537 | REAL X0 |
---|
5538 | REAL XDN |
---|
5539 | REAL XH2O |
---|
5540 | REAL XUP |
---|
5541 | REAL ZSOIL (NSOIL) |
---|
5542 | |
---|
5543 | PARAMETER(DH2O = 1.0000E3) |
---|
5544 | PARAMETER(HLICE = 3.3350E5) |
---|
5545 | PARAMETER(T0 = 2.7315E2) |
---|
5546 | |
---|
5547 | IF (K .EQ. 1) THEN |
---|
5548 | DZ = -ZSOIL(1) |
---|
5549 | ELSE |
---|
5550 | DZ = ZSOIL(K-1)-ZSOIL(K) |
---|
5551 | ENDIF |
---|
5552 | |
---|
5553 | ! ---------------------------------------------------------------------- |
---|
5554 | ! VIA FUNCTION FRH2O, COMPUTE POTENTIAL OR 'EQUILIBRIUM' UNFROZEN |
---|
5555 | ! SUPERCOOLED FREE WATER FOR GIVEN SOIL TYPE AND SOIL LAYER TEMPERATURE. |
---|
5556 | ! FUNCTION FRH20 INVOKES EQN (17) FROM V. KOREN ET AL (1999, JGR, VOL. |
---|
5557 | ! 104, PG 19573). (ASIDE: LATTER EQN IN JOURNAL IN CENTIGRADE UNITS. |
---|
5558 | ! ROUTINE FRH2O USE FORM OF EQN IN KELVIN UNITS.) |
---|
5559 | ! ---------------------------------------------------------------------- |
---|
5560 | FREE = FRH2O(TAVG,SMC,SH2O,SMCMAX,BEXP,PSISAT) |
---|
5561 | |
---|
5562 | ! ---------------------------------------------------------------------- |
---|
5563 | ! IN NEXT BLOCK OF CODE, INVOKE EQN 18 OF V. KOREN ET AL (1999, JGR, |
---|
5564 | ! VOL. 104, PG 19573.) THAT IS, FIRST ESTIMATE THE NEW AMOUNTOF LIQUID |
---|
5565 | ! WATER, 'XH2O', IMPLIED BY THE SUM OF (1) THE LIQUID WATER AT THE BEGIN |
---|
5566 | ! OF CURRENT TIME STEP, AND (2) THE FREEZE OF THAW CHANGE IN LIQUID |
---|
5567 | ! WATER IMPLIED BY THE HEAT FLUX 'QTOT' PASSED IN FROM ROUTINE HRT. |
---|
5568 | ! SECOND, DETERMINE IF XH2O NEEDS TO BE BOUNDED BY 'FREE' (EQUIL AMT) OR |
---|
5569 | ! IF 'FREE' NEEDS TO BE BOUNDED BY XH2O. |
---|
5570 | ! ---------------------------------------------------------------------- |
---|
5571 | XH2O = SH2O + QTOT*DT/(DH2O*HLICE*DZ) |
---|
5572 | |
---|
5573 | ! ---------------------------------------------------------------------- |
---|
5574 | ! FIRST, IF FREEZING AND REMAINING LIQUID LESS THAN LOWER BOUND, THEN |
---|
5575 | ! REDUCE EXTENT OF FREEZING, THEREBY LETTING SOME OR ALL OF HEAT FLUX |
---|
5576 | ! QTOT COOL THE SOIL TEMP LATER IN ROUTINE HRT. |
---|
5577 | ! ---------------------------------------------------------------------- |
---|
5578 | IF ( XH2O .LT. SH2O .AND. XH2O .LT. FREE) THEN |
---|
5579 | IF ( FREE .GT. SH2O ) THEN |
---|
5580 | XH2O = SH2O |
---|
5581 | ELSE |
---|
5582 | XH2O = FREE |
---|
5583 | ENDIF |
---|
5584 | ENDIF |
---|
5585 | |
---|
5586 | ! ---------------------------------------------------------------------- |
---|
5587 | ! SECOND, IF THAWING AND THE INCREASE IN LIQUID WATER GREATER THAN UPPER |
---|
5588 | ! BOUND, THEN REDUCE EXTENT OF THAW, THEREBY LETTING SOME OR ALL OF HEAT |
---|
5589 | ! FLUX QTOT WARM THE SOIL TEMP LATER IN ROUTINE HRT. |
---|
5590 | ! ---------------------------------------------------------------------- |
---|
5591 | IF ( XH2O .GT. SH2O .AND. XH2O .GT. FREE ) THEN |
---|
5592 | IF ( FREE .LT. SH2O ) THEN |
---|
5593 | XH2O = SH2O |
---|
5594 | ELSE |
---|
5595 | XH2O = FREE |
---|
5596 | ENDIF |
---|
5597 | ENDIF |
---|
5598 | |
---|
5599 | IF (XH2O .LT. 0.) XH2O = 0. |
---|
5600 | IF (XH2O .GT. SMC) XH2O = SMC |
---|
5601 | |
---|
5602 | ! ---------------------------------------------------------------------- |
---|
5603 | ! CALCULATE PHASE-CHANGE HEAT SOURCE/SINK TERM FOR USE IN ROUTINE HRT |
---|
5604 | ! AND UPDATE LIQUID WATER TO REFLCET FINAL FREEZE/THAW INCREMENT. |
---|
5605 | ! ---------------------------------------------------------------------- |
---|
5606 | SNKSRC = -DH2O*HLICE*DZ*(XH2O-SH2O)/DT |
---|
5607 | SH2O = XH2O |
---|
5608 | |
---|
5609 | ! ---------------------------------------------------------------------- |
---|
5610 | ! END FUNCTION SNKSRC |
---|
5611 | ! ---------------------------------------------------------------------- |
---|
5612 | END FUNCTION SNKSRC |
---|
5613 | |
---|
5614 | END MODULE module_sf_lsm_nmm |
---|
5615 | |
---|