62 |
_RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
_RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
63 |
#endif |
#endif |
64 |
|
|
65 |
|
#ifdef ALLOW_DIAGNOSTICS |
66 |
|
LOGICAL doDiagRediFlx |
67 |
|
LOGICAL DIAGNOSTICS_IS_ON |
68 |
|
EXTERNAL DIAGNOSTICS_IS_ON |
69 |
|
INTEGER km1 |
70 |
|
_RL dTdz |
71 |
|
_RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
72 |
|
#endif |
73 |
|
|
74 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
75 |
|
|
76 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
86 |
& + act4*max1*max2*max3 |
& + act4*max1*max2*max3 |
87 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
88 |
|
|
89 |
|
#ifdef ALLOW_DIAGNOSTICS |
90 |
|
doDiagRediFlx = .FALSE. |
91 |
|
IF ( useDiagnostics ) THEN |
92 |
|
doDiagRediFlx = DIAGNOSTICS_IS_ON('GM_KuzTz', myThid ) |
93 |
|
doDiagRediFlx = doDiagRediFlx .OR. |
94 |
|
& DIAGNOSTICS_IS_ON('GM_KvzTz', myThid ) |
95 |
|
ENDIF |
96 |
|
#endif |
97 |
|
|
98 |
#ifdef GM_VISBECK_VARIABLE_K |
#ifdef GM_VISBECK_VARIABLE_K |
99 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
100 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
424 |
ENDIF |
ENDIF |
425 |
#endif /* GM_EXTRA_DIAGONAL */ |
#endif /* GM_EXTRA_DIAGONAL */ |
426 |
|
|
427 |
|
#ifdef ALLOW_DIAGNOSTICS |
428 |
|
IF (doDiagRediFlx) THEN |
429 |
|
km1 = MAX(k-1,1) |
430 |
|
DO j=1,sNy |
431 |
|
DO i=1,sNx+1 |
432 |
|
C store in tmp1k Kuz_Redi |
433 |
|
tmp1k(i,j) = ( GM_isopycK |
434 |
|
#ifdef GM_VISBECK_VARIABLE_K |
435 |
|
& +(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))*0.5 _d 0 |
436 |
|
#endif |
437 |
|
& )*SlopeX(i,j)*taperFct(i,j) |
438 |
|
ENDDO |
439 |
|
ENDDO |
440 |
|
DO j=1,sNy |
441 |
|
DO i=1,sNx+1 |
442 |
|
C- Vertical gradients interpolated to U points |
443 |
|
dTdz = ( |
444 |
|
& +recip_drC(k)* |
445 |
|
& ( maskC(i-1,j,k,bi,bj)* |
446 |
|
& (theta(i-1,j,km1,bi,bj)-theta(i-1,j,k,bi,bj)) |
447 |
|
& +maskC( i ,j,k,bi,bj)* |
448 |
|
& (theta( i ,j,km1,bi,bj)-theta( i ,j,k,bi,bj)) |
449 |
|
& ) |
450 |
|
& +recip_drC(kp1)* |
451 |
|
& ( maskC(i-1,j,kp1,bi,bj)* |
452 |
|
& (theta(i-1,j,k,bi,bj)-theta(i-1,j,kp1,bi,bj)) |
453 |
|
& +maskC( i ,j,kp1,bi,bj)* |
454 |
|
& (theta( i ,j,k,bi,bj)-theta( i ,j,kp1,bi,bj)) |
455 |
|
& ) ) * 0.25 _d 0 |
456 |
|
tmp1k(i,j) = dyG(i,j,bi,bj)*drF(k)*hFacW(i,j,k,bi,bj) |
457 |
|
& * tmp1k(i,j) * dTdz |
458 |
|
ENDDO |
459 |
|
ENDDO |
460 |
|
CALL DIAGNOSTICS_FILL(tmp1k, 'GM_KuzTz', k,1,2,bi,bj,myThid) |
461 |
|
ENDIF |
462 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
463 |
|
|
464 |
C Gradient of Sigma at V points |
C Gradient of Sigma at V points |
465 |
DO j=1-Oly+1,sNy+Oly-1 |
DO j=1-Oly+1,sNy+Oly-1 |
466 |
DO i=1-Olx+1,sNx+Olx-1 |
DO i=1-Olx+1,sNx+Olx-1 |
542 |
ENDIF |
ENDIF |
543 |
#endif /* GM_EXTRA_DIAGONAL */ |
#endif /* GM_EXTRA_DIAGONAL */ |
544 |
|
|
545 |
|
#ifdef ALLOW_DIAGNOSTICS |
546 |
|
IF (doDiagRediFlx) THEN |
547 |
|
c km1 = MAX(k-1,1) |
548 |
|
DO j=1,sNy+1 |
549 |
|
DO i=1,sNx |
550 |
|
C store in tmp1k Kvz_Redi |
551 |
|
tmp1k(i,j) = ( GM_isopycK |
552 |
|
#ifdef GM_VISBECK_VARIABLE_K |
553 |
|
& +(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))*0.5 _d 0 |
554 |
|
#endif |
555 |
|
& )*SlopeY(i,j)*taperFct(i,j) |
556 |
|
ENDDO |
557 |
|
ENDDO |
558 |
|
DO j=1,sNy+1 |
559 |
|
DO i=1,sNx |
560 |
|
C- Vertical gradients interpolated to U points |
561 |
|
dTdz = ( |
562 |
|
& +recip_drC(k)* |
563 |
|
& ( maskC(i,j-1,k,bi,bj)* |
564 |
|
& (theta(i,j-1,km1,bi,bj)-theta(i,j-1,k,bi,bj)) |
565 |
|
& +maskC(i, j ,k,bi,bj)* |
566 |
|
& (theta(i, j ,km1,bi,bj)-theta(i, j ,k,bi,bj)) |
567 |
|
& ) |
568 |
|
& +recip_drC(kp1)* |
569 |
|
& ( maskC(i,j-1,kp1,bi,bj)* |
570 |
|
& (theta(i,j-1,k,bi,bj)-theta(i,j-1,kp1,bi,bj)) |
571 |
|
& +maskC(i, j ,kp1,bi,bj)* |
572 |
|
& (theta(i, j ,k,bi,bj)-theta(i, j ,kp1,bi,bj)) |
573 |
|
& ) ) * 0.25 _d 0 |
574 |
|
tmp1k(i,j) = dxG(i,j,bi,bj)*drF(k)*hFacS(i,j,k,bi,bj) |
575 |
|
& * tmp1k(i,j) * dTdz |
576 |
|
ENDDO |
577 |
|
ENDDO |
578 |
|
CALL DIAGNOSTICS_FILL(tmp1k, 'GM_KvzTz', k,1,2,bi,bj,myThid) |
579 |
|
ENDIF |
580 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
581 |
|
|
582 |
#endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */ |
#endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */ |
583 |
|
|
584 |
C-- end 2nd loop on vertical level index k |
C-- end 2nd loop on vertical level index k |