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}
17namespace MaterialPropertyLib
18{
23class Phase final
24{
25public:
27 Phase(std::string&& phase_name,
28 std::vector<std::unique_ptr<Component>>&& components,
29 std::unique_ptr<PropertyArray>&& properties);
30
33 Component const& component(std::size_t const& index) const;
34 bool hasComponent(std::size_t const& index) const;
35
37 Component const& component(std::string const& name) const;
38
41 Property const& property(PropertyType const& p) const;
42
43 Property const& operator[](PropertyType const& p) const;
44
45 bool hasProperty(PropertyType const& p) const;
46
48 std::size_t numberOfComponents() const;
49
51 std::string description() const;
52
53public:
54 std::string const name;
55
56private:
57 std::vector<std::unique_ptr<Component>> const components_;
58
65};
66
68 Phase const& phase,
69 std::span<PropertyType const> const required_properties);
70
71} // namespace MaterialPropertyLib
This class defines components (substances).
Definition Component.h:18
Property const & property(PropertyType const &p) const
Definition Phase.cpp:44
PropertyArray properties_
Definition Phase.h:64
std::string const name
Definition Phase.h:54
std::string description() const
Short description of the phase with its name.
Definition Phase.cpp:70
std::size_t numberOfComponents() const
A get-function for retrieving the number of components in this phase.
Definition Phase.cpp:65
std::vector< std::unique_ptr< Component > > const components_
Definition Phase.h:57
Property const & operator[](PropertyType const &p) const
Definition Phase.cpp:55
bool hasProperty(PropertyType const &p) const
Definition Phase.cpp:60
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.
Definition Phase.cpp:13
bool hasComponent(std::size_t const &index) const
Definition Phase.cpp:29
Component const & component(std::size_t const &index) const
Definition Phase.cpp:24
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