SURFEX v7.3
General documentation of Surfex
|
00001 ! ############# 00002 FUNCTION CONTROL_MOIST_FUNC (PMOIST,PSAT) RESULT (PMOISTFUNC) 00003 00004 ! ############################################################### 00005 !!** CONTROL_MOIST_FUNC 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! Moisture control factor for decomposition. 00013 !! 00014 !! EXTERNAL 00015 !! -------- 00016 !! none 00017 !! 00018 !! IMPLICIT ARGUMENTS 00019 !! ------------------ 00020 !! 00021 !! none 00022 !! 00023 !! REFERENCE 00024 !! --------- 00025 !! 00026 !! Krinner et al., Global Biochemical Cycles, 2005 00027 !! Modified for Wfc < W < Wsat following Probert et al., Agricultural Systems, 1998 00028 !! Gibelin et al. 2008, AFM 00029 !! 00030 !! AUTHOR 00031 !! ------ 00032 !! 00033 !! A.-L. Gibelin * Meteo-France * 00034 !! 00035 !! MODIFICATIONS 00036 !! ------------- 00037 !! Original 23/06/09 00038 !! B. Decharme 05/2012 : Optimization and ISBA-DIF coupling 00039 !! 00040 !------------------------------------------------------------------------------- 00041 ! 00042 !* 0. DECLARATIONS 00043 ! ------------ 00044 ! 00045 ! 00046 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00047 USE PARKIND1 ,ONLY : JPRB 00048 ! 00049 IMPLICIT NONE 00050 ! 00051 !* 0.1 declarations of arguments 00052 ! 00053 REAL, DIMENSION(:), INTENT(IN) :: PMOIST ! soil moisture index (-) 00054 REAL, DIMENSION(:), INTENT(IN) :: PSAT ! soil saturated index (-) 00055 ! 00056 !* 0.2 declarations of local variables 00057 ! 00058 REAL, PARAMETER :: ZMOIST_LIM = 0.05 00059 REAL, PARAMETER :: ZSAT_LIM = 0.5 00060 ! 00061 REAL, PARAMETER :: ZCOEF1 = 2.40 00062 REAL, PARAMETER :: ZCOEF2 = 1.10 00063 REAL, PARAMETER :: ZCOEF3 = 0.29 00064 ! 00065 REAL, DIMENSION(SIZE(PMOIST)) :: PMOISTFUNC ! moisture control factor 00066 ! 00067 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00068 ! 00069 !* 1.0 Calculates moisture control factor 00070 ! 00071 IF (LHOOK) CALL DR_HOOK('CONTROL_MOIST_FUNC',0,ZHOOK_HANDLE) 00072 ! 00073 WHERE(PMOIST(:)<=1.0) 00074 PMOISTFUNC(:)=MIN(1.0,ZCOEF1*PMOIST(:)-ZCOEF2*PMOIST(:)*PMOIST(:)-ZCOEF3) 00075 PMOISTFUNC(:)=MAX(ZMOIST_LIM,PMOISTFUNC(:)) 00076 ELSEWHERE 00077 PMOISTFUNC(:)=MAX(ZSAT_LIM,1.0-0.5*PSAT(:)) 00078 ENDWHERE 00079 ! 00080 IF (LHOOK) CALL DR_HOOK('CONTROL_MOIST_FUNC',1,ZHOOK_HANDLE) 00081 00082 END FUNCTION CONTROL_MOIST_FUNC