32 template <
int DisplacementDim>
35 constitutive_relations,
37 std::size_t
const element_id)
40 if (constitutive_relations.size() == 1 || material_ids ==
nullptr)
46 material_id = (*material_ids)[element_id];
49 auto const constitutive_relation = constitutive_relations.find(material_id);
50 if (constitutive_relation == end(constitutive_relations))
53 "No constitutive relation found for material id {:d} and element "
54 "{:d}. There are {:d} constitutive relations available.",
55 material_id, element_id, constitutive_relations.size());
58 if (constitutive_relation->second ==
nullptr)
61 "The constitutive relation found for material id {:d} and element "
62 "{:d} is a nullptr, which is impossible.",
63 material_id, element_id);
66 return *constitutive_relation->second;
MechanicsBase< DisplacementDim > & selectSolidConstitutiveRelation(std::map< int, std::unique_ptr< MechanicsBase< DisplacementDim >>> const &constitutive_relations, MeshLib::PropertyVector< int > const *const material_ids, std::size_t const element_id)