ROMS
Loading...
Searching...
No Matches
wrt_avg_mod Module Reference

Functions/Subroutines

subroutine, public wrt_avg (ng, tile)
 
subroutine, private wrt_avg_nf90 (ng, model, tile, lbi, ubi, lbj, ubj)
 
subroutine, private wrt_avg_pio (ng, model, tile, lbi, ubi, lbj, ubj)
 

Function/Subroutine Documentation

◆ wrt_avg()

subroutine, public wrt_avg_mod::wrt_avg ( integer, intent(in) ng,
integer, intent(in) tile )

Definition at line 82 of file wrt_avg.F.

83!***********************************************************************
84!
85! Imported variable declarations.
86!
87 integer, intent(in) :: ng, tile
88!
89! Local variable declarations.
90!
91 integer :: LBi, UBi, LBj, UBj
92!
93 character (len=*), parameter :: MyFile = &
94 & __FILE__
95!
96!-----------------------------------------------------------------------
97! Write out time-averaged fields according to IO type.
98!-----------------------------------------------------------------------
99!
100 lbi=bounds(ng)%LBi(tile)
101 ubi=bounds(ng)%UBi(tile)
102 lbj=bounds(ng)%LBj(tile)
103 ubj=bounds(ng)%UBj(tile)
104!
105 SELECT CASE (avg(ng)%IOtype)
106 CASE (io_nf90)
107 CALL wrt_avg_nf90 (ng, inlm, tile, &
108 & lbi, ubi, lbj, ubj)
109
110# if defined PIO_LIB && defined DISTRIBUTE
111 CASE (io_pio)
112 CALL wrt_avg_pio (ng, inlm, tile, &
113 & lbi, ubi, lbj, ubj)
114# endif
115 CASE DEFAULT
116 IF (master) WRITE (stdout,10) avg(ng)%IOtype
117 exit_flag=3
118 END SELECT
119 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
120!
121 10 FORMAT (' WRT_AVG - Illegal output file type, io_type = ',i0, &
122 & /,15x,'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
123!
124 RETURN

References mod_iounits::avg, mod_param::bounds, mod_scalars::exit_flag, strings_mod::founderror(), mod_param::inlm, mod_ncparam::io_nf90, mod_ncparam::io_pio, mod_parallel::master, mod_scalars::noerror, mod_iounits::stdout, wrt_avg_nf90(), and wrt_avg_pio().

Referenced by ad_output(), output(), rp_output(), and tl_output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wrt_avg_nf90()

subroutine, private wrt_avg_mod::wrt_avg_nf90 ( integer, intent(in) ng,
integer, intent(in) model,
integer, intent(in) tile,
integer, intent(in) lbi,
integer, intent(in) ubi,
integer, intent(in) lbj,
integer, intent(in) ubj )
private

Definition at line 128 of file wrt_avg.F.

130!***********************************************************************
131!
132 USE mod_netcdf
133!
134! Imported variable declarations.
135!
136 integer, intent(in) :: ng, model, tile
137 integer, intent(in) :: LBi, UBi, LBj, UBj
138!
139! Local variable declarations.
140!
141 integer :: Fcount, gfactor, gtype, i, itrc, status
142!
143 real(dp) :: scale
144!
145 character (len=*), parameter :: MyFile = &
146 & __FILE__//", wrt_avg_nf90"
147!
148 sourcefile=myfile
149!
150!-----------------------------------------------------------------------
151! Write out time-averaged fields when appropriate.
152!-----------------------------------------------------------------------
153!
154 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
155!
156! Set grid type factor to write full (gfactor=1) fields or water
157! points (gfactor=-1) fields only.
158!
159# if defined WRITE_WATER && defined MASKING
160 gfactor=-1
161# else
162 gfactor=1
163# endif
164!
165! Set time record index.
166!
167 avg(ng)%Rindex=avg(ng)%Rindex+1
168 fcount=avg(ng)%load
169 avg(ng)%Nrec(fcount)=avg(ng)%Nrec(fcount)+1
170!
171! Report.
172!
173#ifdef NESTING
174 IF (master) WRITE (stdout,10) avg(ng)%Rindex, ng
175#else
176 IF (master) WRITE (stdout,10) avg(ng)%Rindex
177#endif
178!
179! Write out averaged time.
180!
181 CALL netcdf_put_fvar (ng, model, avg(ng)%name, &
182 & trim(vname(1,idtime)), avgtime(ng:), &
183 & (/avg(ng)%Rindex/), (/1/), &
184 & ncid = avg(ng)%ncid, &
185 & varid = avg(ng)%Vid(idtime))
186 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
187!
188! Write out free-surface (m).
189!
190 IF (aout(idfsur,ng)) THEN
191 scale=1.0_dp
192 gtype=gfactor*r2dvar
193 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idfsur, &
194 & avg(ng)%Vid(idfsur), &
195 & avg(ng)%Rindex, gtype, &
196 & lbi, ubi, lbj, ubj, scale, &
197# ifdef MASKING
198 & grid(ng) % rmask, &
199# endif
200 & average(ng) % avgzeta)
201 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
202 IF (master) THEN
203 WRITE (stdout,20) trim(vname(1,idfsur)), avg(ng)%Rindex
204 END IF
205 exit_flag=3
206 ioerror=status
207 RETURN
208 END IF
209 END IF
210
211# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
212!
213! Write out detided free-surface (m).
214!
215 IF (aout(idfsud,ng)) THEN
216 scale=1.0_dp
217 gtype=gfactor*r2dvar
218 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idfsud, &
219 & avg(ng)%Vid(idfsud), &
220 & avg(ng)%Rindex, gtype, &
221 & lbi, ubi, lbj, ubj, scale, &
222# ifdef MASKING
223 & grid(ng) % rmask, &
224# endif
225 & tides(ng) % zeta_detided)
226 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
227 IF (master) THEN
228 WRITE (stdout,20) trim(vname(1,idfsud)), avg(ng)%Rindex
229 END IF
230 exit_flag=3
231 ioerror=status
232 RETURN
233 END IF
234 END IF
235# endif
236!
237! Write out 2D momentum component (m/s) in the XI-direction.
238!
239 IF (aout(idubar,ng)) THEN
240 scale=1.0_dp
241 gtype=gfactor*u2dvar
242 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idubar, &
243 & avg(ng)%Vid(idubar), &
244 & avg(ng)%Rindex, gtype, &
245 & lbi, ubi, lbj, ubj, scale, &
246# ifdef MASKING
247 & grid(ng) % umask_avg, &
248# endif
249 & average(ng) % avgu2d)
250 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
251 IF (master) THEN
252 WRITE (stdout,20) trim(vname(1,idubar)), avg(ng)%Rindex
253 END IF
254 exit_flag=3
255 ioerror=status
256 RETURN
257 END IF
258 END IF
259
260# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
261!
262! Write out detided 2D momentum component (m/s) in the XI-direction.
263!
264 IF (aout(idu2dd,ng)) THEN
265 scale=1.0_dp
266 gtype=gfactor*u2dvar
267 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idu2dd, &
268 & avg(ng)%Vid(idu2dd), &
269 & avg(ng)%Rindex, gtype, &
270 & lbi, ubi, lbj, ubj, scale, &
271# ifdef MASKING
272 & grid(ng) % umask_avg, &
273# endif
274 & tides(ng) % ubar_detided)
275 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
276 IF (master) THEN
277 WRITE (stdout,20) trim(vname(1,idu2dd)), avg(ng)%Rindex
278 END IF
279 exit_flag=3
280 ioerror=status
281 RETURN
282 END IF
283 END IF
284# endif
285!
286! Write out 2D momentum component (m/s) in the ETA-direction.
287!
288 IF (aout(idvbar,ng)) THEN
289 scale=1.0_dp
290 gtype=gfactor*v2dvar
291 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvbar, &
292 & avg(ng)%Vid(idvbar), &
293 & avg(ng)%Rindex, gtype, &
294 & lbi, ubi, lbj, ubj, scale, &
295# ifdef MASKING
296 & grid(ng) % vmask_avg, &
297# endif
298 & average(ng) % avgv2d)
299 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
300 IF (master) THEN
301 WRITE (stdout,20) trim(vname(1,idvbar)), avg(ng)%Rindex
302 END IF
303 exit_flag=3
304 ioerror=status
305 RETURN
306 END IF
307 END IF
308
309# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
310!
311! Write out detided 2D momentum component (m/s) in the ETA-direction.
312!
313 IF (aout(idv2dd,ng)) THEN
314 scale=1.0_dp
315 gtype=gfactor*v2dvar
316 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idv2dd, &
317 & avg(ng)%Vid(idv2dd), &
318 & avg(ng)%Rindex, gtype, &
319 & lbi, ubi, lbj, ubj, scale, &
320# ifdef MASKING
321 & grid(ng) % vmask_avg, &
322# endif
323 & tides(ng) % vbar_detided)
324 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
325 IF (master) THEN
326 WRITE (stdout,20) trim(vname(1,idv2dd)), avg(ng)%Rindex
327 END IF
328 exit_flag=3
329 ioerror=status
330 RETURN
331 END IF
332 END IF
333# endif
334!
335! Write out 2D Eastward momentum component (m/s) at RHO-points.
336!
337 IF (aout(idu2de,ng)) THEN
338 scale=1.0_dp
339 gtype=gfactor*r2dvar
340 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idu2de, &
341 & avg(ng)%Vid(idu2de), &
342 & avg(ng)%Rindex, gtype, &
343 & lbi, ubi, lbj, ubj, scale, &
344# ifdef MASKING
345 & grid(ng) % rmask_avg, &
346# endif
347 & average(ng) % avgu2dE)
348 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
349 IF (master) THEN
350 WRITE (stdout,20) trim(vname(1,idu2de)), avg(ng)%Rindex
351 END IF
352 exit_flag=3
353 ioerror=status
354 RETURN
355 END IF
356 END IF
357!
358! Write out 2D Northward momentum component (m/s) at RHO-points.
359!
360 IF (aout(idv2dn,ng)) THEN
361 scale=1.0_dp
362 gtype=gfactor*r2dvar
363 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idv2dn, &
364 & avg(ng)%Vid(idv2dn), &
365 & avg(ng)%Rindex, gtype, &
366 & lbi, ubi, lbj, ubj, scale, &
367# ifdef MASKING
368 & grid(ng) % rmask_avg, &
369# endif
370 & average(ng) % avgv2dN)
371 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
372 IF (master) THEN
373 WRITE (stdout,20) trim(vname(1,idv2dn)), avg(ng)%Rindex
374 END IF
375 exit_flag=3
376 ioerror=status
377 RETURN
378 END IF
379 END IF
380
381# if defined FORWARD_WRITE && defined SOLVE3D
382!
383! Write out time-averaged mass fluxes for 3D momentum coupling.
384!
385 IF (aout(idufx1,ng)) THEN
386 scale=1.0_dp
387 gtype=gfactor*u2dvar
388 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idufx1, &
389 & avg(ng)%Vid(idufx1), &
390 & avg(ng)%Rindex, gtype, &
391 & lbi, ubi, lbj, ubj, scale, &
392# ifdef MASKING
393 & grid(ng) % umask_avg, &
394# endif
395 & average(ng) % avgDU_avg1)
396 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
397 IF (master) THEN
398 WRITE (stdout,20) trim(vname(1,idufx1)), avg(ng)%Rindex
399 END IF
400 exit_flag=3
401 ioerror=status
402 RETURN
403 END IF
404 END IF
405!
406 IF (aout(idufx2,ng)) THEN
407 scale=1.0_dp
408 gtype=gfactor*u2dvar
409 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idufx2, &
410 & avg(ng)%Vid(idufx2), &
411 & avg(ng)%Rindex, gtype, &
412 & lbi, ubi, lbj, ubj, scale, &
413# ifdef MASKING
414 & grid(ng) % umask_avg, &
415# endif
416 & average(ng) % avgDU_avg2)
417 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
418 IF (master) THEN
419 WRITE (stdout,20) trim(vname(1,idufx2)), avg(ng)%Rindex
420 END IF
421 exit_flag=3
422 ioerror=status
423 RETURN
424 END IF
425 END IF
426!
427 IF (aout(idvfx1,ng)) THEN
428 scale=1.0_dp
429 gtype=gfactor*v2dvar
430 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvfx1, &
431 & avg(ng)%Vid(idvfx1), &
432 & avg(ng)%Rindex, gtype, &
433 & lbi, ubi, lbj, ubj, scale, &
434# ifdef MASKING
435 & grid(ng) % vmask_avg, &
436# endif
437 & average(ng) % avgDV_avg1)
438 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
439 IF (master) THEN
440 WRITE (stdout,20) trim(vname(1,idvfx1)), avg(ng)%Rindex
441 END IF
442 exit_flag=3
443 ioerror=status
444 RETURN
445 END IF
446 END IF
447!
448 IF (aout(idvfx2,ng)) THEN
449 scale=1.0_dp
450 gtype=gfactor*v2dvar
451 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvfx2, &
452 & avg(ng)%Vid(idvfx2), &
453 & avg(ng)%Rindex, gtype, &
454 & lbi, ubi, lbj, ubj, scale, &
455# ifdef MASKING
456 & grid(ng) % umask_avg, &
457# endif
458 & average(ng) % avgDV_avg2)
459 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
460 IF (master) THEN
461 WRITE (stdout,20) trim(vname(1,idvfx2)), avg(ng)%Rindex
462 END IF
463 exit_flag=3
464 ioerror=status
465 RETURN
466 END IF
467 END IF
468# endif
469
470# ifdef SOLVE3D
471!
472! Write out 3D momentum component (m/s) in the XI-direction.
473!
474 IF (aout(iduvel,ng)) THEN
475 scale=1.0_dp
476 gtype=gfactor*u3dvar
477 status=nf_fwrite3d(ng, model, avg(ng)%ncid, iduvel, &
478 & avg(ng)%Vid(iduvel), &
479 & avg(ng)%Rindex, gtype, &
480 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
481# ifdef MASKING
482 & grid(ng) % umask_avg, &
483# endif
484 & average(ng) % avgu3d)
485 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
486 IF (master) THEN
487 WRITE (stdout,20) trim(vname(1,iduvel)), avg(ng)%Rindex
488 END IF
489 exit_flag=3
490 ioerror=status
491 RETURN
492 END IF
493 END IF
494
495# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
496!
497! Write out detided 3D momentum component (m/s) in the XI-direction.
498!
499 IF (aout(idu3dd,ng)) THEN
500 scale=1.0_dp
501 gtype=gfactor*u3dvar
502 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idu3dd, &
503 & avg(ng)%Vid(idu3dd), &
504 & avg(ng)%Rindex, gtype, &
505 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
506# ifdef MASKING
507 & grid(ng) % umask_avg, &
508# endif
509 & tides(ng) % u_detided)
510 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
511 IF (master) THEN
512 WRITE (stdout,20) trim(vname(1,idu3dd)), avg(ng)%Rindex
513 END IF
514 exit_flag=3
515 ioerror=status
516 RETURN
517 END IF
518 END IF
519# endif
520!
521! Write out 3D momentum component (m/s) in the ETA-direction.
522!
523 IF (aout(idvvel,ng)) THEN
524 scale=1.0_dp
525 gtype=gfactor*v3dvar
526 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idvvel, &
527 & avg(ng)%Vid(idvvel), &
528 & avg(ng)%Rindex, gtype, &
529 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
530# ifdef MASKING
531 & grid(ng) % vmask_avg, &
532# endif
533 & average(ng) % avgv3d)
534 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
535 IF (master) THEN
536 WRITE (stdout,20) trim(vname(1,idvvel)), avg(ng)%Rindex
537 END IF
538 exit_flag=3
539 ioerror=status
540 RETURN
541 END IF
542 END IF
543
544# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
545!
546! Write out detided 3D momentum component (m/s) in the ETA-direction.
547!
548 IF (aout(idv3dd,ng)) THEN
549 scale=1.0_dp
550 gtype=gfactor*v3dvar
551 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idv3dd, &
552 & avg(ng)%Vid(idv3dd), &
553 & avg(ng)%Rindex, gtype, &
554 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
555# ifdef MASKING
556 & grid(ng) % vmask_avg, &
557# endif
558 & tides(ng) % v_detided)
559 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
560 IF (master) THEN
561 WRITE (stdout,20) trim(vname(1,idv3dd)), avg(ng)%Rindex
562 END IF
563 exit_flag=3
564 ioerror=status
565 RETURN
566 END IF
567 END IF
568# endif
569!
570! Write out 3D Eastward momentum component (m/s) at RHO-points.
571!
572 IF (aout(idu3de,ng)) THEN
573 scale=1.0_dp
574 gtype=gfactor*r3dvar
575 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idu3de, &
576 & avg(ng)%Vid(idu3de), &
577 & avg(ng)%Rindex, gtype, &
578 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
579# ifdef MASKING
580 & grid(ng) % rmask_avg, &
581# endif
582 & average(ng) % avgu3dE)
583 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
584 IF (master) THEN
585 WRITE (stdout,20) trim(vname(1,idu3de)), avg(ng)%Rindex
586 END IF
587 exit_flag=3
588 ioerror=status
589 RETURN
590 END IF
591 END IF
592!
593! Write out 3D Northward momentum component (m/s) at RHO-points.
594!
595 IF (aout(idv3dn,ng)) THEN
596 scale=1.0_dp
597 gtype=gfactor*r3dvar
598 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idv3dn, &
599 & avg(ng)%Vid(idv3dn), &
600 & avg(ng)%Rindex, gtype, &
601 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
602# ifdef MASKING
603 & grid(ng) % rmask_avg, &
604# endif
605 & average(ng) % avgv3dN)
606 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
607 IF (master) THEN
608 WRITE (stdout,20) trim(vname(1,idv3dn)), avg(ng)%Rindex
609 END IF
610 exit_flag=3
611 ioerror=status
612 RETURN
613 END IF
614 END IF
615!
616! Write out S-coordinate omega vertical velocity (m/s).
617!
618 IF (aout(idovel,ng)) THEN
619 scale=1.0_dp
620 gtype=gfactor*w3dvar
621 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idovel, &
622 & avg(ng)%Vid(idovel), &
623 & avg(ng)%Rindex, gtype, &
624 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
625# ifdef MASKING
626 & grid(ng) % rmask, &
627# endif
628 & average(ng) % avgw3d)
629 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
630 IF (master) THEN
631 WRITE (stdout,20) trim(vname(1,idovel)), avg(ng)%Rindex
632 END IF
633 exit_flag=3
634 ioerror=status
635 RETURN
636 END IF
637 END IF
638!
639! Write out "true" vertical velocity (m/s).
640!
641 IF (aout(idwvel,ng)) THEN
642 scale=1.0_dp
643 gtype=gfactor*w3dvar
644 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idwvel, &
645 & avg(ng)%Vid(idwvel), &
646 & avg(ng)%Rindex, gtype, &
647 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
648# ifdef MASKING
649 & grid(ng) % rmask, &
650# endif
651 & average(ng) % avgwvel)
652 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
653 IF (master) THEN
654 WRITE (stdout,20) trim(vname(1,idovel)), avg(ng)%Rindex
655 END IF
656 exit_flag=3
657 ioerror=status
658 RETURN
659 END IF
660 END IF
661!
662! Write out tracer type variables.
663!
664 DO itrc=1,nt(ng)
665 IF (aout(idtvar(itrc),ng)) THEN
666 scale=1.0_dp
667 gtype=gfactor*r3dvar
668 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idtvar(itrc), &
669 & avg(ng)%Tid(itrc), &
670 & avg(ng)%Rindex, gtype, &
671 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
672# ifdef MASKING
673 & grid(ng) % rmask, &
674# endif
675 & average(ng) % avgt(:,:,:,itrc))
676 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
677 IF (master) THEN
678 WRITE (stdout,20) trim(vname(1,idtvar(itrc))), &
679 & avg(ng)%Rindex
680 END IF
681 exit_flag=3
682 ioerror=status
683 RETURN
684 END IF
685 END IF
686 END DO
687
688# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
689!
690! Write out detided active tracer variables.
691!
692 DO itrc=1,nat
693 IF (aout(idtrcd(itrc),ng)) THEN
694 scale=1.0_dp
695 gtype=gfactor*r3dvar
696 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idtrcd(itrc), &
697 & avg(ng)%Vid(idtrcd(itrc)), &
698 & avg(ng)%Rindex, gtype, &
699 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
700# ifdef MASKING
701 & grid(ng) % rmask, &
702# endif
703 & tides(ng) % t_detided(:,:,:,itrc))
704 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
705 IF (master) THEN
706 WRITE (stdout,20) trim(vname(1,idtrcd(itrc))), &
707 & avg(ng)%Rindex
708 END IF
709 exit_flag=3
710 ioerror=status
711 RETURN
712 END IF
713 END IF
714 END DO
715# endif
716!
717! Write out density anomaly.
718!
719 IF (aout(iddano,ng)) THEN
720 scale=1.0_dp
721 gtype=gfactor*r3dvar
722 status=nf_fwrite3d(ng, model, avg(ng)%ncid, iddano, &
723 & avg(ng)%Vid(iddano), &
724 & avg(ng)%Rindex, gtype, &
725 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
726# ifdef MASKING
727 & grid(ng) % rmask, &
728# endif
729 & average(ng) % avgrho)
730 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
731 IF (master) THEN
732 WRITE (stdout,20) trim(vname(1,iddano)), avg(ng)%Rindex
733 END IF
734 exit_flag=3
735 ioerror=status
736 RETURN
737 END IF
738 END IF
739
740# ifdef LMD_SKPP
741!
742! Write out depth of surface boundary layer.
743!
744 IF (aout(idhsbl,ng)) THEN
745 scale=1.0_dp
746 gtype=gfactor*r2dvar
747 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idhsbl, &
748 & avg(ng)%Vid(idhsbl), &
749 & avg(ng)%Rindex, gtype, &
750 & lbi, ubi, lbj, ubj, scale, &
751# ifdef MASKING
752 & grid(ng) % rmask, &
753# endif
754 & average(ng) % avghsbl)
755 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
756 IF (master) THEN
757 WRITE (stdout,20) trim(vname(1,idhsbl)), avg(ng)%Rindex
758 END IF
759 exit_flag=3
760 ioerror=status
761 RETURN
762 END IF
763 END IF
764# endif
765# ifdef LMD_BKPP
766!
767! Write out depth of bottom boundary layer.
768!
769 IF (aout(idhbbl,ng)) THEN
770 scale=1.0_dp
771 gtype=gfactor*r2dvar
772 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idhbbl, &
773 & avg(ng)%Vid(idhbbl), &
774 & avg(ng)%Rindex, gtype, &
775 & lbi, ubi, lbj, ubj, scale, &
776# ifdef MASKING
777 & grid(ng) % rmask, &
778# endif
779 & average(ng) % avghbbl)
780 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
781 IF (master) THEN
782 WRITE (stdout,20) trim(vname(1,idhbbl)), avg(ng)%Rindex
783 END IF
784 exit_flag=3
785 ioerror=status
786 RETURN
787 END IF
788 END IF
789# endif
790# endif
791!
792! Write out 2D potential vorticity.
793!
794 IF (aout(id2dpv,ng)) THEN
795 scale=1.0_dp
796 gtype=gfactor*p2dvar
797 status=nf_fwrite2d(ng, model, avg(ng)%ncid, id2dpv, &
798 & avg(ng)%Vid(id2dpv), &
799 & avg(ng)%Rindex, gtype, &
800 & lbi, ubi, lbj, ubj, scale, &
801# ifdef MASKING
802 & grid(ng) % pmask, &
803# endif
804 & average(ng) % avgpvor2d)
805 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
806 IF (master) THEN
807 WRITE (stdout,20) trim(vname(1,id2dpv)), avg(ng)%Rindex
808 END IF
809 exit_flag=3
810 ioerror=status
811 RETURN
812 END IF
813 END IF
814!
815! Write out 2D relative vorticity.
816!
817 IF (aout(id2drv,ng)) THEN
818 scale=1.0_dp
819 gtype=gfactor*p2dvar
820 status=nf_fwrite2d(ng, model, avg(ng)%ncid, id2drv, &
821 & avg(ng)%Vid(id2drv), &
822 & avg(ng)%Rindex, gtype, &
823 & lbi, ubi, lbj, ubj, scale, &
824# ifdef MASKING
825 & grid(ng) % pmask, &
826# endif
827 & average(ng) % avgrvor2d)
828 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
829 IF (master) THEN
830 WRITE (stdout,20) trim(vname(1,id2drv)), avg(ng)%Rindex
831 END IF
832 exit_flag=3
833 ioerror=status
834 RETURN
835 END IF
836 END IF
837
838# ifdef SOLVE3D
839!
840! Write out 3D potential vorticity.
841!
842 IF (aout(id3dpv,ng)) THEN
843 scale=1.0_dp
844 gtype=gfactor*p3dvar
845 status=nf_fwrite3d(ng, model, avg(ng)%ncid, id3dpv, &
846 & avg(ng)%Vid(id3dpv), &
847 & avg(ng)%Rindex, gtype, &
848 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
849# ifdef MASKING
850 & grid(ng) % pmask, &
851# endif
852 & average(ng) % avgpvor3d)
853 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
854 IF (master) THEN
855 WRITE (stdout,20) trim(vname(1,id3dpv)), avg(ng)%Rindex
856 END IF
857 exit_flag=3
858 ioerror=status
859 RETURN
860 END IF
861 END IF
862!
863! Write out 3D relative vorticity.
864!
865 IF (aout(id3drv,ng)) THEN
866 scale=1.0_dp
867 gtype=gfactor*p3dvar
868 status=nf_fwrite3d(ng, model, avg(ng)%ncid, id3drv, &
869 & avg(ng)%Vid(id3drv), &
870 & avg(ng)%Rindex, gtype, &
871 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
872# ifdef MASKING
873 & grid(ng) % pmask, &
874# endif
875 & average(ng) % avgrvor3d)
876 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
877 IF (master) THEN
878 WRITE (stdout,20) trim(vname(1,id3drv)), avg(ng)%Rindex
879 END IF
880 exit_flag=3
881 ioerror=status
882 RETURN
883 END IF
884 END IF
885# endif
886!
887! Write out quadratic <zeta*zeta> term.
888!
889 IF (aout(idzzav,ng)) THEN
890 scale=1.0_dp
891 gtype=gfactor*r2dvar
892 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idzzav, &
893 & avg(ng)%Vid(idzzav), &
894 & avg(ng)%Rindex, gtype, &
895 & lbi, ubi, lbj, ubj, scale, &
896# ifdef MASKING
897 & grid(ng) % rmask, &
898# endif
899 & average(ng) % avgZZ)
900 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
901 IF (master) THEN
902 WRITE (stdout,20) trim(vname(1,idzzav)), avg(ng)%Rindex
903 END IF
904 exit_flag=3
905 ioerror=status
906 RETURN
907 END IF
908 END IF
909!
910! Write out quadratic <ubar*ubar> term.
911!
912 IF (aout(idu2av,ng)) THEN
913 scale=1.0_dp
914 gtype=gfactor*u2dvar
915 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idu2av, &
916 & avg(ng)%Vid(idu2av), &
917 & avg(ng)%Rindex, gtype, &
918 & lbi, ubi, lbj, ubj, scale, &
919# ifdef MASKING
920 & grid(ng) % umask, &
921# endif
922 & average(ng) % avgU2)
923 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
924 IF (master) THEN
925 WRITE (stdout,20) trim(vname(1,idu2av)), avg(ng)%Rindex
926 END IF
927 exit_flag=3
928 ioerror=status
929 RETURN
930 END IF
931 END IF
932!
933! Write out quadratic <vbar*vbar> term.
934!
935 IF (aout(idv2av,ng)) THEN
936 scale=1.0_dp
937 gtype=gfactor*v2dvar
938 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idv2av, &
939 & avg(ng)%Vid(idv2av), &
940 & avg(ng)%Rindex, gtype, &
941 & lbi, ubi, lbj, ubj, scale, &
942# ifdef MASKING
943 & grid(ng) % vmask, &
944# endif
945 & average(ng) % avgV2)
946 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
947 IF (master) THEN
948 WRITE (stdout,20) trim(vname(1,idv2av)), avg(ng)%Rindex
949 END IF
950 exit_flag=3
951 ioerror=status
952 RETURN
953 END IF
954 END IF
955
956# ifdef SOLVE3D
957!
958! Write out u-volume flux.
959!
960 IF (aout(idhuav,ng)) THEN
961 scale=1.0_dp
962 gtype=gfactor*u3dvar
963 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idhuav, &
964 & avg(ng)%Vid(idhuav), &
965 & avg(ng)%Rindex, gtype, &
966 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
967# ifdef MASKING
968 & grid(ng) % umask, &
969# endif
970 & average(ng) % avgHuon)
971 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
972 IF (master) THEN
973 WRITE (stdout,20) trim(vname(1,idhuav)), avg(ng)%Rindex
974 END IF
975 exit_flag=3
976 ioerror=status
977 RETURN
978 END IF
979 END IF
980!
981! Write out v-volume flux.
982!
983 IF (aout(idhvav,ng)) THEN
984 scale=1.0_dp
985 gtype=gfactor*v3dvar
986 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idhvav, &
987 & avg(ng)%Vid(idhvav), &
988 & avg(ng)%Rindex, gtype, &
989 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
990# ifdef MASKING
991 & grid(ng) % vmask, &
992# endif
993 & average(ng) % avgHvom)
994 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
995 IF (master) THEN
996 WRITE (stdout,20) trim(vname(1,idhvav)), avg(ng)%Rindex
997 END IF
998 exit_flag=3
999 ioerror=status
1000 RETURN
1001 END IF
1002 END IF
1003!
1004! Write out quadratic <u*u> term.
1005!
1006 IF (aout(iduuav,ng)) THEN
1007 scale=1.0_dp
1008 gtype=gfactor*u3dvar
1009 status=nf_fwrite3d(ng, model, avg(ng)%ncid, iduuav, &
1010 & avg(ng)%Vid(iduuav), &
1011 & avg(ng)%Rindex, gtype, &
1012 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1013# ifdef MASKING
1014 & grid(ng) % umask, &
1015# endif
1016 & average(ng) % avgUU)
1017 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1018 IF (master) THEN
1019 WRITE (stdout,20) trim(vname(1,iduuav)), avg(ng)%Rindex
1020 END IF
1021 exit_flag=3
1022 ioerror=status
1023 RETURN
1024 END IF
1025 END IF
1026!
1027! Write out quadratic <u*v> term.
1028!
1029 IF (aout(iduvav,ng)) THEN
1030 scale=1.0_dp
1031 gtype=gfactor*r3dvar
1032 status=nf_fwrite3d(ng, model, avg(ng)%ncid, iduvav, &
1033 & avg(ng)%Vid(iduvav), &
1034 & avg(ng)%Rindex, gtype, &
1035 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1036# ifdef MASKING
1037 & grid(ng) % rmask, &
1038# endif
1039 & average(ng) % avgUV)
1040 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1041 IF (master) THEN
1042 WRITE (stdout,20) trim(vname(1,iduvav)), avg(ng)%Rindex
1043 END IF
1044 exit_flag=3
1045 ioerror=status
1046 RETURN
1047 END IF
1048 END IF
1049!
1050! Write out quadratic <v*v> term.
1051!
1052 IF (aout(idvvav,ng)) THEN
1053 scale=1.0_dp
1054 gtype=gfactor*v3dvar
1055 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idvvav, &
1056 & avg(ng)%Vid(idvvav), &
1057 & avg(ng)%Rindex, gtype, &
1058 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1059# ifdef MASKING
1060 & grid(ng) % vmask, &
1061# endif
1062 & average(ng) % avgVV)
1063 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1064 IF (master) THEN
1065 WRITE (stdout,20) trim(vname(1,idvvav)), avg(ng)%Rindex
1066 END IF
1067 exit_flag=3
1068 ioerror=status
1069 RETURN
1070 END IF
1071 END IF
1072!
1073! Write out quadratic <t*t> term.
1074!
1075 DO i=1,nt(ng)
1076 IF (aout(idttav(i),ng)) THEN
1077 scale=1.0_dp
1078 gtype=gfactor*r3dvar
1079 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idttav(i), &
1080 & avg(ng)%Vid(idttav(i)), &
1081 & avg(ng)%Rindex, gtype, &
1082 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1083# ifdef MASKING
1084 & grid(ng) % rmask, &
1085# endif
1086 & average(ng) % avgTT(:,:,:,i))
1087 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1088 IF (master) THEN
1089 WRITE (stdout,20) trim(vname(1,idttav(i))), avg(ng)%Rindex
1090 END IF
1091 exit_flag=3
1092 ioerror=status
1093 RETURN
1094 END IF
1095 END IF
1096 END DO
1097!
1098! Write out active tracer volume fluxes.
1099!
1100 DO i=1,nt(ng)
1101 IF (aout(ihutav(i),ng)) THEN
1102 scale=1.0_dp
1103 gtype=gfactor*u3dvar
1104 status=nf_fwrite3d(ng, model, avg(ng)%ncid, ihutav(i), &
1105 & avg(ng)%Vid(ihutav(i)), &
1106 & avg(ng)%Rindex, gtype, &
1107 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1108# ifdef MASKING
1109 & grid(ng) % umask, &
1110# endif
1111 & average(ng) % avgHuonT(:,:,:,i))
1112 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1113 IF (master) THEN
1114 WRITE (stdout,20) trim(vname(1,ihutav(i))), avg(ng)%Rindex
1115 END IF
1116 exit_flag=3
1117 ioerror=status
1118 RETURN
1119 END IF
1120 END IF
1121!
1122 IF (aout(ihvtav(i),ng)) THEN
1123 scale=1.0_dp
1124 gtype=gfactor*v3dvar
1125 status=nf_fwrite3d(ng, model, avg(ng)%ncid, ihvtav(i), &
1126 & avg(ng)%Vid(ihvtav(i)), &
1127 & avg(ng)%Rindex, gtype, &
1128 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1129# ifdef MASKING
1130 & grid(ng) % vmask, &
1131# endif
1132 & average(ng) % avgHvomT(:,:,:,i))
1133 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1134 IF (master) THEN
1135 WRITE (stdout,20) trim(vname(1,ihvtav(i))), avg(ng)%Rindex
1136 END IF
1137 exit_flag=3
1138 ioerror=status
1139 RETURN
1140 END IF
1141 END IF
1142 END DO
1143!
1144! Write out quadratic <u*t> and <v*t> terms.
1145!
1146 DO i=1,nt(ng)
1147 IF (aout(idutav(i),ng)) THEN
1148 scale=1.0_dp
1149 gtype=gfactor*u3dvar
1150 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idutav(i), &
1151 & avg(ng)%Vid(idutav(i)), &
1152 & avg(ng)%Rindex, gtype, &
1153 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1154# ifdef MASKING
1155 & grid(ng) % umask, &
1156# endif
1157 & average(ng) % avgUT(:,:,:,i))
1158 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1159 IF (master) THEN
1160 WRITE (stdout,20) trim(vname(1,idutav(i))), avg(ng)%Rindex
1161 END IF
1162 exit_flag=3
1163 ioerror=status
1164 RETURN
1165 END IF
1166 END IF
1167!
1168 IF (aout(idvtav(i),ng)) THEN
1169 scale=1.0_dp
1170 gtype=gfactor*v3dvar
1171 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idvtav(i), &
1172 & avg(ng)%Vid(idvtav(i)), &
1173 & avg(ng)%Rindex, gtype, &
1174 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1175# ifdef MASKING
1176 & grid(ng) % vmask, &
1177# endif
1178 & average(ng) % avgVT(:,:,:,i))
1179 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1180 IF (master) THEN
1181 WRITE (stdout,20) trim(vname(1,idvtav(i))), avg(ng)%Rindex
1182 END IF
1183 exit_flag=3
1184 ioerror=status
1185 RETURN
1186 END IF
1187 END IF
1188 END DO
1189
1190# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1191!
1192! Write out vertical viscosity coefficient.
1193!
1194 IF (aout(idvvis,ng)) THEN
1195 scale=1.0_dp
1196 gtype=gfactor*w3dvar
1197 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idvvis, &
1198 & avg(ng)%Vid(idvvis), &
1199 & avg(ng)%Rindex, gtype, &
1200 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
1201# ifdef MASKING
1202 & grid(ng) % rmask, &
1203# endif
1204 & average(ng) % avgAKv, &
1205 & setfillval = .false.)
1206 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1207 IF (master) THEN
1208 WRITE (stdout,20) trim(vname(1,idvvis)), avg(ng)%Rindex
1209 END IF
1210 exit_flag=3
1211 ioerror=status
1212 RETURN
1213 END IF
1214 END IF
1215!
1216! Write out vertical diffusion coefficient for potential temperature.
1217!
1218 IF (aout(idtdif,ng)) THEN
1219 scale=1.0_dp
1220 gtype=gfactor*w3dvar
1221 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idtdif, &
1222 & avg(ng)%Vid(idtdif), &
1223 & avg(ng)%Rindex, gtype, &
1224 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
1225# ifdef MASKING
1226 & grid(ng) % rmask, &
1227# endif
1228 & average(ng) % avgAKt, &
1229 & setfillval = .false.)
1230 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1231 IF (master) THEN
1232 WRITE (stdout,20) trim(vname(1,idtdif)), avg(ng)%Rindex
1233 END IF
1234 exit_flag=3
1235 ioerror=status
1236 RETURN
1237 END IF
1238 END IF
1239
1240# ifdef SALINITY
1241!
1242! Write out vertical diffusion coefficient for salinity.
1243!
1244 IF (aout(idsdif,ng)) THEN
1245 scale=1.0_dp
1246 gtype=gfactor*w3dvar
1247 status=nf_fwrite3d(ng, model, avg(ng)%ncid, idsdif, &
1248 & avg(ng)%Vid(idsdif), &
1249 & avg(ng)%Rindex, gtype, &
1250 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
1251# ifdef MASKING
1252 & grid(ng) % rmask, &
1253# endif
1254 & average(ng) % avgAKs, &
1255 & setfillval = .false.)
1256 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1257 IF (master) THEN
1258 WRITE (stdout,20) trim(vname(1,idsdif)), avg(ng)%Rindex
1259 END IF
1260 exit_flag=3
1261 ioerror=status
1262 RETURN
1263 END IF
1264 END IF
1265# endif
1266# endif
1267# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1268!
1269! Write out surface air pressure.
1270!
1271 IF (aout(idpair,ng)) THEN
1272 scale=1.0_dp
1273 gtype=gfactor*r2dvar
1274 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idpair, &
1275 & avg(ng)%Vid(idpair), &
1276 & avg(ng)%Rindex, gtype, &
1277 & lbi, ubi, lbj, ubj, scale, &
1278# ifdef MASKING
1279 & grid(ng) % rmask, &
1280# endif
1281 & average(ng) % avgPair)
1282 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1283 IF (master) THEN
1284 WRITE (stdout,20) trim(vname(1,idpair)), avg(ng)%Rindex
1285 END IF
1286 exit_flag=3
1287 ioerror=status
1288 RETURN
1289 END IF
1290 END IF
1291# endif
1292# if defined BULK_FLUXES
1293!
1294! Write out surface air temperature.
1295!
1296 IF (aout(idtair,ng)) THEN
1297 scale=1.0_dp
1298 gtype=gfactor*r2dvar
1299 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idtair, &
1300 & avg(ng)%Vid(idtair), &
1301 & avg(ng)%Rindex, gtype, &
1302 & lbi, ubi, lbj, ubj, scale, &
1303# ifdef MASKING
1304 & grid(ng) % rmask, &
1305# endif
1306 & average(ng) % avgTair)
1307 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1308 IF (master) THEN
1309 WRITE (stdout,20) trim(vname(1,idtair)), avg(ng)%Rindex
1310 END IF
1311 exit_flag=3
1312 ioerror=status
1313 RETURN
1314 END IF
1315 END IF
1316# endif
1317# if defined BULK_FLUXES || defined ECOSIM
1318!
1319! Write out surface winds.
1320!
1321 IF (aout(iduair,ng)) THEN
1322 scale=1.0_dp
1323 gtype=gfactor*r2dvar
1324 status=nf_fwrite2d(ng, model, avg(ng)%ncid, iduair, &
1325 & avg(ng)%Vid(iduair), &
1326 & avg(ng)%Rindex, gtype, &
1327 & lbi, ubi, lbj, ubj, scale, &
1328# ifdef MASKING
1329 & grid(ng) % rmask, &
1330# endif
1331 & average(ng) % avgUwind)
1332 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1333 IF (master) THEN
1334 WRITE (stdout,20) trim(vname(1,iduair)), avg(ng)%Rindex
1335 END IF
1336 exit_flag=3
1337 ioerror=status
1338 RETURN
1339 END IF
1340 END IF
1341!
1342 IF (aout(idvair,ng)) THEN
1343 scale=1.0_dp
1344 gtype=gfactor*r2dvar
1345 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvair, &
1346 & avg(ng)%Vid(idvair), &
1347 & avg(ng)%Rindex, gtype, &
1348 & lbi, ubi, lbj, ubj, scale, &
1349# ifdef MASKING
1350 & grid(ng) % rmask, &
1351# endif
1352 & average(ng) % avgVwind)
1353 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1354 IF (master) THEN
1355 WRITE (stdout,20) trim(vname(1,idvair)), avg(ng)%Rindex
1356 END IF
1357 exit_flag=3
1358 ioerror=status
1359 RETURN
1360 END IF
1361 END IF
1362!
1363! Write out Eastward/Northward surface wind (m/s) at RHO-points.
1364!
1365 IF (aout(iduaie,ng)) THEN
1366 scale=1.0_dp
1367 gtype=gfactor*r2dvar
1368 status=nf_fwrite2d(ng, model, avg(ng)%ncid, iduaie, &
1369 & avg(ng)%Vid(iduaie), &
1370 & avg(ng)%Rindex, gtype, &
1371 & lbi, ubi, lbj, ubj, scale, &
1372# ifdef MASKING
1373 & grid(ng) % rmask_avg, &
1374# endif
1375 & average(ng) % avguwindE)
1376 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1377 IF (master) THEN
1378 WRITE (stdout,20) trim(vname(1,iduaie)), avg(ng)%Rindex
1379 END IF
1380 exit_flag=3
1381 ioerror=status
1382 RETURN
1383 END IF
1384 END IF
1385!
1386 IF (aout(idvain,ng)) THEN
1387 scale=1.0_dp
1388 gtype=gfactor*r2dvar
1389 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvain, &
1390 & avg(ng)%Vid(idvain), &
1391 & avg(ng)%Rindex, gtype, &
1392 & lbi, ubi, lbj, ubj, scale, &
1393# ifdef MASKING
1394 & grid(ng) % rmask_avg, &
1395# endif
1396 & average(ng) % avgvwindN)
1397 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1398 IF (master) THEN
1399 WRITE (stdout,20) trim(vname(1,idvain)), avg(ng)%Rindex
1400 END IF
1401 exit_flag=3
1402 ioerror=status
1403 RETURN
1404 END IF
1405 END IF
1406# endif
1407!
1408! Write out surface net heat flux.
1409!
1410 IF (aout(idtsur(itemp),ng)) THEN
1411# ifdef ADJOINT
1412# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1413 defined opt_observations
1414 scale=1.0_dp/(rho0*cp)
1415# else
1416 scale=1.0_dp
1417# endif
1418# else
1419 scale=rho0*cp
1420# endif
1421 gtype=gfactor*r2dvar
1422 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idtsur(itemp), &
1423 & avg(ng)%Vid(idtsur(itemp)), &
1424 & avg(ng)%Rindex, gtype, &
1425 & lbi, ubi, lbj, ubj, scale, &
1426# ifdef MASKING
1427 & grid(ng) % rmask, &
1428# endif
1429 & average(ng) % avgstf)
1430 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1431 IF (master) THEN
1432 WRITE (stdout,20) trim(vname(1,idtsur(itemp))), &
1433 & avg(ng)%Rindex
1434 END IF
1435 exit_flag=3
1436 ioerror=status
1437 RETURN
1438 END IF
1439 END IF
1440
1441# ifdef SALINITY
1442!
1443! Write out surface salt flux (PSU m/s = kg salt/m2/s).
1444!
1445 IF (aout(idtsur(isalt),ng)) THEN
1446 scale=1.0_dp
1447 gtype=gfactor*r2dvar
1448 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idtsur(isalt), &
1449 & avg(ng)%Vid(idtsur(isalt)), &
1450 & avg(ng)%Rindex, gtype, &
1451 & lbi, ubi, lbj, ubj, scale, &
1452# ifdef MASKING
1453 & grid(ng) % rmask, &
1454# endif
1455 & average(ng) % avgswf)
1456 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1457 IF (master) THEN
1458 WRITE (stdout,20) trim(vname(1,idtsur(isalt))), &
1459 & avg(ng)%Rindex
1460 END IF
1461 exit_flag=3
1462 ioerror=status
1463 RETURN
1464 END IF
1465 END IF
1466# endif
1467
1468# if defined BULK_FLUXES || defined FRC_COUPLING
1469!
1470! Write out latent heat flux.
1471!
1472 IF (aout(idlhea,ng)) THEN
1473# ifdef ADJOINT
1474 scale=1.0_dp
1475# else
1476 scale=rho0*cp
1477# endif
1478 gtype=gfactor*r2dvar
1479 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idlhea, &
1480 & avg(ng)%Vid(idlhea), &
1481 & avg(ng)%Rindex, gtype, &
1482 & lbi, ubi, lbj, ubj, scale, &
1483# ifdef MASKING
1484 & grid(ng) % rmask, &
1485# endif
1486 & average(ng) % avglhf)
1487 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1488 IF (master) THEN
1489 WRITE (stdout,20) trim(vname(1,idlhea)), avg(ng)%Rindex
1490 END IF
1491 exit_flag=3
1492 ioerror=status
1493 RETURN
1494 END IF
1495 END IF
1496!
1497! Write out sensible heat flux.
1498!
1499 IF (aout(idshea,ng)) THEN
1500# ifdef ADJOINT
1501 scale=1.0_dp
1502# else
1503 scale=rho0*cp
1504# endif
1505 gtype=gfactor*r2dvar
1506 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idshea, &
1507 & avg(ng)%Vid(idshea), &
1508 & avg(ng)%Rindex, gtype, &
1509 & lbi, ubi, lbj, ubj, scale, &
1510# ifdef MASKING
1511 & grid(ng) % rmask, &
1512# endif
1513 & average(ng) % avgshf)
1514 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1515 IF (master) THEN
1516 WRITE (stdout,20) trim(vname(1,idshea)), avg(ng)%Rindex
1517 END IF
1518 exit_flag=3
1519 ioerror=status
1520 RETURN
1521 END IF
1522 END IF
1523!
1524! Write out net longwave radiation flux.
1525!
1526 IF (aout(idlrad,ng)) THEN
1527# ifdef ADJOINT
1528 scale=1.0_dp
1529# else
1530 scale=rho0*cp
1531# endif
1532 gtype=gfactor*r2dvar
1533 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idlrad, &
1534 & avg(ng)%Vid(idlrad), &
1535 & avg(ng)%Rindex, gtype, &
1536 & lbi, ubi, lbj, ubj, scale, &
1537# ifdef MASKING
1538 & grid(ng) % rmask, &
1539# endif
1540 & average(ng) % avglrf)
1541 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1542 IF (master) THEN
1543 WRITE (stdout,20) trim(vname(1,idlrad)), avg(ng)%Rindex
1544 END IF
1545 exit_flag=3
1546 ioerror=status
1547 RETURN
1548 END IF
1549 END IF
1550# endif
1551
1552# ifdef BULK_FLUXES
1553# ifdef EMINUSP
1554!
1555! Write out evaportaion rate (kg/m2/s).
1556!
1557 IF (aout(idevap,ng)) THEN
1558 scale=1.0_dp
1559 gtype=gfactor*r2dvar
1560 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idevap, &
1561 & avg(ng)%Vid(idevap), &
1562 & avg(ng)%Rindex, gtype, &
1563 & lbi, ubi, lbj, ubj, scale, &
1564# ifdef MASKING
1565 & grid(ng) % rmask, &
1566# endif
1567 & average(ng) % avgevap)
1568 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1569 IF (master) THEN
1570 WRITE (stdout,20) trim(vname(1,idevap)), avg(ng)%Rindex
1571 END IF
1572 exit_flag=3
1573 ioerror=status
1574 RETURN
1575 END IF
1576 END IF
1577!
1578! Write out precipitation rate (kg/m2/s).
1579!
1580 IF (aout(idrain,ng)) THEN
1581 scale=1.0_dp
1582 gtype=gfactor*r2dvar
1583 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idrain, &
1584 & avg(ng)%Vid(idrain), &
1585 & avg(ng)%Rindex, gtype, &
1586 & lbi, ubi, lbj, ubj, scale, &
1587# ifdef MASKING
1588 & grid(ng) % rmask, &
1589# endif
1590 & average(ng) % avgrain)
1591 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1592 IF (master) THEN
1593 WRITE (stdout,20) trim(vname(1,idrain)), avg(ng)%Rindex
1594 END IF
1595 exit_flag=3
1596 ioerror=status
1597 RETURN
1598 END IF
1599 END IF
1600# endif
1601# endif
1602# ifdef SHORTWAVE
1603!
1604! Write out net shortwave radiation flux.
1605!
1606 IF (aout(idsrad,ng)) THEN
1607# ifdef ADJOINT
1608 scale=1.0_dp
1609# else
1610 scale=rho0*cp
1611# endif
1612 gtype=gfactor*r2dvar
1613 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idsrad, &
1614 & avg(ng)%Vid(idsrad), &
1615 & avg(ng)%Rindex, gtype, &
1616 & lbi, ubi, lbj, ubj, scale, &
1617# ifdef MASKING
1618 & grid(ng) % rmask, &
1619# endif
1620 & average(ng) % avgsrf)
1621 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1622 IF (master) THEN
1623 WRITE (stdout,20) trim(vname(1,idsrad)), avg(ng)%Rindex
1624 END IF
1625 exit_flag=3
1626 ioerror=status
1627 RETURN
1628 END IF
1629 END IF
1630# endif
1631# endif
1632!
1633! Write out surface u-momentum stress.
1634!
1635 IF (aout(idusms,ng)) THEN
1636# ifdef ADJOINT
1637# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1638 defined opt_observations
1639 scale=1.0_dp/rho0
1640# else
1641 scale=1.0_dp
1642# endif
1643# else
1644 scale=rho0
1645# endif
1646 gtype=gfactor*u2dvar
1647 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idusms, &
1648 & avg(ng)%Vid(idusms), &
1649 & avg(ng)%Rindex, gtype, &
1650 & lbi, ubi, lbj, ubj, scale, &
1651# ifdef MASKING
1652 & grid(ng) % umask, &
1653# endif
1654 & average(ng) % avgsus)
1655 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1656 IF (master) THEN
1657 WRITE (stdout,20) trim(vname(1,idusms)), avg(ng)%Rindex
1658 END IF
1659 exit_flag=3
1660 ioerror=status
1661 RETURN
1662 END IF
1663 END IF
1664!
1665! Write out surface v-momentum stress.
1666!
1667 IF (aout(idvsms,ng)) THEN
1668# ifdef ADJOINT
1669# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1670 defined opt_observations
1671 scale=1.0_dp/rho0
1672# else
1673 scale=1.0_dp
1674# endif
1675# else
1676 scale=rho0
1677# endif
1678 gtype=gfactor*v2dvar
1679 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvsms, &
1680 & avg(ng)%Vid(idvsms), &
1681 & avg(ng)%Rindex, gtype, &
1682 & lbi, ubi, lbj, ubj, scale, &
1683# ifdef MASKING
1684 & grid(ng) % vmask, &
1685# endif
1686 & average(ng) % avgsvs)
1687 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1688 IF (master) THEN
1689 WRITE (stdout,20) trim(vname(1,idvsms)), avg(ng)%Rindex
1690 END IF
1691 exit_flag=3
1692 ioerror=status
1693 RETURN
1694 END IF
1695 END IF
1696!
1697! Write out bottom u-momentum stress.
1698!
1699 IF (aout(idubms,ng)) THEN
1700# ifdef ADJOINT
1701# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1702 defined opt_observations
1703 scale=1.0_dp/rho0
1704# else
1705 scale=1.0_dp
1706# endif
1707# else
1708 scale=rho0
1709# endif
1710 gtype=gfactor*u2dvar
1711 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idubms, &
1712 & avg(ng)%Vid(idubms), &
1713 & avg(ng)%Rindex, gtype, &
1714 & lbi, ubi, lbj, ubj, scale, &
1715# ifdef MASKING
1716 & grid(ng) % umask, &
1717# endif
1718 & average(ng) % avgbus)
1719 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1720 IF (master) THEN
1721 WRITE (stdout,20) trim(vname(1,idubms)), avg(ng)%Rindex
1722 END IF
1723 exit_flag=3
1724 ioerror=status
1725 RETURN
1726 END IF
1727 END IF
1728!
1729! Write out bottom v-momentum stress.
1730!
1731 IF (aout(idvbms,ng)) THEN
1732# ifdef ADJOINT
1733# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1734 defined opt_observations
1735 scale=1.0_dp/rho0
1736# else
1737 scale=1.0_dp
1738# endif
1739# else
1740 scale=rho0
1741# endif
1742 gtype=gfactor*v2dvar
1743 status=nf_fwrite2d(ng, model, avg(ng)%ncid, idvbms, &
1744 & avg(ng)%Vid(idvbms), &
1745 & avg(ng)%Rindex, gtype, &
1746 & lbi, ubi, lbj, ubj, scale, &
1747# ifdef MASKING
1748 & grid(ng) % vmask, &
1749# endif
1750 & average(ng) % avgbvs)
1751 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1752 IF (master) THEN
1753 WRITE (stdout,20) trim(vname(1,idvbms)), avg(ng)%Rindex
1754 END IF
1755 exit_flag=3
1756 ioerror=status
1757 RETURN
1758 END IF
1759 END IF
1760
1761# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
1762!
1763!-----------------------------------------------------------------------
1764! Write out the bottom boundary layer model or waves variables.
1765!-----------------------------------------------------------------------
1766!
1767 CALL bbl_wrt_nf90 (ng, model, tile, &
1768 & lbi, ubi, lbj, ubj, &
1769 & aout, avg)
1770 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1771# endif
1772
1773# if defined ICE_MODEL && defined SOLVE3D
1774!
1775!-----------------------------------------------------------------------
1776! Write out the sea-ice model variables.
1777!-----------------------------------------------------------------------
1778!
1779 CALL ice_wrt_nf90 (ng, model, tile, &
1780 & lbi, ubi, lbj, ubj, &
1781 & aout, avg)
1782 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1783# endif
1784
1785# if defined SEDIMENT && defined SOLVE3D
1786!
1787!-----------------------------------------------------------------------
1788! Write out the sediment model variables.
1789!-----------------------------------------------------------------------
1790!
1791 CALL sediment_wrt_nf90 (ng, model, tile, &
1792 & lbi, ubi, lbj, ubj, &
1793 & aout, avg)
1794 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1795# endif
1796
1797# if defined WEC_VF && defined SOLVE3D
1798!
1799!-----------------------------------------------------------------------
1800! Write out the Waves Effect on Currents variables.
1801!-----------------------------------------------------------------------
1802!
1803 CALL wec_wrt_nf90 (ng, model, tile, &
1804 & lbi, ubi, lbj, ubj, &
1805 & aout, avg)
1806 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1807# endif
1808!
1809!-----------------------------------------------------------------------
1810! Synchronize time-average NetCDF file to disk to allow other processes
1811! to access data immediately after it is written.
1812!-----------------------------------------------------------------------
1813!
1814 CALL netcdf_sync (ng, model, avg(ng)%name, avg(ng)%ncid)
1815 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1816!
1817 10 FORMAT (2x,'WRT_AVG_NF90 - writing averaged',t42,'fields',t61,&
1818# ifdef NESTING
1819 & 'in record = ',i0,t92,i2.2)
1820# else
1821 & 'in record = ',i0)
1822# endif
1823 20 FORMAT (/,' WRT_AVG_NF90 - error while writing variable: ',a, &
1824 & /,16x,'into averages NetCDF file for time record: ',i0)
1825!
1826 RETURN
subroutine, public netcdf_sync(ng, model, ncname, ncid)

