dune-fem 2.12-git
Loading...
Searching...
No Matches
Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity > Class Template Reference

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

Inheritance diagram for Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >:
Inheritance graph

Classes

class  BoundaryWrapper
 

Public Types

enum  Operation { set = 0 , sub = 1 , add = 2 }
 
typedef Model ModelType
 
typedef DiscreteFunctionSpace DiscreteFunctionSpaceType
 
typedef DiscreteFunctionSpaceType::DomainType DomainType
 
typedef DiscreteFunctionSpaceType::RangeType RangeType
 
typedef DiscreteFunctionSpaceType::JacobianRangeType JacobianRangeType
 
typedef DiscreteFunctionSpaceType::HessianRangeType HessianRangeType
 
typedef DiscreteFunctionSpaceType::GridPartType GridPartType
 type of grid partition
 
typedef DiscreteFunctionSpaceType::GridType GridType
 type of grid
 
typedef std::array< int, localBlockSizeDirichletBlock
 
typedef std::vector< DirichletBlockDirichletBlockVector
 

Public Member Functions

 DirichletConstraints (ModelType &model, const DiscreteFunctionSpaceType &space)
 
template<class DiscreteFunctionType >
void operator() (const DiscreteFunctionType &u, DiscreteFunctionType &w) const
 
template<class DiscreteFunctionType >
void operator() (const typename DiscreteFunctionType::RangeType &value, DiscreteFunctionType &w) const
 
template<class DiscreteFunctionType >
void operator() (DiscreteFunctionType &w, Operation op=Operation::set) const
 
template<class GridFunctionType , class DiscreteFunctionType , typename = std::enable_if_t< std::is_base_of<Dune::Fem::HasLocalFunction, GridFunctionType>::value >>
void operator() (const GridFunctionType &u, DiscreteFunctionType &w, Operation op=Operation::set) const
 
template<class LinearOperator >
void applyToOperator (LinearOperator &linearOperator) const
 
const DirichletBlockVectordirichletBlocks () const
 

Static Public Attributes

static const int localBlockSize = DiscreteFunctionSpaceType :: localBlockSize
 
static const int dimRange = DiscreteFunctionSpaceType::FunctionSpaceType::dimRange
 

Protected Member Functions

template<class LocalInterpolationType , class LocalFunctionType >
void dirichletDofTreatment (const LocalInterpolationType &interpolation, LocalFunctionType &wLocal) const
 set the Dirichlet points to exact values
 
template<class LocalInterpolationType , class GridLocalFunctionType , class LocalFunctionType >
void dirichletDofTreatment (const LocalInterpolationType &interpolation, const GridLocalFunctionType &uLocal, LocalFunctionType &wLocal, Operation op) const
 
void updateDirichletDofs () const
 
template<class EntityType >
bool searchEntityDirichletDofs (const EntityType &entity, ModelType &model) const
 

Protected Attributes

ModelTypemodel_
 
const DiscreteFunctionSpaceTypespace_
 
DirichletBlockVector dirichletBlocks_
 
bool hasDirichletDofs_
 
int sequence_
 

Member Typedef Documentation

◆ DirichletBlock

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef std::array<int,localBlockSize> Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::DirichletBlock

◆ DirichletBlockVector

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef std::vector< DirichletBlock > Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::DirichletBlockVector

◆ DiscreteFunctionSpaceType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpace Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::DiscreteFunctionSpaceType

◆ DomainType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpaceType::DomainType Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::DomainType

◆ GridPartType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpaceType::GridPartType Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::GridPartType

type of grid partition

◆ GridType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpaceType::GridType Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::GridType

type of grid

◆ HessianRangeType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpaceType::HessianRangeType Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::HessianRangeType

◆ JacobianRangeType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpaceType::JacobianRangeType Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::JacobianRangeType

◆ ModelType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef Model Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::ModelType

◆ RangeType

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
typedef DiscreteFunctionSpaceType::RangeType Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::RangeType

Member Enumeration Documentation

◆ Operation

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
enum Dune::DirichletConstraints::Operation
Enumerator
set 
sub 
add 

