/[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.8 - (hide annotations) (download)
Tue Apr 4 14:52:43 2006 UTC (18 years, 2 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58f_post, checkpoint58d_post, checkpoint58t_post, checkpoint58m_post, checkpoint58o_post, checkpoint58p_post, checkpoint58q_post, checkpoint58e_post, checkpoint58r_post, checkpoint58n_post, checkpoint58k_post, checkpoint58l_post, checkpoint58g_post, checkpoint58h_post, checkpoint58j_post, checkpoint58i_post, checkpoint58s_post
Changes since 1.7: +27 -1 lines
Fix ptracers adjoint
o avoid extensive recomputatations
o fix missing re-init. of gptr (missed by TAF)

1 heimbach 1.8 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_advection.F,v 1.7 2005/10/10 05:53:48 mlosch 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     C Calculates tendancy for passive tracers and integrates forward
14     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 adcroft 1.1 #include "PTRACERS.h"
24     #include "GAD.h"
25 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
26     # include "tamc.h"
27     # include "tamc_keys.h"
28     #endif
29 adcroft 1.1
30     C !INPUT PARAMETERS: ===================================================
31     C bi,bj :: tile indices
32     C myIter :: time-step number
33     C myTime :: model time
34     C myThid :: thread number
35     INTEGER bi,bj
36     INTEGER myIter
37     _RL myTime
38     INTEGER myThid
39    
40     C !OUTPUT PARAMETERS: ==================================================
41     C none
42    
43     #ifdef ALLOW_PTRACERS
44    
45     C !LOCAL VARIABLES: ====================================================
46     C i,j,k,bi,bj,iTracer :: loop indices
47     C iMin,iMax,jMin,jMax :: loop ranges
48     C kUp,kDown :: toggle indices for even/odd level fluxes
49     C km1 :: =min(1,k-1)
50     C rFlx :: vertical flux
51     INTEGER iTracer
52     CEOP
53    
54     C Loop over tracers
55     DO iTracer=1,PTRACERS_numInUse
56    
57 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
58     act0 = iTracer - 1
59     max0 = PTRACERS_num
60     act1 = bi - myBxLo(myThid)
61     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
62     act2 = bj - myByLo(myThid)
63     max2 = myByHi(myThid) - myByLo(myThid) + 1
64     act3 = myThid - 1
65     max3 = nTx*nTy
66     act4 = ikey_dynamics - 1
67     iptrkey = (act0 + 1)
68     & + act1*max0
69     & + act2*max0*max1
70     & + act3*max0*max1*max2
71     & + act4*max0*max1*max2*max3
72     #endif /* ALLOW_AUTODIFF_TAMC */
73    
74     #ifdef ALLOW_AUTODIFF_TAMC
75     CADJ STORE ptracer(:,:,:,bi,bj,iTracer)
76     CADJ & = comlev1_bibj_ptracers, key=iptrkey, byte=isbyte
77     #endif /* ALLOW_AUTODIFF_TAMC */
78    
79 adcroft 1.1 IF (
80 jmc 1.4 & multiDimAdvection .AND.
81 adcroft 1.1 & PTRACERS_advScheme(iTracer).NE.ENUM_CENTERED_2ND .AND.
82     & PTRACERS_advScheme(iTracer).NE.ENUM_UPWIND_3RD .AND.
83     & PTRACERS_advScheme(iTracer).NE.ENUM_CENTERED_4TH ) THEN
84 jmc 1.2 CALL GAD_ADVECTION(
85 jmc 1.6 I PTRACERS_ImplVertAdv(iTracer),
86 adcroft 1.1 I PTRACERS_advScheme(iTracer),
87 jmc 1.3 I PTRACERS_advScheme(iTracer),
88 mlosch 1.7 I GAD_TR1+iTracer-1,
89 jmc 1.2 I uVel, vVel, wVel,
90     I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
91     O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
92     I bi,bj,myTime,myIter,myThid)
93 adcroft 1.1 ENDIF
94    
95    
96     C end of tracer loop
97     ENDDO
98    
99     #endif /* ALLOW_PTRACERS */
100    
101     RETURN
102     END

  ViewVC Help
Powered by ViewVC 1.1.22