/[MITgcm]/MITgcm/pkg/ptracers/ptracers_integrate.F
ViewVC logotype

Diff of /MITgcm/pkg/ptracers/ptracers_integrate.F

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

revision 1.36 by jmc, Mon Dec 17 22:03:15 2007 UTC revision 1.43 by jmc, Mon May 23 00:34:36 2011 UTC
# Line 25  C !USES: =============================== Line 25  C !USES: ===============================
25  #include "EEPARAMS.h"  #include "EEPARAMS.h"
26  #include "PARAMS.h"  #include "PARAMS.h"
27  #include "DYNVARS.h"  #include "DYNVARS.h"
28    #ifdef ALLOW_LONGSTEP
29    #include "LONGSTEP_PARAMS.h"
30    #endif
31  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
32  #include "PTRACERS_PARAMS.h"  #include "PTRACERS_PARAMS.h"
33  #include "PTRACERS_RESTART.h"  #include "PTRACERS_RESTART.h"
# Line 125  CADJ STORE pTracer(:,:,k,bi,bj,iTracer) Line 128  CADJ STORE pTracer(:,:,k,bi,bj,iTracer)
128  CADJ &      = comlev1_bibj_k_ptracers, key=kkey, byte=isbyte  CADJ &      = comlev1_bibj_k_ptracers, key=kkey, byte=isbyte
129  CADJ STORE gpTrNm1(:,:,k,bi,bj,iTracer)  CADJ STORE gpTrNm1(:,:,k,bi,bj,iTracer)
130  CADJ &      = comlev1_bibj_k_ptracers, key=kkey, byte=isbyte  CADJ &      = comlev1_bibj_k_ptracers, key=kkey, byte=isbyte
131    # ifdef NONLIN_FRSURF
132    CADJ STORE gpTr(:,:,k,bi,bj,iTracer)
133    CADJ &      = comlev1_bibj_k_ptracers, key=kkey, byte=isbyte
134    CADJ STORE rFlx(:,:,:,iTracer)
135    CADJ &      = comlev1_bibj_k_ptracers, key=kkey, byte=isbyte
136    # endif
137  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
138    
139  C Calculate active tracer tendencies (gPtr) due to internal processes  C Calculate active tracer tendencies (gPtr) due to internal processes
# Line 140  C (advection, [explicit] diffusion, para Line 149  C (advection, [explicit] diffusion, para
149       I                   KappaRtr(1-Olx,1-Oly,iTracer),       I                   KappaRtr(1-Olx,1-Oly,iTracer),
150       I                   gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),       I                   gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),
151       I                   pTracer(1-Olx,1-Oly,1,1,1,iTracer),       I                   pTracer(1-Olx,1-Oly,1,1,1,iTracer),
152       I                   GAD_TR,       I                   PTRACERS_dTLev, GAD_TR,
153       I                   PTRACERS_advScheme(iTracer),       I                   PTRACERS_advScheme(iTracer),
154       I                   PTRACERS_advScheme(iTracer),       I                   PTRACERS_advScheme(iTracer),
155       I                   calcAdvection, PTRACERS_ImplVertAdv(iTracer),       I                   calcAdvection, PTRACERS_ImplVertAdv(iTracer),
# Line 167  C  If matrix is being computed, block ca Line 176  C  If matrix is being computed, block ca
176  C  prevent gPtr from being replaced by the average of gPtr and gpTrNm1.  C  prevent gPtr from being replaced by the average of gPtr and gpTrNm1.
177          IF (.NOT.useMATRIX) THEN          IF (.NOT.useMATRIX) THEN
178  #endif  #endif
179    C       compute iter at beginning of ptracer time step
180    #ifdef ALLOW_LONGSTEP
181            iterNb = myIter - LS_nIter + 1
182            IF (LS_whenToSample.GE.2) iterNb = myIter - LS_nIter
183    #else
184          iterNb = myIter          iterNb = myIter
185          IF (staggerTimeStep) iterNb = myIter - 1          IF (staggerTimeStep) iterNb = myIter - 1
186    #endif
187          CALL ADAMS_BASHFORTH2(          CALL ADAMS_BASHFORTH2(
188       I                      bi,bj,K,       I                      bi,bj,K,
189       U                      gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                      gPtr(1-Olx,1-Oly,1,1,1,iTracer),
# Line 194  C Account for change in level thickness Line 209  C Account for change in level thickness
209       I                          bi,bj,K,       I                          bi,bj,K,
210       U                          gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                          gPtr(1-Olx,1-Oly,1,1,1,iTracer),
211       I                          myThid )       I                          myThid )
212          IF ( PTRACERS_AdamsBashGtr(iTracer) ) THEN          IF ( PTRACERS_AdamsBashGtr(iTracer) )
213       &  CALL FREESURF_RESCALE_G(       &  CALL FREESURF_RESCALE_G(
214       I                          bi,bj,K,       I                          bi,bj,K,
215       U                          gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),       U                          gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),
# Line 204  C Account for change in level thickness Line 219  C Account for change in level thickness
219    
220  C Integrate forward in time, storing in gPtr:  G=T+dt*G  C Integrate forward in time, storing in gPtr:  G=T+dt*G
221           CALL TIMESTEP_TRACER(           CALL TIMESTEP_TRACER(
222       I                        bi,bj,iMin,iMax,jMin,jMax,k,       I                        bi, bj, k, PTRACERS_dTLev(k),
      I                        PTRACERS_advScheme(iTracer),  
223       I                        pTracer(1-Olx,1-Oly,1,1,1,iTracer),       I                        pTracer(1-Olx,1-Oly,1,1,1,iTracer),
224       I                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),
225       I                        myIter,myThid )       I                        myIter, myThid )
226    
 #ifdef   ALLOW_OBCS  
 C Apply open boundary conditions  
          IF (useOBCS) THEN  
           CALL OBCS_APPLY_PTRACER(  
      I         bi, bj, k, iTracer,  
      U         gPtr(1-Olx,1-Oly,k,bi,bj,iTracer),  
      I         myThid )  
          ENDIF  
 #endif   /* ALLOW_OBCS */  
227  C end of tracer loop  C end of tracer loop
228        ENDDO        ENDDO
229    

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.43

  ViewVC Help
Powered by ViewVC 1.1.22