SURFEX v7.3
General documentation of Surfex
|
00001 SUBROUTINE TRIP_SURFACE_WATER_FLOOD (KLUOUT,PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY, & 00002 KSEQMAX,PLEN,PFLOOD_LEN,PSLOPEBED, & 00003 PWIDTH,PN,PN_FLOOD,PHC,PHFLOOD,PRUNOFF, & 00004 PSURF_STO,PSURF_STO2,PGOUT,PSOURCE, & 00005 PFLOOD_STO,PFLOOD_STO2,PSOUT,PVEL,PHS, & 00006 PFFLOOD,PAREA,PQFR,PQRF,PVFIN,PVFOUT, & 00007 PHSF,PSIN, & 00008 PSSTO_ALL,PSSTO2_ALL,PSIN_ALL,PDRUN_ALL, & 00009 PSOUT_ALL,PVEL_ALL,PFSTO_ALL,PFSTO2_ALL, & 00010 PSOURCE_ALL,PFIN_ALL,PFOUT_ALL,PWFLOOD, & 00011 PSFLOOD_ALL,PHS_ALL,PTAB_F,PTAB_H, & 00012 PTAB_VF,KTABMAX ) 00013 ! ################################################################ 00014 ! 00015 !!**** *TRIP_SURFACE_WATER_FLOOD* 00016 !! 00017 !! PURPOSE 00018 !! ------- 00019 ! 00020 ! Calculate the river and flood storage in the next time step based on storages 00021 ! of current time step using the Manning equation and the Arora (1999) 00022 ! variable flow velocity scheme. 00023 ! Numérical method = RK Ordre 4 Rang 4: 00024 ! 00025 ! Point de depart : X0(t) =X(t) 00026 ! point intermediaire K1: X1(t+dt/2)=X(t) + dt/2 * F(X0(t)) 00027 ! point intermediaire K2: X2(t+dt/2)=X(t) + dt/2 * F(X1(t+dt/2)) 00028 ! point intermediaire K3: X3(t+dt) =X(t) + dt * F(X2(t+dt/2)) 00029 ! point final K4: F(X3(t+dt)) 00030 ! 00031 ! point Final: X(t+dt)=X(t)+dt/6*(F(X0(t))+2*F(X1(t+dt/2))+2*F(X2(t+dt/2))+F(X3(t+dt))) 00032 ! 00033 !!** METHOD 00034 !! ------ 00035 ! 00036 ! RK Ordre 4 Rang 4 00037 ! 00038 !! EXTERNAL 00039 !! -------- 00040 ! 00041 ! None 00042 !! 00043 !! IMPLICIT ARGUMENTS 00044 !! ------------------ 00045 !! 00046 !! 00047 !! REFERENCE 00048 !! --------- 00049 !! 00050 !! AUTHOR 00051 !! ------ 00052 !! B. Decharme 00053 !! 00054 !! MODIFICATIONS 00055 !! ------------- 00056 !! Original 01/02/09 00057 !------------------------------------------------------------------------------- 00058 ! 00059 !* 0. DECLARATIONS 00060 ! ------------ 00061 ! 00062 USE MODD_TRIP_PAR, ONLY : XRHOLW_T 00063 ! 00064 USE MODE_TRIP_FUNCTION 00065 ! 00066 USE MODI_FLOOD_UPDATE 00067 ! 00068 IMPLICIT NONE 00069 ! 00070 !* 0.1 declarations of arguments 00071 ! 00072 INTEGER, INTENT(IN) :: KLUOUT 00073 ! 00074 REAL, INTENT(IN) :: PTSTEP ! Trip timestep value (10800s) 00075 ! 00076 INTEGER, DIMENSION(:,:),INTENT(IN) :: KGRCN ! Flow direction (1->8) 00077 INTEGER, DIMENSION(:,:),INTENT(IN) :: KSEQ ! River sequence 00078 INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTX ! returns x and y point 00079 INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTY ! of destination grid: 00080 ! 8 1 2 00081 ! 7 3 00082 ! 6 5 4 00083 ! 00084 INTEGER, INTENT(IN) :: KSEQMAX ! maximum down flow 00085 ! 00086 REAL,DIMENSION(:,:), INTENT(IN) :: PLEN ! river length [m] 00087 REAL,DIMENSION(:,:), INTENT(IN) :: PSLOPEBED ! river bed slopes [m/m] 00088 REAL,DIMENSION(:,:), INTENT(IN) :: PWIDTH ! river widths [m] 00089 REAL,DIMENSION(:,:), INTENT(IN) :: PN ! Manning roughness coeficient [-] (0.03 to 0.065) 00090 REAL,DIMENSION(:,:), INTENT(IN) :: PN_FLOOD ! Manning coeficient over floodplains [-] (0.1) 00091 REAL,DIMENSION(:,:), INTENT(IN) :: PHC ! River bed depth [m] 00092 REAL,DIMENSION(:,:), INTENT(IN) :: PSOURCE ! precip-infiltration-evaporation [kg/s] 00093 REAL,DIMENSION(:,:), INTENT(IN) :: PAREA ! Grid-cell area [mē] 00094 REAL,DIMENSION(:,:), INTENT(IN) :: PRUNOFF ! Surface runoff from ISBA [kg/s] 00095 REAL,DIMENSION(:,:), INTENT(IN) :: PGOUT ! ground water outflow [kg/s] 00096 REAL,DIMENSION(:,:), INTENT(IN) :: PSURF_STO ! river channel storage at t [kg] 00097 REAL,DIMENSION(:,:), INTENT(IN) :: PFLOOD_STO ! Floodplain water storage at t [kg] 00098 ! 00099 REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_F ! Flood fraction array 00100 REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_H ! Topo height array 00101 REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_VF ! Flood volume array 00102 INTEGER, DIMENSION(:,:),INTENT(IN) :: KTABMAX 00103 ! 00104 REAL,DIMENSION(:,:), INTENT(INOUT) :: PSURF_STO2 ! river channel storage at t+1 [kg] 00105 REAL,DIMENSION(:,:), INTENT(INOUT) :: PFLOOD_STO2! Floodplain water storage at t+1 [kg] 00106 ! 00107 REAL,DIMENSION(:,:), INTENT(OUT) :: PHFLOOD ! Floodplain water depth [m] 00108 REAL,DIMENSION(:,:), INTENT(OUT) :: PWFLOOD ! Floodplain width [m] 00109 REAL,DIMENSION(:,:), INTENT(OUT) :: PFLOOD_LEN ! Floodplain length along the river [m] 00110 REAL,DIMENSION(:,:), INTENT(OUT) :: PFFLOOD ! Fraction of flood [-] 00111 ! 00112 REAL,DIMENSION(:,:), INTENT(OUT) :: PSIN ! Inflow to the surface river reservoir [kg/s] 00113 REAL,DIMENSION(:,:), INTENT(OUT) :: PSOUT ! Outflow from the surface river reservoir [kg/s] 00114 REAL,DIMENSION(:,:), INTENT(OUT) :: PVEL ! River channel velocity [m/s] 00115 REAL,DIMENSION(:,:), INTENT(OUT) :: PHS 00116 REAL,DIMENSION(:,:), INTENT(OUT) :: PQFR ! Flood flow to river 00117 REAL,DIMENSION(:,:), INTENT(OUT) :: PQRF ! River flow to floodplain 00118 ! 00119 REAL,DIMENSION(:,:), INTENT(OUT) :: PVFIN ! River flow to flood velocity [m/s] 00120 REAL,DIMENSION(:,:), INTENT(OUT) :: PVFOUT! Flood flow to river velocity [m/s] 00121 REAL,DIMENSION(:,:), INTENT(OUT) :: PHSF ! River-Floodplain depth comparison [m] during dt 00122 ! 00123 REAL, INTENT(OUT) :: PSSTO_ALL,PSSTO2_ALL,PSIN_ALL, 00124 PDRUN_ALL,PSOUT_ALL,PVEL_ALL, 00125 PFSTO_ALL,PFSTO2_ALL,PSOURCE_ALL, 00126 PFIN_ALL,PFOUT_ALL,PSFLOOD_ALL,PHS_ALL 00127 ! Final budget variable 00128 ! 00129 !* 0.2 declarations of local variables 00130 ! 00131 REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZQIN 00132 ! 00133 INTEGER :: ILON, ILAT, I, J, ISEQ 00134 ! 00135 REAL :: ZVELCOEF,ZQOUT,ZAREA,ZTSTEP,ZSTOMAX,ZDELTA, 00136 ZFLOOD_STO,ZRECUP,ZFOUT,ZHF,ZWF,ZLF,ZFF 00137 ! 00138 REAL :: ZS1,ZS2,ZS3 00139 REAL :: ZF1,ZF2,ZF3 00140 REAL :: ZK1,ZK2,ZK3,ZK4 00141 REAL :: ZQ1,ZQ2,ZQ3,ZQ4 00142 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00143 ! 00144 !------------------------------------------------------------------------------- 00145 !------------------------------------------------------------------------------- 00146 ! 00147 IF (LHOOK) CALL DR_HOOK('MODI_TRIP_SURFACE_WATER_FLOOD:TRIP_SURFACE_WATER_FLOOD',0,ZHOOK_HANDLE) 00148 ILON = SIZE(PLEN,1) 00149 ILAT = SIZE(PLEN,2) 00150 ! 00151 !------------------------------------------------------------------------------- 00152 !------------------------------------------------------------------------------- 00153 ! 00154 PSURF_STO2 (:,:) = 0.0 00155 PSIN (:,:) = 0.0 00156 PSOUT (:,:) = 0.0 00157 PVEL (:,:) = 0.0 00158 PHS (:,:) = 0.0 00159 PFLOOD_STO2(:,:) = 0.0 00160 ! 00161 PVFIN (:,:) = 0.0 00162 PVFOUT (:,:) = 0.0 00163 PHSF (:,:) = 0.0 00164 ! 00165 ZQIN (:,:) = 0.0 00166 ! 00167 PFSTO_ALL = 0.0 00168 PFSTO2_ALL = 0.0 00169 PSOURCE_ALL = 0.0 00170 PSSTO_ALL = 0.0 00171 PSSTO2_ALL = 0.0 00172 PSIN_ALL = 0.0 00173 PDRUN_ALL = 0.0 00174 PSOUT_ALL = 0.0 00175 PVEL_ALL = 0.0 00176 PFIN_ALL = 0.0 00177 PFOUT_ALL = 0.0 00178 PSFLOOD_ALL = 0.0 00179 PHS_ALL=0.0 00180 ! 00181 ZAREA=SUM(PAREA,PLEN>0.0) 00182 ! 00183 !------------------------------------------------------------------------------- 00184 !Sequence loop 00185 ! 00186 DO ISEQ=1,KSEQMAX 00187 DO J=1,ILAT 00188 DO I=1,ILON 00189 ! 00190 IF(KSEQ(I,J)/=ISEQ.OR.KSEQ(I,J)==0)CYCLE 00191 ! 00192 ! --------------------------------------------------------------------- 00193 ! inflow calculation 00194 ! 00195 ZQIN(I,J)=ZQIN(I,J)+PRUNOFF(I,J)+PGOUT(I,J) 00196 PDRUN_ALL=PDRUN_ALL+PRUNOFF(I,J)+PGOUT(I,J) 00197 ! 00198 PSIN(I,J)=ZQIN(I,J) 00199 ! 00200 IF(PN(I,J)>0.0)THEN 00201 ZVELCOEF=SQRT(PSLOPEBED(I,J))/PN(I,J) 00202 ELSE 00203 ZVELCOEF=0.0 00204 ENDIF 00205 ! 00206 ! ------------------------------------------------------------------ 00207 ! Update the floodplain storage due to source (Precip inter - LEf - Infil) 00208 ZFLOOD_STO=PFLOOD_STO(I,J)+PTSTEP*PSOURCE(I,J) 00209 ZRECUP =MIN(ZFLOOD_STO,0.0) 00210 ZFLOOD_STO=MAX(ZFLOOD_STO,0.0) 00211 ! 00212 CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & 00213 PAREA(I,J),ZFLOOD_STO,ZHF,ZFF,ZLF,ZWF) 00214 ! 00215 ! ------------------------------------------------------------------ 00216 ! delta calculation to resolve the end of a flood event without Runge Kutta 00217 ! ie : if delta=1, the flood is very small, so it run off directly to the stream 00218 ZDELTA=DELTA_FLOOD(PSURF_STO(I,J),ZFLOOD_STO,ZHF,ZLF,ZWF,PHC(I,J),PWIDTH(I,J),PLEN(I,J)) 00219 ! 00220 ! ------------------------------------------------------------------ 00221 ! Runge Kutta 4 00222 ! ------------------------------------------------------------------ 00223 ! 00224 ! 1----------------------------------------------------------------- 00225 ZTSTEP=PTSTEP/2.0 00226 ! 00227 ZQ1=FUNCFLOOD(PSURF_STO(I,J),ZFLOOD_STO,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) 00228 ZK1=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),PSURF_STO(I,J),PSIN(I,J)) 00229 ! 00230 ZF1=ZFLOOD_STO +ZTSTEP*ZQ1 00231 ZS1=PSURF_STO(I,J)+ZTSTEP*(ZK1-ZQ1) 00232 ! 00233 CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & 00234 PAREA(I,J),ZF1,ZHF,ZFF,ZLF,ZWF) 00235 ! 00236 ! 2----------------------------------------------------------------- 00237 ZTSTEP=PTSTEP/2.0 00238 ! 00239 ZQ2=FUNCFLOOD(ZS1,ZF1,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) 00240 ZK2=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS1,PSIN(I,J)) 00241 ! 00242 ZF2=ZFLOOD_STO +ZTSTEP*ZQ2 00243 ZS2=PSURF_STO(I,J)+ZTSTEP*(ZK2-ZQ2) 00244 ! 00245 CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & 00246 PAREA(I,J),ZF2,ZHF,ZFF,ZLF,ZWF) 00247 ! 00248 ! 3----------------------------------------------------------------- 00249 ZTSTEP=PTSTEP 00250 ! 00251 ZQ3=FUNCFLOOD(ZS2,ZF2,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) 00252 ZK3=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS2,PSIN(I,J)) 00253 ! 00254 ZF3=ZFLOOD_STO +ZTSTEP*ZQ3 00255 ZS3=PSURF_STO(I,J)+ZTSTEP*(ZK3-ZQ3) 00256 ! 00257 CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & 00258 PAREA(I,J),ZF3,ZHF,ZFF,ZLF,ZWF) 00259 ! 00260 ! 4----------------------------------------------------------------- 00261 ! 00262 ZQ4=FUNCFLOOD(ZS3,ZF3,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) 00263 ZK4=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS3,PSIN(I,J)) 00264 ! 00265 ! Final points------------------------------------------------------ 00266 ZTSTEP=PTSTEP/6.0 00267 ! 00268 PFLOOD_STO2(I,J)=ZFLOOD_STO +ZTSTEP*(ZQ1+2.0*ZQ2+2.0*ZQ3+ZQ4)-ZDELTA*ZFLOOD_STO 00269 PSURF_STO2 (I,J)=PSURF_STO(I,J)+ZTSTEP*(ZK1-ZQ1+2.0*(ZK2-ZQ2)+2.0*(ZK3-ZQ3)+ZK4-ZQ4)+ZDELTA*ZFLOOD_STO 00270 ! ------------------------------------------------------------------- 00271 ! supress numerical artifacs 00272 IF(PSURF_STO2(I,J)<=0.0.AND.PFLOOD_STO2(I,J)>0.0)THEN 00273 WRITE(KLUOUT,*)'-------------------------------------------------------' 00274 WRITE(KLUOUT,*)'Stream reservoir (kg/mē) :',PSURF_STO2 (I,J)/PAREA(I,J) 00275 WRITE(KLUOUT,*)'Flood reservoir (kg/mē) :',PFLOOD_STO2(I,J)/PAREA(I,J) 00276 WRITE(KLUOUT,*)'Longitude index :',I,'Latitude index :',J 00277 PSURF_STO2 (I,J)=MIN(PLEN(I,J)*PWIDTH(I,J)*PHC(I,J)*XRHOLW_T,PFLOOD_STO2(I,J)) 00278 PFLOOD_STO2(I,J)=MAX(0.0,PFLOOD_STO2(I,J)-PSURF_STO2 (I,J)) 00279 WRITE(KLUOUT,*)'Stream reservoir (kg/mē) :',PSURF_STO2 (I,J)/PAREA(I,J) 00280 WRITE(KLUOUT,*)'Flood reservoir (kg/mē) :',PFLOOD_STO2(I,J)/PAREA(I,J) 00281 WRITE(KLUOUT,*)'-------------------------------------------------------' 00282 ENDIF 00283 ! 00284 IF(PSURF_STO2(I,J)<0.0)THEN 00285 WRITE(KLUOUT,*)'-------------------------------------------------------' 00286 WRITE(KLUOUT,*)'TRIP_SURFACE_WATER_FLOOD : Stream reservoir is negatif ' 00287 WRITE(KLUOUT,*)' after RK ' 00288 WRITE(KLUOUT,*)'Stream reservoir (kg/mē) :',PSURF_STO2(I,J)/PAREA(I,J) 00289 WRITE(KLUOUT,*)'Stream reservoir in (kg/mē) :',PSURF_STO (I,J)/PAREA(I,J) 00290 WRITE(KLUOUT,*)'Flood reservoir (kg/mē) :',PFLOOD_STO2(I,J)/PAREA(I,J) 00291 WRITE(KLUOUT,*)'Longitude index :',I,'Latitude index :',J 00292 WRITE(KLUOUT,*)'Perhaps TRIP time step too big : ',PTSTEP 00293 WRITE(KLUOUT,*)'-------------------------------------------------------' 00294 STOP 00295 ENDIF 00296 ! 00297 ! ------------------------------------------------------------------- 00298 ! total flood flux 00299 ZFOUT = (ZFLOOD_STO-PFLOOD_STO2(I,J))/PTSTEP 00300 ! 00301 ! ------------------------------------------------------------------- 00302 ! supress numerical artifacs 00303 ZSTOMAX=(ZQIN(I,J)+ZFOUT)*PTSTEP+PSURF_STO(I,J) 00304 ! 00305 PSURF_STO2(I,J)=MIN(ZSTOMAX,PSURF_STO2(I,J)) 00306 ! 00307 ! ------------------------------------------------------------------ 00308 ! river channel outflow calculation and supress numerical artifacs 00309 ! 00310 ZQOUT = (PSURF_STO(I,J)-PSURF_STO2(I,J))/PTSTEP+ZQIN(I,J)+ZFOUT 00311 PSOUT(I,J) = MAX(ZQOUT,0.0) 00312 ! 00313 PSURF_STO2(I,J) = PSURF_STO2(I,J) + (PSOUT(I,J)-ZQOUT) 00314 ! 00315 ! ------------------------------------------------------------------ 00316 ! river channel height and velocity diagnostic 00317 ! 00318 IF(ZVELCOEF==0.0)THEN 00319 PHS(I,J)=0.0 00320 ELSE 00321 PHS(I,J)=PSURF_STO2(I,J)/(XRHOLW_T*PLEN(I,J)*PWIDTH(I,J)) 00322 ENDIF 00323 ! 00324 PVEL(I,J)=DIAGVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),PHS(I,J)) 00325 ! 00326 ! ------------------------------------------------------------------- 00327 ! supress numerical artifacs 00328 ! 00329 ZRECUP=ZRECUP+MIN(PFLOOD_STO2(I,J),0.0) 00330 PFLOOD_STO2(I,J)=MAX(PFLOOD_STO2(I,J),0.0) 00331 ! 00332 PSURF_STO2(I,J) =PSURF_STO2(I,J)+ZRECUP 00333 ! 00334 ! ------------------------------------------------------------------- 00335 IF(PSURF_STO2(I,J)<0.0)THEN 00336 WRITE(KLUOUT,*)'-------------------------------------------------------' 00337 WRITE(KLUOUT,*)'TRIP_SURFACE_WATER_FLOOD : Stream reservoir is negatif ' 00338 WRITE(KLUOUT,*)' when supress numerical artifacs ' 00339 WRITE(KLUOUT,*)'Stream reservoir (kg/mē) :',PSURF_STO2 (I,J)/PAREA(I,J) 00340 WRITE(KLUOUT,*)'Recup (kg/mē) :',ZRECUP/PAREA(I,J) 00341 WRITE(KLUOUT,*)'Flood reservoir in (kg/mē) :',ZFLOOD_STO/PAREA(I,J) 00342 WRITE(KLUOUT,*)'Flood reservoir end (kg/mē) :',PFLOOD_STO2(I,J)/PAREA(I,J) 00343 WRITE(KLUOUT,*)'Longitude index :',I,'Latitude index :',J 00344 WRITE(KLUOUT,*)'Perhaps TRIP time step too big : ',PTSTEP 00345 WRITE(KLUOUT,*)'-------------------------------------------------------' 00346 STOP 00347 ENDIF 00348 ! 00349 ! ------------------------------------------------------------------ 00350 ! flood diag using flood variables at t and stream variables at t+dt 00351 ! 00352 PQFR(I,J)= MAX(0.0,ZFOUT) 00353 PQRF(I,J)=ABS(MIN(0.0,ZFOUT)) 00354 ! 00355 IF(PHC(I,J)>0.0)THEN 00356 PHSF(I,J)=PHS(I,J)-PHC(I,J)-PHFLOOD(I,J) 00357 ENDIF 00358 ! 00359 CALL VELFLOOD(PHS(I,J),PFFLOOD(I,J),PHFLOOD(I,J),PFLOOD_LEN(I,J),PWFLOOD(I,J),PHC(I,J),& 00360 PN_FLOOD(I,J),PWIDTH(I,J),ZDELTA,PVFIN(I,J),PVFOUT(I,J) ) 00361 ! 00362 IF(PHFLOOD(I,J)>0.0)THEN 00363 PVFOUT(I,J)=ZDELTA/PTSTEP+(1.0-ZDELTA)*PVFOUT(I,J) 00364 ENDIF 00365 ! 00366 ! ------------------------------------------------------------------ 00367 ! Final flood update 00368 ! 00369 CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & 00370 PAREA(I,J),PFLOOD_STO2(I,J),ZHF,ZFF,ZLF,ZWF) 00371 ! 00372 PFFLOOD (I,J)=ZFF 00373 PHFLOOD (I,J)=ZHF 00374 PFLOOD_LEN(I,J)=ZLF 00375 PWFLOOD (I,J)=ZWF 00376 ! 00377 ! ------------------------------------------------------------------ 00378 ! budget calculation 00379 PSSTO_ALL = PSSTO_ALL + PSURF_STO(I,J) 00380 PSSTO2_ALL = PSSTO2_ALL + PSURF_STO2(I,J) - ZRECUP 00381 PSIN_ALL = PSIN_ALL + ZQIN(I,J) 00382 PSOUT_ALL = PSOUT_ALL + PSOUT(I,J) 00383 PVEL_ALL = PVEL_ALL + PVEL(I,J) * PAREA(I,J) 00384 PHS_ALL = PHS_ALL + PHS (I,J) * PAREA(I,J) 00385 ! 00386 IF(PHC(I,J)>0.0)THEN 00387 PSFLOOD_ALL= PSFLOOD_ALL+ ZFOUT 00388 PFSTO_ALL = PFSTO_ALL + PFLOOD_STO(I,J) 00389 PFSTO2_ALL = PFSTO2_ALL + PFLOOD_STO2(I,J) + ZRECUP 00390 PFIN_ALL = PFIN_ALL + PQRF(I,J) 00391 PFOUT_ALL = PFOUT_ALL + PQFR(I,J) 00392 PSOURCE_ALL= PSOURCE_ALL+ PSOURCE(I,J) 00393 ENDIF 00394 ! 00395 ! ------------------------------------------------------------------ 00396 IF(KGRCN(I,J)>=1.AND.KGRCN(I,J)<=8)THEN 00397 ZQIN(KNEXTX(I,J),KNEXTY(I,J))=ZQIN(KNEXTX(I,J),KNEXTY(I,J))+PSOUT(I,J) 00398 ENDIF 00399 ! 00400 ENDDO 00401 ENDDO 00402 ENDDO 00403 ! 00404 PVEL_ALL = PVEL_ALL / ZAREA 00405 PHS_ALL = PHS_ALL / ZAREA 00406 ! 00407 !------------------------------------------------------------------------------- 00408 IF (LHOOK) CALL DR_HOOK('MODI_TRIP_SURFACE_WATER_FLOOD:TRIP_SURFACE_WATER_FLOOD',1,ZHOOK_HANDLE) 00409 !------------------------------------------------------------------------------- 00410 !------------------------------------------------------------------------------- 00411 END SUBROUTINE TRIP_SURFACE_WATER_FLOOD