/[MITgcm]/MITgcm/pkg/longstep/longstep_thermodynamics.F
ViewVC logotype

Diff of /MITgcm/pkg/longstep/longstep_thermodynamics.F

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

revision 1.8 by jmc, Fri Dec 6 01:57:51 2013 UTC revision 1.9 by jmc, Fri Dec 27 16:01:16 2013 UTC
# Line 47  C     == Global variables === Line 47  C     == Global variables ===
47  # include "PTRACERS_PARAMS.h"  # include "PTRACERS_PARAMS.h"
48  # include "PTRACERS_FIELDS.h"  # include "PTRACERS_FIELDS.h"
49  #endif  #endif
 #ifdef ALLOW_TIMEAVE  
 # include "TIMEAVE_STATV.h"  
 #endif  
50    
51  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
52  # include "tamc.h"  # include "tamc.h"
# Line 92  C     i, j, k        :: loop indices Line 89  C     i, j, k        :: loop indices
89        INTEGER jMin, jMax        INTEGER jMin, jMax
90        INTEGER bi, bj        INTEGER bi, bj
91        INTEGER i, j, k        INTEGER i, j, k
 #ifdef ALLOW_ADAMSBASHFORTH_3  
       INTEGER iterNb, m1, m2  
 #endif  
92  CEOP  CEOP
93    
94  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
# Line 141  C This is currently also used by IVDC an Line 135  C This is currently also used by IVDC an
135           ENDDO           ENDDO
136          ENDDO          ENDDO
137    
         iMin = 1-OLx  
         iMax = sNx+OLx  
         jMin = 1-OLy  
         jMax = sNy+OLy  
   
 C     need to recompute surfaceForcingPtr using LS_fwFlux  
         CALL LONGSTEP_FORCING_SURF(  
      I        bi, bj, iMin, iMax, jMin, jMax,  
      I        myTime,myIter,myThid )  
   
 C--   Set up 3-D velocity field that we use to advect tracers:  
 C-    just do a local copy:  
         DO k=1,Nr  
          DO j=1-OLy,sNy+OLy  
           DO i=1-OLx,sNx+OLx  
            uFld(i,j,k) = LS_uVel(i,j,k,bi,bj)  
            vFld(i,j,k) = LS_vVel(i,j,k,bi,bj)  
            wFld(i,j,k) = LS_wVel(i,j,k,bi,bj)  
           ENDDO  
          ENDDO  
         ENDDO  
 #ifdef ALLOW_GMREDI  
 C-    add Bolus velocity to Eulerian-mean velocity:  
         IF (useGMRedi) THEN  
           CALL  GMREDI_RESIDUAL_FLOW(  
      U                  uFld, vFld, wFld,  
      I                  bi, bj, myIter, myThid )  
         ENDIF  
 #endif /* ALLOW_GMREDI */  
   
 C--     Calculate active tracer tendencies (gT,gS,...)  
 C       and step forward storing result in gT, gS, etc.  
   
 #ifdef ALLOW_PTRACERS  
         IF ( usePTRACERS ) THEN  
 #ifdef ALLOW_DEBUG  
            IF (debugMode) CALL DEBUG_CALL('PTRACERS_INTEGRATE',myThid)  
 #endif  
            CALL PTRACERS_INTEGRATE(  
      I          bi, bj, uFld, vFld, wFld,  
      U          kappaRk,  
      I          myTime, myIter, myThid )  
         ENDIF  
 #endif /* ALLOW_PTRACERS */  
   
138  C--     Compute new reciprocal hFac for implicit calculation  C--     Compute new reciprocal hFac for implicit calculation
139  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
140          IF ( nonlinFreeSurf.GT.0 ) THEN          IF ( nonlinFreeSurf.GT.0 ) THEN
# Line 240  C--     Compute new reciprocal hFac for Line 189  C--     Compute new reciprocal hFac for
189          ENDIF          ENDIF
190  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
191    
192  #ifdef ALLOW_DOWN_SLOPE          iMin = 1-OLx
193  #ifdef ALLOW_PTRACERS          iMax = sNx+OLx
194          IF ( usePTRACERS .AND. useDOWN_SLOPE ) THEN          jMin = 1-OLy
195            CALL PTRACERS_DWNSLP_APPLY(          jMax = sNy+OLy
      I                  bi, bj, myTime, myIter, myThid )  
         ENDIF  
 #endif /* ALLOW_PTRACERS */  
 #endif /* ALLOW_DOWN_SLOPE */  
196    
197  C       All explicit advection/diffusion/sources should now be  C     need to recompute surfaceForcingPtr using LS_fwFlux
198  C       done. The updated tracer field is in gPtr. Accumalate          CALL LONGSTEP_FORCING_SURF(
199  C       explicit tendency and also reset gPtr to initial tracer       I        bi, bj, iMin, iMax, jMin, jMax,
200  C       field for implicit matrix calculation       I        myTime,myIter,myThid )
   
 #ifdef ALLOW_MATRIX  
         IF (useMATRIX)  
      &    CALL MATRIX_STORE_TENDENCY_EXP(bi,bj, myTime,myIter,myThid)  
 #endif  
201    
202          iMin = 1  C--   Set up 3-D velocity field that we use to advect tracers:
203          iMax = sNx  C-    just do a local copy:
204          jMin = 1          DO k=1,Nr
205          jMax = sNy           DO j=1-OLy,sNy+OLy
206              DO i=1-OLx,sNx+OLx
207               uFld(i,j,k) = LS_uVel(i,j,k,bi,bj)
208               vFld(i,j,k) = LS_vVel(i,j,k,bi,bj)
209               wFld(i,j,k) = LS_wVel(i,j,k,bi,bj)
210              ENDDO
211             ENDDO
212            ENDDO
213    #ifdef ALLOW_GMREDI
214    C-    add Bolus velocity to Eulerian-mean velocity:
215            IF (useGMRedi) THEN
216              CALL  GMREDI_RESIDUAL_FLOW(
217         U                  uFld, vFld, wFld,
218         I                  bi, bj, myIter, myThid )
219            ENDIF
220    #endif /* ALLOW_GMREDI */
221    
222  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
223          IF     ( usePTRACERS ) THEN  C--     Calculate passive tracer tendencies
224  C--     Vertical advection/diffusion (implicit) for passive tracers  C       and step forward, storing result in gPtr
225             CALL PTRACERS_IMPLICIT(  C       Also apply open boundary conditions for each passive tracer
226       U                             kappaRk,          IF ( usePTRACERS ) THEN
227       I                             wFld, recip_hFacNew,  #ifdef ALLOW_DEBUG
228       I                             bi, bj, myTime, myIter, myThid )             IF (debugMode) CALL DEBUG_CALL('PTRACERS_INTEGRATE',myThid)
229    #endif
230               CALL PTRACERS_INTEGRATE(
231         I          bi, bj, recip_hFacNew,
232         I          uFld, vFld, wFld,
233         U          kappaRk,
234         I          myTime, myIter, myThid )
235          ENDIF          ENDIF
236  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
237    

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22