ug4
|
#include <transforming.h>
Public Types | |
typedef TAlgebra | algebra_type |
Algebra type. | |
typedef algebra_type::matrix_type | matrix_type |
Matrix type. | |
typedef algebra_type::vector_type | vector_type |
Vector type. | |
![]() | |
typedef TAlgebra::vector_type | codomain_function_type |
Range space. | |
typedef TAlgebra::vector_type | domain_function_type |
Domain space. | |
![]() | |
typedef TAlgebra | algebra_type |
type of algebra | |
typedef TAlgebra::matrix_type | matrix_type |
type of matrix | |
typedef TAlgebra::vector_type | vector_type |
type of vector | |
![]() | |
typedef TAlgebra::vector_type | vector_type |
type of vector | |
Public Member Functions | |
virtual bool | apply (vector_type &c, const vector_type &d) |
implementation of apply (final, non-CRTP) | |
bool | apply_transformed (vector_type &c, const vector_type &d) |
map: dtilde -> ctilde (CRTP) | |
virtual bool | apply_update_defect (vector_type &c, vector_type &d) |
implementation of apply (final, non-CRTP) | |
bool | init (SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u) |
implementation of init for non-linear (CRTP) | |
bool | init (SmartPtr< ILinearOperator< vector_type > > L) |
implementation of init for linear (CRTP) | |
ITransformingIteration () | |
ITransformingIteration (const ITransformingIteration &ti) | |
SmartPtr< ILinearOperator< vector_type > > | original_operator () |
original operator (CRTP) | |
bool | transform_defect (vector_type &c, const vector_type &d) |
map: d -> dtilde (CRTP) | |
bool | untransform_correction (vector_type &c, const vector_type &d) |
map: ctilde -> c (CRTP) | |
![]() | |
virtual bool | apply (TAlgebra::vector_type &c, const TAlgebra::vector_type &d)=0 |
compute new correction c = B*d | |
virtual bool | apply_update_defect (TAlgebra::vector_type &c, TAlgebra::vector_type &d)=0 |
compute new correction c = B*d and update defect d := d - A*c | |
virtual SmartPtr< ILinearIterator< TAlgebra::vector_type, TAlgebra::vector_type > > | clone ()=0 |
clone | |
virtual std::string | config_string () const |
SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > | damping () |
returns the scaling | |
ILinearIterator () | |
constructor | |
ILinearIterator (const ILinearIterator< TAlgebra::vector_type, TAlgebra::vector_type > &parent) | |
copy constructor | |
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 | |
virtual bool | init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > L)=0 |
initialize for linear operator L | |
virtual const char * | name () const=0 |
returns the name of iterator | |
void | set_damp (number factor) |
sets the damping to a constant factor | |
void | set_damp (SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > spScaling) |
sets a scaling for the correction | |
virtual bool | supports_parallel () const=0 |
returns if parallel solving is supported | |
virtual | ~ILinearIterator () |
virtual destructor | |
![]() | |
SmartPtr< IDebugWriter< algebra_type > > | debug_writer () |
returns the debug writer | |
ConstSmartPtr< IDebugWriter< algebra_type > > | debug_writer () const |
bool | debug_writer_valid () const |
returns true if the debug writer is set | |
DebugWritingObject () | |
DebugWritingObject (const DebugWritingObject< algebra_type > &parent) | |
clone constructor | |
DebugWritingObject (SmartPtr< IDebugWriter< algebra_type > > spDebugWriter) | |
virtual void | set_debug (SmartPtr< IDebugWriter< algebra_type > > spDebugWriter) |
set debug writer | |
virtual | ~DebugWritingObject () |
virtual destructor | |
![]() | |
virtual void | set_debug (SmartPtr< IVectorDebugWriter< vector_type > > spDebugWriter) |
set debug writer | |
SmartPtr< IVectorDebugWriter< vector_type > > | vector_debug_writer () |
returns the debug writer | |
ConstSmartPtr< IVectorDebugWriter< vector_type > > | vector_debug_writer () const |
bool | vector_debug_writer_valid () const |
returns true if the debug writer is set | |
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) | |
virtual | ~VectorDebugWritingObject () |
virtual destructor | |
Private Member Functions | |
TDerived & | derived () |
CRTP operator. | |
Additional Inherited Members | |
![]() | |
void | enter_debug_writer_section (const char *secDir) |
enters a debugging section | |
void | enter_debug_writer_section (std::string secDir) |
enters a debugging section | |
void | leave_debug_writer_section () |
leaves a debugging section | |
void | write_debug (const matrix_type &mat, const char *filename) |
write debug output for a matrix (if debug writer set) | |
void | write_debug (const matrix_type &mat, std::string name) |
write debug output for a matrix (if debug writer set) | |
![]() | |
void | enter_vector_debug_writer_section (const char *secDir) |
enters a debugging section | |
void | enter_vector_debug_writer_section (std::string secDir) |
enters a debugging section | |
void | leave_vector_debug_writer_section () |
leaves a debugging section | |
void | print_debugger_message (const char *msg) |
prints a debugger message (listing all the sections) | |
void | print_debugger_message (std::string msg) |
prints a debugger message (listing all the sections) | |
virtual void | write_debug (const vector_type &vec, std::string name) |
writing debug output for a vector (if debug writer set) | |
![]() | |
SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > | m_spDamping |
the scaling | |
![]() | |
SmartPtr< IDebugWriter< algebra_type > > | m_spDebugWriter |
Debug Writer. | |
![]() | |
SmartPtr< IVectorDebugWriter< vector_type > > | m_spVectorDebugWriter |
Debug Writer. | |
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
typedef TAlgebra ug::ITransformingIteration< TAlgebra, TDerived >::algebra_type |
Algebra type.
typedef algebra_type::matrix_type ug::ITransformingIteration< TAlgebra, TDerived >::matrix_type |
Matrix type.
typedef algebra_type::vector_type ug::ITransformingIteration< TAlgebra, TDerived >::vector_type |
Vector type.
|
inline |
|
inline |
References UG_THROW.
|
inlinevirtual |
implementation of apply (final, non-CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::apply_transformed(), ug::ITransformingIteration< TAlgebra, TDerived >::derived(), ug::ITransformingIteration< TAlgebra, TDerived >::transform_defect(), and ug::ITransformingIteration< TAlgebra, TDerived >::untransform_correction().
Referenced by ug::ITransformingIteration< TAlgebra, TDerived >::apply_update_defect().
|
inline |
map: dtilde -> ctilde (CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::derived().
Referenced by ug::ITransformingIteration< TAlgebra, TDerived >::apply().
|
inlinevirtual |
implementation of apply (final, non-CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::apply(), and ug::ITransformingIteration< TAlgebra, TDerived >::original_operator().
|
inlineprivate |
CRTP operator.
Referenced by ug::ITransformingIteration< TAlgebra, TDerived >::apply(), ug::ITransformingIteration< TAlgebra, TDerived >::apply_transformed(), ug::ITransformingIteration< TAlgebra, TDerived >::init(), ug::ITransformingIteration< TAlgebra, TDerived >::init(), ug::ITransformingIteration< TAlgebra, TDerived >::original_operator(), ug::ITransformingIteration< TAlgebra, TDerived >::transform_defect(), and ug::ITransformingIteration< TAlgebra, TDerived >::untransform_correction().
|
inline |
implementation of init for non-linear (CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::derived().
|
inline |
implementation of init for linear (CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::derived().
|
inline |
original operator (CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::derived().
Referenced by ug::ITransformingIteration< TAlgebra, TDerived >::apply_update_defect().
|
inline |
map: d -> dtilde (CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::derived().
Referenced by ug::ITransformingIteration< TAlgebra, TDerived >::apply().
|
inline |
map: ctilde -> c (CRTP)
References ug::ITransformingIteration< TAlgebra, TDerived >::derived().
Referenced by ug::ITransformingIteration< TAlgebra, TDerived >::apply().