21 #ifndef _aspect_material_model_compositing_h 22 #define _aspect_material_model_compositing_h 33 namespace MaterialModel
95 parse_parameters (ParameterHandler &prm)
override;
102 bool is_compressible ()
const override;
121 copy_required_properties(
const unsigned int model_index,
136 std::vector<std::unique_ptr<Interface<dim>>>
models;
143 template <
typename TestType,
int dim>
150 if (Plugins::plugin_type_matches<TestType>(plugin))
154 if (
const auto *compositing =
157 const auto &submodel = compositing->get_model_for_property(property);
158 if (Plugins::plugin_type_matches<TestType>(submodel))
169 template <
typename TestType,
int dim>
176 if (Plugins::plugin_type_matches<TestType>(plugin))
177 return Plugins::get_plugin_as_type<TestType>(plugin);
180 if (
const auto *compositing =
183 const auto &submodel = compositing->get_model_for_property(property);
184 return Plugins::get_plugin_as_type<TestType>(submodel);
188 ExcMessage(
"Could not find requested plugin type."));
190 return *
static_cast<const TestType *
>(
nullptr);
const TestType & get_material_model_matches_or_uses(const MaterialModel::Interface< dim > &plugin, const Property::MaterialProperty property)
bool material_model_matches_or_uses(const MaterialModel::Interface< dim > &plugin, const Property::MaterialProperty property)
std::vector< std::string > model_names
std::map< Property::MaterialProperty, unsigned int > model_property_map
void declare_parameters(ParameterHandler &prm)
std::vector< std::unique_ptr< Interface< dim > > > models