OGS
MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim > Class Template Referencefinal

Detailed Description

template<int DisplacementDim>
class MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >

A class for computing the BGRa creep model, which reads.

\[\dot {\mathbf{\epsilon}}^{cr}=\sqrt{\frac{3}{2}}A \mathrm{e}^{-\frac{Q}{RT}} \left(\frac{\sigma_{eff}}{\sigma_0}\right)^n\frac{\mathbf{s}}{||\mathbf{s}||} \]

where \(\sigma_{eff}=\sqrt{\frac{3}{2}}||\mathbf{s}||\), \(A, \sigma_0, n, Q\) are parameter, and \(R\) is the gas constant.

Definition at line 39 of file CreepBGRa.h.

#include <CreepBGRa.h>

Inheritance diagram for MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >:
[legend]
Collaboration diagram for MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >:
[legend]

Public Types

using ResidualVectorType = Eigen::Matrix<double, KelvinVectorSize, 1>
using JacobianMatrix
using KelvinVector
using KelvinMatrix
using Parameter = ParameterLib::Parameter<double>
Public Types inherited from MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >
using KelvinVector
using KelvinMatrix
Public Types inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
using KelvinVector
using KelvinMatrix

Public Member Functions

std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables () const override
 CreepBGRa (typename LinearElasticIsotropic< DisplacementDim >::MaterialProperties mp, NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, Parameter const &A, Parameter const &n, Parameter const &sigma_f, Parameter const &Q)
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
ConstitutiveModel getConstitutiveModel () const override
 Gets the type of constitutive model.
double getTemperatureRelatedCoefficient (double const t, double const dt, ParameterLib::SpatialPosition const &x, double const T, double const deviatoric_stress_norm) const override
Public Member Functions inherited from MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >
 LinearElasticIsotropic (MaterialProperties material_properties)
double computeFreeEnergyDensity (double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &) const override
std::optional< std::tuple< typename MechanicsBase< DisplacementDim >::KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, typename MechanicsBase< DisplacementDim >::KelvinMatrix > > integrateStress (MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
KelvinMatrix getElasticTensor (double const t, ParameterLib::SpatialPosition const &x, double const T) const
MaterialProperties getMaterialProperties () const
double getBulkModulus (double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
Public Member Functions inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
virtual void initializeInternalStateVariables (double const, ParameterLib::SpatialPosition const &, typename MechanicsBase< DisplacementDim >::MaterialStateVariables &) const
virtual std::optional< std::tuple< KelvinVector, std::unique_ptr< MaterialStateVariables >, KelvinMatrix > > integrateStress (MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, MaterialStateVariables const &material_state_variables) const =0
virtual std::vector< InternalVariablegetInternalVariables () const
virtual double computeFreeEnergyDensity (double const t, ParameterLib::SpatialPosition const &x, double const dt, KelvinVector const &eps, KelvinVector const &sigma, MaterialStateVariables const &material_state_variables) const =0
virtual ~MechanicsBase ()=default

Private Attributes

NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
Parameter const & _a
Parameter const & _n
 A parameter determined by experiment.
Parameter const & _sigma_f
 Creep rate exponent n.
Parameter const & _q
 A stress scaling factor.

Additional Inherited Members

Static Public Attributes inherited from MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >
static int const KelvinVectorSize
Protected Attributes inherited from MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >
MaterialProperties _mp

Member Typedef Documentation

◆ JacobianMatrix

template<int DisplacementDim>
using MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::JacobianMatrix
Initial value:
Eigen::Matrix<double, KelvinVectorSize,
KelvinVectorSize, Eigen::RowMajor>

Definition at line 44 of file CreepBGRa.h.

◆ KelvinMatrix

template<int DisplacementDim>
using MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::KelvinMatrix
Initial value:
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType

Definition at line 49 of file CreepBGRa.h.

◆ KelvinVector

template<int DisplacementDim>
using MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::KelvinVector
Initial value:
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType

Definition at line 47 of file CreepBGRa.h.

◆ Parameter

template<int DisplacementDim>
using MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::Parameter = ParameterLib::Parameter<double>

Definition at line 52 of file CreepBGRa.h.

◆ ResidualVectorType

template<int DisplacementDim>
using MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::ResidualVectorType = Eigen::Matrix<double, KelvinVectorSize, 1>

Definition at line 43 of file CreepBGRa.h.

Constructor & Destructor Documentation

◆ CreepBGRa()

template<int DisplacementDim>
MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::CreepBGRa ( typename LinearElasticIsotropic< DisplacementDim >::MaterialProperties mp,
NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters,
Parameter const & A,
Parameter const & n,
Parameter const & sigma_f,
Parameter const & Q )
inline

Definition at line 64 of file CreepBGRa.h.

71 _a(A),
72 _n(n),
74 _q(Q)
75 {
76 }
A class for computing the BGRa creep model, which reads.
Definition CreepBGRa.h:40
Parameter const & _n
A parameter determined by experiment.
Definition CreepBGRa.h:102
Parameter const & _q
A stress scaling factor.
Definition CreepBGRa.h:104
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
Definition CreepBGRa.h:99
Parameter const & _sigma_f
Creep rate exponent n.
Definition CreepBGRa.h:103

References MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::LinearElasticIsotropic(), _a, _n, _nonlinear_solver_parameters, _q, and _sigma_f.

Member Function Documentation

◆ createMaterialStateVariables()

template<int DisplacementDim>
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::createMaterialStateVariables ( ) const
inlineoverridevirtual

Polymorphic creator for MaterialStateVariables objects specific for a material model.

Reimplemented from MaterialLib::Solids::MechanicsBase< DisplacementDim >.

Definition at line 58 of file CreepBGRa.h.

59 {
62 }
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables() const override
Definition CreepBGRa.h:58
LinearElasticIsotropic(MaterialProperties material_properties)

References MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::LinearElasticIsotropic(), and createMaterialStateVariables().

Referenced by createMaterialStateVariables(), and integrateStress().

◆ getConstitutiveModel()

template<int DisplacementDim>
ConstitutiveModel MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::getConstitutiveModel ( ) const
inlineoverridevirtual

Gets the type of constitutive model.

Reimplemented from MaterialLib::Solids::MechanicsBase< DisplacementDim >.

Definition at line 89 of file CreepBGRa.h.

90 {
92 }

References MaterialLib::Solids::CreepBGRa.

◆ getTemperatureRelatedCoefficient()

template<int DisplacementDim>
double MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::getTemperatureRelatedCoefficient ( double const ,
double const ,
ParameterLib::SpatialPosition const & ,
double const ,
double const  ) const
overridevirtual

Get temperature related coefficient for the global assembly if there is one.

Reimplemented from MaterialLib::Solids::MechanicsBase< DisplacementDim >.

Definition at line 138 of file CreepBGRa.cpp.

141{
142 const double A = _a(t, x)[0];
143 const double n = _n(t, x)[0];
144 const double sigma0 = _sigma_f(t, x)[0];
145 const double Q = _q(t, x)[0];
146
147 const double constant_coefficient =
149
150 return 2.0 * constant_coefficient *
151 std::exp(-Q /
153 this->_mp.mu(t, x) * std::pow(deviatoric_stress_norm, n - 1) * dt *
155}
double getCreepConstantCoefficient(const double A, const double n, const double sigma0)
Definition CreepBGRa.cpp:28

References _a, MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::_mp, _n, _q, _sigma_f, MaterialLib::Solids::Creep::getCreepConstantCoefficient(), and MaterialLib::PhysicalConstant::IdealGasConstant.

◆ integrateStress()

template<int DisplacementDim>
std::optional< std::tuple< typename CreepBGRa< DisplacementDim >::KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, typename CreepBGRa< DisplacementDim >::KelvinMatrix > > MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::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 at line 39 of file CreepBGRa.cpp.

45{
47 variable_array.mechanical_strain);
49 variable_array_prev.mechanical_strain);
51 variable_array_prev.stress);
52 auto const T = variable_array_prev.temperature;
53
55
59
60 const auto C = this->getElasticTensor(t, x, T);
62
64
65 double const norm_s_try =
67 // In case |s_{try}| is zero and _n < 3 (rare case).
69 {
71 }
72
74
75 const double A = _a(t, x)[0];
76 const double n = _n(t, x)[0];
77 const double sigma0 = _sigma_f(t, x)[0];
78 const double Q = _q(t, x)[0];
79
80 const double constant_coefficient =
82
83 const double b =
86
87 double const G2b = 2.0 * b * this->_mp.mu(t, x);
88
90 {
92 KelvinVector const s_n1 = D * solution;
95 G2b * std::pow(norm_s_n1, n - 1);
98 (n - 1) * G2b * std::pow(norm_s_n1, n - 3) * s_n1 *
99 s_n1.transpose());
100 };
101
102 auto const update_residual =
104 {
107 double const pow_norm_s_n1_n_minus_one_2b_G =
108 G2b * std::pow(norm_s_n1, n - 1);
110 };
111
112 auto const update_solution = [&](ResidualVectorType const& increment)
113 { solution += increment; };
114
115 auto newton_solver =
118
120 auto const success_iterations = newton_solver.solve(jacobian);
121
123 {
124 return {};
125 }
126
127 // If *success_iterations>0, tangentStiffness = J_(sigma)^{-1}C
128 // where J_(sigma) is the Jacobian of the last local Newton-Raphson
129 // iteration, which is already LU decomposed.
132
135}
Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize, Eigen::RowMajor > JacobianMatrix
Definition CreepBGRa.h:44
Eigen::Matrix< double, KelvinVectorSize, 1 > ResidualVectorType
Definition CreepBGRa.h:43
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Definition CreepBGRa.h:49
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
Definition CreepBGRa.h:47
KelvinMatrix getElasticTensor(double const t, ParameterLib::SpatialPosition const &x, double const T) const

