33 #ifndef __H__UG__LIB_DISC__OPERATOR__ITERATOR_OPERATOR_INVERSE__
34 #define __H__UG__LIB_DISC__OPERATOR__ITERATOR_OPERATOR_INVERSE__
63 template <
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(
")");
106 return m_opInv->supports_parallel();
109 virtual const char*
name()
const
118 UG_LOG(
"ERROR in '" <<
name() <<
"::init'.\n");
128 UG_LOG(
"ERROR in '" <<
name() <<
"::init'.\n");
146 if(
m_opInv->apply_return_defect(c, d))
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
describes a linear iterator that is based on a matrix operator
Definition: preconditioner.h:103
Definition: matrix_operator.h:49
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 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 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
virtual const char * name() const
returns the name of iterator
Definition: operator_inverse_iterator.h:109
virtual SmartPtr< ILinearIterator< vector_type, vector_type > > clone()
clone
Definition: operator_inverse_iterator.h:86
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