version 3.9-dev
Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T > Class Template Reference

Class for a sub control volume face in the staggered method, i.e a part of the boundary of a sub control volume we compute fluxes on. This is a specialization for free flow models.

#include <dumux/discretization/staggered/freeflow/subcontrolvolumeface.hh>

Inheritance diagram for Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >:

Public Types

using GlobalPosition = typename T::GlobalPosition
 
using Traits = T
 State the traits public and thus export all types. More...
 

Public Member Functions

 FreeFlowStaggeredSubControlVolumeFace ()=default
 
template<class Intersection >
 FreeFlowStaggeredSubControlVolumeFace (const Intersection &is, const typename Intersection::Geometry &isGeometry, GridIndexType scvfIndex, const std::vector< GridIndexType > &scvIndices, const typename T::GeometryHelper &geometryHelper)
 Constructor with intersection. More...
 
const GlobalPositioncenter () const
 The center of the sub control volume face. More...
 
const GlobalPositiondofPosition () const
 The position of the dof living on the face. More...
 
const GlobalPositionipGlobal () const
 The integration point for flux evaluations in global coordinates. More...
 
Scalar area () const
 The area of the sub control volume face. More...
 
bool boundary () const
 Returns boolean if the sub control volume face is on the boundary. More...
 
const GlobalPositionunitOuterNormal () const
 The unit outer normal vector. More...
 
GridIndexType insideScvIdx () const
 Index of the inside sub control volume for spatial param evaluation. More...
 
GridIndexType outsideScvIdx () const
 index of the outside sub control volume for spatial param evaluation More...
 
GridIndexType index () const
 The global index of this sub control volume face. More...
 
LocalIndexType localFaceIdx () const
 The local index of this sub control volume face. More...
 
unsigned int directionIndex () const
 Returns the direction index of the facet (0 = x, 1 = y, 2 = z) More...
 
bool normalInPosCoordDir () const
 Returns whether the unitNormal of the face points in positive coordinate direction. More...
 
int directionSign () const
 Returns the sign of the unit outer normal's vector. More...
 
const PairData & pairData (const int idx) const
 Returns the data for one sub face. More...
 
const std::array< PairData, numPairs > & pairData () const
 Return an array of all pair data. More...
 
const AxisData & axisData () const
 Return an array of all pair data. More...
 
bool isGhostFace () const
 Returns true if the face is a ghost face. More...
 
Scalar faceLength (const int localSubFaceIdx) const
 Returns the length of the face in a certain direction (adaptation of area() for 3d) More...
 
bool hasParallelNeighbor (const int localSubFaceIdx, const int parallelDegreeIdx) const
 Check if the face has a parallel neighbor. More...
 
bool hasHalfParallelNeighbor (const int localSubFaceIdx) const
 Check if the face has a half parallel neighbor. More...
 
bool hasCornerParallelNeighbor (const int localSubFaceIdx) const
 Check if the face has a corner parallel neighbor. More...
 
bool hasOuterLateral (const int localSubFaceIdx) const
 Check if the face has an outer normal neighbor. More...
 
template<bool enable = useHigherOrder, std::enable_if_t< enable, int > = 0>
bool hasBackwardNeighbor (const int backwardIdx) const
 Check if the face has a backward neighbor. More...
 
template<bool enable = useHigherOrder, std::enable_if_t< enable, int > = 0>
bool hasForwardNeighbor (const int forwardIdx) const
 Check if the face has a forward neighbor. More...
 
GridIndexType dofIndex () const
 Returns the dof of the face. More...
 
GridIndexType dofIndexOpposingFace () const
 Returns the dof of the opposing face. More...
 
GridIndexType dofIndexForwardFace () const
 Returns the dof the first forward face. More...
 
GridIndexType dofIndexBackwardFace () const
 Returns the dof of the first backward face. More...
 
Scalar selfToOppositeDistance () const
 Returns the distance between the face and the opposite one. More...
 
Scalar parallelDofsDistance (const int localSubFaceIdx, const int parallelDegreeIdx) const
 Returns the distance between the parallel dofs. More...
 
void setCenter (const GlobalPosition &center)
 set the center to a different position More...
 
void setBoundary (bool boundaryFlag)
 set the boundary flag More...
 
void setIsGhostFace (bool isGhostFaceFlag)
 set the ghost face flag More...
 
GridIndexType outsideScvIdx (int i=0) const
 

Static Public Attributes

static constexpr int numCornersPerFace = 2 * (dim - 1)
 

Member Typedef Documentation

◆ GlobalPosition

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
using Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::GlobalPosition = typename T::GlobalPosition

◆ Traits

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
using Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::Traits = T

Constructor & Destructor Documentation

◆ FreeFlowStaggeredSubControlVolumeFace() [1/2]

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::FreeFlowStaggeredSubControlVolumeFace ( )
default

◆ FreeFlowStaggeredSubControlVolumeFace() [2/2]

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
template<class Intersection >
Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::FreeFlowStaggeredSubControlVolumeFace ( const Intersection &  is,
const typename Intersection::Geometry &  isGeometry,
GridIndexType  scvfIndex,
const std::vector< GridIndexType > &  scvIndices,
const typename T::GeometryHelper &  geometryHelper 
)
inline

Member Function Documentation

◆ area()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
Scalar Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::area ( ) const
inline

