21 |
C F^r_{adv} = W \overline{ \theta - \frac{1}{6} \delta_{kk} \theta }^k |
C F^r_{adv} = W \overline{ \theta - \frac{1}{6} \delta_{kk} \theta }^k |
22 |
C + \frac{1}{12} |W| \delta_{kkk} \theta |
C + \frac{1}{12} |W| \delta_{kkk} \theta |
23 |
C \end{equation*} |
C \end{equation*} |
24 |
C Near boundaries, reduces to second order when flow is away from boundary |
C Near boundaries, mask all the gradients ==> still 3rd O. |
|
C and third order when flow is towards boundary. |
|
25 |
|
|
26 |
C !USES: =============================================================== |
C !USES: =============================================================== |
27 |
IMPLICIT NONE |
IMPLICIT NONE |
51 |
C km2 :: =max( k-2 , 1 ) |
C km2 :: =max( k-2 , 1 ) |
52 |
C Rjm,Rj,Rjp :: differences at i-1,i,i+1 |
C Rjm,Rj,Rjp :: differences at i-1,i,i+1 |
53 |
C Rjjm,Rjjp :: second differences at i-1,i |
C Rjjm,Rjjp :: second differences at i-1,i |
|
C maskP1 :: =1 for k<Nr, =0 for k>=Nr |
|
54 |
INTEGER i,j,kp1,km1,km2 |
INTEGER i,j,kp1,km1,km2 |
55 |
_RL Rjm,Rj,Rjp,Rjjm,Rjjp |
_RL Rjm,Rj,Rjp,Rjjm,Rjjp |
|
_RL maskM2, maskP1 |
|
56 |
CEOP |
CEOP |
57 |
|
|
58 |
km2=MAX(1,k-2) |
km2=MAX(1,k-2) |
59 |
km1=MAX(1,k-1) |
km1=MAX(1,k-1) |
60 |
kp1=MIN(Nr,k+1) |
kp1=MIN(Nr,k+1) |
|
maskM2 = 1. |
|
|
maskP1 = 1. |
|
|
IF (k.LE.2) maskM2 = 0. |
|
|
IF (k.GE.Nr) maskP1 = 0. |
|
61 |
|
|
62 |
IF ( k.EQ.1 .OR. k.GT.Nr ) THEN |
IF ( k.EQ.1 .OR. k.GT.Nr ) THEN |
63 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
69 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
70 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
71 |
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)) |
72 |
c & *maskC(i,j,kp1,bi,bj) |
& *maskC(i,j,kp1,bi,bj) |
73 |
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)) |
74 |
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)) |
75 |
c & *maskC(i,j,km2,bi,bj) |
& *maskC(i,j,km2,bi,bj) |
76 |
C- jmc: mask not needed here above if Rjjp & Rjjm & rTrans are masked |
Rjjp=Rjp-Rj |
77 |
Rjjp=(Rjp-Rj)*maskC(i,j,kp1,bi,bj)*maskP1 |
Rjjm=Rj-Rjm |
|
Rjjm=(Rj-Rjm)*maskC(i,j,km2,bi,bj)*maskM2 |
|
78 |
wT(i,j) = maskC(i,j,km1,bi,bj)*( |
wT(i,j) = maskC(i,j,km1,bi,bj)*( |
79 |
& rTrans(i,j)*( |
& rTrans(i,j)*( |
80 |
& (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 |