KASKADE 7 development version
Classes | Public Types | Public Member Functions | Protected Types | Protected Attributes | Related Functions | List of all members
Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric > Class Template Reference

An adaptor presenting a Dune::LinearOperator <domain_type,range_type> interface to a contiguous sub-blockmatrix of an assembled heterogeneous Galerkin operator. More...

#include <istlinterface.hh>

Detailed Description

template<class Assembler_, int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
class Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >

An adaptor presenting a Dune::LinearOperator <domain_type,range_type> interface to a contiguous sub-blockmatrix of an assembled heterogeneous Galerkin operator.

Template Parameters
Assemblerthe VariationalFunctionalAssembler containing the Galerkin matrix
firstRowthe first block row to be included
lastRowone behind the final row to be included (half-open range)
firstColthe first block column to be included
lastColone behind the final column to be included (half-open range)
BlockFiltera boost::fusion predicate working on the assembler's matrix blocks, defining which blocks to include. The default is to take all blocks in the range given by [firstRow,lastRow[ x [firstCol,lastCol[.
symmetricwhether the resulting operator is symmetric. The default is a conservative check whether the operator is symmetric or not.

Due to data sharing, the GalerkinOperator is still valid even if the referenced assembler is deleted or otherwise invalidated. However, reassembling without invalidation of the assembler's data structures also modifies the values in the GalerkinOperator.

Definition at line 756 of file istlinterface.hh.

Inheritance diagram for Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >:

Classes

struct  ApplyScaleAdd
 
struct  TransposedApplyScaleAdd
 

Public Types

typedef IstlInterfaceDetail::Base< Assembler_, firstRow, lastRow, firstCol, lastCol, symmetric >::type Base
 
typedef Assembler_ Assembler
 
using Domain = typename Assembler::AnsatzVariableSetDescription::template CoefficientVector< firstCol, lastCol >
 
using Range = typename Assembler::TestVariableSetDescription::template CoefficientVector< firstRow, lastRow >
 
typedef Assembler::Scalar Scalar
 
typedef IstlInterfaceDetail::BlockInfo< firstRow, lastRow, firstCol, lastCol > BlockInfo
 

Public Member Functions

 AssembledGalerkinOperator (Assembler const &assembler_, bool onlyLowerTriangle_=false, int nThreads_=0)
 Constructor. More...
 
virtual ~AssembledGalerkinOperator ()
 
void update ()
 update operator if grid has changed or assemble(...) has been called. More...
 
virtual MatrixAsTriplet< ScalargetTriplet () const __attribute__((deprecated))
 DEPRECATED. Use get<MatrixAsTriplet<Scalar>>() instead. More...
 
template<class Matrix >
Matrix get (int rowFirst=0, int rowLast=lastRow-firstRow, int colFirst=0, int colLast=lastCol-firstCol) const
 Access matrix (or a submatrix). More...
 
template<class Matrix >
std::unique_ptr< Matrix > getPointer () const
 Access matrix via unique_ptr. Use if Matrix does not support move-semantics. More...
 
MatrixAsTriplet< Scalargetmat () const __attribute__((deprecated))
 DEPRECATED. Use get<MatrixAsTriplet<Scalar>>() instead. More...
 
template<class Vector >
void rangeToVector (Range const &y, Vector &coefficients) const
 Get coefficient vector \(coefficients\in\mathbb{K}^m\) from \(y\in Y\). More...
 
template<class Vector >
void domainToVector (Domain const &x, Vector &coefficients) const
 Get coefficients vector \(coefficients\in\mathbb{K}^n\) from \(x\in X\). More...
 
template<class Vector >
void vectorToDomain (Vector const &coefficients, Domain &x) const
 Get \(x\in X\) from coefficients vector \(coefficients\in\mathbb{K}^n\). More...
 
template<class Vector >
void vectorToRange (Vector const &coefficients, Range &x) const
 Get \( y\in Y \) from coefficient vector \(coefficients\in\mathbb{K}^m\) Apply \(S^{-1}_Y\) to \(coefficients\): \(x=S^{-1}_Y(y)\). More...
 
Assembler const & getAssembler () const
 Provides access to the underlying assembler. More...
 
template<int i>
auto const & ansatzSpace () const
 Returns a reference to the FE space of the i-th variable in this GOP. More...
 
bool getOnlyLowerTriangle () const
 
virtual Dune::SolverCategory::Category category () const override
 returns the category of the operator More...
 
Application of the operator
virtual void apply (Domain const &x, Range &b) const
 compute \( b \leftarrow Ax \) More...
 
void applyTransposed (Range const &x, Domain &b) const
 compute \( b \leftarrow A^T x\) More...
 
virtual Scalar applyDp (Domain const &x, Range &b) const
 Computes \( b \leftarrow Ax \) and, in case \( A \) is symmetric, also \( \langle x, b \rangle \). More...
 
virtual Scalar dp (Domain const &x, Range const &y) const
 
virtual void applyscaleadd (Scalar alpha, Domain const &x, Range &b) const
 Compute \(b \leftarrow b+\alpha Ax\). More...
 
virtual void applyscaleaddTransposed (Scalar alpha, Range const &x, Domain &b) const
 Compute \(b \leftarrow b+\alpha A^T x\). More...
 

Protected Types

typedef boost::fusion::result_of::as_vector< typenameIstlInterfaceDetail::AllBlocks< Assembler >::result >::type allblocks
 
typedef boost::fusion::result_of::as_vector< typenameboost::fusion::result_of::filter_if< allblocks, BlockFilter >::type >::type filtered
 

Protected Attributes

bool onlyLowerTriangle
 
Assembler const & assembler
 
boost::fusion::result_of::as_vector< typenameboost::fusion::result_of::transform< filtered, IstlInterfaceDetail::Translate< firstRow, firstCol > >::type >::type blocks
 
bool isSymmetric
 
int nThreads
 

Related Functions

(Note that these are not member functions.)

template<class Assembler , int firstRow = 0, int lastRow = Assembler::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler::AnsatzVariableSetDescription::noOfVariables>
AssembledGalerkinOperator< Assembler, firstRow, lastRow, firstCol, lastCol > makeAssembledGalerkinOperator (Assembler const &assembler)
 Convenience routine for creating assembled operators. More...
 

Member Typedef Documentation

◆ allblocks

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
typedef boost::fusion::result_of::as_vector<typenameIstlInterfaceDetail::AllBlocks<Assembler>::result>::type Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::allblocks
protected

Definition at line 994 of file istlinterface.hh.

◆ Assembler

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
typedef Assembler_ Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::Assembler

Definition at line 761 of file istlinterface.hh.

◆ Base

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
typedef IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol,symmetric>::type Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::Base

Definition at line 760 of file istlinterface.hh.

◆ BlockInfo

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
typedef IstlInterfaceDetail::BlockInfo<firstRow,lastRow,firstCol,lastCol> Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::BlockInfo

Definition at line 766 of file istlinterface.hh.

◆ Domain

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
using Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::Domain = typename Assembler::AnsatzVariableSetDescription::template CoefficientVector<firstCol,lastCol>

Definition at line 762 of file istlinterface.hh.

◆ filtered

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
typedef boost::fusion::result_of::as_vector<typenameboost::fusion::result_of::filter_if<allblocks,BlockFilter>::type>::type Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::filtered
protected

Definition at line 998 of file istlinterface.hh.

◆ Range

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
using Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::Range = typename Assembler::TestVariableSetDescription::template CoefficientVector<firstRow,lastRow>

Definition at line 763 of file istlinterface.hh.

◆ Scalar

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
typedef Assembler::Scalar Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::Scalar

Definition at line 764 of file istlinterface.hh.

Constructor & Destructor Documentation

◆ AssembledGalerkinOperator()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::AssembledGalerkinOperator ( Assembler const &  assembler_,
bool  onlyLowerTriangle_ = false,
int  nThreads_ = 0 
)
inlineexplicit

Constructor.

Parameters
opthe variational assembler.
onlyLowerTriangleif true, only the lower triangle is returned if a matrix is requested
nThreadsuse given number of threads (or a machine-dependent default if nThreads<=0).

Definition at line 775 of file istlinterface.hh.

◆ ~AssembledGalerkinOperator()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::~AssembledGalerkinOperator ( )
inlinevirtual

Definition at line 784 of file istlinterface.hh.

Member Function Documentation

◆ ansatzSpace()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<int i>
auto const & Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::ansatzSpace ( ) const
inline

Returns a reference to the FE space of the i-th variable in this GOP.

Definition at line 971 of file istlinterface.hh.

◆ apply()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::apply ( Domain const &  x,
Range b 
) const
inlinevirtual

◆ applyDp()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual Scalar Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::applyDp ( Domain const &  x,
Range b 
) const
inlinevirtual

Computes \( b \leftarrow Ax \) and, in case \( A \) is symmetric, also \( \langle x, b \rangle \).

