Returns internal variables defined by the specific material model, if any.
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)