/[escript]/trunk/paso/src/Solver.c
ViewVC logotype

Diff of /trunk/paso/src/Solver.c

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

revision 1786 by ksteube, Thu Aug 14 06:38:14 2008 UTC revision 1787 by artak, Mon Sep 15 01:36:34 2008 UTC
# Line 68  void Paso_Solver(Paso_SystemMatrix* A,do Line 68  void Paso_Solver(Paso_SystemMatrix* A,do
68          Paso_setError(TYPE_ERROR,"Iterative solver requires row and column block sizes to be equal.");          Paso_setError(TYPE_ERROR,"Iterative solver requires row and column block sizes to be equal.");
69       }       }
70       if (Paso_SystemMatrix_getGlobalNumCols(A) != Paso_SystemMatrix_getGlobalNumRows(A)) {       if (Paso_SystemMatrix_getGlobalNumCols(A) != Paso_SystemMatrix_getGlobalNumRows(A)) {
71          Paso_setError(TYPE_ERROR,"Iterative solver requires requires a square matrix.");          Paso_setError(TYPE_ERROR,"Iterative solver requires a square matrix.");
72          return;          return;
73       }       }
74       /* this for testing only */       /* this for testing only */
# Line 135  void Paso_Solver(Paso_SystemMatrix* A,do Line 135  void Paso_Solver(Paso_SystemMatrix* A,do
135                 case PASO_TFQMR:                 case PASO_TFQMR:
136                    printf("Iterative method is TFQMR.\n");                    printf("Iterative method is TFQMR.\n");
137                    break;                    break;
138                   case PASO_MINRES:
139                      printf("Iterative method is MINRES.\n");
140                      break;
141                 case PASO_PRES20:                 case PASO_PRES20:
142                    printf("Iterative method is PRES20.\n");                    printf("Iterative method is PRES20.\n");
143                    break;                    break;
# Line 166  void Paso_Solver(Paso_SystemMatrix* A,do Line 169  void Paso_Solver(Paso_SystemMatrix* A,do
169                   finalizeIteration = FALSE;                   finalizeIteration = FALSE;
170                   last_norm2_of_residual=norm2_of_b;                   last_norm2_of_residual=norm2_of_b;
171                   last_norm_max_of_residual=norm_max_of_b;                   last_norm_max_of_residual=norm_max_of_b;
172                     /* Loop */
173                   while (! finalizeIteration) {                   while (! finalizeIteration) {
174                      cntIter = options->iter_max - totIter;                      cntIter = options->iter_max - totIter;
175                      finalizeIteration = TRUE;                      finalizeIteration = TRUE;
# Line 220  void Paso_Solver(Paso_SystemMatrix* A,do Line 224  void Paso_Solver(Paso_SystemMatrix* A,do
224                             errorCode = Paso_Solver_PCG(A, r, x, &cntIter, &tol, pp);                             errorCode = Paso_Solver_PCG(A, r, x, &cntIter, &tol, pp);
225                             break;                             break;
226                          case PASO_TFQMR:                          case PASO_TFQMR:
227                             errorCode = Paso_Solver_TFQMR(A, r, x, &cntIter, &tol, pp);                             errorCode = Paso_Solver_TFQMR(A, r, x, &cntIter, &tol, pp);
228                               break;
229                            case PASO_MINRES:
230                               errorCode = Paso_Solver_MINRES(A, r, x, &cntIter, &tolerance, &tol, pp);
231                             break;                             break;
232                          case PASO_PRES20:                          case PASO_PRES20:
233                             errorCode = Paso_Solver_GMRES(A, r, x, &cntIter, &tol,5,20, pp);                             errorCode = Paso_Solver_GMRES(A, r, x, &cntIter, &tol,5,20, pp);
# Line 230  void Paso_Solver(Paso_SystemMatrix* A,do Line 237  void Paso_Solver(Paso_SystemMatrix* A,do
237                             break;                             break;
238                          }                          }
239                          totIter += cntIter;                          totIter += cntIter;
                         
240                          /* error handling  */                          /* error handling  */
241                          if (errorCode==NO_ERROR) {                          if (errorCode==NO_ERROR) {
242                             finalizeIteration = FALSE;                             finalizeIteration = FALSE;

Legend:
Removed from v.1786  
changed lines
  Added in v.1787

  ViewVC Help
Powered by ViewVC 1.1.26