21 #ifndef _aspect_material_model_compositing_h
22 #define _aspect_material_model_compositing_h
33 namespace MaterialModel
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);
bool is_compressible() const override
const Interface< dim > & get_model_for_property(const Property::MaterialProperty property) const
std::vector< std::unique_ptr< Interface< dim > > > models
void parse_parameters(ParameterHandler &prm) override
void copy_required_properties(const unsigned int model_index, const typename Interface< dim >::MaterialModelOutputs &base_output, typename Interface< dim >::MaterialModelOutputs &out) const
static void declare_parameters(ParameterHandler &prm)
std::map< Property::MaterialProperty, unsigned int > model_property_map
void create_additional_named_outputs(typename Interface< dim >::MaterialModelOutputs &outputs) const override
void initialize() override
std::vector< std::string > model_names
void evaluate(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out) const override
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
@ thermal_expansion_coefficient
@ entropy_derivative_pressure
@ entropy_derivative_temperature
bool material_model_matches_or_uses(const MaterialModel::Interface< dim > &plugin, const Property::MaterialProperty property)
const TestType & get_material_model_matches_or_uses(const MaterialModel::Interface< dim > &plugin, const Property::MaterialProperty property)