ug4
Loading...
Searching...
No Matches
ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y > Class Template Reference

#include <schur_complement_inverse.h>

+ Inheritance diagram for ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >:

Public Member Functions

virtual void apply (Y &f, const X &u)
 
virtual void apply_sub (Y &f, const X &u)
 
virtual void calculate_matrix ()
 
virtual M & get_matrix ()
 
virtual void init ()
 init operator
 
virtual void init (const X &u)
 init operator depending on a function u
 
 SchurComplementMatrixOperator (SmartPtr< SchurComplementOperator< TAlgebra > > op)
 
void set_op (SmartPtr< SchurComplementOperator< TAlgebra > > op)
 
- Public Member Functions inherited from ug::ILinearOperator< X, Y >
virtual void prepare (X &u)
 default implementation for IOperator interface
 
virtual ~ILinearOperator ()
 virtual destructor
 
- Public Member Functions inherited from ug::IOperator< X, Y >
virtual ~IOperator ()
 virtual destructor
 
- Public Member Functions inherited from ug::UpdateableMatrixOperator
virtual ~UpdateableMatrixOperator ()
 

Public Attributes

bool invalid
 

Private Types

typedef M matrix_type
 

Private Attributes

SmartPtr< SchurComplementOperator< TAlgebra > > m_op
 

Additional Inherited Members

- Public Types inherited from ug::MatrixOperator< M, X, Y >
typedef Y codomain_function_type
 
typedef X domain_function_type
 
typedef M matrix_type
 
- Public Types inherited from ug::ILinearOperator< X, Y >
typedef Y codomain_function_type
 Range space.
 
typedef X domain_function_type
 Domain space.
 
- Public Types inherited from ug::IOperator< X, Y >
typedef Y codomain_function_type
 Range space.
 
typedef X domain_function_type
 Domain space.
 

Member Typedef Documentation

◆ matrix_type

template<typename TAlgebra , typename M , typename X , typename Y = X>
typedef M ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::matrix_type
private

Constructor & Destructor Documentation

◆ SchurComplementMatrixOperator()

template<typename TAlgebra , typename M , typename X , typename Y = X>
ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::SchurComplementMatrixOperator ( SmartPtr< SchurComplementOperator< TAlgebra > >  op)
inline

Member Function Documentation

◆ apply()

template<typename TAlgebra , typename M , typename X , typename Y = X>
virtual void ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::apply ( Y &  f,
const X &  u 
)
inlinevirtual

This method applies the operator, i.e. f = L*u (or d = J(u)*c in iterative schemes). Note, that the operator must have been initialized once before this method can be used.

Parameters
[in]udomain function
[out]fcodomain function
Returns
bool success flag

Reimplemented from ug::MatrixOperator< M, X, Y >.

References ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::m_op.

◆ apply_sub()

template<typename TAlgebra , typename M , typename X , typename Y = X>
virtual void ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::apply_sub ( Y &  f,
const X &  u 
)
inlinevirtual

This method applies the operator and subracts the result from the input codomain function, i.e. f -= L*u (or d -= J(u)*c in iterative schemes). Note, that the operator must have been initialized once before this method can be used.

Parameters
[in]udomain function
[in,out]fcodomain function
Returns
bool success flag

Reimplemented from ug::MatrixOperator< M, X, Y >.

References ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::m_op.

◆ calculate_matrix()

template<typename TAlgebra , typename M , typename X , typename Y = X>
virtual void ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::calculate_matrix ( )
inlinevirtual

◆ get_matrix()

template<typename TAlgebra , typename M , typename X , typename Y = X>
virtual M & ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::get_matrix ( )
inlinevirtual

◆ init() [1/2]

template<typename TAlgebra , typename M , typename X , typename Y = X>
virtual void ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::init ( )
inlinevirtual

init operator

This method initializes the operator. Once initialized the 'apply'-method can be called. If the operator is a linearization this function returns false.

Returns
bool success flag

Reimplemented from ug::MatrixOperator< M, X, Y >.

References ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::get_matrix(), ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::invalid, and ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::m_op.

Referenced by ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::calculate_matrix().

◆ init() [2/2]

template<typename TAlgebra , typename M , typename X , typename Y = X>
virtual void ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::init ( const X &  u)
inlinevirtual

init operator depending on a function u

This method initializes the operator. Once initialized the 'apply'-method can be called. The function u is passed here, since the linear operator may be the linearization of some non-linear operator. Thus, the operator depends on the linearization point. If the operator is not a linearization, this method can be implemented by simply calling init() and forgetting about the linearization point.

Parameters
[in]ufunction (linearization point)
Returns
bool success flag

Reimplemented from ug::MatrixOperator< M, X, Y >.

References ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::init().

Referenced by ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::init().

◆ set_op()

Member Data Documentation

◆ invalid

template<typename TAlgebra , typename M , typename X , typename Y = X>
bool ug::SchurComplementMatrixOperator< TAlgebra, M, X, Y >::invalid

◆ m_op


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