OGS
LinearElasticIsotropic.h
Go to the documentation of this file.
1
10#pragma once
11
12#include <Eigen/Core>
13#include <utility>
14
15#include "FractureModelBase.h"
17
18namespace MaterialLib
19{
20namespace Fracture
21{
22
23template <int DisplacementDim>
24class LinearElasticIsotropic final : public FractureModelBase<DisplacementDim>
25{
26public:
29 {
32
33 MaterialProperties(P const& normal_stiffness_, P const& shear_stiffness_)
34 : normal_stiffness(normal_stiffness_), shear_stiffness(shear_stiffness_)
35 {
36 }
37
42 };
43
45 : public FractureModelBase<DisplacementDim>::MaterialStateVariables
46 {
47 void pushBackState() override {}
48 };
49
50 std::unique_ptr<
53 {
54 return std::unique_ptr<typename FractureModelBase<
55 DisplacementDim>::MaterialStateVariables>{
57 }
58
59public:
60 explicit LinearElasticIsotropic(double const penalty_aperture_cutoff,
61 bool const tension_cutoff,
62 MaterialProperties material_properties)
63 : _penalty_aperture_cutoff(penalty_aperture_cutoff),
64 _tension_cutoff(tension_cutoff),
65 _mp(std::move(material_properties))
66 {
67 }
68
84 double const t,
86 double const aperture0,
87 Eigen::Ref<Eigen::VectorXd const>
88 sigma0,
89 Eigen::Ref<Eigen::VectorXd const>
90 w_prev,
91 Eigen::Ref<Eigen::VectorXd const>
92 w,
93 Eigen::Ref<Eigen::VectorXd const>
94 sigma_prev,
95 Eigen::Ref<Eigen::VectorXd>
96 sigma,
97 Eigen::Ref<Eigen::MatrixXd>
98 C,
100 material_state_variables) override;
101
102private:
108
111 bool const _tension_cutoff;
112
114};
115
116} // namespace Fracture
117} // namespace MaterialLib
118
119namespace MaterialLib
120{
121namespace Fracture
122{
123extern template class LinearElasticIsotropic<2>;
124extern template class LinearElasticIsotropic<3>;
125} // namespace Fracture
126} // namespace MaterialLib
LinearElasticIsotropic(double const penalty_aperture_cutoff, bool const tension_cutoff, MaterialProperties material_properties)
void computeConstitutiveRelation(double const t, ParameterLib::SpatialPosition const &x, double const aperture0, Eigen::Ref< Eigen::VectorXd const > sigma0, Eigen::Ref< Eigen::VectorXd const > w_prev, Eigen::Ref< Eigen::VectorXd const > w, Eigen::Ref< Eigen::VectorXd const > sigma_prev, Eigen::Ref< Eigen::VectorXd > sigma, Eigen::Ref< Eigen::MatrixXd > C, typename FractureModelBase< DisplacementDim >::MaterialStateVariables &material_state_variables) override
std::unique_ptr< typename FractureModelBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables() override
MaterialProperties(P const &normal_stiffness_, P const &shear_stiffness_)
P const & shear_stiffness
Shear stiffness given in units of stress per length.
P const & normal_stiffness
Normal stiffness given in units of stress per length.