◆ axisData()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const AxisData & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::axisData ( ) const
inline

◆ boundary()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::boundary ( ) const
inline

◆ center()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const GlobalPosition & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::center ( ) const
inline

◆ directionIndex()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
unsigned int Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::directionIndex ( ) const
inline

◆ directionSign()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
int Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::directionSign ( ) const
inline

◆ dofIndex()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::dofIndex ( ) const
inline

◆ dofIndexBackwardFace()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::dofIndexBackwardFace ( ) const
inline

◆ dofIndexForwardFace()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::dofIndexForwardFace ( ) const
inline

◆ dofIndexOpposingFace()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::dofIndexOpposingFace ( ) const
inline

◆ dofPosition()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const GlobalPosition & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::dofPosition ( ) const
inline

◆ faceLength()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
Scalar Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::faceLength ( const int  localSubFaceIdx) const
inline

◆ hasBackwardNeighbor()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
template<bool enable = useHigherOrder, std::enable_if_t< enable, int > = 0>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::hasBackwardNeighbor ( const int  backwardIdx) const
inline
Parameters
backwardIdxThe index describing how many faces backward this dof is from the opposite face

◆ hasCornerParallelNeighbor()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::hasCornerParallelNeighbor ( const int  localSubFaceIdx) const
inline
Parameters
localSubFaceIdxThe local index of the subface

| yyyyyyyy s | yyyyyyyy s

| yyyyyyyy s


In this corner geometry, hasParallelNeighbor will return true for subcontrolvolumeface s belonging to the element filled by 'y's. However, as there also might be a boundary velocity value known at the corner, which can be used instead of the standard parallel velocity in some cases, we want to identify this situation. We name it cornerParallelNeighbor.

◆ hasForwardNeighbor()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
template<bool enable = useHigherOrder, std::enable_if_t< enable, int > = 0>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::hasForwardNeighbor ( const int  forwardIdx) const
inline
Parameters
forwardIdxThe index describing how many faces forward this dof is of the self face

◆ hasHalfParallelNeighbor()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::hasHalfParallelNeighbor ( const int  localSubFaceIdx) const
inline
Parameters
localSubFaceIdxThe local index of the subface


| yyyyyyyy s | | yyyyyyyy s |

| yyyyyyyy s |

In this corner geometry, hasParallelNeighbor will return true for subcontrolvolumeface s belonging to the element filled by 'y's, but hasParallelNeighbor will return false for the subcontrolvolumeface that has the same dofIndex. We name this situation hasHalfParallelNeighbor.

◆ hasOuterLateral()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::hasOuterLateral ( const int  localSubFaceIdx) const
inline
Parameters
localSubFaceIdxThe local index of the subface

◆ hasParallelNeighbor()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::hasParallelNeighbor ( const int  localSubFaceIdx,
const int  parallelDegreeIdx 
) const
inline
Parameters
localSubFaceIdxThe local index of the subface
parallelDegreeIdxThe index describing how many faces away from the self face

◆ index()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::index ( ) const
inline

◆ insideScvIdx()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::insideScvIdx ( ) const
inline

◆ ipGlobal()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const GlobalPosition & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::ipGlobal ( ) const
inline

◆ isGhostFace()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::isGhostFace ( ) const
inline

◆ localFaceIdx()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
LocalIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::localFaceIdx ( ) const
inline

◆ normalInPosCoordDir()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
bool Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::normalInPosCoordDir ( ) const
inline

◆ outsideScvIdx() [1/2]

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
GridIndexType Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::outsideScvIdx ( ) const
inline

◆ outsideScvIdx() [2/2]

GridIndexType Dumux::SubControlVolumeFaceBase< FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, FreeFlowStaggeredDefaultScvfGeometryTraits< GV, upwindSchemeOrder > > , FreeFlowStaggeredDefaultScvfGeometryTraits< GV, upwindSchemeOrder > >::outsideScvIdx ( int  i = 0) const
inlineinherited

index of the outside sub control volume for spatial param evaluation This results in undefined behaviour if boundary is true In case of multiple outside scv indices (network grids) an index can be supplied

◆ pairData() [1/2]

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const std::array< PairData, numPairs > & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::pairData ( ) const
inline

◆ pairData() [2/2]

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const PairData & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::pairData ( const int  idx) const
inline

◆ parallelDofsDistance()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
Scalar Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::parallelDofsDistance ( const int  localSubFaceIdx,
const int  parallelDegreeIdx 
) const
inline
Parameters
localSubFaceIdxThe local index of the subface
parallelDegreeIdxThe index describing how many faces away from the self

◆ selfToOppositeDistance()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
Scalar Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::selfToOppositeDistance ( ) const
inline

◆ setBoundary()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
void Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::setBoundary ( bool  boundaryFlag)
inline

◆ setCenter()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
void Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::setCenter ( const GlobalPosition center)
inline

◆ setIsGhostFace()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
void Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::setIsGhostFace ( bool  isGhostFaceFlag)
inline

◆ unitOuterNormal()

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
const GlobalPosition & Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::unitOuterNormal ( ) const
inline

Member Data Documentation

◆ numCornersPerFace

template<class GV , int upwindSchemeOrder, class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>>
constexpr int Dumux::FreeFlowStaggeredSubControlVolumeFace< GV, upwindSchemeOrder, T >::numCornersPerFace = 2 * (dim - 1)
staticconstexpr

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