3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Member Functions | Protected Member Functions | List of all members
Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation > Class Template Reference

The base class for spatial parameters of poro-elastic geomechanical problems. More...

#include <dumux/material/spatialparams/fvporoelastic.hh>

Description

template<class Scalar, class GridGeometry, class Implementation>
class Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >

The base class for spatial parameters of poro-elastic geomechanical problems.

Public Member Functions

 FVSpatialParamsPoroElastic (std::shared_ptr< const GridGeometry > gridGeometry)
 The constructor. More...
 
const GlobalPosition & gravity (const GlobalPosition &pos) const
 Returns the acceleration due to gravity \(\mathrm{[m/s^2]}\). More...
 
template<class ElementSolution >
Scalar porosity (const Element &element, const SubControlVolume &scv, const ElementSolution &elemSol) const
 Function for defining the porosity. That is possibly solution dependent. More...
 
template<class SolidSystem , class ElementSolution , typename std::enable_if_t< SolidSystem::isInert() &&SolidSystem::numInertComponents==1 &&!decltype(isValid(Detail::hasInertVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value, int > = 0>
Scalar inertVolumeFraction (const Element &element, const SubControlVolume &scv, const ElementSolution &elemSol, int compIdx) const
 Function for defining the solid volume fraction. That is possibly solution dependent. More...
 
template<class SolidSystem , class ElementSolution , typename std::enable_if_t< SolidSystem::numInertComponents==0, int > = 0>
Scalar inertVolumeFraction (const Element &element, const SubControlVolume &scv, const ElementSolution &elemSol, int compIdx) const
 
template<class SolidSystem , class ElementSolution , typename std::enable_if_t<(SolidSystem::numInertComponents > 1)||((SolidSystem::numInertComponents > 0) &&(!SolidSystem::isInert()||decltype(isValid(Detail::hasInertVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value)), int > = 0>
Scalar inertVolumeFraction (const Element &element, const SubControlVolume &scv, const ElementSolution &elemSol, int compIdx) const
 
template<class SolidSystem , class ElementSolution , std::enable_if_t< SolidSystem::isInert() &&!decltype(isValid(Detail::hasReactiveVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value, int > = 0>
Scalar reactiveVolumeFraction (const Element &element, const SubControlVolume &scv, const ElementSolution &elemSol, int compIdx) const
 Function for defining the solid volume fraction of a solid component that takes part in some sort of reaction. More...
 
template<class SolidSystem , class ElementSolution , std::enable_if_t< !SolidSystem::isInert()||decltype(isValid(Detail::hasReactiveVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value, int > = 0>
Scalar reactiveVolumeFraction (const Element &element, const SubControlVolume &scv, const ElementSolution &elemSol, int compIdx) const
 overload for the case of reactive solids or user-provided overload More...
 
template<class ElemVolVars , class FluxVarsCache >
decltype(auto) lameParams (const Element &element, const FVElementGeometry &fvGeometry, const ElemVolVars &elemVolVars, const FluxVarsCache &fluxVarsCache) const
 Define the Lame parameters. More...
 
template<class ElemVolVars , class FluxVarsCache >
Scalar biotCoefficient (const Element &element, const FVElementGeometry &fvGeometry, const ElemVolVars &elemVolVars, const FluxVarsCache &fluxVarsCache) const
 Returns the Biot coefficient in an element. More...
 
const GridGeometry & gridGeometry () const
 The finite volume grid geometry. More...
 

Protected Member Functions

Implementation & asImp_ ()
 
const Implementation & asImp_ () const
 

Constructor & Destructor Documentation

◆ FVSpatialParamsPoroElastic()

template<class Scalar , class GridGeometry , class Implementation >
Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::FVSpatialParamsPoroElastic ( std::shared_ptr< const GridGeometry >  gridGeometry)
inline

The constructor.

Member Function Documentation

◆ asImp_() [1/2]

template<class Scalar , class GridGeometry , class Implementation >
Implementation & Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::asImp_ ( )
inlineprotected

◆ asImp_() [2/2]

template<class Scalar , class GridGeometry , class Implementation >
const Implementation & Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::asImp_ ( ) const
inlineprotected

◆ biotCoefficient()

template<class Scalar , class GridGeometry , class Implementation >
template<class ElemVolVars , class FluxVarsCache >
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::biotCoefficient ( const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElemVolVars &  elemVolVars,
const FluxVarsCache &  fluxVarsCache 
) const
inline

Returns the Biot coefficient in an element.

Note
This is possibly solution dependent and is evaluated for an integration point inside the element. Therefore, a flux variables cache object is passed to this function containing data on shape functions at the integration point.
Parameters
elementThe current element
fvGeometryThe local finite volume geometry
elemVolVarsPrimary/Secondary variables inside the element
fluxVarsCacheContains data on shape functions at the integration point
Returns
Biot coefficient

◆ gravity()

template<class Scalar , class GridGeometry , class Implementation >
const GlobalPosition & Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::gravity ( const GlobalPosition &  pos) const
inline

Returns the acceleration due to gravity \(\mathrm{[m/s^2]}\).

The default behaviour is a constant gravity vector; if the Problem.EnableGravity parameter is true, \(\boldsymbol{g} = ( 0,\dots,\ -9.81)^T \), else \(\boldsymbol{g} = ( 0,\dots, 0)^T \).

Parameters
posthe spatial position at which to evaulate the gravity vector

◆ gridGeometry()

template<class Scalar , class GridGeometry , class Implementation >
const GridGeometry & Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::gridGeometry ( ) const
inline

The finite volume grid geometry.

◆ inertVolumeFraction() [1/3]

template<class Scalar , class GridGeometry , class Implementation >
template<class SolidSystem , class ElementSolution , typename std::enable_if_t< SolidSystem::isInert() &&SolidSystem::numInertComponents==1 &&!decltype(isValid(Detail::hasInertVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value, int > = 0>
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::inertVolumeFraction ( const Element &  element,
const SubControlVolume &  scv,
const ElementSolution &  elemSol,
int  compIdx 
) const
inline

Function for defining the solid volume fraction. That is possibly solution dependent.

Parameters
elementThe current element
scvThe sub-control volume inside the element.
elemSolThe solution at the dofs connected to the element.
compIdxThe solid component index
Returns
the volume fraction of the inert solid component with index compIdx
Note
this overload is enabled if there is only one inert solid component and the user didn't choose to implement an inertVolumeFractionAtPos overload. It then forwards to the simpler porosity interface. With more than one solid components or active solid components (i.e. dissolution) please overload the more general inertVolumeFraction/inertVolumeFractionAtPos interface.

◆ inertVolumeFraction() [2/3]

template<class Scalar , class GridGeometry , class Implementation >
template<class SolidSystem , class ElementSolution , typename std::enable_if_t< SolidSystem::numInertComponents==0, int > = 0>
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::inertVolumeFraction ( const Element &  element,
const SubControlVolume &  scv,
const ElementSolution &  elemSol,
int  compIdx 
) const
inline

◆ inertVolumeFraction() [3/3]

template<class Scalar , class GridGeometry , class Implementation >
template<class SolidSystem , class ElementSolution , typename std::enable_if_t<(SolidSystem::numInertComponents > 1)||((SolidSystem::numInertComponents > 0) &&(!SolidSystem::isInert()||decltype(isValid(Detail::hasInertVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value)), int > = 0>
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::inertVolumeFraction ( const Element &  element,
const SubControlVolume &  scv,
const ElementSolution &  elemSol,
int  compIdx 
) const
inline

◆ lameParams()

template<class Scalar , class GridGeometry , class Implementation >
template<class ElemVolVars , class FluxVarsCache >
decltype(auto) Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::lameParams ( const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElemVolVars &  elemVolVars,
const FluxVarsCache &  fluxVarsCache 
) const
inline

Define the Lame parameters.

Note
These are possibly solution dependent and are evaluated for an integration point inside the element. Therefore, a flux variables cache object is passed to this function containing data on shape functions at the integration point.
Parameters
elementThe current element
fvGeometryThe local finite volume geometry
elemVolVarsPrimary/Secondary variables inside the element
fluxVarsCacheContains data on shape functions at the integration point
Returns
lame parameters

◆ porosity()

template<class Scalar , class GridGeometry , class Implementation >
template<class ElementSolution >
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::porosity ( const Element &  element,
const SubControlVolume &  scv,
const ElementSolution &  elemSol 
) const
inline

Function for defining the porosity. That is possibly solution dependent.

Note
this can only be used for solids with one inert component (see inertVolumeFraction for the more general interface)
Parameters
elementThe current element
scvThe sub-control volume inside the element.
elemSolThe solution at the dofs connected to the element.
Returns
the porosity

◆ reactiveVolumeFraction() [1/2]

template<class Scalar , class GridGeometry , class Implementation >
template<class SolidSystem , class ElementSolution , std::enable_if_t< SolidSystem::isInert() &&!decltype(isValid(Detail::hasReactiveVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value, int > = 0>
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::reactiveVolumeFraction ( const Element &  element,
const SubControlVolume &  scv,
const ElementSolution &  elemSol,
int  compIdx 
) const
inline

Function for defining the solid volume fraction of a solid component that takes part in some sort of reaction.

Parameters
elementThe current element
scvThe sub-control volume inside the element.
elemSolThe solution at the dofs connected to the element.
compIdxThe solid component index
Returns
the volume fraction of the inert solid component with index compIdx
Note
This overload is enabled if there are only inert solid components and the user did not choose to implement a reactiveVolumeFractionAtPos function. The reactive volume fraction is zero in this case.

◆ reactiveVolumeFraction() [2/2]

template<class Scalar , class GridGeometry , class Implementation >
template<class SolidSystem , class ElementSolution , std::enable_if_t< !SolidSystem::isInert()||decltype(isValid(Detail::hasReactiveVolumeFractionAtPos< GlobalPosition, SolidSystem >())(std::declval< Implementation >()))::value, int > = 0>
Scalar Dumux::FVSpatialParamsPoroElastic< Scalar, GridGeometry, Implementation >::reactiveVolumeFraction ( const Element &  element,
const SubControlVolume &  scv,
const ElementSolution &  elemSol,
int  compIdx 
) const
inline

overload for the case of reactive solids or user-provided overload


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