SURFEX v7.3
General documentation of Surfex
|
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