]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
introduce default constructor and initalize
authorguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 9 Jan 2003 14:10:44 +0000 (14:10 +0000)
committerguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 9 Jan 2003 14:10:44 +0000 (14:10 +0000)
git-svn-id: https://svn.dealii.org/trunk@6892 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/multigrid/mg_coarse.h

index 02c8b7993d4c1a294d5cb4bfff7c97d789de9aec..5db486ed6a6c8aa44f619d222ab349101915390f 100644 (file)
@@ -32,6 +32,11 @@ template<class SOLVER, class MATRIX, class PRECOND, class VECTOR = Vector<double
 class MGCoarseGridLACIteration :  public MGCoarseGrid<VECTOR>
 {
   public:
+                                    /**
+                                     * Default constructor.
+                                     */
+    MGCoarseGridLACIteration ();
+    
                                     /**
                                      * Constructor.
                                      * Store solver, matrix and
@@ -41,6 +46,13 @@ class MGCoarseGridLACIteration :  public MGCoarseGrid<VECTOR>
     MGCoarseGridLACIteration (SOLVER        &,
                              const MATRIX  &,
                              const PRECOND &);
+
+                                    /**
+                                     * Initialize new data.
+                                     */
+    void initialize (SOLVER        &,
+                    const MATRIX  &,
+                    const PRECOND &);
     
                                     /**
                                      * Implementation of the abstract
@@ -71,7 +83,7 @@ class MGCoarseGridLACIteration :  public MGCoarseGrid<VECTOR>
                                     /**
                                      * Reference to the solver.
                                      */
-    SOLVER& solver;
+    SmartPointer<const SOLVER> solver;
     
                                     /**
                                      * Reference to the matrix.
@@ -81,25 +93,48 @@ class MGCoarseGridLACIteration :  public MGCoarseGrid<VECTOR>
                                     /**
                                      * Reference to the preconditioner.
                                      */
-    const PRECOND& precondition;
+    SmartPointer<const PRECOND> precondition;
 };
 
 
 /* ------------------ Functions for MGCoarseGridLACIteration ------------ */
 
 
+template<class SOLVER, class MATRIX, class PRECOND, class VECTOR>
+MGCoarseGridLACIteration<SOLVER, MATRIX, PRECOND, VECTOR>
+::MGCoarseGridLACIteration()
+               :
+               solver(0),
+               matrix(0),
+               precondition(0)
+{};
+
+
 template<class SOLVER, class MATRIX, class PRECOND, class VECTOR>
 MGCoarseGridLACIteration<SOLVER, MATRIX, PRECOND, VECTOR>
 ::MGCoarseGridLACIteration(SOLVER& s,
                           const MATRIX  &m,
                           const PRECOND &p)
                :
-               solver(s),
+               solver(&s),
                matrix(&m),
-               precondition(p)
+               precondition(&p)
 {};
 
 
+template<class SOLVER, class MATRIX, class PRECOND, class VECTOR>
+void
+MGCoarseGridLACIteration<SOLVER, MATRIX, PRECOND, VECTOR>
+::initialize(SOLVER& s,
+            const MATRIX  &m,
+            const PRECOND &p)
+{
+  solver = &s;
+  matrix = &m;
+  precondition = &p;
+};
+
+
 template<class SOLVER, class MATRIX, class PRECOND, class VECTOR>
 void
 MGCoarseGridLACIteration<SOLVER, MATRIX, PRECOND, VECTOR>
@@ -108,7 +143,7 @@ MGCoarseGridLACIteration<SOLVER, MATRIX, PRECOND, VECTOR>
              const VECTOR &src) const
 {
   Assert(matrix!=0, ExcNoMatrixGiven());
-  solver.solve(*matrix, dst, src, precondition);
+  solver->solve(*matrix, dst, src, *precondition);
 }
 
 

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.