From 9ecbea010f90509a4793c667ca4bbb2052e5fd79 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Sat, 9 Mar 2019 18:52:28 +0100
Subject: [PATCH] [PL] Update boundary conditions/source terms.

---
 ProcessLib/BoundaryCondition/BoundaryCondition.h |  6 ++++--
 .../BoundaryConditionCollection.h                |  6 ++++--
 .../ConstraintDirichletBoundaryCondition.cpp     | 13 +++++++------
 .../ConstraintDirichletBoundaryCondition.h       | 10 +++++-----
 ...intDirichletBoundaryConditionLocalAssembler.h |  2 +-
 .../CreateBoundaryCondition.cpp                  |  2 +-
 .../BoundaryCondition/CreateBoundaryCondition.h  | 10 ++++++----
 .../DirichletBoundaryCondition.cpp               | 14 ++++++++------
 .../DirichletBoundaryCondition.h                 | 14 +++++++++-----
 ...ichletBoundaryConditionAuxiliaryFunctions.cpp |  9 +++++----
 ...irichletBoundaryConditionAuxiliaryFunctions.h |  8 ++++++--
 ...ichletBoundaryConditionWithinTimeInterval.cpp | 15 +++++++++------
 ...irichletBoundaryConditionWithinTimeInterval.h | 16 +++++++++++-----
 .../NeumannBoundaryCondition.cpp                 |  7 ++++---
 .../BoundaryCondition/NeumannBoundaryCondition.h | 10 ++++++----
 .../NeumannBoundaryConditionLocalAssembler.h     |  6 +++---
 .../NormalTractionBoundaryCondition-impl.h       | 10 ++++++----
 .../NormalTractionBoundaryCondition.h            |  8 +++++---
 ...rmalTractionBoundaryConditionLocalAssembler.h |  6 +++---
 ...IrreversibleDamageOracleBoundaryCondition.cpp |  3 +--
 ...ldIrreversibleDamageOracleBoundaryCondition.h |  2 +-
 .../Python/PythonBoundaryCondition.cpp           |  1 -
 .../BoundaryCondition/RobinBoundaryCondition.cpp | 10 ++++++----
 .../BoundaryCondition/RobinBoundaryCondition.h   |  3 ++-
 .../RobinBoundaryConditionLocalAssembler.h       |  8 ++++----
 ...VariableDependentNeumannBoundaryCondition.cpp | 16 ++++++++++------
 .../VariableDependentNeumannBoundaryCondition.h  |  3 ++-
 ...ndentNeumannBoundaryConditionLocalAssembler.h | 10 +++++-----
 ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp |  7 ++++---
 ProcessLib/SourceTerms/CreateNodalSourceTerm.h   | 10 +++++++---
 ProcessLib/SourceTerms/CreateSourceTerm.cpp      |  2 +-
 ProcessLib/SourceTerms/CreateSourceTerm.h        |  5 +++--
 .../SourceTerms/CreateVolumetricSourceTerm.cpp   |  9 ++++-----
 .../SourceTerms/CreateVolumetricSourceTerm.h     | 11 +++++++----
 ProcessLib/SourceTerms/NodalSourceTerm.cpp       |  4 ++--
 ProcessLib/SourceTerms/NodalSourceTerm.h         |  4 ++--
 .../SourceTerms/Python/PythonSourceTerm.cpp      |  1 -
 ProcessLib/SourceTerms/SourceTerm.h              |  2 +-
 ProcessLib/SourceTerms/SourceTermCollection.h    |  6 ++++--
 ProcessLib/SourceTerms/VolumetricSourceTerm.cpp  |  2 +-
 ProcessLib/SourceTerms/VolumetricSourceTerm.h    |  4 ++--
 ProcessLib/SourceTerms/VolumetricSourceTermFEM.h |  8 ++++----
 42 files changed, 176 insertions(+), 127 deletions(-)

diff --git a/ProcessLib/BoundaryCondition/BoundaryCondition.h b/ProcessLib/BoundaryCondition/BoundaryCondition.h
index 127bbe49f24..c9f201807c7 100644
--- a/ProcessLib/BoundaryCondition/BoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/BoundaryCondition.h
@@ -22,11 +22,13 @@ class LocalToGlobalIndexMap;
 template <typename>
 struct IndexValueVector;
 }
