/[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.13 by heimbach, Thu Nov 28 17:30:34 2002 UTC revision 1.14 by heimbach, Fri Jan 10 00:48:39 2003 UTC
# Line 52  C     == Local variables == Line 52  C     == Local variables ==
52        _RL maskp1, maskm1, Kgm_tmp        _RL maskp1, maskm1, Kgm_tmp
53    
54  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
55        _RS deltaH,zero_rs        _RL deltaH,zero_rs
56        PARAMETER(zero_rs=0.)        PARAMETER(zero_rs=0.D0)
57        _RL N2,SN        _RL N2,SN
58        _RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
59  #endif  #endif
# Line 118  C-- 1rst loop on k : compute Tensor Coef Line 118  C-- 1rst loop on k : compute Tensor Coef
118        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
119         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
120  C      Gradient of Sigma at rVel points  C      Gradient of Sigma at rVel points
121          dSigmaDx(i,j)=0.25*( sigmaX(i+1, j ,km1) +sigmaX(i,j,km1)          dSigmaDx(i,j)=op25*( sigmaX(i+1, j ,km1) +sigmaX(i,j,km1)
122       &                    +sigmaX(i+1, j , k ) +sigmaX(i,j, k ) )       &                    +sigmaX(i+1, j , k ) +sigmaX(i,j, k ) )
123       &                  *maskC(i,j,k,bi,bj)*maskm1       &                  *maskC(i,j,k,bi,bj)*maskm1
124          dSigmaDy(i,j)=0.25*( sigmaY( i ,j+1,km1) +sigmaY(i,j,km1)          dSigmaDy(i,j)=op25*( sigmaY( i ,j+1,km1) +sigmaY(i,j,km1)
125       &                    +sigmaY( i ,j+1, k ) +sigmaY(i,j, k ) )       &                    +sigmaY( i ,j+1, k ) +sigmaY(i,j, k ) )
126       &                  *maskC(i,j,k,bi,bj)*maskm1       &                  *maskC(i,j,k,bi,bj)*maskm1
127          dSigmaDrReal(i,j)=sigmaR(i,j,k)*maskm1          dSigmaDrReal(i,j)=sigmaR(i,j,k)*maskm1
# Line 155  C       Mask Iso-neutral slopes Line 155  C       Mask Iso-neutral slopes
155        ENDDO        ENDDO
156    
157  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
158  CADJ STORE SlopeX(:,:)          = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE SlopeSqr(:,:)     = comlev1_bibj_k, key=kkey, byte=isbyte
 CADJ STORE SlopeY(:,:)          = comlev1_bibj_k, key=kkey, byte=isbyte  
 CADJ STORE SlopeSqr(:,:)        = comlev1_bibj_k, key=kkey, byte=isbyte  
 CADJ STORE taperFct(:,:)        = comlev1_bibj_k, key=kkey, byte=isbyte  
 #ifdef GM_VISBECK_VARIABLE_K  
 CADJ STORE dSigmaDrReal(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte  
 #endif  
159  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
160    
161        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
# Line 238  C-- 2nd loop on k : compute Tensor Coeff Line 232  C-- 2nd loop on k : compute Tensor Coeff
232    
233  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
234         kkey = (igmkey-1)*Nr + k         kkey = (igmkey-1)*Nr + k
235  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_NON_UNITY_DIAGONAL
236  CADJ STORE Kwx(:,:,k,bi,bj) = comlev1_bibj, key=kkey, byte=isbyte  CADJ STORE Kwx(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
237  CADJ STORE Kwy(:,:,k,bi,bj) = comlev1_bibj, key=kkey, byte=isbyte  CADJ STORE Kwy(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
238  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bibj, key=kkey, byte=isbyte  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
239  #endif  #endif
240  #endif  #endif
241    
# Line 261  C-    express the Tensor in term of Diff Line 255  C-    express the Tensor in term of Diff
255       &                    )*Kwz(i,j,k,bi,bj)       &                    )*Kwz(i,j,k,bi,bj)
256         ENDDO         ENDDO
257        ENDDO        ENDDO
 #ifdef ALLOW_AUTODIFF_TAMC  
 #ifdef GM_VISBECK_VARIABLE_K  
 CADJ STORE VisbeckK(:,:,bi,bj) =  
 CADJ &     comlev1_bibj, key=kkey, byte=isbyte  
 #endif  
 #endif  
258    
259  #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )  #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
260    
# Line 275  C     Gradient of Sigma at U points Line 263  C     Gradient of Sigma at U points
263         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
264          dSigmaDx(i,j)=sigmaX(i,j,k)          dSigmaDx(i,j)=sigmaX(i,j,k)
265       &          *_maskW(i,j,k,bi,bj)       &          *_maskW(i,j,k,bi,bj)
266          dSigmaDy(i,j)=0.25*( sigmaY(i-1,j+1,k) +sigmaY(i,j+1,k)          dSigmaDy(i,j)=op25*( sigmaY(i-1,j+1,k) +sigmaY(i,j+1,k)
267       &                      +sigmaY(i-1, j ,k) +sigmaY(i, j ,k) )       &                      +sigmaY(i-1, j ,k) +sigmaY(i, j ,k) )
268       &          *_maskW(i,j,k,bi,bj)       &          *_maskW(i,j,k,bi,bj)
269          dSigmaDrReal(i,j)=0.25*( sigmaR(i-1,j, k ) +sigmaR(i,j, k )          dSigmaDrReal(i,j)=op25*( sigmaR(i-1,j, k ) +sigmaR(i,j, k )
270       &                  +maskp1*(sigmaR(i-1,j,kp1) +sigmaR(i,j,kp1)) )       &                  +maskp1*(sigmaR(i-1,j,kp1) +sigmaR(i,j,kp1)) )
271       &          *_maskW(i,j,k,bi,bj)       &          *_maskW(i,j,k,bi,bj)*maskp1
272         ENDDO         ENDDO
273        ENDDO        ENDDO
274    
# Line 305  C     Calculate slopes for use in tensor Line 293  C     Calculate slopes for use in tensor
293            Kux(i,j,k,bi,bj) =            Kux(i,j,k,bi,bj) =
294       &     ( GM_isopycK       &     ( GM_isopycK
295  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
296       &     +0.5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))       &     +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))
297  #endif  #endif
298       &     )       &     )
299       &     *taperFct(i,j)       &     *taperFct(i,j)
# Line 335  CADJ STORE taperFct(:,:)     = comlev1_b Line 323  CADJ STORE taperFct(:,:)     = comlev1_b
323            Kuz(i,j,k,bi,bj) =            Kuz(i,j,k,bi,bj) =
324       &     ( GM_isopycK - GM_skewflx*GM_background_K       &     ( GM_isopycK - GM_skewflx*GM_background_K
325  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
326       &     +0.5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))*GM_advect       &     +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj))*GM_advect
327  #endif  #endif
328       &     )*SlopeX(i,j)*taperFct(i,j)       &     )*SlopeX(i,j)*taperFct(i,j)
329           ENDDO           ENDDO
# Line 346  CADJ STORE taperFct(:,:)     = comlev1_b Line 334  CADJ STORE taperFct(:,:)     = comlev1_b
334  C     Gradient of Sigma at V points  C     Gradient of Sigma at V points
335        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
336         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
337          dSigmaDx(i,j)=0.25*( sigmaX(i, j ,k) +sigmaX(i+1, j ,k)          dSigmaDx(i,j)=op25*( sigmaX(i, j ,k) +sigmaX(i+1, j ,k)
338       &                    +sigmaX(i,j-1,k) +sigmaX(i+1,j-1,k) )       &                    +sigmaX(i,j-1,k) +sigmaX(i+1,j-1,k) )
339       &          *_maskS(i,j,k,bi,bj)       &          *_maskS(i,j,k,bi,bj)
340          dSigmaDy(i,j)=sigmaY(i,j,k)          dSigmaDy(i,j)=sigmaY(i,j,k)
341       &          *_maskS(i,j,k,bi,bj)       &          *_maskS(i,j,k,bi,bj)
342          dSigmaDrReal(i,j)=0.25*( sigmaR(i,j-1, k ) +sigmaR(i,j, k )          dSigmaDrReal(i,j)=op25*( sigmaR(i,j-1, k ) +sigmaR(i,j, k )
343       &                  +maskp1*(sigmaR(i,j-1,kp1) +sigmaR(i,j,kp1)) )       &                  +maskp1*(sigmaR(i,j-1,kp1) +sigmaR(i,j,kp1)) )
344       &          *_maskS(i,j,k,bi,bj)       &          *_maskS(i,j,k,bi,bj)*maskp1
345         ENDDO         ENDDO
346        ENDDO        ENDDO
347    
# Line 378  C     Calculate slopes for use in tensor Line 366  C     Calculate slopes for use in tensor
366            Kvy(i,j,k,bi,bj) =            Kvy(i,j,k,bi,bj) =
367       &     ( GM_isopycK       &     ( GM_isopycK
368  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
369       &     +0.5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))       &     +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))
370  #endif  #endif
371       &     )       &     )
372       &     *taperFct(i,j)       &     *taperFct(i,j)
# Line 408  CADJ STORE taperFct(:,:)     = comlev1_b Line 396  CADJ STORE taperFct(:,:)     = comlev1_b
396            Kvz(i,j,k,bi,bj) =            Kvz(i,j,k,bi,bj) =
397       &     ( GM_isopycK - GM_skewflx*GM_background_K       &     ( GM_isopycK - GM_skewflx*GM_background_K
398  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
399       &     +0.5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))*GM_advect       &     +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i,j-1,bi,bj))*GM_advect
400  #endif  #endif
401       &     )*SlopeY(i,j)*taperFct(i,j)       &     )*SlopeY(i,j)*taperFct(i,j)
402           ENDDO           ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22