dune-fem 2.12-git
Loading...
Searching...
No Matches
Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet > Class Template Reference

#include <dune/fem/space/basisfunctionset/default.hh>

Inheritance diagram for Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >:
Inheritance graph

Public Types

typedef BaseType::EntityType EntityType
 entity type
 
typedef BaseType::Geometry Geometry
 geometry
 
typedef Geometry::ctype ctype
 type of coordinate field
 
typedef BaseType::ShapeFunctionSetType ShapeFunctionSetType
 shape function set type
 
typedef ToNewDimDomainFunctionSpace< LocalFunctionSpaceType, Geometry::coorddimension >::Type FunctionSpaceType
 type of function space
 
typedef FunctionSpaceType::RangeType RangeType
 range type
 
typedef FunctionSpaceType::DomainType DomainType
 domain type
 
typedef FunctionSpaceType::JacobianRangeType JacobianRangeType
 jacobian range type
 
typedef FunctionSpaceType::HessianRangeType HessianRangeType
 hessian range type
 
typedef FunctionSpaceType::ScalarFunctionSpaceType ScalarFunctionSpaceType
 
typedef ScalarFunctionSpaceType::RangeType ScalarRangeType
 
typedef ScalarFunctionSpaceType::JacobianRangeType ScalarJacobianRangeType
 
typedef std::decay_t< decltype(Dune::ReferenceElements< ctype, Geometry::coorddimension >::general(std::declval< const Dune::GeometryType & >())) > ReferenceElementType
 type of reference element
 

Public Member Functions

 DefaultBasisFunctionSet ()
 constructor
 
 DefaultBasisFunctionSet (const EntityType &entity, const ShapeFunctionSet &shapeFunctionSet=ShapeFunctionSet())
 constructor
 
 DefaultBasisFunctionSet (const DefaultBasisFunctionSet &other)=default
 
DefaultBasisFunctionSetoperator= (const DefaultBasisFunctionSet &other)=default
 
template<class QuadratureType , class Vector , class DofVector >
void axpy (const QuadratureType &quad, const Vector &values, DofVector &dofs) const
 evaluate all basis function and multiply with given values and add to dofs
 
template<class QuadratureType , class VectorA , class VectorB , class DofVector >
void axpy (const QuadratureType &quad, const VectorA &valuesA, const VectorB &valuesB, DofVector &dofs) const
 evaluate all basis function and multiply with given values and add to dofs
 
template<class Point , class DofVector >
void axpy (const Point &x, const RangeType &valueFactor, DofVector &dofs) const
 evaluate all basis function and multiply with given values and add to dofs
 
template<class Point , class DofVector >
void axpy (const Point &x, const JacobianRangeType &jacobianFactor, DofVector &dofs) const
 evaluate all derivatives of all basis function and multiply with given values and add to dofs
 
template<class Point , class DofVector >
void axpy (const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor, DofVector &dofs) const
 evaluate all basis function and derivatives and multiply with given values and add to dofs
 
template<class Point , class DofVector >
void axpy (const Point &x, const HessianRangeType &hessianFactor, DofVector &dofs) const
 Add H:D^2phi to each dof.
 
template<class QuadratureType , class DofVector , class RangeArray >
void evaluateAll (const QuadratureType &quad, const DofVector &dofs, RangeArray &ranges) const
 
template<class Point , class DofVector >
void evaluateAll (const Point &x, const DofVector &dofs, RangeType &value) const
 
template<class Point , class RangeArray >
void evaluateAll (const Point &x, RangeArray &values) const
 
template<class QuadratureType , class DofVector , class JacobianArray >
void jacobianAll (const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians) const
 
template<class Point , class DofVector >
void jacobianAll (const Point &x, const DofVector &dofs, JacobianRangeType &jacobian) const
 
template<class Point , class JacobianRangeArray >
void jacobianAll (const Point &x, JacobianRangeArray &jacobians) const
 
template<class QuadratureType , class DofVector , class HessianArray >
void hessianAll (const QuadratureType &quad, const DofVector &dofs, HessianArray &hessians) const
 
template<class Point , class DofVector >
void hessianAll (const Point &x, const DofVector &dofs, HessianRangeType &hessian) const
 
template<class Point , class HessianRangeArray >
void hessianAll (const Point &x, HessianRangeArray &hessians) const
 
const ShapeFunctionSetTypeshapeFunctionSet () const
 return shape function set
 
int order () const
 return order of basis function set
 
std::size_t size () const
 return size of basis function set
 
const Entityentity () const
 return entity
 
