59 |
C == Local variables == |
C == Local variables == |
60 |
C i,j :: Loop counters |
C i,j :: Loop counters |
61 |
INTEGER i,j |
INTEGER i,j |
|
_RL zero, one, half |
|
62 |
_RL ddRloc, ratioRm, ratioRp |
_RL ddRloc, ratioRm, ratioRp |
|
PARAMETER ( zero= 0. _d 0 , one= 1. _d 0 , half= .5 _d 0 ) |
|
63 |
#ifdef NONLIN_FRSURF |
#ifdef NONLIN_FRSURF |
64 |
_RL facP, dPhiRef |
_RL facP, dPhiRef |
65 |
#endif /* NONLIN_FRSURF */ |
#endif /* NONLIN_FRSURF */ |
73 |
|
|
74 |
C-- Initialise to zero (otherwise phi0surf accumulate over land) |
C-- Initialise to zero (otherwise phi0surf accumulate over land) |
75 |
IF ( k.EQ.1 ) THEN |
IF ( k.EQ.1 ) THEN |
76 |
DO j=1-Oly,sNy+Oly |
DO j=1-OLy,sNy+OLy |
77 |
DO i=1-Olx,sNx+Olx |
DO i=1-OLx,sNx+OLx |
78 |
phiHydLow(i,j,bi,bj) = 0. _d 0 |
phiHydLow(i,j,bi,bj) = 0. _d 0 |
79 |
ENDDO |
ENDDO |
80 |
ENDDO |
ENDDO |
96 |
ELSE |
ELSE |
97 |
C -- Finite Difference Form |
C -- Finite Difference Form |
98 |
|
|
99 |
ratioRm = one |
ratioRm = oneRL |
100 |
ratioRp = one |
ratioRp = oneRL |
101 |
IF (k.GT.1 ) ratioRm = half*drC(k)/(rF(k)-rC(k)) |
IF (k.GT.1 ) ratioRm = halfRL*drC(k)/(rF(k)-rC(k)) |
102 |
IF (k.LT.Nr) ratioRp = half*drC(k+1)/(rC(k)-rF(k+1)) |
IF (k.LT.Nr) ratioRp = halfRL*drC(k+1)/(rC(k)-rF(k+1)) |
103 |
|
|
104 |
DO j=jMin,jMax |
DO j=jMin,jMax |
105 |
DO i=iMin,iMax |
DO i=iMin,iMax |
106 |
IF ( k .EQ. kLowC(i,j,bi,bj) ) THEN |
IF ( k .EQ. kLowC(i,j,bi,bj) ) THEN |
107 |
ddRloc = rC(k)-R_low(i,j,bi,bj) |
ddRloc = rC(k)-R_low(i,j,bi,bj) |
108 |
phiHydLow(i,j,bi,bj) = phiHydC(i,j) |
phiHydLow(i,j,bi,bj) = phiHydC(i,j) |
109 |
& +( MIN(zero,ddRloc)*ratioRm |
& +( MIN(zeroRL,ddRloc)*ratioRm |
110 |
& +MAX(zero,ddRloc)*ratioRp |
& +MAX(zeroRL,ddRloc)*ratioRp |
111 |
& )*gravity*alphRho(i,j)*recip_rhoConst |
& )*gravity*alphRho(i,j)*recip_rhoConst |
112 |
ENDIF |
ENDIF |
113 |
ENDDO |
ENDDO |
145 |
& - phi0surf(i,j,bi,bj) |
& - phi0surf(i,j,bi,bj) |
146 |
phiHydLow(i,j,bi,bj) = |
phiHydLow(i,j,bi,bj) = |
147 |
& phiHydLow(i,j,bi,bj)*facP |
& phiHydLow(i,j,bi,bj)*facP |
148 |
& + MAX( dPhiRef, zero )*( facP - 1. _d 0 ) |
& + MAX( dPhiRef, zeroRL )*( facP - 1. _d 0 ) |
149 |
& + phi0surf(i,j,bi,bj) |
& + phi0surf(i,j,bi,bj) |
150 |
ENDDO |
ENDDO |
151 |
ENDDO |
ENDDO |