SUBROUTINE TSPREP(A1,A2,A3,B1,B2,B3,C2,C3,D3,GDENOM,GCOEFF, 2 1 GCONST,CPHCHG,TSTART,IWATER, 2 TBAR,TCTOP,TCBOT,FI,ZPOND,ZSNOW,TSNOW,TCSNOW, 3 TBAR1P,ILG,IL1,IL2,JL,IG ) C C * AUG 19/04 - Y.DELAGE. REGROUP COMMON BLOCKS C * MAKE DECLARATIONS EXPLICIT C * AUG 06/02 - D.VERSEGHY. SHORTENED CLASS3 COMMON BLOCK. C * JUN 17/02 - D.VERSEGHY. USE NEW LUMPED SOIL AND PONDED WATER C * TEMPERATURE FOR FIRST LAYER; SHORTENED C * CLASS4 COMMON BLOCK. C * JUN 20/97 - D.VERSEGHY. CLASS - VERSION 2.7. C * INCORPORATE EXPLICITLY CALCULATED C * THERMAL CONDUCTIVITIES AT TOPS AND C * BOTTOMS OF SOIL LAYERS. C * AUG 24/95 - D.VERSEGHY. CLASS - VERSION 2.4. C * REVISIONS TO ALLOW FOR INHOMOGENEITY C * BETWEEN SOIL LAYERS AND FRACTIONAL C * ORGANIC MATTER CONTENT. C * NOV 28/94 - M. LAZARE. CLASS - VERSION 2.3. C * TCSATW,TCSATI DECLARED REAL(16). C * APR 10/92 - M. LAZARE. CLASS - VERSION 2.1. C * DIVIDE PREVIOUS SUBROUTINE "T4LAYR" C * INTO "TSPREP" AND "TSPOST" AND C * VECTORIZE. C * APR 11/89 - D.VERSEGHY. CALCULATE COEFFICIENTS FOR GROUND HEAT C * FLUX, EXPRESSED AS A LINEAR FUNCTION OF C * SURFACE TEMPERATURE. COEFFICIENTS ARE C * CALCULATED FROM LAYER TEMPERATURES, C * THICKNESSES AND THERMAL CONDUCTIVITIES, C * ASSUMING A QUADRATIC VARIATION OF C * TEMPERATURE WITH DEPTH WITHIN EACH C * SOIL/SNOW LAYER. SET THE SURFACE C * LATENT HEAT OF VAPORIZATION OF WATER C * AND THE STARTING TEMPERATURE FOR THE C * ITERATION IN "TSOLVC"/"TSOLVE". C IMPLICIT NONE INTEGER ILG,IL1,IL2,JL,IG,I REAL DELZ1,C4,D4 C C * OUTPUT ARRAYS. C REAL A1 (ILG), A2 (ILG), A3 (ILG), 1 B1 (ILG), B2 (ILG), B3 (ILG), C2 (ILG), 2 C3 (ILG), D3 (ILG), GDENOM(ILG), GCOEFF(ILG), 3 GCONST(ILG), CPHCHG(ILG), TSTART(ILG) C INTEGER IWATER(ILG) C C * INPUT ARRAYS. C REAL TBAR (ILG,IG), TCTOP (ILG,IG), TCBOT(ILG,IG) C REAL FI (ILG), ZPOND (ILG), ZSNOW (ILG), TSNOW (ILG), 1 TCSNOW(ILG), TBAR1P(ILG) C #include "class_com.cdk"
C----------------------------------------------------------------------- C * INITIALIZATION OF WORK ARRAYS. C DO 100 I=IL1,IL2 IF(FI(I).GT.0.) THEN DELZ1=DELZ(1)+ZPOND(I) A1(I)=ZSNOW(I)/(3.0*TCSNOW(I)) A2(I)=ZSNOW(I)/(2.0*TCSNOW(I)) A3(I)=A2(I) B1(I)=ZSNOW(I)/(6.0*TCSNOW(I)) B2(I)=ZSNOW(I)/(2.0*TCSNOW(I))+DELZ1/(3.0*TCTOP(I,1)) B3(I)=ZSNOW(I)/(2.0*TCSNOW(I))+DELZ1/(2.0*TCTOP(I,1)) C2(I)=DELZ1/(6.0*TCBOT(I,1)) C3(I)=DELZ1/(2.0*TCBOT(I,1))+DELZ(2)/(3.0*TCTOP(I,2)) C4=DELZ1/(2.0*TCBOT(I,1))+DELZ(2)/(2.0*TCTOP(I,2)) D3(I)=DELZ(2)/(6.0*TCBOT(I,2)) D4=DELZ(2)/(2.0*TCBOT(I,2))+DELZ(3)/(3.0*TCTOP(I,3)) GDENOM(I)=A1(I)*(B2(I)*(C3(I)*D4-C4*D3(I))- 1 C2(I)*(B3(I)*D4-B3(I)*D3(I))) 2 -B1(I)*(A2(I)*(C3(I)*D4-C4*D3(I))- 3 C2(I)*(A3(I)*D4-A2(I)*D3(I))) GCOEFF(I)=(B2(I)*(C3(I)*D4-C4*D3(I))- 1 C2(I)*(B3(I)*D4-B3(I)*D3(I))- 2 B1(I)*(C3(I)*D4-C4*D3(I)- 2 C2(I)*(D4-D3(I)))) /GDENOM(I) GCONST(I)=(-TSNOW(I)*(B2(I)*(C3(I)*D4-C4*D3(I))- 1 C2(I)*(B3(I)*D4-B3(I)*D3(I)))+TBAR1P(I)*B1(I)* 2 (C3(I)*D4-C4*D3(I))-TBAR(I,2)*B1(I)*C2(I)*D4+ 3 TBAR(I,3)*B1(I)*C2(I)*D3(I))/GDENOM(I) IWATER(I)=2 CPHCHG(I)=CLHVAP+CLHMLT TSTART(I)=TSNOW(I) ENDIF 100 CONTINUE C RETURN END