/[MITgcm]/MITgcm/pkg/mom_common/mom_uv_smag_3d.F
ViewVC logotype

Annotation of /MITgcm/pkg/mom_common/mom_uv_smag_3d.F

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


Revision 1.2 - (hide annotations) (download)
Wed Nov 6 00:37:11 2013 UTC (10 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, HEAD
Changes since 1.1: +3 -1 lines
empty routine when ALLOW_SMAG_3D is not defined

1 jmc 1.2 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_uv_smag_3d.F,v 1.1 2013/11/05 13:33:07 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "MOM_COMMON_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7     CBOP
8     C !ROUTINE: MOM_UV_SMAG_3D
9    
10     C !INTERFACE:
11     SUBROUTINE MOM_UV_SMAG_3D(
12     I str11, str22, str12, str13, str23,
13     I viscAh3d_00, viscAh3d_12,
14     I viscAh3d_13, viscAh3d_23,
15     c I hFacZ,
16     O uDissip, vDissip,
17     I iMin,iMax,jMin,jMax, k, bi, bj, myThid )
18    
19     C !DESCRIPTION:
20    
21     C !USES:
22     IMPLICIT NONE
23    
24     C == Global variables ==
25     #include "SIZE.h"
26     #include "EEPARAMS.h"
27     #include "GRID.h"
28     #include "PARAMS.h"
29    
30     C !INPUT PARAMETERS:
31     C iMin,iMax :: 1rst index loop ranges
32     C jMin,jMax :: 2nd index loop ranges
33     _RL str11(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
34     _RL str22(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
35     _RL str12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
36     _RL str13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
37     _RL str23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
38     c _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
39     _RL viscAh3d_00(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
40     _RL viscAh3d_12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
41     _RL viscAh3d_13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
42     _RL viscAh3d_23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
43     INTEGER iMin,iMax, jMin,jMax
44     INTEGER k, bi, bj
45     INTEGER myThid
46    
47     C !OUTPUT PARAMETERS:
48     _RL uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49     _RL vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50     CEOP
51    
52 jmc 1.2 #ifdef ALLOW_SMAG_3D
53 jmc 1.1 C !LOCAL VARIABLES:
54     INTEGER i,j
55     INTEGER km1, kp1
56     _RL maskM1, maskP1
57    
58     km1 = MAX( 1,k-1)
59     kp1 = MIN(Nr,k+1)
60     maskM1 = 1.
61     maskP1 = 1.
62     IF ( k.LE.1 ) maskM1 = 0.
63     IF ( k.GE.Nr ) maskP1 = 0.
64    
65     C - Laplacian and bi-harmonic terms
66     c IF (harmonic) THEN
67    
68     C- note: free-slip @ bottom is commented out
69    
70     C- use simple (momentum conserving) scaling
71     C (but not conserving angular momentum)
72    
73     DO j= jMin,jMax
74     DO i= iMin,iMax
75     uDissip(i,j) = recip_rAw(i,j,bi,bj)*(
76     & ( viscAh3d_00( i , j , k )*str11( i , j , k )
77     & *dyF( i , j ,bi,bj)
78     & -viscAh3d_00(i-1, j , k )*str11(i-1, j , k )
79     & *dyF(i-1, j ,bi,bj)
80     & )
81     & +( viscAh3d_12( i ,j+1, k )*str12( i ,j+1, k )
82     & *dxV( i ,j+1,bi,bj)
83     & -viscAh3d_12( i , j , k )*str12( i , j , k )
84     & *dxV( i , j ,bi,bj)
85     & ) )
86     & + recip_drF( k )
87     & *( viscAh3d_13( i , j ,k+1)*str13( i , j ,k+1)
88     c & *maskW(i,j,kp1,bi,bj)*maskP1
89     & -viscAh3d_13( i , j , k )*str13( i , j , k )
90     c & *maskW(i,j,km1,bi,bj)*maskM1
91     & )*rkSign*recip_hFacW(i,j,k,bi,bj)
92     ENDDO
93     ENDDO
94    
95     DO j= jMin,jMax
96     DO i= iMin,iMax
97     vDissip(i,j) = recip_rAs(i,j,bi,bj)*(
98     & ( viscAh3d_12(i+1, j , k )*str12(i+1, j ,k)
99     & *dyU(i+1, j ,bi,bj)
100     & -viscAh3d_12( i , j , k )*str12( i , j ,k)
101     & *dyU( i , j ,bi,bj)
102     & )
103     & +( viscAh3d_00( i , j , k )*str22( i , j ,k)
104     & *dxF( i , j ,bi,bj)
105     & -viscAh3d_00( i ,j-1, k )*str22( i ,j-1,k)
106     & *dxF( i ,j-1,bi,bj)
107     & ) )
108     & + recip_drF( k )
109     & *( viscAh3d_23( i , j ,k+1)*str23( i , j ,k+1)
110     c & *maskS(i,j,kp1,bi,bj)*maskP1
111     & -viscAh3d_23( i , j , k )*str23( i , j , k )
112     c & *maskS(i,j,km1,bi,bj)*maskM1
113     & )*rkSign*recip_hFacS(i,j,k,bi,bj)
114    
115     ENDDO
116     ENDDO
117    
118     c ENDIF
119    
120     c IF (biharmonic) THEN
121     c STOP 'MOM_UV_SMAG_3D: BIHARMONIC NOT ALLOWED WITH SMAG_3D'
122     c ENDIF
123    
124 jmc 1.2 #endif /* ALLOW_SMAG_3D */
125 jmc 1.1 RETURN
126     END

  ViewVC Help
Powered by ViewVC 1.1.22