From 16c492025c17262f60a69bd7b81438ffe114763b Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Tue, 11 Sep 2018 09:50:12 +0200
Subject: [PATCH] [PL] Check 'do flux-calc.' outside of create flux.

---
 ProcessLib/CalculateSurfaceFlux/Balance.h       | 17 +++++------------
 .../CreateGroundwaterFlowProcess.cpp            | 11 +++++++++--
 ProcessLib/HT/CreateHTProcess.cpp               | 11 +++++++++--
 3 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/ProcessLib/CalculateSurfaceFlux/Balance.h b/ProcessLib/CalculateSurfaceFlux/Balance.h
index 9b0fae43d08..ed97d64bfab 100644
--- a/ProcessLib/CalculateSurfaceFlux/Balance.h
+++ b/ProcessLib/CalculateSurfaceFlux/Balance.h
@@ -46,28 +46,21 @@ struct Balance
             output_mesh_file_name.c_str());
     }
 
-    static std::unique_ptr<Balance> createBalance(
-        BaseLib::ConfigTree const& config,
+    static std::unique_ptr<ProcessLib::Balance> createBalance(
+        BaseLib::ConfigTree const& calculatesurfaceflux_config,
         std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
         std::string const& output_directory)
     {
-        auto calculatesurfaceflux_config =
-            //! \ogs_file_param{prj__processes__process__calculatesurfaceflux}
-            config.getConfigSubtreeOptional("calculatesurfaceflux");
-        if (!calculatesurfaceflux_config)
-            return std::unique_ptr<Balance>(nullptr);
-
         std::string mesh_name =
             //! \ogs_file_param{prj__processes__process__calculatesurfaceflux__mesh}
-            calculatesurfaceflux_config->getConfigParameter<std::string>(
-                "mesh");
+            calculatesurfaceflux_config.getConfigParameter<std::string>("mesh");
         std::string balance_pv_name =
             //! \ogs_file_param{prj__processes__process__calculatesurfaceflux__property_name}
-            calculatesurfaceflux_config->getConfigParameter<std::string>(
+            calculatesurfaceflux_config.getConfigParameter<std::string>(
                 "property_name");
         std::string balance_out_fname =
             //! \ogs_file_param{prj__processes__process__calculatesurfaceflux__output_mesh}
-            calculatesurfaceflux_config->getConfigParameter<std::string>(
+            calculatesurfaceflux_config.getConfigParameter<std::string>(
                 "output_mesh");
 
         if (mesh_name.empty())
diff --git a/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp
index ec1f28a881b..2a60f2c0153 100644
--- a/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp
+++ b/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp
@@ -69,8 +69,15 @@ std::unique_ptr<Process> createGroundwaterFlowProcess(
     ProcessLib::createSecondaryVariables(config, secondary_variables,
                                          named_function_caller);
 
-    std::unique_ptr<ProcessLib::Balance> balance =
-        ProcessLib::Balance::createBalance(config, meshes, output_directory);
+    std::unique_ptr<ProcessLib::Balance> balance;
+    auto calculatesurfaceflux_config =
+        //! \ogs_file_param{prj__processes__process__calculatesurfaceflux}
+        config.getConfigSubtreeOptional("calculatesurfaceflux");
+    if (calculatesurfaceflux_config)
+    {
+        balance = ProcessLib::Balance::createBalance(
+            *calculatesurfaceflux_config, meshes, output_directory);
+    }
 
     return std::make_unique<GroundwaterFlowProcess>(
         mesh, std::move(jacobian_assembler), parameters, integration_order,
diff --git a/ProcessLib/HT/CreateHTProcess.cpp b/ProcessLib/HT/CreateHTProcess.cpp
index 67c50b104f9..66a7c9a80ed 100644
--- a/ProcessLib/HT/CreateHTProcess.cpp
+++ b/ProcessLib/HT/CreateHTProcess.cpp
@@ -199,8 +199,15 @@ std::unique_ptr<Process> createHTProcess(
         DBUG("Use \'%s\' as Biot's constant.", biot_constant->name.c_str());
     }
 
-    std::unique_ptr<ProcessLib::Balance> balance =
-        ProcessLib::Balance::createBalance(config, meshes, output_directory);
+    std::unique_ptr<ProcessLib::Balance> balance;
+    auto calculatesurfaceflux_config =
+        //! \ogs_file_param{prj__processes__process__calculatesurfaceflux}
+        config.getConfigSubtreeOptional("calculatesurfaceflux");
+    if (calculatesurfaceflux_config)
+    {
+        balance = ProcessLib::Balance::createBalance(
+            *calculatesurfaceflux_config, meshes, output_directory);
+    }
 
     std::unique_ptr<HTMaterialProperties> material_properties =
         std::make_unique<HTMaterialProperties>(
-- 
GitLab