dune-fem 2.12-git
Loading...
Searching...
No Matches
Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator > Class Template Referenceabstract

#include <dune/fem/schemes/molgalerkin.hh>

Inheritance diagram for Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >:
Inheritance graph

Classes

struct  GetSetLocalMatrix
 
struct  GetSetLocalMatrixImpl
 
struct  GetSetLocalMatrixImplLocked
 

Public Types

typedef JacobianOperator JacobianOperatorType
 
typedef BaseType::DomainFunctionType DomainFunctionType
 
typedef BaseType::RangeFunctionType RangeFunctionType
 
typedef DomainFunctionType::DiscreteFunctionSpaceType DomainDiscreteFunctionSpaceType
 
typedef RangeFunctionType::DiscreteFunctionSpaceType RangeDiscreteFunctionSpaceType
 
typedef BaseType::LocalGalerkinOperatorImplType LocalGalerkinOperatorImplType
 
typedef DiagonalAndNeighborStencil< DomainDiscreteFunctionSpaceType, RangeDiscreteFunctionSpaceType > DiagonalAndNeighborStencilType
 
typedef DiagonalStencil< DomainDiscreteFunctionSpaceType, RangeDiscreteFunctionSpaceType > DiagonalStencilType
 
typedef BaseType::GridPartType GridPartType
 
typedef ThreadIterator< GridPartType > ThreadIteratorType
 
typedef Impl::GalerkinOperator< GridPartType > GalerkinOperatorImplType
 
typedef RangeFunctionType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
 
typedef LocalGalerkinOperatorImplType::template QuadratureSelector< DiscreteFunctionSpaceType >::InteriorQuadratureType InteriorQuadratureType
 
typedef LocalMassMatrix< DiscreteFunctionSpaceType, InteriorQuadratureType > LocalMassMatrixType
 
typedef Integrands ModelType
 
typedef Integrands DirichletModelType
 
typedef DomainFunction::RangeFieldType DomainFieldType
 field type of the operator's domain
 
typedef RangeFunction::RangeFieldType RangeFieldType
 field type of the operator's range
 
typedef DomainFunctionType::RangeFieldType DomainFieldType
 field type of the operator's domain
 
typedef RangeFunctionType::RangeFieldType RangeFieldType
 field type of the operator's range
 

Public Member Functions

template<class... Args>
 MOLDifferentiableGalerkinOperator (const DomainDiscreteFunctionSpaceType &dSpace, const RangeDiscreteFunctionSpaceType &rSpace, Args &&... args)
 
virtual void jacobian (const DomainFunctionType &u, JacobianOperatorType &jOp) const final override
 obtain linearization
 
template<class GridFunction >
void jacobian (const GridFunction &u, JacobianOperatorType &jOp) const
 
const DomainDiscreteFunctionSpaceType & domainSpace () const
 
const RangeDiscreteFunctionSpaceType & rangeSpace () const
 
const RangeDiscreteFunctionSpaceType & space () const
 
const GridPartType & gridPart () const
 
const LocalGalerkinOperatorImplType & localOperator () const
 
void setCommunicate (const bool communicate)
 
void setQuadratureOrders (unsigned int interior, unsigned int surface)
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const final override
 application operator
 
void operator() (const GridFunction &u, RangeFunctionType &w) const
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const =0
 application operator
 
ModelType & model () const
 
const GalerkinOperatorImplType & impl () const
 
std::size_t gridSizeInterior () const
 
virtual void finalize ()
 finalization of operator
 
virtual bool nonlinear () const
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const=0
 application operator
 
virtual void finalize ()
 finalization of operator
 
virtual bool nonlinear () const
 

Protected Member Functions

bool hasSkeleton () const
 returns true if one of the models has a skeleton term
 
void prepare (JacobianOperatorType &jOp) const
 
template<class GridFunction >
void assemble (const GridFunction &u, JacobianOperatorType &jOp) const
 
template<class Iterators , class GetSetLocalMatrixOp >
void applyInverseMass (const Iterators &iterators, GetSetLocalMatrixOp &getSet, const bool hasSkeleton) const
 
const GalerkinOperatorImplType & op () const
 
void applyInverseMass (const Iterators &iterators, RangeFunctionType &w) const
 
void evaluate (const GridFunction &u, RangeFunctionType &w) const
 

Protected Attributes

const DomainDiscreteFunctionSpaceType & dSpace_
 
const RangeDiscreteFunctionSpaceType & rSpace_
 
