Skip to content
Snippets Groups Projects
Commit e7ee1bcb authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[AL] Extract parseMaterialIdString()

parent b5408eaa
No related branches found
No related tags found
No related merge requests found
...@@ -356,6 +356,33 @@ std::vector<GeoLib::NamedRaster> readRasters( ...@@ -356,6 +356,33 @@ std::vector<GeoLib::NamedRaster> readRasters(
// } // }
//} //}
std::vector<int> parseMaterialIdString(
std::string const& material_id_string,
MeshLib::PropertyVector<int> const* const material_ids)
{
if (material_id_string == "*")
{
if (material_ids == nullptr)
{
OGS_FATAL(
"MaterialIDs property is not defined in the mesh but it is "
"required to parse '*' definition.");
}
std::vector<int> material_ids_of_this_medium =
*material_ids |
ranges::views::adjacent_remove_if(std::equal_to<>()) |
ranges::to_vector;
BaseLib::makeVectorUnique(material_ids_of_this_medium);
DBUG("Catch all medium definition for material ids {}.",
fmt::join(material_ids_of_this_medium, ", "));
return material_ids_of_this_medium;
}
// Usual case of ids separated by comma.
return BaseLib::splitMaterialIdString(material_id_string);
}
} // namespace } // namespace
ProjectData::ProjectData() = default; ProjectData::ProjectData() = default;
...@@ -565,26 +592,9 @@ void ProjectData::parseMedia( ...@@ -565,26 +592,9 @@ void ProjectData::parseMedia(
//! \ogs_file_attr{prj__media__medium__id} //! \ogs_file_attr{prj__media__medium__id}
medium_config.getConfigAttribute<std::string>("id", "0"); medium_config.getConfigAttribute<std::string>("id", "0");
std::vector<int> material_ids_of_this_medium; std::vector<int> const material_ids_of_this_medium =
if (material_id_string == "*") parseMaterialIdString(material_id_string,
{ materialIDs(*_mesh_vec[0]));
auto const* const material_ids = materialIDs(*_mesh_vec[0]);
if (material_ids != nullptr)
{
material_ids_of_this_medium =
*material_ids |
ranges::views::adjacent_remove_if(std::equal_to<>()) |
ranges::to_vector;
BaseLib::makeVectorUnique(material_ids_of_this_medium);
DBUG("Catch all medium definition for material ids {}.",
fmt::join(material_ids_of_this_medium, ", "));
}
}
else
{
material_ids_of_this_medium =
BaseLib::splitMaterialIdString(material_id_string);
}
for (auto const& id : material_ids_of_this_medium) for (auto const& id : material_ids_of_this_medium)
{ {
......
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