*IF DEF,A08_1A,OR,DEF,A08_5A GKR1F405.3 C ******************************COPYRIGHT****************************** GTS2F400.3205 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.3206 C GTS2F400.3207 C Use, duplication or disclosure of this code is subject to the GTS2F400.3208 C restrictions as set forth in the contract. GTS2F400.3209 C GTS2F400.3210 C Meteorological Office GTS2F400.3211 C London Road GTS2F400.3212 C BRACKNELL GTS2F400.3213 C Berkshire UK GTS2F400.3214 C RG12 2SZ GTS2F400.3215 C GTS2F400.3216 C If no contract has been raised with this copy of the code, the use, GTS2F400.3217 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.3218 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.3219 C Modelling at the above address. GTS2F400.3220 C ******************************COPYRIGHT****************************** GTS2F400.3221 ! SUBROUTINE FRUNOFF------------------------------------------------ APA1F405.125 ! APA1F405.126 ! Subroutine Interface: APA1F405.127SUBROUTINE FRUNOFF (NPNTS,R,TFALL,CAN_WCNT,CAN_CPY,INFIL,AREA 7APA1F405.128 &, RUNOFF,TIMESTEP) APA1F405.129 APA1F405.130 IMPLICIT NONE FRUNOF1A.32 ! APA1F405.131 ! Description: APA1F405.132 ! Calculates the fast (surface) runoff at the soil surface APA1F405.133 ! APA1F405.134 ! Documentation: APA1F405.135 ! APA1F405.136 ! Current Code Owner: Peter Cox APA1F405.137 ! APA1F405.138 ! History: APA1F405.139 ! Version Date Comment APA1F405.140 ! ------- ---- ------- APA1F405.141 ! 4.5 6/98 Options to interpret canopy moisture as bimodally APA1F405.142 ! rather than uniformily distributed, with either a APA1F405.143 ! random or maximum overlap of the wet canopy and APA1F405.144 ! the precipitating area (P.M.Cox) APA1F405.145 ! 4.5 01/10/98 Removed old section-version defs. K Rogers APA1F405.146 ! APA1F405.147 ! Code Description: APA1F405.148 ! Language: FORTRAN 77 + common extensions. APA1F405.149 ! APA1F405.150 ! System component covered: P25 APA1F405.151 ! System Task: P25 APA1F405.152 ! APA1F405.153 ! Subroutine arguments APA1F405.154 ! Scalar arguments with intent(IN): APA1F405.155 INTEGER APA1F405.156 & NPNTS ! IN Number of gridpoints. APA1F405.157 APA1F405.158 REAL APA1F405.159 & TIMESTEP ! IN Model timestep (s). APA1F405.160 &,AREA ! IN Fractional area of the gridbox over APA1F405.161 C ! which water falls. APA1F405.162 APA1F405.163 ! Array arguments with intent(IN): APA1F405.164 REAL APA1F405.165 & R(NPNTS) ! IN Flux of water incident on the APA1F405.166 C ! canopy (kg/m2/s). APA1F405.167 &,TFALL(NPNTS) ! IN Throughfall (kg/m2/s). APA1F405.168 &,CAN_WCNT(NPNTS) ! IN Canopy water content (kg/m2). APA1F405.169 &,CAN_CPY(NPNTS) ! IN Canopy capacity (kg/m2). APA1F405.170 &,INFIL(NPNTS) ! IN Maximum infiltration rate (kg/m2/s). APA1F405.171 APA1F405.172 ! Array arguments with intent(OUT): APA1F405.173 REAL APA1F405.174 & RUNOFF(NPNTS) ! OUT Surface runoff (kg/m2/s). APA1F405.175 APA1F405.176 ! Local scalars: APA1F405.177 INTEGER APA1F405.178 & I ! WORK Loop counter. APA1F405.179 APA1F405.180 REAL APA1F405.181 & AEXP,AEXP1,AEXP2 ! WORK Exponential terms. APA1F405.182 &,CAN_RATIO ! WORK Fractional saturation of the APA1F405.183 C ! canopy. APA1F405.184 &,CM ! WORK (CAN_CPY - CAN_WCNT)/TIMESTEP APA1F405.185 C ! (kg/m2/s). APA1F405.186 *IF DEF,SCMA,AND,-DEF,T3E APA1F405.187 REAL*8 BIG_TMP ! SCM double real. APA1F405.188 *ENDIF APA1F405.189 APA1F405.190 ! Local parameters: APA1F405.191 *CALL MOSES_OPT
APA1F405.192 APA1F405.193 C----------------------------------------------------------------------- FRUNOF1A.34 C Uniform canopy water APA1F405.194 C----------------------------------------------------------------------- FRUNOF1A.36 IF (TF_MODEL.EQ.1) THEN APA1F405.195 DO I=1,NPNTS APA1F405.196 IF (R(I).GT.0.0) THEN APA1F405.197 IF (INFIL(I)*TIMESTEP.LE.CAN_WCNT(I).AND. APA1F405.198 & CAN_CPY(I).GT.0.0) THEN APA1F405.199 C----------------------------------------------------------------------- FRUNOF1A.41 C Equation (P252.14A) APA1F405.200 C----------------------------------------------------------------------- FRUNOF1A.43 AEXP=AREA*CAN_CPY(I)/R(I) APA1F405.201 IF (CAN_WCNT(I).GT.0.0) THEN APA1F405.202 AEXP1=EXP(-AEXP*INFIL(I)/CAN_WCNT(I)) APA1F405.203 ELSE APA1F405.204 AEXP1=0.0 APA1F405.205 ENDIF APA1F405.206 AEXP2=EXP(-AEXP/TIMESTEP) APA1F405.207 CAN_RATIO=CAN_WCNT(I)/CAN_CPY(I) APA1F405.208 *IF DEF,SCMA,AND,-DEF,T3E APA1F405.209 IF (AEXP1 .LT. 1E-30) AEXP1=0.0 APA1F405.210 IF (AEXP2 .LT. 1E-30) AEXP2=0.0 APA1F405.211 BIG_TMP= DBLE(R(I)) * (DBLE(CAN_RATIO * AEXP1) + APA1F405.212 & (1.0 - CAN_RATIO)*AEXP2) APA1F405.213 IF (BIG_TMP .LT. 1E-35) BIG_TMP=0.0 APA1F405.214 RUNOFF(I)=BIG_TMP APA1F405.215 *ELSE APA1F405.216 RUNOFF(I)=R(I)*(CAN_RATIO*AEXP1+(1.0-CAN_RATIO)*AEXP2) APA1F405.217 *ENDIF APA1F405.218 ELSE APA1F405.219 C----------------------------------------------------------------------- FRUNOF1A.60 C Equation (P254.14B) APA1F405.220 C----------------------------------------------------------------------- FRUNOF1A.62 CM=(CAN_CPY(I)-CAN_WCNT(I))/TIMESTEP APA1F405.221 *IF DEF,SCMA,AND,-DEF,T3E APA1F405.222 IF (( AREA*(INFIL(I)+CM)/R(I)) .GT. 30) THEN APA1F405.223 AEXP=0 APA1F405.224 ELSE APA1F405.225 AEXP = EXP( -AREA*(INFIL(I)+CM)/R(I)) APA1F405.226 ENDIF APA1F405.227 BIG_TMP=DBLE(R(I))*AEXP APA1F405.228 IF (BIG_TMP .LT. 1E-35) THEN APA1F405.229 RUNOFF(I)=0. APA1F405.230 ELSE APA1F405.231 RUNOFF(I)=BIG_TMP APA1F405.232 ENDIF APA1F405.233 *ELSE APA1F405.234 AEXP=EXP(-AREA*(INFIL(I)+CM)/R(I)) APA1F405.235 RUNOFF(I)=R(I)*AEXP APA1F405.236 *ENDIF APA1F405.237 ENDIF APA1F405.238 ELSE APA1F405.239 RUNOFF(I)=R(I) APA1F405.240 ENDIF APA1F405.241 ENDDO APA1F405.242 APA1F405.243 C----------------------------------------------------------------------- FRUNOF1A.67 C Bimodal canopy water APA1F405.244 C----------------------------------------------------------------------- FRUNOF1A.69 ELSEIF (TF_MODEL.EQ.2.OR.TF_MODEL.EQ.3) THEN APA1F405.245 DO I=1,NPNTS APA1F405.246 IF (R(I).GT.0.0) THEN APA1F405.247 *IF DEF,SCMA,AND,-DEF,T3E APA1F405.248 IF (( AREA*(INFIL(I))/R(I)) .GT. 30) THEN APA1F405.249 RUNOFF(I)= 0 APA1F405.250 ELSE APA1F405.251 RUNOFF(I)=TFALL(I)*EXP(-AREA*INFIL(I)/R(I)) APA1F405.252 ENDIF APA1F405.253 *ELSE APA1F405.254 RUNOFF(I)=TFALL(I)*EXP(-AREA*INFIL(I)/R(I)) APA1F405.255 *ENDIF APA1F405.256 ELSE APA1F405.257 RUNOFF(I)=R(I) APA1F405.258 ENDIF APA1F405.259 ENDDO APA1F405.260 ENDIF APA1F405.261 RETURN FRUNOF1A.153 END FRUNOF1A.154 *ENDIF FRUNOF1A.155