-
+namespace ParameterLib
+{
+struct ParameterBase;
+}
 namespace ProcessLib
 {
 struct BoundaryConditionConfig;
-struct ParameterBase;
 class Process;
 
 class BoundaryCondition
diff --git a/ProcessLib/BoundaryCondition/BoundaryConditionCollection.h b/ProcessLib/BoundaryCondition/BoundaryConditionCollection.h
index b6bebef421b..8db720690fb 100644
--- a/ProcessLib/BoundaryCondition/BoundaryConditionCollection.h
+++ b/ProcessLib/BoundaryCondition/BoundaryConditionCollection.h
@@ -20,7 +20,8 @@ class BoundaryConditionCollection final
 {
 public:
     explicit BoundaryConditionCollection(
-        std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+        std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+            parameters)
         : _parameters(parameters)
     {
     }
@@ -62,7 +63,8 @@ public:
 private:
     mutable std::vector<NumLib::IndexValueVector<GlobalIndexType>> _dirichlet_bcs;
     std::vector<std::unique_ptr<BoundaryCondition>> _boundary_conditions;
-    std::vector<std::unique_ptr<ParameterBase>> const& _parameters;
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        _parameters;
 };
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp
index 51e87faf7f4..1000972862e 100644
--- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp
@@ -13,15 +13,15 @@
 #include <vector>
 #include <logog/include/logog.hpp>
 
-#include "MeshLib/Node.h"
 #include "MeshLib/MeshSearch/NodeSearch.h"  // for getUniqueNodes
+#include "MeshLib/Node.h"
+#include "ParameterLib/Utils.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
 
 namespace ProcessLib
 {
 ConstraintDirichletBoundaryCondition::ConstraintDirichletBoundaryCondition(
-    Parameter<double> const& parameter,
+    ParameterLib::Parameter<double> const& parameter,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     int const component_id, MeshLib::Mesh const& bc_mesh,
     unsigned const integration_order, MeshLib::Mesh const& bulk_mesh,
@@ -128,7 +128,7 @@ void ConstraintDirichletBoundaryCondition::getEssentialBCValues(
     const double t, const GlobalVector& /*x*/,
     NumLib::IndexValueVector<GlobalIndexType>& bc_values) const
 {
-    SpatialPosition pos;
+    ParameterLib::SpatialPosition pos;
 
     bc_values.ids.clear();
     bc_values.values.clear();
@@ -228,7 +228,7 @@ createConstraintDirichletBoundaryCondition(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     unsigned const integration_order, int const component_id,
-    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     Process const& constraining_process)
 {
     DBUG("Constructing ConstraintDirichletBoundaryCondition from config.");
@@ -298,7 +298,8 @@ createConstraintDirichletBoundaryCondition(
     auto const param_name = config.getConfigParameter<std::string>("parameter");
     DBUG("Using parameter %s", param_name.c_str());
 
-    auto& param = findParameter<double>(param_name, parameters, 1);
+    auto& param =
+        ParameterLib::findParameter<double>(param_name, parameters, 1);
 
     // In case of partitioned mesh the boundary could be empty, i.e. there is no
     // boundary condition.
diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h
index 5d05b6e4bfd..186542d89d2 100644
--- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h
@@ -9,10 +9,10 @@
 
 #pragma once
 
+#include "BoundaryCondition.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "NumLib/IndexValueVector.h"
-#include "ProcessLib/Parameter/Parameter.h"
-#include "BoundaryCondition.h"
+#include "ParameterLib/Parameter.h"
 
 #include "ConstraintDirichletBoundaryConditionLocalAssembler.h"
 
@@ -49,7 +49,7 @@ public:
     /// @note The function has to be stored by value, else the process value is
     /// not captured properly.
     ConstraintDirichletBoundaryCondition(
-        Parameter<double> const& parameter,
+        ParameterLib::Parameter<double> const& parameter,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, int const component_id,
         MeshLib::Mesh const& bc_mesh, unsigned const integration_order,
@@ -67,7 +67,7 @@ public:
         NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override;
 
 private:
-    Parameter<double> const& _parameter;
+    ParameterLib::Parameter<double> const& _parameter;
 
     /// Local dof table, a subset of the global one restricted to the
     /// participating number of elements of the boundary condition.
@@ -123,6 +123,6 @@ createConstraintDirichletBoundaryCondition(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     unsigned const integration_order, int const component_id,
-    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     Process const& constraining_process);
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h
index 87a351ca4aa..9c214e163e3 100644
--- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h
@@ -13,8 +13,8 @@
 
 #include "NumLib/DOF/DOFTableUtil.h"
 
+#include "ParameterLib/Parameter.h"
 #include "ProcessLib/Process.h"
-#include "ProcessLib/Parameter/Parameter.h"
 #include "ProcessLib/Utils/InitShapeMatrices.h"
 
 #include "MeshLib/Elements/MapBulkElementPoint.h"
diff --git a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp
index 4efc1805fef..844d1e4586a 100644
--- a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp
@@ -33,7 +33,7 @@ std::unique_ptr<BoundaryCondition> createBoundaryCondition(
     const NumLib::LocalToGlobalIndexMap& dof_table,
     const MeshLib::Mesh& bulk_mesh, const int variable_id,
     const unsigned integration_order, const unsigned shapefunction_order,
-    const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters,
+    const std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters,
     const Process& process)
 {
     // Surface mesh and bulk mesh must have equal axial symmetry flags!
diff --git a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.h b/ProcessLib/BoundaryCondition/CreateBoundaryCondition.h
index 752d7a574a7..7c36f45fab9 100644
--- a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/CreateBoundaryCondition.h
@@ -20,13 +20,15 @@ class Mesh;
 namespace NumLib
 {
 class LocalToGlobalIndexMap;
-}  // namespace NumLib
-
+}
+namespace ParameterLib
+{
+struct ParameterBase;
+}
 namespace ProcessLib
 {
 class BoundaryCondition;
 struct BoundaryConditionConfig;
-struct ParameterBase;
 class Process;
 
 std::unique_ptr<BoundaryCondition> createBoundaryCondition(
@@ -34,7 +36,7 @@ std::unique_ptr<BoundaryCondition> createBoundaryCondition(
     const NumLib::LocalToGlobalIndexMap& dof_table,
     const MeshLib::Mesh& bulk_mesh, const int variable_id,
     const unsigned integration_order, const unsigned shapefunction_order,
-    const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters,
+    const std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters,
     const Process& process);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp
index c714a531dec..1385562e9bd 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp
@@ -16,15 +16,16 @@
 #include "DirichletBoundaryConditionAuxiliaryFunctions.h"
 
 #include "BaseLib/ConfigTree.h"
-#include "NumLib/IndexValueVector.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
-#include "ProcessLib/Parameter/Parameter.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "NumLib/IndexValueVector.h"
+#include "ParameterLib/Parameter.h"
+#include "ParameterLib/Utils.h"
 
 namespace ProcessLib
 {
 DirichletBoundaryCondition::DirichletBoundaryCondition(
-    Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+    ParameterLib::Parameter<double> const& parameter,
+    MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     int const component_id)
     : _parameter(parameter),
@@ -57,7 +58,7 @@ std::unique_ptr<DirichletBoundaryCondition> createDirichletBoundaryCondition(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     int const component_id,
-    const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters)
+    const std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters)
 {
     DBUG("Constructing DirichletBoundaryCondition from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__type}
@@ -67,7 +68,8 @@ std::unique_ptr<DirichletBoundaryCondition> createDirichletBoundaryCondition(
     auto const param_name = config.getConfigParameter<std::string>("parameter");
     DBUG("Using parameter %s", param_name.c_str());
 
-    auto& parameter = findParameter<double>(param_name, parameters, 1);
+    auto& parameter =
+        ParameterLib::findParameter<double>(param_name, parameters, 1);
 
     if (parameter.mesh() && *parameter.mesh() != bc_mesh)
     {
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h
index 123ef2924cd..1f3681199e0 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h
@@ -15,12 +15,14 @@ namespace BaseLib
 {
 class ConfigTree;
 }
-
-namespace ProcessLib
+namespace ParameterLib
 {
 template <typename T>
 struct Parameter;
+}
 
+namespace ProcessLib
+{
 // TODO docu
 /// The DirichletBoundaryCondition class describes a constant in space
 /// and time Dirichlet boundary condition.
@@ -30,7 +32,8 @@ class DirichletBoundaryCondition final : public BoundaryCondition
 {
 public:
     DirichletBoundaryCondition(
-        Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& parameter,
+        MeshLib::Mesh const& bc_mesh,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, int const component_id);
 
@@ -39,7 +42,7 @@ public:
         NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override;
 
 private:
-    Parameter<double> const& _parameter;
+    ParameterLib::Parameter<double> const& _parameter;
 
     MeshLib::Mesh const& _bc_mesh;
     std::unique_ptr<NumLib::LocalToGlobalIndexMap const> _dof_table_boundary;
@@ -51,6 +54,7 @@ std::unique_ptr<DirichletBoundaryCondition> createDirichletBoundaryCondition(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     int const component_id,
-    const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters);
+    const std::vector<std::unique_ptr<ParameterLib::ParameterBase>>&
+        parameters);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
index 58f9714b057..05ff01e5848 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
@@ -15,9 +15,9 @@
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Node.h"
 
-#include "NumLib/IndexValueVector.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
-#include "ProcessLib/Parameter/Parameter.h"
+#include "NumLib/IndexValueVector.h"
+#include "ParameterLib/Parameter.h"
 
 namespace ProcessLib
 {
@@ -56,14 +56,15 @@ void checkParametersOfDirichletBoundaryCondition(
 }
 
 void getEssentialBCValuesLocal(
-    Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+    ParameterLib::Parameter<double> const& parameter,
+    MeshLib::Mesh const& bc_mesh,
     std::vector<MeshLib::Node*> const& nodes_in_bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_boundary,
     int const variable_id, int const component_id, const double t,
     GlobalVector const& /*x*/,
     NumLib::IndexValueVector<GlobalIndexType>& bc_values)
 {
-    SpatialPosition pos;
+    ParameterLib::SpatialPosition pos;
 
     bc_values.ids.clear();
     bc_values.values.clear();
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h
index db69d1b76a4..8de251719ce 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h
@@ -33,11 +33,14 @@ template <typename>
 struct IndexValueVector;
 }
 
-namespace ProcessLib
+namespace ParameterLib
 {
 template <typename T>
 struct Parameter;
+}
 
+namespace ProcessLib
+{
 void checkParametersOfDirichletBoundaryCondition(
     MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
@@ -45,7 +48,8 @@ void checkParametersOfDirichletBoundaryCondition(
     int const component_id);
 
 void getEssentialBCValuesLocal(
-    Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+    ParameterLib::Parameter<double> const& parameter,
+    MeshLib::Mesh const& bc_mesh,
     std::vector<MeshLib::Node*> const& nodes_in_bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_boundary,
     int const variable_id, int const component_id, const double t,
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp
index 2392094e8bc..1631031eada 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp
@@ -21,15 +21,16 @@
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "NumLib/IndexValueVector.h"
 
-#include "ProcessLib/Parameter/Parameter.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "ParameterLib/Parameter.h"
+#include "ParameterLib/Utils.h"
 
 namespace ProcessLib
 {
 DirichletBoundaryConditionWithinTimeInterval::
     DirichletBoundaryConditionWithinTimeInterval(
         std::unique_ptr<BaseLib::TimeInterval> time_interval,
-        Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& parameter,
+        MeshLib::Mesh const& bc_mesh,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, int const component_id)
     : _parameter(parameter),
@@ -45,7 +46,8 @@ DirichletBoundaryConditionWithinTimeInterval::
 DirichletBoundaryConditionWithinTimeInterval::
     DirichletBoundaryConditionWithinTimeInterval(
         std::unique_ptr<BaseLib::TimeInterval> time_interval,
-        Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& parameter,
+        MeshLib::Mesh const& bc_mesh,
         std::vector<MeshLib::Node*> const& nodes_in_bc_mesh,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, int const component_id)
@@ -95,7 +97,7 @@ createDirichletBoundaryConditionWithinTimeInterval(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     int const component_id,
-    const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters)
+    const std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters)
 {
     DBUG(
         "Constructing DirichletBoundaryConditionWithinTimeInterval from "
@@ -108,7 +110,8 @@ createDirichletBoundaryConditionWithinTimeInterval(
     auto const param_name = config.getConfigParameter<std::string>("parameter");
     DBUG("Using parameter %s", param_name.c_str());
 
-    auto& param = findParameter<double>(param_name, parameters, 1);
+    auto& param =
+        ParameterLib::findParameter<double>(param_name, parameters, 1);
 
 // In case of partitioned mesh the boundary could be empty, i.e. there is no
 // boundary condition.
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h
index f5e9c2a70f1..89a4cc61233 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h
@@ -28,24 +28,29 @@ namespace MeshLib
 class Node;
 }
 
-namespace ProcessLib
+namespace ParameterLib
 {
 template <typename T>
 struct Parameter;
+}
 
+namespace ProcessLib
+{
 class DirichletBoundaryConditionWithinTimeInterval final
     : public BoundaryCondition
 {
 public:
     DirichletBoundaryConditionWithinTimeInterval(
         std::unique_ptr<BaseLib::TimeInterval> time_interval,
-        Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& parameter,
+        MeshLib::Mesh const& bc_mesh,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, int const component_id);
 
     DirichletBoundaryConditionWithinTimeInterval(
         std::unique_ptr<BaseLib::TimeInterval> time_interval,
-        Parameter<double> const& parameter, MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& parameter,
+        MeshLib::Mesh const& bc_mesh,
         std::vector<MeshLib::Node*> const& nodes_in_bc_mesh,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, int const component_id);
@@ -55,7 +60,7 @@ public:
         NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override;
 
 private:
-    Parameter<double> const& _parameter;
+    ParameterLib::Parameter<double> const& _parameter;
 
     MeshLib::Mesh const& _bc_mesh;
     /// Some nodes in _bc_mesh
@@ -75,6 +80,7 @@ createDirichletBoundaryConditionWithinTimeInterval(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table_bulk, int const variable_id,
     int const component_id,
-    const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters);
+    const std::vector<std::unique_ptr<ParameterLib::ParameterBase>>&
+        parameters);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp
index a94d1f6588b..7f5d8b79194 100644
--- a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp
@@ -8,7 +8,7 @@
  */
 
 #include "NeumannBoundaryCondition.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "ParameterLib/Utils.h"
 
 namespace ProcessLib
 {
@@ -17,7 +17,7 @@ std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     int const component_id, unsigned const integration_order,
     unsigned const shapefunction_order, unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
 {
     DBUG("Constructing Neumann BC from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__type}
@@ -27,7 +27,8 @@ std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition(
     auto const param_name = config.getConfigParameter<std::string>("parameter");
     DBUG("Using parameter %s", param_name.c_str());
 
-    auto const& param = findParameter<double>(param_name, parameters, 1);
+    auto const& param =
+        ParameterLib::findParameter<double>(param_name, parameters, 1);
 
     // In case of partitioned mesh the boundary could be empty, i.e. there is no
     // boundary condition.
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.h b/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.h
index e9dd44035d2..3b67bd65e79 100644
--- a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.h
@@ -9,20 +9,22 @@
 
 #pragma once
 
-#include "ProcessLib/Parameter/Parameter.h"
 #include "GenericNaturalBoundaryCondition.h"
 #include "NeumannBoundaryConditionLocalAssembler.h"
+#include "ParameterLib/Parameter.h"
 
 namespace ProcessLib
 {
-using NeumannBoundaryCondition = GenericNaturalBoundaryCondition<
-    Parameter<double> const&, NeumannBoundaryConditionLocalAssembler>;
+using NeumannBoundaryCondition =
+    GenericNaturalBoundaryCondition<ParameterLib::Parameter<double> const&,
+                                    NeumannBoundaryConditionLocalAssembler>;
 
 std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     int const component_id, unsigned const integration_order,
     unsigned const shapefunction_order, unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters);
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
index 0f09c01d8a8..9296b1db422 100644
--- a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
@@ -12,7 +12,7 @@
 #include "GenericNaturalBoundaryConditionLocalAssembler.h"
 #include "NumLib/DOF/DOFTableUtil.h"
 #include "NumLib/Fem/ShapeMatrixPolicy.h"
-#include "ProcessLib/Parameter/Parameter.h"
+#include "ParameterLib/Parameter.h"
 #include "ProcessLib/Utils/InitShapeMatrices.h"
 
 namespace ProcessLib
@@ -36,7 +36,7 @@ public:
         std::size_t const local_matrix_size,
         bool const is_axially_symmetric,
         unsigned const integration_order,
-        Parameter<double> const& neumann_bc_parameter)
+        ParameterLib::Parameter<double> const& neumann_bc_parameter)
         : Base(e, is_axially_symmetric, integration_order),
           _neumann_bc_parameter(neumann_bc_parameter),
           _local_rhs(local_matrix_size)
@@ -73,7 +73,7 @@ public:
     }
 
 private:
-    Parameter<double> const& _neumann_bc_parameter;
+    ParameterLib::Parameter<double> const& _neumann_bc_parameter;
     NodalVectorType _local_rhs;
 
 public:
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h
index 68faa079cc9..d02bff937f6 100644
--- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h
+++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h
@@ -13,8 +13,8 @@
 #include <numeric>
 
 #include "MeshLib/MeshSearch/NodeSearch.h"
+#include "ParameterLib/Utils.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
 
 #include "NormalTractionBoundaryConditionLocalAssembler.h"
 
@@ -29,7 +29,8 @@ NormalTractionBoundaryCondition<LocalAssemblerImplementation>::
         unsigned const integration_order, unsigned const shapefunction_order,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, unsigned const global_dim,
-        MeshLib::Mesh const& bc_mesh, Parameter<double> const& pressure)
+        MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& pressure)
     : _bc_mesh(bc_mesh),
       _integration_order(integration_order),
       _pressure(pressure)
@@ -79,7 +80,7 @@ createNormalTractionBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     unsigned const integration_order, unsigned const shapefunction_order,
     unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
 {
     DBUG("Constructing NormalTractionBoundaryCondition from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__type}
@@ -90,7 +91,8 @@ createNormalTractionBoundaryCondition(
         config.getConfigParameter<std::string>("parameter");
     DBUG("Using parameter %s", parameter_name.c_str());
 
-    auto const& pressure = findParameter<double>(parameter_name, parameters, 1);
+    auto const& pressure =
+        ParameterLib::findParameter<double>(parameter_name, parameters, 1);
     return std::make_unique<NormalTractionBoundaryCondition<
         NormalTractionBoundaryConditionLocalAssembler>>(
         integration_order, shapefunction_order, dof_table, variable_id,
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h
index 9caeea9009d..b13faa3dbff 100644
--- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h
@@ -39,7 +39,8 @@ public:
         unsigned const integration_order, unsigned const shapefunction_order,
         NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
         int const variable_id, unsigned const global_dim,
-        MeshLib::Mesh const& bc_mesh, Parameter<double> const& pressure);
+        MeshLib::Mesh const& bc_mesh,
+        ParameterLib::Parameter<double> const& pressure);
 
     /// Calls local assemblers which calculate their contributions to the global
     /// matrix and the right-hand-side.
@@ -67,7 +68,7 @@ private:
         std::unique_ptr<NormalTractionBoundaryConditionLocalAssemblerInterface>>
         _local_assemblers;
 
-    Parameter<double> const& _pressure;
+    ParameterLib::Parameter<double> const& _pressure;
 };
 
 std::unique_ptr<NormalTractionBoundaryCondition<
@@ -77,7 +78,8 @@ createNormalTractionBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     unsigned const integration_order, unsigned const shapefunction_order,
     unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters);
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
 
 }  // namespace NormalTractionBoundaryCondition
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
index 368a45ef2e8..b6365f24975 100644
--- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
@@ -13,7 +13,7 @@
 #include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 #include "MeshLib/Elements/FaceRule.h"
 #include "NumLib/DOF/DOFTableUtil.h"
-#include "ProcessLib/Parameter/Parameter.h"
+#include "ParameterLib/Parameter.h"
 
 #include "GenericNaturalBoundaryConditionLocalAssembler.h"
 
@@ -64,7 +64,7 @@ public:
         std::size_t const local_matrix_size,
         bool const is_axially_symmetric,
         unsigned const integration_order,
-        Parameter<double> const& pressure)
+        ParameterLib::Parameter<double> const& pressure)
         : _integration_method(integration_order),
           _pressure(pressure),
           _element(e)
@@ -154,7 +154,7 @@ public:
 
 private:
     IntegrationMethod const _integration_method;
-    Parameter<double> const& _pressure;
+    ParameterLib::Parameter<double> const& _pressure;
 
     static const int displacement_size =
         ShapeFunctionDisplacement::NPOINTS * GlobalDim;
diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
index 2de4055ed37..8e2d1e336ef 100644
--- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
@@ -12,7 +12,6 @@
 #include <algorithm>
 #include <logog/include/logog.hpp>
 #include <vector>
-#include "ProcessLib/Utils/ProcessUtils.h"
 
 namespace ProcessLib
 {
@@ -20,7 +19,7 @@ void PhaseFieldIrreversibleDamageOracleBoundaryCondition::getEssentialBCValues(
     const double /*t*/, GlobalVector const& /*x*/,
     NumLib::IndexValueVector<GlobalIndexType>& bc_values) const
 {
-    SpatialPosition pos;
+    ParameterLib::SpatialPosition pos;
 
     bc_values.ids.clear();
     bc_values.values.clear();
diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h
index 47f0fd0c2f0..10fe3f2bd93 100644
--- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h
@@ -12,7 +12,7 @@
 #include "BoundaryCondition.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "NumLib/IndexValueVector.h"
-#include "ProcessLib/Parameter/Parameter.h"
+#include "ParameterLib/Parameter.h"
 
 namespace ProcessLib
 {
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
index 83764467e52..6797cfb6fff 100644
--- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
@@ -14,7 +14,6 @@
 
 #include "MeshLib/MeshSearch/NodeSearch.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
 #include "PythonBoundaryConditionLocalAssembler.h"
 
 namespace
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp
index 3f7870f9dbd..8d2d0331e7f 100644
--- a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp
@@ -8,7 +8,7 @@
  */
 
 #include "RobinBoundaryCondition.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "ParameterLib/Utils.h"
 
 namespace ProcessLib
 {
@@ -17,7 +17,7 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     int const component_id, unsigned const integration_order,
     unsigned const shapefunction_order, unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
 {
     DBUG("Constructing RobinBcConfig from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__type}
@@ -28,8 +28,10 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition(
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__Robin__u_0}
     auto const u_0_name = config.getConfigParameter<std::string>("u_0");
 
-    auto const& alpha = findParameter<double>(alpha_name, parameters, 1);
-    auto const& u_0 = findParameter<double>(u_0_name, parameters, 1);
+    auto const& alpha =
+        ParameterLib::findParameter<double>(alpha_name, parameters, 1);
+    auto const& u_0 =
+        ParameterLib::findParameter<double>(u_0_name, parameters, 1);
 
     // In case of partitioned mesh the boundary could be empty, i.e. there is no
     // boundary condition.
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.h b/ProcessLib/BoundaryCondition/RobinBoundaryCondition.h
index 30b8c941df7..1f91cf1f497 100644
--- a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/RobinBoundaryCondition.h
@@ -34,6 +34,7 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     int const component_id, unsigned const integration_order,
     unsigned const shapefunction_order, unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters);
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
index 434afb14b34..762f6470493 100644
--- a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
@@ -9,15 +9,15 @@
 
 #pragma once
 
-#include "NumLib/DOF/DOFTableUtil.h"
-#include "ProcessLib/Parameter/Parameter.h"
 #include "GenericNaturalBoundaryConditionLocalAssembler.h"
+#include "NumLib/DOF/DOFTableUtil.h"
+#include "ParameterLib/Parameter.h"
 
 namespace ProcessLib
 {
 struct RobinBoundaryConditionData final {
-    Parameter<double> const& alpha;
-    Parameter<double> const& u_0;
+    ParameterLib::Parameter<double> const& alpha;
+    ParameterLib::Parameter<double> const& u_0;
 };
 
 template <typename ShapeFunction, typename IntegrationMethod,
diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp
index 36f30cd6753..58ca3b6e185 100644
--- a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp
@@ -9,7 +9,7 @@
 
 #include "VariableDependentNeumannBoundaryCondition.h"
 
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "ParameterLib/Utils.h"
 
 namespace ProcessLib
 {
@@ -19,7 +19,7 @@ createVariableDependentNeumannBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     int const component_id, unsigned const integration_order,
     unsigned const shapefunction_order, unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
 {
     DBUG("Constructing VariableDependentNeumann BC from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__type}
@@ -35,28 +35,32 @@ createVariableDependentNeumannBoundaryCondition(
     auto const constant_name =
         //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__VariableDependentNeumann__constant_name}
         config.getConfigParameter<std::string>("constant_name");
-    auto const& constant = findParameter<double>(constant_name, parameters, 1);
+    auto const& constant =
+        ParameterLib::findParameter<double>(constant_name, parameters, 1);
 
     auto const coefficient_current_variable_name =
         //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__VariableDependentNeumann__coefficient_current_variable_name}
         config.getConfigParameter<std::string>(
             "coefficient_current_variable_name");
     auto const& coefficient_current_variable =
-        findParameter<double>(coefficient_current_variable_name, parameters, 1);
+        ParameterLib::findParameter<double>(coefficient_current_variable_name,
+                                            parameters, 1);
 
     auto const coefficient_other_variable_name =
         //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__VariableDependentNeumann__coefficient_other_variable_name}
         config.getConfigParameter<std::string>(
             "coefficient_other_variable_name");
     auto const& coefficient_other_variable =
-        findParameter<double>(coefficient_other_variable_name, parameters, 1);
+        ParameterLib::findParameter<double>(coefficient_other_variable_name,
+                                            parameters, 1);
 
     auto const coefficient_mixed_variables_name =
         //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__VariableDependentNeumann__coefficient_mixed_variables_name}
         config.getConfigParameter<std::string>(
             "coefficient_mixed_variables_name");
     auto const& coefficient_mixed_variables =
-        findParameter<double>(coefficient_mixed_variables_name, parameters, 1);
+        ParameterLib::findParameter<double>(coefficient_mixed_variables_name,
+                                            parameters, 1);
 
     std::vector<MeshLib::Node*> const& bc_nodes = bc_mesh.getNodes();
     MeshLib::MeshSubset bc_mesh_subset(bc_mesh, bc_nodes);
diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.h b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.h
index 82f1170ff5c..0b3606cfcba 100644
--- a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.h
+++ b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.h
@@ -26,6 +26,7 @@ createVariableDependentNeumannBoundaryCondition(
     NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
     int const component_id, unsigned const integration_order,
     unsigned const shapefunction_order, unsigned const global_dim,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters);
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h
index b5e0b0112f1..471c2974b50 100644
--- a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h
@@ -12,7 +12,7 @@
 #include "MeshLib/PropertyVector.h"
 #include "NumLib/DOF/DOFTableUtil.h"
 #include "NumLib/Function/Interpolation.h"
-#include "ProcessLib/Parameter/MeshNodeParameter.h"
+#include "ParameterLib/MeshNodeParameter.h"
 
 #include "GenericNaturalBoundaryConditionLocalAssembler.h"
 
@@ -20,10 +20,10 @@ namespace ProcessLib
 {
 struct VariableDependentNeumannBoundaryConditionData
 {
-    Parameter<double> const& constant;
-    Parameter<double> const& coefficient_current_variable;
-    Parameter<double> const& coefficient_other_variable;
-    Parameter<double> const& coefficient_mixed_variables;
+    ParameterLib::Parameter<double> const& constant;
+    ParameterLib::Parameter<double> const& coefficient_current_variable;
+    ParameterLib::Parameter<double> const& coefficient_other_variable;
+    ParameterLib::Parameter<double> const& coefficient_mixed_variables;
     // Used for mapping boundary nodes to bulk nodes.
     NumLib::LocalToGlobalIndexMap const& dof_table_boundary_other_variable;
 };
diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
index 2c8c5d3e14b..5e9e2afcab0 100644
--- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
@@ -12,7 +12,7 @@
 #include <logog/include/logog.hpp>
 
 #include "BaseLib/ConfigTree.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "ParameterLib/Utils.h"
 
 #include "NodalSourceTerm.h"
 
@@ -23,7 +23,7 @@ std::unique_ptr<SourceTerm> createNodalSourceTerm(
     std::unique_ptr<NumLib::LocalToGlobalIndexMap> dof_table,
     std::size_t const source_term_mesh_id, const int variable_id,
     const int component_id,
-    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters)
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
 {
     DBUG("Constructing NodalSourceTerm from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type}
@@ -33,7 +33,8 @@ std::unique_ptr<SourceTerm> createNodalSourceTerm(
     auto const param_name = config.getConfigParameter<std::string>("parameter");
     DBUG("Using parameter %s as nodal source term.", param_name.c_str());
 
-    auto& param = findParameter<double>(param_name, parameters, 1);
+    auto& param =
+        ParameterLib::findParameter<double>(param_name, parameters, 1);
 
     return std::make_unique<NodalSourceTerm>(std::move(dof_table),
                                              source_term_mesh_id, st_mesh,
diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h b/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
index 7d56a0a1b68..31413ceddca 100644
--- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
+++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
@@ -24,11 +24,14 @@ namespace NumLib
 {
 class LocalToGlobalIndexMap;
 }
+namespace ParameterLib
+{
+struct ParameterBase;
+}
 namespace ProcessLib
 {
 class SourceTerm;
-struct ParameterBase;
-}  // namespace ProcessLib
+}
 
 namespace ProcessLib
 {
@@ -36,6 +39,7 @@ std::unique_ptr<SourceTerm> createNodalSourceTerm(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& st_mesh,
     std::unique_ptr<NumLib::LocalToGlobalIndexMap> dof_table,
     std::size_t mesh_id, const int variable_id, const int component_id,
-    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters);
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
 
 }   // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/CreateSourceTerm.cpp b/ProcessLib/SourceTerms/CreateSourceTerm.cpp
index 2649720dd71..93e148daed4 100644
--- a/ProcessLib/SourceTerms/CreateSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/CreateSourceTerm.cpp
@@ -24,7 +24,7 @@ std::unique_ptr<SourceTerm> createSourceTerm(
     const NumLib::LocalToGlobalIndexMap& dof_table_bulk,
     const MeshLib::Mesh& source_term_mesh, const int variable_id,
     const unsigned integration_order, const unsigned shapefunction_order,
-    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters)
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
 {
     //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type}
     auto const type = config.config.peekConfigParameter<std::string>("type");
diff --git a/ProcessLib/SourceTerms/CreateSourceTerm.h b/ProcessLib/SourceTerms/CreateSourceTerm.h
index e6a60639b1a..0d0939294ca 100644
--- a/ProcessLib/SourceTerms/CreateSourceTerm.h
+++ b/ProcessLib/SourceTerms/CreateSourceTerm.h
@@ -12,7 +12,7 @@
 #include <vector>
 #include <memory>
 
-#include "ProcessLib/Parameter/Parameter.h"
+#include "ParameterLib/Parameter.h"
 
 namespace MeshLib
 {
@@ -38,6 +38,7 @@ std::unique_ptr<SourceTerm> createSourceTerm(
     const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh,
     const int variable_id, const unsigned integration_order,
     const unsigned shapefunction_order,
-    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters);
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp b/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp
index 8f59ff3b262..bcb98b017ca 100644
--- a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp
@@ -13,16 +13,15 @@
 #include "BaseLib/FileTools.h"
 #include "MeshLib/Mesh.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
+#include "ParameterLib/Utils.h"
 #include "VolumetricSourceTerm.h"
 
 namespace ProcessLib
 {
 std::unique_ptr<SourceTerm> createVolumetricSourceTerm(
-    BaseLib::ConfigTree const& config,
-    MeshLib::Mesh const& source_term_mesh,
+    BaseLib::ConfigTree const& config, MeshLib::Mesh const& source_term_mesh,
     std::unique_ptr<NumLib::LocalToGlobalIndexMap> source_term_dof_table,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     unsigned const integration_order, unsigned const shapefunction_order)
 {
     //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type}
@@ -34,7 +33,7 @@ std::unique_ptr<SourceTerm> createVolumetricSourceTerm(
     auto const& volumetric_source_term_parameter_name =
         //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__Volumetric__parameter}
         config.getConfigParameter<std::string>("parameter");
-    auto& volumetric_source_term = findParameter<double>(
+    auto& volumetric_source_term = ParameterLib::findParameter<double>(
         volumetric_source_term_parameter_name, parameters, 1);
 
     DBUG("Using '%s` as volumetric source term parameter.",
diff --git a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h b/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h
index 18d2568388a..f60fa69cc51 100644
--- a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h
+++ b/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h
@@ -27,16 +27,19 @@ namespace NumLib
 class LocalToGlobalIndexMap;
 }
 
-namespace ProcessLib
+namespace ParameterLib
 {
 struct ParameterBase;
+}
+
+namespace ProcessLib
+{
 class SourceTerm;
 
 std::unique_ptr<SourceTerm> createVolumetricSourceTerm(
-    BaseLib::ConfigTree const& config,
-    MeshLib::Mesh const& source_term_mesh,
+    BaseLib::ConfigTree const& config, MeshLib::Mesh const& source_term_mesh,
     std::unique_ptr<NumLib::LocalToGlobalIndexMap> source_term_dof_table,
-    std::vector<std::unique_ptr<ParameterBase>> const& parameters,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     unsigned const integration_order, unsigned const shapefunction_order);
 
 }   // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.cpp b/ProcessLib/SourceTerms/NodalSourceTerm.cpp
index e32cd1a2a19..93ba965e2cb 100644
--- a/ProcessLib/SourceTerms/NodalSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/NodalSourceTerm.cpp
@@ -19,7 +19,7 @@ NodalSourceTerm::NodalSourceTerm(
     MeshLib::Mesh const& st_mesh,
     const int variable_id,
     const int component_id,
-    Parameter<double> const& parameter)
+    ParameterLib::Parameter<double> const& parameter)
     : SourceTerm(std::move(source_term_dof_table)),
       _source_term_mesh_id(source_term_mesh_id),
       _st_mesh(st_mesh),
@@ -43,7 +43,7 @@ void NodalSourceTerm::integrate(const double t, GlobalVector const& /*x*/,
         auto const index = _source_term_dof_table->getGlobalIndex(
             l, _variable_id, _component_id);
 
-        SpatialPosition pos;
+        ParameterLib::SpatialPosition pos;
         pos.setNodeID(node_id);
 
         b.add(index, _parameter(t, pos).front());
diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.h b/ProcessLib/SourceTerms/NodalSourceTerm.h
index 78f74842b97..931577ec6e9 100644
--- a/ProcessLib/SourceTerms/NodalSourceTerm.h
+++ b/ProcessLib/SourceTerms/NodalSourceTerm.h
@@ -20,7 +20,7 @@ public:
         std::unique_ptr<NumLib::LocalToGlobalIndexMap> dof_table,
         std::size_t const source_term_mesh_id, MeshLib::Mesh const& st_mesh,
         const int variable_id, const int component_id,
-        Parameter<double> const& parameter);
+        ParameterLib::Parameter<double> const& parameter);
 
     void integrate(const double t, GlobalVector const& x, GlobalVector& b,
                    GlobalMatrix* jac) const override;
@@ -30,7 +30,7 @@ private:
     MeshLib::Mesh const& _st_mesh;
     int const _variable_id;
     int const _component_id;
-    Parameter<double> const& _parameter;
+    ParameterLib::Parameter<double> const& _parameter;
 };
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp b/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp
index ae85a23db8c..06401a8660b 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp
@@ -15,7 +15,6 @@
 #include "MeshLib/MeshSearch/NodeSearch.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
-#include "ProcessLib/Utils/ProcessUtils.h"
 #include "PythonSourceTermLocalAssembler.h"
 
 namespace
diff --git a/ProcessLib/SourceTerms/SourceTerm.h b/ProcessLib/SourceTerms/SourceTerm.h
index 9ae1248df78..1174e24f38d 100644
--- a/ProcessLib/SourceTerms/SourceTerm.h
+++ b/ProcessLib/SourceTerms/SourceTerm.h
@@ -12,7 +12,7 @@
 #include <memory>
 
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
-#include "ProcessLib/Parameter/Parameter.h"
+#include "ParameterLib/Parameter.h"
 
 namespace ProcessLib
 {
diff --git a/ProcessLib/SourceTerms/SourceTermCollection.h b/ProcessLib/SourceTerms/SourceTermCollection.h
index b27a51e8788..5351feb1c3d 100644
--- a/ProcessLib/SourceTerms/SourceTermCollection.h
+++ b/ProcessLib/SourceTerms/SourceTermCollection.h
@@ -18,7 +18,8 @@ class SourceTermCollection final
 {
 public:
     explicit SourceTermCollection(
-        std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+        std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+            parameters)
         : _parameters(parameters)
     {
     }
@@ -34,7 +35,8 @@ public:
 
 private:
     std::vector<std::unique_ptr<SourceTerm>> _source_terms;
-    std::vector<std::unique_ptr<ParameterBase>> const& _parameters;
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        _parameters;
 };
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTerm.cpp b/ProcessLib/SourceTerms/VolumetricSourceTerm.cpp
index 55db90e52df..a973196058c 100644
--- a/ProcessLib/SourceTerms/VolumetricSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/VolumetricSourceTerm.cpp
@@ -17,7 +17,7 @@ VolumetricSourceTerm::VolumetricSourceTerm(
     MeshLib::Mesh const& source_term_mesh,
     std::unique_ptr<NumLib::LocalToGlobalIndexMap> source_term_dof_table,
     unsigned const integration_order, unsigned const shapefunction_order,
-    Parameter<double> const& volumetric_source_term)
+    ParameterLib::Parameter<double> const& volumetric_source_term)
     : SourceTerm(std::move(source_term_dof_table)),
       _volumetric_source_term(volumetric_source_term)
 {
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTerm.h b/ProcessLib/SourceTerms/VolumetricSourceTerm.h
index 92e3bb7c740..dcf3e55ae81 100644
--- a/ProcessLib/SourceTerms/VolumetricSourceTerm.h
+++ b/ProcessLib/SourceTerms/VolumetricSourceTerm.h
@@ -24,13 +24,13 @@ public:
         MeshLib::Mesh const& source_term_mesh,
         std::unique_ptr<NumLib::LocalToGlobalIndexMap> source_term_dof_table,
         unsigned const integration_order, unsigned const shapefunction_order,
-        Parameter<double> const& volumetric_source_term);
+        ParameterLib::Parameter<double> const& volumetric_source_term);
 
     void integrate(const double t, GlobalVector const& x, GlobalVector& b,
                    GlobalMatrix* jac) const override;
 
 private:
-    Parameter<double> const& _volumetric_source_term;
+    ParameterLib::Parameter<double> const& _volumetric_source_term;
     std::vector<std::unique_ptr<VolumetricSourceTermLocalAssemblerInterface>>
         _local_assemblers;
 };
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h b/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
index 9e3d91ed394..b369b7f02c1 100644
--- a/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
+++ b/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
@@ -14,8 +14,8 @@
 #include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 #include "NumLib/DOF/DOFTableUtil.h"
 #include "NumLib/Fem/FiniteElement/TemplateIsoparametric.h"
+#include "ParameterLib/Parameter.h"
 #include "ProcessLib/LocalAssemblerTraits.h"
-#include "ProcessLib/Parameter/Parameter.h"
 #include "ProcessLib/Utils/InitShapeMatrices.h"
 
 namespace ProcessLib
@@ -65,7 +65,7 @@ public:
         std::size_t const local_matrix_size,
         bool is_axially_symmetric,
         unsigned const integration_order,
-        Parameter<double> const& volumetric_source_term)
+        ParameterLib::Parameter<double> const& volumetric_source_term)
         : _volumetric_source_term(volumetric_source_term),
           _integration_method(integration_order),
           _local_rhs(local_matrix_size)
@@ -97,7 +97,7 @@ public:
         unsigned const n_integration_points =
             _integration_method.getNumberOfPoints();
 
-        SpatialPosition pos;
+        ParameterLib::SpatialPosition pos;
         pos.setElementID(id);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
@@ -113,7 +113,7 @@ public:
     }
 
 private:
-    Parameter<double> const& _volumetric_source_term;
+    ParameterLib::Parameter<double> const& _volumetric_source_term;
 
     IntegrationMethod const _integration_method;
     std::vector<
-- 
GitLab