109 |
ENDDO |
ENDDO |
110 |
ENDDO |
ENDDO |
111 |
ENDDO |
ENDDO |
112 |
|
#ifdef LETS_MAKE_JAM |
113 |
_GLOBAL_MAX_R8( rhsMax, myThid ) |
_GLOBAL_MAX_R8( rhsMax, myThid ) |
114 |
|
C rhsMax=1. |
115 |
|
#else |
116 |
|
_GLOBAL_MAX_R8( rhsMax, myThid ) |
117 |
|
#endif |
118 |
rhsNorm = 1. _d 0 |
rhsNorm = 1. _d 0 |
119 |
IF ( rhsMax .NE. 0. ) rhsNorm = 1. _d 0 / rhsMax |
IF ( rhsMax .NE. 0. ) rhsNorm = 1. _d 0 / rhsMax |
120 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
166 |
ENDDO |
ENDDO |
167 |
ENDDO |
ENDDO |
168 |
C _EXCH_XY_R8( cg2d_r, myThid ) |
C _EXCH_XY_R8( cg2d_r, myThid ) |
169 |
|
#ifdef LETS_MAKE_JAM |
170 |
|
CALL EXCH_XY_O1_R8_JAM( cg2d_r ) |
171 |
|
#else |
172 |
OLw = 1 |
OLw = 1 |
173 |
OLe = 1 |
OLe = 1 |
174 |
OLn = 1 |
OLn = 1 |
180 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
181 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
182 |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
183 |
|
#endif |
184 |
C _EXCH_XY_R8( cg2d_s, myThid ) |
C _EXCH_XY_R8( cg2d_s, myThid ) |
185 |
|
#ifdef LETS_MAKE_JAM |
186 |
|
CALL EXCH_XY_O1_R8_JAM( cg2d_s ) |
187 |
|
#else |
188 |
OLw = 1 |
OLw = 1 |
189 |
OLe = 1 |
OLe = 1 |
190 |
OLn = 1 |
OLn = 1 |
196 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
197 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
198 |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
199 |
|
#endif |
200 |
_GLOBAL_SUM_R8( sumRHS, myThid ) |
_GLOBAL_SUM_R8( sumRHS, myThid ) |
201 |
C WRITE(6,*) ' mythid, err = ', mythid, SQRT(err) |
C WRITE(6,*) ' mythid, err = ', mythid, SQRT(err) |
202 |
_GLOBAL_SUM_R8( err , myThid ) |
_GLOBAL_SUM_R8( err , myThid ) |
268 |
C-- Do exchanges that require messages i.e. between |
C-- Do exchanges that require messages i.e. between |
269 |
C-- processes. |
C-- processes. |
270 |
C _EXCH_XY_R8( cg2d_s, myThid ) |
C _EXCH_XY_R8( cg2d_s, myThid ) |
271 |
|
#ifdef LETS_MAKE_JAM |
272 |
|
CALL EXCH_XY_O1_R8_JAM( cg2d_s ) |
273 |
|
#else |
274 |
OLw = 1 |
OLw = 1 |
275 |
OLe = 1 |
OLe = 1 |
276 |
OLn = 1 |
OLn = 1 |
282 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
283 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
284 |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
285 |
|
#endif |
286 |
|
|
287 |
C== Evaluate laplace operator on conjugate gradient vector |
C== Evaluate laplace operator on conjugate gradient vector |
288 |
C== q = A.s |
C== q = A.s |
337 |
actualResidual = err |
actualResidual = err |
338 |
IF ( err .LT. cg2dTargetResidual ) GOTO 11 |
IF ( err .LT. cg2dTargetResidual ) GOTO 11 |
339 |
C _EXCH_XY_R8(cg2d_r, myThid ) |
C _EXCH_XY_R8(cg2d_r, myThid ) |
340 |
|
#ifdef LETS_MAKE_JAM |
341 |
|
CALL EXCH_XY_O1_R8_JAM( cg2d_r ) |
342 |
|
#else |
343 |
OLw = 1 |
OLw = 1 |
344 |
OLe = 1 |
OLe = 1 |
345 |
OLn = 1 |
OLn = 1 |
351 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
352 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
353 |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
354 |
|
#endif |
355 |
|
|
356 |
10 CONTINUE |
10 CONTINUE |
357 |
11 CONTINUE |
11 CONTINUE |