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

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

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


Revision 1.14 - (hide annotations) (download)
Fri Jun 26 23:10:10 2009 UTC (14 years, 11 months ago) by jahn
Branch: MAIN
CVS Tags: checkpoint61t, checkpoint61u, checkpoint61s
Changes since 1.13: +15 -1 lines
add package longstep

1 jahn 1.14 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_advection.F,v 1.13 2008/05/09 21:44:31 jmc Exp $
2 jmc 1.2 C $Name: $
3 adcroft 1.1
4     #include "PTRACERS_OPTIONS.h"
5 jahn 1.12 #include "GAD_OPTIONS.h"
6 adcroft 1.1
7     CBOP
8     C !ROUTINE: PTRACERS_ADVECTION
9    
10     C !INTERFACE: ==========================================================
11     SUBROUTINE PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )
12    
13     C !DESCRIPTION:
14 jmc 1.9 C Calculates tendency for passive tracers and integrates forward
15 adcroft 1.1 C in time.
16    
17     C !USES: ===============================================================
18 jahn 1.12 #include "PTRACERS_MOD.h"
19 adcroft 1.1 IMPLICIT NONE
20     #include "SIZE.h"
21     #include "EEPARAMS.h"
22 jmc 1.2 #include "PARAMS.h"
23     #include "DYNVARS.h"
24 jahn 1.14 #ifdef ALLOW_LONGSTEP
25     #include "LONGSTEP_PARAMS.h"
26     #include "LONGSTEP.h"
27     #endif
28 jmc 1.5 #include "PTRACERS_SIZE.h"
29 jmc 1.10 #include "PTRACERS_PARAMS.h"
30     #include "PTRACERS_FIELDS.h"
31 adcroft 1.1 #include "GAD.h"
32 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
33     # include "tamc.h"
34     # include "tamc_keys.h"
35     #endif
36 adcroft 1.1
37     C !INPUT PARAMETERS: ===================================================
38     C bi,bj :: tile indices
39     C myIter :: time-step number
40     C myTime :: model time
41     C myThid :: thread number
42     INTEGER bi,bj
43     INTEGER myIter
44     _RL myTime
45     INTEGER myThid
46    
47     C !OUTPUT PARAMETERS: ==================================================
48     C none
49    
50     #ifdef ALLOW_PTRACERS
51    
52     C !LOCAL VARIABLES: ====================================================
53     C i,j,k,bi,bj,iTracer :: loop indices
54     C iMin,iMax,jMin,jMax :: loop ranges
55     C kUp,kDown :: toggle indices for even/odd level fluxes
56     C km1 :: =min(1,k-1)
57 jmc 1.11 C rFlx :: vertical flux
58 adcroft 1.1 INTEGER iTracer
59     CEOP
60    
61     C Loop over tracers
62     DO iTracer=1,PTRACERS_numInUse
63    
64 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
65     act0 = iTracer - 1
66     max0 = PTRACERS_num
67     act1 = bi - myBxLo(myThid)
68     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
69     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 jmc 1.10 CADJ STORE pTracer(:,:,:,bi,bj,iTracer)
83 heimbach 1.8 CADJ & = comlev1_bibj_ptracers, key=iptrkey, byte=isbyte
84     #endif /* ALLOW_AUTODIFF_TAMC */
85 jmc 1.9
86 jmc 1.13 #ifdef PTRACERS_ALLOW_DYN_STATE
87 jahn 1.12 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 jahn 1.14 I PTRACERS_dTLev,
98     #ifdef ALLOW_LONGSTEP
99     I LS_uVel, LS_vVel, LS_wVel,
100     #else
101 jahn 1.12 I uVel, vVel, wVel,
102 jahn 1.14 #endif
103 jahn 1.12 I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
104     U _Ptracers_som(1-Olx,1-Oly,1,1,1,1,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 jmc 1.13 #else /* PTRACERS_ALLOW_DYN_STATE */
109 jmc 1.11 IF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
110 jmc 1.13 #endif /* PTRACERS_ALLOW_DYN_STATE */
111 jmc 1.2 CALL GAD_ADVECTION(
112 jmc 1.6 I PTRACERS_ImplVertAdv(iTracer),
113 adcroft 1.1 I PTRACERS_advScheme(iTracer),
114 jmc 1.3 I PTRACERS_advScheme(iTracer),
115 mlosch 1.7 I GAD_TR1+iTracer-1,
116 jahn 1.14 I PTRACERS_dTLev,
117     #ifdef ALLOW_LONGSTEP
118     I LS_uVel, LS_vVel, LS_wVel,
119     #else
120 jmc 1.2 I uVel, vVel, wVel,
121 jahn 1.14 #endif
122 jmc 1.2 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 adcroft 1.1 ENDIF
126    
127    
128     C end of tracer loop
129     ENDDO
130    
131     #endif /* ALLOW_PTRACERS */
132    
133     RETURN
134     END

  ViewVC Help
Powered by ViewVC 1.1.22