ug4
ug::AutoLinearSolver< TVector > Class Template Reference

linear solver using abstract preconditioner interface More...

#include <auto_linear_solver.h>

+ Inheritance diagram for ug::AutoLinearSolver< TVector >:

Public Types

typedef IPreconditionedLinearOperatorInverse< vector_typebase_type
 Base type. More...
 
typedef TVector vector_type
 Vector type. More...
 
- Public Types inherited from ug::IPreconditionedLinearOperatorInverse< TVector >
typedef ILinearOperatorInverse< TVector, TVector > base_type
 Base class. More...
 
typedef TVector codomain_function_type
 Range space. More...
 
typedef TVector domain_function_type
 Domain space. More...
 
- Public Types inherited from ug::ILinearOperatorInverse< X, Y >
typedef Y codomain_function_type
 Range space. More...
 
typedef X domain_function_type
 Domain space. More...
 
- Public Types inherited from ug::ILinearIterator< X, X >
typedef X codomain_function_type
 Range space. More...
 
typedef X domain_function_type
 Domain space. More...
 
- Public Types inherited from ug::VectorDebugWritingObject< TVector >
typedef TVector vector_type
 type of vector More...
 

Public Member Functions

virtual bool apply (vector_type &x, const vector_type &b)
 compute new correction c = B*d More...
 
virtual bool apply_return_defect (vector_type &x, vector_type &b)
 solves the system and returns the last defect More...
 
 AutoLinearSolver ()
 
 AutoLinearSolver (double desiredDefect, double desiredReduction)
 
bool compute_correction (vector_type &c, vector_type &d)
 
virtual bool init (SmartPtr< ILinearOperator< vector_type, vector_type > > J)
 initializes the solver for an operator More...
 
virtual bool init (SmartPtr< ILinearOperator< vector_type, vector_type > > J, const vector_type &u)
 initializes the solver for an operator More...
 
bool init_op (SmartPtr< ILinearOperator< vector_type, vector_type > > J)
 
virtual const char * name () const
 returns the name of the solver More...
 
void print_information ()
 
bool reinit ()
 
void set_reduction_always_accept (double d)
 
void set_reinit_when_worse_then_average (double d)
 
virtual bool supports_parallel () const
 returns if parallel solving is supported More...
 
- Public Member Functions inherited from ug::IPreconditionedLinearOperatorInverse< TVector >
virtual std::string config_string () const
 returns information about configuration parameters More...
 
std::string config_string_preconditioner_convergence_check () const
 returns config information of convergence check and preconditioner More...
 
 IPreconditionedLinearOperatorInverse ()
 Empty constructor. More...
 
 IPreconditionedLinearOperatorInverse (SmartPtr< ILinearIterator< TVector, TVector > > spPrecond)
 constructor setting the preconditioner More...
 
 IPreconditionedLinearOperatorInverse (SmartPtr< ILinearIterator< TVector, TVector > > spPrecond, SmartPtr< IConvergenceCheck< TVector > > spConvCheck)
 constructor setting the preconditioner More...
 
void set_compute_fresh_defect_when_finished (bool bRecompute)
 for debug: computes norm again after whole calculation of apply More...
 
void set_preconditioner (SmartPtr< ILinearIterator< TVector, TVector > > spPrecond)
 sets the preconditioner More...
 
SmartPtr< ILinearIterator< TVector, TVector > > preconditioner ()
 
ConstSmartPtr< ILinearIterator< TVector, TVector > > preconditioner () const
 
- Public Member Functions inherited from ug::ILinearOperatorInverse< X, Y >
virtual bool apply (Y &u, const X &f)=0
 applies inverse operator, i.e. returns u = A^{-1} f More...
 
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 More...
 
virtual bool apply_update_defect (Y &u, X &f)
 
virtual SmartPtr< ILinearIterator< X, Y > > clone ()
 clone More...
 
SmartPtr< IConvergenceCheck< X > > convergence_check ()
 returns the convergence check More...
 
ConstSmartPtr< IConvergenceCheck< X > > convergence_check () const
 returns the convergence check More...
 
