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

Diff of /MITgcm/pkg/ptracers/ptracers_implicit.F

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

revision 1.2 by jmc, Thu Dec 16 23:20:48 2004 UTC revision 1.8 by jmc, Sun Nov 14 23:32:15 2010 UTC
# Line 7  CBOP Line 7  CBOP
7  C !ROUTINE: PTRACERS_IMPLICIT  C !ROUTINE: PTRACERS_IMPLICIT
8    
9  C !INTERFACE: ==========================================================  C !INTERFACE: ==========================================================
10        SUBROUTINE PTRACERS_IMPLICIT(        SUBROUTINE PTRACERS_IMPLICIT(
11       U                              kappaRk,       U                              kappaRk,
12       I                              bi, bj, myTime, myIter, myThid )       I                              bi, bj, myTime, myIter, myThid )
13    
14  C !DESCRIPTION:  C !DESCRIPTION:
15  C     Calls the implicit vertical advection/diffusion routine  C     Calls the implicit vertical advection/diffusion routine
16  C     for each passive tracer.  C     for each passive tracer.
17    C     And apply open boundary conditions for each passive tracer
18    C Note: would be better to apply OBC in a dedicated S/R ;
19    C     can be done here assuming no other contribution modify passive
20    C     tracer after implicit vertical diffus/advect is applied.
21    
22  C !USES: ===============================================================  C !USES: ===============================================================
23        IMPLICIT NONE        IMPLICIT NONE
24  #include "SIZE.h"  #include "SIZE.h"
25  #include "EEPARAMS.h"  #include "EEPARAMS.h"
26    #ifdef ALLOW_LONGSTEP
27    #include "LONGSTEP_PARAMS.h"
28    #include "LONGSTEP.h"
29    #endif
30  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
31  #include "PTRACERS.h"  #include "PTRACERS_PARAMS.h"
32    #include "PTRACERS_FIELDS.h"
33  #include "PARAMS.h"  #include "PARAMS.h"
34  #include "GRID.h"  #include "GRID.h"
35  #include "GAD.h"  #include "GAD.h"
# Line 71  C Loop over tracers Line 80  C Loop over tracers
80            act3 = myThid - 1            act3 = myThid - 1
81            max3 = nTx*nTy            max3 = nTx*nTy
82            act4 = ikey_dynamics - 1            act4 = ikey_dynamics - 1
83            iptrkey = (act0 + 1)            iptrkey = (act0 + 1)
84       &                      + act1*max0       &                      + act1*max0
85       &                      + act2*max0*max1       &                      + act2*max0*max1
86       &                      + act3*max0*max1*max2       &                      + act3*max0*max1*max2
# Line 89  C Loop over tracers Line 98  C Loop over tracers
98          ENDIF          ENDIF
99    
100  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
101  CADJ STORE gPtr(:,:,:,bi,bj,iTracer) = comlev1_bibj_ptracers,  CADJ STORE kappaRk(:,:,:) = comlev1_bibj_ptracers,
102    CADJ &     key=iptrkey, byte=isbyte
103    CADJ STORE gPtr(:,:,:,bi,bj,iTracer) = comlev1_bibj_ptracers,
104  CADJ &     key=iptrkey, byte=isbyte  CADJ &     key=iptrkey, byte=isbyte
105  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
106    
# Line 97  CADJ &     key=iptrkey, byte=isbyte Line 108  CADJ &     key=iptrkey, byte=isbyte
108          IF ( PTRACERS_ImplVertAdv(iTracer) ) THEN          IF ( PTRACERS_ImplVertAdv(iTracer) ) THEN
109    
110            CALL GAD_IMPLICIT_R(            CALL GAD_IMPLICIT_R(
111       I         PTRACERS_ImplVertAdv(iTracer),       I         PTRACERS_ImplVertAdv(iTracer),
112       I         PTRACERS_advScheme(iTracer), GAD_TR,       I         PTRACERS_advScheme(iTracer), GAD_TR,
113       I         kappaRk, wVel, pTracer(1-Olx,1-Oly,1,1,1,iTracer),       I         PTRACERS_dTLev, kappaRk,
114    #ifdef ALLOW_LONGSTEP
115         I         LS_wVel,
116    #else
117         I         wVel,
118    #endif
119         I         pTracer(1-Olx,1-Oly,1,1,1,iTracer),
120       U         gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U         gPtr(1-Olx,1-Oly,1,1,1,iTracer),
121       I         bi, bj, myTime, myIter, myThid )       I         bi, bj, myTime, myIter, myThid )
122    
# Line 113  CADJ &     key=iptrkey, byte=isbyte Line 130  CADJ &     key=iptrkey, byte=isbyte
130       I         GAD_TR, kappaRk, recip_HFacC,       I         GAD_TR, kappaRk, recip_HFacC,
131       U         gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U         gPtr(1-Olx,1-Oly,1,1,1,iTracer),
132       I         myThid )       I         myThid )
133            ENDIF
134    
135    #ifdef ALLOW_OBCS
136    C--     Apply open boundary conditions
137            IF ( useOBCS ) THEN
138              CALL OBCS_APPLY_PTRACER(
139         I         bi, bj, 0, iTracer,
140         U         gPtr(1-Olx,1-Oly,1,bi,bj,iTracer),
141         I         myThid )
142          ENDIF          ENDIF
143    #endif /* ALLOW_OBCS */
144    
145  C End of tracer loop  C End of tracer loop
146        ENDDO        ENDDO
147    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22