OGS
CreepBGRa.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 <cmath>
7#include <memory>
8#include <tuple>
9
14
15namespace MaterialLib
16{
17namespace Solids
18{
19namespace Creep
20{
30template <int DisplacementDim>
31class CreepBGRa final : public LinearElasticIsotropic<DisplacementDim>
32{
33public:
34 using LinearElasticIsotropic<DisplacementDim>::KelvinVectorSize;
35 using ResidualVectorType = Eigen::Matrix<double, KelvinVectorSize, 1>;
36 using JacobianMatrix = Eigen::Matrix<double, KelvinVectorSize,
37 KelvinVectorSize, Eigen::RowMajor>;
38
43
45
46 using LinearElasticIsotropic<DisplacementDim>::getBulkModulus;
47
48 std::unique_ptr<
51 {
53 DisplacementDim>::createMaterialStateVariables();
54 }
55
58 NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters,
59 Parameter const& A, Parameter const& n, Parameter const& sigma_f,
60 Parameter const& Q)
61 : LinearElasticIsotropic<DisplacementDim>(std::move(mp)),
62 _nonlinear_solver_parameters(std::move(nonlinear_solver_parameters)),
63 _a(A),
64 _n(n),
65 _sigma_f(sigma_f),
66 _q(Q)
67 {
68 }
69
70 std::optional<std::tuple<KelvinVector,
71 std::unique_ptr<typename MechanicsBase<
72 DisplacementDim>::MaterialStateVariables>,
75 MaterialPropertyLib::VariableArray const& variable_array_prev,
76 MaterialPropertyLib::VariableArray const& variable_array,
77 double const t, ParameterLib::SpatialPosition const& x, double const dt,
79 material_state_variables) const override;
80
85
87 double const t, double const dt, ParameterLib::SpatialPosition const& x,
88 double const T, double const deviatoric_stress_norm) const override;
89
90private:
92
93 Parameter const& _a;
94 Parameter const& _n;
96 Parameter const& _q;
97};
98
99extern template class CreepBGRa<2>;
100extern template class CreepBGRa<3>;
101
102} // end of namespace Creep
103} // end of namespace Solids
104} // namespace MaterialLib
A class for computing the BGRa creep model, which reads.
Definition CreepBGRa.h:32
Parameter const & _n
A parameter determined by experiment.
Definition CreepBGRa.h:94
Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize, Eigen::RowMajor > JacobianMatrix
Definition CreepBGRa.h:36
Eigen::Matrix< double, KelvinVectorSize, 1 > ResidualVectorType
Definition CreepBGRa.h:35
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Definition CreepBGRa.h:41
Parameter const & _q
A stress scaling factor.
Definition CreepBGRa.h:96
ConstitutiveModel getConstitutiveModel() const override
Gets the type of constitutive model.
Definition CreepBGRa.h:81
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
Definition CreepBGRa.h:39
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
Definition CreepBGRa.h:91
Parameter const & _sigma_f
Creep rate exponent n.
Definition CreepBGRa.h:95
double getTemperatureRelatedCoefficient(double const t, double const dt, ParameterLib::SpatialPosition const &x, double const T, double const deviatoric_stress_norm) const override
std::optional< std::tuple< KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, KelvinMatrix > > integrateStress(MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
Definition CreepBGRa.cpp:31
CreepBGRa(typename LinearElasticIsotropic< DisplacementDim >::MaterialProperties mp, NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, Parameter const &A, Parameter const &n, Parameter const &sigma_f, Parameter const &Q)
Definition CreepBGRa.h:56
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables() const override
Definition CreepBGRa.h:50
ParameterLib::Parameter< double > Parameter
Definition CreepBGRa.h:44
double getBulkModulus(double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
LinearElasticIsotropic(MaterialProperties material_properties)
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType