125
126
130# if defined FORWARD_WRITE && defined SOLVE3D
132# endif
135# ifdef SOLVE3D
137# endif
140# if defined BBL_MODEL
142# endif
143# if defined SEDIMENT && defined BEDLOAD
146# endif
147
149# ifdef SOLVE3D
151# endif
152# ifdef DISTRIBUTE
154# ifdef SOLVE3D
156# endif
157# endif
159# ifdef SOLVE3D
161# endif
163
164 implicit none
165
166
167
168 integer, intent(in) :: ng, tile
169 integer, intent(in) :: LBi, UBi, LBj, UBj
170 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
171 integer, intent(in) :: Kout
172# ifdef SOLVE3D
173 integer, intent(in) :: Nout
174# endif
175
176
177
178
179 integer :: i, it, j, k
180
181 real(r8) :: fac
182
183 real(r8) :: pfac(IminS:ImaxS,JminS:JmaxS)
184 real(r8) :: rfac(IminS:ImaxS,JminS:JmaxS)
185 real(r8) :: ufac(IminS:ImaxS,JminS:JmaxS)
186 real(r8) :: vfac(IminS:ImaxS,JminS:JmaxS)
187
188# ifdef SOLVE3D
189 real(r8) :: potvor(LBi:UBi,LBj:UBj,N(ng))
190 real(r8) :: relvor(LBi:UBi,LBj:UBj,N(ng))
191# endif
192 real(r8) :: potvor_bar(LBi:UBi,LBj:UBj)
193 real(r8) :: relvor_bar(LBi:UBi,LBj:UBj)
194# ifdef BBL_MODEL
195 real(r8), allocatable :: wrk(:,:)
196# endif
197
198# include "set_bounds.h"
199
200
201
202
203
204 IF (
navg(ng).eq.0)
RETURN
205
206
207
208
209
213 & lbi, ubi, lbj, ubj, &
214 & imins, imaxs, jmins, jmaxs, &
215# ifdef SOLVE3D
216 & kout, nout, &
217# else
218 & kout, &
219# endif
220# ifdef MASKING
221 &
grid(ng) % pmask, &
222 &
grid(ng) % umask, &
223 &
grid(ng) % vmask, &
224# endif
231# ifdef SOLVE3D
233 &
ocean(ng) % pden, &
236# endif
237 &
ocean(ng) % ubar, &
238 &
ocean(ng) % vbar, &
239 &
ocean(ng) % zeta, &
240# ifdef SOLVE3D
241 & potvor, relvor, &
242# endif
243 & potvor_bar, relvor_bar)
244 END IF
245
246
247
248
249
250
251
253 & (mod(
iic(ng)-1,
navg(ng)).eq.1)).or. &
256
257# ifdef WET_DRY
258
259
260
261
262
263 DO j=jstr,jendr
264 DO i=istr,iendr
265 grid(ng)%pmask_avg(i,j)=max(0.0_r8, &
266 & min(
grid(ng)%pmask_full(i,j), &
267 & 1.0_r8))
268 END DO
269 END DO
270 DO j=jstrr,jendr
271 DO i=istrr,iendr
272 grid(ng)%rmask_avg(i,j)=max(0.0_r8, &
273 & min(
grid(ng)%rmask_full(i,j), &
274 & 1.0_r8))
275 END DO
276 END DO
277 DO j=jstrr,jendr
278 DO i=istr,iendr
279 grid(ng)%umask_avg(i,j)=max(0.0_r8, &
280 & min(
grid(ng)%umask_full(i,j), &
281 & 1.0_r8))
282 END DO
283 END DO
284 DO j=jstr,jendr
285 DO i=istrr,iendr
286 grid(ng)%vmask_avg(i,j)=max(0.0_r8, &
287 & min(
grid(ng)%vmask_full(i,j), &
288 & 1.0_r8))
289 END DO
290 END DO
291# endif
292
293
294
296 DO j=jstrr,jendr
297 DO i=istrr,iendr
299# ifdef WET_DRY
301 &
grid(ng)%rmask_full(i,j)
302# endif
303 END DO
304 END DO
305 END IF
306
308 DO j=jstrr,jendr
309 DO i=istr,iendr
311# ifdef WET_DRY
313 &
grid(ng)%umask_full(i,j)
314# endif
315 END DO
316 END DO
317 END IF
319 DO j=jstr,jendr
320 DO i=istrr,iendr
322# ifdef WET_DRY
324 &
grid(ng)%vmask_full(i,j)
325# endif
326 END DO
327 END DO
328 END IF
329
332 & lbi, ubi, lbj, ubj, &
333 &
grid(ng) % CosAngler, &
334 &
grid(ng) % SinAngler, &
335# ifdef MASKING
336 &
grid(ng)%rmask_full, &
337# endif
338 &
ocean(ng) % ubar(:,:,kout), &
339 &
ocean(ng) % vbar(:,:,kout), &
342 END IF
343
344# ifdef SOLVE3D
347 DO j=jstrr,jendr
348 DO i=istr,iendr
350# ifdef WET_DRY
352 &
grid(ng)%umask_full(i,j)
353# endif
354 END DO
355 END DO
356 END DO
357 END IF
360 DO j=jstr,jendr
361 DO i=istrr,iendr
363# ifdef WET_DRY
365 &
grid(ng)%vmask_full(i,j)
366# endif
367 END DO
368 END DO
369 END DO
370 END IF
371
374 DO j=jstrr,jendr
375 DO i=istrr,iendr
377# ifdef WET_DRY
379 &
grid(ng)%vmask_full(i,j)
380# endif
381 END DO
382 END DO
383 END DO
384 END IF
387 DO j=jstrr,jendr
388 DO i=istrr,iendr
390# ifdef WET_DRY
392 &
grid(ng)%vmask_full(i,j)
393# endif
394 END DO
395 END DO
396 END DO
397 END IF
398
401 DO j=jstrr,jendr
402 DO i=istrr,iendr
404 &
grid(ng)%pm(i,j)* &
406# ifdef WET_DRY
408 &
grid(ng)%rmask_full(i,j)
409# endif
410 END DO
411 END DO
412 END DO
413 END IF
416 DO j=jstrr,jendr
417 DO i=istrr,iendr
419# ifdef WET_DRY
421 &
grid(ng)%rmask_full(i,j)
422# endif
423 END DO
424 END DO
425 END DO
426 END IF
427
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 DO
440 END IF
444 DO j=jstrr,jendr
445 DO i=istrr,iendr
447# ifdef WET_DRY
449 &
grid(ng)%rmask_full(i,j)
450# endif
451 END DO
452 END DO
453 END DO
454 END IF
455 END DO
456
457# if defined SEDIMENT && defined BEDLOAD
460 DO j=jstrr,jendr
461 DO i=istr,iendr
463# ifdef WET_DRY
464 sedbed(ng)%avgbedldu(i,j,it)=
sedbed(ng)%bedldu(i,j,it)* &
465 &
grid(ng)%umask_full(i,j)
466# endif
467 END DO
468 END DO
469 END IF
470
472 DO j=jstr,jendr
473 DO i=istrr,iendr
475# ifdef WET_DRY
476 sedbed(ng)%avgbedldv(i,j,it)=
sedbed(ng)%bedldv(i,j,it)* &
477 &
grid(ng)%vmask_full(i,j)
478# endif
479 END DO
480 END DO
481 END IF
482 END DO
483# endif
484
485# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
488 DO j=jstrr,jendr
489 DO i=istrr,iendr
491# ifdef WET_DRY
493 &
grid(ng)%rmask_full(i,j)
494# endif
495 END DO
496 END DO
497 END DO
498 END IF
501 DO j=jstrr,jendr
502 DO i=istrr,iendr
504# ifdef WET_DRY
506 &
grid(ng)%rmask_full(i,j)
507# endif
508 END DO
509 END DO
510 END DO
511 END IF
512# ifdef SALINITY
515 DO j=jstrr,jendr
516 DO i=istrr,iendr
518# ifdef WET_DRY
520 &
grid(ng)%rmask_full(i,j)
521# endif
522 END DO
523 END DO
524 END DO
525 END IF
526# endif
527# endif
528# ifdef LMD_SKPP
530 DO j=jstrr,jendr
531 DO i=istrr,iendr
533# ifdef WET_DRY
535 &
grid(ng)%rmask_full(i,j)
536# endif
537 END DO
538 END DO
539 END IF
540# endif
541# ifdef LMD_BKPP
543 DO j=jstrr,jendr
544 DO i=istrr,iendr
546# ifdef WET_DRY
548 &
grid(ng)%rmask_full(i,j)
549# endif
550 END DO
551 END DO
552 END IF
553# endif
554# endif
555
556# if defined FORWARD_WRITE && defined SOLVE3D
557
558
559
561 DO j=jstrr,jendr
562 DO i=istr,iendr
564# ifdef WET_DRY
566 &
grid(ng)%umask_full(i,j)
567# endif
568 END DO
569 END DO
570 END IF
572 DO j=jstrr,jendr
573 DO i=istr,iendr
575# ifdef WET_DRY
577 &
grid(ng)%umask_full(i,j)
578# endif
579 END DO
580 END DO
581 END IF
582
584 DO j=jstr,jendr
585 DO i=istrr,iendr
587# ifdef WET_DRY
589 &
grid(ng)%vmask_full(i,j)
590# endif
591 END DO
592 END DO
593 END IF
595 DO j=jstr,jendr
596 DO i=istrr,iendr
598# ifdef WET_DRY
600 &
grid(ng)%vmask_full(i,j)
601# endif
602 END DO
603 END DO
604 END IF
605# endif
606
607
608
610 DO j=jstrr,jendr
611 DO i=istr,iendr
613# ifdef WET_DRY
615 &
grid(ng)%umask_full(i,j)
616# endif
617 END DO
618 END DO
619 END IF
621 DO j=jstr,jendr
622 DO i=istrr,iendr
624# ifdef WET_DRY
626 &
grid(ng)%vmask_full(i,j)
627# endif
628 END DO
629 END DO
630 END IF
631
633 DO j=jstrr,jendr
634 DO i=istr,iendr
636# ifdef WET_DRY
638 &
grid(ng)%umask_full(i,j)
639# endif
640 END DO
641 END DO
642 END IF
644 DO j=jstr,jendr
645 DO i=istrr,iendr
647# ifdef WET_DRY
649 &
grid(ng)%vmask_full(i,j)
650# endif
651 END DO
652 END DO
653 END IF
654# ifdef BBL_MODEL
656 DO j=jstrr,jendr
657 DO i=istr,iendr
659# ifdef WET_DRY
661 &
grid(ng)%umask_full(i,j)
662# endif
663 END DO
664 END DO
665 END IF
667 DO j=jstrr,jendr
668 DO i=istr,iendr
670# ifdef WET_DRY
672 &
grid(ng)%umask_full(i,j)
673# endif
674 END DO
675 END DO
676 END IF
678 DO j=jstrr,jendr
679 DO i=istr,iendr
681# ifdef WET_DRY
683 &
grid(ng)%umask_full(i,j)
684# endif
685 END DO
686 END DO
687 END IF
689 DO j=jstrr,jendr
690 DO i=istr,iendr
692# ifdef WET_DRY
694 &
grid(ng)%umask_full(i,j)
695# endif
696 END DO
697 END DO
698 END IF
700 DO j=jstrr,jendr
701 DO i=istr,iendr
702 average(ng)%avgUbcs(i,j)=
bbl(ng)%bustrcwmax(i,j)
703# ifdef WET_DRY
705 &
grid(ng)%umask_full(i,j)
706# endif
707 END DO
708 END DO
709 END IF
711 DO j=jstrr,jendr
712 DO i=istr,iendr
713 average(ng)%avgVbcs(i,j)=
bbl(ng)%bvstrcwmax(i,j)
714# ifdef WET_DRY
716 &
grid(ng)%umask_full(i,j)
717# endif
718 END DO
719 END DO
720 END IF
722 allocate (wrk(lbi:ubi,lbj:ubj))
723 wrk(lbi:ubi,lbj:ubj)=0.0_r8
724 wrk=sqrt(
bbl(ng)%bustrcwmax*
bbl(ng)%bustrcwmax+ &
725 &
bbl(ng)%bvstrcwmax*
bbl(ng)%bvstrcwmax+1.0e-10_r8)
726 DO j=jstrr,jendr
727 DO i=istr,iendr
728 average(ng)%avgUVwc(i,j)=wrk(i,j)
729# ifdef WET_DRY
731 &
grid(ng)%umask_full(i,j)
732# endif
733 END DO
734 END DO
735 deallocate(wrk)
736 END IF
738 DO j=jstrr,jendr
739 DO i=istr,iendr
741# ifdef WET_DRY
743 &
grid(ng)%umask_full(i,j)
744# endif
745 END DO
746 END DO
747 END IF
749 DO j=jstrr,jendr
750 DO i=istr,iendr
752# ifdef WET_DRY
754 &
grid(ng)%umask_full(i,j)
755# endif
756 END DO
757 END DO
758 END IF
760 DO j=jstrr,jendr
761 DO i=istr,iendr
763# ifdef WET_DRY
765 &
grid(ng)%umask_full(i,j)
766# endif
767 END DO
768 END DO
769 END IF
771 DO j=jstrr,jendr
772 DO i=istr,iendr
774# ifdef WET_DRY
776 &
grid(ng)%umask_full(i,j)
777# endif
778 END DO
779 END DO
780 END IF
781# endif
782# ifdef SOLVE3D
783# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
785 DO j=jstrr,jendr
786 DO i=istrr,iendr
788# ifdef WET_DRY
790 &
grid(ng)%rmask_full(i,j)
791# endif
792 END DO
793 END DO
794 END IF
795# endif
796# if defined BULK_FLUXES
798 DO j=jstrr,jendr
799 DO i=istrr,iendr
801# ifdef WET_DRY
803 &
grid(ng)%rmask_full(i,j)
804# endif
805 END DO
806 END DO
807 END IF
808# endif
809# if defined BULK_FLUXES || defined ECOSIM
811 DO j=jstrr,jendr
812 DO i=istrr,iendr
814# ifdef WET_DRY
816 &
grid(ng)%rmask_full(i,j)
817# endif
818 END DO
819 END DO
820 END IF
821
823 DO j=jstrr,jendr
824 DO i=istrr,iendr
826# ifdef WET_DRY
828 &
grid(ng)%rmask_full(i,j)
829# endif
830 END DO
831 END DO
832 END IF
833
836 & lbi, ubi, lbj, ubj, &
837 &
grid(ng) % CosAngler, &
838 &
grid(ng) % SinAngler, &
839# ifdef MASKING
840 &
grid(ng)%rmask_full, &
841# endif
846 END IF
847# endif
848
850 DO j=jstrr,jendr
851 DO i=istrr,iendr
853# ifdef WET_DRY
855 &
grid(ng)%rmask_full(i,j)
856# endif
857 END DO
858 END DO
859 END IF
860# ifdef SALINITY
862 DO j=jstrr,jendr
863 DO i=istrr,iendr
865# ifdef WET_DRY
867 &
grid(ng)%rmask_full(i,j)
868# endif
869 END DO
870 END DO
871 END IF
872# endif
873# ifdef SHORTWAVE
875 DO j=jstrr,jendr
876 DO i=istrr,iendr
878# ifdef WET_DRY
880 &
grid(ng)%rmask_full(i,j)
881# endif
882 END DO
883 END DO
884 END IF
885# endif
886
887# if defined BULK_FLUXES || defined FRC_COUPLING
889 DO j=jstrr,jendr
890 DO i=istrr,iendr
892# ifdef WET_DRY
894 &
grid(ng)%rmask_full(i,j)
895# endif
896 END DO
897 END DO
898 END IF
899
901 DO j=jstrr,jendr
902 DO i=istrr,iendr
904# ifdef WET_DRY
906 &
grid(ng)%rmask_full(i,j)
907# endif
908 END DO
909 END DO
910 END IF
911
913 DO j=jstrr,jendr
914 DO i=istrr,iendr
916# ifdef WET_DRY
918 &
grid(ng)%rmask_full(i,j)
919# endif
920 END DO
921 END DO
922 END IF
923# endif
924
925# if defined BULK_FLUXES && defined EMINUSP
927 DO j=jstrr,jendr
928 DO i=istrr,iendr
930# ifdef WET_DRY
932 &
grid(ng)%rmask_full(i,j)
933# endif
934 END DO
935 END DO
936 END IF
937
939 DO j=jstrr,jendr
940 DO i=istrr,iendr
942# ifdef WET_DRY
944 &
grid(ng)%rmask_full(i,j)
945# endif
946 END DO
947 END DO
948 END IF
949# endif
950# endif
951# ifdef WEC
952
953
954
956 DO j=jstrr,jendr
957 DO i=istr,iendr
959# ifdef WET_DRY
961 &
grid(ng)%umask_full(i,j)
962# endif
963 END DO
964 END DO
965 END IF
967 DO j=jstr,jendr
968 DO i=istrr,iendr
970# ifdef WET_DRY
972 &
grid(ng)%vmask_full(i,j)
973# endif
974 END DO
975 END DO
976 END IF
977
979 DO j=jstrr,jendr
980 DO i=istr,iendr
982# ifdef WET_DRY
984 &
grid(ng)%umask_full(i,j)
985# endif
986 END DO
987 END DO
988 END IF
990 DO j=jstr,jendr
991 DO i=istrr,iendr
993# ifdef WET_DRY
995 &
grid(ng)%vmask_full(i,j)
996# endif
997 END DO
998 END DO
999 END IF
1000# endif
1001# ifdef SOLVE3D
1002# ifdef WEC
1005 DO j=jstrr,jendr
1006 DO i=istr,iendr
1008# ifdef WET_DRY
1010 &
grid(ng)%umask_full(i,j)
1011# endif
1012 END DO
1013 END DO
1014 END DO
1015 END IF
1018 DO j=jstr,jendr
1019 DO i=istrr,iendr
1021# ifdef WET_DRY
1023 &
grid(ng)%vmask_full(i,j)
1024# endif
1025 END DO
1026 END DO
1027 END DO
1028 END IF
1031 DO j=jstr,jendr
1032 DO i=istrr,iendr
1034# ifdef WET_DRY
1036 &
grid(ng)%vmask_full(i,j)
1037# endif
1038 END DO
1039 END DO
1040 END DO
1041 END IF
1044 DO j=jstr,jendr
1045 DO i=istrr,iendr
1047# ifdef WET_DRY
1049 &
grid(ng)%vmask_full(i,j)
1050# endif
1051 END DO
1052 END DO
1053 END DO
1054 END IF
1057 DO j=jstrr,jendr
1058 DO i=istr,iendr
1060# ifdef WET_DRY
1062 &
grid(ng)%umask_full(i,j)
1063# endif
1064 END DO
1065 END DO
1066 END DO
1067 END IF
1070 DO j=jstr,jendr
1071 DO i=istrr,iendr
1073# ifdef WET_DRY
1075 &
grid(ng)%vmask_full(i,j)
1076# endif
1077 END DO
1078 END DO
1079 END DO
1080 END IF
1081# endif
1082# ifdef WEC_VF
1084 DO j=jstrr,jendr
1085 DO i=istrr,iendr
1087# ifdef WET_DRY
1089 &
grid(ng)%rmask_full(i,j)
1090# endif
1091 END DO
1092 END DO
1093 END IF
1095 DO j=jstrr,jendr
1096 DO i=istrr,iendr
1098# ifdef WET_DRY
1100 &
grid(ng)%rmask_full(i,j)
1101# endif
1102 END DO
1103 END DO
1104 END IF
1106 DO j=jstrr,jendr
1107 DO i=istrr,iendr
1109# ifdef WET_DRY
1111 &
grid(ng)%rmask_full(i,j)
1112# endif
1113 END DO
1114 END DO
1115 END IF
1116# endif
1117# endif
1118# ifdef WAVES_HEIGHT
1120 DO j=jstrr,jendr
1121 DO i=istrr,iendr
1123# ifdef WET_DRY
1125 &
grid(ng)%rmask_full(i,j)
1126# endif
1127 END DO
1128 END DO
1129 END IF
1131 DO j=jstrr,jendr
1132 DO i=istrr,iendr
1135# ifdef WET_DRY
1137 &
grid(ng)%rmask_full(i,j)
1138# endif
1139 END DO
1140 END DO
1141 END IF
1142# endif
1143# ifdef WAVES_LENGTH
1145 DO j=jstrr,jendr
1146 DO i=istrr,iendr
1148# ifdef WET_DRY
1150 &
grid(ng)%rmask_full(i,j)
1151# endif
1152 END DO
1153 END DO
1154 END IF
1155# endif
1156# ifdef WAVES_LENGTHP
1158 DO j=jstrr,jendr
1159 DO i=istrr,iendr
1161# ifdef WET_DRY
1163 &
grid(ng)%rmask_full(i,j)
1164# endif
1165 END DO
1166 END DO
1167 END IF
1168# endif
1169# ifdef WAVES_DIR
1171 DO j=jstrr,jendr
1172 DO i=istrr,iendr
1174# ifdef WET_DRY
1176 &
grid(ng)%rmask_full(i,j)
1177# endif
1178 END DO
1179 END DO
1180 END IF
1181# endif
1182# ifdef WAVES_DIRP
1184 DO j=jstrr,jendr
1185 DO i=istrr,iendr
1187# ifdef WET_DRY
1189 &
grid(ng)%rmask_full(i,j)
1190# endif
1191 END DO
1192 END DO
1193 END IF
1194# endif
1195# ifdef WAVES_TOP_PERIOD
1197 DO j=jstrr,jendr
1198 DO i=istrr,iendr
1200# ifdef WET_DRY
1202 &
grid(ng)%rmask_full(i,j)
1203# endif
1204 END DO
1205 END DO
1206 END IF
1207# endif
1208# ifdef WAVES_BOT_PERIOD
1210 DO j=jstrr,jendr
1211 DO i=istrr,iendr
1213# ifdef WET_DRY
1215 &
grid(ng)%rmask_full(i,j)
1216# endif
1217 END DO
1218 END DO
1219 END IF
1220# endif
1221# ifdef BBL_MODEL
1223 DO j=jstrr,jendr
1224 DO i=istrr,iendr
1226# ifdef WET_DRY
1228 &
grid(ng)%rmask_full(i,j)
1229# endif
1230 END DO
1231 END DO
1232 END IF
1233# endif
1234# if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
1236 DO j=jstrr,jendr
1237 DO i=istrr,iendr
1239# ifdef WET_DRY
1241 &
grid(ng)%rmask_full(i,j)
1242# endif
1243 END DO
1244 END DO
1245 END IF
1246# endif
1247# if defined WAV_COUPLING || defined TKE_WAVEDISS || \
1248 defined wdiss_thorguza || defined wdiss_churthor
1250 DO j=jstrr,jendr
1251 DO i=istrr,iendr
1253# ifdef WET_DRY
1255 &
grid(ng)%rmask_full(i,j)
1256# endif
1257 END DO
1258 END DO
1259 END IF
1261 DO j=jstrr,jendr
1262 DO i=istrr,iendr
1264# ifdef WET_DRY
1266 &
grid(ng)%rmask_full(i,j)
1267# endif
1268 END DO
1269 END DO
1270 END IF
1271# endif
1272# ifdef ROLLER_SVENDSEN
1274 DO j=jstrr,jendr
1275 DO i=istrr,iendr
1277# ifdef WET_DRY
1279 &
grid(ng)%rmask_full(i,j)
1280# endif
1281 END DO
1282 END DO
1283 END IF
1284# endif
1285# ifdef WEC_ROLLER
1287 DO j=jstrr,jendr
1288 DO i=istrr,iendr
1290# ifdef WET_DRY
1292 &
grid(ng)%rmask_full(i,j)
1293# endif
1294 END DO
1295 END DO
1296 END IF
1298 DO j=jstrr,jendr
1299 DO i=istrr,iendr
1301# ifdef WET_DRY
1303 &
grid(ng)%rmask_full(i,j)
1304# endif
1305 END DO
1306 END DO
1307 END IF
1308# endif
1309# ifdef UV_KIRBY
1311 DO j=jstrr,jendr
1312 DO i=istrr,iendr
1314# ifdef WET_DRY
1316 &
grid(ng)%rmask_full(i,j)
1317# endif
1318 END DO
1319 END DO
1320 END IF
1322 DO j=jstrr,jendr
1323 DO i=istrr,iendr
1325# ifdef WET_DRY
1327 &
grid(ng)%rmask_full(i,j)
1328# endif
1329 END DO
1330 END DO
1331 END IF
1332# endif
1333
1334
1335
1337 DO j=jstr,jend
1338 DO i=istr,iend
1339 average(ng)%avgpvor2d(i,j)=potvor_bar(i,j)
1340# ifdef WET_DRY
1342 &
grid(ng)%pmask_full(i,j)
1343# endif
1344 END DO
1345 END DO
1346 END IF
1348 DO j=jstr,jend
1349 DO i=istr,iend
1350 average(ng)%avgrvor2d(i,j)=relvor_bar(i,j)
1351# ifdef WET_DRY
1353 &
grid(ng)%pmask_full(i,j)
1354# endif
1355 END DO
1356 END DO
1357 END IF
1358# ifdef SOLVE3D
1361 DO j=jstr,jend
1362 DO i=istr,iend
1363 average(ng)%avgpvor3d(i,j,k)=potvor(i,j,k)
1364# ifdef WET_DRY
1366 & k)* &
1367 &
grid(ng)%pmask_full(i,j)
1368# endif
1369 END DO
1370 END DO
1371 END DO
1372 END IF
1375 DO j=jstr,jend
1376 DO i=istr,iend
1377 average(ng)%avgrvor3d(i,j,k)=relvor(i,j,k)
1378# ifdef WET_DRY
1380 & k)* &
1381 &
grid(ng)%pmask_full(i,j)
1382# endif
1383 END DO
1384 END DO
1385 END DO
1386 END IF
1387# endif
1388
1389
1390
1392 DO j=jstrr,jendr
1393 DO i=istrr,iendr
1395 &
ocean(ng)%zeta(i,j,kout)
1396# ifdef WET_DRY
1398 &
grid(ng)%rmask_full(i,j)
1399# endif
1400 END DO
1401 END DO
1402 END IF
1404 DO j=jstrr,jendr
1405 DO i=istr,iendr
1407 &
ocean(ng)%ubar(i,j,kout)
1408# ifdef WET_DRY
1410 &
grid(ng)%umask_full(i,j)
1411# endif
1412 END DO
1413 END DO
1414 END IF
1416 DO j=jstr,jendr
1417 DO i=istrr,iendr
1419 &
ocean(ng)%vbar(i,j,kout)
1420# ifdef WET_DRY
1422 &
grid(ng)%vmask_full(i,j)
1423# endif
1424 END DO
1425 END DO
1426 END IF
1427
1428# ifdef SOLVE3D
1431 DO j=jstrr,jendr
1432 DO i=istr,iendr
1434 &
ocean(ng)%u(i,j,k,nout)
1435# ifdef WET_DRY
1437 &
grid(ng)%umask_full(i,j)
1438# endif
1439 END DO
1440 END DO
1441 END DO
1442 END IF
1445 DO j=jstr,jendr
1446 DO i=istrr,iendr
1448 &
ocean(ng)%v(i,j,k,nout)
1449# ifdef WET_DRY
1451 &
grid(ng)%vmask_full(i,j)
1452# endif
1453 END DO
1454 END DO
1455 END DO
1456 END IF
1459 DO j=jstr,jend
1460 DO i=istr,iend
1461 average(ng)%avgUV(i,j,k)=0.25_r8* &
1462 & (
ocean(ng)%u(i ,j ,k,nout)+ &
1463 &
ocean(ng)%u(i+1,j ,k,nout))* &
1464 & (
ocean(ng)%v(i ,j ,k,nout)+ &
1465 &
ocean(ng)%v(i ,j+1,k,nout))
1466# ifdef WET_DRY
1468 &
grid(ng)%rmask_full(i,j)
1469# endif
1470 END DO
1471 END DO
1472 END DO
1473 END IF
1474
1477 DO j=jstrr,jendr
1478 DO i=istr,iendr
1480# ifdef WET_DRY
1482 &
grid(ng)%umask_full(i,j)
1483# endif
1484 END DO
1485 END DO
1486 END DO
1487 END IF
1490 DO j=jstr,jendr
1491 DO i=istrr,iendr
1493# ifdef WET_DRY
1495 &
grid(ng)%vmask_full(i,j)
1496# endif
1497 END DO
1498 END DO
1499 END DO
1500 END IF
1501
1505 DO j=jstrr,jendr
1506 DO i=istrr,iendr
1508 & nout,it)* &
1509 &
ocean(ng)%t(i,j,k, &
1510 & nout,it)
1511# ifdef WET_DRY
1513 & it)* &
1514 &
grid(ng)%rmask_full(i,j)
1515# endif
1516 END DO
1517 END DO
1518 END DO
1519 END IF
1522 DO j=jstrr,jendr
1523 DO i=istr,iend
1524 average(ng)%avgUT(i,j,k,it)=0.5_r8* &
1525 &
ocean(ng)%u(i,j,k,nout)* &
1526 & (
ocean(ng)%t(i-1,j,k, &
1527 & nout,it)+ &
1528 &
ocean(ng)%t(i ,j,k, &
1529 & nout,it))
1530# ifdef WET_DRY
1532 & it)* &
1533 &
grid(ng)%umask_full(i,j)
1534# endif
1535 END DO
1536 END DO
1537 END DO
1538 END IF
1541 DO j=jstr,jend
1542 DO i=istrr,iendr
1543 average(ng)%avgVT(i,j,k,it)=0.5_r8* &
1544 &
ocean(ng)%v(i,j,k,nout)* &
1545 & (
ocean(ng)%t(i,j-1,k, &
1546 & nout,it)+ &
1547 &
ocean(ng)%t(i,j ,k, &
1548 & nout,it))
1549# ifdef WET_DRY
1551 & it)* &
1552 &
grid(ng)%vmask_full(i,j)
1553# endif
1554 END DO
1555 END DO
1556 END DO
1557 END IF
1558
1561 DO j=jstrr,jendr
1562 DO i=istr,iend
1563 average(ng)%avgHuonT(i,j,k,it)=0.5_r8* &
1564 &
grid(ng)%Huon(i,j,k)* &
1565 & (
ocean(ng)%t(i-1,j,k, &
1566 & nout,it)+ &
1567 &
ocean(ng)%t(i ,j,k, &
1568 & nout,it))
1569# ifdef WET_DRY
1571 & (i,j,k,it)* &
1572 &
grid(ng)%umask_full(i, &
1573 & j)
1574# endif
1575 END DO
1576 END DO
1577 END DO
1578 END IF
1581 DO j=jstr,jend
1582 DO i=istrr,iendr
1583 average(ng)%avgHvomT(i,j,k,it)=0.5_r8* &
1584 &
grid(ng)%Hvom(i,j,k)* &
1585 & (
ocean(ng)%t(i,j-1,k, &
1586 & nout,it)+ &
1587 &
ocean(ng)%t(i,j ,k, &
1588 & nout,it))
1589# ifdef WET_DRY
1591 & (i,j,k,it)* &
1592 &
grid(ng)%vmask_full(i, &
1593 & j)
1594# endif
1595 END DO
1596 END DO
1597 END DO
1598 END IF
1599 END DO
1600# endif
1601
1602
1603
1604
1605
1607
1608# ifdef WET_DRY
1609
1610
1611
1612
1613
1614 DO j=jstr,jendr
1615 DO i=istr,iendr
1616 grid(ng)%pmask_avg(i,j)=
grid(ng)%pmask_avg(i,j)+ &
1617 & max(0.0_r8, &
1618 & min(
grid(ng)%pmask_full(i,j), &
1619 & 1.0_r8))
1620 END DO
1621 END DO
1622 DO j=jstrr,jendr
1623 DO i=istrr,iendr
1624 grid(ng)%rmask_avg(i,j)=
grid(ng)%rmask_avg(i,j)+ &
1625 & max(0.0_r8, &
1626 & min(
grid(ng)%rmask_full(i,j), &
1627 & 1.0_r8))
1628 END DO
1629 END DO
1630 DO j=jstrr,jendr
1631 DO i=istr,iendr
1632 grid(ng)%umask_avg(i,j)=
grid(ng)%umask_avg(i,j)+ &
1633 & max(0.0_r8, &
1634 & min(
grid(ng)%umask_full(i,j), &
1635 & 1.0_r8))
1636 END DO
1637 END DO
1638 DO j=jstr,jendr
1639 DO i=istrr,iendr
1640 grid(ng)%vmask_avg(i,j)=
grid(ng)%vmask_avg(i,j)+ &
1641 & max(0.0_r8, &
1642 & min(
grid(ng)%vmask_full(i,j), &
1643 & 1.0_r8))
1644 END DO
1645 END DO
1646# endif
1647
1648
1649
1651 DO j=jstrr,jendr
1652 DO i=istrr,iendr
1654# ifdef WET_DRY
1655 &
grid(ng)%rmask_full(i,j)* &
1656# endif
1657 &
ocean(ng)%zeta(i,j,kout)
1658 END DO
1659 END DO
1660 END IF
1661
1663 DO j=jstrr,jendr
1664 DO i=istr,iendr
1666# ifdef WET_DRY
1667 &
grid(ng)%umask_full(i,j)* &
1668# endif
1669 &
ocean(ng)%ubar(i,j,kout)
1670 END DO
1671 END DO
1672 END IF
1674 DO j=jstr,jendr
1675 DO i=istrr,iendr
1677# ifdef WET_DRY
1678 &
grid(ng)%vmask_full(i,j)* &
1679# endif
1680 &
ocean(ng)%vbar(i,j,kout)
1681 END DO
1682 END DO
1683 END IF
1684
1687 & lbi, ubi, lbj, ubj, &
1688 &
grid(ng) % CosAngler, &
1689 &
grid(ng) % SinAngler, &
1690# ifdef MASKING
1691 &
grid(ng)%rmask_full, &
1692# endif
1693 &
ocean(ng) % ubar(:,:,kout), &
1694 &
ocean(ng) % vbar(:,:,kout), &
1697 END IF
1698
1699# ifdef SOLVE3D
1702 DO j=jstrr,jendr
1703 DO i=istr,iendr
1705# ifdef WET_DRY
1706 &
grid(ng)%umask_full(i,j)* &
1707# endif
1708 &
ocean(ng)%u(i,j,k,nout)
1709 END DO
1710 END DO
1711 END DO
1712 END IF
1715 DO j=jstr,jendr
1716 DO i=istrr,iendr
1718# ifdef WET_DRY
1719 &
grid(ng)%vmask_full(i,j)* &
1720# endif
1721 &
ocean(ng)%v(i,j,k,nout)
1722 END DO
1723 END DO
1724 END DO
1725 END IF
1726
1729 DO j=jstrr,jendr
1730 DO i=istrr,iendr
1732# ifdef WET_DRY
1733 &
grid(ng)%umask_full(i,j)* &
1734# endif
1735 &
ocean(ng)%ua(i,j,k)
1736 END DO
1737 END DO
1738 END DO
1739 END IF
1742 DO j=jstrr,jendr
1743 DO i=istrr,iendr
1745# ifdef WET_DRY
1746 &
grid(ng)%vmask_full(i,j)* &
1747# endif
1748 &
ocean(ng)%va(i,j,k)
1749 END DO
1750 END DO
1751 END DO
1752 END IF
1753
1756 DO j=jstrr,jendr
1757 DO i=istrr,iendr
1759# ifdef WET_DRY
1760 &
grid(ng)%rmask_full(i,j)* &
1761# endif
1762 &
ocean(ng)%W(i,j,k)* &
1763 &
grid(ng)%pm(i,j)* &
1765 END DO
1766 END DO
1767 END DO
1768 END IF
1771 DO j=jstrr,jendr
1772 DO i=istrr,iendr
1774# ifdef WET_DRY
1775 &
grid(ng)%rmask_full(i,j)* &
1776# endif
1777 &
ocean(ng)%wvel(i,j,k)
1778 END DO
1779 END DO
1780 END DO
1781 END IF
1782
1785 DO j=jstrr,jendr
1786 DO i=istrr,iendr
1788# ifdef WET_DRY
1789 &
grid(ng)%rmask_full(i,j)* &
1790# endif
1791 &
ocean(ng)%rho(i,j,k)
1792 END DO
1793 END DO
1794 END DO
1795 END IF
1799 DO j=jstrr,jendr
1800 DO i=istrr,iendr
1802# ifdef WET_DRY
1803 &
grid(ng)%rmask_full(i,j)* &
1804# endif
1805 &
ocean(ng)%t(i,j,k,nout,it)
1806 END DO
1807 END DO
1808 END DO
1809 END IF
1810 END DO
1811
1812# if defined SEDIMENT && defined BEDLOAD
1815 DO j=jstrr,jendr
1816 DO i=istr,iendr
1817 sedbed(ng)%avgbedldu(i,j,it)=
sedbed(ng)%avgbedldu(i,j, &
1818 & it)+ &
1819# ifdef WET_DRY
1820 &
grid(ng)%umask_full(i,j)* &
1821# endif
1822 &
sedbed(ng)%bedldu(i,j,it)
1823 END DO
1824 END DO
1825 END IF
1826
1828 DO j=jstr,jendr
1829 DO i=istrr,iendr
1830 sedbed(ng)%avgbedldv(i,j,it)=
sedbed(ng)%avgbedldv(i,j, &
1831 & it)+ &
1832# ifdef WET_DRY
1833 &
grid(ng)%vmask_full(i,j)* &
1834# endif
1835 &
sedbed(ng)%bedldv(i,j,it)
1836 END DO
1837 END DO
1838 END IF
1839 END DO
1840# endif
1841
1842# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1845 DO j=jstrr,jendr
1846 DO i=istrr,iendr
1848# ifdef WET_DRY
1849 &
grid(ng)%rmask_full(i,j)* &
1850# endif
1852 END DO
1853 END DO
1854 END DO
1855 END IF
1858 DO j=jstrr,jendr
1859 DO i=istrr,iendr
1861# ifdef WET_DRY
1862 &
grid(ng)%rmask_full(i,j)* &
1863# endif
1865 END DO
1866 END DO
1867 END DO
1868 END IF
1869# ifdef SALINITY
1872 DO j=jstrr,jendr
1873 DO i=istrr,iendr
1875# ifdef WET_DRY
1876 &
grid(ng)%rmask_full(i,j)* &
1877# endif
1879 END DO
1880 END DO
1881 END DO
1882 END IF
1883# endif
1884# endif
1885# ifdef LMD_SKPP
1887 DO j=jstrr,jendr
1888 DO i=istrr,iendr
1890# ifdef WET_DRY
1891 &
grid(ng)%rmask_full(i,j)* &
1892# endif
1894 END DO
1895 END DO
1896 END IF
1897# endif
1898# ifdef LMD_BKPP
1900 DO j=jstrr,jendr
1901 DO i=istrr,iendr
1903# ifdef WET_DRY
1904 &
grid(ng)%rmask_full(i,j)* &
1905# endif
1907 END DO
1908 END DO
1909 END IF
1910# endif
1911# endif
1912
1913# if defined FORWARD_WRITE && defined SOLVE3D
1914
1915
1916
1918 DO j=jstrr,jendr
1919 DO i=istr,iendr
1921# ifdef WET_DRY
1922 &
grid(ng)%umask_full(i,j)* &
1923# endif
1925 END DO
1926 END DO
1927 END IF
1929 DO j=jstrr,jendr
1930 DO i=istr,iendr
1932# ifdef WET_DRY
1933 &
grid(ng)%umask_full(i,j)* &
1934# endif
1936 END DO
1937 END DO
1938 END IF
1939
1941 DO j=jstr,jendr
1942 DO i=istrr,iendr
1944# ifdef WET_DRY
1945 &
grid(ng)%vmask_full(i,j)* &
1946# endif
1948 END DO
1949 END DO
1950 END IF
1952 DO j=jstr,jendr
1953 DO i=istrr,iendr
1955# ifdef WET_DRY
1956 &
grid(ng)%vmask_full(i,j)* &
1957# endif
1959 END DO
1960 END DO
1961 END IF
1962# endif
1963
1964
1965
1967 DO j=jstrr,jendr
1968 DO i=istr,iendr
1970# ifdef WET_DRY
1971 &
grid(ng)%umask_full(i,j)* &
1972# endif
1974 END DO
1975 END DO
1976 END IF
1978 DO j=jstr,jendr
1979 DO i=istrr,iendr
1981# ifdef WET_DRY
1982 &
grid(ng)%vmask_full(i,j)* &
1983# endif
1985 END DO
1986 END DO
1987 END IF
1988
1990 DO j=jstrr,jendr
1991 DO i=istr,iendr
1993# ifdef WET_DRY
1994 &
grid(ng)%umask_full(i,j)* &
1995# endif
1997 END DO
1998 END DO
1999 END IF
2001 DO j=jstr,jendr
2002 DO i=istrr,iendr
2004# ifdef WET_DRY
2005 &
grid(ng)%vmask_full(i,j)* &
2006# endif
2008 END DO
2009 END DO
2010 END IF
2011# ifdef BBL
2013 DO j=jstrr,jendr
2014 DO i=istrr,iendr
2016# ifdef WET_DRY
2017 &
grid(ng)%rmask_full(i,j)* &
2018# endif
2020 END DO
2021 END DO
2022 END IF
2024 DO j=jstrr,jendr
2025 DO i=istrr,iendr
2027# ifdef WET_DRY
2028 &
grid(ng)%rmask_full(i,j)* &
2029# endif
2031 END DO
2032 END DO
2033 END IF
2035 DO j=jstrr,jendr
2036 DO i=istrr,iendr
2038# ifdef WET_DRY
2039 &
grid(ng)%rmask_full(i,j)* &
2040# endif
2042 END DO
2043 END DO
2044 END IF
2046 DO j=jstrr,jendr
2047 DO i=istrr,iendr
2049# ifdef WET_DRY
2050 &
grid(ng)%rmask_full(i,j)* &
2051# endif
2053 END DO
2054 END DO
2055 END IF
2057 DO j=jstrr,jendr
2058 DO i=istrr,iendr
2060# ifdef WET_DRY
2061 &
grid(ng)%rmask_full(i,j)* &
2062# endif
2063 &
forces(ng)%bustrcwmax(i,j)
2064 END DO
2065 END DO
2066 END IF
2068 DO j=jstrr,jendr
2069 DO i=istrr,iendr
2071# ifdef WET_DRY
2072 &
grid(ng)%rmask_full(i,j)* &
2073# endif
2074 &
forces(ng)%bvstrcwmax(i,j)
2075 END DO
2076 END DO
2077 END IF
2079 allocate (wrk(lbi:ubi,lbj:ubj))
2080 wrk(lbi:ubi,lbj:ubj)=0.0_r8
2081 wrk=sqrt(
bbl(ng)%bustrcwmax*
bbl(ng)%bustrcwmax+ &
2082 &
bbl(ng)%bvstrcwmax*
bbl(ng)%bvstrcwmax+1.0e-10_r8)
2083 DO j=jstrr,jendr
2084 DO i=istrr,iendr
2086# ifdef WET_DRY
2087 &
grid(ng)%rmask_full(i,j)* &
2088# endif
2089 & wrk(i,j)
2090 END DO
2091 END DO
2092 deallocate(wrk)
2093 END IF
2095 DO j=jstrr,jendr
2096 DO i=istrr,iendr
2098# ifdef WET_DRY
2099 &
grid(ng)%rmask_full(i,j)* &
2100# endif
2102 END DO
2103 END DO
2104 END IF
2106 DO j=jstrr,jendr
2107 DO i=istrr,iendr
2109# ifdef WET_DRY
2110 &
grid(ng)%rmask_full(i,j)* &
2111# endif
2113 END DO
2114 END DO
2115 END IF
2117 DO j=jstrr,jendr
2118 DO i=istrr,iendr
2120# ifdef WET_DRY
2121 &
grid(ng)%rmask_full(i,j)* &
2122# endif
2124 END DO
2125 END DO
2126 END IF
2128 DO j=jstrr,jendr
2129 DO i=istrr,iendr
2131# ifdef WET_DRY
2132 &
grid(ng)%rmask_full(i,j)* &
2133# endif
2135 END DO
2136 END DO
2137 END IF
2138# endif
2139# ifdef SOLVE3D
2140
2141# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2143 DO j=jstrr,jendr
2144 DO i=istrr,iendr
2146# ifdef WET_DRY
2147 &
grid(ng)%rmask_full(i,j)* &
2148# endif
2150 END DO
2151 END DO
2152 END IF
2153# endif
2154# if defined BULK_FLUXES
2156 DO j=jstrr,jendr
2157 DO i=istrr,iendr
2159# ifdef WET_DRY
2160 &
grid(ng)%rmask_full(i,j)* &
2161# endif
2163 END DO
2164 END DO
2165 END IF
2166# endif
2167# if defined BULK_FLUXES || defined ECOSIM
2169 DO j=jstrr,jendr
2170 DO i=istrr,iendr
2172# ifdef WET_DRY
2173 &
grid(ng)%rmask_full(i,j)* &
2174# endif
2176 END DO
2177 END DO
2178 END IF
2179
2181 DO j=jstrr,jendr
2182 DO i=istrr,iendr
2184# ifdef WET_DRY
2185 &
grid(ng)%rmask_full(i,j)* &
2186# endif
2188 END DO
2189 END DO
2190 END IF
2191
2194 & lbi, ubi, lbj, ubj, &
2195 &
grid(ng) % CosAngler, &
2196 &
grid(ng) % SinAngler, &
2197# ifdef MASKING
2198 &
grid(ng)%rmask_full, &
2199# endif
2204 END IF
2205# endif
2206
2208 DO j=jstrr,jendr
2209 DO i=istrr,iendr
2211# ifdef WET_DRY
2212 &
grid(ng)%rmask_full(i,j)* &
2213# endif
2215 END DO
2216 END DO
2217 END IF
2218# ifdef SALINITY
2220 DO j=jstrr,jendr
2221 DO i=istrr,iendr
2223# ifdef WET_DRY
2224 &
grid(ng)%rmask_full(i,j)* &
2225# endif
2227 END DO
2228 END DO
2229 END IF
2230# endif
2231# ifdef SHORTWAVE
2233 DO j=jstrr,jendr
2234 DO i=istrr,iendr
2236# ifdef WET_DRY
2237 &
grid(ng)%rmask_full(i,j)* &
2238# endif
2240 END DO
2241 END DO
2242 END IF
2243# endif
2244
2245# if defined BULK_FLUXES || defined FRC_COUPLING
2247 DO j=jstrr,jendr
2248 DO i=istrr,iendr
2250# ifdef WET_DRY
2251 &
grid(ng)%rmask_full(i,j)* &
2252# endif
2254 END DO
2255 END DO
2256 END IF
2257
2259 DO j=jstrr,jendr
2260 DO i=istrr,iendr
2262# ifdef WET_DRY
2263 &
grid(ng)%rmask_full(i,j)* &
2264# endif
2266 END DO
2267 END DO
2268 END IF
2269
2271 DO j=jstrr,jendr
2272 DO i=istrr,iendr
2274# ifdef WET_DRY
2275 &
grid(ng)%rmask_full(i,j)* &
2276# endif
2278 END DO
2279 END DO
2280 END IF
2281# endif
2282
2283# if defined BULK_FLUXES && defined EMINUSP
2285 DO j=jstrr,jendr
2286 DO i=istrr,iendr
2288# ifdef WET_DRY
2289 &
grid(ng)%rmask_full(i,j)* &
2290# endif
2292 END DO
2293 END DO
2294 END IF
2295
2297 DO j=jstrr,jendr
2298 DO i=istrr,iendr
2300# ifdef WET_DRY
2301 &
grid(ng)%rmask_full(i,j)* &
2302# endif
2304 END DO
2305 END DO
2306 END IF
2307# endif
2308# endif
2309# ifdef WEC
2311 DO j=jstrr,jendr
2312 DO i=istr,iendr
2314# ifdef WET_DRY
2315 &
grid(ng)%umask_full(i,j)* &
2316# endif
2317 &
ocean(ng)%ubar_stokes(i,j)
2318 END DO
2319 END DO
2320 END IF
2322 DO j=jstr,jendr
2323 DO i=istrr,iendr
2325# ifdef WET_DRY
2326 &
grid(ng)%vmask_full(i,j)* &
2327# endif
2328 &
ocean(ng)%vbar_stokes(i,j)
2329 END DO
2330 END DO
2331 END IF
2332
2334 DO j=jstrr,jendr
2335 DO i=istr,iendr
2337# ifdef WET_DRY
2338 &
grid(ng)%umask_full(i,j)* &
2339# endif
2340 &
mixing(ng)%rustr2d(i,j)
2341 END DO
2342 END DO
2343 END IF
2345 DO j=jstr,jendr
2346 DO i=istrr,iendr
2348# ifdef WET_DRY
2349 &
grid(ng)%vmask_full(i,j)* &
2350# endif
2351 &
mixing(ng)%rvstr2d(i,j)
2352 END DO
2353 END DO
2354 END IF
2355# endif
2356# ifdef WEC
2359 DO j=jstrr,jendr
2360 DO i=istr,iendr
2362# ifdef WET_DRY
2363 &
grid(ng)%umask_full(i,j)* &
2364# endif
2365 &
ocean(ng)%u_stokes(i,j,k)
2366 END DO
2367 END DO
2368 END DO
2369 END IF
2372 DO j=jstr,jendr
2373 DO i=istrr,iendr
2375# ifdef WET_DRY
2376 &
grid(ng)%vmask_full(i,j)* &
2377# endif
2378 &
ocean(ng)%v_stokes(i,j,k)
2379 END DO
2380 END DO
2381 END DO
2382 END IF
2385 DO j=jstrr,jendr
2386 DO i=istrr,iendr
2388# ifdef WET_DRY
2389 &
grid(ng)%rmask_full(i,j)* &
2390# endif
2391 &
ocean(ng)%W_stokes(i,j,k)
2392 END DO
2393 END DO
2394 END DO
2395 END IF
2398 DO j=jstrr,jendr
2399 DO i=istrr,iendr
2401# ifdef WET_DRY
2402 &
grid(ng)%rmask_full(i,j)* &
2403# endif
2404 &
ocean(ng)%wstvel(i,j,k)
2405 END DO
2406 END DO
2407 END DO
2408 END IF
2411 DO j=jstrr,jendr
2412 DO i=istr,iendr
2414# ifdef WET_DRY
2415 &
grid(ng)%umask_full(i,j)* &
2416# endif
2417 &
mixing(ng)%rustr3d(i,j,k)
2418 END DO
2419 END DO
2420 END DO
2421 END IF
2424 DO j=jstr,jendr
2425 DO i=istrr,iendr
2427# ifdef WET_DRY
2428 &
grid(ng)%vmask_full(i,j)* &
2429# endif
2430 &
mixing(ng)%rvstr3d(i,j,k)
2431 END DO
2432 END DO
2433 END DO
2434 END IF
2435# endif
2436# ifdef WEC_VF
2438 DO j=jstrr,jendr
2439 DO i=istrr,iendr
2441# ifdef WET_DRY
2442 &
grid(ng)%rmask_full(i,j)* &
2443# endif
2444 &
ocean(ng)%zetaw(i,j)
2445 END DO
2446 END DO
2447 END IF
2449 DO j=jstrr,jendr
2450 DO i=istrr,iendr
2452# ifdef WET_DRY
2453 &
grid(ng)%rmask_full(i,j)* &
2454# endif
2455 &
ocean(ng)%qsp(i,j)
2456 END DO
2457 END DO
2458 END IF
2460 DO j=jstrr,jendr
2461 DO i=istrr,iendr
2463# ifdef WET_DRY
2464 &
grid(ng)%rmask_full(i,j)* &
2465# endif
2467 END DO
2468 END DO
2469 END IF
2470# endif
2471# ifdef WAVES_HEIGHT
2473 DO j=jstrr,jendr
2474 DO i=istrr,iendr
2476# ifdef WET_DRY
2477 &
grid(ng)%rmask_full(i,j)* &
2478# endif
2480 END DO
2481 END DO
2482 END IF
2484 DO j=jstrr,jendr
2485 DO i=istrr,iendr
2487# ifdef WET_DRY
2488 &
grid(ng)%rmask_full(i,j)* &
2489# endif
2490 &
forces(ng)%Hwave(i,j)* &
2492 END DO
2493 END DO
2494 END IF
2495# endif
2496# ifdef WAVES_LENGTH
2498 DO j=jstrr,jendr
2499 DO i=istrr,iendr
2501# ifdef WET_DRY
2502 &
grid(ng)%rmask_full(i,j)* &
2503# endif
2505 END DO
2506 END DO
2507 END IF
2508# endif
2509# ifdef WAVES_LENGTHP
2511 DO j=jstrr,jendr
2512 DO i=istrr,iendr
2514# ifdef WET_DRY
2515 &
grid(ng)%rmask_full(i,j)* &
2516# endif
2518 END DO
2519 END DO
2520 END IF
2521# endif
2522# ifdef WAVES_DIR
2524 DO j=jstrr,jendr
2525 DO i=istrr,iendr
2527# ifdef WET_DRY
2528 &
grid(ng)%rmask_full(i,j)* &
2529# endif
2531 END DO
2532 END DO
2533 END IF
2534# endif
2535# ifdef WAVES_DIRP
2537 DO j=jstrr,jendr
2538 DO i=istrr,iendr
2540# ifdef WET_DRY
2541 &
grid(ng)%rmask_full(i,j)* &
2542# endif
2544 END DO
2545 END DO
2546 END IF
2547# endif
2548# ifdef WAVES_TOP_PERIOD
2550 DO j=jstrr,jendr
2551 DO i=istrr,iendr
2553# ifdef WET_DRY
2554 &
grid(ng)%rmask_full(i,j)* &
2555# endif
2556 &
forces(ng)%Pwave_top(i,j)
2557 END DO
2558 END DO
2559 END IF
2560# endif
2561# ifdef WAVES_BOT_PERIOD
2563 DO j=jstrr,jendr
2564 DO i=istrr,iendr
2566# ifdef WET_DRY
2567 &
grid(ng)%rmask_full(i,j)* &
2568# endif
2569 &
forces(ng)%Pwave_bot(i,j)
2570 END DO
2571 END DO
2572 END IF
2573# endif
2574# ifdef BBL_MODEL
2576 DO j=jstrr,jendr
2577 DO i=istrr,iendr
2579# ifdef WET_DRY
2580 &
grid(ng)%rmask_full(i,j)* &
2581# endif
2582 &
forces(ng)%Uwave_rms(i,j)
2583 END DO
2584 END DO
2585 END IF
2586# endif
2587# if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
2589 DO j=jstrr,jendr
2590 DO i=istrr,iendr
2592# ifdef WET_DRY
2593 &
grid(ng)%rmask_full(i,j)* &
2594# endif
2595 &
forces(ng)%Dissip_fric(i,j)
2596 END DO
2597 END DO
2598 END IF
2599# endif
2600# if defined WAV_COUPLING || defined TKE_WAVEDISS || \
2601 defined wdiss_thorguza || defined wdiss_churthor
2603 DO j=jstrr,jendr
2604 DO i=istrr,iendr
2606# ifdef WET_DRY
2607 &
grid(ng)%rmask_full(i,j)* &
2608# endif
2609 &
forces(ng)%Dissip_break(i,j)
2610 END DO
2611 END DO
2612 END IF
2614 DO j=jstrr,jendr
2615 DO i=istrr,iendr
2617# ifdef WET_DRY
2618 &
grid(ng)%rmask_full(i,j)* &
2619# endif
2620 &
forces(ng)%Dissip_wcap(i,j)
2621 END DO
2622 END DO
2623 END IF
2624# endif
2625# ifdef ROLLER_SVENDSEN
2627 DO j=jstrr,jendr
2628 DO i=istrr,iendr
2630# ifdef WET_DRY
2631 &
grid(ng)%rmask_full(i,j)* &
2632# endif
2633 &
forces(ng)%Wave_break(i,j)
2634 END DO
2635 END DO
2636 END IF
2637# endif
2638# ifdef WEC_ROLLER
2640 DO j=jstrr,jendr
2641 DO i=istrr,iendr
2643# ifdef WET_DRY
2644 &
grid(ng)%rmask_full(i,j)* &
2645# endif
2646 &
forces(ng)%Dissip_roller(i,j)
2647 END DO
2648 END DO
2649 END IF
2651 DO j=jstrr,jendr
2652 DO i=istrr,iendr
2654# ifdef WET_DRY
2655 &
grid(ng)%rmask_full(i,j)* &
2656# endif
2658 END DO
2659 END DO
2660 END IF
2661# endif
2662# ifdef UV_KIRBY
2664 DO j=jstrr,jendr
2665 DO i=istrr,iendr
2667# ifdef WET_DRY
2668 &
grid(ng)%rmask_full(i,j)* &
2669# endif
2670 &
ocean(ng)%uWave(i,j)
2671 END DO
2672 END DO
2673 END IF
2675 DO j=jstrr,jendr
2676 DO i=istrr,iendr
2678# ifdef WET_DRY
2679 &
grid(ng)%rmask_full(i,j)* &
2680# endif
2681 &
ocean(ng)%vWave(i,j)
2682 END DO
2683 END DO
2684 END IF
2685# endif
2686
2687
2688
2690 DO j=jstr,jend
2691 DO i=istr,iend
2693# ifdef WET_DRY
2694 &
grid(ng)%pmask_full(i,j)* &
2695# endif
2696 & potvor_bar(i,j)
2697 END DO
2698 END DO
2699 END IF
2701 DO j=jstr,jend
2702 DO i=istr,iend
2704# ifdef WET_DRY
2705 &
grid(ng)%pmask_full(i,j)* &
2706# endif
2707 & relvor_bar(i,j)
2708 END DO
2709 END DO
2710 END IF
2711# ifdef SOLVE3D
2714 DO j=jstr,jend
2715 DO i=istr,iend
2717 & k)+ &
2718# ifdef WET_DRY
2719 &
grid(ng)%pmask_full(i,j)* &
2720# endif
2721 & potvor(i,j,k)
2722 END DO
2723 END DO
2724 END DO
2725 END IF
2728 DO j=jstr,jend
2729 DO i=istr,iend
2731 & k)+ &
2732# ifdef WET_DRY
2733 &
grid(ng)%pmask_full(i,j)* &
2734# endif
2735 & relvor(i,j,k)
2736 END DO
2737 END DO
2738 END DO
2739 END IF
2740# endif
2741
2742
2743
2745 DO j=jstrr,jendr
2746 DO i=istrr,iendr
2748# ifdef WET_DRY
2749 &
grid(ng)%rmask_full(i,j)* &
2750# endif
2751 &
ocean(ng)%zeta(i,j,kout)* &
2752 &
ocean(ng)%zeta(i,j,kout)
2753 END DO
2754 END DO
2755 END IF
2757 DO j=jstrr,jendr
2758 DO i=istr,iendr
2760# ifdef WET_DRY
2761 &
grid(ng)%umask_full(i,j)* &
2762# endif
2763 &
ocean(ng)%ubar(i,j,kout)* &
2764 &
ocean(ng)%ubar(i,j,kout)
2765 END DO
2766 END DO
2767 END IF
2769 DO j=jstr,jendr
2770 DO i=istrr,iendr
2772# ifdef WET_DRY
2773 &
grid(ng)%vmask_full(i,j)* &
2774# endif
2775 &
ocean(ng)%vbar(i,j,kout)* &
2776 &
ocean(ng)%vbar(i,j,kout)
2777 END DO
2778 END DO
2779 END IF
2780
2781# ifdef SOLVE3D
2784 DO j=jstrr,jendr
2785 DO i=istr,iendr
2787# ifdef WET_DRY
2788 &
grid(ng)%umask_full(i,j)* &
2789# endif
2790 &
ocean(ng)%u(i,j,k,nout)* &
2791 &
ocean(ng)%u(i,j,k,nout)
2792 END DO
2793 END DO
2794 END DO
2795 END IF
2798 DO j=jstr,jendr
2799 DO i=istrr,iendr
2801# ifdef WET_DRY
2802 &
grid(ng)%vmask_full(i,j)* &
2803# endif
2804 &
ocean(ng)%v(i,j,k,nout)* &
2805 &
ocean(ng)%v(i,j,k,nout)
2806 END DO
2807 END DO
2808 END DO
2809 END IF
2812 DO j=jstr,jend
2813 DO i=istr,iend
2815# ifdef WET_DRY
2816 &
grid(ng)%rmask_full(i,j)* &
2817# endif
2818 & 0.25_r8* &
2819 & (
ocean(ng)%u(i ,j ,k,nout)+ &
2820 &
ocean(ng)%u(i+1,j ,k,nout))* &
2821 & (
ocean(ng)%v(i ,j ,k,nout)+ &
2822 &
ocean(ng)%v(i ,j+1,k,nout))
2823 END DO
2824 END DO
2825 END DO
2826 END IF
2827
2830 DO j=jstrr,jendr
2831 DO i=istr,iendr
2833# ifdef WET_DRY
2834 &
grid(ng)%umask_full(i,j)* &
2835# endif
2836 &
grid(ng)%Huon(i,j,k)
2837 END DO
2838 END DO
2839 END DO
2840 END IF
2843 DO j=jstr,jendr
2844 DO i=istrr,iendr
2846# ifdef WET_DRY
2847 &
grid(ng)%vmask_full(i,j)* &
2848# endif
2849 &
grid(ng)%Hvom(i,j,k)
2850 END DO
2851 END DO
2852 END DO
2853 END IF
2854
2858 DO j=jstrr,jendr
2859 DO i=istrr,iendr
2861 & it)+ &
2862# ifdef WET_DRY
2863 &
grid(ng)%rmask_full(i,j)* &
2864# endif
2865 &
ocean(ng)%t(i,j,k, &
2866 & nout,it)* &
2867 &
ocean(ng)%t(i,j,k, &
2868 & nout,it)
2869 END DO
2870 END DO
2871 END DO
2872 END IF
2875 DO j=jstrr,jendr
2876 DO i=istr,iend
2878 & it)+ &
2879# ifdef WET_DRY
2880 &
grid(ng)%umask_full(i,j)* &
2881# endif
2882 & 0.5_r8* &
2883 &
ocean(ng)%u(i,j,k,nout)* &
2884 & (
ocean(ng)%t(i-1,j,k, &
2885 & nout,it)+ &
2886 &
ocean(ng)%t(i ,j,k, &
2887 & nout,it))
2888 END DO
2889 END DO
2890 END DO
2891 END IF
2894 DO j=jstr,jend
2895 DO i=istrr,iendr
2897 & it)+ &
2898# ifdef WET_DRY
2899 &
grid(ng)%vmask_full(i,j)* &
2900# endif
2901 & 0.5_r8* &
2902 &
ocean(ng)%v(i,j,k,nout)* &
2903 & (
ocean(ng)%t(i,j-1,k, &
2904 & nout,it)+ &
2905 &
ocean(ng)%t(i,j ,k, &
2906 & nout,it))
2907 END DO
2908 END DO
2909 END DO
2910 END IF
2911
2914 DO j=jstrr,jendr
2915 DO i=istr,iend
2917 & j,k,it)+ &
2918# ifdef WET_DRY
2919 &
grid(ng)%umask_full(i, &
2920 & j)* &
2921# endif
2922 & 0.5_r8* &
2923 &
grid(ng)%Huon(i,j,k)* &
2924 & (
ocean(ng)%t(i-1,j,k, &
2925 & nout,it)+ &
2926 &
ocean(ng)%t(i ,j,k, &
2927 & nout,it))
2928 END DO
2929 END DO
2930 END DO
2931 END IF
2934 DO j=jstr,jend
2935 DO i=istrr,iendr
2937 & j,k,it)+ &
2938# ifdef WET_DRY
2939 &
grid(ng)%vmask_full(i, &
2940 & j)* &
2941# endif
2942 & 0.5_r8* &
2943 &
grid(ng)%Hvom(i,j,k)* &
2944 & (
ocean(ng)%t(i,j-1,k, &
2945 & nout,it)+ &
2946 &
ocean(ng)%t(i,j ,k, &
2947 & nout,it))
2948 END DO
2949 END DO
2950 END DO
2951 END IF
2952 END DO
2953# endif
2954 END IF
2955
2956
2957
2958
2959
2960
2961
2963 & (mod(
iic(ng)-1,
navg(ng)).eq.0).and. &
2966 IF (
domain(ng)%SouthWest_Test(tile))
THEN
2967 IF (
navg(ng).eq.1)
THEN
2969 ELSE
2971 END IF
2972 END IF
2973
2974
2975
2976# ifdef WET_DRY
2977
2978
2979# endif
2980
2981# ifdef WET_DRY
2982 DO j=jstrr,jendr
2983 DO i=istrr,iendr
2984 pfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%pmask_avg(i,j))
2985 rfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%rmask_avg(i,j))
2986 ufac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%umask_avg(i,j))
2987 vfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%vmask_avg(i,j))
2988 END DO
2989 END DO
2990# else
2991 fac=1.0_r8/real(
navg(ng),r8)
2992 DO j=jstrr,jendr
2993 DO i=istrr,iendr
2994 pfac(i,j)=fac
2995 rfac(i,j)=fac
2996 ufac(i,j)=fac
2997 vfac(i,j)=fac
2998 END DO
2999 END DO
3000# endif
3001
3002
3003
3005 DO j=jstrr,jendr
3006 DO i=istrr,iendr
3007 average(ng)%avgzeta(i,j)=rfac(i,j)* &
3009 END DO
3010 END DO
3013 & lbi, ubi, lbj, ubj, &
3015# ifdef DISTRIBUTE
3017 & lbi, ubi, lbj, ubj, &
3021# endif
3022 END IF
3023 END IF
3024
3026 DO j=jstrr,jendr
3027 DO i=istr,iendr
3028 average(ng)%avgu2d(i,j)=ufac(i,j)* &
3030 END DO
3031 END DO
3034 & lbi, ubi, lbj, ubj, &
3036# ifdef DISTRIBUTE
3038 & lbi, ubi, lbj, ubj, &
3042# endif
3043 END IF
3044 END IF
3045
3047 DO j=jstr,jendr
3048 DO i=istrr,iendr
3049 average(ng)%avgv2d(i,j)=vfac(i,j)* &
3051 END DO
3052 END DO
3055 & lbi, ubi, lbj, ubj, &
3057# ifdef DISTRIBUTE
3059 & lbi, ubi, lbj, ubj, &
3063# endif
3064 END IF
3065 END IF
3066
3068 DO j=jstr,jend
3069 DO i=istr,iend
3070 average(ng)%avgu2dE(i,j)=rfac(i,j)* &
3072 average(ng)%avgv2dN(i,j)=rfac(i,j)* &
3074 END DO
3075 END DO
3078 & lbi, ubi, lbj, ubj, &
3081 & lbi, ubi, lbj, ubj, &
3083# ifdef DISTRIBUTE
3085 & lbi, ubi, lbj, ubj, &
3090# endif
3091 END IF
3092 END IF
3093
3094# ifdef SOLVE3D
3097 DO j=jstrr,jendr
3098 DO i=istr,iendr
3099 average(ng)%avgu3d(i,j,k)=ufac(i,j)* &
3101 END DO
3102 END DO
3103 END DO
3106 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3108# ifdef DISTRIBUTE
3110 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3114# endif
3115 END IF
3116 END IF
3117
3120 DO j=jstr,jendr
3121 DO i=istrr,iendr
3122 average(ng)%avgv3d(i,j,k)=vfac(i,j)* &
3124 END DO
3125 END DO
3126 END DO
3129 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3131# ifdef DISTRIBUTE
3133 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3137# endif
3138 END IF
3139 END IF
3140
3143 DO j=jstrr,jendr
3144 DO i=istrr,iendr
3145 average(ng)%avgu3dE(i,j,k)=rfac(i,j)* &
3147 END DO
3148 END DO
3149 END DO
3152 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3154# ifdef DISTRIBUTE
3156 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3160# endif
3161 END IF
3162 END IF
3163
3166 DO j=jstrr,jendr
3167 DO i=istrr,iendr
3168 average(ng)%avgv3dN(i,j,k)=rfac(i,j)* &
3170 END DO
3171 END DO
3172 END DO
3175 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3177# ifdef DISTRIBUTE
3179 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3183# endif
3184 END IF
3185 END IF
3186
3189 DO j=jstrr,jendr
3190 DO i=istrr,iendr
3191 average(ng)%avgw3d(i,j,k)=rfac(i,j)* &
3193 END DO
3194 END DO
3195 END DO
3198 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3200# ifdef DISTRIBUTE
3202 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3206# endif
3207 END IF
3208 END IF
3209
3212 DO j=jstrr,jendr
3213 DO i=istrr,iendr
3214 average(ng)%avgwvel(i,j,k)=rfac(i,j)* &
3216 END DO
3217 END DO
3218 END DO
3221 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3223# ifdef DISTRIBUTE
3225 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3229# endif
3230 END IF
3231 END IF
3232
3235 DO j=jstrr,jendr
3236 DO i=istrr,iendr
3237 average(ng)%avgrho(i,j,k)=rfac(i,j)* &
3239 END DO
3240 END DO
3241 END DO
3244 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3246# ifdef DISTRIBUTE
3248 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3252# endif
3253 END IF
3254 END IF
3255
3259 DO j=jstrr,jendr
3260 DO i=istrr,iendr
3261 average(ng)%avgt(i,j,k,it)=rfac(i,j)* &
3263 END DO
3264 END DO
3265 END DO
3268 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3270# ifdef DISTRIBUTE
3272 & lbi, ubi, lbj, ubj, 1,
n(ng), &
3276# endif
3277 END IF
3278 END IF
3279 END DO
3280
3281# if defined SEDIMENT && defined BEDLOAD
3284 DO j=jstrr,jendr
3285 DO i=istr,iendr
3286 sedbed(ng)%avgbedldu(i,j,it)=ufac(i,j)* &
3287 &
sedbed(ng)%avgbedldu(i,j, &
3288 & it)
3289 END DO
3290 END DO
3293 & lbi, ubi, lbj, ubj, &
3294 &
sedbed(ng)%avgbedldu(:,:,it))
3295# ifdef DISTRIBUTE
3297 & lbi, ubi, lbj, ubj, &
3300 &
sedbed(ng)%avgbedldu(:,:,it))
3301# endif
3302 END IF
3303 END IF
3304
3306 DO j=jstr,jendr
3307 DO i=istrr,iendr
3308 sedbed(ng)%avgbedldv(i,j,it)=vfac(i,j)* &
3309 &
sedbed(ng)%avgbedldv(i,j, &
3310 & it)
3311 END DO
3312 END DO
3315 & lbi, ubi, lbj, ubj, &
3316 &
sedbed(ng)%avgbedldv(:,:,it))
3317# ifdef DISTRIBUTE
3319 & lbi, ubi, lbj, ubj, &
3322 &
sedbed(ng)%avgbedldv(:,:,it))
3323# endif
3324 END IF
3325 END IF
3326 END DO
3327# endif
3328
3329# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
3332 DO j=jstrr,jendr
3333 DO i=istrr,iendr
3334 average(ng)%avgAKv(i,j,k)=rfac(i,j)* &
3336 END DO
3337 END DO
3338 END DO
3341 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3343# ifdef DISTRIBUTE
3345 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3349# endif
3350 END IF
3351 END IF
3352
3355 DO j=jstrr,jendr
3356 DO i=istrr,iendr
3357 average(ng)%avgAKt(i,j,k)=rfac(i,j)* &
3359 END DO
3360 END DO
3361 END DO
3364 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3366# ifdef DISTRIBUTE
3368 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3372# endif
3373 END IF
3374 END IF
3375# ifdef SALINITY
3378 DO j=jstrr,jendr
3379 DO i=istrr,iendr
3380 average(ng)%avgAKs(i,j,k)=rfac(i,j)* &
3382 END DO
3383 END DO
3384 END DO
3387 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3389# ifdef DISTRIBUTE
3391 & lbi, ubi, lbj, ubj, 0,
n(ng), &
3395# endif
3396 END IF
3397 END IF
3398# endif
3399# endif
3400
3401# ifdef LMD_SKPP
3403 DO j=jstrr,jendr
3404 DO i=istrr,iendr
3405 average(ng)%avghsbl(i,j)=rfac(i,j)* &
3407 END DO
3408 END DO
3411 & lbi, ubi, lbj, ubj, &
3413# ifdef DISTRIBUTE
3415 & lbi, ubi, lbj, ubj, &
3419# endif
3420 END IF
3421 END IF
3422# endif
3423
3424# ifdef LMD_BKPP
3426 DO j=jstrr,jendr
3427 DO i=istrr,iendr
3428 average(ng)%avghbbl(i,j)=rfac(i,j)* &
3430 END DO
3431 END DO
3434 & lbi, ubi, lbj, ubj, &
3436# ifdef DISTRIBUTE
3438 & lbi, ubi, lbj, ubj, &
3442# endif
3443 END IF
3444 END IF
3445# endif
3446# endif
3447
3448# if defined FORWARD_WRITE && defined SOLVE3D
3449
3450
3451
3453 DO j=jstrr,jendr
3454 DO i=istr,iendr
3455 average(ng)%avgDU_avg1(i,j)=ufac(i,j)* &
3457 END DO
3458 END DO
3461 & lbi, ubi, lbj, ubj, &
3463# ifdef DISTRIBUTE
3465 & lbi, ubi, lbj, ubj, &
3469# endif
3470 END IF
3471 END IF
3472
3474 DO j=jstrr,jendr
3475 DO i=istr,iendr
3476 average(ng)%avgDU_avg2(i,j)=ufac(i,j)* &
3478 END DO
3479 END DO
3482 & lbi, ubi, lbj, ubj, &
3484# ifdef DISTRIBUTE
3486 & lbi, ubi, lbj, ubj, &
3490# endif
3491 END IF
3492 END IF
3493
3495 DO j=jstr,jendr
3496 DO i=istrr,iendr
3497 average(ng)%avgDV_avg1(i,j)=vfac(i,j)* &
3499 END DO
3500 END DO
3503 & lbi, ubi, lbj, ubj, &
3505# ifdef DISTRIBUTE
3507 & lbi, ubi, lbj, ubj, &
3511# endif
3512 END IF
3513 END IF
3514
3516 DO j=jstr,jendr
3517 DO i=istrr,iendr
3518 average(ng)%avgDV_avg2(i,j)=vfac(i,j)* &
3520 END DO
3521 END DO
3524 & lbi, ubi, lbj, ubj, &
3526# ifdef DISTRIBUTE
3528 & lbi, ubi, lbj, ubj, &
3532# endif
3533 END IF
3534 END IF
3535# endif
3536
3537
3538
3540 DO j=jstrr,jendr
3541 DO i=istr,iendr
3542 average(ng)%avgsus(i,j)=ufac(i,j)* &
3544 END DO
3545 END DO
3548 & lbi, ubi, lbj, ubj, &
3550# ifdef DISTRIBUTE
3552 & lbi, ubi, lbj, ubj, &
3556# endif
3557 END IF
3558 END IF
3559
3561 DO j=jstr,jendr
3562 DO i=istrr,iendr
3563 average(ng)%avgsvs(i,j)=vfac(i,j)* &
3565 END DO
3566 END DO
3569 & lbi, ubi, lbj, ubj, &
3571# ifdef DISTRIBUTE
3573 & lbi, ubi, lbj, ubj, &
3577# endif
3578 END IF
3579 END IF
3580
3582 DO j=jstrr,jendr
3583 DO i=istr,iendr
3584 average(ng)%avgbus(i,j)=ufac(i,j)* &
3586 END DO
3587 END DO
3590 & lbi, ubi, lbj, ubj, &
3592# ifdef DISTRIBUTE
3594 & lbi, ubi, lbj, ubj, &
3598# endif
3599 END IF
3600 END IF
3601
3603 DO j=jstr,jendr
3604 DO i=istrr,iendr
3605 average(ng)%avgbvs(i,j)=vfac(i,j)* &
3607 END DO
3608 END DO
3611 & lbi, ubi, lbj, ubj, &
3613# ifdef DISTRIBUTE
3615 & lbi, ubi, lbj, ubj, &
3619# endif
3620 END IF
3621 END IF
3622# ifdef BBL
3624 DO j=jstrr,jendr
3625 DO i=istrr,iendr
3626 average(ng)%avgUbrs(i,j)=rfac(i,j)* &
3628 END DO
3629 END DO
3632 & lbi, ubi, lbj, ubj, &
3634# ifdef DISTRIBUTE
3636 & lbi, ubi, lbj, ubj, &
3640# endif
3641 END IF
3642 END IF
3644 DO j=jstrr,jendr
3645 DO i=istrr,iendr
3646 average(ng)%avgVbrs(i,j)=rfac(i,j)* &
3648 END DO
3649 END DO
3652 & lbi, ubi, lbj, ubj, &
3654# ifdef DISTRIBUTE
3656 & lbi, ubi, lbj, ubj, &
3660# endif
3661 END IF
3662 END IF
3664 DO j=jstrr,jendr
3665 DO i=istrr,iendr
3666 average(ng)%avgUbws(i,j)=rfac(i,j)* &
3668 END DO
3669 END DO
3672 & lbi, ubi, lbj, ubj, &
3674# ifdef DISTRIBUTE
3676 & lbi, ubi, lbj, ubj, &
3680# endif
3681 END IF
3682 END IF
3684 DO j=jstrr,jendr
3685 DO i=istrr,iendr
3686 average(ng)%avgVbws(i,j)=rfac(i,j)* &
3688 END DO
3689 END DO
3692 & lbi, ubi, lbj, ubj, &
3694# ifdef DISTRIBUTE
3696 & lbi, ubi, lbj, ubj, &
3700# endif
3701 END IF
3702 END IF
3704 DO j=jstrr,jendr
3705 DO i=istrr,iendr
3706 average(ng)%avgUbcs(i,j)=rfac(i,j)* &
3708 END DO
3709 END DO
3712 & lbi, ubi, lbj, ubj, &
3714# ifdef DISTRIBUTE
3716 & lbi, ubi, lbj, ubj, &
3720# endif
3721 END IF
3722 END IF
3724 DO j=jstrr,jendr
3725 DO i=istrr,iendr
3726 average(ng)%avgVbcs(i,j)=rfac(i,j)* &
3728 END DO
3729 END DO
3732 & lbi, ubi, lbj, ubj, &
3734# ifdef DISTRIBUTE
3736 & lbi, ubi, lbj, ubj, &
3740# endif
3741 END IF
3742 END IF
3744 DO j=jstrr,jendr
3745 DO i=istrr,iendr
3746 average(ng)%avgUVwc(i,j)=rfac(i,j)* &
3748 END DO
3749 END DO
3752 & lbi, ubi, lbj, ubj, &
3754# ifdef DISTRIBUTE
3756 & lbi, ubi, lbj, ubj, &
3760# endif
3761 END IF
3762 END IF
3764 DO j=jstrr,jendr
3765 DO i=istrr,iendr
3766 average(ng)%avgUbot(i,j)=rfac(i,j)* &
3768 END DO
3769 END DO
3772 & lbi, ubi, lbj, ubj, &
3774# ifdef DISTRIBUTE
3776 & lbi, ubi, lbj, ubj, &
3780# endif
3781 END IF
3782 END IF
3784 DO j=jstrr,jendr
3785 DO i=istrr,iendr
3786 average(ng)%avgVbot(i,j)=rfac(i,j)* &
3788 END DO
3789 END DO
3792 & lbi, ubi, lbj, ubj, &
3794# ifdef DISTRIBUTE
3796 & lbi, ubi, lbj, ubj, &
3800# endif
3801 END IF
3802 END IF
3804 DO j=jstrr,jendr
3805 DO i=istrr,iendr
3806 average(ng)%avgUbur(i,j)=rfac(i,j)* &
3808 END DO
3809 END DO
3812 & lbi, ubi, lbj, ubj, &
3814# ifdef DISTRIBUTE
3816 & lbi, ubi, lbj, ubj, &
3820# endif
3821 END IF
3822 END IF
3824 DO j=jstrr,jendr
3825 DO i=istrr,iendr
3826 average(ng)%avgVbvr(i,j)=rfac(i,j)* &
3828 END DO
3829 END DO
3832 & lbi, ubi, lbj, ubj, &
3834# ifdef DISTRIBUTE
3836 & lbi, ubi, lbj, ubj, &
3840# endif
3841 END IF
3842 END IF
3843# endif
3844# ifdef SOLVE3D
3845# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
3847 DO j=jstrr,jendr
3848 DO i=istrr,iendr
3849 average(ng)%avgPair(i,j)=rfac(i,j)* &
3851 END DO
3852 END DO
3855 & lbi, ubi, lbj, ubj, &
3857# ifdef DISTRIBUTE
3859 & lbi, ubi, lbj, ubj, &
3863# endif
3864 END IF
3865 END IF
3866# endif
3867
3868# if defined BULK_FLUXES
3870 DO j=jstrr,jendr
3871 DO i=istrr,iendr
3872 average(ng)%avgTair(i,j)=rfac(i,j)* &
3874 END DO
3875 END DO
3878 & lbi, ubi, lbj, ubj, &
3880# ifdef DISTRIBUTE
3882 & lbi, ubi, lbj, ubj, &
3886# endif
3887 END IF
3888 END IF
3889# endif
3890
3891# if defined BULK_FLUXES || defined ECOSIM
3893 DO j=jstrr,jendr
3894 DO i=istrr,iendr
3895 average(ng)%avgUwind(i,j)=rfac(i,j)* &
3897 END DO
3898 END DO
3901 & lbi, ubi, lbj, ubj, &
3903# ifdef DISTRIBUTE
3905 & lbi, ubi, lbj, ubj, &
3909# endif
3910 END IF
3911 END IF
3912
3914 DO j=jstrr,jendr
3915 DO i=istrr,iendr
3916 average(ng)%avgVwind(i,j)=rfac(i,j)* &
3918 END DO
3919 END DO
3922 & lbi, ubi, lbj, ubj, &
3924# ifdef DISTRIBUTE
3926 & lbi, ubi, lbj, ubj, &
3930# endif
3931 END IF
3932 END IF
3933
3935 DO j=jstr,jend
3936 DO i=istr,iend
3937 average(ng)%avgUwindE(i,j)=rfac(i,j)* &
3939 average(ng)%avgVwindN(i,j)=rfac(i,j)* &
3941 END DO
3942 END DO
3945 & lbi, ubi, lbj, ubj, &
3948 & lbi, ubi, lbj, ubj, &
3950# ifdef DISTRIBUTE
3952 & lbi, ubi, lbj, ubj, &
3957# endif
3958 END IF
3959 END IF
3960# endif
3961
3963 DO j=jstrr,jendr
3964 DO i=istrr,iendr
3965 average(ng)%avgstf(i,j)=rfac(i,j)* &
3967 END DO
3968 END DO
3971 & lbi, ubi, lbj, ubj, &
3973# ifdef DISTRIBUTE
3975 & lbi, ubi, lbj, ubj, &
3979# endif
3980 END IF
3981 END IF
3982
3983# ifdef SALINITY
3985 DO j=jstrr,jendr
3986 DO i=istrr,iendr
3987 average(ng)%avgswf(i,j)=rfac(i,j)* &
3989 END DO
3990 END DO
3993 & lbi, ubi, lbj, ubj, &
3995# ifdef DISTRIBUTE
3997 & lbi, ubi, lbj, ubj, &
4001# endif
4002 END IF
4003 END IF
4004# endif
4005
4006# ifdef SHORTWAVE
4008 DO j=jstrr,jendr
4009 DO i=istrr,iendr
4010 average(ng)%avgsrf(i,j)=rfac(i,j)* &
4012 END DO
4013 END DO
4016 & lbi, ubi, lbj, ubj, &
4018# ifdef DISTRIBUTE
4020 & lbi, ubi, lbj, ubj, &
4024# endif
4025 END IF
4026 END IF
4027# endif
4028
4029# if defined BULK_FLUXES || defined FRC_COUPLING
4031 DO j=jstrr,jendr
4032 DO i=istrr,iendr
4033 average(ng)%avglhf(i,j)=rfac(i,j)* &
4035 END DO
4036 END DO
4039 & lbi, ubi, lbj, ubj, &
4041# ifdef DISTRIBUTE
4043 & lbi, ubi, lbj, ubj, &
4047# endif
4048 END IF
4049 END IF
4050
4052 DO j=jstrr,jendr
4053 DO i=istrr,iendr
4054 average(ng)%avgshf(i,j)=rfac(i,j)* &
4056 END DO
4057 END DO
4060 & lbi, ubi, lbj, ubj, &
4062# ifdef DISTRIBUTE
4064 & lbi, ubi, lbj, ubj, &
4068# endif
4069 END IF
4070 END IF
4071
4073 DO j=jstrr,jendr
4074 DO i=istrr,iendr
4075 average(ng)%avglrf(i,j)=rfac(i,j)* &
4077 END DO
4078 END DO
4081 & lbi, ubi, lbj, ubj, &
4083# ifdef DISTRIBUTE
4085 & lbi, ubi, lbj, ubj, &
4089# endif
4090 END IF
4091 END IF
4092# endif
4093
4094# if defined BULK_FLUXES && defined EMINUSP
4096 DO j=jstrr,jendr
4097 DO i=istrr,iendr
4098 average(ng)%avgevap(i,j)=rfac(i,j)* &
4100 END DO
4101 END DO
4104 & lbi, ubi, lbj, ubj, &
4106# ifdef DISTRIBUTE
4108 & lbi, ubi, lbj, ubj, &
4112# endif
4113 END IF
4114 END IF
4115
4117 DO j=jstrr,jendr
4118 DO i=istrr,iendr
4119 average(ng)%avgrain(i,j)=rfac(i,j)* &
4121 END DO
4122 END DO
4125 & lbi, ubi, lbj, ubj, &
4127# ifdef DISTRIBUTE
4129 & lbi, ubi, lbj, ubj, &
4133# endif
4134 END IF
4135 END IF
4136# endif
4137# endif
4138# ifdef WEC
4139
4140
4141
4143 DO j=jstrr,jendr
4144 DO i=istr,iendr
4145 average(ng)%avgu2Sd(i,j)=ufac(i,j)* &
4147 END DO
4148 END DO
4151 & lbi, ubi, lbj, ubj, &
4153# ifdef DISTRIBUTE
4155 & lbi, ubi, lbj, ubj, &
4159# endif
4160 END IF
4161 END IF
4162
4164 DO j=jstr,jendr
4165 DO i=istrr,iendr
4166 average(ng)%avgv2Sd(i,j)=vfac(i,j)* &
4168 END DO
4169 END DO
4172 & lbi, ubi, lbj, ubj, &
4174# ifdef DISTRIBUTE
4176 & lbi, ubi, lbj, ubj, &
4180# endif
4181 END IF
4182 END IF
4183
4185 DO j=jstrr,jendr
4186 DO i=istr,iendr
4187 average(ng)%avgu2rs(i,j)=ufac(i,j)* &
4189 END DO
4190 END DO
4193 & lbi, ubi, lbj, ubj, &
4195# ifdef DISTRIBUTE
4197 & lbi, ubi, lbj, ubj, &
4201# endif
4202 END IF
4203 END IF
4204
4206 DO j=jstr,jendr
4207 DO i=istrr,iendr
4208 average(ng)%avgv2rs(i,j)=vfac(i,j)* &
4210 END DO
4211 END DO
4214 & lbi, ubi, lbj, ubj, &
4216# ifdef DISTRIBUTE
4218 & lbi, ubi, lbj, ubj, &
4222# endif
4223 END IF
4224 END IF
4225# endif
4226# ifdef WEC
4227# ifdef SOLVE3D
4230 DO j=jstrr,jendr
4231 DO i=istr,iendr
4232 average(ng)%avgu3Sd(i,j,k)=ufac(i,j)* &
4234 END DO
4235 END DO
4236 END DO
4239 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4241# ifdef DISTRIBUTE
4243 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4247# endif
4248 END IF
4249 END IF
4250
4253 DO j=jstr,jendr
4254 DO i=istrr,iendr
4255 average(ng)%avgv3Sd(i,j,k)=vfac(i,j)* &
4257 END DO
4258 END DO
4259 END DO
4262 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4264# ifdef DISTRIBUTE
4266 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4270# endif
4271 END IF
4272 END IF
4273
4276 DO j=jstrr,jendr
4277 DO i=istr,iendr
4278 average(ng)%avgu3rs(i,j,k)=ufac(i,j)* &
4280 END DO
4281 END DO
4282 END DO
4285 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4287# ifdef DISTRIBUTE
4289 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4293# endif
4294 END IF
4295 END IF
4296
4299 DO j=jstr,jendr
4300 DO i=istrr,iendr
4301 average(ng)%avgv3RS(i,j,k)=vfac(i,j)* &
4303 END DO
4304 END DO
4305 END DO
4308 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4310# ifdef DISTRIBUTE
4312 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4316# endif
4317 END IF
4318 END IF
4319
4322 DO j=jstr,jendr
4323 DO i=istrr,iendr
4324 average(ng)%avgW3Sd(i,j,k)=rfac(i,j)* &
4326 END DO
4327 END DO
4328 END DO
4331 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4333# ifdef DISTRIBUTE
4335 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4339# endif
4340 END IF
4341 END IF
4344 DO j=jstr,jendr
4345 DO i=istrr,iendr
4346 average(ng)%avgW3St(i,j,k)=rfac(i,j)* &
4348 END DO
4349 END DO
4350 END DO
4353 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4355# ifdef DISTRIBUTE
4357 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4361# endif
4362 END IF
4363 END IF
4364# endif
4365# endif
4366# ifdef WEC_VF
4368 DO j=jstrr,jendr
4369 DO i=istrr,iendr
4370 average(ng)%avgWztw(i,j)=rfac(i,j)* &
4372 END DO
4373 END DO
4376 & lbi, ubi, lbj, ubj, &
4378# ifdef DISTRIBUTE
4380 & lbi, ubi, lbj, ubj, &
4384# endif
4385 END IF
4386 END IF
4388 DO j=jstrr,jendr
4389 DO i=istrr,iendr
4390 average(ng)%avgWqsp(i,j)=rfac(i,j)* &
4392 END DO
4393 END DO
4396 & lbi, ubi, lbj, ubj, &
4398# ifdef DISTRIBUTE
4400 & lbi, ubi, lbj, ubj, &
4404# endif
4405 END IF
4406 END IF
4408 DO j=jstrr,jendr
4409 DO i=istrr,iendr
4410 average(ng)%avgWbeh(i,j)=rfac(i,j)* &
4412 END DO
4413 END DO
4416 & lbi, ubi, lbj, ubj, &
4418# ifdef DISTRIBUTE
4420 & lbi, ubi, lbj, ubj, &
4424# endif
4425 END IF
4426 END IF
4427# endif
4428# ifdef WAVES_HEIGHT
4430 DO j=jstrr,jendr
4431 DO i=istrr,iendr
4432 average(ng)%avgWamp(i,j)=rfac(i,j)* &
4434 END DO
4435 END DO
4438 & lbi, ubi, lbj, ubj, &
4440# ifdef DISTRIBUTE
4442 & lbi, ubi, lbj, ubj, &
4446# endif
4447 END IF
4448 END IF
4450 DO j=jstrr,jendr
4451 DO i=istrr,iendr
4452 average(ng)%avgWam2(i,j)=rfac(i,j)* &
4454 END DO
4455 END DO
4458 & lbi, ubi, lbj, ubj, &
4460# ifdef DISTRIBUTE
4462 & lbi, ubi, lbj, ubj, &
4466# endif
4467 END IF
4468 END IF
4469# endif
4470# ifdef WAVES_LENGTH
4472 DO j=jstrr,jendr
4473 DO i=istrr,iendr
4474 average(ng)%avgWlen(i,j)=rfac(i,j)* &
4476 END DO
4477 END DO
4480 & lbi, ubi, lbj, ubj, &
4482# ifdef DISTRIBUTE
4484 & lbi, ubi, lbj, ubj, &
4488# endif
4489 END IF
4490 END IF
4491# endif
4492# ifdef WAVES_LENGTHP
4494 DO j=jstrr,jendr
4495 DO i=istrr,iendr
4496 average(ng)%avgWlep(i,j)=rfac(i,j)* &
4498 END DO
4499 END DO
4502 & lbi, ubi, lbj, ubj, &
4504# ifdef DISTRIBUTE
4506 & lbi, ubi, lbj, ubj, &
4510# endif
4511 END IF
4512 END IF
4513# endif
4514# ifdef WAVES_DIR
4516 DO j=jstrr,jendr
4517 DO i=istrr,iendr
4518 average(ng)%avgWdir(i,j)=rfac(i,j)* &
4520 END DO
4521 END DO
4524 & lbi, ubi, lbj, ubj, &
4526# ifdef DISTRIBUTE
4528 & lbi, ubi, lbj, ubj, &
4532# endif
4533 END IF
4534 END IF
4535# endif
4536# ifdef WAVES_DIRP
4538 DO j=jstrr,jendr
4539 DO i=istrr,iendr
4540 average(ng)%avgWdip(i,j)=rfac(i,j)* &
4542 END DO
4543 END DO
4546 & lbi, ubi, lbj, ubj, &
4548# ifdef DISTRIBUTE
4550 & lbi, ubi, lbj, ubj, &
4554# endif
4555 END IF
4556 END IF
4557# endif
4558# ifdef WAVES_TOP_PERIOD
4560 DO j=jstrr,jendr
4561 DO i=istrr,iendr
4562 average(ng)%avgWptp(i,j)=rfac(i,j)* &
4564 END DO
4565 END DO
4568 & lbi, ubi, lbj, ubj, &
4570# ifdef DISTRIBUTE
4572 & lbi, ubi, lbj, ubj, &
4576# endif
4577 END IF
4578 END IF
4579# endif
4580# ifdef WAVES_BOT_PERIOD
4582 DO j=jstrr,jendr
4583 DO i=istrr,iendr
4584 average(ng)%avgWpbt(i,j)=rfac(i,j)* &
4586 END DO
4587 END DO
4590 & lbi, ubi, lbj, ubj, &
4592# ifdef DISTRIBUTE
4594 & lbi, ubi, lbj, ubj, &
4598# endif
4599 END IF
4600 END IF
4601# endif
4602# ifdef BBL_MODEL
4604 DO j=jstrr,jendr
4605 DO i=istrr,iendr
4606 average(ng)%avgWorb(i,j)=rfac(i,j)* &
4608 END DO
4609 END DO
4612 & lbi, ubi, lbj, ubj, &
4614# ifdef DISTRIBUTE
4616 & lbi, ubi, lbj, ubj, &
4620# endif
4621 END IF
4622 END IF
4623# endif
4624# if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
4626 DO j=jstrr,jendr
4627 DO i=istrr,iendr
4628 average(ng)%avgWdif(i,j)=rfac(i,j)* &
4630 END DO
4631 END DO
4634 & lbi, ubi, lbj, ubj, &
4636# ifdef DISTRIBUTE
4638 & lbi, ubi, lbj, ubj, &
4642# endif
4643 END IF
4644 END IF
4645# endif
4646# if defined WAV_COUPLING || defined TKE_WAVEDISS || \
4647 defined wdiss_thorguza || defined wdiss_churthor
4649 DO j=jstrr,jendr
4650 DO i=istrr,iendr
4651 average(ng)%avgWdib(i,j)=rfac(i,j)* &
4653 END DO
4654 END DO
4657 & lbi, ubi, lbj, ubj, &
4659# ifdef DISTRIBUTE
4661 & lbi, ubi, lbj, ubj, &
4665# endif
4666 END IF
4667 END IF
4669 DO j=jstrr,jendr
4670 DO i=istrr,iendr
4671 average(ng)%avgWdiw(i,j)=rfac(i,j)* &
4673 END DO
4674 END DO
4677 & lbi, ubi, lbj, ubj, &
4679# ifdef DISTRIBUTE
4681 & lbi, ubi, lbj, ubj, &
4685# endif
4686 END IF
4687 END IF
4688# endif
4689# ifdef ROLLER_SVENDSEN
4691 DO j=jstrr,jendr
4692 DO i=istrr,iendr
4693 average(ng)%avgWbrk(i,j)=rfac(i,j)* &
4695 END DO
4696 END DO
4699 & lbi, ubi, lbj, ubj, &
4701# ifdef DISTRIBUTE
4703 & lbi, ubi, lbj, ubj, &
4707# endif
4708 END IF
4709 END IF
4710# endif
4711# ifdef WEC_ROLLER
4713 DO j=jstrr,jendr
4714 DO i=istrr,iendr
4715 average(ng)%avgWdis(i,j)=rfac(i,j)* &
4717 END DO
4718 END DO
4721 & lbi, ubi, lbj, ubj, &
4723# ifdef DISTRIBUTE
4725 & lbi, ubi, lbj, ubj, &
4729# endif
4730 END IF
4731 END IF
4733 DO j=jstrr,jendr
4734 DO i=istrr,iendr
4735 average(ng)%avgWrol(i,j)=rfac(i,j)* &
4737 END DO
4738 END DO
4741 & lbi, ubi, lbj, ubj, &
4743# ifdef DISTRIBUTE
4745 & lbi, ubi, lbj, ubj, &
4749# endif
4750 END IF
4751 END IF
4752# endif
4753# ifdef UV_KIRBY
4755 DO j=jstrr,jendr
4756 DO i=istrr,iendr
4757 average(ng)%avgUwav(i,j)=rfac(i,j)* &
4759 END DO
4760 END DO
4763 & lbi, ubi, lbj, ubj, &
4765# ifdef DISTRIBUTE
4767 & lbi, ubi, lbj, ubj, &
4771# endif
4772 END IF
4773 END IF
4775 DO j=jstrr,jendr
4776 DO i=istrr,iendr
4777 average(ng)%avgVwav(i,j)=rfac(i,j)* &
4779 END DO
4780 END DO
4783 & lbi, ubi, lbj, ubj, &
4785# ifdef DISTRIBUTE
4787 & lbi, ubi, lbj, ubj, &
4791# endif
4792 END IF
4793 END IF
4794# endif
4795
4796
4797
4799 DO j=jstr,jend
4800 DO i=istr,iend
4801 average(ng)%avgpvor2d(i,j)=pfac(i,j)* &
4803 END DO
4804 END DO
4807 & lbi, ubi, lbj, ubj, &
4809# ifdef DISTRIBUTE
4811 & lbi, ubi, lbj, ubj, &
4815# endif
4816 END IF
4817 END IF
4818
4820 DO j=jstr,jend
4821 DO i=istr,iend
4822 average(ng)%avgrvor2d(i,j)=pfac(i,j)* &
4824 END DO
4825 END DO
4828 & lbi, ubi, lbj, ubj, &
4830# ifdef DISTRIBUTE
4832 & lbi, ubi, lbj, ubj, &
4836# endif
4837 END IF
4838 END IF
4839
4840# ifdef SOLVE3D
4843 DO j=jstr,jend
4844 DO i=istr,iend
4845 average(ng)%avgpvor3d(i,j,k)=pfac(i,j)* &
4846 &
average(ng)%avgpvor3d(i,j,k)
4847 END DO
4848 END DO
4849 END DO
4852 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4854# ifdef DISTRIBUTE
4856 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4860# endif
4861 END IF
4862 END IF
4863
4866 DO j=jstr,jend
4867 DO i=istr,iend
4868 average(ng)%avgrvor3d(i,j,k)=pfac(i,j)* &
4869 &
average(ng)%avgrvor3d(i,j,k)
4870 END DO
4871 END DO
4872 END DO
4875 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4877# ifdef DISTRIBUTE
4879 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4883# endif
4884 END IF
4885 END IF
4886# endif
4887
4888
4889
4891 DO j=jstrr,jendr
4892 DO i=istrr,iendr
4893 average(ng)%avgZZ(i,j)=rfac(i,j)* &
4895 END DO
4896 END DO
4899 & lbi, ubi, lbj, ubj, &
4901# ifdef DISTRIBUTE
4903 & lbi, ubi, lbj, ubj, &
4907# endif
4908 END IF
4909 END IF
4910
4912 DO j=jstrr,jendr
4913 DO i=istr,iendr
4914 average(ng)%avgU2(i,j)=ufac(i,j)* &
4916 END DO
4917 END DO
4920 & lbi, ubi, lbj, ubj, &
4922# ifdef DISTRIBUTE
4924 & lbi, ubi, lbj, ubj, &
4928# endif
4929 END IF
4930 END IF
4931
4933 DO j=jstr,jendr
4934 DO i=istrr,iendr
4935 average(ng)%avgV2(i,j)=vfac(i,j)* &
4937 END DO
4938 END DO
4941 & lbi, ubi, lbj, ubj, &
4943# ifdef DISTRIBUTE
4945 & lbi, ubi, lbj, ubj, &
4949# endif
4950 END IF
4951 END IF
4952
4953# ifdef SOLVE3D
4956 DO j=jstrr,jendr
4957 DO i=istr,iendr
4958 average(ng)%avgUU(i,j,k)=ufac(i,j)* &
4960 END DO
4961 END DO
4962 END DO
4965 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4967# ifdef DISTRIBUTE
4969 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4973# endif
4974 END IF
4975 END IF
4976
4979 DO j=jstr,jendr
4980 DO i=istrr,iendr
4981 average(ng)%avgVV(i,j,k)=vfac(i,j)* &
4983 END DO
4984 END DO
4985 END DO
4988 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4990# ifdef DISTRIBUTE
4992 & lbi, ubi, lbj, ubj, 1,
n(ng), &
4996# endif
4997 END IF
4998 END IF
4999
5002 DO j=jstr,jend
5003 DO i=istr,iend
5004 average(ng)%avgUV(i,j,k)=rfac(i,j)* &
5006 END DO
5007 END DO
5008 END DO
5011 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5013# ifdef DISTRIBUTE
5015 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5019# endif
5020 END IF
5021 END IF
5022
5025 DO j=jstrr,jendr
5026 DO i=istr,iendr
5027 average(ng)%avgHuon(i,j,k)=ufac(i,j)* &
5029 END DO
5030 END DO
5031 END DO
5034 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5036# ifdef DISTRIBUTE
5038 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5042# endif
5043 END IF
5044 END IF
5045
5048 DO j=jstr,jendr
5049 DO i=istrr,iendr
5050 average(ng)%avgHvom(i,j,k)=vfac(i,j)* &
5052 END DO
5053 END DO
5054 END DO
5057 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5059# ifdef DISTRIBUTE
5061 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5065# endif
5066 END IF
5067 END IF
5068
5072 DO j=jstrr,jendr
5073 DO i=istrr,iendr
5074 average(ng)%avgTT(i,j,k,it)=rfac(i,j)* &
5076 END DO
5077 END DO
5078 END DO
5081 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5082 &
average(ng)%avgTT(:,:,:,it))
5083# ifdef DISTRIBUTE
5085 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5088 &
average(ng)%avgTT(:,:,:,it))
5089# endif
5090 END IF
5091 END IF
5092
5095 DO j=jstrr,jendr
5096 DO i=istr,iend
5097 average(ng)%avgUT(i,j,k,it)=ufac(i,j)* &
5099 END DO
5100 END DO
5101 END DO
5104 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5105 &
average(ng)%avgUT(:,:,:,it))
5106# ifdef DISTRIBUTE
5108 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5111 &
average(ng)%avgUT(:,:,:,it))
5112# endif
5113 END IF
5114 END IF
5115
5118 DO j=jstr,jend
5119 DO i=istrr,iendr
5120 average(ng)%avgVT(i,j,k,it)=vfac(i,j)* &
5122 END DO
5123 END DO
5124 END DO
5127 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5128 &
average(ng)%avgVT(:,:,:,it))
5129# ifdef DISTRIBUTE
5131 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5134 &
average(ng)%avgVT(:,:,:,it))
5135# endif
5136 END IF
5137 END IF
5138
5141 DO j=jstrr,jendr
5142 DO i=istr,iend
5143 average(ng)%avgHuonT(i,j,k,it)=ufac(i,j)* &
5144 &
average(ng)%avgHuonT(i,j,k,it)
5145 END DO
5146 END DO
5147 END DO
5150 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5151 &
average(ng)%avgHuonT(:,:,:,it))
5152# ifdef DISTRIBUTE
5154 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5157 &
average(ng)%avgHuonT(:,:,:,it))
5158# endif
5159 END IF
5160 END IF
5161
5164 DO j=jstr,jend
5165 DO i=istrr,iendr
5166 average(ng)%avgHvomT(i,j,k,it)=vfac(i,j)* &
5167 &
average(ng)%avgHvomT(i,j,k,it)
5168 END DO
5169 END DO
5170 END DO
5173 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5174 &
average(ng)%avgHvomT(:,:,:,it))
5175# ifdef DISTRIBUTE
5177 & lbi, ubi, lbj, ubj, 1,
n(ng), &
5180 &
average(ng)%avgHvomT(:,:,:,it))
5181# endif
5182 END IF
5183 END IF
5184 END DO
5185# endif
5186 END IF
5187
5188 RETURN
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_p2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_u3d_tile(ng, tile, lbi, ubi, lbj, ubj, lbk, ubk, a)
subroutine exchange_p3d_tile(ng, tile, lbi, ubi, lbj, ubj, lbk, ubk, a)
subroutine exchange_r3d_tile(ng, tile, lbi, ubi, lbj, ubj, lbk, ubk, a)
subroutine exchange_v3d_tile(ng, tile, lbi, ubi, lbj, ubj, lbk, ubk, a)
subroutine exchange_w3d_tile(ng, tile, lbi, ubi, lbj, ubj, lbk, ubk, a)
type(t_average), dimension(:), allocatable average
type(t_bbl), dimension(:), allocatable bbl
type(t_coupling), dimension(:), allocatable coupling
type(t_forces), dimension(:), allocatable forces
type(t_mixing), dimension(:), allocatable mixing
integer, dimension(:), allocatable idttav
integer, dimension(:), allocatable ihvtav
integer, dimension(:), allocatable ihutav
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
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
real(dp), dimension(:), allocatable avgtime
integer, dimension(:), allocatable navg
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable ntsavg
type(t_sedbed), dimension(:), allocatable sedbed
integer, dimension(:), allocatable idubld
integer, dimension(:), allocatable idvbld
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine, public uv_rotate3d(ng, tile, add, lboundary, lbi, ubi, lbj, ubj, lbk, ubk, cosangler, sinangler, rmask_full, uinp, vinp, uout, vout)
subroutine, public uv_rotate2d(ng, tile, add, lboundary, lbi, ubi, lbj, ubj, cosangler, sinangler, rmask_full, uinp, vinp, uout, vout)
subroutine, public vorticity_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, kout, nout, pmask, umask, vmask, f, h, om_u, on_v, pm, pn, z_r, pden, u, v, ubar, vbar, zeta, pvor, rvor, pvor_bar, rvor_bar)