bool valid () const
 return true if entity pointer is set
 
const Geometrygeometry () const
 return geometry
 
Dune::GeometryType type () const
 return geometry type
 
const ReferenceElementTypereferenceElement () const
 return reference element
 
void bind (const EntityType &entity)
 set new entity object and geometry if enabled
 
void unbind ()
 release entity and geometry object
 

Static Public Attributes

static const int pointSetId = detail::SelectPointSetId< ShapeFunctionSetType >::value
 
static constexpr bool codegenShapeFunctionSet = detail::IsCodegenShapeFunctionSet< ShapeFunctionSetType >::value
 

Protected Types

typedef ShapeFunctionSetType::FunctionSpaceType LocalFunctionSpaceType
 
typedef LocalFunctionSpaceType::JacobianRangeType LocalJacobianRangeType
 
typedef LocalFunctionSpaceType::HessianRangeType LocalHessianRangeType
 
typedef LocalFunctionSpaceType::RangeFieldType RangeFieldType
 
typedef std::optional< EntityTypeEntityStorageType
 
typedef std::conditional< storeGeometry, std::optional< Geometry >, Empty >::type GeometryStorageType
 

Protected Member Functions

template<class QuadratureType , class RangeArray , class DofVector >
void axpyImpl (const QuadratureType &quad, const RangeArray &rangeFactors, DofVector &dofs, const RangeType &) const
 evaluate all basis function and multiply with given values and add to dofs
 
template<class QuadratureType , class JacobianArray , class DofVector >
void axpyImpl (const QuadratureType &quad, const JacobianArray &jacobianFactors, DofVector &dofs, const JacobianRangeType &) const
 evaluate all basis function and multiply with given values and add to dofs
 
template<class QuadratureType , class HessianArray , class DofVector >
void axpyImpl (const QuadratureType &quad, const HessianArray &hessianFactors, DofVector &dofs, const HessianRangeType &) const
 evaluate all basis function and multiply with given values and add to dofs
 
template<class QuadratureType >
const auto & rangeCache (const QuadratureType &quad) const
 
template<class QuadratureType >
const auto & jacobianCache (const QuadratureType &quad) const
 
void copyGeometry (const EntityGeometryStorageImpl &other)
 

Protected Attributes

ShapeFunctionSetType shapeFunctionSet_
 
EntityStorageType entity_
 
GeometryStorageType geometry_
 

Detailed Description

template<class Entity, class ShapeFunctionSet>
class Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >
   \brief implementation of a basis function set for given entity

   \tparam  Entity            entity type
   \tparam  ShapeFunctionSet  shape function set

   \note ShapeFunctionSet must be a copyable object. For most
         non-trivial implementations, you may want to use a
         proxy, see file
<dune/fem/space/shapefunctionset/proxy.hh>

Member Typedef Documentation

◆ ctype

type of coordinate field

◆ DomainType

template<class Entity , class ShapeFunctionSet >
typedef FunctionSpaceType::DomainType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::DomainType

domain type

◆ EntityStorageType

template<class Entity , bool storeGeometry = true>
typedef std::optional< EntityType > Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::EntityStorageType
protectedinherited

◆ EntityType

entity type

◆ FunctionSpaceType

◆ Geometry

◆ GeometryStorageType

template<class Entity , bool storeGeometry = true>
typedef std::conditional<storeGeometry,std::optional<Geometry>,Empty>::type Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::GeometryStorageType
protectedinherited

◆ HessianRangeType

template<class Entity , class ShapeFunctionSet >
typedef FunctionSpaceType::HessianRangeType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::HessianRangeType

hessian range type

◆ JacobianRangeType

template<class Entity , class ShapeFunctionSet >
typedef FunctionSpaceType::JacobianRangeType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::JacobianRangeType

jacobian range type

◆ LocalFunctionSpaceType

template<class Entity , class ShapeFunctionSet >
typedef ShapeFunctionSetType::FunctionSpaceType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::LocalFunctionSpaceType
protected

◆ LocalHessianRangeType

◆ LocalJacobianRangeType

◆ RangeFieldType

◆ RangeType

template<class Entity , class ShapeFunctionSet >
typedef FunctionSpaceType::RangeType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::RangeType

range type

◆ ReferenceElementType

template<class Entity , class ShapeFunctionSet >
typedef std::decay_t< decltype( Dune::ReferenceElements< ctype, Geometry::coorddimension >::general( std::declval< const Dune::GeometryType & >() ) ) > Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::ReferenceElementType

type of reference element

◆ ScalarFunctionSpaceType

