/[escript]/branches/doubleplusgood/paso/src/RILU.cpp
ViewVC logotype

Diff of /branches/doubleplusgood/paso/src/RILU.cpp

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

revision 3120 by gross, Mon Aug 30 10:48:00 2010 UTC revision 3158 by gross, Mon Sep 6 06:09:11 2010 UTC
# Line 323  void Paso_Solver_solveRILU(Paso_Solver_R Line 323  void Paso_Solver_solveRILU(Paso_Solver_R
323            
324       if (rilu->n_C==0) {       if (rilu->n_C==0) {
325          /* x=invA_FF*b  */          /* x=invA_FF*b  */
326          Paso_BlockOps_allMV(n_block,rilu->n_F,rilu->inv_A_FF,rilu->A_FF_pivot,x,b);      Paso_Copy(n_block*rilu->n_F, b, x);
327            Paso_BlockOps_allMV(n_block,rilu->n_F,rilu->inv_A_FF,rilu->A_FF_pivot,x);
328       } else {       } else {
329          /* b->[b_F,b_C]     */          /* b->[b_F,b_C]     */
330          if (n_block==1) {          if (n_block==1) {
# Line 340  void Paso_Solver_solveRILU(Paso_Solver_R Line 341  void Paso_Solver_solveRILU(Paso_Solver_R
341                   for (k=0;k<n_block;k++) rilu->b_C[rilu->n_block*i+k]=b[n_block*rilu->rows_in_C[i]+k];                   for (k=0;k<n_block;k++) rilu->b_C[rilu->n_block*i+k]=b[n_block*rilu->rows_in_C[i]+k];
342          }          }
343          /* x_F=invA_FF*b_F  */          /* x_F=invA_FF*b_F  */
344          Paso_BlockOps_allMV(n_block,rilu->n_F,rilu->inv_A_FF,rilu->A_FF_pivot,rilu->x_F,rilu->b_F);      Paso_Copy(n_block*rilu->n_F, rilu->x_F,rilu->b_F);
345            Paso_BlockOps_allMV(n_block,rilu->n_F,rilu->inv_A_FF,rilu->A_FF_pivot,rilu->x_F);
346          /* b_C=b_C-A_CF*x_F */          /* b_C=b_C-A_CF*x_F */
347          Paso_SparseMatrix_MatrixVector_CSR_OFFSET0(-1.,rilu->A_CF,rilu->x_F,1.,rilu->b_C);          Paso_SparseMatrix_MatrixVector_CSR_OFFSET0(-1.,rilu->A_CF,rilu->x_F,1.,rilu->b_C);
348          /* x_C=RILU(b_C)     */          /* x_C=RILU(b_C)     */
# Line 348  void Paso_Solver_solveRILU(Paso_Solver_R Line 350  void Paso_Solver_solveRILU(Paso_Solver_R
350          /* b_F=b_F-A_FC*x_C */          /* b_F=b_F-A_FC*x_C */
351          Paso_SparseMatrix_MatrixVector_CSR_OFFSET0(-1.,rilu->A_FC,rilu->x_C,1.,rilu->b_F);          Paso_SparseMatrix_MatrixVector_CSR_OFFSET0(-1.,rilu->A_FC,rilu->x_C,1.,rilu->b_F);
352          /* x_F=invA_FF*b_F  */          /* x_F=invA_FF*b_F  */
353          Paso_BlockOps_allMV(n_block,rilu->n_F,rilu->inv_A_FF,rilu->A_FF_pivot,rilu->x_F,rilu->b_F);      Paso_Copy(n_block*rilu->n_F, rilu->x_F,rilu->b_F);
354            Paso_BlockOps_allMV(n_block,rilu->n_F,rilu->inv_A_FF,rilu->A_FF_pivot,rilu->x_F);
355          /* x<-[x_F,x_C]     */          /* x<-[x_F,x_C]     */
356          if (n_block==1) {          if (n_block==1) {
357             #pragma omp parallel for private(i) schedule(static)             #pragma omp parallel for private(i) schedule(static)

Legend:
Removed from v.3120  
changed lines
  Added in v.3158

  ViewVC Help
Powered by ViewVC 1.1.26