|
ug4
|
describes an inverse linear mapping X->Y based on a matrix More...
#include <matrix_operator_inverse.h>
Inheritance diagram for ug::IMatrixOperatorInverse< M, X, Y >:Public Types | |
| typedef Y | codomain_function_type |
| Range space. | |
| typedef X | domain_function_type |
| Domain space. | |
| typedef M | matrix_type |
| Matrix type. | |
Public Types inherited from ug::ILinearOperatorInverse< X, Y > | |
| typedef Y | codomain_function_type |
| Range space. | |
| typedef X | domain_function_type |
| Domain space. | |
Public Types inherited from ug::ILinearIterator< X, Y > | |
| 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 | |
Public Member Functions inherited from ug::ILinearOperatorInverse< X, Y > | |
| 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 | |
Public Member Functions inherited from ug::ILinearIterator< X, Y > | |
| 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 | |
Protected Attributes inherited from ug::ILinearOperatorInverse< X, Y > | |
| 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. | |
Protected Attributes inherited from ug::ILinearIterator< X, Y > | |
| 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 |