/[MITgcm]/MITgcm_contrib/ecco_darwin/v2_cs510_Brix/code/ptracers_advection.F
ViewVC logotype

Annotation of /MITgcm_contrib/ecco_darwin/v2_cs510_Brix/code/ptracers_advection.F

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


Revision 1.2 - (hide annotations) (download)
Thu Oct 4 05:16:15 2018 UTC (7 years, 11 months ago) by dimitri
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +4 -3 lines
trying to regenerate /nobackup/hbrix/MITgcm_110502/build_darwin_ag4/mitgcmuv

1 dimitri 1.2 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_advection.F,v 1.16 2010/11/18 00:35:27 jmc Exp $
2 dimitri 1.1 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     cBX-a
47     INTEGER i,j,k
48     cBX-e
49    
50     C !OUTPUT PARAMETERS: ==================================================
51     C none
52    
53     #ifdef ALLOW_PTRACERS
54    
55     C !LOCAL VARIABLES: ====================================================
56     C i,j,k,bi,bj,iTracer :: loop indices
57     C iMin,iMax,jMin,jMax :: loop ranges
58     C kUp,kDown :: toggle indices for even/odd level fluxes
59     C km1 :: =min(1,k-1)
60     C rFlx :: vertical flux
61     INTEGER iTracer
62     CEOP
63    
64     C Loop over tracers
65     DO iTracer=1,PTRACERS_numInUse
66     cBX-a
67     c check if tracers values for DIC and ALK are > 3000 and DIC < 600 and correct if needed
68 dimitri 1.2 IF ( iTracer == 27 .OR. iTracer == 31) THEN
69 dimitri 1.1 DO k=1,Nr
70     DO j = 1,sNy
71     DO i = 1,sNx+1
72     IF( pTracer(i,j,k,bi,bj,iTracer)>3000 )
73     & pTracer(i,j,k,bi,bj,iTracer)=3000.
74     ENDDO
75     ENDDO
76     ENDDO
77     ENDIF
78 dimitri 1.2 IF ( iTracer == 27) THEN
79 dimitri 1.1 DO k=1,Nr
80     DO j = 1,sNy
81     DO i = 1,sNx+1
82     IF( pTracer(i,j,k,bi,bj,iTracer)<600 )
83     & pTracer(i,j,k,bi,bj,iTracer)=600.
84     ENDDO
85     ENDDO
86     ENDDO
87     ENDIF
88     cBX-e
89    
90     #ifdef ALLOW_AUTODIFF_TAMC
91     act0 = iTracer - 1
92     max0 = PTRACERS_num
93     act1 = bi - myBxLo(myThid)
94     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
95     act2 = bj - myByLo(myThid)
96     max2 = myByHi(myThid) - myByLo(myThid) + 1
97     act3 = myThid - 1
98     max3 = nTx*nTy
99     act4 = ikey_dynamics - 1
100     iptrkey = (act0 + 1)
101     & + act1*max0
102     & + act2*max0*max1
103     & + act3*max0*max1*max2
104     & + act4*max0*max1*max2*max3
105     #endif /* ALLOW_AUTODIFF_TAMC */
106    
107     #ifdef ALLOW_AUTODIFF_TAMC
108     CADJ STORE pTracer(:,:,:,bi,bj,iTracer)
109     CADJ & = comlev1_bibj_ptracers, key=iptrkey, byte=isbyte
110     #endif /* ALLOW_AUTODIFF_TAMC */
111    
112     #ifdef PTRACERS_ALLOW_DYN_STATE
113     IF ( PTRACERS_SOM_Advection(iTracer) ) THEN
114     #ifdef ALLOW_DEBUG
115     IF (debugMode) CALL DEBUG_CALL('GAD_SOM_ADVECT',myThid)
116     #endif
117     CALL GAD_SOM_ADVECT(
118     I PTRACERS_ImplVertAdv(iTracer),
119     I PTRACERS_advScheme(iTracer),
120     I PTRACERS_advScheme(iTracer),
121     I GAD_TR1+iTracer-1,
122     I PTRACERS_dTLev,
123     #ifdef ALLOW_LONGSTEP
124     I LS_uVel, LS_vVel, LS_wVel,
125     #else
126     I uVel, vVel, wVel,
127     #endif
128     I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
129     U _Ptracers_som(:,:,:,:,:,:,iTracer),
130     O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
131     I bi,bj,myTime,myIter,myThid)
132     ELSEIF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
133     #else /* PTRACERS_ALLOW_DYN_STATE */
134     IF ( PTRACERS_MultiDimAdv(iTracer) ) THEN
135     #endif /* PTRACERS_ALLOW_DYN_STATE */
136 dimitri 1.2
137 dimitri 1.1 CALL GAD_ADVECTION(
138     I PTRACERS_ImplVertAdv(iTracer),
139     I PTRACERS_advScheme(iTracer),
140     I PTRACERS_advScheme(iTracer),
141     I GAD_TR1+iTracer-1,
142     I PTRACERS_dTLev,
143     #ifdef ALLOW_LONGSTEP
144     I LS_uVel, LS_vVel, LS_wVel,
145     #else
146     I uVel, vVel, wVel,
147     #endif
148     I pTracer(1-Olx,1-Oly,1,1,1,iTracer),
149     O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
150     I bi,bj,myTime,myIter,myThid)
151     ENDIF
152    
153    
154     C end of tracer loop
155     ENDDO
156    
157     #endif /* ALLOW_PTRACERS */
158    
159     RETURN
160     END

  ViewVC Help
Powered by ViewVC 1.1.22