SURFEX v7.3
General documentation of Surfex
|
00001 ! ######################### 00002 SUBROUTINE PERMAFROST_DEPTH (KNI,KPATCH,PPERM,PSOILDEPTH) 00003 ! ################################################### 00004 ! 00005 !!**** *PERMAFROST_DEPTH* 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 ! Extended ground depth to 12m over permafrost area 00011 ! 00012 !!** METHOD 00013 !! ------ 00014 ! 00015 ! Direct calculation 00016 ! 00017 !! EXTERNAL 00018 !! -------- 00019 ! 00020 ! None 00021 !! 00022 !! IMPLICIT ARGUMENTS 00023 !! ------------------ 00024 !! 00025 !! 00026 !! REFERENCE 00027 !! --------- 00028 !! 00029 !! AUTHOR 00030 !! ------ 00031 !! B. Decharme 00032 !! 00033 !! MODIFICATIONS 00034 !! ------------- 00035 !! Original 30/08/12 00036 !------------------------------------------------------------------------------- 00037 ! 00038 USE MODD_SURF_PAR, ONLY : XUNDEF 00039 ! 00040 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00041 USE PARKIND1 ,ONLY : JPRB 00042 ! 00043 !* 0.1 declarations of arguments 00044 ! 00045 IMPLICIT NONE 00046 ! 00047 INTEGER, INTENT(IN ) :: KNI ! number of point 00048 ! 00049 INTEGER, INTENT(IN ) :: KPATCH ! patch number 00050 ! 00051 REAL, DIMENSION(:), INTENT(IN ) :: PPERM ! permafrost area (fraction) 00052 ! 00053 REAL, DIMENSION(:,:),INTENT(INOUT) :: PSOILDEPTH ! output soil depth distribution (m) 00054 ! 00055 !* 0.2 declarations of local parameter 00056 ! 00057 REAL, PARAMETER :: ZPERMFRAC = 0.25 ! permafrost limit area (fraction) 00058 ! 00059 REAL, PARAMETER :: ZPERMDEPTH = 12.0 ! permafrost depth (m) 00060 ! 00061 !* 0.3 declarations of local variables 00062 ! 00063 REAL, DIMENSION(KNI) :: ZPERM 00064 ! 00065 INTEGER :: JJ, JPATCH 00066 ! 00067 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00068 ! 00069 !------------------------------------------------------------------------------- 00070 ! 00071 IF (LHOOK) CALL DR_HOOK('PERMAFROST_DEPTH',0,ZHOOK_HANDLE) 00072 ! 00073 ZPERM(:)=0.0 00074 WHERE(PPERM(:)/=XUNDEF)ZPERM(:)=PPERM(:) 00075 ! 00076 DO JPATCH=1,KPATCH 00077 DO JJ=1,KNI 00078 IF(ZPERM(JJ)>=ZPERMFRAC.AND.PSOILDEPTH(JJ,JPATCH)/=XUNDEF)THEN 00079 PSOILDEPTH(JJ,JPATCH)=ZPERMDEPTH 00080 ENDIF 00081 ENDDO 00082 ENDDO 00083 00084 ! 00085 IF (LHOOK) CALL DR_HOOK('PERMAFROST_DEPTH',1,ZHOOK_HANDLE) 00086 ! 00087 END SUBROUTINE PERMAFROST_DEPTH 00088 00089 00090 00091 00092