SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ini_data_rootfrac.F90
Go to the documentation of this file.
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