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

Contents 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.1 - (show annotations) (download)
Mon Sep 30 18:19:41 2013 UTC (11 years, 4 months ago) by jmc
Branch: MAIN
add 1rst version of isotropic 3-D Smagorinsky code (from Louis-Philippe),
  for now all in this exp. code dir.

1 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_hdissip.F,v 1.6 2005/09/26 15:27:11 baylor Exp $
2 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 C - Laplacian and bi-harmonic terms
62 c IF (harmonic) THEN
63
64 C- note: free-slip @ bottom is commented out
65
66 C- use simple (momentum conserving) scaling
67 C (but not conserving angular momentum)
68
69 DO j=2-OLy,sNy+OLy-1
70 DO i=2-OLx,sNx+OLx-1
71 uDissip(i,j) = recip_rAw(i,j,bi,bj)*(
72 & ( viscAh3d_00( i , j , k )*str11( i , j , k )
73 & *dyF( i , j ,bi,bj)
74 & -viscAh3d_00(i-1, j , k )*str11(i-1, j , k )
75 & *dyF(i-1, j ,bi,bj)
76 & )
77 & +( viscAh3d_12( i ,j+1, k )*str12( i ,j+1, k )
78 & *dxV( i ,j+1,bi,bj)
79 & -viscAh3d_12( i , j , k )*str12( i , j , k )
80 & *dxV( i , j ,bi,bj)
81 & ) )
82 & + recip_drF( k )
83 & *( viscAh3d_13( i , j ,k+1)*str13( i , j ,k+1)
84 c & *maskW(i,j,kp1,bi,bj)*maskP1
85 & -viscAh3d_13( i , j , k )*str13( i , j , k )
86 c & *maskW(i,j,km1,bi,bj)*maskM1
87 & )*rkSign*recip_hFacW(i,j,k,bi,bj)
88 ENDDO
89 ENDDO
90
91 DO j=2-OLy,sNy+OLy-1
92 DO i=2-OLx,sNx+OLx-1
93 vDissip(i,j) = recip_rAs(i,j,bi,bj)*(
94 & ( viscAh3d_12(i+1, j , k )*str12(i+1, j ,k)
95 & *dyU(i+1, j ,bi,bj)
96 & -viscAh3d_12( i , j , k )*str12( i , j ,k)
97 & *dyU( i , j ,bi,bj)
98 & )
99 & +( viscAh3d_00( i , j , k )*str22( i , j ,k)
100 & *dxF( i , j ,bi,bj)
101 & -viscAh3d_00( i ,j-1, k )*str22( i ,j-1,k)
102 & *dxF( i ,j-1,bi,bj)
103 & ) )
104 & + recip_drF( k )
105 & *( viscAh3d_23( i , j ,k+1)*str23( i , j ,k+1)
106 c & *maskS(i,j,kp1,bi,bj)*maskP1
107 & -viscAh3d_23( i , j , k )*str23( i , j , k )
108 c & *maskS(i,j,km1,bi,bj)*maskM1
109 & )*rkSign*recip_hFacS(i,j,k,bi,bj)
110
111 ENDDO
112 ENDDO
113
114 c ENDIF
115
116 c IF (biharmonic) THEN
117 c STOP 'MOM_UV_SMAG_3D: BIHARMONIC NOT ALLOWED WITH SMAG_3D'
118 c ENDIF
119
120 RETURN
121 END

  ViewVC Help
Powered by ViewVC 1.1.22