Skip to content
Snippets Groups Projects
Commit 8b55aa8c authored by wenqing's avatar wenqing
Browse files

[LF] Check medium properties using medium map only instead of

 using both medium map and mesh elements.
parent 11bee9b3
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,7 @@
#include <map>
#include <memory>
#include <range/v3/view.hpp>
#include <vector>
namespace MeshLib
......@@ -35,6 +36,8 @@ public:
{
}
auto media() const { return media_ | ranges::views::values; }
Medium* getMedium(std::size_t element_id);
Medium const* getMedium(std::size_t element_id) const;
void checkElementHasMedium(std::size_t const element_id) const;
......
......@@ -45,10 +45,9 @@ void checkMPLProperties(
// Collect phases of all elements...
auto all_phases =
mesh.getElements() | MeshLib::views::ids |
ranges::views::transform(
[&](auto const& element_id)
{ return &fluidPhase(*media_map.getMedium(element_id)); }) |
media_map.media() |
ranges::views::transform([&](auto const& medium)
{ return &fluidPhase(*medium); }) |
ranges::to_vector;
assert(!all_phases.empty());
......@@ -76,28 +75,27 @@ void checkMPLProperties(
// Check Constant-type density.
if (is_equation_type_volume)
{
for (auto const& element_id : mesh.getElements() | MeshLib::views::ids)
for (auto const& medium : media_map.media())
{
auto const& medium = *media_map.getMedium(element_id);
// auto const& medium = *media_map.getMedium(element_id);
auto const& fluid_phase_density =
fluidPhase(medium)[MaterialPropertyLib::PropertyType::density];
fluidPhase(*medium)[MaterialPropertyLib::PropertyType::density];
if (typeid(fluid_phase_density) !=
typeid(MaterialPropertyLib::Constant))
{
OGS_FATAL(
"Since `equation_balance_type` is set to `volume`,the "
"phase density type must be `Constant`. Note: by "
"default, "
"`equation_balance_type` is set to `volume`.");
"default, `equation_balance_type` is set to `volume`.");
}
}
}
for (auto const& element_id : mesh.getElements() | MeshLib::views::ids)
for (auto const& medium : media_map.media())
{
auto const& medium = *media_map.getMedium(element_id);
checkRequiredProperties(medium, required_medium_properties);
checkRequiredProperties(fluidPhase(medium), required_liquid_properties);
checkRequiredProperties(*medium, required_medium_properties);
checkRequiredProperties(fluidPhase(*medium),
required_liquid_properties);
}
DBUG("Media properties verified.");
}
......
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