46 |
c _RL e5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
c _RL e5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
47 |
_RL rTrans(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
_RL rTrans(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
48 |
_RL rCenter, rUpwind, upwindFac |
_RL rCenter, rUpwind, upwindFac |
49 |
|
#ifdef ALLOW_DIAGNOSTICS |
50 |
|
CHARACTER*8 diagName |
51 |
|
LOGICAL DIAGNOSTICS_IS_ON |
52 |
|
EXTERNAL DIAGNOSTICS_IS_ON |
53 |
|
_RL vf (1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
54 |
|
#endif |
55 |
CEOP |
CEOP |
56 |
|
|
57 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
195 |
STOP 'MOM_IMPLICIT_R: no solver available.' |
STOP 'MOM_IMPLICIT_R: no solver available.' |
196 |
ENDIF |
ENDIF |
197 |
|
|
198 |
|
#ifdef ALLOW_DIAGNOSTICS |
199 |
|
C-- Diagnostics of vertical viscous flux: |
200 |
|
IF ( useDiagnostics .AND. implicitViscosity ) THEN |
201 |
|
diagName = 'VISrI_Vm' |
202 |
|
IF ( DIAGNOSTICS_IS_ON(diagName,myThid) ) THEN |
203 |
|
DO k= 1,Nr |
204 |
|
IF ( k.EQ.1 ) THEN |
205 |
|
C- Note: Needs to call DIAGNOSTICS_FILL at level k=1 even if array == 0 |
206 |
|
C otherwise counter is not incremented !! |
207 |
|
DO j=1-OLy,sNy+OLy |
208 |
|
DO i=1-OLx,sNx+OLx |
209 |
|
vf(i,j) = 0. _d 0 |
210 |
|
ENDDO |
211 |
|
ENDDO |
212 |
|
ELSE |
213 |
|
DO j=jMin,jMax |
214 |
|
DO i=iMin,iMax |
215 |
|
vf(i,j) = |
216 |
|
& -KappaRV(i,j,k)*rAs(i,j,bi,bj)*recip_drC(k) |
217 |
|
& * (gV(i,j,k,bi,bj) - gV(i,j,k-1,bi,bj))*rkSign |
218 |
|
& *_maskS(i,j,k,bi,bj) |
219 |
|
& *_maskS(i,j,k-1,bi,bj) |
220 |
|
ENDDO |
221 |
|
ENDDO |
222 |
|
ENDIF |
223 |
|
CALL DIAGNOSTICS_FILL(vf,diagName, k,1, 2,bi,bj, myThid) |
224 |
|
ENDDO |
225 |
|
ENDIF |
226 |
|
ENDIF |
227 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
228 |
|
|
229 |
RETURN |
RETURN |
230 |
END |
END |