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

Diff of /MITgcm/pkg/gmredi/gmredi_ytransport.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_YTRANSPORT(        SUBROUTINE GMREDI_YTRANSPORT(
7       I     iMin,iMax,jMin,jMax,bi,bj,K,       I     iMin,iMax,jMin,jMax,bi,bj,K,
8       I     yA,Tracer,tracerIdentity,       I     yA,Tracer,tracerIdentity,
9       U     df,       U     df,
10       I     myThid)       I     myThid)
11  C     /==========================================================\  C     *==========================================================*
12  C     | o SUBROUTINE GMREDI_YTRANSPORT                           |  C     | o SUBROUTINE GMREDI_YTRANSPORT
13  C     |   Add horizontal y transport terms from GM/Redi          |  C     |   Add horizontal y 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 22  C     == GLobal variables == Line 21  C     == GLobal variables ==
21  #include "PARAMS.h"  #include "PARAMS.h"
22  #include "GRID.h"  #include "GRID.h"
23  #include "GMREDI.h"  #include "GMREDI.h"
24    
25  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
26  # include "tamc.h"  # include "tamc.h"
27  # include "tamc_keys.h"  # include "tamc_keys.h"
# 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 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vTrans(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 Kvy(:,:,k,bi,bj) =  CADJ STORE Kvy(:,:,k,bi,bj) =
# Line 125  C--   Area integrated meridional flux Line 127  C--   Area integrated meridional flux
127        IF (GM_ExtraDiag) THEN        IF (GM_ExtraDiag) THEN
128         km1 = MAX(k-1,1)         km1 = MAX(k-1,1)
129         kp1 = MIN(k+1,Nr)         kp1 = MIN(k+1,Nr)
130    
131         DO j=jMin,jMax         DO j=jMin,jMax
132          DO i=iMin,iMax          DO i=iMin,iMax
133    
134  C-      Vertical gradients interpolated to V points  C-      Vertical gradients interpolated to V points
135          dTdz(i,j) =  op5*(          dTdz(i,j) =  op5*(
136       &   +op5*recip_drC(k)*       &   +op5*recip_drC(k)*
# Line 146  C-      Vertical gradients interpolated Line 148  C-      Vertical gradients interpolated
148          ENDDO          ENDDO
149         ENDDO         ENDDO
150  #ifdef GM_AUTODIFF_EXCESSIVE_STORE  #ifdef GM_AUTODIFF_EXCESSIVE_STORE
151  CADJ STORE dtdz(:,:) =  CADJ STORE dtdz(:,:) =
152  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte  CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
153  #endif  #endif
154         DO j=jMin,jMax         DO j=jMin,jMax
155          DO i=iMin,iMax          DO i=iMin,iMax
156  C-      Off-diagonal components of horizontal flux  C-      Off-diagonal components of horizontal flux
157            df(i,j) = df(i,j) - yA(i,j)*Kvz(i,j,k,bi,bj)*dTdz(i,j)            df(i,j) = df(i,j) - yA(i,j)*Kvz(i,j,k,bi,bj)*dTdz(i,j)
158    
159          ENDDO          ENDDO
160         ENDDO         ENDDO
161        ENDIF        ENDIF
162  #endif /* GM_EXTRA_DIAGONAL */    #endif /* GM_EXTRA_DIAGONAL */
163    
164  #ifdef GM_BOLUS_ADVEC  #ifdef GM_BOLUS_ADVEC
165        IF (GM_AdvForm .AND. GM_AdvSeparate        IF (GM_AdvForm .AND. GM_AdvSeparate
# Line 173  C-      Off-diagonal components of horiz Line 175  C-      Off-diagonal components of horiz
175          ENDDO          ENDDO
176         ENDDO         ENDDO
177  #ifdef GM_AUTODIFF_EXCESSIVE_STORE  #ifdef GM_AUTODIFF_EXCESSIVE_STORE
178  CADJ STORE vtrans(:,:) =  CADJ STORE vtrans(:,:) =
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 192  C---+----1----+----2----+----3----+----4 Line 194  C---+----1----+----2----+----3----+----4
194         kp1 = MIN(k+1,Nr)         kp1 = MIN(k+1,Nr)
195         maskp1 = 1.         maskp1 = 1.
196         IF (k.GE.Nr) maskp1 = 0.         IF (k.GE.Nr) maskp1 = 0.
197         DO j=jMin,jMax         DO j=jMin,jMax
198          DO i=iMin,iMax          DO i=iMin,iMax
199           tmp1k(i,j) = dxG(i,j,bi,bj)*( GM_PsiY(i,j,kp1,bi,bj)*maskp1           tmp1k(i,j) = dxG(i,j,bi,bj)*( GM_PsiY(i,j,kp1,bi,bj)*maskp1
200       &                                -GM_PsiY(i,j,k,bi,bj) )       &                                -GM_PsiY(i,j,k,bi,bj) )
201       &                               *maskS(i,j,k,bi,bj)       &                               *maskS(i,j,k,bi,bj)
202       &               *op5*(Tracer(i,j,k,bi,bj)+Tracer(i,j-1,k,bi,bj))       &               *op5*(Tracer(i,j,k,bi,bj)+Tracer(i,j-1,k,bi,bj))
203          ENDDO          ENDDO
204         ENDDO         ENDDO
205         CALL DIAGNOSTICS_FILL(tmp1k,'GM_vbT  ', k,1,2,bi,bj,myThid)         CALL DIAGNOSTICS_FILL(tmp1k,'GM_vbT  ', k,1,2,bi,bj,myThid)
206    

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

  ViewVC Help
Powered by ViewVC 1.1.22