/[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.11 - (hide annotations) (download)
Mon Dec 17 22:03:15 2007 UTC (16 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59q, checkpoint59p, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n
Changes since 1.10: +3 -7 lines
add internal parameter and flags:
a) ptracer multi-Dim advection flag and AdamsBashforth flag
b) starting AdamsBashforth flag (in new header file: PTRACERS_RESTART.h)

1 jmc 1.11 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_advection.F,v 1.10 2007/11/05 18:48:04 jmc Exp $
2 jmc 1.2 C $Name: $
3 adcroft 1.1
4     #include "PTRACERS_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: PTRACERS_ADVECTION
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )
11    
12     C !DESCRIPTION:
13 jmc 1.9 C Calculates tendency for passive tracers and integrates forward
14 adcroft 1.1 C in time.
15    
16     C !USES: ===============================================================
17     IMPLICIT NONE
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20 jmc 1.2 #include "PARAMS.h"
21     #include "DYNVARS.h"
22 jmc 1.5 #include "PTRACERS_SIZE.h"
23 jmc 1.10 #include "PTRACERS_PARAMS.h"
24     #include "PTRACERS_FIELDS.h"
25 adcroft 1.1 #include "GAD.h"
26 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
27     # include "tamc.h"
28     # include "tamc_keys.h"
29     #endif
30 adcroft 1.1
31     C !INPUT PARAMETERS: ===================================================
32     C bi,bj :: tile indices
33     C myIter :: time-step number
34     C myTime :: model time
35     C myThid :: thread number
36     INTEGER bi,bj
37     INTEGER myIter
38     _RL myTime
39     INTEGER myThid
40    
41     C !OUTPUT PARAMETERS: ==================================================
42     C none
43    
44     #ifdef ALLOW_PTRACERS
45    
46     C !LOCAL VARIABLES: ====================================================
47     C i,j,k,bi,bj,iTracer :: loop indices
48     C iMin,iMax,jMin,jMax :: loop ranges
49     C kUp,kDown :: toggle indices for even/odd level fluxes
50     C km1 :: =min(1,k-1)
51 jmc 1.11 C rFlx :: vertical flux
52 adcroft 1.1 INTEGER iTracer
53     CEOP
54    
55     C Loop over tracers
56     DO iTracer=1,PTRACERS_numInUse
57    
58 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
59     act0 = iTracer - 1
60     max0 = PTRACERS_num
61     act1 = bi - myBxLo(myThid)
62     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
63     act2 = bj - myByLo(myThid)
64     max2 = myByHi(myThid) - myByLo(myThid) + 1
65     act3 = myThid - 1
66     max3 = nTx*nTy
67     act4 = ikey_dynamics - 1
68     iptrkey = (act0 + 1)
69     & + act1*max0
70     & + act2*max0*max1
71     & + act3*max0*max1*max2
72     & + act4*max0*max1*max2*max3
73     #endif /* ALLOW_AUTODIFF_TAMC */
74    
75     #ifdef ALLOW_AUTODIFF_TAMC
76 jmc 1.10 CADJ STORE pTracer(:,:,:,bi,bj,iTracer)
77 heimbach 1.8 CADJ & = comlev1_bibj_ptracers, key=iptrkey, byte=isbyte
78     #endif /* ALLOW_AUTODIFF_TAMC */
79 jmc 1.9
80 jmc 1.11 IF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
81 jmc 1.2 CALL GAD_ADVECTION(
82 jmc 1.6 I PTRACERS_ImplVertAdv(iTracer),
83 adcroft 1.1 I PTRACERS_advScheme(iTracer),
84 jmc 1.3 I PTRACERS_advScheme(iTracer),
85 mlosch 1.7 I GAD_TR1+iTracer-1,
86 jmc 1.2 I uVel, vVel, wVel,
87     I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
88     O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
89     I bi,bj,myTime,myIter,myThid)
90 adcroft 1.1 ENDIF
91    
92    
93     C end of tracer loop
94     ENDDO
95    
96     #endif /* ALLOW_PTRACERS */
97    
98     RETURN
99     END

  ViewVC Help
Powered by ViewVC 1.1.22