/[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 2764 by artak, Thu Nov 19 05:22:45 2009 UTC revision 2765 by artak, Fri Nov 20 01:49:19 2009 UTC
# Line 118  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 118  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
118    /*index_t iPtr,*index, *where_p;*/    /*index_t iPtr,*index, *where_p;*/
119    dim_t i;    dim_t i;
120    Paso_SparseMatrix * A_c=NULL;    Paso_SparseMatrix * A_c=NULL;
121      double time0=0;
122        
123    /*    /*
124    double *temp,*temp_1;    double *temp,*temp_1;
# Line 192  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 193  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
193           #pragma omp parallel for private(i) schedule(static)           #pragma omp parallel for private(i) schedule(static)
194           for (i=0;i<n;++i) mis_marker[i]=-1;           for (i=0;i<n;++i) mis_marker[i]=-1;
195    
196              /*mesuring coarsening time */
197              time0=Paso_timer();
198              
199           if (options->coarsening_method == PASO_YAIR_SHAPIRA_COARSENING) {           if (options->coarsening_method == PASO_YAIR_SHAPIRA_COARSENING) {
200                Paso_Pattern_YS(A_p,mis_marker,options->coarsening_threshold);                Paso_Pattern_YS(A_p,mis_marker,options->coarsening_threshold);
201           }           }
# Line 209  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 213  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
213              /*Paso_Pattern_Aggregiation(A_p,mis_marker,options->coarsening_threshold);*/              /*Paso_Pattern_Aggregiation(A_p,mis_marker,options->coarsening_threshold);*/
214                            
215          }          }
216            
217            time0=Paso_timer()-time0;
218            if (verbose) fprintf(stderr,"timing: Coarsening: %e\n",time0);
219    
220          #pragma omp parallel for private(i) schedule(static)          #pragma omp parallel for private(i) schedule(static)
221          for (i = 0; i < n; ++i) counter[i]=mis_marker[i];          for (i = 0; i < n; ++i) counter[i]=mis_marker[i];
# Line 305  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 312  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
312                        /*sprintf(filename,"W_FCbefore_%d",level);                        /*sprintf(filename,"W_FCbefore_%d",level);
313                        Paso_SparseMatrix_saveMM(out->W_FC,filename);                        Paso_SparseMatrix_saveMM(out->W_FC,filename);
314                        */                        */
                       Paso_SparseMatrix_updateWeights(A_p,out->W_FC,mis_marker);  
315                                                
316                          time0=Paso_timer();
317                          Paso_SparseMatrix_updateWeights(A_p,out->W_FC,mis_marker);
318                          time0=Paso_timer()-time0;
319                          if (verbose) fprintf(stderr,"timing: updateWeights: %e\n",time0);
320            
321                        /*                        /*
322                         printf("GOT W_FC, but n=%d,n_F=%d,n_C=%d\n",out->n,out->n_F,out->n_C);                         printf("GOT W_FC, but n=%d,n_F=%d,n_C=%d\n",out->n,out->n_F,out->n_C);
323                        sprintf(filename,"W_FCafter_%d",level);                        sprintf(filename,"W_FCafter_%d",level);
324                        Paso_SparseMatrix_saveMM(out->W_FC,filename);                        Paso_SparseMatrix_saveMM(out->W_FC,filename);
325                        */                        */
326                        /* get Prolongation and Restriction */                        /* get Prolongation and Restriction */
327                          
328                          time0=Paso_timer();
329                        out->P=Paso_SparseMatrix_getProlongation(out->W_FC,mis_marker);                        out->P=Paso_SparseMatrix_getProlongation(out->W_FC,mis_marker);
330                          time0=Paso_timer()-time0;
331                          if (verbose) fprintf(stderr,"timing: getProlongation: %e\n",time0);
332                                                
333                        /*                        /*
334                         printf("GOT Prolongation P->nxc %dx%d\n",out->P->numRows,out->P->numCols);                         printf("GOT Prolongation P->nxc %dx%d\n",out->P->numRows,out->P->numCols);
# Line 321  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 336  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
336                        Paso_SparseMatrix_saveMM(out->P,filename);                        Paso_SparseMatrix_saveMM(out->P,filename);
337                        */                        */
338                                                
339                          time0=Paso_timer();
340                        out->R=Paso_SparseMatrix_getRestriction(out->P);                        out->R=Paso_SparseMatrix_getRestriction(out->P);
341                          time0=Paso_timer()-time0;
342                          if (verbose) fprintf(stderr,"timing: getRestriction: %e\n",time0);
343                          
344                        /*                        /*
345                        printf("GOT Restriction->cxn %dx%d\n",out->R->numRows,out->R->numCols);                        printf("GOT Restriction->cxn %dx%d\n",out->R->numRows,out->R->numCols);
346                        sprintf(filename,"R_%d",level);                        sprintf(filename,"R_%d",level);
# Line 330  Paso_Solver_AMG* Paso_Solver_getAMG(Paso Line 349  Paso_Solver_AMG* Paso_Solver_getAMG(Paso
349                                            
350                }                }
351                if ( Paso_noError()) {                if ( Paso_noError()) {
352                        
353                        time0=Paso_timer();
354                      A_c=Paso_Solver_getCoarseMatrix(A_p,out->R,out->P);                      A_c=Paso_Solver_getCoarseMatrix(A_p,out->R,out->P);
355                        time0=Paso_timer()-time0;
356                        if (verbose) fprintf(stderr,"timing: getCoarseMatrix: %e\n",time0);
357                        
358                      /*Paso_Solver_getCoarseMatrix(A_c, A_p,out->R,out->P);*/                      /*Paso_Solver_getCoarseMatrix(A_c, A_p,out->R,out->P);*/
359                      /*                      /*
360                       sprintf(filename,"A_C_%d",level);                       sprintf(filename,"A_C_%d",level);

Legend:
Removed from v.2764  
changed lines
  Added in v.2765

  ViewVC Help
Powered by ViewVC 1.1.26