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

Contents of /MITgcm/pkg/mom_common/mom_init_fixed.F

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


Revision 1.11 - (show annotations) (download)
Sun Jul 28 21:02:33 2013 UTC (10 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64p, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n
Changes since 1.10: +65 -58 lines
- move horiz-viscosity 3-D arrays viscAh_W & viscA4_W (used in calc_gw.F)
  from model/inc/NH_VARS.h to pkg/mom_common/MOM_VISC.h
  + initialise them in pkg/mom_common/mom_init_fixed.F
- store in common block (in MOM_VISC.h): useHarmonicVisc, useBiharmonicVisc
  & useVariableVisc, (previously local flag harmonic, biharmonic
  & useVariableViscosity, were set for each k in mom_common/mom_calc_visc.F)

1 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_init_fixed.F,v 1.10 2011/03/31 20:36:18 jmc 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_INIT_FIXED
9
10 C !INTERFACE:
11 SUBROUTINE MOM_INIT_FIXED( myThid )
12
13 C !DESCRIPTION:
14 C Initialize fixed quantities
15 C for momentum (common to fluxform & vecinv) packages
16
17 C !USES:
18 IMPLICIT NONE
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "GRID.h"
23 #include "SURFACE.h"
24 #include "MOM_VISC.h"
25
26 C !INPUT PARAMETERS:
27 C myThid :: my thread Id number
28 INTEGER myThid
29 CEOP
30
31 C !LOCAL VARIABLES:
32 C i,j,k,bi,bj :: loop counter
33 INTEGER i,j,k,bi,bj
34 _RL recip_dt
35
36 k = 1
37 recip_dt = 1. _d 0
38 IF ( deltaTmom.NE.0. ) recip_dt = 1. _d 0/deltaTmom
39
40 DO bj=myByLo(myThid), myByHi(myThid)
41 DO bi=myBxLo(myThid), myBxHi(myThid)
42
43 #ifdef ALLOW_3D_VISCAH
44 DO k=1,Nr
45 DO j=1-OLy,sNy+OLy
46 DO i=1-OLx,sNx+OLx
47 viscAhDfld(i,j,k,bi,bj) = 0. _d 0
48 viscAhZfld(i,j,k,bi,bj) = 0. _d 0
49 ENDDO
50 ENDDO
51 ENDDO
52 #endif
53 #ifdef ALLOW_3D_VISCA4
54 DO k=1,Nr
55 DO j=1-OLy,sNy+OLy
56 DO i=1-OLx,sNx+OLx
57 viscA4Dfld(i,j,k,bi,bj) = 0. _d 0
58 viscA4Zfld(i,j,k,bi,bj) = 0. _d 0
59 ENDDO
60 ENDDO
61 ENDDO
62 #endif
63 #ifdef ALLOW_NONHYDROSTATIC
64 C-- Set the horizontal viscosities to default value.
65 DO k=1,Nr
66 DO j=1-OLy,sNy+OLy
67 DO i=1-OLx,sNx+OLx
68 viscAh_W(i,j,k,bi,bj) = viscAhW
69 viscA4_W(i,j,k,bi,bj) = viscA4W
70 ENDDO
71 ENDDO
72 ENDDO
73 #endif /* ALLOW_NONHYDROSTATIC */
74
75 C-- Calculate length-scale factor (used in S/R MOM_CALC_VISC)
76 DO j=1-OLy,sNy+OLy
77 DO i=1-OLx,sNx+OLx
78 L2_D(i,j,bi,bj) = rA(i,j,bi,bj)
79 ENDDO
80 ENDDO
81 IF ( .NOT.useAreaViscLength ) THEN
82 DO j=1-OLy,sNy+OLy
83 DO i=1-OLx,sNx+OLx
84 IF ( recip_dxF(i,j,bi,bj).NE.0. .OR.
85 & recip_dyF(i,j,bi,bj).NE.0. ) THEN
86 L2_D(i,j,bi,bj) = 2. _d 0
87 & /((recip_dxF(i,j,bi,bj)**2+recip_dyF(i,j,bi,bj)**2))
88 ENDIF
89 ENDDO
90 ENDDO
91 ENDIF
92 DO j=1-OLy,sNy+OLy
93 DO i=1-OLx,sNx+OLx
94 L3_D(i,j,bi,bj) = L2_D(i,j,bi,bj)**1.5
95 L4rdt_D(i,j,bi,bj) = 0.03125 _d 0*recip_dt
96 & *L2_D(i,j,bi,bj)**2
97 ENDDO
98 ENDDO
99
100 DO j=1-OLy,sNy+OLy
101 DO i=1-OLx,sNx+OLx
102 L2_Z(i,j,bi,bj) = rAz(i,j,bi,bj)
103 ENDDO
104 ENDDO
105 IF ( .NOT.useAreaViscLength ) THEN
106 DO j=1-OLy,sNy+OLy
107 DO i=1-OLx,sNx+OLx
108 IF ( recip_dxV(i,j,bi,bj).NE.0. .OR.
109 & recip_dyU(i,j,bi,bj).NE.0. ) THEN
110 L2_Z(i,j,bi,bj) = 2. _d 0
111 & /((recip_dxV(i,j,bi,bj)**2+recip_dyU(i,j,bi,bj)**2))
112 ENDIF
113 ENDDO
114 ENDDO
115 ENDIF
116 DO j=1-OLy,sNy+OLy
117 DO i=1-OLx,sNx+OLx
118 L3_Z(i,j,bi,bj) = L2_Z(i,j,bi,bj)**1.5
119 L4rdt_Z(i,j,bi,bj) = 0.03125 _d 0*recip_dt
120 & *L2_Z(i,j,bi,bj)**2
121 ENDDO
122 ENDDO
123
124 C- end bi,bj loops
125 ENDDO
126 ENDDO
127
128 #ifdef ALLOW_3D_VISCAH
129 IF ( viscAhDfile .NE. ' ' ) THEN
130 CALL READ_FLD_XYZ_RL(viscAhDfile,' ',viscAhDfld,0,myThid)
131 CALL EXCH_3D_RL( viscAhDfld, Nr, myThid )
132 ENDIF
133 IF ( viscAhZfile .NE. ' ' ) THEN
134 CALL READ_FLD_XYZ_RL(viscAhZfile,' ',viscAhZfld,0,myThid)
135 CALL EXCH_Z_3D_RL( viscAhZfld, Nr, myThid )
136 ENDIF
137 #endif /* ALLOW_3D_VISCAH */
138 #ifdef ALLOW_3D_VISCA4
139 IF ( viscA4Dfile .NE. ' ' ) THEN
140 CALL READ_FLD_XYZ_RL(viscA4Dfile,' ',viscA4Dfld,0,myThid)
141 CALL EXCH_3D_RL( viscA4Dfld, Nr, myThid )
142 ENDIF
143 IF ( viscA4Zfile .NE. ' ' ) THEN
144 CALL READ_FLD_XYZ_RL(viscA4Zfile,' ',viscA4Zfld,0,myThid)
145 CALL EXCH_Z_3D_RL( viscA4Zfld, Nr, myThid )
146 ENDIF
147 #endif /* ALLOW_3D_VISCA4 */
148
149 #ifdef ALLOW_DIAGNOSTICS
150 IF ( useDiagnostics ) THEN
151 CALL MOM_DIAGNOSTICS_INIT( myThid )
152 ENDIF
153 #endif /* ALLOW_DIAGNOSTICS */
154
155 RETURN
156 END

  ViewVC Help
Powered by ViewVC 1.1.22