From db04b9f70c4d7fe076c48bcfeeaac2d02010740c Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <github@naumov.de> Date: Wed, 10 Nov 2021 12:35:39 +0100 Subject: [PATCH] [MPL] Add material id to medium's description. --- Applications/ApplicationsLib/ProjectData.cpp | 3 ++- MaterialLib/MPL/CreateMedium.cpp | 4 +++- MaterialLib/MPL/CreateMedium.h | 1 + MaterialLib/MPL/Medium.cpp | 9 +++++---- MaterialLib/MPL/Medium.h | 9 +++++++-- Tests/MaterialLib/TestMPL.cpp | 4 ++-- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index 1d0c60c2240..434869390cd 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -488,7 +488,8 @@ void ProjectData::parseMedia( if (id == material_ids_of_this_medium[0]) { _media[id] = MaterialPropertyLib::createMedium( - _mesh_vec[0]->getDimension(), medium_config, _parameters, + id, _mesh_vec[0]->getDimension(), medium_config, + _parameters, _local_coordinate_system ? &*_local_coordinate_system : nullptr, _curves); diff --git a/MaterialLib/MPL/CreateMedium.cpp b/MaterialLib/MPL/CreateMedium.cpp index 388b910a249..b563262dce3 100644 --- a/MaterialLib/MPL/CreateMedium.cpp +++ b/MaterialLib/MPL/CreateMedium.cpp @@ -22,6 +22,7 @@ namespace MaterialPropertyLib { std::unique_ptr<Medium> createMedium( + int const material_id, int const geometry_dimension, BaseLib::ConfigTree const& config, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, @@ -49,7 +50,8 @@ std::unique_ptr<Medium> createMedium( OGS_FATAL("Neither tag <phases> nor tag <properties> has been found."); } - return std::make_unique<Medium>(std::move(phases), std::move(properties)); + return std::make_unique<Medium>(material_id, std::move(phases), + std::move(properties)); } } // namespace MaterialPropertyLib diff --git a/MaterialLib/MPL/CreateMedium.h b/MaterialLib/MPL/CreateMedium.h index 8e8587e02c4..bf84ddbb10d 100644 --- a/MaterialLib/MPL/CreateMedium.h +++ b/MaterialLib/MPL/CreateMedium.h @@ -42,6 +42,7 @@ namespace MaterialPropertyLib /// Medium properties are optional. If not defined, default properties are /// assigned. std::unique_ptr<Medium> createMedium( + int const material_id, int const geometry_dimension, BaseLib::ConfigTree const& config, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, diff --git a/MaterialLib/MPL/Medium.cpp b/MaterialLib/MPL/Medium.cpp index f995c260241..aeb3f0c402d 100644 --- a/MaterialLib/MPL/Medium.cpp +++ b/MaterialLib/MPL/Medium.cpp @@ -17,9 +17,10 @@ namespace MaterialPropertyLib { -Medium::Medium(std::vector<std::unique_ptr<Phase>>&& phases, +Medium::Medium(int const material_id, + std::vector<std::unique_ptr<Phase>>&& phases, std::unique_ptr<PropertyArray>&& properties) - : phases_(std::move(phases)) + : phases_(std::move(phases)), material_id_(material_id) { if (properties) { @@ -74,9 +75,9 @@ std::size_t Medium::numberOfPhases() const return phases_.size(); } -std::string Medium::description() +std::string Medium::description() const { - return "medium"; + return "medium " + std::to_string(material_id_); } Phase const& fluidPhase(Medium const& medium) diff --git a/MaterialLib/MPL/Medium.h b/MaterialLib/MPL/Medium.h index 44636acd048..5c58be939bd 100644 --- a/MaterialLib/MPL/Medium.h +++ b/MaterialLib/MPL/Medium.h @@ -31,7 +31,8 @@ namespace MaterialPropertyLib class Medium final { public: - Medium(std::vector<std::unique_ptr<Phase>>&& phases, + Medium(int const material_id, + std::vector<std::unique_ptr<Phase>>&& phases, std::unique_ptr<PropertyArray>&& properties); /// A get-function for a particular phase. The ul argument specifies the @@ -56,7 +57,7 @@ public: std::size_t numberOfPhases() const; /// Short description of the medium. - static std::string description(); + std::string description() const; template <typename T> T value(PropertyType const p) const @@ -98,6 +99,10 @@ private: /// Most properties are fine with the volume fraction average, but /// special-defaults are allowed as well... PropertyArray properties_; + + /// The first material id for which the medium was created. Used in the + /// description. + int const material_id_; }; template <typename Container> diff --git a/Tests/MaterialLib/TestMPL.cpp b/Tests/MaterialLib/TestMPL.cpp index 8539ae9b448..688ec60e15a 100644 --- a/Tests/MaterialLib/TestMPL.cpp +++ b/Tests/MaterialLib/TestMPL.cpp @@ -38,8 +38,8 @@ std::unique_ptr<MPL::Medium> createTestMaterial( std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> curves; - return MPL::createMedium(geometry_dimension, config, parameters, - local_coordinate_system, curves); + return MPL::createMedium(0 /*material id*/, geometry_dimension, config, + parameters, local_coordinate_system, curves); } std::unique_ptr<MaterialPropertyLib::Property> createTestProperty( -- GitLab