/[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.2 by heimbach, Mon Jan 8 20:11:04 2001 UTC revision 1.7 by heimbach, Tue Aug 21 15:27:19 2001 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    C $Name$
3    
4  #include "GMREDI_OPTIONS.h"  #include "GMREDI_OPTIONS.h"
5    
# Line 96  C       Mask Iso-neutral slopes Line 97  C       Mask Iso-neutral slopes
97          Ssq=SlopeX(i,j)*SlopeX(i,j)+SlopeY(i,j)*SlopeY(i,j)          Ssq=SlopeX(i,j)*SlopeX(i,j)+SlopeY(i,j)*SlopeY(i,j)
98    
99  C       Components of Redi/GM tensor  C       Components of Redi/GM tensor
100          Kwx(i,j,k,myThid)=2.*SlopeX(i,j)          Kwx(i,j,k,bi,bj)=2.*SlopeX(i,j)
101          Kwy(i,j,k,myThid)=2.*SlopeY(i,j)          Kwy(i,j,k,bi,bj)=2.*SlopeY(i,j)
102          Kwz(i,j,k,myThid)=Ssq          Kwz(i,j,k,bi,bj)=Ssq
103    
104  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
105  C--     Depth average of M^2/N^2 * N  C--     Depth average of M^2/N^2 * N
# Line 114  C       If negative then we are below th Line 115  C       If negative then we are below th
115  C       Now we convert deltaH to a non-dimensional fraction  C       Now we convert deltaH to a non-dimensional fraction
116          deltaH=deltaH/GM_Visbeck_depth          deltaH=deltaH/GM_Visbeck_depth
117    
118          if (K.eq.2) VisbeckK(i,j,myThid)=0.          if (K.eq.2) VisbeckK(i,j,bi,bj)=0.
119  Calt?   if (dSigmaDrReal(i,j).NE.0.) then  Calt?   if (dSigmaDrReal(i,j).NE.0.) then
120  Calt?    N2=(-Gravity*recip_Rhonil)*dSigmaDrReal(i,j)  Calt?    N2=(-Gravity*recip_Rhonil)*dSigmaDrReal(i,j)
121          if (dRdSigmaLtd(i,j).NE.0.) then          if ( dRdSigmaLtd(i,j).NE.0. .AND. Ssq.NE.0. ) then
122           N2=(-Gravity*recip_Rhonil)/dRdSigmaLtd(i,j)           N2=(-Gravity*recip_Rhonil)/dRdSigmaLtd(i,j)
123           SN=sqrt(Ssq*N2)           SN=sqrt(Ssq*N2)
124           VisbeckK(i,j,myThid)=VisbeckK(i,j,myThid)+deltaH           VisbeckK(i,j,bi,bj)=VisbeckK(i,j,bi,bj)+deltaH
125       &      *GM_Visbeck_alpha*GM_Visbeck_length*GM_Visbeck_length*SN       &      *GM_Visbeck_alpha*GM_Visbeck_length*GM_Visbeck_length*SN
126          endif          endif
127    
128  C       Limit range that KapGM can take  C       Limit range that KapGM can take
129          VisbeckK(i,j,myThid)=          VisbeckK(i,j,bi,bj)=
130       &     min(VisbeckK(i,j,myThid),GM_Visbeck_maxval_K)       &     min(VisbeckK(i,j,bi,bj),GM_Visbeck_maxval_K)
131    
132  #endif /* GM_VISBECK_VARIABLE_K */  #endif /* GM_VISBECK_VARIABLE_K */
133    
134    
135  #ifdef INCLUDE_DIAGNOSTICS_INTERFACE_CODE  #ifdef ALLOW_TIMEAVE
136  C--     Time-average  C--     Time-average
137          GM_Kwx_T(i,j,k,bi,bj)=GM_Kwx_T(i,j,k,bi,bj)          GM_Kwx_T(i,j,k,bi,bj)=GM_Kwx_T(i,j,k,bi,bj)
138       &                       +Kwx(i,j,k,myThid)*deltaTclock       &                       +Kwx(i,j,k,bi,bj)*deltaTclock
139          GM_Kwy_T(i,j,k,bi,bj)=GM_Kwy_T(i,j,k,bi,bj)          GM_Kwy_T(i,j,k,bi,bj)=GM_Kwy_T(i,j,k,bi,bj)
140       &                       +Kwy(i,j,k,myThid)*deltaTclock       &                       +Kwy(i,j,k,bi,bj)*deltaTclock
141          GM_Kwz_T(i,j,k,bi,bj)=GM_Kwz_T(i,j,k,bi,bj)          GM_Kwz_T(i,j,k,bi,bj)=GM_Kwz_T(i,j,k,bi,bj)
142       &                       +Kwz(i,j,k,myThid)*deltaTclock       &                       +Kwz(i,j,k,bi,bj)*deltaTclock
143  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
144          IF (K.EQ.Nr)          IF (K.EQ.Nr)
145       &  Visbeck_K_T(i,j,bi,bj)=Visbeck_K_T(i,j,bi,bj)       &  Visbeck_K_T(i,j,bi,bj)=Visbeck_K_T(i,j,bi,bj)
146       &                       +VisbeckK(i,j,myThid)*deltaTclock       &                       +VisbeckK(i,j,bi,bj)*deltaTclock
147  #endif  #endif
148    #endif /* ALLOW_TIMEAVE */
149         ENDDO         ENDDO
150        ENDDO        ENDDO
       GM_TimeAve(k,bi,bj)=GM_TimeAve(k,bi,bj)+deltaTclock  
 #endif /* INCLUDE_DIAGNOSTICS_INTERFACE_CODE */  
151    
152    #ifdef ALLOW_TIMEAVE
153          GM_TimeAve(k,bi,bj)=GM_TimeAve(k,bi,bj)+deltaTclock
154    #endif
155    
156    
157  #ifdef GM_NON_UNITY_DIAGONAL  #ifdef GM_NON_UNITY_DIAGONAL
# Line 176  C     Calculate slopes for use in tensor Line 179  C     Calculate slopes for use in tensor
179    
180        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
181         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
182          Kux(i,j,k,myThid)=(dSigmaDrReal(i,j)*dRdSigmaLtd(i,j))**2          Kux(i,j,k,bi,bj)=(dSigmaDrReal(i,j)*dRdSigmaLtd(i,j))**2
183         ENDDO         ENDDO
184        ENDDO        ENDDO
185    
# Line 204  C     Calculate slopes for use in tensor Line 207  C     Calculate slopes for use in tensor
207    
208        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
209         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
210          Kvy(i,j,k,myThid)=(dSigmaDrReal(i,j)*dRdSigmaLtd(i,j))**2          Kvy(i,j,k,bi,bj)=(dSigmaDrReal(i,j)*dRdSigmaLtd(i,j))**2
211         ENDDO         ENDDO
212        ENDDO        ENDDO
213    
# Line 252  CEndOfInterface Line 255  CEndOfInterface
255    
256        DO j=1-Oly+1,sNy+Oly-1        DO j=1-Oly+1,sNy+Oly-1
257         DO i=1-Olx+1,sNx+Olx-1         DO i=1-Olx+1,sNx+Olx-1
258          Kwx(i,j,k,myThid) = 0.0          Kwx(i,j,k,bi,bj) = 0.0
259          Kwy(i,j,k,myThid) = 0.0          Kwy(i,j,k,bi,bj) = 0.0
260          Kwz(i,j,k,myThid) = 0.0          Kwz(i,j,k,bi,bj) = 0.0
261         ENDDO         ENDDO
262        ENDDO        ENDDO
263  #endif /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22