/[MITgcm]/MITgcm/pkg/mom_vecinv/mom_vi_u_vertshear.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_vecinv/mom_vi_u_vertshear.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.5 by adcroft, Tue Jul 20 17:46:38 2004 UTC revision 1.6 by jmc, Thu Jun 9 15:59:20 2005 UTC
# Line 30  C     == Routine arguments == Line 30  C     == Routine arguments ==
30  C     == Local variables ==  C     == Local variables ==
31        INTEGER I,J,Kp1,Km1        INTEGER I,J,Kp1,Km1
32        _RL  mask_Kp1,mask_Km1,wBarXm,wBarXp        _RL  mask_Kp1,mask_Km1,wBarXm,wBarXp
33        _RL  uZm,uZp,umask_Kp1,umask_K,umask_Km1        _RL  uZm,uZp
34        LOGICAL freeslipK,noslipK  c     _RL  umask_Kp1,umask_K,umask_Km1
35        PARAMETER(freeslipK=.TRUE.)  c     LOGICAL freeslipK,noslipK
36        PARAMETER(noslipK=.NOT.freeslipK)  c     PARAMETER(freeslipK=.TRUE.)
37        LOGICAL freeslip1,noslip1  c     PARAMETER(noslipK=.NOT.freeslipK)
38        PARAMETER(freeslip1=.TRUE.)  c     LOGICAL freeslip1,noslip1
39        PARAMETER(noslip1=.NOT.freeslip1)  c     PARAMETER(freeslip1=.TRUE.)
40    c     PARAMETER(noslip1=.NOT.freeslip1)
41  c1    _RL  wBarXZ,uZbarZ  c1    _RL  wBarXZ,uZbarZ
 c1    LOGICAL upwindShear  
 c1    PARAMETER(upwindShear=.FALSE.)  
42    
43        Kp1=min(K+1,Nr)        Kp1=min(K+1,Nr)
44        mask_Kp1=1.        mask_Kp1=1.
# Line 73  C       Transport at interface k+1 (here Line 72  C       Transport at interface k+1 (here
72  C delta_Z( U )  @ interface k  C delta_Z( U )  @ interface k
73  c       umask_Km1=mask_Km1*maskW(i,j,Km1,bi,bj)  c       umask_Km1=mask_Km1*maskW(i,j,Km1,bi,bj)
74          uZm=(mask_Km1*uFld(I,J,Km1,bi,bj)-uFld(I,J,K,bi,bj))          uZm=(mask_Km1*uFld(I,J,Km1,bi,bj)-uFld(I,J,K,bi,bj))
75    c    &      *rkFac
76  c2   &      *recip_dRC(K)  c2   &      *recip_dRC(K)
77  c       IF (freeslip1) uZm=uZm*umask_Km1  c       IF (freeslip1) uZm=uZm*umask_Km1
78  c       IF (noslip1.AND.umask_Km1.EQ.0.) uZm=uZm*2.  c       IF (noslip1.AND.umask_Km1.EQ.0.) uZm=uZm*2.
# Line 80  c       IF (noslip1.AND.umask_Km1.EQ.0.) Line 80  c       IF (noslip1.AND.umask_Km1.EQ.0.)
80  C delta_Z( U )  @ interface k+1  C delta_Z( U )  @ interface k+1
81  c       umask_Kp1=mask_Kp1*maskW(i,j,Kp1,bi,bj)  c       umask_Kp1=mask_Kp1*maskW(i,j,Kp1,bi,bj)
82          uZp=(uFld(I,J,K,bi,bj)-mask_Kp1*uFld(I,J,Kp1,bi,bj))          uZp=(uFld(I,J,K,bi,bj)-mask_Kp1*uFld(I,J,Kp1,bi,bj))
83    c    &      *rkFac
84  c2   &      *recip_dRC(Kp1)  c2   &      *recip_dRC(Kp1)
85  c       IF (freeslipK) uZp=uZp*umask_Kp1  c       IF (freeslipK) uZp=uZp*umask_Kp1
86  c       IF (noslipK.AND.umask_Kp1.EQ.0.) uZp=uZp*2.  c       IF (noslipK.AND.umask_Kp1.EQ.0.) uZp=uZp*2.
# Line 98  c1      uShearTerm(I,J)=-wBarXZ*uZbarZ*_ Line 99  c1      uShearTerm(I,J)=-wBarXZ*uZbarZ*_
99    
100  c2      uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)  c2      uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)
101  c2   &                  *_maskW(I,J,K,bi,bj)  c2   &                  *_maskW(I,J,K,bi,bj)
102          uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)          IF (upwindShear) THEN
103       &                  *recip_raw(i,j,bi,bj)            uShearTerm(I,J)=-0.5*
104       &                  *recip_hFacW(i,j,k,bi,bj)       &                   (     (wBarXp*uZp+wBarXm*uZm)
105       &                  *recip_dRF(K)       &                        +(ABS(wBarXp)*uZp-ABS(wBarXm)*uZm)
106         &                   )*recip_rAw(i,j,bi,bj)
107         &                    *recip_hFacW(i,j,k,bi,bj)
108         &                    *recip_drF(K)
109            ELSE
110              uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)
111         &                    *recip_rAw(i,j,bi,bj)
112         &                    *recip_hFacW(i,j,k,bi,bj)
113         &                    *recip_drF(K)
114            ENDIF
115         ENDDO         ENDDO
116        ENDDO        ENDDO
117    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22