ug4
ug::ITransformingIteration< TAlgebra, TDerived > Class Template Reference

#include <transforming.h>

+ Inheritance diagram for ug::ITransformingIteration< TAlgebra, TDerived >:

Public Types

typedef TAlgebra algebra_type
 Algebra type. More...
 
typedef algebra_type::matrix_type matrix_type
 Matrix type. More...
 
typedef algebra_type::vector_type vector_type
 Vector type. More...
 
- Public Types inherited from ug::ILinearIterator< TAlgebra::vector_type >
typedef TAlgebra::vector_type codomain_function_type
 Range space. More...
 
typedef TAlgebra::vector_type domain_function_type
 Domain space. More...
 
- Public Types inherited from ug::DebugWritingObject< TAlgebra >
typedef TAlgebra algebra_type
 type of algebra More...
 
typedef TAlgebra::matrix_type matrix_type
 type of matrix More...
 
typedef TAlgebra::vector_type vector_type
 type of vector More...
 
- Public Types inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type >
typedef TAlgebra::vector_type vector_type
 type of vector More...
 

Public Member Functions

virtual bool apply (vector_type &c, const vector_type &d)
 implementation of apply (final, non-CRTP) More...
 
bool apply_transformed (vector_type &c, const vector_type &d)
 map: dtilde -> ctilde (CRTP) More...
 
virtual bool apply_update_defect (vector_type &c, vector_type &d)
 implementation of apply (final, non-CRTP) More...
 
bool init (SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u)
 implementation of init for non-linear (CRTP) More...
 
bool init (SmartPtr< ILinearOperator< vector_type > > L)
 implementation of init for linear (CRTP) More...
 
 ITransformingIteration ()
 
 ITransformingIteration (const ITransformingIteration &ti)
 
SmartPtr< ILinearOperator< vector_type > > original_operator ()
 original operator (CRTP) More...
 
bool transform_defect (vector_type &c, const vector_type &d)
 map: d -> dtilde (CRTP) More...
 
bool untransform_correction (vector_type &c, const vector_type &d)
 map: ctilde -> c (CRTP) More...
 
- Public Member Functions inherited from ug::ILinearIterator< TAlgebra::vector_type >
virtual SmartPtr< ILinearIterator< TAlgebra::vector_type, TAlgebra::vector_type > > clone ()=0
 clone More...
 
virtual std::string config_string () const
 
SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > damping ()
 returns the scaling More...
 
 ILinearIterator ()
 constructor More...
 
 ILinearIterator (const ILinearIterator< TAlgebra::vector_type, TAlgebra::vector_type > &parent)
 copy constructor More...
 
virtual bool init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > J, const TAlgebra::vector_type &u)=0
 initialize for operator J(u) and linearization point u More...
 
virtual bool init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > L)=0
 initialize for linear operator L More...
 
virtual const char * name () const=0
 returns the name of iterator More...
 
void set_damp (number factor)
 sets the damping to a constant factor More...
 
void set_damp (SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > spScaling)
 sets a scaling for the correction More...
 
virtual bool supports_parallel () const=0
 returns if parallel solving is supported More...
 
virtual ~ILinearIterator ()
 virtual destructor More...
 
- Public Member Functions inherited from ug::DebugWritingObject< TAlgebra >
SmartPtr< IDebugWriter< algebra_type > > debug_writer ()
 returns the debug writer More...
 
ConstSmartPtr< IDebugWriter< algebra_type > > debug_writer () const
 
bool debug_writer_valid () const
 returns true if the debug writer is set More...
 
 DebugWritingObject ()
 
 DebugWritingObject (const DebugWritingObject< algebra_type > &parent)
 clone constructor More...
 
 DebugWritingObject (SmartPtr< IDebugWriter< algebra_type > > spDebugWriter)
 
virtual void set_debug (SmartPtr< IDebugWriter< algebra_type > > spDebugWriter)
 set debug writer More...
 
virtual ~DebugWritingObject ()
 virtual destructor More...
 
- Public Member Functions inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type >
virtual void set_debug (SmartPtr< IVectorDebugWriter< vector_type > > spDebugWriter)
 set debug writer More...
 
SmartPtr< IVectorDebugWriter< vector_type > > vector_debug_writer ()
 returns the debug writer More...
 
ConstSmartPtr< IVectorDebugWriter< vector_type > > vector_debug_writer () const
 
bool vector_debug_writer_valid () const
 returns true if the debug writer is set More...
 
 VectorDebugWritingObject ()
 
 VectorDebugWritingObject (SmartPtr< IVectorDebugWriter< vector_type > > spDebugWriter)
 
void write_debug (const vector_type &vec, const char *filename)
 writing debug output for a vector (if debug writer set) More...
 
virtual ~VectorDebugWritingObject ()
 virtual destructor More...
 

Private Member Functions

TDerived & derived ()
 CRTP operator. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ug::DebugWritingObject< TAlgebra >
void enter_debug_writer_section (const char *secDir)
 enters a debugging section More...
 
