/[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.13 by cnh, Tue Sep 29 18:50:56 1998 UTC revision 1.14 by cnh, Wed Oct 28 03:11:36 1998 UTC
# Line 3  C $Header$ Line 3  C $Header$
3  #include "CPP_EEOPTIONS.h"  #include "CPP_EEOPTIONS.h"
4    
5        SUBROUTINE CG2D(          SUBROUTINE CG2D(  
6         I                cg2d_b,
7         U                cg2d_x,
8       I                myThid )       I                myThid )
9  C     /==========================================================\  C     /==========================================================\
10  C     | SUBROUTINE CG2D                                          |  C     | SUBROUTINE CG2D                                          |
# Line 32  C     === Global data === Line 34  C     === Global data ===
34  #include "EEPARAMS.h"  #include "EEPARAMS.h"
35  #include "PARAMS.h"  #include "PARAMS.h"
36  #include "GRID.h"  #include "GRID.h"
37  #include "CG2D.h"  #include "CG2D_INTERNAL.h"
38    
39  C     === Routine arguments ===  C     === Routine arguments ===
40  C     myThid - Thread on which I am working.  C     myThid - Thread on which I am working.
41        INTEGER myThid        INTEGER myThid
42          _RL  cg2d_x(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43          _RL  cg2d_b(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44    
45    
46  C     === Local variables ====  C     === Local variables ====
47  C     actualIts      - Number of iterations taken  C     actualIts      - Number of iterations taken
# Line 54  C                   or they converge at Line 59  C                   or they converge at
59  C     err         - Measure of residual of Ax - b, usually the norm.  C     err         - Measure of residual of Ax - b, usually the norm.
60  C     I, J, N     - Loop counters ( N counts CG iterations )  C     I, J, N     - Loop counters ( N counts CG iterations )
61        INTEGER actualIts        INTEGER actualIts
62        REAL    actualResidual        _RL    actualResidual
63        INTEGER bi, bj                      INTEGER bi, bj              
64        INTEGER I, J, it2d        INTEGER I, J, it2d
65        REAL    err        _RL    err
66        REAL    etaN        _RL    etaN
67        REAL    etaNM1        _RL    etaNM1
68        REAL    cgBeta        _RL    cgBeta
69        REAL    alpha        _RL    alpha
70        REAL    sumRHS        _RL    sumRHS
71        REAL    rhsMax        _RL    rhsMax
72        REAL    rhsNorm        _RL    rhsNorm
73    
74        INTEGER OLw        INTEGER OLw
75        INTEGER OLe        INTEGER OLe
# Line 91  C     _EXCH_XY_R8( cg2d_b, myThid ) Line 96  C     _EXCH_XY_R8( cg2d_b, myThid )
96  C     CALL PLOT_FIELD_XYRL( cg2d_b, 'CG2D.0 CG2D_B' , 1, myThid )  C     CALL PLOT_FIELD_XYRL( cg2d_b, 'CG2D.0 CG2D_B' , 1, myThid )
97  C     suff = 'unnormalised'  C     suff = 'unnormalised'
98  C     CALL WRITE_FLD_XY_RL (  'cg2d_b.',suff,    cg2d_b, 1, myThid)  C     CALL WRITE_FLD_XY_RL (  'cg2d_b.',suff,    cg2d_b, 1, myThid)
99    C     STOP
100  CcnhDebugEnds  CcnhDebugEnds
101    
102  C--   Normalise RHS  C--   Normalise RHS
# Line 191  C     WRITE(6,*) ' mythid, err = ', myth Line 197  C     WRITE(6,*) ' mythid, err = ', myth
197        err    = errBuf(1,1)        err    = errBuf(1,1)
198                
199        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
200        write(0,*) 'cg2d: Sum(rhs) = ',sumRHS        write(0,'(A,1PE30.20)') 'cg2d: Sum(rhs) = ',sumRHS
201        _END_MASTER( )        _END_MASTER( )
202    
203        actualIts      = 0        actualIts      = 0
204        actualResidual = SQRT(err)        actualResidual = SQRT(err)
205  C     _BARRIER  C     _BARRIER
206        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
207         WRITE(0,*) ' CG2D iters, err = ', actualIts, actualResidual         WRITE(0,'(A,I6,1PE30.20)') ' CG2D iters, err = ',
208         & actualIts, actualResidual
209        _END_MASTER( )        _END_MASTER( )
210    
211  C     >>>>>>>>>>>>>>> BEGIN SOLVER <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  C     >>>>>>>>>>>>>>> BEGIN SOLVER <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
212        DO 10 it2d=1, cg2dMaxIters        DO 10 it2d=1, cg2dMaxIters
213    
214  CcnhDebugStarts  CcnhDebugStarts
215  C      WRITE(0,*) ' CG2D: Iteration ',it2d-1,' residual = ',actualResidual  C      WRITE(0,*) ' CG2D: Iteration ',it2d-1,' residual = ',
216    C    &  actualResidual
217  CcnhDebugEnds  CcnhDebugEnds
218         IF ( err .LT. cg2dTargetResidual ) GOTO 11         IF ( err .LT. cg2dTargetResidual ) GOTO 11
219  C--    Solve preconditioning equation and update  C--    Solve preconditioning equation and update
# Line 247  CcnhDebugEnds Line 255  CcnhDebugEnds
255          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
256           DO J=1,sNy           DO J=1,sNy
257            DO I=1,sNx            DO I=1,sNx
258             cg2d_s(I,J,bi,bj) = cg2d_q(I,J,bi,bj) + cgBeta*cg2d_s(I,J,bi,bj)             cg2d_s(I,J,bi,bj) = cg2d_q(I,J,bi,bj)
259         &                       + cgBeta*cg2d_s(I,J,bi,bj)
260            ENDDO            ENDDO
261           ENDDO           ENDDO
262          ENDDO          ENDDO
# Line 354  C--   Un-normalise the answer Line 363  C--   Un-normalise the answer
363    
364        _EXCH_XY_R8(cg2d_x, myThid )        _EXCH_XY_R8(cg2d_x, myThid )
365        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
366         WRITE(0,*) ' CG2D iters, err = ', actualIts, actualResidual         WRITE(0,'(A,I6,1PE30.20)') ' CG2D iters, err = ',
367         & actualIts, actualResidual
368        _END_MASTER( )        _END_MASTER( )
369    
370  CcnhDebugStarts  CcnhDebugStarts

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.22