template<class Entity , class ShapeFunctionSet >
typedef FunctionSpaceType::ScalarFunctionSpaceType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::ScalarFunctionSpaceType

◆ ScalarJacobianRangeType

template<class Entity , class ShapeFunctionSet >
typedef ScalarFunctionSpaceType::JacobianRangeType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::ScalarJacobianRangeType

◆ ScalarRangeType

template<class Entity , class ShapeFunctionSet >
typedef ScalarFunctionSpaceType::RangeType Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::ScalarRangeType

◆ ShapeFunctionSetType

shape function set type

Constructor & Destructor Documentation

◆ DefaultBasisFunctionSet() [1/3]

template<class Entity , class ShapeFunctionSet >
Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::DefaultBasisFunctionSet ( )
inline

constructor

◆ DefaultBasisFunctionSet() [2/3]

template<class Entity , class ShapeFunctionSet >
Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::DefaultBasisFunctionSet ( const EntityType entity,
const ShapeFunctionSet shapeFunctionSet = ShapeFunctionSet() 
)
inlineexplicit

constructor

◆ DefaultBasisFunctionSet() [3/3]

template<class Entity , class ShapeFunctionSet >
Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::DefaultBasisFunctionSet ( const DefaultBasisFunctionSet< Entity, ShapeFunctionSet > &  other)
default

Member Function Documentation

◆ axpy() [1/6]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpy ( const Point &  x,
const HessianRangeType hessianFactor,
DofVector &  dofs 
) const
inline

Add H:D^2phi to each dof.

◆ axpy() [2/6]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpy ( const Point &  x,
const JacobianRangeType jacobianFactor,
DofVector &  dofs 
) const
inline

evaluate all derivatives of all basis function and multiply with given values and add to dofs

◆ axpy() [3/6]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpy ( const Point &  x,
const RangeType valueFactor,
const JacobianRangeType jacobianFactor,
DofVector &  dofs 
) const
inline

evaluate all basis function and derivatives and multiply with given values and add to dofs

◆ axpy() [4/6]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpy ( const Point &  x,
const RangeType valueFactor,
DofVector &  dofs 
) const
inline

evaluate all basis function and multiply with given values and add to dofs

◆ axpy() [5/6]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class Vector , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpy ( const QuadratureType &  quad,
const Vector &  values,
DofVector &  dofs 
) const
inline

evaluate all basis function and multiply with given values and add to dofs

◆ axpy() [6/6]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class VectorA , class VectorB , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpy ( const QuadratureType &  quad,
const VectorA &  valuesA,
const VectorB &  valuesB,
DofVector &  dofs 
) const
inline

evaluate all basis function and multiply with given values and add to dofs

Note
valuesA and valuesB can be vectors of RangeType or JacobianRangeType

◆ axpyImpl() [1/3]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class HessianArray , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpyImpl ( const QuadratureType &  quad,
const HessianArray &  hessianFactors,
DofVector &  dofs,
const HessianRangeType  
) const
inlineprotected

evaluate all basis function and multiply with given values and add to dofs

◆ axpyImpl() [2/3]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class JacobianArray , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpyImpl ( const QuadratureType &  quad,
const JacobianArray &  jacobianFactors,
DofVector &  dofs,
const JacobianRangeType  
) const
inlineprotected

evaluate all basis function and multiply with given values and add to dofs

◆ axpyImpl() [3/3]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class RangeArray , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::axpyImpl ( const QuadratureType &  quad,
const RangeArray &  rangeFactors,
DofVector &  dofs,
const RangeType  
) const
inlineprotected

evaluate all basis function and multiply with given values and add to dofs

◆ bind()

template<class Entity , bool storeGeometry = true>
void Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::bind ( const EntityType entity)
inlineinherited

set new entity object and geometry if enabled

◆ copyGeometry()

template<class Entity , bool storeGeometry = true>
void Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::copyGeometry ( const EntityGeometryStorageImpl< Entity, storeGeometry > &  other)
inlineprotectedinherited

◆ entity()

template<class Entity , bool storeGeometry = true>
const Entity & Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::entity ( ) const
inlineinherited

return entity

◆ evaluateAll() [1/3]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::evaluateAll ( const Point &  x,
const DofVector &  dofs,
RangeType value 
) const
inline
Todo:
please doc me

◆ evaluateAll() [2/3]

template<class Entity , class ShapeFunctionSet >
template<class Point , class RangeArray >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::evaluateAll ( const Point &  x,
RangeArray &  values 
) const
inline
Todo:
please doc me

