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

Contents of /MITgcm/pkg/generic_advdiff/gad_fluxlimit_adv_x.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_X(
7 I bi,bj,k,deltaT,
8 I uTrans, uVel,
9 I tracer,
10 O uT,
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 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
22 _RL uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
23 _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
24 _RL uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
25 INTEGER myThid
26
27 C == Local variables ==
28 INTEGER i,j
29 _RL Cr,Rjm,Rj,Rjp
30 #include "GAD_FLUX_LIMITER.h"
31
32 DO j=1-Oly,sNy+Oly
33 uT(1-Olx,j)=0.
34 DO i=1-Olx+1,sNx+Olx
35 Rjp=(tracer(i+1,j)-tracer(i,j))*maskW(i+1,j,k,bi,bj)
36 Rj=(tracer(i,j)-tracer(i-1,j))*maskW(i,j,k,bi,bj)
37 Rjm=(tracer(i-1,j)-tracer(i-2,j))*maskW(i-1,j,k,bi,bj)
38 IF (Rj.NE.0.) THEN
39 IF (uTrans(i,j).GT.0) THEN
40 Cr=Rjm/Rj
41 ELSE
42 Cr=Rjp/Rj
43 ENDIF
44 ELSE
45 IF (uTrans(i,j).GT.0) THEN
46 Cr=Rjm*1.E20
47 ELSE
48 Cr=Rjp*1.E20
49 ENDIF
50 ENDIF
51 Cr=Limiter(Cr)
52 uT(i,j) =
53 & uTrans(i,j)*(Tracer(i,j)+Tracer(i-1,j))*0.5 _d 0
54 & -0.5*(
55 & (1-Cr)*ABS(uTrans(i,j))
56 & +uTrans(i,j)*uVel(i,j,k,bi,bj)*deltaT
57 & *recip_dxC(i,j,bi,bj)*Cr
58 & )*Rj
59 ENDDO
60 ENDDO
61
62 RETURN
63 END

  ViewVC Help
Powered by ViewVC 1.1.22