version 3.11-dev
Loading...
Searching...
No Matches
Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType > Class Template Reference

A class to create sub control volume and sub control volume face geometries per element for the order-3 hybrid CVFE scheme. More...

#include <dumux/discretization/pq3/geometryhelper.hh>

Description

template<class GridView, class ScvType, class ScvfType>
class Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >

Control volumes are defined only for vertex DOFs (same box dual mesh as PQ2). Edge, face, and element interior DOFs are non-CV DOFs. The key differences from PQ2:

  • dofIndex adds localKey.index() to handle multiple DOFs per edge/face/element entity
  • localDofPosition returns correct equidistant Lagrange node positions for order 3

Public Member Functions

 HybridPQ3GeometryHelper (const typename Element::Geometry &geometry)
ScvCornerStorage getScvCorners (unsigned int localScvIdx) const
 Create a vector with the scv corners.
Dune::GeometryType getScvGeometryType (unsigned int localScvIdx) const
ScvfCornerStorage getScvfCorners (unsigned int localScvfIdx) const
 Create a vector with the corners of sub control volume faces.
Dune::GeometryType getInteriorScvfGeometryType (unsigned int localScvfIdx) const
ScvfCornerStorage getBoundaryScvfCorners (unsigned int localFacetIndex, unsigned int indexInFacet) const
 Create the sub control volume face geometries on the boundary.
Dune::GeometryType getBoundaryScvfGeometryType (unsigned int localScvfIdx) const
template<int d = dimWorld, std::enable_if_t<(d==3), int > = 0>
GlobalPosition normal (const ScvfCornerStorage &p, const std::array< LocalIndexType, 2 > &scvPair)
template<int d = dimWorld, std::enable_if_t<(d==2), int > = 0>
GlobalPosition normal (const ScvfCornerStorage &p, const std::array< LocalIndexType, 2 > &scvPair)
const Element::Geometry & elementGeometry () const
 the wrapped element geometry
std::size_t numScv () const
 number of sub control volumes (one per vertex)
Scalar scvVolume (unsigned int localScvIdx, const ScvCornerStorage &p) const
 get scv volume
template<class LocalKey>
GlobalPosition dofPosition (const LocalKey &localKey) const
std::array< LocalIndexType, 2 > getScvPairForScvf (unsigned int localScvfIndex) const
std::array< LocalIndexType, 2 > getScvPairForBoundaryScvf (unsigned int localFacetIndex, unsigned int localIsScvfIndex) const
bool isOverlappingScvf (unsigned int localScvfIndex) const
bool isOverlappingBoundaryScvf (unsigned int localFacetIndex) const
bool isOverlappingScv (unsigned int localScvIndex) const

Static Public Member Functions

template<class Transformation>
static ScvCornerStorage getScvCorners (Dune::GeometryType type, Transformation &&trans, unsigned int localScvIdx)
 Create a vector with the scv corners.
template<class Transformation>
static ScvfCornerStorage getScvfCorners (Dune::GeometryType type, Transformation &&trans, unsigned int localScvfIdx)
 Create a vector with the corners of sub control volume faces.
static auto numInteriorScvf (Dune::GeometryType type)
 number of interior sub control volume faces
static auto numBoundaryScvf (Dune::GeometryType type, unsigned int localFacetIndex)
 number of boundary sub control volume faces for face localFacetIndex
template<class LocalKey>
static auto localDofOnIntersection (Dune::GeometryType type, unsigned int iIdx, const LocalKey &localKey)
 Local dof index related to a localDof, with index localDofIdx, on an intersection with index iIdx.
template<class DofMapper, class LocalKey, class GlobalIdSet>
static auto dofIndex (const DofMapper &dofMapper, const Element &element, const LocalKey &localKey, const GlobalIdSet &gidSet)
 Orientation-consistent global DOF index — delegates to PQ3LagrangeDofHelper.
template<class Geometry, class LocalKey>
static GlobalPosition dofPosition (const Geometry &geo, const LocalKey &localKey)
template<class LocalKey>
static Element::Geometry::LocalCoordinate localDofPosition (Dune::GeometryType type, const LocalKey &localKey)
 Local coordinate of a DOF for order-3 Lagrange basis.

Constructor & Destructor Documentation

◆ HybridPQ3GeometryHelper()

template<class GridView, class ScvType, class ScvfType>
Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::HybridPQ3GeometryHelper ( const typename Element::Geometry & geometry)
inline

Member Function Documentation

◆ dofIndex()

template<class GridView, class ScvType, class ScvfType>
template<class DofMapper, class LocalKey, class GlobalIdSet>
auto Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::dofIndex ( const DofMapper & dofMapper,
const Element & element,
const LocalKey & localKey,
const GlobalIdSet & gidSet )
inlinestatic

◆ dofPosition() [1/2]

template<class GridView, class ScvType, class ScvfType>
template<class Geometry, class LocalKey>
GlobalPosition Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::dofPosition ( const Geometry & geo,
const LocalKey & localKey )
inlinestatic