number defect () const
 returns the current defect More...
 
 ILinearOperatorInverse ()
 constructor setting convergence check to (100, 1e-12, 1e-12, true) More...
 
 ILinearOperatorInverse (SmartPtr< IConvergenceCheck< X > > spConvCheck)
 Default constructor. More...
 
virtual bool init (SmartPtr< ILinearOperator< Y, X > > J, const Y &u)
 initializes for the inverse for a linearized operator at linearization point u More...
 
virtual bool init (SmartPtr< ILinearOperator< Y, X > > L)
 initializes for the inverse for a linear operator More...
 
SmartPtr< ILinearOperator< Y, X > > linear_operator ()
 returns the current Operator this Inverse Operator is initialized for More...
 
number reduction () const
 returns the current relative reduction More...
 
void set_convergence_check (SmartPtr< IConvergenceCheck< X > > spConvCheck)
 set the convergence check More...
 
virtual int standard_offset () const
 returns the standard offset for output More...
 
int step () const
 returns the current number of steps More...
 
virtual ~ILinearOperatorInverse ()
 virtual destructor More...
 
- Public Member Functions inherited from ug::ILinearIterator< X, X >
virtual bool apply (X &c, const X &d)=0
 compute new correction c = B*d More...
 
virtual bool apply_update_defect (X &c, X &d)=0
 compute new correction c = B*d and update defect d := d - A*c More...
 
SmartPtr< IDamping< X, X > > damping ()
 returns the scaling More...
 
 ILinearIterator ()
 constructor More...
 
 ILinearIterator (const ILinearIterator< X, X > &parent)
 copy constructor More...
 
virtual bool init (SmartPtr< ILinearOperator< X, X > > J, const X &u)=0
 initialize for operator J(u) and linearization point u More...
 
virtual bool init (SmartPtr< ILinearOperator< X, X > > 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< X, X > > spScaling)
 sets a scaling for the correction More...
 
virtual ~ILinearIterator ()
 virtual destructor More...
 
- Public Member Functions inherited from ug::VectorDebugWritingObject< TVector >
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...
 

Protected Member Functions

SmartPtr< ILinearIterator< X, X > > preconditioner ()
 
ConstSmartPtr< ILinearIterator< X, X > > preconditioner () const
 
void prepare_conv_check ()
 prepares the convergence check output More...
 
- Protected Member Functions inherited from ug::VectorDebugWritingObject< TVector >
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...
 

Private Attributes

double m_avgReduction
 
int m_bInited
 
double m_desiredDefect
 
double m_desiredReduction
 
size_t m_initCalled
 
size_t m_initsDone
 
double m_lastCallReduction
 
double m_lastCallTime
 
double m_lastInitTime
 
double m_reductionAlwaysAccept
 
double m_reductionPerTime
 
double m_savedTime
 
vector_type m_u
 
double m_worseThenAverage
 
SmartPtr< ILinearOperator< vector_type, vector_type > > pJ
 

Additional Inherited Members

- Protected Attributes inherited from ug::IPreconditionedLinearOperatorInverse< TVector >
bool m_bRecompute
 flag if fresh defect should be computed when finish for debug purpose More...
 
SmartPtr< ILinearIterator< TVector, TVector > > m_spPrecond
 Iterator used in the iterative scheme to compute the correction and update the defect. More...
 
- Protected Attributes inherited from ug::ILinearOperatorInverse< X, Y >
SmartPtr< IConvergenceCheck< X > > m_spConvCheck
 smart pointer holding the convergence check More...
 
SmartPtr< ILinearOperator< Y, X > > m_spLinearOperator
 Operator that is inverted by this Inverse Operator. More...
 
- Protected Attributes inherited from ug::ILinearIterator< X, X >
SmartPtr< IDamping< X, X > > m_spDamping
 the scaling More...
 
- Protected Attributes inherited from ug::VectorDebugWritingObject< TVector >
SmartPtr< IVectorDebugWriter< vector_type > > m_spVectorDebugWriter
 Debug Writer. More...
 

