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

Annotation 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 - (hide 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 adcroft 1.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