24#ifndef DUMUX_DISCRETIZATION_BOX_SUBCONTROLVOLUME_HH
25#define DUMUX_DISCRETIZATION_BOX_SUBCONTROLVOLUME_HH
27#include <dune/geometry/type.hh>
28#include <dune/geometry/multilineargeometry.hh>
45template<
class Gr
idView>
48 using Grid =
typename GridView::Grid;
50 static const int dim = Grid::dimension;
51 static const int dimWorld = Grid::dimensionworld;
57 using Geometry = Dune::MultiLinearGeometry<Scalar, dim, dimWorld, GeometryTraits>;
75 using Geometry =
typename T::Geometry;
76 using GridIndexType =
typename T::GridIndexType;
77 using LocalIndexType =
typename T::LocalIndexType;
78 using Scalar =
typename T::Scalar;
79 using CornerStorage =
typename T::CornerStorage;
80 static constexpr int dim = Geometry::mydimension;
92 template<
class GeometryHelper>
94 LocalIndexType scvIdx,
97 : corners_(geometryHelper.getScvCorners(scvIdx))
100 , localDofIdx_(scvIdx)
104 Dune::GeometryTypes::cube(dim),
105 [&](
unsigned int i){
return corners_[i]; }
123 [[deprecated(
"This will be removed after 3.6. Use fvGeometry.geometry(scv).")]]
126 return Geometry(Dune::GeometryTypes::cube(dim), corners_);
158 return elementIndex_;
162 [[deprecated(
"This will be removed after 3.6. Use fvGeometry.geometry(scv).corner(i).")]]
165 assert(localIdx < corners_.size() &&
"provided index exceeds the number of corners");
166 return corners_[localIdx];
170 CornerStorage corners_;
173 GridIndexType elementIndex_;
174 LocalIndexType localDofIdx_;
175 GridIndexType dofIndex_;
Defines the index types used for grid and local indices.
Define some often used mathematical functions.
Helper class constructing the dual grid finite volume geometries for the box discretizazion method.
Base class for a sub control volume.
Compute the center point of a convex polytope geometry or a random-access container of corner points.
Compute the volume of several common geometry types.
auto convexPolytopeVolume(Dune::GeometryType type, const CornerF &c)
Compute the volume of several common geometry types.
Definition volume.hh:53
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition adapt.hh:29
typename GridView::IndexSet::IndexType GridIndex
Definition indextraits.hh:39
unsigned int LocalIndex
Definition indextraits.hh:40
Traits for an efficient corner storage for box method sub control volumes.
Definition boxgeometryhelper.hh:44
Default traits class to be used for the sub-control volumes for the box scheme.
Definition discretization/box/subcontrolvolume.hh:47
typename GridView::Grid Grid
Definition discretization/box/subcontrolvolume.hh:48
Dune::MultiLinearGeometry< Scalar, dim, dimWorld, GeometryTraits > Geometry
Definition discretization/box/subcontrolvolume.hh:57
typename IndexTraits< GridView >::GridIndex GridIndexType
Definition discretization/box/subcontrolvolume.hh:53
BoxMLGeometryTraits< Scalar > GeometryTraits
Definition discretization/box/subcontrolvolume.hh:56
typename IndexTraits< GridView >::LocalIndex LocalIndexType
Definition discretization/box/subcontrolvolume.hh:54
static const int dim
Definition discretization/box/subcontrolvolume.hh:50
static const int dimWorld
Definition discretization/box/subcontrolvolume.hh:51
typename Grid::ctype Scalar
Definition discretization/box/subcontrolvolume.hh:55
typename CornerStorage::value_type GlobalPosition
Definition discretization/box/subcontrolvolume.hh:59
typename GeometryTraits::template CornerStorage< dim, dimWorld >::Type CornerStorage
Definition discretization/box/subcontrolvolume.hh:58
Geometry geometry() const
The geometry of the sub control volume.
Definition discretization/box/subcontrolvolume.hh:124
const GlobalPosition & corner(LocalIndexType localIdx) const
Return the corner for the given local index.
Definition discretization/box/subcontrolvolume.hh:163
BoxDefaultScvGeometryTraits< GridView > Traits
Definition discretization/box/subcontrolvolume.hh:86
LocalIndexType localDofIndex() const
The element-local index of the dof this scv is embedded in.
Definition discretization/box/subcontrolvolume.hh:130
const GlobalPosition & center() const
Definition discretization/box/subcontrolvolume.hh:110
BoxSubControlVolume()=default
The default constructor.
typename BoxDefaultScvGeometryTraits< GridView >::GlobalPosition GlobalPosition
Definition discretization/box/subcontrolvolume.hh:84
LocalIndexType indexInElement() const
Definition discretization/box/subcontrolvolume.hh:137
GridIndexType elementIndex() const
Definition discretization/box/subcontrolvolume.hh:156
GridIndexType dofIndex() const
Definition discretization/box/subcontrolvolume.hh:143
Scalar volume() const
The volume of the sub control volume.
Definition discretization/box/subcontrolvolume.hh:116
const GlobalPosition & dofPosition() const
Definition discretization/box/subcontrolvolume.hh:149
BoxSubControlVolume(const GeometryHelper &geometryHelper, LocalIndexType scvIdx, GridIndexType elementIndex, GridIndexType dofIndex)
Definition discretization/box/subcontrolvolume.hh:93
Base class for a sub control volume, i.e a part of the control volume we are making the balance for....
Definition subcontrolvolumebase.hh:38