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

Contents of /MITgcm/pkg/generic_advdiff/gad_fluxlimit_adv_y.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 (22 years, 11 months 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_Y(
7 I bi,bj,k,deltaT,
8 I vTrans, vVel,
9 I tracer,
10 O vT,
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 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
22 _RL vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
23 _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
24 _RL vT (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 i=1-Olx,sNx+Olx
33 vT(i,1-Oly)=0.
34 ENDDO
35 DO j=1-Oly+1,sNy+Oly
36 DO i=1-Olx,sNx+Olx
37 Rjp=(tracer(i,j+1)-tracer(i,j))*maskS(i,j+1,k,bi,bj)
38 Rj=(tracer(i,j)-tracer(i,j-1))*maskS(i,j,k,bi,bj)
39 Rjm=(tracer(i,j-1)-tracer(i,j-2))*maskS(i,j-1,k,bi,bj)
40 IF (Rj.NE.0.) THEN
41 IF (vTrans(i,j).GT.0) THEN
42 Cr=Rjm/Rj
43 ELSE
44 Cr=Rjp/Rj
45 ENDIF
46 ELSE
47 IF (vTrans(i,j).GT.0) THEN
48 Cr=Rjm*1.E20
49 ELSE
50 Cr=Rjp*1.E20
51 ENDIF
52 ENDIF
53 Cr=Limiter(Cr)
54 vT(i,j) =
55 & vTrans(i,j)*(Tracer(i,j)+Tracer(i,j-1))*0.5 _d 0
56 & -0.5*(
57 & (1-Cr)*ABS(vTrans(i,j))
58 & +vTrans(i,j)*vVel(i,j,k,bi,bj)*deltaT
59 & *recip_dyC(i,j,bi,bj)*Cr
60 & )*Rj
61 ENDDO
62 ENDDO
63
64 RETURN
65 END

  ViewVC Help
Powered by ViewVC 1.1.22