From e4acd62af2d83ed0279b5c57df2337afc98185b6 Mon Sep 17 00:00:00 2001
From: IvBu <ivan.buntic@iws.uni-stuttgart.de>
Date: Thu, 27 Feb 2025 13:53:32 +0100
Subject: [PATCH] [exercises] Consistent image names.

---
 .patches/exercise-basic/exercise-basic.patch  |  30 +++----
 .../exercise-biomineralization.patch          |  48 +++++-----
 .../exercise-coupling-ff-pm.patch             |  84 +++++++++---------
 .../exercise-fluidsystem.patch                |  52 +++++------
 .../exercise-fractures.patch                  |  48 +++++-----
 .../exercise-mainfile/exercise-mainfile.patch |  28 +++---
 .patches/exercise-model/exercise-model.patch  |  14 +--
 exercises/exercise-basic/README.md            |   4 +-
 .../exercise-biomineralization/README.md      |   6 +-
 .../interface/README.md                       |   4 +-
 .../turbulence/README.md                      |   2 +-
 exercises/exercise-fluidsystem/README.md      |   8 +-
 exercises/exercise-fractures/README.md        |   8 +-
 exercises/exercise-mainfile/README.md         |   2 +-
 exercises/exercise-model/README.md            |   2 +-
 exercises/extradoc/exercise2_properties.png   | Bin 27453 -> 0 bytes
 ...l.png => exercise_basic_nonisothermal.png} | Bin
 ...se1_setup.png => exercise_basic_setup.png} | Bin
 ...ng => exercise_biomin_injection_final.png} | Bin
 ...png => exercise_biomin_porosity_final.png} | Bin
 ...in_setup.png => exercise_biomin_setup.png} | Bin
 ...png => exercise_ffpm_turb_diffusivity.png} | Bin
 ...ow.png => exercise_ffpm_vertical_flow.png} | Bin
 ...e.png => exercise_ffpm_wave_interface.png} | Bin
 ...xercise_fluidsystem_a_densityfunction.png} | Bin
 ...ng => exercise_fluidsystem_a_solution.png} | Bin
 ...g => exercise_fluidsystem_a_solution2.png} | Bin
 ...tup.png => exercise_fluidsystem_setup.png} | Bin
 ...actures_a.png => exercise_fractures_a.png} | Bin
 ...actures_b.png => exercise_fractures_b.png} | Bin
 ...sol.png => exercise_fractures_initsol.png} | Bin
 ...setup.png => exercise_fractures_setup.png} | Bin
 ...tup.png => exercise_mainfile_1p_setup.png} | Bin
 ...ise.gif => exercise_model_mri_denoise.gif} | Bin
 ...se1_setup.png => exercise_basic_setup.png} | Bin
 ...ise.gif => exercise_model_mri_denoise.gif} | Bin
 slides/model.md                               |   2 +-
 slides/problem.md                             |   2 +-
 38 files changed, 172 insertions(+), 172 deletions(-)
 delete mode 100644 exercises/extradoc/exercise2_properties.png
 rename exercises/extradoc/{exercise1_nonisothermal.png => exercise_basic_nonisothermal.png} (100%)
 rename exercises/extradoc/{exercise1_setup.png => exercise_basic_setup.png} (100%)
 rename exercises/extradoc/{exercisebiomin_injectionFinal.png => exercise_biomin_injection_final.png} (100%)
 rename exercises/extradoc/{exercisebiomin_porosityFinal.png => exercise_biomin_porosity_final.png} (100%)
 rename exercises/extradoc/{exercisebiomin_setup.png => exercise_biomin_setup.png} (100%)
 rename exercises/extradoc/{ex_ff-pm-turb_diffusivity.png => exercise_ffpm_turb_diffusivity.png} (100%)
 rename exercises/extradoc/{ex_ff-pm-vertical-flow.png => exercise_ffpm_vertical_flow.png} (100%)
 rename exercises/extradoc/{ex_ff-pm-wave-interface.png => exercise_ffpm_wave_interface.png} (100%)
 rename exercises/extradoc/{exercise-fluidsystem_a_densityfunction.png => exercise_fluidsystem_a_densityfunction.png} (100%)
 rename exercises/extradoc/{exercise-fluidsystem_a_solution.png => exercise_fluidsystem_a_solution.png} (100%)
 rename exercises/extradoc/{exercise-fluidsystem_a_solution2.png => exercise_fluidsystem_a_solution2.png} (100%)
 rename exercises/extradoc/{exercise-fluidsystem_setup.png => exercise_fluidsystem_setup.png} (100%)
 rename exercises/extradoc/{exercisefractures_a.png => exercise_fractures_a.png} (100%)
 rename exercises/extradoc/{exercisefractures_b.png => exercise_fractures_b.png} (100%)
 rename exercises/extradoc/{exercisefractures_initsol.png => exercise_fractures_initsol.png} (100%)
 rename exercises/extradoc/{exercisefractures_setup.png => exercise_fractures_setup.png} (100%)
 rename exercises/extradoc/{exercise1_1p_setup.png => exercise_mainfile_1p_setup.png} (100%)
 rename exercises/extradoc/{exercisemodel_mri_denoise.gif => exercise_model_mri_denoise.gif} (100%)
 rename slides/img/{exercise1_setup.png => exercise_basic_setup.png} (100%)
 rename slides/img/{exercisemodel_mri_denoise.gif => exercise_model_mri_denoise.gif} (100%)

diff --git a/.patches/exercise-basic/exercise-basic.patch b/.patches/exercise-basic/exercise-basic.patch
index 5b19ef06..49d699e7 100644
--- a/.patches/exercise-basic/exercise-basic.patch
+++ b/.patches/exercise-basic/exercise-basic.patch
@@ -1,5 +1,5 @@
 diff -ruN exercises/exercise-basic/2pmain.cc exercises/solution/exercise-basic/2pmain.cc
---- exercises/exercise-basic/2pmain.cc	2024-07-17 13:58:18.204850249 +0200
+--- exercises/exercise-basic/2pmain.cc	2025-02-13 16:25:25.584470713 +0100
 +++ exercises/solution/exercise-basic/2pmain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,145 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -149,7 +149,7 @@ diff -ruN exercises/exercise-basic/2pmain.cc exercises/solution/exercise-basic/2
 -} // end main
 diff -ruN exercises/exercise-basic/2pnimain.cc exercises/solution/exercise-basic/2pnimain.cc
 --- exercises/exercise-basic/2pnimain.cc	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-basic/2pnimain.cc	2024-07-17 13:58:18.212850366 +0200
++++ exercises/solution/exercise-basic/2pnimain.cc	2025-02-13 16:25:25.632470178 +0100
 @@ -0,0 +1,138 @@
 +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 +// vi: set et ts=4 sw=4 sts=4:
@@ -290,8 +290,8 @@ diff -ruN exercises/exercise-basic/2pnimain.cc exercises/solution/exercise-basic
 +    return 0;
 +} // end main
 diff -ruN exercises/exercise-basic/CMakeLists.txt exercises/solution/exercise-basic/CMakeLists.txt
---- exercises/exercise-basic/CMakeLists.txt	2024-07-17 14:10:30.239561158 +0200
-+++ exercises/solution/exercise-basic/CMakeLists.txt	2024-07-17 14:11:44.100637927 +0200
+--- exercises/exercise-basic/CMakeLists.txt	2025-02-13 16:25:25.584470713 +0100
++++ exercises/solution/exercise-basic/CMakeLists.txt	2025-02-13 16:25:25.632470178 +0100
 @@ -1,12 +1,9 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -309,8 +309,8 @@ diff -ruN exercises/exercise-basic/CMakeLists.txt exercises/solution/exercise-ba
  # add a symlink for each input file
  add_input_file_links()
 diff -ruN exercises/exercise-basic/injection2pniproblem.hh exercises/solution/exercise-basic/injection2pniproblem.hh
