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

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

References MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::damage, MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::eps_p, MaterialLib::Solids::Ehlers::Damage::kappa_d(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MathLib::toVector(), 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
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 {
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]);
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 {
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 linear_solver, update_jacobian, update_residual,
662 update_solution, _nonlinear_solver_parameters);
663
664 auto const success_iterations = newton_solver.solve(jacobian);
665
666 if (!success_iterations)
667 {
668 return {};
669 }
670
671 // If the Newton loop didn't run, the linear solver will not be
672 // initialized.
673 // This happens usually for the first iteration of the first
674 // timestep.
675 if (*success_iterations == 0)
676 {
677 linear_solver.compute(jacobian);
678 }
679
680 std::tie(sigma, state.eps_p, std::ignore) =
682 }
683
684 // Calculate residual derivative w.r.t. strain
685 Eigen::Matrix<double, JacobianResidualSize, KelvinVectorSize,
686 Eigen::RowMajor>
687 dresidual_deps =
688 Eigen::Matrix<double, JacobianResidualSize, KelvinVectorSize,
689 Eigen::RowMajor>::Zero();
690 dresidual_deps.template block<KelvinVectorSize, KelvinVectorSize>(0, 0)
691 .noalias() = calculateDResidualDEps<DisplacementDim>(mp.K, mp.G);
692
694 {
695 tangentStiffness =
697 }
700 {
701 tangentStiffness =
702 mp.G *
703 linear_solver.solve(-dresidual_deps)
704 .template block<KelvinVectorSize, KelvinVectorSize>(0, 0);
706 {
707 tangentStiffness *= 1 - state.damage.value();
708 }
709 }
710 else
711 {
712 OGS_FATAL(
713 "Unimplemented tangent type behaviour for the tangent type "
714 "'{}'.",
716 }
717 }
718
719 KelvinVector sigma_final = mp.G * sigma;
720
721 return {std::make_tuple(
722 sigma_final,
723 std::unique_ptr<
724 typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
725 new StateVariables<DisplacementDim>{
726 static_cast<StateVariables<DisplacementDim> const&>(state)}},
727 tangentStiffness)};
728}
#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
constexpr auto to_underlying(E e) noexcept
Converts an enumeration to its underlying type.
Definition cpp23.h:29
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > calculateDResidualDEps(double const K, double const G)
Definition Ehlers.cpp:438
SolidEhlers< DisplacementDim >::JacobianMatrix calculatePlasticJacobian(double const dt, PhysicalStressWithInvariants< DisplacementDim > const &s, double const lambda, MaterialProperties const &mp)
Definition Ehlers.cpp:257
double calculateIsotropicHardening(double const kappa, double const hardening_coefficient, double const eps_p_eff)
Definition Ehlers.cpp:453
std::tuple< KelvinVector, PlasticStrain< KelvinVector >, double > splitSolutionVector(ResidualVector const &solution)
Definition Ehlers.cpp:492
double yieldFunction(MaterialProperties const &mp, PhysicalStressWithInvariants< DisplacementDim > const &s, double const k)
Definition Ehlers.cpp:136
SolidEhlers< DisplacementDim >::KelvinVector predict_sigma(double const G, double const K, typename SolidEhlers< DisplacementDim >::KelvinVector const &sigma_prev, typename SolidEhlers< DisplacementDim >::KelvinVector const &eps, typename SolidEhlers< DisplacementDim >::KelvinVector const &eps_prev, double const eps_V)
Definition Ehlers.cpp:461
SolidEhlers< DisplacementDim >::ResidualVectorType calculatePlasticResidual(MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &eps_D, double const eps_V, PhysicalStressWithInvariants< DisplacementDim > const &s, MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &eps_p_D, MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &eps_p_D_dot, double const eps_p_V, double const eps_p_V_dot, double const eps_p_eff_dot, double const lambda, double const k, MaterialProperties const &mp)
Definition Ehlers.cpp:196
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > elasticTangentStiffness(double const first_lame_parameter, double const shear_modulus)

References MaterialLib::Solids::Ehlers::calculateDResidualDEps(), MaterialLib::Solids::Ehlers::calculateIsotropicHardening(), MaterialLib::Solids::Ehlers::calculatePlasticJacobian(), MaterialLib::Solids::Ehlers::calculatePlasticResidual(), MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::damage, MaterialLib::Solids::Ehlers::Elastic, MaterialLib::Solids::elasticTangentStiffness(), 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::predict_sigma(), MaterialLib::Solids::Ehlers::StateVariables< DisplacementDim >::setInitialConditions(), MaterialLib::Solids::Ehlers::splitSolutionVector(), 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: