14 #include <boost/algorithm/string/predicate.hpp>
25 int const geometry_dimension,
27 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
30 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>>
const&
39 if (component_name.empty())
41 OGS_FATAL(
"Component name is a mandatory field and cannot be empty.");
52 local_coordinate_system, curves);
56 if (boost::iequals(component_name,
"water"))
58 return std::make_unique<Water>(std::move(properties));
66 OGS_FATAL(
"No Properties defined for unspecified component");
69 return std::make_unique<Component>(component_name, std::move(properties));
76 int const geometry_dimension,
77 std::optional<BaseLib::ConfigTree>
const& config,
78 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
81 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>>
const&
89 std::vector<std::unique_ptr<Component>> components;
91 auto const& component_config :
93 config->getConfigSubtreeList(
"component"))
97 local_coordinate_system, curves);
99 if (std::find_if(components.begin(),
101 [component_name = component->name](
auto const&
c) {
102 return c->name == component_name;
103 }) != components.end())
106 "Found duplicates with the same component name tag '{:s}'.",
110 components.push_back(std::move(component));
Definition of the PiecewiseLinearInterpolation class.
std::optional< ConfigTree > getConfigSubtreeOptional(std::string const &root) const
T getConfigParameter(std::string const ¶m) const
std::vector< std::unique_ptr< Component > > createComponents(int const geometry_dimension, std::optional< BaseLib::ConfigTree > const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)
std::unique_ptr< PropertyArray > createProperties(int const geometry_dimension, std::optional< BaseLib::ConfigTree > const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)
std::unique_ptr< MaterialPropertyLib::Component > createComponent(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)