---- exercises/exercise-basic/injection2pniproblem.hh	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-basic/injection2pniproblem.hh	2024-07-17 13:58:18.212850366 +0200
+--- exercises/exercise-basic/injection2pniproblem.hh	2025-02-13 16:25:25.584470713 +0100
++++ exercises/solution/exercise-basic/injection2pniproblem.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -7,7 +7,7 @@
  /*!
   * \file
@@ -401,7 +401,7 @@ diff -ruN exercises/exercise-basic/injection2pniproblem.hh exercises/solution/ex
      }
  
 diff -ruN exercises/exercise-basic/injection2pproblem.hh exercises/solution/exercise-basic/injection2pproblem.hh
---- exercises/exercise-basic/injection2pproblem.hh	2024-07-17 13:58:18.208850308 +0200
+--- exercises/exercise-basic/injection2pproblem.hh	2025-02-13 16:25:25.585470702 +0100
 +++ exercises/solution/exercise-basic/injection2pproblem.hh	1970-01-01 01:00:00.000000000 +0100
 @@ -1,211 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -616,8 +616,8 @@ diff -ruN exercises/exercise-basic/injection2pproblem.hh exercises/solution/exer
 -
 -#endif
 diff -ruN exercises/exercise-basic/params.input exercises/solution/exercise-basic/params.input
---- exercises/exercise-basic/params.input	2023-10-13 18:08:54.710521000 +0200
-+++ exercises/solution/exercise-basic/params.input	2024-07-17 10:58:43.905583103 +0200
+--- exercises/exercise-basic/params.input	2025-02-13 16:25:25.585470702 +0100
++++ exercises/solution/exercise-basic/params.input	2025-02-13 16:25:25.632470178 +0100
 @@ -24,7 +24,7 @@
  Aquifer.Snr = 0.0
  
@@ -631,7 +631,7 @@ diff -ruN exercises/exercise-basic/params.input exercises/solution/exercise-basi
 +SolidThermalConductivity = 2.8 # solid thermal conducitivity of granite
 +SolidHeatCapacity = 790 # solid heat capacity of granite
 diff -ruN exercises/exercise-basic/properties2p.hh exercises/solution/exercise-basic/properties2p.hh
---- exercises/exercise-basic/properties2p.hh	2024-07-17 13:58:18.208850308 +0200
+--- exercises/exercise-basic/properties2p.hh	2025-02-13 16:25:25.585470702 +0100
 +++ exercises/solution/exercise-basic/properties2p.hh	1970-01-01 01:00:00.000000000 +0100
 @@ -1,63 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -698,8 +698,8 @@ diff -ruN exercises/exercise-basic/properties2p.hh exercises/solution/exercise-b
 -
 -#endif
 diff -ruN exercises/exercise-basic/properties2pni.hh exercises/solution/exercise-basic/properties2pni.hh
---- exercises/exercise-basic/properties2pni.hh	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-basic/properties2pni.hh	2024-07-17 13:58:18.212850366 +0200
+--- exercises/exercise-basic/properties2pni.hh	2025-02-13 16:25:25.585470702 +0100
++++ exercises/solution/exercise-basic/properties2pni.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -24,13 +24,9 @@
  
  namespace Dumux::Properties {
@@ -716,7 +716,7 @@ diff -ruN exercises/exercise-basic/properties2pni.hh exercises/solution/exercise
  } // end namespace TTag
  
 diff -ruN exercises/exercise-basic/README.md exercises/solution/exercise-basic/README.md
---- exercises/exercise-basic/README.md	2024-07-17 14:11:07.348102188 +0200
+--- exercises/exercise-basic/README.md	2025-02-27 12:15:52.107700508 +0100
 +++ exercises/solution/exercise-basic/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,94 +0,0 @@
 -# Exercise Basics (DuMuX course)
@@ -726,7 +726,7 @@ diff -ruN exercises/exercise-basic/README.md exercises/solution/exercise-basic/R
 -N$_2$ is injected in an aquifer previously saturated with water with an injection rate of 0.0001 kg/(s*m$^2$).
 -The aquifer is situated 2700 m below sea level and the domain size is 60 m x 40 m. It consists of two layers, a moderately permeable one ($\Omega_1$) and a lower permeable one ($\Omega_2$).
 -
--<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise1_setup.png" width="1000">
+-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_basic_setup.png" width="1000">
 -
 -## Preparing the exercise
 -
@@ -810,6 +810,6 @@ diff -ruN exercises/exercise-basic/README.md exercises/solution/exercise-basic/R
 -
 -  __Boundary conditions:__ Dirichlet boundary conditions at the left boundary with the same temperature gradient as in the initial conditions. For the Neumann conditions, assign an energy flux at the injection point of N$_2$ and no-flow conditions for the energy balance to the rest of the boundaries.
 -
--<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise1_nonisothermal.png" width="800">
+-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_basic_nonisothermal.png" width="800">
 -
 -The non-isothermal model requires additional parameters like the thermal conductivity of the solid component. They are already implemented and set in `params.input`, you just need to _uncomment_ them.
diff --git a/.patches/exercise-biomineralization/exercise-biomineralization.patch b/.patches/exercise-biomineralization/exercise-biomineralization.patch
index fb7d5f82..41c34e3b 100644
--- a/.patches/exercise-biomineralization/exercise-biomineralization.patch
+++ b/.patches/exercise-biomineralization/exercise-biomineralization.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-biomineralization/biominproblem.hh exercises/solution/exercise-biomineralization/biominproblem.hh
---- exercises/exercise-biomineralization/biominproblem.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/biominproblem.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/biominproblem.hh	2025-02-13 16:25:25.586470691 +0100
++++ exercises/solution/exercise-biomineralization/biominproblem.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -19,10 +19,12 @@
  
  // TODO: dumux-course-task
@@ -70,8 +70,8 @@ diff -ruN exercises/exercise-biomineralization/biominproblem.hh exercises/soluti
      {
          return Kxx_;
 diff -ruN exercises/exercise-biomineralization/biominspatialparams.hh exercises/solution/exercise-biomineralization/biominspatialparams.hh
---- exercises/exercise-biomineralization/biominspatialparams.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/biominspatialparams.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/biominspatialparams.hh	2025-02-13 16:25:25.586470691 +0100
++++ exercises/solution/exercise-biomineralization/biominspatialparams.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -18,7 +18,7 @@
  #include <dumux/material/fluidmatrixinteractions/porosityprecipitation.hh>
  // TODO: dumux-course-task
@@ -91,8 +91,8 @@ diff -ruN exercises/exercise-biomineralization/biominspatialparams.hh exercises/
  
      Scalar initialPorosity_;
 diff -ruN exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh
---- exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh	2025-02-13 16:25:25.586470691 +0100
++++ exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -73,24 +73,26 @@
          //   define and compute some parameters for convenience:
          const Scalar xwCa = volVars.moleFraction(liquidPhaseIdx,CaIdx);
@@ -143,8 +143,8 @@ diff -ruN exercises/exercise-biomineralization/chemistry/simplebiominreactions.h
  
  private:
 diff -ruN exercises/exercise-biomineralization/CMakeLists.txt exercises/solution/exercise-biomineralization/CMakeLists.txt
---- exercises/exercise-biomineralization/CMakeLists.txt	2024-07-17 11:27:28.798347462 +0200
-+++ exercises/solution/exercise-biomineralization/CMakeLists.txt	2024-07-17 11:27:28.798347462 +0200
+--- exercises/exercise-biomineralization/CMakeLists.txt	2025-02-13 16:25:25.585470702 +0100
++++ exercises/solution/exercise-biomineralization/CMakeLists.txt	2025-02-13 16:25:25.632470178 +0100
 @@ -2,9 +2,9 @@
  # SPDX-License-Identifier: GPL-3.0-or-later
  
@@ -158,8 +158,8 @@ diff -ruN exercises/exercise-biomineralization/CMakeLists.txt exercises/solution
  # add a symlink for each input file
  add_input_file_links()
 diff -ruN exercises/exercise-biomineralization/components/biofilm.hh exercises/solution/exercise-biomineralization/components/biofilm.hh
---- exercises/exercise-biomineralization/components/biofilm.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/components/biofilm.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/components/biofilm.hh	2025-02-13 16:25:25.586470691 +0100
++++ exercises/solution/exercise-biomineralization/components/biofilm.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -12,9 +12,10 @@
  #ifndef DUMUX_BIOFILM_HH
  #define DUMUX_BIOFILM_HH
@@ -173,8 +173,8 @@ diff -ruN exercises/exercise-biomineralization/components/biofilm.hh exercises/s
  namespace Dumux::Components {
  
 diff -ruN exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh
---- exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh	2025-02-13 16:25:25.586470691 +0100
++++ exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -41,10 +41,11 @@
          using std::pow;
          // TODO: dumux-course-task
@@ -189,8 +189,8 @@ diff -ruN exercises/exercise-biomineralization/fluidmatrixinteractions/permeabil
  };
  
 diff -ruN exercises/exercise-biomineralization/fluidsystems/biomin.hh exercises/solution/exercise-biomineralization/fluidsystems/biomin.hh
---- exercises/exercise-biomineralization/fluidsystems/biomin.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/fluidsystems/biomin.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/fluidsystems/biomin.hh	2025-02-13 16:25:25.586470691 +0100
++++ exercises/solution/exercise-biomineralization/fluidsystems/biomin.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -219,7 +219,7 @@
      static void init()
      {
@@ -201,8 +201,8 @@ diff -ruN exercises/exercise-biomineralization/fluidsystems/biomin.hh exercises/
      }
  
 diff -ruN exercises/exercise-biomineralization/params.input exercises/solution/exercise-biomineralization/params.input
---- exercises/exercise-biomineralization/params.input	2024-07-17 10:58:43.893583024 +0200
-+++ exercises/solution/exercise-biomineralization/params.input	2024-07-17 10:58:43.905583103 +0200
+--- exercises/exercise-biomineralization/params.input	2025-02-13 16:25:25.587470680 +0100
++++ exercises/solution/exercise-biomineralization/params.input	2025-02-13 16:25:25.632470178 +0100
 @@ -16,10 +16,10 @@
  InitBiofilm = 0.05 # [-] initial volumefraction biofilm
  
@@ -234,8 +234,8 @@ diff -ruN exercises/exercise-biomineralization/params.input exercises/solution/e
 +[PowerLaw]
 +Exponent = 5.0
 diff -ruN exercises/exercise-biomineralization/properties.hh exercises/solution/exercise-biomineralization/properties.hh
---- exercises/exercise-biomineralization/properties.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/properties.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/properties.hh	2025-02-13 16:25:25.587470680 +0100
++++ exercises/solution/exercise-biomineralization/properties.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -18,17 +18,20 @@
  #include <dumux/discretization/cctpfa.hh>
  #include <dumux/porousmediumflow/2pncmin/model.hh>
@@ -269,7 +269,7 @@ diff -ruN exercises/exercise-biomineralization/properties.hh exercises/solution/
  public:
      using type = FluidSystems::BioMin<Scalar, CO2Impl, H2OType>;
 diff -ruN exercises/exercise-biomineralization/README.md exercises/solution/exercise-biomineralization/README.md
---- exercises/exercise-biomineralization/README.md	2024-07-17 10:58:43.889582997 +0200
+--- exercises/exercise-biomineralization/README.md	2025-02-27 13:25:14.896978114 +0100
 +++ exercises/solution/exercise-biomineralization/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,257 +0,0 @@
 -# Exercise Biomineralization (DuMuX Course)
@@ -283,7 +283,7 @@ diff -ruN exercises/exercise-biomineralization/README.md exercises/solution/exer
 -
 -Disclaimer: Please note, that this is not a realistic scenario. No one would think of storing gaseous CO<sub>2</sub> in this subcritical setting.
 -
--![](../extradoc/exercisebiomin_setup.png)
+-![](../extradoc/exercise_biomin_setup.png)
 -
 -
 -## Preparing the exercise
@@ -417,7 +417,7 @@ diff -ruN exercises/exercise-biomineralization/README.md exercises/solution/exer
 -
 - The result for the porosity should look like this:
 -
-- ![](../extradoc/exercisebiomin_porosityFinal.png)
+- ![](../extradoc/exercise_biomin_porosity_final.png)
 -
 -### 5. CO<sub>2</sub> injection to test aquitard integrity
 -
@@ -432,7 +432,7 @@ diff -ruN exercises/exercise-biomineralization/README.md exercises/solution/exer
 -```
 -The result for the biomineralization process during the CO<sub>2</sub> injection should look like this:
 -
--![](../extradoc/exercisebiomin_injectionFinal.png)
+-![](../extradoc/exercise_biomin_injection_final.png)
 -
 -### 6. Change the permeability law
 -
@@ -530,8 +530,8 @@ diff -ruN exercises/exercise-biomineralization/README.md exercises/solution/exer
 -output.CellData.append((S_gas_0-S_gas_1),'diffS_gas');
 -```
 diff -ruN exercises/exercise-biomineralization/solidsystems/biominsolidphase.hh exercises/solution/exercise-biomineralization/solidsystems/biominsolidphase.hh
---- exercises/exercise-biomineralization/solidsystems/biominsolidphase.hh	2024-07-17 11:27:28.870349025 +0200
-+++ exercises/solution/exercise-biomineralization/solidsystems/biominsolidphase.hh	2024-07-17 11:27:28.878349199 +0200
+--- exercises/exercise-biomineralization/solidsystems/biominsolidphase.hh	2025-02-13 16:25:25.587470680 +0100
++++ exercises/solution/exercise-biomineralization/solidsystems/biominsolidphase.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -15,12 +15,12 @@
  #include <string>
  #include <dune/common/exceptions.hh>
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 b70084c5..5882eb22 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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt	2025-02-13 16:25:25.587470680 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt	2025-02-13 16:25:25.632470178 +0100
 @@ -1,10 +1,30 @@
  # SPDX-FileCopyrightInfo: 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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2025-02-13 16:25:25.588470669 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2025-02-13 16:25:25.632470178 +0100
 @@ -71,8 +71,7 @@
  
          const auto& globalPos = scvf.dofPosition();
@@ -135,8 +135,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/main.cc	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/interface/main.cc	2025-02-13 16:25:25.588470669 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/main.cc	2025-02-13 16:25:25.633470167 +0100
 @@ -52,9 +52,7 @@
      using FreeflowTypeTag = Properties::TTag::FreeflowOneP;
      using PorousMediumTypeTag = Properties::TTag::PorousMediumFlowOneP;
@@ -263,8 +263,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	2024-07-31 14:00:26.830895056 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/params.input	2024-07-31 14:00:26.830895056 +0200
+--- exercises/exercise-coupling-ff-pm/interface/params.input	2025-02-13 16:25:25.588470669 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/params.input	2025-02-13 16:25:25.633470167 +0100
 @@ -1,16 +1,14 @@
 -# # TODO: dumux-course-task 1.C: uncomment the following group [Grid]
 -# # for dune-subgrid
@@ -301,8 +301,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2024-07-24 09:36:05.710158540 +0200
+--- exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2025-02-13 16:25:25.588470669 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -68,9 +68,10 @@
          // set Neumann BCs to all boundaries first
          values.setAllNeumann();
@@ -316,8 +316,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/properties.hh	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/interface/properties.hh	2025-02-13 16:25:25.588470669 +0100
++++ exercises/solution/exercise-coupling-ff-pm/interface/properties.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -16,9 +16,9 @@
  #include <dumux/multidomain/staggeredtraits.hh>
  #include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh>
@@ -374,7 +374,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	2024-07-31 14:00:26.830895056 +0200
+--- exercises/exercise-coupling-ff-pm/interface/README.md	2025-02-27 13:37:11.431157884 +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
@@ -382,7 +382,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/README.md exercises/soluti
 -In this part of the exercise, a simple coupled system consisting of a one-phase (1p) free flow and a one-phase flow in a porous medium is set up. Both subproblems have no-flow boundaries at the sides.
 -Currently, a velocity profile is set on the upper free flow boundary, which leads to a vertical flow into the porous medium:
 -
--![](../../extradoc/ex_ff-pm-vertical-flow.png)
+-![](../../extradoc/exercise_ffpm_vertical_flow.png)
 -
 -Note that we neglect the influence of gravity and only solve for the stationary problem in this exercise.
 -
@@ -546,15 +546,15 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/README.md exercises/soluti
 -
 -Recompile and rerun to check if the final result looks something like this:
 -
--![](../../extradoc/ex_ff-pm-wave-interface.png)
+-![](../../extradoc/exercise_ffpm_wave_interface.png)
 -
 -*Extra Points:*
 -Rather than enforcing a pressure difference across the domain, an inflow velocity profile could be set.
 -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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/models/CMakeLists.txt	2025-02-13 16:25:25.589470658 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt	2025-02-13 16:25:25.633470167 +0100
 @@ -1,9 +1,32 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -593,8 +593,8 @@ 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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/main.cc	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/models/main.cc	2025-02-13 16:25:25.589470658 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/main.cc	2025-02-13 16:25:25.633470167 +0100
 @@ -127,9 +127,15 @@
      auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
      porousMediumGridVariables->init(sol[porousMediumIdx]);
@@ -616,7 +616,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	2024-07-16 16:24:43.138116435 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,57 @@
 +[TimeLoop]
 +DtInitial = 100 # s
@@ -676,7 +676,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	2024-07-17 19:47:15.764585106 +0200
+--- exercises/exercise-coupling-ff-pm/models/params.input	2025-02-13 16:25:25.589470658 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/models/params.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,58 +0,0 @@
 -[TimeLoop]
@@ -739,7 +739,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	2024-07-17 10:59:09.002904720 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,56 @@
 +[TimeLoop]
 +DtInitial = 100 # s
@@ -798,8 +798,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2025-02-13 16:25:25.589470658 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -52,10 +52,15 @@
      // primary variable indices
      static constexpr int conti0EqIdx = Indices::conti0EqIdx;
@@ -921,8 +921,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/properties.hh	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/models/properties.hh	2025-02-13 16:25:25.589470658 +0100
++++ exercises/solution/exercise-coupling-ff-pm/models/properties.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -25,12 +25,14 @@
  #include <dumux/discretization/cctpfa.hh>
  #include <dumux/material/fluidmatrixinteractions/diffusivityconstanttortuosity.hh>
@@ -1005,7 +1005,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	2024-07-18 12:31:29.324898816 +0200
+--- exercises/exercise-coupling-ff-pm/models/README.md	2025-02-13 16:25:25.589470658 +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
@@ -1127,7 +1127,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	2024-07-31 14:00:29.098952621 +0200
+--- exercises/exercise-coupling-ff-pm/README.md	2025-02-13 16:25:25.587470680 +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)
@@ -1256,8 +1256,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2025-02-13 16:25:25.589470658 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2025-02-13 16:25:25.633470167 +0100
 @@ -1,10 +1,33 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -1296,8 +1296,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2025-02-13 16:25:25.590470647 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -8,8 +8,8 @@
   * \file
   * \brief The free-flow sub problem
@@ -1513,8 +1513,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/main.cc	2025-02-13 16:25:25.590470647 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc	2025-02-13 16:25:25.633470167 +0100
 @@ -122,11 +122,12 @@
  
      couplingManager->init(freeflowProblem, porousMediumProblem, sol);
@@ -1545,7 +1545,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	2024-07-16 16:24:43.138116435 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1621,7 +1621,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	2024-07-16 16:24:43.138116435 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1696,7 +1696,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	2024-07-16 16:24:43.138116435 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/params.input	2025-02-13 16:25:25.590470647 +0100
 +++ exercises/solution/exercise-coupling-ff-pm/turbulence/params.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,73 +0,0 @@
 -[TimeLoop]
@@ -1774,7 +1774,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	2024-07-16 16:24:43.138116435 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1849,8 +1849,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	2024-07-17 19:47:15.764585106 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh	2024-07-17 19:47:15.772585303 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/properties.hh	2025-02-13 16:25:25.590470647 +0100
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -8,8 +8,8 @@
   * \file
   * \brief The coupled exercise properties file or the turbulent case.
@@ -1892,7 +1892,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	2024-07-24 09:37:33.016088677 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/README.md	2025-02-27 13:35:35.491939880 +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
@@ -1974,7 +1974,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/README.md exercises/solut
 -In paraview you may compare the magnitude of $`D`$ and $`D_\textrm{t}`$ to see where the transport is affected by turbulence.
 -The result for the turbulent diffusivity should look like this:
 -
--![](../../extradoc/ex_ff-pm-turb_diffusivity.png)
+-![](../../extradoc/exercise_ffpm_turb_diffusivity.png)
 -
 -### Task B: Use symmetry boundary conditions
 -
diff --git a/.patches/exercise-fluidsystem/exercise-fluidsystem.patch b/.patches/exercise-fluidsystem/exercise-fluidsystem.patch
index 5f89a35e..cfd62958 100644
--- a/.patches/exercise-fluidsystem/exercise-fluidsystem.patch
+++ b/.patches/exercise-fluidsystem/exercise-fluidsystem.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-fluidsystem/2p2cproblem.hh exercises/solution/exercise-fluidsystem/2p2cproblem.hh
---- exercises/exercise-fluidsystem/2p2cproblem.hh	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/2p2cproblem.hh	2024-07-18 13:47:42.192717667 +0200
+--- exercises/exercise-fluidsystem/2p2cproblem.hh	2025-02-13 16:25:25.590470647 +0100
++++ exercises/solution/exercise-fluidsystem/2p2cproblem.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -12,7 +12,7 @@
  #ifndef DUMUX_EXERCISE_FLUIDSYSTEM_B_PROBLEM_HH
  #define DUMUX_EXERCISE_FLUIDSYSTEM_B_PROBLEM_HH
@@ -11,8 +11,8 @@ diff -ruN exercises/exercise-fluidsystem/2p2cproblem.hh exercises/solution/exerc
  #include <dumux/common/boundarytypes.hh>
  #include <dumux/common/properties.hh>
 diff -ruN exercises/exercise-fluidsystem/2pproperties.hh exercises/solution/exercise-fluidsystem/2pproperties.hh
---- exercises/exercise-fluidsystem/2pproperties.hh	2024-07-18 14:25:25.701687082 +0200
-+++ exercises/solution/exercise-fluidsystem/2pproperties.hh	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/2pproperties.hh	2025-02-13 16:25:25.590470647 +0100
++++ exercises/solution/exercise-fluidsystem/2pproperties.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -25,15 +25,13 @@
  #include "spatialparams.hh"
  
@@ -52,8 +52,8 @@ diff -ruN exercises/exercise-fluidsystem/2pproperties.hh exercises/solution/exer
  public:
      using type = typename FluidSystems::TwoPImmiscible<Scalar, LiquidWaterPhase, LiquidMyComponentPhase>;
 diff -ruN exercises/exercise-fluidsystem/aparams.input exercises/solution/exercise-fluidsystem/aparams.input
---- exercises/exercise-fluidsystem/aparams.input	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/aparams.input	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/aparams.input	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/aparams.input	2025-02-13 16:25:25.633470167 +0100
 @@ -3,7 +3,7 @@
  DtInitial = 10 # initial time step size [s]
  
@@ -70,8 +70,8 @@ diff -ruN exercises/exercise-fluidsystem/aparams.input exercises/solution/exerci
 -PlotDensity = false # plot density over pressure for your component
 +PlotDensity = true # plot density over pressure for your component
 diff -ruN exercises/exercise-fluidsystem/bparams.input exercises/solution/exercise-fluidsystem/bparams.input
---- exercises/exercise-fluidsystem/bparams.input	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/bparams.input	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/bparams.input	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/bparams.input	2025-02-13 16:25:25.633470167 +0100
 @@ -3,7 +3,7 @@
  DtInitial = 10 # initial time step size [s]
  
@@ -82,8 +82,8 @@ diff -ruN exercises/exercise-fluidsystem/bparams.input exercises/solution/exerci
  [SpatialParams]
  BrooksCoreyPcEntry = 5.0e2 # [Pa]
 diff -ruN exercises/exercise-fluidsystem/CMakeLists.txt exercises/solution/exercise-fluidsystem/CMakeLists.txt
---- exercises/exercise-fluidsystem/CMakeLists.txt	2024-07-17 14:23:53.007057346 +0200
-+++ exercises/solution/exercise-fluidsystem/CMakeLists.txt	2024-07-17 14:23:53.011057409 +0200
+--- exercises/exercise-fluidsystem/CMakeLists.txt	2025-02-13 16:25:25.590470647 +0100
++++ exercises/solution/exercise-fluidsystem/CMakeLists.txt	2025-02-13 16:25:25.633470167 +0100
 @@ -3,18 +3,16 @@
  
  # executables for exercise part a & b
@@ -110,8 +110,8 @@ diff -ruN exercises/exercise-fluidsystem/CMakeLists.txt exercises/solution/exerc
 -# add a symlink for the grids folder
 -dune_symlink_to_source_files(FILES grids)
 diff -ruN exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh exercises/solution/exercise-fluidsystem/components/mycompressiblecomponent.hh
---- exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/components/mycompressiblecomponent.hh	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/components/mycompressiblecomponent.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -38,7 +38,7 @@
      static std::string name()
      { return "MyCompressibleComponent"; }
@@ -173,8 +173,8 @@ diff -ruN exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh e
  };
  
 diff -ruN exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh exercises/solution/exercise-fluidsystem/components/myincompressiblecomponent.hh
---- exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/components/myincompressiblecomponent.hh	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/components/myincompressiblecomponent.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -48,10 +48,7 @@
       */
      static Scalar molarMass()
@@ -213,7 +213,7 @@ diff -ruN exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh
  
 diff -ruN exercises/exercise-fluidsystem/components/plotdensityfunction.py exercises/solution/exercise-fluidsystem/components/plotdensityfunction.py
 --- exercises/exercise-fluidsystem/components/plotdensityfunction.py	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-fluidsystem/components/plotdensityfunction.py	2024-07-18 13:47:42.196717705 +0200
++++ exercises/solution/exercise-fluidsystem/components/plotdensityfunction.py	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,22 @@
 +#!usr/bin/env python
 +# SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
@@ -238,8 +238,8 @@ diff -ruN exercises/exercise-fluidsystem/components/plotdensityfunction.py exerc
 +plt.semilogx(p, r)
 +plt.show()
 diff -ruN exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh exercises/solution/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh
---- exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -20,10 +20,10 @@
  #include <dumux/material/fluidsystems/base.hh>
  
@@ -276,8 +276,8 @@ diff -ruN exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent
          else
          {
 diff -ruN exercises/exercise-fluidsystem/main.cc exercises/solution/exercise-fluidsystem/main.cc
---- exercises/exercise-fluidsystem/main.cc	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/main.cc	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/main.cc	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/main.cc	2025-02-13 16:25:25.633470167 +0100
 @@ -36,7 +36,7 @@
  int main(int argc, char** argv)
  {
@@ -303,7 +303,7 @@ diff -ruN exercises/exercise-fluidsystem/main.cc exercises/solution/exercise-flu
      using IOFields = GetPropType<TypeTag, Properties::IOFields>;
      VtkOutputModule<GridVariables, SolutionVector> vtkWriter(*gridVariables, x, problem->name());
 diff -ruN exercises/exercise-fluidsystem/README.md exercises/solution/exercise-fluidsystem/README.md
---- exercises/exercise-fluidsystem/README.md	2024-07-18 14:23:13.194674429 +0200
+--- exercises/exercise-fluidsystem/README.md	2025-02-27 13:29:17.190831141 +0100
 +++ exercises/solution/exercise-fluidsystem/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,265 +0,0 @@
 -# Exercise Fluidsystem (DuMuX Course)
@@ -314,7 +314,7 @@ diff -ruN exercises/exercise-fluidsystem/README.md exercises/solution/exercise-f
 -
 -The domain has a size of 60 m x 60 m and contains two low-permeable lenses. Initially, the domain is fully water saturated and the fictitious component is injected through the middle portion of the upper boundary by means of a Neumann boundary condition. The remaining parts of the upper and the entire lower boundary are Neumann no-flow while on the two lateral sides Dirichlet boundary conditions are applied (hydrostatic conditions for the pressure and zero saturation).
 -
--<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise-fluidsystem_setup.png" width="700">
+-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_fluidsystem_setup.png" width="700">
 -
 -
 -## Task 1: Getting familiar with the code
@@ -460,7 +460,7 @@ diff -ruN exercises/exercise-fluidsystem/README.md exercises/solution/exercise-f
 -
 -The saturation distribution of the nonwetting phase, here S$`_{napl}`$ (the phase consisting of our fictitious incompressible component), at the final simulation time should look like this:
 -
--![](../extradoc/exercise-fluidsystem_a_solution.png)
+-![](../extradoc/exercise_fluidsystem_a_solution.png)
 -
 -### Task 2.2: Compressible component
 -
@@ -470,12 +470,12 @@ diff -ruN exercises/exercise-fluidsystem/README.md exercises/solution/exercise-f
 -
 -where $`p`$ is the pressure and $`\rho_{min} = 1440.0 \, kg/m^3`$, $`\rho_{max} = 1480.0 \, kg/m^3`$ and $`k = 5 \cdot 10^{-7} `$. Also, make sure the header is included in the `2pproperties.hh` file by uncommenting the corresponding line. Furthermore, the new component has to be set as a liquid phase in the fluid system. To do so, search for `TODO: dumux-course-task 2.2`. Comment out the corresponding line and uncomment the other. The density distribution of this phase (rho$`_{napl}`$) at the final simulation time should look like this:
 -
--![](../extradoc/exercise-fluidsystem_a_solution2.png)
+-![](../extradoc/exercise_fluidsystem_a_solution2.png)
 -
 -You can plot the density of the phase consisting of your compressible component by setting `PlotDensity` in `aparams.input` to `true` and starting the simulation again.
 -Compare the gnuplot output to the following plot of the density function from above:
 -
--<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise-fluidsystem_a_densityfunction.png" width="500">
+-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_fluidsystem_a_densityfunction.png" width="500">
 -
 -## Task 3: Implement a new fluid system - Part b
 -
@@ -572,8 +572,8 @@ diff -ruN exercises/exercise-fluidsystem/README.md exercises/solution/exercise-f
 -./exercise_fluidsystem_b bparams.input
 -```
 diff -ruN exercises/exercise-fluidsystem/spatialparams.hh exercises/solution/exercise-fluidsystem/spatialparams.hh
---- exercises/exercise-fluidsystem/spatialparams.hh	2024-07-18 13:47:42.192717667 +0200
-+++ exercises/solution/exercise-fluidsystem/spatialparams.hh	2024-07-18 13:47:42.196717705 +0200
+--- exercises/exercise-fluidsystem/spatialparams.hh	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fluidsystem/spatialparams.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -113,13 +113,17 @@
      template<class FluidSystem>
      int wettingPhaseAtPos(const GlobalPosition& globalPos) const
diff --git a/.patches/exercise-fractures/exercise-fractures.patch b/.patches/exercise-fractures/exercise-fractures.patch
index 2fab87df..b9c9d0d7 100644
--- a/.patches/exercise-fractures/exercise-fractures.patch
+++ b/.patches/exercise-fractures/exercise-fractures.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-fractures/CMakeLists.txt exercises/solution/exercise-fractures/CMakeLists.txt
---- exercises/exercise-fractures/CMakeLists.txt	2024-07-17 11:27:28.798347462 +0200
-+++ exercises/solution/exercise-fractures/CMakeLists.txt	2024-07-17 11:27:28.798347462 +0200
+--- exercises/exercise-fractures/CMakeLists.txt	2025-02-13 16:25:25.591470635 +0100
++++ exercises/solution/exercise-fractures/CMakeLists.txt	2025-02-13 16:25:25.633470167 +0100
 @@ -1,9 +1,26 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -32,7 +32,7 @@ diff -ruN exercises/exercise-fractures/CMakeLists.txt exercises/solution/exercis
  add_input_file_links()
 diff -ruN exercises/exercise-fractures/exercise_fractures_solution_a.input exercises/solution/exercise-fractures/exercise_fractures_solution_a.input
 --- exercises/exercise-fractures/exercise_fractures_solution_a.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-fractures/exercise_fractures_solution_a.input	2020-11-12 12:07:04.129814352 +0100
++++ exercises/solution/exercise-fractures/exercise_fractures_solution_a.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,41 @@
 +[TimeLoop]
 +TEnd = 30000 # [s]
@@ -77,7 +77,7 @@ diff -ruN exercises/exercise-fractures/exercise_fractures_solution_a.input exerc
 +SpatialParams.Barrier.Swr = 0.0
 diff -ruN exercises/exercise-fractures/exercise_fractures_solution_b.input exercises/solution/exercise-fractures/exercise_fractures_solution_b.input
 --- exercises/exercise-fractures/exercise_fractures_solution_b.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-fractures/exercise_fractures_solution_b.input	2020-11-12 12:07:04.129814352 +0100
++++ exercises/solution/exercise-fractures/exercise_fractures_solution_b.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,41 @@
 +[TimeLoop]
 +TEnd = 30000 # [s]
@@ -122,7 +122,7 @@ diff -ruN exercises/exercise-fractures/exercise_fractures_solution_b.input exerc
 +SpatialParams.Barrier.Swr = 0.0
 diff -ruN exercises/exercise-fractures/exercise_fractures_solution_c.input exercises/solution/exercise-fractures/exercise_fractures_solution_c.input
 --- exercises/exercise-fractures/exercise_fractures_solution_c.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-fractures/exercise_fractures_solution_c.input	2020-11-12 12:07:04.129814352 +0100
++++ exercises/solution/exercise-fractures/exercise_fractures_solution_c.input	2025-02-13 16:25:25.633470167 +0100
 @@ -0,0 +1,41 @@
 +[TimeLoop]
 +TEnd = 30000 # [s]
@@ -166,8 +166,8 @@ diff -ruN exercises/exercise-fractures/exercise_fractures_solution_c.input exerc
 +SpatialParams.Barrier.Snr = 0.0
 +SpatialParams.Barrier.Swr = 0.0
 diff -ruN exercises/exercise-fractures/fractureproblem.hh exercises/solution/exercise-fractures/fractureproblem.hh
---- exercises/exercise-fractures/fractureproblem.hh	2024-07-17 11:27:28.874349112 +0200
-+++ exercises/solution/exercise-fractures/fractureproblem.hh	2024-07-17 11:27:28.882349286 +0200
+--- exercises/exercise-fractures/fractureproblem.hh	2025-02-13 16:25:25.592470624 +0100
++++ exercises/solution/exercise-fractures/fractureproblem.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -59,6 +59,10 @@
                         std::shared_ptr<typename ParentType::SpatialParams> spatialParams,
                         const std::string& paramGroup)
@@ -199,8 +199,8 @@ diff -ruN exercises/exercise-fractures/fractureproblem.hh exercises/solution/exe
          return values;
      }
 diff -ruN exercises/exercise-fractures/fracturespatialparams.hh exercises/solution/exercise-fractures/fracturespatialparams.hh
---- exercises/exercise-fractures/fracturespatialparams.hh	2024-07-17 11:27:28.874349112 +0200
-+++ exercises/solution/exercise-fractures/fracturespatialparams.hh	2024-07-17 11:27:28.886349373 +0200
+--- exercises/exercise-fractures/fracturespatialparams.hh	2025-02-13 16:25:25.592470624 +0100
++++ exercises/solution/exercise-fractures/fracturespatialparams.hh	2025-02-13 16:25:25.633470167 +0100
 @@ -41,6 +41,7 @@
      using Element = typename GridView::template Codim<0>::Entity;
      using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
@@ -322,8 +322,8 @@ diff -ruN exercises/exercise-fractures/fracturespatialparams.hh exercises/soluti
  
  } // end namespace Dumux
 diff -ruN exercises/exercise-fractures/main.cc exercises/solution/exercise-fractures/main.cc
---- exercises/exercise-fractures/main.cc	2024-07-17 11:27:28.874349112 +0200
-+++ exercises/solution/exercise-fractures/main.cc	2024-07-17 11:27:28.886349373 +0200
+--- exercises/exercise-fractures/main.cc	2025-02-13 16:25:25.593470613 +0100
++++ exercises/solution/exercise-fractures/main.cc	2025-02-13 16:25:25.634470156 +0100
 @@ -245,4 +245,5 @@
      Parameters::print();
  
@@ -331,8 +331,8 @@ diff -ruN exercises/exercise-fractures/main.cc exercises/solution/exercise-fract
 +
  }// end main
 diff -ruN exercises/exercise-fractures/matrixproblem.hh exercises/solution/exercise-fractures/matrixproblem.hh
---- exercises/exercise-fractures/matrixproblem.hh	2024-07-17 11:27:28.874349112 +0200
-+++ exercises/solution/exercise-fractures/matrixproblem.hh	2024-07-17 11:27:28.886349373 +0200
+--- exercises/exercise-fractures/matrixproblem.hh	2025-02-13 16:25:25.594470602 +0100
++++ exercises/solution/exercise-fractures/matrixproblem.hh	2025-02-13 16:25:25.634470156 +0100
 @@ -65,11 +65,18 @@
      : ParentType(gridGeometry, spatialParams, paramGroup)
      , boundaryOverPressure_(getParamFromGroup<Scalar>(paramGroup, "Problem.BoundaryOverPressure"))
@@ -456,8 +456,8 @@ diff -ruN exercises/exercise-fractures/matrixproblem.hh exercises/solution/exerc
  
  } // end namespace Dumux
 diff -ruN exercises/exercise-fractures/matrixspatialparams.hh exercises/solution/exercise-fractures/matrixspatialparams.hh
---- exercises/exercise-fractures/matrixspatialparams.hh	2024-07-17 11:27:28.874349112 +0200
-+++ exercises/solution/exercise-fractures/matrixspatialparams.hh	2024-07-17 11:27:28.886349373 +0200
+--- exercises/exercise-fractures/matrixspatialparams.hh	2025-02-13 16:25:25.594470602 +0100
++++ exercises/solution/exercise-fractures/matrixspatialparams.hh	2025-02-13 16:25:25.634470156 +0100
 @@ -40,6 +40,7 @@
      using Element = typename GridView::template Codim<0>::Entity;
      using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
@@ -467,8 +467,8 @@ diff -ruN exercises/exercise-fractures/matrixspatialparams.hh exercises/solution
  
  public:
 diff -ruN exercises/exercise-fractures/params.input exercises/solution/exercise-fractures/params.input
---- exercises/exercise-fractures/params.input	2023-10-13 18:08:54.714521020 +0200
-+++ exercises/solution/exercise-fractures/params.input	2020-05-08 12:16:18.919855703 +0200
+--- exercises/exercise-fractures/params.input	2025-02-13 16:25:25.594470602 +0100
++++ exercises/solution/exercise-fractures/params.input	2025-02-13 16:25:25.634470156 +0100
 @@ -5,6 +5,9 @@
  
  [Problem]
@@ -510,8 +510,8 @@ diff -ruN exercises/exercise-fractures/params.input exercises/solution/exercise-
 +SpatialParams.Swr = 0.0
 +SpatialParams.SwrBarrier = 0.0
 diff -ruN exercises/exercise-fractures/properties.hh exercises/solution/exercise-fractures/properties.hh
---- exercises/exercise-fractures/properties.hh	2024-07-17 11:27:28.874349112 +0200
-+++ exercises/solution/exercise-fractures/properties.hh	2024-07-17 11:27:28.886349373 +0200
+--- exercises/exercise-fractures/properties.hh	2025-02-13 16:25:25.594470602 +0100
++++ exercises/solution/exercise-fractures/properties.hh	2025-02-13 16:25:25.634470156 +0100
 @@ -45,6 +45,7 @@
  // with tpfa.
  #include <dumux/multidomain/facet/cellcentered/tpfa/properties.hh>
@@ -530,7 +530,7 @@ diff -ruN exercises/exercise-fractures/properties.hh exercises/solution/exercise
  struct Grid<TypeTag, TTag::MatrixProblem> { using type = Dune::ALUGrid<2, 2, Dune::simplex, Dune::conforming>; };
  template<class TypeTag>
 diff -ruN exercises/exercise-fractures/README.md exercises/solution/exercise-fractures/README.md
---- exercises/exercise-fractures/README.md	2023-10-13 18:08:54.714521020 +0200
+--- exercises/exercise-fractures/README.md	2025-02-27 13:31:58.057789567 +0100
 +++ exercises/solution/exercise-fractures/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,216 +0,0 @@
 -# Exercise Discrete Fractures (DuMuX Course)
@@ -541,7 +541,7 @@ diff -ruN exercises/exercise-fractures/README.md exercises/solution/exercise-fra
 -
 -We consider a domain of 100 x 100 m with a set of ten fractures. This geometry has been taken from [Flemisch et al. (2018)](https://www.sciencedirect.com/science/article/pii/S0309170817300143), but was slightly modified to better fit to the purposes of this exercise. Apart from one fracture extending up to the top boundary, all other fractures are immersed, meaning that the fracture tips lie within the domain (see image below).
 -
--![](../extradoc/exercisefractures_setup.png)
+-![](../extradoc/exercise_fractures_setup.png)
 -
 -In the initial setup of this exercise, we want to consider buoyancy-driven upwards migration of nitrogen (gas) in a fully water-saturated medium. Thus, as initial conditions we use hydrostatic pressure conditions and a zero nitrogen saturation. On the boundaries we apply Neumann no-flow boundary conditions on the left and right sides, while using Dirichlet boundary conditions on the top and the bottom of the domain. We set the initial conditions as boundary conditions on the Dirichlet segments, except for the middle part of the lower boundary ($`y = 0 \wedge x > 25 \wedge x < 75`$), where we set a non-zero nitrogen saturation (settable via the input file). Through this segment of the lower boundary, nitrogen can intrude the domain and flow upwards driven by buoyancy.
 -
@@ -650,7 +650,7 @@ diff -ruN exercises/exercise-fractures/README.md exercises/solution/exercise-fra
 -
 -Take a look at the results by opening the files `matrix.pvd` and `fractures.pvd` with _Paraview_. In order to increase the visibility of the fracture solution, you might want to apply the tube filter to it (e.g. with a tube radius of 0.2). The result should look like this:
 -
--![](../extradoc/exercisefractures_initsol.png)
+-![](../extradoc/exercise_fractures_initsol.png)
 -
 -You can see how the fractures act as preferential flowpaths in the upwards movement of nitrogen due to their higher permeabilities. Additionally, you can observe comparatively high nitrogen saturations in the fracture tips as a result of the fractures acting as capillary traps due to the lower capillary pressures inside them. Consider turning them into capillary barriers, e.g. by setting __SpatialParams.VGAlpha = 1e-5__ in the __Fracture__ group in the input file (`params.input`). The nitrogen saturations in the fractures (especially in the fracture tips) should now be lower than in the surrounding matrix. Do not forget to reset __SpatialParams.VGAlpha = 1e-1__ in the input file after you are done.
 -
@@ -660,7 +660,7 @@ diff -ruN exercises/exercise-fractures/README.md exercises/solution/exercise-fra
 -
 -Furthermore, modify the function `dirichletAtPos(...)` in `matrixproblem.hh` such that an overpressure is added to the initial pressure and a non-zero saturation is applied on the right Dirichlet segment ($`x = 100 \wedge y > 75`$). For this you can use the private variables `boundaryOverPressure_` and `boundarySaturation_` which are stored in the matrix problem and are read from the input file. Compile and execute the program again. The resulting water pressure distribution should look like this:
 -
--![](../extradoc/exercisefractures_a.png)
+-![](../extradoc/exercise_fractures_a.png)
 -
 -## Task B: Turn the fractures into barriers
 -
@@ -704,7 +704,7 @@ diff -ruN exercises/exercise-fractures/README.md exercises/solution/exercise-fra
 -
 -This means we have to use Neumann-type interior boundary conditions here. Change this accordingly, compile and rerun the exercise again. You should now be able to see jumps in pressure in the matrix domain with an especially prominent one across the first vertical fracture (see image below).
 -
--![](../extradoc/exercisefractures_b.png)
+-![](../extradoc/exercise_fractures_b.png)
 -
 -### Task C: Define both open fractures and barriers
 -
diff --git a/.patches/exercise-mainfile/exercise-mainfile.patch b/.patches/exercise-mainfile/exercise-mainfile.patch
index 4ef11fa0..5cfe16a8 100644
--- a/.patches/exercise-mainfile/exercise-mainfile.patch
+++ b/.patches/exercise-mainfile/exercise-mainfile.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-mainfile/CMakeLists.txt exercises/solution/exercise-mainfile/CMakeLists.txt
---- exercises/exercise-mainfile/CMakeLists.txt	2024-07-17 14:07:42.177109339 +0200
-+++ exercises/solution/exercise-mainfile/CMakeLists.txt	2024-07-17 13:58:18.220850484 +0200
+--- exercises/exercise-mainfile/CMakeLists.txt	2025-02-13 16:25:25.596470580 +0100
++++ exercises/solution/exercise-mainfile/CMakeLists.txt	2025-02-13 16:25:25.635470145 +0100
 @@ -2,14 +2,9 @@
  # SPDX-License-Identifier: GPL-3.0-or-later
  
@@ -22,7 +22,7 @@ diff -ruN exercises/exercise-mainfile/CMakeLists.txt exercises/solution/exercise
 +add_input_file_links()
 \ No newline at end of file
 diff -ruN exercises/exercise-mainfile/exercise1pamain.cc exercises/solution/exercise-mainfile/exercise1pamain.cc
---- exercises/exercise-mainfile/exercise1pamain.cc	2024-07-17 13:58:18.212850366 +0200
+--- exercises/exercise-mainfile/exercise1pamain.cc	2025-02-13 16:25:25.596470580 +0100
 +++ exercises/solution/exercise-mainfile/exercise1pamain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,130 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -157,7 +157,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pamain.cc exercises/solution/exer
 -}// end main
 diff -ruN exercises/exercise-mainfile/exercise1pa_solution_main.cc exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc
 --- exercises/exercise-mainfile/exercise1pa_solution_main.cc	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc	2024-07-17 13:58:18.220850484 +0200
++++ exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc	2025-02-13 16:25:25.635470145 +0100
 @@ -0,0 +1,130 @@
 +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 +// vi: set et ts=4 sw=4 sts=4:
@@ -290,7 +290,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pa_solution_main.cc exercises/sol
 +
 +}// end main
 diff -ruN exercises/exercise-mainfile/exercise1pbmain.cc exercises/solution/exercise-mainfile/exercise1pbmain.cc
---- exercises/exercise-mainfile/exercise1pbmain.cc	2024-07-17 13:58:18.212850366 +0200
+--- exercises/exercise-mainfile/exercise1pbmain.cc	2025-02-13 16:25:25.596470580 +0100
 +++ exercises/solution/exercise-mainfile/exercise1pbmain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,120 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -414,7 +414,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pbmain.cc exercises/solution/exer
 -
 -}// end main
 diff -ruN exercises/exercise-mainfile/exercise1pcmain.cc exercises/solution/exercise-mainfile/exercise1pcmain.cc
---- exercises/exercise-mainfile/exercise1pcmain.cc	2024-07-17 13:58:18.212850366 +0200
+--- exercises/exercise-mainfile/exercise1pcmain.cc	2025-02-13 16:25:25.596470580 +0100
 +++ exercises/solution/exercise-mainfile/exercise1pcmain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,146 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -564,7 +564,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pcmain.cc exercises/solution/exer
 -
 -}// end main
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_a.input exercises/solution/exercise-mainfile/exercise_mainfile_a.input
---- exercises/exercise-mainfile/exercise_mainfile_a.input	2023-10-13 18:08:54.718521039 +0200
+--- exercises/exercise-mainfile/exercise_mainfile_a.input	2025-02-13 16:25:25.596470580 +0100
 +++ exercises/solution/exercise-mainfile/exercise_mainfile_a.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,18 +0,0 @@
 -[Grid]
@@ -587,7 +587,7 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_a.input exercises/soluti
 -BaseEpsilon = 1e-10
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_a_solution.input exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input
 --- exercises/exercise-mainfile/exercise_mainfile_a_solution.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input	2024-07-17 14:08:11.237533494 +0200
++++ exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input	2025-02-13 16:25:25.635470145 +0100
 @@ -0,0 +1,18 @@
 +[Grid]
 +LowerLeft = 0 0
@@ -608,7 +608,7 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_a_solution.input exercis
 +PriVarMagnitude = 1e5
 +BaseEpsilon = 1e-10
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_b.input exercises/solution/exercise-mainfile/exercise_mainfile_b.input
---- exercises/exercise-mainfile/exercise_mainfile_b.input	2023-10-13 18:08:54.718521039 +0200
+--- exercises/exercise-mainfile/exercise_mainfile_b.input	2025-02-13 16:25:25.596470580 +0100
 +++ exercises/solution/exercise-mainfile/exercise_mainfile_b.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,17 +0,0 @@
 -[Grid]
@@ -629,7 +629,7 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_b.input exercises/soluti
 -[Assembly.NumericDifference]
 -PriVarMagnitude = 1e5
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_c.input exercises/solution/exercise-mainfile/exercise_mainfile_c.input
---- exercises/exercise-mainfile/exercise_mainfile_c.input	2024-07-17 14:08:27.885776444 +0200
+--- exercises/exercise-mainfile/exercise_mainfile_c.input	2025-02-13 16:25:25.597470568 +0100
 +++ exercises/solution/exercise-mainfile/exercise_mainfile_c.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,21 +0,0 @@
 -[TimeLoop]
@@ -654,8 +654,8 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_c.input exercises/soluti
 -[Assembly.NumericDifference]
 -PriVarMagnitude = 1e5
 diff -ruN exercises/exercise-mainfile/properties.hh exercises/solution/exercise-mainfile/properties.hh
---- exercises/exercise-mainfile/properties.hh	2024-07-17 13:58:18.212850366 +0200
-+++ exercises/solution/exercise-mainfile/properties.hh	2024-07-17 13:58:18.220850484 +0200
+--- exercises/exercise-mainfile/properties.hh	2025-02-13 16:25:25.597470568 +0100
++++ exercises/solution/exercise-mainfile/properties.hh	2025-02-13 16:25:25.635470145 +0100
 @@ -25,8 +25,8 @@
  
  #include <dumux/porousmediumflow/1p/model.hh>
@@ -679,7 +679,7 @@ diff -ruN exercises/exercise-mainfile/properties.hh exercises/solution/exercise-
  
  // the fluid system for compressible tests
 diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-mainfile/README.md
---- exercises/exercise-mainfile/README.md	2024-07-17 11:27:28.682344944 +0200
+--- exercises/exercise-mainfile/README.md	2025-02-27 12:13:40.959238376 +0100
 +++ exercises/solution/exercise-mainfile/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,196 +0,0 @@
 -# Exercise Mainfiles (DuMuX course)
@@ -699,7 +699,7 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -
 -The problem set-up for all three examples is always the same: It is a two dimensional problem and the domain is $1 m$ by $1 m$. It is a heterogeneous set-up with a lens in the middle of the domain which has a lower permeability ($1\cdot 10^{-12} m^2$ compared to  $1\cdot 10^{-10} m^2$ in the rest of the domain).
 -
--<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise1_1p_setup.png" width="1000">
+-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_mainfile_1p_setup.png" width="1000">
 -
 -In the beginning, there is a uniform pressure of $1\cdot 10^5 Pa$ in the whole domain. On the top and the bottom border, dirichlet boundary conditions are set with a pressure of  $1\cdot 10^5 Pa$ on top and  $2 \cdot 10^5 Pa$ on the bottom. At the sides, there is no in- or outflow and there are no source terms.
 -
diff --git a/.patches/exercise-model/exercise-model.patch b/.patches/exercise-model/exercise-model.patch
index 24d64926..726d98be 100644
--- a/.patches/exercise-model/exercise-model.patch
+++ b/.patches/exercise-model/exercise-model.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-model/CMakeLists.txt exercises/solution/exercise-model/CMakeLists.txt
---- exercises/exercise-model/CMakeLists.txt	2024-07-17 14:21:07.400210015 +0200
-+++ exercises/solution/exercise-model/CMakeLists.txt	2024-07-17 14:21:07.404210034 +0200
+--- exercises/exercise-model/CMakeLists.txt	2025-02-13 16:25:25.597470568 +0100
++++ exercises/solution/exercise-model/CMakeLists.txt	2025-02-13 16:25:25.635470145 +0100
 @@ -3,5 +3,5 @@
  
  dune_symlink_to_source_files(FILES images params.input)
@@ -9,8 +9,8 @@ diff -ruN exercises/exercise-model/CMakeLists.txt exercises/solution/exercise-mo
 +dumux_add_test(NAME exercise_nonlineardiffusion_sol
                 SOURCES main.cc)
 diff -ruN exercises/exercise-model/main.cc exercises/solution/exercise-model/main.cc
---- exercises/exercise-model/main.cc	2024-07-17 14:21:07.400210015 +0200
-+++ exercises/solution/exercise-model/main.cc	2024-07-17 14:21:07.404210034 +0200
+--- exercises/exercise-model/main.cc	2025-02-13 16:25:25.598470557 +0100
++++ exercises/solution/exercise-model/main.cc	2025-02-13 16:25:25.635470145 +0100
 @@ -29,6 +29,8 @@
  #include <dumux/nonlinear/newtonsolver.hh>
  #include <dumux/assembly/fvassembler.hh>
@@ -148,7 +148,7 @@ diff -ruN exercises/exercise-model/main.cc exercises/solution/exercise-model/mai
  }// end main
 diff -ruN exercises/exercise-model/model.hh exercises/solution/exercise-model/model.hh
 --- exercises/exercise-model/model.hh	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-model/model.hh	2024-07-18 10:07:49.719993891 +0200
++++ exercises/solution/exercise-model/model.hh	2025-02-13 16:25:25.635470145 +0100
 @@ -0,0 +1,210 @@
 +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 +// vi: set et ts=4 sw=4 sts=4:
@@ -361,7 +361,7 @@ diff -ruN exercises/exercise-model/model.hh exercises/solution/exercise-model/mo
 +
 +#endif
 diff -ruN exercises/exercise-model/README.md exercises/solution/exercise-model/README.md
---- exercises/exercise-model/README.md	2024-07-18 10:13:40.660815419 +0200
+--- exercises/exercise-model/README.md	2025-02-27 13:33:20.492673922 +0100
 +++ exercises/solution/exercise-model/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,195 +0,0 @@
 -# Exercise Model (DuMuX course)
@@ -509,7 +509,7 @@ diff -ruN exercises/exercise-model/README.md exercises/solution/exercise-model/R
 -__The final result should look like this:__
 -<figure>
 -    <center>
--        <img src="../extradoc/exercisemodel_mri_denoise.gif" alt="denoising"/>
+-        <img src="../extradoc/exercise_model_mri_denoise.gif" alt="denoising"/>
 -        <figcaption> <b> Fig.1 </b> - Denosing of MRI image using nonlinear diffusion model.</figcaption>
 -    </center>
 -</figure>
diff --git a/exercises/exercise-basic/README.md b/exercises/exercise-basic/README.md
index e98dbf05..40acd722 100644
--- a/exercises/exercise-basic/README.md
+++ b/exercises/exercise-basic/README.md
@@ -5,7 +5,7 @@
 N$_2$ is injected in an aquifer previously saturated with water with an injection rate of 0.0001 kg/(s*m$^2$).
 The aquifer is situated 2700 m below sea level and the domain size is 60 m x 40 m. It consists of two layers, a moderately permeable one ($\Omega_1$) and a lower permeable one ($\Omega_2$).
 
-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise1_setup.png" width="1000">
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_basic_setup.png" width="1000">
 
 ## Preparing the exercise
 
@@ -89,6 +89,6 @@ $\displaystyle d_\text{aquifer}=2700~\text{m}$. Additionally, add a subdomain (2
 
   __Boundary conditions:__ Dirichlet boundary conditions at the left boundary with the same temperature gradient as in the initial conditions. For the Neumann conditions, assign an energy flux at the injection point of N$_2$ and no-flow conditions for the energy balance to the rest of the boundaries.
 
-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise1_nonisothermal.png" width="800">
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_basic_nonisothermal.png" width="800">
 
 The non-isothermal model requires additional parameters like the thermal conductivity of the solid component. They are already implemented and set in `params.input`, you just need to _uncomment_ them.
diff --git a/exercises/exercise-biomineralization/README.md b/exercises/exercise-biomineralization/README.md
index b3ac137f..fb11f089 100644
--- a/exercises/exercise-biomineralization/README.md
+++ b/exercises/exercise-biomineralization/README.md
@@ -9,7 +9,7 @@ The domain has a size of 20 x 15 m and contains a sealing aquitard in the middle
 
 Disclaimer: Please note, that this is not a realistic scenario. No one would think of storing gaseous CO<sub>2</sub> in this subcritical setting.
 
-![](../extradoc/exercisebiomin_setup.png)
+![](../extradoc/exercise_biomin_setup.png)
 
 
 ## Preparing the exercise
@@ -143,7 +143,7 @@ make exercise_biomin
 
  The result for the porosity should look like this:
 
- ![](../extradoc/exercisebiomin_porosityFinal.png)
+ ![](../extradoc/exercise_biomin_porosity_final.png)
 
 ### 5. CO<sub>2</sub> injection to test aquitard integrity
 
@@ -158,7 +158,7 @@ Run two simulations and compare them side by side by creating two input files, o
 ```
 The result for the biomineralization process during the CO<sub>2</sub> injection should look like this:
 
-![](../extradoc/exercisebiomin_injectionFinal.png)
+![](../extradoc/exercise_biomin_injection_final.png)
 
 ### 6. Change the permeability law
 
diff --git a/exercises/exercise-coupling-ff-pm/interface/README.md b/exercises/exercise-coupling-ff-pm/interface/README.md
index c13802cf..618a83ed 100644
--- a/exercises/exercise-coupling-ff-pm/interface/README.md
+++ b/exercises/exercise-coupling-ff-pm/interface/README.md
@@ -3,7 +3,7 @@
 In this part of the exercise, a simple coupled system consisting of a one-phase (1p) free flow and a one-phase flow in a porous medium is set up. Both subproblems have no-flow boundaries at the sides.
 Currently, a velocity profile is set on the upper free flow boundary, which leads to a vertical flow into the porous medium:
 
-![](../../extradoc/ex_ff-pm-vertical-flow.png)
+![](../../extradoc/exercise_ffpm_vertical_flow.png)
 
 Note that we neglect the influence of gravity and only solve for the stationary problem in this exercise.
 
@@ -167,7 +167,7 @@ values.setBeaversJoseph(1 - scvf.directionIndex());
 
 Recompile and rerun to check if the final result looks something like this:
 
-![](../../extradoc/ex_ff-pm-wave-interface.png)
+![](../../extradoc/exercise_ffpm_wave_interface.png)
 
 *Extra Points:*
 Rather than enforcing a pressure difference across the domain, an inflow velocity profile could be set.
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/README.md b/exercises/exercise-coupling-ff-pm/turbulence/README.md
index fc678829..41e428d3 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/README.md
+++ b/exercises/exercise-coupling-ff-pm/turbulence/README.md
@@ -77,7 +77,7 @@ In addition to the standard variables and parameters, you can now analyze turbul
 In paraview you may compare the magnitude of $`D`$ and $`D_\textrm{t}`$ to see where the transport is affected by turbulence.
 The result for the turbulent diffusivity should look like this:
 
-![](../../extradoc/ex_ff-pm-turb_diffusivity.png)
+![](../../extradoc/exercise_ffpm_turb_diffusivity.png)
 
 ### Task B: Use symmetry boundary conditions
 
diff --git a/exercises/exercise-fluidsystem/README.md b/exercises/exercise-fluidsystem/README.md
index b603ba49..f612b492 100644
--- a/exercises/exercise-fluidsystem/README.md
+++ b/exercises/exercise-fluidsystem/README.md
@@ -6,7 +6,7 @@ The aim of this exercise is to get familiar with the _DuMu<sup>x</sup>_ way of i
 
 The domain has a size of 60 m x 60 m and contains two low-permeable lenses. Initially, the domain is fully water saturated and the fictitious component is injected through the middle portion of the upper boundary by means of a Neumann boundary condition. The remaining parts of the upper and the entire lower boundary are Neumann no-flow while on the two lateral sides Dirichlet boundary conditions are applied (hydrostatic conditions for the pressure and zero saturation).
 
-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise-fluidsystem_setup.png" width="700">
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_fluidsystem_setup.png" width="700">
 
 
 ## Task 1: Getting familiar with the code
@@ -152,7 +152,7 @@ make exercise_fluidsystem_a
 
 The saturation distribution of the nonwetting phase, here S$`_{napl}`$ (the phase consisting of our fictitious incompressible component), at the final simulation time should look like this:
 
-![](../extradoc/exercise-fluidsystem_a_solution.png)
+![](../extradoc/exercise_fluidsystem_a_solution.png)
 
 ### Task 2.2: Compressible component
 
@@ -162,12 +162,12 @@ $`\displaystyle \rho_{MyComp} = \rho_{min} + \frac{ \rho_{max} - \rho_{min} }{ 1
 
 where $`p`$ is the pressure and $`\rho_{min} = 1440.0 \, kg/m^3`$, $`\rho_{max} = 1480.0 \, kg/m^3`$ and $`k = 5 \cdot 10^{-7} `$. Also, make sure the header is included in the `2pproperties.hh` file by uncommenting the corresponding line. Furthermore, the new component has to be set as a liquid phase in the fluid system. To do so, search for `TODO: dumux-course-task 2.2`. Comment out the corresponding line and uncomment the other. The density distribution of this phase (rho$`_{napl}`$) at the final simulation time should look like this:
 
-![](../extradoc/exercise-fluidsystem_a_solution2.png)
+![](../extradoc/exercise_fluidsystem_a_solution2.png)
 
 You can plot the density of the phase consisting of your compressible component by setting `PlotDensity` in `aparams.input` to `true` and starting the simulation again.
 Compare the gnuplot output to the following plot of the density function from above:
 
-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise-fluidsystem_a_densityfunction.png" width="500">
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_fluidsystem_a_densityfunction.png" width="500">
 
 ## Task 3: Implement a new fluid system - Part b
 
diff --git a/exercises/exercise-fractures/README.md b/exercises/exercise-fractures/README.md
index 76fdef25..4d3779c0 100644
--- a/exercises/exercise-fractures/README.md
+++ b/exercises/exercise-fractures/README.md
@@ -6,7 +6,7 @@ In this exercise we are going to use the _DuMuX multidomain_ framework, and in p
 
 We consider a domain of 100 x 100 m with a set of ten fractures. This geometry has been taken from [Flemisch et al. (2018)](https://www.sciencedirect.com/science/article/pii/S0309170817300143), but was slightly modified to better fit to the purposes of this exercise. Apart from one fracture extending up to the top boundary, all other fractures are immersed, meaning that the fracture tips lie within the domain (see image below).
 
-![](../extradoc/exercisefractures_setup.png)
+![](../extradoc/exercise_fractures_setup.png)
 
 In the initial setup of this exercise, we want to consider buoyancy-driven upwards migration of nitrogen (gas) in a fully water-saturated medium. Thus, as initial conditions we use hydrostatic pressure conditions and a zero nitrogen saturation. On the boundaries we apply Neumann no-flow boundary conditions on the left and right sides, while using Dirichlet boundary conditions on the top and the bottom of the domain. We set the initial conditions as boundary conditions on the Dirichlet segments, except for the middle part of the lower boundary ($`y = 0 \wedge x > 25 \wedge x < 75`$), where we set a non-zero nitrogen saturation (settable via the input file). Through this segment of the lower boundary, nitrogen can intrude the domain and flow upwards driven by buoyancy.
 
@@ -115,7 +115,7 @@ make exercise_fractures
 
 Take a look at the results by opening the files `matrix.pvd` and `fractures.pvd` with _Paraview_. In order to increase the visibility of the fracture solution, you might want to apply the tube filter to it (e.g. with a tube radius of 0.2). The result should look like this:
 
-![](../extradoc/exercisefractures_initsol.png)
+![](../extradoc/exercise_fractures_initsol.png)
 
 You can see how the fractures act as preferential flowpaths in the upwards movement of nitrogen due to their higher permeabilities. Additionally, you can observe comparatively high nitrogen saturations in the fracture tips as a result of the fractures acting as capillary traps due to the lower capillary pressures inside them. Consider turning them into capillary barriers, e.g. by setting __SpatialParams.VGAlpha = 1e-5__ in the __Fracture__ group in the input file (`params.input`). The nitrogen saturations in the fractures (especially in the fracture tips) should now be lower than in the surrounding matrix. Do not forget to reset __SpatialParams.VGAlpha = 1e-1__ in the input file after you are done.
 
@@ -125,7 +125,7 @@ In order for the influence of the fractures to be more visible in the resulting
 
 Furthermore, modify the function `dirichletAtPos(...)` in `matrixproblem.hh` such that an overpressure is added to the initial pressure and a non-zero saturation is applied on the right Dirichlet segment ($`x = 100 \wedge y > 75`$). For this you can use the private variables `boundaryOverPressure_` and `boundarySaturation_` which are stored in the matrix problem and are read from the input file. Compile and execute the program again. The resulting water pressure distribution should look like this:
 
-![](../extradoc/exercisefractures_a.png)
+![](../extradoc/exercise_fractures_a.png)
 
 ## Task B: Turn the fractures into barriers
 
@@ -169,7 +169,7 @@ To summarize: when using Neumann-type interior boundary conditions, flux continu
 
 This means we have to use Neumann-type interior boundary conditions here. Change this accordingly, compile and rerun the exercise again. You should now be able to see jumps in pressure in the matrix domain with an especially prominent one across the first vertical fracture (see image below).
 
-![](../extradoc/exercisefractures_b.png)
+![](../extradoc/exercise_fractures_b.png)
 
 ### Task C: Define both open fractures and barriers
 
diff --git a/exercises/exercise-mainfile/README.md b/exercises/exercise-mainfile/README.md
index e93bf2ce..6f5b9c88 100644
--- a/exercises/exercise-mainfile/README.md
+++ b/exercises/exercise-mainfile/README.md
@@ -15,7 +15,7 @@ To summarize, the problems differ in:
 
 The problem set-up for all three examples is always the same: It is a two dimensional problem and the domain is $1 m$ by $1 m$. It is a heterogeneous set-up with a lens in the middle of the domain which has a lower permeability ($1\cdot 10^{-12} m^2$ compared to  $1\cdot 10^{-10} m^2$ in the rest of the domain).
 
-<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise1_1p_setup.png" width="1000">
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/raw/master/exercises/extradoc/exercise_mainfile_1p_setup.png" width="1000">
 
 In the beginning, there is a uniform pressure of $1\cdot 10^5 Pa$ in the whole domain. On the top and the bottom border, dirichlet boundary conditions are set with a pressure of  $1\cdot 10^5 Pa$ on top and  $2 \cdot 10^5 Pa$ on the bottom. At the sides, there is no in- or outflow and there are no source terms.
 
diff --git a/exercises/exercise-model/README.md b/exercises/exercise-model/README.md
index a51c9851..119b1225 100644
--- a/exercises/exercise-model/README.md
+++ b/exercises/exercise-model/README.md
@@ -143,7 +143,7 @@ are preserved. The conductance acts as a threshold for the image intensity gradi
 __The final result should look like this:__
 <figure>
     <center>
-        <img src="../extradoc/exercisemodel_mri_denoise.gif" alt="denoising"/>
+        <img src="../extradoc/exercise_model_mri_denoise.gif" alt="denoising"/>
         <figcaption> <b> Fig.1 </b> - Denosing of MRI image using nonlinear diffusion model.</figcaption>
     </center>
 </figure>
diff --git a/exercises/extradoc/exercise2_properties.png b/exercises/extradoc/exercise2_properties.png
deleted file mode 100644
index 28c700ed18443d78995d890cb7fb085a84146ff7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27453
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
A#sB~S

diff --git a/exercises/extradoc/exercise1_nonisothermal.png b/exercises/extradoc/exercise_basic_nonisothermal.png
similarity index 100%
rename from exercises/extradoc/exercise1_nonisothermal.png
rename to exercises/extradoc/exercise_basic_nonisothermal.png
diff --git a/exercises/extradoc/exercise1_setup.png b/exercises/extradoc/exercise_basic_setup.png
similarity index 100%
rename from exercises/extradoc/exercise1_setup.png
rename to exercises/extradoc/exercise_basic_setup.png
diff --git a/exercises/extradoc/exercisebiomin_injectionFinal.png b/exercises/extradoc/exercise_biomin_injection_final.png
similarity index 100%
rename from exercises/extradoc/exercisebiomin_injectionFinal.png
rename to exercises/extradoc/exercise_biomin_injection_final.png
diff --git a/exercises/extradoc/exercisebiomin_porosityFinal.png b/exercises/extradoc/exercise_biomin_porosity_final.png
similarity index 100%
rename from exercises/extradoc/exercisebiomin_porosityFinal.png
rename to exercises/extradoc/exercise_biomin_porosity_final.png
diff --git a/exercises/extradoc/exercisebiomin_setup.png b/exercises/extradoc/exercise_biomin_setup.png
similarity index 100%
rename from exercises/extradoc/exercisebiomin_setup.png
rename to exercises/extradoc/exercise_biomin_setup.png
diff --git a/exercises/extradoc/ex_ff-pm-turb_diffusivity.png b/exercises/extradoc/exercise_ffpm_turb_diffusivity.png
similarity index 100%
rename from exercises/extradoc/ex_ff-pm-turb_diffusivity.png
rename to exercises/extradoc/exercise_ffpm_turb_diffusivity.png
diff --git a/exercises/extradoc/ex_ff-pm-vertical-flow.png b/exercises/extradoc/exercise_ffpm_vertical_flow.png
similarity index 100%
rename from exercises/extradoc/ex_ff-pm-vertical-flow.png
rename to exercises/extradoc/exercise_ffpm_vertical_flow.png
diff --git a/exercises/extradoc/ex_ff-pm-wave-interface.png b/exercises/extradoc/exercise_ffpm_wave_interface.png
similarity index 100%
rename from exercises/extradoc/ex_ff-pm-wave-interface.png
rename to exercises/extradoc/exercise_ffpm_wave_interface.png
diff --git a/exercises/extradoc/exercise-fluidsystem_a_densityfunction.png b/exercises/extradoc/exercise_fluidsystem_a_densityfunction.png
similarity index 100%
rename from exercises/extradoc/exercise-fluidsystem_a_densityfunction.png
rename to exercises/extradoc/exercise_fluidsystem_a_densityfunction.png
diff --git a/exercises/extradoc/exercise-fluidsystem_a_solution.png b/exercises/extradoc/exercise_fluidsystem_a_solution.png
similarity index 100%
rename from exercises/extradoc/exercise-fluidsystem_a_solution.png
rename to exercises/extradoc/exercise_fluidsystem_a_solution.png
diff --git a/exercises/extradoc/exercise-fluidsystem_a_solution2.png b/exercises/extradoc/exercise_fluidsystem_a_solution2.png
similarity index 100%
rename from exercises/extradoc/exercise-fluidsystem_a_solution2.png
rename to exercises/extradoc/exercise_fluidsystem_a_solution2.png
diff --git a/exercises/extradoc/exercise-fluidsystem_setup.png b/exercises/extradoc/exercise_fluidsystem_setup.png
similarity index 100%
rename from exercises/extradoc/exercise-fluidsystem_setup.png
rename to exercises/extradoc/exercise_fluidsystem_setup.png
diff --git a/exercises/extradoc/exercisefractures_a.png b/exercises/extradoc/exercise_fractures_a.png
similarity index 100%
rename from exercises/extradoc/exercisefractures_a.png
rename to exercises/extradoc/exercise_fractures_a.png
diff --git a/exercises/extradoc/exercisefractures_b.png b/exercises/extradoc/exercise_fractures_b.png
similarity index 100%
rename from exercises/extradoc/exercisefractures_b.png
rename to exercises/extradoc/exercise_fractures_b.png
diff --git a/exercises/extradoc/exercisefractures_initsol.png b/exercises/extradoc/exercise_fractures_initsol.png
similarity index 100%
rename from exercises/extradoc/exercisefractures_initsol.png
rename to exercises/extradoc/exercise_fractures_initsol.png
diff --git a/exercises/extradoc/exercisefractures_setup.png b/exercises/extradoc/exercise_fractures_setup.png
similarity index 100%
rename from exercises/extradoc/exercisefractures_setup.png
rename to exercises/extradoc/exercise_fractures_setup.png
diff --git a/exercises/extradoc/exercise1_1p_setup.png b/exercises/extradoc/exercise_mainfile_1p_setup.png
similarity index 100%
rename from exercises/extradoc/exercise1_1p_setup.png
rename to exercises/extradoc/exercise_mainfile_1p_setup.png
diff --git a/exercises/extradoc/exercisemodel_mri_denoise.gif b/exercises/extradoc/exercise_model_mri_denoise.gif
similarity index 100%
rename from exercises/extradoc/exercisemodel_mri_denoise.gif
rename to exercises/extradoc/exercise_model_mri_denoise.gif
diff --git a/slides/img/exercise1_setup.png b/slides/img/exercise_basic_setup.png
similarity index 100%
rename from slides/img/exercise1_setup.png
rename to slides/img/exercise_basic_setup.png
diff --git a/slides/img/exercisemodel_mri_denoise.gif b/slides/img/exercise_model_mri_denoise.gif
similarity index 100%
rename from slides/img/exercisemodel_mri_denoise.gif
rename to slides/img/exercise_model_mri_denoise.gif
diff --git a/slides/model.md b/slides/model.md
index 6d30e3ba..52ea56d3 100644
--- a/slides/model.md
+++ b/slides/model.md
@@ -259,7 +259,7 @@ i.e. `TTag::DiffusionModel`
 ## Exercise: Model
 Implementation of a **nonlinear diffusion model** for denoising of an MRI image
 
-<img src="img/exercisemodel_mri_denoise.gif" alt="denoising" width="300"/>
+<img src="img/exercise_model_mri_denoise.gif" alt="denoising" width="300"/>
 
 ## Tasks
 
diff --git a/slides/problem.md b/slides/problem.md
index f6320c50..275db908 100644
--- a/slides/problem.md
+++ b/slides/problem.md
@@ -6,7 +6,7 @@ title: DuMu^x^ applications
 
 ## Simulation goal
 
-<img style="float: right;" src="img/exercise1_setup.png">
+<img style="float: right;" src="img/exercise_basic_setup.png">
 
 ## Gas injection / immiscible two phase flow
 
-- 
GitLab