int domainSpaceSequence_
 
int rangeSpaceSequence_
 
std::unique_ptr< DiagonalAndNeighborStencilType > stencilDAN_
 
std::unique_ptr< DiagonalStencilType > stencilD_
 
ThreadIteratorType iterators_
 
std::size_t gridSizeInterior_
 
ThreadSafeValue< GalerkinOperatorImplType > opImpl_
 
ThreadSafeValue< LocalGalerkinOperatorImplType > localOp_
 
bool communicate_
 

Member Typedef Documentation

◆ DiagonalAndNeighborStencilType

template<class Integrands , class JacobianOperator >
typedef DiagonalAndNeighborStencil< DomainDiscreteFunctionSpaceType, RangeDiscreteFunctionSpaceType > Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::DiagonalAndNeighborStencilType

◆ DiagonalStencilType

template<class Integrands , class JacobianOperator >
typedef DiagonalStencil< DomainDiscreteFunctionSpaceType, RangeDiscreteFunctionSpaceType > Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::DiagonalStencilType

◆ DirichletModelType

typedef Integrands Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::DirichletModelType
inherited

◆ DiscreteFunctionSpaceType

typedef RangeFunctionType::DiscreteFunctionSpaceType Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::DiscreteFunctionSpaceType
inherited

◆ DomainDiscreteFunctionSpaceType

template<class Integrands , class JacobianOperator >
typedef DomainFunctionType::DiscreteFunctionSpaceType Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::DomainDiscreteFunctionSpaceType

◆ DomainFieldType [1/2]

template<class JacobianOperator >
typedef DomainFunctionType::RangeFieldType Dune::Fem::DifferentiableOperator< JacobianOperator >::DomainFieldType
inherited

field type of the operator's domain

◆ DomainFieldType [2/2]

template<class DomainFunction , class RangeFunction = DomainFunction>
typedef DomainFunction::RangeFieldType Dune::Fem::Operator< DomainFunction, RangeFunction >::DomainFieldType
inherited

field type of the operator's domain

◆ DomainFunctionType

template<class Integrands , class JacobianOperator >
typedef BaseType::DomainFunctionType Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::DomainFunctionType

◆ GalerkinOperatorImplType

typedef Impl::GalerkinOperator< GridPartType > Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::GalerkinOperatorImplType
inherited

◆ GridPartType

template<class Integrands , class JacobianOperator >
typedef BaseType::GridPartType Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::GridPartType

◆ InteriorQuadratureType

typedef LocalGalerkinOperatorImplType::template QuadratureSelector<DiscreteFunctionSpaceType>::InteriorQuadratureType Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::InteriorQuadratureType
inherited

◆ JacobianOperatorType

template<class Integrands , class JacobianOperator >
typedef JacobianOperator Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::JacobianOperatorType

◆ LocalGalerkinOperatorImplType

template<class Integrands , class JacobianOperator >
typedef BaseType::LocalGalerkinOperatorImplType Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::LocalGalerkinOperatorImplType

◆ LocalMassMatrixType

typedef LocalMassMatrix< DiscreteFunctionSpaceType, InteriorQuadratureType > Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::LocalMassMatrixType
inherited

◆ ModelType

typedef Integrands Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::ModelType
inherited

◆ RangeDiscreteFunctionSpaceType

template<class Integrands , class JacobianOperator >
typedef RangeFunctionType::DiscreteFunctionSpaceType Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::RangeDiscreteFunctionSpaceType

◆ RangeFieldType [1/2]

template<class JacobianOperator >
typedef RangeFunctionType::RangeFieldType Dune::Fem::DifferentiableOperator< JacobianOperator >::RangeFieldType
inherited

field type of the operator's range

◆ RangeFieldType [2/2]

template<class DomainFunction , class RangeFunction = DomainFunction>
typedef RangeFunction::RangeFieldType Dune::Fem::Operator< DomainFunction, RangeFunction >::RangeFieldType
inherited

field type of the operator's range

◆ RangeFunctionType

template<class Integrands , class JacobianOperator >
typedef BaseType::RangeFunctionType Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::RangeFunctionType

◆ ThreadIteratorType

typedef ThreadIterator< GridPartType > Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::ThreadIteratorType
inherited

Constructor & Destructor Documentation

◆ MOLDifferentiableGalerkinOperator()

