SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_teb_garden_initn.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 diag_teb_garden_init_n (DGMTO, DGGD, TGD, TGDO, TGDP, TVG, &
7  hprogram,klu,ksw)
8 ! #####################
9 !
10 !!**** *DIAG_TEB_GARDEN_INIT_n* - routine to initialize TEB-ISBA diagnostic variables
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! V. Masson *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 02/2003
36 !! modified 11/2003 by P. LeMoigne: surface cumulated energy budget
37 !! modified 10/2004 by P. LeMoigne: surface miscellaneous fields
38 !! B. Decharme 2008 New diag for water budget and allow to reset
39 ! cumulatives variables at the beginning of a run
40 !-------------------------------------------------------------------------------
41 !
42 !* 0. DECLARATIONS
43 ! ------------
44 !
45 !
52 !
53 USE modd_surf_par, ONLY : xundef
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declarations of arguments
62 ! -------------------------
63 !
64 !
65 TYPE(diag_misc_teb_options_t), INTENT(INOUT) :: dgmto
66 TYPE(diag_teb_garden_t), INTENT(INOUT) :: dggd
67 TYPE(teb_garden_t), INTENT(INOUT) :: tgd
68 TYPE(teb_garden_options_t), INTENT(INOUT) :: tgdo
69 TYPE(teb_garden_pgd_t), INTENT(INOUT) :: tgdp
70 TYPE(teb_veg_options_t), INTENT(INOUT) :: tvg
71 !
72 INTEGER, INTENT(IN) :: klu ! size of arrays
73 INTEGER, INTENT(IN) :: ksw ! spectral bands
74  CHARACTER(LEN=6), INTENT(IN):: hprogram ! program calling
75 !
76 !* 0.2 Declarations of local variables
77 ! -------------------------------
78 !
79 INTEGER :: iresp ! IRESP : return-code if a problem appears
80  CHARACTER(LEN=12) :: yrec ! Name of the article to be read
81 REAL(KIND=JPRB) :: zhook_handle
82 !
83 !-------------------------------------------------------------------------------
84 !
85 IF (lhook) CALL dr_hook('DIAG_TEB_GARDEN_INIT_N',0,zhook_handle)
86 !
87 ALLOCATE(dggd%XRI (klu))
88 !
89 dggd%XRI = xundef
90 !
91 ALLOCATE(dggd%XCD (klu))
92 ALLOCATE(dggd%XCH (klu))
93 ALLOCATE(dggd%XRN (klu))
94 ALLOCATE(dggd%XH (klu))
95 ALLOCATE(dggd%XGFLUX (klu))
96 ALLOCATE(dggd%XQS (klu))
97 !
98 dggd%XCD = xundef
99 dggd%XCH = xundef
100 dggd%XRN = xundef
101 dggd%XH = xundef
102 dggd%XGFLUX = xundef
103 dggd%XQS = xundef
104 !
105 ALLOCATE(dggd%XLEI (klu))
106 ALLOCATE(dggd%XLEG (klu))
107 ALLOCATE(dggd%XLEGI (klu))
108 ALLOCATE(dggd%XLEV (klu))
109 ALLOCATE(dggd%XLES (klu))
110 ALLOCATE(dggd%XLER (klu))
111 ALLOCATE(dggd%XLETR (klu))
112 ALLOCATE(dggd%XEVAP (klu))
113 ALLOCATE(dggd%XDRAIN (klu))
114 ALLOCATE(dggd%XRUNOFF (klu))
115 ALLOCATE(dggd%XHORT (klu))
116 ALLOCATE(dggd%XDRIP (klu))
117 ALLOCATE(dggd%XRRVEG (klu))
118 ALLOCATE(dggd%XMELT (klu))
119 ALLOCATE(dggd%XIRRIG_FLUX(klu))
120 !
121 dggd%XLEI = xundef
122 dggd%XLEG = xundef
123 dggd%XLEGI = xundef
124 dggd%XLEV = xundef
125 dggd%XLES = xundef
126 dggd%XLER = xundef
127 dggd%XLETR = xundef
128 dggd%XEVAP = xundef
129 dggd%XDRAIN = xundef
130 dggd%XRUNOFF = xundef
131 dggd%XHORT = xundef
132 dggd%XDRIP = xundef
133 dggd%XRRVEG = xundef
134 dggd%XMELT = xundef
135 dggd%XIRRIG_FLUX = xundef
136 !
137 ALLOCATE(dggd%XCG (klu))
138 ALLOCATE(dggd%XC1 (klu))
139 ALLOCATE(dggd%XC2 (klu))
140 ALLOCATE(dggd%XWGEQ (klu))
141 ALLOCATE(dggd%XCT (klu))
142 ALLOCATE(dggd%XRS (klu))
143 ALLOCATE(dggd%XCDN (klu))
144 ALLOCATE(dggd%XHU (klu))
145 ALLOCATE(dggd%XHUG (klu))
146 ALLOCATE(dggd%XRESTORE(klu))
147 ALLOCATE(dggd%XUSTAR (klu))
148 IF (tvg%CPHOTO/='NON') THEN
149  ALLOCATE(dggd%XIACAN (klu,SIZE(tgdp%XABC) ))
150 ELSE
151  ALLOCATE(dggd%XIACAN (0,0))
152 END IF
153 !
154 dggd%XCG = xundef
155 dggd%XC1 = xundef
156 dggd%XC2 = xundef
157 dggd%XWGEQ = xundef
158 dggd%XCT = xundef
159 dggd%XRS = xundef
160 dggd%XCDN = xundef
161 dggd%XHU = xundef
162 dggd%XHUG = xundef
163 dggd%XRESTORE = xundef
164 dggd%XUSTAR = xundef
165 IF (tvg%CPHOTO/='NON') THEN
166  dggd%XIACAN = xundef
167 END IF
168 !
169 ALLOCATE(dggd%XSNOWTEMP(klu,tgd%CUR%TSNOW%NLAYER ))
170 ALLOCATE(dggd%XSNOWLIQ (klu,tgd%CUR%TSNOW%NLAYER ))
171 ALLOCATE(dggd%XSNOWDZ (klu,tgd%CUR%TSNOW%NLAYER ))
172 ALLOCATE(dggd%XSNOWHMASS(klu))
173 ALLOCATE(dggd%XMELTADV (klu))
174 !
175 dggd%XSNOWTEMP = xundef
176 dggd%XSNOWLIQ = xundef
177 dggd%XSNOWDZ = xundef
178 dggd%XSNOWHMASS = xundef
179 dggd%XMELTADV = xundef
180 !
181 ALLOCATE(dggd%XHV (klu))
182 ALLOCATE(dggd%XALBT (klu))
183 ALLOCATE(dggd%XEMIST (klu))
184 !
185 dggd%XHV = xundef
186 dggd%XALBT = xundef
187 dggd%XEMIST = xundef
188 !
189 ALLOCATE(dggd%XFAPAR (klu))
190 ALLOCATE(dggd%XFAPIR (klu))
191 ALLOCATE(dggd%XFAPAR_BS (klu))
192 ALLOCATE(dggd%XFAPIR_BS (klu))
193 ALLOCATE(dggd%XDFAPARC (klu))
194 ALLOCATE(dggd%XDFAPIRC (klu))
195 ALLOCATE(dggd%XDLAI_EFFC(klu))
196 !
197 dggd%XFAPAR = xundef
198 dggd%XFAPIR = xundef
199 dggd%XFAPAR_BS = xundef
200 dggd%XFAPIR_BS = xundef
201 dggd%XDFAPARC = xundef
202 dggd%XDFAPIRC = xundef
203 dggd%XDLAI_EFFC = xundef
204 !
205 !* surface energy budget
206 !
207 !IF (LSURF_BUDGET) THEN
208  !
209  ALLOCATE(dggd%XSWD (klu))
210  ALLOCATE(dggd%XSWU (klu))
211  ALLOCATE(dggd%XSWBD (klu,ksw))
212  ALLOCATE(dggd%XSWBU (klu,ksw))
213  ALLOCATE(dggd%XLWD (klu))
214  ALLOCATE(dggd%XLWU (klu))
215  ALLOCATE(dggd%XFMU (klu))
216  ALLOCATE(dggd%XFMV (klu))
217  !
218  dggd%XSWD = xundef
219  dggd%XSWU = xundef
220  dggd%XSWBD = xundef
221  dggd%XSWBU = xundef
222  dggd%XLWD = xundef
223  dggd%XLWU = xundef
224  dggd%XFMU = xundef
225  dggd%XFMV = xundef
226  !
227 !END IF
228 !
229 !* surface temperature and parameters at 2m
230 !
231 ALLOCATE(dggd%XTS (klu))
232 dggd%XTS = xundef
233 ALLOCATE(dggd%XTSRAD (klu))
234 dggd%XTSRAD = xundef
235 !
236 !* miscellaneous surface fields
237 !
238 IF (dgmto%LSURF_MISC_BUDGET) THEN
239  ALLOCATE(dggd%XSWI (klu,tgdo%NGROUND_LAYER))
240  ALLOCATE(dggd%XTSWI (klu,tgdo%NGROUND_LAYER))
241  ALLOCATE(dggd%XTWSNOW (klu))
242  ALLOCATE(dggd%XTDSNOW (klu))
243  dggd%XSWI = xundef
244  dggd%XTSWI = xundef
245  dggd%XTWSNOW = xundef
246  dggd%XTDSNOW = xundef
247 ELSE
248  ALLOCATE(dggd%XSWI (0,0))
249  ALLOCATE(dggd%XTSWI (0,0))
250  ALLOCATE(dggd%XTWSNOW (0))
251  ALLOCATE(dggd%XTDSNOW (0))
252 ENDIF
253 !
254 ALLOCATE(dggd%XALBT (klu))
255 ALLOCATE(dggd%XGPP (klu))
256 ALLOCATE(dggd%XRESP_AUTO (klu))
257 ALLOCATE(dggd%XRESP_ECO (klu))
258 !
259 dggd%XALBT = xundef
260 dggd%XGPP = xundef
261 dggd%XRESP_AUTO = xundef
262 dggd%XRESP_ECO = xundef
263 !
264 !END IF
265 !
266 !* transfer coefficients
267 !
268 !IF (LCOEF) THEN
269  !
270  ALLOCATE(dggd%XCE (klu))
271  ALLOCATE(dggd%XZ0_WITH_SNOW (klu))
272  ALLOCATE(dggd%XZ0H_WITH_SNOW (klu))
273  ALLOCATE(dggd%XZ0EFF (klu))
274  !
275  dggd%XCE = xundef
276  dggd%XZ0_WITH_SNOW = xundef
277  dggd%XZ0H_WITH_SNOW = xundef
278  dggd%XZ0EFF = xundef
279 !END IF
280 !
281 !
282 !* surface humidity
283 !
284 !IF (LSURF_VARS) THEN
285  ALLOCATE(dggd%XQS (klu))
286  !
287  dggd%XQS = xundef
288 !END IF
289 !
290 !* Irrigation threshold
291 !
292 !IF (LAGRIP) THEN
293  ALLOCATE(dggd%XSEUIL(klu))
294  !
295  dggd%XSEUIL = xundef
296 !END IF
297 !
298 IF (lhook) CALL dr_hook('DIAG_TEB_GARDEN_INIT_N',1,zhook_handle)
299 !
300 !-------------------------------------------------------------------------------
301 !
302 END SUBROUTINE diag_teb_garden_init_n
subroutine diag_teb_garden_init_n(DGMTO, DGGD, TGD, TGDO, TGDP, TVG, HPROGRAM, KLU, KSW)