SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE INIT_SNOW_LW(PEMISSN,TPSNOW) 00003 ! ####################################### 00004 ! 00005 !!**** *INIT_SNOW_LW* - routine to initialize snow surf. temp and emissivity 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! V. Masson *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 01/2003 00031 !------------------------------------------------------------------------------- 00032 ! 00033 !* 0. DECLARATIONS 00034 ! ------------ 00035 ! 00036 USE MODD_TYPE_SNOW 00037 USE MODD_SURF_PAR, ONLY : XUNDEF 00038 USE MODD_CSTS, ONLY : XTT, XLMTT 00039 ! 00040 USE MODE_SNOW3L 00041 ! 00042 ! 00043 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00044 USE PARKIND1 ,ONLY : JPRB 00045 ! 00046 IMPLICIT NONE 00047 ! 00048 !* 0.1 Declarations of arguments 00049 ! ------------------------- 00050 ! 00051 REAL, INTENT(IN) :: PEMISSN ! snow emissivity 00052 TYPE(SURF_SNOW), INTENT(INOUT) :: TPSNOW ! snow characteristics 00053 ! 00054 !* 0.2 Declarations of local variables 00055 ! ------------------------------- 00056 ! 00057 INTEGER :: JPATCH ! loop counter on tiles 00058 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00059 !------------------------------------------------------------------------------- 00060 ! 00061 IF (LHOOK) CALL DR_HOOK('INIT_SNOW_LW',0,ZHOOK_HANDLE) 00062 DO JPATCH=1,SIZE(TPSNOW%WSNOW,3) 00063 ! 00064 !* 1. Emissivity 00065 ! ---------- 00066 ! 00067 IF (TPSNOW%SCHEME=='1-L' .OR. TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN 00068 WHERE(TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)==XUNDEF ) 00069 TPSNOW%EMIS (:,JPATCH)= XUNDEF 00070 ELSEWHERE 00071 TPSNOW%EMIS (:,JPATCH)= PEMISSN 00072 END WHERE 00073 END IF 00074 ! 00075 !* 2. Surface temperature 00076 ! ------------------- 00077 ! 00078 IF (TPSNOW%SCHEME=='1-L') THEN 00079 WHERE(TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)==XUNDEF ) 00080 TPSNOW%TS (:,JPATCH)= XUNDEF 00081 ELSEWHERE 00082 TPSNOW%TS(:,JPATCH) = TPSNOW%T(:, TPSNOW%NLAYER,JPATCH) 00083 END WHERE 00084 END IF 00085 ! 00086 IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN 00087 WHERE(TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)==XUNDEF ) 00088 TPSNOW%TS (:,JPATCH)= XUNDEF 00089 ELSEWHERE 00090 TPSNOW%TS(:,JPATCH) = XTT + (TPSNOW%HEAT(:,1,JPATCH) & 00091 + XLMTT * TPSNOW%RHO(:,1,JPATCH) ) & 00092 / SNOW3LSCAP(TPSNOW%RHO(:,1,JPATCH)) 00093 TPSNOW%TS(:,JPATCH) = MIN(XTT, TPSNOW%TS(:,JPATCH)) 00094 END WHERE 00095 END IF 00096 ! 00097 END DO 00098 IF (LHOOK) CALL DR_HOOK('INIT_SNOW_LW',1,ZHOOK_HANDLE) 00099 ! 00100 !------------------------------------------------------------------------------- 00101 ! 00102 END SUBROUTINE INIT_SNOW_LW