SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE INI_DATA_ROOTFRAC( PDG, PROOTDEPTH, PROOT_EXT, PROOT_LIN, PROOTFRAC ) 00003 00004 ! ########################################################################## 00005 ! 00006 !!**** *INI_DATA_ROOTFRAC* 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 ! 00011 ! Calculates the soil grid configuration using a reference grid 00012 ! Also compute the root fraction 00013 ! 00014 ! 00015 !!** METHOD 00016 !! ------ 00017 ! 00018 ! Direct calculation 00019 ! 00020 !! EXTERNAL 00021 !! -------- 00022 ! 00023 ! None 00024 !! 00025 !! IMPLICIT ARGUMENTS 00026 !! ------------------ 00027 !! 00028 !! REFERENCE 00029 !! --------- 00030 !! 00031 !! Noilhan and Planton (1989) 00032 !! Belair (1995) 00033 !! Boone (2000) 00034 !! Boone et al. (2000) 00035 !! Habets et al. (2003) 00036 !! Decharme et al. (2011) 00037 !! 00038 !! AUTHOR 00039 !! ------ 00040 !! A. Boone * Meteo-France * 00041 !! new version : 00042 !! B. Decharme * Meteo-France * 00043 !! 00044 !! MODIFICATIONS 00045 !! ------------- 00046 !! Original 12/04/03 00047 !! new version :10/08/2011 00048 !------------------------------------------------------------------------------- 00049 ! 00050 !* 0. DECLARATIONS 00051 ! ------------ 00052 ! 00053 USE MODD_SURF_PAR, ONLY : XUNDEF, NUNDEF 00054 USE MODD_ISBA_PAR, ONLY : NOPTIMLAYER, XOPTIMGRID 00055 ! 00056 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00057 USE PARKIND1 ,ONLY : JPRB 00058 ! 00059 IMPLICIT NONE 00060 ! 00061 !* 0.1 declarations of arguments 00062 ! 00063 REAL, DIMENSION(:,:,:), INTENT(IN) :: PDG ! depth of base of soil layers (m) 00064 REAL, DIMENSION(:,:), INTENT(IN) :: PROOTDEPTH ! effective root depth (m) 00065 REAL, DIMENSION(:,:), INTENT(IN) :: PROOT_EXT 00066 REAL, DIMENSION(:,:), INTENT(IN) :: PROOT_LIN 00067 ! 00068 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PROOTFRAC 00069 ! 00070 !* 0.2 declarations of local variables 00071 ! 00072 REAL :: ZLOG1, ZLOG2 00073 REAL :: ZJACKSON ! Jackson (1996) formulation for cumulative root fraction 00074 REAL :: ZUNIF ! linear formulation for cumulative root fraction 00075 ! 00076 INTEGER :: INI,INL,IPATCH 00077 INTEGER :: JJ,JL,JPATCH 00078 ! 00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00080 !------------------------------------------------------------------------------- 00081 ! 0. Initialization 00082 ! -------------- 00083 ! 00084 IF (LHOOK) CALL DR_HOOK('INI_DATA_ROOTFRAC',0,ZHOOK_HANDLE) 00085 ! 00086 INI = SIZE(PDG,1) 00087 INL = SIZE(PDG,2) 00088 IPATCH = SIZE(PDG,3) 00089 ! 00090 ! 00091 PROOTFRAC(:,:,:) = XUNDEF 00092 ! 00093 DO JPATCH=1,IPATCH 00094 DO JJ=1,INI 00095 ! 00096 IF ( PROOTDEPTH(JJ,JPATCH)/=XUNDEF .AND. PROOTDEPTH(JJ,JPATCH)/=0.0 ) THEN 00097 ! 00098 DO JL=1,INL 00099 ZLOG1 = 100. * LOG(PROOT_EXT(JJ,JPATCH)) * PDG (JJ,JL,JPATCH) 00100 ZLOG2 = 100. * LOG(PROOT_EXT(JJ,JPATCH)) * PROOTDEPTH(JJ,JPATCH) 00101 ZJACKSON = MIN(1.0,(1.0-EXP(ZLOG1))/(1.0-EXP(ZLOG2))) 00102 ZUNIF = MIN(1.0,(PDG(JJ,JL,JPATCH)/PROOTDEPTH(JJ,JPATCH))) 00103 PROOTFRAC(JJ,JL,JPATCH) = PROOT_LIN(JJ,JPATCH) * ZUNIF & 00104 + (1.0-PROOT_LIN(JJ,JPATCH)) * ZJACKSON 00105 ENDDO 00106 ! No vegetation case 00107 ELSE 00108 PROOTFRAC(JJ,:,JPATCH) = 0.0 00109 ENDIF 00110 ! 00111 ENDDO 00112 ENDDO 00113 ! 00114 IF (LHOOK) CALL DR_HOOK('INI_DATA_ROOTFRAC',1,ZHOOK_HANDLE) 00115 !------------------------------------------------------------------------------- 00116 END SUBROUTINE INI_DATA_ROOTFRAC