| FEAT 3
    Finite Element Analysis Toolbox | 
UMFPACK Mean solver class. More...
#include <umfpack.hpp>
 
  
| Public Types | |
| typedef SolverBase< VectorType > | BaseClass | 
| our base class  More... | |
| typedef LAFEM::SparseMatrixCSR< double, Index > | MatrixType | 
| compatible matrix type  More... | |
| typedef LAFEM::DenseVector< double, Index > | VectorType | 
| compatible vector type  More... | |
| Public Member Functions | |
| UmfpackMean (const MatrixType &system_matrix, const LAFEM::MeanFilter< double, Index > &mean_filter) | |
| Constructor.  More... | |
| UmfpackMean (const MatrixType &system_matrix, const VectorType &weight_vector) | |
| Constructor.  More... | |
| virtual Status | apply (LAFEM::DenseVector< double, Index > &vec_cor, const LAFEM::DenseVector< double, Index > &vec_def)=0 | 
| Solver application method.  More... | |
| virtual Status | apply (VectorType &vec_sol, const VectorType &vec_rhs) override | 
| Solves a linear system with the factorized system matrix.  More... | |
| virtual void | done () | 
| Finalization method.  More... | |
| virtual void | done_numeric () override | 
| Numeric finalization method.  More... | |
| virtual void | done_symbolic () override | 
| Symbolic finalization method.  More... | |
| virtual void | init () | 
| Initialization method.  More... | |
| virtual void | init_numeric () override | 
| Numeric initialization method.  More... | |
| virtual void | init_symbolic () override | 
| Symbolic initialization method.  More... | |
| virtual String | name () const override | 
| Returns the name of the solver.  More... | |
| Private Attributes | |
| MatrixType | _solver_matrix | 
| our extended system matrix  More... | |
| const MatrixType & | _system_matrix | 
| system matrix  More... | |
| Umfpack | _umfpack | 
| our internal Umfpack solver object  More... | |
| VectorType | _vec_b | 
| VectorType | _vec_x | 
| two temporary extended vectors  More... | |
| const VectorType & | _weight_vector | 
| weight vector  More... | |
UMFPACK Mean solver class.
This class implements a variant of the Umfpack solver, which is capable of solving linear systems including the integral mean constraint or any other constraint that can be expressed as a scalar Lagrange multiplier to the original system matrix.
As Umfpack is a direct solver, it cannot directly utilize the MeanFilter class, which is used by iterative solvers to enforce the integral mean constraint. Therefore, this class implements an algorithm, which extends the original system matrix by a Lagrange multiplier vector and applied the Umfpack solver onto this extended linear system.
This class offers two constructors:
Definition at line 140 of file umfpack.hpp.
our base class
Definition at line 150 of file umfpack.hpp.
| typedef LAFEM::SparseMatrixCSR<double, Index> FEAT::Solver::UmfpackMean::MatrixType | 
compatible matrix type
Definition at line 145 of file umfpack.hpp.
| typedef LAFEM::DenseVector<double, Index> FEAT::Solver::UmfpackMean::VectorType | 
compatible vector type
Definition at line 147 of file umfpack.hpp.
| 
 | explicit | 
Constructor.
| [in] | system_matrix | A reference to the system matrix to be factorized. | 
| [in] | weight_vector | The weight vector to be used as a Lagrange multiplier. | 
| 
 | inlineexplicit | 
Constructor.
| [in] | system_matrix | A reference to the system matrix to be factorized. | 
| [in] | mean_filter | A reference to the mean filter containing the weight vector. | 
Definition at line 185 of file umfpack.hpp.
| 
 | pure virtualinherited | 
Solver application method.
This method applies the solver represented by this object onto a given defect vector and returns the corresponding correction vector.
correct() method which corrects an initial solution instead of starting with the null vector.| [out] | vec_cor | The vector that shall receive the solution of the linear system. It is assumed to be allocated, but its numerical contents may be undefined upon calling this method. | 
| [in] | vec_def | The vector that represents the right-hand-side of the linear system to be solved. | 
| 
 | overridevirtual | 
Solves a linear system with the factorized system matrix.
| [in,out] | vec_sol | A reference to the solution vector. The vector must be allocated to the correct length, but its initial contents are ignored. | 
| [in] | vec_rhs | A reference to the right-hand-side of the linear system. | 
| 
 | inlinevirtualinherited | 
| 
 | overridevirtual | 
Numeric finalization method.
This method is called to release any data allocated in the numeric initialization step.
Reimplemented from FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.
| 
 | overridevirtual | 
Symbolic finalization method.
This method is called to release any data allocated in the symbolic initialization step.
Reimplemented from FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.
| 
 | inlinevirtualinherited | 
| 
 | overridevirtual | 
Numeric initialization method.
This method is called to perform numeric initialization of the solver.
Before this function can be called, the symbolic initialization must be performed. 
Reimplemented from FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.
| 
 | overridevirtual | 
Symbolic initialization method.
This method is called to perform symbolic initialization of the solver.
Reimplemented from FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.
| 
 | inlineoverridevirtual | 
Returns the name of the solver.
Implements FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.
Definition at line 193 of file umfpack.hpp.
| 
 | private | 
our extended system matrix
Definition at line 158 of file umfpack.hpp.
| 
 | private | 
system matrix
Definition at line 154 of file umfpack.hpp.
| 
 | private | 
our internal Umfpack solver object
Definition at line 162 of file umfpack.hpp.
| 
 | private | 
Definition at line 160 of file umfpack.hpp.
| 
 | private | 
two temporary extended vectors
Definition at line 160 of file umfpack.hpp.
| 
 | private | 
weight vector
Definition at line 156 of file umfpack.hpp.