ug4
ug::ComponentGaussSeidel< TDomain, TAlgebra > Class Template Reference

ComponentGaussSeidel Preconditioner. More...

#include <component_gauss_seidel.h>

+ Inheritance diagram for ug::ComponentGaussSeidel< TDomain, TAlgebra >:

Classes

struct  DimCache
 

Public Types

typedef GF::element_type Element
 
typedef GridFunction< TDomain, TAlgebra > GF
 World dimension. More...
 
typedef GF::side_type Side
 
typedef TAlgebra algebra_type
 
typedef TAlgebra::vector_type vector_type
 
typedef TAlgebra::matrix_type matrix_type
 
- Public Types inherited from ug::IPreconditioner< TAlgebra >
typedef TAlgebra algebra_type
 Algebra type. More...
 
typedef MatrixOperator< matrix_type, vector_typematrix_operator_type
 Matrix Operator type. More...
 
typedef TAlgebra::matrix_type matrix_type
 Matrix type. More...
 
typedef TAlgebra::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 SmartPtr< ILinearIterator< vector_type > > clone ()
 Clone. More...
 
 ComponentGaussSeidel (const std::vector< std::string > &vFullRowCmp)
 default constructor More...
 
 ComponentGaussSeidel (number relax, const std::vector< std::string > &vFullRowCmp)
 constructor setting relaxation and type More...
 
 ComponentGaussSeidel (number relax, const std::vector< std::string > &vFullRowCmp, const std::vector< int > &vSmooth, const std::vector< number > &vDamp)
 constructor setting relaxation and type More...
 
void set_alpha (number alpha)
 
void set_beta (number beta)
 
void set_weights (bool b)
 
virtual bool supports_parallel () const
 returns if parallel solving is supported More...
 
- Public Member Functions inherited from ug::IPreconditioner< TAlgebra >
virtual bool apply (vector_type &c, const vector_type &d)
 compute new correction c = B*d More...
 
virtual bool apply_update_defect (vector_type &c, vector_type &d)
 compute new correction c = B*d and update defect d:= d - L*c More...
 
SmartPtr< MatrixOperator< matrix_type, vector_type > > approx_operator ()
 underlying matrix based operator used for the preconditioner More...
 
SmartPtr< MatrixOperator< matrix_type, vector_type > > defect_operator ()
 underlying matrix based operator for calculation of defect More...
 
virtual bool init (SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u)
 implements the ILinearIterator-interface for matrix based preconditioner More...
 
bool init (SmartPtr< ILinearOperator< vector_type > > L)
 implements the ILinearIterator-interface for matrix based preconditioner More...
 
bool init (SmartPtr< MatrixOperator< matrix_type, vector_type > > Op)
 initializes the preconditioner for a matrix based operator More...
 
 IPreconditioner ()
 default constructor More...
 
 IPreconditioner (const IPreconditioner< TAlgebra > &parent)
 clone constructor More...
 
 IPreconditioner (SmartPtr< IDebugWriter< algebra_type > > spDebugWriter)
 constructor setting debug writer More...
 
virtual void set_approximation (SmartPtr< MatrixOperator< matrix_type, vector_type > > approx)
 
virtual ~IPreconditioner ()
 virtual destructor More...
 
- Public Member Functions inherited from ug::ILinearIterator< TAlgebra::vector_type >
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...
 
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 ~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...
 

Static Public Attributes

static const int dim = TDomain::dim
 

Protected Types

typedef IPreconditioner< TAlgebra > base_type
 

Protected Member Functions

void apply_blocks (const matrix_type &A, GF &c, const vector_type &d, number relax, const DimCache &dimCache, bool bReverse)
 
void apply_blocks_weighted (const matrix_type &A, GF &c, const vector_type &d, number relax, const DimCache &dimCache, bool bReverse)
 
void extract_blocks (const matrix_type &A, const GF &c)
 
virtual const char * name () const
 Name of preconditioner. More...
 
virtual bool postprocess ()
 Postprocess routine. More...
 
virtual bool preprocess (SmartPtr< MatrixOperator< matrix_type, vector_type > > pOp)
 Preprocess routine. More...
 
