/[MITgcm]/MITgcm/model/src/cg2d.F
ViewVC logotype

Diff of /MITgcm/model/src/cg2d.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.51 by jmc, Tue Apr 28 18:01:14 2009 UTC revision 1.52 by jmc, Sat May 16 13:42:15 2009 UTC
# Line 100  c     INTEGER ks Line 100  c     INTEGER ks
100        _RL    rhsMax        _RL    rhsMax
101        _RL    rhsNorm        _RL    rhsNorm
102  #ifdef CG2D_SINGLECPU_SUM  #ifdef CG2D_SINGLECPU_SUM
       COMMON /CG2D_SINGLECPU_BUF/ localBuf  
103        _RL    localBuf(1:sNx,1:sNy,nSx,nSy)        _RL    localBuf(1:sNx,1:sNy,nSx,nSy)
104  #endif  #endif
105        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
# Line 169  C     CALL WRITE_FLD_XY_RL (  'cg2d_b.', Line 168  C     CALL WRITE_FLD_XY_RL (  'cg2d_b.',
168  CcnhDebugEnds  CcnhDebugEnds
169    
170  C--   Initial residual calculation  C--   Initial residual calculation
       err    = 0. _d 0  
       sumRHS = 0. _d 0  
171        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
172         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
173          sumRHStile(bi,bj) = 0. _d 0          sumRHStile(bi,bj) = 0. _d 0
# Line 206  c    &    ) Line 203  c    &    )
203  #endif  #endif
204           ENDDO           ENDDO
205          ENDDO          ENDDO
 c       sumRHS = sumRHS + sumRHStile(bi,bj)  
 c       err    = err    + errTile(bi,bj)  
206         ENDDO         ENDDO
207        ENDDO        ENDDO
208  #ifdef LETS_MAKE_JAM  #ifdef LETS_MAKE_JAM
# Line 221  c       err    = err    + errTile(bi,bj) Line 216  c       err    = err    + errTile(bi,bj)
216        CALL EXCH_XY_RL( cg2d_s, myThid )        CALL EXCH_XY_RL( cg2d_s, myThid )
217  #endif  #endif
218  #ifdef CG2D_SINGLECPU_SUM  #ifdef CG2D_SINGLECPU_SUM
219        CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, err, myThid)        CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, err, 0, 0, myThid)
220        DO bj=myByLo(myThid),myByHi(myThid)        CALL GLOBAL_SUM_SINGLECPU_RL(cg2d_b, sumRHS, OLx, OLy, myThid)
        DO bi=myBxLo(myThid),myBxHi(myThid)  
         DO J=1,sNy  
          DO I=1,sNx  
           localBuf(I,J,bi,bj) = cg2d_b(I,J,bi,bj)  
          ENDDO  
         ENDDO  
        ENDDO  
       ENDDO  
       CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, sumRHS, myThid)  
221  #else  #else
 c      _GLOBAL_SUM_RL( sumRHS, myThid )  
 c      _GLOBAL_SUM_RL( err   , myThid )  
        CALL GLOBAL_SUM_TILE_RL( sumRHStile, sumRHS, myThid )  
222         CALL GLOBAL_SUM_TILE_RL( errTile,    err,    myThid )         CALL GLOBAL_SUM_TILE_RL( errTile,    err,    myThid )
223           CALL GLOBAL_SUM_TILE_RL( sumRHStile, sumRHS, myThid )
224  #endif  #endif
225         err = SQRT(err)         err = SQRT(err)
226         actualIts      = 0         actualIts      = 0
# Line 267  C    &  actualResidual Line 251  C    &  actualResidual
251  CcnhDebugEnds  CcnhDebugEnds
252  C--    Solve preconditioning equation and update  C--    Solve preconditioning equation and update
253  C--    conjugate direction vector "s".  C--    conjugate direction vector "s".
        eta_qrN = 0. _d 0  
