dune-fem 2.8.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
FemScheme< Operator, LinearInverseOperator > Class Template Reference

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

Classes

struct  SolverInfo
 

Public Types

typedef Operator::ModelType ModelType
 type of the mathematical model
 
typedef Operator::DomainFunctionType DomainFunctionType
 
typedef Operator::RangeFunctionType RangeFunctionType
 
typedef Operator::RangeFunctionType DiscreteFunctionType
 
typedef Operator DifferentiableOperatorType
 
typedef DiscreteFunctionType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
 
typedef LinearInverseOperator LinearInverseOperatorType
 
typedef ModelType::GridPartType GridPartType
 grid view (e.g. leaf grid view) provided in the template argument list
 
typedef GridPartType::GridType GridType
 type of underyling hierarchical grid needed for data output
 
typedef DiscreteFunctionSpaceType::FunctionSpaceType FunctionSpaceType
 type of function space (scalar functions, $ f: \Omega -> R) $
 
typedef Operator::JacobianOperatorType JacobianOperatorType
 
typedef Operator::JacobianOperatorType LinearOperatorType
 
typedef Dune::Fem::NewtonInverseOperator< LinearOperatorType, LinearInverseOperatorTypeInverseOperatorType
 
typedef InverseOperatorType::ErrorMeasureType ErrorMeasureType
 
typedef FunctionSpaceType::RangeType RangeType
 
using DirichletBlockVector = typename AddDirichletBC< Operator, DomainFunctionType >::DirichletBlockVector
 

Public Member Functions

 FemScheme (const DiscreteFunctionSpaceType &space, ModelType &model, const Dune::Fem::ParameterReader &parameter=Dune::Fem::Parameter::container())
 
const DifferentiableOperatorTypefullOperator () const
 
DifferentiableOperatorTypefullOperator ()
 
template<typename O = DifferentiableOperatorType>
auto setQuadratureOrders (unsigned int interior, unsigned int surface) -> Dune::void_t< decltype(std::declval< O >().setQuadratureOrders(0, 0)) >
 
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > setConstraints (DomainFunctionType &u) const
 
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > setConstraints (const DiscreteFunctionType &u, DiscreteFunctionType &v) const
 
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > subConstraints (const DiscreteFunctionType &u, DiscreteFunctionType &v) const
 
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > setConstraints (const RangeType &value, DiscreteFunctionType &u) const
 
const auto & dirichletBlocks () const
 
void operator() (const DiscreteFunctionType &arg, DiscreteFunctionType &dest) const
 
template<class GridFunction >
auto operator() (const GridFunction &arg, DiscreteFunctionType &dest) const -> Dune::void_t< decltype(std::declval< const Operator & >()(arg, dest))>
 
void setErrorMeasure (ErrorMeasureType &errorMeasure) const
 
SolverInfo solve (const DiscreteFunctionType &rhs, DiscreteFunctionType &solution) const
 
SolverInfo solve (DiscreteFunctionType &solution) const
 
template<class GridFunction , std::enable_if_t< std::is_same< decltype(std::declval< const DifferentiableOperatorType >().jacobian(std::declval< const GridFunction & >(), std::declval< JacobianOperatorType & >())), void >::value , int , i = 0>
void jacobian (const GridFunction &ubar, JacobianOperatorType &linOp) const
 
const GridPartTypegridPart () const
 
const DiscreteFunctionSpaceTypespace () const
 
const ModelTypemodel () const
 
ModelTypemodel ()
 

Static Public Attributes

static const int dimRange = FunctionSpaceType::dimRange
 
static constexpr bool addDirichletBC = AddDirichletBC<Operator,DomainFunctionType>::value
 

Protected Member Functions

template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > setZeroConstraints (DiscreteFunctionType &u) const
 
template<class... Args>
void setZeroConstraints (Args &&...) const
 
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > setModelConstraints (DiscreteFunctionType &u) const
 
template<class... Args>
void setModelConstraints (Args &&...) const
 

Protected Attributes

const DiscreteFunctionSpaceTypespace_
 
DifferentiableOperatorType implicitOperator_
 
InverseOperatorType invOp_
 

Member Typedef Documentation

◆ DifferentiableOperatorType

template<class Operator , class LinearInverseOperator >
typedef Operator FemScheme< Operator, LinearInverseOperator >::DifferentiableOperatorType

◆ DirichletBlockVector

template<class Operator , class LinearInverseOperator >
using FemScheme< Operator, LinearInverseOperator >::DirichletBlockVector = typename AddDirichletBC<Operator,DomainFunctionType>::DirichletBlockVector

◆ DiscreteFunctionSpaceType

template<class Operator , class LinearInverseOperator >
typedef DiscreteFunctionType::DiscreteFunctionSpaceType FemScheme< Operator, LinearInverseOperator >::DiscreteFunctionSpaceType

