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

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

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

revision 1.14 by heimbach, Fri Jan 10 00:48:39 2003 UTC revision 1.17 by heimbach, Fri Mar 7 23:51:02 2003 UTC
# Line 41  CEndOfInterface Line 41  CEndOfInterface
41  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
42    
43  C     == Local variables ==  C     == Local variables ==
44        INTEGER i,j,k,km1,kp1        INTEGER i,j,k,kp1
45        _RL SlopeX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL SlopeX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
46        _RL SlopeY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL SlopeY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
47        _RL dSigmaDx(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL dSigmaDx(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
# Line 49  C     == Local variables == Line 49  C     == Local variables ==
49        _RL dSigmaDrReal(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL dSigmaDrReal(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
50        _RL SlopeSqr(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL SlopeSqr(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
51        _RL taperFct(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL taperFct(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
52        _RL maskp1, maskm1, Kgm_tmp        _RL maskp1, Kgm_tmp
53    
54  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
55        _RL deltaH,zero_rs        _RL deltaH,zero_rs
# Line 81  C     == Local variables == Line 81  C     == Local variables ==
81    
82        DO k=2,Nr        DO k=2,Nr
83  C-- 1rst loop on k : compute Tensor Coeff. at W points.  C-- 1rst loop on k : compute Tensor Coeff. at W points.
        km1 = MAX(1,k-1)  
        maskm1 = 1. _d 0  
        IF (k.LE.1) maskm1 = 0. _d 0  
84    
85  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
86         kkey = (igmkey-1)*Nr + k         kkey = (igmkey-1)*Nr + k
# Line 118  C-- 1rst loop on k : compute Tensor Coef Line 115  C-- 1rst loop on k : compute Tensor Coef
115        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
116         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
117  C      Gradient of Sigma at rVel points  C      Gradient of Sigma at rVel points
118          dSigmaDx(i,j)=op25*( sigmaX(i+1, j ,km1) +sigmaX(i,j,km1)          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 ) )       &                    +sigmaX(i+1, j , k ) +sigmaX(i,j, k ) )
120       &                  *maskC(i,j,k,bi,bj)*maskm1       &                  *maskC(i,j,k,bi,bj)
121          dSigmaDy(i,j)=op25*( sigmaY( i ,j+1,km1) +sigmaY(i,j,km1)          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 ) )       &                    +sigmaY( i ,j+1, k ) +sigmaY(i,j, k ) )
123       &                  *maskC(i,j,k,bi,bj)*maskm1       &                  *maskC(i,j,k,bi,bj)
124          dSigmaDrReal(i,j)=sigmaR(i,j,k)*maskm1          dSigmaDrReal(i,j)=sigmaR(i,j,k)
125         ENDDO         ENDDO
126        ENDDO        ENDDO
127    
# Line 147  C     Calculate slopes for use in tensor Line 144  C     Calculate slopes for use in tensor
144         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
145    
146  C       Mask Iso-neutral slopes  C       Mask Iso-neutral slopes
147          SlopeX(i,j)=SlopeX(i,j)*maskC(i,j,k,bi,bj)*maskm1          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)*maskm1          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)*maskm1          SlopeSqr(i,j)=SlopeSqr(i,j)*maskC(i,j,k,bi,bj)
150    
151         ENDDO         ENDDO
152        ENDDO        ENDDO
153    
154  #ifdef ALLOW_AUTODIFF_TAMC  #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  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 */  #endif /* ALLOW_AUTODIFF_TAMC */
161    
162        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
# Line 219  C-     Limit range that KapGM can take Line 220  C-     Limit range that KapGM can take
220          ENDDO          ENDDO
221         ENDDO         ENDDO
222        ENDIF        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 */  #endif /* GM_VISBECK_VARIABLE_K */
229    
230    
# Line 232  C-- 2nd loop on k : compute Tensor Coeff Line 238  C-- 2nd loop on k : compute Tensor Coeff
238    
239  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
240         kkey = (igmkey-1)*Nr + k         kkey = (igmkey-1)*Nr + k
241  #ifdef GM_NON_UNITY_DIAGONAL  #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  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  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  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
# Line 244  C-    express the Tensor in term of Diff Line 251  C-    express the Tensor in term of Diff
251         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
252          Kgm_tmp = GM_isopycK + GM_skewflx*GM_background_K          Kgm_tmp = GM_isopycK + GM_skewflx*GM_background_K
253  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
254       &          + VisbeckK(i,j,bi,bj)*(1.+GM_skewflx)           &          + VisbeckK(i,j,bi,bj)*(1. _d 0 + GM_skewflx)    
255  #endif  #endif
256          Kwx(i,j,k,bi,bj)= Kgm_tmp*Kwx(i,j,k,bi,bj)          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)          Kwy(i,j,k,bi,bj)= Kgm_tmp*Kwy(i,j,k,bi,bj)
# Line 268  C     Gradient of Sigma at U points Line 275  C     Gradient of Sigma at U points
275       &          *_maskW(i,j,k,bi,bj)       &          *_maskW(i,j,k,bi,bj)
276          dSigmaDrReal(i,j)=op25*( sigmaR(i-1,j, k ) +sigmaR(i,j, k )          dSigmaDrReal(i,j)=op25*( sigmaR(i-1,j, k ) +sigmaR(i,j, k )
277       &                  +maskp1*(sigmaR(i-1,j,kp1) +sigmaR(i,j,kp1)) )       &                  +maskp1*(sigmaR(i-1,j,kp1) +sigmaR(i,j,kp1)) )
278       &          *_maskW(i,j,k,bi,bj)*maskp1       &          *_maskW(i,j,k,bi,bj)
279         ENDDO         ENDDO
280        ENDDO        ENDDO
281    
282  #ifdef ALLOW_AUTODIFF_TAMC  #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  CADJ STORE dSigmaDx(:,:)       = comlev1_bibj_k, key=kkey, byte=isbyte
285  CADJ STORE dSigmaDy(:,:)       = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE dSigmaDy(:,:)       = comlev1_bibj_k, key=kkey, byte=isbyte
286  CADJ STORE dsigmadrreal(:,:)   = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE dsigmadrreal(:,:)   = comlev1_bibj_k, key=kkey, byte=isbyte
# Line 287  C     Calculate slopes for use in tensor Line 295  C     Calculate slopes for use in tensor
295       O             SlopeSqr, taperFct,       O             SlopeSqr, taperFct,
296       I             bi, bj, myThid )       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  #ifdef GM_NON_UNITY_DIAGONAL
308          DO j=1-Oly+1,sNy+Oly-1          DO j=1-Oly+1,sNy+Oly-1
309           DO i=1-Olx+1,sNx+Olx-1           DO i=1-Olx+1,sNx+Olx-1
# Line 300  C     Calculate slopes for use in tensor Line 317  C     Calculate slopes for use in tensor
317           ENDDO           ENDDO
318          ENDDO          ENDDO
319  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
320  # ifndef GM_TAPER_ORIG_CLIPPING  # ifdef GM_EXCLUDE_CLIPPING
321  CADJ STORE Kux(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE Kux(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey, byte=isbyte
322  # endif  # endif
323  #endif  #endif
# Line 341  C     Gradient of Sigma at V points Line 358  C     Gradient of Sigma at V points
358       &          *_maskS(i,j,k,bi,bj)       &          *_maskS(i,j,k,bi,bj)
359          dSigmaDrReal(i,j)=op25*( sigmaR(i,j-1, k ) +sigmaR(i,j, k )          dSigmaDrReal(i,j)=op25*( sigmaR(i,j-1, k ) +sigmaR(i,j, k )
360       &                  +maskp1*(sigmaR(i,j-1,kp1) +sigmaR(i,j,kp1)) )       &                  +maskp1*(sigmaR(i,j-1,kp1) +sigmaR(i,j,kp1)) )
361       &          *_maskS(i,j,k,bi,bj)*maskp1       &          *_maskS(i,j,k,bi,bj)
362         ENDDO         ENDDO
363        ENDDO        ENDDO
364    
# Line 360  C     Calculate slopes for use in tensor Line 377  C     Calculate slopes for use in tensor
377       O             SlopeSqr, taperFct,       O             SlopeSqr, taperFct,
378       I             bi, bj, myThid )       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  #ifdef GM_NON_UNITY_DIAGONAL
389          DO j=1-Oly+1,sNy+Oly-1          DO j=1-Oly+1,sNy+Oly-1
390           DO i=1-Olx+1,sNx+Olx-1           DO i=1-Olx+1,sNx+Olx-1
# Line 373  C     Calculate slopes for use in tensor Line 398  C     Calculate slopes for use in tensor
398           ENDDO           ENDDO
399          ENDDO          ENDDO
400  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
401  # ifndef GM_TAPER_ORIG_CLIPPING  # ifdef GM_EXCLUDE_CLIPPING
402  CADJ STORE Kvy(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE Kvy(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey, byte=isbyte
403  # endif  # endif
404  #endif  #endif

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.22