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

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

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

revision 2766 by artak, Fri Nov 20 01:49:19 2009 UTC revision 2767 by artak, Mon Nov 23 06:00:37 2009 UTC
# Line 214  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 214  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
214                            
215          }          }
216                    
217            if (verbose) fprintf(stderr,"timing: Profilining for level %d:\n",level);
218            
219          time0=Paso_timer()-time0;          time0=Paso_timer()-time0;
220          if (verbose) fprintf(stderr,"timing: Coarsening: %e\n",time0);          if (verbose) fprintf(stderr,"timing: Coarsening: %e\n",time0);
221    
# Line 356  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 358  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
358                      if (verbose) fprintf(stderr,"timing: getCoarseMatrix: %e\n",time0);                      if (verbose) fprintf(stderr,"timing: getCoarseMatrix: %e\n",time0);
359                                            
360                      /*Paso_Solver_getCoarseMatrix(A_c, A_p,out->R,out->P);*/                      /*Paso_Solver_getCoarseMatrix(A_c, A_p,out->R,out->P);*/
361                        
362                      /*                      /*
363                       sprintf(filename,"A_C_%d",level);                      sprintf(filename,"A_C_%d",level);
364                      Paso_SparseMatrix_saveMM(A_c,filename);                      Paso_SparseMatrix_saveMM(A_c,filename);
365                      */                      */
366                        
367                      out->AMG_of_Coarse=Paso_Solver_getAMG(A_c,level-1,options);                      out->AMG_of_Coarse=Paso_Solver_getAMG(A_c,level-1,options);
368                }                }
369    
370                /* allocate work arrays for AMG application */                /* allocate work arrays for AMG application */
371                if (Paso_noError()) {                if (Paso_noError()) {
372                           out->x_F=MEMALLOC(n_block*out->n_F,double);                           /*
373                              out->x_F=MEMALLOC(n_block*out->n_F,double);
374                           out->b_F=MEMALLOC(n_block*out->n_F,double);                           out->b_F=MEMALLOC(n_block*out->n_F,double);
375                             */
376                           out->x_C=MEMALLOC(n_block*out->n_C,double);                           out->x_C=MEMALLOC(n_block*out->n_C,double);
377                           out->b_C=MEMALLOC(n_block*out->n_C,double);                           out->b_C=MEMALLOC(n_block*out->n_C,double);
378                
379                           if (! (Paso_checkPtr(out->x_F) || Paso_checkPtr(out->b_F) || Paso_checkPtr(out->x_C) || Paso_checkPtr(out->b_C) ) ) {                           /*if (! (Paso_checkPtr(out->x_F) || Paso_checkPtr(out->b_F) || Paso_checkPtr(out->x_C) || Paso_checkPtr(out->b_C) ) ) {*/
380                               #pragma omp parallel for private(i) schedule(static)                           if ( ! ( Paso_checkPtr(out->x_C) || Paso_checkPtr(out->b_C) ) ) {
381                                
382                                 /*
383                                  #pragma omp parallel for private(i) schedule(static)
384                               for (i = 0; i < out->n_F; ++i) {                               for (i = 0; i < out->n_F; ++i) {
385                                           out->x_F[i]=0.;                                           out->x_F[i]=0.;
386                                           out->b_F[i]=0.;                                           out->b_F[i]=0.;
387                                }                                }
388                                 */
389                                
390                                #pragma omp parallel for private(i) schedule(static)                                #pragma omp parallel for private(i) schedule(static)
391                                for (i = 0; i < out->n_C; ++i) {                                for (i = 0; i < out->n_C; ++i) {
392                                       out->x_C[i]=0.;                                       out->x_C[i]=0.;
# Line 495  void Paso_Solver_solveAMG(Paso_Solver_AM Line 506  void Paso_Solver_solveAMG(Paso_Solver_AM
506          #pragma omp parallel for private(i) schedule(static)          #pragma omp parallel for private(i) schedule(static)
507          for (i=0;i<amg->n;++i) x[i]+=x0[i];          for (i=0;i<amg->n;++i) x[i]+=x0[i];
508                    
509       /*postsmoothing*/        /*postsmoothing*/
510       time0=Paso_timer();        time0=Paso_timer();
511       #pragma omp parallel for private(i) schedule(static)        #pragma omp parallel for private(i) schedule(static)
512       for (i=0;i<amg->n;++i) r[i]=b[i];        for (i=0;i<amg->n;++i) r[i]=b[i];
513              
514       /*r=b-Ax */        /*r=b-Ax */
515       Paso_SparseMatrix_MatrixVector_CSR_OFFSET0(-1.,amg->A,x,1.,r);        Paso_SparseMatrix_MatrixVector_CSR_OFFSET0(-1.,amg->A,x,1.,r);
516       Paso_Solver_solveJacobi(amg->GS,x0,r);        Paso_Solver_solveJacobi(amg->GS,x0,r);
517              
518              
519       #pragma omp parallel for private(i) schedule(static)        #pragma omp parallel for private(i) schedule(static)
520       for (i=0;i<amg->n;++i)  {        for (i=0;i<amg->n;++i)  {
521        x[i]+=x0[i];         x[i]+=x0[i];
522        /*printf("x[%d]=%e \n",i,x[i]);*/         /*printf("x[%d]=%e \n",i,x[i]);*/
523       }        }
524              
525       time0=Paso_timer()-time0;        time0=Paso_timer()-time0;
526       if (verbose) fprintf(stderr,"timing: Postsmoothing: %e\n",time0);        if (verbose) fprintf(stderr,"timing: Postsmoothing: %e\n",time0);
527    
528       /*end of postsmoothing*/        /*end of postsmoothing*/
529            
530       }       }
531       MEMFREE(r);       MEMFREE(r);

Legend:
Removed from v.2766  
changed lines
  Added in v.2767

  ViewVC Help
Powered by ViewVC 1.1.26