From a2139ccba9cdbbc647d2a71f5dc2a8af8f79cf33 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Wed, 7 Aug 2024 12:00:54 +0200
Subject: [PATCH] [PL/HTBHE] Constexpr static is_power_bc

---
 ProcessLib/HeatTransportBHE/BHE/BHECommon.h   |  2 +-
 .../BHE/CreateFlowAndTemperatureControl.cpp   | 31 +++++--------------
 .../BHE/FlowAndTemperatureControl.h           | 14 ++++-----
 3 files changed, 15 insertions(+), 32 deletions(-)

diff --git a/ProcessLib/HeatTransportBHE/BHE/BHECommon.h b/ProcessLib/HeatTransportBHE/BHE/BHECommon.h
index 0c0574cc488..a084529ae24 100644
--- a/ProcessLib/HeatTransportBHE/BHE/BHECommon.h
+++ b/ProcessLib/HeatTransportBHE/BHE/BHECommon.h
@@ -43,7 +43,7 @@ struct BHECommon
     GroutParameters const grout;
     FlowAndTemperatureControl const flowAndTemperatureControl;
     bool const use_python_bcs;
-    bool isPowerBC() const
+    constexpr bool isPowerBC() const
     {
         return std::visit([](auto const& ftc) { return ftc.is_power_bc; },
                           flowAndTemperatureControl);
diff --git a/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp b/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp
index 57ca51b21e4..ced0293262d 100644
--- a/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp
+++ b/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp
@@ -42,10 +42,7 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
             config.getConfigParameter<std::string>("temperature_curve"),
             "Required temperature curve not found.");
 
-        auto const is_power_bc = false;
-
-        return TemperatureCurveConstantFlow{flow_rate, temperature_curve,
-                                            is_power_bc};
+        return TemperatureCurveConstantFlow{flow_rate, temperature_curve};
     }
     if (type == "TemperatureCurveFlowCurve")
     {
@@ -61,10 +58,7 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
             config.getConfigParameter<std::string>("temperature_curve"),
             "Required temperature curve not found.");
 
-        auto const is_power_bc = false;
-
-        return TemperatureCurveFlowCurve{flow_rate_curve, temperature_curve,
-                                         is_power_bc};
+        return TemperatureCurveFlowCurve{flow_rate_curve, temperature_curve};
     }
     if (type == "FixedPowerConstantFlow")
     {
@@ -74,11 +68,9 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
         //! \ogs_file_param{prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__FixedPowerConstantFlow__flow_rate}
         auto const flow_rate = config.getConfigParameter<double>("flow_rate");
 
-        auto const is_power_bc = true;
-
         return FixedPowerConstantFlow{flow_rate, power,
                                       refrigerant.specific_heat_capacity,
-                                      refrigerant.density, is_power_bc};
+                                      refrigerant.density};
     }
 
     if (type == "FixedPowerFlowCurve")
@@ -92,11 +84,9 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
         //! \ogs_file_param{prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__FixedPowerFlowCurve__power}
         auto const power = config.getConfigParameter<double>("power");
 
-        auto const is_power_bc = true;
-
         return FixedPowerFlowCurve{flow_rate_curve, power,
                                    refrigerant.specific_heat_capacity,
-                                   refrigerant.density, is_power_bc};
+                                   refrigerant.density};
     }
 
     if (type == "PowerCurveConstantFlow")
@@ -110,11 +100,9 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
         //! \ogs_file_param{prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__PowerCurveConstantFlow__flow_rate}
         auto const flow_rate = config.getConfigParameter<double>("flow_rate");
 
-        auto const is_power_bc = true;
-
         return PowerCurveConstantFlow{power_curve, flow_rate,
                                       refrigerant.specific_heat_capacity,
-                                      refrigerant.density, is_power_bc};
+                                      refrigerant.density};
     }
 
     if (type == "PowerCurveFlowCurve")
@@ -131,11 +119,9 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
             config.getConfigParameter<std::string>("flow_rate_curve"),
             "Required flow rate curve not found.");
 
-        auto const is_power_bc = false;
-
         return PowerCurveFlowCurve{power_curve, flow_rate_curve,
                                    refrigerant.specific_heat_capacity,
-                                   refrigerant.density, is_power_bc};
+                                   refrigerant.density};
     }
 
     if (type == "BuildingPowerCurveConstantFlow")
@@ -158,12 +144,9 @@ FlowAndTemperatureControl createFlowAndTemperatureControl(
         //! \ogs_file_param{prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__BuildingPowerCurveConstantFlow__flow_rate}
         auto const flow_rate = config.getConfigParameter<double>("flow_rate");
 
-        auto const is_power_bc = true;
-
         return BuildingPowerCurveConstantFlow{
             building_power_curves, flow_rate,
-            refrigerant.specific_heat_capacity, refrigerant.density,
-            is_power_bc};
+            refrigerant.specific_heat_capacity, refrigerant.density};
     }
     OGS_FATAL("FlowAndTemperatureControl type '{:s}' is not implemented.",
               type);
diff --git a/ProcessLib/HeatTransportBHE/BHE/FlowAndTemperatureControl.h b/ProcessLib/HeatTransportBHE/BHE/FlowAndTemperatureControl.h
index d0f384a721a..06f47752712 100644
--- a/ProcessLib/HeatTransportBHE/BHE/FlowAndTemperatureControl.h
+++ b/ProcessLib/HeatTransportBHE/BHE/FlowAndTemperatureControl.h
@@ -35,7 +35,7 @@ struct TemperatureCurveConstantFlow
     }
     double flow_rate;
     MathLib::PiecewiseLinearInterpolation const& temperature_curve;
-    bool const is_power_bc = false;
+    static constexpr bool is_power_bc = false;
 };
 
 struct TemperatureCurveFlowCurve
@@ -48,7 +48,7 @@ struct TemperatureCurveFlowCurve
     }
     MathLib::PiecewiseLinearInterpolation const& flow_rate_curve;
     MathLib::PiecewiseLinearInterpolation const& temperature_curve;
-    bool const is_power_bc = false;
+    static constexpr bool is_power_bc = false;
 };
 
 struct FixedPowerConstantFlow
@@ -62,7 +62,7 @@ struct FixedPowerConstantFlow
     double power;  // Value is expected to be in Watt.
     double heat_capacity;
     double density;
-    bool const is_power_bc = true;
+    static constexpr bool is_power_bc = true;
 };
 
 struct FixedPowerFlowCurve
@@ -77,7 +77,7 @@ struct FixedPowerFlowCurve
     double power;  // Value is expected to be in Watt.
     double heat_capacity;
     double density;
-    bool const is_power_bc = true;
+    static constexpr bool is_power_bc = true;
 };
 
 struct PowerCurveConstantFlow
@@ -96,7 +96,7 @@ struct PowerCurveConstantFlow
     double flow_rate;
     double heat_capacity;
     double density;
-    bool const is_power_bc = true;
+    static constexpr bool is_power_bc = true;
 };
 
 struct PowerCurveFlowCurve
@@ -116,7 +116,7 @@ struct PowerCurveFlowCurve
 
     double heat_capacity;
     double density;
-    bool const is_power_bc = true;
+    static constexpr bool is_power_bc = true;
 };
 
 struct BuildingPowerCurveConstantFlow
@@ -140,7 +140,7 @@ struct BuildingPowerCurveConstantFlow
     double flow_rate;
     double heat_capacity;
     double density;
-    bool const is_power_bc = true;
+    static constexpr bool is_power_bc = true;
 };
 
 using FlowAndTemperatureControl = std::variant<TemperatureCurveConstantFlow,
-- 
GitLab