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

Data Types

type  t_average
 

Functions/Subroutines

subroutine, public allocate_average (ng, lbi, ubi, lbj, ubj)
 
subroutine, public deallocate_average (ng)
 
subroutine, public initialize_average (ng, tile)
 

Variables

type(t_average), dimension(:), allocatable average
 

Function/Subroutine Documentation

◆ allocate_average()

subroutine, public mod_average::allocate_average ( integer, intent(in) ng,
integer, intent(in) lbi,
integer, intent(in) ubi,
integer, intent(in) lbj,
integer, intent(in) ubj )

Definition at line 355 of file mod_average.F.

356!
357!=======================================================================
358! !
359! This routine allocates all variables in the module for all nested !
360! grids. !
361! !
362!=======================================================================
363!
364 USE mod_param
365 USE mod_ncparam
366 USE mod_scalars
367!
368! Imported variable declarations.
369!
370 integer, intent(in) :: ng, LBi, UBi, LBj, UBj
371!
372! Local variable declarations.
373!
374 real(r8) :: size2d
375!
376!-----------------------------------------------------------------------
377! Allocate module variables.
378!-----------------------------------------------------------------------
379!
380 IF (ng.eq.1 ) allocate ( average(ngrids) )
381!
382! Set horizontal array size.
383!
384 size2d=real((ubi-lbi+1)*(ubj-lbj+1),r8)
385!
386! Time-averaged state variables.
387!
388 IF (aout(idfsur,ng)) THEN
389 allocate ( average(ng) % avgzeta(lbi:ubi,lbj:ubj) )
390 dmem(ng)=dmem(ng)+size2d
391 END IF
392
393 IF (aout(idubar,ng)) THEN
394 allocate ( average(ng) % avgu2d(lbi:ubi,lbj:ubj) )
395 dmem(ng)=dmem(ng)+size2d
396 END IF
397 IF (aout(idvbar,ng)) THEN
398 allocate ( average(ng) % avgv2d(lbi:ubi,lbj:ubj) )
399 dmem(ng)=dmem(ng)+size2d
400 END IF
401
402 IF (aout(idu2de,ng)) THEN
403 allocate ( average(ng) % avgu2dE(lbi:ubi,lbj:ubj) )
404 dmem(ng)=dmem(ng)+size2d
405 END IF
406 IF (aout(idv2dn,ng)) THEN
407 allocate ( average(ng) % avgv2dN(lbi:ubi,lbj:ubj) )
408 dmem(ng)=dmem(ng)+size2d
409 END IF
410
411# ifdef SOLVE3D
412 IF (aout(iduvel,ng)) THEN
413 allocate ( average(ng) % avgu3d(lbi:ubi,lbj:ubj,n(ng)) )
414 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
415 END IF
416 IF (aout(idvvel,ng)) THEN
417 allocate ( average(ng) % avgv3d(lbi:ubi,lbj:ubj,n(ng)) )
418 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
419 END IF
420
421 IF (aout(idu3de,ng)) THEN
422 allocate ( average(ng) % avgu3dE(lbi:ubi,lbj:ubj,n(ng)) )
423 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
424 END IF
425 IF (aout(idv3dn,ng)) THEN
426 allocate ( average(ng) % avgv3dN(lbi:ubi,lbj:ubj,n(ng)) )
427 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
428 END IF
429
430 IF (aout(idovel,ng)) THEN
431 allocate ( average(ng) % avgw3d(lbi:ubi,lbj:ubj,0:n(ng)) )
432 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
433 END IF
434 IF (aout(idwvel,ng)) THEN
435 allocate ( average(ng) % avgwvel(lbi:ubi,lbj:ubj,0:n(ng)) )
436 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
437 END IF
438
439 IF (aout(iddano,ng)) THEN
440 allocate ( average(ng) % avgrho(lbi:ubi,lbj:ubj,n(ng)) )
441 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
442 END IF
443 IF (any(aout(idtvar(:),ng))) THEN
444 allocate ( average(ng) % avgt(lbi:ubi,lbj:ubj,n(ng),nt(ng)) )
445 dmem(ng)=dmem(ng)+real(n(ng)*nt(ng),r8)*size2d
446 END IF
447
448# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
449 IF (aout(idvvis,ng)) THEN
450 allocate ( average(ng) % avgAKv(lbi:ubi,lbj:ubj,0:n(ng)) )
451 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
452 END IF
453 IF (aout(idtdif,ng)) THEN
454 allocate ( average(ng) % avgAKt(lbi:ubi,lbj:ubj,0:n(ng)) )
455 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
456 END IF
457# ifdef SALINITY
458 IF (aout(idsdif,ng)) THEN
459 allocate ( average(ng) % avgAKs(lbi:ubi,lbj:ubj,0:n(ng)) )
460 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
461 END IF
462# endif
463# endif
464# ifdef LMD_SKPP
465 IF (aout(idhsbl,ng)) THEN
466 allocate ( average(ng) % avghsbl(lbi:ubi,lbj:ubj) )
467 dmem(ng)=dmem(ng)+size2d
468 END IF
469# endif
470# ifdef LMD_BKPP
471 IF (aout(idhbbl,ng)) THEN
472 allocate ( average(ng) % avghbbl(lbi:ubi,lbj:ubj) )
473 dmem(ng)=dmem(ng)+size2d
474 END IF
475# endif
476# endif
477
478# if defined FORWARD_WRITE && defined SOLVE3D
479!
480! Time-averaged 2D/3D coupling terms.
481!
482 IF (aout(idufx1,ng)) THEN
483 allocate ( average(ng) % avgDU_avg1(lbi:ubi,lbj:ubj) )
484 dmem(ng)=dmem(ng)+size2d
485 END IF
486 IF (aout(idufx2,ng)) THEN
487 allocate ( average(ng) % avgDU_avg2(lbi:ubi,lbj:ubj) )
488 dmem(ng)=dmem(ng)+size2d
489 END IF
490
491 IF (aout(idvfx1,ng)) THEN
492 allocate ( average(ng) % avgDV_avg1(lbi:ubi,lbj:ubj) )
493 dmem(ng)=dmem(ng)+size2d
494 END IF
495 IF (aout(idvfx2,ng)) THEN
496 allocate ( average(ng) % avgDV_avg2(lbi:ubi,lbj:ubj) )
497 dmem(ng)=dmem(ng)+size2d
498 END IF
499# endif
500!
501! Time-averaged surface and bottom fluxes.
502!
503 IF (aout(idusms,ng)) THEN
504 allocate ( average(ng) % avgsus(lbi:ubi,lbj:ubj) )
505 dmem(ng)=dmem(ng)+size2d
506 END IF
507 IF (aout(idvsms,ng)) THEN
508 allocate ( average(ng) % avgsvs(lbi:ubi,lbj:ubj) )
509 dmem(ng)=dmem(ng)+size2d
510 END IF
511
512 IF (aout(idubms,ng)) THEN
513 allocate ( average(ng) % avgbus(lbi:ubi,lbj:ubj) )
514 dmem(ng)=dmem(ng)+size2d
515 END IF
516 IF (aout(idvbms,ng)) THEN
517 allocate ( average(ng) % avgbvs(lbi:ubi,lbj:ubj) )
518 dmem(ng)=dmem(ng)+size2d
519 END IF
520
521# ifdef BBL_MODEL
522 IF (aout(idubrs,ng)) THEN
523 allocate ( average(ng) % avgUbrs(lbi:ubi,lbj:ubj) )
524 dmem(ng)=dmem(ng)+size2d
525 END IF
526 IF (aout(idvbrs,ng)) THEN
527 allocate ( average(ng) % avgVbrs(lbi:ubi,lbj:ubj) )
528 dmem(ng)=dmem(ng)+size2d
529 END IF
530 IF (aout(idubws,ng)) THEN
531 allocate ( average(ng) % avgUbws(lbi:ubi,lbj:ubj) )
532 dmem(ng)=dmem(ng)+size2d
533 END IF
534 IF (aout(idvbws,ng)) THEN
535 allocate ( average(ng) % avgVbws(lbi:ubi,lbj:ubj) )
536 dmem(ng)=dmem(ng)+size2d
537 END IF
538 IF (aout(idubcs,ng)) THEN
539 allocate ( average(ng) % avgUbcs(lbi:ubi,lbj:ubj) )
540 dmem(ng)=dmem(ng)+size2d
541 END IF
542 IF (aout(idvbcs,ng)) THEN
543 allocate ( average(ng) % avgVbcs(lbi:ubi,lbj:ubj) )
544 dmem(ng)=dmem(ng)+size2d
545 END IF
546 IF (aout(iduvwc,ng)) THEN
547 allocate ( average(ng) % avgUVwc(lbi:ubi,lbj:ubj) )
548 dmem(ng)=dmem(ng)+size2d
549 END IF
550
551 IF (aout(idubot,ng)) THEN
552 allocate ( average(ng) % avgUbot(lbi:ubi,lbj:ubj) )
553 dmem(ng)=dmem(ng)+size2d
554 END IF
555 IF (aout(idvbot,ng)) THEN
556 allocate ( average(ng) % avgVbot(lbi:ubi,lbj:ubj) )
557 dmem(ng)=dmem(ng)+size2d
558 END IF
559 IF (aout(idubur,ng)) THEN
560 allocate ( average(ng) % avgUbur(lbi:ubi,lbj:ubj) )
561 dmem(ng)=dmem(ng)+size2d
562 END IF
563 IF (aout(idvbvr,ng)) THEN
564 allocate ( average(ng) % avgVbvr(lbi:ubi,lbj:ubj) )
565 dmem(ng)=dmem(ng)+size2d
566 END IF
567# endif
568
569# ifdef SOLVE3D
570# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
571 IF (aout(idpair,ng)) THEN
572 allocate ( average(ng) % avgPair(lbi:ubi,lbj:ubj) )
573 dmem(ng)=dmem(ng)+size2d
574 END IF
575# endif
576# ifdef BULK_FLUXES
577 IF (aout(idtair,ng)) THEN
578 allocate ( average(ng) % avgTair(lbi:ubi,lbj:ubj) )
579 dmem(ng)=dmem(ng)+size2d
580 END IF
581# endif
582# if defined BULK_FLUXES || defined ECOSIM
583 IF (aout(iduair,ng)) THEN
584 allocate ( average(ng) % avgUwind(lbi:ubi,lbj:ubj) )
585 dmem(ng)=dmem(ng)+size2d
586 END IF
587 IF (aout(idvair,ng)) THEN
588 allocate ( average(ng) % avgVwind(lbi:ubi,lbj:ubj) )
589 dmem(ng)=dmem(ng)+size2d
590 END IF
591
592 IF (aout(iduaie,ng)) THEN
593 allocate ( average(ng) % avgUwindE(lbi:ubi,lbj:ubj) )
594 dmem(ng)=dmem(ng)+size2d
595 END IF
596 IF (aout(idvain,ng)) THEN
597 allocate ( average(ng) % avgVwindN(lbi:ubi,lbj:ubj) )
598 dmem(ng)=dmem(ng)+size2d
599 END IF
600# endif
601 IF (aout(idtsur(itemp),ng)) THEN
602 allocate ( average(ng) % avgstf(lbi:ubi,lbj:ubj) )
603 dmem(ng)=dmem(ng)+size2d
604 END IF
605# ifdef SALINITY
606 IF (aout(idtsur(isalt),ng)) THEN
607 allocate ( average(ng) % avgswf(lbi:ubi,lbj:ubj) )
608 dmem(ng)=dmem(ng)+size2d
609 END IF
610# endif
611# ifdef SHORTWAVE
612 IF (aout(idsrad,ng)) THEN
613 allocate ( average(ng) % avgsrf(lbi:ubi,lbj:ubj) )
614 dmem(ng)=dmem(ng)+size2d
615 END IF
616# endif
617# if defined BULK_FLUXES || defined FRC_COUPLING
618 IF (aout(idlhea,ng)) THEN
619 allocate ( average(ng) % avglhf(lbi:ubi,lbj:ubj) )
620 dmem(ng)=dmem(ng)+size2d
621 END IF
622 IF (aout(idlrad,ng)) THEN
623 allocate ( average(ng) % avglrf(lbi:ubi,lbj:ubj) )
624 dmem(ng)=dmem(ng)+size2d
625 END IF
626 IF (aout(idshea,ng)) THEN
627 allocate ( average(ng) % avgshf(lbi:ubi,lbj:ubj) )
628 dmem(ng)=dmem(ng)+size2d
629 END IF
630# endif
631# if defined BULK_FLUXES && defined EMINUSP
632 IF (aout(idevap,ng)) THEN
633 allocate ( average(ng) % avgevap(lbi:ubi,lbj:ubj) )
634 dmem(ng)=dmem(ng)+size2d
635 END IF
636 IF (aout(idrain,ng)) THEN
637 allocate ( average(ng) % avgrain(lbi:ubi,lbj:ubj) )
638 dmem(ng)=dmem(ng)+size2d
639 END IF
640# endif
641# endif
642
643# ifdef WEC
644!
645! Time-averaged Waves Effects on Currents.
646!
647 IF (aout(idu2sd,ng)) THEN
648 allocate ( average(ng) % avgu2Sd(lbi:ubi,lbj:ubj) )
649 dmem(ng)=dmem(ng)+size2d
650 END IF
651 IF (aout(idv2sd,ng)) THEN
652 allocate ( average(ng) % avgv2Sd(lbi:ubi,lbj:ubj) )
653 dmem(ng)=dmem(ng)+size2d
654 END IF
655
656 IF (aout(idu2rs,ng)) THEN
657 allocate ( average(ng) % avgu2rs(lbi:ubi,lbj:ubj) )
658 dmem(ng)=dmem(ng)+size2d
659 END IF
660 IF (aout(idv2rs,ng)) THEN
661 allocate ( average(ng) % avgv2rs(lbi:ubi,lbj:ubj) )
662 dmem(ng)=dmem(ng)+size2d
663 END IF
664
665 IF (aout(idwztw,ng)) THEN
666 allocate ( average(ng) % avgWztw(lbi:ubi,lbj:ubj) )
667 dmem(ng)=dmem(ng)+size2d
668 END IF
669 IF (aout(idwqsp,ng)) THEN
670 allocate ( average(ng) % avgWqsp(lbi:ubi,lbj:ubj) )
671 dmem(ng)=dmem(ng)+size2d
672 END IF
673 IF (aout(idwbeh,ng)) THEN
674 allocate ( average(ng) % avgWbeh(lbi:ubi,lbj:ubj) )
675 dmem(ng)=dmem(ng)+size2d
676 END IF
677
678# ifdef SOLVE3D
679 IF (aout(idu3sd,ng)) THEN
680 allocate ( average(ng) % avgu3Sd(lbi:ubi,lbj:ubj,n(ng)) )
681 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
682 END IF
683 IF (aout(idv3sd,ng)) THEN
684 allocate ( average(ng) % avgv3Sd(lbi:ubi,lbj:ubj,n(ng)) )
685 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
686 END IF
687 IF (aout(idw3sd,ng)) THEN
688 allocate ( average(ng) % avgW3Sd(lbi:ubi,lbj:ubj,0:n(ng)) )
689 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
690 END IF
691 IF (aout(idw3st,ng)) THEN
692 allocate ( average(ng) % avgW3St(lbi:ubi,lbj:ubj,0:n(ng)) )
693 dmem(ng)=dmem(ng)+real(n(ng)+1,r8)*size2d
694 END IF
695 IF (aout(idu3rs,ng)) THEN
696 allocate ( average(ng) % avgu3rs(lbi:ubi,lbj:ubj,n(ng)) )
697 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
698 END IF
699 IF (aout(idv3rs,ng)) THEN
700 allocate ( average(ng) % avgv3rs(lbi:ubi,lbj:ubj,n(ng)) )
701 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
702 END IF
703# endif
704# endif
705
706# ifdef WAVES_HEIGHT
707 IF (aout(idwamp,ng)) THEN
708 allocate ( average(ng) % avgWamp(lbi:ubi,lbj:ubj) )
709 dmem(ng)=dmem(ng)+size2d
710 END IF
711 IF (aout(idwam2,ng)) THEN
712 allocate ( average(ng) % avgWam2(lbi:ubi,lbj:ubj) )
713 dmem(ng)=dmem(ng)+size2d
714 END IF
715# endif
716
717# ifdef WAVES_LENGTH
718 IF (aout(idwlen,ng)) THEN
719 allocate ( average(ng) % avgWlen(lbi:ubi,lbj:ubj) )
720 dmem(ng)=dmem(ng)+size2d
721 END IF
722# endif
723
724# ifdef WAVES_LENGTHP
725 IF (aout(idwlep,ng)) THEN
726 allocate ( average(ng) % avgWlep(lbi:ubi,lbj:ubj) )
727 dmem(ng)=dmem(ng)+size2d
728 END IF
729# endif
730
731# ifdef WAVES_DIR
732 IF (aout(idwdir,ng)) THEN
733 allocate ( average(ng) % avgWdir(lbi:ubi,lbj:ubj) )
734 dmem(ng)=dmem(ng)+size2d
735 END IF
736# endif
737
738# ifdef WAVES_DIRP
739 IF (aout(idwdip,ng)) THEN
740 allocate ( average(ng) % avgWdip(lbi:ubi,lbj:ubj) )
741 dmem(ng)=dmem(ng)+size2d
742 END IF
743# endif
744
745# ifdef WAVES_TOP_PERIOD
746 IF (aout(idwptp,ng)) THEN
747 allocate ( average(ng) % avgWptp(lbi:ubi,lbj:ubj) )
748 dmem(ng)=dmem(ng)+size2d
749 END IF
750# endif
751
752# ifdef WAVES_BOT_PERIOD
753 IF (aout(idwpbt,ng)) THEN
754 allocate ( average(ng) % avgWpbt(lbi:ubi,lbj:ubj) )
755 dmem(ng)=dmem(ng)+size2d
756 END IF
757# endif
758
759# if defined BBL_MODEL || defined BEDLOAD_VANDERA || \
760 defined wav_coupling
761 IF (aout(idworb,ng)) THEN
762 allocate ( average(ng) % avgWorb(lbi:ubi,lbj:ubj) )
763 dmem(ng)=dmem(ng)+size2d
764 END IF
765# endif
766
767# if (defined BOTTOM_STREAMING && defined WEC_VF) || \
768 defined wav_coupling
769 IF (aout(idwdif,ng)) THEN
770 allocate ( average(ng) % avgWdif(lbi:ubi,lbj:ubj) )
771 dmem(ng)=dmem(ng)+size2d
772 END IF
773# endif
774
775# if defined TKE_WAVEDISS || defined WAV_COUPLING || \
776 defined wdiss_thorguza || defined wdiss_churthor || \
777 defined waves_diss || defined wdiss_inwave
778 IF (aout(idwdib,ng)) THEN
779 allocate ( average(ng) % avgWdib(lbi:ubi,lbj:ubj) )
780 dmem(ng)=dmem(ng)+size2d
781 END IF
782 IF (aout(idwdiw,ng)) THEN
783 allocate ( average(ng) % avgWdiw(lbi:ubi,lbj:ubj) )
784 dmem(ng)=dmem(ng)+size2d
785 END IF
786# endif
787
788# ifdef ROLLER_SVENDSEN
789 IF (aout(idwbrk,ng)) THEN
790 allocate ( average(ng) % avgWbrk(lbi:ubi,lbj:ubj) )
791 dmem(ng)=dmem(ng)+size2d
792 END IF
793# endif
794
795# ifdef WEC_ROLLER
796 IF (aout(idwdis,ng)) THEN
797 allocate ( average(ng) % avgWdis(lbi:ubi,lbj:ubj) )
798 dmem(ng)=dmem(ng)+size2d
799 END IF
800 IF (aout(idwrol,ng)) THEN
801 allocate ( average(ng) % avgWrol(lbi:ubi,lbj:ubj) )
802 dmem(ng)=dmem(ng)+size2d
803 END IF
804# endif
805
806# ifdef UV_KIRBY
807 IF (aout(iduwav,ng)) THEN
808 allocate ( average(ng) % avgUwav(lbi:ubi,lbj:ubj) )
809 dmem(ng)=dmem(ng)+size2d
810 END IF
811 IF (aout(idvwav,ng)) THEN
812 allocate ( average(ng) % avgVwav(lbi:ubi,lbj:ubj) )
813 dmem(ng)=dmem(ng)+size2d
814 END IF
815# endif
816!
817! Time-averaged quadratic fields.
818!
819 IF (aout(idzzav,ng)) THEN
820 allocate ( average(ng) % avgU2(lbi:ubi,lbj:ubj) )
821 dmem(ng)=dmem(ng)+size2d
822 END IF
823 IF (aout(idu2av,ng)) THEN
824 allocate ( average(ng) % avgV2(lbi:ubi,lbj:ubj) )
825 dmem(ng)=dmem(ng)+size2d
826 END IF
827 IF (aout(idv2av,ng)) THEN
828 allocate ( average(ng) % avgZZ(lbi:ubi,lbj:ubj) )
829 dmem(ng)=dmem(ng)+size2d
830 END IF
831
832# ifdef SOLVE3D
833 IF (aout(iduuav,ng)) THEN
834 allocate ( average(ng) % avgUU(lbi:ubi,lbj:ubj,n(ng)) )
835 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
836 END IF
837 IF (aout(idvvav,ng)) THEN
838 allocate ( average(ng) % avgVV(lbi:ubi,lbj:ubj,n(ng)) )
839 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
840 END IF
841 IF (aout(iduvav,ng)) THEN
842 allocate ( average(ng) % avgUV(lbi:ubi,lbj:ubj,n(ng)) )
843 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
844 END IF
845
846 IF (aout(idhuav,ng)) THEN
847 allocate ( average(ng) % avgHuon(lbi:ubi,lbj:ubj,n(ng)) )
848 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
849 END IF
850 IF (aout(idhvav,ng)) THEN
851 allocate ( average(ng) % avgHvom(lbi:ubi,lbj:ubj,n(ng)) )
852 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
853 END IF
854
855 IF (any(aout(idttav(:),ng))) THEN
856 allocate ( average(ng) % avgTT(lbi:ubi,lbj:ubj,n(ng),nt(ng)) )
857 dmem(ng)=dmem(ng)+real(n(ng)*nt(ng),r8)*size2d
858 END IF
859 IF (any(aout(idutav(:),ng))) THEN
860 allocate ( average(ng) % avgUT(lbi:ubi,lbj:ubj,n(ng),nt(ng)) )
861 dmem(ng)=dmem(ng)+real(n(ng)*nt(ng),r8)*size2d
862 END IF
863 IF (any(aout(idvtav(:),ng))) THEN
864 allocate ( average(ng) % avgVT(lbi:ubi,lbj:ubj,n(ng),nt(ng)) )
865 dmem(ng)=dmem(ng)+real(n(ng)*nt(ng),r8)*size2d
866 END IF
867
868 IF (any(aout(ihutav(:),ng))) THEN
869 allocate ( average(ng)% avgHuonT(lbi:ubi,lbj:ubj,n(ng),nt(ng)) )
870 dmem(ng)=dmem(ng)+real(n(ng)*nt(ng),r8)*size2d
871 END IF
872 IF (any(aout(ihvtav(:),ng))) THEN
873 allocate ( average(ng)% avgHvomT(lbi:ubi,lbj:ubj,n(ng),nt(ng)) )
874 dmem(ng)=dmem(ng)+real(n(ng)*nt(ng),r8)*size2d
875 END IF
876# endif
877!
878! Time-averaged vorticity fields.
879!
880 IF (aout(id2dpv,ng)) THEN
881 allocate ( average(ng) % avgpvor2d(lbi:ubi,lbj:ubj) )
882 dmem(ng)=dmem(ng)+size2d
883 END IF
884 IF (aout(id2drv,ng)) THEN
885 allocate ( average(ng) % avgrvor2d(lbi:ubi,lbj:ubj) )
886 dmem(ng)=dmem(ng)+size2d
887 END IF
888
889# ifdef SOLVE3D
890 IF (aout(id3dpv,ng)) THEN
891 allocate ( average(ng) % avgpvor3d(lbi:ubi,lbj:ubj,n(ng)) )
892 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
893 END IF
894 IF (aout(id3drv,ng)) THEN
895 allocate ( average(ng) % avgrvor3d(lbi:ubi,lbj:ubj,n(ng)) )
896 dmem(ng)=dmem(ng)+real(n(ng),r8)*size2d
897 END IF
898# endif
899!
900 RETURN
integer iddano
integer idvair
integer idwqsp
integer, dimension(:), allocatable idttav
integer idevap
integer idvbrs
integer, dimension(:), allocatable ihvtav
integer idzzav
integer idu2av
integer idv2rs
integer iduvwc
integer idwdis
integer idwdif
integer idv3sd
integer idubar
integer idwvel
integer idvvel
integer idubur
integer, dimension(:), allocatable ihutav
integer idhsbl
integer idvsms
integer idwlen
integer idwdiw
integer, dimension(:), allocatable idutav
integer idvbvr
integer idpair
integer id3dpv
integer idwlep
integer idw3st
integer idu2rs
integer idv2dn
integer idvbot
integer idsdif
integer idvfx2
integer id3drv
integer idwrol
integer, dimension(:), allocatable idtsur
integer id2drv
integer idvain
integer idtdif
integer idfsur
integer idwbrk
integer, dimension(:), allocatable idtvar
integer idhbbl
integer idvbws
integer idvfx1
integer idufx2
integer iduwav
integer idvbms
integer iduair
integer iduvel
integer idhuav
integer idv3dn
integer idhvav
integer idovel
integer idv3rs
integer idvvav
integer idwam2
integer idu3rs
integer idshea
integer idlrad
integer idwdip
integer idv2av
integer idusms
integer idvbcs
integer idwbeh
integer idwamp
integer idwdir
integer idvvis
integer idwptp
integer idu3de
integer idwdib
integer, dimension(:), allocatable idvtav
integer id2dpv
integer idv2sd
integer idubcs
integer idufx1
integer idu2de
integer idlhea
integer idubot
integer idrain
integer idubms
integer idubrs
integer idsrad
integer idubws
integer iduuav
integer idwpbt
integer idworb
integer idu3sd
integer idu2sd
integer iduaie
integer idvwav
integer idtair
logical, dimension(:,:), allocatable aout
integer idw3sd
integer iduvav
integer idwztw
integer idvbar
integer, dimension(:), allocatable n
Definition mod_param.F:479
real(r8), dimension(:), allocatable dmem
Definition mod_param.F:137
integer ngrids
Definition mod_param.F:113
integer, dimension(:), allocatable nt
Definition mod_param.F:489
integer isalt
integer itemp

References mod_ncparam::aout, average, mod_param::dmem, mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, 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::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2de, mod_ncparam::idu2rs, mod_ncparam::idu2sd, mod_ncparam::idu3de, mod_ncparam::idu3rs, mod_ncparam::idu3sd, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubcs, mod_ncparam::idubms, mod_ncparam::idubot, mod_ncparam::idubrs, mod_ncparam::idubur, mod_ncparam::idubws, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::iduvwc, mod_ncparam::iduwav, mod_ncparam::idv2av, mod_ncparam::idv2dn, mod_ncparam::idv2rs, mod_ncparam::idv2sd, mod_ncparam::idv3dn, mod_ncparam::idv3rs, mod_ncparam::idv3sd, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbcs, mod_ncparam::idvbms, mod_ncparam::idvbot, mod_ncparam::idvbrs, mod_ncparam::idvbvr, mod_ncparam::idvbws, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwav, mod_ncparam::idw3sd, mod_ncparam::idw3st, mod_ncparam::idwam2, mod_ncparam::idwamp, mod_ncparam::idwbeh, mod_ncparam::idwbrk, mod_ncparam::idwdib, mod_ncparam::idwdif, mod_ncparam::idwdip, mod_ncparam::idwdir, mod_ncparam::idwdis, mod_ncparam::idwdiw, mod_ncparam::idwlen, mod_ncparam::idwlep, mod_ncparam::idworb, mod_ncparam::idwpbt, mod_ncparam::idwptp, mod_ncparam::idwqsp, mod_ncparam::idwrol, mod_ncparam::idwvel, mod_ncparam::idwztw, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_scalars::isalt, mod_scalars::itemp, mod_param::n, mod_param::ngrids, mod_param::nt, and mod_kinds::r8.

