SURFEX v8.1
General documentation of Surfex
exp_decay_soil_fr.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 ! ##########
6  SUBROUTINE exp_decay_soil_fr (HISBA, PF, PK, PC_DEPTH_RATIO)
7 ! ##########################################################################
8 !
9 !!**** *EXP_DECAY_SOIL_FR*
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 ! We caculate the hydraulic coductivity decay factor for each FR-coefficients.
15 ! Also, we redefine the surface hydraulic coductivity at saturation for
16 ! convective precipitation parametrisation.
17 !
18 !!** METHOD
19 !! ------
20 !
21 ! Direct calculation
22 !
23 !! EXTERNAL
24 !! --------
25 !
26 ! None
27 !!
28 !! IMPLICIT ARGUMENTS
29 !! ------------------
30 !!
31 !!
32 !! REFERENCE
33 !! ---------
34 !!
35 !! AUTHOR
36 !! ------
37 !! B. Decharme
38 !!
39 !! MODIFICATIONS
40 !! -------------
41 !! Original 17/11/03
42 !-------------------------------------------------------------------------------
43 !
44 !* 0. DECLARATIONS
45 ! ------------
46 !
47 USE modd_isba_n, ONLY : isba_p_t
48 !
49 USE modd_surf_par,ONLY : xundef
50 USE modd_sgh_par, ONLY : x2
51 USE modd_csts, ONLY : xday
52 !
53 USE yomhook ,ONLY : lhook, dr_hook
54 USE parkind1 ,ONLY : jprb
55 !
56 IMPLICIT NONE
57 !
58 !* 0.1 declarations of arguments
59 !
60  CHARACTER(LEN=*) :: HISBA ! hydrology/soil:
61 ! ! '2-L' = single column
62 ! ! '3-L' = root zone/baseflow layer
63 ! ! 'DIF' = N-layer diffusion: Richard's Eq.
64 !
65 REAL, DIMENSION(:), INTENT(IN) :: PF
66 ! PF = exponential decay factor (1/m)
67 !
68 TYPE(isba_p_t), INTENT(INOUT) :: PK
69 !
70 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: PC_DEPTH_RATIO
71 !
72 !* 0.2 declarations of local variables
73 !
74 REAL, DIMENSION(SIZE(PF)) :: ZD_G_TOT, ZC_DEPTH, ZKSAT_NOEXP, ZC_DEPTH_RATIO
75 ! ZD_G_TOT = depth of the soil column (m)
76 ! ZC_DEPTH = assumed as the depth where the vertical
77 ! satured hydraulic conductivities reach
78 ! the compacted value given in Clapp and
79 ! Hornberger. (m)
80 ! For ISBA-FR, we take the root depth.
81 !
82 INTEGER :: JP
83 !
84 REAL(KIND=JPRB) :: ZHOOK_HANDLE
85 !
86 !-------------------------------------------------------------------------------
87 !
88 IF (lhook) CALL dr_hook('EXP_DECAY_SOIL_FR',0,zhook_handle)
89 !
90 zd_g_tot(:) = pk%XDG(:,2)
91 IF(hisba=='3-L')zd_g_tot(:) = pk%XDG(:,3)
92 !
93 zksat_noexp(:) = pk%XCONDSAT(:,2)
94 !
95 zc_depth_ratio(:) = 1.
96 !
97 IF (PRESENT(pc_depth_ratio)) zc_depth_ratio(:) = pc_depth_ratio(:)
98 !
99 WHERE(zd_g_tot(:)/=xundef)
100  !
101  !compacted depth
102  !
103  zc_depth(:) = pk%XDG(:,2)*zc_depth_ratio(:)
104  !ZC_DEPTH(:) = PK%XDG(:,2)
105  !
106  !surface hydraulic conductivity at saturation
107  !
108  pk%XCONDSAT(:,1) = pk%XCONDSAT(:,1)*exp(pf(:)*zc_depth(:))
109  !
110  !mean hydraulic conductivity at saturation over the root zone
111  !
112  pk%XCONDSAT(:,2) = zksat_noexp(:)*( exp(pf(:)*zc_depth)-exp(pf(:)*(zc_depth(:)-pk%XDG(:,2))) ) &
113  /(pf(:)*pk%XDG(:,2))
114  !
115  !mean hydraulic conductivity at saturation over the first soil centimeters
116  !
117  pk%XKSAT_ICE(:) = zksat_noexp(:)*( exp(pf(:)*zc_depth)-exp(pf(:)*(zc_depth(:)-pk%XD_ICE(:))) ) &
118  /(pf(:)*pk%XD_ICE(:))
119  !
120  !decay factor for C1 coef
121  !
122  pk%XC1SAT(:) = pk%XC1SAT(:)*sqrt( exp(-pf(:)*zc_depth(:)) )
123  !
124  !decay factor for C2 coef
125  !
126  pk%XC2REF(:)=pk%XC2REF(:)+( pk%XCONDSAT(:,2)-zksat_noexp(:) ) * xday/pk%XDG(:,2)
127  !
128  !C3 coef with exponential decay in root soil layer
129  !
130  pk%XC3(:,1)=pk%XC3(:,1)*( exp(pf(:)*zc_depth(:))-exp(pf(:)*(zc_depth(:)-pk%XDG(:,2))) ) / &
131  (pf(:)*pk%XDG(:,2))
132  !
133 ENDWHERE
134 !
135 IF(hisba=='3-L')THEN
136  !
137  WHERE(pk%XDG(:,2)< zd_g_tot(:).AND.pk%XDG(:,2)/=xundef)
138  !
139  ! C3 coef with exponential decay in deep soil layer
140  !
141  pk%XC3(:,2)=pk%XC3(:,2)*( exp(pf(:)*(zc_depth(:)-pk%XDG(:,2)))-exp(pf(:)*(zc_depth(:)-zd_g_tot(:))) ) &
142  / (pf(:)*(zd_g_tot(:)-pk%XDG(:,2)))
143  !
144  ! decay factor for C4 coef
145  !
146  pk%XC4REF(:)=pk%XC4REF(:)*( exp(pf(:)*(zc_depth(:)-pk%XDG(:,2)/x2))-exp(pf(:)*(zc_depth(:)&
147  -((pk%XDG(:,2)+zd_g_tot(:))/2.))) ) * x2/(pf(:)*zd_g_tot(:))
148  !
149  ENDWHERE
150  !
151 ENDIF
152 !
153 IF (lhook) CALL dr_hook('EXP_DECAY_SOIL_FR',1,zhook_handle)
154 !
155 END SUBROUTINE exp_decay_soil_fr
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
real, save xday
Definition: modd_csts.F90:45
subroutine exp_decay_soil_fr(HISBA, PF, PK, PC_DEPTH_RATIO)
logical lhook
Definition: yomhook.F90:15
real, parameter x2