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

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

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


Revision 1.5 - (show annotations) (download)
Tue Jul 20 17:46:38 2004 UTC (19 years, 9 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 C $Header: /u/gcmpack/MITgcm/pkg/mom_vecinv/mom_vi_u_vertshear.F,v 1.4 2001/09/10 14:14:36 jmc Exp $
2 C $Name: $
3
4 #include "MOM_VECINV_OPTIONS.h"
5
6 SUBROUTINE MOM_VI_U_VERTSHEAR(
7 I bi,bj,K,
8 I uFld,wFld,
9 U uShearTerm,
10 I myThid)
11 IMPLICIT NONE
12 C /==========================================================\
13 C | S/R MOM_U_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 uFld(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 uShearTerm(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,wBarXm,wBarXp
33 _RL uZm,uZp,umask_Kp1,umask_K,umask_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 wBarXZ,uZbarZ
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 DO J=1-Oly,sNy+Oly
52 DO I=2-Olx,sNx+Olx
53
54 c umask_K=_maskW(i,j,k,bi,bj)
55
56 C barZ( barX( W ) )
57 c wBarXm=0.5*(wFld(I,J,K,bi,bj)+wFld(I-1,J,K,bi,bj))
58 c wBarXp=0.5*(wFld(I,J,Kp1,bi,bj)+wFld(I-1,J,Kp1,bi,bj))
59 c & *mask_Kp1
60
61 C Transport at interface k
62 wBarXm=0.5*(
63 & wFld(I,J,K,bi,bj)*rA(i,j,bi,bj)*maskC(I,J,Km1,bi,bj)
64 & +wFld(I-1,J,K,bi,bj)*rA(i-1,j,bi,bj)*maskC(I-1,J,Km1,bi,bj)
65 & )*mask_Km1
66
67 C Transport at interface k+1 (here wFld is already masked)
68 wBarXp=0.5*(
69 & wFld(I,J,Kp1,bi,bj)*rA(i,j,bi,bj)
70 & +wFld(I-1,J,Kp1,bi,bj)*rA(i-1,j,bi,bj)
71 & )*mask_Kp1
72
73 C delta_Z( U ) @ interface k
74 c umask_Km1=mask_Km1*maskW(i,j,Km1,bi,bj)
75 uZm=(mask_Km1*uFld(I,J,Km1,bi,bj)-uFld(I,J,K,bi,bj))
76 c2 & *recip_dRC(K)
77 c IF (freeslip1) uZm=uZm*umask_Km1
78 c IF (noslip1.AND.umask_Km1.EQ.0.) uZm=uZm*2.
79
80 C delta_Z( U ) @ interface k+1
81 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))
83 c2 & *recip_dRC(Kp1)
84 c IF (freeslipK) uZp=uZp*umask_Kp1
85 c IF (noslipK.AND.umask_Kp1.EQ.0.) uZp=uZp*2.
86
87 c1 IF (upwindShear) THEN
88 c1 wBarXZ=0.5*( wBarXm + wBarXp )
89 c1 IF (wBarXZ.GT.0.) THEN
90 c1 uZbarZ=uZp
91 c1 ELSE
92 c1 uZbarZ=uZm
93 c1 ENDIF
94 c1 ELSE
95 c1 uZbarZ=0.5*(uZm+uZp)
96 c1 ENDIF
97 c1 uShearTerm(I,J)=-wBarXZ*uZbarZ*_maskW(I,J,K,bi,bj)
98
99 c2 uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)
100 c2 & *_maskW(I,J,K,bi,bj)
101 uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)
102 & *recip_raw(i,j,bi,bj)
103 & *recip_hFacW(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