LifeV
TwoLevelPreconditioner.hpp
Go to the documentation of this file.
1 /*
2  * TwoLevelPreconditioner.hpp
3  *
4  * Created on: Oct 12, 2011
5  * Author: uvilla
6  */
7 
8 /*!
9  * \file TwoLevelPreconditioner.hpp
10  * \author Umberto Villa
11  * \date 2011-10-12
12  * This file contains the definition of the class \c TwoLevelPreconditioner.
13  * \c TwoLevelPreconditioer require a fine level operator and extension/prolongator operator of class \c Epetra_CsrMatrix.
14  * The \c ApplyInverse method of this class provides a two level approximation of the inverse of the original operator.
15  */
16 
17 #ifndef TWOLEVELPRECONDITIONER_HPP_
18 #define TWOLEVELPRECONDITIONER_HPP_
19 
20 #include <lifev/core/linear_algebra/RowMatrixPreconditioner.hpp>
21 
22 namespace LifeV
23 {
24 
25 namespace Operators
26 {
27 //! @class
28 /*!
29  * @brief An operator that provides a two level approximation of the inverse of a \c Epetra_CsrMatrix object.
30  *
31  * \c TwoLevelPreconditioner has exactly the same public interface of its base class \c RowMatrixPreconditioner.
32  * Internally this class creates a \c TwoLevelOperator object.
33  * We use the parameterList to inform a \c TwoLevelPreconditioner object of additional information as the Restriction and Exstension operator.
34  * In particular the parameter list provided to an instance of this class should have:
35  * <ul>
36  * <li> a parameter \c EstensionMatrix which stores the extension operator (pointer to Epetra_CsrMatrix).
37  * <li> a parameter \c RestrictionMatrix which stores the restriction operator (pointer to Epetra_CsrMatrix). If not provided the transpose of the extension operator will be used.
38  * <li> a sublist \c CoarseLevel which contains all the information to set-up the coarse solver operator of type \c ApproximateInverseRowMatrix.
39  * <li> a sublist \c FineLevel which contains all the information to set-up the fine level smoother of type \c RowMatrixPreconditioner.
40  * </ul>
41  *
42  *
43  */
45 {
46 public:
48  virtual ~TwoLevelPreconditioner();
49 
50 protected:
51  virtual int myCompute();
52 
53 };
54 
56 namespace
57 {
59 }
60 
61 
62 }
63 
64 }
65 
66 #endif /* TWOLEVELPRECONDITIONER_HPP_ */
RowMatrixPreconditioner * createTwoLevel()
void updateInverseJacobian(const UInt &iQuadPt)
virtual int myCompute()
Abstract method myCompute implemented by the derived class.
An operator that provides a two level approximation of the inverse of a Epetra_CsrMatrix object...
Abstract class to construct preconditioners from a matrix in Epetra_CsrFormat.