SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/allocate_gr_snow.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE ALLOCATE_GR_SNOW(TPSNOW,KLU,KPATCH)
00003 !     ##############################################
00004 !
00005 !!****  *ALLOCATE_GR_SNOW* - 
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!       TPSNOW%SCHEME must yet be initialized
00015 !!    
00016 !!    EXTERNAL
00017 !!    --------
00018 !!
00019 !!    IMPLICIT ARGUMENTS
00020 !!    ------------------
00021 !!
00022 !!
00023 !!    REFERENCE
00024 !!    ---------
00025 !!
00026 !!      Book 2
00027 !!
00028 !!    AUTHOR
00029 !!    ------
00030 !!      
00031 !!      V.Masson  Meteo-France
00032 !!
00033 !!    MODIFICATIONS
00034 !!    -------------
00035 !!      Original    20/01/99
00036 !
00037 !!     F.Solmon     06/00 Adapt for patch cases 
00038 !!     V. Masson    01/2004 Externalization
00039 !!     A. Bogatchev 09/2005 EBA snow option
00040 !-------------------------------------------------------------------------------
00041 !
00042 !*       0.    DECLARATIONS
00043 !              ------------
00044 !
00045 USE MODD_TYPE_SNOW
00046 USE MODD_SURF_PAR,    ONLY : XUNDEF
00047 !
00048 !
00049 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00050 USE PARKIND1  ,ONLY : JPRB
00051 !
00052 IMPLICIT NONE
00053 !
00054 !*       0.1   Declaration of arguments
00055 !              ------------------------
00056 !
00057 TYPE(SURF_SNOW)                            :: TPSNOW
00058 INTEGER, INTENT(IN)                        :: KLU
00059 INTEGER, INTENT(IN)                        :: KPATCH
00060 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00061 !
00062 !*       0.2   Declaration of local variables
00063 !              ------------------------------
00064 !
00065 !-------------------------------------------------------------------------------
00066 !
00067 IF (LHOOK) CALL DR_HOOK('ALLOCATE_GR_SNOW',0,ZHOOK_HANDLE)
00068 !
00069 IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO' .OR. TPSNOW%SCHEME=='1-L' .OR.  &
00070     TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA') THEN
00071   ! 
00072   ALLOCATE(TPSNOW%WSNOW(KLU,TPSNOW%NLAYER,KPATCH))
00073   ALLOCATE(TPSNOW%RHO  (KLU,TPSNOW%NLAYER,KPATCH))
00074   ALLOCATE(TPSNOW%ALB  (KLU,KPATCH))  
00075   TPSNOW%WSNOW = 0.
00076   TPSNOW%RHO   = XUNDEF  
00077   TPSNOW%ALB   = XUNDEF
00078   !
00079   IF (TPSNOW%SCHEME/='D95' .AND. TPSNOW%SCHEME/='EBA') THEN
00080     !
00081     ALLOCATE(TPSNOW%EMIS(KLU,KPATCH))
00082     ALLOCATE(TPSNOW%TS  (KLU,KPATCH))
00083     TPSNOW%EMIS = XUNDEF
00084     TPSNOW%TS   = XUNDEF
00085     !
00086     IF (TPSNOW%SCHEME/='1-L') THEN
00087       !
00088       ALLOCATE(TPSNOW%TEMP(KLU,TPSNOW%NLAYER,KPATCH))
00089       ALLOCATE(TPSNOW%HEAT(KLU,TPSNOW%NLAYER,KPATCH))
00090       TPSNOW%TEMP = XUNDEF
00091       TPSNOW%HEAT = XUNDEF
00092       !
00093       IF(TPSNOW%SCHEME=='CRO') THEN
00094         !
00095         ALLOCATE(TPSNOW%GRAN1(KLU,TPSNOW%NLAYER,KPATCH))
00096         ALLOCATE(TPSNOW%GRAN2(KLU,TPSNOW%NLAYER,KPATCH))  
00097         ALLOCATE(TPSNOW%HIST (KLU,TPSNOW%NLAYER,KPATCH))  
00098         ALLOCATE(TPSNOW%AGE  (KLU,TPSNOW%NLAYER,KPATCH)) 
00099         TPSNOW%GRAN1 = XUNDEF
00100         TPSNOW%GRAN2 = XUNDEF  
00101         TPSNOW%HIST  = XUNDEF  
00102         TPSNOW%AGE   = XUNDEF
00103         !
00104       END IF
00105       !
00106     ELSE
00107       !
00108       ALLOCATE(TPSNOW%T(KLU,TPSNOW%NLAYER,KPATCH))
00109       TPSNOW%T = XUNDEF
00110       !
00111     END IF
00112   ENDIF
00113 ENDIF
00114 !
00115 !
00116 IF (TPSNOW%SCHEME/='CRO') THEN
00117   !
00118   ALLOCATE(TPSNOW%GRAN1(0,0,0))
00119   ALLOCATE(TPSNOW%GRAN2(0,0,0))  
00120   ALLOCATE(TPSNOW%HIST (0,0,0))  
00121   ALLOCATE(TPSNOW%AGE  (0,0,0))
00122   !
00123   IF (TPSNOW%SCHEME/='3-L') THEN
00124     !
00125     ALLOCATE(TPSNOW%TEMP(0,0,0))    
00126     ALLOCATE(TPSNOW%HEAT(0,0,0))
00127     !
00128     IF (TPSNOW%SCHEME/='1-L') THEN
00129       !
00130       ALLOCATE(TPSNOW%EMIS (0,0))
00131       ALLOCATE(TPSNOW%TS   (0,0))
00132       !
00133       IF (TPSNOW%SCHEME/='D95' .AND. TPSNOW%SCHEME/='EBA') THEN
00134         !
00135         ALLOCATE(TPSNOW%WSNOW(0,0,0))
00136         ALLOCATE(TPSNOW%RHO  (0,0,0))
00137         ALLOCATE(TPSNOW%ALB  (0,0))
00138         !
00139       ENDIF
00140       !
00141     ENDIF
00142     !
00143   ENDIF
00144   ! 
00145 END IF
00146 !
00147 IF (TPSNOW%SCHEME/='1-L') THEN
00148   !
00149   ALLOCATE(TPSNOW%T(0,0,0))
00150   !
00151 ENDIF
00152 !
00153 IF (LHOOK) CALL DR_HOOK('ALLOCATE_GR_SNOW',1,ZHOOK_HANDLE)
00154 !-------------------------------------------------------------------------------
00155 END SUBROUTINE ALLOCATE_GR_SNOW