ug4
|
describes an inverse linear mapping X->Y based on a matrix More...
#include <matrix_operator_inverse.h>
Public Types | |
typedef Y | codomain_function_type |
Range space. | |
typedef X | domain_function_type |
Domain space. | |
typedef M | matrix_type |
Matrix type. | |
![]() | |
typedef Y | codomain_function_type |
Range space. | |
typedef X | domain_function_type |
Domain space. | |
![]() | |
typedef Y | codomain_function_type |
Range space. | |
typedef X | domain_function_type |
Domain space. | |
Public Member Functions | |
virtual bool | apply (Y &u, const X &f)=0 |
applies the inverse operator, i.e. returns u = A^{-1} * f | |
virtual bool | apply_return_defect (Y &u, X &f)=0 |
applies the inverse operator and updates the defect | |
virtual bool | init (SmartPtr< ILinearOperator< Y, X > > A) |
initializes this inverse operator for a linear operator | |
virtual bool | init (SmartPtr< ILinearOperator< Y, X > > A, const Y &u) |
initializes this inverse operator for a linear operator | |
virtual bool | init (SmartPtr< MatrixOperator< M, Y, X > > A)=0 |
initializes this inverse operator for a matrix-based operator | |
virtual | ~IMatrixOperatorInverse () |
virtual destructor | |
![]() | |
virtual bool | apply_update_defect (Y &u, X &f) |
compute new correction c = B*d and update defect d := d - A*c | |
virtual SmartPtr< ILinearIterator< X, Y > > | clone () |
clone | |
virtual std::string | config_string () const |
returns information about configuration parameters | |
SmartPtr< IConvergenceCheck< X > > | convergence_check () |
returns the convergence check | |
ConstSmartPtr< IConvergenceCheck< X > > | convergence_check () const |
returns the convergence check | |
number | defect () const |
returns the current defect | |
ILinearOperatorInverse () | |
constructor setting convergence check to (100, 1e-12, 1e-12, true) | |
ILinearOperatorInverse (SmartPtr< IConvergenceCheck< X > > spConvCheck) | |
Default constructor. | |
SmartPtr< ILinearOperator< Y, X > > | linear_operator () |
returns the current Operator this Inverse Operator is initialized for | |
virtual const char * | name () const =0 |
returns the name of the operator inverse | |
number | reduction () const |
returns the current relative reduction | |
void | set_convergence_check (SmartPtr< IConvergenceCheck< X > > spConvCheck) |
set the convergence check | |
virtual int | standard_offset () const |
returns the standard offset for output | |
int | step () const |
returns the current number of steps | |
virtual bool | supports_parallel () const =0 |
returns if parallel solving is supported | |
virtual | ~ILinearOperatorInverse () |
virtual destructor | |
![]() | |
SmartPtr< IDamping< X, Y > > | damping () |
returns the scaling | |
ILinearIterator () | |
constructor | |
ILinearIterator (const ILinearIterator< X, Y > &parent) | |
copy constructor | |
void | set_damp (number factor) |
sets the damping to a constant factor | |
void | set_damp (SmartPtr< IDamping< X, Y > > spScaling) |
sets a scaling for the correction | |
virtual | ~ILinearIterator () |
virtual destructor | |
Additional Inherited Members | |
![]() | |
SmartPtr< IConvergenceCheck< X > > | m_spConvCheck |
smart pointer holding the convergence check | |
SmartPtr< ILinearOperator< Y, X > > | m_spLinearOperator |
Operator that is inverted by this Inverse Operator. | |
![]() | |
SmartPtr< IDamping< X, Y > > | m_spDamping |
the scaling | |
describes an inverse linear mapping X->Y based on a matrix
This class is the base class for the inversion of linear matrix-based operator given in form of the IMatrixOperator interface class. Given a operator L, the basic usage of this class is to invert this operator, i.e. to compute the solution u of
L*u = f i.e. u := L^{-1} f
X | domain space (i.e. a vector corresponding to the matrix) |
Y | range space (i.e. a vector corresponding to the matrix) |
M | matrix type used to represent linear mapping |
typedef Y ug::IMatrixOperatorInverse< M, X, Y >::codomain_function_type |
Range space.
typedef X ug::IMatrixOperatorInverse< M, X, Y >::domain_function_type |
Domain space.
typedef M ug::IMatrixOperatorInverse< M, X, Y >::matrix_type |
Matrix type.
|
inlinevirtual |
virtual destructor
|
pure virtual |
applies the inverse operator, i.e. returns u = A^{-1} * f
This method applies the inverse operator.
[out] | u | solution |
[in] | f | right-hand side |
Implements ug::ILinearOperatorInverse< X, Y >.
Implemented in ug::IExternalSolver< TAlgebra >, ug::LU< TAlgebra >, ug::AgglomeratingBase< IMatrixOperatorInverse< TAlgebra::matrix_type, TAlgebra::vector_type >, TAlgebra >, and ug::FETISolver< TAlgebra >.
|
pure virtual |
applies the inverse operator and updates the defect
This method applies the inverse operator and updates the defect, i.e. returns u = A^{-1} * f and in f the last defect d:= f - A*u is returned.
[out] | u | solution |
[in] | f | right-hand side on entry, defect on exit |
Implements ug::ILinearOperatorInverse< X, Y >.
Implemented in ug::FETISolver< TAlgebra >, ug::AgglomeratingBase< IMatrixOperatorInverse< TAlgebra::matrix_type, TAlgebra::vector_type >, TAlgebra >, ug::IExternalSolver< TAlgebra >, and ug::LU< TAlgebra >.
|
inlinevirtual |
initializes this inverse operator for a linear operator
This method implements the ILinearOperatorInverse interface method. Basically, the request is forwarded to the matrix-based init method, if the the operator is matrix-based. If the operator is not matrix-based this inverse can not be used and false is returned
[in] | A | linear matrix-based operator to invert |
Reimplemented from ug::ILinearOperatorInverse< X, Y >.
References init(), SmartPtr< T, FreePolicy >::invalid(), and UG_THROW.
|
inlinevirtual |
initializes this inverse operator for a linear operator
This method implements the ILinearOperatorInverse interface method. Basically, the request is forwarded to the matrix-based init method, if the the operator is matrix-based. If the operator is not matrix-based this inverse can not be used and false is returned
[in] | A | linear matrix-based operator to invert |
[in] | u | linearization point |
Reimplemented from ug::ILinearOperatorInverse< X, Y >.
References init().
|
pure virtual |
initializes this inverse operator for a matrix-based operator
This method passes the operator A that is inverted by this operator. In addition some preparation step can be made.
[in] | A | linear matrix-basewd operator to invert |