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

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

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

revision 1.3 by jmc, Sat Jun 15 03:37:44 2002 UTC revision 1.8 by dimitri, Mon Aug 4 22:53:42 2003 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "PTRACERS_OPTIONS.h"  #include "PTRACERS_OPTIONS.h"
5    cswdptr -- add ---
6    #ifdef ALLOW_GCHEM
7    # include "GCHEM_OPTIONS.h"
8    #endif
9    cswdptr -- end add ---
10    
11  CBOP  CBOP
12  C !ROUTINE: PTRACERS_INTEGERATE  C !ROUTINE: PTRACERS_INTEGRATE
13    
14  C !INTERFACE: ==========================================================  C !INTERFACE: ==========================================================
15        SUBROUTINE PTRACERS_INTEGERATE(        SUBROUTINE PTRACERS_INTEGRATE(
16       I                               bi,bj,k,       I                               bi,bj,k,
17       I                               xA,yA,uTrans,vTrans,rTrans,maskUp,       I                               xA,yA,uTrans,vTrans,rTrans,maskUp,
18       X                               KappaRtr,       X                               KappaRtr,
# Line 21  C !USES: =============================== Line 26  C !USES: ===============================
26        IMPLICIT NONE        IMPLICIT NONE
27  #include "SIZE.h"  #include "SIZE.h"
28  #include "EEPARAMS.h"  #include "EEPARAMS.h"
29    #include "PARAMS.h"
30  #include "PTRACERS.h"  #include "PTRACERS.h"
31  #include "GAD.h"  #include "GAD.h"
32    
# Line 64  C  iMin,iMax,jMin,jMax  :: loop ranges Line 70  C  iMin,iMax,jMin,jMax  :: loop ranges
70  C  kUp,kDown            :: toggle indices for even/odd level fluxes  C  kUp,kDown            :: toggle indices for even/odd level fluxes
71  C  km1                  :: =min(1,k-1)  C  km1                  :: =min(1,k-1)
72  C  rFlx                 :: vertical flux  C  rFlx                 :: vertical flux
73    C  GAD_TR               :: passive tracer id (GAD_TR1+iTracer-1)
74        INTEGER i,j,iTracer        INTEGER i,j,iTracer
75        INTEGER iMin,iMax,jMin,jMax        INTEGER iMin,iMax,jMin,jMax
76        INTEGER kUp,kDown,km1        INTEGER kUp,kDown,km1
77        _RL rFlx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,PTRACERS_num)        _RL rFlx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,PTRACERS_num)
78          INTEGER GAD_TR
79        LOGICAL calcAdvection        LOGICAL calcAdvection
80  CEOP  CEOP
81    
# Line 100  C (advection, [explicit] diffusion, para Line 108  C (advection, [explicit] diffusion, para
108       &      .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND       &      .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND
109       &      .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD       &      .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD
110       &      .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH       &      .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH
111           GAD_TR = GAD_TR1 + iTracer - 1
112           CALL GAD_CALC_RHS(           CALL GAD_CALC_RHS(
113       I                     bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,       I                     bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
114       I                     xA,yA,uTrans,vTrans,rTrans,maskUp,       I                     xA,yA,uTrans,vTrans,rTrans,maskUp,
# Line 107  C (advection, [explicit] diffusion, para Line 116  C (advection, [explicit] diffusion, para
116       I                     PTRACERS_diffK4(iTracer),       I                     PTRACERS_diffK4(iTracer),
117       I                     KappaRtr,       I                     KappaRtr,
118       I                     pTracer(1-Olx,1-Oly,1,1,1,iTracer),       I                     pTracer(1-Olx,1-Oly,1,1,1,iTracer),
119       I                     GAD_TR1,       I                     GAD_TR,
120       I                     PTRACERS_advScheme(iTracer),calcAdvection,       I                     PTRACERS_advScheme(iTracer),calcAdvection,
121       U                     rFlx(1-Olx,1-Oly,1,iTracer),       U                     rFlx(1-Olx,1-Oly,1,iTracer),
122       U                     gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                     gPtr(1-Olx,1-Oly,1,1,1,iTracer),
123       I                     myThid )       I                     myThid )
124    
125  C External forcing term(s)  C External forcing term(s)
126    cswdptr - add--
127    #ifndef PTRACERS_SEPERATE_FORCING
128    cswdptr - end add ---
129         IF ( forcing_In_AB )         IF ( forcing_In_AB )
130       &   CALL PTRACERS_FORCING(       &   CALL PTRACERS_FORCING(
131       I                        bi,bj,k,iTracer,       I                        bi,bj,k,iTracer,
132       U                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),
133       I                        myIter,myTime,myThid)       I                        myIter,myTime,myThid)
134    cswdptr --add---
135    #endif
136    cswdptr -- end add ---
137    
138  C If using Adams-Bashforth II, then extrapolate tendancies  C If using Adams-Bashforth II, then extrapolate tendancies
139        IF ( PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND        IF ( PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND
# Line 132  C If using Adams-Bashforth II, then extr Line 147  C If using Adams-Bashforth II, then extr
147        ENDIF        ENDIF
148    
149  C External forcing term(s)  C External forcing term(s)
150    cswdptr - add--
151    #ifndef PTRACERS_SEPERATE_FORCING
152    cswdptr - end add ---
153         IF ( .NOT.forcing_In_AB )         IF ( .NOT.forcing_In_AB )
154       &   CALL PTRACERS_FORCING(       &   CALL PTRACERS_FORCING(
155       I                        bi,bj,k,iTracer,       I                        bi,bj,k,iTracer,
156       U                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                        gPtr(1-Olx,1-Oly,1,1,1,iTracer),
157       I                        myIter,myTime,myThid)       I                        myIter,myTime,myThid)
158    cswdptr - add--
159    #endif
160    cswdptr -- end add ---
161    
162  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
163  C Account for change in level thickness  C Account for change in level thickness
# Line 145  C Account for change in level thickness Line 166  C Account for change in level thickness
166       I                          bi,bj,K,       I                          bi,bj,K,
167       U                          gPtr(1-Olx,1-Oly,1,1,1,iTracer),       U                          gPtr(1-Olx,1-Oly,1,1,1,iTracer),
168       I                          myThid )       I                          myThid )
169            IF ( PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND
170         &   .OR.PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD
171         &   .OR.PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH )
172         &  CALL FREESURF_RESCALE_G(
173         I                          bi,bj,K,
174         U                          gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer),
175         I                          myThid )
176        ENDIF        ENDIF
177  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
178    

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

  ViewVC Help
Powered by ViewVC 1.1.22