60 USE yomhook
,ONLY : lhook, dr_hook
61 USE parkind1
,ONLY : jprb
74 TYPE(flake_t),
INTENT(INOUT) :: f
76 INTEGER,
INTENT(IN) :: klu
77 INTEGER,
INTENT(IN) :: ksw
78 CHARACTER(LEN=6),
INTENT(IN):: hprogram
85 CHARACTER(LEN=12) :: yrec
86 REAL(KIND=JPRB) :: zhook_handle
92 IF (lhook) CALL dr_hook(
'DIAG_FLAKE_INIT_N',0,zhook_handle)
94 ALLOCATE(dgf%XDIAG_TS(klu))
97 IF (dgf%LSURF_BUDGET.OR.dgf%LSURF_BUDGETC)
THEN
98 ALLOCATE(dgf%XRN (klu))
99 ALLOCATE(dgf%XH (klu))
100 ALLOCATE(dgf%XLE (klu))
101 ALLOCATE(dgf%XLEI (klu))
102 ALLOCATE(dgf%XGFLUX (klu))
103 ALLOCATE(dgf%XEVAP (klu))
104 ALLOCATE(dgf%XSUBL (klu))
105 ALLOCATE(dgf%XSWD (klu))
106 ALLOCATE(dgf%XSWU (klu))
107 ALLOCATE(dgf%XLWD (klu))
108 ALLOCATE(dgf%XLWU (klu))
109 ALLOCATE(dgf%XSWBD (klu,ksw))
110 ALLOCATE(dgf%XSWBU (klu,ksw))
111 ALLOCATE(dgf%XFMU (klu))
112 ALLOCATE(dgf%XFMV (klu))
113 ALLOCATE(dgf%XALBT (klu))
114 ALLOCATE(dgf%XSWE (klu))
134 ALLOCATE(dgf%XRN (0))
136 ALLOCATE(dgf%XLE (0))
137 ALLOCATE(dgf%XLEI (0))
138 ALLOCATE(dgf%XGFLUX (0))
139 ALLOCATE(dgf%XEVAP (0))
140 ALLOCATE(dgf%XSUBL (0))
141 ALLOCATE(dgf%XSWD (0))
142 ALLOCATE(dgf%XSWU (0))
143 ALLOCATE(dgf%XLWD (0))
144 ALLOCATE(dgf%XLWU (0))
145 ALLOCATE(dgf%XSWBD (0,0))
146 ALLOCATE(dgf%XSWBU (0,0))
147 ALLOCATE(dgf%XFMU (0))
148 ALLOCATE(dgf%XFMV (0))
149 ALLOCATE(dgf%XALBT (0))
150 ALLOCATE(dgf%XSWE (0))
155 IF (dgf%LSURF_BUDGETC)
THEN
157 ALLOCATE(dgf%XRNC (klu))
158 ALLOCATE(dgf%XHC (klu))
159 ALLOCATE(dgf%XLEC (klu))
160 ALLOCATE(dgf%XLEIC (klu))
161 ALLOCATE(dgf%XGFLUXC (klu))
162 ALLOCATE(dgf%XEVAPC (klu))
163 ALLOCATE(dgf%XSUBLC (klu))
164 ALLOCATE(dgf%XSWDC (klu))
165 ALLOCATE(dgf%XSWUC (klu))
166 ALLOCATE(dgf%XLWDC (klu))
167 ALLOCATE(dgf%XLWUC (klu))
168 ALLOCATE(dgf%XFMUC (klu))
169 ALLOCATE(dgf%XFMVC (klu))
171 IF (.NOT. dgu%LREAD_BUDGETC)
THEN
185 ELSEIF (dgu%LREAD_BUDGETC.AND.dgf%LRESET_BUDGETC)
THEN
201 hprogram,
'VERSION',iversion,iresp)
219 hprogram,yrec,dgf%XRNC,iresp)
222 hprogram,yrec,dgf%XHC ,iresp)
225 hprogram,yrec,dgf%XLEC,iresp)
228 hprogram,yrec,dgf%XLEIC,iresp)
231 hprogram,yrec,dgf%XGFLUXC,iresp)
234 hprogram,yrec,dgf%XSWDC,iresp)
237 hprogram,yrec,dgf%XSWUC,iresp)
240 hprogram,yrec,dgf%XLWDC,iresp)
243 hprogram,yrec,dgf%XLWUC,iresp)
246 hprogram,yrec,dgf%XFMUC,iresp)
249 hprogram,yrec,dgf%XFMVC,iresp)
252 hprogram,yrec,dgf%XEVAPC,iresp)
255 hprogram,yrec,dgf%XSUBLC,iresp)
260 ALLOCATE(dgf%XRNC (0))
261 ALLOCATE(dgf%XHC (0))
262 ALLOCATE(dgf%XLEC (0))
263 ALLOCATE(dgf%XLEIC (0))
264 ALLOCATE(dgf%XGFLUXC (0))
265 ALLOCATE(dgf%XEVAPC (0))
266 ALLOCATE(dgf%XSUBLC (0))
267 ALLOCATE(dgf%XSWDC (0))
268 ALLOCATE(dgf%XSWUC (0))
269 ALLOCATE(dgf%XLWDC (0))
270 ALLOCATE(dgf%XLWUC (0))
271 ALLOCATE(dgf%XFMUC (0))
272 ALLOCATE(dgf%XFMVC (0))
278 ALLOCATE(dgf%XRI (klu))
279 ALLOCATE(dgf%XT2M (klu))
280 ALLOCATE(dgf%XT2M_MIN(klu))
281 ALLOCATE(dgf%XT2M_MAX(klu))
282 ALLOCATE(dgf%XQ2M (klu))
283 ALLOCATE(dgf%XHU2M (klu))
284 ALLOCATE(dgf%XHU2M_MIN(klu))
285 ALLOCATE(dgf%XHU2M_MAX(klu))
286 ALLOCATE(dgf%XZON10M (klu))
287 ALLOCATE(dgf%XMER10M (klu))
288 ALLOCATE(dgf%XWIND10M (klu))
289 ALLOCATE(dgf%XWIND10M_MAX(klu))
293 dgf%XT2M_MIN = xundef
297 dgf%XHU2M_MIN= xundef
298 dgf%XHU2M_MAX=-xundef
301 dgf%XWIND10M = xundef
302 dgf%XWIND10M_MAX = 0.0
304 ALLOCATE(dgf%XRI (0))
305 ALLOCATE(dgf%XT2M (0))
306 ALLOCATE(dgf%XT2M_MIN (0))
307 ALLOCATE(dgf%XT2M_MAX (0))
308 ALLOCATE(dgf%XQ2M (0))
309 ALLOCATE(dgf%XHU2M (0))
310 ALLOCATE(dgf%XHU2M_MIN(0))
311 ALLOCATE(dgf%XHU2M_MAX(0))
312 ALLOCATE(dgf%XZON10M (0))
313 ALLOCATE(dgf%XMER10M (0))
314 ALLOCATE(dgf%XWIND10M (0))
315 ALLOCATE(dgf%XWIND10M_MAX(0))
321 ALLOCATE(dgf%XCD (klu))
322 ALLOCATE(dgf%XCH (klu))
323 ALLOCATE(dgf%XCE (klu))
324 ALLOCATE(dgf%XZ0 (klu))
325 ALLOCATE(dgf%XZ0H (klu))
333 ALLOCATE(dgf%XCD (0))
334 ALLOCATE(dgf%XCH (0))
335 ALLOCATE(dgf%XCE (0))
336 ALLOCATE(dgf%XZ0 (0))
337 ALLOCATE(dgf%XZ0H (0))
342 IF (dgf%LSURF_VARS)
THEN
343 ALLOCATE(dgf%XQS (klu))
347 ALLOCATE(dgf%XQS (0))
352 IF (dgmf%LWATER_PROFILE)
THEN
353 ALLOCATE (dgmf%XZW_PROFILE(count(dgmf%XZWAT_PROFILE/= xundef)))
354 ALLOCATE (dgmf%XTW_PROFILE(count(dgmf%XZWAT_PROFILE/= xundef),klu))
355 dgmf%XZW_PROFILE=dgmf%XZWAT_PROFILE(:count(dgmf%XZWAT_PROFILE /= xundef))
357 ALLOCATE (dgmf%XZW_PROFILE(0))
358 ALLOCATE (dgmf%XTW_PROFILE(0,0))
366 ALLOCATE(f%XCPL_FLAKE_EVAP(klu))
367 ALLOCATE(f%XCPL_FLAKE_RAIN(klu))
368 ALLOCATE(f%XCPL_FLAKE_SNOW(klu))
369 f%XCPL_FLAKE_EVAP(:) = 0.0
370 f%XCPL_FLAKE_RAIN(:) = 0.0
371 f%XCPL_FLAKE_SNOW(:) = 0.0
375 ALLOCATE(f%XCPL_FLAKE_EVAP(0))
376 ALLOCATE(f%XCPL_FLAKE_RAIN(0))
377 ALLOCATE(f%XCPL_FLAKE_SNOW(0))
381 IF (lhook) CALL dr_hook(
'DIAG_FLAKE_INIT_N',1,zhook_handle)
subroutine diag_flake_init_n(DGU, DGF, DGMF, F, HPROGRAM, KLU, KSW)