SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/thrmcondz.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE THRMCONDZ(PSANDZ,PWSATZ,PCONDDRY,PCONDSLD)
00003 !   ###############################################################
00004 !!****  *THRMCONDZ*  
00005 !!
00006 !!    PURPOSE
00007 !!    -------
00008 !
00009 !     Calculates soil thermal conductivity components
00010 !     using sand fraction and model constants in
00011 !     order to calculate the thermal conductivity
00012 !     following the method of Johansen (1975) as recommended
00013 !     by Farouki (1986) parameterized for SVAT schemes
00014 !     following Peters-Lidard et al. 1998 (JAS). This is
00015 !     used in explicit calculation of CG (soil thermal
00016 !     inertia): it is an option. DEFAULT is method of
00017 !     Noilhan and Planton (1989) (see SOIL.F90).
00018 !              
00019 !!**  METHOD
00020 !!    ------
00021 !!
00022 !!    EXTERNAL
00023 !!    --------
00024 !!    none
00025 !!
00026 !!    IMPLICIT ARGUMENTS
00027 !!    ------------------
00028 !!      
00029 !!    none
00030 !!
00031 !!    REFERENCE
00032 !!    ---------
00033 !!
00034 !!    Peters-Lidard et al. 1998 (JAS)
00035 !!      
00036 !!    AUTHOR
00037 !!    ------
00038 !!
00039 !!      A. Boone           * Meteo-France *
00040 !!
00041 !!    MODIFICATIONS
00042 !!    -------------
00043 !!      Original    25/03/99
00044 !!                  18/02/00    2D for veritcal profiles
00045 !!
00046 !-------------------------------------------------------------------------------
00047 !
00048 !*       0.     DECLARATIONS
00049 !               ------------
00050 !
00051 USE MODD_SURF_PAR,   ONLY : XUNDEF
00052 USE MODD_ISBA_PAR,   ONLY : XDRYWGHT, XSPHSOIL, XCONDQRTZ, XCONDOTH1, XCONDOTH2
00053 !
00054 !
00055 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00056 USE PARKIND1  ,ONLY : JPRB
00057 !
00058 IMPLICIT NONE
00059 !
00060 !*      0.1    declarations of arguments
00061 !
00062 REAL,   DIMENSION(:,:), INTENT(IN) :: PSANDZ     ! soil sand fraction (-)
00063 REAL,   DIMENSION(:,:), INTENT(IN) :: PWSATZ     ! soil porosity (m3 m-3)
00064 !
00065 REAL,   DIMENSION(:,:), INTENT(OUT):: PCONDDRY  ! soil dry thermal conductivity
00066 !                                                 (W m-1 K-1)
00067 REAL,   DIMENSION(:,:), INTENT(OUT):: PCONDSLD  ! soil solids thermal
00068 !                                                 conductivity (W m-1 K-1)
00069 !
00070 !*      0.2    declarations of local variables
00071 !
00072 REAL,    DIMENSION(SIZE(PSANDZ,1),SIZE(PSANDZ,2)) :: ZQUARTZ, ZGAMMAD
00073 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00074 !
00075 !-----------------------------------------------------------------
00076 !
00077 IF (LHOOK) CALL DR_HOOK('THRMCONDZ',0,ZHOOK_HANDLE)
00078 ZQUARTZ(:,:)   = XUNDEF
00079 ZGAMMAD(:,:)   = XUNDEF
00080 PCONDSLD(:,:)  = XUNDEF
00081 PCONDDRY(:,:)  = XUNDEF
00082 !
00083 !
00084 ! Quartz content estimated from sand fraction:
00085 !
00086 WHERE(PSANDZ(:,:)/=XUNDEF)
00087 !
00088    ZQUARTZ(:,:)   = 0.038 + 0.95*PSANDZ(:,:)
00089 !
00090 ! Note, ZGAMMAD (soil dry density) can be supplied from obs, but
00091 ! for mesoscale modeling, we use the following approximation
00092 ! from Peters-Lidard et al. 1998:
00093 !
00094    ZGAMMAD(:,:)   = (1.0-PWSATZ(:,:))*XDRYWGHT
00095 !
00096 END WHERE
00097 !
00098 ! Soil solids conductivity:
00099 !
00100 WHERE(ZQUARTZ >  0.20 .AND. PSANDZ(:,:)/=XUNDEF)
00101    PCONDSLD(:,:)  = (XCONDQRTZ**ZQUARTZ(:,:))*                        &
00102                     (XCONDOTH1**(1.0-ZQUARTZ(:,:)))  
00103 END WHERE
00104 WHERE(ZQUARTZ <= 0.20 .AND. PSANDZ(:,:)/=XUNDEF)
00105    PCONDSLD(:,:)  = (XCONDQRTZ**ZQUARTZ(:,:))*                        &
00106                     (XCONDOTH2**(1.0-ZQUARTZ(:,:)))  
00107 ENDWHERE
00108 !
00109 ! Soil dry conductivity:
00110 !
00111 WHERE(PSANDZ(:,:)/=XUNDEF)
00112    PCONDDRY(:,:)     = (0.135*ZGAMMAD(:,:) + 64.7)/                   &
00113                          (XDRYWGHT - 0.947*ZGAMMAD(:,:))  
00114 END WHERE
00115 IF (LHOOK) CALL DR_HOOK('THRMCONDZ',1,ZHOOK_HANDLE)
00116 !
00117 !
00118 !
00119 END SUBROUTINE THRMCONDZ