SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TRIP/trip_surface_water_flood.F90
Go to the documentation of this file.
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