template<class Integrands , class JacobianOperator >
template<class... Args>
Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::MOLDifferentiableGalerkinOperator ( const DomainDiscreteFunctionSpaceType &  dSpace,
const RangeDiscreteFunctionSpaceType &  rSpace,
Args &&...  args 
)
inlineexplicit

Member Function Documentation

◆ applyInverseMass() [1/2]

template<class Integrands , class JacobianOperator >
template<class Iterators , class GetSetLocalMatrixOp >
void Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::applyInverseMass ( const Iterators &  iterators,
GetSetLocalMatrixOp &  getSet,
const bool  hasSkeleton 
) const
inlineprotected

◆ applyInverseMass() [2/2]

void Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::applyInverseMass ( const Iterators &  iterators,
RangeFunctionType &  w 
) const
inlineprotectedinherited

◆ assemble()

template<class Integrands , class JacobianOperator >
template<class GridFunction >
void Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::assemble ( const GridFunction &  u,
JacobianOperatorType &  jOp 
) const
inlineprotected

◆ domainSpace()

template<class Integrands , class JacobianOperator >
const DomainDiscreteFunctionSpaceType & Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::domainSpace ( ) const
inline

◆ evaluate()

void Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::evaluate ( const GridFunction &  u,
RangeFunctionType &  w 
) const
inlineprotectedinherited

◆ finalize() [1/2]

virtual void Dune::Fem::Operator< JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::finalize ( )
inlinevirtualinherited

finalization of operator

Note
The default implementation is empty.

◆ finalize() [2/2]

template<class DomainFunction , class RangeFunction = DomainFunction>
virtual void Dune::Fem::Operator< DomainFunction, RangeFunction >::finalize ( )
inlinevirtualinherited

finalization of operator

Note
The default implementation is empty.

Reimplemented in Dune::Fem::SparseRowLinearOperator< DomainFunction, RangeFunction, Matrix >.

◆ gridPart()

template<class Integrands , class JacobianOperator >
const GridPartType & Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >::gridPart ( ) const
inline

◆ gridSizeInterior()

std::size_t Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::gridSizeInterior ( ) const
inlineinherited

◆ hasSkeleton()

template<class Integrands , class JacobianOperator >
bool Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::hasSkeleton ( ) const
inlineprotected

returns true if one of the models has a skeleton term

◆ impl()

const GalerkinOperatorImplType & Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::impl ( ) const
inlineinherited

◆ jacobian() [1/2]

template<class Integrands , class JacobianOperator >
virtual void Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::jacobian ( const DomainFunctionType &  u,
JacobianOperatorType &  jOp 
) const
inlinefinaloverridevirtual

obtain linearization

Parameters
[in]uargument discrete function
[out]jOpdestination Jacobian operator
Note
This method has to be implemented by all derived classes.

Implements Dune::Fem::DifferentiableOperator< JacobianOperator >.

◆ jacobian() [2/2]

template<class Integrands , class JacobianOperator >
template<class GridFunction >
void Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::jacobian ( const GridFunction &  u,
JacobianOperatorType &  jOp 
) const
inline

◆ localOperator()

template<class Integrands , class JacobianOperator >
const LocalGalerkinOperatorImplType & Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >::localOperator ( ) const
inline

◆ model()

ModelType & Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::model ( ) const
inlineinherited

◆ nonlinear() [1/2]

◆ nonlinear() [2/2]

virtual bool Dune::Fem::Operator< JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::nonlinear ( ) const
inlinevirtualinherited

◆ op()

template<class Integrands , class JacobianOperator >
const GalerkinOperatorImplType & Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >::op ( ) const
inlineprotected

◆ operator()() [1/4]

template<class DomainFunction , class RangeFunction = DomainFunction>
virtual void Dune::Fem::Operator< DomainFunction, RangeFunction >::operator() ( const DomainFunctionType &  u,
RangeFunctionType &  w 
) const
pure virtualinherited

application operator

Parameters
[in]uargument discrete function
[out]wdestination discrete function
Note
This method has to be implemented by all derived classes.

