OGS
Phase.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <memory>
7#include <span>
8#include <string>
9#include <vector>
10
11#include "Component.h"
12
13namespace MaterialPropertyLib
14{
15class Property;
16
25
27[[nodiscard]] std::string_view toString(PhaseName phase_name);
28
30[[nodiscard]] PhaseName fromString(std::string const& phase_name);
31
36class Phase final
37{
38public:
40 Phase(PhaseName phase_name,
41 std::vector<std::unique_ptr<Component>>&& components,
42 std::unique_ptr<PropertyArray>&& properties);
43
46 Component const& component(std::size_t const& index) const;
47 bool hasComponent(std::size_t const& index) const;
48
50 Component const& component(std::string const& name) const;
51
54 Property const& property(PropertyType const& p) const;
55
56 Property const& operator[](PropertyType const& p) const;
57
58 bool hasProperty(PropertyType const& p) const;
59
61 std::size_t numberOfComponents() const;
62
64 std::string description() const;
65
66public:
68
69private:
70 std::vector<std::unique_ptr<Component>> const components_;
71
78};
79
81 Phase const& phase,
82 std::span<PropertyType const> const required_properties);
83
84} // namespace MaterialPropertyLib
This class defines components (substances).
Definition Component.h:18
Property const & property(PropertyType const &p) const
Definition Phase.cpp:81
PropertyArray properties_
Definition Phase.h:77
std::string description() const
Short description of the phase with its name.
Definition Phase.cpp:107
std::size_t numberOfComponents() const
A get-function for retrieving the number of components in this phase.
Definition Phase.cpp:102
std::vector< std::unique_ptr< Component > > const components_
Definition Phase.h:70
Property const & operator[](PropertyType const &p) const
Definition Phase.cpp:92
bool hasProperty(PropertyType const &p) const
Definition Phase.cpp:97
bool hasComponent(std::size_t const &index) const
Definition Phase.cpp:66
PhaseName const phaseName
Definition Phase.h:67
Component const & component(std::size_t const &index) const
Definition Phase.cpp:61
Phase(PhaseName phase_name, std::vector< std::unique_ptr< Component > > &&components, std::unique_ptr< PropertyArray > &&properties)
The Phase constructor is called with the phase type enum.
Definition Phase.cpp:50
PhaseName fromString(std::string const &phase_name)
Convert string to phase enum. Throws if invalid phase name.
Definition Phase.cpp:29
void checkRequiredProperties(Component const &c, std::span< PropertyType const > const required_properties)
Definition Component.cpp:51
std::array< std::unique_ptr< Property >, PropertyType::number_of_properties > PropertyArray
PhaseName
Enumeration of phase types.
Definition Phase.h:19
std::string_view toString(PhaseName phase_name)
Convert phase enum to its string representation.
Definition Phase.cpp:13