/[MITgcm]/MITgcm/pkg/gmredi/gmredi_init_varia.F
ViewVC logotype

Contents of /MITgcm/pkg/gmredi/gmredi_init_varia.F

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


Revision 1.5 - (show annotations) (download)
Wed Oct 14 20:03:59 2015 UTC (8 years, 8 months ago) by dfer
Branch: MAIN
CVS Tags: 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, HEAD
Changes since 1.4: +46 -1 lines
Move initialization of gradf from gmredi_init_fixed.F to gmredi_init_varia.F + small adjusments to gmredi_k3d.F

1 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_init_varia.F,v 1.4 2013/07/11 14:33:23 m_bates Exp $
2 C $Name: $
3
4 #include "GMREDI_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: GMREDI_INIT_VARIA
8 C !INTERFACE:
9 SUBROUTINE GMREDI_INIT_VARIA( myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE GMREDI_INIT_VARIA
14 C | o Routine to initialize GM/Redi variables
15 C *==========================================================*
16 C \ev
17
18 C !USES:
19 IMPLICIT NONE
20
21 C === Global variables ===
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26 #include "GMREDI.h"
27 #include "GMREDI_TAVE.h"
28
29 C !INPUT/OUTPUT PARAMETERS:
30 C === Routine arguments ===
31 C myThid :: my Thread Id number
32 INTEGER myThid
33 CEOP
34
35 #ifdef ALLOW_GMREDI
36
37 C !LOCAL VARIABLES:
38 C === Local variables ===
39 INTEGER i,j,k,bi,bj
40
41 DO bj = myByLo(myThid), myByHi(myThid)
42 DO bi = myBxLo(myThid), myBxHi(myThid)
43
44 C Initialize arrays in common blocks :
45 DO k=1,Nr
46 DO j=1-Oly,sNy+OLy
47 DO i=1-Olx,sNx+Olx
48 Kwx(i,j,k,bi,bj) = 0. _d 0
49 Kwy(i,j,k,bi,bj) = 0. _d 0
50 Kwz(i,j,k,bi,bj) = 0. _d 0
51 #ifdef GM_EXTRA_DIAGONAL
52 Kuz(i,j,k,bi,bj) = 0. _d 0
53 Kvz(i,j,k,bi,bj) = 0. _d 0
54 #endif
55 #ifdef GM_NON_UNITY_DIAGONAL
56 Kux(i,j,k,bi,bj) = 0. _d 0
57 Kvy(i,j,k,bi,bj) = 0. _d 0
58 #endif
59 #ifdef GM_BOLUS_ADVEC
60 GM_PsiX(i,j,k,bi,bj) = 0. _d 0
61 GM_PsiY(i,j,k,bi,bj) = 0. _d 0
62 #endif
63 #ifdef GM_VISBECK_VARIABLE_K
64 VisbeckK(i,j,bi,bj) = 0. _d 0
65 #endif
66 #ifdef GM_K3D
67 K3D(i,j,k,bi,bj) = 0. _d 0
68 #endif
69 ENDDO
70 ENDDO
71 ENDDO
72
73 #ifdef ALLOW_TIMEAVE
74 C Initialize averages to zero
75 CALL TIMEAVE_RESET(GM_Kwx_T,Nr, bi,bj,myThid)
76 CALL TIMEAVE_RESET(GM_Kwy_T,Nr, bi,bj,myThid)
77 CALL TIMEAVE_RESET(GM_Kwz_T,Nr, bi,bj,myThid)
78 GM_timeAve(bi,bj) = 0. _d 0
79 #ifdef GM_VISBECK_VARIABLE_K
80 CALL TIMEAVE_RESET(Visbeck_K_T, 1, bi,bj,myThid)
81 #endif
82 #ifdef GM_BOLUS_ADVEC
83 CALL TIMEAVE_RESET(GM_PsiXtave,Nr, bi,bj,myThid)
84 CALL TIMEAVE_RESET(GM_PsiYtave,Nr, bi,bj,myThid)
85 #endif
86 #endif /* ALLOW_TIMEAVE */
87
88 C- end bi,bj loops
89 ENDDO
90 ENDDO
91
92 C-- write GM scaling factors to file:
93 IF ( GM_iso1dFile .NE. ' ' ) THEN
94 CALL WRITE_GLVEC_RS( 'GM_isoFac1d', ' ', GM_isoFac1d,
95 I Nr, -1, myThid )
96 ENDIF
97 IF ( GM_bol1dFile .NE. ' ' ) THEN
98 CALL WRITE_GLVEC_RS( 'GM_bolFac1d', ' ', GM_bolFac1d,
99 I Nr, -1, myThid )
100 ENDIF
101 IF ( GM_iso2dFile .NE. ' ' ) THEN
102 CALL WRITE_FLD_XY_RS( 'GM_isoFac2d',' ',GM_isoFac2d,-1,myThid )
103 ENDIF
104 IF ( GM_bol2dFile .NE. ' ' ) THEN
105 CALL WRITE_FLD_XY_RS( 'GM_bolFac2d',' ',GM_bolFac2d,-1,myThid )
106 ENDIF
107 #endif /* ALLOW_GMREDI */
108
109
110 #ifdef GM_K3D
111 IF (.NOT.( startTime.EQ.baseTime .AND. nIter0.EQ.0
112 & .AND. pickupSuff.EQ.' ' )) THEN
113 IF (GM_useK3D) CALL GMREDI_READ_PICKUP( niter0, myThid )
114 ENDIF
115 #endif
116
117 #ifdef GM_K3D
118 C This is put here, but really should be in gmredi_init_fixed.F. The problem is that
119 C fCori, fCoriCos, etc are not initialized when gmredi_init_fixed.F is called. To be fixed.
120 C Computing beta = df/dy
121 IF ( selectCoriMap.EQ.1 ) THEN
122 DO bj = myByLo(myThid), myByHi(myThid)
123 DO bi = myBxLo(myThid), myBxHi(myThid)
124 DO j=1-Oly,sNy+Oly
125 DO i=1-Olx,sNx+Olx
126 gradf(i,j,bi,bj) = beta
127 ENDDO
128 ENDDO
129 ENDDO
130 ENDDO
131 ELSEIF ( selectCoriMap.EQ.2 ) THEN
132 DO bj = myByLo(myThid), myByHi(myThid)
133 DO bi = myBxLo(myThid), myBxHi(myThid)
134 DO j=1-Oly,sNy+Oly
135 DO i=1-Olx,sNx+Olx
136 gradf(i,j,bi,bj) = recip_rSphere*fCoriCos(i,j,bi,bj)
137 ENDDO
138 ENDDO
139 ENDDO
140 ENDDO
141 ELSE
142 DO bj = myByLo(myThid), myByHi(myThid)
143 DO bi = myBxLo(myThid), myBxHi(myThid)
144 DO j=1-Oly+1,sNy+Oly-1
145 DO i=1-Olx+1,sNx+Olx-1
146 gradf(i,j,bi,bj) = .5 _d 0*angleSinC(i,j,bi,bj)*(
147 & (fCori(i+1,j,bi,bj)-fCori(i ,j,bi,bj))*recip_dxC(i+1,j,bi,bj)
148 & +(fCori(i ,j,bi,bj)-fCori(i-1,j,bi,bj))*recip_dxC(i,j,bi,bj) )
149 & + .5 _d 0*angleCosC(i,j,bi,bj)*(
150 & (fCori(i,j+1,bi,bj)-fCori(i,j ,bi,bj))*recip_dyC(i,j+1,bi,bj)
151 & +(fCori(i,j ,bi,bj)-fCori(i,j-1,bi,bj))*recip_dyC(i,j,bi,bj) )
152 gradf(i,j,bi,bj)=max(1. _d -18, gradf(i,j,bi,bj) )
153 ENDDO
154 ENDDO
155 ENDDO
156 ENDDO
157 ENDIF
158 CALL EXCH_XY_RL( gradf, myThid)
159 #endif
160
161 RETURN
162 END

  ViewVC Help
Powered by ViewVC 1.1.22