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

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

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

revision 1.1 by adcroft, Mon Mar 4 19:01:29 2002 UTC revision 1.15 by jmc, Thu Sep 3 22:13:04 2009 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "PTRACERS_OPTIONS.h"  #include "PTRACERS_OPTIONS.h"
5    #include "GAD_OPTIONS.h"
6    
7  CBOP  CBOP
8  C !ROUTINE: PTRACERS_ADVECTION  C !ROUTINE: PTRACERS_ADVECTION
# Line 10  C !INTERFACE: ========================== Line 11  C !INTERFACE: ==========================
11        SUBROUTINE PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )        SUBROUTINE PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )
12    
13  C !DESCRIPTION:  C !DESCRIPTION:
14  C     Calculates tendancy for passive tracers and integrates forward  C     Calculates tendency for passive tracers and integrates forward
15  C     in time.  C     in time.
16    
17  C !USES: ===============================================================  C !USES: ===============================================================
18    #include "PTRACERS_MOD.h"
19        IMPLICIT NONE        IMPLICIT NONE
20  #include "SIZE.h"  #include "SIZE.h"
21  #include "EEPARAMS.h"  #include "EEPARAMS.h"
22  #include "PTRACERS.h"  #include "PARAMS.h"
23    #include "DYNVARS.h"
24    #ifdef ALLOW_LONGSTEP
25    #include "LONGSTEP_PARAMS.h"
26    #include "LONGSTEP.h"
27    #endif
28    #include "PTRACERS_SIZE.h"
29    #include "PTRACERS_PARAMS.h"
30    #include "PTRACERS_FIELDS.h"
31  #include "GAD.h"  #include "GAD.h"
32    #ifdef ALLOW_AUTODIFF_TAMC
33    # include "tamc.h"
34    # include "tamc_keys.h"
35    #endif
36    
37  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
38  C  bi,bj                :: tile indices  C  bi,bj                :: tile indices
# Line 40  C  i,j,k,bi,bj,iTracer  :: loop indices Line 54  C  i,j,k,bi,bj,iTracer  :: loop indices
54  C  iMin,iMax,jMin,jMax  :: loop ranges  C  iMin,iMax,jMin,jMax  :: loop ranges
55  C  kUp,kDown            :: toggle indices for even/odd level fluxes  C  kUp,kDown            :: toggle indices for even/odd level fluxes
56  C  km1                  :: =min(1,k-1)  C  km1                  :: =min(1,k-1)
57  C  rFlx                 :: vertical flux  C  rFlx                 :: vertical flux
58        INTEGER iTracer        INTEGER iTracer
59  CEOP  CEOP
60    
61  C Loop over tracers  C Loop over tracers
62        DO iTracer=1,PTRACERS_numInUse        DO iTracer=1,PTRACERS_numInUse
63    
64         IF (  #ifdef ALLOW_AUTODIFF_TAMC
65  c    &     multiDimAdvection .AND.            act0 = iTracer - 1
66       &     PTRACERS_advScheme(iTracer).NE.ENUM_CENTERED_2ND .AND.            max0 = PTRACERS_num
67       &     PTRACERS_advScheme(iTracer).NE.ENUM_UPWIND_3RD .AND.            act1 = bi - myBxLo(myThid)
68       &     PTRACERS_advScheme(iTracer).NE.ENUM_CENTERED_4TH ) THEN            max1 = myBxHi(myThid) - myBxLo(myThid) + 1
69              CALL GAD_ADVECTION(bi,bj,            act2 = bj - myByLo(myThid)
70              max2 = myByHi(myThid) - myByLo(myThid) + 1
71              act3 = myThid - 1
72              max3 = nTx*nTy
73              act4 = ikey_dynamics - 1
74              iptrkey = (act0 + 1)
75         &                      + act1*max0
76         &                      + act2*max0*max1
77         &                      + act3*max0*max1*max2
78         &                      + act4*max0*max1*max2*max3
79    #endif /* ALLOW_AUTODIFF_TAMC */
80    
81    #ifdef ALLOW_AUTODIFF_TAMC
82    CADJ STORE pTracer(:,:,:,bi,bj,iTracer)
83    CADJ &      = comlev1_bibj_ptracers, key=iptrkey, byte=isbyte
84    #endif /* ALLOW_AUTODIFF_TAMC */
85    
86    #ifdef PTRACERS_ALLOW_DYN_STATE
87           IF ( PTRACERS_SOM_Advection(iTracer) ) THEN
88    #ifdef ALLOW_DEBUG
89             IF ( debugLevel .GE. debLevB )
90         &     CALL DEBUG_CALL('GAD_SOM_ADVECT',myThid)
91    #endif
92             CALL GAD_SOM_ADVECT(
93         I                       PTRACERS_ImplVertAdv(iTracer),
94         I                       PTRACERS_advScheme(iTracer),
95         I                       PTRACERS_advScheme(iTracer),
96         I                       GAD_TR1+iTracer-1,
97         I                       PTRACERS_dTLev,
98    #ifdef ALLOW_LONGSTEP
99         I                       LS_uVel, LS_vVel, LS_wVel,
100    #else
101         I                       uVel, vVel, wVel,
102    #endif
103         I                       pTracer(1-Olx,1-Oly,1,1,1,iTracer),
104         U                       _Ptracers_som(:,:,:,:,:,:,iTracer),
105         O                       gPtr(1-Olx,1-Oly,1,1,1,iTracer),
106         I                       bi,bj,myTime,myIter,myThid)
107           ELSEIF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
108    #else /* PTRACERS_ALLOW_DYN_STATE */
109           IF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
110    #endif /* PTRACERS_ALLOW_DYN_STATE */
111                CALL GAD_ADVECTION(
112         I                        PTRACERS_ImplVertAdv(iTracer),
113       I                        PTRACERS_advScheme(iTracer),       I                        PTRACERS_advScheme(iTracer),
114       I                        GAD_TR1,       I                        PTRACERS_advScheme(iTracer),
115       U                        pTracer(1-Olx,1-Oly,1,1,1,iTracer),       I                        GAD_TR1+iTracer-1,
116       U                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),       I                        PTRACERS_dTLev,
117       I                        myTime,myIter,myThid)  #ifdef ALLOW_LONGSTEP
118         I                        LS_uVel, LS_vVel, LS_wVel,
119    #else
120         I                        uVel, vVel, wVel,
121    #endif
122         I                        pTracer(1-Olx,1-Oly,1,1,1,iTracer),
123         O                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),
124         I                        bi,bj,myTime,myIter,myThid)
125         ENDIF         ENDIF
126    
127    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.22