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

Detailed Description

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

Definition at line 272 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
 
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
 
 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 >::InternalVariable > getInternalVariables () 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 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 ConstitutiveModel getConstitutiveModel () const
 Gets the type of constitutive model.
 
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
Initial value:
Eigen::Matrix<double, JacobianResidualSize,
JacobianResidualSize, Eigen::RowMajor>

Definition at line 283 of file Ehlers.h.

◆ KelvinMatrix

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

Definition at line 297 of file Ehlers.h.

◆ KelvinVector

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

Definition at line 295 of file Ehlers.h.

◆ ResidualVectorType

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

Definition at line 282 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 503 of file Ehlers.cpp.

508 : _nonlinear_solver_parameters(std::move(nonlinear_solver_parameters)),
509 _mp(std::move(material_properties)),
510 _damage_properties(std::move(damage_properties)),
511 _tangent_type(tangent_type)
512{
513}
MaterialPropertiesParameters _mp
Definition Ehlers.h:352
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
Definition Ehlers.h:350
std::unique_ptr< DamagePropertiesParameters > _damage_properties
Definition Ehlers.h:353

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 516 of file Ehlers.cpp.

524{
525 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
526 &material_state_variables) != nullptr);
527
528 auto const& eps_p = static_cast<StateVariables<DisplacementDim> const&>(
529 material_state_variables)
530 .eps_p;
532 auto const& identity2 = Invariants::identity2;
533 return (eps - eps_p.D - eps_p.V / 3 * identity2).dot(sigma) / 2;
534}

◆ 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 289 of file Ehlers.h.

290 {
291 return std::make_unique<StateVariables<DisplacementDim>>();
292 }

◆ 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 330 of file Ehlers.h.

332 {
333 return MaterialProperties(t, x, _mp);
334 }

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 ( ) const
overridevirtual

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

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

Definition at line 735 of file Ehlers.cpp.

736{
737 return {{"damage.kappa_d", 1,
738 [](typename MechanicsBase<
739 DisplacementDim>::MaterialStateVariables const& state,
740 std::vector<double>& cache) -> std::vector<double> const&
741 {
742 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
743 &state) != nullptr);
744 auto const& ehlers_state =
745 static_cast<StateVariables<DisplacementDim> const&>(state);
746
747 cache.resize(1);
748 cache.front() = ehlers_state.damage.kappa_d();
749 return cache;
750 },
751 [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
752 state) -> std::span<double>
753 {
754 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
755 &state) != nullptr);
756 auto& ehlers_state =
757 static_cast<StateVariables<DisplacementDim>&>(state);
758
759 return {&ehlers_state.damage.kappa_d(), 1};
760 }},
761 {"damage.value", 1,
762 [](typename MechanicsBase<
763 DisplacementDim>::MaterialStateVariables const& state,
764 std::vector<double>& cache) -> std::vector<double> const&
765 {
766 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
767 &state) != nullptr);
768 auto const& ehlers_state =
769 static_cast<StateVariables<DisplacementDim> const&>(state);
770
771 cache.resize(1);
772 cache.front() = ehlers_state.damage.value();
773 return cache;
774 },
775 [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
776 state) -> std::span<double>
777 {
778 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
779 &state) != nullptr);
780 auto& ehlers_state =
781 static_cast<StateVariables<DisplacementDim>&>(state);
782
783 return {&ehlers_state.damage.value(), 1};
784 }},
785 {"eps_p.D", KelvinVector::RowsAtCompileTime,
786 [](typename MechanicsBase<
787 DisplacementDim>::MaterialStateVariables const& state,
788 std::vector<double>& cache) -> std::vector<double> const&
789 {
790 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
791 &state) != nullptr);
792 auto const& ehlers_state =
793 static_cast<StateVariables<DisplacementDim> const&>(state);
794
795 cache.resize(KelvinVector::RowsAtCompileTime);
796 MathLib::toVector<KelvinVector>(
797 cache, KelvinVector::RowsAtCompileTime) =
799 ehlers_state.eps_p.D);
800
801 return cache;
802 },
803 [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
804 state) -> std::span<double>
805 {
806 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
807 &state) != nullptr);
808 auto& ehlers_state =
809 static_cast<StateVariables<DisplacementDim>&>(state);
810
811 return {
812 ehlers_state.eps_p.D.data(),
813 static_cast<std::size_t>(KelvinVector::RowsAtCompileTime)};
814 }},
815 {"eps_p.V", 1,
816 [](typename MechanicsBase<
817 DisplacementDim>::MaterialStateVariables const& state,
818 std::vector<double>& cache) -> std::vector<double> const&
819 {
820 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
821 &state) != nullptr);
822 auto const& ehlers_state =
823 static_cast<StateVariables<DisplacementDim> const&>(state);
824
825 cache.resize(1);
826 cache.front() = ehlers_state.eps_p.V;
827 return cache;
828 },
829 [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
830 state) -> std::span<double>
831 {
832 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
833 &state) != nullptr);
834 auto& ehlers_state =
835 static_cast<StateVariables<DisplacementDim>&>(state);
836
837 return {&ehlers_state.eps_p.V, 1};
838 }},
839 {"eps_p.eff", 1,
840 [](typename MechanicsBase<
841 DisplacementDim>::MaterialStateVariables const& state,
842 std::vector<double>& cache) -> std::vector<double> const&
843 {
844 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
845 &state) != nullptr);
846 auto const& ehlers_state =
847 static_cast<StateVariables<DisplacementDim> const&>(state);
848
849 cache.resize(1);
850 cache.front() = ehlers_state.eps_p.eff;
851 return cache;
852 },
853 [](typename MechanicsBase<DisplacementDim>::MaterialStateVariables&
854 state) -> std::span<double>
855 {
856 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
857 &state) != nullptr);
858 auto& ehlers_state =
859 static_cast<StateVariables<DisplacementDim>&>(state);
860
861 return {&ehlers_state.eps_p.eff, 1};
862 }}};
863}
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 541 of file Ehlers.cpp.

547{
548 auto const& eps_m = std::get<MPL::SymmetricTensor<DisplacementDim>>(
549 variable_array.mechanical_strain);
550 auto const& eps_m_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
551 variable_array_prev.mechanical_strain);
552 auto const& sigma_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
553 variable_array_prev.stress);
554
555 assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
556 &material_state_variables) != nullptr);
557
558 StateVariables<DisplacementDim> state =
559 static_cast<StateVariables<DisplacementDim> const&>(
560 material_state_variables);
561 state.setInitialConditions();
562
564
565 // volumetric strain
566 double const eps_V = Invariants::trace(eps_m);
567
568 auto const& P_dev = Invariants::deviatoric_projection;
569 // deviatoric strain
570 KelvinVector const eps_D = P_dev * eps_m;
571
572 // do the evaluation once per function call.
573 MaterialProperties const mp(t, x, _mp);
574
575 KelvinVector sigma = predict_sigma<DisplacementDim>(
576 mp.G, mp.K, sigma_prev, eps_m, eps_m_prev, eps_V);
577
578 KelvinMatrix tangentStiffness;
579
580 PhysicalStressWithInvariants<DisplacementDim> s{mp.G * sigma};
581 // Quit early if sigma is zero (nothing to do), or dt is zero, or if we are
582 // still in elastic zone.
583 // dt can be zero if we are in the initialization phase and the tangent
584 // stiffness will no be necessary. Anyway the newton loop below would not
585 // work because of division by zero.
586 if ((sigma.squaredNorm() == 0. || dt == 0. ||
588 mp, s,
589 calculateIsotropicHardening(mp.kappa, mp.hardening_coefficient,
590 state.eps_p.eff)) < 0.))
591 {
592 tangentStiffness = elasticTangentStiffness<DisplacementDim>(
593 mp.K - 2. / 3 * mp.G, mp.G);
594 }
595 else
596 {
597 // Linear solver for the newton loop is required after the loop with the
598 // same matrix. This saves one decomposition.
599 Eigen::FullPivLU<Eigen::Matrix<double, JacobianResidualSize,
600 JacobianResidualSize, Eigen::RowMajor>>
601 linear_solver;
602
603 {
604 using KelvinVector =
606 using ResidualVectorType =
607 Eigen::Matrix<double, JacobianResidualSize, 1>;
608 using JacobianMatrix =
609 Eigen::Matrix<double, JacobianResidualSize,
610 JacobianResidualSize, Eigen::RowMajor>;
611
612 JacobianMatrix jacobian;
613
614 // Agglomerated solution vector construction. It is later split
615 // into individual parts by splitSolutionVector().
616 ResidualVectorType solution;
617 solution << sigma, state.eps_p.D, state.eps_p.V, state.eps_p.eff, 0;
618
619 auto const update_residual = [&](ResidualVectorType& residual)
620 {
621 auto const& eps_p_D =
622 solution.template segment<KelvinVectorSize>(
624 KelvinVector const eps_p_D_dot =
625 (eps_p_D - state.eps_p_prev.D) / dt;
626
627 double const& eps_p_V = solution[KelvinVectorSize * 2];
628 double const eps_p_V_dot = (eps_p_V - state.eps_p_prev.V) / dt;
629
630 double const& eps_p_eff = solution[KelvinVectorSize * 2 + 1];
631 double const eps_p_eff_dot =
632 (eps_p_eff - state.eps_p_prev.eff) / dt;
633
634 double const k_hardening = calculateIsotropicHardening(
635 mp.kappa, mp.hardening_coefficient,
636 solution[KelvinVectorSize * 2 + 1]);
637 residual = calculatePlasticResidual<DisplacementDim>(
638 eps_D, eps_V, s,
639 solution.template segment<KelvinVectorSize>(
641 eps_p_D_dot, solution[KelvinVectorSize * 2], eps_p_V_dot,
642 eps_p_eff_dot, solution[KelvinVectorSize * 2 + 2],
643 k_hardening, mp);
644 };
645
646 auto const update_jacobian = [&](JacobianMatrix& jacobian)
647 {
648 jacobian = calculatePlasticJacobian<DisplacementDim>(
649 dt, s, solution[KelvinVectorSize * 2 + 2], mp);
650 };
651
652 auto const update_solution =
653 [&](ResidualVectorType const& increment)
654 {
655 solution += increment;
656 s = PhysicalStressWithInvariants<DisplacementDim>{
657 mp.G * solution.template segment<KelvinVectorSize>(0)};
658 };
659
660 auto newton_solver = NumLib::NewtonRaphson<
661 decltype(linear_solver), JacobianMatrix,
662 decltype(update_jacobian), ResidualVectorType,
663 decltype(update_residual), decltype(update_solution)>(
664 linear_solver, update_jacobian, update_residual,
665 update_solution, _nonlinear_solver_parameters);
666
667 auto const success_iterations = newton_solver.solve(jacobian);
668
669 if (!success_iterations)
670 {
671 return {};
672 }
673
674 // If the Newton loop didn't run, the linear solver will not be
675 // initialized.
676 // This happens usually for the first iteration of the first
677 // timestep.
678 if (*success_iterations == 0)
679 {
680 linear_solver.compute(jacobian);
681 }
682
683 std::tie(sigma, state.eps_p, std::ignore) =
684 splitSolutionVector<ResidualVectorType, KelvinVector>(solution);
685 }
686
687 // Calculate residual derivative w.r.t. strain
688 Eigen::Matrix<double, JacobianResidualSize, KelvinVectorSize,
689 Eigen::RowMajor>
690 dresidual_deps =
691 Eigen::Matrix<double, JacobianResidualSize, KelvinVectorSize,
692 Eigen::RowMajor>::Zero();
693 dresidual_deps.template block<KelvinVectorSize, KelvinVectorSize>(0, 0)
694 .noalias() = calculateDResidualDEps<DisplacementDim>(mp.K, mp.G);
695
697 {
698 tangentStiffness =
699 elasticTangentStiffness<DisplacementDim>(mp.K, mp.G);
700 }
703 {
704 tangentStiffness =
705 mp.G *
706 linear_solver.solve(-dresidual_deps)
707 .template block<KelvinVectorSize, KelvinVectorSize>(0, 0);
709 {
710 tangentStiffness *= 1 - state.damage.value();
711 }
712 }
713 else
714 {
715 OGS_FATAL(
716 "Unimplemented tangent type behaviour for the tangent type "
717 "'{}'.",
719 }
720 }
721
722 KelvinVector sigma_final = mp.G * sigma;
723
724 return {std::make_tuple(
725 sigma_final,
726 std::unique_ptr<
727 typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
728 new StateVariables<DisplacementDim>{
729 static_cast<StateVariables<DisplacementDim> const&>(state)}},
730 tangentStiffness)};
731}
#define OGS_FATAL(...)
Definition Error.h:26
Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor > JacobianMatrix
Definition Ehlers.h:283
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
Definition Ehlers.h:295
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Definition Ehlers.h:297
Eigen::Matrix< double, JacobianResidualSize, 1 > ResidualVectorType
Definition Ehlers.h:282
std::optional< int > solve(JacobianMatrix &jacobian) const
constexpr auto to_underlying(E e) noexcept
Converts an enumeration to its underlying type.
Definition cpp23.h:29
double calculateIsotropicHardening(double const kappa, double const hardening_coefficient, double const eps_p_eff)
Definition Ehlers.cpp:453
double yieldFunction(MaterialProperties const &mp, PhysicalStressWithInvariants< DisplacementDim > const &s, double const k)
Definition Ehlers.cpp:136

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, MaterialPropertyLib::VariableArray::mechanical_strain, 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(), MaterialPropertyLib::VariableArray::stress, BaseLib::to_underlying(), 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 350 of file Ehlers.h.

◆ _tangent_type

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

Definition at line 354 of file Ehlers.h.

◆ JacobianResidualSize

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

Definition at line 277 of file Ehlers.h.

◆ KelvinVectorSize

template<int DisplacementDim>
int const MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >::KelvinVectorSize
static
Initial value:
=
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.

Definition at line 275 of file Ehlers.h.


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