diff --git a/src/algebra/TinyMatrix.hpp b/src/algebra/TinyMatrix.hpp
index 888acb06889073c1a8ae8115486a6cc38e484ab5..df335536bc09929f848693c7dee6924585144a27 100644
--- a/src/algebra/TinyMatrix.hpp
+++ b/src/algebra/TinyMatrix.hpp
@@ -197,7 +197,7 @@ public:
   }
 
   PASTIS_INLINE
-  constexpr TinyMatrix& operator=(const ZeroType& z) noexcept
+  constexpr TinyMatrix& operator=(const ZeroType&) noexcept
   {
     static_assert(std::is_arithmetic<T>(),"Cannot assign 'zero' value for non-arithmetic types");
     for (size_t i=0; i<N*N; ++i) {
@@ -207,7 +207,7 @@ public:
   }
 
   PASTIS_INLINE
-  constexpr TinyMatrix& operator=(const IdentityType& I) noexcept
+  constexpr TinyMatrix& operator=(const IdentityType&) noexcept
   {
     static_assert(std::is_arithmetic<T>(),"Cannot assign 'identity' value for non-arithmetic types");
     for (size_t i=0; i<N; ++i) {
@@ -245,7 +245,7 @@ public:
   }
 
   PASTIS_INLINE
-  constexpr TinyMatrix(const ZeroType& z) noexcept
+  constexpr TinyMatrix(const ZeroType&) noexcept
   {
     static_assert(std::is_arithmetic<T>(),"Cannot construct from 'zero' value for non-arithmetic types");
     for (size_t i=0; i<N*N; ++i) {
@@ -254,7 +254,7 @@ public:
   }
 
   PASTIS_INLINE
-  constexpr TinyMatrix(const IdentityType& I) noexcept
+  constexpr TinyMatrix(const IdentityType&) noexcept
   {
     static_assert(std::is_arithmetic<T>(),"Cannot construct from 'identity' value for non-arithmetic types");
     for (size_t i=0; i<N; ++i) {
diff --git a/src/algebra/TinyVector.hpp b/src/algebra/TinyVector.hpp
index 988d5f0ea45e68c840199c03c626ffc61f119e90..162bcc2d2eb916cfd7ab48dcecd85d86ed1ce643 100644
--- a/src/algebra/TinyVector.hpp
+++ b/src/algebra/TinyVector.hpp
@@ -174,7 +174,7 @@ class TinyVector
   }
 
   PASTIS_INLINE
-  constexpr TinyVector& operator=(const ZeroType& z) noexcept
+  constexpr TinyVector& operator=(const ZeroType&) noexcept
   {
     static_assert(std::is_arithmetic<T>(),"Cannot assign 'zero' value for non-arithmetic types");
     for (size_t i=0; i<N; ++i) {
@@ -210,7 +210,7 @@ class TinyVector
   }
 
   PASTIS_INLINE
-  constexpr TinyVector(const ZeroType& z) noexcept
+  constexpr TinyVector(const ZeroType&) noexcept
   {
     static_assert(std::is_arithmetic<T>(),"Cannot construct from 'zero' value for non-arithmetic types");
     for (size_t i=0; i<N; ++i) {
diff --git a/src/main.cpp b/src/main.cpp
index fbbdfd31e136c4318c9463382a245a6b714e1770..2aee459b7de4503a5f61dfab71922e3cacb21716 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
 
           unknowns.initializeSod();
 
-          AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list);
+          AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
 
           using Rd = TinyVector<MeshType::dimension>;
 
@@ -206,7 +206,7 @@ int main(int argc, char *argv[])
 
           unknowns.initializeSod();
 
-          AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list);
+          AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
 
           const CellValue<const double>& Vj = mesh_data.Vj();
 
@@ -302,7 +302,7 @@ int main(int argc, char *argv[])
 
           unknowns.initializeSod();
 
-          AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list);
+          AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
 
           const CellValue<const double>& Vj = mesh_data.Vj();
 
diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index 3a2d5c6ecc290a6ae71c234dd0551c7b48a22dca..b49328d77129789bcbefbd32ed29b34d40ba37e3 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -97,6 +97,7 @@ void ErrorHandler::writeErrorMessage() const
   switch(__type) {
     case asked: {
       perr() << "\nremark: exit command explicitly called\n";
+      [[fallthrough]];
     }
     case normal: {
       perr() << '\n' << __filename << ':' << __lineNumber
@@ -577,6 +578,7 @@ GmshReader::__proceedData()
           case  4: {// hexahedra
             __hexahedra = Array<Hexahedron>(elementNumber[i]);
             __hexahedra_ref.resize(elementNumber[i]);
+            break;
           }
             // Ignored entities
           case 14: {// point
diff --git a/src/mesh/Mesh.hpp b/src/mesh/Mesh.hpp
index c21910e7a5bb24f08ec1106db08793912ee0bc7b..1c5924a12bdead13b68f773a16a8537a42234555 100644
--- a/src/mesh/Mesh.hpp
+++ b/src/mesh/Mesh.hpp
@@ -8,7 +8,7 @@
 
 struct IMesh
 {
-  virtual const size_t meshDimension() const = 0;
+  virtual size_t meshDimension() const = 0;
   ~IMesh() = default;
 };
 
@@ -28,7 +28,7 @@ private:
 
 public:
   PASTIS_INLINE
-  const size_t meshDimension() const
+  size_t meshDimension() const
   {
     return dimension;
   }
diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp
index 0dab302789a506c9dfcaabd2e5ed3f4d8706cc2f..a52a91c99d61c028fdc9f634c896d0ce06aa15dd 100644
--- a/src/mesh/MeshNodeBoundary.hpp
+++ b/src/mesh/MeshNodeBoundary.hpp
@@ -71,8 +71,7 @@ class MeshNodeBoundary
   }
 
   template <typename MeshType>
-  MeshNodeBoundary(const MeshType& mesh,
-                   const RefNodeList& ref_node_list)
+  MeshNodeBoundary(const MeshType&, const RefNodeList& ref_node_list)
       : m_node_list(ref_node_list.nodeList())
   {
     static_assert(dimension == MeshType::dimension);
@@ -172,7 +171,7 @@ template <typename MeshType>
 PASTIS_INLINE
 TinyVector<1,double>
 MeshFlatNodeBoundary<1>::
-_getNormal(const MeshType& mesh)
+_getNormal(const MeshType&)
 {
   static_assert(MeshType::dimension == 1);
   using R = TinyVector<1,double>;
diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp
index 07ae8902dae5d00177e4f856e3fc5348db48bfc5..4d09a8ede6c6774d2cd0415f7b477730a9ff3507 100644
--- a/src/scheme/AcousticSolver.hpp
+++ b/src/scheme/AcousticSolver.hpp
@@ -48,7 +48,7 @@ class AcousticSolver
   PASTIS_INLINE
   void computeAjr(const CellValue<const double>& rhocj,
                   const NodeValuePerCell<const Rd>& Cjr,
-                  const NodeValuePerCell<const double>& ljr,
+                  const NodeValuePerCell<const double>& /* ljr */,
                   const NodeValuePerCell<const Rd>& njr)
   {
     parallel_for(m_mesh.numberOfCells(), PASTIS_LAMBDA(const CellId& j) {
@@ -197,13 +197,10 @@ class AcousticSolver
   }
 
   PASTIS_INLINE
-  void computeExplicitFluxes(const NodeValue<const Rd>& xr,
-                             const CellValue<const Rd>& xj,
-                             const CellValue<const double>& rhoj,
+  void computeExplicitFluxes(const CellValue<const double>& rhoj,
                              const CellValue<const Rd>& uj,
                              const CellValue<const double>& pj,
                              const CellValue<const double>& cj,
-                             const CellValue<const double>& Vj,
                              const NodeValuePerCell<const Rd>& Cjr,
                              const NodeValuePerCell<const double>& ljr,
                              const NodeValuePerCell<const Rd>& njr) {
@@ -232,7 +229,6 @@ class AcousticSolver
 
  public:
   AcousticSolver(MeshData& mesh_data,
-                 UnknownsType& unknowns,
                  const std::vector<BoundaryConditionHandler>& bc_list)
       : m_mesh_data(mesh_data),
         m_mesh(mesh_data.mesh()),
@@ -271,7 +267,7 @@ class AcousticSolver
     return ReduceMin(m_Vj_over_cj);
   }
 
-  void computeNextStep(const double& t, const double& dt,
+  void computeNextStep(const double&, const double& dt,
                        UnknownsType& unknowns)
   {
     CellValue<double>& rhoj = unknowns.rhoj();
@@ -282,14 +278,12 @@ class AcousticSolver
     CellValue<double>& pj = unknowns.pj();
     CellValue<double>& cj = unknowns.cj();
 
-    const CellValue<const Rd>& xj = m_mesh_data.xj();
     const CellValue<const double>& Vj = m_mesh_data.Vj();
     const NodeValuePerCell<const Rd>& Cjr = m_mesh_data.Cjr();
     const NodeValuePerCell<const double>& ljr = m_mesh_data.ljr();
     const NodeValuePerCell<const Rd>& njr = m_mesh_data.njr();
-    const NodeValue<const Rd>& xr = m_mesh.xr();
 
-    computeExplicitFluxes(xr, xj, rhoj, uj, pj, cj, Vj, Cjr, ljr, njr);
+    computeExplicitFluxes(rhoj, uj, pj, cj, Cjr, ljr, njr);
 
     const NodeValuePerCell<Rd>& Fjr = m_Fjr;
     const NodeValue<const Rd> ur = m_ur;