/[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.16 - (show annotations) (download)
Tue Jan 21 19:34:13 2003 UTC (21 years, 4 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint48e_post, checkpoint48i_post, checkpoint48b_post, checkpoint48c_pre, checkpoint48d_pre, checkpoint48d_post, checkpoint48f_post, checkpoint48h_post, checkpoint48a_post, checkpoint47j_post, checkpoint48c_post, checkpoint48, checkpoint49, checkpoint48g_post
Changes since 1.15: +31 -5 lines
Yet more changes:
o adgmredi_calc_tensor
  avoiding all recomputation of gmredi_slope_limit
o adgmredi_x/y/rtransport
  added flag for excessive storing to avoid recomp. of
  u/v/rtans, dTdx/y/z
  -> this is not really necessary and very memory-consuming
o adgmredi_slope_psi:
  consistency with gmredi_slope_limit in treatment of GM_slopeSqCutoff
o gmredi_slope_limit
  re-activated full calculation of taperfct for case 'ac02'

1 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_calc_tensor.F,v 1.15 2003/01/12 21:35:27 jmc 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 dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
284 CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
285 CADJ STORE dsigmadrreal(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
286 #endif /* ALLOW_AUTODIFF_TAMC */
287
288 C Calculate slopes for use in tensor, taper and/or clip
289 CALL GMREDI_SLOPE_LIMIT(
290 U dSigmadRReal,
291 I rF(K),K,
292 U SlopeX, SlopeY,
293 U dSigmaDx, dSigmaDy,
294 O SlopeSqr, taperFct,
295 I bi, bj, myThid )
296
297 cph( NEW
298 #ifdef ALLOW_AUTODIFF_TAMC
299 cph(
300 CADJ STORE taperfct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
301 cph)
302 #endif /* ALLOW_AUTODIFF_TAMC */
303 cph)
304
305 #ifdef GM_NON_UNITY_DIAGONAL
306 DO j=1-Oly+1,sNy+Oly-1
307 DO i=1-Olx+1,sNx+Olx-1
308 Kux(i,j,k,bi,bj) =
309 & ( GM_isopycK
310 #ifdef GM_VISBECK_VARIABLE_K
311 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))
312 #endif
313 & )
314 & *taperFct(i,j)
315 ENDDO
316 ENDDO
317 #ifdef ALLOW_AUTODIFF_TAMC
318 # ifdef GM_EXCLUDE_CLIPPING
319 CADJ STORE Kux(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
320 # endif
321 #endif
322 DO j=1-Oly+1,sNy+Oly-1
323 DO i=1-Olx+1,sNx+Olx-1
324 Kux(i,j,k,bi,bj) = MAX( Kux(i,j,k,bi,bj), GM_Kmin_horiz )
325 ENDDO
326 ENDDO
327 #endif /* GM_NON_UNITY_DIAGONAL */
328
329 #ifdef GM_EXTRA_DIAGONAL
330
331 #ifdef ALLOW_AUTODIFF_TAMC
332 CADJ STORE SlopeX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
333 CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
334 #endif /* ALLOW_AUTODIFF_TAMC */
335 IF (GM_ExtraDiag) THEN
336 DO j=1-Oly+1,sNy+Oly-1
337 DO i=1-Olx+1,sNx+Olx-1
338 Kuz(i,j,k,bi,bj) =
339 & ( GM_isopycK - GM_skewflx*GM_background_K
340 #ifdef GM_VISBECK_VARIABLE_K
341 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))*GM_advect
342 #endif
343 & )*SlopeX(i,j)*taperFct(i,j)
344 ENDDO
345 ENDDO
346 ENDIF
347 #endif /* GM_EXTRA_DIAGONAL */
348
349 C Gradient of Sigma at V points
350 DO j=1-Oly+1,sNy+Oly-1
351 DO i=1-Olx+1,sNx+Olx-1
352 dSigmaDx(i,j)=op25*( sigmaX(i, j ,k) +sigmaX(i+1, j ,k)
353 & +sigmaX(i,j-1,k) +sigmaX(i+1,j-1,k) )
354 & *_maskS(i,j,k,bi,bj)
355 dSigmaDy(i,j)=sigmaY(i,j,k)
356 & *_maskS(i,j,k,bi,bj)
357 dSigmaDrReal(i,j)=op25*( sigmaR(i,j-1, k ) +sigmaR(i,j, k )
358 & +maskp1*(sigmaR(i,j-1,kp1) +sigmaR(i,j,kp1)) )
359 & *_maskS(i,j,k,bi,bj)
360 ENDDO
361 ENDDO
362
363 #ifdef ALLOW_AUTODIFF_TAMC
364 CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
365 CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
366 CADJ STORE dsigmadrreal(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
367 #endif /* ALLOW_AUTODIFF_TAMC */
368
369 C Calculate slopes for use in tensor, taper and/or clip
370 CALL GMREDI_SLOPE_LIMIT(
371 U dSigmadRReal,
372 I rF(K),K,
373 U SlopeX, SlopeY,
374 U dSigmaDx, dSigmaDy,
375 O SlopeSqr, taperFct,
376 I bi, bj, myThid )
377
378 cph(
379 #ifdef ALLOW_AUTODIFF_TAMC
380 cph(
381 CADJ STORE taperfct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
382 cph)
383 #endif /* ALLOW_AUTODIFF_TAMC */
384 cph)
385
386 #ifdef GM_NON_UNITY_DIAGONAL
387 DO j=1-Oly+1,sNy+Oly-1
388 DO i=1-Olx+1,sNx+Olx-1
389 Kvy(i,j,k,bi,bj) =
390 & ( GM_isopycK
391 #ifdef GM_VISBECK_VARIABLE_K
392 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))
393 #endif
394 & )
395 & *taperFct(i,j)
396 ENDDO
397 ENDDO
398 #ifdef ALLOW_AUTODIFF_TAMC
399 # ifdef GM_EXCLUDE_CLIPPING
400 CADJ STORE Kvy(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
401 # endif
402 #endif
403 DO j=1-Oly+1,sNy+Oly-1
404 DO i=1-Olx+1,sNx+Olx-1
405 Kvy(i,j,k,bi,bj) = MAX( Kvy(i,j,k,bi,bj), GM_Kmin_horiz )
406 ENDDO
407 ENDDO
408 #endif /* GM_NON_UNITY_DIAGONAL */
409
410 #ifdef GM_EXTRA_DIAGONAL
411
412 #ifdef ALLOW_AUTODIFF_TAMC
413 CADJ STORE SlopeY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
414 CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
415 #endif /* ALLOW_AUTODIFF_TAMC */
416 IF (GM_ExtraDiag) THEN
417 DO j=1-Oly+1,sNy+Oly-1
418 DO i=1-Olx+1,sNx+Olx-1
419 Kvz(i,j,k,bi,bj) =
420 & ( GM_isopycK - GM_skewflx*GM_background_K
421 #ifdef GM_VISBECK_VARIABLE_K
422 & +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))*GM_advect
423 #endif
424 & )*SlopeY(i,j)*taperFct(i,j)
425 ENDDO
426 ENDDO
427 ENDIF
428 #endif /* GM_EXTRA_DIAGONAL */
429
430 #endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */
431
432 #ifdef ALLOW_TIMEAVE
433 C-- Time-average
434 DO j=1-Oly+1,sNy+Oly-1
435 DO i=1-Olx+1,sNx+Olx-1
436 GM_Kwx_T(i,j,k,bi,bj)=GM_Kwx_T(i,j,k,bi,bj)
437 & +Kwx(i,j,k,bi,bj)*deltaTclock
438 GM_Kwy_T(i,j,k,bi,bj)=GM_Kwy_T(i,j,k,bi,bj)
439 & +Kwy(i,j,k,bi,bj)*deltaTclock
440 GM_Kwz_T(i,j,k,bi,bj)=GM_Kwz_T(i,j,k,bi,bj)
441 & +Kwz(i,j,k,bi,bj)*deltaTclock
442 ENDDO
443 ENDDO
444 GM_TimeAve(k,bi,bj)=GM_TimeAve(k,bi,bj)+deltaTclock
445 #endif /* ALLOW_TIMEAVE */
446
447 C-- end 2nd loop on vertical level index k
448 ENDDO
449
450
451 #ifdef GM_BOLUS_ADVEC
452 IF (GM_AdvForm) THEN
453 CALL GMREDI_CALC_PSI_B(
454 I bi, bj, iMin, iMax, jMin, jMax,
455 I sigmaX, sigmaY, sigmaR,
456 I myThid )
457 ENDIF
458 #endif
459
460 #endif /* ALLOW_GMREDI */
461
462 RETURN
463 END
464
465
466 SUBROUTINE GMREDI_CALC_TENSOR_DUMMY(
467 I bi, bj, iMin, iMax, jMin, jMax,
468 I sigmaX, sigmaY, sigmaR,
469 I myThid )
470 C /==========================================================\
471 C | SUBROUTINE GMREDI_CALC_TENSOR |
472 C | o Calculate tensor elements for GM/Redi tensor. |
473 C |==========================================================|
474 C \==========================================================/
475 IMPLICIT NONE
476
477 C == Global variables ==
478 #include "SIZE.h"
479 #include "GRID.h"
480 #include "DYNVARS.h"
481 #include "EEPARAMS.h"
482 #include "PARAMS.h"
483 #include "GMREDI.h"
484
485 C == Routine arguments ==
486 C
487 _RL sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
488 _RL sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
489 _RL sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
490 INTEGER bi,bj,iMin,iMax,jMin,jMax
491 INTEGER myThid
492 CEndOfInterface
493
494 INTEGER i, j, k
495
496 #ifdef ALLOW_GMREDI
497
498 DO k=1,Nr
499 DO j=1-Oly+1,sNy+Oly-1
500 DO i=1-Olx+1,sNx+Olx-1
501 Kwx(i,j,k,bi,bj) = 0.0
502 Kwy(i,j,k,bi,bj) = 0.0
503 Kwz(i,j,k,bi,bj) = 0.0
504 ENDDO
505 ENDDO
506 ENDDO
507 #endif /* ALLOW_GMREDI */
508
509 RETURN
510 END

  ViewVC Help
Powered by ViewVC 1.1.22