/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_fluxlimit_adv_r.F
ViewVC logotype

Contents of /MITgcm/pkg/generic_advdiff/gad_fluxlimit_adv_r.F

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


Revision 1.1 - (show annotations) (download)
Wed May 30 19:34:48 2001 UTC (23 years ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint40pre1
Added "gad" package. Needs generalizing to allow selection
of advection schemes at run-time and different schemes for
each tracer.

1 C $Header: $
2 C $Name: $
3
4 #include "GAD_OPTIONS.h"
5
6 SUBROUTINE GAD_FLUXLIMIT_ADV_R(
7 I bi,bj,k,deltaT,
8 I rTrans, wVel,
9 I tracer,
10 O wT,
11 I myThid )
12 IMPLICIT NONE
13
14 C == GLobal variables ==
15 #include "SIZE.h"
16 #include "GRID.h"
17
18 C == Routine arguments ==
19 INTEGER bi,bj,k
20 _RL deltaT
21 _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
22 _RL wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
23 _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
24 _RL wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
25 INTEGER myThid
26
27 C == Local variables ==
28 INTEGER i,j,kp1,km1,km2
29 _RL Cr,Rjm,Rj,Rjp
30 #include "GAD_FLUX_LIMITER.h"
31
32 km2=MAX(1,k-2)
33 km1=MAX(1,k-1)
34 kp1=MIN(Nr,k+1)
35
36 IF ( k.GT.Nr) THEN
37 DO j=1-Oly,sNy+Oly
38 DO i=1-Olx,sNx+Olx
39 wT(i,j) = 0.
40 ENDDO
41 ENDDO
42 ELSE
43 DO j=1-Oly,sNy+Oly
44 DO i=1-Olx,sNx+Olx
45 Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))
46 & *maskC(i,j,kp1,bi,bj)
47 Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,kM1,bi,bj))
48 & *maskC(i,j,k,bi,bj)
49 Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,kM2,bi,bj))
50 & *maskC(i,j,km1,bi,bj)
51 IF (Rj.NE.0.) THEN
52 IF (rTrans(i,j).LT.0) THEN
53 Cr=Rjm/Rj
54 ELSE
55 Cr=Rjp/Rj
56 ENDIF
57 ELSE
58 IF (rTrans(i,j).LT.0) THEN
59 Cr=Rjm*1.E20
60 ELSE
61 Cr=Rjp*1.E20
62 ENDIF
63 ENDIF
64 Cr=Limiter(Cr)
65 wT(i,j) =
66 & rTrans(i,j)
67 & *(maskC(i,j,kM1,bi,bj)*
68 & (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0
69 & +(maskC(i,j,k,bi,bj)-maskC(i,j,kM1,bi,bj))*
70 & Tracer(i,j,k,bi,bj)
71 & )
72 & +maskC(i,j,km1,bi,bj)*0.5*(
73 & (1-Cr)*ABS(rTrans(i,j))
74 & +rTrans(i,j)*wVel(i,j,k,bi,bj)*deltaT
75 & *recip_drC(k)*Cr
76 & )*Rj
77 ENDDO
78 ENDDO
79 ENDIF
80
81 RETURN
82 END

  ViewVC Help
Powered by ViewVC 1.1.22