◆ dofPosition() [2/2]

template<class GridView, class ScvType, class ScvfType>
template<class LocalKey>
GlobalPosition Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::dofPosition ( const LocalKey & localKey) const
inline

◆ elementGeometry()

template<class GridView, class ScvType, class ScvfType>
const Element::Geometry & Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::elementGeometry ( ) const
inline

◆ getBoundaryScvfCorners()

template<class GridView, class ScvType, class ScvfType>
ScvfCornerStorage Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getBoundaryScvfCorners ( unsigned int localFacetIndex,
unsigned int indexInFacet ) const
inline

◆ getBoundaryScvfGeometryType()

template<class GridView, class ScvType, class ScvfType>
Dune::GeometryType Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getBoundaryScvfGeometryType ( unsigned int localScvfIdx) const
inline

◆ getInteriorScvfGeometryType()

template<class GridView, class ScvType, class ScvfType>
Dune::GeometryType Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getInteriorScvfGeometryType ( unsigned int localScvfIdx) const
inline

◆ getScvCorners() [1/2]

template<class GridView, class ScvType, class ScvfType>
template<class Transformation>
ScvCornerStorage Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvCorners ( Dune::GeometryType type,
Transformation && trans,
unsigned int localScvIdx )
inlinestatic

◆ getScvCorners() [2/2]

template<class GridView, class ScvType, class ScvfType>
ScvCornerStorage Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvCorners ( unsigned int localScvIdx) const
inline

◆ getScvfCorners() [1/2]

template<class GridView, class ScvType, class ScvfType>
template<class Transformation>
ScvfCornerStorage Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvfCorners ( Dune::GeometryType type,
Transformation && trans,
unsigned int localScvfIdx )
inlinestatic

◆ getScvfCorners() [2/2]

template<class GridView, class ScvType, class ScvfType>
ScvfCornerStorage Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvfCorners ( unsigned int localScvfIdx) const
inline

◆ getScvGeometryType()

template<class GridView, class ScvType, class ScvfType>
Dune::GeometryType Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvGeometryType ( unsigned int localScvIdx) const
inline

◆ getScvPairForBoundaryScvf()

template<class GridView, class ScvType, class ScvfType>
std::array< LocalIndexType, 2 > Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvPairForBoundaryScvf ( unsigned int localFacetIndex,
unsigned int localIsScvfIndex ) const
inline

◆ getScvPairForScvf()

template<class GridView, class ScvType, class ScvfType>
std::array< LocalIndexType, 2 > Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::getScvPairForScvf ( unsigned int localScvfIndex) const
inline

◆ isOverlappingBoundaryScvf()

template<class GridView, class ScvType, class ScvfType>
bool Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::isOverlappingBoundaryScvf ( unsigned int localFacetIndex) const
inline

◆ isOverlappingScv()

template<class GridView, class ScvType, class ScvfType>
bool Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::isOverlappingScv ( unsigned int localScvIndex) const
inline

◆ isOverlappingScvf()

template<class GridView, class ScvType, class ScvfType>
bool Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::isOverlappingScvf ( unsigned int localScvfIndex) const
inline

◆ localDofOnIntersection()

template<class GridView, class ScvType, class ScvfType>
template<class LocalKey>
auto Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::localDofOnIntersection ( Dune::GeometryType type,
unsigned int iIdx,
const LocalKey & localKey )
inlinestatic

◆ localDofPosition()

template<class GridView, class ScvType, class ScvfType>
template<class LocalKey>
Element::Geometry::LocalCoordinate Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::localDofPosition ( Dune::GeometryType type,
const LocalKey & localKey )
inlinestatic

◆ normal() [1/2]

template<class GridView, class ScvType, class ScvfType>
template<int d = dimWorld, std::enable_if_t<(d==2), int > = 0>
GlobalPosition Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::normal ( const ScvfCornerStorage & p,
const std::array< LocalIndexType, 2 > & scvPair )
inline

◆ normal() [2/2]

template<class GridView, class ScvType, class ScvfType>
template<int d = dimWorld, std::enable_if_t<(d==3), int > = 0>
GlobalPosition Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::normal ( const ScvfCornerStorage & p,
const std::array< LocalIndexType, 2 > & scvPair )
inline

◆ numBoundaryScvf()

template<class GridView, class ScvType, class ScvfType>
auto Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::numBoundaryScvf ( Dune::GeometryType type,
unsigned int localFacetIndex )
inlinestatic

◆ numInteriorScvf()

template<class GridView, class ScvType, class ScvfType>
auto Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::numInteriorScvf ( Dune::GeometryType type)
inlinestatic

◆ numScv()

template<class GridView, class ScvType, class ScvfType>
std::size_t Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::numScv ( ) const
inline

◆ scvVolume()

template<class GridView, class ScvType, class ScvfType>
Scalar Dumux::HybridPQ3GeometryHelper< GridView, ScvType, ScvfType >::scvVolume ( unsigned int localScvIdx,
const ScvCornerStorage & p ) const
inline

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