Constructor & Destructor Documentation

◆ DirichletConstraints()

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::DirichletConstraints ( ModelType model,
const DiscreteFunctionSpaceType space 
)
inline

Member Function Documentation

◆ applyToOperator()

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class LinearOperator >
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::applyToOperator ( LinearOperator linearOperator) const
inline

treatment of Dirichlet-DoFs for solution and right-hand-side

delete rows for dirichlet-DoFs, setting diagonal element to 1.

Note
A LagrangeDiscreteFunctionSpace is implicitly assumed.
Parameters
[out]linearOperatorlinear operator to be adjusted

◆ dirichletBlocks()

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
const DirichletBlockVector & Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::dirichletBlocks ( ) const
inline

◆ dirichletDofTreatment() [1/2]

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class LocalInterpolationType , class GridLocalFunctionType , class LocalFunctionType >
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::dirichletDofTreatment ( const LocalInterpolationType &  interpolation,
const GridLocalFunctionType &  uLocal,
LocalFunctionType &  wLocal,
Operation  op 
) const
inlineprotected

◆ dirichletDofTreatment() [2/2]

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class LocalInterpolationType , class LocalFunctionType >
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::dirichletDofTreatment ( const LocalInterpolationType &  interpolation,
LocalFunctionType &  wLocal 
) const
inlineprotected

set the Dirichlet points to exact values

◆ operator()() [1/4]

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class DiscreteFunctionType >
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::operator() ( const DiscreteFunctionType &  u,
DiscreteFunctionType &  w 
) const
inline

treatment of Dirichlet-const DoFs for given discrete function

Note
A LagrangeDiscreteFunctionSpace is implicitly assumed.
Parameters
[in]udiscrete function providing the constraints
[out]wdiscrete function the constraints are applied to

◆ operator()() [2/4]

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class GridFunctionType , class DiscreteFunctionType , typename = std::enable_if_t< std::is_base_of<Dune::Fem::HasLocalFunction, GridFunctionType>::value >>
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::operator() ( const GridFunctionType &  u,
DiscreteFunctionType &  w,
Operation  op = Operation::set 
) const
inline

◆ operator()() [3/4]

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class DiscreteFunctionType >
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::operator() ( const typename DiscreteFunctionType::RangeType &  value,
DiscreteFunctionType &  w 
) const
inline

treatment of Dirichlet-DoFs for given discrete function

Note
A LagrangeDiscreteFunctionSpace is implicitly assumed.
Parameters
[in]valuea range vector
[out]wdiscrete function the constraints are applied to

◆ operator()() [4/4]

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class DiscreteFunctionType >
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::operator() ( DiscreteFunctionType &  w,
Operation  op = Operation::set 
) const
inline

treatment of Dirichlet-DoFs for given discrete function

Note
A LagrangeDiscreteFunctionSpace is implicitly assumed.
Parameters
[out]wdiscrete function the constraints are applied to

◆ searchEntityDirichletDofs()

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
template<class EntityType >
bool Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::searchEntityDirichletDofs ( const EntityType &  entity,
ModelType model 
) const
inlineprotected

◆ updateDirichletDofs()

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
void Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::updateDirichletDofs ( ) const
inlineprotected

Member Data Documentation

◆ dimRange

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
const int Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::dimRange = DiscreteFunctionSpaceType::FunctionSpaceType::dimRange
static

◆ dirichletBlocks_

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
DirichletBlockVector Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::dirichletBlocks_
mutableprotected

◆ hasDirichletDofs_

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
bool Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::hasDirichletDofs_
mutableprotected

◆ localBlockSize

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
const int Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::localBlockSize = DiscreteFunctionSpaceType :: localBlockSize
static

◆ model_

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
ModelType& Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::model_
protected

◆ sequence_

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
int Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::sequence_
mutableprotected

◆ space_

template<class Model , class DiscreteFunctionSpace , bool useIdentity>
const DiscreteFunctionSpaceType& Dune::DirichletConstraints< Model, DiscreteFunctionSpace, useIdentity >::space_
protected

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