SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
mode_surf_flood_frac.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !##########################
7 !##########################
8 !
9 !!**** *MODE_SURF_FLOOD_FRAC* - module for routines to compute flood fraction
10 !! for surface schemes
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 ! The purpose of this routine is to store here all routines to compute
16 ! flood fractions for the ISBA scheme.
17 !
18 !!
19 !!** IMPLICIT ARGUMENTS
20 !! ------------------
21 !! NONE
22 !!
23 !! REFERENCE
24 !! ---------
25 !!
26 !!
27 !! AUTHOR
28 !! ------
29 !! B. Decharme * Meteo France *
30 !!
31 !! MODIFICATIONS
32 !! -------------
33 !! Original 25/05/08
34 !--------------------------------------------------------------------------------
35 !
36 !* 0. DECLARATIONS
37 ! ------------
38 !
39 !
40 !-------------------------------------------------------------------------------
41 !
42 !
43 USE yomhook ,ONLY : lhook, dr_hook
44 USE parkind1 ,ONLY : jprb
45 !
46  CONTAINS
47 !-------------------------------------------------------------------------------
48 !
49 ! ######################################################
50  FUNCTION flood_frac_ground(PPSNG,PFFLOOD) RESULT(PFFG)
51 ! ######################################################
52 !
53 REAL, DIMENSION(:), INTENT(IN) :: ppsng ! Snow fraction over the ground
54 REAL, DIMENSION(:), INTENT(IN) :: pfflood ! Effective floodplain fraction
55 REAL, DIMENSION(SIZE(PPSNG)) :: pffg ! Floodplain fraction over the ground
56 REAL(KIND=JPRB) :: zhook_handle
57 !
58 IF (lhook) CALL dr_hook('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_GROUND',0,zhook_handle)
59 pffg(:) = pfflood(:)
60 !
61 WHERE(pfflood(:)>(1.0-ppsng(:)))pffg(:)=1.0-ppsng(:)
62 IF (lhook) CALL dr_hook('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_GROUND',1,zhook_handle)
63 !
64 END FUNCTION flood_frac_ground
65 !
66 !-------------------------------------------------------------------------------
67 !
68 ! ########################################################
69  FUNCTION flood_frac_veg(PLAI,PPSNV,PFFLOOD) RESULT(PFFV)
70 ! ########################################################
71 !
72 USE modd_flood_par, ONLY : xcffv
73 !
74 REAL, DIMENSION(:), INTENT(IN) :: plai ! leaf area index
75 REAL, DIMENSION(:), INTENT(IN) :: ppsnv ! Snow fraction over the vegetation
76 REAL, DIMENSION(:), INTENT(IN) :: pfflood ! Effective floodplain fraction
77 REAL, DIMENSION(SIZE(PPSNV)) :: pffv ! Floodplain fraction over vegetation
78 REAL(KIND=JPRB) :: zhook_handle
79 !
80 IF (lhook) CALL dr_hook('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_VEG',0,zhook_handle)
81 pffv(:)=pfflood(:)*min(1.0,xcffv/max(plai(:),0.1))
82 !
83 WHERE(pffv(:)>(1.0-ppsnv(:)))pffv(:)=1.0-ppsnv(:)
84 IF (lhook) CALL dr_hook('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_VEG',1,zhook_handle)
85 !
86 END FUNCTION flood_frac_veg
87 !
88 !-------------------------------------------------------------------------------
89 !
90 ! ############################################################
91  FUNCTION flood_frac_nat(PVEG,PFFG,PFFV,PFFLOOD) RESULT(PFF)
92 ! ############################################################
93 !
94 REAL, DIMENSION(:), INTENT(IN) :: pveg ! Vegetation cover fraction
95 REAL, DIMENSION(:), INTENT(IN) :: pffg ! Floodplain fraction over the ground
96 REAL, DIMENSION(:), INTENT(IN) :: pffv ! Floodplain fraction over vegetation
97 REAL, DIMENSION(:), INTENT(IN) :: pfflood ! Effective floodplain fraction
98 REAL, DIMENSION(SIZE(PVEG)) :: pff ! Floodplain fraction at the surface
99 REAL(KIND=JPRB) :: zhook_handle
100 !
101 IF (lhook) CALL dr_hook('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_NAT',0,zhook_handle)
102 pff(:) = pveg(:)*pffv(:) + (1-pveg(:))*pffg(:)
103 !
104 pff(:) = min(pff(:),pfflood(:))
105 IF (lhook) CALL dr_hook('MODE_SURF_FLOOD_FRAC:FLOOD_FRAC_NAT',1,zhook_handle)
106 !
107 END FUNCTION flood_frac_nat
108 !
109 !-------------------------------------------------------------------------------
110 !-------------------------------------------------------------------------------
111 !
112 END MODULE mode_surf_flood_frac
real function, dimension(size(pveg)) flood_frac_nat(PVEG, PFFG, PFFV, PFFLOOD)
real function, dimension(size(ppsng)) flood_frac_ground(PPSNG, PFFLOOD)
real function, dimension(size(ppsnv)) flood_frac_veg(PLAI, PPSNV, PFFLOOD)