]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
additional parameters in AdditionalData
authorguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 6 Jan 2003 19:18:26 +0000 (19:18 +0000)
committerguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 6 Jan 2003 19:18:26 +0000 (19:18 +0000)
git-svn-id: https://svn.dealii.org/trunk@6873 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/precondition_block.h
deal.II/lac/include/lac/precondition_block.templates.h

index 4d2f8d2ffca41fbe3e207f895fa6912283a4813a..e642dc28f1c922bf041dce7470b98809c2ec8f8d 100644 (file)
@@ -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<class MATRIX, typename inverse_type>
 inline
 PreconditionBlock<MATRIX, inverse_type>::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)
 {}
 
 
index 790cc4f2ff19b4aaede73caeab9abcfd845ae821..618497871c7343c367c908796ab309065d14496b 100644 (file)
@@ -70,6 +70,10 @@ void PreconditionBlock<MATRIX,inverse_type>::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();
 }
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.