From 0f34873b73e6fb3ba31bcc66e7ba8fcc1f36037c Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Wed, 24 Jan 2024 18:19:28 +0100
Subject: [PATCH] [PL] findProcessVariables finds optional variable

Needed for ComponentTransport extension for non-isothermal conditions.
---
 ProcessLib/Utils/ProcessUtils.cpp | 11 +++++++----
 ProcessLib/Utils/ProcessUtils.h   |  4 ++--
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/ProcessLib/Utils/ProcessUtils.cpp b/ProcessLib/Utils/ProcessUtils.cpp
index 1c3a726a805..ff4f3fc6810 100644
--- a/ProcessLib/Utils/ProcessUtils.cpp
+++ b/ProcessLib/Utils/ProcessUtils.cpp
@@ -77,19 +77,22 @@ std::vector<std::reference_wrapper<ProcessVariable>> findProcessVariables(
 
 std::vector<std::reference_wrapper<ProcessVariable>> findProcessVariables(
     std::vector<ProcessVariable> const& variables,
-    BaseLib::ConfigTree const& pv_config,
-    std::string const& tag)
+    BaseLib::ConfigTree const& pv_config, std::string const& tag,
+    bool const optional)
 {
-    std::vector<std::reference_wrapper<ProcessVariable>> vars;
-
     //! \ogs_file_special
     auto var_names = pv_config.getConfigParameterList<std::string>(tag);
 
     if (var_names.empty())
     {
+        if (optional)
+        {
+            return {};
+        }
         OGS_FATAL("No entity is found with config tag <{:s}>.", tag);
     }
 
+    std::vector<std::reference_wrapper<ProcessVariable>> vars;
     std::vector<std::string> cached_var_names;
 
     for (std::string const& var_name : var_names)
diff --git a/ProcessLib/Utils/ProcessUtils.h b/ProcessLib/Utils/ProcessUtils.h
index c44900ac57b..e78c084f02d 100644
--- a/ProcessLib/Utils/ProcessUtils.h
+++ b/ProcessLib/Utils/ProcessUtils.h
@@ -50,7 +50,7 @@ std::vector<std::reference_wrapper<ProcessVariable>> findProcessVariables(
 
 std::vector<std::reference_wrapper<ProcessVariable>> findProcessVariables(
     std::vector<ProcessVariable> const& variables,
-    BaseLib::ConfigTree const& pv_config,
-    std::string const& tag);
+    BaseLib::ConfigTree const& pv_config, std::string const& tag,
+    bool const optional = false);
 
 }  // namespace ProcessLib
-- 
GitLab