References _a, MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::_mp, _n, _nonlinear_solver_parameters, _q, _sigma_f, createMaterialStateVariables(), MaterialLib::Solids::Creep::getCreepConstantCoefficient(), MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::getElasticTensor(), MaterialLib::PhysicalConstant::IdealGasConstant, MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::KelvinVectorSize, MaterialPropertyLib::VariableArray::mechanical_strain, MaterialPropertyLib::VariableArray::stress, and MaterialPropertyLib::VariableArray::temperature.

Member Data Documentation

◆ _a

template<int DisplacementDim>
Parameter const& MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::_a
private

Definition at line 101 of file CreepBGRa.h.

Referenced by CreepBGRa(), getTemperatureRelatedCoefficient(), and integrateStress().

◆ _n

template<int DisplacementDim>
Parameter const& MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::_n
private

A parameter determined by experiment.

Definition at line 102 of file CreepBGRa.h.

Referenced by CreepBGRa(), getTemperatureRelatedCoefficient(), and integrateStress().

◆ _nonlinear_solver_parameters

template<int DisplacementDim>
NumLib::NewtonRaphsonSolverParameters const MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::_nonlinear_solver_parameters
private

Definition at line 99 of file CreepBGRa.h.

Referenced by CreepBGRa(), and integrateStress().

◆ _q

template<int DisplacementDim>
Parameter const& MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::_q
private

A stress scaling factor.

Definition at line 104 of file CreepBGRa.h.

Referenced by CreepBGRa(), getTemperatureRelatedCoefficient(), and integrateStress().

◆ _sigma_f

template<int DisplacementDim>
Parameter const& MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >::_sigma_f
private

Creep rate exponent n.

Definition at line 103 of file CreepBGRa.h.

Referenced by CreepBGRa(), getTemperatureRelatedCoefficient(), and integrateStress().


The documentation for this class was generated from the following files: