From 11bee9b30942a604833f466a3e605e55a4ff74d9 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Fri, 4 Oct 2024 13:14:29 +0200
Subject: [PATCH] [LF] Extract Constant-type density check

Also avoid compiler warning warning: expression with side effects will be evaluated despite being used as an operand to 'typeid' [-Wpotentially-evaluated-expression]
---
 .../LiquidFlow/CreateLiquidFlowProcess.cpp    | 27 ++++++++++++-------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp
index 09dccd17f16..9ee99a2e755 100644
--- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp
+++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp
@@ -73,25 +73,32 @@ void checkMPLProperties(
         MaterialPropertyLib::PropertyType::viscosity,
         MaterialPropertyLib::PropertyType::density};
 
-    for (auto const& element_id : mesh.getElements() | MeshLib::views::ids)
+    // Check Constant-type density.
+    if (is_equation_type_volume)
     {
-        auto const& medium = *media_map.getMedium(element_id);
-        checkRequiredProperties(medium, required_medium_properties);
-        checkRequiredProperties(fluidPhase(medium), required_liquid_properties);
-
-        if (element_id == 0 && is_equation_type_volume)
+        for (auto const& element_id : mesh.getElements() | MeshLib::views::ids)
         {
-            auto const& fluid_phase = fluidPhase(medium);
-            if (typeid(fluid_phase[MaterialPropertyLib::PropertyType::density])
-                    .name() != typeid(MaterialPropertyLib::Constant).name())
+            auto const& medium = *media_map.getMedium(element_id);
+            auto const& fluid_phase_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, "
+                    "phase density type must be `Constant`. Note: by "
+                    "default, "
                     "`equation_balance_type` is set to `volume`.");
             }
         }
     }
+
+    for (auto const& element_id : mesh.getElements() | MeshLib::views::ids)
+    {
+        auto const& medium = *media_map.getMedium(element_id);
+        checkRequiredProperties(medium, required_medium_properties);
+        checkRequiredProperties(fluidPhase(medium), required_liquid_properties);
+    }
     DBUG("Media properties verified.");
 }
 
-- 
GitLab