/[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.4 - (show annotations) (download)
Mon Sep 10 13:09:04 2001 UTC (22 years, 8 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint40pre9, checkpoint40
Changes since 1.3: +3 -3 lines
Added third dimension for DST method.

1 C $Header: /u/gcmpack/models/MITgcmUV/pkg/generic_advdiff/gad_fluxlimit_adv_r.F,v 1.3 2001/09/10 01:22:48 adcroft Exp $
2 C $Name: $
3
4 #include "GAD_OPTIONS.h"
5
6 SUBROUTINE GAD_FLUXLIMIT_ADV_R(
7 I bi_arg,bj_arg,k,dTarg,
8 I rTrans, wVel,
9 I tracer,
10 O wT,
11 I myThid )
12 C /==========================================================\
13 C | SUBROUTINE GAD_FLUXLIMIT_ADV_R |
14 C | o Compute vertical advective Flux of Tracer using |
15 C | Flux Limiter Scheme |
16 C |==========================================================|
17 IMPLICIT NONE
18
19 C == GLobal variables ==
20 #include "SIZE.h"
21 #include "GRID.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24
25 C == Routine arguments ==
26 INTEGER bi_arg,bj_arg,k
27 _RL dTarg
28 _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
29 _RL wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
30 _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
31 _RL wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
32 INTEGER myThid
33
34 C == Local variables ==
35 INTEGER i,j,kp1,km1,km2,bi,bj
36 _RL Cr,Rjm,Rj,Rjp
37 #include "GAD_FLUX_LIMITER.h"
38
39 IF (.NOT. multiDimAdvection) THEN
40 C If using the standard time-stepping/advection schemes (ie. AB-II)
41 C then the data-structures are all global arrays
42 bi=bi_arg
43 bj=bj_arg
44 ELSE
45 C otherwise if using the multi-dimensional advection schemes
46 C then the data-structures are all local arrays except
47 C for maskC(...) and wVel(...)
48 bi=1
49 bj=1
50 ENDIF
51
52 km2=MAX(1,k-2)
53 km1=MAX(1,k-1)
54 kp1=MIN(Nr,k+1)
55
56 IF ( k.GT.Nr) THEN
57 DO j=1-Oly,sNy+Oly
58 DO i=1-Olx,sNx+Olx
59 wT(i,j) = 0.
60 ENDDO
61 ENDDO
62 ELSE
63 DO j=1-Oly,sNy+Oly
64 DO i=1-Olx,sNx+Olx
65 Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))
66 & *maskC(i,j,kp1,bi,bj)
67 Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,kM1,bi,bj))
68 Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,kM2,bi,bj))
69 & *maskC(i,j,km2,bi,bj)
70 IF (Rj.NE.0.) THEN
71 IF (rTrans(i,j).LT.0.) THEN
72 Cr=Rjm/Rj
73 ELSE
74 Cr=Rjp/Rj
75 ENDIF
76 ELSE
77 IF (rTrans(i,j).LT.0.) THEN
78 Cr=Rjm*1.E20
79 ELSE
80 Cr=Rjp*1.E20
81 ENDIF
82 ENDIF
83 Cr=Limiter(Cr)
84 wT(i,j) = maskC(i,j,kM1,bi_arg,bj_arg)*(
85 & rTrans(i,j)*
86 & (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0
87 & +(ABS(rTrans(i,j))*(1-Cr)
88 & +rTrans(i,j)*wVel(i,j,k,bi_arg,bj_arg)*dTarg*recip_drC(k)
89 & *Cr
90 & )*Rj*0.5 _d 0 )
91 ENDDO
92 ENDDO
93 ENDIF
94
95 RETURN
96 END

  ViewVC Help
Powered by ViewVC 1.1.22