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

Diff of /MITgcm/pkg/mom_vecinv/mom_vi_v_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,wBarYm,wBarYp        _RL mask_Kp1,mask_Km1,wBarYm,wBarYp
33        _RL vZm,vZp,vmask_Kp1,vmask_K,vmask_Km1        _RL vZm,vZp
34        LOGICAL freeslipK,noslipK  c     _RL vmask_Kp1,vmask_K,vmask_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 wBarYZ,vZbarZ  c1    _RL wBarYZ,vZbarZ
 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( V )  @ interface k  C delta_Z( V )  @ interface k
73  c       vmask_Km1=mask_Km1*maskS(i,j,Km1,bi,bj)  c       vmask_Km1=mask_Km1*maskS(i,j,Km1,bi,bj)
74          vZm=(mask_Km1*vFld(I,J,Km1,bi,bj)-vFld(I,J,K,bi,bj))          vZm=(mask_Km1*vFld(I,J,Km1,bi,bj)-vFld(I,J,K,bi,bj))
75    c    &      *rkFac
76  c2   &      *recip_dRC(K)  c2   &      *recip_dRC(K)
77  c       IF (freeslip1) vZm=vZm*vmask_Km1  c       IF (freeslip1) vZm=vZm*vmask_Km1
78  c       IF (noslip1.AND.vmask_Km1.EQ.0.) vZm=vZm*2.  c       IF (noslip1.AND.vmask_Km1.EQ.0.) vZm=vZm*2.
# Line 80  c       IF (noslip1.AND.vmask_Km1.EQ.0.) Line 80  c       IF (noslip1.AND.vmask_Km1.EQ.0.)
80  C delta_Z( V )  @ interface k+1  C delta_Z( V )  @ interface k+1
81  c       vmask_Kp1=mask_Kp1*maskS(i,j,Kp1,bi,bj)  c       vmask_Kp1=mask_Kp1*maskS(i,j,Kp1,bi,bj)
82          vZp=(vFld(I,J,K,bi,bj)-mask_Kp1*vFld(I,J,Kp1,bi,bj))          vZp=(vFld(I,J,K,bi,bj)-mask_Kp1*vFld(I,J,Kp1,bi,bj))
83    c    &      *rkFac
84  c2   &      *recip_dRC(Kp1)  c2   &      *recip_dRC(Kp1)
85  c       IF (freeslipK) vZp=vZp*vmask_Kp1  c       IF (freeslipK) vZp=vZp*vmask_Kp1
86  c       IF (noslipK.AND.vmask_Kp1.EQ.0.) vZp=vZp*2.  c       IF (noslipK.AND.vmask_Kp1.EQ.0.) vZp=vZp*2.
# Line 98  c1      vShearTerm(I,J)=-wBarYZ*vZbarZ*_ Line 99  c1      vShearTerm(I,J)=-wBarYZ*vZbarZ*_
99    
100  c2      vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)  c2      vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)
101  c2   &                  *_maskS(I,J,K,bi,bj)  c2   &                  *_maskS(I,J,K,bi,bj)
102          vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)          IF (upwindShear) THEN
103       &                  *recip_ras(i,j,bi,bj)            vShearTerm(I,J)=-0.5*
104       &                  *recip_hFacS(i,j,k,bi,bj)       &                   (     (wBarYp*vZp+wBarYm*vZm)
105       &                  *recip_dRF(K)       &                        +(ABS(wBarYp)*vZp-ABS(wBarYm)*vZm)
106         &                   )*recip_rAs(i,j,bi,bj)
107         &                    *recip_hFacS(i,j,k,bi,bj)
108         &                    *recip_drF(K)
109            ELSE
110              vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)
111         &                    *recip_rAs(i,j,bi,bj)
112         &                    *recip_hFacS(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