OGS
MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim > Class Template Referencefinal

Detailed Description

template<int DisplacementDim>
class MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >

Definition at line 274 of file Ehlers.h.

#include <Ehlers.h>

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

Public Types

using ResidualVectorType = Eigen::Matrix< double, JacobianResidualSize, 1 >
 
using JacobianMatrix = Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor >
 
using KelvinVector = MathLib::KelvinVector::KelvinVectorType< DisplacementDim >
 
using KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType< DisplacementDim >
 
- 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
 
 SolidEhlers (NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, MaterialPropertiesParameters material_properties, std::unique_ptr< DamagePropertiesParameters > &&damage_properties, TangentType tangent_type)
 
double computeFreeEnergyDensity (double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) 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
 
std::vector< typename MechanicsBase< DisplacementDim >::InternalVariablegetInternalVariables () const override
 
MaterialProperties evaluatedMaterialProperties (double const t, ParameterLib::SpatialPosition const &x) const
 
double getBulkModulus (double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
 
DamageProperties evaluatedDamageProperties (double const t, ParameterLib::SpatialPosition const &x) const
 
- 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 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 Attributes

NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
 
MaterialPropertiesParameters _mp
 
std::unique_ptr< DamagePropertiesParameters_damage_properties
 
TangentType const _tangent_type
 

Member Typedef Documentation

◆ JacobianMatrix

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

Definition at line 285 of file Ehlers.h.

◆ KelvinMatrix

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

Definition at line 299 of file Ehlers.h.

◆ KelvinVector

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

Definition at line 297 of file Ehlers.h.

◆ ResidualVectorType

template<int DisplacementDim>
using MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::ResidualVectorType = Eigen::Matrix<double, JacobianResidualSize, 1>

Definition at line 284 of file Ehlers.h.

Constructor & Destructor Documentation

◆ SolidEhlers()

template<int DisplacementDim>
MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::SolidEhlers ( NumLib::NewtonRaphsonSolverParameters  nonlinear_solver_parameters,
MaterialPropertiesParameters  material_properties,
std::unique_ptr< DamagePropertiesParameters > &&  damage_properties,
TangentType  tangent_type 
)

Definition at line 479 of file Ehlers.cpp.

484  : _nonlinear_solver_parameters(std::move(nonlinear_solver_parameters)),
485  _mp(std::move(material_properties)),
486  _damage_properties(std::move(damage_properties)),
487  _tangent_type(tangent_type)
488 {
489 }
MaterialPropertiesParameters _mp
Definition: Ehlers.h:354
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
Definition: Ehlers.h:352
std::unique_ptr< DamagePropertiesParameters > _damage_properties
Definition: Ehlers.h:355

Member Function Documentation

◆ computeFreeEnergyDensity()

template<int DisplacementDim>
double MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::computeFreeEnergyDensity ( double const  ,
ParameterLib::SpatialPosition const &  ,
double const  ,
KelvinVector const &  eps,
KelvinVector const &  sigma,
typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &  material_state_variables 
) const
override

Definition at line 492 of file Ehlers.cpp.

500 {
501  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
502  &material_state_variables) != nullptr);
503 
504  auto const& eps_p = static_cast<StateVariables<DisplacementDim> const&>(
505  material_state_variables)
506  .eps_p;
508  auto const& identity2 = Invariants::identity2;
509  return (eps - eps_p.D - eps_p.V / 3 * identity2).dot(sigma) / 2;
510 }

◆ createMaterialStateVariables()

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

Polymorphic creator for MaterialStateVariables objects specific for a material model.

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

Definition at line 291 of file Ehlers.h.

292  {
293  return std::make_unique<StateVariables<DisplacementDim>>();
294  }

◆ evaluatedDamageProperties()

template<int DisplacementDim>
DamageProperties MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::evaluatedDamageProperties ( double const  t,
ParameterLib::SpatialPosition const &  x 
) const
inline

◆ evaluatedMaterialProperties()

template<int DisplacementDim>
MaterialProperties MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::evaluatedMaterialProperties ( double const  t,
ParameterLib::SpatialPosition const &  x 
) const
inline

Definition at line 332 of file Ehlers.h.

334  {
335  return MaterialProperties(t, x, _mp);
336  }

References MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::_mp.

◆ getBulkModulus()

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

◆ getInternalVariables()

template<int DisplacementDim>
std::vector< typename MechanicsBase< DisplacementDim >::InternalVariable > MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::getInternalVariables
overridevirtual

Returns internal variables defined by the specific material model, if any.

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

Definition at line 712 of file Ehlers.cpp.

