12#ifndef DUMUX_MEMBRANE_PLATE_LOCAL_RESIDUAL_HH
13#define DUMUX_MEMBRANE_PLATE_LOCAL_RESIDUAL_HH
29template<
class TypeTag>
41 using FVElementGeometry =
typename GridGeometry::LocalView;
42 using SubControlVolume =
typename GridGeometry::SubControlVolume;
43 using SubControlVolumeFace =
typename GridGeometry::SubControlVolumeFace;
44 using GridView =
typename GridGeometry::GridView;
45 using Element =
typename GridView::template Codim<0>::Entity;
47 using Indices =
typename ModelTraits::Indices;
50 using ParentType::ParentType;
54 const SubControlVolume& scv,
55 const VolumeVariables& volVars)
const
58 return NumEqVector(0.0);
62 const Element& element,
63 const FVElementGeometry& fvGeometry,
64 const ElementVolumeVariables& elemVolVars,
65 const SubControlVolumeFace& scvf,
66 const ElementFluxVariablesCache& elemFluxVarsCache)
const
68 const auto& fluxVarCache = elemFluxVarsCache[scvf];
70 for (
const auto& scv :
scvs(fvGeometry))
71 gradWn += elemVolVars[scv].deformation()
72 * (fluxVarCache.gradN(scv.indexInElement()) * scvf.unitOuterNormal());
74 const auto tension = problem.spatialParams().tension(scvf.ipGlobal());
76 NumEqVector flux(0.0);
77 flux[Indices::deformationEqIdx] = tension * gradWn * scvf.area();
Local residual for the membrane plate model.
Definition: solidmechanics/plate/membrane/localresidual.hh:32
NumEqVector computeStorage(const Problem &problem, const SubControlVolume &scv, const VolumeVariables &volVars) const
Definition: solidmechanics/plate/membrane/localresidual.hh:53
typename ParentType::ElementResidualVector ElementResidualVector
Definition: solidmechanics/plate/membrane/localresidual.hh:51
NumEqVector computeFlux(const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const SubControlVolumeFace &scvf, const ElementFluxVariablesCache &elemFluxVarsCache) const
Definition: solidmechanics/plate/membrane/localresidual.hh:61
Defines all properties used in Dumux.
The default local operator than can be specialized for each discretization scheme.
typename NumEqVectorTraits< PrimaryVariables >::type NumEqVector
A vector with the same size as numbers of equations This is the default implementation and has to be ...
Definition: numeqvector.hh:34
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
typename Detail::DiscretizationDefaultLocalOperator< TypeTag >::type DiscretizationDefaultLocalOperator
Definition: defaultlocaloperator.hh:27
std::ranges::range auto scvs(const FVElementGeometry &fvGeometry, const LocalDof &localDof)
Definition: localdof.hh:79
A helper to deduce a vector with the same size as numbers of equations.