3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Public Member Functions | Static Public Attributes | List of all members
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. More...

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

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

Description

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

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.

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 bolean 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...
 
const GlobalPositioncorner (unsigned int localIdx) const
 The positions of the corners. More...
 
const Geometry geometry () const
 The geometry of the sub control volume face. More...
 
LocalIndexType localFaceIdx () const
 The local index of this sub control volume face. More...
 
unsigned int directionIndex () const
 Returns the dirction 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

State the traits public and thus export all types.

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

Constructor with intersection.

Member Function Documentation

◆ area()

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

The area of the sub control volume face.

◆ axisData()

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

Return an array of all pair data.

◆ boundary()

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

Returns bolean if the sub control volume face is on the boundary.

◆ center()

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

The center of the sub control volume face.

◆ corner()

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

The positions of the corners.

◆ directionIndex()

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

Returns the dirction index of the facet (0 = x, 1 = y, 2 = z)

◆ directionSign()

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

Returns the sign of the unit outer normal's vector.

◆ dofIndex()

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

Returns the dof of the face.

◆ dofIndexBackwardFace()

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

Returns the dof of the first backward face.

◆ dofIndexForwardFace()

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

Returns the dof the first forward face.

◆ dofIndexOpposingFace()

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

Returns the dof of the opposing face.

◆ dofPosition()

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

The position of the dof living on the face.

◆ faceLength()

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

Returns the length of the face in a certain direction (adaptation of area() for 3d)

◆ geometry()

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

The geometry of the sub control volume face.

◆ 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

Check if the face has a backward neighbor.

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

Check if the face has a corner parallel neighbor.

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

Check if the face has a forward neighbor.

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

Check if the face has a half parallel neighbor.

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

Check if the face has an outer normal neighbor.

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

Check if the face has a parallel neighbor.

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

The global index of this sub control volume face.

◆ insideScvIdx()

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

Index of the inside sub control volume for spatial param evaluation.

◆ ipGlobal()

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

The integration point for flux evaluations in global coordinates.

◆ isGhostFace()

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

Returns true if the face is a ghost face.

◆ localFaceIdx()

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

The local index of this sub control volume face.

◆ normalInPosCoordDir()

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

Returns whether the unitNormal of the face points in positive coordinate direction.

◆ outsideScvIdx() [1/2]

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

index of the outside sub control volume for spatial param evaluation

◆ 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

Return an array of all pair data.

◆ 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

Returns the data for one sub face.

◆ 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

Returns the distance between the parallel dofs.

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

Returns the distance between the face and the opposite one.

◆ setBoundary()

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

set the boundary flag

◆ setCenter()

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

set the center to a different position

◆ setIsGhostFace()

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

set the ghost face flag

◆ unitOuterNormal()

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

The unit outer normal vector.

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: