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

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

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


Revision 1.16 - (show annotations) (download)
Thu Nov 18 00:35:27 2010 UTC (13 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62o, checkpoint62w, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint63i, checkpoint63, checkpoint63h, checkpoint63j, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c
Changes since 1.15: +5 -6 lines
change argument order to "myTime,myIter,myThid"

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_advection.F,v 1.15 2009/09/03 22:13:04 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5 #include "GAD_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: PTRACERS_ADVECTION
9
10 C !INTERFACE: ==========================================================
11 SUBROUTINE PTRACERS_ADVECTION( bi,bj,myTime,myIter,myThid )
12
13 C !DESCRIPTION:
14 C Calculates tendency for passive tracers and integrates forward
15 C in time.
16
17 C !USES: ===============================================================
18 #include "PTRACERS_MOD.h"
19 IMPLICIT NONE
20 #include "SIZE.h"
21 #include "EEPARAMS.h"
22 #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"
32 #ifdef ALLOW_AUTODIFF_TAMC
33 # include "tamc.h"
34 # include "tamc_keys.h"
35 #endif
36
37 C !INPUT PARAMETERS: ===================================================
38 C bi,bj :: tile indices
39 C myTime :: model time
40 C myIter :: time-step number
41 C myThid :: thread number
42 INTEGER bi,bj
43 _RL myTime
44 INTEGER myIter
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 C rFlx :: vertical flux
58 INTEGER iTracer
59 CEOP
60
61 C Loop over tracers
62 DO iTracer=1,PTRACERS_numInUse
63
64 #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 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 (debugMode) CALL DEBUG_CALL('GAD_SOM_ADVECT',myThid)
90 #endif
91 CALL GAD_SOM_ADVECT(
92 I PTRACERS_ImplVertAdv(iTracer),
93 I PTRACERS_advScheme(iTracer),
94 I PTRACERS_advScheme(iTracer),
95 I GAD_TR1+iTracer-1,
96 I PTRACERS_dTLev,
97 #ifdef ALLOW_LONGSTEP
98 I LS_uVel, LS_vVel, LS_wVel,
99 #else
100 I uVel, vVel, wVel,
101 #endif
102 I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
103 U _Ptracers_som(:,:,:,:,:,:,iTracer),
104 O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
105 I bi,bj,myTime,myIter,myThid)
106 ELSEIF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
107 #else /* PTRACERS_ALLOW_DYN_STATE */
108 IF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
109 #endif /* PTRACERS_ALLOW_DYN_STATE */
110 CALL GAD_ADVECTION(
111 I PTRACERS_ImplVertAdv(iTracer),
112 I PTRACERS_advScheme(iTracer),
113 I PTRACERS_advScheme(iTracer),
114 I GAD_TR1+iTracer-1,
115 I PTRACERS_dTLev,
116 #ifdef ALLOW_LONGSTEP
117 I LS_uVel, LS_vVel, LS_wVel,
118 #else
119 I uVel, vVel, wVel,
120 #endif
121 I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
122 O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
123 I bi,bj,myTime,myIter,myThid)
124 ENDIF
125
126
127 C end of tracer loop
128 ENDDO
129
130 #endif /* ALLOW_PTRACERS */
131
132 RETURN
133 END

  ViewVC Help
Powered by ViewVC 1.1.22