SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/mode_surf_flood_frac.F90
Go to the documentation of this file.
00001 !##########################
00002 MODULE MODE_SURF_FLOOD_FRAC
00003 !##########################
00004 !
00005 !!****  *MODE_SURF_FLOOD_FRAC* -  module for routines to compute flood fraction
00006 !!                               for surface schemes
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !    
00011 !      The purpose of this routine is to store here all routines to compute
00012 !     flood fractions for the ISBA scheme.
00013 !
00014 !!
00015 !!**  IMPLICIT ARGUMENTS
00016 !!    ------------------
00017 !!       NONE          
00018 !!
00019 !!    REFERENCE
00020 !!    ---------
00021 !!
00022 !!
00023 !!    AUTHOR
00024 !!    ------
00025 !!      B. Decharme       * Meteo France *
00026 !!
00027 !!    MODIFICATIONS
00028 !!    -------------
00029 !!      Original    25/05/08
00030 !--------------------------------------------------------------------------------
00031 !
00032 !*       0.    DECLARATIONS
00033 !              ------------
00034 !
00035 !
00036 !-------------------------------------------------------------------------------
00037 !
00038 !
00039 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00040 USE PARKIND1  ,ONLY : JPRB
00041 !
00042 CONTAINS
00043 !-------------------------------------------------------------------------------
00044 !
00045 !     ######################################################
00046       FUNCTION FLOOD_FRAC_GROUND(PPSNG,PFFLOOD) RESULT(PFFG)
00047 !     ######################################################
00048 !
00049 REAL, DIMENSION(:), INTENT(IN)  :: PPSNG   ! Snow fraction over the ground
00050 REAL, DIMENSION(:), INTENT(IN)  :: PFFLOOD ! Effective floodplain fraction
00051 REAL, DIMENSION(SIZE(PPSNG))    :: PFFG    ! Floodplain fraction over the ground
00052 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00053 !
00054 IF (LHOOK) CALL DR_HOOK('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_GROUND',0,ZHOOK_HANDLE)
00055 PFFG(:) = PFFLOOD(:)
00056 !
00057 WHERE(PFFLOOD(:)>(1.0-PPSNG(:)))PFFG(:)=1.0-PPSNG(:)
00058 IF (LHOOK) CALL DR_HOOK('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_GROUND',1,ZHOOK_HANDLE)
00059 !
00060 END FUNCTION FLOOD_FRAC_GROUND
00061 !
00062 !-------------------------------------------------------------------------------
00063 !
00064 !     ########################################################
00065       FUNCTION FLOOD_FRAC_VEG(PLAI,PPSNV,PFFLOOD) RESULT(PFFV)
00066 !     ########################################################
00067 !
00068 USE MODD_FLOOD_PAR, ONLY : XCFFV
00069 !
00070 REAL, DIMENSION(:), INTENT(IN)  :: PLAI    ! leaf area index
00071 REAL, DIMENSION(:), INTENT(IN)  :: PPSNV   ! Snow fraction over the vegetation
00072 REAL, DIMENSION(:), INTENT(IN)  :: PFFLOOD ! Effective floodplain fraction
00073 REAL, DIMENSION(SIZE(PPSNV))    :: PFFV    ! Floodplain fraction over vegetation
00074 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00075 !
00076 IF (LHOOK) CALL DR_HOOK('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_VEG',0,ZHOOK_HANDLE)
00077 PFFV(:)=PFFLOOD(:)*MIN(1.0,XCFFV/MAX(PLAI(:),0.1))  
00078 !
00079 WHERE(PFFV(:)>(1.0-PPSNV(:)))PFFV(:)=1.0-PPSNV(:)
00080 IF (LHOOK) CALL DR_HOOK('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_VEG',1,ZHOOK_HANDLE)
00081 !
00082 END FUNCTION FLOOD_FRAC_VEG
00083 !
00084 !-------------------------------------------------------------------------------
00085 !
00086 !     ############################################################
00087       FUNCTION FLOOD_FRAC_NAT(PVEG,PFFG,PFFV,PFFLOOD) RESULT(PFF)
00088 !     ############################################################
00089 !
00090 REAL, DIMENSION(:), INTENT(IN)  :: PVEG    ! Vegetation cover fraction
00091 REAL, DIMENSION(:), INTENT(IN)  :: PFFG    ! Floodplain fraction over the ground
00092 REAL, DIMENSION(:), INTENT(IN)  :: PFFV    ! Floodplain fraction over vegetation
00093 REAL, DIMENSION(:), INTENT(IN)  :: PFFLOOD ! Effective floodplain fraction
00094 REAL, DIMENSION(SIZE(PVEG))     :: PFF     ! Floodplain fraction at the surface
00095 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00096 !
00097 IF (LHOOK) CALL DR_HOOK('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_NAT',0,ZHOOK_HANDLE)
00098 PFF(:) = PVEG(:)*PFFV(:) + (1-PVEG(:))*PFFG(:)
00099 !
00100 PFF(:) = MIN(PFF(:),PFFLOOD(:))
00101 IF (LHOOK) CALL DR_HOOK('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_NAT',1,ZHOOK_HANDLE)
00102 !
00103 END FUNCTION FLOOD_FRAC_NAT
00104 !
00105 !-------------------------------------------------------------------------------
00106 !-------------------------------------------------------------------------------
00107 !
00108 END MODULE MODE_SURF_FLOOD_FRAC