33#ifndef SCHUR_COMPLEMENT_INVERSE_H_
34#define SCHUR_COMPLEMENT_INVERSE_H_
51template<
typename TAlgebra>
82 std::stringstream ss; ss <<
"SchurInverseWithOperator\n";
97template<
typename TAlgebra>
134 PROFILE_BEGIN(SchurInverseWithFullMatrix_apply_return_defect)
140 std::stringstream ss; ss <<
"SchurInverseWithFullMatrix\n";
156template<
typename TAlgebra>
176 m_linSolver->preconditioner().template cast_dynamic< IPreconditioner<TAlgebra> > ();
192 PROFILE_BEGIN(SchurInverseWithAGammaGamma_apply_return_defect)
197 std::stringstream ss; ss <<
"SchurInverseWithAGammaGamma\n";
211template <
typename TAlgebra,
typename M,
typename X,
typename Y = X>
249 virtual void apply(Y& f,
const X& u) {
m_op->apply(f,u);}
259template<
typename TAlgebra>
293 std::stringstream ss; ss <<
"SchurInverseWithAutoFullMatrix\n";
Definition smart_pointer.h:108
bool valid() const
returns true if the pointer is valid, false if not.
Definition smart_pointer.h:206
describes an inverse linear mapping X->Y
Definition linear_operator_inverse.h:80
virtual bool apply(Y &u, const X &f)=0
applies inverse operator, i.e. returns u = A^{-1} f
virtual std::string config_string() const
returns information about configuration parameters
Definition linear_operator_inverse.h:122
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 an inverse linear mapping X->X
Definition preconditioned_linear_operator_inverse.h:63
Definition schur_complement_inverse_interface.h:46
Definition matrix_operator.h:49
virtual M & get_matrix()
Definition matrix_operator.h:74
Definition schur_complement_inverse.h:213
void set_op(SmartPtr< SchurComplementOperator< TAlgebra > > op)
Definition schur_complement_inverse.h:224
virtual M & get_matrix()
Definition schur_complement_inverse.h:255
virtual void calculate_matrix()
Definition schur_complement_inverse.h:243
SchurComplementMatrixOperator(SmartPtr< SchurComplementOperator< TAlgebra > > op)
Definition schur_complement_inverse.h:219
SmartPtr< SchurComplementOperator< TAlgebra > > m_op
Definition schur_complement_inverse.h:216
virtual void apply_sub(Y &f, const X &u)
Definition schur_complement_inverse.h:252
virtual void init()
init operator
Definition schur_complement_inverse.h:234
virtual void apply(Y &f, const X &u)
Definition schur_complement_inverse.h:249
bool invalid
Definition schur_complement_inverse.h:218
M matrix_type
Definition schur_complement_inverse.h:214
virtual void init(const X &u)
init operator depending on a function u
Definition schur_complement_inverse.h:231
Definition schur_complement_operator.h:69
Definition schur_complement_inverse.h:158
SmartPtr< IPreconditionedLinearOperatorInverse< vector_type > > m_linSolver
Definition schur_complement_inverse.h:206
virtual bool supports_parallel() const
Definition schur_complement_inverse.h:201
TAlgebra::vector_type vector_type
Definition schur_complement_inverse.h:161
SchurInverseWithAGammaGamma(SmartPtr< IPreconditionedLinearOperatorInverse< vector_type > > linSolver)
Definition schur_complement_inverse.h:164
TAlgebra algebra_type
Definition schur_complement_inverse.h:160
virtual bool apply(vector_type &u, const vector_type &f)
Definition schur_complement_inverse.h:184
virtual bool init(SmartPtr< SchurComplementOperator< TAlgebra > > op)
Definition schur_complement_inverse.h:170
virtual std::string config_string() const
Definition schur_complement_inverse.h:195
virtual bool apply_return_defect(vector_type &u, vector_type &f)
Definition schur_complement_inverse.h:190
TAlgebra::matrix_type matrix_type
Definition schur_complement_inverse.h:162
Definition schur_complement_inverse.h:261
virtual std::string config_string() const
Definition schur_complement_inverse.h:291
TAlgebra::vector_type vector_type
Definition schur_complement_inverse.h:264
SmartPtr< SchurComplementMatrixOperator< TAlgebra, matrix_type, vector_type > > m_exactSchurOp
Definition schur_complement_inverse.h:303
SchurInverseWithAutoFullMatrix(SmartPtr< ILinearOperatorInverse< vector_type > > linOpInv)
Definition schur_complement_inverse.h:267
SmartPtr< ILinearOperatorInverse< vector_type > > m_linOpInv
Definition schur_complement_inverse.h:304
virtual bool init(SmartPtr< SchurComplementOperator< TAlgebra > > op)
Definition schur_complement_inverse.h:272
virtual bool apply_return_defect(vector_type &u, vector_type &f)
Definition schur_complement_inverse.h:286
TAlgebra::matrix_type matrix_type
Definition schur_complement_inverse.h:265
virtual bool supports_parallel() const
Definition schur_complement_inverse.h:297
virtual bool apply(vector_type &u, const vector_type &f)
Definition schur_complement_inverse.h:281
TAlgebra algebra_type
Definition schur_complement_inverse.h:263
Definition schur_complement_inverse.h:99
TAlgebra::matrix_type matrix_type
Definition schur_complement_inverse.h:103
SchurInverseWithFullMatrix(SmartPtr< ILinearOperatorInverse< vector_type > > linOpInv)
Definition schur_complement_inverse.h:105
virtual bool apply_return_defect(vector_type &u, vector_type &f)
Definition schur_complement_inverse.h:132
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_exactSchurOp
Definition schur_complement_inverse.h:150
SmartPtr< ILinearOperatorInverse< vector_type > > m_linOpInv
Definition schur_complement_inverse.h:151
virtual bool init(SmartPtr< SchurComplementOperator< TAlgebra > > op)
Definition schur_complement_inverse.h:110
virtual bool supports_parallel() const
Definition schur_complement_inverse.h:144
TAlgebra::vector_type vector_type
Definition schur_complement_inverse.h:102
virtual bool apply(vector_type &u, const vector_type &f)
Definition schur_complement_inverse.h:126
virtual std::string config_string() const
Definition schur_complement_inverse.h:138
TAlgebra algebra_type
Definition schur_complement_inverse.h:101
Definition schur_complement_inverse.h:53
SmartPtr< ILinearOperatorInverse< vector_type > > m_linOpInv
Definition schur_complement_inverse.h:92
virtual bool supports_parallel() const
Definition schur_complement_inverse.h:86
virtual bool apply_return_defect(vector_type &u, vector_type &f)
Definition schur_complement_inverse.h:75
virtual std::string config_string() const
Definition schur_complement_inverse.h:80
TAlgebra algebra_type
Definition schur_complement_inverse.h:55
SchurInverseWithOperator(SmartPtr< ILinearOperatorInverse< vector_type > > linOpInv)
Definition schur_complement_inverse.h:59
virtual bool init(SmartPtr< SchurComplementOperator< TAlgebra > > op)
Definition schur_complement_inverse.h:64
virtual bool apply(vector_type &u, const vector_type &f)
Definition schur_complement_inverse.h:70
TAlgebra::matrix_type matrix_type
Definition schur_complement_inverse.h:57
TAlgebra::vector_type vector_type
Definition schur_complement_inverse.h:56
Definition auto_linear_solver.h:49
#define UG_COND_THROW(cond, msg)
UG_COND_THROW(cond, msg) : performs a UG_THROW(msg) if cond == true.
Definition error.h:61
string ConfigShift(string s)
Definition string_util.cpp:457
@ SD_SKELETON
Definition schur.h:63
#define PROFILE_BEGIN(name)
Definition profiler.h:254
#define PROFILE_END()
Definition profiler.h:256
SmartPtr< T, FreePolicy > make_sp(T *inst)
returns a SmartPtr for the passed raw pointer
Definition smart_pointer.h:836