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

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

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


Revision 1.17 - (show annotations) (download)
Fri Mar 7 23:51:02 2003 UTC (21 years, 2 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint50c_post, checkpoint50c_pre, checkpoint51, checkpoint50, checkpoint50d_post, checkpoint50b_pre, checkpoint51d_post, checkpoint51b_pre, checkpoint50f_post, checkpoint50a_post, checkpoint50f_pre, branchpoint-genmake2, checkpoint51b_post, checkpoint51c_post, checkpoint50g_post, checkpoint50h_post, checkpoint50e_pre, checkpoint50i_post, checkpoint50e_post, checkpoint50d_pre, checkpoint51e_post, checkpoint51f_pre, checkpoint50b_post, checkpoint51a_post
Branch point for: branch-genmake2
Changes since 1.16: +3 -1 lines
Added more storing to avoid more recomp. in
kpp_routines.F, gmredi_calc_tensor.F

1 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_calc_tensor.F,v 1.7.4.4 2003/03/07 03:57:33 heimbach Exp $
2 C $Name: $
3
4 #include "GMREDI_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE GMREDI_CALC_TENSOR(
8 I bi, bj, iMin, iMax, jMin, jMax,
9 I sigmaX, sigmaY, sigmaR,
10 I myThid )
11 C /==========================================================\
12 C | SUBROUTINE GMREDI_CALC_TENSOR |
13 C | o Calculate tensor elements for GM/Redi tensor. |
14 C |==========================================================|
15 C \==========================================================/
16 IMPLICIT NONE
17
18 C == Global variables ==
19 #include "SIZE.h"
20 #include "GRID.h"
21 #include "DYNVARS.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #include "GMREDI.h"
25 #include "GMREDI_DIAGS.h"
26
27 #ifdef ALLOW_AUTODIFF_TAMC
28 #include "tamc.h"
29 #include "tamc_keys.h"
30 #endif /* ALLOW_AUTODIFF_TAMC */
31
32 C == Routine arguments ==
33 C
34 _RL sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
35 _RL sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
36 _RL sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
37 INTEGER bi,bj,iMin,iMax,jMin,jMax
38 INTEGER myThid
39 CEndOfInterface
40
41 #ifdef ALLOW_GMREDI
42
43 C == Local variables ==
44 INTEGER i,j,k,kp1
45 _RL SlopeX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
46 _RL SlopeY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
47 _RL dSigmaDx(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
48 _RL dSigmaDy(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
49 _RL dSigmaDrReal(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
50 _RL SlopeSqr(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
51 _RL taperFct(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
52 _RL maskp1, Kgm_tmp
53
54 #ifdef GM_VISBECK_VARIABLE_K
55 _RL deltaH,zero_rs
56 PARAMETER(zero_rs=0.D0)
57 _RL N2,SN
58 _RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
59 #endif
60
61 #ifdef ALLOW_AUTODIFF_TAMC
62 act1 = bi - myBxLo(myThid)
63 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
64 act2 = bj - myByLo(myThid)
65 max2 = myByHi(myThid) - myByLo(myThid) + 1
66 act3 = myThid - 1
67 max3 = nTx*nTy
68 act4 = ikey_dynamics - 1
69 igmkey = (act1 + 1) + act2*max1
70 & + act3*max1*max2
71 & + act4*max1*max2*max3
72 #endif /* ALLOW_AUTODIFF_TAMC */
73
74 #ifdef GM_VISBECK_VARIABLE_K
75 DO j=1-Oly,sNy+Oly
76 DO i=1-Olx,sNx+Olx
77 VisbeckK(i,j,bi,bj) = 0. _d 0
78 ENDDO
79 ENDDO
80 #endif
81
82 DO k=2,Nr
83 C-- 1rst loop on k : compute Tensor Coeff. at W points.
84
85 #ifdef ALLOW_AUTODIFF_TAMC
86 kkey = (igmkey-1)*Nr + k
87 DO j=1-Oly,sNy+Oly
88 DO i=1-Olx,sNx+Olx
89 SlopeX(i,j) = 0. _d 0
90 SlopeY(i,j) = 0. _d 0
91 dSigmaDx(i,j) = 0. _d 0
92 dSigmaDy(i,j) = 0. _d 0
93 dSigmaDrReal(i,j) = 0. _d 0
94 SlopeSqr(i,j) = 0. _d 0
95 taperFct(i,j) = 0. _d 0
96 Kwx(i,j,k,bi,bj) = 0. _d 0
97 Kwy(i,j,k,bi,bj) = 0. _d 0
98 Kwz(i,j,k,bi,bj) = 0. _d 0
99 # ifdef GM_NON_UNITY_DIAGONAL
100 Kux(i,j,k,bi,bj) = 0. _d 0
101 Kvy(i,j,k,bi,bj) = 0. _d 0
102 # endif
103 # ifdef GM_EXTRA_DIAGONAL
104 Kuz(i,j,k,bi,bj) = 0. _d 0
105 Kvz(i,j,k,bi,bj) = 0. _d 0
106 # endif
107 # ifdef GM_BOLUS_ADVEC
108 GM_PsiX(i,j,k,bi,bj) = 0. _d 0
109 GM_PsiY(i,j,k,bi,bj) = 0. _d 0
110 # endif
111 ENDDO
112 ENDDO
113 #endif
114
115 DO j=1-Oly+1,sNy+Oly-1
116 DO i=1-Olx+1,sNx+Olx-1
117 C Gradient of Sigma at rVel points
118 dSigmaDx(i,j)=op25*( sigmaX(i+1, j ,k-1) +sigmaX(i,j,k-1)
119 & +sigmaX(i+1, j , k ) +sigmaX(i,j, k ) )
120 & *maskC(i,j,k,bi,bj)
121 dSigmaDy(i,j)=op25*( sigmaY( i ,j+1,k-1) +sigmaY(i,j,k-1)
122 & +sigmaY( i ,j+1, k ) +sigmaY(i,j, k ) )
123 & *maskC(i,j,k,bi,bj)
124 dSigmaDrReal(i,j)=sigmaR(i,j,k)
125 ENDDO
126 ENDDO
127
128 #ifdef ALLOW_AUTODIFF_TAMC
129 CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
130 CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
131 CADJ STORE dsigmadrreal(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
132 #endif /* ALLOW_AUTODIFF_TAMC */
133
134 C Calculate slopes for use in tensor, taper and/or clip
135 CALL GMREDI_SLOPE_LIMIT(
136 U dSigmadRReal,
137 I rF(K),K,
138 U SlopeX, SlopeY,
139 U dSigmaDx, dSigmaDy,
140 O SlopeSqr, taperFct,
141 I bi, bj, myThid )
142
143 DO j=1-Oly+1,sNy+Oly-1
144 DO i=1-Olx+1,sNx+Olx-1
145
146 C Mask Iso-neutral slopes
147 SlopeX(i,j)=SlopeX(i,j)*maskC(i,j,k,bi,bj)
148 SlopeY(i,j)=SlopeY(i,j)*maskC(i,j,k,bi,bj)
149 SlopeSqr(i,j)=SlopeSqr(i,j)*maskC(i,j,k,bi,bj)
150
151 ENDDO
152 ENDDO
153
154 #ifdef ALLOW_AUTODIFF_TAMC
155 CADJ STORE SlopeX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
156 CADJ STORE SlopeY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
157 CADJ STORE SlopeSqr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
158 CADJ STORE dsigmadrreal(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
159 CADJ STORE taperfct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
160 #endif /* ALLOW_AUTODIFF_TAMC */
161
162 DO j=1-Oly+1,sNy+Oly-1
163 DO i=1-Olx+1,sNx+Olx-1
164
165 C Components of Redi/GM tensor
166 Kwx(i,j,k,bi,bj)= SlopeX(i,j)*taperFct(i,j)
167 Kwy(i,j,k,bi,bj)= SlopeY(i,j)*taperFct(i,j)
168 Kwz(i,j,k,bi,bj)= SlopeSqr(i,j)*taperFct(i,j)
169
170 #ifdef GM_VISBECK_VARIABLE_K
171
172 C- note (jmc) : moved here since only used in VISBECK_VARIABLE_K
173 C but don't know if *taperFct (or **2 ?) is necessary
174 Ssq(i,j)=SlopeSqr(i,j)*taperFct(i,j)
175
176 C-- Depth average of M^2/N^2 * N
177
178 C Calculate terms for mean Richardson number
179 C which is used in the "variable K" parameterisaton.
180 C Distance between interface above layer and the integration depth
181 deltaH=abs(GM_Visbeck_depth)-abs(rF(k))
182 C If positive we limit this to the layer thickness
183 deltaH=min(deltaH,drF(k))
184 C If negative then we are below the integration level
185 deltaH=max(deltaH,zero_rs)
186 C Now we convert deltaH to a non-dimensional fraction
187 deltaH=deltaH/GM_Visbeck_depth
188
189 IF (K.eq.2) VisbeckK(i,j,bi,bj)=0.
190 IF ( Ssq(i,j).NE.0. .AND. dSigmaDrReal(i,j).NE.0. ) THEN
191 N2= -Gravity*recip_RhoConst*dSigmaDrReal(i,j)
192 SN=sqrt(Ssq(i,j)*N2)
193 VisbeckK(i,j,bi,bj)=VisbeckK(i,j,bi,bj)+deltaH
194 & *GM_Visbeck_alpha*GM_Visbeck_length*GM_Visbeck_length*SN
195 ENDIF
196
197 #endif /* GM_VISBECK_VARIABLE_K */
198
199 ENDDO
200 ENDDO
201
202 C-- end 1rst loop on vertical level index k
203 ENDDO
204
205
206 #ifdef GM_VISBECK_VARIABLE_K
207 #ifdef ALLOW_AUTODIFF_TAMC
208 CADJ STORE VisbeckK(:,:,bi,bj) = comlev1_bibj, key=igmkey, byte=isbyte
209 #endif
210 IF ( GM_Visbeck_alpha.NE.0. ) THEN
211 C- Limit range that KapGM can take
212 DO j=1-Oly+1,sNy+Oly-1
213 DO i=1-Olx+1,sNx+Olx-1
214 VisbeckK(i,j,bi,bj)=
215 & MIN(VisbeckK(i,j,bi,bj),GM_Visbeck_maxval_K)
216 #ifdef ALLOW_TIMEAVE
217 Visbeck_K_T(i,j,bi,bj)=Visbeck_K_T(i,j,bi,bj)
218 & +VisbeckK(i,j,bi,bj)*deltaTclock
219 #endif
220 ENDDO
221 ENDDO
222 ENDIF
223 cph( NEW
224 #ifdef ALLOW_AUTODIFF_TAMC
225 CADJ STORE VisbeckK(:,:,bi,bj) = comlev1_bibj, key=igmkey, byte=isbyte
226 #endif
227 cph)
228 #endif /* GM_VISBECK_VARIABLE_K */
229
230
231 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
232
233 C-- 2nd loop on k : compute Tensor Coeff. at U,V levels.
234 DO k=1,Nr
235 kp1 = MIN(Nr,k+1)
236 maskp1 = 1. _d 0
237 IF (k.GE.Nr) maskp1 = 0. _d 0
238
239 #ifdef ALLOW_AUTODIFF_TAMC
240 kkey = (igmkey-1)*Nr + k
241 #if (defined (GM_NON_UNITY_DIAGONAL) || \
242 defined (GM_VISBECK_VARIABLE_K))
243 CADJ STORE Kwx(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
244 CADJ STORE Kwy(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
245 CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
246 #endif
247 #endif
248
249 C- express the Tensor in term of Diffusivity (= m**2 / s )
250 DO j=1-Oly+1,sNy+Oly-1
251 DO i=1-Olx+1,sNx+Olx-1
252 Kgm_tmp = GM_isopycK + GM_skewflx*GM_background_K
253 #ifdef GM_VISBECK_VARIABLE_K
254 & + VisbeckK(i,j,bi,bj)*(1. _d 0 + GM_skewflx)
255 #endif
256 Kwx(i,j,k,bi,bj)= Kgm_tmp*Kwx(i,j,k,bi,bj)
257 Kwy(i,j,k,bi,bj)= Kgm_tmp*Kwy(i,j,k,bi,bj)
258 Kwz(i,j,k,bi,bj)= ( GM_isopycK
259 #ifdef GM_VISBECK_VARIABLE_K
260 & + VisbeckK(i,j,bi,bj)
261 #endif
262 & )*Kwz(i,j,k,bi,bj)
263 ENDDO
264 ENDDO
265
266 #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
267
268 C Gradient of Sigma at U points
269 DO j=1-Oly+1,sNy+Oly-1
270 DO i=1-Olx+1,sNx+Olx-1
271 dSigmaDx(i,j)=sigmaX(i,j,k)
272 & *_maskW(i,j,k,bi,bj)
273 dSigmaDy(i,j)=op25*( sigmaY(i-1,j+1,k) +sigmaY(i,j+1,k)
274 & +sigmaY(i-1, j ,k) +sigmaY(i, j ,k) )
275 & *_maskW(i,j,k,bi,bj)
276 dSigmaDrReal(i,j)=op25*( sigmaR(i-1,j, k ) +sigmaR(i,j, k )
277 & +maskp1*(sigmaR(i-1,j,kp1) +sigmaR(i,j,kp1)) )
278 & *_maskW(i,j,k,bi,bj)
279 ENDDO
280 ENDDO
281
282 #ifdef ALLOW_AUTODIFF_TAMC
283 CADJ STORE SlopeSqr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
284 CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
285 CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
286 CADJ STORE dsigmadrreal(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
287 #endif /* ALLOW_AUTODIFF_TAMC */
288
289 C Calculate slopes for use in tensor, taper and/or clip
290 CALL GMREDI_SLOPE_LIMIT(
291 U dSigmadRReal,
292 I rF(K),K,
293 U SlopeX, SlopeY,
294 U dSigmaDx, dSigmaDy,
295 O SlopeSqr, taperFct,
296 I bi, bj, myThid )
297
298 cph( NEW
299 #ifdef ALLOW_AUTODIFF_TAMC
300 cph(
301 CADJ STORE SlopeSqr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
302 CADJ STORE taperfct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
303 cph)
304 #endif /* ALLOW_AUTODIFF_TAMC */
305 cph)
306
307 #ifdef GM_NON_UNITY_DIAGONAL
308 DO j=1-Oly+1,sNy+Oly-1
309 DO i=1-Olx+1,sNx+Olx-1
310 Kux(i,j,k,bi,bj) =
311 & ( GM_isopycK
312 #ifdef GM_VISBECK_VARIABLE_K
313 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))
314 #endif
315 & )
316 & *taperFct(i,j)
317 ENDDO
318 ENDDO
319 #ifdef ALLOW_AUTODIFF_TAMC
320 # ifdef GM_EXCLUDE_CLIPPING
321 CADJ STORE Kux(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
322 # endif
323 #endif
324 DO j=1-Oly+1,sNy+Oly-1
325 DO i=1-Olx+1,sNx+Olx-1
326 Kux(i,j,k,bi,bj) = MAX( Kux(i,j,k,bi,bj), GM_Kmin_horiz )
327 ENDDO
328 ENDDO
329 #endif /* GM_NON_UNITY_DIAGONAL */
330
331 #ifdef GM_EXTRA_DIAGONAL
332
333 #ifdef ALLOW_AUTODIFF_TAMC
334 CADJ STORE SlopeX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
335 CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
336 #endif /* ALLOW_AUTODIFF_TAMC */
337 IF (GM_ExtraDiag) THEN
338 DO j=1-Oly+1,sNy+Oly-1
339 DO i=1-Olx+1,sNx+Olx-1
340 Kuz(i,j,k,bi,bj) =
341 & ( GM_isopycK - GM_skewflx*GM_background_K
342 #ifdef GM_VISBECK_VARIABLE_K
343 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))*GM_advect
344 #endif
345 & )*SlopeX(i,j)*taperFct(i,j)
346 ENDDO
347 ENDDO
348 ENDIF
349 #endif /* GM_EXTRA_DIAGONAL */
350
351 C Gradient of Sigma at V points
352 DO j=1-Oly+1,sNy+Oly-1
353 DO i=1-Olx+1,sNx+Olx-1
354 dSigmaDx(i,j)=op25*( sigmaX(i, j ,k) +sigmaX(i+1, j ,k)
355 & +sigmaX(i,j-1,k) +sigmaX(i+1,j-1,k) )
356 & *_maskS(i,j,k,bi,bj)
357 dSigmaDy(i,j)=sigmaY(i,j,k)
358 & *_maskS(i,j,k,bi,bj)
359 dSigmaDrReal(i,j)=op25*( sigmaR(i,j-1, k ) +sigmaR(i,j, k )
360 & +maskp1*(sigmaR(i,j-1,kp1) +sigmaR(i,j,kp1)) )
361 & *_maskS(i,j,k,bi,bj)
362 ENDDO
363 ENDDO
364
365 #ifdef ALLOW_AUTODIFF_TAMC
366 CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
367 CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
368 CADJ STORE dsigmadrreal(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
369 #endif /* ALLOW_AUTODIFF_TAMC */
370
371 C Calculate slopes for use in tensor, taper and/or clip
372 CALL GMREDI_SLOPE_LIMIT(
373 U dSigmadRReal,
374 I rF(K),K,
375 U SlopeX, SlopeY,
376 U dSigmaDx, dSigmaDy,
377 O SlopeSqr, taperFct,
378 I bi, bj, myThid )
379
380 cph(
381 #ifdef ALLOW_AUTODIFF_TAMC
382 cph(
383 CADJ STORE taperfct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
384 cph)
385 #endif /* ALLOW_AUTODIFF_TAMC */
386 cph)
387
388 #ifdef GM_NON_UNITY_DIAGONAL
389 DO j=1-Oly+1,sNy+Oly-1
390 DO i=1-Olx+1,sNx+Olx-1
391 Kvy(i,j,k,bi,bj) =
392 & ( GM_isopycK
393 #ifdef GM_VISBECK_VARIABLE_K
394 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))
395 #endif
396 & )
397 & *taperFct(i,j)
398 ENDDO
399 ENDDO
400 #ifdef ALLOW_AUTODIFF_TAMC
401 # ifdef GM_EXCLUDE_CLIPPING
402 CADJ STORE Kvy(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
403 # endif
404 #endif
405 DO j=1-Oly+1,sNy+Oly-1
406 DO i=1-Olx+1,sNx+Olx-1
407 Kvy(i,j,k,bi,bj) = MAX( Kvy(i,j,k,bi,bj), GM_Kmin_horiz )
408 ENDDO
409 ENDDO
410 #endif /* GM_NON_UNITY_DIAGONAL */
411
412 #ifdef GM_EXTRA_DIAGONAL
413
414 #ifdef ALLOW_AUTODIFF_TAMC
415 CADJ STORE SlopeY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
416 CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
417 #endif /* ALLOW_AUTODIFF_TAMC */
418 IF (GM_ExtraDiag) THEN
419 DO j=1-Oly+1,sNy+Oly-1
420 DO i=1-Olx+1,sNx+Olx-1
421 Kvz(i,j,k,bi,bj) =
422 & ( GM_isopycK - GM_skewflx*GM_background_K
423 #ifdef GM_VISBECK_VARIABLE_K
424 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))*GM_advect
425 #endif
426 & )*SlopeY(i,j)*taperFct(i,j)
427 ENDDO
428 ENDDO
429 ENDIF
430 #endif /* GM_EXTRA_DIAGONAL */
431
432 #endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */
433
434 #ifdef ALLOW_TIMEAVE
435 C-- Time-average
436 DO j=1-Oly+1,sNy+Oly-1
437 DO i=1-Olx+1,sNx+Olx-1
438 GM_Kwx_T(i,j,k,bi,bj)=GM_Kwx_T(i,j,k,bi,bj)
439 & +Kwx(i,j,k,bi,bj)*deltaTclock
440 GM_Kwy_T(i,j,k,bi,bj)=GM_Kwy_T(i,j,k,bi,bj)
441 & +Kwy(i,j,k,bi,bj)*deltaTclock
442 GM_Kwz_T(i,j,k,bi,bj)=GM_Kwz_T(i,j,k,bi,bj)
443 & +Kwz(i,j,k,bi,bj)*deltaTclock
444 ENDDO
445 ENDDO
446 GM_TimeAve(k,bi,bj)=GM_TimeAve(k,bi,bj)+deltaTclock
447 #endif /* ALLOW_TIMEAVE */
448
449 C-- end 2nd loop on vertical level index k
450 ENDDO
451
452
453 #ifdef GM_BOLUS_ADVEC
454 IF (GM_AdvForm) THEN
455 CALL GMREDI_CALC_PSI_B(
456 I bi, bj, iMin, iMax, jMin, jMax,
457 I sigmaX, sigmaY, sigmaR,
458 I myThid )
459 ENDIF
460 #endif
461
462 #endif /* ALLOW_GMREDI */
463
464 RETURN
465 END
466
467
468 SUBROUTINE GMREDI_CALC_TENSOR_DUMMY(
469 I bi, bj, iMin, iMax, jMin, jMax,
470 I sigmaX, sigmaY, sigmaR,
471 I myThid )
472 C /==========================================================\
473 C | SUBROUTINE GMREDI_CALC_TENSOR |
474 C | o Calculate tensor elements for GM/Redi tensor. |
475 C |==========================================================|
476 C \==========================================================/
477 IMPLICIT NONE
478
479 C == Global variables ==
480 #include "SIZE.h"
481 #include "GRID.h"
482 #include "DYNVARS.h"
483 #include "EEPARAMS.h"
484 #include "PARAMS.h"
485 #include "GMREDI.h"
486
487 C == Routine arguments ==
488 C
489 _RL sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
490 _RL sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
491 _RL sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
492 INTEGER bi,bj,iMin,iMax,jMin,jMax
493 INTEGER myThid
494 CEndOfInterface
495
496 INTEGER i, j, k
497
498 #ifdef ALLOW_GMREDI
499
500 DO k=1,Nr
501 DO j=1-Oly+1,sNy+Oly-1
502 DO i=1-Olx+1,sNx+Olx-1
503 Kwx(i,j,k,bi,bj) = 0.0
504 Kwy(i,j,k,bi,bj) = 0.0
505 Kwz(i,j,k,bi,bj) = 0.0
506 ENDDO
507 ENDDO
508 ENDDO
509 #endif /* ALLOW_GMREDI */
510
511 RETURN
512 END

  ViewVC Help
Powered by ViewVC 1.1.22