SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE SOILSTRESS( HISBA, PF2, & 00003 PROOTFRAC, PWSAT, PWFC, PWWILT, & 00004 PWG, PWGI, KWG_LAYER, PF2WGHT, PF5 ) 00005 ! #################################################################### 00006 ! 00007 !!**** *SOILSTRESS* 00008 !! 00009 !! PURPOSE 00010 !! ------- 00011 ! 00012 ! Calculates the vegetation stress due to soil water 00013 ! 00014 ! 00015 !!** METHOD 00016 !! ------ 00017 ! 00018 ! Calculates the F2 coefficient. 00019 ! 00020 ! 00021 !! EXTERNAL 00022 !! -------- 00023 !! 00024 !! none 00025 !! 00026 !! IMPLICIT ARGUMENTS 00027 !! ------------------ 00028 !! 00029 !! none 00030 !! 00031 !! 00032 !! REFERENCE 00033 !! --------- 00034 !! 00035 !! Noilhan and Planton (1989) 00036 !! Belair (1995) 00037 !! 00038 !! AUTHOR 00039 !! ------ 00040 !! 00041 !! S. Belair * Meteo-France * 00042 !! 00043 !! MODIFICATIONS 00044 !! ------------- 00045 !! Original 13/03/95 00046 !! (P.Jabouille) 13/11/96 mininum value for ZF1 00047 !! (V. Masson) 28/08/98 add PF2 for Calvet (1998) CO2 computations 00048 !------------------------------------------------------------------------------- 00049 ! 00050 !* 0. DECLARATIONS 00051 ! ------------ 00052 ! 00053 ! 00054 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00055 USE PARKIND1 ,ONLY : JPRB 00056 ! 00057 IMPLICIT NONE 00058 ! 00059 !* 0.1 declarations of arguments 00060 ! 00061 ! 00062 CHARACTER(LEN=*), INTENT(IN) :: HISBA ! type of soil (Force-Restore OR Diffusion) 00063 ! ! '2-L' 00064 ! ! '3-L' 00065 ! ! 'DIF' ISBA-DF 00066 ! 00067 REAL, DIMENSION(:,:), INTENT(IN) :: PROOTFRAC, PWSAT, PWFC, PWWILT, 00068 PWG, PWGI 00069 ! PROOTFRAC = cumulative root fraction (-) 00070 ! PWFC = field capacity profile (m3/m3) 00071 ! PWWILT = wilting point profile (m3/m3) 00072 ! PWSAT = porosity profile (m3/m3) 00073 ! PWG = soil liquid volumetric water content (m3/m3) 00074 ! PWGI = soil frozen volumetric water content (m3/m3) 00075 ! 00076 INTEGER, DIMENSION(:), INTENT(IN) :: KWG_LAYER 00077 ! KWG_LAYER = Number of soil moisture layers (DIF option) 00078 ! 00079 REAL, DIMENSION(:), INTENT(OUT) :: PF2 ! water stress coefficient 00080 ! 00081 REAL, DIMENSION(:), INTENT(OUT) :: PF5 ! water stress coefficient for Hv (based on F2): 00082 ! ! Verify that Etv=>0 as F2=>0 00083 ! 00084 REAL, DIMENSION(:,:), INTENT(OUT):: PF2WGHT ! water stress coefficient profile (ISBA-DF) 00085 ! 00086 ! 00087 !* 0.2 declarations of local variables 00088 ! 00089 ! 00090 REAL, DIMENSION(SIZE(PWFC,1)) :: ZWFC_AVGZ, ZWSAT_AVGZ, ZWWILT_AVGZ 00091 ! ZWFC_AVGZ = field capacity averaged over entire soil column 00092 ! ZWSAT_AVGZ = porosity averaged over entire soil column 00093 ! ZWWILT_AVGZ = wilting point averaged over entire soil column 00094 ! 00095 ! ISBA-DF: 00096 ! 00097 REAL, DIMENSION(SIZE(PWG,1)) :: ZWSAT, ZWFC, ZWWILT 00098 ! ZWSAT = ice-adjusted porosity profile (m3/m3) 00099 ! ZWFC = ice-adjusted field capacity profile (m3/m3) 00100 ! ZWWILT = ice-adjusted wilting point profile (m3/m3) 00101 ! 00102 REAL :: ZROOTFRACN 00103 ! ZROOTFRACN = Normalized root fraction weights 00104 ! 00105 INTEGER :: INI, INL, JJ, JL, IDEPTH 00106 ! 00107 ! 00108 !* 0.3 declarations of local parameters: 00109 ! 00110 REAL, PARAMETER :: ZDENOM_MIN = 1.E-6 ! minimum denominator: 00111 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00112 ! ! numerical factor to prevent division by 0 00113 !------------------------------------------------------------------------------- 00114 ! 00115 !* 0. Initialization of variables: 00116 ! ---------------------------- 00117 ! 00118 IF (LHOOK) CALL DR_HOOK('SOILSTRESS',0,ZHOOK_HANDLE) 00119 ! 00120 INI=SIZE(PWG,1) 00121 INL=MAXVAL(KWG_LAYER(:)) 00122 ! 00123 PF2 (:) = 0.0 00124 PF2WGHT(:,:) = 0.0 00125 ! 00126 ZWFC_AVGZ(:) = 0. 00127 ZWSAT_AVGZ(:) = 0. 00128 ZWWILT_AVGZ(:) = 0. 00129 ! 00130 !------------------------------------------------------------------------------- 00131 ! 00132 !* 2. THE 'PF2' FACTOR 00133 ! ---------------- 00134 ! This factor takes into account the effect 00135 ! of the water stress on the surface 00136 ! resistance 00137 ! 00138 ! - For humid soils (> WFC), this factor does not 00139 ! increase the stomatal resistance 00140 ! - The stomatal resistance should be large 00141 ! when the soil is very dry (< WILT) 00142 ! - For intermediate soils it ranges (F2_min =< F2 <= 1): 00143 ! where F2_min is a small numerical threshold 00144 ! 00145 IF(HISBA =='DIF')THEN 00146 ! 00147 ! If using the diffusion option, then calculate transpiration weights 00148 ! and the mean root-zone soil water stress factor F2: 00149 ! 00150 !--------------------------------------------------------- 00151 ! First layer 00152 !--------------------------------------------------------- 00153 ! 00154 ! Due to the presence of ice, modify soil parameters: 00155 ZWSAT (:) = PWSAT (:,1) - PWGI(:,1) 00156 ZWFC (:) = PWFC (:,1) * ZWSAT(:)/PWSAT(:,1) 00157 ZWWILT(:) = PWWILT(:,1) * ZWSAT(:)/PWSAT(:,1) 00158 ! 00159 ! Calculate the soil water stress factor for each layer: 00160 PF2WGHT(:,1) = (PWG(:,1)-ZWWILT(:))/(ZWFC(:)-ZWWILT(:)) 00161 PF2WGHT(:,1) = MIN( 1.0, MAX( ZDENOM_MIN,PF2WGHT(:,1) ) ) 00162 ! 00163 ! Normalize the transpiration weights by root fraction: 00164 PF2WGHT(:,1) = PROOTFRAC(:,1)*PF2WGHT(:,1) 00165 ! 00166 ! Net soil water stress for entire root zone: 00167 PF2(:) = PF2WGHT(:,1) 00168 ! 00169 ! Make sure weights stress factor is within limits 00170 PF2WGHT(:,1) = MAX(PF2WGHT(:,1),ZDENOM_MIN*PROOTFRAC(:,1)) 00171 ! 00172 !--------------------------------------------------------- 00173 ! Other layers 00174 !--------------------------------------------------------- 00175 ! 00176 DO JL=2,INL 00177 DO JJ=1,INI 00178 ! 00179 IDEPTH=KWG_LAYER(JJ) 00180 IF(JL<=IDEPTH)THEN 00181 ! 00182 ! Due to the presence of ice, modify soil parameters: 00183 ZWSAT (JJ) = PWSAT (JJ,JL) - PWGI(JJ,JL) 00184 ZWFC (JJ) = PWFC (JJ,JL) * ZWSAT(JJ)/PWSAT(JJ,JL) 00185 ZWWILT(JJ) = PWWILT(JJ,JL) * ZWSAT(JJ)/PWSAT(JJ,JL) 00186 ! 00187 ! Calculate the soil water stress factor for each layer: 00188 PF2WGHT(JJ,JL) = (PWG(JJ,JL)-ZWWILT(JJ))/(ZWFC(JJ)-ZWWILT(JJ)) 00189 PF2WGHT(JJ,JL) = MIN( 1.0, MAX( ZDENOM_MIN,PF2WGHT(JJ,JL) ) ) 00190 ! 00191 ! Calculate normalized root fraction weights: 00192 ZROOTFRACN = PROOTFRAC(JJ,JL) - PROOTFRAC(JJ,JL-1) 00193 ! 00194 ! Normalize the transpiration weights by root fraction: 00195 PF2WGHT(JJ,JL) = ZROOTFRACN*PF2WGHT(JJ,JL) 00196 ! 00197 ! Net soil water stress for entire root zone: 00198 PF2(JJ) = PF2(JJ) + PF2WGHT(JJ,JL) 00199 ! 00200 ! Make sure weights stress factor is within limits 00201 PF2WGHT(JJ,JL) = MAX(PF2WGHT(JJ,JL),ZDENOM_MIN*ZROOTFRACN) 00202 ! 00203 ENDIF 00204 ! 00205 ENDDO 00206 ENDDO 00207 ! 00208 ! Make sure average stress factor is within limits 00209 PF2(:) = MAX(ZDENOM_MIN, MIN(1.0, PF2(:))) 00210 ! 00211 ELSE 00212 ! 00213 ! When using the Force-Restore (FR) soil option, the soil properties 00214 ! are assumed to be homogeneous in the vertical. Therefore, simply 00215 ! use the properties for the uppermost soil layer when defining 00216 ! soil properties for local computations. 00217 ! 00218 ! Due to the presence of ice, modify soil parameters: 00219 ! 00220 ZWSAT_AVGZ(:) = PWSAT(:,1) - PWGI(:,2) 00221 ZWFC_AVGZ(:) = PWFC(:,1) *ZWSAT_AVGZ(:)/PWSAT(:,1) 00222 ZWWILT_AVGZ(:) = PWWILT(:,1)*ZWSAT_AVGZ(:)/PWSAT(:,1) 00223 ! 00224 ! Compute the water stress factor: 00225 ! 00226 PF2(:) = ( PWG(:,2)-ZWWILT_AVGZ(:) ) / ( ZWFC_AVGZ(:)-ZWWILT_AVGZ(:)) 00227 PF2(:) = MAX(ZDENOM_MIN , MIN(1.0, PF2(:))) 00228 ! 00229 ! 00230 ENDIF 00231 ! 00232 ! Function to cause Etv to approach 0 as F2 goes to 0: 00233 ! 00234 PF5(:) = MERGE(PF2(:),0.0,PF2(:)>ZDENOM_MIN) 00235 ! 00236 IF (LHOOK) CALL DR_HOOK('SOILSTRESS',1,ZHOOK_HANDLE) 00237 ! 00238 !------------------------------------------------------------------------------- 00239 ! 00240 END SUBROUTINE SOILSTRESS