254         DO bj=myByLo(myThid),myByHi(myThid)         DO bj=myByLo(myThid),myByHi(myThid)
255          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
256           eta_qrNtile(bi,bj) = 0. _d 0           eta_qrNtile(bi,bj) = 0. _d 0
# Line 294  CcnhDebugEnds Line 277  CcnhDebugEnds
277  #endif  #endif
278            ENDDO            ENDDO
279           ENDDO           ENDDO
 c        eta_qrN = eta_qrN + eta_qrNtile(bi,bj)  
280          ENDDO          ENDDO
281         ENDDO         ENDDO
282    
283  #ifdef CG2D_SINGLECPU_SUM  #ifdef CG2D_SINGLECPU_SUM
284         CALL GLOBAL_SUM_SINGLECPU_RL( localBuf,eta_qrN,myThid )         CALL GLOBAL_SUM_SINGLECPU_RL( localBuf,eta_qrN,0,0,myThid )
285  #else  #else
 c      _GLOBAL_SUM_RL(eta_qrN, myThid)  
286         CALL GLOBAL_SUM_TILE_RL( eta_qrNtile,eta_qrN,myThid )         CALL GLOBAL_SUM_TILE_RL( eta_qrNtile,eta_qrN,myThid )
287  #endif  #endif
288  CcnhDebugStarts  CcnhDebugStarts
# Line 335  C      _EXCH_XY_RL( cg2d_s, myThid ) Line 316  C      _EXCH_XY_RL( cg2d_s, myThid )
316    
317  C==    Evaluate laplace operator on conjugate gradient vector  C==    Evaluate laplace operator on conjugate gradient vector
318  C==    q = A.s  C==    q = A.s
        alpha = 0. _d 0  
319         DO bj=myByLo(myThid),myByHi(myThid)         DO bj=myByLo(myThid),myByHi(myThid)
320          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
321           alphaTile(bi,bj) = 0. _d 0           alphaTile(bi,bj) = 0. _d 0
# Line 366  c    &                        /deltaTMom Line 346  c    &                        /deltaTMom
346  #endif  #endif
347            ENDDO            ENDDO
348           ENDDO           ENDDO
 c        alpha = alpha + alphaTile(bi,bj)  
349          ENDDO          ENDDO
350         ENDDO         ENDDO
351  #ifdef CG2D_SINGLECPU_SUM  #ifdef CG2D_SINGLECPU_SUM
352         CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, alpha, myThid)         CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, alpha, 0, 0, myThid)
353  #else  #else
 c      _GLOBAL_SUM_RL(alpha,myThid)  
354         CALL GLOBAL_SUM_TILE_RL( alphaTile,  alpha,  myThid )         CALL GLOBAL_SUM_TILE_RL( alphaTile,  alpha,  myThid )
355  #endif  #endif
356  CcnhDebugStarts  CcnhDebugStarts
# Line 385  CcnhDebugEnds Line 363  CcnhDebugEnds
363    
364  C==    Update solution and residual vectors  C==    Update solution and residual vectors
365  C      Now compute "interior" points.  C      Now compute "interior" points.
        err = 0. _d 0  
366         DO bj=myByLo(myThid),myByHi(myThid)         DO bj=myByLo(myThid),myByHi(myThid)
367          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
368           errTile(bi,bj) = 0. _d 0           errTile(bi,bj) = 0. _d 0
# Line 401  C      Now compute "interior" points. Line 378  C      Now compute "interior" points.
378  #endif  #endif
379            ENDDO            ENDDO
380           ENDDO           ENDDO
 c        err = err + errTile(bi,bj)  
381          ENDDO          ENDDO
382         ENDDO         ENDDO
383    
384  #ifdef CG2D_SINGLECPU_SUM  #ifdef CG2D_SINGLECPU_SUM
385         CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, err, myThid)         CALL GLOBAL_SUM_SINGLECPU_RL(localBuf, err, 0, 0, myThid)
386  #else  #else
 c      _GLOBAL_SUM_RL( err   , myThid )  
387         CALL GLOBAL_SUM_TILE_RL( errTile,    err,    myThid )         CALL GLOBAL_SUM_TILE_RL( errTile,    err,    myThid )
388  #endif  #endif
389         err = SQRT(err)         err = SQRT(err)

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.52

  ViewVC Help
Powered by ViewVC 1.1.22