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

Annotation of /MITgcm/pkg/mom_vecinv/mom_vi_v_vertshear.F

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


Revision 1.5 - (hide annotations) (download)
Tue Jul 20 17:46:38 2004 UTC (19 years, 10 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint57g_pre, checkpoint57b_post, checkpoint57g_post, checkpoint56b_post, checkpoint54d_post, checkpoint54e_post, checkpoint57d_post, checkpoint55, checkpoint57, checkpoint56, checkpoint54f_post, checkpoint55i_post, checkpoint55c_post, checkpoint57f_post, checkpoint57a_post, checkpoint57h_pre, checkpoint57h_post, checkpoint55g_post, checkpoint57c_post, checkpoint55d_post, checkpoint55d_pre, checkpoint57c_pre, checkpoint55j_post, checkpoint55h_post, checkpoint57e_post, checkpoint55b_post, checkpoint55f_post, eckpoint57e_pre, checkpoint56a_post, checkpoint57h_done, checkpoint57f_pre, checkpoint56c_post, checkpoint57a_pre, checkpoint55a_post, checkpoint55e_post
Changes since 1.4: +2 -2 lines
Replaced CPP_OPTIONS.h with MOM_VECINV_OPTIONS
 - this was causing a call to diagnostics to not happen

1 adcroft 1.5 C $Header: /u/gcmpack/MITgcm/pkg/mom_vecinv/mom_vi_v_vertshear.F,v 1.4 2001/09/10 14:14:36 jmc Exp $
2 jmc 1.3 C $Name: $
3 adcroft 1.2
4 adcroft 1.5 #include "MOM_VECINV_OPTIONS.h"
5 adcroft 1.2
6     SUBROUTINE MOM_VI_V_VERTSHEAR(
7     I bi,bj,K,
8     I vFld,wFld,
9     U vShearTerm,
10     I myThid)
11     IMPLICIT NONE
12     C /==========================================================\
13     C | S/R MOM_V_VERTSHEAR |
14     C |==========================================================|
15     C \==========================================================/
16    
17     C == Global variables ==
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "GRID.h"
21     #include "PARAMS.h"
22    
23     C == Routine arguments ==
24     INTEGER bi,bj,K
25     _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
26     _RL wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
27     _RL vShearTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
28     INTEGER myThid
29    
30     C == Local variables ==
31     INTEGER I,J,Kp1,Km1
32     _RL mask_Kp1,mask_Km1,wBarYm,wBarYp
33     _RL vZm,vZp,vmask_Kp1,vmask_K,vmask_Km1
34     LOGICAL freeslipK,noslipK
35     PARAMETER(freeslipK=.TRUE.)
36     PARAMETER(noslipK=.NOT.freeslipK)
37     LOGICAL freeslip1,noslip1
38     PARAMETER(freeslip1=.TRUE.)
39     PARAMETER(noslip1=.NOT.freeslip1)
40     c1 _RL wBarYZ,vZbarZ
41     c1 LOGICAL upwindShear
42     c1 PARAMETER(upwindShear=.FALSE.)
43    
44     Kp1=min(K+1,Nr)
45     mask_Kp1=1.
46     IF (K.EQ.Nr) mask_Kp1=0.
47     Km1=max(K-1,1)
48     mask_Km1=1.
49     IF (K.EQ.1) mask_Km1=0.
50    
51 jmc 1.3 DO J=2-Oly,sNy+Oly
52     DO I=1-Olx,sNx+Olx
53 adcroft 1.2
54 jmc 1.3 c vmask_K=_maskS(i,j,k,bi,bj)
55 adcroft 1.2
56     C barZ( barY( W ) )
57     c wBarYm=0.5*(wFld(I,J,K,bi,bj)+wFld(I,J-1,K,bi,bj))
58     c wBarYp=0.5*(wFld(I,J,Kp1,bi,bj)+wFld(I,J-1,Kp1,bi,bj))
59     c & *mask_Kp1
60    
61     C Transport at interface k
62 jmc 1.4 wBarYm=0.5*(
63     & wFld(I,J,K,bi,bj)*rA(i,j,bi,bj)*maskC(i,j,Km1,bi,bj)
64     & +wFld(I,J-1,K,bi,bj)*rA(i,j-1,bi,bj)*maskC(i,j-1,Km1,bi,bj)
65     & )*mask_Km1
66    
67     C Transport at interface k+1 (here wFld is already masked)
68     wBarYp=0.5*(
69     & wFld(I,J,Kp1,bi,bj)*rA(i,j,bi,bj)
70     & +wFld(I,J-1,Kp1,bi,bj)*rA(i,j-1,bi,bj)
71     & )*mask_Kp1
72 adcroft 1.2
73     C delta_Z( V ) @ interface k
74 jmc 1.4 c vmask_Km1=mask_Km1*maskS(i,j,Km1,bi,bj)
75 adcroft 1.2 vZm=(mask_Km1*vFld(I,J,Km1,bi,bj)-vFld(I,J,K,bi,bj))
76     c2 & *recip_dRC(K)
77 jmc 1.4 c IF (freeslip1) vZm=vZm*vmask_Km1
78     c IF (noslip1.AND.vmask_Km1.EQ.0.) vZm=vZm*2.
79 adcroft 1.2
80     C delta_Z( V ) @ interface k+1
81 jmc 1.4 c vmask_Kp1=mask_Kp1*maskS(i,j,Kp1,bi,bj)
82 adcroft 1.2 vZp=(vFld(I,J,K,bi,bj)-mask_Kp1*vFld(I,J,Kp1,bi,bj))
83     c2 & *recip_dRC(Kp1)
84 jmc 1.4 c IF (freeslipK) vZp=vZp*vmask_Kp1
85     c IF (noslipK.AND.vmask_Kp1.EQ.0.) vZp=vZp*2.
86 adcroft 1.2
87     c1 IF (upwindShear) THEN
88     c1 wBarYZ=0.5*( wBarXm + wBarXp )
89     c1 IF (wBarYZ.GT.0.) THEN
90     c1 vZbarZ=vZp
91     c1 ELSE
92     c1 vZbarZ=vZm
93     c1 ENDIF
94     c1 ELSE
95     c1 vZbarZ=0.5*(vZm+vZp)
96     c1 ENDIF
97     c1 vShearTerm(I,J)=-wBarYZ*vZbarZ*_maskS(I,J,K,bi,bj)
98    
99     c2 vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)
100     c2 & *_maskS(I,J,K,bi,bj)
101     vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)
102     & *recip_ras(i,j,bi,bj)
103     & *recip_hFacS(i,j,k,bi,bj)
104     & *recip_dRF(K)
105     ENDDO
106     ENDDO
107    
108     RETURN
109     END

  ViewVC Help
Powered by ViewVC 1.1.22