*IF DEF,A08_5A SMROOT5A.2
C *****************************COPYRIGHT****************************** SMROOT5A.3
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. SMROOT5A.4
C SMROOT5A.5
C Use, duplication or disclosure of this code is subject to the SMROOT5A.6
C restrictions as set forth in the contract. SMROOT5A.7
C SMROOT5A.8
C Meteorological Office SMROOT5A.9
C London Road SMROOT5A.10
C BRACKNELL SMROOT5A.11
C Berkshire UK SMROOT5A.12
C RG12 2SZ SMROOT5A.13
C SMROOT5A.14
C If no contract has been raised with this copy of the code, the use, SMROOT5A.15
C duplication or disclosure of it is strictly prohibited. Permission SMROOT5A.16
C to do so must first be obtained in writing from the Head of Numerical SMROOT5A.17
C Modelling at the above address. SMROOT5A.18
C ******************************COPYRIGHT****************************** SMROOT5A.19
! SUBROUTINE SMC_ROOT---------------------------------------------- SMROOT5A.20
! SMROOT5A.21
! Subroutine Interface: SMROOT5A.22
SUBROUTINE SMC_ROOT (NPNTS,NSHYD,F_TYPE,DZ,ROOTD,STHU,VFRAC, 3,2APA1F405.262
& V_SAT,V_WILT,SMC,V_ROOT,V_SOIL,WT_EXT,LTIMER) APA1F405.263
SMROOT5A.25
IMPLICIT NONE SMROOT5A.26
! SMROOT5A.27
! Description: SMROOT5A.28
! Calculates the volumetric soil moisture in the top soil layer, SMROOT5A.29
! the volumetric soil moisture in the rootzone, the gridbox mean SMROOT5A.30
! available soil moisture, and the fraction of the transpiration SMROOT5A.31
! which is extracted from each soil layer. (Cox, 2/96) SMROOT5A.32
! SMROOT5A.33
! SMROOT5A.34
! Documentation : UM Documentation Paper 25 SMROOT5A.35
! SMROOT5A.36
! Current Code Owner : David Gregory SMROOT5A.37
! SMROOT5A.38
! History: SMROOT5A.39
! Version Date Comment SMROOT5A.40
! ------- ---- ------- SMROOT5A.41
! 4.1 New deck Peter Cox SMROOT5A.42
!LL 4.5 18/06/98 Changed Timer calls to indicate non-barrier GPB8F405.51
!LL P.Burton GPB8F405.52
! 4.5 6/98 Optional exponential root profile Peter Cox APA1F405.264
! SMROOT5A.43
! Code Description: SMROOT5A.44
! Language: FORTRAN 77 + common extensions. SMROOT5A.45
! SMROOT5A.46
! System component covered: P25 SMROOT5A.47
! System Task: P25 SMROOT5A.48
! SMROOT5A.49
SMROOT5A.50
! Global variables: SMROOT5A.51
*CALL C_DENSTY
SMROOT5A.52
*CALL C_SOILH
SMROOT5A.53
*CALL MOSES_OPT
APA1F405.265
SMROOT5A.54
! Subroutine arguments: SMROOT5A.55
! Scalar arguments with intent(IN) : SMROOT5A.56
INTEGER SMROOT5A.57
& NPNTS ! IN Number of gridpoints. SMROOT5A.58
&,NSHYD ! IN Number of soil moisture levels. SMROOT5A.59
&,F_TYPE(NPNTS) ! IN Plant functional type: SMROOT5A.60
! ! 1 - Broadleaf tree SMROOT5A.61
! ! 2 - Needleleaf tree SMROOT5A.62
! ! 3 - C3 Grass SMROOT5A.63
! ! 4 - C4 Grass SMROOT5A.64
SMROOT5A.65
! Array arguments with intent(IN) : SMROOT5A.66
REAL SMROOT5A.67
& DZ(NSHYD) ! IN Soil layer thicknesses (m). SMROOT5A.68
&,ROOTD(NSHYD) ! IN Rootdepth (m). APA1F405.266
&,STHU(NPNTS,NSHYD) ! IN Unfrozen soil moisture content of SMROOT5A.69
! ! each layer as a fraction of SMROOT5A.70
! ! saturation. SMROOT5A.71
&,VFRAC(NPNTS) ! IN Vegetated fraction. SMROOT5A.72
&,V_SAT(NPNTS) ! IN Volumetric soil moisture SMROOT5A.73
! ! concentration at saturation SMROOT5A.74
! ! (m3 H2O/m3 soil). SMROOT5A.75
&,V_WILT(NPNTS) ! IN Volumetric soil moisture SMROOT5A.76
! ! concentration below which SMROOT5A.77
! ! stomata close (m3 H2O/m3 soil). SMROOT5A.78
SMROOT5A.79
LOGICAL LTIMER ! Logical switch for TIMER diags SMROOT5A.80
SMROOT5A.81
! Array arguments with intent(OUT) : SMROOT5A.82
REAL SMROOT5A.83
& SMC(NPNTS) ! OUT Available soil moisture in the SMROOT5A.84
! ! rootzone (kg/m2). SMROOT5A.85
&,V_ROOT(NPNTS) ! OUT Volumetric soil moisture SMROOT5A.86
! ! concentration in the rootzone SMROOT5A.87
! ! (m3 H2O/m3 soil). SMROOT5A.88
&,V_SOIL(NPNTS) ! OUT Volumetric soil moisture SMROOT5A.89
! ! concentration in the top soil SMROOT5A.90
! ! layer (m3 H2O/m3 soil). SMROOT5A.91
&,WT_EXT(NPNTS,NSHYD) ! OUT Fraction of transpiration extracted SMROOT5A.92
! ! from each soil layer (kg/m2/s). SMROOT5A.93
! Local scalars: SMROOT5A.94
INTEGER SMROOT5A.95
& I,J,N ! WORK Loop counters SMROOT5A.96
SMROOT5A.97
! Local arrays: SMROOT5A.98
REAL SMROOT5A.99
& RHO_ROOT(NPNTS,NSHYD)! WORK Density of roots in each soil layer SMROOT5A.100
! ! (normalised). SMROOT5A.101
&,RHO_RNORM(NPNTS) ! WORK Normalisation factor for RHO_ROOT. APA1F405.267
&,SMCLA(NPNTS,NSHYD) ! WORK Available soil moisture in each SMROOT5A.102
! ! layer (scaled with root density) SMROOT5A.103
! ! (kg/m2) SMROOT5A.104
&,Z(0:NSHYD) ! WORK Depths of soil layer boundaries (m). APA1F405.268
&,Z_ROOT(NPNTS) ! WORK Rootdepth of the vegetated area (m). SMROOT5A.105
SMROOT5A.106
!---------------------------------------------------------------------- SMROOT5A.107
! Functional type dependent parameters SMROOT5A.108
!---------------------------------------------------------------------- SMROOT5A.109
INTEGER SMROOT5A.110
& R_LAYERS(4) ! Number of soil layers from which water SMROOT5A.111
! ! can be extracted. SMROOT5A.112
!---------------------------------------------------------------------- SMROOT5A.113
! BT NT C3G C4G SMROOT5A.114
!---------------------------------------------------------------------- SMROOT5A.115
DATA R_LAYERS/ 4, 4, 3, 3/ SMROOT5A.116
SMROOT5A.117
SMROOT5A.118
IF (LTIMER) THEN SMROOT5A.119
CALL TIMER
('SMROOT ',103) GPB8F405.53
ENDIF SMROOT5A.121
SMROOT5A.122
!---------------------------------------------------------------------- SMROOT5A.123
! Initialisations SMROOT5A.124
!---------------------------------------------------------------------- SMROOT5A.125
DO I=1,NPNTS SMROOT5A.126
SMC(I)=0.0 SMROOT5A.127
V_ROOT(I)=0.0 SMROOT5A.128
Z_ROOT(I)=0.0 SMROOT5A.129
RHO_RNORM(I)=1.0 APA1F405.269
V_SOIL(I)=STHU(I,1)*V_SAT(I) SMROOT5A.130
ENDDO SMROOT5A.131
SMROOT5A.132
APA1F405.270
!---------------------------------------------------------------------- SMROOT5A.133
! Calculate the root density in each layer, assuming either: APA1F405.271
! An exponential profile APA1F405.272
!---------------------------------------------------------------------- SMROOT5A.136
IF (REX_MODEL .EQ. 2) THEN APA1F405.273
APA1F405.274
Z(0)=0.0 APA1F405.275
DO N=1,NSHYD APA1F405.276
Z(N)=Z(N-1)+DZ(N) APA1F405.277
ENDDO APA1F405.278
APA1F405.279
DO I=1,NPNTS SMROOT5A.138
!---------------------------------------------------------------------- APA1F405.280
! Assume here that the gridbox mean rootdepth includes a contribution APA1F405.281
! of 0.1m from the non-vegetated area APA1F405.282
!---------------------------------------------------------------------- APA1F405.283
IF (VFRAC(I).GT.0.0) THEN APA1F405.284
Z_ROOT(I)=(ROOTD(I)-0.1*(1.0-VFRAC(I)))/VFRAC(I) APA1F405.285
ELSE APA1F405.286
Z_ROOT(I)=0.0 APA1F405.287
ENDIF APA1F405.288
APA1F405.289
IF (Z_ROOT(I).GT.0.0) THEN APA1F405.290
RHO_RNORM(I)=(1-EXP(-Z(NSHYD)/Z_ROOT(I)))/Z_ROOT(I) APA1F405.291
ENDIF APA1F405.292
ENDDO APA1F405.293
APA1F405.294
DO N=1,NSHYD APA1F405.295
DO I=1,NPNTS APA1F405.296
IF (V_SAT(I).GT.0.0 .AND. Z_ROOT(I).GT.0.0) THEN APA1F405.297
RHO_ROOT(I,N)=(EXP(-Z(N-1)/Z_ROOT(I)) APA1F405.298
& -EXP(-Z(N)/Z_ROOT(I)))/(DZ(N)*RHO_RNORM(I)) APA1F405.299
ENDIF APA1F405.300
ENDDO APA1F405.301
ENDDO APA1F405.302
APA1F405.303
!---------------------------------------------------------------------- APA1F405.304
! A uniform profile APA1F405.305
!---------------------------------------------------------------------- APA1F405.306
ELSE APA1F405.307
APA1F405.308
DO N=1,NSHYD APA1F405.309
DO I=1,NPNTS APA1F405.310
IF (R_LAYERS(F_TYPE(I)).GE.N) THEN APA1F405.311
RHO_ROOT(I,N)=1.0 APA1F405.312
Z_ROOT(I)=Z_ROOT(I)+DZ(N) APA1F405.313
ELSE APA1F405.314
RHO_ROOT(I,N)=0.0 APA1F405.315
ENDIF APA1F405.316
ENDDO APA1F405.317
ENDDO APA1F405.318
APA1F405.319
ENDIF APA1F405.320
SMROOT5A.147
!---------------------------------------------------------------------- SMROOT5A.148
! Calculate the volumetric soil moisture in the rootzone and the SMROOT5A.149
! available moisture in each soil layer. Only do calculation for SMROOT5A.150
! non land-ice points (V_SAT is set to zero for land-ice points). SMROOT5A.151
!---------------------------------------------------------------------- SMROOT5A.152
DO N=1,NSHYD SMROOT5A.153
DO I=1,NPNTS SMROOT5A.154
SMROOT5A.155
IF (V_SAT(I).GT.0.0 .AND. Z_ROOT(I).GT.0.0) THEN SMROOT5A.156
V_ROOT(I)=V_ROOT(I)+RHO_ROOT(I,N)*STHU(I,N) SMROOT5A.157
& *V_SAT(I)*(DZ(N)/Z_ROOT(I)) SMROOT5A.158
SMCLA(I,N)=RHO_ROOT(I,N)*(STHU(I,N)*V_SAT(I)-V_WILT(I)) SMROOT5A.159
& *RHO_WATER*DZ(N) SMROOT5A.160
SMCLA(I,N)=MAX(SMCLA(I,N),0.0) SMROOT5A.161
SMC(I)=SMC(I)+SMCLA(I,N) SMROOT5A.162
ENDIF SMROOT5A.163
SMROOT5A.164
ENDDO SMROOT5A.165
ENDDO SMROOT5A.166
SMROOT5A.167
!---------------------------------------------------------------------- SMROOT5A.168
! Calculate the fraction of the tranpiration which is extracted from SMROOT5A.169
! each soil layer. SMROOT5A.170
!---------------------------------------------------------------------- SMROOT5A.171
DO N=1,NSHYD SMROOT5A.172
DO I=1,NPNTS SMROOT5A.173
SMROOT5A.174
IF (V_SAT(I).GT.0.0) THEN SMROOT5A.175
SMROOT5A.176
IF (SMC(I).GT.0.0) THEN SMROOT5A.177
WT_EXT(I,N)=SMCLA(I,N)/SMC(I) SMROOT5A.178
ELSE SMROOT5A.179
WT_EXT(I,N)=0.0 SMROOT5A.180
ENDIF SMROOT5A.181
ELSE SMROOT5A.182
WT_EXT(I,N)=0.0 SMROOT5A.183
ENDIF SMROOT5A.184
SMROOT5A.185
ENDDO SMROOT5A.186
ENDDO SMROOT5A.187
SMROOT5A.188
!--------------------------------------------------------------------- SMROOT5A.189
! Diagnose the gridbox mean available soil moisture SMROOT5A.190
!--------------------------------------------------------------------- SMROOT5A.191
DO I=1,NPNTS SMROOT5A.192
SMC(I)=VFRAC(I)*SMC(I) SMROOT5A.193
& +(1-VFRAC(I))*RHO_WATER*DZ(1)* SMROOT5A.194
& MAX(0.0,(V_SOIL(I)-V_WILT(I))) SMROOT5A.195
ENDDO SMROOT5A.196
SMROOT5A.197
IF (LTIMER) THEN SMROOT5A.198
CALL TIMER
('SMROOT ',104) GPB8F405.54
ENDIF SMROOT5A.200
SMROOT5A.201
RETURN SMROOT5A.202
END SMROOT5A.203
*ENDIF SMROOT5A.204