/[MITgcm]/MITgcm/model/src/calc_gtr1.F
ViewVC logotype

Contents of /MITgcm/model/src/calc_gtr1.F

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


Revision 1.11 - (show annotations) (download)
Wed Jan 7 21:18:01 2004 UTC (20 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint53f_post, checkpoint53b_pre, checkpoint52l_pre, hrcube4, hrcube5, checkpoint52j_post, checkpoint52e_post, checkpoint53c_post, checkpoint53d_post, checkpoint52j_pre, checkpoint52n_post, checkpoint52m_post, checkpoint53a_post, checkpoint52l_post, checkpoint52k_post, checkpoint53b_post, checkpoint53, checkpoint52f_post, checkpoint53d_pre, checkpoint52i_post, checkpoint52i_pre, checkpoint52h_pre, checkpoint52f_pre, hrcube_1, hrcube_2, hrcube_3
Changes since 1.10: +9 -5 lines
rewrite (as in MultiDimAdvec) explicit tracer stepping (gad_calc_rhs.F)
 to work with implicit vertical advection and AB

1 C $Header: /u/gcmpack/MITgcm/model/src/calc_gtr1.F,v 1.10 2003/10/09 04:19:18 edhill Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: CALC_GTR1
9 C !INTERFACE:
10 SUBROUTINE CALC_GTR1(
11 I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
12 I xA,yA,uTrans,vTrans,rTrans,rTransKp1,maskUp,
13 I KappaRT,
14 U fVerT,
15 I myTime,myIter,myThid )
16 C !DESCRIPTION: \bv
17 C *==========================================================*
18 C | SUBROUTINE CALC_GTR1
19 C | o Calculate the passive tracer tendency terms.
20 C *==========================================================*
21
22 C !USES:
23 IMPLICIT NONE
24 C == GLobal variables ==
25 #include "SIZE.h"
26 #include "DYNVARS.h"
27 #include "EEPARAMS.h"
28 #include "PARAMS.h"
29 #include "GAD.h"
30 #ifdef ALLOW_PASSIVE_TRACER
31 #include "TR1.h"
32 #endif
33
34 C !INPUT/OUTPUT PARAMETERS:
35 C == Routine arguments ==
36 C fVerT :: Flux of temperature (T) in the vertical
37 C direction at the upper(U) and lower(D) faces of a cell.
38 C maskUp :: Land mask used to denote base of the domain.
39 C xA :: Tracer cell face area normal to X
40 C yA :: Tracer cell face area normal to X
41 C uTrans :: Zonal volume transport through cell face
42 C vTrans :: Meridional volume transport through cell face
43 C rTrans :: Vertical volume transport at interface k
44 C rTransKp1 :: Vertical volume transport at inteface k+1
45 C bi, bj, iMin, iMax, jMin, jMax :: Range of points for which calculation
46 C results will be set.
47 C myThid - Instance number for this innvocation of CALC_GT
48 _RL fVerT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
49 _RS xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50 _RS yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51 _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
52 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
53 _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
54 _RL rTransKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
55 _RS maskUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
56 _RL KappaRT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
57 INTEGER k,kUp,kDown,kM1
58 INTEGER bi,bj,iMin,iMax,jMin,jMax
59 _RL myTime
60 INTEGER myIter
61 INTEGER myThid
62
63 CEOP
64
65 ceh3 needs an IF ( usePASSIVE_TRACER ) THEN
66
67 #ifdef ALLOW_PASSIVE_TRACER
68 C === Local variables ===
69 LOGICAL calcAdvection
70
71 #ifdef ALLOW_AUTODIFF_TAMC
72 C-- only the kUp part of fverT is set in this subroutine
73 C-- the kDown is still required
74 fVerT(1,1,kDown) = fVerT(1,1,kDown)
75 #endif
76
77 calcAdvection = .NOT.tr1_MultiDimAdvec
78 CALL GAD_CALC_RHS(
79 I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
80 I xA,yA,uTrans,vTrans,rTrans,rTransKp1,maskUp,
81 I uVel, vVel, wVel,
82 I diffKhT, diffK4T, KappaRT, tr1,
83 I GAD_TR1, tracerAdvScheme,
84 I calcAdvection, .FALSE.,
85 U fVerT, gTr1,
86 I myThid )
87
88 #ifdef INCLUDE_TR_FORCING_CODE
89 C-- External forcing term(s) inside Adams-Bashforth:
90 IF ( forcing_In_AB )
91 & CALL EXTERNAL_FORCING_TR(
92 I iMin,iMax,jMin,jMax,bi,bj,k,
93 I myTime,myThid)
94 #endif /* INCLUDE_TR_FORCING_CODE */
95
96 IF ( tr1_AdamsBashforth ) THEN
97 CALL ADAMS_BASHFORTH2(
98 I bi, bj, K,
99 U gTr1, gTr1nm1,
100 I myIter, myThid )
101 ENDIF
102
103 #ifdef INCLUDE_TR_FORCING_CODE
104 C-- External forcing term(s) outside Adams-Bashforth:
105 IF ( .NOT.forcing_In_AB )
106 & CALL EXTERNAL_FORCING_TR(
107 I iMin,iMax,jMin,jMax,bi,bj,k,
108 I myTime,myThid)
109 #endif /* INCLUDE_TR_FORCING_CODE */
110
111 #ifdef NONLIN_FRSURF
112 IF (nonlinFreeSurf.GT.0) THEN
113 CALL FREESURF_RESCALE_G(
114 I bi, bj, K,
115 U gTr1,
116 I myThid )
117 IF ( tr1_AdamsBashforth )
118 & CALL FREESURF_RESCALE_G(
119 I bi, bj, K,
120 U gTr1nm1,
121 I myThid )
122 ENDIF
123 #endif /* NONLIN_FRSURF */
124
125 #endif /* ALLOW_PASSIVE_TRACER */
126
127 RETURN
128 END

  ViewVC Help
Powered by ViewVC 1.1.22