45 |
INTEGER I,J |
INTEGER I,J |
46 |
CEOP |
CEOP |
47 |
|
|
48 |
DO j=1-Oly+1,sNy+Oly |
IF (useEnergyConservingCoriolis) THEN |
49 |
DO i=1-Olx,sNx+Olx-1 |
C Energy conserving discretization |
50 |
|
DO j=1-Oly+1,sNy+Oly |
51 |
|
DO i=1-Olx,sNx+Olx-1 |
52 |
|
vCoriolisTerm(i,j) = |
53 |
|
& -0.5*( _fCori(i, j ,bi,bj) |
54 |
|
& *0.5*( uFld( i , j )+uFld(i+1, j ) ) |
55 |
|
& + _fCori(i,j-1,bi,bj) |
56 |
|
& *0.5*( uFld( i ,j-1)+uFld(i+1,j-1) ) ) |
57 |
|
ENDDO |
58 |
|
ENDDO |
59 |
|
ELSE |
60 |
|
C Original discretization |
61 |
|
DO j=1-Oly+1,sNy+Oly |
62 |
|
DO i=1-Olx,sNx+Olx-1 |
63 |
vCoriolisTerm(i,j) = |
vCoriolisTerm(i,j) = |
64 |
& -0.5*(_fCori(i, j ,bi,bj)+_fCori(i,j-1,bi,bj)) |
& -0.5*(_fCori(i, j ,bi,bj)+_fCori(i,j-1,bi,bj)) |
65 |
& *0.25*( uFld(i, j )+uFld(i+1, j ) |
& *0.25*( uFld(i, j )+uFld(i+1, j ) |
66 |
& +uFld(i,j-1)+uFld(i+1,j-1) |
& +uFld(i,j-1)+uFld(i+1,j-1) |
67 |
& ) |
& ) |
68 |
|
ENDDO |
69 |
|
ENDDO |
70 |
|
ENDIF |
71 |
|
|
72 |
|
IF (useJamartWetPoints) THEN |
73 |
|
C Scale term so that only "wet" points are used |
74 |
|
C Due to: Jamart and Ozer, 1986, JGR 91 (C9), 10,621-10,631 |
75 |
|
C "Numerical Boundary Layers and Spurious Residual Flows" |
76 |
|
DO j=1-Oly+1,sNy+Oly |
77 |
|
DO i=1-Olx,sNx+Olx-1 |
78 |
|
vCoriolisTerm(i,j) = vCoriolisTerm(i,j) |
79 |
|
& *4.d0/max(one, maskW( i , j ,k,bi,bj)+maskW(i+1, j ,k,bi,bj) |
80 |
|
& +maskW( i ,j-1,k,bi,bj)+maskW(i+1,j-1,k,bi,bj) ) |
81 |
|
ENDDO |
82 |
ENDDO |
ENDDO |
83 |
ENDDO |
ENDIF |
84 |
|
|
85 |
RETURN |
RETURN |
86 |
END |
END |