OGS
MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim > Class Template Referencefinal

Detailed Description

template<int DisplacementDim>
class MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >

Definition at line 104 of file Lubby2.h.

#include <Lubby2.h>

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

Classes

struct  MaterialStateVariables
 

Public Types

using KelvinVector = MathLib::KelvinVector::KelvinVectorType< DisplacementDim >
 
using KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType< DisplacementDim >
 
using ResidualVector = Eigen::Matrix< double, JacobianResidualSize, 1 >
 
using JacobianMatrix = Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor >
 
- Public Types inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
using KelvinVector = MathLib::KelvinVector::KelvinVectorType< DisplacementDim >
 
using KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType< DisplacementDim >
 

Public Member Functions

std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariablescreateMaterialStateVariables () const override
 
 Lubby2 (NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, Lubby2MaterialProperties &material_properties)
 
double computeFreeEnergyDensity (double const t, ParameterLib::SpatialPosition const &x, double const dt, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
 
double getBulkModulus (double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) 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
 
- Public Member Functions inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
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 ConstitutiveModel getConstitutiveModel () const
 Gets the type of constitutive model. More...
 
virtual double getTemperatureRelatedCoefficient (double const, double const, ParameterLib::SpatialPosition const &, double const, double const) 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
 

Static Public Attributes

static int const KelvinVectorSize
 
static int const JacobianResidualSize
 

Private Member Functions

void calculateResidualBurgers (double const dt, const KelvinVector &strain_curr, const KelvinVector &strain_t, const KelvinVector &stress_curr, const KelvinVector &stress_t, const KelvinVector &strain_Kel_curr, const KelvinVector &strain_Kel_t, const KelvinVector &strain_Max_curr, const KelvinVector &strain_Max_t, ResidualVector &res, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
 Calculates the 18x1 residual vector. More...
 
void calculateJacobianBurgers (double const t, ParameterLib::SpatialPosition const &x, double const dt, JacobianMatrix &Jac, double s_eff, const KelvinVector &sig_i, const KelvinVector &eps_K_i, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
 Calculates the 18x18 Jacobian. More...
 

Private Attributes

NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
 
Lubby2MaterialProperties _mp
 

Member Typedef Documentation

◆ JacobianMatrix

template<int DisplacementDim>
using MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::JacobianMatrix = Eigen::Matrix<double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor>

Definition at line 170 of file Lubby2.h.

◆ KelvinMatrix

template<int DisplacementDim>
using MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType<DisplacementDim>

Definition at line 163 of file Lubby2.h.

◆ KelvinVector

template<int DisplacementDim>
using MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::KelvinVector = MathLib::KelvinVector::KelvinVectorType<DisplacementDim>

Definition at line 161 of file Lubby2.h.

◆ ResidualVector

template<int DisplacementDim>
using MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::ResidualVector = Eigen::Matrix<double, JacobianResidualSize, 1>

Definition at line 169 of file Lubby2.h.

Constructor & Destructor Documentation

◆ Lubby2()

template<int DisplacementDim>
MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::Lubby2 ( NumLib::NewtonRaphsonSolverParameters  nonlinear_solver_parameters,
Lubby2MaterialProperties material_properties 
)
inlineexplicit

Definition at line 176 of file Lubby2.h.

179  : _nonlinear_solver_parameters(std::move(nonlinear_solver_parameters)),
180  _mp(material_properties)
181  {
182  }
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
Definition: Lubby2.h:271
Lubby2MaterialProperties _mp
Definition: Lubby2.h:272

Member Function Documentation

◆ calculateJacobianBurgers()

template<int DisplacementDim>
void MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::calculateJacobianBurgers ( double const  t,
ParameterLib::SpatialPosition const &  x,
double const  dt,
JacobianMatrix Jac,
double  s_eff,
const KelvinVector sig_i,
const KelvinVector eps_K_i,
detail::LocalLubby2Properties< DisplacementDim > const &  properties 
) const
private

Calculates the 18x18 Jacobian.

Definition at line 248 of file Lubby2.cpp.

257 {
258  Jac.setZero();
259 
260  // build G_11
261  Jac.template block<KelvinVectorSize, KelvinVectorSize>(0, 0)
262  .diagonal()
263  .setConstant(1.);
264 
265  // build G_12
266  Jac.template block<KelvinVectorSize, KelvinVectorSize>(0, KelvinVectorSize)
267  .diagonal()
268  .setConstant(2.);
269 
270  // build G_13
271  Jac.template block<KelvinVectorSize, KelvinVectorSize>(0,
272  2 * KelvinVectorSize)
273  .diagonal()
274  .setConstant(2.);
275 
276  // build G_21
277  Jac.template block<KelvinVectorSize, KelvinVectorSize>(KelvinVectorSize, 0)
278  .noalias() =
279  -0.5 * dt * properties.GM0 / properties.etaK * KelvinMatrix::Identity();
280  if (s_eff > 0.)
281  {
282  KelvinVector const eps_K_aid =
283  1. / (properties.etaK * properties.etaK) *
284  (properties.GM0 * sig_i - 2. * properties.GK * eps_K_i);
285 
286  KelvinVector const dG_K = 1.5 * _mp.mK(t, x)[0] * properties.GK *
287  properties.GM0 / s_eff * sig_i;
288  KelvinVector const dmu_vK = 1.5 * _mp.mvK(t, x)[0] * properties.GM0 *
289  properties.etaK / s_eff * sig_i;
290  Jac.template block<KelvinVectorSize, KelvinVectorSize>(KelvinVectorSize,
291  0)
292  .noalias() += 0.5 * dt * eps_K_aid * dmu_vK.transpose() +
293  dt / properties.etaK * eps_K_i * dG_K.transpose();
294  }
295 
296  // build G_22
297  Jac.template block<KelvinVectorSize, KelvinVectorSize>(KelvinVectorSize,
299  .diagonal()
300  .setConstant(1. + dt * properties.GK / properties.etaK);
301 
302  // nothing to do for G_23
303 
304  // build G_31
305  Jac.template block<KelvinVectorSize, KelvinVectorSize>(2 * KelvinVectorSize,
306  0)
307  .noalias() =
308  -0.5 * dt * properties.GM0 / properties.etaM * KelvinMatrix::Identity();
309  if (s_eff > 0.)
310  {
311  KelvinVector const dmu_vM = 1.5 * _mp.mvM(t, x)[0] * properties.GM0 *
312  properties.etaM / s_eff * sig_i;
313  Jac.template block<KelvinVectorSize, KelvinVectorSize>(
314  2 * KelvinVectorSize, 0)
315  .noalias() += 0.5 * dt * properties.GM0 /
316  (properties.etaM * properties.etaM) * sig_i *
317  dmu_vM.transpose();
318  }
319 
320  // nothing to do for G_32
321 
322  // build G_33
323  Jac.template block<KelvinVectorSize, KelvinVectorSize>(2 * KelvinVectorSize,
324  2 * KelvinVectorSize)
325  .diagonal()
326  .setConstant(1.);
327 }
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
Definition: Lubby2.h:162
static int const KelvinVectorSize
Definition: Lubby2.h:159

References MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::etaK, MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::etaM, MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::GK, and MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::GM0.

◆ calculateResidualBurgers()

template<int DisplacementDim>
void MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::calculateResidualBurgers ( double const  dt,
const KelvinVector strain_curr,
const KelvinVector strain_t,
const KelvinVector stress_curr,
const KelvinVector stress_t,
const KelvinVector strain_Kel_curr,
const KelvinVector strain_Kel_t,
const KelvinVector strain_Max_curr,
const KelvinVector strain_Max_t,
ResidualVector res,
detail::LocalLubby2Properties< DisplacementDim > const &  properties 
) const
private

Calculates the 18x1 residual vector.

Definition at line 215 of file Lubby2.cpp.

227 {
228  // calculate stress residual
229  res.template segment<KelvinVectorSize>(0).noalias() =
230  (stress_curr - stress_t) -
231  2. * ((strain_curr - strain_t) - (strain_Kel_curr - strain_Kel_t) -
232  (strain_Max_curr - strain_Max_t));
233 
234  // calculate Kelvin strain residual
235  res.template segment<KelvinVectorSize>(KelvinVectorSize).noalias() =
236  (strain_Kel_curr - strain_Kel_t) -
237  dt / (2. * properties.etaK) *
238  (properties.GM0 * stress_curr -
239  2. * properties.GK * strain_Kel_curr);
240 
241  // calculate Maxwell strain residual
242  res.template segment<KelvinVectorSize>(2 * KelvinVectorSize).noalias() =
243  (strain_Max_curr - strain_Max_t) -
244  dt * 0.5 * properties.GM0 / properties.etaM * stress_curr;
245 }

References MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::etaK, MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::etaM, MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::GK, and MaterialLib::Solids::Lubby2::detail::LocalLubby2Properties< DisplacementDim >::GM0.

◆ computeFreeEnergyDensity()

template<int DisplacementDim>
double MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::computeFreeEnergyDensity ( double const  t,
ParameterLib::SpatialPosition const &  x,
double const  dt,
KelvinVector const &  eps,
KelvinVector const &  sigma,
typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &  material_state_variables 
) const
inlineoverride

Definition at line 184 of file Lubby2.h.

192  {
193  assert(dynamic_cast<MaterialStateVariables const*>(
194  &material_state_variables) != nullptr);
195  MaterialStateVariables state(static_cast<MaterialStateVariables const&>(
196  material_state_variables));
197 
198  auto const& eps_K = state.eps_K_j;
199  auto const& eps_K_prev = state.eps_K_t;
200 
201  auto const& eps_M = state.eps_M_j;
202 
203  auto local_lubby2_properties =
204  detail::LocalLubby2Properties<DisplacementDim>{t, x, _mp};
205 
206  // calculation of deviatoric parts
208  auto const& P_dev = Invariants::deviatoric_projection;
209  KelvinVector const epsd_i = P_dev * eps;
210 
211  // initial guess as elastic predictor
212  KelvinVector sigd_j = 2.0 * (epsd_i - state.eps_M_t - state.eps_K_t);
213 
214  // Calculate effective stress and update material properties
215  double sig_eff = Invariants::equivalentStress(sigd_j);
216  local_lubby2_properties.update(sig_eff);
217 
218  auto const& eta_K = local_lubby2_properties.etaK;
219 
220  // This is specific to the backward Euler time scheme and needs to be
221  // updated if other time schemes are used.
222  return (eps - eps_K - eps_M).dot(sigma) / 2 +
223  eps_K.dot(sigma - eta_K * (eps_K - eps_K_prev) / dt) / 2;
224  }

References MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::_mp, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_K_j, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_K_t, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_M_j, and MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_M_t.

◆ createMaterialStateVariables()

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

Polymorphic creator for MaterialStateVariables objects specific for a material model.

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

Definition at line 151 of file Lubby2.h.

152  {
153  return std::unique_ptr<
154  typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
155  new MaterialStateVariables};
156  }

◆ getBulkModulus()

template<int DisplacementDim>
double MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::getBulkModulus ( double const  t,
ParameterLib::SpatialPosition const &  x,
KelvinMatrix const * const   
) const
inlineoverridevirtual

◆ integrateStress()

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

79 {
80  auto const& eps_m = std::get<MPL::SymmetricTensor<DisplacementDim>>(
81  variable_array[static_cast<int>(MPL::Variable::mechanical_strain)]);
82  auto const& eps_m_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
83  variable_array_prev[static_cast<int>(
84  MPL::Variable::mechanical_strain)]);
85  auto const& sigma_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
86  variable_array_prev[static_cast<int>(MPL::Variable::stress)]);
87 
89 
90  assert(dynamic_cast<MaterialStateVariables const*>(
91  &material_state_variables) != nullptr);
92  MaterialStateVariables state(
93  static_cast<MaterialStateVariables const&>(material_state_variables));
94  state.setInitialConditions();
95 
96  auto local_lubby2_properties =
97  detail::LocalLubby2Properties<DisplacementDim>{t, x, _mp};
98 
99  // calculation of deviatoric parts
100  auto const& P_dev = Invariants::deviatoric_projection;
101  KelvinVector const eps_m_d_i = P_dev * eps_m;
102  KelvinVector const eps_m_d_t = P_dev * eps_m_prev;
103 
104  // initial guess as elastic predictor.
105  KelvinVector sigd_j = 2.0 * (eps_m_d_i - state.eps_M_t - state.eps_K_t);
106  // Note: sigd_t contains dimensionless stresses!
107  KelvinVector sigd_t = P_dev * sigma_prev / local_lubby2_properties.GM0;
108 
109  // Calculate effective stress and update material properties
110  double sig_eff = Invariants::equivalentStress(sigd_j);
111  local_lubby2_properties.update(sig_eff);
112 
113  using LocalJacobianMatrix =
114  Eigen::Matrix<double, KelvinVectorSize * 3, KelvinVectorSize * 3,
115  Eigen::RowMajor>;
116 
117  // Linear solver for the newton loop is required after the loop with the
118  // same matrix. This saves one decomposition.
119  Eigen::FullPivLU<LocalJacobianMatrix> linear_solver;
120 
121  // Different solvers are available for the solution of the local system.
122  // TODO Make the following choice of linear solvers available from the
123  // input file configuration:
124  // K_loc.partialPivLu().solve(-res_loc);
125  // K_loc.fullPivLu().solve(-res_loc);
126  // K_loc.householderQr().solve(-res_loc);
127  // K_loc.colPivHouseholderQr().solve(res_loc);
128  // K_loc.fullPivHouseholderQr().solve(-res_loc);
129  // K_loc.llt().solve(-res_loc);
130  // K_loc.ldlt().solve(-res_loc);
131 
132  LocalJacobianMatrix K_loc;
133  { // Local Newton solver
134  using LocalResidualVector =
135  Eigen::Matrix<double, KelvinVectorSize * 3, 1>;
136 
137  auto const update_residual = [&](LocalResidualVector& residual)
138  {
139  calculateResidualBurgers(dt, eps_m_d_i, eps_m_d_t, sigd_j, sigd_t,
140  state.eps_K_j, state.eps_K_t,
141  state.eps_M_j, state.eps_M_t, residual,
142  local_lubby2_properties);
143  };
144 
145  auto const update_jacobian = [&](LocalJacobianMatrix& jacobian)
146  {
148  t, x, dt, jacobian, sig_eff, sigd_j, state.eps_K_j,
149  local_lubby2_properties); // for solution dependent Jacobians
150  };
151 
152  auto const update_solution = [&](LocalResidualVector const& increment)
153  {
154  // increment solution vectors
155  sigd_j.noalias() += increment.template segment<KelvinVectorSize>(
156  KelvinVectorSize * 0);
157  state.eps_K_j.noalias() +=
158  increment.template segment<KelvinVectorSize>(KelvinVectorSize *
159  1);
160  state.eps_M_j.noalias() +=
161  increment.template segment<KelvinVectorSize>(KelvinVectorSize *
162  2);
163 
164  // Calculate effective stress and update material properties
166  KelvinVectorSize>::equivalentStress(sigd_j);
167  local_lubby2_properties.update(sig_eff);
168  };
169 
170  auto newton_solver = NumLib::NewtonRaphson<
171  decltype(linear_solver), LocalJacobianMatrix,
172  decltype(update_jacobian), LocalResidualVector,
173  decltype(update_residual), decltype(update_solution)>(
174  linear_solver, update_jacobian, update_residual, update_solution,
176 
177  auto const success_iterations = newton_solver.solve(K_loc);
178 
179  if (!success_iterations)
180  {
181  return {};
182  }
183 
184  // If the Newton loop didn't run, the linear solver will not be
185  // initialized.
186  // This happens usually for the first iteration of the first timestep.
187  if (*success_iterations == 0)
188  {
189  linear_solver.compute(K_loc);
190  }
191  }
192 
193  KelvinMatrix C =
194  tangentStiffnessA<DisplacementDim>(local_lubby2_properties.GM0,
195  local_lubby2_properties.KM0,
196  linear_solver);
197 
198  // Hydrostatic part for the stress and the tangent.
199  double const delta_eps_m_trace = Invariants::trace(eps_m - eps_m_prev);
200  double const sigma_trace_prev = Invariants::trace(sigma_prev);
201  KelvinVector const sigma =
202  local_lubby2_properties.GM0 * sigd_j +
203  (local_lubby2_properties.KM0 * delta_eps_m_trace +
204  sigma_trace_prev / 3.) *
205  Invariants::identity2;
206  return {std::make_tuple(
207  sigma,
208  std::unique_ptr<
209  typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
210  new MaterialStateVariables{state}},
211  C)};
212 }
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Definition: Lubby2.h:164
void calculateJacobianBurgers(double const t, ParameterLib::SpatialPosition const &x, double const dt, JacobianMatrix &Jac, double s_eff, const KelvinVector &sig_i, const KelvinVector &eps_K_i, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
Calculates the 18x18 Jacobian.
Definition: Lubby2.cpp:248
void calculateResidualBurgers(double const dt, const KelvinVector &strain_curr, const KelvinVector &strain_t, const KelvinVector &stress_curr, const KelvinVector &stress_t, const KelvinVector &strain_Kel_curr, const KelvinVector &strain_Kel_t, const KelvinVector &strain_Max_curr, const KelvinVector &strain_Max_t, ResidualVector &res, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
Calculates the 18x1 residual vector.
Definition: Lubby2.cpp:215
std::optional< int > solve(JacobianMatrix &jacobian) const
Definition: NewtonRaphson.h:56

References MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_K_j, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_K_t, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_M_j, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::eps_M_t, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::setInitialConditions(), and NumLib::NewtonRaphson< LinearSolver, JacobianMatrix, JacobianMatrixUpdate, ResidualVector, ResidualUpdate, SolutionUpdate >::solve().

Member Data Documentation

◆ _mp

◆ _nonlinear_solver_parameters

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

Definition at line 271 of file Lubby2.h.

◆ JacobianResidualSize

template<int DisplacementDim>
int const MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::JacobianResidualSize
static
Initial value:

Definition at line 166 of file Lubby2.h.

◆ KelvinVectorSize

template<int DisplacementDim>
int const MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::KelvinVectorSize
static
Initial value:
=
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Definition: KelvinVector.h:23

Definition at line 159 of file Lubby2.h.

Referenced by MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >::MaterialStateVariables::MaterialStateVariables().


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