ug4
|
operator implementation of the inverse of the Schur complement w.r.t. the "Delta unknowns" More...
#include <feti.h>
Classes | |
struct | StepConv |
Public Types | |
typedef TAlgebra | algebra_type |
typedef ILinearOperatorInverse< vector_type > | base_type |
Base type. | |
typedef TAlgebra::matrix_type | matrix_type |
typedef TAlgebra::vector_type | vector_type |
![]() | |
typedef TAlgebra::vector_type | codomain_function_type |
Range space. | |
typedef TAlgebra::vector_type | domain_function_type |
Domain space. | |
![]() | |
typedef Y | codomain_function_type |
Range space. | |
typedef X | 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 &u, const vector_type &f) |
applies inverse operator, i.e. returns u = A^{-1} f | |
virtual bool | apply_return_defect (vector_type &u, vector_type &f) |
applies inverse operator, i.e. returns u = A^{-1} f and returns defect d := f - A*u | |
void | clear_total_itercnt_of_inner_solvers () |
int | get_total_itercnt_of_inner_solvers () |
virtual bool | init (SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u) |
virtual bool | init (SmartPtr< ILinearOperator< vector_type > > L) |
virtual const char * | name () const |
name of class | |
PrimalSubassembledMatrixInverse () | |
constructor | |
void | print_statistic_of_inner_solver (bool bPrintOnlyAverages) |
prints some convergence statistic of inner solvers | |
void | set_coarse_problem_solver (SmartPtr< ILinearOperatorInverse< vector_type > > coarseProblemSolver) |
sets the coarse problem solver | |
void | set_feti_layouts (FetiLayouts< algebra_type > &fetiLayouts) |
sets the primal layouts | |
void | set_neumann_solver (SmartPtr< ILinearOperatorInverse< vector_type > > neumannSolver) |
sets the Neumann solver | |
void | set_statistic_type (std::string type) |
sets statistic slot where next iterate should be counted | |
void | set_test_one_to_many_layouts (bool bTest) |
set 'm_bTestOneToManyLayouts' | |
virtual bool | supports_parallel () const |
returns if parallel solving is supported | |
virtual | ~PrimalSubassembledMatrixInverse () |
![]() | |
virtual bool | apply_update_defect (TAlgebra::vector_type &u, TAlgebra::vector_type &f) |
compute new correction c = B*d and update defect d := d - A*c | |
virtual SmartPtr< ILinearIterator< TAlgebra::vector_type, TAlgebra::vector_type > > | clone () |
clone | |
virtual std::string | config_string () const |
returns information about configuration parameters | |
SmartPtr< IConvergenceCheck< TAlgebra::vector_type > > | convergence_check () |
returns the convergence check | |
ConstSmartPtr< IConvergenceCheck< TAlgebra::vector_type > > | convergence_check () const |
returns the convergence check | |
number | defect () const |
returns the current defect | |
ILinearOperatorInverse () | |
constructor setting convergence check to (100, 1e-12, 1e-12, true) | |
ILinearOperatorInverse (SmartPtr< IConvergenceCheck< TAlgebra::vector_type > > spConvCheck) | |
Default constructor. | |
virtual bool | init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > J, const TAlgebra::vector_type &u) |
initializes for the inverse for a linearized operator at linearization point u | |
virtual bool | init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > L) |
initializes for the inverse for a linear operator | |
SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > | linear_operator () |
returns the current Operator this Inverse Operator is initialized for | |
number | reduction () const |
returns the current relative reduction | |
void | set_convergence_check (SmartPtr< IConvergenceCheck< TAlgebra::vector_type > > spConvCheck) |
set the convergence check | |
virtual int | standard_offset () const |
returns the standard offset for output | |
int | step () const |
returns the current number of steps | |
virtual | ~ILinearOperatorInverse () |
virtual destructor | |
![]() | |
virtual bool | apply (Y &c, const X &d)=0 |
compute new correction c = B*d | |
virtual bool | apply_update_defect (Y &c, X &d)=0 |
compute new correction c = B*d and update defect d := d - A*c | |
SmartPtr< IDamping< X, Y > > | damping () |
returns the scaling | |
ILinearIterator () | |
constructor | |
ILinearIterator (const ILinearIterator< X, Y > &parent) | |
copy constructor | |
virtual bool | init (SmartPtr< ILinearOperator< Y, X > > J, const Y &u)=0 |
initialize for operator J(u) and linearization point u | |
virtual bool | init (SmartPtr< ILinearOperator< Y, X > > L)=0 |
initialize for linear operator L | |
void | set_damp (number factor) |
sets the damping to a constant factor | |
void | set_damp (SmartPtr< IDamping< X, Y > > spScaling) |
sets a scaling for the correction | |
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 | |
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) | |
operator implementation of the inverse of the Schur complement w.r.t. the "Delta unknowns"
This operator provides the application of the inverse of the Schur complement w.r.t. the "Delta unknowns", \({\tilde{S}_{\Delta \Delta}}^{-1}\).
typedef TAlgebra ug::PrimalSubassembledMatrixInverse< TAlgebra >::algebra_type |
typedef ILinearOperatorInverse<vector_type> ug::PrimalSubassembledMatrixInverse< TAlgebra >::base_type |
Base type.
typedef TAlgebra::matrix_type ug::PrimalSubassembledMatrixInverse< TAlgebra >::matrix_type |
typedef TAlgebra::vector_type ug::PrimalSubassembledMatrixInverse< TAlgebra >::vector_type |
ug::PrimalSubassembledMatrixInverse< TAlgebra >::PrimalSubassembledMatrixInverse | ( | ) |
constructor
References new().
|
inlinevirtual |
|
virtual |
applies inverse operator, i.e. returns u = A^{-1} f
This method applies the inverse operator, i.e. u = A^{-1} f. The domain function f remains unchanged. Note, that this method can always be implemented by creating a copy of f and calling apply_return_defect with this copy.
[in] | f | right-hand side |
[out] | u | solution |
Implements ug::ILinearOperatorInverse< TAlgebra::vector_type, TAlgebra::vector_type >.
References FETI_PROFILE_FUNC.
|
virtual |
applies inverse operator, i.e. returns u = A^{-1} f and returns defect d := f - A*u
This method applies the inverse operator, i.e. u = A^{-1} f. The domain function f is changed in the way, that the defect d := f - A*u is returned in the function. This is always useful, when the inverting algorithm can (or must) update the defect during computation (this is e.g. the case for the geometric multigrid method). Note, that this method can always be implemented by calling apply and then computing d := f - A*u.
[in,out] | f | right-hand side |
[out] | u | solution |
Implements ug::ILinearOperatorInverse< TAlgebra::vector_type, TAlgebra::vector_type >.
References pcl::AllProcsTrue(), FETI_PROFILE_BEGIN, FETI_PROFILE_END, ug::PrimalSubassembledMatrixInverse< TAlgebra >::StepConv::lastDef2a, ug::PrimalSubassembledMatrixInverse< TAlgebra >::StepConv::lastDef7, ug::PrimalSubassembledMatrixInverse< TAlgebra >::StepConv::numIter2a, ug::PrimalSubassembledMatrixInverse< TAlgebra >::StepConv::numIter7, pcl::ProcRank(), ug::PST_ADDITIVE, ug::PST_CONSISTENT, UG_LOG, UG_LOG_ALL_PROCS, ug::VecBroadcast(), and ug::VecGather().
|
inline |
|
inline |
|
inlinevirtual |
References init().
|
virtual |
|
inlinevirtual |
name of class
Implements ug::ILinearOperatorInverse< TAlgebra::vector_type, TAlgebra::vector_type >.
void ug::PrimalSubassembledMatrixInverse< TAlgebra >::print_statistic_of_inner_solver | ( | bool | bPrintOnlyAverages | ) |
prints some convergence statistic of inner solvers
References pcl::ProcessCommunicator::allreduce(), pcl::NumProcs(), PCL_DT_DOUBLE, PCL_DT_INT, PCL_RO_MAX, PCL_RO_MIN, PCL_RO_SUM, and UG_LOG.
Referenced by ug::FETISolver< TAlgebra >::print_statistic_of_inner_solver().
|
inline |
sets the coarse problem solver
References ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_spCoarseProblemSolver.
|
inline |
sets the primal layouts
References ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_pFetiLayouts.
|
inline |
sets the Neumann solver
References ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_spNeumannSolver.
|
inline |
sets statistic slot where next iterate should be counted
References ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_statType.
|
inline |
set 'm_bTestOneToManyLayouts'
References ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_bTestOneToManyLayouts.
Referenced by ug::FETISolver< TAlgebra >::set_test_one_to_many_layouts().
|
inlinevirtual |
returns if parallel solving is supported
Implements ug::ILinearOperatorInverse< TAlgebra::vector_type, TAlgebra::vector_type >.
References ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_spCoarseProblemSolver, ug::PrimalSubassembledMatrixInverse< TAlgebra >::m_spNeumannSolver, ug::ILinearOperatorInverse< X, Y >::supports_parallel(), and SmartPtr< T, FreePolicy >::valid().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |