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

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

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

revision 3258 by gross, Mon Aug 30 10:48:00 2010 UTC revision 3259 by jfenwick, Mon Oct 11 01:48:14 2010 UTC
# Line 55  Paso_Solver_ILU* Paso_Solver_getILU(Paso Line 55  Paso_Solver_ILU* Paso_Solver_getILU(Paso
55    double time0=0,time_fac=0;    double time0=0,time_fac=0;
56    /* allocations: */      /* allocations: */  
57    Paso_Solver_ILU* out=MEMALLOC(1,Paso_Solver_ILU);    Paso_Solver_ILU* out=MEMALLOC(1,Paso_Solver_ILU);
58    if (Paso_checkPtr(out)) return NULL;    if (Esys_checkPtr(out)) return NULL;
59    out->factors=MEMALLOC(A->len,double);    out->factors=MEMALLOC(A->len,double);
60        
61    if ( ! Paso_checkPtr(out->factors)  ) {    if ( ! Esys_checkPtr(out->factors)  ) {
62    
63         time0=Paso_timer();         time0=Esys_timer();
64    
65         #pragma omp parallel for schedule(static) private(i,iptr,k)         #pragma omp parallel for schedule(static) private(i,iptr,k)
66         for (i = 0; i < n; ++i) {         for (i = 0; i < n; ++i) {
# Line 69  Paso_Solver_ILU* Paso_Solver_getILU(Paso Line 69  Paso_Solver_ILU* Paso_Solver_getILU(Paso
69                 }                 }
70         }             }    
71         /* start factorization */         /* start factorization */
72         for (color=0;color<num_colors && Paso_noError();++color) {         for (color=0;color<num_colors && Esys_noError();++color) {
73                if (n_block==1) {                if (n_block==1) {
74                   #pragma omp parallel for schedule(static) private(i,color2,iptr_ik,k,iptr_kj,S11,j,iptr_ij,A11,iptr_main,D)                   #pragma omp parallel for schedule(static) private(i,color2,iptr_ik,k,iptr_kj,S11,j,iptr_ij,A11,iptr_main,D)
75                   for (i = 0; i < n; ++i) {                   for (i = 0; i < n; ++i) {
# Line 109  Paso_Solver_ILU* Paso_Solver_getILU(Paso Line 109  Paso_Solver_ILU* Paso_Solver_getILU(Paso
109                               }                                                             }                              
110                            }                            }
111                         } else {                         } else {
112                              Paso_setError(ZERO_DIVISION_ERROR, "Paso_Solver_getILU: non-regular main diagonal block.");                              Esys_setError(ZERO_DIVISION_ERROR, "Paso_Solver_getILU: non-regular main diagonal block.");
113                         }                         }
114                      }                      }
115                   }                   }
# Line 178  Paso_Solver_ILU* Paso_Solver_getILU(Paso Line 178  Paso_Solver_ILU* Paso_Solver_getILU(Paso
178                               }                                                             }                              
179                            }                            }
180                         } else {                         } else {
181                              Paso_setError(ZERO_DIVISION_ERROR, "Paso_Solver_getILU: non-regular main diagonal block.");                              Esys_setError(ZERO_DIVISION_ERROR, "Paso_Solver_getILU: non-regular main diagonal block.");
182                         }                         }
183                      }                      }
184                   }                   }
# Line 289  Paso_Solver_ILU* Paso_Solver_getILU(Paso Line 289  Paso_Solver_ILU* Paso_Solver_getILU(Paso
289                               }                                                             }                              
290                            }                            }
291                         } else {                         } else {
292                              Paso_setError(ZERO_DIVISION_ERROR, "Paso_Solver_getILU: non-regular main diagonal block.");                              Esys_setError(ZERO_DIVISION_ERROR, "Paso_Solver_getILU: non-regular main diagonal block.");
293                         }                         }
294                      }                      }
295                   }                   }
296                } else {                } else {
297                   Paso_setError(VALUE_ERROR, "Paso_Solver_getILU: block size greater than 3 is not supported.");                   Esys_setError(VALUE_ERROR, "Paso_Solver_getILU: block size greater than 3 is not supported.");
298                }                      }      
299                #pragma omp barrier                #pragma omp barrier
300         }         }
301         time_fac=Paso_timer()-time0;         time_fac=Esys_timer()-time0;
302    }    }
303    if (Paso_noError()) {    if (Esys_noError()) {
304        if (verbose) printf("timing: ILU: coloring/elemination : %e sec\n",time_fac);        if (verbose) printf("timing: ILU: coloring/elemination : %e sec\n",time_fac);
305       return out;       return out;
306    } else  {    } else  {

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

  ViewVC Help
Powered by ViewVC 1.1.26