diff --git a/MaterialLib/Fluid/GibbsFreeEnergy/DimensionLessGibbsFreeEnergyRegion1.h b/MaterialLib/Fluid/GibbsFreeEnergy/DimensionLessGibbsFreeEnergyRegion1.h
index 8191e0fa4aa9cff0b9397c803fd1bfa1b1af52c4..ef7049badde1ab5996564b0b4e9d6da8c7cac38f 100644
--- a/MaterialLib/Fluid/GibbsFreeEnergy/DimensionLessGibbsFreeEnergyRegion1.h
+++ b/MaterialLib/Fluid/GibbsFreeEnergy/DimensionLessGibbsFreeEnergyRegion1.h
@@ -30,11 +30,8 @@ namespace Fluid
  *  Coefficients \f$n_i\f$, \f$j_i\f$ and \f$l_i\f$ are given in three static
  *  arrays in the cpp file.
  */
-class DimensionLessGibbsFreeEnergyRegion1
+struct DimensionLessGibbsFreeEnergyRegion1
 {
-public:
-    DimensionLessGibbsFreeEnergyRegion1() = default;
-
     /**
      * Get the value
      * @param pi  Dimension less temperature
diff --git a/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationExponential.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationExponential.cpp
index f9bbe5a9f7fd6aee827d8b5ff0898e2f337d51d7..e45c7c7446279c304c19096496d75bc03970a925 100644
--- a/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationExponential.cpp
+++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationExponential.cpp
@@ -63,10 +63,12 @@ PropertyDataType SaturationExponential::dValue(
     ParameterLib::SpatialPosition const& /*pos*/, double const /*t*/,
     double const /*dt*/) const
 {
-    (void)primary_variable;
-    assert((primary_variable == Variable::capillary_pressure) &&
-           "SaturationExponential::dValue is implemented for derivatives with "
-           "respect to capillary pressure only.");
+    if (primary_variable != Variable::capillary_pressure)
+    {
+        OGS_FATAL(
+            "SaturationExponential::dValue is implemented for derivatives with "
+            "respect to capillary pressure only.");
+    }
 
     const double p_cap = std::get<double>(
         variable_array[static_cast<int>(Variable::capillary_pressure)]);
diff --git a/MaterialLib/MPL/Properties/Enthalpy/WaterVapourLatentHeatWithCriticalTemperature.cpp b/MaterialLib/MPL/Properties/Enthalpy/WaterVapourLatentHeatWithCriticalTemperature.cpp
index f2dfdff8a6664e41a68bfbb8da07716e136cbd01..e05b51c1159bf273736987e1b15e6d6fab56e8ed 100644
--- a/MaterialLib/MPL/Properties/Enthalpy/WaterVapourLatentHeatWithCriticalTemperature.cpp
+++ b/MaterialLib/MPL/Properties/Enthalpy/WaterVapourLatentHeatWithCriticalTemperature.cpp
@@ -61,7 +61,14 @@ PropertyDataType WaterVapourLatentHeatWithCriticalTemperature::value(
 
     // The formula gives the value in kJ/kg, and the return value is in the
     // units of J/kg.
-    return 1000.0 * std::transform_reduce(begin(c), end(c), begin(v), 0.);
+
+    return 1000.0 *
+#if __GNUC__ < 9 || (__GNUC__ == 9 && (__GNUC_MINOR__ < 3))
+           std::inner_product
+#else
+           std::transform_reduce
+#endif
+           (begin(c), end(c), begin(v), 0.);
 }
 
 PropertyDataType WaterVapourLatentHeatWithCriticalTemperature::dValue(
@@ -109,7 +116,13 @@ PropertyDataType WaterVapourLatentHeatWithCriticalTemperature::dValue(
 
     // The formula gives the value in kJ/kg/K, and the value is return in
     // the unit of J/kg/K.
-    return -1000.0 * std::transform_reduce(begin(dc), end(dc), begin(v), 0.) /
+    return -1000.0 *
+#if __GNUC__ < 9 || (__GNUC__ == 9 && (__GNUC_MINOR__ < 3))
+           std::inner_product
+#else
+           std::transform_reduce
+#endif
+           (begin(dc), end(dc), begin(v), 0.) /
            T_c;
 }
 
diff --git a/MathLib/LinAlg/Eigen/EigenMatrix.h b/MathLib/LinAlg/Eigen/EigenMatrix.h
index 387d4749dc070a46f51d8f81120f21b5018a5e8e..50aa596ef7bedc7c2eea607e535b86c328782252 100644
--- a/MathLib/LinAlg/Eigen/EigenMatrix.h
+++ b/MathLib/LinAlg/Eigen/EigenMatrix.h
@@ -34,12 +34,12 @@ public:
     // TODO The matrix constructor should take num_rows and num_cols as
     // arguments
     //      that is left for a later refactoring.
-    /**
-     * constructor
-     * @param n the number of rows (that is equal to the number of columns)
-     * @param n_nonzero_columns the number of non-zero columns used for preallocation
-     */
-    explicit EigenMatrix(IndexType n, IndexType n_nonzero_columns = 0)
+
+    /// @param n the number of rows (that is equal to the number of columns).
+    /// @param n_nonzero_columns the number of non-zero columns used for
+    ///        preallocation.
+    explicit EigenMatrix(IndexType const n,
+                         IndexType const n_nonzero_columns = 0)
         : mat_(n, n)
     {
         if (n_nonzero_columns > 0)
diff --git a/MeshLib/MeshQuality/ElementQualityMetric.cpp b/MeshLib/MeshQuality/ElementQualityMetric.cpp
index c6b5bc125ea053c5d36708f4e92b57d4f577c837..a690b67d2d31ec920f1c0cc82c4822a94e1c6752 100644
--- a/MeshLib/MeshQuality/ElementQualityMetric.cpp
+++ b/MeshLib/MeshQuality/ElementQualityMetric.cpp
@@ -31,7 +31,8 @@ BaseLib::Histogram<double> ElementQualityMetric::getHistogram(
     if (n_bins == 0)
     {
         n_bins = static_cast<std::size_t>(
-            1 + 3.3 * log(static_cast<float>((_mesh.getNumberOfElements()))));
+            1 +
+            3.3 * std::log(static_cast<float>((_mesh.getNumberOfElements()))));
     }
 
     return BaseLib::Histogram<double>(getElementQuality(), n_bins, true);
diff --git a/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTermFEM.h b/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTermFEM.h
index 584185f1a618dd3ad42252eb0525a69bd870c698..1bd0a44fb07ef79ff3ebde9b87797ad54afcfebb 100644
--- a/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTermFEM.h
+++ b/ProcessLib/BoundaryConditionAndSourceTerm/VolumetricSourceTermFEM.h
@@ -98,7 +98,7 @@ public:
                                                                       N))};
             auto const st_val = _volumetric_source_term(t, pos)[0];
 
-            _local_rhs.noalias() += st_val * w * N;
+            _local_rhs.noalias() += N.transpose() * st_val * w;
         }
         auto const indices = NumLib::getIndices(id, source_term_dof_table);
         b.add(indices, _local_rhs);
diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp
index 7500d63fa57d7c09a45f4dcb7f10503aa87bf3cf..23640a76b851e78304784e6efacbcf056f6ac0ec 100644
--- a/ProcessLib/TimeLoop.cpp
+++ b/ProcessLib/TimeLoop.cpp
@@ -413,7 +413,9 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
 
         if (!ppd.nonlinear_solver_status.error_norms_met)
         {
-            WARN("Time step will be rejected due to nonlinear solver diverged");
+            WARN(
+                "Time step will be rejected due to nonlinear solver "
+                "divergence.");
             all_process_steps_accepted = false;
         }