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

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

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


Revision 1.2 - (hide annotations) (download)
Thu Dec 16 23:20:48 2004 UTC (19 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57d_post, checkpoint57b_post, checkpoint57c_pre, checkpoint57e_post, eckpoint57e_pre, checkpoint57c_post
Changes since 1.1: +3 -5 lines
change argument list of S/R impldiff.F: tracerIdentity replace deltaT
 - allow to implement deltaT function of level k
 - make diagnostics easier

1 jmc 1.2 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_implicit.F,v 1.1 2004/12/05 22:22:06 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "PTRACERS_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: PTRACERS_IMPLICIT
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE PTRACERS_IMPLICIT(
11     U kappaRk,
12     I bi, bj, myTime, myIter, myThid )
13    
14     C !DESCRIPTION:
15     C Calls the implicit vertical advection/diffusion routine
16     C for each passive tracer.
17    
18     C !USES: ===============================================================
19     IMPLICIT NONE
20     #include "SIZE.h"
21     #include "EEPARAMS.h"
22     #include "PTRACERS_SIZE.h"
23     #include "PTRACERS.h"
24     #include "PARAMS.h"
25     #include "GRID.h"
26     #include "GAD.h"
27     #include "DYNVARS.h"
28     #ifdef ALLOW_AUTODIFF_TAMC
29     # include "tamc.h"
30     # include "tamc_keys.h"
31     #endif
32    
33     C !INPUT PARAMETERS: ===================================================
34     C bi,bj :: tile indices
35     C myTime :: time in simulation
36     C myIter :: iteration number in simulation
37     C myThid :: thread number
38     INTEGER bi,bj
39     _RL myTime
40     INTEGER myIter
41     INTEGER myThid
42    
43     C !OUTPUT PARAMETERS: ==================================================
44     C KappaRk :: vertical diffusion coefficient
45     _RL kappaRk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
46    
47     #ifdef ALLOW_PTRACERS
48    
49     C !LOCAL VARIABLES: ====================================================
50     C iTracer :: tracer index
51     INTEGER iTracer
52     INTEGER iMin,iMax,jMin,jMax
53     INTEGER GAD_TR
54     CEOP
55    
56     iMin=0
57     iMax=sNx+1
58     jMin=0
59     jMax=sNy+1
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     GAD_TR = GAD_TR1 + iTracer - 1
82     IF ( implicitDiffusion ) THEN
83     CALL CALC_3D_DIFFUSIVITY(
84     I bi,bj,iMin,iMax,jMin,jMax,
85     I GAD_TR,
86     I PTRACERS_useGMRedi(iTracer),PTRACERS_useKPP(iTracer),
87     O kappaRk,
88     I myThid)
89     ENDIF
90    
91     #ifdef ALLOW_AUTODIFF_TAMC
92     CADJ STORE gPtr(:,:,:,bi,bj,iTracer) = comlev1_bibj_ptracers,
93     CADJ & key=iptrkey, byte=isbyte
94     #endif /* ALLOW_AUTODIFF_TAMC */
95    
96     #ifdef INCLUDE_IMPLVERTADV_CODE
97 jmc 1.2 IF ( PTRACERS_ImplVertAdv(iTracer) ) THEN
98 jmc 1.1
99     CALL GAD_IMPLICIT_R(
100     I PTRACERS_ImplVertAdv(iTracer),
101     I PTRACERS_advScheme(iTracer), GAD_TR,
102     I kappaRk, wVel, pTracer(1-Olx,1-Oly,1,1,1,iTracer),
103     U gPtr(1-Olx,1-Oly,1,1,1,iTracer),
104     I bi, bj, myTime, myIter, myThid )
105    
106     ELSEIF ( implicitDiffusion ) THEN
107     #else /* INCLUDE_IMPLVERTADV_CODE */
108     IF ( implicitDiffusion ) THEN
109     #endif /* INCLUDE_IMPLVERTADV_CODE */
110    
111     CALL IMPLDIFF(
112     I bi, bj, iMin, iMax, jMin, jMax,
113 jmc 1.2 I GAD_TR, kappaRk, recip_HFacC,
114 jmc 1.1 U gPtr(1-Olx,1-Oly,1,1,1,iTracer),
115     I myThid )
116    
117     ENDIF
118     C End of tracer loop
119     ENDDO
120    
121     #endif /* ALLOW_PTRACERS */
122    
123     RETURN
124     END

  ViewVC Help
Powered by ViewVC 1.1.22