73 & LBi, UBi, LBj, UBj, &
74 & IminS, ImaxS, JminS, JmaxS, &
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
101 integer,
intent(in) :: Nout
107 integer :: i, it, j, k
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)
116# include "set_bounds.h"
122 IF (
navg(ng).eq.0)
RETURN
131 & (mod(
iic(ng)-1,
navg(ng)).eq.1)).or. &
142 grid(ng)%pmask_avg(i,j)=max(0.0_r8, &
143 & min(
grid(ng)%pmask_full(i,j), &
149 grid(ng)%rmask_avg(i,j)=max(0.0_r8, &
150 & min(
grid(ng)%rmask_full(i,j), &
156 grid(ng)%umask_avg(i,j)=max(0.0_r8, &
157 & min(
grid(ng)%umask_full(i,j), &
163 grid(ng)%vmask_avg(i,j)=max(0.0_r8, &
164 & min(
grid(ng)%vmask_full(i,j), &
178 &
grid(ng)%rmask_full(i,j)
189 &
grid(ng)%umask_full(i,j)
200 &
grid(ng)%vmask_full(i,j)
214 &
grid(ng)%umask_full(i,j)
227 &
grid(ng)%vmask_full(i,j)
238 &
grid(ng)%pm(i,j)* &
242 &
grid(ng)%rmask_full(i,j)
256 &
grid(ng)%rmask_full(i,j)
271 &
grid(ng)%rmask_full(i,j)
279# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
287 &
grid(ng)%rmask_full(i,j)
300 &
grid(ng)%rmask_full(i,j)
313 &
grid(ng)%rmask_full(i,j)
330 &
grid(ng)%umask_full(i,j)
341 &
grid(ng)%vmask_full(i,j)
353 &
grid(ng)%umask_full(i,j)
364 &
grid(ng)%vmask_full(i,j)
377 &
grid(ng)%rmask_full(i,j)
388 &
grid(ng)%rmask_full(i,j)
400 &
grid(ng)%rmask_full(i,j)
413 &
grid(ng)%rmask_full(i,j)
424 &
grid(ng)%rmask_full(i,j)
435 &
grid(ng)%rmask_full(i,j)
447 &
grid(ng)%rmask_full(i,j)
462 &
ocean(ng)%tl_zeta(i,j,kout)
465 &
grid(ng)%rmask_full(i,j)
474 &
ocean(ng)%tl_ubar(i,j,kout)
477 &
grid(ng)%umask_full(i,j)
486 &
ocean(ng)%tl_vbar(i,j,kout)
489 &
grid(ng)%vmask_full(i,j)
501 &
ocean(ng)%tl_u(i,j,k,nout)
504 &
grid(ng)%umask_full(i,j)
515 &
ocean(ng)%tl_v(i,j,k,nout)
518 &
grid(ng)%vmask_full(i,j)
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))
535 &
grid(ng)%rmask_full(i,j)
549 &
ocean(ng)%tl_t(i,j,k, &
554 &
grid(ng)%rmask_full(i,j)
564 average(ng)%avgUT(i,j,k,it)=0.5_r8* &
565 &
ocean(ng)%tl_u(i,j,k, &
567 & (
ocean(ng)%tl_t(i-1,j,k, &
569 &
ocean(ng)%tl_t(i ,j,k, &
574 &
grid(ng)%umask_full(i,j)
584 average(ng)%avgVT(i,j,k,it)=0.5_r8* &
585 &
ocean(ng)%tl_v(i,j,k, &
587 & (
ocean(ng)%tl_t(i,j-1,k, &
589 &
ocean(ng)%tl_t(i,j ,k, &
594 &
grid(ng)%vmask_full(i,j)
617 grid(ng)%pmask_avg(i,j)=
grid(ng)%pmask_avg(i,j)+ &
619 & min(
grid(ng)%pmask_full(i,j), &
625 grid(ng)%rmask_avg(i,j)=
grid(ng)%rmask_avg(i,j)+ &
627 & min(
grid(ng)%rmask_full(i,j), &
633 grid(ng)%umask_avg(i,j)=
grid(ng)%umask_avg(i,j)+ &
635 & min(
grid(ng)%umask_full(i,j), &
641 grid(ng)%vmask_avg(i,j)=
grid(ng)%vmask_avg(i,j)+ &
643 & min(
grid(ng)%vmask_full(i,j), &
656 &
grid(ng)%rmask_full(i,j)* &
658 &
ocean(ng)%tl_zeta(i,j,kout)
667 &
grid(ng)%umask_full(i,j)* &
669 &
ocean(ng)%tl_ubar(i,j,kout)
678 &
grid(ng)%vmask_full(i,j)* &
680 &
ocean(ng)%tl_vbar(i,j,kout)
692 &
grid(ng)%umask_full(i,j)* &
694 &
ocean(ng)%tl_u(i,j,k,nout)
705 &
grid(ng)%vmask_full(i,j)* &
707 &
ocean(ng)%tl_v(i,j,k,nout)
718 &
grid(ng)%rmask_full(i,j)* &
720 &
ocean(ng)%tl_W(i,j,k)* &
721 &
grid(ng)%pm(i,j)* &
734 &
grid(ng)%rmask_full(i,j)* &
736 &
ocean(ng)%tl_rho(i,j,k)
748 &
grid(ng)%rmask_full(i,j)* &
750 &
ocean(ng)%tl_t(i,j,k, &
758# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
765 &
grid(ng)%rmask_full(i,j)* &
767 &
mixing(ng)%tl_Akv(i,j,k)
778 &
grid(ng)%rmask_full(i,j)* &
791 &
grid(ng)%rmask_full(i,j)* &
808 &
grid(ng)%umask_full(i,j)* &
810 &
forces(ng)%tl_sustr(i,j)
819 &
grid(ng)%vmask_full(i,j)* &
821 &
forces(ng)%tl_svstr(i,j)
831 &
grid(ng)%umask_full(i,j)* &
833 &
forces(ng)%tl_bustr(i,j)
842 &
grid(ng)%vmask_full(i,j)* &
844 &
forces(ng)%tl_bvstr(i,j)
855 &
grid(ng)%rmask_full(i,j)* &
866 &
grid(ng)%rmask_full(i,j)* &
878 &
grid(ng)%rmask_full(i,j)* &
880 &
forces(ng)%tl_srflx(i,j)
891 &
grid(ng)%rmask_full(i,j)* &
893 &
forces(ng)%tl_lhflx(i,j)
902 &
grid(ng)%rmask_full(i,j)* &
904 &
forces(ng)%tl_lrflx(i,j)
913 &
grid(ng)%rmask_full(i,j)* &
915 &
forces(ng)%tl_shflx(i,j)
925 &
grid(ng)%rmask_full(i,j)* &
942 &
grid(ng)%rmask_full(i,j)* &
944 &
ocean(ng)%tl_zeta(i,j,kout)* &
945 &
ocean(ng)%tl_zeta(i,j,kout)
954 &
grid(ng)%umask_full(i,j)* &
956 &
ocean(ng)%tl_ubar(i,j,kout)* &
957 &
ocean(ng)%tl_ubar(i,j,kout)
966 &
grid(ng)%vmask_full(i,j)* &
968 &
ocean(ng)%tl_vbar(i,j,kout)* &
969 &
ocean(ng)%tl_vbar(i,j,kout)
981 &
grid(ng)%umask_full(i,j)* &
983 &
ocean(ng)%tl_u(i,j,k,nout)* &
984 &
ocean(ng)%tl_u(i,j,k,nout)
995 &
grid(ng)%vmask_full(i,j)* &
997 &
ocean(ng)%tl_v(i,j,k,nout)* &
998 &
ocean(ng)%tl_v(i,j,k,nout)
1009 &
grid(ng)%rmask_full(i,j)* &
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))
1029 &
grid(ng)%rmask_full(i,j)* &
1031 &
ocean(ng)%tl_t(i,j,k, &
1033 &
ocean(ng)%tl_t(i,j,k, &
1046 &
grid(ng)%umask_full(i,j)* &
1049 &
ocean(ng)%tl_u(i,j,k, &
1051 & (
ocean(ng)%tl_t(i-1,j,k, &
1053 &
ocean(ng)%tl_t(i ,j,k, &
1066 &
grid(ng)%vmask_full(i,j)* &
1069 &
ocean(ng)%tl_v(i,j,k, &
1071 & (
ocean(ng)%tl_t(i,j-1,k, &
1073 &
ocean(ng)%tl_t(i,j ,k, &
1088 & (mod(
iic(ng)-1,
navg(ng)).eq.0).and. &
1090 IF (
domain(ng)%SouthWest_Test(tile))
THEN
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))
1111 fac=1.0_r8/real(
navg(ng),r8)
1127 average(ng)%avgzeta(i,j)=rfac(i,j)* &
1135 average(ng)%avgu2d(i,j)=ufac(i,j)* &
1143 average(ng)%avgv2d(i,j)=vfac(i,j)* &
1154 average(ng)%avgu3d(i,j,k)=ufac(i,j)* &
1164 average(ng)%avgv3d(i,j,k)=vfac(i,j)* &
1175 average(ng)%avgw3d(i,j,k)=rfac(i,j)* &
1186 average(ng)%avgrho(i,j,k)=rfac(i,j)* &
1197 average(ng)%avgt(i,j,k,it)=rfac(i,j)* &
1205# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1210 average(ng)%avgAKv(i,j,k)=rfac(i,j)* &
1220 average(ng)%avgAKt(i,j,k)=rfac(i,j)* &
1230 average(ng)%avgAKs(i,j,k)=rfac(i,j)* &
1244 average(ng)%avgsus(i,j)=ufac(i,j)* &
1252 average(ng)%avgsvs(i,j)=vfac(i,j)* &
1261 average(ng)%avgbus(i,j)=ufac(i,j)* &
1269 average(ng)%avgbvs(i,j)=vfac(i,j)* &
1279 average(ng)%avgstf(i,j)=rfac(i,j)* &
1287 average(ng)%avgswf(i,j)=rfac(i,j)* &
1296 average(ng)%avgsrf(i,j)=rfac(i,j)* &
1306 average(ng)%avglhf(i,j)=rfac(i,j)* &
1314 average(ng)%avgshf(i,j)=rfac(i,j)* &
1322 average(ng)%avglrf(i,j)=rfac(i,j)* &
1331 average(ng)%avgevap(i,j)=rfac(i,j)* &
1345 average(ng)%avgZZ(i,j)=rfac(i,j)* &
1353 average(ng)%avgU2(i,j)=ufac(i,j)* &
1361 average(ng)%avgV2(i,j)=vfac(i,j)* &
1372 average(ng)%avgUU(i,j,k)=ufac(i,j)* &
1382 average(ng)%avgVV(i,j,k)=vfac(i,j)* &
1392 average(ng)%avgUV(i,j,k)=rfac(i,j)* &
1404 average(ng)%avgTT(i,j,k,it)=rfac(i,j)* &
1415 average(ng)%avgUT(i,j,k,it)=ufac(i,j)* &
1426 average(ng)%avgVT(i,j,k,it)=vfac(i,j)* &