OGS
FractureModelBase.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <Eigen/Core>
7
9
10namespace MaterialLib
11{
12namespace Fracture
13{
14
19template <int DisplacementDim>
21{
22public:
29 {
30 virtual ~MaterialStateVariables() = default;
31 virtual void pushBackState() = 0;
32
33 void reset()
34 {
35 _is_tensile_stress = false;
37 }
38
41
42 void setTensileStress(bool flag) { _is_tensile_stress = flag; }
43 bool setTensileStress() const { return _is_tensile_stress; }
44
45 private:
46 bool _is_tensile_stress = false;
48 };
49
52 virtual std::unique_ptr<MaterialStateVariables>
54
55 virtual ~FractureModelBase() = default;
56
73 double const t,
75 double const aperture0,
76 Eigen::Ref<Eigen::VectorXd const>
77 sigma0,
78 Eigen::Ref<Eigen::VectorXd const>
79 w_prev,
80 Eigen::Ref<Eigen::VectorXd const>
81 w,
82 Eigen::Ref<Eigen::VectorXd const>
83 sigma_prev,
84 Eigen::Ref<Eigen::VectorXd>
85 sigma,
86 Eigen::Ref<Eigen::MatrixXd>
87 C,
88 MaterialStateVariables& material_state_variables) = 0;
89};
90
91} // namespace Fracture
92} // namespace MaterialLib
virtual 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, MaterialStateVariables &material_state_variables)=0
virtual std::unique_ptr< MaterialStateVariables > createMaterialStateVariables()=0