7 dgo, dgs, dgsi, dgu, s, &
69 USE yomhook
,ONLY : lhook, dr_hook
70 USE parkind1
,ONLY : jprb
86 INTEGER,
INTENT(IN) :: klu
87 INTEGER,
INTENT(IN) :: ksw
88 CHARACTER(LEN=6),
INTENT(IN):: hprogram
95 CHARACTER(LEN=12) :: yrec
97 REAL(KIND=JPRB) :: zhook_handle
103 IF (lhook) CALL dr_hook(
'DIAG_SEAFLUX_INIT_N',0,zhook_handle)
104 ALLOCATE(dgs%XTS (klu))
105 ALLOCATE(dgs%XTSRAD(klu))
109 IF (dgs%LSURF_BUDGET.OR.dgs%LSURF_BUDGETC)
THEN
110 ALLOCATE(dgs%XRN (klu))
111 ALLOCATE(dgs%XRN_ICE (klu))
112 ALLOCATE(dgs%XH (klu))
113 ALLOCATE(dgs%XH_ICE (klu))
114 ALLOCATE(dgs%XLE (klu))
115 ALLOCATE(dgs%XLE_ICE (klu))
116 ALLOCATE(dgs%XGFLUX (klu))
117 ALLOCATE(dgs%XGFLUX_ICE(klu))
118 ALLOCATE(dgs%XEVAP (klu))
119 ALLOCATE(dgs%XSUBL (klu))
120 ALLOCATE(dgs%XSWD (klu))
121 ALLOCATE(dgs%XSWU (klu))
122 ALLOCATE(dgs%XSWU_ICE(klu))
123 ALLOCATE(dgs%XLWD (klu))
124 ALLOCATE(dgs%XLWU (klu))
125 ALLOCATE(dgs%XLWU_ICE(klu))
126 ALLOCATE(dgs%XSWBD (klu,ksw))
127 ALLOCATE(dgs%XSWBU (klu,ksw))
128 ALLOCATE(dgs%XSWBU_ICE(klu,ksw))
129 ALLOCATE(dgs%XFMU (klu))
130 ALLOCATE(dgs%XFMU_ICE(klu))
131 ALLOCATE(dgs%XFMV (klu))
132 ALLOCATE(dgs%XFMV_ICE(klu))
133 ALLOCATE(dgs%XALBT (klu))
142 dgs%XGFLUX_ICE=xundef
147 dgs%XSWU_ICE = xundef
150 dgs%XLWU_ICE = xundef
153 dgs%XSWBU_ICE= xundef
155 dgs%XFMU_ICE = xundef
157 dgs%XFMV_ICE = xundef
161 ALLOCATE(dgs%XRN (0))
162 ALLOCATE(dgs%XRN_ICE (0))
164 ALLOCATE(dgs%XH_ICE (0))
165 ALLOCATE(dgs%XLE (0))
166 ALLOCATE(dgs%XLE_ICE (0))
167 ALLOCATE(dgs%XGFLUX (0))
168 ALLOCATE(dgs%XGFLUX_ICE(0))
169 ALLOCATE(dgs%XEVAP (0))
170 ALLOCATE(dgs%XSUBL (0))
171 ALLOCATE(dgs%XSWD (0))
172 ALLOCATE(dgs%XSWU (0))
173 ALLOCATE(dgs%XSWU_ICE(0))
174 ALLOCATE(dgs%XLWD (0))
175 ALLOCATE(dgs%XLWU (0))
176 ALLOCATE(dgs%XLWU_ICE(0))
177 ALLOCATE(dgs%XSWBD (0,0))
178 ALLOCATE(dgs%XSWBU (0,0))
179 ALLOCATE(dgs%XSWBU_ICE(0,0))
180 ALLOCATE(dgs%XFMU (0))
181 ALLOCATE(dgs%XFMU_ICE(0))
182 ALLOCATE(dgs%XFMV (0))
183 ALLOCATE(dgs%XFMV_ICE(0))
184 ALLOCATE(dgs%XALBT (0))
190 IF (dgs%LSURF_BUDGETC .OR. (lrestart .AND. .NOT.dgs%LRESET_BUDGETC))
THEN
192 IF (dgs%LSURF_BUDGETC .OR. .NOT.dgs%LRESET_BUDGETC)
THEN
195 ALLOCATE(dgs%XRNC (klu))
196 ALLOCATE(dgs%XRNC_ICE(klu))
197 ALLOCATE(dgs%XHC (klu))
198 ALLOCATE(dgs%XHC_ICE (klu))
199 ALLOCATE(dgs%XLEC (klu))
200 ALLOCATE(dgs%XLEC_ICE(klu))
201 ALLOCATE(dgs%XGFLUXC (klu))
202 ALLOCATE(dgs%XGFLUXC_ICE(klu))
203 ALLOCATE(dgs%XEVAPC (klu))
204 ALLOCATE(dgs%XSUBLC (klu))
205 ALLOCATE(dgs%XSWDC (klu))
206 ALLOCATE(dgs%XSWUC (klu))
207 ALLOCATE(dgs%XSWUC_ICE(klu))
208 ALLOCATE(dgs%XLWDC (klu))
209 ALLOCATE(dgs%XLWUC (klu))
210 ALLOCATE(dgs%XLWUC_ICE(klu))
211 ALLOCATE(dgs%XFMUC (klu))
212 ALLOCATE(dgs%XFMUC_ICE(klu))
213 ALLOCATE(dgs%XFMVC (klu))
214 ALLOCATE(dgs%XFMVC_ICE(klu))
216 IF (.NOT. dgu%LREAD_BUDGETC)
THEN
237 ELSEIF (dgu%LREAD_BUDGETC.AND.dgs%LRESET_BUDGETC)
THEN
260 hprogram,
'VERSION',iversion,iresp)
263 hprogram,yrec,dgs%XRNC,iresp)
266 hprogram,yrec,dgs%XHC ,iresp)
269 hprogram,yrec,dgs%XLEC,iresp)
272 hprogram,yrec,dgs%XLEC_ICE,iresp)
275 hprogram,yrec,dgs%XGFLUXC ,iresp)
278 hprogram,yrec,dgs%XSWDC,iresp)
281 hprogram,yrec,dgs%XSWUC,iresp)
284 hprogram,yrec,dgs%XLWDC,iresp)
287 hprogram,yrec,dgs%XLWUC,iresp)
290 hprogram,yrec,dgs%XFMUC,iresp)
293 hprogram,yrec,dgs%XFMVC,iresp)
301 hprogram,yrec,dgs%XEVAPC,iresp)
304 hprogram,yrec,dgs%XSUBLC,iresp)
308 dgs%XGFLUXC_ICE = 0.0
315 ALLOCATE(dgs%XRNC (0))
316 ALLOCATE(dgs%XRNC_ICE(0))
317 ALLOCATE(dgs%XHC (0))
318 ALLOCATE(dgs%XHC_ICE (0))
319 ALLOCATE(dgs%XLEC (0))
320 ALLOCATE(dgs%XLEC_ICE(0))
321 ALLOCATE(dgs%XGFLUXC (0))
322 ALLOCATE(dgs%XGFLUXC_ICE(0))
323 ALLOCATE(dgs%XEVAPC (0))
324 ALLOCATE(dgs%XSUBLC (0))
325 ALLOCATE(dgs%XSWDC (0))
326 ALLOCATE(dgs%XSWUC (0))
327 ALLOCATE(dgs%XSWUC_ICE(0))
328 ALLOCATE(dgs%XLWDC (0))
329 ALLOCATE(dgs%XLWUC (0))
330 ALLOCATE(dgs%XLWUC_ICE(0))
331 ALLOCATE(dgs%XFMUC (0))
332 ALLOCATE(dgs%XFMUC_ICE(0))
333 ALLOCATE(dgs%XFMVC (0))
334 ALLOCATE(dgs%XFMVC_ICE(0))
340 ALLOCATE(dgs%XRI (klu))
341 ALLOCATE(dgs%XRI_ICE (klu))
342 ALLOCATE(dgs%XT2M (klu))
343 ALLOCATE(dgs%XT2M_ICE (klu))
344 ALLOCATE(dgs%XT2M_MIN (klu))
345 ALLOCATE(dgs%XT2M_MAX (klu))
346 ALLOCATE(dgs%XQ2M (klu))
347 ALLOCATE(dgs%XQ2M_ICE (klu))
348 ALLOCATE(dgs%XHU2M (klu))
349 ALLOCATE(dgs%XHU2M_ICE(klu))
350 ALLOCATE(dgs%XHU2M_MIN(klu))
351 ALLOCATE(dgs%XHU2M_MAX(klu))
352 ALLOCATE(dgs%XZON10M (klu))
353 ALLOCATE(dgs%XZON10M_ICE(klu))
354 ALLOCATE(dgs%XMER10M (klu))
355 ALLOCATE(dgs%XMER10M_ICE(klu))
356 ALLOCATE(dgs%XWIND10M (klu))
357 ALLOCATE(dgs%XWIND10M_ICE(klu))
358 ALLOCATE(dgs%XWIND10M_MAX(klu))
363 dgs%XT2M_ICE = xundef
364 dgs%XT2M_MIN = xundef
367 dgs%XQ2M_ICE = xundef
369 dgs%XHU2M_ICE= xundef
370 dgs%XHU2M_MIN= xundef
371 dgs%XHU2M_MAX=-xundef
373 dgs%XZON10M_ICE=xundef
375 dgs%XMER10M_ICE=xundef
376 dgs%XWIND10M = xundef
377 dgs%XWIND10M_ICE=xundef
378 dgs%XWIND10M_MAX = 0.0
380 ALLOCATE(dgs%XRI (0))
381 ALLOCATE(dgs%XRI_ICE (0))
382 ALLOCATE(dgs%XT2M (0))
383 ALLOCATE(dgs%XT2M_ICE (0))
384 ALLOCATE(dgs%XT2M_MIN (0))
385 ALLOCATE(dgs%XT2M_MAX (0))
386 ALLOCATE(dgs%XQ2M (0))
387 ALLOCATE(dgs%XQ2M_ICE (0))
388 ALLOCATE(dgs%XHU2M (0))
389 ALLOCATE(dgs%XHU2M_ICE(0))
390 ALLOCATE(dgs%XHU2M_MIN(0))
391 ALLOCATE(dgs%XHU2M_MAX(0))
392 ALLOCATE(dgs%XZON10M (0))
393 ALLOCATE(dgs%XZON10M_ICE(0))
394 ALLOCATE(dgs%XMER10M (0))
395 ALLOCATE(dgs%XMER10M_ICE(0))
396 ALLOCATE(dgs%XWIND10M (0))
397 ALLOCATE(dgs%XWIND10M_ICE(0))
398 ALLOCATE(dgs%XWIND10M_MAX(0))
404 ALLOCATE(dgs%XCD (klu))
405 ALLOCATE(dgs%XCD_ICE (klu))
406 ALLOCATE(dgs%XCH (klu))
407 ALLOCATE(dgs%XCH_ICE (klu))
408 ALLOCATE(dgs%XCE (klu))
409 ALLOCATE(dgs%XZ0 (klu))
410 ALLOCATE(dgs%XZ0_ICE (klu))
411 ALLOCATE(dgs%XZ0H (klu))
412 ALLOCATE(dgs%XZ0H_ICE(klu))
422 dgs%XZ0H_ICE = xundef
424 ALLOCATE(dgs%XCD (0))
425 ALLOCATE(dgs%XCD_ICE (0))
426 ALLOCATE(dgs%XCH (0))
427 ALLOCATE(dgs%XCH_ICE (0))
428 ALLOCATE(dgs%XCE (0))
429 ALLOCATE(dgs%XZ0 (0))
430 ALLOCATE(dgs%XZ0_ICE (0))
431 ALLOCATE(dgs%XZ0H (0))
432 ALLOCATE(dgs%XZ0H_ICE(0))
438 IF (dgs%LSURF_VARS)
THEN
439 ALLOCATE(dgs%XQS (klu))
440 ALLOCATE(dgs%XQS_ICE (klu))
445 ALLOCATE(dgs%XQS (0))
446 ALLOCATE(dgs%XQS_ICE (0))
451 IF (dgo%LDIAG_OCEAN)
THEN
452 ALLOCATE(dgo%XTOCMOY (klu))
453 ALLOCATE(dgo%XSOCMOY (klu))
454 ALLOCATE(dgo%XUOCMOY (klu))
455 ALLOCATE(dgo%XVOCMOY (klu))
456 ALLOCATE(dgo%XDOCMOY (klu))
458 dgo%XTOCMOY(:)=xundef
459 dgo%XSOCMOY(:)=xundef
460 dgo%XUOCMOY(:)=xundef
461 dgo%XVOCMOY(:)=xundef
462 dgo%XDOCMOY(:)=xundef
464 ALLOCATE(dgo%XTOCMOY (0))
465 ALLOCATE(dgo%XSOCMOY (0))
466 ALLOCATE(dgo%XUOCMOY (0))
467 ALLOCATE(dgo%XVOCMOY (0))
468 ALLOCATE(dgo%XDOCMOY (0))
473 IF (dgsi%LDIAG_SEAICE)
THEN
474 ALLOCATE(dgsi%XSIT(klu))
476 ALLOCATE(dgsi%XSND(klu))
478 ALLOCATE(dgsi%XMLT(klu))
481 ALLOCATE(dgsi%XSIT (0))
482 ALLOCATE(dgsi%XSND (0))
483 ALLOCATE(dgsi%XMLT (0))
488 IF(lcpl_sea.OR.s%LHANDLE_SIC)
THEN
490 ALLOCATE(s%XCPL_SEA_WIND(klu))
491 ALLOCATE(s%XCPL_SEA_FWSU(klu))
492 ALLOCATE(s%XCPL_SEA_FWSV(klu))
493 ALLOCATE(s%XCPL_SEA_SNET(klu))
494 ALLOCATE(s%XCPL_SEA_HEAT(klu))
495 ALLOCATE(s%XCPL_SEA_EVAP(klu))
496 ALLOCATE(s%XCPL_SEA_RAIN(klu))
497 ALLOCATE(s%XCPL_SEA_SNOW(klu))
498 ALLOCATE(s%XCPL_SEA_FWSM(klu))
499 s%XCPL_SEA_WIND(:) = 0.0
500 s%XCPL_SEA_FWSU(:) = 0.0
501 s%XCPL_SEA_FWSV(:) = 0.0
502 s%XCPL_SEA_SNET(:) = 0.0
503 s%XCPL_SEA_HEAT(:) = 0.0
504 s%XCPL_SEA_EVAP(:) = 0.0
505 s%XCPL_SEA_RAIN(:) = 0.0
506 s%XCPL_SEA_SNOW(:) = 0.0
507 s%XCPL_SEA_FWSM(:) = 0.0
510 ALLOCATE(s%XCPL_SEA_WIND(0))
511 ALLOCATE(s%XCPL_SEA_FWSU(0))
512 ALLOCATE(s%XCPL_SEA_FWSV(0))
513 ALLOCATE(s%XCPL_SEA_SNET(0))
514 ALLOCATE(s%XCPL_SEA_HEAT(0))
515 ALLOCATE(s%XCPL_SEA_EVAP(0))
516 ALLOCATE(s%XCPL_SEA_RAIN(0))
517 ALLOCATE(s%XCPL_SEA_SNOW(0))
518 ALLOCATE(s%XCPL_SEA_FWSM(0))
521 IF(lcpl_seaice.OR.s%LHANDLE_SIC)
THEN
522 ALLOCATE(s%XCPL_SEAICE_SNET(klu))
523 ALLOCATE(s%XCPL_SEAICE_HEAT(klu))
524 ALLOCATE(s%XCPL_SEAICE_EVAP(klu))
525 s%XCPL_SEAICE_SNET(:) = 0.0
526 s%XCPL_SEAICE_HEAT(:) = 0.0
527 s%XCPL_SEAICE_EVAP(:) = 0.0
529 ALLOCATE(s%XCPL_SEAICE_SNET(0))
530 ALLOCATE(s%XCPL_SEAICE_HEAT(0))
531 ALLOCATE(s%XCPL_SEAICE_EVAP(0))
534 IF (lhook) CALL dr_hook(
'DIAG_SEAFLUX_INIT_N',1,zhook_handle)
subroutine diag_seaflux_init_n(DGO, DGS, DGSI, DGU, S, HPROGRAM, KLU, KSW)