ug4
|
#include <schur_complement_operator.h>
Public Types | |
typedef TAlgebra | algebra_type |
typedef TAlgebra::matrix_type | matrix_type |
typedef TAlgebra::vector_type | vector_type |
Public Types inherited from ug::ILinearOperator< TAlgebra::vector_type, 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::IOperator< X, Y > | |
typedef Y | codomain_function_type |
Range space. More... | |
typedef X | domain_function_type |
Domain space. More... | |
Public Member Functions | |
virtual void | apply (vector_type &f, const vector_type &u) |
apply schur complement \( f_{\Gamma} = (A_{\Gamma, \Gamma} - A_{\Gamma, I} A_{I, I}^{-1} A_{I, \Gamma} )u_{\Gamma} \) More... | |
virtual void | apply_sub (vector_type &f, const vector_type &u) |
void | compute_matrix (matrix_type &schur_matrix, double threshold=0.0) |
void | debug_compute_matrix () |
virtual void | init () |
initializes the solver for operator A More... | |
void | init (const vector_type &u) |
implementation of the operator for the solution dependent initialization. More... | |
virtual const char * | name () const |
name of solver More... | |
SchurComplementOperator (SmartPtr< MatrixOperator< matrix_type, vector_type > > Alocal, SchurSlicingData::slice_desc_type_vector &sdv) | |
constructor More... | |
virtual void | set_debug (SmartPtr< IDebugWriter< algebra_type > > spDebugWriter) |
void | set_dirichlet_solver (SmartPtr< ILinearOperatorInverse< vector_type > > dirichletSolver) |
sets a Dirichlet solver More... | |
template<typename T > | |
void | set_inner_debug (SmartPtr< T > op) |
void | set_matrix (SmartPtr< MatrixOperator< matrix_type, vector_type > > A) |
template<typename T > | |
void | set_skeleton_debug (SmartPtr< T > op) |
const SchurSlicingData & | slicing () const |
matrix_type & | sub_matrix (int r, int c) |
SmartPtr< MatrixOperator< matrix_type, vector_type > > | sub_operator (int r, int c) |
size_t | sub_size (schur_slice_desc_type type) |
virtual | ~SchurComplementOperator () |
Public Member Functions inherited from ug::ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > | |
virtual void | prepare (TAlgebra::vector_type &u) |
default implementation for IOperator interface More... | |
virtual | ~ILinearOperator () |
virtual destructor More... | |
Public Member Functions inherited from ug::IOperator< X, Y > | |
virtual void | apply (Y &d, const X &u)=0 |
computes the nonlinear mapping d := N(u) More... | |
virtual void | prepare (X &u)=0 |
prepares domain and codomain functions for application More... | |
virtual | ~IOperator () |
virtual destructor More... | |
Protected Member Functions | |
template<int dim> | |
void | set_debug_dim () |
Protected Attributes | |
int | m_applyCnt |
SmartPtr< MatrixOperator< matrix_type, vector_type > > | m_op [2][2] |
const SchurSlicingData | m_slicing |
SmartPtr< IDebugWriter< algebra_type > > | m_spDebugWriter |
SmartPtr< AlgebraDebugWriter< algebra_type > > | m_spDebugWriterInner |
SmartPtr< AlgebraDebugWriter< algebra_type > > | m_spDebugWriterSkeleton |
SmartPtr< ILinearOperatorInverse< vector_type > > | m_spDirichletSolver |
SmartPtr< MatrixOperator< matrix_type, vector_type > > | m_spOperator |
typedef TAlgebra ug::SchurComplementOperator< TAlgebra >::algebra_type |
typedef TAlgebra::matrix_type ug::SchurComplementOperator< TAlgebra >::matrix_type |
typedef TAlgebra::vector_type ug::SchurComplementOperator< TAlgebra >::vector_type |
|
inline |
constructor
References ug::SchurComplementOperator< TAlgebra >::m_op, and make_sp().
|
inlinevirtual |
|
virtual |
apply schur complement \( f_{\Gamma} = (A_{\Gamma, \Gamma} - A_{\Gamma, I} A_{I, I}^{-1} A_{I, \Gamma} )u_{\Gamma} \)
applies the Schur complement built from matrix operator set via 'set_matrix()' to 'u' and returns the result 'f := S times u'
Implements ug::ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type >.
References IF_DEBUG, pcl::ProcRank(), ug::PST_ADDITIVE, ug::PST_CONSISTENT, SCHUR_PROFILE_BEGIN, ug::SchurDebug, ug::SD_INNER, ug::SD_SKELETON, UG_CATCH_THROW, UG_DLOG, UG_LOG, UG_LOG_ALL_PROCS, ug::UG_LOG_Vector(), and UG_THROW.
|
virtual |
applies the Schur complement built from matrix operator set via 'set_matrix()' to 'u' and returns the result 'f := f - S times u'
Implements ug::ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type >.
References SCHUR_PROFILE_BEGIN, ug::SchurDebug, and UG_DLOG.
void ug::SchurComplementOperator< TAlgebra >::compute_matrix | ( | matrix_type & | schur_matrix, |
double | threshold = 0.0 |
||
) |
void ug::SchurComplementOperator< TAlgebra >::debug_compute_matrix |
References ug::JuliaString(), SCHUR_PROFILE_BEGIN, ug::SD_SKELETON, and UG_LOG.
|
virtual |
initializes the solver for operator A
Implements ug::ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type >.
References IF_DEBUG, PROGRESS_START, ug::PST_ADDITIVE, SCHUR_PROFILE_BEGIN, ug::SchurDebug, ug::SD_INNER, ug::SD_SKELETON, UG_CATCH_THROW, UG_DLOG, and UG_THROW.
|
inlinevirtual |
implementation of the operator for the solution dependent initialization.
Implements ug::ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type >.
References ug::SchurComplementOperator< TAlgebra >::init().
Referenced by ug::SchurComplementOperator< TAlgebra >::init().
|
inlinevirtual |
name of solver
|
virtual |
References UG_LOG.
|
protected |
References ug::CreateDirectory(), make_sp(), pcl::ProcRank(), ug::SD_INNER, and ug::SD_SKELETON.
|
inline |
sets a Dirichlet solver
References ug::SchurComplementOperator< TAlgebra >::m_spDirichletSolver.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
References ug::SchurComplementOperator< TAlgebra >::m_op.
Referenced by ug::SchurComplementOperator< TAlgebra >::sub_matrix().
|
inline |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by ug::SchurComplementOperator< TAlgebra >::set_inner_debug().
|
protected |
|
protected |
|
protected |
Referenced by ug::SchurComplementOperator< TAlgebra >::set_matrix().