void enter_debug_writer_section (std::string secDir)
 enters a debugging section More...
 
void leave_debug_writer_section ()
 leaves a debugging section More...
 
void write_debug (const matrix_type &mat, const char *filename)
 write debug output for a matrix (if debug writer set) More...
 
void write_debug (const matrix_type &mat, std::string name)
 write debug output for a matrix (if debug writer set) More...
 
- Protected Member Functions inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type >
void enter_vector_debug_writer_section (const char *secDir)
 enters a debugging section More...
 
void enter_vector_debug_writer_section (std::string secDir)
 enters a debugging section More...
 
void leave_vector_debug_writer_section ()
 leaves a debugging section More...
 
void print_debugger_message (const char *msg)
 prints a debugger message (listing all the sections) More...
 
void print_debugger_message (std::string msg)
 prints a debugger message (listing all the sections) More...
 
virtual void write_debug (const vector_type &vec, std::string name)
 writing debug output for a vector (if debug writer set) More...
 
- Protected Attributes inherited from ug::ILinearIterator< TAlgebra::vector_type >
SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > m_spDamping
 the scaling More...
 
- Protected Attributes inherited from ug::DebugWritingObject< TAlgebra >
SmartPtr< IDebugWriter< algebra_type > > m_spDebugWriter
 Debug Writer. More...
 
- Protected Attributes inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type >
SmartPtr< IVectorDebugWriter< vector_type > > m_spVectorDebugWriter
 Debug Writer. More...
 

Detailed Description

template<typename TAlgebra, typename TDerived>
class ug::ITransformingIteration< TAlgebra, TDerived >

Abstract base class for transforming iterations. Supporting both left- and right transformations

Given

\begin{eqnarray*} A = T_L^{-1} \hat{A} T_R \end{eqnarray*}

this implements a subspace correction based on a defect correction:

\begin{eqnarray*} x := x + T_R^{-1} {\hat{A}}^{-1} T_L (b-Ax) \end{eqnarray*}

If inversion is to expensive, we replace may replace this by a (single step) iterative solver.

In order

Member Typedef Documentation

◆ algebra_type

template<typename TAlgebra , typename TDerived >
typedef TAlgebra ug::ITransformingIteration< TAlgebra, TDerived >::algebra_type

Algebra type.

◆ matrix_type

template<typename TAlgebra , typename TDerived >
typedef algebra_type::matrix_type ug::ITransformingIteration< TAlgebra, TDerived >::matrix_type

Matrix type.

◆ vector_type

template<typename TAlgebra , typename TDerived >
typedef algebra_type::vector_type ug::ITransformingIteration< TAlgebra, TDerived >::vector_type

Vector type.

Constructor & Destructor Documentation

◆ ITransformingIteration() [1/2]

template<typename TAlgebra , typename TDerived >
ug::ITransformingIteration< TAlgebra, TDerived >::ITransformingIteration ( )
inline

◆ ITransformingIteration() [2/2]

template<typename TAlgebra , typename TDerived >
ug::ITransformingIteration< TAlgebra, TDerived >::ITransformingIteration ( const ITransformingIteration< TAlgebra, TDerived > &  ti)
inline

References UG_THROW.

Member Function Documentation

◆ apply()

◆ apply_transformed()

template<typename TAlgebra , typename TDerived >
bool ug::ITransformingIteration< TAlgebra, TDerived >::apply_transformed ( vector_type c,
const vector_type d 
)
inline

◆ apply_update_defect()

template<typename TAlgebra , typename TDerived >
virtual bool ug::ITransformingIteration< TAlgebra, TDerived >::apply_update_defect ( vector_type c,
vector_type d 
)
inlinevirtual

◆ derived()

◆ init() [1/2]

template<typename TAlgebra , typename TDerived >
bool ug::ITransformingIteration< TAlgebra, TDerived >::init ( SmartPtr< ILinearOperator< vector_type > >  J,
const vector_type u 
)
inline

implementation of init for non-linear (CRTP)

References ug::ITransformingIteration< TAlgebra, TDerived >::derived().

◆ init() [2/2]

template<typename TAlgebra , typename TDerived >
bool ug::ITransformingIteration< TAlgebra, TDerived >::init ( SmartPtr< ILinearOperator< vector_type > >  L)
inline

implementation of init for linear (CRTP)

References ug::ITransformingIteration< TAlgebra, TDerived >::derived().

◆ original_operator()

template<typename TAlgebra , typename TDerived >
SmartPtr<ILinearOperator<vector_type> > ug::ITransformingIteration< TAlgebra, TDerived >::original_operator ( )
inline

◆ transform_defect()

template<typename TAlgebra , typename TDerived >
bool ug::ITransformingIteration< TAlgebra, TDerived >::transform_defect ( vector_type c,
const vector_type d 
)
inline

◆ untransform_correction()

template<typename TAlgebra , typename TDerived >
bool ug::ITransformingIteration< TAlgebra, TDerived >::untransform_correction ( vector_type c,
const vector_type d 
)
inline

The documentation for this class was generated from the following file: