60 |
C bi,bj :: tile indices or (1,1) depending on use |
C bi,bj :: tile indices or (1,1) depending on use |
61 |
C Cr :: slope ratio |
C Cr :: slope ratio |
62 |
C Rjm,Rj,Rjp :: differences at i-1,i,i+1 |
C Rjm,Rj,Rjp :: differences at i-1,i,i+1 |
63 |
|
C wFld :: velocity, vertical component |
64 |
INTEGER i,j,kp1,km1,km2,bi,bj |
INTEGER i,j,kp1,km1,km2,bi,bj |
65 |
_RL Cr,Rjm,Rj,Rjp |
_RL Cr,Rjm,Rj,Rjp |
66 |
|
_RL wFld |
67 |
C Statement function provides Limiter(Cr) |
C Statement function provides Limiter(Cr) |
68 |
#include "GAD_FLUX_LIMITER.h" |
#include "GAD_FLUX_LIMITER.h" |
69 |
CEOP |
CEOP |
94 |
ELSE |
ELSE |
95 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
96 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
97 |
|
|
98 |
|
c wFld = wVel(i,j,k,bi_arg,bj_arg) |
99 |
|
wFld = rTrans(i,j)*recip_rA(i,j,bi_arg,bj_arg) |
100 |
Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj)) |
Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj)) |
101 |
& *maskC(i,j,kp1,bi_arg,bj_arg) |
& *maskC(i,j,kp1,bi_arg,bj_arg) |
102 |
Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,kM1,bi,bj)) |
Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,kM1,bi,bj)) |
103 |
Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,kM2,bi,bj)) |
Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,kM2,bi,bj)) |
104 |
& *maskC(i,j,km2,bi_arg,bj_arg) |
& *maskC(i,j,km2,bi_arg,bj_arg) |
105 |
|
|
106 |
IF (Rj.NE.0.) THEN |
IF (Rj.NE.0.) THEN |
107 |
IF (rTrans(i,j).LT.0.) THEN |
IF (rTrans(i,j).LT.0.) THEN |
108 |
Cr=Rjm/Rj |
Cr=Rjm/Rj |
121 |
& rTrans(i,j)* |
& rTrans(i,j)* |
122 |
& (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0 |
& (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0 |
123 |
& +(ABS(rTrans(i,j))*(1-Cr) |
& +(ABS(rTrans(i,j))*(1-Cr) |
124 |
& +rTrans(i,j)*wVel(i,j,k,bi_arg,bj_arg)*dTarg*recip_drC(k) |
& +rTrans(i,j)*wFld*dTarg*recip_drC(k) |
125 |
& *Cr |
& *Cr |
126 |
& )*Rj*0.5 _d 0 ) |
& )*Rj*0.5 _d 0 ) |
127 |
ENDDO |
ENDDO |