23 std::vector<std::unique_ptr<Component>>&& components,
24 std::unique_ptr<PropertyArray>&& properties)
25 :
name(std::move(phase_name)), components_(std::move(components))
48 std::unique_ptr<MaterialPropertyLib::Component>
const&
component)
50 [&]() {
OGS_FATAL(
"Could not find component named '{:s}.'",
name); });
58 OGS_FATAL(
"Trying to access undefined property '{:s}' of {:s}",
81 return "phase '" +
name +
"'";
85 Phase const& phase, std::span<PropertyType const>
const required_properties)
87 for (
auto const& p : required_properties)
91 OGS_FATAL(
"The property '{:s}' is missing in the {:s} phase.",
This class defines components (substances).
Property const & property(PropertyType const &p) const
PropertyArray properties_
std::string description() const
Short description of the phase with its name.
std::size_t numberOfComponents() const
A get-function for retrieving the number of components in this phase.
std::vector< std::unique_ptr< Component > > const components_
Property const & operator[](PropertyType const &p) const
bool hasProperty(PropertyType const &p) const
Phase(std::string &&phase_name, std::vector< std::unique_ptr< Component > > &&components, std::unique_ptr< PropertyArray > &&properties)
The Phase constructor is called with the optional phase name.
bool hasComponent(std::size_t const &index) const
Component const & component(std::size_t const &index) const
ranges::range_reference_t< Range > findElementOrError(Range &range, std::predicate< ranges::range_reference_t< Range > > auto &&predicate, std::invocable auto error_callback)
void overwriteExistingProperties(PropertyArray &properties, PropertyArray &new_properties, std::variant< Medium *, Phase *, Component * > scale_pointer)
void checkRequiredProperties(Component const &c, std::span< PropertyType const > const required_properties)
static const std::array< std::string, PropertyType::number_of_properties > property_enum_to_string