From: guido Date: Tue, 17 Sep 2002 22:35:30 +0000 (+0000) Subject: invert_diagblocks uses iterators X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=473d73be964cfacaccd599d9fa95676951f160e0;p=dealii-svn.git invert_diagblocks uses iterators git-svn-id: https://svn.dealii.org/trunk@6450 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/lac/include/lac/precondition_block.templates.h b/deal.II/lac/include/lac/precondition_block.templates.h index ee23a1bed4..8ea6a1ea42 100644 --- a/deal.II/lac/include/lac/precondition_block.templates.h +++ b/deal.II/lac/include/lac/precondition_block.templates.h @@ -146,9 +146,15 @@ void PreconditionBlock::invert_diagblocks() var_inverse[0].reinit(blocksize, blocksize); for (unsigned int row_cell=0; row_cell::const_iterator entry = M.begin(row_cell); + const SparseMatrix::const_iterator row_end = M.end(row_cell); + while(entry != row_end && entry->column() < blocksize) + { + M_cell(row_cell, entry->column()) = entry->value(); + ++entry; + } + } if (store_diagonals) var_diagonal[0] = M_cell; var_inverse[0].invert(M_cell); @@ -190,12 +196,26 @@ void PreconditionBlock::invert_diagblocks() M_cell.clear (); - for (unsigned int cell=0, row=0; cell::const_iterator entry = M.begin(row); + const SparseMatrix::const_iterator row_end = M.end(row); + + while (entry != row_end && entry->column()column()-cell_start; + if (column_cell >= blocksize) + break; + M_cell(row_cell, column_cell) = entry->value(); + ++entry; + } + } if (store_diagonals) var_diagonal[cell] = M_cell;