Loading [MathJax]/extensions/tex2jax.js
OGS
IntegrationPointData.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <memory>
14
20
21namespace ProcessLib
22{
23namespace RichardsMechanics
24{
25template <typename BMatricesType, typename ShapeMatrixTypeDisplacement,
26 typename ShapeMatricesTypePressure, int DisplacementDim, int NPoints>
28{
29 typename ShapeMatrixTypeDisplacement::NodalRowVectorType N_u;
30 typename ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType dNdx_u;
31
32 typename ShapeMatricesTypePressure::NodalRowVectorType N_p;
33 typename ShapeMatricesTypePressure::GlobalDimNodalMatrixType dNdx_p;
34
35 double integration_weight = std::numeric_limits<double>::quiet_NaN();
36
37 MathLib::KelvinVector::
38 KelvinMatrixType<DisplacementDim> static computeElasticTangentStiffness(
39 MaterialPropertyLib::VariableArray const& variable_array,
40 double const t,
41 ParameterLib::SpatialPosition const& x_position,
42 double const dt,
44 solid_material,
46 MaterialStateVariables const& material_state_variables)
47 {
48 namespace MPL = MaterialPropertyLib;
49
50 MPL::VariableArray variable_array_prev = variable_array;
51
52 auto&& solution = solid_material.integrateStress(
53 variable_array_prev, variable_array, t, x_position, dt,
54 material_state_variables);
55
56 if (!solution)
57 {
58 OGS_FATAL("Computation of elastic tangent stiffness failed.");
59 }
60
62 std::move(std::get<2>(*solution));
63
64 return C;
65 }
66
67 static typename BMatricesType::KelvinMatrixType updateConstitutiveRelation(
68 MaterialPropertyLib::VariableArray const& variable_array,
69 double const t,
70 ParameterLib::SpatialPosition const& x_position,
71 double const dt,
72 double const temperature,
74 sigma_eff,
76 DisplacementDim>> const& sigma_eff_prev,
78 DisplacementDim> const&
79 /*eps_m*/,
81 DisplacementDim>> const& eps_m_prev,
83 solid_material,
84 std::unique_ptr<typename MaterialLib::Solids::MechanicsBase<
85 DisplacementDim>::MaterialStateVariables>& material_state_variables)
86 {
87 MaterialPropertyLib::VariableArray variable_array_prev;
88 variable_array_prev.stress = sigma_eff_prev->sigma_eff;
89 variable_array_prev.mechanical_strain
91 eps_m_prev->eps_m);
92 variable_array_prev.temperature = temperature;
93
94 auto&& solution = solid_material.integrateStress(
95 variable_array_prev, variable_array, t, x_position, dt,
96 *material_state_variables);
97
98 if (!solution)
99 {
100 OGS_FATAL("Computation of local constitutive relation failed.");
101 }
102
104 std::tie(sigma_eff.sigma_eff, material_state_variables, C) =
105 std::move(*solution);
106
107 return C;
108 }
109
111};
112
113} // namespace RichardsMechanics
114} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:26
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
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
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > sigma_eff
Represents a previous state of type T.
Definition Base.h:21
ShapeMatrixTypeDisplacement::NodalRowVectorType N_u
ShapeMatricesTypePressure::GlobalDimNodalMatrixType dNdx_p
ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType dNdx_u
ShapeMatricesTypePressure::NodalRowVectorType N_p
static BMatricesType::KelvinMatrixType updateConstitutiveRelation(MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature, ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > &sigma_eff, PrevState< ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > > const &sigma_eff_prev, ProcessLib::ConstitutiveRelations::MechanicalStrainData< DisplacementDim > const &, PrevState< ProcessLib::ConstitutiveRelations::MechanicalStrainData< DisplacementDim > > const &eps_m_prev, MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material, std::unique_ptr< typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables > &material_state_variables)
static MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > computeElasticTangentStiffness(MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x_position, double const dt, MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material, typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables)