From: guido Date: Mon, 6 Jan 2003 19:18:26 +0000 (+0000) Subject: additional parameters in AdditionalData X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=244fc614ce98b398e0e937eaa5666b7b4df23167;p=dealii-svn.git additional parameters in AdditionalData git-svn-id: https://svn.dealii.org/trunk@6873 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/lac/include/lac/precondition_block.h b/deal.II/lac/include/lac/precondition_block.h index 4d2f8d2ffc..e642dc28f1 100644 --- a/deal.II/lac/include/lac/precondition_block.h +++ b/deal.II/lac/include/lac/precondition_block.h @@ -98,7 +98,10 @@ class PreconditionBlock : public virtual Subscriptor * parameter. */ AdditionalData (const unsigned int block_size, - const double relaxation = 1.); + const double relaxation = 1., + const bool invert_diagonal = true, + const bool same_diagonal = false, + const bool store_diagonals = false); /** * Relaxation parameter. @@ -109,6 +112,22 @@ class PreconditionBlock : public virtual Subscriptor * Block size. */ unsigned int block_size; + + /** + * Invert diagonal during initialization. + */ + bool invert_diagonal; + + /** + * Assume all diagonal blocks + * are equal to save memory. + */ + bool same_diagonal; + + /** + * Store original diagonal blocks. + */ + bool store_diagonals; }; @@ -585,10 +604,16 @@ template inline PreconditionBlock::AdditionalData:: AdditionalData (const unsigned int block_size, - const double relaxation) + const double relaxation, + const bool invert_diagonal, + const bool same_diagonal, + const bool store_diagonals) : relaxation (relaxation), - block_size(block_size) + block_size(block_size), + invert_diagonal(invert_diagonal), + same_diagonal(same_diagonal), + store_diagonals(store_diagonals) {} diff --git a/deal.II/lac/include/lac/precondition_block.templates.h b/deal.II/lac/include/lac/precondition_block.templates.h index 790cc4f2ff..618497871c 100644 --- a/deal.II/lac/include/lac/precondition_block.templates.h +++ b/deal.II/lac/include/lac/precondition_block.templates.h @@ -70,6 +70,10 @@ void PreconditionBlock::initialize ( Assert (A->m()%bsize==0, ExcWrongBlockSize(bsize, A->m())); blocksize=bsize; relaxation = parameters.relaxation; + same_diagonal = parameters.same_diagonal; + store_diagonals = parameters.store_diagonals; + if (parameters.invert_diagonal) + invert_diagblocks(); }