OGS
LinearElasticIsotropic.cpp
Go to the documentation of this file.
1
11
12#include "LogPenalty.h"
13
14namespace MaterialLib
15{
16namespace Fracture
17{
18template <int DisplacementDim>
20 double const t,
22 double const aperture0,
23 Eigen::Ref<Eigen::VectorXd const>
24 sigma0,
25 Eigen::Ref<Eigen::VectorXd const>
26 /*w_prev*/,
27 Eigen::Ref<Eigen::VectorXd const>
28 w,
29 Eigen::Ref<Eigen::VectorXd const>
30 /*sigma_prev*/,
31 Eigen::Ref<Eigen::VectorXd>
32 sigma,
33 Eigen::Ref<Eigen::MatrixXd>
34 C,
36 material_state_variables)
37{
38 material_state_variables.reset();
39
40 const int index_ns = DisplacementDim - 1;
41 C.setZero();
42 for (int i = 0; i < index_ns; i++)
43 {
44 C(i, i) = _mp.shear_stiffness(t, x)[0];
45 }
46
47 sigma.noalias() = C * w;
48
49 double const aperture = w[index_ns] + aperture0;
50
51 sigma.coeffRef(index_ns) =
52 _mp.normal_stiffness(t, x)[0] * w[index_ns] *
53 logPenalty(aperture0, aperture, _penalty_aperture_cutoff);
54
55 C(index_ns, index_ns) =
56 _mp.normal_stiffness(t, x)[0] *
57 logPenaltyDerivative(aperture0, aperture, _penalty_aperture_cutoff);
58
59 sigma.noalias() += sigma0;
60
61 // correction for an opening fracture
62 if (_tension_cutoff && sigma[index_ns] > 0)
63 {
64 C.setZero();
65 sigma.setZero();
66 material_state_variables.setTensileStress(true);
67 }
68}
69
70template class LinearElasticIsotropic<2>;
71template class LinearElasticIsotropic<3>;
72
73} // namespace Fracture
74} // namespace MaterialLib
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
double logPenalty(double const aperture0, double const aperture, double const aperture_cutoff)
Definition LogPenalty.h:49
double logPenaltyDerivative(double const aperture0, double const aperture, double const aperture_cutoff)
Definition LogPenalty.h:23