If \( A \) is not symmetric, zero is returned.

Definition at line 919 of file istlinterface.hh.

◆ applyscaleadd()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::applyscaleadd ( Scalar  alpha,
Domain const &  x,
Range b 
) const
inlinevirtual

Compute \(b \leftarrow b+\alpha Ax\).

Note that x and b must not refer to the same memory locations (in case Domain==Range).

Definition at line 938 of file istlinterface.hh.

Referenced by Kaskade::YetAnotherHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, RefinementStrategy, lump, components, ReferenceSolution, ReferenceOperator >::operator()(), Kaskade::YetAnotherHBErrorEstimator_Elasticity< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, RefinementStrategy, lump, components >::operator()(), Kaskade::GoalOrientedErrorEstimator< TemplateFunctional, OriginalVariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace >::operator()(), Kaskade::HierarchicalBasisErrorEstimator2< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverLA, LinearSolverHA, LinearSolverLM, LinearSolverHM, lumpM, RefinementStrategy >::operator()(), Kaskade::StateEquationHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverHA, RefinementStrategy >::operator()(), Kaskade::VariationalEquationHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverHA, RefinementStrategy >::operator()(), Kaskade::AdjointEquationHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverHA, RefinementStrategy >::operator()(), Kaskade::AdjointEquationLinearPropagationHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverLA, LinearSolverHA, LinearSolverLU, RefinementStrategy >::operator()(), Kaskade::AnotherHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverLA, LinearSolverHA, LinearSolverHU, LinearSolverLU, RefinementStrategy, lump >::operator()(), Kaskade::StupidHBErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverHA, RefinementStrategy >::operator()(), Kaskade::MartinsErrorEstimator< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSystemSolver_H, LinearSystemSolver_L, LinearSolverA_H, LinearSolverA_L, RefinementStrategy >::operator()(), and Kaskade::HierarchicalBasisErrorEstimator3< Functional, VariableSetDescription, ExtensionVariableSetDescription, ExtensionSpace, NormFunctional, LinearSolverLA, LinearSolverHA, LinearSolverLM, LinearSolverHM, lumpM, RefinementStrategy >::operator()().

◆ applyscaleaddTransposed()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::applyscaleaddTransposed ( Scalar  alpha,
Range const &  x,
Domain b 
) const
inlinevirtual

Compute \(b \leftarrow b+\alpha A^T x\).

Note that x and b must not refer to the same memory locations (in case Domain==Range).

Definition at line 949 of file istlinterface.hh.

◆ applyTransposed()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::applyTransposed ( Range const &  x,
Domain b 
) const
inline

compute \( b \leftarrow A^T x\)

Definition at line 908 of file istlinterface.hh.

◆ category()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual Dune::SolverCategory::Category Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::category ( ) const
inlineoverridevirtual

returns the category of the operator

From the Dune doxygen documentation it is unclear what this is supposed to mean. We return a dummy here.

Definition at line 986 of file istlinterface.hh.

◆ domainToVector()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<class Vector >
void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::domainToVector ( Domain const &  x,
Vector &  coefficients 
) const
inline

Get coefficients vector \(coefficients\in\mathbb{K}^n\) from \(x\in X\).

Apply \(S_X\) to \(x\in X\): \(coefficients=S_X(x)\).

The used vector type Vector must provide:

  • its iterator type via typename Vector::iterator
  • (possibly overloads of) the free functions:
    • typename Vector::iterator std::begin(Vector&);

Definition at line 858 of file istlinterface.hh.

◆ dp()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual Scalar Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::dp ( Domain const &  x,
Range const &  y 
) const
inlinevirtual

◆ get()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<class Matrix >
Matrix Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::get ( int  rowFirst = 0,
int  rowLast = lastRow-firstRow,
int  colFirst = 0,
int  colLast = lastCol-firstCol 
) const
inline

Access matrix (or a submatrix).

Template Parameters
Matrixa matrix type for which a partial specialization of AssemblyDetail::Fill is defined.
Parameters
rowFirstindex of first row (starting at default 0)
rowLastindex of one behind last row (half-open range, defaults to maximum range)
colFirstindex of first column (starting at default 0)
colLastindex of one behind last column (half-open range, defaults to maximum range)

Use this if Matrix supports move semantics. (NumaBCRSMatrix does.)

Definition at line 814 of file istlinterface.hh.

◆ getAssembler()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
Assembler const & Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::getAssembler ( ) const
inline

