From b840b884449ddad3200d8088bef5b3e28376fd4a Mon Sep 17 00:00:00 2001
From: Christoph Lehmann <christoph.lehmann@ufz.de>
Date: Wed, 17 Aug 2016 12:14:08 +0200
Subject: [PATCH] [PL] removed IC class

---
 ProcessLib/InitialCondition.h  | 35 ----------------------------------
 ProcessLib/Process.cpp         |  6 ++----
 ProcessLib/ProcessVariable.cpp | 19 +++++-------------
 ProcessLib/ProcessVariable.h   |  8 ++++----
 4 files changed, 11 insertions(+), 57 deletions(-)
 delete mode 100644 ProcessLib/InitialCondition.h

diff --git a/ProcessLib/InitialCondition.h b/ProcessLib/InitialCondition.h
deleted file mode 100644
index ccdd80833f4..00000000000
--- a/ProcessLib/InitialCondition.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * \copyright
- * Copyright (c) 2012-2016, OpenGeoSys Community (http://www.opengeosys.org)
- *            Distributed under a Modified BSD License.
- *              See accompanying file LICENSE.txt or
- *              http://www.opengeosys.org/project/license
- *
- */
-
-#ifndef PROCESS_LIB_INITIAL_CONDITION_H_
-#define PROCESS_LIB_INITIAL_CONDITION_H_
-
-#include "ProcessLib/Parameter/Parameter.h"
-
-namespace ProcessLib
-{
-// TODO document
-class InitialCondition
-{
-public:
-    InitialCondition(Parameter<double> const& param) : _param(param) {}
-
-    std::vector<double> const& getTuple(
-            double const t, SpatialPosition const& pos) const
-    {
-        return _param.getTuple(t, pos);
-    }
-
-private:
-    Parameter<double> const& _param;
-};
-
-}  // namespace ProcessLib
-
-#endif  // PROCESS_LIB_INITIAL_CONDITION_H_
diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp
index c72224d7af1..857e24c9689 100644
--- a/ProcessLib/Process.cpp
+++ b/ProcessLib/Process.cpp
@@ -81,9 +81,7 @@ void Process::setInitialConditions(double const t, GlobalVector& x)
          ++variable_id)
     {
         ProcessVariable& pv = _process_variables[variable_id];
-        auto const* ic = pv.getInitialCondition();
-        if (!ic)
-            continue;
+        auto const& ic = pv.getInitialCondition();
 
         auto const num_comp = pv.getNumberOfComponents();
 
@@ -93,7 +91,7 @@ void Process::setInitialConditions(double const t, GlobalVector& x)
                                       MeshLib::MeshItemType::Node, node_id);
 
             pos.setNodeID(node_id);
-            auto const& tup = ic->getTuple(t, pos);
+            auto const& tup = ic.getTuple(t, pos);
 
             for (int comp_id = 0; comp_id < num_comp; ++comp_id)
             {
diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp
index 40d2645adcf..6043cf3ee13 100644
--- a/ProcessLib/ProcessVariable.cpp
+++ b/ProcessLib/ProcessVariable.cpp
@@ -26,23 +26,14 @@ ProcessVariable::ProcessVariable(
       _name(config.getConfigParameter<std::string>("name")),
       _mesh(mesh),
       //! \ogs_file_param{prj__process_variables__process_variable__components}
-      _n_components(config.getConfigParameter<int>("components"))
+      _n_components(config.getConfigParameter<int>("components")),
+      _initial_condition(findParameter<double>(
+          //! \ogs_file_param{prj__process_variables__process_variable__initial_condition}
+          config.getConfigParameter<std::string>("initial_condition"),
+          parameters, _n_components))
 {
     DBUG("Constructing process variable %s", _name.c_str());
 
-    // Initial condition
-    if (auto ic_name =
-            //! \ogs_file_param{prj__process_variables__process_variable__initial_condition}
-            config.getConfigParameterOptional<std::string>("initial_condition"))
-    {
-        _initial_condition.reset(new InitialCondition(
-            findParameter<double>(*ic_name, parameters, _n_components)));
-    }
-    else
-    {
-        INFO("No initial condition found.");
-    }
-
     // Boundary conditions
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions}
     if (auto bcs_config = config.getConfigSubtreeOptional("boundary_conditions"))
diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h
index ca2828e2acd..2a29dabc3fb 100644
--- a/ProcessLib/ProcessVariable.h
+++ b/ProcessLib/ProcessVariable.h
@@ -10,9 +10,9 @@
 #ifndef PROCESS_LIB_PROCESS_VARIABLE_H_
 #define PROCESS_LIB_PROCESS_VARIABLE_H_
 
-#include "InitialCondition.h"
 #include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
 #include "ProcessLib/BoundaryCondition/BoundaryConditionConfig.h"
+#include "ProcessLib/Parameter/Parameter.h"
 
 namespace MeshLib
 {
@@ -47,9 +47,9 @@ public:
         const int variable_id,
         unsigned const integration_order);
 
-    InitialCondition const* getInitialCondition() const
+    Parameter<double> const& getInitialCondition() const
     {
-        return _initial_condition.get();
+        return _initial_condition;
     }
 
     // Get or create a property vector for results.
@@ -61,7 +61,7 @@ private:
     std::string const _name;
     MeshLib::Mesh& _mesh;
     const int _n_components;
-    std::unique_ptr<InitialCondition> _initial_condition;
+    Parameter<double> const& _initial_condition;
 
     std::vector<BoundaryConditionConfig> _bc_configs;
 };
-- 
GitLab