virtual bool step (SmartPtr< MatrixOperator< matrix_type, vector_type > > pOp, vector_type &c, const vector_type &d)
 step method More...
 
- 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

matrix_type m_A
 
number m_alpha
 
number m_beta
 
bool m_bInit
 init flag More...
 
bool m_bWeighted
 
number m_relax
 relaxing parameter More...
 
std::vector< numberm_vDamp
 
DimCache m_vDimCache [VOLUME+1]
 caching storage More...
 
std::vector< std::string > m_vFullRowCmp
 components, whose matrix row must be fulfilled completely on gs-block More...
 
std::vector< int > m_vGroupObj
 smooth order More...
 
SmartPtr< GFm_weight
 
- Protected Attributes inherited from ug::IPreconditioner< TAlgebra >
bool m_bInit
 init flag indicating if init has been called More...
 
bool m_bOtherApproxOperator
 
SmartPtr< MatrixOperator< matrix_type, vector_type > > m_spApproxOperator
 underlying matrix based operator used for the preconditioner More...
 
SmartPtr< ILinearOperator< vector_type > > m_spDefectOperator
 underlying matrix based operator for calculation of defect 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 TDomain, typename TAlgebra>
class ug::ComponentGaussSeidel< TDomain, TAlgebra >

ComponentGaussSeidel Preconditioner.

Member Typedef Documentation

◆ algebra_type

template<typename TDomain , typename TAlgebra >
typedef TAlgebra ug::ComponentGaussSeidel< TDomain, TAlgebra >::algebra_type

Algebra types

◆ base_type

template<typename TDomain , typename TAlgebra >
typedef IPreconditioner<TAlgebra> ug::ComponentGaussSeidel< TDomain, TAlgebra >::base_type
protected

◆ Element

template<typename TDomain , typename TAlgebra >
typedef GF::element_type ug::ComponentGaussSeidel< TDomain, TAlgebra >::Element

◆ GF

template<typename TDomain , typename TAlgebra >
typedef GridFunction<TDomain, TAlgebra> ug::ComponentGaussSeidel< TDomain, TAlgebra >::GF

World dimension.

◆ matrix_type

template<typename TDomain , typename TAlgebra >
typedef TAlgebra::matrix_type ug::ComponentGaussSeidel< TDomain, TAlgebra >::matrix_type

Algebra types

◆ Side

template<typename TDomain , typename TAlgebra >
typedef GF::side_type ug::ComponentGaussSeidel< TDomain, TAlgebra >::Side

◆ vector_type

template<typename TDomain , typename TAlgebra >
typedef TAlgebra::vector_type ug::ComponentGaussSeidel< TDomain, TAlgebra >::vector_type

Algebra types

Constructor & Destructor Documentation

◆ ComponentGaussSeidel() [1/3]

template<typename TDomain , typename TAlgebra >
ug::ComponentGaussSeidel< TDomain, TAlgebra >::ComponentGaussSeidel ( const std::vector< std::string > &  vFullRowCmp)
inline

default constructor

◆ ComponentGaussSeidel() [2/3]

template<typename TDomain , typename TAlgebra >
ug::ComponentGaussSeidel< TDomain, TAlgebra >::ComponentGaussSeidel ( number  relax,
const std::vector< std::string > &  vFullRowCmp 
)
inline

constructor setting relaxation and type

◆ ComponentGaussSeidel() [3/3]

template<typename TDomain , typename TAlgebra >
ug::ComponentGaussSeidel< TDomain, TAlgebra >::ComponentGaussSeidel ( number  relax,
const std::vector< std::string > &  vFullRowCmp,
const std::vector< int > &  vSmooth,
const std::vector< number > &  vDamp 
)
inline

constructor setting relaxation and type

Member Function Documentation

◆ apply_blocks()

template<typename TDomain , typename TAlgebra >
void ug::ComponentGaussSeidel< TDomain, TAlgebra >::apply_blocks ( const matrix_type A,
GF c,
const vector_type d,
number  relax,
const DimCache dimCache,
bool  bReverse 
)
protected

◆ apply_blocks_weighted()

template<typename TDomain , typename TAlgebra >
void ug::ComponentGaussSeidel< TDomain, TAlgebra >::apply_blocks_weighted ( const matrix_type A,
GF c,
const vector_type d,
number  relax,
const DimCache dimCache,
bool  bReverse 
)
protected

