]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Prefer PreconditionerType to PRECONDITIONER.
authorDavid Wells <wellsd2@rpi.edu>
Thu, 12 Nov 2015 20:15:05 +0000 (15:15 -0500)
committerDavid Wells <wellsd2@rpi.edu>
Thu, 12 Nov 2015 20:17:49 +0000 (15:17 -0500)
include/deal.II/lac/iterative_inverse.h
include/deal.II/lac/matrix_lib.h
include/deal.II/lac/solver_bicgstab.h
include/deal.II/lac/solver_cg.h
include/deal.II/lac/solver_gmres.h
include/deal.II/lac/solver_minres.h
include/deal.II/lac/solver_qmrs.h
include/deal.II/lac/solver_richardson.h
include/deal.II/multigrid/mg_coarse.h
include/deal.II/multigrid/mg_smoother.h

index 53cc5549194b0b65618f3693fd0350895275e06c..8ca447fb97b91f359773f1f7787dfc8f0b9701d0 100644 (file)
@@ -83,8 +83,8 @@ public:
    * Initialization function. Provide a matrix and preconditioner for the
    * solve in vmult().
    */
-  template <typename MatrixType, class PRECONDITION>
-  void initialize (const MatrixType &, const PRECONDITION &);
+  template <typename MatrixType, typename PreconditionerType>
+  void initialize (const MatrixType &, const PreconditionerType &);
 
   /**
    * Delete the pointers to matrix and preconditioner.
@@ -124,10 +124,10 @@ private:
 
 
 template <typename VectorType>
-template <typename MatrixType, class PRECONDITION>
+template <typename MatrixType, typename PreconditionerType>
 inline
 void
-IterativeInverse<VectorType>::initialize(const MatrixType &m, const PRECONDITION &p)
+IterativeInverse<VectorType>::initialize(const MatrixType &m, const PreconditionerType &p)
 {
   // dummy variable
   VectorType *v = 0;
index adcc6726937e4d674afbf5f4b1502658bbc50ef0..3cec3a1edf7a3aae318e2119021ca8b4868f2b9d 100644 (file)
@@ -449,9 +449,9 @@ public:
    * Initialization function. Provide a solver object, a matrix, and another
    * preconditioner for this.
    */
-  template <typename MatrixType, class PRECONDITION>
+  template <typename MatrixType, typename PreconditionerType>
   void initialize (const MatrixType &,
-                   const PRECONDITION &);
+                   const PreconditionerType &);
 
   /**
    * Access to the SolverControl object used by the solver.
@@ -735,16 +735,17 @@ MeanValueFilter::Tvmult_add(VectorType &, const VectorType &) const
 //-----------------------------------------------------------------------//
 
 template <typename VectorType>
-template <typename MatrixType, class PRECONDITION>
+template <typename MatrixType, typename PreconditionerType>
 inline void
-InverseMatrixRichardson<VectorType>::initialize (const MatrixType &m, const PRECONDITION &p)
+InverseMatrixRichardson<VectorType>::initialize (const MatrixType &m,
+                                                 const PreconditionerType &p)
 {
   if (matrix != 0)
     delete matrix;
   matrix = new PointerMatrix<MatrixType, VectorType>(&m);
   if (precondition != 0)
     delete precondition;
-  precondition = new PointerMatrix<PRECONDITION, VectorType>(&p);
+  precondition = new PointerMatrix<PreconditionerType, VectorType>(&p);
 }
 
 
index 0ffc4ab648279b218425e71afa13fe8115d8188f..7b097ebb2550ad8f4fd11ce0f09f5185a3026a4c 100644 (file)
@@ -128,12 +128,12 @@ public:
   /**
    * Solve primal problem only.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
 protected:
   /**
@@ -253,10 +253,10 @@ private:
    * The iteration loop itself. The function returns a structure indicating
    * what happened in this function.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   IterationResult
-  iterate(const MatrixType     &A,
-          const PRECONDITIONER &precondition);
+  iterate(const MatrixType         &A,
+          const PreconditionerType &precondition);
 };
 
 /*@}*/
@@ -347,10 +347,10 @@ SolverBicgstab<VectorType>::print_vectors(const unsigned int,
 
 
 template<typename VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 typename SolverBicgstab<VectorType>::IterationResult
-SolverBicgstab<VectorType>::iterate(const MatrixType     &A,
-                                    const PRECONDITIONER &precondition)
+SolverBicgstab<VectorType>::iterate(const MatrixType         &A,
+                                    const PreconditionerType &precondition)
 {
 //TODO:[GK] Implement "use the length of the computed orthogonal residual" in the BiCGStab method.
   SolverControl::State state = SolverControl::iterate;
@@ -434,12 +434,12 @@ SolverBicgstab<VectorType>::iterate(const MatrixType     &A,
 
 
 template<typename VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 void
-SolverBicgstab<VectorType>::solve(const MatrixType     &A,
-                                  VectorType           &x,
-                                  const VectorType     &b,
-                                  const PRECONDITIONER &precondition)
+SolverBicgstab<VectorType>::solve(const MatrixType         &A,
+                                  VectorType               &x,
+                                  const VectorType         &b,
+                                  const PreconditionerType &precondition)
 {
   deallog.push("Bicgstab");
   Vr    = this->memory.alloc();
index 61d1734521e4e57093e26ace2d208020fed29d5d..d65703b13f00731eabe398e0f8bb27925685fdc8 100644 (file)
@@ -175,12 +175,12 @@ public:
   /**
    * Solve the linear system $Ax=b$ for x.
    */
-  template <typename MatrixType, class PRECONDITIONER>
+  template <typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
   /**
    * Connect a slot to retrieve the CG coefficients. The slot will be called
@@ -453,12 +453,12 @@ SolverCG<VectorType>::compute_eigs_and_cond
 
 
 template <typename VectorType>
-template <typename MatrixType, class PRECONDITIONER>
+template <typename MatrixType, typename PreconditionerType>
 void
-SolverCG<VectorType>::solve (const MatrixType     &A,
-                             VectorType           &x,
-                             const VectorType     &b,
-                             const PRECONDITIONER &precondition)
+SolverCG<VectorType>::solve (const MatrixType         &A,
+                             VectorType               &x,
+                             const VectorType         &b,
+                             const PreconditionerType &precondition)
 {
   SolverControl::State conv=SolverControl::iterate;
 
@@ -521,7 +521,7 @@ SolverCG<VectorType>::solve (const MatrixType     &A,
           return;
         }
 
-      if (types_are_equal<PRECONDITIONER,PreconditionIdentity>::value == false)
+      if (types_are_equal<PreconditionerType,PreconditionIdentity>::value == false)
         {
           precondition.vmult(h,g);
 
@@ -553,7 +553,7 @@ SolverCG<VectorType>::solve (const MatrixType     &A,
           if (conv != SolverControl::iterate)
             break;
 
-          if (types_are_equal<PRECONDITIONER,PreconditionIdentity>::value
+          if (types_are_equal<PreconditionerType,PreconditionIdentity>::value
               == false)
             {
               precondition.vmult(h,g);
index 5a29a11b3cf224c891cde263299cb40ee0b3d851..0e1effa64acf720daab7cd42899e5e94b362f5e9 100644 (file)
@@ -259,12 +259,12 @@ public:
   /**
    * Solve the linear system $Ax=b$ for x.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
   /**
    * Connect a slot to retrieve the estimated condition number.
@@ -452,12 +452,12 @@ public:
   /**
    * Solve the linear system $Ax=b$ for x.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
 private:
 
@@ -746,12 +746,12 @@ SolverGMRES<VectorType>::compute_eigs_and_cond
 
 
 template<class VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 void
-SolverGMRES<VectorType>::solve (const MatrixType     &A,
-                                VectorType           &x,
-                                const VectorType     &b,
-                                const PRECONDITIONER &precondition)
+SolverGMRES<VectorType>::solve (const MatrixType         &A,
+                                VectorType               &x,
+                                const VectorType         &b,
+                                const PreconditionerType &precondition)
 {
   // this code was written a very long time ago by people not associated with
   // deal.II. we don't make any guarantees to its optimality or that it even
@@ -1114,12 +1114,12 @@ SolverFGMRES<VectorType>::SolverFGMRES (SolverControl        &cn,
 
 
 template<class VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 void
-SolverFGMRES<VectorType>::solve (const MatrixType     &A,
-                                 VectorType           &x,
-                                 const VectorType     &b,
-                                 const PRECONDITIONER &precondition)
+SolverFGMRES<VectorType>::solve (const MatrixType         &A,
+                                 VectorType               &x,
+                                 const VectorType         &b,
+                                 const PreconditionerType &precondition)
 {
   deallog.push("FGMRES");
 
index 0b37270d3dcc3d56d1683805139b6732a8db7f5e..23d825839bda6617f25bd98fc3ecba47b70b1501 100644 (file)
@@ -98,12 +98,12 @@ public:
   /**
    * Solve the linear system $Ax=b$ for x.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
   /**
    * @addtogroup Exceptions
@@ -196,12 +196,12 @@ SolverMinRes<VectorType>::print_vectors(const unsigned int,
 
 
 template<class VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 void
-SolverMinRes<VectorType>::solve (const MatrixType     &A,
-                                 VectorType           &x,
-                                 const VectorType     &b,
-                                 const PRECONDITIONER &precondition)
+SolverMinRes<VectorType>::solve (const MatrixType         &A,
+                                 VectorType               &x,
+                                 const VectorType         &b,
+                                 const PreconditionerType &precondition)
 {
   SolverControl::State conv=SolverControl::iterate;
 
index dc128bb2ef39e44b2db0017ced19712a4f6c3345..412d2372bbbd539bc2590e59a8ed32cb260d487d 100644 (file)
@@ -125,12 +125,12 @@ public:
   /**
    * Solve the linear system $Ax=b$ for x.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
   /**
    * Interface for derived class. This function gets the current iteration
@@ -198,10 +198,10 @@ private:
    * The iteration loop itself. The function returns a structure indicating
    * what happened in this function.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   IterationResult
-  iterate (const MatrixType     &A,
-           const PRECONDITIONER &precondition);
+  iterate (const MatrixType         &A,
+           const PreconditionerType &precondition);
 
   /**
    * Number of the current iteration (accumulated over restarts)
@@ -264,12 +264,12 @@ SolverQMRS<VectorType>::print_vectors(const unsigned int,
 
 
 template<class VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 void
-SolverQMRS<VectorType>::solve (const MatrixType     &A,
-                               VectorType           &x,
-                               const VectorType     &b,
-                               const PRECONDITIONER &precondition)
+SolverQMRS<VectorType>::solve (const MatrixType         &A,
+                               VectorType               &x,
+                               const VectorType         &b,
+                               const PreconditionerType &precondition)
 {
   deallog.push("QMRS");
 
@@ -322,10 +322,10 @@ SolverQMRS<VectorType>::solve (const MatrixType     &A,
 
 
 template<class VectorType>
-template<typename MatrixType, class PRECONDITIONER>
+template<typename MatrixType, typename PreconditionerType>
 typename SolverQMRS<VectorType>::IterationResult
-SolverQMRS<VectorType>::iterate(const MatrixType     &A,
-                                const PRECONDITIONER &precondition)
+SolverQMRS<VectorType>::iterate(const MatrixType         &A,
+                                const PreconditionerType &precondition)
 {
   /* Remark: the matrix A in the article is the preconditioned matrix.
    * Therefore, we have to precondition x before we compute the first residual.
index 34d6bb963823f3fbe2d95458c7d5514b442f8829..20f07b2bd2a565ad789ca76c70e24d845dc290b9 100644 (file)
@@ -107,22 +107,22 @@ public:
   /**
    * Solve the linear system $Ax=b$ for x.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  solve (const MatrixType     &A,
-         VectorType           &x,
-         const VectorType     &b,
-         const PRECONDITIONER &precondition);
+  solve (const MatrixType         &A,
+         VectorType               &x,
+         const VectorType         &b,
+         const PreconditionerType &precondition);
 
   /**
    * Solve $A^Tx=b$ for $x$.
    */
-  template<typename MatrixType, class PRECONDITIONER>
+  template<typename MatrixType, typename PreconditionerType>
   void
-  Tsolve (const MatrixType     &A,
-          VectorType           &x,
-          const VectorType     &b,
-          const PRECONDITIONER &precondition);
+  Tsolve (const MatrixType         &A,
+          VectorType               &x,
+          const VectorType         &b,
+          const PreconditionerType &precondition);
 
   /**
    * Set the damping-coefficient. Default is 1., i.e. no damping.
@@ -214,12 +214,12 @@ SolverRichardson<VectorType>::~SolverRichardson()
 
 
 template <class VectorType>
-template <typename MatrixType, class PRECONDITIONER>
+template <typename MatrixType, typename PreconditionerType>
 void
-SolverRichardson<VectorType>::solve (const MatrixType     &A,
-                                     VectorType           &x,
-                                     const VectorType     &b,
-                                     const PRECONDITIONER &precondition)
+SolverRichardson<VectorType>::solve (const MatrixType         &A,
+                                     VectorType               &x,
+                                     const VectorType         &b,
+                                     const PreconditionerType &precondition)
 {
   SolverControl::State conv=SolverControl::iterate;
 
@@ -285,12 +285,12 @@ SolverRichardson<VectorType>::solve (const MatrixType     &A,
 
 
 template <class VectorType>
-template <typename MatrixType, class PRECONDITIONER>
+template <typename MatrixType, typename PreconditionerType>
 void
-SolverRichardson<VectorType>::Tsolve (const MatrixType     &A,
-                                      VectorType           &x,
-                                      const VectorType     &b,
-                                      const PRECONDITIONER &precondition)
+SolverRichardson<VectorType>::Tsolve (const MatrixType         &A,
+                                      VectorType               &x,
+                                      const VectorType         &b,
+                                      const PreconditionerType &precondition)
 {
   SolverControl::State conv=SolverControl::iterate;
   double last_criterion = -std::numeric_limits<double>::max();
index 628414b8cced86b22db5c0079b6a11a70a5ccd87..fa79b357f53db0221f231a27e29028889f9765d1 100644 (file)
@@ -50,10 +50,10 @@ public:
    * Constructor. Store solver, matrix and preconditioning method for later
    * use.
    */
-  template<typename MatrixType, class PRECOND>
+  template<typename MatrixType, typename PreconditionerType>
   MGCoarseGridLACIteration (SolverType &,
                             const MatrixType &,
-                            const PRECOND &);
+                            const PreconditionerType &);
 
   /**
    * Destructor freeing the pointers.
@@ -63,10 +63,10 @@ public:
   /**
    * Initialize new data.
    */
-  template<typename MatrixType, class PRECOND>
+  template<typename MatrixType, typename PreconditionerType>
   void initialize (SolverType &,
                    const MatrixType &,
-                   const PRECOND &);
+                   const PreconditionerType &);
 
   /**
    * Clear all pointers.
@@ -198,16 +198,16 @@ MGCoarseGridLACIteration<SolverType, VectorType>
 
 
 template<typename SolverType, class VectorType>
-template<typename MatrixType, class PRECOND>
+template<typename MatrixType, typename PreconditionerType>
 MGCoarseGridLACIteration<SolverType, VectorType>
-::MGCoarseGridLACIteration (SolverType       &s,
-                            const MatrixType &m,
-                            const PRECOND    &p)
+::MGCoarseGridLACIteration (SolverType               &s,
+                            const MatrixType         &m,
+                            const PreconditionerType &p)
   :
   solver(&s, typeid(*this).name())
 {
   matrix = new PointerMatrix<MatrixType, VectorType>(&m);
-  precondition = new PointerMatrix<PRECOND, VectorType>(&p);
+  precondition = new PointerMatrix<PreconditionerType, VectorType>(&p);
 }
 
 
@@ -220,12 +220,12 @@ MGCoarseGridLACIteration<SolverType, VectorType>
 
 
 template<typename SolverType, class VectorType>
-template<typename MatrixType, class PRECOND>
+template<typename MatrixType, typename PreconditionerType>
 void
 MGCoarseGridLACIteration<SolverType, VectorType>
-::initialize (SolverType       &s,
-              const MatrixType &m,
-              const PRECOND    &p)
+::initialize (SolverType               &s,
+              const MatrixType         &m,
+              const PreconditionerType &p)
 {
   solver = &s;
   if (matrix)
@@ -233,7 +233,7 @@ MGCoarseGridLACIteration<SolverType, VectorType>
   matrix = new PointerMatrix<MatrixType, VectorType>(&m);
   if (precondition)
     delete precondition;
-  precondition = new PointerMatrix<PRECOND, VectorType>(&p);
+  precondition = new PointerMatrix<PreconditionerType, VectorType>(&p);
 }
 
 
index ebc9a66ac67e9fa58fccfb3b713fbee10be44b33..3dded6693c6eff59e9d01a0564ee55b5fd00155a 100644 (file)
@@ -399,7 +399,7 @@ private:
  *
  * @author Guido Kanschat, 2009
  */
-template<typename MatrixType, class PRECONDITIONER, typename VectorType>
+template<typename MatrixType, typename PreconditionerType, typename VectorType>
 class MGSmootherPrecondition : public MGSmoother<VectorType>
 {
 public:
@@ -416,19 +416,19 @@ public:
    * matrices and initializes the smoothing operator with the same smoother
    * for each level.
    *
-   * @p additional_data is an object of type @p PRECONDITIONER::AdditionalData
+   * @p additional_data is an object of type @p PreconditionerType::AdditionalData
    * and is handed to the initialization function of the relaxation method.
    */
   template <typename MatrixType2>
   void initialize (const MGLevelObject<MatrixType2> &matrices,
-                   const typename PRECONDITIONER::AdditionalData &additional_data = typename PRECONDITIONER::AdditionalData());
+                   const typename PreconditionerType::AdditionalData &additional_data = typename PreconditionerType::AdditionalData());
 
   /**
    * Initialize for matrices. This function stores pointers to the level
    * matrices and initializes the smoothing operator with the according
    * smoother for each level.
    *
-   * @p additional_data is an object of type @p PRECONDITIONER::AdditionalData
+   * @p additional_data is an object of type @p PreconditionerType::AdditionalData
    * and is handed to the initialization function of the relaxation method.
    */
   template <typename MatrixType2, class DATA>
@@ -441,7 +441,7 @@ public:
    * This function stores pointers to the level matrices and initializes the
    * smoothing operator with the same smoother for each level.
    *
-   * @p additional_data is an object of type @p PRECONDITIONER::AdditionalData
+   * @p additional_data is an object of type @p PreconditionerType::AdditionalData
    * and is handed to the initialization function of the relaxation method.
    */
   template <typename MatrixType2, class DATA>
@@ -456,7 +456,7 @@ public:
    * This function stores pointers to the level matrices and initializes the
    * smoothing operator with the according smoother for each level.
    *
-   * @p additional_data is an object of type @p PRECONDITIONER::AdditionalData
+   * @p additional_data is an object of type @p PreconditionerType::AdditionalData
    * and is handed to the initialization function of the relaxation method.
    */
   template <typename MatrixType2, class DATA>
@@ -480,7 +480,7 @@ public:
   /**
    * Object containing relaxation methods.
    */
-  MGLevelObject<PRECONDITIONER> smoothers;
+  MGLevelObject<PreconditionerType> smoothers;
 
   /**
    * Memory used by this object.
@@ -840,9 +840,9 @@ memory_consumption () const
 
 //----------------------------------------------------------------------//
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 inline
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::MGSmootherPrecondition
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::MGSmootherPrecondition
 (const unsigned int steps,
  const bool         variable,
  const bool         symmetric,
@@ -853,9 +853,9 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::MGSmootherPrecon
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 inline void
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::clear ()
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::clear ()
 {
   smoothers.clear();
 
@@ -867,12 +867,12 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::clear ()
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 template <typename MatrixType2>
 inline void
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::initialize
 (const MGLevelObject<MatrixType2>              &m,
- const typename PRECONDITIONER::AdditionalData &data)
+ const typename PreconditionerType::AdditionalData &data)
 {
   const unsigned int min = m.min_level();
   const unsigned int max = m.max_level();
@@ -889,10 +889,10 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 template <typename MatrixType2, class DATA>
 inline void
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::initialize
 (const MGLevelObject<MatrixType2> &m,
  const MGLevelObject<DATA>        &data)
 {
@@ -916,10 +916,10 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 template <typename MatrixType2, class DATA>
 inline void
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::initialize
 (const MGLevelObject<MatrixType2> &m,
  const DATA                       &data,
  const unsigned int                row,
@@ -940,10 +940,10 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 template <typename MatrixType2, class DATA>
 inline void
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::initialize
 (const MGLevelObject<MatrixType2> &m,
  const MGLevelObject<DATA>        &data,
  const unsigned int                row,
@@ -969,9 +969,9 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::initialize
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 inline void
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::smooth
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::smooth
 (const unsigned int level,
  VectorType         &u,
  const VectorType   &rhs) const
@@ -1040,10 +1040,10 @@ MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::smooth
 
 
 
-template <typename MatrixType, class PRECONDITIONER, typename VectorType>
+template <typename MatrixType, typename PreconditionerType, typename VectorType>
 inline
 std::size_t
-MGSmootherPrecondition<MatrixType, PRECONDITIONER, VectorType>::
+MGSmootherPrecondition<MatrixType, PreconditionerType, VectorType>::
 memory_consumption () const
 {
   return sizeof(*this)

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.