Skip to content
Snippets Groups Projects
Commit 18f03747 authored by renchao.lu's avatar renchao.lu
Browse files

[MatL/MPL] Check uniqueness of phases and components.

parent a8deef1c
No related branches found
No related tags found
No related merge requests found
......@@ -72,10 +72,6 @@ std::vector<std::unique_ptr<Component>> createComponents(
}
std::vector<std::unique_ptr<Component>> components;
// Collect component's names to avoid duplicate components.
std::set<std::string> component_names;
for (
auto const& component_config :
//! \ogs_file_param{prj__media__medium__phases__phase__components__component}
......@@ -83,10 +79,11 @@ std::vector<std::unique_ptr<Component>> createComponents(
{
auto component = createComponent(component_config);
bool new_insertion = false;
std::tie(std::ignore, new_insertion) =
component_names.insert(component->name());
if (!new_insertion)
if (std::find_if(components.begin(),
components.end(),
[component_name = component->name()](auto const& c) {
return c->name() == component_name;
}) != components.end())
{
OGS_FATAL("Found duplicates with the same component name tag '%s'.",
component->name().c_str());
......@@ -94,6 +91,7 @@ std::vector<std::unique_ptr<Component>> createComponents(
components.push_back(std::move(component));
}
return components;
}
} // namespace MaterialPropertyLib
......@@ -88,18 +88,16 @@ std::vector<std::unique_ptr<Phase>> createPhases(
}
std::vector<std::unique_ptr<Phase>> phases;
std::set<std::string> phase_names;
//! \ogs_file_param{prj__media__medium__phases__phase}
for (auto phase_config : config->getConfigSubtreeList("phase"))
{
auto phase = createPhase(phase_config);
bool new_insertion = false;
std::tie(std::ignore, new_insertion) =
phase_names.insert(phase->name());
if (!new_insertion)
if (std::find_if(phases.begin(),
phases.end(),
[phase_name = phase->name()](auto const& p) {
return p->name() == phase_name;
}) != phases.end())
{
OGS_FATAL("Found duplicates with the same phase name tag '%s'.",
phase->name().c_str());
......@@ -107,6 +105,7 @@ std::vector<std::unique_ptr<Phase>> createPhases(
phases.push_back(std::move(phase));
}
return phases;
}
} // namespace MaterialPropertyLib
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment