33#ifndef __H__UG__LIB_DISC__OPERATOR__ITERATOR_OPERATOR_INVERSE__
34#define __H__UG__LIB_DISC__OPERATOR__ITERATOR_OPERATOR_INVERSE__
63template <
typename TAlgebra>
88 UG_ASSERT(0,
"not implemented since ILinearOperatorInverse::clone not implemented");
94 m_name = std::string(
"OperatorInverseIterator(") + std::string(
m_opInv->
name()) + std::string(
")");
109 virtual const char*
name()
const
118 UG_LOG(
"ERROR in '" <<
name() <<
"::init'.\n");
128 UG_LOG(
"ERROR in '" <<
name() <<
"::init'.\n");
Definition smart_pointer.h:108
describes a linear iterator
Definition linear_iterator.h:81
describes a linear mapping X->Y
Definition linear_operator.h:80
describes an inverse linear mapping X->Y
Definition linear_operator_inverse.h:80
virtual const char * name() const =0
returns the name of the operator inverse
virtual bool apply(Y &u, const X &f)=0
applies inverse operator, i.e. returns u = A^{-1} f
virtual bool apply_return_defect(Y &u, X &f)=0
applies inverse operator, i.e. returns u = A^{-1} f and returns defect d := f - A*u
virtual bool supports_parallel() const =0
returns if parallel solving is supported
virtual bool init(SmartPtr< ILinearOperator< Y, X > > L)
initializes for the inverse for a linear operator
Definition linear_operator_inverse.h:135
describes a linear iterator that is based on a matrix operator
Definition preconditioner.h:103
Definition operator_inverse_iterator.h:65
TAlgebra::vector_type vector_type
Vector type.
Definition operator_inverse_iterator.h:71
IPreconditioner< TAlgebra > base_type
Base type.
Definition operator_inverse_iterator.h:80
std::string m_name
Definition operator_inverse_iterator.h:101
virtual SmartPtr< ILinearIterator< vector_type, vector_type > > clone()
clone
Definition operator_inverse_iterator.h:86
virtual bool supports_parallel() const
returns if parallel solving is supported
Definition operator_inverse_iterator.h:104
TAlgebra::matrix_type matrix_type
Matrix type.
Definition operator_inverse_iterator.h:74
virtual bool apply(vector_type &c, const vector_type &d)
compute new correction c = B*d
Definition operator_inverse_iterator.h:134
virtual const char * name() const
returns the name of iterator
Definition operator_inverse_iterator.h:109
virtual bool init(SmartPtr< ILinearOperator< vector_type > > L)
Definition operator_inverse_iterator.h:114
SmartPtr< ILinearOperatorInverse< vector_type > > m_opInv
Definition operator_inverse_iterator.h:83
virtual bool apply_update_defect(vector_type &c, vector_type &d)
compute new correction c = B*d and update defect d := d - A*c
Definition operator_inverse_iterator.h:144
IPreconditioner< TAlgebra >::matrix_operator_type matrix_operator_type
Matrix Operator type.
Definition operator_inverse_iterator.h:77
OperatorInverseIterator(SmartPtr< ILinearOperatorInverse< vector_type > > opInv)
default constructor
Definition operator_inverse_iterator.h:92
TAlgebra algebra_type
Algebra type.
Definition operator_inverse_iterator.h:68
virtual bool init(SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u)
Definition operator_inverse_iterator.h:124
~OperatorInverseIterator()
Definition operator_inverse_iterator.h:96
const NullSmartPtr SPNULL
The equivalent to NULL for smart pointers.
Definition smart_pointer.h:90
#define UG_ASSERT(expr, msg)
Definition assert.h:70
#define UG_LOG(msg)
Definition log.h:367