Referenced by mod_arrays::roms_allocate_arrays().

Here is the caller graph for this function:

◆ deallocate_average()

subroutine, public mod_average::deallocate_average ( integer, intent(in) ng)

Definition at line 903 of file mod_average.F.

904!
905!=======================================================================
906! !
907! This routine deallocates all variables in the module for all nested !
908! grids. !
909! !
910!=======================================================================
911!
912 USE mod_param
913 USE mod_ncparam
914 USE mod_scalars
915
916# ifdef SUBOBJECT_DEALLOCATION
917!
918 USE destroy_mod, ONLY : destroy
919# endif
920!
921! Imported variable declarations.
922!
923 integer, intent(in) :: ng
924!
925! Local variable declarations.
926!
927 character (len=*), parameter :: MyFile = &
928 & __FILE__//", deallocate_average"
929
930
931# ifdef SUBOBJECT_DEALLOCATION
932!
933!-----------------------------------------------------------------------
934! Deallocate each variable in the derived-type T_AVERAGE structure
935! separately.
936!-----------------------------------------------------------------------
937!
938! Time-averaged state variables.
939!
940 IF (aout(idfsur,ng)) THEN
941 IF (.not.destroy(ng, average(ng)%avgzeta, myfile, &
942 & __line__, 'AVERAGE(ng)%avgzeta')) RETURN
943 END IF
944
945 IF (aout(idubar,ng)) THEN
946 IF (.not.destroy(ng, average(ng)%avgu2d, myfile, &
947 & __line__, 'AVERAGE(ng)%avgu2d')) RETURN
948 END IF
949
950 IF (aout(idvbar,ng)) THEN
951 IF (.not.destroy(ng, average(ng)%avgv2d, myfile, &
952 & __line__, 'AVERAGE(ng)%avgv2d')) RETURN
953 END IF
954
955 IF (aout(idu2de,ng)) THEN
956 IF (.not.destroy(ng, average(ng)%avgu2dE, myfile, &
957 & __line__, 'AVERAGE(ng)%avgu2dE')) RETURN
958 END IF
959
960 IF (aout(idv2dn,ng)) THEN
961 IF (.not.destroy(ng, average(ng)%avgv2dN, myfile, &
962 & __line__, 'AVERAGE(ng)%avgv2dN')) RETURN
963 END IF
964
965# ifdef SOLVE3D
966 IF (aout(iduvel,ng)) THEN
967 IF (.not.destroy(ng, average(ng)%avgu3d, myfile, &
968 & __line__, 'AVERAGE(ng)%avgu3d')) RETURN
969 END IF
970
971 IF (aout(idvvel,ng)) THEN
972 IF (.not.destroy(ng, average(ng)%avgv3d, myfile, &
973 & __line__, 'AVERAGE(ng)%avgv3d')) RETURN
974 END IF
975
976 IF (aout(idu3de,ng)) THEN
977 IF (.not.destroy(ng, average(ng)%avgu3dE, myfile, &
978 & __line__, 'AVERAGE(ng)%avgu3dE')) RETURN
979 END IF
980
981 IF (aout(idv3dn,ng)) THEN
982 IF (.not.destroy(ng, average(ng)%avgv3dN, myfile, &
983 & __line__, 'AVERAGE(ng)%avgv3dN')) RETURN
984 END IF
985
986 IF (aout(idovel,ng)) THEN
987 IF (.not.destroy(ng, average(ng)%avgw3d, myfile, &
988 & __line__, 'AVERAGE(ng)%avgw3d')) RETURN
989 END IF
990
991 IF (aout(idwvel,ng)) THEN
992 IF (.not.destroy(ng, average(ng)%avgwvel, myfile, &
993 & __line__, 'AVERAGE(ng)%avgwvel')) RETURN
994 END IF
995
996 IF (aout(iddano,ng)) THEN
997 IF (.not.destroy(ng, average(ng)%avgrho, myfile, &
998 & __line__, 'AVERAGE(ng)%avgrho')) RETURN
999 END IF
1000
1001 IF (any(aout(idtvar(:),ng))) THEN
1002 IF (.not.destroy(ng, average(ng)%avgt, myfile, &
1003 & __line__, 'AVERAGE(ng)%avgt')) RETURN
1004 END IF
1005
1006# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1007 IF (aout(idvvis,ng)) THEN
1008 IF (.not.destroy(ng, average(ng)%avgAKv, myfile, &
1009 & __line__, 'AVERAGE(ng)%avgAKv')) RETURN
1010 END IF
1011
1012 IF (aout(idtdif,ng)) THEN
1013 IF (.not.destroy(ng, average(ng)%avgAKt, myfile, &
1014 & __line__, 'AVERAGE(ng)%avgAKt')) RETURN
1015 END IF
1016
1017 IF (aout(idsdif,ng)) THEN
1018 IF (.not.destroy(ng, average(ng)%avgAKs, myfile, &
1019 & __line__, 'AVERAGE(ng)%avgAKs')) RETURN
1020 END IF
1021# endif
1022
1023# ifdef LMD_SKPP
1024 IF (aout(idhsbl,ng)) THEN
1025 IF (.not.destroy(ng, average(ng)%avghsbl, myfile, &
1026 & __line__, 'AVERAGE(ng)%avghsbl')) RETURN
1027 END IF
1028# endif
1029
1030# ifdef LMD_BKPP
1031 IF (aout(idhbbl,ng)) THEN
1032 IF (.not.destroy(ng, average(ng)%avghbbl, myfile, &
1033 & __line__, 'AVERAGE(ng)%avghbbl')) RETURN
1034 END IF
1035# endif
1036# endif
1037
1038# if defined FORWARD_WRITE && defined SOLVE3D
1039!
1040! Time-averaged 2D/3D coupling terms.
1041!
1042 IF (aout(idufx1,ng)) THEN
1043 IF (.not.destroy(ng, average(ng)%avgDU_avg1, myfile, &
1044 & __line__, 'AVERAGE(ng)%avgDU_avg1')) RETURN
1045 END IF
1046
1047 IF (aout(idufx2,ng)) THEN
1048 IF (.not.destroy(ng, average(ng)%avgDU_avg2, myfile, &
1049 & __line__, 'AVERAGE(ng)%avgDU_avg2')) RETURN
1050 END IF
1051
1052 IF (aout(idvfx1,ng)) THEN
1053 IF (.not.destroy(ng, average(ng)%avgDV_avg1, myfile, &
1054 & __line__, 'AVERAGE(ng)%avgDV_avg1')) RETURN
1055 END IF
1056
1057 IF (aout(idvfx2,ng)) THEN
1058 IF (.not.destroy(ng, average(ng)%avgDV_avg2, myfile, &
1059 & __line__, 'AVERAGE(ng)%avgDV_avg2')) RETURN
1060 END IF
1061# endif
1062!
1063! Time-averaged surface and bottom fluxes.
1064!
1065 IF (aout(idusms,ng)) THEN
1066 IF (.not.destroy(ng, average(ng)%avgsus, myfile, &
1067 & __line__, 'AVERAGE(ng)%avgsus')) RETURN
1068 END IF
1069
1070 IF (aout(idvsms,ng)) THEN
1071 IF (.not.destroy(ng, average(ng)%avgsvs, myfile, &
1072 & __line__, 'AVERAGE(ng)%avgsvs')) RETURN
1073 END IF
1074
1075 IF (aout(idubms,ng)) THEN
1076 IF (.not.destroy(ng, average(ng)%avgbus, myfile, &
1077 & __line__, 'AVERAGE(ng)%avgbus')) RETURN
1078 END IF
1079
1080 IF (aout(idvbms,ng)) THEN
1081 IF (.not.destroy(ng, average(ng)%avgbvs, myfile, &
1082 & __line__, 'AVERAGE(ng)%avgbvs')) RETURN
1083 END IF
1084
1085# ifdef BBL_MODEL
1086 IF (aout(idubrs,ng)) THEN
1087 IF (.not.destroy(ng, average(ng)%avgUbrs, myfile, &
1088 & __line__, 'AVERAGE(ng)%avgUbrs')) RETURN
1089 END IF
1090
1091 IF (aout(idvbrs,ng)) THEN
1092 IF (.not.destroy(ng, average(ng)%avgVbrs, myfile, &
1093 & __line__, 'AVERAGE(ng)%avgVbrs')) RETURN
1094 END IF
1095
1096 IF (aout(idubws,ng)) THEN
1097 IF (.not.destroy(ng, average(ng)%avgUbws, myfile, &
1098 & __line__, 'AVERAGE(ng)%avgUbws')) RETURN
1099 END IF
1100
1101 IF (aout(idvbws,ng)) THEN
1102 IF (.not.destroy(ng, average(ng)%avgVbws, myfile, &
1103 & __line__, 'AVERAGE(ng)%avgVbws')) RETURN
1104 END IF
1105
1106 IF (aout(idubcs,ng)) THEN
1107 IF (.not.destroy(ng, average(ng)%avgUbcs, myfile, &
1108 & __line__, 'AVERAGE(ng)%avgUbcs')) RETURN
1109 END IF
1110
1111 IF (aout(idvbcs,ng)) THEN
1112 IF (.not.destroy(ng, average(ng)%avgVbcs, myfile, &
1113 & __line__, 'AVERAGE(ng)%avgVbcs')) RETURN
1114 END IF
1115
1116 IF (aout(iduvwc,ng)) THEN
1117 IF (.not.destroy(ng, average(ng)%avgUVwc, myfile, &
1118 & __line__, 'AVERAGE(ng)%avgUVwc')) RETURN
1119 END IF
1120
1121 IF (aout(idubot,ng)) THEN
1122 IF (.not.destroy(ng, average(ng)%avgUbot, myfile, &
1123 & __line__, 'AVERAGE(ng)%avgUbot')) RETURN
1124 END IF
1125
1126 IF (aout(idvbot,ng)) THEN
1127 IF (.not.destroy(ng, average(ng)%avgVbot, myfile, &
1128 & __line__, 'AVERAGE(ng)%avgVbot')) RETURN
1129 END IF
1130
1131 IF (aout(idubur,ng)) THEN
1132 IF (.not.destroy(ng, average(ng)%avgUbur, myfile, &
1133 & __line__, 'AVERAGE(ng)%avgUbur')) RETURN
1134 END IF
1135
1136 IF (aout(idvbvr,ng)) THEN
1137 IF (.not.destroy(ng, average(ng)%avgVbvr, myfile, &
1138 & __line__, 'AVERAGE(ng)%avgVbvr')) RETURN
1139 END IF
1140# endif
1141
1142# ifdef SOLVE3D
1143
1144# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1145 IF (aout(idpair,ng)) THEN
1146 IF (.not.destroy(ng, average(ng)%avgPair, myfile, &
1147 & __line__, 'AVERAGE(ng)%avgPair')) RETURN
1148 END IF
1149# endif
1150
1151# ifdef BULK_FLUXES
1152 IF (aout(idtair,ng)) THEN
1153 IF (.not.destroy(ng, average(ng)%avgTair, myfile, &
1154 & __line__, 'AVERAGE(ng)%avgTair')) RETURN
1155 END IF
1156# endif
1157
1158# if defined BULK_FLUXES || defined ECOSIM
1159 IF (aout(iduair,ng)) THEN
1160 IF (.not.destroy(ng, average(ng)%avgUwind, myfile, &
1161 & __line__, 'AVERAGE(ng)%avgUwind')) RETURN
1162 END IF
1163
1164 IF (aout(idvair,ng)) THEN
1165 IF (.not.destroy(ng, average(ng)%avgVwind, myfile, &
1166 & __line__, 'AVERAGE(ng)%avgVwind')) RETURN
1167 END IF
1168
1169 IF (aout(iduaie,ng)) THEN
1170 IF (.not.destroy(ng, average(ng)%avgUwindE, myfile, &
1171 & __line__, 'AVERAGE(ng)%avgUwindE')) RETURN
1172 END IF
1173 IF (aout(idvain,ng)) THEN
1174 IF (.not.destroy(ng, average(ng)%avgVwindN, myfile, &
1175 & __line__, 'AVERAGE(ng)%avgVwindN')) RETURN
1176 END IF
1177# endif
1178
1179 IF (aout(idtsur(itemp),ng)) THEN
1180 IF (.not.destroy(ng, average(ng)%avgstf, myfile, &
1181 & __line__, 'AVERAGE(ng)%avgstf')) RETURN
1182 END IF
1183
1184# ifdef SALINITY
1185 IF (aout(idtsur(isalt),ng)) THEN
1186 IF (.not.destroy(ng, average(ng)%avgswf, myfile, &
1187 & __line__, 'AVERAGE(ng)%avgswf')) RETURN
1188 END IF
1189# endif
1190
1191# ifdef SHORTWAVE
1192 IF (aout(idsrad,ng)) THEN
1193 IF (.not.destroy(ng, average(ng)%avgsrf, myfile, &
1194 & __line__, 'AVERAGE(ng)%avgsrf')) RETURN
1195 END IF
1196# endif
1197
1198# if defined BULK_FLUXES || defined FRC_COUPLING
1199 IF (aout(idlhea,ng)) THEN
1200 IF (.not.destroy(ng, average(ng)%avglhf, myfile, &
1201 & __line__, 'AVERAGE(ng)%avglhf')) RETURN
1202 END IF
1203
1204 IF (aout(idlrad,ng)) THEN
1205 IF (.not.destroy(ng, average(ng)%avglrf, myfile, &
1206 & __line__, 'AVERAGE(ng)%avglrf')) RETURN
1207 END IF
1208
1209 IF (aout(idshea,ng)) THEN
1210 IF (.not.destroy(ng, average(ng)%avgshf, myfile, &
1211 & __line__, 'AVERAGE(ng)%avgshf')) RETURN
1212 END IF
1213# endif
1214
1215# if defined BULK_FLUXES && defined EMINUSP
1216 IF (aout(idevap,ng)) THEN
1217 IF (.not.destroy(ng, average(ng)%avgevap, myfile, &
1218 & __line__, 'AVERAGE(ng)%avgevap')) RETURN
1219 END IF
1220
1221 IF (aout(idrain,ng)) THEN
1222 IF (.not.destroy(ng, average(ng)%avgrain, myfile, &
1223 & __line__, 'AVERAGE(ng)%avgrain')) RETURN
1224 END IF
1225# endif
1226# endif
1227
1228# ifdef WEC
1229!
1230! Time-averaged Waves Effects on Currents.
1231!
1232 IF (aout(idu2sd,ng)) THEN
1233 IF (.not.destroy(ng, average(ng)%avgu2Sd, myfile, &
1234 & __line__, 'AVERAGE(ng)%avgu2Sd')) RETURN
1235 END IF
1236
1237 IF (aout(idv2sd,ng)) THEN
1238 IF (.not.destroy(ng, average(ng)%avgv2Sd, myfile, &
1239 & __line__, 'AVERAGE(ng)%avgv2Sd')) RETURN
1240 END IF
1241
1242 IF (aout(idu2rs,ng)) THEN
1243 IF (.not.destroy(ng, average(ng)%avgu2RS, myfile, &
1244 & __line__, 'AVERAGE(ng)%avgu2RS')) RETURN
1245 END IF
1246
1247 IF (aout(idv2rs,ng)) THEN
1248 IF (.not.destroy(ng, average(ng)%avgv2RS, myfile, &
1249 & __line__, 'AVERAGE(ng)%avgv2RS')) RETURN
1250 END IF
1251
1252 IF (aout(idwztw,ng)) THEN
1253 IF (.not.destroy(ng, average(ng)%avgWztw, myfile, &
1254 & __line__, 'AVERAGE(ng)%avgWztw')) RETURN
1255 END IF
1256 IF (aout(idwqsp,ng)) THEN
1257 IF (.not.destroy(ng, average(ng)%avgWqsp, myfile, &
1258 & __line__, 'AVERAGE(ng)%avgWqsp')) RETURN
1259 END IF
1260 IF (aout(idwbeh,ng)) THEN
1261 IF (.not.destroy(ng, average(ng)%avgWbeh, myfile, &
1262 & __line__, 'AVERAGE(ng)%avgWbeh')) RETURN
1263 END IF
1264
1265# ifdef SOLVE3D
1266 IF (aout(idu3sd,ng)) THEN
1267 IF (.not.destroy(ng, average(ng)%avgu3Sd, myfile, &
1268 & __line__, 'AVERAGE(ng)%avgu3Sd')) RETURN
1269 END IF
1270
1271 IF (aout(idv3sd,ng)) THEN
1272 IF (.not.destroy(ng, average(ng)%avgv3Sd, myfile, &
1273 & __line__, 'AVERAGE(ng)%avgv3Sd')) RETURN
1274 END IF
1275 IF (aout(idw3sd,ng)) THEN
1276 IF (.not.destroy(ng, average(ng)%avgW3Sd, myfile, &
1277 & __line__, 'AVERAGE(ng)%avgW3Sd')) RETURN
1278 END IF
1279 IF (aout(idw3st,ng)) THEN
1280 IF (.not.destroy(ng, average(ng)%avgW3St, myfile, &
1281 & __line__, 'AVERAGE(ng)%avgW3St')) RETURN
1282 END IF
1283 IF (aout(idu3rs,ng)) THEN
1284 IF (.not.destroy(ng, average(ng)%avgu3RS, myfile, &
1285 & __line__, 'AVERAGE(ng)%avgu3RS')) RETURN
1286 END IF
1287
1288 IF (aout(idv3rs,ng)) THEN
1289 IF (.not.destroy(ng, average(ng)%avgv3RS, myfile, &
1290 & __line__, 'AVERAGE(ng)%avgv3RS')) RETURN
1291 END IF
1292# endif
1293# endif
1294
1295# ifdef WAVES_HEIGHT
1296 IF (aout(idwamp,ng)) THEN
1297 IF (.not.destroy(ng, average(ng)%avgWamp, myfile, &
1298 & __line__, 'AVERAGE(ng)%avgWamp')) RETURN
1299 END IF
1300
1301 IF (aout(idwam2,ng)) THEN
1302 IF (.not.destroy(ng, average(ng)%avgWam2, myfile, &
1303 & __line__, 'AVERAGE(ng)%avgWam2')) RETURN
1304 END IF
1305# endif
1306
1307# ifdef WAVES_LENGTH
1308 IF (aout(idwlen,ng)) THEN
1309 IF (.not.destroy(ng, average(ng)%avgWlen, myfile, &
1310 & __line__, 'AVERAGE(ng)%avgWlen')) RETURN
1311 END IF
1312# endif
1313
1314# ifdef WAVES_LENGTHP
1315 IF (aout(idwlep,ng)) THEN
1316 IF (.not.destroy(ng, average(ng)%avgWlep, myfile, &
1317 & __line__, 'AVERAGE(ng)%avgWlep')) RETURN
1318 END IF
1319# endif
1320
1321# ifdef WAVES_DIR
1322 IF (aout(idwdir,ng)) THEN
1323 IF (.not.destroy(ng, average(ng)%avgWdir, myfile, &
1324 & __line__, 'AVERAGE(ng)%avgWdir')) RETURN
1325 END IF
1326# endif
1327
1328# ifdef WAVES_DIRP
1329 IF (aout(idwdip,ng)) THEN
1330 IF (.not.destroy(ng, average(ng)%avgWdip, myfile, &
1331 & __line__, 'AVERAGE(ng)%avgWdip')) RETURN
1332 END IF
1333# endif
1334
1335# ifdef WAVES_TOP_PERIOD
1336 IF (aout(idwptp,ng)) THEN
1337 IF (.not.destroy(ng, average(ng)%avgWptp, myfile, &
1338 & __line__, 'AVERAGE(ng)%avgWptp')) RETURN
1339 END IF
1340# endif
1341
1342# ifdef WAVES_BOT_PERIOD
1343 IF (aout(idwpbt,ng)) THEN
1344 IF (.not.destroy(ng, average(ng)%avgWpbt, myfile, &
1345 & __line__, 'AVERAGE(ng)%avgWpbt')) RETURN
1346 END IF
1347# endif
1348
1349# if defined BBL_MODEL || defined BEDLOAD_VANDERA || \
1350 defined wav_coupling
1351 IF (aout(idworb,ng)) THEN
1352 IF (.not.destroy(ng, average(ng)%avgWorb, myfile, &
1353 & __line__, 'AVERAGE(ng)%avgWorb')) RETURN
1354 END IF
1355# endif
1356
1357# if (defined BOTTOM_STREAMING && defined WEC_VF) || \
1358 defined wav_coupling
1359 IF (aout(idwdif,ng)) THEN
1360 IF (.not.destroy(ng, average(ng)%avgWdif, myfile, &
1361 & __line__, 'AVERAGE(ng)%avgWdif')) RETURN
1362 END IF
1363# endif
1364
1365# if defined TKE_WAVEDISS || defined WAV_COUPLING || \
1366 defined wdiss_thorguza || defined wdiss_churthor || \
1367 defined waves_diss || defined wdiss_inwave
1368 IF (aout(idwdib,ng)) THEN
1369 IF (.not.destroy(ng, average(ng)%avgWdib, myfile, &
1370 & __line__, 'AVERAGE(ng)%avgWdib')) RETURN
1371 END IF
1372
1373 IF (aout(idwdiw,ng)) THEN
1374 IF (.not.destroy(ng, average(ng)%avgWdiw, myfile, &
1375 & __line__, 'AVERAGE(ng)%avgWdiw')) RETURN
1376 END IF
1377# endif
1378
1379# ifdef ROLLER_SVENDSEN
1380 IF (aout(idwbrk,ng)) THEN
1381 IF (.not.destroy(ng, average(ng)%avgWbrk, myfile, &
1382 & __line__, 'AVERAGE(ng)%avgWbrk')) RETURN
1383 END IF
1384# endif
1385
1386# ifdef WEC_ROLLER
1387 IF (aout(idwdis,ng)) THEN
1388 IF (.not.destroy(ng, average(ng)%avgWdis, myfile, &
1389 & __line__, 'AVERAGE(ng)%avgWdis')) RETURN
1390 END IF
1391
1392 IF (aout(idwrol,ng)) THEN
1393 IF (.not.destroy(ng, average(ng)%avgWrol, myfile, &
1394 & __line__, 'AVERAGE(ng)%avgWrol')) RETURN
1395 END IF
1396# endif
1397
1398# ifdef UV_KIRBY
1399 IF (aout(iduwav,ng)) THEN
1400 IF (.not.destroy(ng, average(ng)%avgUwav, myfile, &
1401 & __line__, 'AVERAGE(ng)%avgUwav')) RETURN
1402 END IF
1403
1404 IF (aout(idvwav,ng)) THEN
1405 IF (.not.destroy(ng, average(ng)%avgVwav, myfile, &
1406 & __line__, 'AVERAGE(ng)%avgVwav')) RETURN
1407 END IF
1408# endif
1409!
1410! Time-averaged quadratic fields.
1411!
1412 IF (aout(idzzav,ng)) THEN
1413 IF (.not.destroy(ng, average(ng)%avgU2, myfile, &
1414 & __line__, 'AVERAGE(ng)%avgU2')) RETURN
1415 END IF
1416
1417 IF (aout(idu2av,ng)) THEN
1418 IF (.not.destroy(ng, average(ng)%avgV2, myfile, &
1419 & __line__, 'AVERAGE(ng)%avgV2')) RETURN
1420 END IF
1421
1422 IF (aout(idv2av,ng)) THEN
1423 IF (.not.destroy(ng, average(ng)%avgZZ, myfile, &
1424 & __line__, 'AVERAGE(ng)%avgZZ')) RETURN
1425 END IF
1426
1427# ifdef SOLVE3D
1428 IF (aout(iduuav,ng)) THEN
1429 IF (.not.destroy(ng, average(ng)%avgUU, myfile, &
1430 & __line__, 'AVERAGE(ng)%avgUU')) RETURN
1431 END IF
1432
1433 IF (aout(idvvav,ng)) THEN
1434 IF (.not.destroy(ng, average(ng)%avgVV, myfile, &
1435 & __line__, 'AVERAGE(ng)%avgVV')) RETURN
1436 END IF
1437
1438 IF (aout(iduvav,ng)) THEN
1439 IF (.not.destroy(ng, average(ng)%avgUV, myfile, &
1440 & __line__, 'AVERAGE(ng)%avgUV')) RETURN
1441 END IF
1442
1443 IF (aout(idhuav,ng)) THEN
1444 IF (.not.destroy(ng, average(ng)%avgHuon, myfile, &
1445 & __line__, 'AVERAGE(ng)%avgHuon')) RETURN
1446 END IF
1447
1448 IF (aout(idhvav,ng)) THEN
1449 IF (.not.destroy(ng, average(ng)%avgHvom, myfile, &
1450 & __line__, 'AVERAGE(ng)%avgHvom')) RETURN
1451 END IF
1452
1453 IF (any(aout(idttav(:),ng))) THEN
1454 IF (.not.destroy(ng, average(ng)%avgTT, myfile, &
1455 & __line__, 'AVERAGE(ng)%avgTT')) RETURN
1456 END IF
1457
1458 IF (any(aout(idutav(:),ng))) THEN
1459 IF (.not.destroy(ng, average(ng)%avgUT, myfile, &
1460 & __line__, 'AVERAGE(ng)%avgUT')) RETURN
1461 END IF
1462
1463 IF (any(aout(idvtav(:),ng))) THEN
1464 IF (.not.destroy(ng, average(ng)%avgVT, myfile, &
1465 & __line__, 'AVERAGE(ng)%avgVT')) RETURN
1466 END IF
1467
1468 IF (any(aout(ihutav(:),ng))) THEN
1469 IF (.not.destroy(ng, average(ng)%avgHuonT, myfile, &
1470 & __line__, 'AVERAGE(ng)%avgHuonT')) RETURN
1471 END IF
1472
1473 IF (any(aout(ihvtav(:),ng))) THEN
1474 IF (.not.destroy(ng, average(ng)%avgHvomT, myfile, &
1475 & __line__, 'AVERAGE(ng)%avgHvomT')) RETURN
1476 END IF
1477# endif
1478!
1479! Time-averaged vorticity fields.
1480!
1481 IF (aout(id2dpv,ng)) THEN
1482 IF (.not.destroy(ng, average(ng)%avgpvor2d, myfile, &
1483 & __line__, 'AVERAGE(ng)%avgpvor2d')) RETURN
1484 END IF
1485
1486 IF (aout(id2drv,ng)) THEN
1487 IF (.not.destroy(ng, average(ng)%avgrvor2d, myfile, &
1488 & __line__, 'AVERAGE(ng)%avgrvor2d')) RETURN
1489 END IF
1490
1491# ifdef SOLVE3D
1492 IF (aout(id3dpv,ng)) THEN
1493 IF (.not.destroy(ng, average(ng)%avgpvor3d, myfile, &
1494 & __line__, 'AVERAGE(ng)%avgpvor3d')) RETURN
1495 END IF
1496
1497 IF (aout(id3drv,ng)) THEN
1498 IF (.not.destroy(ng, average(ng)%avgrvor3d, myfile, &
1499 & __line__, 'AVERAGE(ng)%avgrvor3d')) RETURN
1500 END IF
1501# endif
1502# endif
1503!
1504!-----------------------------------------------------------------------
1505! Deallocate derived-type AVERAGE structure.
1506!-----------------------------------------------------------------------
1507!
1508 IF (ng.eq.ngrids) THEN
1509 IF (allocated(average)) deallocate ( average )
1510 END IF
1511!
1512 RETURN

