diff --git a/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch b/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch
index 3bb7e017b3b438a925be8634de08ff259c73ee52..995175d1365652bd7b9dd346971cd7539aa3523c 100644
--- a/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch
+++ b/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt
---- exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt	2025-03-07 10:42:02.609882998 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt	2025-03-07 10:42:02.618882942 +0100
+--- exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt	2025-03-17 15:23:54.694796907 +0100
 @@ -1,10 +1,30 @@
  # SPDX-FileCopyrightText: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -36,8 +36,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt exercises/s
  # add a symlink for each input file
  add_input_file_links()
 diff -ruN exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh
---- exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2025-03-07 11:30:34.872192048 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2025-03-07 10:42:02.618882942 +0100
+--- exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2025-03-17 15:23:54.694796907 +0100
 @@ -71,8 +71,7 @@
  
          const auto& globalPos = scvf.dofPosition();
@@ -138,8 +138,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh exer
      }
  
 diff -ruN exercises/exercise-coupling-ff-pm/interface/main.cc exercises/solution/exercise-coupling-ff-pm/interface/main.cc
---- exercises/exercise-coupling-ff-pm/interface/main.cc	2025-03-07 11:30:34.872192048 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/interface/main.cc	2025-03-07 10:42:02.618882942 +0100
+--- exercises/exercise-coupling-ff-pm/interface/main.cc	2025-03-17 15:35:37.826988735 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/main.cc	2025-03-17 15:37:08.215127018 +0100
 @@ -52,9 +52,7 @@
      using FreeflowTypeTag = Properties::TTag::FreeflowOneP;
      using PorousMediumTypeTag = Properties::TTag::PorousMediumFlowOneP;
