66 |
REAL rhsMax |
REAL rhsMax |
67 |
REAL rhsNorm |
REAL rhsNorm |
68 |
|
|
69 |
|
INTEGER OLw |
70 |
|
INTEGER OLe |
71 |
|
INTEGER OLn |
72 |
|
INTEGER OLs |
73 |
|
INTEGER exchWidthX |
74 |
|
INTEGER exchWidthY |
75 |
|
INTEGER myNz |
76 |
|
|
77 |
|
|
78 |
CcnhDebugStarts |
CcnhDebugStarts |
79 |
CHARACTER*(MAX_LEN_FNAM) suff |
CHARACTER*(MAX_LEN_FNAM) suff |
80 |
CcnhDebugEnds |
CcnhDebugEnds |
158 |
ENDDO |
ENDDO |
159 |
ENDDO |
ENDDO |
160 |
ENDDO |
ENDDO |
161 |
_EXCH_XY_R8( cg2d_r, myThid ) |
C _EXCH_XY_R8( cg2d_r, myThid ) |
162 |
_EXCH_XY_R8( cg2d_s, myThid ) |
OLw = 1 |
163 |
|
OLe = 1 |
164 |
|
OLn = 1 |
165 |
|
OLs = 1 |
166 |
|
exchWidthX = 1 |
167 |
|
exchWidthY = 1 |
168 |
|
myNz = 1 |
169 |
|
CALL EXCH_RL( cg2d_r, |
170 |
|
I OLw, OLe, OLs, OLn, myNz, |
171 |
|
I exchWidthX, exchWidthY, |
172 |
|
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
173 |
|
C _EXCH_XY_R8( cg2d_s, myThid ) |
174 |
|
OLw = 1 |
175 |
|
OLe = 1 |
176 |
|
OLn = 1 |
177 |
|
OLs = 1 |
178 |
|
exchWidthX = 1 |
179 |
|
exchWidthY = 1 |
180 |
|
myNz = 1 |
181 |
|
CALL EXCH_RL( cg2d_s, |
182 |
|
I OLw, OLe, OLs, OLn, myNz, |
183 |
|
I exchWidthX, exchWidthY, |
184 |
|
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
185 |
sumRHSBuf(1,myThid) = sumRHS |
sumRHSBuf(1,myThid) = sumRHS |
186 |
_GLOBAL_SUM_R8( sumRHSBuf , sumRHS, myThid ) |
_GLOBAL_SUM_R8( sumRHSBuf , sumRHS, myThid ) |
187 |
sumRHS = sumRHSBuf(1,1) |
sumRHS = sumRHSBuf(1,1) |
189 |
C WRITE(6,*) ' mythid, err = ', mythid, SQRT(err) |
C WRITE(6,*) ' mythid, err = ', mythid, SQRT(err) |
190 |
_GLOBAL_SUM_R8( errBuf , err , myThid ) |
_GLOBAL_SUM_R8( errBuf , err , myThid ) |
191 |
err = errBuf(1,1) |
err = errBuf(1,1) |
192 |
|
|
193 |
|
_BEGIN_MASTER( myThid ) |
194 |
write(0,*) 'cg2d: Sum(rhs) = ',sumRHS |
write(0,*) 'cg2d: Sum(rhs) = ',sumRHS |
195 |
|
_END_MASTER( ) |
196 |
|
|
197 |
actualIts = 0 |
actualIts = 0 |
198 |
actualResidual = SQRT(err) |
actualResidual = SQRT(err) |
255 |
|
|
256 |
C-- Do exchanges that require messages i.e. between |
C-- Do exchanges that require messages i.e. between |
257 |
C-- processes. |
C-- processes. |
258 |
_EXCH_XY_R8( cg2d_s, myThid ) |
C _EXCH_XY_R8( cg2d_s, myThid ) |
259 |
|
OLw = 1 |
260 |
|
OLe = 1 |
261 |
|
OLn = 1 |
262 |
|
OLs = 1 |
263 |
|
exchWidthX = 1 |
264 |
|
exchWidthY = 1 |
265 |
|
myNz = 1 |
266 |
|
CALL EXCH_RL( cg2d_s, |
267 |
|
I OLw, OLe, OLs, OLn, myNz, |
268 |
|
I exchWidthX, exchWidthY, |
269 |
|
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
270 |
|
|
271 |
|
|
272 |
C== Evaluate laplace operator on conjugate gradient vector |
C== Evaluate laplace operator on conjugate gradient vector |
273 |
C== q = A.s |
C== q = A.s |
325 |
actualIts = it2d |
actualIts = it2d |
326 |
actualResidual = err |
actualResidual = err |
327 |
IF ( err .LT. cg2dTargetResidual ) GOTO 11 |
IF ( err .LT. cg2dTargetResidual ) GOTO 11 |
328 |
_EXCH_XY_R8(cg2d_r, myThid ) |
C _EXCH_XY_R8(cg2d_r, myThid ) |
329 |
|
OLw = 1 |
330 |
|
OLe = 1 |
331 |
|
OLn = 1 |
332 |
|
OLs = 1 |
333 |
|
exchWidthX = 1 |
334 |
|
exchWidthY = 1 |
335 |
|
myNz = 1 |
336 |
|
CALL EXCH_RL( cg2d_r, |
337 |
|
I OLw, OLe, OLs, OLn, myNz, |
338 |
|
I exchWidthX, exchWidthY, |
339 |
|
I FORWARD_SIMULATION, EXCH_IGNORE_CORNERS, myThid ) |
340 |
|
|
341 |
10 CONTINUE |
10 CONTINUE |
342 |
11 CONTINUE |
11 CONTINUE |
343 |
|
|