References mod_ncparam::aout, average, mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, 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::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2de, mod_ncparam::idu2rs, mod_ncparam::idu2sd, mod_ncparam::idu3de, mod_ncparam::idu3rs, mod_ncparam::idu3sd, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubcs, mod_ncparam::idubms, mod_ncparam::idubot, mod_ncparam::idubrs, mod_ncparam::idubur, mod_ncparam::idubws, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::iduvwc, mod_ncparam::iduwav, mod_ncparam::idv2av, mod_ncparam::idv2dn, mod_ncparam::idv2rs, mod_ncparam::idv2sd, mod_ncparam::idv3dn, mod_ncparam::idv3rs, mod_ncparam::idv3sd, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbcs, mod_ncparam::idvbms, mod_ncparam::idvbot, mod_ncparam::idvbrs, mod_ncparam::idvbvr, mod_ncparam::idvbws, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwav, mod_ncparam::idw3sd, mod_ncparam::idw3st, mod_ncparam::idwam2, mod_ncparam::idwamp, mod_ncparam::idwbeh, mod_ncparam::idwbrk, mod_ncparam::idwdib, mod_ncparam::idwdif, mod_ncparam::idwdip, mod_ncparam::idwdir, mod_ncparam::idwdis, mod_ncparam::idwdiw, mod_ncparam::idwlen, mod_ncparam::idwlep, mod_ncparam::idworb, mod_ncparam::idwpbt, mod_ncparam::idwptp, mod_ncparam::idwqsp, mod_ncparam::idwrol, mod_ncparam::idwvel, mod_ncparam::idwztw, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_scalars::isalt, mod_scalars::itemp, and mod_param::ngrids.

