49 USE yomhook
,ONLY : lhook, dr_hook
50 USE parkind1
,ONLY : jprb
60 CHARACTER(LEN=6),
INTENT(IN):: hprogram
61 LOGICAL,
INTENT(IN) :: oread_budgetc
63 INTEGER,
INTENT(IN) :: klu
64 INTEGER,
INTENT(IN) :: ksw
71 CHARACTER(LEN=12) :: yrec
72 REAL(KIND=JPRB) :: zhook_handle
78 IF (lhook) CALL dr_hook(
'DIAG_IDEAL_INIT_N',0,zhook_handle)
80 ALLOCATE(dgl%XDIAG_TS(klu))
83 IF (dgl%LSURF_BUDGET .OR. dgl%LSURF_BUDGETC)
THEN
84 ALLOCATE(dgl%XRN (klu))
85 ALLOCATE(dgl%XH (klu))
86 ALLOCATE(dgl%XLE (klu))
87 ALLOCATE(dgl%XLEI (klu))
88 ALLOCATE(dgl%XGFLUX (klu))
89 ALLOCATE(dgl%XEVAP (klu))
90 ALLOCATE(dgl%XSUBL (klu))
91 ALLOCATE(dgl%XSWD (klu))
92 ALLOCATE(dgl%XSWU (klu))
93 ALLOCATE(dgl%XLWD (klu))
94 ALLOCATE(dgl%XLWU (klu))
95 ALLOCATE(dgl%XSWBD (klu,ksw))
96 ALLOCATE(dgl%XSWBU (klu,ksw))
97 ALLOCATE(dgl%XFMU (klu))
98 ALLOCATE(dgl%XFMV (klu))
99 ALLOCATE(dgl%XALBT (klu))
100 ALLOCATE(dgl%XSWE (klu))
120 ALLOCATE(dgl%XRN (0))
122 ALLOCATE(dgl%XLE (0))
123 ALLOCATE(dgl%XLEI (0))
124 ALLOCATE(dgl%XGFLUX (0))
125 ALLOCATE(dgl%XEVAP (0))
126 ALLOCATE(dgl%XSUBL (0))
127 ALLOCATE(dgl%XSWD (0))
128 ALLOCATE(dgl%XSWU (0))
129 ALLOCATE(dgl%XLWD (0))
130 ALLOCATE(dgl%XLWU (0))
131 ALLOCATE(dgl%XSWBD (0,0))
132 ALLOCATE(dgl%XSWBU (0,0))
133 ALLOCATE(dgl%XFMU (0))
134 ALLOCATE(dgl%XFMV (0))
135 ALLOCATE(dgl%XALBT (0))
136 ALLOCATE(dgl%XSWE (0))
141 IF (dgl%LSURF_BUDGETC)
THEN
143 ALLOCATE(dgl%XRNC (klu))
144 ALLOCATE(dgl%XHC (klu))
145 ALLOCATE(dgl%XLEC (klu))
146 ALLOCATE(dgl%XLEIC (klu))
147 ALLOCATE(dgl%XGFLUXC (klu))
148 ALLOCATE(dgl%XEVAPC (klu))
149 ALLOCATE(dgl%XSUBLC (klu))
150 ALLOCATE(dgl%XSWDC (klu))
151 ALLOCATE(dgl%XSWUC (klu))
152 ALLOCATE(dgl%XLWDC (klu))
153 ALLOCATE(dgl%XLWUC (klu))
154 ALLOCATE(dgl%XFMUC (klu))
155 ALLOCATE(dgl%XFMVC (klu))
157 IF (.NOT. oread_budgetc)
THEN
171 ELSEIF (oread_budgetc.AND.dgl%LRESET_BUDGETC)
THEN
186 CALL
read_surf(hprogram,
'VERSION',iversion,iresp)
203 CALL
read_surf(hprogram,yrec,dgl%XRNC,iresp)
205 CALL
read_surf(hprogram,yrec,dgl%XHC ,iresp)
207 CALL
read_surf(hprogram,yrec,dgl%XLEC,iresp)
209 CALL
read_surf(hprogram,yrec,dgl%XLEIC,iresp)
211 CALL
read_surf(hprogram,yrec,dgl%XGFLUXC,iresp)
213 CALL
read_surf(hprogram,yrec,dgl%XSWDC,iresp)
215 CALL
read_surf(hprogram,yrec,dgl%XSWUC,iresp)
217 CALL
read_surf(hprogram,yrec,dgl%XLWDC,iresp)
219 CALL
read_surf(hprogram,yrec,dgl%XLWUC,iresp)
221 CALL
read_surf(hprogram,yrec,dgl%XFMUC,iresp)
223 CALL
read_surf(hprogram,yrec,dgl%XFMVC,iresp)
225 CALL
read_surf(hprogram,yrec,dgl%XEVAPC,iresp)
227 CALL
read_surf(hprogram,yrec,dgl%XSUBLC,iresp)
232 ALLOCATE(dgl%XRNC (0))
233 ALLOCATE(dgl%XHC (0))
234 ALLOCATE(dgl%XLEC (0))
235 ALLOCATE(dgl%XLEIC (0))
236 ALLOCATE(dgl%XGFLUXC (0))
237 ALLOCATE(dgl%XEVAPC (0))
238 ALLOCATE(dgl%XSUBLC (0))
239 ALLOCATE(dgl%XSWDC (0))
240 ALLOCATE(dgl%XSWUC (0))
241 ALLOCATE(dgl%XLWDC (0))
242 ALLOCATE(dgl%XLWUC (0))
243 ALLOCATE(dgl%XFMUC (0))
244 ALLOCATE(dgl%XFMVC (0))
250 ALLOCATE(dgl%XRI (klu))
251 ALLOCATE(dgl%XT2M (klu))
252 ALLOCATE(dgl%XT2M_MIN(klu))
253 ALLOCATE(dgl%XT2M_MAX(klu))
254 ALLOCATE(dgl%XQ2M (klu))
255 ALLOCATE(dgl%XHU2M (klu))
256 ALLOCATE(dgl%XHU2M_MIN(klu))
257 ALLOCATE(dgl%XHU2M_MAX(klu))
258 ALLOCATE(dgl%XZON10M (klu))
259 ALLOCATE(dgl%XMER10M (klu))
260 ALLOCATE(dgl%XWIND10M (klu))
261 ALLOCATE(dgl%XWIND10M_MAX(klu))
265 dgl%XT2M_MIN = xundef
269 dgl%XHU2M_MIN= xundef
270 dgl%XHU2M_MAX=-xundef
273 dgl%XWIND10M = xundef
274 dgl%XWIND10M_MAX = 0.0
276 ALLOCATE(dgl%XRI (0))
277 ALLOCATE(dgl%XT2M (0))
278 ALLOCATE(dgl%XT2M_MIN (0))
279 ALLOCATE(dgl%XT2M_MAX (0))
280 ALLOCATE(dgl%XQ2M (0))
281 ALLOCATE(dgl%XHU2M (0))
282 ALLOCATE(dgl%XHU2M_MIN(0))
283 ALLOCATE(dgl%XHU2M_MAX(0))
284 ALLOCATE(dgl%XZON10M (0))
285 ALLOCATE(dgl%XMER10M (0))
286 ALLOCATE(dgl%XWIND10M (0))
287 ALLOCATE(dgl%XWIND10M_MAX(0))
293 ALLOCATE(dgl%XCD (klu))
294 ALLOCATE(dgl%XCH (klu))
295 ALLOCATE(dgl%XCE (klu))
296 ALLOCATE(dgl%XZ0 (klu))
297 ALLOCATE(dgl%XZ0H (klu))
305 ALLOCATE(dgl%XCD (0))
306 ALLOCATE(dgl%XCH (0))
307 ALLOCATE(dgl%XCE (0))
308 ALLOCATE(dgl%XZ0 (0))
309 ALLOCATE(dgl%XZ0H (0))
315 IF (dgl%LSURF_VARS)
THEN
316 ALLOCATE(dgl%XQS (klu))
320 ALLOCATE(dgl%XQS (0))
322 IF (lhook) CALL dr_hook(
'DIAG_IDEAL_INIT_N',1,zhook_handle)
subroutine diag_ideal_init_n(DGL, HPROGRAM, OREAD_BUDGETC, KLU, KSW)