/[MITgcm]/MITgcm/verification/tutorial_deep_convection/code/mom_uv_smag_3d.F
ViewVC logotype

Annotation of /MITgcm/verification/tutorial_deep_convection/code/mom_uv_smag_3d.F

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


Revision 1.3 - (hide annotations) (download)
Tue Nov 5 13:53:27 2013 UTC (11 years, 3 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +1 -1 lines
FILE REMOVED
- move to pkg/mom_common and model/src (previously in tutorial_deep_convection
  code) 2nd version of isotropic 3-D Smagorinsky code interface: strain and
  viscosity are locally declared in dynmics.F and pass as argument to CALC_GW;
  ensure that all field value that are used are set.

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/verification/tutorial_deep_convection/code/mom_uv_smag_3d.F,v 1.2 2013/10/01 14:38:56 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 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     _RL str11(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
32     _RL str22(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
33     _RL str12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
34     _RL str13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
35     _RL str23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
36     c _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
37     _RL viscAh3d_00(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
38     _RL viscAh3d_12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
39     _RL viscAh3d_13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
40     _RL viscAh3d_23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
41     INTEGER k, bi, bj
42     INTEGER myThid
43    
44     C !OUTPUT PARAMETERS:
45     _RL uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
46     _RL vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47     CEOP
48    
49     C !LOCAL VARIABLES:
50     INTEGER i,j
51     INTEGER km1, kp1
52     _RL maskM1, maskP1
53    
54     km1 = MAX( 1,k-1)
55     kp1 = MIN(Nr,k+1)
56     maskM1 = 1.
57     maskP1 = 1.
58     IF ( k.LE.1 ) maskM1 = 0.
59     IF ( k.GE.Nr ) maskP1 = 0.
60    
61 jmc 1.2 C- Initialise output arrays:
62     DO j=1-OLy,sNy+OLy
63     DO i=1-OLx,sNx+OLx
64     uDissip(i,j) = 0. _d 0
65     vDissip(i,j) = 0. _d 0
66     ENDDO
67     ENDDO
68    
69 jmc 1.1 C - Laplacian and bi-harmonic terms
70     c IF (harmonic) THEN
71    
72     C- note: free-slip @ bottom is commented out
73    
74     C- use simple (momentum conserving) scaling
75     C (but not conserving angular momentum)
76    
77     DO j=2-OLy,sNy+OLy-1
78     DO i=2-OLx,sNx+OLx-1
79     uDissip(i,j) = recip_rAw(i,j,bi,bj)*(
80     & ( viscAh3d_00( i , j , k )*str11( i , j , k )
81     & *dyF( i , j ,bi,bj)
82     & -viscAh3d_00(i-1, j , k )*str11(i-1, j , k )
83     & *dyF(i-1, j ,bi,bj)
84     & )
85     & +( viscAh3d_12( i ,j+1, k )*str12( i ,j+1, k )
86     & *dxV( i ,j+1,bi,bj)
87     & -viscAh3d_12( i , j , k )*str12( i , j , k )
88     & *dxV( i , j ,bi,bj)
89     & ) )
90     & + recip_drF( k )
91     & *( viscAh3d_13( i , j ,k+1)*str13( i , j ,k+1)
92     c & *maskW(i,j,kp1,bi,bj)*maskP1
93     & -viscAh3d_13( i , j , k )*str13( i , j , k )
94     c & *maskW(i,j,km1,bi,bj)*maskM1
95     & )*rkSign*recip_hFacW(i,j,k,bi,bj)
96     ENDDO
97     ENDDO
98    
99     DO j=2-OLy,sNy+OLy-1
100     DO i=2-OLx,sNx+OLx-1
101 jmc 1.2 vDissip(i,j) = recip_rAs(i,j,bi,bj)*(
102 jmc 1.1 & ( viscAh3d_12(i+1, j , k )*str12(i+1, j ,k)
103     & *dyU(i+1, j ,bi,bj)
104     & -viscAh3d_12( i , j , k )*str12( i , j ,k)
105     & *dyU( i , j ,bi,bj)
106     & )
107     & +( viscAh3d_00( i , j , k )*str22( i , j ,k)
108     & *dxF( i , j ,bi,bj)
109     & -viscAh3d_00( i ,j-1, k )*str22( i ,j-1,k)
110     & *dxF( i ,j-1,bi,bj)
111     & ) )
112     & + recip_drF( k )
113     & *( viscAh3d_23( i , j ,k+1)*str23( i , j ,k+1)
114     c & *maskS(i,j,kp1,bi,bj)*maskP1
115     & -viscAh3d_23( i , j , k )*str23( i , j , k )
116     c & *maskS(i,j,km1,bi,bj)*maskM1
117     & )*rkSign*recip_hFacS(i,j,k,bi,bj)
118    
119     ENDDO
120     ENDDO
121    
122     c ENDIF
123    
124     c IF (biharmonic) THEN
125     c STOP 'MOM_UV_SMAG_3D: BIHARMONIC NOT ALLOWED WITH SMAG_3D'
126     c ENDIF
127    
128     RETURN
129     END

  ViewVC Help
Powered by ViewVC 1.1.22