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

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

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

revision 1.11 by heimbach, Fri Jan 10 00:48:39 2003 UTC revision 1.12 by heimbach, Tue Jan 21 19:34:13 2003 UTC
# Line 23  C     == GLobal variables == Line 23  C     == GLobal variables ==
23  #include "GRID.h"  #include "GRID.h"
24  #include "GMREDI.h"  #include "GMREDI.h"
25    
26    #ifdef ALLOW_AUTODIFF_TAMC
27    #include "tamc.h"
28    #include "tamc_keys.h"
29    #endif /* ALLOW_AUTODIFF_TAMC */
30    
31  C     == Routine arguments ==  C     == Routine arguments ==
32  C     iMin,iMax,jMin,  - Range of points for which calculation  C     iMin,iMax,jMin,  - Range of points for which calculation
33  C     jMax,bi,bj,k       results will be set.  C     jMax,bi,bj,k       results will be set.
# Line 40  C     df               - Diffusive flux Line 45  C     df               - Diffusive flux
45  C     == Local variables ==  C     == Local variables ==
46  C     I, J - Loop counters  C     I, J - Loop counters
47        INTEGER I, J        INTEGER I, J
48        _RL dTdx,dTdy        _RL dTdx  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49        _RL rTrans        _RL dTdy  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50    #ifdef GM_BOLUS_ADVEC
51          _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
52    #endif
53    
54    #ifdef ALLOW_AUTODIFF_TAMC
55              act0 = tracerIdentity - 1
56              max0 = maxpass
57              act1 = bi - myBxLo(myThid)
58              max1 = myBxHi(myThid) - myBxLo(myThid) + 1
59              act2 = bj - myByLo(myThid)
60              max2 = myByHi(myThid) - myByLo(myThid) + 1
61              act3 = myThid - 1
62              max3 = nTx*nTy
63              act4 = ikey_dynamics - 1
64              igadkey = (act0 + 1)
65         &                      + act1*max0
66         &                      + act2*max0*max1
67         &                      + act3*max0*max1*max2
68         &                      + act4*max0*max1*max2*max3
69              kkey = (igadkey-1)*Nr + k
70              if (tracerIdentity.GT.maxpass)
71         &         STOP 'maxpass seems smaller than tracerIdentity'
72    #endif /* ALLOW_AUTODIFF_TAMC */
73    
74  C     Surface flux is zero  C     Surface flux is zero
75        IF (useGMRedi .AND. K.GT.1) THEN        IF (useGMRedi .AND. K.GT.1) THEN
76    
77    C-      Horizontal gradients interpolated to W points
78        DO j=jMin,jMax        DO j=jMin,jMax
79         DO i=iMin,iMax         DO i=iMin,iMax
80            dTdx(i,j) = op5*(
 C-      Horizontal gradients interpolated to W points  
         dTdx = op5*(  
81       &   +op5*(_maskW(i+1,j,k,bi,bj)       &   +op5*(_maskW(i+1,j,k,bi,bj)
82       &         *_recip_dxC(i+1,j,bi,bj)*       &         *_recip_dxC(i+1,j,bi,bj)*
83       &           (Tracer(i+1,j,k,bi,bj)-Tracer(i,j,k,bi,bj))       &           (Tracer(i+1,j,k,bi,bj)-Tracer(i,j,k,bi,bj))
# Line 65  C-      Horizontal gradients interpolate Line 92  C-      Horizontal gradients interpolate
92       &           (Tracer(i,j,k-1,bi,bj)-Tracer(i-1,j,k-1,bi,bj)))       &           (Tracer(i,j,k-1,bi,bj)-Tracer(i-1,j,k-1,bi,bj)))
93       &       )       &       )
94    
95          dTdy = op5*(          dTdy(i,j) = op5*(
96       &   +op5*(_maskS(i,j,k,bi,bj)       &   +op5*(_maskS(i,j,k,bi,bj)
97       &         *_recip_dyC(i,j,bi,bj)*       &         *_recip_dyC(i,j,bi,bj)*
98       &           (Tracer(i,j,k,bi,bj)-Tracer(i,j-1,k,bi,bj))       &           (Tracer(i,j,k,bi,bj)-Tracer(i,j-1,k,bi,bj))
# Line 79  C-      Horizontal gradients interpolate Line 106  C-      Horizontal gradients interpolate
106       &         *_recip_dyC(i,j+1,bi,bj)*       &         *_recip_dyC(i,j+1,bi,bj)*
107       &           (Tracer(i,j+1,k-1,bi,bj)-Tracer(i,j,k-1,bi,bj)))       &           (Tracer(i,j+1,k-1,bi,bj)-Tracer(i,j,k-1,bi,bj)))
108       &       )       &       )
109           ENDDO
110          ENDDO
111    
112    #ifdef GM_AUTODIFF_EXCESSIVE_STORE
113    CADJ STORE dTdx(:,:) =
114    CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
115    CADJ STORE dTdy(:,:) =
116    CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
117    #endif
118    
119  C-      Off-diagonal components of vertical flux  C-      Off-diagonal components of vertical flux
120          DO j=jMin,jMax
121           DO i=iMin,iMax
122          df(i,j) = df(i,j)          df(i,j) = df(i,j)
123       &      - _rA(i,j,bi,bj)       &      - _rA(i,j,bi,bj)
124       &        *( Kwx(i,j,k,bi,bj)*dTdx +Kwy(i,j,k,bi,bj)*dTdy )       &        *( Kwx(i,j,k,bi,bj)*dTdx(i,j)+Kwy(i,j,k,bi,bj)*dTdy(i,j) )
125    
126         ENDDO         ENDDO
127        ENDDO        ENDDO
# Line 92  C-      Off-diagonal components of verti Line 130  C-      Off-diagonal components of verti
130        IF (GM_AdvForm .AND. GM_AdvSeparate) THEN        IF (GM_AdvForm .AND. GM_AdvSeparate) THEN
131         DO j=jMin,jMax         DO j=jMin,jMax
132          DO i=iMin,iMax          DO i=iMin,iMax
133           rTrans =           rTrans(i,j) =
134       &      dyG(i+1,j,bi,bj)*GM_PsiX(i+1,j,k,bi,bj)       &      dyG(i+1,j,bi,bj)*GM_PsiX(i+1,j,k,bi,bj)
135       &     -dyG( i ,j,bi,bj)*GM_PsiX( i ,j,k,bi,bj)       &     -dyG( i ,j,bi,bj)*GM_PsiX( i ,j,k,bi,bj)
136       &     +dxG(i,j+1,bi,bj)*GM_PsiY(i,j+1,k,bi,bj)       &     +dxG(i,j+1,bi,bj)*GM_PsiY(i,j+1,k,bi,bj)
137       &     -dxG(i, j ,bi,bj)*GM_PsiY(i, j ,k,bi,bj)       &     -dxG(i, j ,bi,bj)*GM_PsiY(i, j ,k,bi,bj)
138            ENDDO
139           ENDDO
140    #ifdef GM_AUTODIFF_EXCESSIVE_STORE
141    CADJ STORE rtrans(:,:) =
142    CADJ &     comlev1_gmredi_k_gad, key=kkey, byte=isbyte
143    #endif
144           DO j=jMin,jMax
145            DO i=iMin,iMax
146           df(i,j) = df(i,j)           df(i,j) = df(i,j)
147       &    +rTrans*op5       &    +rTrans(i,j)*op5
148       &           *(Tracer(i,j,k,bi,bj)+Tracer(i,j,k-1,bi,bj))       &                *(Tracer(i,j,k,bi,bj)+Tracer(i,j,k-1,bi,bj))
149          ENDDO          ENDDO
150         ENDDO         ENDDO
151        ENDIF        ENDIF

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22