References mod_ncparam::aout, mod_average::average, mod_iounits::avg, mod_scalars::avgtime, bbl_output_mod::bbl_wrt_nf90(), mod_scalars::cp, mod_scalars::exit_flag, strings_mod::founderror(), mod_grid::grid, mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, mod_ncparam::idfsud, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idhuav, mod_ncparam::idhvav, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idrain, mod_ncparam::idsdif, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idtair, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtrcd, mod_ncparam::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2dd, mod_ncparam::idu2de, mod_ncparam::idu3dd, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubms, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::idv2av, mod_ncparam::idv2dd, mod_ncparam::idv2dn, mod_ncparam::idv3dd, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbms, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idwvel, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_iounits::ioerror, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_param::nat, mod_netcdf::netcdf_sync(), mod_scalars::noerror, mod_param::nt, mod_param::p2dvar, mod_param::p3dvar, mod_param::r2dvar, mod_param::r3dvar, mod_scalars::rho0, sediment_output_mod::sediment_wrt_nf90(), mod_iounits::sourcefile, mod_iounits::stdout, mod_tides::tides, mod_param::u2dvar, mod_param::u3dvar, mod_param::v2dvar, mod_param::v3dvar, mod_ncparam::vname, and mod_param::w3dvar.

Referenced by wrt_avg().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wrt_avg_pio()

subroutine, private wrt_avg_mod::wrt_avg_pio ( integer, intent(in) ng,
integer, intent(in) model,
integer, intent(in) tile,
integer, intent(in) lbi,
integer, intent(in) ubi,
integer, intent(in) lbj,
integer, intent(in) ubj )
private

Definition at line 1832 of file wrt_avg.F.

1834!***********************************************************************
1835!
1836 USE mod_pio_netcdf
1837!
1838! Imported variable declarations.
1839!
1840 integer, intent(in) :: ng, model, tile
1841 integer, intent(in) :: LBi, UBi, LBj, UBj
1842!
1843! Local variable declarations.
1844!
1845 integer :: Fcount, i, itrc, status
1846!
1847 real(dp) :: scale
1848!
1849 character (len=*), parameter :: MyFile = &
1850 & __FILE__//", wrt_avg_pio"
1851!
1852 TYPE (IO_desc_t), pointer :: ioDesc
1853!
1854 sourcefile=myfile
1855!
1856!-----------------------------------------------------------------------
1857! Write out time-averaged fields when appropriate.
1858!-----------------------------------------------------------------------
1859!
1860 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1861!
1862! Set time record index.
1863!
1864 avg(ng)%Rindex=avg(ng)%Rindex+1
1865 fcount=avg(ng)%load
1866 avg(ng)%Nrec(fcount)=avg(ng)%Nrec(fcount)+1
1867!
1868! Report.
1869!
1870# ifdef NESTING
1871 IF (master) WRITE (stdout,10) avg(ng)%Rindex, ng
1872# else
1873 IF (master) WRITE (stdout,10) avg(ng)%Rindex
1874# endif
1875!
1876! Write out averaged time.
1877!
1878 CALL pio_netcdf_put_fvar (ng, model, avg(ng)%name, &
1879 & trim(vname(1,idtime)), avgtime(ng:), &
1880 & (/avg(ng)%Rindex/), (/1/), &
1881 & piofile = avg(ng)%pioFile, &
1882 & piovar = avg(ng)%pioVar(idtime)%vd)
1883 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1884!
1885! Write out free-surface (m).
1886!
1887 IF (aout(idfsur,ng)) THEN
1888 scale=1.0_dp
1889 IF (avg(ng)%pioVar(idfsur)%dkind.eq.pio_double) THEN
1890 iodesc => iodesc_dp_r2dvar(ng)
1891 ELSE
1892 iodesc => iodesc_sp_r2dvar(ng)
1893 END IF
1894 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idfsur, &
1895 & avg(ng)%pioVar(idfsur), &
1896 & avg(ng)%Rindex, &
1897 & iodesc, &
1898 & lbi, ubi, lbj, ubj, scale, &
1899# ifdef MASKING
1900 & grid(ng) % rmask, &
1901# endif
1902 & average(ng) % avgzeta)
1903 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1904 IF (master) THEN
1905 WRITE (stdout,20) trim(vname(1,idfsur)), avg(ng)%Rindex
1906 END IF
1907 exit_flag=3
1908 ioerror=status
1909 RETURN
1910 END IF
1911 END IF
1912
1913# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
1914!
1915! Write out detided free-surface (m).
1916!
1917 IF (aout(idfsud,ng)) THEN
1918 scale=1.0_dp
1919 IF (avg(ng)%pioVar(idfsud)%dkind.eq.pio_double) THEN
1920 iodesc => iodesc_dp_r2dvar(ng)
1921 ELSE
1922 iodesc => iodesc_sp_r2dvar(ng)
1923 END IF
1924 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idfsud, &
1925 & avg(ng)%pioVar(idfsud), &
1926 & avg(ng)%Rindex, &
1927 & iodesc, &
1928 & lbi, ubi, lbj, ubj, scale, &
1929# ifdef MASKING
1930 & grid(ng) % rmask, &
1931# endif
1932 & tides(ng) % zeta_detided)
1933 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1934 IF (master) THEN
1935 WRITE (stdout,20) trim(vname(1,idfsud)), avg(ng)%Rindex
1936 END IF
1937 exit_flag=3
1938 ioerror=status
1939 RETURN
1940 END IF
1941 END IF
1942# endif
1943!
1944! Write out 2D momentum component (m/s) in the XI-direction.
1945!
1946 IF (aout(idubar,ng)) THEN
1947 scale=1.0_dp
1948 IF (avg(ng)%pioVar(idubar)%dkind.eq.pio_double) THEN
1949 iodesc => iodesc_dp_u2dvar(ng)
1950 ELSE
1951 iodesc => iodesc_sp_u2dvar(ng)
1952 END IF
1953 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idubar, &
1954 & avg(ng)%pioVar(idubar), &
1955 & avg(ng)%Rindex, &
1956 & iodesc, &
1957 & lbi, ubi, lbj, ubj, scale, &
1958# ifdef MASKING
1959 & grid(ng) % umask_avg, &
1960# endif
1961 & average(ng) % avgu2d)
1962 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1963 IF (master) THEN
1964 WRITE (stdout,20) trim(vname(1,idubar)), avg(ng)%Rindex
1965 END IF
1966 exit_flag=3
1967 ioerror=status
1968 RETURN
1969 END IF
1970 END IF
1971
1972# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
1973!
1974! Write out detided 2D momentum component (m/s) in the XI-direction.
1975!
1976 IF (aout(idu2dd,ng)) THEN
1977 scale=1.0_dp
1978 IF (avg(ng)%pioVar(idu2dd)%dkind.eq.pio_double) THEN
1979 iodesc => iodesc_dp_u2dvar(ng)
1980 ELSE
1981 iodesc => iodesc_sp_u2dvar(ng)
1982 END IF
1983 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idu2dd, &
1984 & avg(ng)%pioVar(idu2dd), &
1985 & avg(ng)%Rindex, &
1986 & iodesc, &
1987 & lbi, ubi, lbj, ubj, scale, &
1988# ifdef MASKING
1989 & grid(ng) % umask_avg, &
1990# endif
1991 & tides(ng) % ubar_detided)
1992 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
1993 IF (master) THEN
1994 WRITE (stdout,20) trim(vname(1,idu2dd)), avg(ng)%Rindex
1995 END IF
1996 exit_flag=3
1997 ioerror=status
1998 RETURN
1999 END IF
2000 END IF
2001# endif
2002!
2003! Write out 2D momentum component (m/s) in the ETA-direction.
2004!
2005 IF (aout(idvbar,ng)) THEN
2006 scale=1.0_dp
2007 IF (avg(ng)%pioVar(idvbar)%dkind.eq.pio_double) THEN
2008 iodesc => iodesc_dp_v2dvar(ng)
2009 ELSE
2010 iodesc => iodesc_sp_v2dvar(ng)
2011 END IF
2012 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvbar, &
2013 & avg(ng)%pioVar(idvbar), &
2014 & avg(ng)%Rindex, &
2015 & iodesc, &
2016 & lbi, ubi, lbj, ubj, scale, &
2017# ifdef MASKING
2018 & grid(ng) % vmask_avg, &
2019# endif
2020 & average(ng) % avgv2d)
2021 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2022 IF (master) THEN
2023 WRITE (stdout,20) trim(vname(1,idvbar)), avg(ng)%Rindex
2024 END IF
2025 exit_flag=3
2026 ioerror=status
2027 RETURN
2028 END IF
2029 END IF
2030
2031# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2032!
2033! Write out detided 2D momentum component (m/s) in the ETA-direction.
2034!
2035 IF (aout(idv2dd,ng)) THEN
2036 scale=1.0_dp
2037 IF (avg(ng)%pioVar(idv2dd)%dkind.eq.pio_double) THEN
2038 iodesc => iodesc_dp_v2dvar(ng)
2039 ELSE
2040 iodesc => iodesc_sp_v2dvar(ng)
2041 END IF
2042 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idv2dd, &
2043 & avg(ng)%pioVar(idv2dd), &
2044 & avg(ng)%Rindex, &
2045 & iodesc, &
2046 & lbi, ubi, lbj, ubj, scale, &
2047# ifdef MASKING
2048 & grid(ng) % vmask_avg, &
2049# endif
2050 & tides(ng) % vbar_detided)
2051 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2052 IF (master) THEN
2053 WRITE (stdout,20) trim(vname(1,idv2dd)), avg(ng)%Rindex
2054 END IF
2055 exit_flag=3
2056 ioerror=status
2057 RETURN
2058 END IF
2059 END IF
2060# endif
2061!
2062! Write out 2D Eastward momentum component (m/s) at RHO-points.
2063!
2064 IF (aout(idu2de,ng)) THEN
2065 scale=1.0_dp
2066 IF (avg(ng)%pioVar(idu2de)%dkind.eq.pio_double) THEN
2067 iodesc => iodesc_dp_r2dvar(ng)
2068 ELSE
2069 iodesc => iodesc_sp_r2dvar(ng)
2070 END IF
2071 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idu2de, &
2072 & avg(ng)%pioVar(idu2de), &
2073 & avg(ng)%Rindex, &
2074 & iodesc, &
2075 & lbi, ubi, lbj, ubj, scale, &
2076# ifdef MASKING
2077 & grid(ng) % rmask_avg, &
2078# endif
2079 & average(ng) % avgu2dE)
2080 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2081 IF (master) THEN
2082 WRITE (stdout,20) trim(vname(1,idu2de)), avg(ng)%Rindex
2083 END IF
2084 exit_flag=3
2085 ioerror=status
2086 RETURN
2087 END IF
2088 END IF
2089!
2090! Write out 2D Northward momentum component (m/s) at RHO-points.
2091!
2092 IF (aout(idv2dn,ng)) THEN
2093 scale=1.0_dp
2094 IF (avg(ng)%pioVar(idv2dn)%dkind.eq.pio_double) THEN
2095 iodesc => iodesc_dp_r2dvar(ng)
2096 ELSE
2097 iodesc => iodesc_sp_r2dvar(ng)
2098 END IF
2099 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idv2dn, &
2100 & avg(ng)%pioVar(idv2dn), &
2101 & avg(ng)%Rindex, &
2102 & iodesc, &
2103 & lbi, ubi, lbj, ubj, scale, &
2104# ifdef MASKING
2105 & grid(ng) % rmask_avg, &
2106# endif
2107 & average(ng) % avgv2dN)
2108 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2109 IF (master) THEN
2110 WRITE (stdout,20) trim(vname(1,idv2dn)), avg(ng)%Rindex
2111 END IF
2112 exit_flag=3
2113 ioerror=status
2114 RETURN
2115 END IF
2116 END IF
2117
2118# if defined FORWARD_WRITE && defined SOLVE3D
2119!
2120! Write out time-averaged mass fluxes for 3D momentum coupling.
2121!
2122 IF (aout(idufx1,ng)) THEN
2123 scale=1.0_dp
2124 IF (avg(ng)%pioVar(idufx1)%dkind.eq.pio_double) THEN
2125 iodesc => iodesc_dp_u2dvar(ng)
2126 ELSE
2127 iodesc => iodesc_sp_u2dvar(ng)
2128 END IF
2129 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idufx1, &
2130 & avg(ng)%pioVar(idufx1), &
2131 & avg(ng)%Rindex, &
2132 & iodesc, &
2133 & lbi, ubi, lbj, ubj, scale, &
2134# ifdef MASKING
2135 & grid(ng) % umask_avg, &
2136# endif
2137 & average(ng) % avgDU_avg1)
2138 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2139 IF (master) THEN
2140 WRITE (stdout,20) trim(vname(1,idufx1)), avg(ng)%Rindex
2141 END IF
2142 exit_flag=3
2143 ioerror=status
2144 RETURN
2145 END IF
2146 END IF
2147!
2148 IF (aout(idufx2,ng)) THEN
2149 scale=1.0_dp
2150 IF (avg(ng)%pioVar(idufx2)%dkind.eq.pio_double) THEN
2151 iodesc => iodesc_dp_u2dvar(ng)
2152 ELSE
2153 iodesc => iodesc_sp_u2dvar(ng)
2154 END IF
2155 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idufx2, &
2156 & avg(ng)%pioVar(idufx2), &
2157 & avg(ng)%Rindex, &
2158 & iodesc, &
2159 & lbi, ubi, lbj, ubj, scale, &
2160# ifdef MASKING
2161 & grid(ng) % umask_avg, &
2162# endif
2163 & average(ng) % avgDU_avg2)
2164 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2165 IF (master) THEN
2166 WRITE (stdout,20) trim(vname(1,idufx2)), avg(ng)%Rindex
2167 END IF
2168 exit_flag=3
2169 ioerror=status
2170 RETURN
2171 END IF
2172 END IF
2173!
2174 IF (aout(idvfx1,ng)) THEN
2175 scale=1.0_dp
2176 IF (avg(ng)%pioVar(idvfx1)%dkind.eq.pio_double) THEN
2177 iodesc => iodesc_dp_v2dvar(ng)
2178 ELSE
2179 iodesc => iodesc_sp_v2dvar(ng)
2180 END IF
2181 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvfx1, &
2182 & avg(ng)%pioVar(idvfx1), &
2183 & avg(ng)%Rindex, &
2184 & iodesc, &
2185 & lbi, ubi, lbj, ubj, scale, &
2186# ifdef MASKING
2187 & grid(ng) % vmask_avg, &
2188# endif
2189 & average(ng) % avgDV_avg1)
2190 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2191 IF (master) THEN
2192 WRITE (stdout,20) trim(vname(1,idvfx1)), avg(ng)%Rindex
2193 END IF
2194 exit_flag=3
2195 ioerror=status
2196 RETURN
2197 END IF
2198 END IF
2199!
2200 IF (aout(idvfx2,ng)) THEN
2201 scale=1.0_dp
2202 IF (avg(ng)%pioVar(idvfx2)%dkind.eq.pio_double) THEN
2203 iodesc => iodesc_dp_v2dvar(ng)
2204 ELSE
2205 iodesc => iodesc_sp_v2dvar(ng)
2206 END IF
2207 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvfx2, &
2208 & avg(ng)%pioVar(idvfx2), &
2209 & avg(ng)%Rindex, &
2210 & iodesc, &
2211 & lbi, ubi, lbj, ubj, scale, &
2212# ifdef MASKING
2213 & grid(ng) % umask_avg, &
2214# endif
2215 & average(ng) % avgDV_avg2)
2216 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2217 IF (master) THEN
2218 WRITE (stdout,20) trim(vname(1,idvfx2)), avg(ng)%Rindex
2219 END IF
2220 exit_flag=3
2221 ioerror=status
2222 RETURN
2223 END IF
2224 END IF
2225# endif
2226
2227# ifdef SOLVE3D
2228!
2229! Write out 3D momentum component (m/s) in the XI-direction.
2230!
2231 IF (aout(iduvel,ng)) THEN
2232 scale=1.0_dp
2233 IF (avg(ng)%pioVar(iduvel)%dkind.eq.pio_double) THEN
2234 iodesc => iodesc_dp_u3dvar(ng)
2235 ELSE
2236 iodesc => iodesc_sp_u3dvar(ng)
2237 END IF
2238 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, iduvel, &
2239 & avg(ng)%pioVar(iduvel), &
2240 & avg(ng)%Rindex, &
2241 & iodesc, &
2242 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2243# ifdef MASKING
2244 & grid(ng) % umask_avg, &
2245# endif
2246 & average(ng) % avgu3d)
2247 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2248 IF (master) THEN
2249 WRITE (stdout,20) trim(vname(1,iduvel)), avg(ng)%Rindex
2250 END IF
2251 exit_flag=3
2252 ioerror=status
2253 RETURN
2254 END IF
2255 END IF
2256
2257# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2258!
2259! Write out detided 3D momentum component (m/s) in the XI-direction.
2260!
2261 IF (aout(idu3dd,ng)) THEN
2262 scale=1.0_dp
2263 IF (avg(ng)%pioVar(idu3dd)%dkind.eq.pio_double) THEN
2264 iodesc => iodesc_dp_u3dvar(ng)
2265 ELSE
2266 iodesc => iodesc_sp_u3dvar(ng)
2267 END IF
2268 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idu3dd, &
2269 & avg(ng)%pioVar(idu3dd), &
2270 & iodesc, &
2271 & avg(ng)%Rindex, &
2272 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2273# ifdef MASKING
2274 & grid(ng) % umask_avg, &
2275# endif
2276 & tides(ng) % u_detided)
2277 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2278 IF (master) THEN
2279 WRITE (stdout,20) trim(vname(1,idu3dd)), avg(ng)%Rindex
2280 END IF
2281 exit_flag=3
2282 ioerror=status
2283 RETURN
2284 END IF
2285 END IF
2286# endif
2287!
2288! Write out 3D momentum component (m/s) in the ETA-direction.
2289!
2290 IF (aout(idvvel,ng)) THEN
2291 scale=1.0_dp
2292 IF (avg(ng)%pioVar(idvvel)%dkind.eq.pio_double) THEN
2293 iodesc => iodesc_dp_v3dvar(ng)
2294 ELSE
2295 iodesc => iodesc_sp_v3dvar(ng)
2296 END IF
2297 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idvvel, &
2298 & avg(ng)%pioVar(idvvel), &
2299 & avg(ng)%Rindex, &
2300 & iodesc, &
2301 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2302# ifdef MASKING
2303 & grid(ng) % vmask_avg, &
2304# endif
2305 & average(ng) % avgv3d)
2306 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2307 IF (master) THEN
2308 WRITE (stdout,20) trim(vname(1,idvvel)), avg(ng)%Rindex
2309 END IF
2310 exit_flag=3
2311 ioerror=status
2312 RETURN
2313 END IF
2314 END IF
2315
2316# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2317!
2318! Write out detided 3D momentum component (m/s) in the ETA-direction.
2319!
2320 IF (aout(idv3dd,ng)) THEN
2321 scale=1.0_dp
2322 IF (avg(ng)%pioVar(idv3dd)%dkind.eq.pio_double) THEN
2323 iodesc => iodesc_dp_v3dvar(ng)
2324 ELSE
2325 iodesc => iodesc_sp_v3dvar(ng)
2326 END IF
2327 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idv3dd, &
2328 & avg(ng)%pioVar(idv3dd), &
2329 & avg(ng)%Rindex, &
2330 & iodesc, &
2331 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2332# ifdef MASKING
2333 & grid(ng) % vmask_avg, &
2334# endif
2335 & tides(ng) % v_detided)
2336 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2337 IF (master) THEN
2338 WRITE (stdout,20) trim(vname(1,idv3dd)), avg(ng)%Rindex
2339 END IF
2340 exit_flag=3
2341 ioerror=status
2342 RETURN
2343 END IF
2344 END IF
2345# endif
2346!
2347! Write out 3D Eastward momentum component (m/s) at RHO-points.
2348!
2349 IF (aout(idu3de,ng)) THEN
2350 scale=1.0_dp
2351 IF (avg(ng)%pioVar(idu3de)%dkind.eq.pio_double) THEN
2352 iodesc => iodesc_dp_r3dvar(ng)
2353 ELSE
2354 iodesc => iodesc_sp_r3dvar(ng)
2355 END IF
2356 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idu3de, &
2357 & avg(ng)%pioVar(idu3de), &
2358 & avg(ng)%Rindex, &
2359 & iodesc, &
2360 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2361# ifdef MASKING
2362 & grid(ng) % rmask_avg, &
2363# endif
2364 & average(ng) % avgu3dE)
2365 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2366 IF (master) THEN
2367 WRITE (stdout,20) trim(vname(1,idu3de)), avg(ng)%Rindex
2368 END IF
2369 exit_flag=3
2370 ioerror=status
2371 RETURN
2372 END IF
2373 END IF
2374!
2375! Write out 3D Northward momentum component (m/s) at RHO-points.
2376!
2377 IF (aout(idv3dn,ng)) THEN
2378 scale=1.0_dp
2379 IF (avg(ng)%pioVar(idv3dn)%dkind.eq.pio_double) THEN
2380 iodesc => iodesc_dp_r3dvar(ng)
2381 ELSE
2382 iodesc => iodesc_sp_r3dvar(ng)
2383 END IF
2384 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idv3dn, &
2385 & avg(ng)%pioVar(idv3dn), &
2386 & avg(ng)%Rindex, &
2387 & iodesc, &
2388 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2389# ifdef MASKING
2390 & grid(ng) % rmask_avg, &
2391# endif
2392 & average(ng) % avgv3dN)
2393 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2394 IF (master) THEN
2395 WRITE (stdout,20) trim(vname(1,idv3dn)), avg(ng)%Rindex
2396 END IF
2397 exit_flag=3
2398 ioerror=status
2399 RETURN
2400 END IF
2401 END IF
2402!
2403! Write out S-coordinate omega vertical velocity (m/s).
2404!
2405 IF (aout(idovel,ng)) THEN
2406 scale=1.0_dp
2407 IF (avg(ng)%pioVar(idovel)%dkind.eq.pio_double) THEN
2408 iodesc => iodesc_dp_w3dvar(ng)
2409 ELSE
2410 iodesc => iodesc_sp_w3dvar(ng)
2411 END IF
2412 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idovel, &
2413 & avg(ng)%pioVar(idovel), &
2414 & avg(ng)%Rindex, &
2415 & iodesc, &
2416 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2417# ifdef MASKING
2418 & grid(ng) % rmask, &
2419# endif
2420 & average(ng) % avgw3d)
2421 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2422 IF (master) THEN
2423 WRITE (stdout,20) trim(vname(1,idovel)), avg(ng)%Rindex
2424 END IF
2425 exit_flag=3
2426 ioerror=status
2427 RETURN
2428 END IF
2429 END IF
2430!
2431! Write out "true" vertical velocity (m/s).
2432!
2433 IF (aout(idwvel,ng)) THEN
2434 scale=1.0_dp
2435 IF (avg(ng)%pioVar(idwvel)%dkind.eq.pio_double) THEN
2436 iodesc => iodesc_dp_w3dvar(ng)
2437 ELSE
2438 iodesc => iodesc_sp_w3dvar(ng)
2439 END IF
2440 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idwvel, &
2441 & avg(ng)%pioVar(idwvel), &
2442 & avg(ng)%Rindex, &
2443 & iodesc, &
2444 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2445# ifdef MASKING
2446 & grid(ng) % rmask, &
2447# endif
2448 & average(ng) % avgwvel)
2449 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2450 IF (master) THEN
2451 WRITE (stdout,20) trim(vname(1,idovel)), avg(ng)%Rindex
2452 END IF
2453 exit_flag=3
2454 ioerror=status
2455 RETURN
2456 END IF
2457 END IF
2458!
2459! Write out tracer type variables.
2460!
2461 DO itrc=1,nt(ng)
2462 IF (aout(idtvar(itrc),ng)) THEN
2463 scale=1.0_dp
2464 IF (avg(ng)%pioTrc(itrc)%dkind.eq.pio_double) THEN
2465 iodesc => iodesc_dp_r3dvar(ng)
2466 ELSE
2467 iodesc => iodesc_sp_r3dvar(ng)
2468 END IF
2469 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idtvar(itrc), &
2470 & avg(ng)%pioTrc(itrc), &
2471 & avg(ng)%Rindex, &
2472 & iodesc, &
2473 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2474# ifdef MASKING
2475 & grid(ng) % rmask, &
2476# endif
2477 & average(ng) % avgt(:,:,:,itrc))
2478 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2479 IF (master) THEN
2480 WRITE (stdout,20) trim(vname(1,idtvar(itrc))), &
2481 & avg(ng)%Rindex
2482 END IF
2483 exit_flag=3
2484 ioerror=status
2485 RETURN
2486 END IF
2487 END IF
2488 END DO
2489
2490# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2491!
2492! Write out detided active tracer variables.
2493!
2494 DO itrc=1,nat
2495 IF (aout(idtrcd(itrc),ng)) THEN
2496 scale=1.0_dp
2497 IF (avg(ng)%pioVar(idtrcd(itrc))%dkind.eq.pio_double) THEN
2498 iodesc => iodesc_dp_r3dvar(ng)
2499 ELSE
2500 iodesc => iodesc_sp_r3dvar(ng)
2501 END IF
2502 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idtrcd(itrc), &
2503 & avg(ng)%pioVar(idtrcd(itrc)), &
2504 & avg(ng)%Rindex, &
2505 & iodesc, &
2506 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2507# ifdef MASKING
2508 & grid(ng) % rmask, &
2509# endif
2510 & tides(ng) % t_detided(:,:,:,itrc))
2511 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2512 IF (master) THEN
2513 WRITE (stdout,20) trim(vname(1,idtrcd(itrc))), &
2514 & avg(ng)%Rindex
2515 END IF
2516 exit_flag=3
2517 ioerror=status
2518 RETURN
2519 END IF
2520 END IF
2521 END DO
2522# endif
2523!
2524! Write out density anomaly.
2525!
2526 IF (aout(iddano,ng)) THEN
2527 scale=1.0_dp
2528 IF (avg(ng)%pioVar(iddano)%dkind.eq.pio_double) THEN
2529 iodesc => iodesc_dp_r3dvar(ng)
2530 ELSE
2531 iodesc => iodesc_sp_r3dvar(ng)
2532 END IF
2533 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, iddano, &
2534 & avg(ng)%pioVar(iddano), &
2535 & avg(ng)%Rindex, &
2536 & iodesc, &
2537 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2538# ifdef MASKING
2539 & grid(ng) % rmask, &
2540# endif
2541 & average(ng) % avgrho)
2542 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2543 IF (master) THEN
2544 WRITE (stdout,20) trim(vname(1,iddano)), avg(ng)%Rindex
2545 END IF
2546 exit_flag=3
2547 ioerror=status
2548 RETURN
2549 END IF
2550 END IF
2551
2552# ifdef LMD_SKPP
2553!
2554! Write out depth of surface boundary layer.
2555!
2556 IF (aout(idhsbl,ng)) THEN
2557 scale=1.0_dp
2558 IF (avg(ng)%pioVar(idhsbl)%dkind.eq.pio_double) THEN
2559 iodesc => iodesc_dp_r2dvar(ng)
2560 ELSE
2561 iodesc => iodesc_sp_r2dvar(ng)
2562 END IF
2563 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idhsbl, &
2564 & avg(ng)%pioVar(idhsbl), &
2565 & avg(ng)%Rindex, &
2566 & iodesc, &
2567 & lbi, ubi, lbj, ubj, scale, &
2568# ifdef MASKING
2569 & grid(ng) % rmask, &
2570# endif
2571 & average(ng) % avghsbl)
2572 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2573 IF (master) THEN
2574 WRITE (stdout,20) trim(vname(1,idhsbl)), avg(ng)%Rindex
2575 END IF
2576 exit_flag=3
2577 ioerror=status
2578 RETURN
2579 END IF
2580 END IF
2581# endif
2582# ifdef LMD_BKPP
2583!
2584! Write out depth of bottom boundary layer.
2585!
2586 IF (aout(idhbbl,ng)) THEN
2587 scale=1.0_dp
2588 IF (avg(ng)%pioVar(idhbbl)%dkind.eq.pio_double) THEN
2589 iodesc => iodesc_dp_r2dvar(ng)
2590 ELSE
2591 iodesc => iodesc_sp_r2dvar(ng)
2592 END IF
2593 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idhbbl, &
2594 & avg(ng)%pioVar(idhbbl), &
2595 & avg(ng)%Rindex, &
2596 & iodesc, &
2597 & lbi, ubi, lbj, ubj, scale, &
2598# ifdef MASKING
2599 & grid(ng) % rmask, &
2600# endif
2601 & average(ng) % avghbbl)
2602 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2603 IF (master) THEN
2604 WRITE (stdout,20) trim(vname(1,idhbbl)), avg(ng)%Rindex
2605 END IF
2606 exit_flag=3
2607 ioerror=status
2608 RETURN
2609 END IF
2610 END IF
2611# endif
2612# endif
2613!
2614! Write out 2D potential vorticity.
2615!
2616 IF (aout(id2dpv,ng)) THEN
2617 scale=1.0_dp
2618 IF (avg(ng)%pioVar(id2dpv)%dkind.eq.pio_double) THEN
2619 iodesc => iodesc_dp_p2dvar(ng)
2620 ELSE
2621 iodesc => iodesc_sp_p2dvar(ng)
2622 END IF
2623 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, id2dpv, &
2624 & avg(ng)%pioVar(id2dpv), &
2625 & avg(ng)%Rindex, &
2626 & iodesc, &
2627 & lbi, ubi, lbj, ubj, scale, &
2628# ifdef MASKING
2629 & grid(ng) % pmask, &
2630# endif
2631 & average(ng) % avgpvor2d)
2632 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2633 IF (master) THEN
2634 WRITE (stdout,20) trim(vname(1,id2dpv)), avg(ng)%Rindex
2635 END IF
2636 exit_flag=3
2637 ioerror=status
2638 RETURN
2639 END IF
2640 END IF
2641!
2642! Write out 2D relative vorticity.
2643!
2644 IF (aout(id2drv,ng)) THEN
2645 scale=1.0_dp
2646 IF (avg(ng)%pioVar(id2drv)%dkind.eq.pio_double) THEN
2647 iodesc => iodesc_dp_p2dvar(ng)
2648 ELSE
2649 iodesc => iodesc_sp_p2dvar(ng)
2650 END IF
2651 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, id2drv, &
2652 & avg(ng)%pioVar(id2drv), &
2653 & avg(ng)%Rindex, &
2654 & iodesc, &
2655 & lbi, ubi, lbj, ubj, scale, &
2656# ifdef MASKING
2657 & grid(ng) % pmask, &
2658# endif
2659 & average(ng) % avgrvor2d)
2660 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2661 IF (master) THEN
2662 WRITE (stdout,20) trim(vname(1,id2drv)), avg(ng)%Rindex
2663 END IF
2664 exit_flag=3
2665 ioerror=status
2666 RETURN
2667 END IF
2668 END IF
2669
2670# ifdef SOLVE3D
2671!
2672! Write out 3D potential vorticity.
2673!
2674 IF (aout(id3dpv,ng)) THEN
2675 scale=1.0_dp
2676 IF (avg(ng)%pioVar(id3dpv)%dkind.eq.pio_double) THEN
2677 iodesc => iodesc_dp_p3dvar(ng)
2678 ELSE
2679 iodesc => iodesc_sp_p3dvar(ng)
2680 END IF
2681 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, id3dpv, &
2682 & avg(ng)%pioVar(id3dpv), &
2683 & avg(ng)%Rindex, &
2684 & iodesc, &
2685 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2686# ifdef MASKING
2687 & grid(ng) % pmask, &
2688# endif
2689 & average(ng) % avgpvor3d)
2690 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2691 IF (master) THEN
2692 WRITE (stdout,20) trim(vname(1,id3dpv)), avg(ng)%Rindex
2693 END IF
2694 exit_flag=3
2695 ioerror=status
2696 RETURN
2697 END IF
2698 END IF
2699!
2700! Write out 3D relative vorticity.
2701!
2702 IF (aout(id3drv,ng)) THEN
2703 scale=1.0_dp
2704 IF (avg(ng)%pioVar(id3drv)%dkind.eq.pio_double) THEN
2705 iodesc => iodesc_dp_p3dvar(ng)
2706 ELSE
2707 iodesc => iodesc_sp_p3dvar(ng)
2708 END IF
2709 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, id3drv, &
2710 & avg(ng)%pioVar(id3drv), &
2711 & avg(ng)%Rindex, &
2712 & iodesc, &
2713 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2714# ifdef MASKING
2715 & grid(ng) % pmask, &
2716# endif
2717 & average(ng) % avgrvor3d)
2718 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2719 IF (master) THEN
2720 WRITE (stdout,20) trim(vname(1,id3drv)), avg(ng)%Rindex
2721 END IF
2722 exit_flag=3
2723 ioerror=status
2724 RETURN
2725 END IF
2726 END IF
2727# endif
2728!
2729! Write out quadratic <zeta*zeta> term.
2730!
2731 IF (aout(idzzav,ng)) THEN
2732 scale=1.0_dp
2733 IF (avg(ng)%pioVar(idzzav)%dkind.eq.pio_double) THEN
2734 iodesc => iodesc_dp_r2dvar(ng)
2735 ELSE
2736 iodesc => iodesc_sp_r2dvar(ng)
2737 END IF
2738 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idzzav, &
2739 & avg(ng)%pioVar(idzzav), &
2740 & avg(ng)%Rindex, &
2741 & iodesc, &
2742 & lbi, ubi, lbj, ubj, scale, &
2743# ifdef MASKING
2744 & grid(ng) % rmask, &
2745# endif
2746 & average(ng) % avgZZ)
2747 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2748 IF (master) THEN
2749 WRITE (stdout,20) trim(vname(1,idzzav)), avg(ng)%Rindex
2750 END IF
2751 exit_flag=3
2752 ioerror=status
2753 RETURN
2754 END IF
2755 END IF
2756!
2757! Write out quadratic <ubar*ubar> term.
2758!
2759 IF (aout(idu2av,ng)) THEN
2760 scale=1.0_dp
2761 IF (avg(ng)%pioVar(idu2av)%dkind.eq.pio_double) THEN
2762 iodesc => iodesc_dp_u2dvar(ng)
2763 ELSE
2764 iodesc => iodesc_sp_u2dvar(ng)
2765 END IF
2766 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idu2av, &
2767 & avg(ng)%pioVar(idu2av), &
2768 & avg(ng)%Rindex, &
2769 & iodesc, &
2770 & lbi, ubi, lbj, ubj, scale, &
2771# ifdef MASKING
2772 & grid(ng) % umask, &
2773# endif
2774 & average(ng) % avgU2)
2775 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2776 IF (master) THEN
2777 WRITE (stdout,20) trim(vname(1,idu2av)), avg(ng)%Rindex
2778 END IF
2779 exit_flag=3
2780 ioerror=status
2781 RETURN
2782 END IF
2783 END IF
2784!
2785! Write out quadratic <vbar*vbar> term.
2786!
2787 IF (aout(idv2av,ng)) THEN
2788 scale=1.0_dp
2789 IF (avg(ng)%pioVar(idv2av)%dkind.eq.pio_double) THEN
2790 iodesc => iodesc_dp_v2dvar(ng)
2791 ELSE
2792 iodesc => iodesc_sp_v2dvar(ng)
2793 END IF
2794 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idv2av, &
2795 & avg(ng)%pioVar(idv2av), &
2796 & avg(ng)%Rindex, &
2797 & iodesc, &
2798 & lbi, ubi, lbj, ubj, scale, &
2799# ifdef MASKING
2800 & grid(ng) % vmask, &
2801# endif
2802 & average(ng) % avgV2)
2803 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2804 IF (master) THEN
2805 WRITE (stdout,20) trim(vname(1,idv2av)), avg(ng)%Rindex
2806 END IF
2807 exit_flag=3
2808 ioerror=status
2809 RETURN
2810 END IF
2811 END IF
2812
2813# ifdef SOLVE3D
2814!
2815! Write out u-volume flux.
2816!
2817 IF (aout(idhuav,ng)) THEN
2818 scale=1.0_dp
2819 IF (avg(ng)%pioVar(idhuav)%dkind.eq.pio_double) THEN
2820 iodesc => iodesc_dp_u3dvar(ng)
2821 ELSE
2822 iodesc => iodesc_sp_u3dvar(ng)
2823 END IF
2824 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idhuav, &
2825 & avg(ng)%pioVar(idhuav), &
2826 & avg(ng)%Rindex, &
2827 & iodesc, &
2828 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2829# ifdef MASKING
2830 & grid(ng) % umask, &
2831# endif
2832 & average(ng) % avgHuon)
2833 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2834 IF (master) THEN
2835 WRITE (stdout,20) trim(vname(1,idhuav)), avg(ng)%Rindex
2836 END IF
2837 exit_flag=3
2838 ioerror=status
2839 RETURN
2840 END IF
2841 END IF
2842!
2843! Write out v-volume flux.
2844!
2845 IF (aout(idhvav,ng)) THEN
2846 scale=1.0_dp
2847 IF (avg(ng)%pioVar(idhvav)%dkind.eq.pio_double) THEN
2848 iodesc => iodesc_dp_v3dvar(ng)
2849 ELSE
2850 iodesc => iodesc_sp_v3dvar(ng)
2851 END IF
2852 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idhvav, &
2853 & avg(ng)%pioVar(idhvav), &
2854 & avg(ng)%Rindex, &
2855 & iodesc, &
2856 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2857# ifdef MASKING
2858 & grid(ng) % vmask, &
2859# endif
2860 & average(ng) % avgHvom)
2861 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2862 IF (master) THEN
2863 WRITE (stdout,20) trim(vname(1,idhvav)), avg(ng)%Rindex
2864 END IF
2865 exit_flag=3
2866 ioerror=status
2867 RETURN
2868 END IF
2869 END IF
2870!
2871! Write out quadratic <u*u> term.
2872!
2873 IF (aout(iduuav,ng)) THEN
2874 scale=1.0_dp
2875 IF (avg(ng)%pioVar(iduuav)%dkind.eq.pio_double) THEN
2876 iodesc => iodesc_dp_u3dvar(ng)
2877 ELSE
2878 iodesc => iodesc_sp_u3dvar(ng)
2879 END IF
2880 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, iduuav, &
2881 & avg(ng)%pioVar(iduuav), &
2882 & avg(ng)%Rindex, &
2883 & iodesc, &
2884 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2885# ifdef MASKING
2886 & grid(ng) % umask, &
2887# endif
2888 & average(ng) % avgUU)
2889 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2890 IF (master) THEN
2891 WRITE (stdout,20) trim(vname(1,iduuav)), avg(ng)%Rindex
2892 END IF
2893 exit_flag=3
2894 ioerror=status
2895 RETURN
2896 END IF
2897 END IF
2898!
2899! Write out quadratic <u*v> term.
2900!
2901 IF (aout(iduvav,ng)) THEN
2902 scale=1.0_dp
2903 IF (avg(ng)%pioVar(iduvav)%dkind.eq.pio_double) THEN
2904 iodesc => iodesc_dp_r3dvar(ng)
2905 ELSE
2906 iodesc => iodesc_sp_r3dvar(ng)
2907 END IF
2908 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, iduvav, &
2909 & avg(ng)%pioVar(iduvav), &
2910 & avg(ng)%Rindex, &
2911 & iodesc, &
2912 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2913# ifdef MASKING
2914 & grid(ng) % rmask, &
2915# endif
2916 & average(ng) % avgUV)
2917 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2918 IF (master) THEN
2919 WRITE (stdout,20) trim(vname(1,iduvav)), avg(ng)%Rindex
2920 END IF
2921 exit_flag=3
2922 ioerror=status
2923 RETURN
2924 END IF
2925 END IF
2926!
2927! Write out quadratic <v*v> term.
2928!
2929 IF (aout(idvvav,ng)) THEN
2930 scale=1.0_dp
2931 IF (avg(ng)%pioVar(idvvav)%dkind.eq.pio_double) THEN
2932 iodesc => iodesc_dp_v3dvar(ng)
2933 ELSE
2934 iodesc => iodesc_sp_v3dvar(ng)
2935 END IF
2936 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idvvav, &
2937 & avg(ng)%pioVar(idvvav), &
2938 & avg(ng)%Rindex, &
2939 & iodesc, &
2940 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2941# ifdef MASKING
2942 & grid(ng) % vmask, &
2943# endif
2944 & average(ng) % avgVV)
2945 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2946 IF (master) THEN
2947 WRITE (stdout,20) trim(vname(1,idvvav)), avg(ng)%Rindex
2948 END IF
2949 exit_flag=3
2950 ioerror=status
2951 RETURN
2952 END IF
2953 END IF
2954!
2955! Write out quadratic <t*t> term.
2956!
2957 DO i=1,nt(ng)
2958 IF (aout(idttav(i),ng)) THEN
2959 scale=1.0_dp
2960 IF (avg(ng)%pioVar(idttav(i))%dkind.eq.pio_double) THEN
2961 iodesc => iodesc_dp_r3dvar(ng)
2962 ELSE
2963 iodesc => iodesc_sp_r3dvar(ng)
2964 END IF
2965 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idttav(i), &
2966 & avg(ng)%pioVar(idttav(i)), &
2967 & avg(ng)%Rindex, &
2968 & iodesc, &
2969 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2970# ifdef MASKING
2971 & grid(ng) % rmask, &
2972# endif
2973 & average(ng) % avgTT(:,:,:,i))
2974 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
2975 IF (master) THEN
2976 WRITE (stdout,20) trim(vname(1,idttav(i))), avg(ng)%Rindex
2977 END IF
2978 exit_flag=3
2979 ioerror=status
2980 RETURN
2981 END IF
2982 END IF
2983 END DO
2984!
2985! Write out active tracer volume fluxes.
2986!
2987 DO i=1,nt(ng)
2988 IF (aout(ihutav(i),ng)) THEN
2989 scale=1.0_dp
2990 IF (avg(ng)%pioVar(ihutav(i))%dkind.eq.pio_double) THEN
2991 iodesc => iodesc_dp_u3dvar(ng)
2992 ELSE
2993 iodesc => iodesc_sp_u3dvar(ng)
2994 END IF
2995 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, ihutav(i), &
2996 & avg(ng)%pioVar(ihutav(i)), &
2997 & avg(ng)%Rindex, &
2998 & iodesc, &
2999 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
3000# ifdef MASKING
3001 & grid(ng) % umask, &
3002# endif
3003 & average(ng) % avgHuonT(:,:,:,i))
3004 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3005 IF (master) THEN
3006 WRITE (stdout,20) trim(vname(1,ihutav(i))), avg(ng)%Rindex
3007 END IF
3008 exit_flag=3
3009 ioerror=status
3010 RETURN
3011 END IF
3012 END IF
3013!
3014 IF (aout(ihvtav(i),ng)) THEN
3015 scale=1.0_dp
3016 IF (avg(ng)%pioVar(ihvtav(i))%dkind.eq.pio_double) THEN
3017 iodesc => iodesc_dp_v3dvar(ng)
3018 ELSE
3019 iodesc => iodesc_sp_v3dvar(ng)
3020 END IF
3021 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, ihvtav(i), &
3022 & avg(ng)%pioVar(ihvtav(i)), &
3023 & avg(ng)%Rindex, &
3024 & iodesc, &
3025 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
3026# ifdef MASKING
3027 & grid(ng) % vmask, &
3028# endif
3029 & average(ng) % avgHvomT(:,:,:,i))
3030 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3031 IF (master) THEN
3032 WRITE (stdout,20) trim(vname(1,ihvtav(i))), avg(ng)%Rindex
3033 END IF
3034 exit_flag=3
3035 ioerror=status
3036 RETURN
3037 END IF
3038 END IF
3039 END DO
3040!
3041! Write out quadratic <u*t> and <v*t> terms.
3042!
3043 DO i=1,nt(ng)
3044 IF (aout(idutav(i),ng)) THEN
3045 scale=1.0_dp
3046 IF (avg(ng)%pioVar(idutav(i))%dkind.eq.pio_double) THEN
3047 iodesc => iodesc_dp_u3dvar(ng)
3048 ELSE
3049 iodesc => iodesc_sp_u3dvar(ng)
3050 END IF
3051 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idutav(i), &
3052 & avg(ng)%pioVar(idutav(i)), &
3053 & avg(ng)%Rindex, &
3054 & iodesc, &
3055 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
3056# ifdef MASKING
3057 & grid(ng) % umask, &
3058# endif
3059 & average(ng) % avgUT(:,:,:,i))
3060 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3061 IF (master) THEN
3062 WRITE (stdout,20) trim(vname(1,idutav(i))), avg(ng)%Rindex
3063 END IF
3064 exit_flag=3
3065 ioerror=status
3066 RETURN
3067 END IF
3068 END IF
3069!
3070 IF (aout(idvtav(i),ng)) THEN
3071 scale=1.0_dp
3072 IF (avg(ng)%pioVar(idvtav(i))%dkind.eq.pio_double) THEN
3073 iodesc => iodesc_dp_v3dvar(ng)
3074 ELSE
3075 iodesc => iodesc_sp_v3dvar(ng)
3076 END IF
3077 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idvtav(i), &
3078 & avg(ng)%pioVar(idvtav(i)), &
3079 & avg(ng)%Rindex, &
3080 & iodesc, &
3081 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
3082# ifdef MASKING
3083 & grid(ng) % vmask, &
3084# endif
3085 & average(ng) % avgVT(:,:,:,i))
3086 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3087 IF (master) THEN
3088 WRITE (stdout,20) trim(vname(1,idvtav(i))), avg(ng)%Rindex
3089 END IF
3090 exit_flag=3
3091 ioerror=status
3092 RETURN
3093 END IF
3094 END IF
3095 END DO
3096
3097# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
3098!
3099! Write out vertical viscosity coefficient.
3100!
3101 IF (aout(idvvis,ng)) THEN
3102 scale=1.0_dp
3103 IF (avg(ng)%pioVar(idvvis)%dkind.eq.pio_double) THEN
3104 iodesc => iodesc_dp_w3dvar(ng)
3105 ELSE
3106 iodesc => iodesc_sp_w3dvar(ng)
3107 END IF
3108 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idvvis, &
3109 & avg(ng)%pioVar(idvvis), &
3110 & avg(ng)%Rindex, &
3111 & iodesc, &
3112 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
3113# ifdef MASKING
3114 & grid(ng) % rmask, &
3115# endif
3116 & average(ng) % avgAKv, &
3117 & setfillval = .false.)
3118 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3119 IF (master) THEN
3120 WRITE (stdout,20) trim(vname(1,idvvis)), avg(ng)%Rindex
3121 END IF
3122 exit_flag=3
3123 ioerror=status
3124 RETURN
3125 END IF
3126 END IF
3127!
3128! Write out vertical diffusion coefficient for potential temperature.
3129!
3130 IF (aout(idtdif,ng)) THEN
3131 scale=1.0_dp
3132 IF (avg(ng)%pioVar(idtdif)%dkind.eq.pio_double) THEN
3133 iodesc => iodesc_dp_w3dvar(ng)
3134 ELSE
3135 iodesc => iodesc_sp_w3dvar(ng)
3136 END IF
3137 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idtdif, &
3138 & avg(ng)%pioVar(idtdif), &
3139 & avg(ng)%Rindex, &
3140 & iodesc, &
3141 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
3142# ifdef MASKING
3143 & grid(ng) % rmask, &
3144# endif
3145 & average(ng) % avgAKt, &
3146 & setfillval = .false.)
3147 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3148 IF (master) THEN
3149 WRITE (stdout,20) trim(vname(1,idtdif)), avg(ng)%Rindex
3150 END IF
3151 exit_flag=3
3152 ioerror=status
3153 RETURN
3154 END IF
3155 END IF
3156
3157# ifdef SALINITY
3158!
3159! Write out vertical diffusion coefficient for salinity.
3160!
3161 IF (aout(idsdif,ng)) THEN
3162 scale=1.0_dp
3163 IF (avg(ng)%pioVar(idsdif)%dkind.eq.pio_double) THEN
3164 iodesc => iodesc_dp_w3dvar(ng)
3165 ELSE
3166 iodesc => iodesc_sp_w3dvar(ng)
3167 END IF
3168 status=nf_fwrite3d(ng, model, avg(ng)%pioFile, idsdif, &
3169 & avg(ng)%pioVar(idsdif), &
3170 & avg(ng)%Rindex, &
3171 & iodesc, &
3172 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
3173# ifdef MASKING
3174 & grid(ng) % rmask, &
3175# endif
3176 & average(ng) % avgAKs, &
3177 & setfillval = .false.)
3178 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3179 IF (master) THEN
3180 WRITE (stdout,20) trim(vname(1,idsdif)), avg(ng)%Rindex
3181 END IF
3182 exit_flag=3
3183 ioerror=status
3184 RETURN
3185 END IF
3186 END IF
3187# endif
3188# endif
3189# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
3190!
3191! Write out surface air pressure.
3192!
3193 IF (aout(idpair,ng)) THEN
3194 scale=1.0_dp
3195 IF (avg(ng)%pioVar(idpair)%dkind.eq.pio_double) THEN
3196 iodesc => iodesc_dp_r2dvar(ng)
3197 ELSE
3198 iodesc => iodesc_sp_r2dvar(ng)
3199 END IF
3200 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idpair, &
3201 & avg(ng)%pioVar(idpair), &
3202 & avg(ng)%Rindex, &
3203 & iodesc, &
3204 & lbi, ubi, lbj, ubj, scale, &
3205# ifdef MASKING
3206 & grid(ng) % rmask, &
3207# endif
3208 & average(ng) % avgPair)
3209 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3210 IF (master) THEN
3211 WRITE (stdout,20) trim(vname(1,idpair)), avg(ng)%Rindex
3212 END IF
3213 exit_flag=3
3214 ioerror=status
3215 RETURN
3216 END IF
3217 END IF
3218# endif
3219# if defined BULK_FLUXES
3220!
3221! Write out surface air temperature.
3222!
3223 IF (aout(idtair,ng)) THEN
3224 scale=1.0_dp
3225 IF (avg(ng)%pioVar(idtair)%dkind.eq.pio_double) THEN
3226 iodesc => iodesc_dp_r2dvar(ng)
3227 ELSE
3228 iodesc => iodesc_sp_r2dvar(ng)
3229 END IF
3230 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idtair, &
3231 & avg(ng)%pioVar(idtair), &
3232 & avg(ng)%Rindex, &
3233 & iodesc, &
3234 & lbi, ubi, lbj, ubj, scale, &
3235# ifdef MASKING
3236 & grid(ng) % rmask, &
3237# endif
3238 & average(ng) % avgTair)
3239 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3240 IF (master) THEN
3241 WRITE (stdout,20) trim(vname(1,idtair)), avg(ng)%Rindex
3242 END IF
3243 exit_flag=3
3244 ioerror=status
3245 RETURN
3246 END IF
3247 END IF
3248# endif
3249# if defined BULK_FLUXES || defined ECOSIM
3250!
3251! Write out surface winds.
3252!
3253 IF (aout(iduair,ng)) THEN
3254 scale=1.0_dp
3255 IF (avg(ng)%pioVar(iduair)%dkind.eq.pio_double) THEN
3256 iodesc => iodesc_dp_r2dvar(ng)
3257 ELSE
3258 iodesc => iodesc_sp_r2dvar(ng)
3259 END IF
3260 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, iduair, &
3261 & avg(ng)%pioVar(iduair), &
3262 & avg(ng)%Rindex, &
3263 & iodesc, &
3264 & lbi, ubi, lbj, ubj, scale, &
3265# ifdef MASKING
3266 & grid(ng) % rmask, &
3267# endif
3268 & average(ng) % avgUwind)
3269 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3270 IF (master) THEN
3271 WRITE (stdout,20) trim(vname(1,iduair)), avg(ng)%Rindex
3272 END IF
3273 exit_flag=3
3274 ioerror=status
3275 RETURN
3276 END IF
3277 END IF
3278!
3279 IF (aout(idvair,ng)) THEN
3280 scale=1.0_dp
3281 IF (avg(ng)%pioVar(idvair)%dkind.eq.pio_double) THEN
3282 iodesc => iodesc_dp_r2dvar(ng)
3283 ELSE
3284 iodesc => iodesc_sp_r2dvar(ng)
3285 END IF
3286 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvair, &
3287 & avg(ng)%pioVar(idvair), &
3288 & avg(ng)%Rindex, &
3289 & iodesc, &
3290 & lbi, ubi, lbj, ubj, scale, &
3291# ifdef MASKING
3292 & grid(ng) % rmask, &
3293# endif
3294 & average(ng) % avgVwind)
3295 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3296 IF (master) THEN
3297 WRITE (stdout,20) trim(vname(1,idvair)), avg(ng)%Rindex
3298 END IF
3299 exit_flag=3
3300 ioerror=status
3301 RETURN
3302 END IF
3303 END IF
3304!
3305! Write out Eastward/Northward surface wind (m/s) at RHO-points.
3306!
3307 IF (aout(iduaie,ng)) THEN
3308 scale=1.0_dp
3309 IF (avg(ng)%pioVar(iduaie)%dkind.eq.pio_double) THEN
3310 iodesc => iodesc_dp_r2dvar(ng)
3311 ELSE
3312 iodesc => iodesc_sp_r2dvar(ng)
3313 END IF
3314 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, iduaie, &
3315 & avg(ng)%pioVar(iduaie), &
3316 & avg(ng)%Rindex, &
3317 & iodesc, &
3318 & lbi, ubi, lbj, ubj, scale, &
3319# ifdef MASKING
3320 & grid(ng) % rmask_avg, &
3321# endif
3322 & average(ng) % avguwindE)
3323 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3324 IF (master) THEN
3325 WRITE (stdout,20) trim(vname(1,iduaie)), avg(ng)%Rindex
3326 END IF
3327 exit_flag=3
3328 ioerror=status
3329 RETURN
3330 END IF
3331 END IF
3332!
3333 IF (aout(idvain,ng)) THEN
3334 scale=1.0_dp
3335 IF (avg(ng)%pioVar(idvain)%dkind.eq.pio_double) THEN
3336 iodesc => iodesc_dp_r2dvar(ng)
3337 ELSE
3338 iodesc => iodesc_sp_r2dvar(ng)
3339 END IF
3340 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvain, &
3341 & avg(ng)%pioVar(idvain), &
3342 & avg(ng)%Rindex, &
3343 & iodesc, &
3344 & lbi, ubi, lbj, ubj, scale, &
3345# ifdef MASKING
3346 & grid(ng) % rmask_avg, &
3347# endif
3348 & average(ng) % avgvwindN)
3349 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3350 IF (master) THEN
3351 WRITE (stdout,20) trim(vname(1,idvain)), avg(ng)%Rindex
3352 END IF
3353 exit_flag=3
3354 ioerror=status
3355 RETURN
3356 END IF
3357 END IF
3358# endif
3359!
3360! Write out surface net heat flux.
3361!
3362 IF (aout(idtsur(itemp),ng)) THEN
3363# ifdef ADJOINT
3364# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3365 defined opt_observations
3366 scale=1.0_dp/(rho0*cp)
3367# else
3368 scale=1.0_dp
3369# endif
3370# else
3371 scale=rho0*cp
3372# endif
3373 IF (avg(ng)%pioVar(idtsur(itemp))%dkind.eq.pio_double) THEN
3374 iodesc => iodesc_dp_r2dvar(ng)
3375 ELSE
3376 iodesc => iodesc_sp_r2dvar(ng)
3377 END IF
3378 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idtsur(itemp), &
3379 & avg(ng)%pioVar(idtsur(itemp)), &
3380 & avg(ng)%Rindex, &
3381 & iodesc, &
3382 & lbi, ubi, lbj, ubj, scale, &
3383# ifdef MASKING
3384 & grid(ng) % rmask, &
3385# endif
3386 & average(ng) % avgstf)
3387 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3388 IF (master) THEN
3389 WRITE (stdout,20) trim(vname(1,idtsur(itemp))), &
3390 & avg(ng)%Rindex
3391 END IF
3392 exit_flag=3
3393 ioerror=status
3394 RETURN
3395 END IF
3396 END IF
3397
3398# ifdef SALINITY
3399!
3400! Write out surface salt flux (PSU m/s = kg salt/m2/s).
3401!
3402 IF (aout(idtsur(isalt),ng)) THEN
3403 scale=1.0_dp
3404 IF (avg(ng)%pioVar(idtsur(isalt))%dkind.eq.pio_double) THEN
3405 iodesc => iodesc_dp_r2dvar(ng)
3406 ELSE
3407 iodesc => iodesc_sp_r2dvar(ng)
3408 END IF
3409 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idtsur(isalt), &
3410 & avg(ng)%pioVar(idtsur(isalt)), &
3411 & avg(ng)%Rindex, &
3412 & iodesc, &
3413 & lbi, ubi, lbj, ubj, scale, &
3414# ifdef MASKING
3415 & grid(ng) % rmask, &
3416# endif
3417 & average(ng) % avgswf)
3418 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3419 IF (master) THEN
3420 WRITE (stdout,20) trim(vname(1,idtsur(isalt))), &
3421 & avg(ng)%Rindex
3422 END IF
3423 exit_flag=3
3424 ioerror=status
3425 RETURN
3426 END IF
3427 END IF
3428# endif
3429
3430# if defined BULK_FLUXES || defined FRC_COUPLING
3431!
3432! Write out latent heat flux.
3433!
3434 IF (aout(idlhea,ng)) THEN
3435# ifdef ADJOINT
3436 scale=1.0_dp
3437# else
3438 scale=rho0*cp
3439# endif
3440 IF (avg(ng)%pioVar(idlhea)%dkind.eq.pio_double) THEN
3441 iodesc => iodesc_dp_r2dvar(ng)
3442 ELSE
3443 iodesc => iodesc_sp_r2dvar(ng)
3444 END IF
3445 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idlhea, &
3446 & avg(ng)%pioVar(idlhea), &
3447 & avg(ng)%Rindex, &
3448 & iodesc, &
3449 & lbi, ubi, lbj, ubj, scale, &
3450# ifdef MASKING
3451 & grid(ng) % rmask, &
3452# endif
3453 & average(ng) % avglhf)
3454 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3455 IF (master) THEN
3456 WRITE (stdout,20) trim(vname(1,idlhea)), avg(ng)%Rindex
3457 END IF
3458 exit_flag=3
3459 ioerror=status
3460 RETURN
3461 END IF
3462 END IF
3463!
3464! Write out sensible heat flux.
3465!
3466 IF (aout(idshea,ng)) THEN
3467# ifdef ADJOINT
3468 scale=1.0_dp
3469# else
3470 scale=rho0*cp
3471# endif
3472 IF (avg(ng)%pioVar(idshea)%dkind.eq.pio_double) THEN
3473 iodesc => iodesc_dp_r2dvar(ng)
3474 ELSE
3475 iodesc => iodesc_sp_r2dvar(ng)
3476 END IF
3477 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idshea, &
3478 & avg(ng)%pioVar(idshea), &
3479 & avg(ng)%Rindex, &
3480 & iodesc, &
3481 & lbi, ubi, lbj, ubj, scale, &
3482# ifdef MASKING
3483 & grid(ng) % rmask, &
3484# endif
3485 & average(ng) % avgshf)
3486 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3487 IF (master) THEN
3488 WRITE (stdout,20) trim(vname(1,idshea)), avg(ng)%Rindex
3489 END IF
3490 exit_flag=3
3491 ioerror=status
3492 RETURN
3493 END IF
3494 END IF
3495!
3496! Write out net longwave radiation flux.
3497!
3498 IF (aout(idlrad,ng)) THEN
3499# ifdef ADJOINT
3500 scale=1.0_dp
3501# else
3502 scale=rho0*cp
3503# endif
3504 IF (avg(ng)%pioVar(idlrad)%dkind.eq.pio_double) THEN
3505 iodesc => iodesc_dp_r2dvar(ng)
3506 ELSE
3507 iodesc => iodesc_sp_r2dvar(ng)
3508 END IF
3509 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idlrad, &
3510 & avg(ng)%pioVar(idlrad), &
3511 & avg(ng)%Rindex, &
3512 & iodesc, &
3513 & lbi, ubi, lbj, ubj, scale, &
3514# ifdef MASKING
3515 & grid(ng) % rmask, &
3516# endif
3517 & average(ng) % avglrf)
3518 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3519 IF (master) THEN
3520 WRITE (stdout,20) trim(vname(1,idlrad)), avg(ng)%Rindex
3521 END IF
3522 exit_flag=3
3523 ioerror=status
3524 RETURN
3525 END IF
3526 END IF
3527# endif
3528
3529# ifdef BULK_FLUXES
3530# ifdef EMINUSP
3531!
3532! Write out evaportaion rate (kg/m2/s).
3533!
3534 IF (aout(idevap,ng)) THEN
3535 scale=1.0_dp
3536 IF (avg(ng)%pioVar(idevap)%dkind.eq.pio_double) THEN
3537 iodesc => iodesc_dp_r2dvar(ng)
3538 ELSE
3539 iodesc => iodesc_sp_r2dvar(ng)
3540 END IF
3541 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idevap, &
3542 & avg(ng)%pioVar(idevap), &
3543 & avg(ng)%Rindex, &
3544 & iodesc, &
3545 & lbi, ubi, lbj, ubj, scale, &
3546# ifdef MASKING
3547 & grid(ng) % rmask, &
3548# endif
3549 & average(ng) % avgevap)
3550 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3551 IF (master) THEN
3552 WRITE (stdout,20) trim(vname(1,idevap)), avg(ng)%Rindex
3553 END IF
3554 exit_flag=3
3555 ioerror=status
3556 RETURN
3557 END IF
3558 END IF
3559!
3560! Write out precipitation rate (kg/m2/s).
3561!
3562 IF (aout(idrain,ng)) THEN
3563 scale=1.0_dp
3564 IF (avg(ng)%pioVar(idrain)%dkind.eq.pio_double) THEN
3565 iodesc => iodesc_dp_r2dvar(ng)
3566 ELSE
3567 iodesc => iodesc_sp_r2dvar(ng)
3568 END IF
3569 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idrain, &
3570 & avg(ng)%pioVar(idrain), &
3571 & avg(ng)%Rindex, &
3572 & iodesc, &
3573 & lbi, ubi, lbj, ubj, scale, &
3574# ifdef MASKING
3575 & grid(ng) % rmask, &
3576# endif
3577 & average(ng) % avgrain)
3578 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3579 IF (master) THEN
3580 WRITE (stdout,20) trim(vname(1,idrain)), avg(ng)%Rindex
3581 END IF
3582 exit_flag=3
3583 ioerror=status
3584 RETURN
3585 END IF
3586 END IF
3587# endif
3588# endif
3589# ifdef SHORTWAVE
3590!
3591! Write out net shortwave radiation flux.
3592!
3593 IF (aout(idsrad,ng)) THEN
3594# ifdef ADJOINT
3595 scale=1.0_dp
3596# else
3597 scale=rho0*cp
3598# endif
3599 IF (avg(ng)%pioVar(idsrad)%dkind.eq.pio_double) THEN
3600 iodesc => iodesc_dp_r2dvar(ng)
3601 ELSE
3602 iodesc => iodesc_sp_r2dvar(ng)
3603 END IF
3604 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idsrad, &
3605 & avg(ng)%pioVar(idsrad), &
3606 & avg(ng)%Rindex, &
3607 & iodesc, &
3608 & lbi, ubi, lbj, ubj, scale, &
3609# ifdef MASKING
3610 & grid(ng) % rmask, &
3611# endif
3612 & average(ng) % avgsrf)
3613 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3614 IF (master) THEN
3615 WRITE (stdout,20) trim(vname(1,idsrad)), avg(ng)%Rindex
3616 END IF
3617 exit_flag=3
3618 ioerror=status
3619 RETURN
3620 END IF
3621 END IF
3622# endif
3623# endif
3624!
3625! Write out surface u-momentum stress.
3626!
3627 IF (aout(idusms,ng)) THEN
3628# ifdef ADJOINT
3629# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3630 defined opt_observations
3631 scale=1.0_dp/rho0
3632# else
3633 scale=1.0_dp
3634# endif
3635# else
3636 scale=rho0
3637# endif
3638 IF (avg(ng)%pioVar(idusms)%dkind.eq.pio_double) THEN
3639 iodesc => iodesc_dp_u2dvar(ng)
3640 ELSE
3641 iodesc => iodesc_sp_u2dvar(ng)
3642 END IF
3643 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idusms, &
3644 & avg(ng)%pioVar(idusms), &
3645 & avg(ng)%Rindex, &
3646 & iodesc, &
3647 & lbi, ubi, lbj, ubj, scale, &
3648# ifdef MASKING
3649 & grid(ng) % umask, &
3650# endif
3651 & average(ng) % avgsus)
3652 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3653 IF (master) THEN
3654 WRITE (stdout,20) trim(vname(1,idusms)), avg(ng)%Rindex
3655 END IF
3656 exit_flag=3
3657 ioerror=status
3658 RETURN
3659 END IF
3660 END IF
3661!
3662! Write out surface v-momentum stress.
3663!
3664 IF (aout(idvsms,ng)) THEN
3665# ifdef ADJOINT
3666# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3667 defined opt_observations
3668 scale=1.0_dp/rho0
3669# else
3670 scale=1.0_dp
3671# endif
3672# else
3673 scale=rho0
3674# endif
3675 IF (avg(ng)%pioVar(idvsms)%dkind.eq.pio_double) THEN
3676 iodesc => iodesc_dp_v2dvar(ng)
3677 ELSE
3678 iodesc => iodesc_sp_v2dvar(ng)
3679 END IF
3680 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvsms, &
3681 & avg(ng)%pioVar(idvsms), &
3682 & avg(ng)%Rindex, &
3683 & iodesc, &
3684 & lbi, ubi, lbj, ubj, scale, &
3685# ifdef MASKING
3686 & grid(ng) % vmask, &
3687# endif
3688 & average(ng) % avgsvs)
3689 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3690 IF (master) THEN
3691 WRITE (stdout,20) trim(vname(1,idvsms)), avg(ng)%Rindex
3692 END IF
3693 exit_flag=3
3694 ioerror=status
3695 RETURN
3696 END IF
3697 END IF
3698!
3699! Write out bottom u-momentum stress.
3700!
3701 IF (aout(idubms,ng)) THEN
3702# ifdef ADJOINT
3703# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3704 defined opt_observations
3705 scale=1.0_dp/rho0
3706# else
3707 scale=1.0_dp
3708# endif
3709# else
3710 scale=rho0
3711# endif
3712 IF (avg(ng)%pioVar(idubms)%dkind.eq.pio_double) THEN
3713 iodesc => iodesc_dp_u2dvar(ng)
3714 ELSE
3715 iodesc => iodesc_sp_u2dvar(ng)
3716 END IF
3717 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idubms, &
3718 & avg(ng)%pioVar(idubms), &
3719 & avg(ng)%Rindex, &
3720 & iodesc, &
3721 & lbi, ubi, lbj, ubj, scale, &
3722# ifdef MASKING
3723 & grid(ng) % umask, &
3724# endif
3725 & average(ng) % avgbus)
3726 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3727 IF (master) THEN
3728 WRITE (stdout,20) trim(vname(1,idubms)), avg(ng)%Rindex
3729 END IF
3730 exit_flag=3
3731 ioerror=status
3732 RETURN
3733 END IF
3734 END IF
3735!
3736! Write out bottom v-momentum stress.
3737!
3738 IF (aout(idvbms,ng)) THEN
3739# ifdef ADJOINT
3740# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3741 defined opt_observations
3742 scale=1.0_dp/rho0
3743# else
3744 scale=1.0_dp
3745# endif
3746# else
3747 scale=rho0
3748# endif
3749 IF (avg(ng)%pioVar(idvbms)%dkind.eq.pio_double) THEN
3750 iodesc => iodesc_dp_v2dvar(ng)
3751 ELSE
3752 iodesc => iodesc_sp_v2dvar(ng)
3753 END IF
3754 status=nf_fwrite2d(ng, model, avg(ng)%pioFile, idvbms, &
3755 & avg(ng)%pioVar(idvbms), &
3756 & avg(ng)%Rindex, &
3757 & iodesc, &
3758 & lbi, ubi, lbj, ubj, scale, &
3759# ifdef MASKING
3760 & grid(ng) % vmask, &
3761# endif
3762 & average(ng) % avgbvs)
3763 IF (founderror(status, nf90_noerr, __line__, myfile)) THEN
3764 IF (master) THEN
3765 WRITE (stdout,20) trim(vname(1,idvbms)), avg(ng)%Rindex
3766 END IF
3767 exit_flag=3
3768 ioerror=status
3769 RETURN
3770 END IF
3771 END IF
3772
3773# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
3774!
3775!-----------------------------------------------------------------------
3776! Write out the bottom boundary layer model or waves variables.
3777!-----------------------------------------------------------------------
3778!
3779 CALL bbl_wrt_pio (ng, model, tile, &
3780 & lbi, ubi, lbj, ubj, &
3781 & aout, avg)
3782 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3783# endif
3784
3785# if defined ICE_MODEL && defined SOLVE3D
3786!
3787!-----------------------------------------------------------------------
3788! Write out the sea-ice model variables.
3789!-----------------------------------------------------------------------
3790!
3791 CALL ice_wrt_pio (ng, model, tile, &
3792 & lbi, ubi, lbj, ubj, &
3793 & aout, avg)
3794 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3795# endif
3796
3797# if defined SEDIMENT && defined SOLVE3D
3798!
3799!-----------------------------------------------------------------------
3800! Write out the sediment model variables.
3801!-----------------------------------------------------------------------
3802!
3803 CALL sediment_wrt_pio (ng, model, tile, &
3804 & lbi, ubi, lbj, ubj, &
3805 & aout, avg)
3806 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3807# endif
3808
3809# if defined WEC_VF && defined SOLVE3D
3810!
3811!-----------------------------------------------------------------------
3812! Write out the Waves Effect on Current variables.
3813!-----------------------------------------------------------------------
3814!
3815 CALL wec_wrt_pio (ng, model, tile, &
3816 & lbi, ubi, lbj, ubj, &
3817 & aout, avg)
3818 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3819# endif
3820!
3821!-----------------------------------------------------------------------
3822! Synchronize time-average NetCDF file to disk to allow other processes
3823! to access data immediately after it is written.
3824!-----------------------------------------------------------------------
3825!
3826 CALL pio_netcdf_sync (ng, model, avg(ng)%name, avg(ng)%pioFile)
3827 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3828!
3829 10 FORMAT (2x,'WRT_AVG_PIO - writing averaged',t42,'fields',t61,&
3830# ifdef NESTING
3831 & 'in record = ',i0,t92,i2.2)
3832# else
3833 & 'in record = ',i0)
3834# endif
3835 20 FORMAT (/,' WRT_AVG_PIO - error while writing variable: ',a, &
3836 & /,16x,'into averages NetCDF file for time record: ',i0)
3837!
3838 RETURN
type(io_desc_t), dimension(:), pointer iodesc_sp_w3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_p3dvar
subroutine, public pio_netcdf_sync(ng, model, ncname, piofile)
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_p2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_w3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_p3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_p2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dvar

