3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
Dumux::BoxDfmGeometryHelper< GridView, 2, ScvType, ScvfType > Class Template Reference

A class to create sub control volume and sub control volume face geometries per element. More...

#include <dumux/porousmediumflow/boxdfm/geometryhelper.hh>

Inheritance diagram for Dumux::BoxDfmGeometryHelper< GridView, 2, ScvType, ScvfType >:
Inheritance graph

Description

template<class GridView, class ScvType, class ScvfType>
class Dumux::BoxDfmGeometryHelper< GridView, 2, ScvType, ScvfType >

A class to create sub control volume and sub control volume face geometries per element.

Public Member Functions

ScvfCornerStorage getFractureScvfCorners (const Intersection &is, const typename Intersection::Geometry &isGeom, unsigned int idxOnIntersection=0) const
ScvfType::Traits::GlobalPosition fractureNormal (const ScvfCornerStorage &p, const Intersection &is, unsigned int edgeIndexInIntersection=0) const
ScvCornerStorage getScvCorners (unsigned int localScvIdx) const
 Create a vector with the scv corners.
ScvfCornerStorage getScvfCorners (unsigned int localScvfIdx) const
 Create a vector with the corners of sub control volume faces.
ScvfCornerStorage getBoundaryScvfCorners (const Intersection &is, const typename Intersection::Geometry &isGeom, unsigned int indexInIntersection) const
 Create the sub control volume face geometries on the boundary.
template<int w = dimWorld>
std::enable_if< w==3, GlobalPosition >::type normal (const ScvfCornerStorage &scvfCorners, const std::vector< unsigned int > &scvIndices) const
 get scvf normal vector for dim == 2, dimworld == 3
template<int w = dimWorld>
std::enable_if< w==2, GlobalPosition >::type normal (const ScvfCornerStorage &scvfCorners, const std::vector< unsigned int > &scvIndices) const
 get scvf normal vector for dim == 2, dimworld == 2
template<int w = dimWorld>
std::enable_if< w==3, Scalar >::type scvVolume (const ScvCornerStorage &p) const
 get scv volume for dim == 2, dimworld == 3
template<int w = dimWorld>
std::enable_if< w==2, Scalar >::type scvVolume (const ScvCornerStorage &p) const
 get scv volume for dim == 2, dimworld == 2
Scalar scvfArea (const ScvfCornerStorage &p) const
 get scvf area

Protected Attributes

const Element::Geometry & elementGeometry_
 Reference to the element geometry.
std::size_t corners_
std::array< GlobalPosition, maxPoints > p_

Member Function Documentation

◆ fractureNormal()

template<class GridView, class ScvType, class ScvfType>
ScvfType::Traits::GlobalPosition Dumux::BoxDfmGeometryHelper< GridView, 2, ScvType, ScvfType >::fractureNormal ( const ScvfCornerStorage & p,
const Intersection & is,
unsigned int edgeIndexInIntersection = 0 ) const
inline

get fracture scvf normal vector (simply the unit vector of the edge) The third argument is for compatibility reasons with the 3d case!

◆ getBoundaryScvfCorners()

template<class GridView, class ScvType, class ScvfType>
ScvfCornerStorage Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::getBoundaryScvfCorners ( const Intersection & is,
const typename Intersection::Geometry & isGeom,
unsigned int indexInIntersection ) const
inlineinherited

Create the sub control volume face geometries on the boundary.

◆ getFractureScvfCorners()

template<class GridView, class ScvType, class ScvfType>
ScvfCornerStorage Dumux::BoxDfmGeometryHelper< GridView, 2, ScvType, ScvfType >::getFractureScvfCorners ( const Intersection & is,
const typename Intersection::Geometry & isGeom,
unsigned int idxOnIntersection = 0 ) const
inline

Get the corners of the (d-1)-dimensional fracture scvf The second argument is for compatibility reasons with the 3d case!

◆ getScvCorners()

template<class GridView, class ScvType, class ScvfType>
ScvCornerStorage Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::getScvCorners ( unsigned int localScvIdx) const
inlineinherited

Create a vector with the scv corners.

Only build the maps the first time we encounter a triangle

< vertex offset in point vector p

< face offset in point vector p

Only build the maps the first time we encounter a quadrilateral

< vertex offset in point vector p

< face offset in point vector p

◆ getScvfCorners()

template<class GridView, class ScvType, class ScvfType>
ScvfCornerStorage Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::getScvfCorners ( unsigned int localScvfIdx) const
inlineinherited

Create a vector with the corners of sub control volume faces.

Only build the maps the first time we encounter a triangle

< face offset in point vector p

Only build the maps the first time we encounter a quadrilateral

< face offset in point vector p

◆ normal() [1/2]

template<class GridView, class ScvType, class ScvfType>
template<int w = dimWorld>
std::enable_if< w==2, GlobalPosition >::type Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::normal ( const ScvfCornerStorage & scvfCorners,
const std::vector< unsigned int > & scvIndices ) const
inlineinherited

get scvf normal vector for dim == 2, dimworld == 2

obtain normal vector by 90° counter-clockwise rotation of t

ensure the right direction of the normal

◆ normal() [2/2]

template<class GridView, class ScvType, class ScvfType>
template<int w = dimWorld>
std::enable_if< w==3, GlobalPosition >::type Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::normal ( const ScvfCornerStorage & scvfCorners,
const std::vector< unsigned int > & scvIndices ) const
inlineinherited

get scvf normal vector for dim == 2, dimworld == 3

ensure the right direction of the normal

◆ scvfArea()

template<class GridView, class ScvType, class ScvfType>
Scalar Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::scvfArea ( const ScvfCornerStorage & p) const
inlineinherited

get scvf area

◆ scvVolume() [1/2]

template<class GridView, class ScvType, class ScvfType>
template<int w = dimWorld>
std::enable_if< w==2, Scalar >::type Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::scvVolume ( const ScvCornerStorage & p) const
inlineinherited

get scv volume for dim == 2, dimworld == 2

make sure we are using positive volumes Cross product of diagonals might be negative, depending on element orientation

◆ scvVolume() [2/2]

template<class GridView, class ScvType, class ScvfType>
template<int w = dimWorld>
std::enable_if< w==3, Scalar >::type Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::scvVolume ( const ScvCornerStorage & p) const
inlineinherited

get scv volume for dim == 2, dimworld == 3

Member Data Documentation

◆ corners_

template<class GridView, class ScvType, class ScvfType>
std::size_t Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::corners_
protectedinherited

◆ elementGeometry_

template<class GridView, class ScvType, class ScvfType>
const Element::Geometry& Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::elementGeometry_
protectedinherited

Reference to the element geometry.

◆ p_

template<class GridView, class ScvType, class ScvfType>
std::array<GlobalPosition, maxPoints> Dumux::BoxGeometryHelper< GridView, 2, ScvType, ScvfType >::p_
protectedinherited

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