From 3b51218a32b1a358b90bc77cde58cde9800edef6 Mon Sep 17 00:00:00 2001
From: Florian Zill <florian.zill@ufz.de>
Date: Mon, 3 Feb 2020 16:50:59 +0100
Subject: [PATCH] [ML/MPL] check if element has medium

---
 MaterialLib/MPL/MaterialSpatialDistributionMap.cpp | 14 ++++++++++++++
 MaterialLib/MPL/MaterialSpatialDistributionMap.h   |  1 +
 2 files changed, 15 insertions(+)

diff --git a/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp b/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp
index 8687d1f845e..04971b5ad0b 100644
--- a/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp
+++ b/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp
@@ -21,4 +21,18 @@ Medium* MaterialSpatialDistributionMap::getMedium(std::size_t const element_id)
 
     return _media.at(material_id).get();
 }
+
+void MaterialSpatialDistributionMap::checkElementHasMedium(std::size_t const element_id)
+{
+    auto const material_id =
+            _material_ids == nullptr ? 0 : (*_material_ids)[element_id];
+    if (_media.find(material_id) == _media.end())
+    {
+        OGS_FATAL(
+                "There is no medium definition for element %d with material "
+                "ID %d. Please define a medium for each material.",
+                element_id, material_id);
+    }
+}
+
 }  // namespace MaterialPropertyLib
diff --git a/MaterialLib/MPL/MaterialSpatialDistributionMap.h b/MaterialLib/MPL/MaterialSpatialDistributionMap.h
index f51f94a0d3d..06c937bff1a 100644
--- a/MaterialLib/MPL/MaterialSpatialDistributionMap.h
+++ b/MaterialLib/MPL/MaterialSpatialDistributionMap.h
@@ -36,6 +36,7 @@ public:
     }
 
     Medium* getMedium(std::size_t element_id);
+    void checkElementHasMedium(std::size_t const element_id);
 
 private:
     std::map<int, std::shared_ptr<Medium>> const& _media;
-- 
GitLab