◆ evaluateAll() [3/3]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class DofVector , class RangeArray >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::evaluateAll ( const QuadratureType &  quad,
const DofVector &  dofs,
RangeArray &  ranges 
) const
inline

◆ geometry()

template<class Entity , bool storeGeometry = true>
const Geometry & Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::geometry ( ) const
inlineinherited

return geometry

◆ hessianAll() [1/3]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::hessianAll ( const Point &  x,
const DofVector &  dofs,
HessianRangeType hessian 
) const
inline
Todo:
please doc me

◆ hessianAll() [2/3]

template<class Entity , class ShapeFunctionSet >
template<class Point , class HessianRangeArray >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::hessianAll ( const Point &  x,
HessianRangeArray &  hessians 
) const
inline
Todo:
please doc me

◆ hessianAll() [3/3]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class DofVector , class HessianArray >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::hessianAll ( const QuadratureType &  quad,
const DofVector &  dofs,
HessianArray &  hessians 
) const
inline
Todo:
please doc me

◆ jacobianAll() [1/3]

template<class Entity , class ShapeFunctionSet >
template<class Point , class DofVector >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::jacobianAll ( const Point &  x,
const DofVector &  dofs,
JacobianRangeType jacobian 
) const
inline
Todo:
please doc me

◆ jacobianAll() [2/3]

template<class Entity , class ShapeFunctionSet >
template<class Point , class JacobianRangeArray >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::jacobianAll ( const Point &  x,
JacobianRangeArray &  jacobians 
) const
inline
Todo:
please doc me

◆ jacobianAll() [3/3]

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType , class DofVector , class JacobianArray >
void Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::jacobianAll ( const QuadratureType &  quad,
const DofVector &  dofs,
JacobianArray &  jacobians 
) const
inline

◆ jacobianCache()

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType >
const auto & Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::jacobianCache ( const QuadratureType &  quad) const
inlineprotected

◆ operator=()

◆ order()

template<class Entity , class ShapeFunctionSet >
int Dune::Fem::BasisFunctionSetStorage< Entity, ShapeFunctionSet >::order ( ) const
inlineinherited

return order of basis function set

◆ rangeCache()

template<class Entity , class ShapeFunctionSet >
template<class QuadratureType >
const auto & Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::rangeCache ( const QuadratureType &  quad) const
inlineprotected

◆ referenceElement()

template<class Entity , bool storeGeometry = true>
const ReferenceElementType & Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::referenceElement ( ) const
inlineinherited

return reference element

◆ shapeFunctionSet()

template<class Entity , class ShapeFunctionSet >
const ShapeFunctionSetType & Dune::Fem::BasisFunctionSetStorage< Entity, ShapeFunctionSet >::shapeFunctionSet ( ) const
inlineinherited

return shape function set

◆ size()

template<class Entity , class ShapeFunctionSet >
std::size_t Dune::Fem::BasisFunctionSetStorage< Entity, ShapeFunctionSet >::size ( ) const
inlineinherited

return size of basis function set

◆ type()

template<class Entity , bool storeGeometry = true>
Dune::GeometryType Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::type ( ) const
inlineinherited

return geometry type

◆ unbind()

template<class Entity , bool storeGeometry = true>
void Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::unbind ( )
inlineinherited

release entity and geometry object

◆ valid()

template<class Entity , bool storeGeometry = true>
bool Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::valid ( ) const
inlineinherited

return true if entity pointer is set

Member Data Documentation

◆ codegenShapeFunctionSet

template<class Entity , class ShapeFunctionSet >
constexpr bool Dune::Fem::BasisFunctionSetStorage< Entity, ShapeFunctionSet >::codegenShapeFunctionSet = detail::IsCodegenShapeFunctionSet< ShapeFunctionSetType >::value
staticconstexprinherited

◆ entity_

template<class Entity , bool storeGeometry = true>
EntityStorageType Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::entity_
protectedinherited

◆ geometry_

template<class Entity , bool storeGeometry = true>
GeometryStorageType Dune::Fem::EntityGeometryStorageImpl< Entity, storeGeometry >::geometry_
protectedinherited

◆ pointSetId

template<class Entity , class ShapeFunctionSet >
const int Dune::Fem::DefaultBasisFunctionSet< Entity, ShapeFunctionSet >::pointSetId = detail::SelectPointSetId< ShapeFunctionSetType >::value
static

◆ shapeFunctionSet_

template<class Entity , class ShapeFunctionSet >
ShapeFunctionSetType Dune::Fem::BasisFunctionSetStorage< Entity, ShapeFunctionSet >::shapeFunctionSet_
protectedinherited

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