25#ifndef DUMUX_DISCRETIZATION_BOX_EFFECTIVE_STRESS_LAW_HH
26#define DUMUX_DISCRETIZATION_BOX_EFFECTIVE_STRESS_LAW_HH
41template<
class StressType,
class Gr
idGeometry>
44 using FVElementGeometry =
typename GridGeometry::LocalView;
45 using SubControlVolumeFace =
typename FVElementGeometry::SubControlVolumeFace;
48 using GridView =
typename GridGeometry::GridView;
49 using Element =
typename GridView::template Codim<0>::Entity;
51 static constexpr int dim = GridView::dimension;
52 static constexpr int dimWorld = GridView::dimensionworld;
53 static_assert(dim == dimWorld,
"EffectiveStressLaw not implemented for network/surface grids");
54 static_assert(StressType::discMethod ==
DiscretizationMethod::box,
"The provided stress type must be specialized for the box scheme");
58 using Scalar =
typename StressType::Scalar;
69 template<
class Problem,
class ElementVolumeVariables,
class ElementFluxVarsCache>
71 const Element& element,
72 const FVElementGeometry& fvGeometry,
73 const ElementVolumeVariables& elemVolVars,
74 const SubControlVolumeFace& scvf,
75 const ElementFluxVarsCache& elemFluxVarCache)
77 const auto sigma = stressTensor(problem, element, fvGeometry, elemVolVars, elemFluxVarCache[scvf]);
80 sigma.mv(scvf.unitOuterNormal(), scvfForce);
81 scvfForce *= Extrusion::area(scvf);
87 template<
class Problem,
class ElementVolumeVariables,
class FluxVarsCache>
89 const Element& element,
90 const FVElementGeometry& fvGeometry,
91 const ElementVolumeVariables& elemVolVars,
92 const FluxVarsCache& fluxVarsCache)
95 auto sigma = StressType::stressTensor(problem, element, fvGeometry, elemVolVars, fluxVarsCache);
98 const auto biotCoeff = problem.spatialParams().biotCoefficient(element, fvGeometry, elemVolVars, fluxVarsCache);
99 const auto effPress = problem.effectivePorePressure(element, fvGeometry, elemVolVars, fluxVarsCache);
102 const auto bcp = biotCoeff*effPress;
103 for (
int i = 0; i < dim; ++i)
110 template<
class Problem,
class ElementVolumeVariables,
class FluxVarsCache>
112 const Element& element,
113 const FVElementGeometry& fvGeometry,
114 const ElementVolumeVariables& elemVolVars,
115 const FluxVarsCache& fluxVarsCache)
116 {
return StressType::stressTensor(problem, element, fvGeometry, elemVolVars, fluxVarsCache); }
The available discretization methods in Dumux.
Helper classes to compute the integration elements.
The effective stress law specialized for different discretization schemes. This computes the stress t...
DiscretizationMethod
The available discretization methods in Dumux.
Definition: method.hh:37
typename Extrusion< T >::type Extrusion_t
Convenience alias for obtaining the extrusion type.
Definition: extrusion.hh:177
typename StressType::ForceVector ForceVector
export the type used for force vectors
Definition: box/effectivestresslaw.hh:62
typename StressType::StressTensor StressTensor
export the type used for the stress tensor
Definition: box/effectivestresslaw.hh:60
typename StressType::Scalar Scalar
export the type used for scalar values
Definition: box/effectivestresslaw.hh:58
static StressTensor effectiveStressTensor(const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const FluxVarsCache &fluxVarsCache)
assembles the (effective) stress tensor of the solid skeleton at a given integration point
Definition: box/effectivestresslaw.hh:111
static ForceVector force(const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const SubControlVolumeFace &scvf, const ElementFluxVarsCache &elemFluxVarCache)
Computes the force (in Newton) acting on a sub-control volume face.
Definition: box/effectivestresslaw.hh:70
static StressTensor stressTensor(const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const FluxVarsCache &fluxVarsCache)
assembles the (total) stress tensor of the porous medium at a given integration point
Definition: box/effectivestresslaw.hh:88
This computes the stress tensor and surface forces resulting from poro-mechanical deformation.
Definition: effectivestresslaw.hh:39