References mod_ncparam::aout, mod_average::average, mod_iounits::avg, mod_scalars::avgtime, bbl_output_mod::bbl_wrt_pio(), mod_scalars::cp, mod_scalars::exit_flag, strings_mod::founderror(), mod_grid::grid, mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, mod_ncparam::idfsud, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idhuav, mod_ncparam::idhvav, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idrain, mod_ncparam::idsdif, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idtair, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtrcd, mod_ncparam::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2dd, mod_ncparam::idu2de, mod_ncparam::idu3dd, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubms, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::idv2av, mod_ncparam::idv2dd, mod_ncparam::idv2dn, mod_ncparam::idv3dd, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbms, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idwvel, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_pio_netcdf::iodesc_dp_p2dvar, mod_pio_netcdf::iodesc_dp_p3dvar, mod_pio_netcdf::iodesc_dp_r2dvar, mod_pio_netcdf::iodesc_dp_r3dvar, mod_pio_netcdf::iodesc_dp_u2dvar, mod_pio_netcdf::iodesc_dp_u3dvar, mod_pio_netcdf::iodesc_dp_v2dvar, mod_pio_netcdf::iodesc_dp_v3dvar, mod_pio_netcdf::iodesc_dp_w3dvar, mod_pio_netcdf::iodesc_sp_p2dvar, mod_pio_netcdf::iodesc_sp_p3dvar, mod_pio_netcdf::iodesc_sp_r2dvar, mod_pio_netcdf::iodesc_sp_r3dvar, mod_pio_netcdf::iodesc_sp_u2dvar, mod_pio_netcdf::iodesc_sp_u3dvar, mod_pio_netcdf::iodesc_sp_v2dvar, mod_pio_netcdf::iodesc_sp_v3dvar, mod_pio_netcdf::iodesc_sp_w3dvar, mod_iounits::ioerror, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_param::nat, mod_scalars::noerror, mod_param::nt, mod_pio_netcdf::pio_netcdf_sync(), mod_scalars::rho0, sediment_output_mod::sediment_wrt_pio(), mod_iounits::sourcefile, mod_iounits::stdout, mod_tides::tides, and mod_ncparam::vname.

Referenced by wrt_avg().

Here is the call graph for this function:
Here is the caller graph for this function: