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

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

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

revision 3258 by gross, Tue Sep 21 06:56:44 2010 UTC revision 3259 by jfenwick, Mon Oct 11 01:48:14 2010 UTC
# Line 56  Paso_Preconditioner* Paso_Preconditioner Line 56  Paso_Preconditioner* Paso_Preconditioner
56    
57      prec=MEMALLOC(1,Paso_Preconditioner);      prec=MEMALLOC(1,Paso_Preconditioner);
58    
59      if (! Paso_checkPtr(prec)) {      if (! Esys_checkPtr(prec)) {
60                    
61          prec->type=UNKNOWN;          prec->type=UNKNOWN;
62            
# Line 91  Paso_Preconditioner* Paso_Preconditioner Line 91  Paso_Preconditioner* Paso_Preconditioner
91         case PASO_AMG:         case PASO_AMG:
92            if (options->verbose) printf("AMG preconditioner is used.\n");            if (options->verbose) printf("AMG preconditioner is used.\n");
93            prec->localamg=Paso_Preconditioner_LocalAMG_alloc(A->mainBlock,options->level_max,options);            prec->localamg=Paso_Preconditioner_LocalAMG_alloc(A->mainBlock,options->level_max,options);
94            Paso_MPIInfo_noError(A->mpi_info);            Esys_MPIInfo_noError(A->mpi_info);
95            prec->type=PASO_AMG;            prec->type=PASO_AMG;
96            break;            break;
97                        
# Line 100  Paso_Preconditioner* Paso_Preconditioner Line 100  Paso_Preconditioner* Paso_Preconditioner
100                if (options->verbose) printf("ILU preconditioner is used.\n");                if (options->verbose) printf("ILU preconditioner is used.\n");
101                prec->ilu=Paso_Solver_getILU(A->mainBlock,options->verbose);                prec->ilu=Paso_Solver_getILU(A->mainBlock,options->verbose);
102                prec->type=PASO_ILU0;                prec->type=PASO_ILU0;
103            Paso_MPIInfo_noError(A->mpi_info);            Esys_MPIInfo_noError(A->mpi_info);
104                break;                break;
105             case PASO_RILU:             case PASO_RILU:
106                if (options->verbose) printf("RILU preconditioner is used.\n");                if (options->verbose) printf("RILU preconditioner is used.\n");
107                prec->rilu=Paso_Solver_getRILU(A->mainBlock,options->verbose);                prec->rilu=Paso_Solver_getRILU(A->mainBlock,options->verbose);
108            Paso_MPIInfo_noError(A->mpi_info);            Esys_MPIInfo_noError(A->mpi_info);
109                prec->type=PASO_RILU;                prec->type=PASO_RILU;
110                break;                break;
111    
# Line 114  Paso_Preconditioner* Paso_Preconditioner Line 114  Paso_Preconditioner* Paso_Preconditioner
114              case PASO_AMLI:              case PASO_AMLI:
115                        
116            prec->amliSystem=MEMALLOC(1,Paso_Solver_AMLI_System);            prec->amliSystem=MEMALLOC(1,Paso_Solver_AMLI_System);
117                if (! Paso_checkPtr(prec->amliSystem)) {                if (! Esys_checkPtr(prec->amliSystem)) {
118                                    
119                prec->amliSystem->block_size=A->row_block_size;                prec->amliSystem->block_size=A->row_block_size;
120                                
# Line 141  Paso_Preconditioner* Paso_Preconditioner Line 141  Paso_Preconditioner* Paso_Preconditioner
141    
142          }          }
143      }      }
144      if (! Paso_MPIInfo_noError(A->mpi_info ) ){      if (! Esys_MPIInfo_noError(A->mpi_info ) ){
145           Paso_Preconditioner_free(prec);           Paso_Preconditioner_free(prec);
146      return NULL;      return NULL;
147      } else {      } else {
# Line 187  void Paso_Preconditioner_solve(Paso_Prec Line 187  void Paso_Preconditioner_solve(Paso_Prec
187             double **bb;             double **bb;
188             xx=MEMALLOC(A->row_block_size,double*);             xx=MEMALLOC(A->row_block_size,double*);
189             bb=MEMALLOC(A->row_block_size,double*);             bb=MEMALLOC(A->row_block_size,double*);
190             if (Paso_checkPtr(xx) || Paso_checkPtr(bb)) return;             if (Esys_checkPtr(xx) || Esys_checkPtr(bb)) return;
191                   for (i=0;i<A->row_block_size;i++) {                   for (i=0;i<A->row_block_size;i++) {
192                      xx[i]=MEMALLOC(n,double);                      xx[i]=MEMALLOC(n,double);
193                      bb[i]=MEMALLOC(n,double);                      bb[i]=MEMALLOC(n,double);
194                      if (Paso_checkPtr(xx[i]) && Paso_checkPtr(bb[i])) return;                      if (Esys_checkPtr(xx[i]) && Esys_checkPtr(bb[i])) return;
195                  }                  }
196                                    
197                  /*#pragma omp parallel for private(i,j) schedule(static)*/                  /*#pragma omp parallel for private(i,j) schedule(static)*/

Legend:
Removed from v.3258  
changed lines
  Added in v.3259

  ViewVC Help
Powered by ViewVC 1.1.26