◆ DiscreteFunctionType

template<class Operator , class LinearInverseOperator >
typedef Operator::RangeFunctionType FemScheme< Operator, LinearInverseOperator >::DiscreteFunctionType

◆ DomainFunctionType

template<class Operator , class LinearInverseOperator >
typedef Operator::DomainFunctionType FemScheme< Operator, LinearInverseOperator >::DomainFunctionType

◆ ErrorMeasureType

template<class Operator , class LinearInverseOperator >
typedef InverseOperatorType::ErrorMeasureType FemScheme< Operator, LinearInverseOperator >::ErrorMeasureType

◆ FunctionSpaceType

template<class Operator , class LinearInverseOperator >
typedef DiscreteFunctionSpaceType::FunctionSpaceType FemScheme< Operator, LinearInverseOperator >::FunctionSpaceType

type of function space (scalar functions, $ f: \Omega -> R) $

◆ GridPartType

template<class Operator , class LinearInverseOperator >
typedef ModelType::GridPartType FemScheme< Operator, LinearInverseOperator >::GridPartType

grid view (e.g. leaf grid view) provided in the template argument list

◆ GridType

template<class Operator , class LinearInverseOperator >
typedef GridPartType::GridType FemScheme< Operator, LinearInverseOperator >::GridType

type of underyling hierarchical grid needed for data output

◆ InverseOperatorType

template<class Operator , class LinearInverseOperator >
typedef Dune::Fem::NewtonInverseOperator< LinearOperatorType, LinearInverseOperatorType > FemScheme< Operator, LinearInverseOperator >::InverseOperatorType

◆ JacobianOperatorType

template<class Operator , class LinearInverseOperator >
typedef Operator::JacobianOperatorType FemScheme< Operator, LinearInverseOperator >::JacobianOperatorType

◆ LinearInverseOperatorType

template<class Operator , class LinearInverseOperator >
typedef LinearInverseOperator FemScheme< Operator, LinearInverseOperator >::LinearInverseOperatorType

◆ LinearOperatorType

template<class Operator , class LinearInverseOperator >
typedef Operator::JacobianOperatorType FemScheme< Operator, LinearInverseOperator >::LinearOperatorType

◆ ModelType

template<class Operator , class LinearInverseOperator >
typedef Operator::ModelType FemScheme< Operator, LinearInverseOperator >::ModelType

type of the mathematical model

◆ RangeFunctionType

template<class Operator , class LinearInverseOperator >
typedef Operator::RangeFunctionType FemScheme< Operator, LinearInverseOperator >::RangeFunctionType

◆ RangeType

template<class Operator , class LinearInverseOperator >
typedef FunctionSpaceType::RangeType FemScheme< Operator, LinearInverseOperator >::RangeType

Constructor & Destructor Documentation

◆ FemScheme()

template<class Operator , class LinearInverseOperator >
FemScheme< Operator, LinearInverseOperator >::FemScheme ( const DiscreteFunctionSpaceType space,
ModelType model,
const Dune::Fem::ParameterReader parameter = Dune::Fem::Parameter::container() 
)
inline

Member Function Documentation

◆ dirichletBlocks()

template<class Operator , class LinearInverseOperator >
const auto & FemScheme< Operator, LinearInverseOperator >::dirichletBlocks ( ) const
inline

◆ fullOperator() [1/2]

template<class Operator , class LinearInverseOperator >
DifferentiableOperatorType & FemScheme< Operator, LinearInverseOperator >::fullOperator ( )
inline

◆ fullOperator() [2/2]

template<class Operator , class LinearInverseOperator >
const DifferentiableOperatorType & FemScheme< Operator, LinearInverseOperator >::fullOperator ( ) const
inline

◆ gridPart()

template<class Operator , class LinearInverseOperator >
const GridPartType & FemScheme< Operator, LinearInverseOperator >::gridPart ( ) const
inline

◆ jacobian()

template<class Operator , class LinearInverseOperator >
template<class GridFunction , std::enable_if_t< std::is_same< decltype(std::declval< const DifferentiableOperatorType >().jacobian(std::declval< const GridFunction & >(), std::declval< JacobianOperatorType & >())), void >::value , int , i = 0>
void FemScheme< Operator, LinearInverseOperator >::jacobian ( const GridFunction &  ubar,
JacobianOperatorType linOp 
) const
inline

◆ model() [1/2]

template<class Operator , class LinearInverseOperator >
ModelType & FemScheme< Operator, LinearInverseOperator >::model ( )
inline

◆ model() [2/2]

template<class Operator , class LinearInverseOperator >
const ModelType & FemScheme< Operator, LinearInverseOperator >::model ( ) const
inline

