]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
MultiGrid advances
authorguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 25 Jan 1999 20:32:50 +0000 (20:32 +0000)
committerguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 25 Jan 1999 20:32:50 +0000 (20:32 +0000)
git-svn-id: https://svn.dealii.org/trunk@744 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/multigrid/multigrid.h
deal.II/deal.II/include/numerics/multigrid.h

index 58e968a92de75559b76127f2311cb1990982227e..4b25e6ad19ce42106c5f1cdd755291a57c633199 100644 (file)
@@ -8,6 +8,16 @@ class dVector;
 
 /**
  * Vector with data for each level.
+ *
+ * This class provides auxiliary vectors for the multigrid method. It
+ * seems, that it is used only locally in class #MultiGrid#, so do not
+ * bother about it.
+ *
+ * In case your smoothing method needs auxiliary vectors, you should
+ * use a memory class for each level separately. If memory is short,
+ * one object for all levels could be a better choice.
+ *
+ * @author Guido Kanschat, 1999
  */
 class MGVector
 {
@@ -41,11 +51,22 @@ public:
  * functions #vmult# and #precondition# and possibly their transposed
  * versions are needed.
  *
+ * The functionality of the multigrid method is restricted to defect
+ * correction. It is <B>not</B> iterative and the start solution is
+ * always zero. Since by this <I>u<SUP>E</SUP><SUB>l</SUB></I> and
+ * <I>u<SUP>A</SUP><SUB>l</SUB></I> (see report on multigrid) are
+ * always zero, restriction is simplified a lot and maybe even the
+ * seam condition on grids is oblivious. Still, I am not sure that
+ * these restrictions on the class might cause numerical
+ * inefficiencies.
+ *
  * The function #precondition# is the actual multigrid method and
  * makes use of several operations to be implemented in derived
- * classes...
+ * classes. It takes a defect in #src# and the result is the multigrid
+ * preconditioned defect in #dst#.
  *
- */
+ * @author Guido Kanschat, 1999
+ * */
 class MultiGrid
 {
   MultiGrid(const MultiGrid&);
@@ -114,6 +135,13 @@ protected:
                                    * This function is required to
                                    * perform #steps# iterations to
                                    * smoothen the residual $Ax-b$.
+                                   *
+                                   * When overloading this function
+                                   * in derived classes, make sure
+                                   * that smoothing only applies to
+                                   * interior degrees of freedom of
+                                   * the actual level.
+                                   *
                                    */
   virtual void smooth(unsigned level,
                      dVector& x,
@@ -201,6 +229,10 @@ public:
                                    */
   void vmult(dVector& dst, const dVector& src) const;
                                   /** Multigrid preconditioning.
+                                   *
+                                   * This is the function, where the
+                                   * multigrid method is implemented.
+                                   *
                                    */
   void precondition(dVector& dst, const dVector& src) const;
 };
index 58e968a92de75559b76127f2311cb1990982227e..4b25e6ad19ce42106c5f1cdd755291a57c633199 100644 (file)
@@ -8,6 +8,16 @@ class dVector;
 
 /**
  * Vector with data for each level.
+ *
+ * This class provides auxiliary vectors for the multigrid method. It
+ * seems, that it is used only locally in class #MultiGrid#, so do not
+ * bother about it.
+ *
+ * In case your smoothing method needs auxiliary vectors, you should
+ * use a memory class for each level separately. If memory is short,
+ * one object for all levels could be a better choice.
+ *
+ * @author Guido Kanschat, 1999
  */
 class MGVector
 {
@@ -41,11 +51,22 @@ public:
  * functions #vmult# and #precondition# and possibly their transposed
  * versions are needed.
  *
+ * The functionality of the multigrid method is restricted to defect
+ * correction. It is <B>not</B> iterative and the start solution is
+ * always zero. Since by this <I>u<SUP>E</SUP><SUB>l</SUB></I> and
+ * <I>u<SUP>A</SUP><SUB>l</SUB></I> (see report on multigrid) are
+ * always zero, restriction is simplified a lot and maybe even the
+ * seam condition on grids is oblivious. Still, I am not sure that
+ * these restrictions on the class might cause numerical
+ * inefficiencies.
+ *
  * The function #precondition# is the actual multigrid method and
  * makes use of several operations to be implemented in derived
- * classes...
+ * classes. It takes a defect in #src# and the result is the multigrid
+ * preconditioned defect in #dst#.
  *
- */
+ * @author Guido Kanschat, 1999
+ * */
 class MultiGrid
 {
   MultiGrid(const MultiGrid&);
@@ -114,6 +135,13 @@ protected:
                                    * This function is required to
                                    * perform #steps# iterations to
                                    * smoothen the residual $Ax-b$.
+                                   *
+                                   * When overloading this function
+                                   * in derived classes, make sure
+                                   * that smoothing only applies to
+                                   * interior degrees of freedom of
+                                   * the actual level.
+                                   *
                                    */
   virtual void smooth(unsigned level,
                      dVector& x,
@@ -201,6 +229,10 @@ public:
                                    */
   void vmult(dVector& dst, const dVector& src) const;
                                   /** Multigrid preconditioning.
+                                   *
+                                   * This is the function, where the
+                                   * multigrid method is implemented.
+                                   *
                                    */
   void precondition(dVector& dst, const dVector& src) const;
 };

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.