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