◆ clone()

template<typename TDomain , typename TAlgebra >
SmartPtr< ILinearIterator< typename TAlgebra::vector_type > > ug::ComponentGaussSeidel< TDomain, TAlgebra >::clone
virtual

◆ extract_blocks()

template<typename TDomain , typename TAlgebra >
void ug::ComponentGaussSeidel< TDomain, TAlgebra >::extract_blocks ( const matrix_type A,
const GF c 
)
protected

◆ name()

template<typename TDomain , typename TAlgebra >
virtual const char* ug::ComponentGaussSeidel< TDomain, TAlgebra >::name ( ) const
inlineprotectedvirtual

Name of preconditioner.

Implements ug::IPreconditioner< TAlgebra >.

◆ postprocess()

template<typename TDomain , typename TAlgebra >
virtual bool ug::ComponentGaussSeidel< TDomain, TAlgebra >::postprocess ( )
inlineprotectedvirtual

Postprocess routine.

Implements ug::IPreconditioner< TAlgebra >.

◆ preprocess()

template<typename TDomain , typename TAlgebra >
bool ug::ComponentGaussSeidel< TDomain, TAlgebra >::preprocess ( SmartPtr< MatrixOperator< matrix_type, vector_type > >  pOp)
protectedvirtual

◆ set_alpha()

template<typename TDomain , typename TAlgebra >
void ug::ComponentGaussSeidel< TDomain, TAlgebra >::set_alpha ( number  alpha)
inline

◆ set_beta()

template<typename TDomain , typename TAlgebra >
void ug::ComponentGaussSeidel< TDomain, TAlgebra >::set_beta ( number  beta)
inline

◆ set_weights()

template<typename TDomain , typename TAlgebra >
void ug::ComponentGaussSeidel< TDomain, TAlgebra >::set_weights ( bool  b)
inline

◆ step()

template<typename TDomain , typename TAlgebra >
bool ug::ComponentGaussSeidel< TDomain, TAlgebra >::step ( SmartPtr< MatrixOperator< matrix_type, vector_type > >  pOp,
vector_type c,
const vector_type d 
)
protectedvirtual

◆ supports_parallel()

template<typename TDomain , typename TAlgebra >
virtual bool ug::ComponentGaussSeidel< TDomain, TAlgebra >::supports_parallel ( ) const
inlinevirtual

returns if parallel solving is supported

Implements ug::ILinearIterator< TAlgebra::vector_type >.

Member Data Documentation

◆ dim

template<typename TDomain , typename TAlgebra >
const int ug::ComponentGaussSeidel< TDomain, TAlgebra >::dim = TDomain::dim
static

◆ m_A

template<typename TDomain , typename TAlgebra >
matrix_type ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_A
protected

◆ m_alpha

template<typename TDomain , typename TAlgebra >
number ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_alpha
protected

◆ m_beta

template<typename TDomain , typename TAlgebra >
number ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_beta
protected

◆ m_bInit

template<typename TDomain , typename TAlgebra >
bool ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_bInit
protected

init flag

◆ m_bWeighted

template<typename TDomain , typename TAlgebra >
bool ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_bWeighted
protected

◆ m_relax

template<typename TDomain , typename TAlgebra >
number ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_relax
protected

relaxing parameter

◆ m_vDamp

template<typename TDomain , typename TAlgebra >
std::vector<number> ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_vDamp
protected

◆ m_vDimCache

template<typename TDomain , typename TAlgebra >
DimCache ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_vDimCache[VOLUME+1]
protected

caching storage

◆ m_vFullRowCmp

template<typename TDomain , typename TAlgebra >
std::vector<std::string> ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_vFullRowCmp
protected

components, whose matrix row must be fulfilled completely on gs-block

◆ m_vGroupObj

template<typename TDomain , typename TAlgebra >
std::vector<int> ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_vGroupObj
protected

smooth order

◆ m_weight

template<typename TDomain , typename TAlgebra >
SmartPtr<GF> ug::ComponentGaussSeidel< TDomain, TAlgebra >::m_weight
protected

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