From 3dfd80ea823f968fef17b738439e83f34e66bf84 Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Tue, 27 Jul 2021 12:56:26 +0200
Subject: [PATCH] [Process] Moved BoudaryCondition and SourceTerms to one
 directory.

---
 Applications/CLI/CMakeLists.txt               |  3 +-
 Applications/CLI/ogs_embedded_python.cpp      |  6 +--
 .../BoundaryCondition.h                       |  2 +-
 .../BoundaryConditionCollection.cpp           |  0
 .../BoundaryConditionCollection.h             |  9 ++--
 .../BoundaryConditionConfig.h                 |  0
 .../ConstraintDirichletBoundaryCondition.cpp  | 54 +++++++++----------
 .../ConstraintDirichletBoundaryCondition.h    |  3 +-
 ...DirichletBoundaryConditionLocalAssembler.h |  6 +--
 .../CreateBoundaryCondition.cpp               |  0
 .../CreateBoundaryCondition.h                 |  0
 ...letBoundaryConditionWithinTimeInterval.cpp |  0
 ...chletBoundaryConditionWithinTimeInterval.h |  0
 .../CreateNodalSourceTerm.cpp                 |  0
 .../CreateNodalSourceTerm.h                   |  2 +-
 .../CreateSourceTerm.cpp                      |  0
 .../CreateSourceTerm.h                        |  2 +-
 .../CreateVolumetricSourceTerm.cpp            |  0
 .../CreateVolumetricSourceTerm.h              |  2 +-
 .../DeactivatedSubdomainDirichlet.cpp         | 18 ++++---
 .../DeactivatedSubdomainDirichlet.h           |  0
 .../DirichletBoundaryCondition.cpp            |  0
 .../DirichletBoundaryCondition.h              |  0
 ...letBoundaryConditionAuxiliaryFunctions.cpp |  0
 ...chletBoundaryConditionAuxiliaryFunctions.h |  5 +-
 ...letBoundaryConditionWithinTimeInterval.cpp |  0
 ...chletBoundaryConditionWithinTimeInterval.h |  2 +-
 .../GenericNaturalBoundaryCondition-impl.h    |  4 +-
 .../GenericNaturalBoundaryCondition.h         |  0
 ...icNaturalBoundaryConditionLocalAssembler.h |  0
 ...tiveFreeComponentFlowBoundaryCondition.cpp |  0
 ...ectiveFreeComponentFlowBoundaryCondition.h |  0
 ...onentFlowBoundaryConditionLocalAssembler.h |  0
 .../NeumannBoundaryCondition.cpp              |  0
 .../NeumannBoundaryCondition.h                |  0
 .../NeumannBoundaryConditionLocalAssembler.h  |  0
 .../NodalSourceTerm.cpp                       |  0
 .../NodalSourceTerm.h                         |  0
 .../NormalTractionBoundaryCondition-impl.h    |  4 +-
 .../NormalTractionBoundaryCondition.h         |  0
 ...lTractionBoundaryConditionLocalAssembler.h |  4 +-
 ...eversibleDamageOracleBoundaryCondition.cpp |  0
 ...rreversibleDamageOracleBoundaryCondition.h |  0
 ...leConstraintDirichletBoundaryCondition.cpp |  0
 ...ableConstraintDirichletBoundaryCondition.h |  0
 .../Python/BHEInflowPythonBoundaryCondition.h |  4 +-
 ...BHEInflowPythonBoundaryConditionModule.cpp |  0
 .../BHEInflowPythonBoundaryConditionModule.h  |  0
 ...thonBoundaryConditionPythonSideInterface.h | 10 ++--
 .../Python/CMakeLists.txt                     | 22 +++++---
 .../Python/CreatePythonSourceTerm.cpp         |  2 +-
 .../Python/CreatePythonSourceTerm.h           |  0
 .../Python/PythonBoundaryCondition.cpp        |  4 +-
 .../Python/PythonBoundaryCondition.h          |  5 +-
 .../PythonBoundaryConditionLocalAssembler.h   |  6 +--
 .../Python/PythonBoundaryConditionModule.cpp  |  0
 .../Python/PythonBoundaryConditionModule.h    |  1 +
 ...thonBoundaryConditionPythonSideInterface.h |  0
 .../Python/PythonSourceTerm.cpp               |  4 +-
 .../Python/PythonSourceTerm.h                 |  2 +-
 .../Python/PythonSourceTermLocalAssembler.h   |  2 +-
 .../PythonSourceTermLocalAssemblerInterface.h |  1 -
 .../Python/PythonSourceTermModule.cpp         |  0
 .../Python/PythonSourceTermModule.h           |  1 +
 .../PythonSourceTermPythonSideInterface.h     |  0
 .../RobinBoundaryCondition.cpp                |  0
 .../RobinBoundaryCondition.h                  |  0
 .../RobinBoundaryConditionLocalAssembler.h    |  0
 ...ionDependentDirichletBoundaryCondition.cpp |  0
 ...utionDependentDirichletBoundaryCondition.h |  0
 .../SourceTerm.h                              |  0
 .../SourceTermCollection.cpp                  |  0
 .../SourceTermCollection.h                    |  2 +-
 .../SourceTermConfig.h                        |  0
 .../SourceTermIntegrationPointData.h          |  3 +-
 .../Utils}/CreateLocalAssemblers.h            |  4 +-
 .../Utils}/LocalDataInitializer.h             |  4 +-
 ...iableDependentNeumannBoundaryCondition.cpp |  0
 ...ariableDependentNeumannBoundaryCondition.h |  0
 ...ntNeumannBoundaryConditionLocalAssembler.h |  3 +-
 .../VolumetricSourceTerm.cpp                  |  4 +-
 .../VolumetricSourceTerm.h                    |  0
 .../VolumetricSourceTermFEM.h                 |  0
 ProcessLib/CMakeLists.txt                     | 11 ++--
 .../BHEBottomDirichletBoundaryCondition.h     |  2 +-
 .../BHEInflowDirichletBoundaryCondition.h     |  2 +-
 .../HeatTransportBHEProcess.cpp               |  2 +-
 .../HeatTransportBHEProcessData.h             |  2 +-
 ProcessLib/Process.h                          |  4 +-
 ProcessLib/ProcessVariable.cpp                | 13 +++--
 ProcessLib/ProcessVariable.h                  |  5 +-
 ProcessLib/SourceTerms/Python/CMakeLists.txt  | 38 -------------
 92 files changed, 125 insertions(+), 164 deletions(-)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/BoundaryCondition.h (98%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/BoundaryConditionCollection.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/BoundaryConditionCollection.h (96%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/BoundaryConditionConfig.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/ConstraintDirichletBoundaryCondition.cpp (89%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/ConstraintDirichletBoundaryCondition.h (99%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/ConstraintDirichletBoundaryConditionLocalAssembler.h (97%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/CreateBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/CreateBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/CreateDirichletBoundaryConditionWithinTimeInterval.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/CreateDirichletBoundaryConditionWithinTimeInterval.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/CreateNodalSourceTerm.cpp (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/CreateNodalSourceTerm.h (97%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/CreateSourceTerm.cpp (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/CreateSourceTerm.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/CreateVolumetricSourceTerm.cpp (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/CreateVolumetricSourceTerm.h (97%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DeactivatedSubdomainDirichlet.cpp (89%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DeactivatedSubdomainDirichlet.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DirichletBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DirichletBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DirichletBoundaryConditionAuxiliaryFunctions.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DirichletBoundaryConditionAuxiliaryFunctions.h (96%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DirichletBoundaryConditionWithinTimeInterval.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/DirichletBoundaryConditionWithinTimeInterval.h (98%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/GenericNaturalBoundaryCondition-impl.h (96%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/GenericNaturalBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/GenericNaturalBoundaryConditionLocalAssembler.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/HCNonAdvectiveFreeComponentFlowBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/HCNonAdvectiveFreeComponentFlowBoundaryConditionLocalAssembler.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/NeumannBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/NeumannBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/NeumannBoundaryConditionLocalAssembler.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/NodalSourceTerm.cpp (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/NodalSourceTerm.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/NormalTractionBoundaryCondition-impl.h (96%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/NormalTractionBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/NormalTractionBoundaryConditionLocalAssembler.h (99%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/PrimaryVariableConstraintDirichletBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/PrimaryVariableConstraintDirichletBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/BHEInflowPythonBoundaryCondition.h (96%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/BHEInflowPythonBoundaryConditionModule.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/BHEInflowPythonBoundaryConditionModule.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h (94%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/CMakeLists.txt (58%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/CreatePythonSourceTerm.cpp (97%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/CreatePythonSourceTerm.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/PythonBoundaryCondition.cpp (98%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/PythonBoundaryCondition.h (94%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/PythonBoundaryConditionLocalAssembler.h (98%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/PythonBoundaryConditionModule.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/PythonBoundaryConditionModule.h (99%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/Python/PythonBoundaryConditionPythonSideInterface.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTerm.cpp (94%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTerm.h (97%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTermLocalAssembler.h (99%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTermLocalAssemblerInterface.h (99%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTermModule.cpp (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTermModule.h (99%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/Python/PythonSourceTermPythonSideInterface.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/RobinBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/RobinBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/RobinBoundaryConditionLocalAssembler.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/SolutionDependentDirichletBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/SolutionDependentDirichletBoundaryCondition.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/SourceTerm.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/SourceTermCollection.cpp (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/SourceTermCollection.h (96%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/SourceTermConfig.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/SourceTermIntegrationPointData.h (99%)
 rename ProcessLib/{Utils/ForBoundaryConditionOrSourceTerm => BoundaryConditionAndSourceTerm/Utils}/CreateLocalAssemblers.h (97%)
 rename ProcessLib/{Utils/ForBoundaryConditionOrSourceTerm => BoundaryConditionAndSourceTerm/Utils}/LocalDataInitializer.h (99%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/VariableDependentNeumannBoundaryCondition.cpp (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/VariableDependentNeumannBoundaryCondition.h (100%)
 rename ProcessLib/{BoundaryCondition => BoundaryConditionAndSourceTerm}/VariableDependentNeumannBoundaryConditionLocalAssembler.h (99%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/VolumetricSourceTerm.cpp (91%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/VolumetricSourceTerm.h (100%)
 rename ProcessLib/{SourceTerms => BoundaryConditionAndSourceTerm}/VolumetricSourceTermFEM.h (100%)
 delete mode 100644 ProcessLib/SourceTerms/Python/CMakeLists.txt

diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt
index 0bbbf41a4ed..462610a1eaf 100644
--- a/Applications/CLI/CMakeLists.txt
+++ b/Applications/CLI/CMakeLists.txt
@@ -34,8 +34,7 @@ if(OGS_USE_PYTHON)
     # this is up to you). TODO: Enable further compiler/linker flags.
     target_link_libraries(
         ogs_embedded_python PUBLIC pybind11::embed
-        PRIVATE ProcessLibBoundaryConditionPythonModule
-                ProcessLibSourceTermPythonModule
+        PRIVATE ProcessLibBoundaryConditionAndSourceTermPythonModule
     )
     target_compile_definitions(
         ogs_embedded_python
diff --git a/Applications/CLI/ogs_embedded_python.cpp b/Applications/CLI/ogs_embedded_python.cpp
index e41db52527d..604466d5f02 100644
--- a/Applications/CLI/ogs_embedded_python.cpp
+++ b/Applications/CLI/ogs_embedded_python.cpp
@@ -12,9 +12,9 @@
 #include <pybind11/embed.h>
 
 #include "BaseLib/Logging.h"
-#include "ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionModule.h"
-#include "ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.h"
-#include "ProcessLib/SourceTerms/Python/PythonSourceTermModule.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionModule.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermModule.h"
 
 PYBIND11_EMBEDDED_MODULE(OpenGeoSys, m)
 {
diff --git a/ProcessLib/BoundaryCondition/BoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h
similarity index 98%
rename from ProcessLib/BoundaryCondition/BoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h
index 3b65d2d9eaa..488b5d3d64e 100644
--- a/ProcessLib/BoundaryCondition/BoundaryCondition.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h
@@ -22,7 +22,7 @@ namespace NumLib
 class LocalToGlobalIndexMap;
 template <typename>
 struct IndexValueVector;
-}
+}  // namespace NumLib
 namespace ParameterLib
 {
 struct ParameterBase;
diff --git a/ProcessLib/BoundaryCondition/BoundaryConditionCollection.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionCollection.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/BoundaryConditionCollection.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionCollection.cpp
diff --git a/ProcessLib/BoundaryCondition/BoundaryConditionCollection.h b/ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionCollection.h
similarity index 96%
rename from ProcessLib/BoundaryCondition/BoundaryConditionCollection.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionCollection.h
index 06e9a425a8e..3a28d9eb58b 100644
--- a/ProcessLib/BoundaryCondition/BoundaryConditionCollection.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionCollection.h
@@ -10,11 +10,10 @@
 
 #pragma once
 
+#include "BoundaryCondition.h"
 #include "NumLib/IndexValueVector.h"
 #include "ProcessLib/ProcessVariable.h"
 
-#include "BoundaryCondition.h"
-
 namespace ProcessLib
 {
 class BoundaryConditionCollection final
@@ -35,7 +34,8 @@ public:
     getKnownSolutions(double const t, GlobalVector const& x) const
     {
         auto const n_bcs = _boundary_conditions.size();
-        for (std::size_t i=0; i<n_bcs; ++i) {
+        for (std::size_t i = 0; i < n_bcs; ++i)
+        {
             auto const& bc = *_boundary_conditions[i];
             auto& dirichlet_storage = _dirichlet_bcs[i];
             bc.getEssentialBCValues(t, x, dirichlet_storage);
@@ -73,7 +73,8 @@ public:
     }
 
 private:
-    mutable std::vector<NumLib::IndexValueVector<GlobalIndexType>> _dirichlet_bcs;
+    mutable std::vector<NumLib::IndexValueVector<GlobalIndexType>>
+        _dirichlet_bcs;
     std::vector<std::unique_ptr<BoundaryCondition>> _boundary_conditions;
     std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
         _parameters;
diff --git a/ProcessLib/BoundaryCondition/BoundaryConditionConfig.h b/ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionConfig.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/BoundaryConditionConfig.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionConfig.h
diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryCondition.cpp
similarity index 89%
rename from ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryCondition.cpp
index 8f18986a8a9..d6ab011c9d3 100644
--- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryCondition.cpp
@@ -17,7 +17,7 @@
 #include "MeshLib/MeshSearch/NodeSearch.h"  // for getUniqueNodes
 #include "MeshLib/Node.h"
 #include "ParameterLib/Utils.h"
-#include "ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
 
 namespace ProcessLib
 {
@@ -78,8 +78,9 @@ ConstraintDirichletBoundaryCondition::ConstraintDirichletBoundaryCondition(
             "bulk_node_ids", MeshLib::MeshItemType::Node, 1);
     auto const& bulk_nodes = bulk_mesh.getNodes();
 
-    auto get_bulk_element_face_id = [&](auto const bulk_element_id,
-                                        MeshLib::Element const* bc_elem) {
+    auto get_bulk_element_face_id =
+        [&](auto const bulk_element_id, MeshLib::Element const* bc_elem)
+    {
         auto const* bulk_elem = _bulk_mesh.getElement(bulk_element_id);
         std::array<MeshLib::Node*, 3> nodes{
             {bulk_nodes[(*bulk_node_ids)[bc_elem->getNode(0)->getID()]],
@@ -89,18 +90,20 @@ ConstraintDirichletBoundaryCondition::ConstraintDirichletBoundaryCondition(
     };
 
     _bulk_ids.reserve(bc_elements.size());
-    std::transform(begin(bc_elements), end(bc_elements),
-                   std::back_inserter(_bulk_ids), [&](auto const* bc_element) {
-                       auto const bulk_element_id =
-                           (*bulk_element_ids)[bc_element->getID()];
-                       return std::make_pair(bulk_element_id,
-                                             get_bulk_element_face_id(
-                                                 bulk_element_id, bc_element));
-                   });
+    std::transform(
+        begin(bc_elements), end(bc_elements), std::back_inserter(_bulk_ids),
+        [&](auto const* bc_element)
+        {
+            auto const bulk_element_id =
+                (*bulk_element_ids)[bc_element->getID()];
+            return std::make_pair(
+                bulk_element_id,
+                get_bulk_element_face_id(bulk_element_id, bc_element));
+        });
 
     const int shape_function_order = 1;
 
-    BoundaryConditionOrSourceTerm::createLocalAssemblers<
+    BoundaryConditionAndSourceTerm::createLocalAssemblers<
         ConstraintDirichletBoundaryConditionLocalAssembler>(
         _bulk_mesh.getDimension(), _bc_mesh.getElements(), *_dof_table_boundary,
         shape_function_order, _local_assemblers, _bc_mesh.isAxiallySymmetric(),
@@ -121,9 +124,8 @@ void ConstraintDirichletBoundaryCondition::preTimestep(
                 x, t,
                 [this](std::size_t const element_id,
                        MathLib::Point3d const& pnt, double const t,
-                       std::vector<GlobalVector*> const& x) {
-                    return _getFlux(element_id, pnt, t, x);
-                });
+                       std::vector<GlobalVector*> const& x)
+                { return _getFlux(element_id, pnt, t, x); });
     }
 }
 
@@ -138,7 +140,8 @@ void ConstraintDirichletBoundaryCondition::getEssentialBCValues(
 
     std::vector<std::pair<GlobalIndexType, double>> tmp_bc_values;
 
-    auto isFlux = [&](const std::size_t element_id) {
+    auto isFlux = [&](const std::size_t element_id)
+    {
         return _lower ? _flux_values[element_id] < _constraint_threshold
                       : _flux_values[element_id] > _constraint_threshold;
     };
@@ -193,9 +196,8 @@ void ConstraintDirichletBoundaryCondition::getEssentialBCValues(
     // first: sort the (node id, value) pairs according to the node id
     std::sort(tmp_bc_values.begin(), tmp_bc_values.end(),
               [](std::pair<GlobalIndexType, double> const& a,
-                 std::pair<GlobalIndexType, double> const& b) {
-                  return a.first < b.first;
-              });
+                 std::pair<GlobalIndexType, double> const& b)
+              { return a.first < b.first; });
     // second: average the values over equal node id ranges
     unsigned cnt = 1;
     GlobalIndexType current_id = tmp_bc_values.begin()->first;
@@ -259,11 +261,10 @@ createConstraintDirichletBoundaryCondition(
     const int process_id = 0;
     auto process_variables =
         constraining_process.getProcessVariables(process_id);
-    auto constraining_pv = std::find_if(
-        process_variables.cbegin(), process_variables.cend(),
-        [&constraining_process_variable](ProcessVariable const& pv) {
-            return pv.getName() == constraining_process_variable;
-        });
+    auto constraining_pv =
+        std::find_if(process_variables.cbegin(), process_variables.cend(),
+                     [&constraining_process_variable](ProcessVariable const& pv)
+                     { return pv.getName() == constraining_process_variable; });
     if (constraining_pv == std::end(process_variables))
     {
         auto const& constraining_process_variable_name =
@@ -320,9 +321,8 @@ createConstraintDirichletBoundaryCondition(
         lower,
         [&constraining_process](std::size_t const element_id,
                                 MathLib::Point3d const& pnt, double const t,
-                                std::vector<GlobalVector*> const& x) {
-            return constraining_process.getFlux(element_id, pnt, t, x);
-        });
+                                std::vector<GlobalVector*> const& x)
+        { return constraining_process.getFlux(element_id, pnt, t, x); });
 }
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryCondition.h
similarity index 99%
rename from ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryCondition.h
index 1f0cd564321..d8d0d2e8a4d 100644
--- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryCondition.h
@@ -11,12 +11,11 @@
 #pragma once
 
 #include "BoundaryCondition.h"
+#include "ConstraintDirichletBoundaryConditionLocalAssembler.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "NumLib/IndexValueVector.h"
 #include "ParameterLib/Parameter.h"
 
-#include "ConstraintDirichletBoundaryConditionLocalAssembler.h"
-
 namespace ProcessLib
 {
 /// The ConstraintDirichletBoundaryCondition class describes a Dirichlet-type
diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryConditionLocalAssembler.h
similarity index 97%
rename from ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryConditionLocalAssembler.h
index 3cdf60405a9..0d3d8e44e75 100644
--- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/ConstraintDirichletBoundaryConditionLocalAssembler.h
@@ -21,7 +21,6 @@
 
 namespace ProcessLib
 {
-
 struct IntegrationPointData final
 {
     IntegrationPointData(double const& detJ,
@@ -72,9 +71,8 @@ public:
     /// @param bulk_ids Pairs of bulk element ids and bulk element face ids.
     ConstraintDirichletBoundaryConditionLocalAssembler(
         MeshLib::Element const& surface_element,
-        std::size_t /* local_matrix_size */,
-        bool const is_axially_symmetric, unsigned const integration_order,
-        MeshLib::Mesh const& bulk_mesh,
+        std::size_t /* local_matrix_size */, bool const is_axially_symmetric,
+        unsigned const integration_order, MeshLib::Mesh const& bulk_mesh,
         std::vector<std::pair<std::size_t, unsigned>> bulk_ids)
         : _surface_element(surface_element),
           _integration_method(integration_order),
diff --git a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/CreateBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/CreateBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/CreateBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/CreateDirichletBoundaryConditionWithinTimeInterval.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/CreateDirichletBoundaryConditionWithinTimeInterval.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/CreateDirichletBoundaryConditionWithinTimeInterval.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateDirichletBoundaryConditionWithinTimeInterval.cpp
diff --git a/ProcessLib/BoundaryCondition/CreateDirichletBoundaryConditionWithinTimeInterval.h b/ProcessLib/BoundaryConditionAndSourceTerm/CreateDirichletBoundaryConditionWithinTimeInterval.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/CreateDirichletBoundaryConditionWithinTimeInterval.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateDirichletBoundaryConditionWithinTimeInterval.h
diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/CreateNodalSourceTerm.cpp
similarity index 100%
rename from ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateNodalSourceTerm.cpp
diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/CreateNodalSourceTerm.h
similarity index 97%
rename from ProcessLib/SourceTerms/CreateNodalSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateNodalSourceTerm.h
index 27c48c12046..f88f940d8fb 100644
--- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/CreateNodalSourceTerm.h
@@ -43,4 +43,4 @@ std::unique_ptr<SourceTerm> createNodalSourceTerm(
     std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
         parameters);
 
-}   // namespace ProcessLib
+}  // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/CreateSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/CreateSourceTerm.cpp
similarity index 100%
rename from ProcessLib/SourceTerms/CreateSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateSourceTerm.cpp
diff --git a/ProcessLib/SourceTerms/CreateSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/CreateSourceTerm.h
similarity index 100%
rename from ProcessLib/SourceTerms/CreateSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateSourceTerm.h
index 013fe9c95ec..b8ca68e3fa1 100644
--- a/ProcessLib/SourceTerms/CreateSourceTerm.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/CreateSourceTerm.h
@@ -10,8 +10,8 @@
 
 #pragma once
 
-#include <vector>
 #include <memory>
+#include <vector>
 
 #include "ParameterLib/Parameter.h"
 
diff --git a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/CreateVolumetricSourceTerm.cpp
similarity index 100%
rename from ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateVolumetricSourceTerm.cpp
diff --git a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/CreateVolumetricSourceTerm.h
similarity index 97%
rename from ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/CreateVolumetricSourceTerm.h
index f5a632eea09..99cf10ac861 100644
--- a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/CreateVolumetricSourceTerm.h
@@ -44,4 +44,4 @@ std::unique_ptr<SourceTerm> createVolumetricSourceTerm(
     std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     unsigned const integration_order, unsigned const shapefunction_order);
 
-}   // namespace ProcessLib
+}  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/DeactivatedSubdomainDirichlet.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/DeactivatedSubdomainDirichlet.cpp
similarity index 89%
rename from ProcessLib/BoundaryCondition/DeactivatedSubdomainDirichlet.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/DeactivatedSubdomainDirichlet.cpp
index 2090ec8e7f0..d75678fd330 100644
--- a/ProcessLib/BoundaryCondition/DeactivatedSubdomainDirichlet.cpp
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/DeactivatedSubdomainDirichlet.cpp
@@ -60,16 +60,18 @@ void DeactivatedSubdomainDirichlet::getEssentialBCValues(
              .template getPropertyVector<std::size_t>(
                  "bulk_element_ids", MeshLib::MeshItemType::Cell, 1);
 
-    auto is_inactive = [&](MeshLib::Element const* const e) {
-        return none_of(
-            begin(*_active_element_ids), end(*_active_element_ids),
-            [&](auto const id) { return id == bulk_element_ids[e->getID()]; });
+    auto is_inactive = [&](MeshLib::Element const* const e)
+    {
+        return none_of(begin(*_active_element_ids), end(*_active_element_ids),
+                       [&](auto const id)
+                       { return id == bulk_element_ids[e->getID()]; });
     };
 
     std::vector<MeshLib::Node*> inactive_nodes_in_bc_mesh;
     std::copy_if(begin(_subdomain.inner_nodes), end(_subdomain.inner_nodes),
                  back_inserter(inactive_nodes_in_bc_mesh),
-                 [&](MeshLib::Node* const n) {
+                 [&](MeshLib::Node* const n)
+                 {
                      const auto& connected_elements = n->getElements();
 
                      return std::all_of(begin(connected_elements),
@@ -80,7 +82,8 @@ void DeactivatedSubdomainDirichlet::getEssentialBCValues(
     {
         std::copy_if(begin(_subdomain.outer_nodes), end(_subdomain.outer_nodes),
                      back_inserter(inactive_nodes_in_bc_mesh),
-                     [&](MeshLib::Node* const n) {
+                     [&](MeshLib::Node* const n)
+                     {
                          const auto& connected_elements = n->getElements();
 
                          return std::all_of(begin(connected_elements),
@@ -89,7 +92,8 @@ void DeactivatedSubdomainDirichlet::getEssentialBCValues(
                      });
     }
 
-    auto time_interval_contains = [&](double const t) {
+    auto time_interval_contains = [&](double const t)
+    {
         return _time_interval.getSupportMin() <= t &&
                t <= _time_interval.getSupportMax();
     };
diff --git a/ProcessLib/BoundaryCondition/DeactivatedSubdomainDirichlet.h b/ProcessLib/BoundaryConditionAndSourceTerm/DeactivatedSubdomainDirichlet.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/DeactivatedSubdomainDirichlet.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/DeactivatedSubdomainDirichlet.h
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionAuxiliaryFunctions.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionAuxiliaryFunctions.cpp
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionAuxiliaryFunctions.h
similarity index 96%
rename from ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionAuxiliaryFunctions.h
index 6d20027d48a..062173de945 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionAuxiliaryFunctions.h
@@ -18,20 +18,21 @@
 #pragma once
 
 #include <vector>
+
 #include "MathLib/LinAlg/GlobalMatrixVectorTypes.h"
 
 namespace MeshLib
 {
 class Mesh;
 class Node;
-}
+}  // namespace MeshLib
 
 namespace NumLib
 {
 class LocalToGlobalIndexMap;
 template <typename>
 struct IndexValueVector;
-}
+}  // namespace NumLib
 
 namespace ParameterLib
 {
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionWithinTimeInterval.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionWithinTimeInterval.cpp
diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionWithinTimeInterval.h
similarity index 98%
rename from ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionWithinTimeInterval.h
index c6e07e8efb6..f3f850d8a1b 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/DirichletBoundaryConditionWithinTimeInterval.h
@@ -22,7 +22,7 @@ namespace BaseLib
 {
 class ConfigTree;
 struct TimeInterval;
-}
+}  // namespace BaseLib
 
 namespace MeshLib
 {
diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h b/ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryCondition-impl.h
similarity index 96%
rename from ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryCondition-impl.h
index dfd07225c6f..1d997e15f31 100644
--- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryCondition-impl.h
@@ -9,7 +9,7 @@
  */
 
 #include "GenericNaturalBoundaryConditionLocalAssembler.h"
-#include "ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
 
 namespace ProcessLib
 {
@@ -65,7 +65,7 @@ GenericNaturalBoundaryCondition<BoundaryConditionData,
     _dof_table_boundary.reset(dof_table_bulk.deriveBoundaryConstrainedMap(
         variable_id, {component_id}, std::move(bc_mesh_subset)));
 
-    BoundaryConditionOrSourceTerm::createLocalAssemblers<
+    BoundaryConditionAndSourceTerm::createLocalAssemblers<
         LocalAssemblerImplementation>(
         global_dim, _bc_mesh.getElements(), *_dof_table_boundary,
         shapefunction_order, _local_assemblers, _bc_mesh.isAxiallySymmetric(),
diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryConditionLocalAssembler.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryConditionLocalAssembler.h
diff --git a/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/HCNonAdvectiveFreeComponentFlowBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/HCNonAdvectiveFreeComponentFlowBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/HCNonAdvectiveFreeComponentFlowBoundaryConditionLocalAssembler.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/HCNonAdvectiveFreeComponentFlowBoundaryConditionLocalAssembler.h
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/NeumannBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/NeumannBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/NeumannBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/NeumannBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/NeumannBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/NeumannBoundaryConditionLocalAssembler.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/NeumannBoundaryConditionLocalAssembler.h
diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/NodalSourceTerm.cpp
similarity index 100%
rename from ProcessLib/SourceTerms/NodalSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/NodalSourceTerm.cpp
diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/NodalSourceTerm.h
similarity index 100%
rename from ProcessLib/SourceTerms/NodalSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/NodalSourceTerm.h
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h b/ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryCondition-impl.h
similarity index 96%
rename from ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryCondition-impl.h
index 460fdc8d2f7..f74824c975e 100644
--- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryCondition-impl.h
@@ -15,7 +15,7 @@
 #include "MeshLib/MeshSearch/NodeSearch.h"
 #include "NormalTractionBoundaryConditionLocalAssembler.h"
 #include "ParameterLib/Utils.h"
-#include "ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
 
 namespace ProcessLib
 {
@@ -51,7 +51,7 @@ NormalTractionBoundaryCondition<GlobalDim, LocalAssemblerImplementation>::
     _dof_table_boundary.reset(dof_table_bulk.deriveBoundaryConstrainedMap(
         variable_id, component_ids, std::move(bc_mesh_subset)));
 
-    BoundaryConditionOrSourceTerm::detail::createLocalAssemblers<
+    BoundaryConditionAndSourceTerm::detail::createLocalAssemblers<
         GlobalDim, LocalAssemblerImplementation>(
         *_dof_table_boundary, shapefunction_order, _bc_mesh.getElements(),
         _local_assemblers, _bc_mesh.isAxiallySymmetric(), _integration_order,
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryConditionLocalAssembler.h
similarity index 99%
rename from ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryConditionLocalAssembler.h
index 321cfed06b9..66533ee18a1 100644
--- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/NormalTractionBoundaryConditionLocalAssembler.h
@@ -10,13 +10,12 @@
 
 #pragma once
 
+#include "GenericNaturalBoundaryConditionLocalAssembler.h"
 #include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 #include "MeshLib/Elements/FaceRule.h"
 #include "NumLib/DOF/DOFTableUtil.h"
 #include "ParameterLib/Parameter.h"
 
-#include "GenericNaturalBoundaryConditionLocalAssembler.h"
-
 namespace ProcessLib
 {
 namespace NormalTractionBoundaryCondition
@@ -104,7 +103,6 @@ public:
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
         {
-
             double const integration_weight =
                 _integration_method.getWeightedPoint(ip).getWeight() *
                 shape_matrices_u[ip].integralMeasure *
diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/PrimaryVariableConstraintDirichletBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/PrimaryVariableConstraintDirichletBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/PrimaryVariableConstraintDirichletBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/PrimaryVariableConstraintDirichletBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryCondition.h
similarity index 96%
rename from ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryCondition.h
index 330a051afe6..874ad28aded 100644
--- a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryCondition.h
@@ -19,8 +19,8 @@
 #include "BHEInflowPythonBoundaryConditionPythonSideInterface.h"
 #include "BaseLib/Error.h"
 #include "NumLib/IndexValueVector.h"
-#include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
-#include "ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryConditionLocalAssembler.h"
 #include "ProcessLib/HeatTransportBHE/BHE/BHETypes.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
 #include "ProcessLib/Utils/ProcessUtils.h"
diff --git a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionModule.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionModule.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionModule.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionModule.cpp
diff --git a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionModule.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionModule.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionModule.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionModule.h
diff --git a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h
similarity index 94%
rename from ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h
index 150aa5d7582..46be109f499 100644
--- a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h
@@ -41,7 +41,8 @@ public:
     }
 
     /*!
-     * transfer BHE network dataframe to TESPy and get Tin and flow rate from TESPy
+     * transfer BHE network dataframe to TESPy and get Tin and flow rate from
+     * TESPy
      *
      * \return a tuple (if use tespyThermalSolver, if convergence achieved
      * in tespy, BHE Tin value, BHE flow rate from TESPy)
@@ -50,10 +51,9 @@ public:
      * inflow temperature and flow rate for all BHEs.
      */
     virtual std::tuple<bool, bool, std::vector<double>, std::vector<double>>
-    tespySolver(
-        double /*t*/,
-        std::vector<double> const& /*Tin_val*/,
-        std::vector<double> const& /*Tout_val*/) const
+    tespySolver(double /*t*/,
+                std::vector<double> const& /*Tin_val*/,
+                std::vector<double> const& /*Tout_val*/) const
     {
         _overridden_tespy = false;
         return std::tuple<bool, bool, std::vector<double>, std::vector<double>>{
diff --git a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt b/ProcessLib/BoundaryConditionAndSourceTerm/Python/CMakeLists.txt
similarity index 58%
rename from ProcessLib/BoundaryCondition/Python/CMakeLists.txt
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/CMakeLists.txt
index 1e4dc304374..00320b44c7c 100644
--- a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/CMakeLists.txt
@@ -1,15 +1,21 @@
 ogs_add_library(
-    ProcessLibBoundaryConditionPython
+    ProcessLibBoundaryConditionAndSourceTermPython
     PythonBoundaryCondition.cpp
     PythonBoundaryCondition.h
     PythonBoundaryConditionLocalAssembler.h
     PythonBoundaryConditionPythonSideInterface.h
     BHEInflowPythonBoundaryCondition.h
     BHEInflowPythonBoundaryConditionPythonSideInterface.h
+    CreatePythonSourceTerm.cpp
+    CreatePythonSourceTerm.h
+    PythonSourceTerm.cpp
+    PythonSourceTerm.h
+    PythonSourceTermLocalAssembler.h
+    PythonSourceTermPythonSideInterface.h
 )
 
 target_compile_definitions(
-    ProcessLibBoundaryConditionPython
+    ProcessLibBoundaryConditionAndSourceTermPython
     PUBLIC OGS_USE_PYTHON
            # Enabled elements
            OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM}
@@ -21,19 +27,21 @@ target_compile_definitions(
 )
 
 target_link_libraries(
-    ProcessLibBoundaryConditionPython PUBLIC BaseLib MathLib MeshLib NumLib
-                                             ${Python3_LIBRARIES}
+    ProcessLibBoundaryConditionAndSourceTermPython PUBLIC BaseLib MathLib MeshLib NumLib
+                                                          ${Python3_LIBRARIES}
     PRIVATE pybind11::pybind11
 )
 
 # For the embedded Python module
 ogs_add_library(
-    ProcessLibBoundaryConditionPythonModule PythonBoundaryConditionModule.cpp
+    ProcessLibBoundaryConditionAndSourceTermPythonModule PythonBoundaryConditionModule.cpp
     PythonBoundaryConditionModule.h BHEInflowPythonBoundaryConditionModule.cpp
     BHEInflowPythonBoundaryConditionModule.h
+    PythonSourceTermModule.cpp
+    PythonSourceTermModule.h
 )
 
 target_link_libraries(
-    ProcessLibBoundaryConditionPythonModule
-    PUBLIC ProcessLibBoundaryConditionPython pybind11::pybind11
+    ProcessLibBoundaryConditionAndSourceTermPythonModule
+    PUBLIC ProcessLibBoundaryConditionAndSourceTermPython pybind11::pybind11
 )
diff --git a/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/Python/CreatePythonSourceTerm.cpp
similarity index 97%
rename from ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/CreatePythonSourceTerm.cpp
index b795463fb09..3e05f7bc10d 100644
--- a/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/CreatePythonSourceTerm.cpp
@@ -15,7 +15,7 @@
 #include "BaseLib/ConfigTree.h"
 #include "MeshLib/Mesh.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
-#include "ProcessLib/SourceTerms/SourceTerm.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/SourceTerm.h"
 #include "PythonSourceTerm.h"
 
 namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/CreatePythonSourceTerm.h
similarity index 100%
rename from ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/CreatePythonSourceTerm.h
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryCondition.cpp
similarity index 98%
rename from ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryCondition.cpp
index deed7068845..15d6f05f0df 100644
--- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryCondition.cpp
@@ -16,7 +16,7 @@
 
 #include "BaseLib/ConfigTree.h"
 #include "MeshLib/MeshSearch/NodeSearch.h"
-#include "ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
 #include "PythonBoundaryConditionLocalAssembler.h"
 
 namespace
@@ -75,7 +75,7 @@ PythonBoundaryCondition::PythonBoundaryCondition(
     _dof_table_boundary = _bc_data.dof_table_bulk.deriveBoundaryConstrainedMap(
         std::move(bc_mesh_subset));
 
-    BoundaryConditionOrSourceTerm::createLocalAssemblers<
+    BoundaryConditionAndSourceTerm::createLocalAssemblers<
         PythonBoundaryConditionLocalAssembler>(
         global_dim, _bc_data.boundary_mesh.getElements(), *_dof_table_boundary,
         shapefunction_order, _local_assemblers,
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryCondition.h
similarity index 94%
rename from ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryCondition.h
index bb2f2a94ef3..6bd8a8c1de9 100644
--- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryCondition.h
@@ -12,9 +12,8 @@
 
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "NumLib/IndexValueVector.h"
-#include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
-#include "ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h"
-
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryConditionLocalAssembler.h"
 #include "PythonBoundaryConditionPythonSideInterface.h"
 
 namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionLocalAssembler.h
similarity index 98%
rename from ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionLocalAssembler.h
index 9bbcf0b68ee..44aecfb0c5a 100644
--- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionLocalAssembler.h
@@ -10,12 +10,10 @@
 
 #pragma once
 
-#include "PythonBoundaryCondition.h"
-
 #include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 #include "NumLib/DOF/DOFTableUtil.h"
-#include "ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h"
-
+#include "ProcessLib/BoundaryConditionAndSourceTerm/GenericNaturalBoundaryConditionLocalAssembler.h"
+#include "PythonBoundaryCondition.h"
 #include "PythonBoundaryConditionPythonSideInterface.h"
 
 namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.cpp
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.h
similarity index 99%
rename from ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.h
index 3d2daf036a6..2534a2bc8da 100644
--- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.h
@@ -11,6 +11,7 @@
 #pragma once
 
 #include <pybind11/pybind11.h>
+
 #include "BaseLib/ExportSymbol.h"
 
 namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionPythonSideInterface.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionPythonSideInterface.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionPythonSideInterface.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionPythonSideInterface.h
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTerm.cpp
similarity index 94%
rename from ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTerm.cpp
index 12cb687bd20..91c145ebafb 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTerm.cpp
@@ -16,7 +16,7 @@
 
 #include "MeshLib/MeshSearch/NodeSearch.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
-#include "ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
 #include "PythonSourceTermLocalAssembler.h"
 
 namespace
@@ -71,7 +71,7 @@ PythonSourceTerm::PythonSourceTerm(
       _source_term_data(std::move(source_term_data)),
       _flush_stdout(flush_stdout)
 {
-    BoundaryConditionOrSourceTerm::createLocalAssemblers<
+    BoundaryConditionAndSourceTerm::createLocalAssemblers<
         PythonSourceTermLocalAssembler>(
         global_dim, _source_term_data.source_term_mesh.getElements(),
         *_source_term_dof_table, shapefunction_order, _local_assemblers,
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTerm.h
similarity index 97%
rename from ProcessLib/SourceTerms/Python/PythonSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTerm.h
index 44e0492196e..3890ef76cc2 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTerm.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTerm.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include "ProcessLib/SourceTerms/SourceTerm.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/SourceTerm.h"
 #include "PythonSourceTermLocalAssemblerInterface.h"
 #include "PythonSourceTermPythonSideInterface.h"
 
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermLocalAssembler.h
similarity index 99%
rename from ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermLocalAssembler.h
index 6626ce7e1cc..e642ffd27ea 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermLocalAssembler.h
@@ -103,7 +103,7 @@ public:
 
         // gather primary variables
         typename ShapeMatricesType::template MatrixType<ShapeFunction::NPOINTS,
-                                                       Eigen::Dynamic>
+                                                        Eigen::Dynamic>
             primary_variables_mat(num_nodes, num_comp_total);
         for (int var = 0; var < num_var; ++var)
         {
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssemblerInterface.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermLocalAssemblerInterface.h
similarity index 99%
rename from ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssemblerInterface.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermLocalAssemblerInterface.h
index 6be906d23c0..8b9120d8ba4 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssemblerInterface.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermLocalAssemblerInterface.h
@@ -16,7 +16,6 @@ namespace SourceTerms
 {
 namespace Python
 {
-
 class PythonSourceTermLocalAssemblerInterface
 {
 public:
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermModule.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermModule.cpp
similarity index 100%
rename from ProcessLib/SourceTerms/Python/PythonSourceTermModule.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermModule.cpp
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermModule.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermModule.h
similarity index 99%
rename from ProcessLib/SourceTerms/Python/PythonSourceTermModule.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermModule.h
index e574a783326..7079ec165cd 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTermModule.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermModule.h
@@ -11,6 +11,7 @@
 #pragma once
 
 #include <pybind11/pybind11.h>
+
 #include "BaseLib/ExportSymbol.h"
 
 namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermPythonSideInterface.h b/ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermPythonSideInterface.h
similarity index 100%
rename from ProcessLib/SourceTerms/Python/PythonSourceTermPythonSideInterface.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonSourceTermPythonSideInterface.h
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/RobinBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/RobinBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/RobinBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/RobinBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/RobinBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/RobinBoundaryConditionLocalAssembler.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/RobinBoundaryConditionLocalAssembler.h
diff --git a/ProcessLib/BoundaryCondition/SolutionDependentDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/SolutionDependentDirichletBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/SolutionDependentDirichletBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/SolutionDependentDirichletBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/SolutionDependentDirichletBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/SolutionDependentDirichletBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/SolutionDependentDirichletBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/SolutionDependentDirichletBoundaryCondition.h
diff --git a/ProcessLib/SourceTerms/SourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTerm.h
similarity index 100%
rename from ProcessLib/SourceTerms/SourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/SourceTerm.h
diff --git a/ProcessLib/SourceTerms/SourceTermCollection.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.cpp
similarity index 100%
rename from ProcessLib/SourceTerms/SourceTermCollection.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.cpp
diff --git a/ProcessLib/SourceTerms/SourceTermCollection.h b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.h
similarity index 96%
rename from ProcessLib/SourceTerms/SourceTermCollection.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.h
index af922046283..19e5c19bcd9 100644
--- a/ProcessLib/SourceTerms/SourceTermCollection.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.h
@@ -11,7 +11,7 @@
 #pragma once
 
 #include "ProcessLib/ProcessVariable.h"
-#include "ProcessLib/SourceTerms/SourceTerm.h"
+#include "SourceTerm.h"
 
 namespace ProcessLib
 {
diff --git a/ProcessLib/SourceTerms/SourceTermConfig.h b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermConfig.h
similarity index 100%
rename from ProcessLib/SourceTerms/SourceTermConfig.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/SourceTermConfig.h
diff --git a/ProcessLib/SourceTerms/SourceTermIntegrationPointData.h b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermIntegrationPointData.h
similarity index 99%
rename from ProcessLib/SourceTerms/SourceTermIntegrationPointData.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/SourceTermIntegrationPointData.h
index b5002ca982d..9fb7e18e19b 100644
--- a/ProcessLib/SourceTerms/SourceTermIntegrationPointData.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermIntegrationPointData.h
@@ -10,14 +10,13 @@
 
 #pragma once
 
+#include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 #include "NumLib/Extrapolation/ExtrapolatableElement.h"
 #include "NumLib/Function/Interpolation.h"
 #include "ProcessLib/LocalAssemblerInterface.h"
-#include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 
 namespace ProcessLib
 {
-
 template <typename NodalRowVectorType>
 struct SourceTermIntegrationPointData final
 {
diff --git a/ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h b/ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h
similarity index 97%
rename from ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h
index b12f7808662..d6299bbfea2 100644
--- a/ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h
@@ -17,7 +17,7 @@
 
 namespace ProcessLib
 {
-namespace BoundaryConditionOrSourceTerm
+namespace BoundaryConditionAndSourceTerm
 {
 namespace detail
 {
@@ -97,5 +97,5 @@ void createLocalAssemblers(
                 "Meshes with dimension greater than three are not supported.");
     }
 }
-}  // namespace BoundaryConditionOrSourceTerm
+}  // namespace BoundaryConditionAndSourceTerm
 }  // namespace ProcessLib
diff --git a/ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/LocalDataInitializer.h b/ProcessLib/BoundaryConditionAndSourceTerm/Utils/LocalDataInitializer.h
similarity index 99%
rename from ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/LocalDataInitializer.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/Utils/LocalDataInitializer.h
index 032af2890b6..8ab6dd77725 100644
--- a/ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/LocalDataInitializer.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/Utils/LocalDataInitializer.h
@@ -114,7 +114,7 @@ static_assert(false, "The macro OGS_MAX_ELEMENT_ORDER is undefined.");
 
 namespace ProcessLib
 {
-namespace BoundaryConditionOrSourceTerm
+namespace BoundaryConditionAndSourceTerm
 {
 /// The LocalDataInitializer is a functor creating a local assembler data with
 /// corresponding to the mesh element type shape functions and calling
@@ -389,7 +389,7 @@ private:
     }
 };
 
-}  // namespace BoundaryConditionOrSourceTerm
+}  // namespace BoundaryConditionAndSourceTerm
 }  // namespace ProcessLib
 #undef ENABLED_ELEMENT_TYPE_SIMPLEX
 #undef ENABLED_ELEMENT_TYPE_CUBOID
diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryCondition.cpp
similarity index 100%
rename from ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryCondition.cpp
diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.h b/ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryCondition.h
similarity index 100%
rename from ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryCondition.h
diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryConditionLocalAssembler.h
similarity index 99%
rename from ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryConditionLocalAssembler.h
index 0f7d9c6c73b..88668260901 100644
--- a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/VariableDependentNeumannBoundaryConditionLocalAssembler.h
@@ -10,13 +10,12 @@
 
 #pragma once
 
+#include "GenericNaturalBoundaryConditionLocalAssembler.h"
 #include "MeshLib/PropertyVector.h"
 #include "NumLib/DOF/DOFTableUtil.h"
 #include "NumLib/Function/Interpolation.h"
 #include "ParameterLib/MeshNodeParameter.h"
 
-#include "GenericNaturalBoundaryConditionLocalAssembler.h"
-
 namespace ProcessLib
 {
 struct VariableDependentNeumannBoundaryConditionData
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTerm.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTerm.cpp
similarity index 91%
rename from ProcessLib/SourceTerms/VolumetricSourceTerm.cpp
rename to ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTerm.cpp
index 62be8d56432..e8ec38890c8 100644
--- a/ProcessLib/SourceTerms/VolumetricSourceTerm.cpp
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTerm.cpp
@@ -10,7 +10,7 @@
 
 #include "VolumetricSourceTerm.h"
 
-#include "ProcessLib/Utils/ForBoundaryConditionOrSourceTerm/CreateLocalAssemblers.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
 
 namespace ProcessLib
 {
@@ -22,7 +22,7 @@ VolumetricSourceTerm::VolumetricSourceTerm(
     : SourceTerm(std::move(source_term_dof_table)),
       _source_term_parameter(source_term_parameter)
 {
-    BoundaryConditionOrSourceTerm::createLocalAssemblers<
+    BoundaryConditionAndSourceTerm::createLocalAssemblers<
         VolumetricSourceTermLocalAssembler>(
         bulk_mesh_dimension, source_term_mesh.getElements(),
         *_source_term_dof_table, shapefunction_order, _local_assemblers,
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTerm.h b/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTerm.h
similarity index 100%
rename from ProcessLib/SourceTerms/VolumetricSourceTerm.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTerm.h
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h b/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTermFEM.h
similarity index 100%
rename from ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
rename to ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTermFEM.h
diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt
index f1b2e308d5d..2ca5eb57038 100644
--- a/ProcessLib/CMakeLists.txt
+++ b/ProcessLib/CMakeLists.txt
@@ -12,18 +12,16 @@ foreach(process ${_processes_list})
 endforeach()
 
 get_source_files(SOURCES)
-append_source_files(SOURCES BoundaryCondition)
+append_source_files(SOURCES BoundaryConditionAndSourceTerm)
+append_source_files(SOURCES BoundaryConditionAndSourceTerm/Utils)
 append_source_files(SOURCES SurfaceFlux)
 append_source_files(SOURCES Output)
-append_source_files(SOURCES SourceTerms)
 append_source_files(SOURCES Utils)
-append_source_files(SOURCES Utils/ForBoundaryConditionOrSourceTerm)
 
 ogs_add_library(ProcessLib ${SOURCES})
 
 if(OGS_USE_PYTHON)
-    add_subdirectory(BoundaryCondition/Python)
-    add_subdirectory(SourceTerms/Python)
+    add_subdirectory(BoundaryConditionAndSourceTerm/Python)
 endif()
 
 target_link_libraries(
@@ -35,8 +33,7 @@ target_link_libraries(
         MeshGeoToolsLib
         MeshLib
         NumLib
-        $<$<TARGET_EXISTS:ProcessLibBoundaryConditionPython>:ProcessLibBoundaryConditionPython>
-        $<$<TARGET_EXISTS:ProcessLibSourceTermPython>:ProcessLibSourceTermPython>
+        $<$<TARGET_EXISTS:ProcessLibBoundaryConditionAndSourceTermPython>:ProcessLibBoundaryConditionAndSourceTermPython>
         $<$<TARGET_EXISTS:petsc>:petsc>
         nlohmann_json
     PRIVATE ParameterLib GitInfoLib $<$<TARGET_EXISTS:InSituLib>:InSituLib>
diff --git a/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h
index 56dd63dfc6e..d14a2364f02 100644
--- a/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h
+++ b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h
@@ -11,7 +11,7 @@
 #pragma once
 
 #include "NumLib/IndexValueVector.h"
-#include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h"
 
 namespace ProcessLib::HeatTransportBHE
 {
diff --git a/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h
index ecbee2727c2..227ecf327a8 100644
--- a/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h
+++ b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h
@@ -11,7 +11,7 @@
 #pragma once
 
 #include "NumLib/IndexValueVector.h"
-#include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h"
 
 namespace ProcessLib::HeatTransportBHE
 {
diff --git a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp
index 7df77b4228a..64eadb6851f 100644
--- a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp
+++ b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp
@@ -14,7 +14,7 @@
 
 #include "BoundaryConditions/BHEBottomDirichletBoundaryCondition.h"
 #include "BoundaryConditions/BHEInflowDirichletBoundaryCondition.h"
-#include "ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryCondition.h"
 #include "ProcessLib/HeatTransportBHE/BHE/MeshUtils.h"
 #include "ProcessLib/HeatTransportBHE/LocalAssemblers/CreateLocalAssemblers.h"
 #include "ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE.h"
diff --git a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h
index ef86e9fb918..aaf2c65d99d 100644
--- a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h
+++ b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h
@@ -14,7 +14,7 @@
 
 #include "MaterialLib/MPL/MaterialSpatialDistributionMap.h"
 #include "MeshLib/PropertyVector.h"
-#include "ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionPythonSideInterface.h"
 #include "ProcessLib/HeatTransportBHE/BHE/BHETypes.h"
 namespace MeshLib
 {
diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h
index ed08de5d985..47d8e78795d 100644
--- a/ProcessLib/Process.h
+++ b/ProcessLib/Process.h
@@ -18,11 +18,11 @@
 #include "NumLib/ODESolver/ODESystem.h"
 #include "NumLib/ODESolver/TimeDiscretization.h"
 #include "ParameterLib/Parameter.h"
-#include "ProcessLib/BoundaryCondition/BoundaryConditionCollection.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionCollection.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.h"
 #include "ProcessLib/Output/ExtrapolatorData.h"
 #include "ProcessLib/Output/IntegrationPointWriter.h"
 #include "ProcessLib/Output/SecondaryVariable.h"
-#include "ProcessLib/SourceTerms/SourceTermCollection.h"
 #include "ProcessVariable.h"
 #include "VectorMatrixAssembler.h"
 
diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp
index d76d16ddfe3..c1b5b0ef1b3 100644
--- a/ProcessLib/ProcessVariable.cpp
+++ b/ProcessLib/ProcessVariable.cpp
@@ -19,12 +19,12 @@
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Node.h"
 #include "ParameterLib/Utils.h"
-#include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
-#include "ProcessLib/BoundaryCondition/CreateBoundaryCondition.h"
-#include "ProcessLib/BoundaryCondition/DeactivatedSubdomainDirichlet.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/CreateBoundaryCondition.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/CreateSourceTerm.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/DeactivatedSubdomainDirichlet.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/SourceTerm.h"
 #include "ProcessLib/CreateDeactivatedSubdomain.h"
-#include "ProcessLib/SourceTerms/CreateSourceTerm.h"
-#include "ProcessLib/SourceTerms/SourceTerm.h"
 
 namespace
 {
@@ -305,8 +305,7 @@ void ProcessVariable::updateDeactivatedSubdomains(double const time)
             return true;
         }
 
-        auto const& deactivated_materialIDs =
-            ds.materialIDs;
+        auto const& deactivated_materialIDs = ds.materialIDs;
 
         auto const& element_center = getCenterOfGravity(*_mesh.getElement(i));
         if (std::binary_search(deactivated_materialIDs.begin(),
diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h
index 01edb1583f0..ffc0eda0289 100644
--- a/ProcessLib/ProcessVariable.h
+++ b/ProcessLib/ProcessVariable.h
@@ -11,10 +11,9 @@
 #pragma once
 
 #include "MathLib/LinAlg/GlobalMatrixVectorTypes.h"
-
 #include "ParameterLib/Parameter.h"
-#include "ProcessLib/BoundaryCondition/BoundaryConditionConfig.h"
-#include "ProcessLib/SourceTerms/SourceTermConfig.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/BoundaryConditionConfig.h"
+#include "ProcessLib/BoundaryConditionAndSourceTerm/SourceTermConfig.h"
 
 // DeactivatedSubdomain cannot be forwardly declared because that
 // std::unique_ptr<DeactivatedSubdomain> type member requires its full
diff --git a/ProcessLib/SourceTerms/Python/CMakeLists.txt b/ProcessLib/SourceTerms/Python/CMakeLists.txt
deleted file mode 100644
index 7d320026cb1..00000000000
--- a/ProcessLib/SourceTerms/Python/CMakeLists.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-ogs_add_library(
-    ProcessLibSourceTermPython
-    CreatePythonSourceTerm.cpp
-    CreatePythonSourceTerm.h
-    PythonSourceTerm.cpp
-    PythonSourceTerm.h
-    PythonSourceTermLocalAssembler.h
-    PythonSourceTermPythonSideInterface.h
-)
-
-target_compile_definitions(
-    ProcessLibSourceTermPython
-    PUBLIC OGS_USE_PYTHON
-           # Enabled elements
-           OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM}
-           OGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER}
-           $<$<BOOL:${OGS_ENABLE_ELEMENT_SIMPLEX}>:OGS_ENABLE_ELEMENT_SIMPLEX>
-           $<$<BOOL:${OGS_ENABLE_ELEMENT_CUBOID}>:OGS_ENABLE_ELEMENT_CUBOID>
-           $<$<BOOL:${OGS_ENABLE_ELEMENT_PRISM}>:OGS_ENABLE_ELEMENT_PRISM>
-           $<$<BOOL:${OGS_ENABLE_ELEMENT_PYRAMID}>:OGS_ENABLE_ELEMENT_PYRAMID>
-)
-
-target_link_libraries(
-    ProcessLibSourceTermPython PUBLIC BaseLib MathLib MeshLib NumLib
-                                      ${Python3_LIBRARIES}
-    PRIVATE pybind11::pybind11
-)
-
-# For the embedded Python module
-ogs_add_library(
-    ProcessLibSourceTermPythonModule PythonSourceTermModule.cpp
-    PythonSourceTermModule.h
-)
-
-target_link_libraries(
-    ProcessLibSourceTermPythonModule PUBLIC ProcessLibSourceTermPython
-                                            pybind11::pybind11
-)
-- 
GitLab