DUNE PDELab (unstable)
lagrangebasis.hh
257 constexpr void computeTriangleOrientation(const auto& vertexIndices, const auto& re, int subEntity)
264 constexpr uint32_t edgeOrientationsToTriangleOrientation = 0b0101'0001'0011'0100'0010'0011'0110'0000;
284 constexpr void computeQuadrilateralOrientation(const auto& vertexIndices, const auto& re, auto subEntity)
311 constexpr uint32_t edgeOrientationsToMinVertex = 0b11'11'01'01'11'00'00'00'10'00'00'01'10'00'10'00;
361 FaceOrientations(const Dune::GeometryType& geometryType, const VertexIds& vertexIds, const Dune::index_constant<codims>&... codimensions)
378 return Dune::transformedRangeView(re.subEntities(faceIndex, faceCodim, dim), [&](auto localVertexIndex) {
619 auto vertexIds = Dune::transformedRangeView(re.subEntities(0,0,dim), [&](auto localVertexIndex) {
649 unsigned int permuteFaceDOF(unsigned int subEntity, unsigned int codim, unsigned int index, const FaceOrientations<dim>& orientations) const
688 unsigned int permuteFaceDOF(const Dune::LocalKey& localKey, const FaceOrientations<dim>& orientations) const
696 Std::mdarray<FaceIndexType, Std::extents<std::size_t, 16, std::dynamic_extent>> facetFlipTable_;
764 using FaceDOFPermutation = Experimental::LagrangeFaceDOFPermutation<typename GV::Grid::GlobalIdSet>;
792 DUNE_THROW(RangeError, "Polynomial order >2 is not supported for grids containing pyramid elements.");
794 DUNE_THROW(RangeError, "Polynomial order >2 is not supported for grids containing prism elements.");
796 DUNE_THROW(RangeError, "Polynomial order >" << FaceDOFPermutation::maxOrder3d << " is not supported in 3d");
813 DUNE_THROW(RangeError, "Polynomial order >2 is not supported for grids containing pyramid elements.");
815 DUNE_THROW(RangeError, "Polynomial order >2 is not supported for grids containing prism elements.");
855 auto globalIndex = mapper_.gridView().indexSet().subIndex(element, localKey.subEntity(), localKey.codim());
930 constexpr auto type = Dune::GeometryType(Dune::Capabilities::hasSingleGeometryType<typename GV::Grid>::topologyId, GV::dimension);
932 return Dune::MetaType<SingleLocalFiniteElementCache<Dune::LagrangeSimplexLocalFiniteElement<D,R,dim,k>>>{};
934 return Dune::MetaType<SingleLocalFiniteElementCache<Dune::LagrangeCubeLocalFiniteElement<D,R,dim,k>>>{};
936 return Dune::MetaType<SingleLocalFiniteElementCache<Dune::LagrangePrismLocalFiniteElement<D,R,k>>>{};
938 return Dune::MetaType<SingleLocalFiniteElementCache<Dune::LagrangePyramidLocalFiniteElement<D,R,k>>>{};
Global basis for given pre-basis.
Definition: defaultglobalbasis.hh:53
A class encoding the orientation of the subentities of an entity.
Definition: lagrangebasis.hh:209
FaceOrientations()=default
Default construct FaceOrientations with index 0.
std::size_t faceOrientationIndex(std::size_t subEntity, std::size_t codim) const
Return index of the orientation for the given face.
Definition: lagrangebasis.hh:403
FaceOrientations(const Dune::GeometryType &geometryType, const VertexIds &vertexIds, const Dune::index_constant< codims > &... codimensions)
Construct FaceOrientations for given vertex ids.
Definition: lagrangebasis.hh:361
A class for permuting Lagrange DOFs of arbitrary order for dimensions 1,2,3.
Definition: lagrangebasis.hh:432
static constexpr unsigned int maxOrder3d
Maximal supported polynomial order.
Definition: lagrangebasis.hh:579
LagrangeFaceDOFPermutation(const IndexIdSet &indexSet, int order)
Definition: lagrangebasis.hh:585
unsigned int permuteFaceDOF(unsigned int subEntity, unsigned int codim, unsigned int index, const FaceOrientations< dim > &orientations) const
Compute permuted index of a face DOF.
Definition: lagrangebasis.hh:649
FaceOrientations< dim > computeFaceOrientations(const Element &element) const
Compute FaceOrientations for grid elements.
Definition: lagrangebasis.hh:616
unsigned int permuteFaceDOF(const Dune::LocalKey &localKey, const FaceOrientations< dim > &orientations) const
Compute permuted index of a face DOF.
Definition: lagrangebasis.hh:688
A pre-basis for a PQ-lagrange bases with given order.
Definition: lagrangebasis.hh:743
LagrangePreBasis(const GridView &gv, unsigned int runTimeOrder)
Constructor for a given grid view object and run-time order.
Definition: lagrangebasis.hh:783
LagrangeNode< GV, k, R > Node
Template mapping root tree path to type of created tree node.
Definition: lagrangebasis.hh:775
std::size_t size_type
Type used for indices and size information.
Definition: lagrangebasis.hh:772
void initializeIndices()
Initialize the global indices.
Definition: lagrangebasis.hh:800
size_type dimension() const
Get the total dimension of the space spanned by this basis.
Definition: lagrangebasis.hh:830
LagrangePreBasis(const GridView &gv)
Constructor for a given grid view object with compile-time order.
Definition: lagrangebasis.hh:778
void update(const GridView &gv)
Update the stored grid view, to be called if the grid has changed.
Definition: lagrangebasis.hh:810
GV GridView
The grid view that the FE basis is defined on.
Definition: lagrangebasis.hh:769
const GridView & gridView() const
Obtain the grid view that the basis is defined on.
Definition: lagrangebasis.hh:804
Node makeNode() const
Create tree node.
Definition: lagrangebasis.hh:824
unsigned int order() const
Polynomial order used in the local Lagrange finite-elements.
Definition: lagrangebasis.hh:876
size_type maxNodeSize() const
Get the maximal number of DOFs associated to node for any element.
Definition: lagrangebasis.hh:836
A generic MixIn class for PreBasis.
Definition: leafprebasismixin.hh:36
Unique label for each type of entities that can occur in DUNE grids.
Definition: type.hh:114
constexpr bool isPyramid() const
Return true if entity is a pyramid.
Definition: type.hh:304
constexpr bool isPrism() const
Return true if entity is a prism.
Definition: type.hh:309
constexpr unsigned int dim() const
Return dimension of the type.
Definition: type.hh:360
constexpr bool isCube() const
Return true if entity is a cube of any dimension.
Definition: type.hh:324
constexpr bool isSimplex() const
Return true if entity is a simplex of any dimension.
Definition: type.hh:319
Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
Definition: lagrangecube.hh:805
Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
Definition: lagrangeprism.hh:728
Lagrange finite element for 3d pyramids with compile-time polynomial order.
Definition: lagrangepyramid.hh:903
Lagrange finite element for simplices with arbitrary compile-time dimension and static or dynamic pol...
Definition: lagrangesimplex.hh:990
constexpr unsigned int index() const noexcept
Return offset within subentity.
Definition: localkey.hh:70
constexpr unsigned int codim() const noexcept
Return codim of associated entity.
Definition: localkey.hh:63
constexpr unsigned int subEntity() const noexcept
Return number of associated subentity.
Definition: localkey.hh:56
A set of traits classes to store static information about grid implementation.
A few common exception classes.
auto lagrange()
Create a pre-basis factory that can create a Lagrange pre-basis.
Definition: lagrangebasis.hh:1007
const IndexSet & indexSet() const
obtain the index set
Definition: gridview.hh:177
constexpr GeometryType prism
GeometryType representing a 3D prism.
Definition: type.hh:528
constexpr GeometryType pyramid
GeometryType representing a 3D pyramid.
Definition: type.hh:522
constexpr auto max
Function object that returns the greater of the given values.
Definition: hybridutilities.hh:489
std::integral_constant< std::size_t, i > index_constant
An index constant with value i.
Definition: indices.hh:29
std::function< size_t(GeometryType, int)> MCMGLayout
layout function for MultipleCodimMultipleGeomTypeMapper
Definition: mcmgmapper.hh:64
auto transformedRangeView(R &&range, F &&f)
Create a TransformedRangeView.
Definition: rangeutilities.hh:669
static constexpr IntegralRange< std::decay_t< T > > range(T &&from, U &&to) noexcept
free standing function for setting up a range based for loop over an integer range for (auto i: range...
Definition: rangeutilities.hh:293
Some useful basic math stuff.
Mapper for multiple codim and multiple geometry types.
Namespace with predefined compile time indices for the range [0,19].
Definition: indices.hh:50
constexpr std::integral_constant< std::size_t, sizeof...(II)> size(std::integer_sequence< T, II... >)
Return the size of the sequence.
Definition: integersequence.hh:75
static constexpr T binomial(const T &n, const T &k) noexcept
calculate the binomial coefficient n over k as a constexpr
Definition: math.hh:113
constexpr Base power(Base m, Exponent p)
Power method for integer exponents.
Definition: math.hh:75
constexpr auto get(std::integer_sequence< T, II... >, std::integral_constant< std::size_t, pos >={})
Return the entry at position pos of the given sequence.
Definition: integersequence.hh:22
STL namespace.
Utilities for reduction like operations on ranges.
Specialize with 'true' for if the codimension 0 entity of the grid has only one possible geometry typ...
Definition: capabilities.hh:27
A unique label for each type of element that can occur in a grid.
|
Legal Statements / Impressum |
Hosted by TU Dresden & Uni Heidelberg |
generated with Hugo v0.111.3
(Jun 10, 22:32, 2026)