Implemented in Dune::Fem::DiagonalPreconditionerBase< DFImp, OperatorImp, assembled >, Dune::Fem::DiagonalPreconditionerBase< DFImp, Operator, std::is_base_of< AssembledOperator< DFImp, DFImp >, Operator > ::value >, Dune::Fem::DiagonalPreconditionerBase< DFImp, OperatorImp, true >, Dune::Fem::FemPreconditioningBase< DFImp, OperatorImp, method, assembled >, Dune::Fem::FemPreconditioningBase< DFImp, Operator, method, std::is_base_of< AssembledOperator< DFImp, DFImp >, Operator > ::value >, Dune::Fem::FemPreconditioningBase< DFImp, OperatorImp, method, true >, DGEllipticOperator< DiscreteFunction, Model, Penalty >, Dune::Fem::NumpyLinearOperator< DomainFunction, RangeFunction >, Dune::Fem::SparseRowLinearOperator< DomainFunction, RangeFunction, Matrix >, Dune::Fem::DenseRowLinearOperator< DomainFunction, RangeFunction >, Dune::Fem::HierarchicalLinearOperator< DomainFunction, RangeFunction >, Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >, Dune::Fem::PreconditionerFunctionWrapper< DomainFunction, RangeFunction >, Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >, EllipticOperator< DomainDiscreteFunction, RangeDiscreteFunction, Model >, Dune::Fem::GalerkinOperator< Integrands, DomainFunction, RangeFunction >, Dune::Fem::GalerkinOperator< Integrands, DomainFunction, RangeFunction >, Dune::Fem::MassLumpingOperator< Integrands, MassIntegrands, DomainFunction, RangeFunction >, Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >, Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >, and Dune::Fem::VtxProjection< DType, RType >.

◆ operator()() [2/4]

virtual void Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::operator() ( const DomainFunctionType &  u,
RangeFunctionType &  w 
) const
inlinefinaloverridevirtualinherited

application operator

Parameters
[in]uargument discrete function
[out]wdestination discrete function
Note
This method has to be implemented by all derived classes.

◆ operator()() [3/4]

virtual void Dune::Fem::Operator< JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::operator() ( const DomainFunctionType &  u,
RangeFunctionType &  w 
) const
pure virtualinherited

application operator

Parameters
[in]uargument discrete function
[out]wdestination discrete function
Note
This method has to be implemented by all derived classes.

◆ operator()() [4/4]

void Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::operator() ( const GridFunction &  u,
RangeFunctionType &  w 
) const
inlineinherited

◆ prepare()

template<class Integrands , class JacobianOperator >
void Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::prepare ( JacobianOperatorType &  jOp) const
inlineprotected

◆ rangeSpace()

template<class Integrands , class JacobianOperator >
const RangeDiscreteFunctionSpaceType & Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::rangeSpace ( ) const
inline

◆ setCommunicate()

void Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::setCommunicate ( const bool  communicate)
inlineinherited

◆ setQuadratureOrders()

void Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::setQuadratureOrders ( unsigned int  interior,
unsigned int  surface 
)
inlineinherited

◆ space()

template<class Integrands , class JacobianOperator >
const RangeDiscreteFunctionSpaceType & Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::space ( ) const
inline

Member Data Documentation

◆ communicate_

bool Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::communicate_
protectedinherited

◆ domainSpaceSequence_

template<class Integrands , class JacobianOperator >
int Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::domainSpaceSequence_
mutableprotected

◆ dSpace_

template<class Integrands , class JacobianOperator >
const DomainDiscreteFunctionSpaceType& Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::dSpace_
protected

◆ gridSizeInterior_

template<class Integrands , class JacobianOperator >
std::size_t Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >::gridSizeInterior_
mutableprotected

◆ iterators_

template<class Integrands , class JacobianOperator >
ThreadIteratorType Dune::Fem::MOLGalerkinOperator< Integrands, DomainFunction, RangeFunction >::iterators_
mutableprotected

◆ localOp_

ThreadSafeValue< LocalGalerkinOperatorImplType > Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::localOp_
protectedinherited

◆ opImpl_

ThreadSafeValue< GalerkinOperatorImplType > Dune::Fem::MOLGalerkinOperator< Integrands, JacobianOperator::DomainFunctionType , JacobianOperator::RangeFunctionType >::opImpl_
protectedinherited

◆ rangeSpaceSequence_

template<class Integrands , class JacobianOperator >
int Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::rangeSpaceSequence_
protected

◆ rSpace_

template<class Integrands , class JacobianOperator >
const RangeDiscreteFunctionSpaceType& Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::rSpace_
protected

◆ stencilD_

template<class Integrands , class JacobianOperator >
std::unique_ptr< DiagonalStencilType > Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::stencilD_
mutableprotected

◆ stencilDAN_

template<class Integrands , class JacobianOperator >
std::unique_ptr< DiagonalAndNeighborStencilType > Dune::Fem::MOLDifferentiableGalerkinOperator< Integrands, JacobianOperator >::stencilDAN_
mutableprotected

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