modd_type_snow.F90 Source File


Contents

Source Code


Source Code

!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL version 2.1
!SFX_LIC version 1. See LICENSE, Licence_CeCILL_V2.1-en.txt and Licence_CeCILL_V2.1-fr.txt  
!SFX_LIC for details. version 1.
!     #####################
      MODULE MODD_TYPE_SNOW
!     #####################
!
!!****  *MODD_TYPE_SNOW* - declaration of surface snow types
!!
!!    PURPOSE
!!    -------
!       The purpose of this declarative module is to define
!      the surface snow types. 
!
!!
!!**  IMPLICIT ARGUMENTS
!!    ------------------
!!      NONE 
!!
!!    REFERENCE
!!    --------- 
!!       
!!    AUTHOR
!!    ------
!!      P. Jabouille   *Meteo France*
!!
!!    MODIFICATIONS
!!    -------------
!!      Original    20/01/99                      
!!      F. solmon   01/06/00 adaptation for patch approach  (+1D)
!!      V. Masson   01/2004  surface externalization
!!      P. Samuelsson 07/2014 additional snow albedos
!-------------------------------------------------------------------------------
!
!*       0.   DECLARATIONS
!             ------------
!
!
IMPLICIT NONE
!
TYPE SURF_SNOW
!
CHARACTER(LEN=3)                :: SCHEME    ! snow scheme used
INTEGER                         :: NLAYER    ! number of layers
!
REAL, DIMENSION(:,:), POINTER :: DEPTH
REAL, DIMENSION(:,:), POINTER :: WSNOW     ! snow (& liq. water) content (kg/m2)
REAL, DIMENSION(:,:), POINTER :: HEAT      ! heat content                (J/m2)
REAL, DIMENSION(:,:), POINTER :: T         ! temperature '1-L'
REAL, DIMENSION(:,:), POINTER :: TEMP      ! temperature '3-L' (K)
REAL, DIMENSION(:,:), POINTER :: RHO       ! density
REAL, DIMENSION(:),   POINTER :: ALB       ! snow surface albedo
REAL, DIMENSION(:),   POINTER :: ALBVIS    ! snow surface visible albedo
REAL, DIMENSION(:),   POINTER :: ALBNIR    ! snow surface near-infrared albedo
REAL, DIMENSION(:),   POINTER :: ALBFIR    ! snow surface far-infrared albedo
REAL, DIMENSION(:),   POINTER :: EMIS      ! snow surface emissivity
REAL, DIMENSION(:),   POINTER :: TS        ! snow surface temperature
REAL, DIMENSION(:,:),   POINTER :: GRAN1   ! snow grain parameter 1
REAL, DIMENSION(:,:),   POINTER :: GRAN2   ! snow grain parameter 2
REAL, DIMENSION(:,:),   POINTER :: HIST    ! snow historical variable
!                                               (non dendritic case)
REAL, DIMENSION(:,:),   POINTER :: AGE ! snow grain age
END TYPE SURF_SNOW
!
TYPE NSURF_SNOW
!
TYPE(SURF_SNOW), DIMENSION(:), POINTER :: AL
!
END TYPE NSURF_SNOW
!
CONTAINS
!
SUBROUTINE TYPE_SNOW_INIT(YSURF_SNOW)
!
TYPE(SURF_SNOW), INTENT(INOUT) :: YSURF_SNOW
!
YSURF_SNOW%DEPTH => NULL()
YSURF_SNOW%WSNOW => NULL()
YSURF_SNOW%HEAT => NULL()
YSURF_SNOW%T => NULL()
YSURF_SNOW%TEMP => NULL()
YSURF_SNOW%RHO => NULL()
YSURF_SNOW%ALB => NULL()
YSURF_SNOW%ALBVIS => NULL()
YSURF_SNOW%ALBNIR => NULL()
YSURF_SNOW%ALBFIR => NULL()
YSURF_SNOW%EMIS => NULL()
YSURF_SNOW%TS => NULL()
YSURF_SNOW%GRAN1 => NULL()
YSURF_SNOW%GRAN2 => NULL()
YSURF_SNOW%HIST => NULL()
YSURF_SNOW%AGE => NULL()
!
END SUBROUTINE TYPE_SNOW_INIT
!
END MODULE MODD_TYPE_SNOW