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

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

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

revision 1.17 by gforget, Fri May 30 02:50:17 2008 UTC revision 1.18 by jmc, Wed Jan 20 01:20:29 2010 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "GMREDI_OPTIONS.h"  #include "GMREDI_OPTIONS.h"
5    
6        subroutine GMREDI_XTRANSPORT(        SUBROUTINE GMREDI_XTRANSPORT(
7       I     iMin,iMax,jMin,jMax,bi,bj,K,       I     iMin,iMax,jMin,jMax,bi,bj,K,
8       I     xA,Tracer,tracerIdentity,       I     xA,Tracer,tracerIdentity,
9       U     df,       U     df,
10       I     myThid)       I     myThid)
11  C     /==========================================================\  C     *==========================================================*
12  C     | o SUBROUTINE GMREDI_XTRANSPORT                           |  C     | o SUBROUTINE GMREDI_XTRANSPORT
13  C     |   Add horizontal x transport terms from GM/Redi          |  C     |   Add horizontal x transport terms from GM/Redi
14  C     |   parameterization.                                      |  C     |   parameterization.
15  C     |==========================================================|  C     *==========================================================*
 C     \==========================================================/  
16        IMPLICIT NONE        IMPLICIT NONE
17    
18  C     == GLobal variables ==  C     == GLobal variables ==
# Line 49  C     df               - Diffusive flux Line 48  C     df               - Diffusive flux
48  C     == Local variables ==  C     == Local variables ==
49  C     I, J - Loop counters  C     I, J - Loop counters
50        INTEGER I, J        INTEGER I, J
51        INTEGER km1,kp1  #if ( defined (GM_EXTRA_DIAGONAL) || defined (GM_BOLUS_ADVEC) )
52        _RL maskp1        INTEGER kp1
53    #endif
54  #ifdef GM_EXTRA_DIAGONAL  #ifdef GM_EXTRA_DIAGONAL
55          INTEGER km1
56        _RL dTdz  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL dTdz  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
57  #endif  #endif
58  #ifdef GM_BOLUS_ADVEC  #ifdef GM_BOLUS_ADVEC
59          _RL maskp1
60        _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
 #endif  
61  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
62        LOGICAL  DIAGNOSTICS_IS_ON        LOGICAL  DIAGNOSTICS_IS_ON
63        EXTERNAL DIAGNOSTICS_IS_ON        EXTERNAL DIAGNOSTICS_IS_ON
64        _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
65  #endif  #endif
66    #endif /* GM_BOLUS_ADVEC */
67    
68  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
69            act0 = tracerIdentity - 1            act0 = tracerIdentity - 1
# Line 73  C     I, J - Loop counters Line 75  C     I, J - Loop counters
75            act3 = myThid - 1            act3 = myThid - 1
76            max3 = nTx*nTy            max3 = nTx*nTy
77            act4 = ikey_dynamics - 1            act4 = ikey_dynamics - 1
78            igadkey = (act0 + 1)            igadkey = (act0 + 1)
79       &                      + act1*max0       &                      + act1*max0
80       &                      + act2*max0*max1       &                      + act2*max0*max1
81       &                      + act3*max0*max1*max2       &                      + act3*max0*max1*max2
# Line 86  C     I, J - Loop counters Line 88  C     I, J - Loop counters
88  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
89    
90        IF (useGMRedi) THEN        IF (useGMRedi) THEN
91    
92  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
93  # ifdef GM_NON_UNITY_DIAGONAL  # ifdef GM_NON_UNITY_DIAGONAL
94  CADJ STORE Kux(:,:,k,bi,bj) =  CADJ STORE Kux(:,:,k,bi,bj) =
95  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
96  # endif  # endif
97  # ifdef GM_EXTRA_DIAGONAL  # ifdef GM_EXTRA_DIAGONAL
# Line 141  C-        Vertical gradients interpolate Line 143  C-        Vertical gradients interpolate
143       &           (Tracer(i-1,j,k,bi,bj)-Tracer(i-1,j,kp1,bi,bj))       &           (Tracer(i-1,j,k,bi,bj)-Tracer(i-1,j,kp1,bi,bj))
144       &        +maskC( i ,j,kp1,bi,bj)*       &        +maskC( i ,j,kp1,bi,bj)*
145       &           (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj))       &           (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj))
146       &       )      )             &       )      )
147    
148    
149          ENDDO          ENDDO
150         ENDDO         ENDDO
151  #ifdef GM_AUTODIFF_EXCESSIVE_STORE  #ifdef GM_AUTODIFF_EXCESSIVE_STORE
152  CADJ STORE dtdz(:,:) =  CADJ STORE dtdz(:,:) =
153  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
154  #endif  #endif
155         DO j=jMin,jMax         DO j=jMin,jMax
# Line 173  C-        Off-diagonal components of hor Line 175  C-        Off-diagonal components of hor
175          ENDDO          ENDDO
176         ENDDO         ENDDO
177  #ifdef GM_AUTODIFF_EXCESSIVE_STORE  #ifdef GM_AUTODIFF_EXCESSIVE_STORE
178  CADJ STORE utrans(:,:) =  CADJ STORE utrans(:,:) =
179  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
180  #endif  #endif
181         DO j=jMin,jMax         DO j=jMin,jMax
# Line 184  CADJ &     comlev1_gmredi_k_gad, key=kke Line 186  CADJ &     comlev1_gmredi_k_gad, key=kke
186         ENDDO         ENDDO
187        ENDIF        ENDIF
188    
 #ifdef ALLOW_DIAGNOSTICS  
189  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
190        IF ( useDiagnostics  
191    #ifdef ALLOW_DIAGNOSTICS
192          IF ( useDiagnostics
193       &     .AND. DIAGNOSTICS_IS_ON('GM_ubT  ', myThid )       &     .AND. DIAGNOSTICS_IS_ON('GM_ubT  ', myThid )
194       &     .AND. tracerIdentity .EQ. 1) THEN       &     .AND. tracerIdentity .EQ. 1) THEN
195         kp1 = MIN(k+1,Nr)         kp1 = MIN(k+1,Nr)

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

  ViewVC Help
Powered by ViewVC 1.1.22