/[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.4 - (hide 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 adcroft 1.4 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 jmc 1.2 C $Name: $
3 adcroft 1.1
4     #include "GAD_OPTIONS.h"
5    
6     SUBROUTINE GAD_FLUXLIMIT_ADV_R(
7 adcroft 1.3 I bi_arg,bj_arg,k,dTarg,
8 adcroft 1.1 I rTrans, wVel,
9     I tracer,
10     O wT,
11     I myThid )
12 jmc 1.2 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 adcroft 1.1 IMPLICIT NONE
18    
19     C == GLobal variables ==
20     #include "SIZE.h"
21     #include "GRID.h"
22 adcroft 1.3 #include "EEPARAMS.h"
23     #include "PARAMS.h"
24 adcroft 1.1
25     C == Routine arguments ==
26 adcroft 1.3 INTEGER bi_arg,bj_arg,k
27     _RL dTarg
28 adcroft 1.1 _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 adcroft 1.3 INTEGER i,j,kp1,km1,km2,bi,bj
36 adcroft 1.1 _RL Cr,Rjm,Rj,Rjp
37     #include "GAD_FLUX_LIMITER.h"
38    
39 adcroft 1.3 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 adcroft 1.1 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 jmc 1.2 & *maskC(i,j,km2,bi,bj)
70 adcroft 1.1 IF (Rj.NE.0.) THEN
71 adcroft 1.4 IF (rTrans(i,j).LT.0.) THEN
72 adcroft 1.1 Cr=Rjm/Rj
73     ELSE
74     Cr=Rjp/Rj
75     ENDIF
76     ELSE
77 adcroft 1.4 IF (rTrans(i,j).LT.0.) THEN
78 adcroft 1.1 Cr=Rjm*1.E20
79     ELSE
80     Cr=Rjp*1.E20
81     ENDIF
82     ENDIF
83     Cr=Limiter(Cr)
84 adcroft 1.3 wT(i,j) = maskC(i,j,kM1,bi_arg,bj_arg)*(
85 jmc 1.2 & rTrans(i,j)*
86 adcroft 1.1 & (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0
87 jmc 1.2 & +(ABS(rTrans(i,j))*(1-Cr)
88 adcroft 1.3 & +rTrans(i,j)*wVel(i,j,k,bi_arg,bj_arg)*dTarg*recip_drC(k)
89 jmc 1.2 & *Cr
90     & )*Rj*0.5 _d 0 )
91 adcroft 1.1 ENDDO
92     ENDDO
93     ENDIF
94    
95     RETURN
96     END

  ViewVC Help
Powered by ViewVC 1.1.22