72
73
78# ifdef SOLVE3D
81# endif
84
85 implicit none
86
87
88
89 integer, intent(in) :: ng, tile
90 integer, intent(in) :: LBi, UBi, LBj, UBj
91 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
92 integer, intent(in) :: nstp
93
94
95
96
97 integer :: i, it, j, k
98
99 real(r8) :: fac
100
101 real(r8) :: pfac(IminS:ImaxS,JminS:JmaxS)
102 real(r8) :: rfac(IminS:ImaxS,JminS:JmaxS)
103 real(r8) :: ufac(IminS:ImaxS,JminS:JmaxS)
104 real(r8) :: vfac(IminS:ImaxS,JminS:JmaxS)
105
106# include "set_bounds.h"
107
108
109
110
111
112 IF (
navg(ng).eq.0)
RETURN
113
114
115
116
117
118
119
121 & (mod(
iic(ng),
navg(ng)).eq.0)).or. &
124
125# ifdef WET_DRY
126
127
128
129
130
131 DO j=jstr,jendr
132 DO i=istr,iendr
133 grid(ng)%pmask_avg(i,j)=max(0.0_r8, &
134 & min(
grid(ng)%pmask_full(i,j), &
135 & 1.0_r8))
136 END DO
137 END DO
138 DO j=jstrr,jendr
139 DO i=istrr,iendr
140 grid(ng)%rmask_avg(i,j)=max(0.0_r8, &
141 & min(
grid(ng)%rmask_full(i,j), &
142 & 1.0_r8))
143 END DO
144 END DO
145 DO j=jstrr,jendr
146 DO i=istr,iendr
147 grid(ng)%umask_avg(i,j)=max(0.0_r8, &
148 & min(
grid(ng)%umask_full(i,j), &
149 & 1.0_r8))
150 END DO
151 END DO
152 DO j=jstr,jendr
153 DO i=istrr,iendr
154 grid(ng)%vmask_avg(i,j)=max(0.0_r8, &
155 & min(
grid(ng)%vmask_full(i,j), &
156 & 1.0_r8))
157 END DO
158 END DO
159# endif
160
161
162
164 DO j=jstrr,jendr
165 DO i=istrr,iendr
167# ifdef WET_DRY
169 &
grid(ng)%rmask_full(i,j)
170# endif
171 END DO
172 END DO
173 END IF
175 DO j=jstrr,jendr
176 DO i=istr,iendr
178# ifdef WET_DRY
180 &
grid(ng)%umask_full(i,j)
181# endif
182 END DO
183 END DO
184 END IF
186 DO j=jstr,jendr
187 DO i=istrr,iendr
189# ifdef WET_DRY
191 &
grid(ng)%vmask_full(i,j)
192# endif
193 END DO
194 END DO
195 END IF
196
197# ifdef SOLVE3D
200 DO j=jstrr,jendr
201 DO i=istr,iendr
203# ifdef WET_DRY
205 &
grid(ng)%umask_full(i,j)
206# endif
207 END DO
208 END DO
209 END DO
210 END IF
213 DO j=jstr,jendr
214 DO i=istrr,iendr
216# ifdef WET_DRY
218 &
grid(ng)%vmask_full(i,j)
219# endif
220 END DO
221 END DO
222 END DO
223 END IF
226 DO j=jstrr,jendr
227 DO i=istrr,iendr
229 &
grid(ng)%pm(i,j)* &
231# ifdef WET_DRY
233 &
grid(ng)%rmask_full(i,j)
234# endif
235 END DO
236 END DO
237 END DO
238 END IF
239
242 DO j=jstrr,jendr
243 DO i=istrr,iendr
245# ifdef WET_DRY
247 &
grid(ng)%rmask_full(i,j)
248# endif
249 END DO
250 END DO
251 END DO
252 END IF
256 DO j=jstrr,jendr
257 DO i=istrr,iendr
259 & nstp,it)
260# ifdef WET_DRY
262 &
grid(ng)%rmask_full(i,j)
263# endif
264 END DO
265 END DO
266 END DO
267 END IF
268 END DO
269
270# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
273 DO j=jstrr,jendr
274 DO i=istrr,iendr
276# ifdef WET_DRY
278 &
grid(ng)%rmask_full(i,j)
279# endif
280 END DO
281 END DO
282 END DO
283 END IF
286 DO j=jstrr,jendr
287 DO i=istrr,iendr
289# ifdef WET_DRY
291 &
grid(ng)%rmask_full(i,j)
292# endif
293 END DO
294 END DO
295 END DO
296 END IF
297
298# ifdef SALINITY
301 DO j=jstrr,jendr
302 DO i=istrr,iendr
304# ifdef WET_DRY
306 &
grid(ng)%rmask_full(i,j)
307# endif
308 END DO
309 END DO
310 END DO
311 END IF
312# endif
313
314# endif
315# endif
316
317
318
320 DO j=jstrr,jendr
321 DO i=istr,iendr
323# ifdef WET_DRY
325 &
grid(ng)%umask_full(i,j)
326# endif
327 END DO
328 END DO
329 END IF
331 DO j=jstr,jendr
332 DO i=istrr,iendr
334# ifdef WET_DRY
336 &
grid(ng)%vmask_full(i,j)
337# endif
338 END DO
339 END DO
340 END IF
341
343 DO j=jstrr,jendr
344 DO i=istr,iendr
346# ifdef WET_DRY
348 &
grid(ng)%umask_full(i,j)
349# endif
350 END DO
351 END DO
352 END IF
354 DO j=jstr,jendr
355 DO i=istrr,iendr
357# ifdef WET_DRY
359 &
grid(ng)%vmask_full(i,j)
360# endif
361 END DO
362 END DO
363 END IF
364
365# ifdef SOLVE3D
367 DO j=jstrr,jendr
368 DO i=istrr,iendr
370# ifdef WET_DRY
372 &
grid(ng)%rmask_full(i,j)
373# endif
374 END DO
375 END DO
376 END IF
377
378# ifdef SALINITY
380 DO j=jstrr,jendr
381 DO i=istrr,iendr
383# ifdef WET_DRY
385 &
grid(ng)%rmask_full(i,j)
386# endif
387 END DO
388 END DO
389 END IF
390# endif
391
392# ifdef SHORTWAVE
394 DO j=jstrr,jendr
395 DO i=istrr,iendr
397# ifdef WET_DRY
399 &
grid(ng)%rmask_full(i,j)
400# endif
401 END DO
402 END DO
403 END IF
404# endif
405
406# if defined BULK_FLUXES || defined FRC_COUPLING
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
418
420 DO j=jstrr,jendr
421 DO i=istrr,iendr
423# ifdef WET_DRY
425 &
grid(ng)%rmask_full(i,j)
426# endif
427 END DO
428 END DO
429 END IF
430
432 DO j=jstrr,jendr
433 DO i=istrr,iendr
435# ifdef WET_DRY
437 &
grid(ng)%rmask_full(i,j)
438# endif
439 END DO
440 END DO
441 END IF
442# endif
443
444# if defined BULK_FLUXES && defined EMINUSP
446 DO j=jstrr,jendr
447 DO i=istrr,iendr
449# ifdef WET_DRY
451 &
grid(ng)%rmask_full(i,j)
452# endif
453 END DO
454 END DO
455 END IF
456# endif
457# endif
458
459
460
462 DO j=jstrr,jendr
463 DO i=istrr,iendr
465 &
ocean(ng)%ad_zeta_sol(i,j)
466# ifdef WET_DRY
468 &
grid(ng)%rmask_full(i,j)
469# endif
470 END DO
471 END DO
472 END IF
474 DO j=jstrr,jendr
475 DO i=istr,iendr
477 &
ocean(ng)%ad_ubar_sol(i,j)
478# ifdef WET_DRY
480 &
grid(ng)%umask_full(i,j)
481# endif
482 END DO
483 END DO
484 END IF
486 DO j=jstr,jendr
487 DO i=istrr,iendr
489 &
ocean(ng)%ad_vbar_sol(i,j)
490# ifdef WET_DRY
492 &
grid(ng)%vmask_full(i,j)
493# endif
494 END DO
495 END DO
496 END IF
497
498# ifdef SOLVE3D
501 DO j=jstrr,jendr
502 DO i=istr,iendr
504 &
ocean(ng)%ad_u(i,j,k,nstp)
505# ifdef WET_DRY
507 &
grid(ng)%umask_full(i,j)
508# endif
509 END DO
510 END DO
511 END DO
512 END IF
515 DO j=jstr,jendr
516 DO i=istrr,iendr
518 &
ocean(ng)%ad_v(i,j,k,nstp)
519# ifdef WET_DRY
521 &
grid(ng)%vmask_full(i,j)
522# endif
523 END DO
524 END DO
525 END DO
526 END IF
529 DO j=jstr,jend
530 DO i=istr,iend
531 average(ng)%avgUV(i,j,k)=0.25_r8* &
532 & (
ocean(ng)%ad_u(i ,j,k,nstp)+ &
533 &
ocean(ng)%ad_u(i+1,j,k,nstp))*&
534 & (
ocean(ng)%ad_v(i,j ,k,nstp)+ &
535 &
ocean(ng)%ad_v(i,j+1,k,nstp))
536# ifdef WET_DRY
538 &
grid(ng)%rmask_full(i,j)
539# endif
540 END DO
541 END DO
542 END DO
543 END IF
544
548 DO j=jstrr,jendr
549 DO i=istrr,iendr
551 & nstp,it)* &
552 &
ocean(ng)%ad_t(i,j,k, &
553 & nstp,it)
554# ifdef WET_DRY
556 & it)* &
557 &
grid(ng)%rmask_full(i,j)
558# endif
559 END DO
560 END DO
561 END DO
562 END IF
565 DO j=jstrr,jendr
566 DO i=istr,iend
567 average(ng)%avgUT(i,j,k,it)=0.5_r8* &
568 &
ocean(ng)%ad_u(i,j,k, &
569 & nstp)* &
570 & (
ocean(ng)%ad_t(i-1,j,k, &
571 & nstp,it)+ &
572 &
ocean(ng)%ad_t(i ,j,k, &
573 & nstp,it))
574# ifdef WET_DRY
576 & it)* &
577 &
grid(ng)%umask_full(i,j)
578# endif
579 END DO
580 END DO
581 END DO
582 END IF
585 DO j=jstr,jend
586 DO i=istrr,iendr
587 average(ng)%avgVT(i,j,k,it)=0.5_r8* &
588 &
ocean(ng)%ad_v(i,j,k, &
589 & nstp)* &
590 & (
ocean(ng)%ad_t(i,j-1,k, &
591 & nstp,it)+ &
592 &
ocean(ng)%ad_t(i,j ,k, &
593 & nstp,it))
594# ifdef WET_DRY
596 & it)* &
597 &
grid(ng)%vmask_full(i,j)
598# endif
599 END DO
600 END DO
601 END DO
602 END IF
603 END DO
604# endif
605
606
607
608
609
611
612# ifdef WET_DRY
613
614
615
616
617
618 DO j=jstr,jendr
619 DO i=istr,iendr
620 grid(ng)%pmask_avg(i,j)=
grid(ng)%pmask_avg(i,j)+ &
621 & max(0.0_r8, &
622 & min(
grid(ng)%pmask_full(i,j), &
623 & 1.0_r8))
624 END DO
625 END DO
626 DO j=jstrr,jendr
627 DO i=istrr,iendr
628 grid(ng)%rmask_avg(i,j)=
grid(ng)%rmask_avg(i,j)+ &
629 & max(0.0_r8, &
630 & min(
grid(ng)%rmask_full(i,j), &
631 & 1.0_r8))
632 END DO
633 END DO
634 DO j=jstrr,jendr
635 DO i=istr,iendr
636 grid(ng)%umask_avg(i,j)=
grid(ng)%umask_avg(i,j)+ &
637 & max(0.0_r8, &
638 & min(
grid(ng)%umask_full(i,j), &
639 & 1.0_r8))
640 END DO
641 END DO
642 DO j=jstr,jendr
643 DO i=istrr,iendr
644 grid(ng)%vmask_avg(i,j)=
grid(ng)%vmask_avg(i,j)+ &
645 & max(0.0_r8, &
646 & min(
grid(ng)%vmask_full(i,j), &
647 & 1.0_r8))
648 END DO
649 END DO
650# endif
651
652
653
655 DO j=jstrr,jendr
656 DO i=istrr,iendr
658# ifdef WET_DRY
659 &
grid(ng)%rmask_full(i,j)* &
660# endif
661 &
ocean(ng)%ad_zeta_sol(i,j)
662 END DO
663 END DO
664 END IF
666 DO j=jstrr,jendr
667 DO i=istr,iendr
669# ifdef WET_DRY
670 &
grid(ng)%umask_full(i,j)* &
671# endif
672 &
ocean(ng)%ad_ubar_sol(i,j)
673 END DO
674 END DO
675 END IF
677 DO j=jstr,jendr
678 DO i=istrr,iendr
680# ifdef WET_DRY
681 &
grid(ng)%vmask_full(i,j)* &
682# endif
683 &
ocean(ng)%ad_vbar_sol(i,j)
684 END DO
685 END DO
686 END IF
687
688# ifdef SOLVE3D
691 DO j=jstrr,jendr
692 DO i=istr,iendr
694# ifdef WET_DRY
695 &
grid(ng)%umask_full(i,j)* &
696# endif
697 &
ocean(ng)%ad_u(i,j,k,nstp)
698 END DO
699 END DO
700 END DO
701 END IF
704 DO j=jstr,jendr
705 DO i=istrr,iendr
707# ifdef WET_DRY
708 &
grid(ng)%vmask_full(i,j)* &
709# endif
710 &
ocean(ng)%ad_v(i,j,k,nstp)
711 END DO
712 END DO
713 END DO
714 END IF
717 DO j=jstrr,jendr
718 DO i=istrr,iendr
720# ifdef WET_DRY
721 &
grid(ng)%rmask_full(i,j)* &
722# endif
723 &
ocean(ng)%ad_W_sol(i,j,k)* &
724 &
grid(ng)%pm(i,j)* &
726 END DO
727 END DO
728 END DO
729 END IF
730
733 DO j=jstrr,jendr
734 DO i=istrr,iendr
736# ifdef WET_DRY
737 &
grid(ng)%rmask_full(i,j)* &
738# endif
739 &
ocean(ng)%ad_rho(i,j,k)
740 END DO
741 END DO
742 END DO
743 END IF
747 DO j=jstrr,jendr
748 DO i=istrr,iendr
750# ifdef WET_DRY
751 &
grid(ng)%rmask_full(i,j)* &
752# endif
753 &
ocean(ng)%ad_t(i,j,k, &
754 & nstp,it)
755 END DO
756 END DO
757 END DO
758 END IF
759 END DO
760
761# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
764 DO j=jstrr,jendr
765 DO i=istrr,iendr
767# ifdef WET_DRY
768 &
grid(ng)%rmask_full(i,j)* &
769# endif
770 &
mixing(ng)%ad_Akv(i,j,k)
771 END DO
772 END DO
773 END DO
774 END IF
777 DO j=jstrr,jendr
778 DO i=istrr,iendr
780# ifdef WET_DRY
781 &
grid(ng)%rmask_full(i,j)* &
782# endif
784 END DO
785 END DO
786 END DO
787 END IF
788
789# ifdef SALINITY
792 DO j=jstrr,jendr
793 DO i=istrr,iendr
795# ifdef WET_DRY
796 &
grid(ng)%rmask_full(i,j)* &
797# endif
799 END DO
800 END DO
801 END DO
802 END IF
803# endif
804
805# endif
806# endif
807
808
809
811 DO j=jstrr,jendr
812 DO i=istr,iendr
814# ifdef WET_DRY
815 &
grid(ng)%umask_full(i,j)* &
816# endif
817 &
forces(ng)%ad_sustr(i,j)
818 END DO
819 END DO
820 END IF
822 DO j=jstr,jendr
823 DO i=istrr,iendr
825# ifdef WET_DRY
826 &
grid(ng)%vmask_full(i,j)* &
827# endif
828 &
forces(ng)%ad_svstr(i,j)
829 END DO
830 END DO
831 END IF
832
834 DO j=jstrr,jendr
835 DO i=istr,iendr
837# ifdef WET_DRY
838 &
grid(ng)%umask_full(i,j)* &
839# endif
840 &
forces(ng)%ad_bustr(i,j)
841 END DO
842 END DO
843 END IF
845 DO j=jstr,jendr
846 DO i=istrr,iendr
848# ifdef WET_DRY
849 &
grid(ng)%vmask_full(i,j)* &
850# endif
851 &
forces(ng)%ad_bvstr(i,j)
852 END DO
853 END DO
854 END IF
855
856# ifdef SOLVE3D
858 DO j=jstrr,jendr
859 DO i=istrr,iendr
861# ifdef WET_DRY
862 &
grid(ng)%rmask_full(i,j)* &
863# endif
865 END DO
866 END DO
867 END IF
868
869# ifdef SALINITY
871 DO j=jstrr,jendr
872 DO i=istrr,iendr
874# ifdef WET_DRY
875 &
grid(ng)%rmask_full(i,j)* &
876# endif
878 END DO
879 END DO
880 END IF
881# endif
882
883# ifdef SHORTWAVE
885 DO j=jstrr,jendr
886 DO i=istrr,iendr
888# ifdef WET_DRY
889 &
grid(ng)%rmask_full(i,j)* &
890# endif
891 &
forces(ng)%ad_srflx(i,j)
892 END DO
893 END DO
894 END IF
895# endif
896
897# if defined BULK_FLUXES || defined FRC_COUPLING
899 DO j=jstrr,jendr
900 DO i=istrr,iendr
902# ifdef WET_DRY
903 &
grid(ng)%rmask_full(i,j)* &
904# endif
905 &
forces(ng)%ad_lhflx(i,j)
906 END DO
907 END DO
908 END IF
909
911 DO j=jstrr,jendr
912 DO i=istrr,iendr
914# ifdef WET_DRY
915 &
grid(ng)%rmask_full(i,j)* &
916# endif
917 &
forces(ng)%ad_lrflx(i,j)
918 END DO
919 END DO
920 END IF
921
923 DO j=jstrr,jendr
924 DO i=istrr,iendr
926# ifdef WET_DRY
927 &
grid(ng)%rmask_full(i,j)* &
928# endif
929 &
forces(ng)%ad_shflx(i,j)
930 END DO
931 END DO
932 END IF
933# endif
934
935# if defined BULK_FLUXES && defined EMINUSP
937 DO j=jstrr,jendr
938 DO i=istrr,iendr
940# ifdef WET_DRY
941 &
grid(ng)%rmask_full(i,j)* &
942# endif
944 END DO
945 END DO
946 END IF
947# endif
948# endif
949
950
951
953 DO j=jstrr,jendr
954 DO i=istrr,iendr
956# ifdef WET_DRY
957 &
grid(ng)%rmask_full(i,j)* &
958# endif
959 &
ocean(ng)%ad_zeta_sol(i,j)* &
960 &
ocean(ng)%ad_zeta_sol(i,j)
961 END DO
962 END DO
963 END IF
965 DO j=jstrr,jendr
966 DO i=istr,iendr
968# ifdef WET_DRY
969 &
grid(ng)%umask_full(i,j)* &
970# endif
971 &
ocean(ng)%ad_ubar_sol(i,j)* &
972 &
ocean(ng)%ad_ubar_sol(i,j)
973 END DO
974 END DO
975 END IF
977 DO j=jstr,jendr
978 DO i=istrr,iendr
980# ifdef WET_DRY
981 &
grid(ng)%vmask_full(i,j)* &
982# endif
983 &
ocean(ng)%ad_vbar_sol(i,j)* &
984 &
ocean(ng)%ad_vbar_sol(i,j)
985 END DO
986 END DO
987 END IF
988
989# ifdef SOLVE3D
992 DO j=jstrr,jendr
993 DO i=istr,iendr
995# ifdef WET_DRY
996 &
grid(ng)%umask_full(i,j)* &
997# endif
998 &
ocean(ng)%ad_u(i,j,k,nstp)* &
999 &
ocean(ng)%ad_u(i,j,k,nstp)
1000 END DO
1001 END DO
1002 END DO
1003 END IF
1006 DO j=jstr,jendr
1007 DO i=istrr,iendr
1009# ifdef WET_DRY
1010 &
grid(ng)%vmask_full(i,j)* &
1011# endif
1012 &
ocean(ng)%ad_v(i,j,k,nstp)* &
1013 &
ocean(ng)%ad_v(i,j,k,nstp)
1014 END DO
1015 END DO
1016 END DO
1017 END IF
1020 DO j=jstr,jend
1021 DO i=istr,iend
1023# ifdef WET_DRY
1024 &
grid(ng)%rmask_full(i,j)* &
1025# endif
1026 & 0.25_r8* &
1027 & (
ocean(ng)%ad_u(i ,j,k,nstp)+ &
1028 &
ocean(ng)%ad_u(i+1,j,k,nstp))*&
1029 & (
ocean(ng)%ad_v(i,j ,k,nstp)+ &
1030 &
ocean(ng)%ad_v(i,j+1,k,nstp))
1031 END DO
1032 END DO
1033 END DO
1034 END IF
1035
1039 DO j=jstrr,jendr
1040 DO i=istrr,iendr
1042 & it)+ &
1043# ifdef WET_DRY
1044 &
grid(ng)%rmask_full(i,j)* &
1045# endif
1046 &
ocean(ng)%ad_t(i,j,k, &
1047 & nstp,it)* &
1048 &
ocean(ng)%ad_t(i,j,k, &
1049 & nstp,it)
1050 END DO
1051 END DO
1052 END DO
1053 END IF
1056 DO j=jstrr,jendr
1057 DO i=istr,iend
1059 & it)+ &
1060# ifdef WET_DRY
1061 &
grid(ng)%umask_full(i,j)* &
1062# endif
1063 & 0.5_r8* &
1064 &
ocean(ng)%ad_u(i,j,k, &
1065 & nstp)* &
1066 & (
ocean(ng)%ad_t(i-1,j,k, &
1067 & nstp,it)+ &
1068 &
ocean(ng)%ad_t(i ,j,k, &
1069 & nstp,it))
1070 END DO
1071 END DO
1072 END DO
1073 END IF
1076 DO j=jstr,jend
1077 DO i=istrr,iendr
1079 & it)+ &
1080# ifdef WET_DRY
1081 &
grid(ng)%vmask_full(i,j)* &
1082# endif
1083 & 0.5_r8* &
1084 &
ocean(ng)%ad_v(i,j,k, &
1085 & nstp)* &
1086 & (
ocean(ng)%ad_t(i,j-1,k, &
1087 & nstp,it)+ &
1088 &
ocean(ng)%ad_t(i,j ,k, &
1089 & nstp,it))
1090 END DO
1091 END DO
1092 END DO
1093 END IF
1094 END DO
1095# endif
1096 END IF
1097
1098
1099
1100
1101
1103 & (mod(
iic(ng)-1,
navg(ng)).eq.0).and. &
1106 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1107 IF (
navg(ng).eq.1)
THEN
1109 ELSE
1111 END IF
1112 END IF
1113
1114
1115
1116# ifdef WET_DRY
1117
1118
1119# endif
1120
1121# ifdef WET_DRY
1122 DO j=jstrr,jendr
1123 DO i=istrr,iendr
1124 pfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%pmask_avg(i,j))
1125 rfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%rmask_avg(i,j))
1126 ufac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%umask_avg(i,j))
1127 vfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%vmask_avg(i,j))
1128 END DO
1129 END DO
1130# else
1131# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1132 defined opt_observations || defined sensitivity_4dvar || \
1133 defined so_semi
1134 fac=1.0_r8
1135# else
1136 fac=1.0_r8/real(
navg(ng),r8)
1137# endif
1138 DO j=jstrr,jendr
1139 DO i=istrr,iendr
1140 pfac(i,j)=fac
1141 rfac(i,j)=fac
1142 ufac(i,j)=fac
1143 vfac(i,j)=fac
1144 END DO
1145 END DO
1146# endif
1147
1148
1149
1151 DO j=jstrr,jendr
1152 DO i=istrr,iendr
1153 average(ng)%avgzeta(i,j)=rfac(i,j)* &
1155 END DO
1156 END DO
1157 END IF
1159 DO j=jstrr,jendr
1160 DO i=istr,iendr
1161 average(ng)%avgu2d(i,j)=ufac(i,j)* &
1163 END DO
1164 END DO
1165 END IF
1167 DO j=jstr,jendr
1168 DO i=istrr,iendr
1169 average(ng)%avgv2d(i,j)=vfac(i,j)* &
1171 END DO
1172 END DO
1173 END IF
1174
1175# ifdef SOLVE3D
1178 DO j=jstrr,jendr
1179 DO i=istr,iendr
1180 average(ng)%avgu3d(i,j,k)=ufac(i,j)* &
1182 END DO
1183 END DO
1184 END DO
1185 END IF
1188 DO j=jstr,jendr
1189 DO i=istrr,iendr
1190 average(ng)%avgv3d(i,j,k)=vfac(i,j)* &
1192 END DO
1193 END DO
1194 END DO
1195 END IF
1196
1199 DO j=jstrr,jendr
1200 DO i=istrr,iendr
1201 average(ng)%avgw3d(i,j,k)=rfac(i,j)* &
1203 END DO
1204 END DO
1205 END DO
1206 END IF
1207
1210 DO j=jstrr,jendr
1211 DO i=istrr,iendr
1212 average(ng)%avgrho(i,j,k)=rfac(i,j)* &
1214 END DO
1215 END DO
1216 END DO
1217 END IF
1221 DO j=jstrr,jendr
1222 DO i=istrr,iendr
1223 average(ng)%avgt(i,j,k,it)=rfac(i,j)* &
1225 END DO
1226 END DO
1227 END DO
1228 END IF
1229 END DO
1230
1231# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1234 DO j=jstrr,jendr
1235 DO i=istrr,iendr
1236 average(ng)%avgAKv(i,j,k)=rfac(i,j)* &
1238 END DO
1239 END DO
1240 END DO
1241 END IF
1244 DO j=jstrr,jendr
1245 DO i=istrr,iendr
1246 average(ng)%avgAKt(i,j,k)=rfac(i,j)* &
1248 END DO
1249 END DO
1250 END DO
1251 END IF
1254 DO j=jstrr,jendr
1255 DO i=istrr,iendr
1256 average(ng)%avgAKs(i,j,k)=rfac(i,j)* &
1258 END DO
1259 END DO
1260 END DO
1261 END IF
1262# endif
1263# endif
1264
1265
1266
1268 DO j=jstrr,jendr
1269 DO i=istr,iendr
1270 average(ng)%avgsus(i,j)=ufac(i,j)* &
1272 END DO
1273 END DO
1274 END IF
1276 DO j=jstr,jendr
1277 DO i=istrr,iendr
1278 average(ng)%avgsvs(i,j)=vfac(i,j)* &
1280 END DO
1281 END DO
1282 END IF
1283
1285 DO j=jstrr,jendr
1286 DO i=istr,iendr
1287 average(ng)%avgbus(i,j)=ufac(i,j)* &
1289 END DO
1290 END DO
1291 END IF
1293 DO j=jstr,jendr
1294 DO i=istrr,iendr
1295 average(ng)%avgbvs(i,j)=vfac(i,j)* &
1297 END DO
1298 END DO
1299 END IF
1300
1301# ifdef SOLVE3D
1303 DO j=jstrr,jendr
1304 DO i=istrr,iendr
1305 average(ng)%avgstf(i,j)=rfac(i,j)* &
1307 END DO
1308 END DO
1309 END IF
1310
1311# ifdef SALINITY
1313 DO j=jstrr,jendr
1314 DO i=istrr,iendr
1315 average(ng)%avgswf(i,j)=rfac(i,j)* &
1317 END DO
1318 END DO
1319 END IF
1320# endif
1321
1322# ifdef SHORTWAVE
1324 DO j=jstrr,jendr
1325 DO i=istrr,iendr
1326 average(ng)%avgsrf(i,j)=rfac(i,j)* &
1328 END DO
1329 END DO
1330 END IF
1331# endif
1332
1333# if defined BULK_FLUXES || defined FRC_COUPLING
1335 DO j=jstrr,jendr
1336 DO i=istrr,iendr
1337 average(ng)%avglhf(i,j)=rfac(i,j)* &
1339 END DO
1340 END DO
1341 END IF
1342
1344 DO j=jstrr,jendr
1345 DO i=istrr,iendr
1346 average(ng)%avgshf(i,j)=rfac(i,j)* &
1348 END DO
1349 END DO
1350 END IF
1351
1353 DO j=jstrr,jendr
1354 DO i=istrr,iendr
1355 average(ng)%avglrf(i,j)=rfac(i,j)* &
1357 END DO
1358 END DO
1359 END IF
1360# endif
1361
1362# if defined BULK_FLUXES && defined EMINUSP
1364 DO j=jstrr,jendr
1365 DO i=istrr,iendr
1366 average(ng)%avgevap(i,j)=rfac(i,j)* &
1368 END DO
1369 END DO
1370 END IF
1371# endif
1372# endif
1373
1374
1375
1377 DO j=jstrr,jendr
1378 DO i=istrr,iendr
1379 average(ng)%avgZZ(i,j)=rfac(i,j)* &
1381 END DO
1382 END DO
1383 END IF
1385 DO j=jstrr,jendr
1386 DO i=istr,iendr
1387 average(ng)%avgU2(i,j)=ufac(i,j)* &
1389 END DO
1390 END DO
1391 END IF
1393 DO j=jstr,jendr
1394 DO i=istrr,iendr
1395 average(ng)%avgV2(i,j)=vfac(i,j)* &
1397 END DO
1398 END DO
1399 END IF
1400
1401# ifdef SOLVE3D
1404 DO j=jstrr,jendr
1405 DO i=istr,iendr
1406 average(ng)%avgUU(i,j,k)=ufac(i,j)* &
1408 END DO
1409 END DO
1410 END DO
1411 END IF
1414 DO j=jstr,jendr
1415 DO i=istrr,iendr
1416 average(ng)%avgVV(i,j,k)=vfac(i,j)* &
1418 END DO
1419 END DO
1420 END DO
1421 END IF
1424 DO j=jstr,jend
1425 DO i=istr,iend
1426 average(ng)%avgUV(i,j,k)=rfac(i,j)* &
1428 END DO
1429 END DO
1430 END DO
1431 END IF
1432
1436 DO j=jstrr,jendr
1437 DO i=istrr,iendr
1438 average(ng)%avgTT(i,j,k,it)=rfac(i,j)* &
1440 & it)
1441 END DO
1442 END DO
1443 END DO
1444 END IF
1447 DO j=jstrr,jendr
1448 DO i=istr,iend
1449 average(ng)%avgUT(i,j,k,it)=ufac(i,j)* &
1451 & it)
1452 END DO
1453 END DO
1454 END DO
1455 END IF
1458 DO j=jstr,jend
1459 DO i=istrr,iendr
1460 average(ng)%avgVT(i,j,k,it)=vfac(i,j)* &
1462 & it)
1463 END DO
1464 END DO
1465 END DO
1466 END IF
1467 END DO
1468# endif
1469 END IF
1470
1471 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
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable ntsavg