Provides access to the underlying assembler.

Definition at line 962 of file istlinterface.hh.

◆ getmat()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
MatrixAsTriplet< Scalar > Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::getmat ( ) const

DEPRECATED. Use get<MatrixAsTriplet<Scalar>>() instead.

◆ getOnlyLowerTriangle()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
bool Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::getOnlyLowerTriangle ( ) const
inline

Definition at line 979 of file istlinterface.hh.

◆ getPointer()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<class Matrix >
std::unique_ptr< Matrix > Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::getPointer ( ) const
inline

Access matrix via unique_ptr. Use if Matrix does not support move-semantics.

Definition at line 821 of file istlinterface.hh.

◆ getTriplet()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
virtual MatrixAsTriplet< Scalar > Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::getTriplet ( ) const
inlinevirtual

DEPRECATED. Use get<MatrixAsTriplet<Scalar>>() instead.

Definition at line 797 of file istlinterface.hh.

◆ rangeToVector()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<class Vector >
void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::rangeToVector ( Range const &  y,
Vector &  coefficients 
) const
inline

Get coefficient vector \(coefficients\in\mathbb{K}^m\) from \(y\in Y\).

Apply \(S_Y\) to \(y\in Y\): \(coefficients=S_Y(y)\).

The used vector type Vector must provide:

  • its iterator type via typename Vector::iterator
  • (possibly overloads of) the free functions:
    • typename Vector::iterator std::begin(Vector&);

Definition at line 842 of file istlinterface.hh.

◆ update()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::update ( )
inline

update operator if grid has changed or assemble(...) has been called.

Definition at line 787 of file istlinterface.hh.

◆ vectorToDomain()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<class Vector >
void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::vectorToDomain ( Vector const &  coefficients,
Domain x 
) const
inline

Get \(x\in X\) from coefficients vector \(coefficients\in\mathbb{K}^n\).

Apply \(S^{-1}_X\) to \(coefficients\): \(x=S^{-1}_X(x)\).

The used vector type Vector must provide:

  • its iterator type via typename Vector::const_iterator
  • (possibly overloads of) the free functions:
    • typename Vector::const_iterator std::begin(Vector const&);

Definition at line 873 of file istlinterface.hh.

◆ vectorToRange()

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
template<class Vector >
void Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::vectorToRange ( Vector const &  coefficients,
Range x 
) const
inline

Get \( y\in Y \) from coefficient vector \(coefficients\in\mathbb{K}^m\) Apply \(S^{-1}_Y\) to \(coefficients\): \(x=S^{-1}_Y(y)\).

The used vector type Vector must provide:

  • its iterator type via typename Vector::const_iterator
  • (possibly overloads of) the free functions:
    • typename Vector::const_iterator std::begin(Vector const&);

Definition at line 888 of file istlinterface.hh.

Friends And Related Function Documentation

◆ makeAssembledGalerkinOperator()

template<class Assembler , int firstRow = 0, int lastRow = Assembler::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler::AnsatzVariableSetDescription::noOfVariables>
AssembledGalerkinOperator< Assembler, firstRow, lastRow, firstCol, lastCol > makeAssembledGalerkinOperator ( Assembler const &  assembler)
related

Convenience routine for creating assembled operators.

Definition at line 1111 of file istlinterface.hh.

Member Data Documentation

◆ assembler

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
Assembler const& Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::assembler
protected

◆ blocks

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
boost::fusion::result_of::as_vector<typenameboost::fusion::result_of::transform<filtered,IstlInterfaceDetail::Translate<firstRow,firstCol>>::type>::type Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::blocks
protected

◆ isSymmetric

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
bool Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::isSymmetric
protected

Definition at line 1007 of file istlinterface.hh.

◆ nThreads

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
int Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::nThreads
protected

◆ onlyLowerTriangle

template<class Assembler_ , int firstRow = 0, int lastRow = Assembler_::TestVariableSetDescription::noOfVariables, int firstCol = 0, int lastCol = Assembler_::AnsatzVariableSetDescription::noOfVariables, class BlockFilter = IstlInterfaceDetail::RangeBlockSelector<firstRow,lastRow,firstCol,lastCol>, bool symmetric = IstlInterfaceDetail::Base<Assembler_,firstRow,lastRow,firstCol,lastCol>::inferredSymmetry>
bool Kaskade::AssembledGalerkinOperator< Assembler_, firstRow, lastRow, firstCol, lastCol, BlockFilter, symmetric >::onlyLowerTriangle
protected

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