130
131
133
134
135
136 integer, intent(in) :: ng, model, tile
137 integer, intent(in) :: LBi, UBi, LBj, UBj
138
139
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
152
153
154 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
155
156
157
158
159# if defined WRITE_WATER && defined MASKING
160 gfactor=-1
161# else
162 gfactor=1
163# endif
164
165
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
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
180
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1811
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)