SURFEX v8.1
General documentation of Surfex
allocate_gr_snow.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE allocate_gr_snow(TPSNOW,KLU)
7 ! ##############################################
8 !
9 !!**** *ALLOCATE_GR_SNOW* -
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! TPSNOW%SCHEME must yet be initialized
19 !!
20 !! EXTERNAL
21 !! --------
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! Book 2
31 !!
32 !! AUTHOR
33 !! ------
34 !!
35 !! V.Masson Meteo-France
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 20/01/99
40 !
41 !! F.Solmon 06/00 Adapt for patch cases
42 !! V. Masson 01/2004 Externalization
43 !! A. Bogatchev 09/2005 EBA snow option
44 !! P. Samuelsson 07/2014 Added snow albedos
45 !-------------------------------------------------------------------------------
46 !
47 !* 0. DECLARATIONS
48 ! ------------
49 !
51 USE modd_surf_par, ONLY : xundef
52 !
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 IMPLICIT NONE
58 !
59 !* 0.1 Declaration of arguments
60 ! ------------------------
61 !
62 TYPE(surf_snow), INTENT(INOUT) :: TPSNOW
63 INTEGER, INTENT(IN) :: KLU
64 REAL(KIND=JPRB) :: ZHOOK_HANDLE
65 !
66 !* 0.2 Declaration of local variables
67 ! ------------------------------
68 !
69 !-------------------------------------------------------------------------------
70 !
71 IF (lhook) CALL dr_hook('ALLOCATE_GR_SNOW',0,zhook_handle)
72 !
73 IF (tpsnow%SCHEME=='3-L' .OR. tpsnow%SCHEME=='CRO' .OR. tpsnow%SCHEME=='1-L' .OR. &
74  tpsnow%SCHEME=='D95' .OR. tpsnow%SCHEME=='EBA') THEN
75  !
76  ALLOCATE(tpsnow%WSNOW (klu,tpsnow%NLAYER))
77  ALLOCATE(tpsnow%RHO (klu,tpsnow%NLAYER))
78  ALLOCATE(tpsnow%ALB (klu))
79  ALLOCATE(tpsnow%ALBVIS (klu))
80  ALLOCATE(tpsnow%ALBNIR (klu))
81  ALLOCATE(tpsnow%ALBFIR (klu))
82  tpsnow%WSNOW = 0.
83  tpsnow%RHO = xundef
84  tpsnow%ALB = xundef
85  tpsnow%ALBVIS = xundef
86  tpsnow%ALBNIR = xundef
87  tpsnow%ALBFIR = xundef
88  !
89  IF (tpsnow%SCHEME/='D95' .AND. tpsnow%SCHEME/='EBA') THEN
90  !
91  ALLOCATE(tpsnow%EMIS(klu))
92  ALLOCATE(tpsnow%TS (klu))
93  tpsnow%EMIS = xundef
94  tpsnow%TS = xundef
95  !
96  IF (tpsnow%SCHEME/='1-L') THEN
97  !
98  ALLOCATE(tpsnow%TEMP(klu,tpsnow%NLAYER))
99  ALLOCATE(tpsnow%HEAT(klu,tpsnow%NLAYER))
100  ALLOCATE(tpsnow%AGE (klu,tpsnow%NLAYER))
101  tpsnow%TEMP = xundef
102  tpsnow%HEAT = xundef
103  tpsnow%AGE = xundef
104  !
105  IF(tpsnow%SCHEME=='CRO') THEN
106  !
107  ALLOCATE(tpsnow%GRAN1(klu,tpsnow%NLAYER))
108  ALLOCATE(tpsnow%GRAN2(klu,tpsnow%NLAYER))
109  ALLOCATE(tpsnow%HIST (klu,tpsnow%NLAYER))
110  tpsnow%GRAN1 = xundef
111  tpsnow%GRAN2 = xundef
112  tpsnow%HIST = xundef
113  !
114  END IF
115  !
116  ELSE
117  !
118  ALLOCATE(tpsnow%T(klu,tpsnow%NLAYER))
119  tpsnow%T = xundef
120  !
121  END IF
122  ENDIF
123 ENDIF
124 !
125 !
126 IF (tpsnow%SCHEME/='CRO') THEN
127  !
128  ALLOCATE(tpsnow%GRAN1(0,0))
129  ALLOCATE(tpsnow%GRAN2(0,0))
130  ALLOCATE(tpsnow%HIST (0,0))
131  !
132  IF (tpsnow%SCHEME/='3-L') THEN
133  !
134  ALLOCATE(tpsnow%TEMP(0,0))
135  ALLOCATE(tpsnow%HEAT(0,0))
136  ALLOCATE(tpsnow%AGE (0,0))
137  !
138  IF (tpsnow%SCHEME/='1-L') THEN
139  !
140  ALLOCATE(tpsnow%EMIS (0))
141  ALLOCATE(tpsnow%TS (0))
142  !
143  IF (tpsnow%SCHEME/='D95' .AND. tpsnow%SCHEME/='EBA') THEN
144  !
145  ALLOCATE(tpsnow%WSNOW (0,0))
146  ALLOCATE(tpsnow%RHO (0,0))
147  ALLOCATE(tpsnow%ALB (0))
148  ALLOCATE(tpsnow%ALBVIS (0))
149  ALLOCATE(tpsnow%ALBNIR (0))
150  ALLOCATE(tpsnow%ALBFIR (0))
151  !
152  ENDIF
153  !
154  ENDIF
155  !
156  ENDIF
157  !
158 END IF
159 !
160 IF (tpsnow%SCHEME/='1-L') THEN
161  !
162  ALLOCATE(tpsnow%T(0,0))
163  !
164 ENDIF
165 !
166 IF (lhook) CALL dr_hook('ALLOCATE_GR_SNOW',1,zhook_handle)
167 !-------------------------------------------------------------------------------
168 END SUBROUTINE allocate_gr_snow
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine allocate_gr_snow(TPSNOW, KLU)
logical lhook
Definition: yomhook.F90:15