/[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.32 by heimbach, Fri Mar 28 18:48:05 2008 UTC revision 1.33 by jmc, Tue Oct 21 22:10:55 2008 UTC
# Line 5  C $Name$ Line 5  C $Name$
5  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
6  # include "KPP_OPTIONS.h"  # include "KPP_OPTIONS.h"
7  #endif  #endif
 #undef OLD_VISBECK_CALC  
8    
9  CBOP  CBOP
10  C     !ROUTINE: GMREDI_CALC_TENSOR  C     !ROUTINE: GMREDI_CALC_TENSOR
# Line 87  C     == Local variables == Line 86  C     == Local variables ==
86    
87  #ifdef GM_VISBECK_VARIABLE_K  #ifdef GM_VISBECK_VARIABLE_K
88  #ifdef OLD_VISBECK_CALC  #ifdef OLD_VISBECK_CALC
       _RL deltaH,zero_rs  
       PARAMETER(zero_rs=0.D0)  
       _RL N2,SN  
89        _RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL Ssq(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
90  #else  #else
91        _RL dSigmaH        _RL dSigmaH
92        _RL deltaH, integrDepth        _RL Sloc, M2loc
       _RL Sloc, M2loc, SNloc  
93  #endif  #endif
94          _RL deltaH, integrDepth
95          _RL N2loc, SNloc
96  #endif  #endif
97    
98  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 310  C       If positive we limit this to the Line 307  C       If positive we limit this to the
307  C       Now we convert deltaH to a non-dimensional fraction  C       Now we convert deltaH to a non-dimensional fraction
308             deltaH = deltaH/( integrDepth+rC(1) )             deltaH = deltaH/( integrDepth+rC(1) )
309    
310  C--      compute: ( M^2 * S )^1/2   (= M^2 / N since S=M^2/N^2 )  C--      compute: ( M^2 * S )^1/2   (= S*N since S=M^2/N^2 )
311             dSigmaH = dSigmaDx(i,j)*dSigmaDx(i,j)             dSigmaH = dSigmaDx(i,j)*dSigmaDx(i,j)
312       &             + dSigmaDy(i,j)*dSigmaDy(i,j)       &             + dSigmaDy(i,j)*dSigmaDy(i,j)
313             IF ( dSigmaH .GT. 0. _d 0 ) THEN             IF ( dSigmaH .GT. 0. _d 0 ) THEN
# Line 321  C-       compute slope, limited by GM_ma Line 318  C-       compute slope, limited by GM_ma
318               ELSE               ELSE
319                Sloc = GM_maxSlope                Sloc = GM_maxSlope
320               ENDIF               ENDIF
321               M2loc = Gravity*recip_RhoConst*dSigmaH               M2loc = gravity*recip_rhoConst*dSigmaH
322               SNloc = SQRT( Sloc*M2loc )  c            SNloc = SQRT( Sloc*M2loc )
323                 N2loc = -gravity*recip_rhoConst*dSigmaDr(i,j)
324                 IF ( N2loc.GT.0. _d 0 ) THEN
325                   SNloc = Sloc*SQRT(N2loc)
326                 ELSE
327                   SNloc = 0. _d 0
328                 ENDIF
329             ELSE             ELSE
330               SNloc = 0. _d 0               SNloc = 0. _d 0
331             ENDIF             ENDIF
# Line 389  C       which is used in the "variable K Line 392  C       which is used in the "variable K
392  C       Distance between interface above layer and the integration depth  C       Distance between interface above layer and the integration depth
393          deltaH=abs(GM_Visbeck_depth)-abs(rF(k))          deltaH=abs(GM_Visbeck_depth)-abs(rF(k))
394  C       If positive we limit this to the layer thickness  C       If positive we limit this to the layer thickness
395          deltaH=min(deltaH,drF(k))          integrDepth = drF(k)
396            deltaH=min(deltaH,integrDepth)
397  C       If negative then we are below the integration level  C       If negative then we are below the integration level
398          deltaH=max(deltaH,zero_rs)          deltaH=max(deltaH, 0. _d 0)
399  C       Now we convert deltaH to a non-dimensional fraction  C       Now we convert deltaH to a non-dimensional fraction
400          deltaH=deltaH/GM_Visbeck_depth          deltaH=deltaH/GM_Visbeck_depth
401    
         IF (K.eq.2) VisbeckK(i,j,bi,bj)=0.  
402          IF ( Ssq(i,j).NE.0. .AND. dSigmaDr(i,j).NE.0. ) THEN          IF ( Ssq(i,j).NE.0. .AND. dSigmaDr(i,j).NE.0. ) THEN
403           N2= -Gravity*recip_RhoConst*dSigmaDr(i,j)           N2loc = -gravity*recip_rhoConst*dSigmaDr(i,j)
404           SN=sqrt(Ssq(i,j)*N2)           SNloc = SQRT(Ssq(i,j)*N2loc )
405           VisbeckK(i,j,bi,bj)=VisbeckK(i,j,bi,bj)+deltaH           VisbeckK(i,j,bi,bj) = VisbeckK(i,j,bi,bj)
406       &      *GM_Visbeck_alpha*GM_Visbeck_length*GM_Visbeck_length*SN       &       +deltaH*GM_Visbeck_alpha
407         &              *GM_Visbeck_length*GM_Visbeck_length*SNloc
408          ENDIF          ENDIF
409    
410          ENDDO          ENDDO
# Line 450  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bi Line 454  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bi
454  #else  #else
455           Kgm_tmp = GM_isopycK           Kgm_tmp = GM_isopycK
456  #endif  #endif
457  #if (defined (ALLOW_AUTODIFF) && defined (ALLOW_KAPGM_CONTROL))  #ifdef ALLOW_KAPGM_CONTROL
458       &           + GM_skewflx*kapgm(i,j,k,bi,bj)       &           + GM_skewflx*kapgm(i,j,k,bi,bj)
459  #else  #else
460       &           + GM_skewflx*GM_background_K       &           + GM_skewflx*GM_background_K
# Line 461  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bi Line 465  CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bi
465           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)
466           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)
467  #ifdef ALLOW_KAPREDI_CONTROL  #ifdef ALLOW_KAPREDI_CONTROL
468           Kwz(i,j,k,bi,bj)= ( kapredi(i,j,k,bi,bj)           Kwz(i,j,k,bi,bj)= ( kapredi(i,j,k,bi,bj)
469  #else  #else
470           Kwz(i,j,k,bi,bj)= ( GM_isopycK           Kwz(i,j,k,bi,bj)= ( GM_isopycK
471  #endif  #endif
# Line 609  CADJ STORE taperFct(:,:)     = comlev1_b Line 613  CADJ STORE taperFct(:,:)     = comlev1_b
613  #else  #else
614       &     ( GM_isopycK       &     ( GM_isopycK
615  #endif  #endif
616  #if (defined (ALLOW_AUTODIFF) && defined (ALLOW_KAPGM_CONTROL))  #ifdef ALLOW_KAPGM_CONTROL
617       &     - GM_skewflx*kapgm(i,j,k,bi,bj)       &     - GM_skewflx*kapgm(i,j,k,bi,bj)
618  #else  #else
619       &     - GM_skewflx*GM_background_K       &     - GM_skewflx*GM_background_K
# Line 795  CADJ STORE taperFct(:,:)     = comlev1_b Line 799  CADJ STORE taperFct(:,:)     = comlev1_b
799  #ifdef ALLOW_KAPREDI_CONTROL  #ifdef ALLOW_KAPREDI_CONTROL
800       &     ( kapredi(i,j,k,bi,bj)       &     ( kapredi(i,j,k,bi,bj)
801  #else  #else
802       &     ( GM_isopycK       &     ( GM_isopycK
803  #endif  #endif
804  #if (defined (ALLOW_AUTODIFF) && defined (ALLOW_KAPGM_CONTROL))  #ifdef ALLOW_KAPGM_CONTROL
805       &     - GM_skewflx*kapgm(i,j,k,bi,bj)       &     - GM_skewflx*kapgm(i,j,k,bi,bj)
806  #else  #else
807       &     - GM_skewflx*GM_background_K       &     - GM_skewflx*GM_background_K

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.33

  ViewVC Help
Powered by ViewVC 1.1.22