From: kanschat Date: Fri, 17 Jun 2011 23:15:54 +0000 (+0000) Subject: fix order in SSOR X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0087b14f6974b0885b7a7ab30ae6d129b5f9e62a;p=dealii-svn.git fix order in SSOR git-svn-id: https://svn.dealii.org/trunk@23841 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/include/deal.II/lac/relaxation_block.templates.h b/deal.II/include/deal.II/lac/relaxation_block.templates.h index 3abd229e0f..fbbc291089 100644 --- a/deal.II/include/deal.II/lac/relaxation_block.templates.h +++ b/deal.II/include/deal.II/lac/relaxation_block.templates.h @@ -173,7 +173,7 @@ RelaxationBlock::do_step ( const bool backward) const { Assert (additional_data->invert_diagonal, ExcNotImplemented()); - + const MATRIX &M=*this->A; Vector b_cell, x_cell; @@ -181,15 +181,22 @@ RelaxationBlock::do_step ( const unsigned int n_permutations = (permutation_empty) ? 1U : additional_data->order.size(); const unsigned int n_blocks = additional_data->block_list.size(); + + if (!permutation_empty) + for (unsigned int i=0;iorder.size();++i) + AssertDimension(additional_data->order[i].size(), this->size()); for (unsigned int perm=0; permorder[perm][block]; - + const unsigned int raw_block = backward ? (n_blocks - bi - 1) : bi; + const unsigned int block = permutation_empty + ? raw_block + : (backward + ? (additional_data->order[n_permutations-1-perm][raw_block]) + : (additional_data->order[perm][raw_block])); + const unsigned int bs = additional_data->block_list.block_size(block); b_cell.reinit(bs); @@ -274,8 +281,8 @@ void RelaxationBlockSSOR::step ( Vector &dst, const Vector &src) const { - this->do_step(dst, dst, src, true); this->do_step(dst, dst, src, false); + this->do_step(dst, dst, src, true); } @@ -285,8 +292,8 @@ void RelaxationBlockSSOR::Tstep ( Vector &dst, const Vector &src) const { - this->do_step(dst, dst, src, false); this->do_step(dst, dst, src, true); + this->do_step(dst, dst, src, false); }