|
ug4
|
Nested iteration solver (e.g. for full multigrid) More...
#include <nested_iteration.h>
Inheritance diagram for ug::NestedIterationSolver< TDomain, TAlgebra >:Public Types | |
| typedef TAlgebra | algebra_type |
| Algebra type. | |
| typedef GridFunction< TDomain, CPUAlgebra > | error_function_type |
| Error function type. | |
| typedef GridFunction< TDomain, TAlgebra > | grid_function_type |
| GridFunction type. | |
| typedef TAlgebra::matrix_type | matrix_type |
| Matrix type. | |
| typedef TAlgebra::vector_type | vector_type |
| Vector type. | |
Public Types inherited from ug::IOperatorInverse< TAlgebra::vector_type > | |
| typedef TAlgebra::vector_type | codomain_function_type |
| Range space. | |
| typedef TAlgebra::vector_type | domain_function_type |
| Domain space. | |
Public Types inherited from ug::DebugWritingObject< TAlgebra > | |
| 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 | |
Public Types inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type > | |
| typedef TAlgebra::vector_type | vector_type |
| type of vector | |
Public Member Functions | |
| virtual std::string | config_string () const |
| returns information about configuration parameters | |
| NestedIterationSolver () | |
| default constructor | |
| NestedIterationSolver (SmartPtr< IAssemble< TAlgebra > > spAss) | |
| constructor using assembling | |
| NestedIterationSolver (SmartPtr< IAssemble< TAlgebra > > spAss, SmartPtr< IAssemble< TAlgebra > > spDomErr) | |
| constructor using assembling | |
| NestedIterationSolver (SmartPtr< ILinearOperatorInverse< vector_type > > LinearSolver) | |
| constructor | |
| NestedIterationSolver (SmartPtr< IOperator< vector_type > > N) | |
| constructor setting operator | |
| void | set_debug_elem_error (SmartPtr< error_function_type > spErrEta) |
| void | set_linear_solver (SmartPtr< ILinearOperatorInverse< vector_type > > LinearSolver) |
| sets the linear solver (this should be a fixed number of multi-grid cycles ) | |
IOperatorInverse interface | |
| virtual bool | init (SmartPtr< IOperator< vector_type > > N) |
| virtual bool | prepare (vector_type &u) |
| prepare Operator | |
| virtual bool | apply (vector_type &u) |
| apply Operator, i.e. N^{-1}(0) = u | |
Adaptive refinement | |
for adaptive nested iteration | |
| int | top_level () const |
| getter/setter for top level | |
| void | set_top_level (int lev) |
| getter/setter for top level | |
| int | base_level () const |
| getter/setter for base level | |
| void | set_base_level (int lev) |
| getter/setter for top level | |
| void | set_refiner (SmartPtr< IRefiner > r) |
| set grid refiner | |
| void | set_refinement_marking (SmartPtr< IElementMarkingStrategy< TDomain > > m) |
| set marking strategy | |
| void | set_coarsening_marking (SmartPtr< IElementMarkingStrategy< TDomain > > m) |
| getter/setter for top level | |
| void | set_tolerance (number tol) |
| getter/setter for top level | |
| bool | use_adaptive_refinement () const |
| indicates, if grids should be refined further (if desired accuracy has not been achieved) | |
| void | disable_adaptive_refinement () |
| disable grid refinement | |
| void | enable_adaptive_refinement () |
| enable grid refinement | |
| void | set_max_steps (int steps) |
| getter/setter for top level | |
| number | last_error () const |
| getter/setter for top level | |
| void | set_associated_space (SmartPtr< IGridFunctionSpace< grid_function_type > > spSpace) |
| getter/setter for top level | |
| void | set_absolute_tolerance (number atol) |
| getter/setter for top level | |
Public Member Functions inherited from ug::IOperatorInverse< TAlgebra::vector_type > | |
| virtual bool | init (SmartPtr< IOperator< TAlgebra::vector_type, TAlgebra::vector_type > > N)=0 |
| initializes the operator for the inversion of the operator N: Y -> X | |
| virtual | ~IOperatorInverse () |
| virtual destructor | |
Public Member Functions inherited from ug::DebugWritingObject< TAlgebra > | |
| 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 | |
Public Member Functions inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type > | |
| 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 | |
Protected Member Functions | |
| number | coarsen_domain (const grid_function_type &u) |
| Coarsen all elements. | |
| void | estimate_and_mark_domain (const grid_function_type &u, SmartPtr< IElementMarkingStrategy< TDomain > > spMarking, bool bClearMarks=true) |
| Refines domain and provides error estimate. | |
| number | refine_domain (const grid_function_type &u) |
Protected Member Functions inherited from ug::DebugWritingObject< TAlgebra > | |
| 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) | |
Protected Member Functions inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type > | |
| 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) | |
Private Attributes | |
| number | m_absTOL |
| absolute tolerance (for relative error) | |
| int | m_baseLevel |
| bool | m_bUseAdaptiveRefinement |
| int | m_dgbCall |
| call counter | |
| SmartPtr< AssembledLinearOperator< algebra_type > > | m_J |
| jacobi operator | |
| number | m_lastError |
| int | m_lastNumSteps |
| int | m_maxSteps |
| SmartPtr< AssembledOperator< algebra_type > > | m_N |
| assembling routine | |
| SmartPtr< IAssemble< TAlgebra > > | m_spAss |
| assembling | |
| SmartPtr< IGridFunctionSpace< grid_function_type > > | m_spAssociatedSpace |
| associated norm (for relative error) | |
| SmartPtr< IElementMarkingStrategy< TDomain > > | m_spCoarseningMarking |
| SmartPtr< IAssemble< TAlgebra > > | m_spDomErr |
| SmartPtr< error_function_type > | m_spElemError |
| (optional) debug info for adaptive refinement | |
| SmartPtr< ILinearOperatorInverse< vector_type > > | m_spLinearSolver |
| linear solver | |
| SmartPtr< IElementMarkingStrategy< TDomain > > | m_spRefinementMarking |
| SmartPtr< IRefiner > | m_spRefiner |
| (adaptive) refinement | |
| number | m_TOL |
| tolerance | |
| int | m_topLevel |
Additional Inherited Members | |
Protected Attributes inherited from ug::DebugWritingObject< TAlgebra > | |
| SmartPtr< IDebugWriter< algebra_type > > | m_spDebugWriter |
| Debug Writer. | |
Protected Attributes inherited from ug::VectorDebugWritingObject< TAlgebra::vector_type > | |
| SmartPtr< IVectorDebugWriter< vector_type > > | m_spVectorDebugWriter |
| Debug Writer. | |
Nested iteration solver (e.g. for full multigrid)
If error estimators are available and the convergence rate of the FE/FV method is known, these methods allow to construct an optimal order method.
| typedef TAlgebra ug::NestedIterationSolver< TDomain, TAlgebra >::algebra_type |
Algebra type.
| typedef GridFunction<TDomain, CPUAlgebra> ug::NestedIterationSolver< TDomain, TAlgebra >::error_function_type |
Error function type.
| typedef GridFunction<TDomain, TAlgebra> ug::NestedIterationSolver< TDomain, TAlgebra >::grid_function_type |
GridFunction type.
| typedef TAlgebra::matrix_type ug::NestedIterationSolver< TDomain, TAlgebra >::matrix_type |
Matrix type.
| typedef TAlgebra::vector_type ug::NestedIterationSolver< TDomain, TAlgebra >::vector_type |
Vector type.
| ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver | ( | ) |
default constructor
| ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver | ( | SmartPtr< IOperator< vector_type > > | N | ) |
constructor setting operator
References init().
| ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver | ( | SmartPtr< IAssemble< TAlgebra > > | spAss | ) |
constructor using assembling
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_N, and ug::NestedIterationSolver< TDomain, TAlgebra >::m_spAss.
| ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver | ( | SmartPtr< IAssemble< TAlgebra > > | spAss, |
| SmartPtr< IAssemble< TAlgebra > > | spDomErr | ||
| ) |
constructor using assembling
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_N, and ug::NestedIterationSolver< TDomain, TAlgebra >::m_spAss.
| ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver | ( | SmartPtr< ILinearOperatorInverse< vector_type > > | LinearSolver | ) |
constructor
|
virtual |
apply Operator, i.e. N^{-1}(0) = u
Apply solver for top level grid function.
returns: approximation by nested iteration. Input values are ignored.
Implements ug::IOperatorInverse< TAlgebra::vector_type >.
References ug::GetStringPrintf(), ug::GridFunction< TDomain, TAlgebra >::grid_level(), ug::GridLevel::is_surface(), ug::GridLevel::level(), make_sp(), name, NESTED_ITER_PROFILE_BEGIN, NESTED_ITER_PROFILE_END, ug::VTKOutput< TDim >::print(), ug::GridLevel::top(), UG_ASSERT, UG_CATCH_THROW, UG_LOG, and UG_THROW.
|
inline |
getter/setter for base level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_baseLevel.
|
protected |
Coarsen all elements.
|
virtual |
returns information about configuration parameters
this should return necessary information about parameters and possibly calling config_string of subcomponents.
Implements ug::IOperatorInverse< TAlgebra::vector_type >.
References ug::ConfigShift().
|
inline |
disable grid refinement
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_bUseAdaptiveRefinement.
|
inline |
enable grid refinement
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_bUseAdaptiveRefinement.
|
protected |
Refines domain and provides error estimate.
Values depend on m_spDomErr
References ug::GridFunction< TDomain, TAlgebra >::dd(), UG_ASSERT, UG_LOG, and SmartPtr< T, FreePolicy >::valid().
|
virtual |
This operator inverts the Operator N: Y -> X
Requires an AssembledOperator
References NESTED_ITER_PROFILE_BEGIN, and UG_THROW.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_lastError.
|
virtual |
prepare Operator
todo: remove from interface
Implements ug::IOperatorInverse< TAlgebra::vector_type >.
|
protected |
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_absTOL, and UG_LOG.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_spAssociatedSpace.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_baseLevel.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_spCoarseningMarking.
|
inline |
|
inline |
sets the linear solver (this should be a fixed number of multi-grid cycles )
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_spLinearSolver.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_maxSteps.
|
inline |
set marking strategy
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_spRefinementMarking.
|
inline |
set grid refiner
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_spRefiner.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_TOL, and UG_LOG.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_topLevel.
|
inline |
getter/setter for top level
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_topLevel.
|
inline |
indicates, if grids should be refined further (if desired accuracy has not been achieved)
References ug::NestedIterationSolver< TDomain, TAlgebra >::m_bUseAdaptiveRefinement.
|
private |
absolute tolerance (for relative error)
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::set_absolute_tolerance().
|
private |
|
private |
|
private |
call counter
|
private |
jacobi operator
|
private |
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::last_error().
|
private |
|
private |
|
private |
assembling routine
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver(), and ug::NestedIterationSolver< TDomain, TAlgebra >::NestedIterationSolver().
|
private |
|
private |
associated norm (for relative error)
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::set_associated_space().
|
private |
|
private |
|
private |
(optional) debug info for adaptive refinement
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::set_debug_elem_error().
|
private |
linear solver
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::set_linear_solver().
|
private |
|
private |
(adaptive) refinement
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::set_refiner().
|
private |
tolerance
Referenced by ug::NestedIterationSolver< TDomain, TAlgebra >::set_tolerance().
|
private |