/[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 1552 by gross, Thu May 8 08:52:41 2008 UTC revision 1556 by gross, Mon May 12 00:54:58 2008 UTC
# Line 135  void Paso_Solver(Paso_SystemMatrix* A,do Line 135  void Paso_Solver(Paso_SystemMatrix* A,do
135                        
136                time_iter=Paso_timer();                time_iter=Paso_timer();
137                /* get an initial guess by evaluating the preconditioner */                /* get an initial guess by evaluating the preconditioner */
138                #pragma omp parallel                Paso_Solver_solvePreconditioner(A,x,b);
               {  
                  Paso_Solver_solvePreconditioner(A,x,b);  
               }  
139                /* start the iteration process :*/                /* start the iteration process :*/
140                r=TMPMEMALLOC(numEqua,double);                r=TMPMEMALLOC(numEqua,double);
141                Paso_checkPtr(r);                Paso_checkPtr(r);
# Line 153  void Paso_Solver(Paso_SystemMatrix* A,do Line 150  void Paso_Solver(Paso_SystemMatrix* A,do
150                      /*     Set initial residual. */                      /*     Set initial residual. */
151                      norm2_of_residual = 0;                      norm2_of_residual = 0;
152                      norm_max_of_residual = 0;                      norm_max_of_residual = 0;
153                        #pragma omp parallel for private(i) schedule(static)
154                        for (i = 0; i < numEqua; i++) r[i]=b[i];
155                        Paso_SystemMatrix_MatrixVector_CSR_OFFSET0(DBLE(-1), A, x, DBLE(1), r);
156                
157                      #pragma omp parallel private(norm2_of_residual_local,norm_max_of_residual_local)                      #pragma omp parallel private(norm2_of_residual_local,norm_max_of_residual_local)
158                      {                      {
                        #pragma omp for private(i) schedule(static)  
                        for (i = 0; i < numEqua; i++) {  
                            r[i]=b[i];  
                        }  
               
                        Paso_SystemMatrix_MatrixVector_CSR_OFFSET0(DBLE(-1), A, x, DBLE(1), r);  
               
159                         norm2_of_residual_local = 0;                         norm2_of_residual_local = 0;
160                         norm_max_of_residual_local = 0;                         norm_max_of_residual_local = 0;
161                         #pragma omp for private(i) schedule(static)                         #pragma omp for private(i) schedule(static)
# Line 177  void Paso_Solver(Paso_SystemMatrix* A,do Line 171  void Paso_Solver(Paso_SystemMatrix* A,do
171                      }                      }
172                      /* TODO: use one call */                      /* TODO: use one call */
173                      #ifdef PASO_MPI                      #ifdef PASO_MPI
                     {  
174                          loc_norm = norm2_of_residual;                          loc_norm = norm2_of_residual;
175                          MPI_Allreduce(&loc_norm,&norm2_of_residual, 1, MPI_DOUBLE, MPI_SUM, A->mpi_info->comm);                          MPI_Allreduce(&loc_norm,&norm2_of_residual, 1, MPI_DOUBLE, MPI_SUM, A->mpi_info->comm);
176                          loc_norm = norm_max_of_residual;                          loc_norm = norm_max_of_residual;
177                          MPI_Allreduce(&loc_norm,&norm_max_of_residual, 1, MPI_DOUBLE, MPI_MAX, A->mpi_info->comm);                          MPI_Allreduce(&loc_norm,&norm_max_of_residual, 1, MPI_DOUBLE, MPI_MAX, A->mpi_info->comm);
                     }  
178                      #endif                      #endif
179                      norm2_of_residual =sqrt(norm2_of_residual);                      norm2_of_residual =sqrt(norm2_of_residual);
180                            

Legend:
Removed from v.1552  
changed lines
  Added in v.1556

  ViewVC Help
Powered by ViewVC 1.1.26