FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Solver::Umfpack Class Referenceabstract

UMFPACK solver class. More...

#include <umfpack.hpp>

Inheritance diagram for FEAT::Solver::Umfpack:
FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >

Public Types

typedef SolverBase< VectorTypeBaseClass
 our base class More...
 
typedef LAFEM::SparseMatrixCSR< double, IndexMatrixType
 compatible matrix type More...
 
typedef LAFEM::DenseVector< double, IndexVectorType
 compatible vector type More...
 

Public Member Functions

 Umfpack (const MatrixType &system_matrix)
 Constructor. More...
 
virtual ~Umfpack ()
 virtual destructor
 
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

std::size_t _num_mem_size
 numeric factorization memory size More...
 
std::size_t _sym_mem_size
 symbolic factorization memory size More...
 
std::size_t _sym_peak_size
 symbolic peak memory size More...
 
const MatrixType_system_matrix
 system matrix More...
 
double * _umf_control
 umfpack control array More...
 
void * _umf_numeric
 umfpack numeric factorization pointer More...
 
std::size_t _umf_peak_size
 total peak memory size More...
 
void * _umf_symbolic
 umfpack symbolic factorization pointer More...
 

Detailed Description

UMFPACK solver class.

This class provides an implementation of the SolverBase interface using the direct solver UMFPACK for doing the actual dirty work.

Note
This solver can only be applied onto SparseMatrixCSR<double,Index> matrices. If you want to apply UMFPACK on other matrix types, use the GenericUmfpack solver instead.
Attention
This class is only declared if FEAT was configured to build and link against the UMFPACK third-party library.
Author
Peter Zajac

Definition at line 40 of file umfpack.hpp.

Member Typedef Documentation

◆ BaseClass

our base class

Definition at line 50 of file umfpack.hpp.

◆ MatrixType

compatible matrix type

Definition at line 45 of file umfpack.hpp.

◆ VectorType

compatible vector type

Definition at line 47 of file umfpack.hpp.

Constructor & Destructor Documentation

◆ Umfpack()

FEAT::Solver::Umfpack::Umfpack ( const MatrixType system_matrix)
explicit

Constructor.

Parameters
[in]system_matrixA reference to the system matrix to be factorized.

Member Function Documentation

◆ apply() [1/2]

virtual Status FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >::apply ( LAFEM::DenseVector< double, Index > &  vec_cor,
const LAFEM::DenseVector< double, Index > &  vec_def 
)
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.

Note
Solvers which derive from the IterativeSolver base class also provide a correct() method which corrects an initial solution instead of starting with the null vector.
Parameters
[out]vec_corThe 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_defThe vector that represents the right-hand-side of the linear system to be solved.
Attention
vec_cor and vec_def must not refer to the same vector object!
Returns
A Status code that represents the status of the solution step.

◆ apply() [2/2]

virtual Status FEAT::Solver::Umfpack::apply ( VectorType vec_sol,
const VectorType vec_rhs 
)
overridevirtual

Solves a linear system with the factorized system matrix.

Parameters
[in,out]vec_solA reference to the solution vector. The vector must be allocated to the correct length, but its initial contents are ignored.
[in]vec_rhsA reference to the right-hand-side of the linear system.

Referenced by FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::apply().

◆ done()

virtual void FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >::done ( )
inlinevirtualinherited

Finalization method.

This function performs both the symbolic and numeric finalization, i.e. it simply performs

this->done_numeric();
this->done_symbolic();

Definition at line 283 of file base.hpp.

◆ done_numeric()

virtual void FEAT::Solver::Umfpack::done_numeric ( )
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 > >.

Referenced by FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::done_numeric(), and FEAT::Solver::GenericUmfpack< Matrix_ >::done_numeric().

◆ done_symbolic()

virtual void FEAT::Solver::Umfpack::done_symbolic ( )
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 > >.

Referenced by FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::done_symbolic(), and FEAT::Solver::GenericUmfpack< Matrix_ >::done_symbolic().

◆ init()

virtual void FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >::init ( )
inlinevirtualinherited

Initialization method.

This function performs both the symbolic and numeric initialization, i.e. it simply performs

this->init_symbolic();
this->init_numeric();

Definition at line 268 of file base.hpp.

◆ init_numeric()

virtual void FEAT::Solver::Umfpack::init_numeric ( )
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 > >.

Referenced by FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::init_numeric(), and FEAT::Solver::GenericUmfpack< Matrix_ >::init_numeric().

◆ init_symbolic()

virtual void FEAT::Solver::Umfpack::init_symbolic ( )
overridevirtual

Symbolic initialization method.

This method is called to perform symbolic initialization of the solver.

Reimplemented from FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.

Referenced by FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::init_symbolic(), and FEAT::Solver::GenericUmfpack< Matrix_ >::init_symbolic().

◆ name()

virtual String FEAT::Solver::Umfpack::name ( ) const
inlineoverridevirtual

Returns the name of the solver.

Implements FEAT::Solver::SolverBase< LAFEM::DenseVector< double, Index > >.

Definition at line 84 of file umfpack.hpp.

Member Data Documentation

◆ _num_mem_size

std::size_t FEAT::Solver::Umfpack::_num_mem_size
private

numeric factorization memory size

Definition at line 67 of file umfpack.hpp.

◆ _sym_mem_size

std::size_t FEAT::Solver::Umfpack::_sym_mem_size
private

symbolic factorization memory size

Definition at line 65 of file umfpack.hpp.

◆ _sym_peak_size

std::size_t FEAT::Solver::Umfpack::_sym_peak_size
private

symbolic peak memory size

Definition at line 63 of file umfpack.hpp.

◆ _system_matrix

const MatrixType& FEAT::Solver::Umfpack::_system_matrix
private

system matrix

Definition at line 54 of file umfpack.hpp.

◆ _umf_control

double* FEAT::Solver::Umfpack::_umf_control
private

umfpack control array

Definition at line 56 of file umfpack.hpp.

◆ _umf_numeric

void* FEAT::Solver::Umfpack::_umf_numeric
private

umfpack numeric factorization pointer

Definition at line 60 of file umfpack.hpp.

◆ _umf_peak_size

std::size_t FEAT::Solver::Umfpack::_umf_peak_size
private

total peak memory size

Definition at line 69 of file umfpack.hpp.

◆ _umf_symbolic

void* FEAT::Solver::Umfpack::_umf_symbolic
private

umfpack symbolic factorization pointer

Definition at line 58 of file umfpack.hpp.


The documentation for this class was generated from the following file: