13#ifndef DUMUX_DISCRETIZATION_BOX_EFFECTIVE_STRESS_LAW_HH 
   14#define DUMUX_DISCRETIZATION_BOX_EFFECTIVE_STRESS_LAW_HH 
   29template<
class StressType, 
class Gr
idGeometry>
 
   32    using FVElementGeometry = 
typename GridGeometry::LocalView;
 
   33    using SubControlVolumeFace = 
typename FVElementGeometry::SubControlVolumeFace;
 
   36    using GridView = 
typename GridGeometry::GridView;
 
   37    using Element = 
typename GridView::template Codim<0>::Entity;
 
   39    static constexpr int dim = GridView::dimension;
 
   40    static constexpr int dimWorld = GridView::dimensionworld;
 
   41    static_assert(dim == dimWorld, 
"EffectiveStressLaw not implemented for network/surface grids");
 
   42    static_assert(StressType::discMethod == 
DiscretizationMethods::box, 
"The provided stress type must be specialized for the box scheme");
 
   46    using Scalar = 
typename StressType::Scalar;
 
   60    template<
class Problem, 
class ElementVolumeVariables, 
class ElementFluxVarsCache>
 
   62                             const Element& element,
 
   63                             const FVElementGeometry& fvGeometry,
 
   64                             const ElementVolumeVariables& elemVolVars,
 
   65                             const SubControlVolumeFace& scvf,
 
   66                             const ElementFluxVarsCache& elemFluxVarCache)
 
   68        const auto sigma = 
stressTensor(problem, element, fvGeometry, elemVolVars, elemFluxVarCache[scvf]);
 
   71        sigma.mv(scvf.unitOuterNormal(), scvfForce);
 
   72        scvfForce *= Extrusion::area(fvGeometry, scvf);
 
 
   78    template<
class Problem, 
class ElementVolumeVariables, 
class FluxVarsCache>
 
   80                                     const Element& element,
 
   81                                     const FVElementGeometry& fvGeometry,
 
   82                                     const ElementVolumeVariables& elemVolVars,
 
   83                                     const FluxVarsCache& fluxVarsCache)
 
   86        auto sigma = StressType::stressTensor(problem, element, fvGeometry, elemVolVars, fluxVarsCache);
 
   89        const auto biotCoeff = problem.spatialParams().biotCoefficient(element, fvGeometry, elemVolVars, fluxVarsCache);
 
   90        const auto effPress = problem.spatialParams().effectivePorePressure(element, fvGeometry, elemVolVars, fluxVarsCache);
 
   93        const auto bcp = biotCoeff*effPress;
 
   94        for (
int i = 0; i < dim; ++i)
 
 
  101    template<
class Problem, 
class ElementVolumeVariables, 
class FluxVarsCache>
 
  103                                              const Element& element,
 
  104                                              const FVElementGeometry& fvGeometry,
 
  105                                              const ElementVolumeVariables& elemVolVars,
 
  106                                              const FluxVarsCache& fluxVarsCache)
 
  107    { 
return StressType::stressTensor(problem, element, fvGeometry, elemVolVars, fluxVarsCache); }
 
 
 
typename StressType::ForceVector ForceVector
export the type used for force vectors
Definition box/effectivestresslaw.hh:50
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:79
typename StressType::Scalar Scalar
export the type used for scalar values
Definition box/effectivestresslaw.hh:46
DiscretizationMethods::Box DiscretizationMethod
state the discretization method this implementation belongs to
Definition box/effectivestresslaw.hh:53
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:102
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:61
static constexpr DiscretizationMethod discMethod
Definition box/effectivestresslaw.hh:55
typename StressType::StressTensor StressTensor
export the type used for the stress tensor
Definition box/effectivestresslaw.hh:48
This computes the stress tensor and surface forces resulting from poro-mechanical deformation.
Definition effectivestresslaw_fwd.hh:27
Effective stress are used to describe the actual stresses acting on the grains/matrix in the soil....
Helper classes to compute the integration elements.
The available discretization methods in Dumux.
constexpr Box box
Definition method.hh:147
CVFE< CVFEMethods::PQ1 > Box
Definition method.hh:94
typename Extrusion< T >::type Extrusion_t
Convenience alias for obtaining the extrusion type.
Definition extrusion.hh:166