57 & LBi, UBi, LBj, UBj, &
58 & IminS, ImaxS, JminS, JmaxS, &
63# ifdef DIAGNOSTICS_BIO
91 integer,
intent(in) :: ng, tile
92 integer,
intent(in) :: LBi, UBi, LBj, UBj
93 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
94 integer,
intent(in) :: kout, nrhs
98 integer :: i, it, j, k
99 integer :: iband, idiag
103 real(r8) :: rfac(IminS:ImaxS,JminS:JmaxS)
104 real(r8) :: ufac(IminS:ImaxS,JminS:JmaxS)
105 real(r8) :: vfac(IminS:ImaxS,JminS:JmaxS)
107# include "set_bounds.h"
113 IF (
ndia(ng).eq.0)
RETURN
122 & (mod(
iic(ng)-1,
ndia(ng)).eq.1)).or. &
134 grid(ng)%pmask_dia(i,j)=max(0.0_r8, &
135 & min(
grid(ng)%pmask_full(i,j), &
141 grid(ng)%rmask_dia(i,j)=max(0.0_r8, &
142 & min(
grid(ng)%rmask_full(i,j), &
148 grid(ng)%umask_dia(i,j)=max(0.0_r8, &
149 & min(
grid(ng)%umask_full(i,j), &
155 grid(ng)%vmask_dia(i,j)=max(0.0_r8, &
156 & min(
grid(ng)%vmask_full(i,j), &
166 diags(ng)%avgzeta(i,j)=
ocean(ng)%zeta(i,j,kout)
168 diags(ng)%avgzeta(i,j)=
diags(ng)%avgzeta(i,j)* &
169 &
grid(ng)%rmask_full(i,j)
174# if defined DIAGNOSTICS_TS || defined DIAGNOSTICS_UV
175# ifdef DIAGNOSTICS_TS
181 diags(ng)%DiaTrc(i,j,k,it,idiag)= &
183 &
grid(ng)%rmask_full(i,j)* &
185 &
diags(ng)%DiaTwrk(i,j,k,it,idiag)
192# ifdef DIAGNOSTICS_UV
196 diags(ng)%DiaU2d(i,j,idiag)= &
198 &
grid(ng)%umask_full(i,j)* &
200 &
diags(ng)%DiaU2wrk(i,j,idiag)
205 diags(ng)%DiaV2d(i,j,idiag)= &
207 &
grid(ng)%vmask_full(i,j)* &
209 &
diags(ng)%DiaV2wrk(i,j,idiag)
218 diags(ng)%DiaU3d(i,j,k,idiag)= &
220 &
grid(ng)%umask_full(i,j)* &
222 &
diags(ng)%DiaU3wrk(i,j,k,idiag)
227 diags(ng)%DiaV3d(i,j,k,idiag)= &
229 &
grid(ng)%vmask_full(i,j)* &
231 &
diags(ng)%DiaV3wrk(i,j,k,idiag)
254 grid(ng)%pmask_dia(i,j)=
grid(ng)%pmask_dia(i,j)+ &
256 & min(
grid(ng)%pmask_full(i,j), &
262 grid(ng)%rmask_dia(i,j)=
grid(ng)%rmask_dia(i,j)+ &
264 & min(
grid(ng)%rmask_full(i,j), &
270 grid(ng)%umask_dia(i,j)=
grid(ng)%umask_dia(i,j)+ &
272 & min(
grid(ng)%umask_full(i,j), &
278 grid(ng)%vmask_dia(i,j)=
grid(ng)%vmask_dia(i,j)+ &
280 & min(
grid(ng)%vmask_full(i,j), &
290 diags(ng)%avgzeta(i,j)=
diags(ng)%avgzeta(i,j)+ &
292 &
grid(ng)%rmask_full(i,j)* &
294 &
ocean(ng)%zeta(i,j,kout)
300# if defined DIAGNOSTICS_TS || defined DIAGNOSTICS_UV
301# ifdef DIAGNOSTICS_TS
307 diags(ng)%DiaTrc(i,j,k,it,idiag)= &
308 &
diags(ng)%DiaTrc(i,j,k,it,idiag)+ &
310 &
grid(ng)%rmask_full(i,j)* &
312 &
diags(ng)%DiaTwrk(i,j,k,it,idiag)
319# ifdef DIAGNOSTICS_UV
323 diags(ng)%DiaU2d(i,j,idiag)=
diags(ng)%DiaU2d(i,j,idiag)+ &
325 &
grid(ng)%umask_full(i,j)* &
327 &
diags(ng)%DiaU2wrk(i,j,idiag)
332 diags(ng)%DiaV2d(i,j,idiag)=
diags(ng)%DiaV2d(i,j,idiag)+ &
334 &
grid(ng)%vmask_full(i,j)* &
336 &
diags(ng)%DiaV2wrk(i,j,idiag)
345 diags(ng)%DiaU3d(i,j,k,idiag)= &
346 &
diags(ng)%DiaU3d(i,j,k,idiag)+ &
348 &
grid(ng)%umask_full(i,j)* &
350 &
diags(ng)%DiaU3wrk(i,j,k,idiag)
355 diags(ng)%DiaV3d(i,j,k,idiag)= &
356 &
diags(ng)%DiaV3d(i,j,k,idiag)+ &
358 &
grid(ng)%vmask_full(i,j)* &
360 &
diags(ng)%DiaV3wrk(i,j,k,idiag)
375 & (mod(
iic(ng)-1,
ndia(ng)).eq.0).and. &
378 IF (
domain(ng)%SouthWest_Test(tile))
THEN
379 IF (
ndia(ng).eq.1)
THEN
396 rfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%rmask_dia(i,j))
397 ufac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%umask_dia(i,j))
398 vfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%vmask_dia(i,j))
402 fac=1.0_r8/real(
ndia(ng),r8)
422 grid(ng)%pmask_dia(i,j)=min(1.0_r8,
grid(ng)%pmask_dia(i,j))
427 grid(ng)%rmask_dia(i,j)=min(1.0_r8,
grid(ng)%rmask_dia(i,j))
432 grid(ng)%umask_dia(i,j)=min(1.0_r8,
grid(ng)%umask_dia(i,j))
437 grid(ng)%vmask_dia(i,j)=min(1.0_r8,
grid(ng)%vmask_dia(i,j))
445 & lbi, ubi, lbj, ubj, &
446 &
grid(ng)%pmask_dia)
448 & lbi, ubi, lbj, ubj, &
449 &
grid(ng)%rmask_dia)
451 & lbi, ubi, lbj, ubj, &
452 &
grid(ng)%umask_dia)
454 & lbi, ubi, lbj, ubj, &
455 &
grid(ng)%vmask_dia)
460 & lbi, ubi, lbj, ubj, &
463 &
grid(ng)%pmask_dia, &
464 &
grid(ng)%rmask_dia, &
465 &
grid(ng)%umask_dia, &
466 &
grid(ng)%vmask_dia)
474 diags(ng)%avgzeta(i,j)=rfac(i,j)*
diags(ng)%avgzeta(i,j)
478# ifdef DIAGNOSTICS_TS
484 diags(ng)%DiaTrc(i,j,k,it,idiag)=rfac(i,j)* &
485 &
diags(ng)%DiaTrc(i,j,k,it,idiag)
492# ifdef DIAGNOSTICS_BIO
493# if defined BIO_FENNEL || defined HYPOXIA_SRM
495 IF (idiag.ne.
ipco2)
THEN
498 diags(ng)%DiaBio2d(i,j,idiag)=rfac(i,j)* &
499 &
diags(ng)%DiaBio2d(i,j,idiag)
505# if defined BIO_FENNEL
510 diags(ng)%DiaBio3d(i,j,k,idiag)=rfac(i,j)* &
511 &
diags(ng)%DiaBio3d(i,j,k,idiag)
521 diags(ng)%DiaBio3d(i,j,k,idiag)=rfac(i,j)* &
522 &
diags(ng)%DiaBio3d(i,j,k,idiag)
532 diags(ng)%DiaBio4d(i,j,k,iband,idiag)=rfac(i,j)* &
533 &
diags(ng)%DiaBio4d(i,j,k,iband,idiag)
541# ifdef DIAGNOSTICS_UV
545 diags(ng)%DiaU2d(i,j,idiag)=ufac(i,j)* &
546 &
diags(ng)%DiaU2d(i,j,idiag)
551 diags(ng)%DiaV2d(i,j,idiag)=vfac(i,j)* &
552 &
diags(ng)%DiaV2d(i,j,idiag)
561 diags(ng)%DiaU3d(i,j,k,idiag)=ufac(i,j)* &
562 &
diags(ng)%DiaU3d(i,j,k,idiag)
567 diags(ng)%DiaV3d(i,j,k,idiag)=vfac(i,j)* &
568 &
diags(ng)%DiaV3d(i,j,k,idiag)
576# if defined DIAGNOSTICS_TS || defined DIAGNOSTICS_UV || \
577 defined diagnostics_bio
587 & lbi, ubi, lbj, ubj, &
592 & lbi, ubi, lbj, ubj, &
598# ifdef DIAGNOSTICS_TS
605 & lbi, ubi, lbj, ubj, 1,
n(ng), &
606 &
diags(ng)%DiaTrc(:,:,:,it,idiag))
610 & lbi, ubi, lbj, ubj, 1,
n(ng), 1,
nt(ng), &
613 &
diags(ng)%DiaTrc(:,:,:,:,idiag))
617# ifdef DIAGNOSTICS_UV
623 & lbi, ubi, lbj, ubj, &
624 &
diags(ng)%DiaU2d(:,:,idiag))
626 & lbi, ubi, lbj, ubj, &
627 &
diags(ng)%DiaV2d(:,:,idiag))
631 & lbi, ubi, lbj, ubj, 1,
ndm2d, &
634 &
diags(ng)%DiaU2d, &
643 & lbi, ubi, lbj, ubj, 1,
n(ng), &
644 &
diags(ng)%DiaU3d(:,:,:,idiag))
646 & lbi, ubi, lbj, ubj, 1,
n(ng), &
647 &
diags(ng)%DiaV3d(:,:,:,idiag))
651 & lbi, ubi, lbj, ubj, 1,
n(ng), 1,
ndm3d, &
654 &
diags(ng)%DiaU3d, &
659# ifdef DIAGNOSTICS_BIO
660# if defined BIO_FENNEL || defined HYPOXIA_SRM
666 & lbi, ubi, lbj, ubj, &
667 &
diags(ng)%DiaBio2d(:,:,idiag))
671 & lbi, ubi, lbj, ubj, 1,
ndbio2d, &
674 &
diags(ng)%DiaBio2d)
677# if defined BIO_FENNEL
683 & lbi, ubi, lbj, ubj, 1,
n(ng), &
684 &
diags(ng)%DiaBio3d(:,:,:,idiag))
688 & lbi, ubi, lbj, ubj, 1,
n(ng), 1,
ndbio3d, &
691 &
diags(ng)%DiaBio3d)
699 & lbi, ubi, lbj, ubj, 1,
ndbands, &
700 &
diags(ng)%DiaBio3d(:,:,:,idiag))
707 &
diags(ng)%DiaBio3d)
714 & lbi, ubi, lbj, ubj, 1,
n(ng), 1,
ndbands, &
715 &
diags(ng)%DiaBio4d(:,:,:,:,idiag))
718 & lbi, ubi, lbj, ubj, 1,
n(ng), 1,
ndbands, &
721 &
diags(ng)%DiaBio4d(:,:,:,:,idiag))