@@ -266,8 +266,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/main.cc exercises/solution
      using PorousMediumSolutionVector = GetPropType<PorousMediumTypeTag, Properties::SolutionVector>;
      VtkOutputModule<PorousMediumGridVariables, PorousMediumSolutionVector> porousMediumVtkWriter(*porousMediumGridVariables,
 diff -ruN exercises/exercise-coupling-ff-pm/interface/params.input exercises/solution/exercise-coupling-ff-pm/interface/params.input
---- exercises/exercise-coupling-ff-pm/interface/params.input	2025-03-07 11:30:34.872192048 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/interface/params.input	2025-02-26 11:38:46.842816315 +0100
+--- exercises/exercise-coupling-ff-pm/interface/params.input	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/params.input	2025-03-17 15:23:54.694796907 +0100
 @@ -1,17 +1,14 @@
 -# TODO: dumux-course-task 1.C: uncomment the following group [Grid]
  # for dune-subgrid
@@ -305,8 +305,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/params.input exercises/sol
  Verbosity = true
  Positions0 = 0.0 1.0
 diff -ruN exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh
---- exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2025-03-07 11:30:34.873192042 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2025-03-07 10:42:02.618882942 +0100
+--- exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2025-03-17 15:23:54.694796907 +0100
 @@ -65,14 +65,13 @@
      {
          BoundaryTypes values;
@@ -325,8 +325,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh
          // set the coupling boundary condition at the interface
          if (couplingManager().isCoupledEntity(CouplingManager::darcyIdx, scvf))
 diff -ruN exercises/exercise-coupling-ff-pm/interface/properties.hh exercises/solution/exercise-coupling-ff-pm/interface/properties.hh
---- exercises/exercise-coupling-ff-pm/interface/properties.hh	2025-03-07 11:30:34.873192042 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/interface/properties.hh	2025-03-07 10:42:02.618882942 +0100
+--- exercises/exercise-coupling-ff-pm/interface/properties.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/properties.hh	2025-03-17 15:23:54.694796907 +0100
 @@ -16,9 +16,9 @@
  #include <dumux/multidomain/staggeredtraits.hh>
  #include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh>
@@ -383,7 +383,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/properties.hh exercises/so
  
  template<class TypeTag>
 diff -ruN exercises/exercise-coupling-ff-pm/interface/README.md exercises/solution/exercise-coupling-ff-pm/interface/README.md
---- exercises/exercise-coupling-ff-pm/interface/README.md	2025-03-07 10:34:20.581090010 +0100
+--- exercises/exercise-coupling-ff-pm/interface/README.md	2025-03-17 15:23:54.686796541 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/interface/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,175 +0,0 @@
 -## 1. Changing the interface
@@ -562,8 +562,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/README.md exercises/soluti
 -What changes to the left boundary conditions in the free-flow domain would you make to introduce this? What conditions can be enforced on the right boundary?
 -Hint: A relation between velocity and position is used for the vertical velocity component in the original form of the `dirichletAtPos` method.
 diff -ruN exercises/exercise-coupling-ff-pm/models/CMakeLists.txt exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt
---- exercises/exercise-coupling-ff-pm/models/CMakeLists.txt	2025-03-07 10:42:02.610882992 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt	2025-03-07 10:42:02.618882942 +0100
+--- exercises/exercise-coupling-ff-pm/models/CMakeLists.txt	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt	2025-03-17 15:23:54.694796907 +0100
 @@ -1,9 +1,32 @@
  # SPDX-FileCopyrightText: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -602,16 +602,14 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/CMakeLists.txt exercises/solu
 +
 +dune_symlink_to_source_files(FILES "params_orig_a.input" "params_b_c.input" plotFluxes.py)
 diff -ruN exercises/exercise-coupling-ff-pm/models/main.cc exercises/solution/exercise-coupling-ff-pm/models/main.cc
---- exercises/exercise-coupling-ff-pm/models/main.cc	2025-03-07 10:42:02.610882992 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/main.cc	2025-03-07 10:42:02.618882942 +0100
-@@ -127,9 +127,15 @@
-     auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
+--- exercises/exercise-coupling-ff-pm/models/main.cc	2025-03-17 15:35:46.115368206 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/main.cc	2025-03-17 15:23:54.694796907 +0100
+@@ -128,8 +128,14 @@
      porousMediumGridVariables->init(sol[porousMediumIdx]);
  
--    // intialize the vtk output module
+     // initialize the vtk output module
 -    const auto freeflowName = getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
 -    const auto porousMediumName = getParam<std::string>("Problem.Name") + "_" + porousMediumProblem->name();
-+    // initialize the vtk output module
 +#if EXNUMBER >= 1
 +    const std::array<std::string, 3> part = {"a", "b", "c"};
 +    const auto freeflowName = "sol_" + part[EXNUMBER-1] + "_" + getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
@@ -625,7 +623,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/main.cc exercises/solution/ex
      GetPropType<FreeflowTypeTag, Properties::IOFields>::initOutputModule(freeflowVtkWriter);
 diff -ruN exercises/exercise-coupling-ff-pm/models/params_b_c.input exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input
 --- exercises/exercise-coupling-ff-pm/models/params_b_c.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input	2025-02-26 11:38:46.843816269 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input	2025-03-17 15:23:54.694796907 +0100
 @@ -0,0 +1,57 @@
 +[TimeLoop]
 +DtInitial = 100 # s
@@ -685,7 +683,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/params_b_c.input exercises/so
 +[Assembly]
 +NumericDifference.BaseEpsilon = 1e-8
 diff -ruN exercises/exercise-coupling-ff-pm/models/params.input exercises/solution/exercise-coupling-ff-pm/models/params.input
---- exercises/exercise-coupling-ff-pm/models/params.input	2025-03-07 10:42:02.671882610 +0100
+--- exercises/exercise-coupling-ff-pm/models/params.input	2025-03-17 15:23:54.686796541 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/models/params.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,60 +0,0 @@
 -[TimeLoop]
@@ -750,7 +748,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/params.input exercises/soluti
 -NumericDifference.BaseEpsilon = 1e-8
 diff -ruN exercises/exercise-coupling-ff-pm/models/params_orig_a.input exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input
 --- exercises/exercise-coupling-ff-pm/models/params_orig_a.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input	2025-02-26 11:38:46.843816269 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input	2025-03-17 15:23:54.694796907 +0100
 @@ -0,0 +1,56 @@
 +[TimeLoop]
 +DtInitial = 100 # s
@@ -809,8 +807,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/params_orig_a.input exercises
 +[Assembly]
 +NumericDifference.BaseEpsilon = 1e-8
 diff -ruN exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh
---- exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2025-03-07 11:30:34.873192042 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2025-03-07 10:42:02.619882935 +0100
+--- exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2025-03-17 15:23:54.694796907 +0100
 @@ -52,10 +52,15 @@
      // primary variable indices
      static constexpr int conti0EqIdx = Indices::conti0EqIdx;
@@ -932,8 +930,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh exe
      std::shared_ptr<CouplingManager> couplingManager_;
  
 diff -ruN exercises/exercise-coupling-ff-pm/models/properties.hh exercises/solution/exercise-coupling-ff-pm/models/properties.hh
---- exercises/exercise-coupling-ff-pm/models/properties.hh	2025-03-07 11:30:34.873192042 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/properties.hh	2025-03-07 10:42:02.619882935 +0100
+--- exercises/exercise-coupling-ff-pm/models/properties.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/properties.hh	2025-03-17 15:23:54.694796907 +0100
 @@ -25,12 +25,14 @@
  #include <dumux/discretization/cctpfa.hh>
  #include <dumux/material/fluidmatrixinteractions/diffusivityconstanttortuosity.hh>
@@ -1016,7 +1014,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/properties.hh exercises/solut
  template<class TypeTag>
  struct EnableGridGeometryCache<TypeTag, TTag::FreeflowNC> { static constexpr bool value = true; };
 diff -ruN exercises/exercise-coupling-ff-pm/models/README.md exercises/solution/exercise-coupling-ff-pm/models/README.md
---- exercises/exercise-coupling-ff-pm/models/README.md	2025-02-26 11:38:46.804818055 +0100
+--- exercises/exercise-coupling-ff-pm/models/README.md	2025-03-17 15:23:54.686796541 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/models/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,118 +0,0 @@
 -## 2. Changing the porous medium model
@@ -1138,7 +1136,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/README.md exercises/solution/
 -
 -Now you are able to simulate a complete drying of the porous medium. Have a look the resulting liquid saturation distribution within the porous medium (with using paraview).
 diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercise-coupling-ff-pm/README.md
---- exercises/exercise-coupling-ff-pm/README.md	2025-02-26 11:38:46.803818101 +0100
+--- exercises/exercise-coupling-ff-pm/README.md	2025-03-17 15:23:54.686796541 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,125 +0,0 @@
 -# Exercise Coupling free flow/porous medium flow (DuMuX Course)
@@ -1267,8 +1265,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercis
 -* [**Exercise 2:** Changing the porous medium model](./models/README.md)
 -* [**Exercise 3:** Introducing a turbulence model in the free flow domain](./turbulence/README.md)
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt
---- exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2025-03-07 10:42:02.611882986 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2025-03-07 10:42:02.619882935 +0100
+--- exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2025-03-17 15:23:54.694796907 +0100
 @@ -1,10 +1,33 @@
  # SPDX-FileCopyrightText: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -1307,8 +1305,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt exercises/
  # add a symlink for each input file
  add_input_file_links()
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh
---- exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2025-03-07 11:30:34.873192042 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2025-03-07 10:42:02.619882935 +0100
+--- exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2025-03-17 15:23:54.694796907 +0100
 @@ -8,8 +8,8 @@
   * \file
   * \brief The free-flow sub problem
@@ -1524,8 +1522,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh exe
          return values;
      }
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/main.cc exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc
---- exercises/exercise-coupling-ff-pm/turbulence/main.cc	2025-03-07 11:30:34.873192042 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc	2025-03-07 10:42:02.619882935 +0100
+--- exercises/exercise-coupling-ff-pm/turbulence/main.cc	2025-03-17 15:35:06.329546673 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc	2025-03-17 15:36:58.698691322 +0100
 @@ -122,11 +122,12 @@
  
      couplingManager->init(freeflowProblem, porousMediumProblem, sol);
@@ -1556,7 +1554,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/main.cc exercises/solutio
          porousMediumProblem->postTimeStep(sol[porousMediumIdx], *porousMediumGridVariables, timeLoop->timeStepSize());
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_b.input exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input
 --- exercises/exercise-coupling-ff-pm/turbulence/params_b.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input	2025-02-26 11:38:46.843816269 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input	2025-03-17 15:23:54.694796907 +0100
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1632,7 +1630,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_b.input exercises/
 +IsFlatWallBounded = True
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_c_d.input exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input
 --- exercises/exercise-coupling-ff-pm/turbulence/params_c_d.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input	2025-02-26 11:38:46.843816269 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input	2025-03-17 15:23:54.698797090 +0100
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1707,7 +1705,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_c_d.input exercise
 +[RANS]
 +IsFlatWallBounded = True
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params.input exercises/solution/exercise-coupling-ff-pm/turbulence/params.input
---- exercises/exercise-coupling-ff-pm/turbulence/params.input	2025-03-07 11:30:34.874192035 +0100
+--- exercises/exercise-coupling-ff-pm/turbulence/params.input	2025-03-17 15:23:54.686796541 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/turbulence/params.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,73 +0,0 @@
 -[TimeLoop]
@@ -1785,7 +1783,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params.input exercises/so
 -SolidHeatCapacity = 790
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_orig_a.input exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input
 --- exercises/exercise-coupling-ff-pm/turbulence/params_orig_a.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input	2025-02-26 11:38:46.843816269 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input	2025-03-17 15:23:54.698797090 +0100
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1860,8 +1858,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_orig_a.input exerc
 +[RANS]
 +IsFlatWallBounded = True
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/properties.hh exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh
---- exercises/exercise-coupling-ff-pm/turbulence/properties.hh	2025-03-07 11:30:34.874192035 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh	2025-03-07 10:42:02.619882935 +0100
+--- exercises/exercise-coupling-ff-pm/turbulence/properties.hh	2025-03-17 15:23:54.686796541 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh	2025-03-17 15:23:54.698797090 +0100
 @@ -8,8 +8,8 @@
   * \file
   * \brief The coupled exercise properties file or the turbulent case.
@@ -1903,7 +1901,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/properties.hh exercises/s
  
  // Set the coupling manager
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/README.md exercises/solution/exercise-coupling-ff-pm/turbulence/README.md
---- exercises/exercise-coupling-ff-pm/turbulence/README.md	2025-03-07 10:34:20.583089982 +0100
+--- exercises/exercise-coupling-ff-pm/turbulence/README.md	2025-03-17 15:35:19.454147563 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/turbulence/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,126 +0,0 @@
 -## 3. Use a turbulence model in the free flow domain
@@ -1997,7 +1995,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/README.md exercises/solut
 -
 -In addition, you have to remove the condition `onUpperBoundary_(globalPos)` from the `initialAtPos(globalPos)` method and the `dirichlet(element, scvf)` method.
 -
--Now it is sufficient to only calulate half of the domain height for the free-flow domain. For this, adapt the grid coordinates as well as the number of cells in y-direction in your `params.input` - file accordingly.
+-Now it is sufficient to only calculate half of the domain height for the free-flow domain. For this, adapt the grid coordinates as well as the number of cells in y-direction in your `params.input` - file accordingly.
 -After recompiling and running your simulation with the new boundary condition, check your results with paraview.
 -Does your velocity profile at the symmetry boundary look reasonable?
 -
diff --git a/README.md b/README.md
index 7abfa3dfcfc4f84687f1c7a8cbcda551160edc1c..17db4f47415d55a411e331f4c825e11cc024203c 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ software packages are needed:
   * gnuplot (to plot some curves)
   * wget (to download some config files during the installation)
 
-For some excercises you might need UMFPack. UMFPack can be installed via Suitesparse.
+For some exercises you might need UMFPack. UMFPack can be installed via Suitesparse.
 For instance on Ubuntu use `apt-get install libsuitesparse-dev`.
 
 ## Troubleshooting
diff --git a/exercises/exercise-coupling-ff-pm/interface/main.cc b/exercises/exercise-coupling-ff-pm/interface/main.cc
index 81c3c568c490c10e47f950f4b9d241420f56db26..acfbe9fe93436cf85de1c2df698958305806ccb7 100644
--- a/exercises/exercise-coupling-ff-pm/interface/main.cc
+++ b/exercises/exercise-coupling-ff-pm/interface/main.cc
@@ -161,7 +161,7 @@ int main(int argc, char** argv)
     auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
     porousMediumGridVariables->init(sol[porousMediumIdx]);
 
-    // intialize the vtk output module
+    // initialize the vtk output module
     const auto freeflowName = getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
     const auto porousMediumName = getParam<std::string>("Problem.Name") + "_" + porousMediumProblem->name();
 
diff --git a/exercises/exercise-coupling-ff-pm/models/main.cc b/exercises/exercise-coupling-ff-pm/models/main.cc
index 37ecae8ece96436520fc5d3469e810d9ec4c01e1..d2bd31ba3a2bc1f2720175869ab2b871bf3c36d0 100644
--- a/exercises/exercise-coupling-ff-pm/models/main.cc
+++ b/exercises/exercise-coupling-ff-pm/models/main.cc
@@ -127,7 +127,7 @@ int main(int argc, char** argv)
     auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
     porousMediumGridVariables->init(sol[porousMediumIdx]);
 
-    // intialize the vtk output module
+    // initialize the vtk output module
     const auto freeflowName = getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
     const auto porousMediumName = getParam<std::string>("Problem.Name") + "_" + porousMediumProblem->name();
 
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/README.md b/exercises/exercise-coupling-ff-pm/turbulence/README.md
index d1ec1252d021f0287ff25476f76f87e8e0094a39..c4126a5d4371299dbb98b9b14008be93623699ae 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/README.md
+++ b/exercises/exercise-coupling-ff-pm/turbulence/README.md
@@ -89,7 +89,7 @@ values.setAllSymmetry();
 
 In addition, you have to remove the condition `onUpperBoundary_(globalPos)` from the `initialAtPos(globalPos)` method and the `dirichlet(element, scvf)` method.
 
-Now it is sufficient to only calulate half of the domain height for the free-flow domain. For this, adapt the grid coordinates as well as the number of cells in y-direction in your `params.input` - file accordingly.
+Now it is sufficient to only calculate half of the domain height for the free-flow domain. For this, adapt the grid coordinates as well as the number of cells in y-direction in your `params.input` - file accordingly.
 After recompiling and running your simulation with the new boundary condition, check your results with paraview.
 Does your velocity profile at the symmetry boundary look reasonable?
 
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/main.cc b/exercises/exercise-coupling-ff-pm/turbulence/main.cc
index 68714797c97469ee4211a61f44c91fde0739e996..545c11373ee9a082e7c79797db24eb40069ba6a3 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/main.cc
+++ b/exercises/exercise-coupling-ff-pm/turbulence/main.cc
@@ -136,7 +136,7 @@ int main(int argc, char** argv)
     auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
     porousMediumGridVariables->init(sol[porousMediumIdx]);
 
-    // intialize the vtk output module
+    // initialize the vtk output module
     const auto freeflowName = getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
     const auto porousMediumName = getParam<std::string>("Problem.Name") + "_" + porousMediumProblem->name();
 
diff --git a/exercises/solution/exercise-coupling-ff-pm/interface/main.cc b/exercises/solution/exercise-coupling-ff-pm/interface/main.cc
index f4d21addce35e71c0aa9fac5b8ddb95df5bfb03f..626b5bde27ec6f7baaf018dc4ef1c580e5c724b5 100644
--- a/exercises/solution/exercise-coupling-ff-pm/interface/main.cc
+++ b/exercises/solution/exercise-coupling-ff-pm/interface/main.cc
@@ -153,7 +153,7 @@ int main(int argc, char** argv)
     auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
     porousMediumGridVariables->init(sol[porousMediumIdx]);
 
-    // intialize the vtk output module
+    // initialize the vtk output module
     const auto freeflowName = getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
     const auto porousMediumName = getParam<std::string>("Problem.Name") + "_" + porousMediumProblem->name();
 
diff --git a/exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc b/exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc
index 168f78676dd2451d156cb5e5a135715065712966..76159fc8a0df2f2e4aa953f4b5c67d451ab646d1 100644
--- a/exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc
+++ b/exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc
@@ -137,7 +137,7 @@ int main(int argc, char** argv)
     auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
     porousMediumGridVariables->init(sol[porousMediumIdx]);
 
-    // intialize the vtk output module
+    // initialize the vtk output module
     const auto freeflowName = getParam<std::string>("Problem.Name") + "_" + freeflowProblem->name();
     const auto porousMediumName = getParam<std::string>("Problem.Name") + "_" + porousMediumProblem->name();
 
diff --git a/prerequisites.md b/prerequisites.md
index 852f33822bc22c37c98530f4e342679cae128ff9..e9c8459e6064f42b516f471bff1f613133bc506c 100644
--- a/prerequisites.md
+++ b/prerequisites.md
@@ -2,11 +2,11 @@
 
 For mastering the DuMu<sup>x</sup> course, we recommend the following prerequisites:
 
-- **CLI:** Knowledge of basic Unix shell commands and interaction with a corresponding terminal is essential for the installation process as well as the compiliation and execution of the exercise programs. We can recommend this [Software Carpentry course](https://swcarpentry.github.io/shell-novice/) for learning the basics and this [cheat sheet](https://phoenixnap.com/kb/wp-content/uploads/2022/11/linuxCommandsAllUsersShouldKnow.pdf) for remembering them.
+- **CLI:** Knowledge of basic Unix shell commands and interaction with a corresponding terminal is essential for the installation process as well as the compilation and execution of the exercise programs. We can recommend this [Software Carpentry course](https://swcarpentry.github.io/shell-novice/) for learning the basics and this [cheat sheet](https://phoenixnap.com/kb/wp-content/uploads/2022/11/linuxCommandsAllUsersShouldKnow.pdf) for remembering them.
 
 - **C++:** DuMu<sup>x</sup> is a module on top of the C++ code base DUNE and itself contains several more advanced C++ language features. We recommend to be familiar with C++ templates and can recommend the following educational resources:
  
-  In general we recommend most CppCon Back to Basics videos, but here is a list of taylored suggestions for this course.
+  In general we recommend most CppCon Back to Basics videos, but here is a list of tailored suggestions for this course.
   - OOP:
     - https://www.youtube.com/watch?v=32tDTD9UJCE
   - Compiling and Linking:
diff --git a/slides/intro.md b/slides/intro.md
index 0369ae13b489bb1ae607448ea44dd04d6b0f34ab..25ded6ac703b40e58b521ffbf8a5aa3d8cb92d6f 100644
--- a/slides/intro.md
+++ b/slides/intro.md
@@ -76,8 +76,8 @@ subtitle: Overview and Available Models
 
 ## Funding
 
-Efforts mainly funded through ressources at the LH^2^: [Department of Hydromechanics and Modelling of Hydrosystems at the University of Stuttgart](https://www.iws.uni-stuttgart.de/en/lh2/)
-and third-party funding aquired at the LH^2^
+Efforts mainly funded through resources at the LH^2^: [Department of Hydromechanics and Modelling of Hydrosystems at the University of Stuttgart](https://www.iws.uni-stuttgart.de/en/lh2/)
+and third-party funding acquired at the LH^2^
 
 <img src="img/lh2.jpeg" width="300"/>
 
@@ -413,7 +413,7 @@ Control-volume finite element scheme based on $\mathrm{P}_1/\mathrm{Q}_1$ basis
 * Typically, the following components have to be specified
     * **Model**: Equations and constitutive models
     * **Assembler**: Key properties (Discretization, Variables, LocalResidual)
-    * **Solver**: Type of solution stategy (e.g. Newton)
+    * **Solver**: Type of solution strategy (e.g. Newton)
     * **LinearSolver**: Method for solving linear equation systems (e.g. direct / Krylov subspace methods)
     * **Problem**: Initial and boundary conditions, source terms
     * **TimeLoop**: For time-dependent problems
diff --git a/slides/materialsystem.md b/slides/materialsystem.md
index 9b1ba27260adc4fb364efbf0ee102ba27b04f38e..5bc09035e115457715a5067c15d6f532127f715c 100644
--- a/slides/materialsystem.md
+++ b/slides/materialsystem.md
@@ -118,7 +118,7 @@ static Scalar heatCapacity(const FluidState& fluidState, int phaseIdx)
 
 ## Example implementations
 
-* _H2O_Air_ : Henry coefficient, gas diffusion coefficient, liquid diffusion coefficent for water and air
+* _H2O_Air_ : Henry coefficient, gas diffusion coefficient, liquid diffusion coefficient for water and air
 * More, see [DuMu^x^ binary coefficients docs](https://dumux.org/docs/doxygen/master/namespace_dumux_1_1_binary_coeff.html)
 
 ## Example interface
diff --git a/slides/model.md b/slides/model.md
index 92c1cdcf1c26276c04ec2fd9a9718ef1aa17febe..5ba1131623cd88cb73c5fedccd665e1c5be868c9 100644
--- a/slides/model.md
+++ b/slides/model.md
@@ -268,4 +268,4 @@ Implementation of a **nonlinear diffusion model** for denoising of an MRI image
 - Use model in test case
 - Customize volume variables
 
-* Go to [Model excercise](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/tree/master/exercises/exercise-model#exercise-model-dumux-course)
+* Go to [Model exercise](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/tree/master/exercises/exercise-model#exercise-model-dumux-course)
diff --git a/slides/problem.md b/slides/problem.md
index 275db90858941fcd1b09bb47452870f0f8e23376..a142c7e4fa105cb9029045d7930e0e7a490853a6 100644
--- a/slides/problem.md
+++ b/slides/problem.md
@@ -362,7 +362,7 @@ Inherit from `FVPorousMediumFlowSpatialParamsMP` where
 
 ##
 
-A function returning the instrinsic permeability $K$:
+A function returning the intrinsic permeability $K$:
 
 ```cpp
 auto permeabilityAtPos(const GlobalPosition& globalPos) const