79
80
85# ifdef SOLVE3D
88# endif
91
92 implicit none
93
94
95
96 integer, intent(in) :: ng, tile
97 integer, intent(in) :: LBi, UBi, LBj, UBj
98 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
99 integer, intent(in) :: Kout
100# ifdef SOLVE3D
101 integer, intent(in) :: Nout
102# endif
103
104
105
106
107 integer :: i, it, j, k
108
109 real(r8) :: fac
110
111 real(r8) :: pfac(IminS:ImaxS,JminS:JmaxS)
112 real(r8) :: rfac(IminS:ImaxS,JminS:JmaxS)
113 real(r8) :: ufac(IminS:ImaxS,JminS:JmaxS)
114 real(r8) :: vfac(IminS:ImaxS,JminS:JmaxS)
115
116# include "set_bounds.h"
117
118
119
120
121
122 IF (
navg(ng).eq.0)
RETURN
123
124
125
126
127
128
129
131 & (mod(
iic(ng)-1,
navg(ng)).eq.1)).or. &
133
134# ifdef WET_DRY
135
136
137
138
139
140 DO j=jstr,jendr
141 DO i=istr,iendr
142 grid(ng)%pmask_avg(i,j)=max(0.0_r8, &
143 & min(
grid(ng)%pmask_full(i,j), &
144 & 1.0_r8))
145 END DO
146 END DO
147 DO j=jstrr,jendr
148 DO i=istrr,iendr
149 grid(ng)%rmask_avg(i,j)=max(0.0_r8, &
150 & min(
grid(ng)%rmask_full(i,j), &
151 & 1.0_r8))
152 END DO
153 END DO
154 DO j=jstrr,jendr
155 DO i=istr,iendr
156 grid(ng)%umask_avg(i,j)=max(0.0_r8, &
157 & min(
grid(ng)%umask_full(i,j), &
158 & 1.0_r8))
159 END DO
160 END DO
161 DO j=jstr,jendr
162 DO i=istrr,iendr
163 grid(ng)%vmask_avg(i,j)=max(0.0_r8, &
164 & min(
grid(ng)%vmask_full(i,j), &
165 & 1.0_r8))
166 END DO
167 END DO
168# endif
169
170
171
173 DO j=jstrr,jendr
174 DO i=istrr,iendr
176# ifdef WET_DRY
178 &
grid(ng)%rmask_full(i,j)
179# endif
180 END DO
181 END DO
182 END IF
184 DO j=jstrr,jendr
185 DO i=istr,iendr
187# ifdef WET_DRY
189 &
grid(ng)%umask_full(i,j)
190# endif
191 END DO
192 END DO
193 END IF
195 DO j=jstr,jendr
196 DO i=istrr,iendr
198# ifdef WET_DRY
200 &
grid(ng)%vmask_full(i,j)
201# endif
202 END DO
203 END DO
204 END IF
205
206# ifdef SOLVE3D
209 DO j=jstrr,jendr
210 DO i=istr,iendr
212# ifdef WET_DRY
214 &
grid(ng)%umask_full(i,j)
215# endif
216 END DO
217 END DO
218 END DO
219 END IF
222 DO j=jstr,jendr
223 DO i=istrr,iendr
225# ifdef WET_DRY
227 &
grid(ng)%vmask_full(i,j)
228# endif
229 END DO
230 END DO
231 END DO
232 END IF
235 DO j=jstrr,jendr
236 DO i=istrr,iendr
238 &
grid(ng)%pm(i,j)* &
240# ifdef WET_DRY
242 &
grid(ng)%rmask_full(i,j)
243# endif
244 END DO
245 END DO
246 END DO
247 END IF
248
251 DO j=jstrr,jendr
252 DO i=istrr,iendr
254# ifdef WET_DRY
256 &
grid(ng)%rmask_full(i,j)
257# endif
258 END DO
259 END DO
260 END DO
261 END IF
265 DO j=jstrr,jendr
266 DO i=istrr,iendr
268 & nout,it)
269# ifdef WET_DRY
271 &
grid(ng)%rmask_full(i,j)
272# endif
273 END DO
274 END DO
275 END DO
276 END IF
277 END DO
278
279# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
282 DO j=jstrr,jendr
283 DO i=istrr,iendr
285# ifdef WET_DRY
287 &
grid(ng)%rmask_full(i,j)
288# endif
289 END DO
290 END DO
291 END DO
292 END IF
295 DO j=jstrr,jendr
296 DO i=istrr,iendr
298# ifdef WET_DRY
300 &
grid(ng)%rmask_full(i,j)
301# endif
302 END DO
303 END DO
304 END DO
305 END IF
308 DO j=jstrr,jendr
309 DO i=istrr,iendr
311# ifdef WET_DRY
313 &
grid(ng)%rmask_full(i,j)
314# endif
315 END DO
316 END DO
317 END DO
318 END IF
319# endif
320# endif
321
322
323
325 DO j=jstrr,jendr
326 DO i=istr,iendr
328# ifdef WET_DRY
330 &
grid(ng)%umask_full(i,j)
331# endif
332 END DO
333 END DO
334 END IF
336 DO j=jstr,jendr
337 DO i=istrr,iendr
339# ifdef WET_DRY
341 &
grid(ng)%vmask_full(i,j)
342# endif
343 END DO
344 END DO
345 END IF
346
348 DO j=jstrr,jendr
349 DO i=istr,iendr
351# ifdef WET_DRY
353 &
grid(ng)%umask_full(i,j)
354# endif
355 END DO
356 END DO
357 END IF
359 DO j=jstr,jendr
360 DO i=istrr,iendr
362# ifdef WET_DRY
364 &
grid(ng)%vmask_full(i,j)
365# endif
366 END DO
367 END DO
368 END IF
369
370# ifdef SOLVE3D
372 DO j=jstrr,jendr
373 DO i=istrr,iendr
375# ifdef WET_DRY
377 &
grid(ng)%rmask_full(i,j)
378# endif
379 END DO
380 END DO
381 END IF
383 DO j=jstrr,jendr
384 DO i=istrr,iendr
386# ifdef WET_DRY
388 &
grid(ng)%rmask_full(i,j)
389# endif
390 END DO
391 END DO
392 END IF
393# ifdef SHORTWAVE
395 DO j=jstrr,jendr
396 DO i=istrr,iendr
398# ifdef WET_DRY
400 &
grid(ng)%rmask_full(i,j)
401# endif
402 END DO
403 END DO
404 END IF
405# endif
406# ifdef BULK_FLUXES
408 DO j=jstrr,jendr
409 DO i=istrr,iendr
411# ifdef WET_DRY
413 &
grid(ng)%rmask_full(i,j)
414# endif
415 END DO
416 END DO
417 END IF
419 DO j=jstrr,jendr
420 DO i=istrr,iendr
422# ifdef WET_DRY
424 &
grid(ng)%rmask_full(i,j)
425# endif
426 END DO
427 END DO
428 END IF
430 DO j=jstrr,jendr
431 DO i=istrr,iendr
433# ifdef WET_DRY
435 &
grid(ng)%rmask_full(i,j)
436# endif
437 END DO
438 END DO
439 END IF
440# ifdef EMINUSP
442 DO j=jstrr,jendr
443 DO i=istrr,iendr
445# ifdef WET_DRY
447 &
grid(ng)%rmask_full(i,j)
448# endif
449 END DO
450 END DO
451 END IF
452# endif
453# endif
454# endif
455
456
457
459 DO j=jstrr,jendr
460 DO i=istrr,iendr
462 &
ocean(ng)%tl_zeta(i,j,kout)
463# ifdef WET_DRY
465 &
grid(ng)%rmask_full(i,j)
466# endif
467 END DO
468 END DO
469 END IF
471 DO j=jstrr,jendr
472 DO i=istr,iendr
474 &
ocean(ng)%tl_ubar(i,j,kout)
475# ifdef WET_DRY
477 &
grid(ng)%umask_full(i,j)
478# endif
479 END DO
480 END DO
481 END IF
483 DO j=jstr,jendr
484 DO i=istrr,iendr
486 &
ocean(ng)%tl_vbar(i,j,kout)
487# ifdef WET_DRY
489 &
grid(ng)%vmask_full(i,j)
490# endif
491 END DO
492 END DO
493 END IF
494
495# ifdef SOLVE3D
498 DO j=jstrr,jendr
499 DO i=istr,iendr
501 &
ocean(ng)%tl_u(i,j,k,nout)
502# ifdef WET_DRY
504 &
grid(ng)%umask_full(i,j)
505# endif
506 END DO
507 END DO
508 END DO
509 END IF
512 DO j=jstr,jendr
513 DO i=istrr,iendr
515 &
ocean(ng)%tl_v(i,j,k,nout)
516# ifdef WET_DRY
518 &
grid(ng)%vmask_full(i,j)
519# endif
520 END DO
521 END DO
522 END DO
523 END IF
526 DO j=jstr,jend
527 DO i=istr,iend
528 average(ng)%avgUV(i,j,k)=0.25_r8* &
529 & (
ocean(ng)%tl_u(i ,j,k,nout)+ &
530 &
ocean(ng)%tl_u(i+1,j,k,nout))*&
531 & (
ocean(ng)%tl_v(i,j ,k,nout)+ &
532 &
ocean(ng)%tl_v(i,j+1,k,nout))
533# ifdef WET_DRY
535 &
grid(ng)%rmask_full(i,j)
536# endif
537 END DO
538 END DO
539 END DO
540 END IF
541
545 DO j=jstrr,jendr
546 DO i=istrr,iendr
548 & nout,it)* &
549 &
ocean(ng)%tl_t(i,j,k, &
550 & nout,it)
551# ifdef WET_DRY
553 & it)* &
554 &
grid(ng)%rmask_full(i,j)
555# endif
556 END DO
557 END DO
558 END DO
559 END IF
562 DO j=jstrr,jendr
563 DO i=istr,iend
564 average(ng)%avgUT(i,j,k,it)=0.5_r8* &
565 &
ocean(ng)%tl_u(i,j,k, &
566 & nout)* &
567 & (
ocean(ng)%tl_t(i-1,j,k, &
568 & nout,it)+ &
569 &
ocean(ng)%tl_t(i ,j,k, &
570 & nout,it))
571# ifdef WET_DRY
573 & it)* &
574 &
grid(ng)%umask_full(i,j)
575# endif
576 END DO
577 END DO
578 END DO
579 END IF
582 DO j=jstr,jend
583 DO i=istrr,iendr
584 average(ng)%avgVT(i,j,k,it)=0.5_r8* &
585 &
ocean(ng)%tl_v(i,j,k, &
586 & nout)* &
587 & (
ocean(ng)%tl_t(i,j-1,k, &
588 & nout,it)+ &
589 &
ocean(ng)%tl_t(i,j ,k, &
590 & nout,it))
591# ifdef WET_DRY
593 & it)* &
594 &
grid(ng)%vmask_full(i,j)
595# endif
596 END DO
597 END DO
598 END DO
599 END IF
600 END DO
601# endif
602
603
604
605
606
608
609# ifdef WET_DRY
610
611
612
613
614
615 DO j=jstr,jendr
616 DO i=istr,iendr
617 grid(ng)%pmask_avg(i,j)=
grid(ng)%pmask_avg(i,j)+ &
618 & max(0.0_r8, &
619 & min(
grid(ng)%pmask_full(i,j), &
620 & 1.0_r8))
621 END DO
622 END DO
623 DO j=jstrr,jendr
624 DO i=istrr,iendr
625 grid(ng)%rmask_avg(i,j)=
grid(ng)%rmask_avg(i,j)+ &
626 & max(0.0_r8, &
627 & min(
grid(ng)%rmask_full(i,j), &
628 & 1.0_r8))
629 END DO
630 END DO
631 DO j=jstrr,jendr
632 DO i=istr,iendr
633 grid(ng)%umask_avg(i,j)=
grid(ng)%umask_avg(i,j)+ &
634 & max(0.0_r8, &
635 & min(
grid(ng)%umask_full(i,j), &
636 & 1.0_r8))
637 END DO
638 END DO
639 DO j=jstr,jendr
640 DO i=istrr,iendr
641 grid(ng)%vmask_avg(i,j)=
grid(ng)%vmask_avg(i,j)+ &
642 & max(0.0_r8, &
643 & min(
grid(ng)%vmask_full(i,j), &
644 & 1.0_r8))
645 END DO
646 END DO
647# endif
648
649
650
652 DO j=jstrr,jendr
653 DO i=istrr,iendr
655# ifdef WET_DRY
656 &
grid(ng)%rmask_full(i,j)* &
657# endif
658 &
ocean(ng)%tl_zeta(i,j,kout)
659 END DO
660 END DO
661 END IF
663 DO j=jstrr,jendr
664 DO i=istr,iendr
666# ifdef WET_DRY
667 &
grid(ng)%umask_full(i,j)* &
668# endif
669 &
ocean(ng)%tl_ubar(i,j,kout)
670 END DO
671 END DO
672 END IF
674 DO j=jstr,jendr
675 DO i=istrr,iendr
677# ifdef WET_DRY
678 &
grid(ng)%vmask_full(i,j)* &
679# endif
680 &
ocean(ng)%tl_vbar(i,j,kout)
681 END DO
682 END DO
683 END IF
684
685# ifdef SOLVE3D
688 DO j=jstrr,jendr
689 DO i=istr,iendr
691# ifdef WET_DRY
692 &
grid(ng)%umask_full(i,j)* &
693# endif
694 &
ocean(ng)%tl_u(i,j,k,nout)
695 END DO
696 END DO
697 END DO
698 END IF
701 DO j=jstr,jendr
702 DO i=istrr,iendr
704# ifdef WET_DRY
705 &
grid(ng)%vmask_full(i,j)* &
706# endif
707 &
ocean(ng)%tl_v(i,j,k,nout)
708 END DO
709 END DO
710 END DO
711 END IF
714 DO j=jstrr,jendr
715 DO i=istrr,iendr
717# ifdef WET_DRY
718 &
grid(ng)%rmask_full(i,j)* &
719# endif
720 &
ocean(ng)%tl_W(i,j,k)* &
721 &
grid(ng)%pm(i,j)* &
723 END DO
724 END DO
725 END DO
726 END IF
727
730 DO j=jstrr,jendr
731 DO i=istrr,iendr
733# ifdef WET_DRY
734 &
grid(ng)%rmask_full(i,j)* &
735# endif
736 &
ocean(ng)%tl_rho(i,j,k)
737 END DO
738 END DO
739 END DO
740 END IF
744 DO j=jstrr,jendr
745 DO i=istrr,iendr
747# ifdef WET_DRY
748 &
grid(ng)%rmask_full(i,j)* &
749# endif
750 &
ocean(ng)%tl_t(i,j,k, &
751 & nout,it)
752 END DO
753 END DO
754 END DO
755 END IF
756 END DO
757
758# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
761 DO j=jstrr,jendr
762 DO i=istrr,iendr
764# ifdef WET_DRY
765 &
grid(ng)%rmask_full(i,j)* &
766# endif
767 &
mixing(ng)%tl_Akv(i,j,k)
768 END DO
769 END DO
770 END DO
771 END IF
774 DO j=jstrr,jendr
775 DO i=istrr,iendr
777# ifdef WET_DRY
778 &
grid(ng)%rmask_full(i,j)* &
779# endif
781 END DO
782 END DO
783 END DO
784 END IF
787 DO j=jstrr,jendr
788 DO i=istrr,iendr
790# ifdef WET_DRY
791 &
grid(ng)%rmask_full(i,j)* &
792# endif
794 END DO
795 END DO
796 END DO
797 END IF
798# endif
799# endif
800
801
802
804 DO j=jstrr,jendr
805 DO i=istr,iendr
807# ifdef WET_DRY
808 &
grid(ng)%umask_full(i,j)* &
809# endif
810 &
forces(ng)%tl_sustr(i,j)
811 END DO
812 END DO
813 END IF
815 DO j=jstr,jendr
816 DO i=istrr,iendr
818# ifdef WET_DRY
819 &
grid(ng)%vmask_full(i,j)* &
820# endif
821 &
forces(ng)%tl_svstr(i,j)
822 END DO
823 END DO
824 END IF
825
827 DO j=jstrr,jendr
828 DO i=istr,iendr
830# ifdef WET_DRY
831 &
grid(ng)%umask_full(i,j)* &
832# endif
833 &
forces(ng)%tl_bustr(i,j)
834 END DO
835 END DO
836 END IF
838 DO j=jstr,jendr
839 DO i=istrr,iendr
841# ifdef WET_DRY
842 &
grid(ng)%vmask_full(i,j)* &
843# endif
844 &
forces(ng)%tl_bvstr(i,j)
845 END DO
846 END DO
847 END IF
848
849# ifdef SOLVE3D
851 DO j=jstrr,jendr
852 DO i=istrr,iendr
854# ifdef WET_DRY
855 &
grid(ng)%rmask_full(i,j)* &
856# endif
858 END DO
859 END DO
860 END IF
862 DO j=jstrr,jendr
863 DO i=istrr,iendr
865# ifdef WET_DRY
866 &
grid(ng)%rmask_full(i,j)* &
867# endif
869 END DO
870 END DO
871 END IF
872# ifdef SHORTWAVE
874 DO j=jstrr,jendr
875 DO i=istrr,iendr
877# ifdef WET_DRY
878 &
grid(ng)%rmask_full(i,j)* &
879# endif
880 &
forces(ng)%tl_srflx(i,j)
881 END DO
882 END DO
883 END IF
884# endif
885# ifdef BULK_FLUXES
887 DO j=jstrr,jendr
888 DO i=istrr,iendr
890# ifdef WET_DRY
891 &
grid(ng)%rmask_full(i,j)* &
892# endif
893 &
forces(ng)%tl_lhflx(i,j)
894 END DO
895 END DO
896 END IF
898 DO j=jstrr,jendr
899 DO i=istrr,iendr
901# ifdef WET_DRY
902 &
grid(ng)%rmask_full(i,j)* &
903# endif
904 &
forces(ng)%tl_lrflx(i,j)
905 END DO
906 END DO
907 END IF
909 DO j=jstrr,jendr
910 DO i=istrr,iendr
912# ifdef WET_DRY
913 &
grid(ng)%rmask_full(i,j)* &
914# endif
915 &
forces(ng)%tl_shflx(i,j)
916 END DO
917 END DO
918 END IF
919# ifdef EMINUSP
921 DO j=jstrr,jendr
922 DO i=istrr,iendr
924# ifdef WET_DRY
925 &
grid(ng)%rmask_full(i,j)* &
926# endif
928 END DO
929 END DO
930 END IF
931# endif
932# endif
933# endif
934
935
936
938 DO j=jstrr,jendr
939 DO i=istrr,iendr
941# ifdef WET_DRY
942 &
grid(ng)%rmask_full(i,j)* &
943# endif
944 &
ocean(ng)%tl_zeta(i,j,kout)* &
945 &
ocean(ng)%tl_zeta(i,j,kout)
946 END DO
947 END DO
948 END IF
950 DO j=jstrr,jendr
951 DO i=istr,iendr
953# ifdef WET_DRY
954 &
grid(ng)%umask_full(i,j)* &
955# endif
956 &
ocean(ng)%tl_ubar(i,j,kout)* &
957 &
ocean(ng)%tl_ubar(i,j,kout)
958 END DO
959 END DO
960 END IF
962 DO j=jstr,jendr
963 DO i=istrr,iendr
965# ifdef WET_DRY
966 &
grid(ng)%vmask_full(i,j)* &
967# endif
968 &
ocean(ng)%tl_vbar(i,j,kout)* &
969 &
ocean(ng)%tl_vbar(i,j,kout)
970 END DO
971 END DO
972 END IF
973
974# ifdef SOLVE3D
977 DO j=jstrr,jendr
978 DO i=istr,iendr
980# ifdef WET_DRY
981 &
grid(ng)%umask_full(i,j)* &
982# endif
983 &
ocean(ng)%tl_u(i,j,k,nout)* &
984 &
ocean(ng)%tl_u(i,j,k,nout)
985 END DO
986 END DO
987 END DO
988 END IF
991 DO j=jstr,jendr
992 DO i=istrr,iendr
994# ifdef WET_DRY
995 &
grid(ng)%vmask_full(i,j)* &
996# endif
997 &
ocean(ng)%tl_v(i,j,k,nout)* &
998 &
ocean(ng)%tl_v(i,j,k,nout)
999 END DO
1000 END DO
1001 END DO
1002 END IF
1005 DO j=jstr,jend
1006 DO i=istr,iend
1008# ifdef WET_DRY
1009 &
grid(ng)%rmask_full(i,j)* &
1010# endif
1011 & 0.25_r8* &
1012 & (
ocean(ng)%tl_u(i ,j,k,nout)+ &
1013 &
ocean(ng)%tl_u(i+1,j,k,nout))*&
1014 & (
ocean(ng)%tl_v(i,j ,k,nout)+ &
1015 &
ocean(ng)%tl_v(i,j+1,k,nout))
1016 END DO
1017 END DO
1018 END DO
1019 END IF
1020
1024 DO j=jstrr,jendr
1025 DO i=istrr,iendr
1027 & it)+ &
1028# ifdef WET_DRY
1029 &
grid(ng)%rmask_full(i,j)* &
1030# endif
1031 &
ocean(ng)%tl_t(i,j,k, &
1032 & nout,it)* &
1033 &
ocean(ng)%tl_t(i,j,k, &
1034 & nout,it)
1035 END DO
1036 END DO
1037 END DO
1038 END IF
1041 DO j=jstrr,jendr
1042 DO i=istr,iend
1044 & it)+ &
1045# ifdef WET_DRY
1046 &
grid(ng)%umask_full(i,j)* &
1047# endif
1048 & 0.5_r8* &
1049 &
ocean(ng)%tl_u(i,j,k, &
1050 & nout)* &
1051 & (
ocean(ng)%tl_t(i-1,j,k, &
1052 & nout,it)+ &
1053 &
ocean(ng)%tl_t(i ,j,k, &
1054 & nout,it))
1055 END DO
1056 END DO
1057 END DO
1058 END IF
1061 DO j=jstr,jend
1062 DO i=istrr,iendr
1064 & it)+ &
1065# ifdef WET_DRY
1066 &
grid(ng)%vmask_full(i,j)* &
1067# endif
1068 & 0.5_r8* &
1069 &
ocean(ng)%tl_v(i,j,k, &
1070 & nout)* &
1071 & (
ocean(ng)%tl_t(i,j-1,k, &
1072 & nout,it)+ &
1073 &
ocean(ng)%tl_t(i,j ,k, &
1074 & nout,it))
1075 END DO
1076 END DO
1077 END DO
1078 END IF
1079 END DO
1080# endif
1081 END IF
1082
1083
1084
1085
1086
1088 & (mod(
iic(ng)-1,
navg(ng)).eq.0).and. &
1090 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1092 END IF
1093
1094
1095
1096# ifdef WET_DRY
1097
1098
1099# endif
1100
1101# ifdef WET_DRY
1102 DO j=jstrr,jendr
1103 DO i=istrr,iendr
1104 pfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%pmask_avg(i,j))
1105 rfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%rmask_avg(i,j))
1106 ufac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%umask_avg(i,j))
1107 vfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%vmask_avg(i,j))
1108 END DO
1109 END DO
1110# else
1111 fac=1.0_r8/real(
navg(ng),r8)
1112 DO j=jstrr,jendr
1113 DO i=istrr,iendr
1114 pfac(i,j)=fac
1115 rfac(i,j)=fac
1116 ufac(i,j)=fac
1117 vfac(i,j)=fac
1118 END DO
1119 END DO
1120# endif
1121
1122
1123
1125 DO j=jstrr,jendr
1126 DO i=istrr,iendr
1127 average(ng)%avgzeta(i,j)=rfac(i,j)* &
1129 END DO
1130 END DO
1131 END IF
1133 DO j=jstrr,jendr
1134 DO i=istr,iendr
1135 average(ng)%avgu2d(i,j)=ufac(i,j)* &
1137 END DO
1138 END DO
1139 END IF
1141 DO j=jstr,jendr
1142 DO i=istrr,iendr
1143 average(ng)%avgv2d(i,j)=vfac(i,j)* &
1145 END DO
1146 END DO
1147 END IF
1148
1149# ifdef SOLVE3D
1152 DO j=jstrr,jendr
1153 DO i=istr,iendr
1154 average(ng)%avgu3d(i,j,k)=ufac(i,j)* &
1156 END DO
1157 END DO
1158 END DO
1159 END IF
1162 DO j=jstr,jendr
1163 DO i=istrr,iendr
1164 average(ng)%avgv3d(i,j,k)=vfac(i,j)* &
1166 END DO
1167 END DO
1168 END DO
1169 END IF
1170
1173 DO j=jstrr,jendr
1174 DO i=istrr,iendr
1175 average(ng)%avgw3d(i,j,k)=rfac(i,j)* &
1177 END DO
1178 END DO
1179 END DO
1180 END IF
1181
1184 DO j=jstrr,jendr
1185 DO i=istrr,iendr
1186 average(ng)%avgrho(i,j,k)=rfac(i,j)* &
1188 END DO
1189 END DO
1190 END DO
1191 END IF
1195 DO j=jstrr,jendr
1196 DO i=istrr,iendr
1197 average(ng)%avgt(i,j,k,it)=rfac(i,j)* &
1199 END DO
1200 END DO
1201 END DO
1202 END IF
1203 END DO
1204
1205# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1208 DO j=jstrr,jendr
1209 DO i=istrr,iendr
1210 average(ng)%avgAKv(i,j,k)=rfac(i,j)* &
1212 END DO
1213 END DO
1214 END DO
1215 END IF
1218 DO j=jstrr,jendr
1219 DO i=istrr,iendr
1220 average(ng)%avgAKt(i,j,k)=rfac(i,j)* &
1222 END DO
1223 END DO
1224 END DO
1225 END IF
1228 DO j=jstrr,jendr
1229 DO i=istrr,iendr
1230 average(ng)%avgAKs(i,j,k)=rfac(i,j)* &
1232 END DO
1233 END DO
1234 END DO
1235 END IF
1236# endif
1237# endif
1238
1239
1240
1242 DO j=jstrr,jendr
1243 DO i=istr,iendr
1244 average(ng)%avgsus(i,j)=ufac(i,j)* &
1246 END DO
1247 END DO
1248 END IF
1250 DO j=jstr,jendr
1251 DO i=istrr,iendr
1252 average(ng)%avgsvs(i,j)=vfac(i,j)* &
1254 END DO
1255 END DO
1256 END IF
1257
1259 DO j=jstrr,jendr
1260 DO i=istr,iendr
1261 average(ng)%avgbus(i,j)=ufac(i,j)* &
1263 END DO
1264 END DO
1265 END IF
1267 DO j=jstr,jendr
1268 DO i=istrr,iendr
1269 average(ng)%avgbvs(i,j)=vfac(i,j)* &
1271 END DO
1272 END DO
1273 END IF
1274
1275# ifdef SOLVE3D
1277 DO j=jstrr,jendr
1278 DO i=istrr,iendr
1279 average(ng)%avgstf(i,j)=rfac(i,j)* &
1281 END DO
1282 END DO
1283 END IF
1285 DO j=jstrr,jendr
1286 DO i=istrr,iendr
1287 average(ng)%avgswf(i,j)=rfac(i,j)* &
1289 END DO
1290 END DO
1291 END IF
1292# ifdef SHORTWAVE
1294 DO j=jstrr,jendr
1295 DO i=istrr,iendr
1296 average(ng)%avgsrf(i,j)=rfac(i,j)* &
1298 END DO
1299 END DO
1300 END IF
1301# endif
1302# ifdef BULK_FLUXES
1304 DO j=jstrr,jendr
1305 DO i=istrr,iendr
1306 average(ng)%avglhf(i,j)=rfac(i,j)* &
1308 END DO
1309 END DO
1310 END IF
1312 DO j=jstrr,jendr
1313 DO i=istrr,iendr
1314 average(ng)%avgshf(i,j)=rfac(i,j)* &
1316 END DO
1317 END DO
1318 END IF
1320 DO j=jstrr,jendr
1321 DO i=istrr,iendr
1322 average(ng)%avglrf(i,j)=rfac(i,j)* &
1324 END DO
1325 END DO
1326 END IF
1327# ifdef EMINUSP
1329 DO j=jstrr,jendr
1330 DO i=istrr,iendr
1331 average(ng)%avgevap(i,j)=rfac(i,j)* &
1333 END DO
1334 END DO
1335 END IF
1336# endif
1337# endif
1338# endif
1339
1340
1341
1343 DO j=jstrr,jendr
1344 DO i=istrr,iendr
1345 average(ng)%avgZZ(i,j)=rfac(i,j)* &
1347 END DO
1348 END DO
1349 END IF
1351 DO j=jstrr,jendr
1352 DO i=istr,iendr
1353 average(ng)%avgU2(i,j)=ufac(i,j)* &
1355 END DO
1356 END DO
1357 END IF
1359 DO j=jstr,jendr
1360 DO i=istrr,iendr
1361 average(ng)%avgV2(i,j)=vfac(i,j)* &
1363 END DO
1364 END DO
1365 END IF
1366
1367# ifdef SOLVE3D
1370 DO j=jstrr,jendr
1371 DO i=istr,iendr
1372 average(ng)%avgUU(i,j,k)=ufac(i,j)* &
1374 END DO
1375 END DO
1376 END DO
1377 END IF
1380 DO j=jstr,jendr
1381 DO i=istrr,iendr
1382 average(ng)%avgVV(i,j,k)=vfac(i,j)* &
1384 END DO
1385 END DO
1386 END DO
1387 END IF
1390 DO j=jstr,jend
1391 DO i=istr,iend
1392 average(ng)%avgUV(i,j,k)=rfac(i,j)* &
1394 END DO
1395 END DO
1396 END DO
1397 END IF
1398
1402 DO j=jstrr,jendr
1403 DO i=istrr,iendr
1404 average(ng)%avgTT(i,j,k,it)=rfac(i,j)* &
1406 & it)
1407 END DO
1408 END DO
1409 END DO
1410 END IF
1413 DO j=jstrr,jendr
1414 DO i=istr,iend
1415 average(ng)%avgUT(i,j,k,it)=ufac(i,j)* &
1417 & it)
1418 END DO
1419 END DO
1420 END DO
1421 END IF
1424 DO j=jstr,jend
1425 DO i=istrr,iendr
1426 average(ng)%avgVT(i,j,k,it)=vfac(i,j)* &
1428 & it)
1429 END DO
1430 END DO
1431 END DO
1432 END IF
1433 END DO
1434# endif
1435 END IF
1436
1437 RETURN
type(t_average), dimension(:), allocatable average
type(t_forces), dimension(:), allocatable forces
type(t_grid), dimension(:), allocatable grid
type(t_mixing), dimension(:), allocatable mixing
integer, dimension(:), allocatable idttav
integer, dimension(:), allocatable idutav
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable idvtav
logical, dimension(:,:), allocatable aout
type(t_ocean), dimension(:), allocatable ocean
integer, dimension(:), allocatable n
type(t_domain), dimension(:), allocatable domain
integer, dimension(:), allocatable nt
integer, dimension(:), allocatable nrrec
integer, dimension(:), allocatable iic
real(dp), dimension(:), allocatable dt
real(dp), dimension(:), allocatable avgtime
integer, dimension(:), allocatable navg
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable ntsavg