SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
control_moist_func.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 FUNCTION control_moist_func (PMOIST,PSAT) RESULT (PMOISTFUNC)
7 
8 ! ###############################################################
9 !!** CONTROL_MOIST_FUNC
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !! Moisture control factor for decomposition.
17 !!
18 !! EXTERNAL
19 !! --------
20 !! none
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! none
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! Krinner et al., Global Biochemical Cycles, 2005
31 !! Modified for Wfc < W < Wsat following Probert et al., Agricultural Systems, 1998
32 !! Gibelin et al. 2008, AFM
33 !!
34 !! AUTHOR
35 !! ------
36 !!
37 !! A.-L. Gibelin * Meteo-France *
38 !!
39 !! MODIFICATIONS
40 !! -------------
41 !! Original 23/06/09
42 !! B. Decharme 05/2012 : Optimization and ISBA-DIF coupling
43 !!
44 !-------------------------------------------------------------------------------
45 !
46 !* 0. DECLARATIONS
47 ! ------------
48 !
49 !
50 USE yomhook ,ONLY : lhook, dr_hook
51 USE parkind1 ,ONLY : jprb
52 !
53 IMPLICIT NONE
54 !
55 !* 0.1 declarations of arguments
56 !
57 REAL, DIMENSION(:), INTENT(IN) :: pmoist ! soil moisture index (-)
58 REAL, DIMENSION(:), INTENT(IN) :: psat ! soil saturated index (-)
59 !
60 !* 0.2 declarations of local variables
61 !
62 REAL, PARAMETER :: zmoist_lim = 0.05
63 REAL, PARAMETER :: zsat_lim = 0.5
64 !
65 REAL, PARAMETER :: zcoef1 = 2.40
66 REAL, PARAMETER :: zcoef2 = 1.10
67 REAL, PARAMETER :: zcoef3 = 0.29
68 !
69 REAL, DIMENSION(SIZE(PMOIST)) :: pmoistfunc ! moisture control factor
70 !
71 REAL(KIND=JPRB) :: zhook_handle
72 !
73 !* 1.0 Calculates moisture control factor
74 !
75 IF (lhook) CALL dr_hook('CONTROL_MOIST_FUNC',0,zhook_handle)
76 !
77 WHERE(pmoist(:)<=1.0)
78  pmoistfunc(:)=min(1.0,zcoef1*pmoist(:)-zcoef2*pmoist(:)*pmoist(:)-zcoef3)
79  pmoistfunc(:)=max(zmoist_lim,pmoistfunc(:))
80 ELSEWHERE
81  pmoistfunc(:)=max(zsat_lim,1.0-0.5*psat(:))
82 ENDWHERE
83 !
84 IF (lhook) CALL dr_hook('CONTROL_MOIST_FUNC',1,zhook_handle)
85 
86 END FUNCTION control_moist_func
real function, dimension(size(pmoist)) control_moist_func(PMOIST, PSAT)