!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
! ##############################################
SUBROUTINE ALLOCATE_GR_SNOW(TPSNOW,KLU,KPATCH) 4,2
! ##############################################
!
!!**** *ALLOCATE_GR_SNOW* -
!!
!! PURPOSE
!! -------
!!
!!
!!** METHOD
!! ------
!!
!! TPSNOW%SCHEME must yet be initialized
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!! Book 2
!!
!! AUTHOR
!! ------
!!
!! V.Masson Meteo-France
!!
!! MODIFICATIONS
!! -------------
!! Original 20/01/99
!
!! F.Solmon 06/00 Adapt for patch cases
!! V. Masson 01/2004 Externalization
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_TYPE_SNOW
USE MODD_SURF_PAR
, ONLY : XUNDEF
!
IMPLICIT NONE
!
!* 0.1 Declaration of arguments
! ------------------------
!
TYPE(SURF_SNOW) :: TPSNOW
INTEGER, INTENT(IN) :: KLU
INTEGER, INTENT(IN) :: KPATCH
!
!* 0.2 Declaration of local variables
! ------------------------------
!
INTEGER, DIMENSION(10) :: ALLOC_STATUS
!
!-------------------------------------------------------------------------------
!
IF (TPSNOW%SCHEME=='NONE' ) TPSNOW%NLAYER=0
IF (TPSNOW%SCHEME=='D95 ' .OR. TPSNOW%SCHEME=='1-L ') TPSNOW%NLAYER=1
IF (TPSNOW%SCHEME=='3-L ' ) TPSNOW%NLAYER=3
!
IF (TPSNOW%SCHEME=='D95 ' .OR. TPSNOW%SCHEME=='1-L ' .OR. TPSNOW%SCHEME=='3-L ' ) THEN
ALLOCATE(TPSNOW%WSNOW(KLU,TPSNOW%NLAYER,KPATCH),STAT=ALLOC_STATUS( 1))
TPSNOW%WSNOW = 0.
ELSE
ALLOCATE(TPSNOW%WSNOW(0,0,0),STAT=ALLOC_STATUS( 1))
END IF
!
IF (TPSNOW%SCHEME=='1-L ' ) THEN
ALLOCATE(TPSNOW%T(KLU,TPSNOW%NLAYER,KPATCH),STAT=ALLOC_STATUS( 2))
TPSNOW%T = XUNDEF
ELSE
ALLOCATE(TPSNOW%T(0,0,0),STAT=ALLOC_STATUS( 2))
END IF
!
IF (TPSNOW%SCHEME=='D95 ' .OR. TPSNOW%SCHEME=='1-L ' .OR. TPSNOW%SCHEME=='3-L ' ) THEN
ALLOCATE(TPSNOW%RHO(KLU,TPSNOW%NLAYER,KPATCH),STAT=ALLOC_STATUS( 3))
TPSNOW%RHO = XUNDEF
ELSE
ALLOCATE(TPSNOW%RHO(0,0,0),STAT=ALLOC_STATUS( 3))
END IF
!
IF (TPSNOW%SCHEME=='3-L ' ) THEN
ALLOCATE(TPSNOW%HEAT(KLU,TPSNOW%NLAYER,KPATCH),STAT=ALLOC_STATUS( 4))
TPSNOW%HEAT = XUNDEF
ELSE
ALLOCATE(TPSNOW%HEAT(0,0,0),STAT=ALLOC_STATUS( 4))
END IF
!
IF (TPSNOW%SCHEME=='D95 ' .OR. TPSNOW%SCHEME=='1-L ' .OR. TPSNOW%SCHEME=='3-L ' ) THEN
ALLOCATE(TPSNOW%ALB(KLU,KPATCH),STAT=ALLOC_STATUS( 5))
TPSNOW%ALB = XUNDEF
ELSE
ALLOCATE(TPSNOW%ALB(0,0),STAT=ALLOC_STATUS( 5))
END IF
!
IF (TPSNOW%SCHEME=='1-L' .OR. TPSNOW%SCHEME=='3-L') THEN
ALLOCATE(TPSNOW%EMIS(KLU,KPATCH),STAT=ALLOC_STATUS( 6))
TPSNOW%EMIS = XUNDEF
ELSE
ALLOCATE(TPSNOW%EMIS(0,0),STAT=ALLOC_STATUS( 6))
END IF
!
IF (TPSNOW%SCHEME=='1-L' .OR. TPSNOW%SCHEME=='3-L') THEN
ALLOCATE(TPSNOW%TS(KLU,KPATCH),STAT=ALLOC_STATUS( 7))
TPSNOW%TS = XUNDEF
ELSE
ALLOCATE(TPSNOW%TS(0,0),STAT=ALLOC_STATUS( 7))
END IF
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE ALLOCATE_GR_SNOW