Detailed Description

template<typename TVector>
class ug::AutoLinearSolver< TVector >

linear solver using abstract preconditioner interface

This class is a linear iterating scheme, that uses any implementation of the ILinearIterator interface to precondition the iteration.

Template Parameters
TAlgebraalgebra type

Member Typedef Documentation

◆ base_type

template<typename TVector >
typedef IPreconditionedLinearOperatorInverse<vector_type> ug::AutoLinearSolver< TVector >::base_type

Base type.

◆ vector_type

template<typename TVector >
typedef TVector ug::AutoLinearSolver< TVector >::vector_type

Vector type.

Constructor & Destructor Documentation

◆ AutoLinearSolver() [1/2]

◆ AutoLinearSolver() [2/2]

Member Function Documentation

◆ apply()

template<typename TVector >
virtual bool ug::AutoLinearSolver< TVector >::apply ( vector_type x,
const vector_type b 
)
inlinevirtual

compute new correction c = B*d

This method applies the iterator operator, i.e. c = B*d. The domain function d remains unchanged. Note, that this method can always be implemented by creating a copy of d and calling apply_update_defect with this copy.

Parameters
[in]ddefect
[out]ccorrection
Returns
bool success flag

Reimplemented from ug::IPreconditionedLinearOperatorInverse< TVector >.

References ug::AutoLinearSolver< TVector >::apply_return_defect().

Referenced by ug::AutoLinearSolver< TVector >::compute_correction().

◆ apply_return_defect()

◆ compute_correction()

◆ init() [1/2]

template<typename TVector >
virtual bool ug::AutoLinearSolver< TVector >::init ( SmartPtr< ILinearOperator< vector_type, vector_type > >  L)
inlinevirtual

◆ init() [2/2]

template<typename TVector >
virtual bool ug::AutoLinearSolver< TVector >::init ( SmartPtr< ILinearOperator< vector_type, vector_type > >  J,
const vector_type u 
)
inlinevirtual

◆ init_op()

◆ name()

template<typename TVector >
virtual const char* ug::AutoLinearSolver< TVector >::name ( ) const
inlinevirtual

◆ preconditioner() [1/2]

◆ preconditioner() [2/2]

template<typename TVector >
ConstSmartPtr<ILinearIterator<X, X> > ug::IPreconditionedLinearOperatorInverse< X >::preconditioner
inlineprotected

◆ prepare_conv_check()

template<typename TVector >
void ug::AutoLinearSolver< TVector >::prepare_conv_check ( )
inlineprotected

◆ print_information()

◆ reinit()

◆ set_reduction_always_accept()

template<typename TVector >
void ug::AutoLinearSolver< TVector >::set_reduction_always_accept ( double  d)
inline

◆ set_reinit_when_worse_then_average()

template<typename TVector >
void ug::AutoLinearSolver< TVector >::set_reinit_when_worse_then_average ( double  d)
inline

◆ supports_parallel()

template<typename TVector >
virtual bool ug::AutoLinearSolver< TVector >::supports_parallel ( ) const
inlinevirtual

returns if parallel solving is supported

Implements ug::ILinearOperatorInverse< X, Y >.

References ug::AutoLinearSolver< TVector >::preconditioner().

Member Data Documentation

◆ m_avgReduction

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_avgReduction
private

◆ m_bInited

◆ m_desiredDefect

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_desiredDefect
private

◆ m_desiredReduction

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_desiredReduction
private

◆ m_initCalled

◆ m_initsDone

◆ m_lastCallReduction

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_lastCallReduction
private

◆ m_lastCallTime

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_lastCallTime
private

◆ m_lastInitTime

◆ m_reductionAlwaysAccept

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_reductionAlwaysAccept
private

◆ m_reductionPerTime

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_reductionPerTime
private

◆ m_savedTime

◆ m_u

template<typename TVector >
vector_type ug::AutoLinearSolver< TVector >::m_u
private

◆ m_worseThenAverage

template<typename TVector >
double ug::AutoLinearSolver< TVector >::m_worseThenAverage
private

◆ pJ


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