◆ operator()() [1/2]

template<class Operator , class LinearInverseOperator >
void FemScheme< Operator, LinearInverseOperator >::operator() ( const DiscreteFunctionType arg,
DiscreteFunctionType dest 
) const
inline

◆ operator()() [2/2]

template<class Operator , class LinearInverseOperator >
template<class GridFunction >
auto FemScheme< Operator, LinearInverseOperator >::operator() ( const GridFunction &  arg,
DiscreteFunctionType dest 
) const -> Dune::void_t<decltype(std::declval<const Operator&>()(arg,dest))>
inline

◆ setConstraints() [1/3]

template<class Operator , class LinearInverseOperator >
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > FemScheme< Operator, LinearInverseOperator >::setConstraints ( const DiscreteFunctionType u,
DiscreteFunctionType v 
) const
inline

◆ setConstraints() [2/3]

template<class Operator , class LinearInverseOperator >
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > FemScheme< Operator, LinearInverseOperator >::setConstraints ( const RangeType value,
DiscreteFunctionType u 
) const
inline

◆ setConstraints() [3/3]

template<class Operator , class LinearInverseOperator >
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > FemScheme< Operator, LinearInverseOperator >::setConstraints ( DomainFunctionType u) const
inline

◆ setErrorMeasure()

template<class Operator , class LinearInverseOperator >
void FemScheme< Operator, LinearInverseOperator >::setErrorMeasure ( ErrorMeasureType errorMeasure) const
inline

◆ setModelConstraints() [1/2]

template<class Operator , class LinearInverseOperator >
template<class... Args>
void FemScheme< Operator, LinearInverseOperator >::setModelConstraints ( Args &&  ...) const
inlineprotected

◆ setModelConstraints() [2/2]

template<class Operator , class LinearInverseOperator >
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > FemScheme< Operator, LinearInverseOperator >::setModelConstraints ( DiscreteFunctionType u) const
inlineprotected

◆ setQuadratureOrders()

template<class Operator , class LinearInverseOperator >
template<typename O = DifferentiableOperatorType>
auto FemScheme< Operator, LinearInverseOperator >::setQuadratureOrders ( unsigned int  interior,
unsigned int  surface 
) -> Dune::void_t< decltype( std::declval< O >().setQuadratureOrders(0,0) ) >
inline

◆ setZeroConstraints() [1/2]

template<class Operator , class LinearInverseOperator >
template<class... Args>
void FemScheme< Operator, LinearInverseOperator >::setZeroConstraints ( Args &&  ...) const
inlineprotected

◆ setZeroConstraints() [2/2]

template<class Operator , class LinearInverseOperator >
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > FemScheme< Operator, LinearInverseOperator >::setZeroConstraints ( DiscreteFunctionType u) const
inlineprotected

◆ solve() [1/2]

template<class Operator , class LinearInverseOperator >
SolverInfo FemScheme< Operator, LinearInverseOperator >::solve ( const DiscreteFunctionType rhs,
DiscreteFunctionType solution 
) const
inline

◆ solve() [2/2]

template<class Operator , class LinearInverseOperator >
SolverInfo FemScheme< Operator, LinearInverseOperator >::solve ( DiscreteFunctionType solution) const
inline

◆ space()

template<class Operator , class LinearInverseOperator >
const DiscreteFunctionSpaceType & FemScheme< Operator, LinearInverseOperator >::space ( ) const
inline

◆ subConstraints()

template<class Operator , class LinearInverseOperator >
template<typename O = Operator>
std::enable_if_t< AddDirichletBC< O, DomainFunctionType >::value, void > FemScheme< Operator, LinearInverseOperator >::subConstraints ( const DiscreteFunctionType u,
DiscreteFunctionType v 
) const
inline

Member Data Documentation

◆ addDirichletBC

template<class Operator , class LinearInverseOperator >
constexpr bool FemScheme< Operator, LinearInverseOperator >::addDirichletBC = AddDirichletBC<Operator,DomainFunctionType>::value
staticconstexpr

◆ dimRange

template<class Operator , class LinearInverseOperator >
const int FemScheme< Operator, LinearInverseOperator >::dimRange = FunctionSpaceType::dimRange
static

◆ implicitOperator_

template<class Operator , class LinearInverseOperator >
DifferentiableOperatorType FemScheme< Operator, LinearInverseOperator >::implicitOperator_
protected

◆ invOp_

template<class Operator , class LinearInverseOperator >
InverseOperatorType FemScheme< Operator, LinearInverseOperator >::invOp_
mutableprotected

◆ space_

template<class Operator , class LinearInverseOperator >
const DiscreteFunctionSpaceType& FemScheme< Operator, LinearInverseOperator >::space_
protected

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