713 {
714  return {{"damage.kappa_d", 1,
715  [](typename MechanicsBase<
716  DisplacementDim>::MaterialStateVariables const& state,
717  std::vector<double>& cache) -> std::vector<double> const&
718  {
719  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
720  &state) != nullptr);
721  auto const& ehlers_state =
722  static_cast<StateVariables<DisplacementDim> const&>(state);
723 
724  cache.resize(1);
725  cache.front() = ehlers_state.damage.kappa_d();
726  return cache;
727  },
728  [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
730  {
731  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
732  &state) != nullptr);
733  auto& ehlers_state =
734  static_cast<StateVariables<DisplacementDim>&>(state);
735 
736  return {&ehlers_state.damage.kappa_d(), 1};
737  }},
738  {"damage.value", 1,
739  [](typename MechanicsBase<
740  DisplacementDim>::MaterialStateVariables const& state,
741  std::vector<double>& cache) -> std::vector<double> const&
742  {
743  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
744  &state) != nullptr);
745  auto const& ehlers_state =
746  static_cast<StateVariables<DisplacementDim> const&>(state);
747 
748  cache.resize(1);
749  cache.front() = ehlers_state.damage.value();
750  return cache;
751  },
752  [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
754  {
755  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
756  &state) != nullptr);
757  auto& ehlers_state =
758  static_cast<StateVariables<DisplacementDim>&>(state);
759 
760  return {&ehlers_state.damage.value(), 1};
761  }},
762  {"eps_p.D", KelvinVector::RowsAtCompileTime,
763  [](typename MechanicsBase<
764  DisplacementDim>::MaterialStateVariables const& state,
765  std::vector<double>& cache) -> std::vector<double> const&
766  {
767  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
768  &state) != nullptr);
769  auto const& ehlers_state =
770  static_cast<StateVariables<DisplacementDim> const&>(state);
771 
772  cache.resize(KelvinVector::RowsAtCompileTime);
773  MathLib::toVector<KelvinVector>(
774  cache, KelvinVector::RowsAtCompileTime) =
776  ehlers_state.eps_p.D);
777 
778  return cache;
779  },
780  [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
782  {
783  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
784  &state) != nullptr);
785  auto& ehlers_state =
786  static_cast<StateVariables<DisplacementDim>&>(state);
787 
788  return {
789  ehlers_state.eps_p.D.data(),
790  static_cast<std::size_t>(KelvinVector::RowsAtCompileTime)};
791  }},
792  {"eps_p.V", 1,
793  [](typename MechanicsBase<
794  DisplacementDim>::MaterialStateVariables const& state,
795  std::vector<double>& cache) -> std::vector<double> const&
796  {
797  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
798  &state) != nullptr);
799  auto const& ehlers_state =
800  static_cast<StateVariables<DisplacementDim> const&>(state);
801 
802  cache.resize(1);
803  cache.front() = ehlers_state.eps_p.V;
804  return cache;
805  },
806  [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
808  {
809  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
810  &state) != nullptr);
811  auto& ehlers_state =
812  static_cast<StateVariables<DisplacementDim>&>(state);
813 
814  return {&ehlers_state.eps_p.V, 1};
815  }},
816  {"eps_p.eff", 1,
817  [](typename MechanicsBase<
818  DisplacementDim>::MaterialStateVariables const& state,
819  std::vector<double>& cache) -> std::vector<double> const&
820  {
821  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
822  &state) != nullptr);
823  auto const& ehlers_state =
824  static_cast<StateVariables<DisplacementDim> const&>(state);
825 
826  cache.resize(1);
827  cache.front() = ehlers_state.eps_p.eff;
828  return cache;
829  },
830  [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
832  {
833  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
834  &state) != nullptr);
835  auto& ehlers_state =
836  static_cast<StateVariables<DisplacementDim>&>(state);
837 
838  return {&ehlers_state.eps_p.eff, 1};
839  }}};
840 }
Eigen::Matrix< double, 4, 1 > kelvinVectorToSymmetricTensor(Eigen::Matrix< double, 4, 1, Eigen::ColMajor, 4, 1 > const &v)

References MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::damage, MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::eps_p, MaterialLib::Solids::Ehlers::Damage::kappa_d(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), and MaterialLib::Solids::Ehlers::Damage::value().

◆ integrateStress()

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

523 {
524  auto const& eps_m = std::get<MPL::SymmetricTensor<DisplacementDim>>(
525  variable_array[static_cast<int>(MPL::Variable::mechanical_strain)]);
526  auto const& eps_m_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
527  variable_array_prev[static_cast<int>(
528  MPL::Variable::mechanical_strain)]);
529  auto const& sigma_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
530  variable_array_prev[static_cast<int>(MPL::Variable::stress)]);
531 
532  assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
533  &material_state_variables) != nullptr);
534 
535  StateVariables<DisplacementDim> state =
536  static_cast<StateVariables<DisplacementDim> const&>(
537  material_state_variables);
538  state.setInitialConditions();
539 
541 
542  // volumetric strain
543  double const eps_V = Invariants::trace(eps_m);
544 
545  auto const& P_dev = Invariants::deviatoric_projection;
546  // deviatoric strain
547  KelvinVector const eps_D = P_dev * eps_m;
548 
549  // do the evaluation once per function call.
550  MaterialProperties const mp(t, x, _mp);
551 
552  KelvinVector sigma = predict_sigma<DisplacementDim>(
553  mp.G, mp.K, sigma_prev, eps_m, eps_m_prev, eps_V);
554 
555  KelvinMatrix tangentStiffness;
556 
557  PhysicalStressWithInvariants<DisplacementDim> s{mp.G * sigma};
558  // Quit early if sigma is zero (nothing to do) or if we are still in elastic
559  // zone.
560  if ((sigma.squaredNorm() == 0 ||
562  mp, s,
563  calculateIsotropicHardening(mp.kappa, mp.hardening_coefficient,
564  state.eps_p.eff)) < 0))
565  {
566  tangentStiffness = elasticTangentStiffness<DisplacementDim>(
567  mp.K - 2. / 3 * mp.G, mp.G);
568  }
569  else
570  {
571  // Linear solver for the newton loop is required after the loop with the
572  // same matrix. This saves one decomposition.
573  Eigen::FullPivLU<Eigen::Matrix<double, JacobianResidualSize,
574  JacobianResidualSize, Eigen::RowMajor>>
575  linear_solver;
576 
577  {
578  static int const KelvinVectorSize =
580  DisplacementDim);
581  using KelvinVector =
583  using ResidualVectorType =
584  Eigen::Matrix<double, JacobianResidualSize, 1>;
585  using JacobianMatrix =
586  Eigen::Matrix<double, JacobianResidualSize,
587  JacobianResidualSize, Eigen::RowMajor>;
588 
589  JacobianMatrix jacobian;
590 
591  // Agglomerated solution vector construction. It is later split
592  // into individual parts by splitSolutionVector().
593  ResidualVectorType solution;
594  solution << sigma, state.eps_p.D, state.eps_p.V, state.eps_p.eff, 0;
595 
596  auto const update_residual = [&](ResidualVectorType& residual)
597  {
598  auto const& eps_p_D =
599  solution.template segment<KelvinVectorSize>(
601  KelvinVector const eps_p_D_dot =
602  (eps_p_D - state.eps_p_prev.D) / dt;
603 
604  double const& eps_p_V = solution[KelvinVectorSize * 2];
605  double const eps_p_V_dot = (eps_p_V - state.eps_p_prev.V) / dt;
606 
607  double const& eps_p_eff = solution[KelvinVectorSize * 2 + 1];
608  double const eps_p_eff_dot =
609  (eps_p_eff - state.eps_p_prev.eff) / dt;
610 
611  double const k_hardening = calculateIsotropicHardening(
612  mp.kappa, mp.hardening_coefficient,
613  solution[KelvinVectorSize * 2 + 1]);
614  residual = calculatePlasticResidual<DisplacementDim>(
615  eps_D, eps_V, s,
616  solution.template segment<KelvinVectorSize>(
618  eps_p_D_dot, solution[KelvinVectorSize * 2], eps_p_V_dot,
619  eps_p_eff_dot, solution[KelvinVectorSize * 2 + 2],
620  k_hardening, mp);
621  };
622 
623  auto const update_jacobian = [&](JacobianMatrix& jacobian)
624  {
625  jacobian = calculatePlasticJacobian<DisplacementDim>(
626  dt, s, solution[KelvinVectorSize * 2 + 2], mp);
627  };
628 
629  auto const update_solution =
630  [&](ResidualVectorType const& increment)
631  {
632  solution += increment;
633  s = PhysicalStressWithInvariants<DisplacementDim>{
634  mp.G * solution.template segment<KelvinVectorSize>(0)};
635  };
636 
637  auto newton_solver = NumLib::NewtonRaphson<
638  decltype(linear_solver), JacobianMatrix,
639  decltype(update_jacobian), ResidualVectorType,
640  decltype(update_residual), decltype(update_solution)>(
641  linear_solver, update_jacobian, update_residual,
642  update_solution, _nonlinear_solver_parameters);
643 
644  auto const success_iterations = newton_solver.solve(jacobian);
645 
646  if (!success_iterations)
647  {
648  return {};
649  }
650 
651  // If the Newton loop didn't run, the linear solver will not be
652  // initialized.
653  // This happens usually for the first iteration of the first
654  // timestep.
655  if (*success_iterations == 0)
656  {
657  linear_solver.compute(jacobian);
658  }
659 
660  std::tie(sigma, state.eps_p, std::ignore) =
661  splitSolutionVector<ResidualVectorType, KelvinVector>(solution);
662  }
663 
664  // Calculate residual derivative w.r.t. strain
665  Eigen::Matrix<double, JacobianResidualSize, KelvinVectorSize,
666  Eigen::RowMajor>
667  dresidual_deps =
668  Eigen::Matrix<double, JacobianResidualSize, KelvinVectorSize,
669  Eigen::RowMajor>::Zero();
670  dresidual_deps.template block<KelvinVectorSize, KelvinVectorSize>(0, 0)
671  .noalias() = calculateDResidualDEps<DisplacementDim>(mp.K, mp.G);
672 
674  {
675  tangentStiffness =
676  elasticTangentStiffness<DisplacementDim>(mp.K, mp.G);
677  }
678  else if (_tangent_type == TangentType::Plastic ||
680  {
681  tangentStiffness =
682  mp.G *
683  linear_solver.solve(-dresidual_deps)
684  .template block<KelvinVectorSize, KelvinVectorSize>(0, 0);
686  {
687  tangentStiffness *= 1 - state.damage.value();
688  }
689  }
690  else
691  {
692  OGS_FATAL(
693  "Unimplemented tangent type behaviour for the tangent type "
694  "'{:d}'.",
695  _tangent_type);
696  }
697  }
698 
699  KelvinVector sigma_final = mp.G * sigma;
700 
701  return {std::make_tuple(
702  sigma_final,
703  std::unique_ptr<
704  typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
705  new StateVariables<DisplacementDim>{
706  static_cast<StateVariables<DisplacementDim> const&>(state)}},
707  tangentStiffness)};
708 }
#define OGS_FATAL(...)
Definition: Error.h:26
Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor > JacobianMatrix
Definition: Ehlers.h:286
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Definition: Ehlers.h:300
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
Definition: Ehlers.h:298
Eigen::Matrix< double, JacobianResidualSize, 1 > ResidualVectorType
Definition: Ehlers.h:284
std::optional< int > solve(JacobianMatrix &jacobian) const
Definition: NewtonRaphson.h:56
double calculateIsotropicHardening(double const kappa, double const hardening_coefficient, double const eps_p_eff)
Definition: Ehlers.cpp:429
double yieldFunction(MaterialProperties const &mp, PhysicalStressWithInvariants< DisplacementDim > const &s, double const k)
Definition: Ehlers.cpp:134
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
Definition: KelvinVector.h:48
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Definition: KelvinVector.h:23

References MaterialLib::Solids::Ehlers::calculateIsotropicHardening(), MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::damage, MaterialLib::Solids::Ehlers::Elastic, MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::eps_p, MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::eps_p_prev, MaterialLib::Solids::Ehlers::MaterialProperties::G, MaterialLib::Solids::Ehlers::MaterialProperties::hardening_coefficient, MaterialLib::Solids::Ehlers::MaterialProperties::K, MaterialLib::Solids::Ehlers::MaterialProperties::kappa, MathLib::KelvinVector::kelvin_vector_dimensions(), OGS_FATAL, MaterialLib::Solids::Ehlers::Plastic, MaterialLib::Solids::Ehlers::PlasticDamageSecant, MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::setInitialConditions(), NumLib::NewtonRaphson< LinearSolver, JacobianMatrix, JacobianMatrixUpdate, ResidualVector, ResidualUpdate, SolutionUpdate >::solve(), MaterialLib::Solids::Ehlers::Damage::value(), and MaterialLib::Solids::Ehlers::yieldFunction().

Member Data Documentation

◆ _damage_properties

template<int DisplacementDim>
std::unique_ptr<DamagePropertiesParameters> MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::_damage_properties
private

◆ _mp

◆ _nonlinear_solver_parameters

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

Definition at line 352 of file Ehlers.h.

◆ _tangent_type

template<int DisplacementDim>
TangentType const MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::_tangent_type
private

Definition at line 356 of file Ehlers.h.

◆ JacobianResidualSize

template<int DisplacementDim>
int const MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::JacobianResidualSize
static
Initial value:
=

Definition at line 279 of file Ehlers.h.

◆ KelvinVectorSize

template<int DisplacementDim>
int const MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::KelvinVectorSize
static
Initial value:

Definition at line 277 of file Ehlers.h.


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