26template <
int DisplacementDim,
typename ConstitutiveTraits>
33 bool const is_axially_symmetric,
44 unsigned const n_integration_points =
52 for (
unsigned ip = 0; ip < n_integration_points; ++ip)
65 int const integration_order)
67 if (integration_order !=
71 "Setting integration point initial conditions; The integration "
72 "order of the local assembler for element {:d} is different "
73 "from the integration order in the initial condition.",
80 "Setting initial conditions for stress from integration "
81 "point data and from a parameter '{:s}' is not possible "
89 if (name.starts_with(
"material_state_variable_"))
91 name.remove_prefix(24);
93 auto const& internal_variables =
95 if (
auto const iv = std::find_if(
96 begin(internal_variables), end(internal_variables),
97 [&name](
auto const& iv) {
return iv.name == name; });
98 iv != end(internal_variables))
100 DBUG(
"Setting material state variable '{:s}'", name);
105 DisplacementDim>::material_state_variables,
119 std::function<std::span<double>(
121 MaterialStateVariables&)>
const& get_values_span,
122 int const& n_components)
const
127 get_values_span, n_components);
144 DisplacementDim>::MaterialStateVariables
const&
151 Eigen::VectorXd
const& ,
152 double const ,
double const ,
155 unsigned const n_integration_points =
158 for (
unsigned ip = 0; ip < n_integration_points; ip++)
164 for (
unsigned ip = 0; ip < n_integration_points; ip++)
176 &Self::current_states_, &Self::output_data_);
183 std::vector<typename ConstitutiveTraits::StatefulData>
186 std::vector<typename ConstitutiveTraits::StatefulDataPrev>
prev_states_;
196 typename ConstitutiveTraits::SolidConstitutiveRelation
const&
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
std::size_t getID() const
Returns the ID of the element.
unsigned getIntegrationOrder() const
unsigned getNumberOfPoints() const
std::size_t reflectSetIPData(std::string_view const name, double const *values, std::vector< IPData > &ip_data_vector)
auto reflectWithoutName(Accessors &&... accessors)
KV::KelvinVectorType< DisplacementDim > KelvinVector
std::size_t setIntegrationPointDataMaterialStateVariables(double const *values, IntegrationPointDataVector &ip_data_vector, MemberType member, std::function< std::span< double >(MaterialStateVariables &)> get_values_span)
std::vector< double > getIntegrationPointDataMaterialStateVariables(IntegrationPointDataVector const &ip_data_vector, MemberType member, std::function< std::span< double >(MaterialStateVariables &)> get_values_span, int const n_components)
bool const is_axially_symmetric_
NumLib::GenericIntegrationMethod const & integration_method_
int getMaterialID() const
std::vector< typename ConstitutiveTraits::OutputData > output_data_
ThermoRichardsMechanicsProcessData< DisplacementDim, ConstitutiveTraits > & process_data_
unsigned getNumberOfIntegrationPoints() const
LocalAssemblerInterface(MeshLib::Element const &e, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< DisplacementDim, ConstitutiveTraits > &process_data)
std::vector< double > getMaterialStateVariableInternalState(std::function< std::span< double >(typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables &)> const &get_values_span, int const &n_components) const
std::vector< typename ConstitutiveTraits::StatefulDataPrev > prev_states_
std::vector< MaterialStateData< DisplacementDim > > material_states_
static auto getReflectionDataForOutput()
void postTimestepConcrete(Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const) override
ConstitutiveTraits::SolidConstitutiveRelation const & solid_material_
std::vector< typename ConstitutiveTraits::StatefulData > current_states_
std::size_t setIPDataInitialConditions(std::string_view name, double const *values, int const integration_order)
MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const & getMaterialStateVariablesAt(unsigned integration_point) const
MeshLib::Element const & element_