Referenced by mod_arrays::roms_deallocate_arrays().

Here is the caller graph for this function:

◆ initialize_average()

subroutine, public mod_average::initialize_average ( integer, intent(in) ng,
integer, intent(in) tile )

Definition at line 1515 of file mod_average.F.

1516!
1517!=======================================================================
1518! !
1519! This routine initialize all variables in the module using first !
1520! touch distribution policy. In shared-memory configuration, this !
1521! operation actually performs propagation of the "shared arrays" !
1522! across the cluster, unless another policy is specified to !
1523! override the default. !
1524! !
1525!=======================================================================
1526!
1527 USE mod_param
1528 USE mod_ncparam
1529 USE mod_scalars
1530!
1531! Imported variable declarations.
1532!
1533 integer, intent(in) :: ng, tile
1534!
1535! Local variable declarations.
1536!
1537 integer :: Imin, Imax, Jmin, Jmax
1538 integer :: i, j
1539# ifdef SOLVE3D
1540 integer :: itrc, k
1541# endif
1542
1543 real(r8), parameter :: IniVal = 0.0_r8
1544
1545# include "set_bounds.h"
1546!
1547! Set array initialization range.
1548!
1549# ifdef DISTRIBUTE
1550 imin=bounds(ng)%LBi(tile)
1551 imax=bounds(ng)%UBi(tile)
1552 jmin=bounds(ng)%LBj(tile)
1553 jmax=bounds(ng)%UBj(tile)
1554# else
1555 IF (domain(ng)%Western_Edge(tile)) THEN
1556 imin=bounds(ng)%LBi(tile)
1557 ELSE
1558 imin=istr
1559 END IF
1560 IF (domain(ng)%Eastern_Edge(tile)) THEN
1561 imax=bounds(ng)%UBi(tile)
1562 ELSE
1563 imax=iend
1564 END IF
1565 IF (domain(ng)%Southern_Edge(tile)) THEN
1566 jmin=bounds(ng)%LBj(tile)
1567 ELSE
1568 jmin=jstr
1569 END IF
1570 IF (domain(ng)%Northern_Edge(tile)) THEN
1571 jmax=bounds(ng)%UBj(tile)
1572 ELSE
1573 jmax=jend
1574 END IF
1575# endif
1576!
1577!-----------------------------------------------------------------------
1578! Initialize module variables.
1579!-----------------------------------------------------------------------
1580!
1581! Time-averaged state variables.
1582!
1583 IF (aout(idfsur,ng)) THEN
1584 DO j=jmin,jmax
1585 DO i=imin,imax
1586 average(ng) % avgzeta(i,j) = inival
1587 END DO
1588 END DO
1589 END IF
1590
1591 IF (aout(idubar,ng)) THEN
1592 DO j=jmin,jmax
1593 DO i=imin,imax
1594 average(ng) % avgu2d(i,j) = inival
1595 END DO
1596 END DO
1597 END IF
1598 IF (aout(idvbar,ng)) THEN
1599 DO j=jmin,jmax
1600 DO i=imin,imax
1601 average(ng) % avgv2d(i,j) = inival
1602 END DO
1603 END DO
1604 END IF
1605
1606 IF (aout(idu2de,ng)) THEN
1607 DO j=jmin,jmax
1608 DO i=imin,imax
1609 average(ng) % avgu2dE(i,j) = inival
1610 END DO
1611 END DO
1612 END IF
1613 IF (aout(idv2dn,ng)) THEN
1614 DO j=jmin,jmax
1615 DO i=imin,imax
1616 average(ng) % avgv2dN(i,j) = inival
1617 END DO
1618 END DO
1619 END IF
1620
1621# ifdef SOLVE3D
1622 IF (aout(iduvel,ng)) THEN
1623 DO k=1,n(ng)
1624 DO j=jmin,jmax
1625 DO i=imin,imax
1626 average(ng) % avgu3d(i,j,k) = inival
1627 END DO
1628 END DO
1629 END DO
1630 END IF
1631
1632 IF (aout(idvvel,ng)) THEN
1633 DO k=1,n(ng)
1634 DO j=jmin,jmax
1635 DO i=imin,imax
1636 average(ng) % avgv3d(i,j,k) = inival
1637 END DO
1638 END DO
1639 END DO
1640 END IF
1641
1642 IF (aout(idu3de,ng)) THEN
1643 DO k=1,n(ng)
1644 DO j=jmin,jmax
1645 DO i=imin,imax
1646 average(ng) % avgu3dE(i,j,k) = inival
1647 END DO
1648 END DO
1649 END DO
1650 END IF
1651 IF (aout(idv3dn,ng)) THEN
1652 DO k=1,n(ng)
1653 DO j=jmin,jmax
1654 DO i=imin,imax
1655 average(ng) % avgv3dN(i,j,k) = inival
1656 END DO
1657 END DO
1658 END DO
1659 END IF
1660
1661 IF (aout(idovel,ng)) THEN
1662 DO k=0,n(ng)
1663 DO j=jmin,jmax
1664 DO i=imin,imax
1665 average(ng) % avgw3d(i,j,k) = inival
1666 END DO
1667 END DO
1668 END DO
1669 END IF
1670 IF (aout(idwvel,ng)) THEN
1671 DO k=0,n(ng)
1672 DO j=jmin,jmax
1673 DO i=imin,imax
1674 average(ng) % avgwvel(i,j,k) = inival
1675 END DO
1676 END DO
1677 END DO
1678 END IF
1679
1680 IF (aout(iddano,ng)) THEN
1681 DO k=1,n(ng)
1682 DO j=jmin,jmax
1683 DO i=imin,imax
1684 average(ng) % avgrho(i,j,k) = inival
1685 END DO
1686 END DO
1687 END DO
1688 END IF
1689 IF (any(aout(idtvar(:),ng))) THEN
1690 DO itrc=1,nt(ng)
1691 DO k=1,n(ng)
1692 DO j=jmin,jmax
1693 DO i=imin,imax
1694 average(ng) % avgt(i,j,k,itrc) = inival
1695 END DO
1696 END DO
1697 END DO
1698 END DO
1699 END IF
1700
1701# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1702 IF (aout(idvvis,ng)) THEN
1703 DO k=0,n(ng)
1704 DO j=jmin,jmax
1705 DO i=imin,imax
1706 average(ng) % avgAKv(i,j,k) = inival
1707 END DO
1708 END DO
1709 END DO
1710 END IF
1711
1712 IF (aout(idtdif,ng)) THEN
1713 DO k=0,n(ng)
1714 DO j=jmin,jmax
1715 DO i=imin,imax
1716 average(ng) % avgAKt(i,j,k) = inival
1717 END DO
1718 END DO
1719 END DO
1720 END IF
1721
1722# ifdef SALINITY
1723 IF (aout(idsdif,ng)) THEN
1724 DO k=0,n(ng)
1725 DO j=jmin,jmax
1726 DO i=imin,imax
1727 average(ng) % avgAKs(i,j,k) = inival
1728 END DO
1729 END DO
1730 END DO
1731 END IF
1732# endif
1733# endif
1734
1735# ifdef LMD_SKPP
1736 IF (aout(idhsbl,ng)) THEN
1737 DO j=jmin,jmax
1738 DO i=imin,imax
1739 average(ng) % avghsbl(i,j) = inival
1740 END DO
1741 END DO
1742 END IF
1743# endif
1744
1745# ifdef LMD_BKPP
1746 IF (aout(idhbbl,ng)) THEN
1747 DO j=jmin,jmax
1748 DO i=imin,imax
1749 average(ng) % avghbbl(i,j) = inival
1750 END DO
1751 END DO
1752 END IF
1753# endif
1754# endif
1755
1756# if defined FORWARD_WRITE && defined SOLVE3D
1757!
1758! Time-averaged 2D/3D coupling terms.
1759!
1760 IF (aout(idufx1,ng)) THEN
1761 DO j=jmin,jmax
1762 DO i=imin,imax
1763 average(ng) % avgDU_avg1(i,j) = inival
1764 END DO
1765 END DO
1766 END IF
1767 IF (aout(idufx2,ng)) THEN
1768 DO j=jmin,jmax
1769 DO i=imin,imax
1770 average(ng) % avgDU_avg2(i,j) = inival
1771 END DO
1772 END DO
1773 END IF
1774
1775 IF (aout(idvfx1,ng)) THEN
1776 DO j=jmin,jmax
1777 DO i=imin,imax
1778 average(ng) % avgDV_avg1(i,j) = inival
1779 END DO
1780 END DO
1781 END IF
1782 IF (aout(idvfx2,ng)) THEN
1783 DO j=jmin,jmax
1784 DO i=imin,imax
1785 average(ng) % avgDV_avg2(i,j) = inival
1786 END DO
1787 END DO
1788 END IF
1789# endif
1790!
1791! Time-averaged surface and bottom fluxes.
1792!
1793 IF (aout(idusms,ng)) THEN
1794 DO j=jmin,jmax
1795 DO i=imin,imax
1796 average(ng) % avgsus(i,j) = inival
1797 END DO
1798 END DO
1799 END IF
1800 IF (aout(idvsms,ng)) THEN
1801 DO j=jmin,jmax
1802 DO i=imin,imax
1803 average(ng) % avgsvs(i,j) = inival
1804 END DO
1805 END DO
1806 END IF
1807
1808 IF (aout(idubms,ng)) THEN
1809 DO j=jmin,jmax
1810 DO i=imin,imax
1811 average(ng) % avgbus(i,j) = inival
1812 END DO
1813 END DO
1814 END IF
1815 IF (aout(idvbms,ng)) THEN
1816 DO j=jmin,jmax
1817 DO i=imin,imax
1818 average(ng) % avgbvs(i,j) = inival
1819 END DO
1820 END DO
1821 END IF
1822
1823# ifdef BBL_MODEL
1824 IF (aout(idubrs,ng)) THEN
1825 DO j=jmin,jmax
1826 DO i=imin,imax
1827 average(ng) % avgUbrs(i,j) = inival
1828 END DO
1829 END DO
1830 END IF
1831 IF (aout(idvbrs,ng)) THEN
1832 DO j=jmin,jmax
1833 DO i=imin,imax
1834 average(ng) % avgVbrs(i,j) = inival
1835 END DO
1836 END DO
1837 END IF
1838
1839 IF (aout(idubws,ng)) THEN
1840 DO j=jmin,jmax
1841 DO i=imin,imax
1842 average(ng) % avgUbws(i,j) = inival
1843 END DO
1844 END DO
1845 END IF
1846 IF (aout(idvbws,ng)) THEN
1847 DO j=jmin,jmax
1848 DO i=imin,imax
1849 average(ng) % avgVbws(i,j) = inival
1850 END DO
1851 END DO
1852 END IF
1853
1854 IF (aout(idubcs,ng)) THEN
1855 DO j=jmin,jmax
1856 DO i=imin,imax
1857 average(ng) % avgUbcs(i,j) = inival
1858 END DO
1859 END DO
1860 END IF
1861 IF (aout(idvbcs,ng)) THEN
1862 DO j=jmin,jmax
1863 DO i=imin,imax
1864 average(ng) % avgVbcs(i,j) = inival
1865 END DO
1866 END DO
1867 END IF
1868
1869 IF (aout(iduvwc,ng)) THEN
1870 DO j=jmin,jmax
1871 DO i=imin,imax
1872 average(ng) % avgUVwc(i,j) = inival
1873 END DO
1874 END DO
1875 END IF
1876
1877 IF (aout(idubot,ng)) THEN
1878 DO j=jmin,jmax
1879 DO i=imin,imax
1880 average(ng) % avgUbot(i,j) = inival
1881 END DO
1882 END DO
1883 END IF
1884 IF (aout(idvbot,ng)) THEN
1885 DO j=jmin,jmax
1886 DO i=imin,imax
1887 average(ng) % avgVbot(i,j) = inival
1888 END DO
1889 END DO
1890 END IF
1891
1892 IF (aout(idubur,ng)) THEN
1893 DO j=jmin,jmax
1894 DO i=imin,imax
1895 average(ng) % avgUbur(i,j) = inival
1896 END DO
1897 END DO
1898 END IF
1899 IF (aout(idvbvr,ng)) THEN
1900 DO j=jmin,jmax
1901 DO i=imin,imax
1902 average(ng) % avgVbvr(i,j) = inival
1903 END DO
1904 END DO
1905 END IF
1906# endif
1907
1908# ifdef SOLVE3D
1909# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1910 IF (aout(idpair,ng)) THEN
1911 DO j=jmin,jmax
1912 DO i=imin,imax
1913 average(ng) % avgPair(i,j) = inival
1914 END DO
1915 END DO
1916 END IF
1917# endif
1918
1919# ifdef BULK_FLUXES
1920 IF (aout(idtair,ng)) THEN
1921 DO j=jmin,jmax
1922 DO i=imin,imax
1923 average(ng) % avgTair(i,j) = inival
1924 END DO
1925 END DO
1926 END IF
1927# endif
1928
1929# if defined BULK_FLUXES || defined ECOSIM
1930 IF (aout(iduair,ng)) THEN
1931 DO j=jmin,jmax
1932 DO i=imin,imax
1933 average(ng) % avgUwind(i,j) = inival
1934 END DO
1935 END DO
1936 END IF
1937 IF (aout(idvair,ng)) THEN
1938 DO j=jmin,jmax
1939 DO i=imin,imax
1940 average(ng) % avgVwind(i,j) = inival
1941 END DO
1942 END DO
1943 END IF
1944
1945 IF (aout(iduaie,ng)) THEN
1946 DO j=jmin,jmax
1947 DO i=imin,imax
1948 average(ng) % avgUwindE(i,j) = inival
1949 END DO
1950 END DO
1951 END IF
1952 IF (aout(idvain,ng)) THEN
1953 DO j=jmin,jmax
1954 DO i=imin,imax
1955 average(ng) % avgVwindN(i,j) = inival
1956 END DO
1957 END DO
1958 END IF
1959# endif
1960
1961 IF (aout(idtsur(itemp),ng)) THEN
1962 DO j=jmin,jmax
1963 DO i=imin,imax
1964 average(ng) % avgstf(i,j) = inival
1965 END DO
1966 END DO
1967 END IF
1968
1969# ifdef SALINITY
1970 IF (aout(idtsur(isalt),ng)) THEN
1971 DO j=jmin,jmax
1972 DO i=imin,imax
1973 average(ng) % avgswf(i,j) = inival
1974 END DO
1975 END DO
1976 END IF
1977# endif
1978
1979# ifdef SHORTWAVE
1980 IF (aout(idsrad,ng)) THEN
1981 DO j=jmin,jmax
1982 DO i=imin,imax
1983 average(ng) % avgsrf(i,j) = inival
1984 END DO
1985 END DO
1986 END IF
1987# endif
1988
1989# if defined BULK_FLUXES || defined FRC_COUPLING
1990 IF (aout(idlhea,ng)) THEN
1991 DO j=jmin,jmax
1992 DO i=imin,imax
1993 average(ng) % avglhf(i,j) = inival
1994 END DO
1995 END DO
1996 END IF
1997
1998 IF (aout(idlrad,ng)) THEN
1999 DO j=jmin,jmax
2000 DO i=imin,imax
2001 average(ng) % avglrf(i,j) = inival
2002 END DO
2003 END DO
2004 END IF
2005
2006 IF (aout(idshea,ng)) THEN
2007 DO j=jmin,jmax
2008 DO i=imin,imax
2009 average(ng) % avgshf(i,j) = inival
2010 END DO
2011 END DO
2012 END IF
2013# endif
2014
2015# if defined BULK_FLUXES && defined EMINUSP
2016 IF (aout(idevap,ng)) THEN
2017 DO j=jmin,jmax
2018 DO i=imin,imax
2019 average(ng) % avgevap(i,j) = inival
2020 END DO
2021 END DO
2022 END IF
2023
2024 IF (aout(idrain,ng)) THEN
2025 DO j=jmin,jmax
2026 DO i=imin,imax
2027 average(ng) % avgrain(i,j) = inival
2028 END DO
2029 END DO
2030 END IF
2031# endif
2032# endif
2033
2034# ifdef WEC
2035!
2036! Time-averaged Waves Effects on Currents.
2037!
2038 IF (aout(idu2sd,ng)) THEN
2039 DO j=jmin,jmax
2040 DO i=imin,imax
2041 average(ng) % avgu2Sd(i,j) = inival
2042 END DO
2043 END DO
2044 END IF
2045 IF (aout(idv2sd,ng)) THEN
2046 DO j=jmin,jmax
2047 DO i=imin,imax
2048 average(ng) % avgv2Sd(i,j) = inival
2049 END DO
2050 END DO
2051 END IF
2052
2053 IF (aout(idu2rs,ng)) THEN
2054 DO j=jmin,jmax
2055 DO i=imin,imax
2056 average(ng) % avgu2rs(i,j) = inival
2057 END DO
2058 END DO
2059 END IF
2060 IF (aout(idv2rs,ng)) THEN
2061 DO j=jmin,jmax
2062 DO i=imin,imax
2063 average(ng) % avgv2rs(i,j) = inival
2064 END DO
2065 END DO
2066 END IF
2067
2068 IF (aout(idwztw,ng)) THEN
2069 DO j=jmin,jmax
2070 DO i=imin,imax
2071 average(ng) % avgWztw(i,j) = inival
2072 END DO
2073 END DO
2074 END IF
2075
2076 IF (aout(idwqsp,ng)) THEN
2077 DO j=jmin,jmax
2078 DO i=imin,imax
2079 average(ng) % avgWqsp(i,j) = inival
2080 END DO
2081 END DO
2082 END IF
2083
2084 IF (aout(idwbeh,ng)) THEN
2085 DO j=jmin,jmax
2086 DO i=imin,imax
2087 average(ng) % avgWbeh(i,j) = inival
2088 END DO
2089 END DO
2090 END IF
2091
2092# ifdef SOLVE3D
2093 IF (aout(idu3sd,ng)) THEN
2094 DO k=1,n(ng)
2095 DO j=jmin,jmax
2096 DO i=imin,imax
2097 average(ng) % avgu3Sd(i,j,k) = inival
2098 END DO
2099 END DO
2100 END DO
2101 END IF
2102 IF (aout(idv3sd,ng)) THEN
2103 DO k=1,n(ng)
2104 DO j=jmin,jmax
2105 DO i=imin,imax
2106 average(ng) % avgv3Sd(i,j,k) = inival
2107 END DO
2108 END DO
2109 END DO
2110 END IF
2111
2112 IF (aout(idw3sd,ng)) THEN
2113 DO k=0,n(ng)
2114 DO j=jmin,jmax
2115 DO i=imin,imax
2116 average(ng) % avgW3Sd(i,j,k) = inival
2117 END DO
2118 END DO
2119 END DO
2120 END IF
2121 IF (aout(idw3st,ng)) THEN
2122 DO k=0,n(ng)
2123 DO j=jmin,jmax
2124 DO i=imin,imax
2125 average(ng) % avgW3St(i,j,k) = inival
2126 END DO
2127 END DO
2128 END DO
2129 END IF
2130
2131 IF (aout(idu3rs,ng)) THEN
2132 DO k=1,n(ng)
2133 DO j=jmin,jmax
2134 DO i=imin,imax
2135 average(ng) % avgu3rs(i,j,k) = inival
2136 END DO
2137 END DO
2138 END DO
2139 END IF
2140 IF (aout(idv3rs,ng)) THEN
2141 DO k=1,n(ng)
2142 DO j=jmin,jmax
2143 DO i=imin,imax
2144 average(ng) % avgv3rs(i,j,k) = inival
2145 END DO
2146 END DO
2147 END DO
2148 END IF
2149# endif
2150# endif
2151
2152# ifdef WAVES_HEIGHT
2153 IF (aout(idwamp,ng)) THEN
2154 DO j=jmin,jmax
2155 DO i=imin,imax
2156 average(ng) % avgWamp(i,j) = inival
2157 END DO
2158 END DO
2159 END IF
2160
2161 IF (aout(idwam2,ng)) THEN
2162 DO j=jmin,jmax
2163 DO i=imin,imax
2164 average(ng) % avgWam2(i,j) = inival
2165 END DO
2166 END DO
2167 END IF
2168# endif
2169
2170# ifdef WAVES_LENGTH
2171 IF (aout(idwlen,ng)) THEN
2172 DO j=jmin,jmax
2173 DO i=imin,imax
2174 average(ng) % avgWlen(i,j) = inival
2175 END DO
2176 END DO
2177 END IF
2178# endif
2179
2180# ifdef WAVES_LENGTHP
2181 IF (aout(idwlep,ng)) THEN
2182 DO j=jmin,jmax
2183 DO i=imin,imax
2184 average(ng) % avgWlep(i,j) = inival
2185 END DO
2186 END DO
2187 END IF
2188# endif
2189
2190# ifdef WAVES_DIR
2191 IF (aout(idwdir,ng)) THEN
2192 DO j=jmin,jmax
2193 DO i=imin,imax
2194 average(ng) % avgWdir(i,j) = inival
2195 END DO
2196 END DO
2197 END IF
2198# endif
2199
2200# ifdef WAVES_DIRP
2201 IF (aout(idwdip,ng)) THEN
2202 DO j=jmin,jmax
2203 DO i=imin,imax
2204 average(ng) % avgWdip(i,j) = inival
2205 END DO
2206 END DO
2207 END IF
2208# endif
2209
2210# ifdef WAVES_TOP_PERIOD
2211 IF (aout(idwptp,ng)) THEN
2212 DO j=jmin,jmax
2213 DO i=imin,imax
2214 average(ng) % avgWptp(i,j) = inival
2215 END DO
2216 END DO
2217 END IF
2218# endif
2219
2220# ifdef WAVES_BOT_PERIOD
2221 IF (aout(idwpbt,ng)) THEN
2222 DO j=jmin,jmax
2223 DO i=imin,imax
2224 average(ng) % avgWpbt(i,j) = inival
2225 END DO
2226 END DO
2227 END IF
2228# endif
2229
2230# if defined BBL_MODEL || defined BEDLOAD_VANDERA || \
2231 defined wav_coupling
2232 IF (aout(idworb,ng)) THEN
2233 DO j=jmin,jmax
2234 DO i=imin,imax
2235 average(ng) % avgWorb(i,j) = inival
2236 END DO
2237 END DO
2238 END IF
2239# endif
2240
2241# if (defined BOTTOM_STREAMING && defined WEC_VF) || \
2242 defined wav_coupling
2243 IF (aout(idwdif,ng)) THEN
2244 DO j=jmin,jmax
2245 DO i=imin,imax
2246 average(ng) % avgWdif(i,j) = inival
2247 END DO
2248 END DO
2249 END IF
2250# endif
2251
2252# if defined TKE_WAVEDISS || defined WAV_COUPLING || \
2253 defined wdiss_thorguza || defined wdiss_churthor || \
2254 defined waves_diss || defined wdiss_inwave
2255 IF (aout(idwdib,ng)) THEN
2256 DO j=jmin,jmax
2257 DO i=imin,imax
2258 average(ng) % avgWdib(i,j) = inival
2259 END DO
2260 END DO
2261 END IF
2262
2263 IF (aout(idwdiw,ng)) THEN
2264 DO j=jmin,jmax
2265 DO i=imin,imax
2266 average(ng) % avgWdiw(i,j) = inival
2267 END DO
2268 END DO
2269 END IF
2270# endif
2271
2272# ifdef ROLLER_SVENDSEN
2273 IF (aout(idwbrk,ng)) THEN
2274 DO j=jmin,jmax
2275 DO i=imin,imax
2276 average(ng) % avgWbrk(i,j) = inival
2277 END DO
2278 END DO
2279 END IF
2280# endif
2281
2282# ifdef WEC_ROLLER
2283 IF (aout(idwdis,ng)) THEN
2284 DO j=jmin,jmax
2285 DO i=imin,imax
2286 average(ng) % avgWdis(i,j) = inival
2287 END DO
2288 END DO
2289 END IF
2290
2291 IF (aout(idwrol,ng)) THEN
2292 DO j=jmin,jmax
2293 DO i=imin,imax
2294 average(ng) % avgWrol(i,j) = inival
2295 END DO
2296 END DO
2297 END IF
2298# endif
2299
2300# ifdef UV_KIRBY
2301 IF (aout(iduwav,ng)) THEN
2302 DO j=jmin,jmax
2303 DO i=imin,imax
2304 average(ng) % avgUwav(i,j) = inival
2305 END DO
2306 END DO
2307 END IF
2308 IF (aout(idvwav,ng)) THEN
2309 DO j=jmin,jmax
2310 DO i=imin,imax
2311 average(ng) % avgVwav(i,j) = inival
2312 END DO
2313 END DO
2314 END IF
2315# endif
2316!
2317! Time-averaged quadratic fields.
2318!
2319 IF (aout(idzzav,ng)) THEN
2320 DO j=jmin,jmax
2321 DO i=imin,imax
2322 average(ng) % avgU2(i,j) = inival
2323 END DO
2324 END DO
2325 END IF
2326
2327 IF (aout(idu2av,ng)) THEN
2328 DO j=jmin,jmax
2329 DO i=imin,imax
2330 average(ng) % avgV2(i,j) = inival
2331 END DO
2332 END DO
2333 END IF
2334 IF (aout(idv2av,ng)) THEN
2335 DO j=jmin,jmax
2336 DO i=imin,imax
2337 average(ng) % avgZZ(i,j) = inival
2338 END DO
2339 END DO
2340 END IF
2341
2342# ifdef SOLVE3D
2343 IF (aout(iduuav,ng)) THEN
2344 DO k=1,n(ng)
2345 DO j=jmin,jmax
2346 DO i=imin,imax
2347 average(ng) % avgUU(i,j,k) = inival
2348 END DO
2349 END DO
2350 END DO
2351 END IF
2352 IF (aout(idvvav,ng)) THEN
2353 DO k=1,n(ng)
2354 DO j=jmin,jmax
2355 DO i=imin,imax
2356 average(ng) % avgVV(i,j,k) = inival
2357 END DO
2358 END DO
2359 END DO
2360 END IF
2361
2362 IF (aout(iduvav,ng)) THEN
2363 DO k=1,n(ng)
2364 DO j=jmin,jmax
2365 DO i=imin,imax
2366 average(ng) % avgUV(i,j,k) = inival
2367 END DO
2368 END DO
2369 END DO
2370 END IF
2371
2372 IF (aout(idhuav,ng)) THEN
2373 DO k=1,n(ng)
2374 DO j=jmin,jmax
2375 DO i=imin,imax
2376 average(ng) % avgHuon(i,j,k) = inival
2377 END DO
2378 END DO
2379 END DO
2380 END IF
2381 IF (aout(idhvav,ng)) THEN
2382 DO k=1,n(ng)
2383 DO j=jmin,jmax
2384 DO i=imin,imax
2385 average(ng) % avgHvom(i,j,k) = inival
2386 END DO
2387 END DO
2388 END DO
2389 END IF
2390
2391 IF (any(aout(idttav(:),ng))) THEN
2392 DO itrc=1,nat
2393 DO k=1,n(ng)
2394 DO j=jmin,jmax
2395 DO i=imin,imax
2396 average(ng) % avgTT(i,j,k,itrc) = inival
2397 END DO
2398 END DO
2399 END DO
2400 END DO
2401 END IF
2402 IF (any(aout(idutav(:),ng))) THEN
2403 DO itrc=1,nat
2404 DO k=1,n(ng)
2405 DO j=jmin,jmax
2406 DO i=imin,imax
2407 average(ng) % avgUT(i,j,k,itrc) = inival
2408 END DO
2409 END DO
2410 END DO
2411 END DO
2412 END IF
2413 IF (any(aout(idvtav(:),ng))) THEN
2414 DO itrc=1,nat
2415 DO k=1,n(ng)
2416 DO j=jmin,jmax
2417 DO i=imin,imax
2418 average(ng) % avgVT(i,j,k,itrc) = inival
2419 END DO
2420 END DO
2421 END DO
2422 END DO
2423 END IF
2424
2425 IF (any(aout(ihutav(:),ng))) THEN
2426 DO itrc=1,nat
2427 DO k=1,n(ng)
2428 DO j=jmin,jmax
2429 DO i=imin,imax
2430 average(ng) % avgHuonT(i,j,k,itrc) = inival
2431 END DO
2432 END DO
2433 END DO
2434 END DO
2435 END IF
2436 IF (any(aout(ihvtav(:),ng))) THEN
2437 DO itrc=1,nat
2438 DO k=1,n(ng)
2439 DO j=jmin,jmax
2440 DO i=imin,imax
2441 average(ng) % avgHvomT(i,j,k,itrc) = inival
2442 END DO
2443 END DO
2444 END DO
2445 END DO
2446 END IF
2447# endif
2448!
2449! Time-averaged vorticity fields.
2450!
2451 IF (aout(id2dpv,ng)) THEN
2452 DO j=jmin,jmax
2453 DO i=imin,imax
2454 average(ng) % avgpvor2d(i,j) = inival
2455 END DO
2456 END DO
2457 END IF
2458 IF (aout(id2drv,ng)) THEN
2459 DO j=jmin,jmax
2460 DO i=imin,imax
2461 average(ng) % avgrvor2d(i,j) = inival
2462 END DO
2463 END DO
2464 END IF
2465
2466# ifdef SOLVE3D
2467 IF (aout(id3dpv,ng)) THEN
2468 DO k=1,n(ng)
2469 DO j=jmin,jmax
2470 DO i=imin,imax
2471 average(ng) % avgpvor3d(i,j,k) = inival
2472 END DO
2473 END DO
2474 END DO
2475 END IF
2476 IF (aout(id3drv,ng)) THEN
2477 DO k=1,n(ng)
2478 DO j=jmin,jmax
2479 DO i=imin,imax
2480 average(ng) % avgrvor3d(i,j,k) = inival
2481 END DO
2482 END DO
2483 END DO
2484 END IF
2485# endif
2486
2487 RETURN
integer nat
Definition mod_param.F:499
type(t_bounds), dimension(:), allocatable bounds
Definition mod_param.F:232
type(t_domain), dimension(:), allocatable domain
Definition mod_param.F:329

References mod_ncparam::aout, average, mod_param::bounds, mod_param::domain, mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, 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::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2de, mod_ncparam::idu2rs, mod_ncparam::idu2sd, mod_ncparam::idu3de, mod_ncparam::idu3rs, mod_ncparam::idu3sd, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubcs, mod_ncparam::idubms, mod_ncparam::idubot, mod_ncparam::idubrs, mod_ncparam::idubur, mod_ncparam::idubws, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::iduvwc, mod_ncparam::iduwav, mod_ncparam::idv2av, mod_ncparam::idv2dn, mod_ncparam::idv2rs, mod_ncparam::idv2sd, mod_ncparam::idv3dn, mod_ncparam::idv3rs, mod_ncparam::idv3sd, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbcs, mod_ncparam::idvbms, mod_ncparam::idvbot, mod_ncparam::idvbrs, mod_ncparam::idvbvr, mod_ncparam::idvbws, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwav, mod_ncparam::idw3sd, mod_ncparam::idw3st, mod_ncparam::idwam2, mod_ncparam::idwamp, mod_ncparam::idwbeh, mod_ncparam::idwbrk, mod_ncparam::idwdib, mod_ncparam::idwdif, mod_ncparam::idwdip, mod_ncparam::idwdir, mod_ncparam::idwdis, mod_ncparam::idwdiw, mod_ncparam::idwlen, mod_ncparam::idwlep, mod_ncparam::idworb, mod_ncparam::idwpbt, mod_ncparam::idwptp, mod_ncparam::idwqsp, mod_ncparam::idwrol, mod_ncparam::idwvel, mod_ncparam::idwztw, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_scalars::isalt, mod_scalars::itemp, mod_param::n, mod_param::nat, and mod_param::nt.

Referenced by mod_arrays::roms_initialize_arrays().

Here is the caller graph for this function:

Variable Documentation

◆ average