diff --git a/.clang-format b/.clang-format
index d1ee229f96f6015a3294f87431b4e1f64e5042a3..93106905c3432b92683e6cf88486a79ad4007d1b 100644
--- a/.clang-format
+++ b/.clang-format
@@ -13,23 +13,41 @@ AllowShortCaseLabelsOnASingleLine: 'false'
 AllowShortFunctionsOnASingleLine: Empty
 AllowShortIfStatementsOnASingleLine: 'false'
 AllowShortLoopsOnASingleLine: 'false'
+AlwaysBreakAfterDefinitionReturnType: TopLevel
 AlwaysBreakAfterReturnType: AllDefinitions
 AlwaysBreakBeforeMultilineStrings: 'false'
 AlwaysBreakTemplateDeclarations: 'Yes'
 BinPackArguments: 'true'
 BinPackParameters: 'false'
 BreakBeforeBinaryOperators: None
-BreakBeforeBraces: Mozilla
+BreakBeforeBraces: Custom
+BraceWrapping:
+#  AfterCaseLabel: false
+  AfterClass: true
+  AfterControlStatement: false
+  AfterEnum: true
+  AfterStruct: true
+  AfterFunction: true
+  AfterNamespace: true
+  AfterUnion: true
+  AfterExternBlock: true
+  BeforeCatch: true
+  BeforeElse: false
+  IndentBraces: false
+  SplitEmptyFunction: false
+
 BreakConstructorInitializers: BeforeColon
-ColumnLimit: '80'
+ColumnLimit: '120'
 CompactNamespaces: 'true'
 ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
 Cpp11BracedListStyle: 'true'
 FixNamespaceComments: 'true'
+IndentCaseLabels: false
 KeepEmptyLinesAtTheStartOfBlocks: 'false'
 Language: Cpp
 MaxEmptyLinesToKeep: '1'
 NamespaceIndentation: None
+PenaltyBreakBeforeFirstCallParameter: 10000
 PointerAlignment: Left
 ReflowComments: 'true'
 SortUsingDeclarations: 'true'
diff --git a/src/algebra/TinyMatrix.hpp b/src/algebra/TinyMatrix.hpp
index 2c504170186a17391a893533963ad1a8982b122b..4f4d6a97453be47214d656c075d62973a6f4adf1 100644
--- a/src/algebra/TinyMatrix.hpp
+++ b/src/algebra/TinyMatrix.hpp
@@ -226,8 +226,7 @@ class TinyMatrix
   constexpr TinyMatrix&
   operator=(const ZeroType&) noexcept
   {
-    static_assert(std::is_arithmetic<T>(),
-                  "Cannot assign 'zero' value for non-arithmetic types");
+    static_assert(std::is_arithmetic<T>(), "Cannot assign 'zero' value for non-arithmetic types");
     for (size_t i = 0; i < N * N; ++i) {
       m_values[i] = 0;
     }
@@ -238,8 +237,7 @@ class TinyMatrix
   constexpr TinyMatrix&
   operator=(const IdentityType&) noexcept
   {
-    static_assert(std::is_arithmetic<T>(),
-                  "Cannot assign 'identity' value for non-arithmetic types");
+    static_assert(std::is_arithmetic<T>(), "Cannot assign 'identity' value for non-arithmetic types");
     for (size_t i = 0; i < N; ++i) {
       for (size_t j = 0; j < N; ++j) {
         m_values[_index(i, j)] = (i == j) ? 1 : 0;
@@ -269,9 +267,8 @@ class TinyMatrix
   PUGS_INLINE
   constexpr TinyMatrix(const ZeroType&) noexcept
   {
-    static_assert(
-      std::is_arithmetic<T>(),
-      "Cannot construct from 'zero' value for non-arithmetic types");
+    static_assert(std::is_arithmetic<T>(), "Cannot construct from 'zero' value "
+                                           "for non-arithmetic types");
     for (size_t i = 0; i < N * N; ++i) {
       m_values[i] = 0;
     }
@@ -280,9 +277,8 @@ class TinyMatrix
   PUGS_INLINE
   constexpr TinyMatrix(const IdentityType&) noexcept
   {
-    static_assert(
-      std::is_arithmetic<T>(),
-      "Cannot construct from 'identity' value for non-arithmetic types");
+    static_assert(std::is_arithmetic<T>(), "Cannot construct from 'identity' "
+                                           "value for non-arithmetic types");
     for (size_t i = 0; i < N; ++i) {
       for (size_t j = 0; j < N; ++j) {
         m_values[_index(i, j)] = (i == j) ? 1 : 0;
@@ -317,11 +313,9 @@ template <size_t N, typename T>
 PUGS_INLINE constexpr T
 det(const TinyMatrix<N, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "determinent is not defined for non-arithmetic types");
-  static_assert(std::is_floating_point<T>::value,
-                "determinent for arbitrary dimension N is defined for floating "
-                "point types only");
+  static_assert(std::is_arithmetic<T>::value, "determinent is not defined for non-arithmetic types");
+  static_assert(std::is_floating_point<T>::value, "determinent for arbitrary dimension N is defined for floating "
+                                                  "point types only");
   TinyMatrix<N, T> M = A;
 
   TinyVector<N, size_t> index;
@@ -366,8 +360,7 @@ template <typename T>
 PUGS_INLINE constexpr T
 det(const TinyMatrix<1, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "determinent is not defined for non-arithmetic types");
+  static_assert(std::is_arithmetic<T>::value, "determinent is not defined for non-arithmetic types");
   return A(0, 0);
 }
 
@@ -375,8 +368,7 @@ template <typename T>
 PUGS_INLINE constexpr T
 det(const TinyMatrix<2, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "determinent is not defined for non-arithmetic types");
+  static_assert(std::is_arithmetic<T>::value, "determinent is not defined for non-arithmetic types");
   return A(0, 0) * A(1, 1) - A(1, 0) * A(0, 1);
 }
 
@@ -384,10 +376,8 @@ template <typename T>
 PUGS_INLINE constexpr T
 det(const TinyMatrix<3, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "determinent is not defined for non-arithmetic types");
-  return A(0, 0) * (A(1, 1) * A(2, 2) - A(2, 1) * A(1, 2)) -
-         A(1, 0) * (A(0, 1) * A(2, 2) - A(2, 1) * A(0, 2)) +
+  static_assert(std::is_arithmetic<T>::value, "determinent is not defined for non-arithmetic types");
+  return A(0, 0) * (A(1, 1) * A(2, 2) - A(2, 1) * A(1, 2)) - A(1, 0) * (A(0, 1) * A(2, 2) - A(2, 1) * A(0, 2)) +
          A(2, 0) * (A(0, 1) * A(1, 2) - A(1, 1) * A(0, 2));
 }
 
@@ -424,10 +414,8 @@ template <typename T>
 PUGS_INLINE constexpr TinyMatrix<1, T>
 inverse(const TinyMatrix<1, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "inverse is not defined for non-arithmetic types");
-  static_assert(std::is_floating_point<T>::value,
-                "inverse is defined for floating point types only");
+  static_assert(std::is_arithmetic<T>::value, "inverse is not defined for non-arithmetic types");
+  static_assert(std::is_floating_point<T>::value, "inverse is defined for floating point types only");
 
   TinyMatrix<1, T> A_1(1. / A(0, 0));
   return std::move(A_1);
@@ -437,8 +425,7 @@ template <size_t N, typename T>
 PUGS_INLINE constexpr T
 cofactor(const TinyMatrix<N, T>& A, const size_t& i, const size_t& j)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "cofactor is not defined for non-arithmetic types");
+  static_assert(std::is_arithmetic<T>::value, "cofactor is not defined for non-arithmetic types");
   const T sign = ((i + j) % 2) ? -1 : 1;
 
   return sign * det(getMinor(A, i, j));
@@ -448,10 +435,8 @@ template <typename T>
 PUGS_INLINE constexpr TinyMatrix<2, T>
 inverse(const TinyMatrix<2, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "inverse is not defined for non-arithmetic types");
-  static_assert(std::is_floating_point<T>::value,
-                "inverse is defined for floating point types only");
+  static_assert(std::is_arithmetic<T>::value, "inverse is not defined for non-arithmetic types");
+  static_assert(std::is_floating_point<T>::value, "inverse is defined for floating point types only");
 
   const T determinent     = det(A);
   const T inv_determinent = 1. / determinent;
@@ -464,17 +449,14 @@ template <typename T>
 PUGS_INLINE constexpr TinyMatrix<3, T>
 inverse(const TinyMatrix<3, T>& A)
 {
-  static_assert(std::is_arithmetic<T>::value,
-                "inverse is not defined for non-arithmetic types");
-  static_assert(std::is_floating_point<T>::value,
-                "inverse is defined for floating point types only");
+  static_assert(std::is_arithmetic<T>::value, "inverse is not defined for non-arithmetic types");
+  static_assert(std::is_floating_point<T>::value, "inverse is defined for floating point types only");
 
   const T determinent = det(A);
 
-  TinyMatrix<3, T> A_cofactors_T(
-    cofactor(A, 0, 0), cofactor(A, 1, 0), cofactor(A, 2, 0), cofactor(A, 0, 1),
-    cofactor(A, 1, 1), cofactor(A, 2, 1), cofactor(A, 0, 2), cofactor(A, 1, 2),
-    cofactor(A, 2, 2));
+  TinyMatrix<3, T> A_cofactors_T(cofactor(A, 0, 0), cofactor(A, 1, 0), cofactor(A, 2, 0), cofactor(A, 0, 1),
+                                 cofactor(A, 1, 1), cofactor(A, 2, 1), cofactor(A, 0, 2), cofactor(A, 1, 2),
+                                 cofactor(A, 2, 2));
 
   return std::move(A_cofactors_T *= 1. / determinent);
 }
diff --git a/src/algebra/TinyVector.hpp b/src/algebra/TinyVector.hpp
index f49c83de7815307eef8838960709c5d69176d4ba..ba4db3f02dca387ccdb435cd2634a2c4eb8016e3 100644
--- a/src/algebra/TinyVector.hpp
+++ b/src/algebra/TinyVector.hpp
@@ -202,8 +202,7 @@ class TinyVector
   constexpr TinyVector&
   operator=(const ZeroType&) noexcept
   {
-    static_assert(std::is_arithmetic<T>(),
-                  "Cannot assign 'zero' value for non-arithmetic types");
+    static_assert(std::is_arithmetic<T>(), "Cannot assign 'zero' value for non-arithmetic types");
     for (size_t i = 0; i < N; ++i) {
       m_values[i] = 0;
     }
@@ -231,9 +230,8 @@ class TinyVector
   PUGS_INLINE
   constexpr TinyVector(const ZeroType&) noexcept
   {
-    static_assert(
-      std::is_arithmetic<T>(),
-      "Cannot construct from 'zero' value for non-arithmetic types");
+    static_assert(std::is_arithmetic<T>(), "Cannot construct from 'zero' value "
+                                           "for non-arithmetic types");
     for (size_t i = 0; i < N; ++i) {
       m_values[i] = 0;
     }
@@ -253,10 +251,8 @@ template <size_t N, typename T>
 PUGS_INLINE constexpr T
 l2Norm(const TinyVector<N, T>& x)
 {
-  static_assert(std::is_arithmetic<T>(),
-                "Cannot compute L2 norm for non-arithmetic types");
-  static_assert(std::is_floating_point<T>::value,
-                "L2 norm is defined for floating point types only");
+  static_assert(std::is_arithmetic<T>(), "Cannot compute L2 norm for non-arithmetic types");
+  static_assert(std::is_floating_point<T>::value, "L2 norm is defined for floating point types only");
   return std::sqrt((x, x));
 }
 
@@ -265,9 +261,7 @@ template <typename T>
 PUGS_INLINE constexpr TinyVector<3, T>
 crossProduct(const TinyVector<3, T>& u, const TinyVector<3, T>& v)
 {
-  TinyVector<3, T> cross_product(u[1] * v[2] - u[2] * v[1],
-                                 u[2] * v[0] - u[0] * v[2],
-                                 u[0] * v[1] - u[1] * v[0]);
+  TinyVector<3, T> cross_product(u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[1] - u[1] * v[0]);
   return std::move(cross_product);
 }
 
diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp
index ed2be7c163de9ec37bff8205039001d1f0805e07..ae98aecdf50799e61aff1e9b607862acaa092f38 100644
--- a/src/language/PugsParser.cpp
+++ b/src/language/PugsParser.cpp
@@ -1,15 +1,15 @@
+#include <PugsOStream.hpp>
 #include <PugsParser.hpp>
-#include <iostream>
 
 #include <rang.hpp>
 
-#define TAO_PEGTL_NAMESPACE language
 #include <pegtl.hpp>
 #include <pegtl/analyze.hpp>
 
-namespace language {
-using namespace language;
+using namespace TAO_PEGTL_NAMESPACE;
 
+namespace language
+{
 // clang-format off
 
 struct comment
@@ -60,13 +60,21 @@ struct real
 
 struct REAL : seq< real, ignored >{};
 
-struct expression : sor< REAL, INTEGER > {};
+struct IDENTIFIER : seq <identifier, ignored> {};
+
+struct expression : sor< REAL, INTEGER , IDENTIFIER> {};
+
+struct EXPRESSION : seq< expression, ignored> {};
+
+struct binary_op
+    : seq< EXPRESSION , one< '+' >, EXPRESSION> {};
 
 struct semicol : one< ';' >{};
 struct SEMICOL : seq< semicol , ignored > {};
 
 struct instruction
-    : sor<seq< expression , SEMICOL>,
+    : sor<seq< expression , SEMICOL >,
+          seq< binary_op, SEMICOL >,
           SEMICOL>
 {};
 
@@ -75,36 +83,51 @@ struct grammar
 // clang-format on
 
 template <typename Rule>
-struct my_action : nothing<Rule>
-{};
+struct action : nothing<Rule>
+{
+};
+
+template <>
+struct action<integer>
+{
+  template <typename Input>
+  static void
+  apply(const Input& in, std::string& v)
+  {
+    v += std::string("I:") + in.string() + std::string(" ;\n");
+  }
+};
+
+template <>
+struct action<real>
+{
+  template <typename Input>
+  static void
+  apply(const Input& in, std::string& v)
+  {
+    v += std::string("R:") + in.string() + std::string(" ;\n");
+  }
+};
 
 template <>
-struct my_action<integer>
+struct action<identifier>
 {
   template <typename Input>
   static void
   apply(const Input& in, std::string& v)
   {
-    if (v.size() > 0) {
-      v += std::string(", I:") + in.string();
-    } else {
-      v = std::string("I:") + in.string();
-    }
+    v += std::string("S:") + in.string() + std::string(" ;\n");
   }
 };
 
 template <>
-struct my_action<real>
+struct action<binary_op>
 {
   template <typename Input>
   static void
   apply(const Input& in, std::string& v)
   {
-    if (v.size() > 0) {
-      v += std::string(", R:") + in.string();
-    } else {
-      v = std::string("R:") + in.string();
-    }
+    v += "binary_op(" + in.string() + std::string(") ;\n");
   }
 };
 
@@ -125,8 +148,7 @@ template <typename Rule>
 const std::string errors<Rule>::error_message = "parse error...";
 
 template <>
-const std::string errors<eolf>::error_message =
-  "parse error expecting expression";
+const std::string errors<eolf>::error_message = "parse error expecting expression";
 
 }   // namespace language
 
@@ -135,26 +157,28 @@ parser(const std::string& filename)
 {
   std::string name;
 
-  const size_t grammar_issues = language::analyze<language::grammar>();
+  const size_t grammar_issues = analyze<language::grammar>();
 
-  std::cout << "grammar_issues=" << grammar_issues << '\n';
-  language::read_input in(filename);
+  pout() << rang::fgB::yellow << "grammar_issues=" << rang::fg::reset << grammar_issues << '\n';
+
+  pout() << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename
+         << rang::style::reset << " ...\n\n";
+
+  read_input in(filename);
   try {
-    language::parse<language::grammar,
-                    language::my_action   //, language::errors
-                    >(in, name);
-  } catch (const language::parse_error& e) {
+    parse<language::grammar,
+          language::action   //, language::errors
+          >(in, name);
+  }
+  catch (const parse_error& e) {
     const auto p = e.positions.front();
-    std::cerr << rang::style::bold << p.source << ':' << p.line << ':'
-              << p.byte_in_line << ": " << rang::style::reset << rang::fgB::red
-              << "error: " << rang::fg::reset << rang::style::bold << e.what()
-              << rang::style::reset << '\n'
-              << in.line_at(p) << '\n'
-              << std::string(p.byte_in_line, ' ') << rang::fgB::yellow << '^'
-              << rang::fg::reset << std::endl;
+    perr() << rang::style::bold << p.source << ':' << p.line << ':' << p.byte_in_line << ": " << rang::style::reset
+           << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << e.what() << rang::style::reset
+           << '\n'
+           << in.line_at(p) << '\n'
+           << std::string(p.byte_in_line, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << std::endl;
     std::exit(1);
   }
 
-  std::cout << "Good bye, " << name << "!" << std::endl;
-  std::exit(0);
+  pout() << "Parsed:\n" << name << std::endl;
 }
diff --git a/src/main.cpp b/src/main.cpp
index 83d73a54d64437eb3a8fcb1cc561a0db0f9f52c2..a08658afed41b499c930f256cedf44d1592f4851 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -45,8 +45,7 @@ main(int argc, char* argv[])
   SynchronizerManager::create();
 
   if (filename != "") {
-    pout() << "Reading (gmsh) " << rang::style::underline << filename
-           << rang::style::reset << " ...\n";
+    pout() << "Reading (gmsh) " << rang::style::underline << filename << rang::style::reset << " ...\n";
     Timer gmsh_timer;
     gmsh_timer.reset();
     GmshReader gmsh_reader(filename);
@@ -55,396 +54,343 @@ main(int argc, char* argv[])
     std::shared_ptr<IMesh> p_mesh = gmsh_reader.mesh();
 
     switch (p_mesh->dimension()) {
-      case 1: {
-        std::vector<std::string> sym_boundary_name_list = {"XMIN", "XMAX"};
-        std::vector<std::shared_ptr<BoundaryConditionDescriptor>>
-          bc_descriptor_list;
-        for (const auto& sym_boundary_name : sym_boundary_name_list) {
-          std::shared_ptr<BoundaryDescriptor> boudary_descriptor =
-            std::shared_ptr<BoundaryDescriptor>(
-              new NamedBoundaryDescriptor(sym_boundary_name));
-          SymmetryBoundaryConditionDescriptor* sym_bc_descriptor =
-            new SymmetryBoundaryConditionDescriptor(boudary_descriptor);
-
-          bc_descriptor_list.push_back(
-            std::shared_ptr<BoundaryConditionDescriptor>(sym_bc_descriptor));
-        }
+    case 1: {
+      std::vector<std::string> sym_boundary_name_list = {"XMIN", "XMAX"};
+      std::vector<std::shared_ptr<BoundaryConditionDescriptor>> bc_descriptor_list;
+      for (const auto& sym_boundary_name : sym_boundary_name_list) {
+        std::shared_ptr<BoundaryDescriptor> boudary_descriptor =
+          std::shared_ptr<BoundaryDescriptor>(new NamedBoundaryDescriptor(sym_boundary_name));
+        SymmetryBoundaryConditionDescriptor* sym_bc_descriptor =
+          new SymmetryBoundaryConditionDescriptor(boudary_descriptor);
+
+        bc_descriptor_list.push_back(std::shared_ptr<BoundaryConditionDescriptor>(sym_bc_descriptor));
+      }
 
-        using ConnectivityType = Connectivity1D;
-        using MeshType         = Mesh<ConnectivityType>;
-        using MeshDataType     = MeshData<MeshType>;
-        using UnknownsType     = FiniteVolumesEulerUnknowns<MeshDataType>;
-
-        const MeshType& mesh =
-          dynamic_cast<const MeshType&>(*gmsh_reader.mesh());
-
-        Timer timer;
-        timer.reset();
-        MeshDataType mesh_data(mesh);
-
-        std::vector<BoundaryConditionHandler> bc_list;
-        {
-          for (const auto& bc_descriptor : bc_descriptor_list) {
-            switch (bc_descriptor->type()) {
-              case BoundaryConditionDescriptor::Type::symmetry: {
-                const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor =
-                  dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(
-                    *bc_descriptor);
-                for (size_t i_ref_node_list = 0;
-                     i_ref_node_list <
-                     mesh.connectivity().numberOfRefItemList<ItemType::node>();
-                     ++i_ref_node_list) {
-                  const RefNodeList& ref_node_list =
-                    mesh.connectivity().refItemList<ItemType::node>(
-                      i_ref_node_list);
-                  const RefId& ref = ref_node_list.refId();
-                  if (ref == sym_bc_descriptor.boundaryDescriptor()) {
-                    SymmetryBoundaryCondition<MeshType::Dimension>* sym_bc =
-                      new SymmetryBoundaryCondition<MeshType::Dimension>(
-                        MeshFlatNodeBoundary<MeshType::Dimension>(
-                          mesh, ref_node_list));
-                    std::shared_ptr<
-                      SymmetryBoundaryCondition<MeshType::Dimension>>
-                      bc(sym_bc);
-                    bc_list.push_back(BoundaryConditionHandler(bc));
-                  }
-                }
-                break;
-              }
-              default: {
-                perr() << "Unknown BCDescription\n";
-                std::exit(1);
+      using ConnectivityType = Connectivity1D;
+      using MeshType         = Mesh<ConnectivityType>;
+      using MeshDataType     = MeshData<MeshType>;
+      using UnknownsType     = FiniteVolumesEulerUnknowns<MeshDataType>;
+
+      const MeshType& mesh = dynamic_cast<const MeshType&>(*gmsh_reader.mesh());
+
+      Timer timer;
+      timer.reset();
+      MeshDataType mesh_data(mesh);
+
+      std::vector<BoundaryConditionHandler> bc_list;
+      {
+        for (const auto& bc_descriptor : bc_descriptor_list) {
+          switch (bc_descriptor->type()) {
+          case BoundaryConditionDescriptor::Type::symmetry: {
+            const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor =
+              dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(*bc_descriptor);
+            for (size_t i_ref_node_list = 0;
+                 i_ref_node_list < mesh.connectivity().numberOfRefItemList<ItemType::node>(); ++i_ref_node_list) {
+              const RefNodeList& ref_node_list = mesh.connectivity().refItemList<ItemType::node>(i_ref_node_list);
+              const RefId& ref                 = ref_node_list.refId();
+              if (ref == sym_bc_descriptor.boundaryDescriptor()) {
+                SymmetryBoundaryCondition<MeshType::Dimension>* sym_bc =
+                  new SymmetryBoundaryCondition<MeshType::Dimension>(
+                    MeshFlatNodeBoundary<MeshType::Dimension>(mesh, ref_node_list));
+                std::shared_ptr<SymmetryBoundaryCondition<MeshType::Dimension>> bc(sym_bc);
+                bc_list.push_back(BoundaryConditionHandler(bc));
               }
             }
+            break;
+          }
+          default: {
+            perr() << "Unknown BCDescription\n";
+            std::exit(1);
+          }
           }
         }
+      }
 
-        UnknownsType unknowns(mesh_data);
+      UnknownsType unknowns(mesh_data);
 
-        unknowns.initializeSod();
+      unknowns.initializeSod();
 
-        AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
+      AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
 
-        using Rd = TinyVector<MeshType::Dimension>;
+      using Rd = TinyVector<MeshType::Dimension>;
 
-        const CellValue<const double>& Vj = mesh_data.Vj();
+      const CellValue<const double>& Vj = mesh_data.Vj();
 
-        const double tmax = 0.2;
-        double t          = 0;
+      const double tmax = 0.2;
+      double t          = 0;
 
-        int itermax   = std::numeric_limits<int>::max();
-        int iteration = 0;
+      int itermax   = std::numeric_limits<int>::max();
+      int iteration = 0;
 
-        CellValue<double>& rhoj   = unknowns.rhoj();
-        CellValue<double>& ej     = unknowns.ej();
-        CellValue<double>& pj     = unknowns.pj();
-        CellValue<double>& gammaj = unknowns.gammaj();
-        CellValue<double>& cj     = unknowns.cj();
+      CellValue<double>& rhoj   = unknowns.rhoj();
+      CellValue<double>& ej     = unknowns.ej();
+      CellValue<double>& pj     = unknowns.pj();
+      CellValue<double>& gammaj = unknowns.gammaj();
+      CellValue<double>& cj     = unknowns.cj();
 
-        BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj);
+      BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj);
 
-        VTKWriter vtk_writer("mesh", 0.01);
+      VTKWriter vtk_writer("mesh", 0.01);
 
-        while ((t < tmax) and (iteration < itermax)) {
-          vtk_writer.write(
-            mesh,
-            {NamedItemValue{"density", rhoj},
-             NamedItemValue{"velocity", unknowns.uj()},
-             NamedItemValue{"coords", mesh.xr()},
-             NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
-             NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
-            t);
-          double dt = 0.4 * acoustic_solver.acoustic_dt(Vj, cj);
-          if (t + dt > tmax) {
-            dt = tmax - t;
-          }
-          acoustic_solver.computeNextStep(t, dt, unknowns);
+      while ((t < tmax) and (iteration < itermax)) {
+        vtk_writer.write(mesh,
+                         {NamedItemValue{"density", rhoj}, NamedItemValue{"velocity", unknowns.uj()},
+                          NamedItemValue{"coords", mesh.xr()},
+                          NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
+                          NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
+                         t);
+        double dt = 0.4 * acoustic_solver.acoustic_dt(Vj, cj);
+        if (t + dt > tmax) {
+          dt = tmax - t;
+        }
+        acoustic_solver.computeNextStep(t, dt, unknowns);
 
-          block_eos.updatePandCFromRhoE();
+        block_eos.updatePandCFromRhoE();
 
-          t += dt;
-          ++iteration;
-        }
-        vtk_writer.write(
-          mesh,
-          {NamedItemValue{"density", rhoj},
-           NamedItemValue{"velocity", unknowns.uj()},
-           NamedItemValue{"coords", mesh.xr()},
-           NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
-           NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
-          t, true);   // forces last output
-
-        pout() << "* " << rang::style::underline << "Final time"
-               << rang::style::reset << ":  " << rang::fgB::green << t
-               << rang::fg::reset << " (" << iteration << " iterations)\n";
-
-        method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
-
-        {   // gnuplot output for density
-          const CellValue<const Rd>& xj       = mesh_data.xj();
-          const CellValue<const double>& rhoj = unknowns.rhoj();
-          std::ofstream fout("rho");
-          for (CellId j = 0; j < mesh.numberOfCells(); ++j) {
-            fout << xj[j][0] << ' ' << rhoj[j] << '\n';
-          }
+        t += dt;
+        ++iteration;
+      }
+      vtk_writer.write(mesh,
+                       {NamedItemValue{"density", rhoj}, NamedItemValue{"velocity", unknowns.uj()},
+                        NamedItemValue{"coords", mesh.xr()},
+                        NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
+                        NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
+                       t, true);   // forces last output
+
+      pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green << t
+             << rang::fg::reset << " (" << iteration << " iterations)\n";
+
+      method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
+
+      {   // gnuplot output for density
+        const CellValue<const Rd>& xj       = mesh_data.xj();
+        const CellValue<const double>& rhoj = unknowns.rhoj();
+        std::ofstream fout("rho");
+        for (CellId j = 0; j < mesh.numberOfCells(); ++j) {
+          fout << xj[j][0] << ' ' << rhoj[j] << '\n';
         }
+      }
 
-        break;
+      break;
+    }
+    case 2: {
+      // test case boundary condition description
+      std::vector<std::string> sym_boundary_name_list = {"XMIN", "XMAX", "YMIN", "YMAX"};
+      std::vector<std::shared_ptr<BoundaryConditionDescriptor>> bc_descriptor_list;
+      for (const auto& sym_boundary_name : sym_boundary_name_list) {
+        std::shared_ptr<BoundaryDescriptor> boudary_descriptor =
+          std::shared_ptr<BoundaryDescriptor>(new NamedBoundaryDescriptor(sym_boundary_name));
+        SymmetryBoundaryConditionDescriptor* sym_bc_descriptor =
+          new SymmetryBoundaryConditionDescriptor(boudary_descriptor);
+
+        bc_descriptor_list.push_back(std::shared_ptr<BoundaryConditionDescriptor>(sym_bc_descriptor));
       }
-      case 2: {
-        // test case boundary condition description
-        std::vector<std::string> sym_boundary_name_list = {"XMIN", "XMAX",
-                                                           "YMIN", "YMAX"};
-        std::vector<std::shared_ptr<BoundaryConditionDescriptor>>
-          bc_descriptor_list;
-        for (const auto& sym_boundary_name : sym_boundary_name_list) {
-          std::shared_ptr<BoundaryDescriptor> boudary_descriptor =
-            std::shared_ptr<BoundaryDescriptor>(
-              new NamedBoundaryDescriptor(sym_boundary_name));
-          SymmetryBoundaryConditionDescriptor* sym_bc_descriptor =
-            new SymmetryBoundaryConditionDescriptor(boudary_descriptor);
-
-          bc_descriptor_list.push_back(
-            std::shared_ptr<BoundaryConditionDescriptor>(sym_bc_descriptor));
-        }
 
-        using ConnectivityType = Connectivity2D;
-        using MeshType         = Mesh<ConnectivityType>;
-        using MeshDataType     = MeshData<MeshType>;
-        using UnknownsType     = FiniteVolumesEulerUnknowns<MeshDataType>;
-
-        const MeshType& mesh =
-          dynamic_cast<const MeshType&>(*gmsh_reader.mesh());
-
-        Timer timer;
-        timer.reset();
-        MeshDataType mesh_data(mesh);
-
-        std::vector<BoundaryConditionHandler> bc_list;
-        {
-          for (const auto& bc_descriptor : bc_descriptor_list) {
-            switch (bc_descriptor->type()) {
-              case BoundaryConditionDescriptor::Type::symmetry: {
-                const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor =
-                  dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(
-                    *bc_descriptor);
-                for (size_t i_ref_face_list = 0;
-                     i_ref_face_list <
-                     mesh.connectivity().numberOfRefItemList<ItemType::face>();
-                     ++i_ref_face_list) {
-                  const RefFaceList& ref_face_list =
-                    mesh.connectivity().refItemList<ItemType::face>(
-                      i_ref_face_list);
-                  const RefId& ref = ref_face_list.refId();
-                  if (ref == sym_bc_descriptor.boundaryDescriptor()) {
-                    SymmetryBoundaryCondition<MeshType::Dimension>* sym_bc =
-                      new SymmetryBoundaryCondition<MeshType::Dimension>(
-                        MeshFlatNodeBoundary<MeshType::Dimension>(
-                          mesh, ref_face_list));
-                    std::shared_ptr<
-                      SymmetryBoundaryCondition<MeshType::Dimension>>
-                      bc(sym_bc);
-                    bc_list.push_back(BoundaryConditionHandler(bc));
-                  }
-                }
-                break;
-              }
-              default: {
-                perr() << "Unknown BCDescription\n";
-                std::exit(1);
+      using ConnectivityType = Connectivity2D;
+      using MeshType         = Mesh<ConnectivityType>;
+      using MeshDataType     = MeshData<MeshType>;
+      using UnknownsType     = FiniteVolumesEulerUnknowns<MeshDataType>;
+
+      const MeshType& mesh = dynamic_cast<const MeshType&>(*gmsh_reader.mesh());
+
+      Timer timer;
+      timer.reset();
+      MeshDataType mesh_data(mesh);
+
+      std::vector<BoundaryConditionHandler> bc_list;
+      {
+        for (const auto& bc_descriptor : bc_descriptor_list) {
+          switch (bc_descriptor->type()) {
+          case BoundaryConditionDescriptor::Type::symmetry: {
+            const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor =
+              dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(*bc_descriptor);
+            for (size_t i_ref_face_list = 0;
+                 i_ref_face_list < mesh.connectivity().numberOfRefItemList<ItemType::face>(); ++i_ref_face_list) {
+              const RefFaceList& ref_face_list = mesh.connectivity().refItemList<ItemType::face>(i_ref_face_list);
+              const RefId& ref                 = ref_face_list.refId();
+              if (ref == sym_bc_descriptor.boundaryDescriptor()) {
+                SymmetryBoundaryCondition<MeshType::Dimension>* sym_bc =
+                  new SymmetryBoundaryCondition<MeshType::Dimension>(
+                    MeshFlatNodeBoundary<MeshType::Dimension>(mesh, ref_face_list));
+                std::shared_ptr<SymmetryBoundaryCondition<MeshType::Dimension>> bc(sym_bc);
+                bc_list.push_back(BoundaryConditionHandler(bc));
               }
             }
+            break;
+          }
+          default: {
+            perr() << "Unknown BCDescription\n";
+            std::exit(1);
+          }
           }
         }
+      }
 
-        UnknownsType unknowns(mesh_data);
+      UnknownsType unknowns(mesh_data);
 
-        unknowns.initializeSod();
+      unknowns.initializeSod();
 
-        AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
+      AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
 
-        const CellValue<const double>& Vj = mesh_data.Vj();
+      const CellValue<const double>& Vj = mesh_data.Vj();
 
-        const double tmax = 0.2;
-        double t          = 0;
+      const double tmax = 0.2;
+      double t          = 0;
 
-        int itermax   = std::numeric_limits<int>::max();
-        int iteration = 0;
+      int itermax   = std::numeric_limits<int>::max();
+      int iteration = 0;
 
-        CellValue<double>& rhoj   = unknowns.rhoj();
-        CellValue<double>& ej     = unknowns.ej();
-        CellValue<double>& pj     = unknowns.pj();
-        CellValue<double>& gammaj = unknowns.gammaj();
-        CellValue<double>& cj     = unknowns.cj();
+      CellValue<double>& rhoj   = unknowns.rhoj();
+      CellValue<double>& ej     = unknowns.ej();
+      CellValue<double>& pj     = unknowns.pj();
+      CellValue<double>& gammaj = unknowns.gammaj();
+      CellValue<double>& cj     = unknowns.cj();
 
-        BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj);
+      BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj);
 
-        VTKWriter vtk_writer("mesh", 0.01);
+      VTKWriter vtk_writer("mesh", 0.01);
 
-        while ((t < tmax) and (iteration < itermax)) {
-          vtk_writer.write(
-            mesh,
-            {NamedItemValue{"density", rhoj},
-             NamedItemValue{"velocity", unknowns.uj()},
-             NamedItemValue{"coords", mesh.xr()},
-             NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
-             NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
-            t);
-          double dt = 0.4 * acoustic_solver.acoustic_dt(Vj, cj);
-          if (t + dt > tmax) {
-            dt = tmax - t;
-          }
-          acoustic_solver.computeNextStep(t, dt, unknowns);
+      while ((t < tmax) and (iteration < itermax)) {
+        vtk_writer.write(mesh,
+                         {NamedItemValue{"density", rhoj}, NamedItemValue{"velocity", unknowns.uj()},
+                          NamedItemValue{"coords", mesh.xr()},
+                          NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
+                          NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
+                         t);
+        double dt = 0.4 * acoustic_solver.acoustic_dt(Vj, cj);
+        if (t + dt > tmax) {
+          dt = tmax - t;
+        }
+        acoustic_solver.computeNextStep(t, dt, unknowns);
 
-          block_eos.updatePandCFromRhoE();
+        block_eos.updatePandCFromRhoE();
 
-          t += dt;
-          ++iteration;
-        }
-        vtk_writer.write(
-          mesh,
-          {NamedItemValue{"density", rhoj},
-           NamedItemValue{"velocity", unknowns.uj()},
-           NamedItemValue{"coords", mesh.xr()},
-           NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
-           NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
-          t, true);   // forces last output
-
-        pout() << "* " << rang::style::underline << "Final time"
-               << rang::style::reset << ":  " << rang::fgB::green << t
-               << rang::fg::reset << " (" << iteration << " iterations)\n";
-
-        method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
-        break;
+        t += dt;
+        ++iteration;
+      }
+      vtk_writer.write(mesh,
+                       {NamedItemValue{"density", rhoj}, NamedItemValue{"velocity", unknowns.uj()},
+                        NamedItemValue{"coords", mesh.xr()},
+                        NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
+                        NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
+                       t, true);   // forces last output
+
+      pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green << t
+             << rang::fg::reset << " (" << iteration << " iterations)\n";
+
+      method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
+      break;
+    }
+    case 3: {
+      std::vector<std::string> sym_boundary_name_list = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
+      std::vector<std::shared_ptr<BoundaryConditionDescriptor>> bc_descriptor_list;
+      for (const auto& sym_boundary_name : sym_boundary_name_list) {
+        std::shared_ptr<BoundaryDescriptor> boudary_descriptor =
+          std::shared_ptr<BoundaryDescriptor>(new NamedBoundaryDescriptor(sym_boundary_name));
+        SymmetryBoundaryConditionDescriptor* sym_bc_descriptor =
+          new SymmetryBoundaryConditionDescriptor(boudary_descriptor);
+
+        bc_descriptor_list.push_back(std::shared_ptr<BoundaryConditionDescriptor>(sym_bc_descriptor));
       }
-      case 3: {
-        std::vector<std::string> sym_boundary_name_list = {
-          "XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
-        std::vector<std::shared_ptr<BoundaryConditionDescriptor>>
-          bc_descriptor_list;
-        for (const auto& sym_boundary_name : sym_boundary_name_list) {
-          std::shared_ptr<BoundaryDescriptor> boudary_descriptor =
-            std::shared_ptr<BoundaryDescriptor>(
-              new NamedBoundaryDescriptor(sym_boundary_name));
-          SymmetryBoundaryConditionDescriptor* sym_bc_descriptor =
-            new SymmetryBoundaryConditionDescriptor(boudary_descriptor);
-
-          bc_descriptor_list.push_back(
-            std::shared_ptr<BoundaryConditionDescriptor>(sym_bc_descriptor));
-        }
 
-        using ConnectivityType = Connectivity3D;
-        using MeshType         = Mesh<ConnectivityType>;
-        using MeshDataType     = MeshData<MeshType>;
-        using UnknownsType     = FiniteVolumesEulerUnknowns<MeshDataType>;
-
-        const MeshType& mesh =
-          dynamic_cast<const MeshType&>(*gmsh_reader.mesh());
-
-        Timer timer;
-        timer.reset();
-        MeshDataType mesh_data(mesh);
-
-        std::vector<BoundaryConditionHandler> bc_list;
-        {
-          for (const auto& bc_descriptor : bc_descriptor_list) {
-            switch (bc_descriptor->type()) {
-              case BoundaryConditionDescriptor::Type::symmetry: {
-                const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor =
-                  dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(
-                    *bc_descriptor);
-                for (size_t i_ref_face_list = 0;
-                     i_ref_face_list <
-                     mesh.connectivity().numberOfRefItemList<ItemType::face>();
-                     ++i_ref_face_list) {
-                  const RefFaceList& ref_face_list =
-                    mesh.connectivity().refItemList<ItemType::face>(
-                      i_ref_face_list);
-                  const RefId& ref = ref_face_list.refId();
-                  if (ref == sym_bc_descriptor.boundaryDescriptor()) {
-                    SymmetryBoundaryCondition<MeshType::Dimension>* sym_bc =
-                      new SymmetryBoundaryCondition<MeshType::Dimension>(
-                        MeshFlatNodeBoundary<MeshType::Dimension>(
-                          mesh, ref_face_list));
-                    std::shared_ptr<
-                      SymmetryBoundaryCondition<MeshType::Dimension>>
-                      bc(sym_bc);
-                    bc_list.push_back(BoundaryConditionHandler(bc));
-                  }
-                }
-                break;
-              }
-              default: {
-                perr() << "Unknown BCDescription\n";
-                std::exit(1);
+      using ConnectivityType = Connectivity3D;
+      using MeshType         = Mesh<ConnectivityType>;
+      using MeshDataType     = MeshData<MeshType>;
+      using UnknownsType     = FiniteVolumesEulerUnknowns<MeshDataType>;
+
+      const MeshType& mesh = dynamic_cast<const MeshType&>(*gmsh_reader.mesh());
+
+      Timer timer;
+      timer.reset();
+      MeshDataType mesh_data(mesh);
+
+      std::vector<BoundaryConditionHandler> bc_list;
+      {
+        for (const auto& bc_descriptor : bc_descriptor_list) {
+          switch (bc_descriptor->type()) {
+          case BoundaryConditionDescriptor::Type::symmetry: {
+            const SymmetryBoundaryConditionDescriptor& sym_bc_descriptor =
+              dynamic_cast<const SymmetryBoundaryConditionDescriptor&>(*bc_descriptor);
+            for (size_t i_ref_face_list = 0;
+                 i_ref_face_list < mesh.connectivity().numberOfRefItemList<ItemType::face>(); ++i_ref_face_list) {
+              const RefFaceList& ref_face_list = mesh.connectivity().refItemList<ItemType::face>(i_ref_face_list);
+              const RefId& ref                 = ref_face_list.refId();
+              if (ref == sym_bc_descriptor.boundaryDescriptor()) {
+                SymmetryBoundaryCondition<MeshType::Dimension>* sym_bc =
+                  new SymmetryBoundaryCondition<MeshType::Dimension>(
+                    MeshFlatNodeBoundary<MeshType::Dimension>(mesh, ref_face_list));
+                std::shared_ptr<SymmetryBoundaryCondition<MeshType::Dimension>> bc(sym_bc);
+                bc_list.push_back(BoundaryConditionHandler(bc));
               }
             }
+            break;
+          }
+          default: {
+            perr() << "Unknown BCDescription\n";
+            std::exit(1);
+          }
           }
         }
+      }
 
-        UnknownsType unknowns(mesh_data);
-
-        unknowns.initializeSod();
+      UnknownsType unknowns(mesh_data);
 
-        AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
+      unknowns.initializeSod();
 
-        const CellValue<const double>& Vj = mesh_data.Vj();
+      AcousticSolver<MeshDataType> acoustic_solver(mesh_data, bc_list);
 
-        const double tmax = 0.2;
-        double t          = 0;
+      const CellValue<const double>& Vj = mesh_data.Vj();
 
-        int itermax   = std::numeric_limits<int>::max();
-        int iteration = 0;
+      const double tmax = 0.2;
+      double t          = 0;
 
-        CellValue<double>& rhoj   = unknowns.rhoj();
-        CellValue<double>& ej     = unknowns.ej();
-        CellValue<double>& pj     = unknowns.pj();
-        CellValue<double>& gammaj = unknowns.gammaj();
-        CellValue<double>& cj     = unknowns.cj();
+      int itermax   = std::numeric_limits<int>::max();
+      int iteration = 0;
 
-        BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj);
+      CellValue<double>& rhoj   = unknowns.rhoj();
+      CellValue<double>& ej     = unknowns.ej();
+      CellValue<double>& pj     = unknowns.pj();
+      CellValue<double>& gammaj = unknowns.gammaj();
+      CellValue<double>& cj     = unknowns.cj();
 
-        VTKWriter vtk_writer("mesh", 0.01);
+      BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj);
 
-        while ((t < tmax) and (iteration < itermax)) {
-          vtk_writer.write(
-            mesh,
-            {NamedItemValue{"density", rhoj},
-             NamedItemValue{"velocity", unknowns.uj()},
-             NamedItemValue{"coords", mesh.xr()},
-             NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
-             NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
-            t);
-          double dt = 0.4 * acoustic_solver.acoustic_dt(Vj, cj);
-          if (t + dt > tmax) {
-            dt = tmax - t;
-          }
-          acoustic_solver.computeNextStep(t, dt, unknowns);
-          block_eos.updatePandCFromRhoE();
+      VTKWriter vtk_writer("mesh", 0.01);
 
-          t += dt;
-          ++iteration;
+      while ((t < tmax) and (iteration < itermax)) {
+        vtk_writer.write(mesh,
+                         {NamedItemValue{"density", rhoj}, NamedItemValue{"velocity", unknowns.uj()},
+                          NamedItemValue{"coords", mesh.xr()},
+                          NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
+                          NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
+                         t);
+        double dt = 0.4 * acoustic_solver.acoustic_dt(Vj, cj);
+        if (t + dt > tmax) {
+          dt = tmax - t;
         }
-        vtk_writer.write(
-          mesh,
-          {NamedItemValue{"density", rhoj},
-           NamedItemValue{"velocity", unknowns.uj()},
-           NamedItemValue{"coords", mesh.xr()},
-           NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
-           NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
-          t, true);   // forces last output
-
-        pout() << "* " << rang::style::underline << "Final time"
-               << rang::style::reset << ":  " << rang::fgB::green << t
-               << rang::fg::reset << " (" << iteration << " iterations)\n";
-
-        method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
-        break;
+        acoustic_solver.computeNextStep(t, dt, unknowns);
+        block_eos.updatePandCFromRhoE();
+
+        t += dt;
+        ++iteration;
       }
+      vtk_writer.write(mesh,
+                       {NamedItemValue{"density", rhoj}, NamedItemValue{"velocity", unknowns.uj()},
+                        NamedItemValue{"coords", mesh.xr()},
+                        NamedItemValue{"cell_owner", mesh.connectivity().cellOwner()},
+                        NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
+                       t, true);   // forces last output
+
+      pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green << t
+             << rang::fg::reset << " (" << iteration << " iterations)\n";
+
+      method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
+      break;
+    }
     }
 
-    pout() << "* " << rang::fgB::red << "Could not be uglier!"
-           << rang::fg::reset << " (" << __FILE__ << ':' << __LINE__ << ")\n";
+    pout() << "* " << rang::fgB::red << "Could not be uglier!" << rang::fg::reset << " (" << __FILE__ << ':' << __LINE__
+           << ")\n";
 
   } else {
     perr() << "Connectivity1D defined by number of nodes no more implemented\n";
@@ -461,10 +407,8 @@ main(int argc, char* argv[])
   }
 
   for (const auto& method_cost : method_cost_map) {
-    pout() << "* [" << rang::fgB::cyan << std::setw(size) << std::left
-           << method_cost.first << rang::fg::reset
-           << "] Execution time: " << rang::style::bold << method_cost.second
-           << rang::style::reset << '\n';
+    pout() << "* [" << rang::fgB::cyan << std::setw(size) << std::left << method_cost.first << rang::fg::reset
+           << "] Execution time: " << rang::style::bold << method_cost.second << rang::style::reset << '\n';
   }
 
   return 0;
diff --git a/src/mesh/CellType.hpp b/src/mesh/CellType.hpp
index 875ecd6bfc83ed55ad116319e4d18adb3e74a156..c0949ffbe27d6017b0c46a7e21cea188ea6c4abf 100644
--- a/src/mesh/CellType.hpp
+++ b/src/mesh/CellType.hpp
@@ -22,22 +22,22 @@ std::string_view
 name(const CellType& cell_type)
 {
   switch (cell_type) {
-    case CellType::Line:
-      return "line";
-    case CellType::Triangle:
-      return "triangle";
-    case CellType::Quadrangle:
-      return "quadrangle";
-    case CellType::Tetrahedron:
-      return "tetrahedron";
-    case CellType::Pyramid:
-      return "pyramid";
-    case CellType::Prism:
-      return "prism";
-    case CellType::Hexahedron:
-      return "hexahedron";
-    default:
-      return "unknown cell type";
+  case CellType::Line:
+    return "line";
+  case CellType::Triangle:
+    return "triangle";
+  case CellType::Quadrangle:
+    return "quadrangle";
+  case CellType::Tetrahedron:
+    return "tetrahedron";
+  case CellType::Pyramid:
+    return "pyramid";
+  case CellType::Prism:
+    return "prism";
+  case CellType::Hexahedron:
+    return "hexahedron";
+  default:
+    return "unknown cell type";
   }
 }
 
diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp
index 946933e8fc54720448e680bfb6455777edc9d597..632726a16c1993d986758562fcdf5f7c44ec832c 100644
--- a/src/mesh/Connectivity.cpp
+++ b/src/mesh/Connectivity.cpp
@@ -13,28 +13,21 @@ template <size_t Dimension>
 void
 Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
 {
-  Assert(descriptor.cell_to_node_vector.size() ==
-         descriptor.cell_type_vector.size());
-  Assert(descriptor.cell_number_vector.size() ==
-         descriptor.cell_type_vector.size());
+  Assert(descriptor.cell_to_node_vector.size() == descriptor.cell_type_vector.size());
+  Assert(descriptor.cell_number_vector.size() == descriptor.cell_type_vector.size());
   if constexpr (Dimension > 1) {
-    Assert(descriptor.cell_to_face_vector.size() ==
-           descriptor.cell_type_vector.size());
-    Assert(descriptor.face_to_node_vector.size() ==
-           descriptor.face_number_vector.size());
-    Assert(descriptor.face_owner_vector.size() ==
-           descriptor.face_number_vector.size());
+    Assert(descriptor.cell_to_face_vector.size() == descriptor.cell_type_vector.size());
+    Assert(descriptor.face_to_node_vector.size() == descriptor.face_number_vector.size());
+    Assert(descriptor.face_owner_vector.size() == descriptor.face_number_vector.size());
   }
 
-  auto& cell_to_node_matrix =
-    m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::node)];
-  cell_to_node_matrix = descriptor.cell_to_node_vector;
+  auto& cell_to_node_matrix = m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::node)];
+  cell_to_node_matrix       = descriptor.cell_to_node_vector;
 
   {
     WeakCellValue<CellType> cell_type(*this);
-    parallel_for(this->numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      cell_type[j] = descriptor.cell_type_vector[j];
-    });
+    parallel_for(
+      this->numberOfCells(), PUGS_LAMBDA(const CellId& j) { cell_type[j] = descriptor.cell_type_vector[j]; });
     m_cell_type = cell_type;
   }
 
@@ -53,9 +46,8 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
   {
     WeakCellValue<int> cell_global_index(*this);
     int first_index = 0;
-    parallel_for(this->numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      cell_global_index[j] = first_index + j;
-    });
+    parallel_for(
+      this->numberOfCells(), PUGS_LAMBDA(const CellId& j) { cell_global_index[j] = first_index + j; });
     m_cell_global_index = cell_global_index;
   }
 
@@ -68,9 +60,8 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
   {
     const int rank = parallel::rank();
     WeakCellValue<bool> cell_is_owned(*this);
-    parallel_for(this->numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      cell_is_owned[j] = (m_cell_owner[j] == rank);
-    });
+    parallel_for(
+      this->numberOfCells(), PUGS_LAMBDA(const CellId& j) { cell_is_owned[j] = (m_cell_owner[j] == rank); });
     m_cell_is_owned = cell_is_owned;
   }
 
@@ -83,30 +74,23 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
   {
     const int rank = parallel::rank();
     WeakNodeValue<bool> node_is_owned(*this);
-    parallel_for(this->numberOfNodes(), PUGS_LAMBDA(const NodeId& r) {
-      node_is_owned[r] = (m_node_owner[r] == rank);
-    });
+    parallel_for(
+      this->numberOfNodes(), PUGS_LAMBDA(const NodeId& r) { node_is_owned[r] = (m_node_owner[r] == rank); });
     m_node_is_owned = node_is_owned;
   }
 
-  m_ref_node_list_vector =
-    descriptor.template refItemListVector<ItemType::node>();
-  m_ref_cell_list_vector =
-    descriptor.template refItemListVector<ItemType::cell>();
+  m_ref_node_list_vector = descriptor.template refItemListVector<ItemType::node>();
+  m_ref_cell_list_vector = descriptor.template refItemListVector<ItemType::cell>();
 
   if constexpr (Dimension > 1) {
-    m_item_to_item_matrix[itemTId(ItemType::face)][itemTId(ItemType::node)] =
-      descriptor.face_to_node_vector;
+    m_item_to_item_matrix[itemTId(ItemType::face)][itemTId(ItemType::node)] = descriptor.face_to_node_vector;
 
-    m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::face)] =
-      descriptor.cell_to_face_vector;
+    m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::face)] = descriptor.cell_to_face_vector;
 
     {
       FaceValuePerCell<bool> cell_face_is_reversed(*this);
-      for (CellId j = 0; j < descriptor.cell_face_is_reversed_vector.size();
-           ++j) {
-        const auto& face_cells_vector =
-          descriptor.cell_face_is_reversed_vector[j];
+      for (CellId j = 0; j < descriptor.cell_face_is_reversed_vector.size(); ++j) {
+        const auto& face_cells_vector = descriptor.cell_face_is_reversed_vector[j];
         for (unsigned short lj = 0; lj < face_cells_vector.size(); ++lj) {
           cell_face_is_reversed(j, lj) = face_cells_vector[lj];
         }
@@ -129,31 +113,24 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
     {
       const int rank = parallel::rank();
       WeakFaceValue<bool> face_is_owned(*this);
-      parallel_for(this->numberOfFaces(), PUGS_LAMBDA(const FaceId& l) {
-        face_is_owned[l] = (m_face_owner[l] == rank);
-      });
+      parallel_for(
+        this->numberOfFaces(), PUGS_LAMBDA(const FaceId& l) { face_is_owned[l] = (m_face_owner[l] == rank); });
       m_face_is_owned = face_is_owned;
     }
 
-    m_ref_face_list_vector =
-      descriptor.template refItemListVector<ItemType::face>();
+    m_ref_face_list_vector = descriptor.template refItemListVector<ItemType::face>();
 
     if constexpr (Dimension > 2) {
-      m_item_to_item_matrix[itemTId(ItemType::edge)][itemTId(ItemType::node)] =
-        descriptor.edge_to_node_vector;
+      m_item_to_item_matrix[itemTId(ItemType::edge)][itemTId(ItemType::node)] = descriptor.edge_to_node_vector;
 
-      m_item_to_item_matrix[itemTId(ItemType::face)][itemTId(ItemType::edge)] =
-        descriptor.face_to_edge_vector;
+      m_item_to_item_matrix[itemTId(ItemType::face)][itemTId(ItemType::edge)] = descriptor.face_to_edge_vector;
 
-      m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::edge)] =
-        descriptor.cell_to_edge_vector;
+      m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::edge)] = descriptor.cell_to_edge_vector;
 
       {
         EdgeValuePerFace<bool> face_edge_is_reversed(*this);
-        for (FaceId l = 0; l < descriptor.face_edge_is_reversed_vector.size();
-             ++l) {
-          const auto& edge_faces_vector =
-            descriptor.face_edge_is_reversed_vector[l];
+        for (FaceId l = 0; l < descriptor.face_edge_is_reversed_vector.size(); ++l) {
+          const auto& edge_faces_vector = descriptor.face_edge_is_reversed_vector[l];
           for (unsigned short el = 0; el < edge_faces_vector.size(); ++el) {
             face_edge_is_reversed(l, el) = edge_faces_vector[el];
           }
@@ -176,14 +153,12 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
       {
         const int rank = parallel::rank();
         WeakEdgeValue<bool> edge_is_owned(*this);
-        parallel_for(this->numberOfEdges(), PUGS_LAMBDA(const EdgeId& e) {
-          edge_is_owned[e] = (m_edge_owner[e] == rank);
-        });
+        parallel_for(
+          this->numberOfEdges(), PUGS_LAMBDA(const EdgeId& e) { edge_is_owned[e] = (m_edge_owner[e] == rank); });
         m_edge_is_owned = edge_is_owned;
       }
 
-      m_ref_edge_list_vector =
-        descriptor.template refItemListVector<ItemType::edge>();
+      m_ref_edge_list_vector = descriptor.template refItemListVector<ItemType::edge>();
     }
   }
 }
diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp
index 7d37e41435f32653cbbd4db87c6e2155fcddced3..1b815cdd023e066f4c8f4ee7fd0e058459da81e2 100644
--- a/src/mesh/Connectivity.hpp
+++ b/src/mesh/Connectivity.hpp
@@ -43,8 +43,7 @@ class Connectivity final : public IConnectivity
 {
  public:
   PUGS_INLINE
-  static std::shared_ptr<Connectivity<Dim>> build(
-    const ConnectivityDescriptor&);
+  static std::shared_ptr<Connectivity<Dim>> build(const ConnectivityDescriptor&);
 
  private:
   constexpr static auto& itemTId = ItemTypeId<Dim>::itemTId;
@@ -85,33 +84,21 @@ class Connectivity final : public IConnectivity
   WeakFaceValuePerCell<const bool> m_cell_face_is_reversed;
   WeakEdgeValuePerFace<const bool> m_face_edge_is_reversed;
 
-  WeakNodeValuePerCell<const unsigned short>
-    m_cell_local_numbers_in_their_nodes;
-  WeakEdgeValuePerCell<const unsigned short>
-    m_cell_local_numbers_in_their_edges;
-  WeakFaceValuePerCell<const unsigned short>
-    m_cell_local_numbers_in_their_faces;
-
-  WeakCellValuePerFace<const unsigned short>
-    m_face_local_numbers_in_their_cells;
-  WeakEdgeValuePerFace<const unsigned short>
-    m_face_local_numbers_in_their_edges;
-  WeakNodeValuePerFace<const unsigned short>
-    m_face_local_numbers_in_their_nodes;
-
-  WeakCellValuePerEdge<const unsigned short>
-    m_edge_local_numbers_in_their_cells;
-  WeakFaceValuePerEdge<const unsigned short>
-    m_edge_local_numbers_in_their_faces;
-  WeakNodeValuePerEdge<const unsigned short>
-    m_edge_local_numbers_in_their_nodes;
-
-  WeakCellValuePerNode<const unsigned short>
-    m_node_local_numbers_in_their_cells;
-  WeakEdgeValuePerNode<const unsigned short>
-    m_node_local_numbers_in_their_edges;
-  WeakFaceValuePerNode<const unsigned short>
-    m_node_local_numbers_in_their_faces;
+  WeakNodeValuePerCell<const unsigned short> m_cell_local_numbers_in_their_nodes;
+  WeakEdgeValuePerCell<const unsigned short> m_cell_local_numbers_in_their_edges;
+  WeakFaceValuePerCell<const unsigned short> m_cell_local_numbers_in_their_faces;
+
+  WeakCellValuePerFace<const unsigned short> m_face_local_numbers_in_their_cells;
+  WeakEdgeValuePerFace<const unsigned short> m_face_local_numbers_in_their_edges;
+  WeakNodeValuePerFace<const unsigned short> m_face_local_numbers_in_their_nodes;
+
+  WeakCellValuePerEdge<const unsigned short> m_edge_local_numbers_in_their_cells;
+  WeakFaceValuePerEdge<const unsigned short> m_edge_local_numbers_in_their_faces;
+  WeakNodeValuePerEdge<const unsigned short> m_edge_local_numbers_in_their_nodes;
+
+  WeakCellValuePerNode<const unsigned short> m_node_local_numbers_in_their_cells;
+  WeakEdgeValuePerNode<const unsigned short> m_node_local_numbers_in_their_edges;
+  WeakFaceValuePerNode<const unsigned short> m_node_local_numbers_in_their_faces;
 
   ConnectivityComputer m_connectivity_computer;
 
@@ -126,15 +113,12 @@ class Connectivity final : public IConnectivity
 
   template <typename SubItemValuePerItemType>
   PUGS_INLINE const SubItemValuePerItemType&
-  _lazzyBuildItemNumberInTheirChild(
-    const SubItemValuePerItemType& sub_item_value_per_item) const
+  _lazzyBuildItemNumberInTheirChild(const SubItemValuePerItemType& sub_item_value_per_item) const
   {
-    using ReversedItemOfItem =
-      typename SubItemValuePerItemType::ItemOfItemType::Reversed;
+    using ReversedItemOfItem = typename SubItemValuePerItemType::ItemOfItemType::Reversed;
     if (not sub_item_value_per_item.isBuilt()) {
       const_cast<SubItemValuePerItemType&>(sub_item_value_per_item) =
-        m_connectivity_computer
-          .computeLocalItemNumberInChildItem<ReversedItemOfItem>(*this);
+        m_connectivity_computer.computeLocalItemNumberInChildItem<ReversedItemOfItem>(*this);
     }
     return sub_item_value_per_item;
   }
@@ -145,12 +129,10 @@ class Connectivity final : public IConnectivity
   const ConnectivityMatrix&
   _getMatrix(const ItemType& item_type_0, const ItemType& item_type_1) const
   {
-    const ConnectivityMatrix& connectivity_matrix =
-      m_item_to_item_matrix[itemTId(item_type_0)][itemTId(item_type_1)];
+    const ConnectivityMatrix& connectivity_matrix = m_item_to_item_matrix[itemTId(item_type_0)][itemTId(item_type_1)];
     if (not connectivity_matrix.isBuilt()) {
       const_cast<ConnectivityMatrix&>(connectivity_matrix) =
-        m_connectivity_computer.computeConnectivityMatrix(*this, item_type_0,
-                                                          item_type_1);
+        m_connectivity_computer.computeConnectivityMatrix(*this, item_type_0, item_type_1);
     }
     return connectivity_matrix;
   }
@@ -304,19 +286,16 @@ class Connectivity final : public IConnectivity
 
   PUGS_INLINE
   const bool&
-  isConnectivityMatrixBuilt(const ItemType& item_type_0,
-                            const ItemType& item_type_1) const
+  isConnectivityMatrixBuilt(const ItemType& item_type_0, const ItemType& item_type_1) const
   {
-    const ConnectivityMatrix& connectivity_matrix =
-      m_item_to_item_matrix[itemTId(item_type_0)][itemTId(item_type_1)];
+    const ConnectivityMatrix& connectivity_matrix = m_item_to_item_matrix[itemTId(item_type_0)][itemTId(item_type_1)];
     return connectivity_matrix.isBuilt();
   }
   template <ItemType source_item_type, ItemType target_item_type>
   PUGS_INLINE auto
   getItemToItemMatrix() const
   {
-    return ItemToItemMatrix<source_item_type, target_item_type>(
-      _getMatrix(source_item_type, target_item_type));
+    return ItemToItemMatrix<source_item_type, target_item_type>(_getMatrix(source_item_type, target_item_type));
   }
 
   PUGS_INLINE
@@ -407,8 +386,7 @@ class Connectivity final : public IConnectivity
   const auto&
   cellFaceIsReversed() const
   {
-    static_assert(Dimension > 1,
-                  "reversed faces makes no sense in dimension 1");
+    static_assert(Dimension > 1, "reversed faces makes no sense in dimension 1");
     return m_cell_face_is_reversed;
   }
 
@@ -416,8 +394,7 @@ class Connectivity final : public IConnectivity
   const auto&
   faceEdgeIsReversed() const
   {
-    static_assert(Dimension > 2,
-                  "reversed edges makes no sense in dimension 1 or 2");
+    static_assert(Dimension > 2, "reversed edges makes no sense in dimension 1 or 2");
     return m_face_edge_is_reversed;
   }
 
@@ -425,8 +402,7 @@ class Connectivity final : public IConnectivity
   const auto&
   cellLocalNumbersInTheirNodes() const
   {
-    return _lazzyBuildItemNumberInTheirChild(
-      m_cell_local_numbers_in_their_nodes);
+    return _lazzyBuildItemNumberInTheirChild(m_cell_local_numbers_in_their_nodes);
   }
 
   PUGS_INLINE
@@ -434,8 +410,7 @@ class Connectivity final : public IConnectivity
   cellLocalNumbersInTheirEdges() const
   {
     if constexpr (Dimension > 2) {
-      return _lazzyBuildItemNumberInTheirChild(
-        m_cell_local_numbers_in_their_edges);
+      return _lazzyBuildItemNumberInTheirChild(m_cell_local_numbers_in_their_edges);
     } else {
       return cellLocalNumbersInTheirFaces();
     }
@@ -446,8 +421,7 @@ class Connectivity final : public IConnectivity
   cellLocalNumbersInTheirFaces() const
   {
     if constexpr (Dimension > 1) {
-      return _lazzyBuildItemNumberInTheirChild(
-        m_cell_local_numbers_in_their_faces);
+      return _lazzyBuildItemNumberInTheirChild(m_cell_local_numbers_in_their_faces);
     } else {
       return cellLocalNumbersInTheirNodes();
     }
@@ -458,8 +432,7 @@ class Connectivity final : public IConnectivity
   faceLocalNumbersInTheirCells() const
   {
     if constexpr (Dimension > 1) {
-      return _lazzyBuildItemNumberInTheirChild(
-        m_face_local_numbers_in_their_cells);
+      return _lazzyBuildItemNumberInTheirChild(m_face_local_numbers_in_their_cells);
     } else {
       return nodeLocalNumbersInTheirCells();
     }
@@ -470,8 +443,7 @@ class Connectivity final : public IConnectivity
   faceLocalNumbersInTheirEdges() const
   {
     static_assert(Dimension > 2, "this function has no meaning in 1d or 2d");
-    return _lazzyBuildItemNumberInTheirChild(
-      m_face_local_numbers_in_their_edges);
+    return _lazzyBuildItemNumberInTheirChild(m_face_local_numbers_in_their_edges);
   }
 
   PUGS_INLINE
@@ -479,8 +451,7 @@ class Connectivity final : public IConnectivity
   faceLocalNumbersInTheirNodes() const
   {
     static_assert(Dimension > 1, "this function has no meaning in 1d");
-    return _lazzyBuildItemNumberInTheirChild(
-      m_face_local_numbers_in_their_nodes);
+    return _lazzyBuildItemNumberInTheirChild(m_face_local_numbers_in_their_nodes);
   }
 
   PUGS_INLINE
@@ -488,8 +459,7 @@ class Connectivity final : public IConnectivity
   edgeLocalNumbersInTheirCells() const
   {
     if constexpr (Dimension > 2) {
-      return _lazzyBuildItemNumberInTheirChild(
-        m_edge_local_numbers_in_their_cells);
+      return _lazzyBuildItemNumberInTheirChild(m_edge_local_numbers_in_their_cells);
     } else {
       return faceLocalNumbersInTheirCells();
     }
@@ -500,8 +470,7 @@ class Connectivity final : public IConnectivity
   edgeLocalNumbersInTheirFaces() const
   {
     static_assert(Dimension > 2, "this function has no meaning in 1d or 2d");
-    return _lazzyBuildItemNumberInTheirChild(
-      m_edge_local_numbers_in_their_faces);
+    return _lazzyBuildItemNumberInTheirChild(m_edge_local_numbers_in_their_faces);
   }
 
   PUGS_INLINE
@@ -509,16 +478,14 @@ class Connectivity final : public IConnectivity
   edgeLocalNumbersInTheirNodes() const
   {
     static_assert(Dimension > 2, "this function has no meaning in 1d or 2d");
-    return _lazzyBuildItemNumberInTheirChild(
-      m_edge_local_numbers_in_their_nodes);
+    return _lazzyBuildItemNumberInTheirChild(m_edge_local_numbers_in_their_nodes);
   }
 
   PUGS_INLINE
   const auto&
   nodeLocalNumbersInTheirCells() const
   {
-    return _lazzyBuildItemNumberInTheirChild(
-      m_node_local_numbers_in_their_cells);
+    return _lazzyBuildItemNumberInTheirChild(m_node_local_numbers_in_their_cells);
   }
 
   PUGS_INLINE
@@ -526,8 +493,7 @@ class Connectivity final : public IConnectivity
   nodeLocalNumbersInTheirEdges() const
   {
     static_assert(Dimension > 2, "this function has no meaning in 1d or 2d");
-    return _lazzyBuildItemNumberInTheirChild(
-      m_node_local_numbers_in_their_edges);
+    return _lazzyBuildItemNumberInTheirChild(m_node_local_numbers_in_their_edges);
   }
 
   PUGS_INLINE
@@ -535,8 +501,7 @@ class Connectivity final : public IConnectivity
   nodeLocalNumbersInTheirFaces() const
   {
     static_assert(Dimension > 1, "this function has no meaning in 1d");
-    return _lazzyBuildItemNumberInTheirChild(
-      m_node_local_numbers_in_their_faces);
+    return _lazzyBuildItemNumberInTheirChild(m_node_local_numbers_in_their_faces);
   }
 
   template <ItemType item_type>
@@ -646,8 +611,7 @@ class Connectivity final : public IConnectivity
   size_t
   numberOfNodes() const final
   {
-    const auto& node_to_cell_matrix =
-      this->_getMatrix(ItemType::node, ItemType::cell);
+    const auto& node_to_cell_matrix = this->_getMatrix(ItemType::node, ItemType::cell);
     return node_to_cell_matrix.numRows();
   }
 
@@ -655,8 +619,7 @@ class Connectivity final : public IConnectivity
   size_t
   numberOfEdges() const final
   {
-    const auto& edge_to_node_matrix =
-      this->_getMatrix(ItemType::edge, ItemType::node);
+    const auto& edge_to_node_matrix = this->_getMatrix(ItemType::edge, ItemType::node);
     return edge_to_node_matrix.numRows();
   }
 
@@ -664,8 +627,7 @@ class Connectivity final : public IConnectivity
   size_t
   numberOfFaces() const final
   {
-    const auto& face_to_node_matrix =
-      this->_getMatrix(ItemType::face, ItemType::cell);
+    const auto& face_to_node_matrix = this->_getMatrix(ItemType::face, ItemType::cell);
     return face_to_node_matrix.numRows();
   }
 
@@ -673,8 +635,7 @@ class Connectivity final : public IConnectivity
   size_t
   numberOfCells() const final
   {
-    const auto& cell_to_node_matrix =
-      this->_getMatrix(ItemType::cell, ItemType::node);
+    const auto& cell_to_node_matrix = this->_getMatrix(ItemType::cell, ItemType::node);
     return cell_to_node_matrix.numRows();
   }
 
@@ -682,16 +643,15 @@ class Connectivity final : public IConnectivity
   invCellNbNodes() const
   {
     if (not m_inv_cell_nb_nodes.isBuilt()) {
-      const auto& cell_to_node_matrix =
-        m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::node)];
+      const auto& cell_to_node_matrix = m_item_to_item_matrix[itemTId(ItemType::cell)][itemTId(ItemType::node)];
 
       WeakCellValue<double> inv_cell_nb_nodes(*this);
-      parallel_for(this->numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-        const auto& cell_nodes = cell_to_node_matrix.rowConst(j);
-        inv_cell_nb_nodes[j]   = 1. / cell_nodes.length;
-      });
-      const_cast<WeakCellValue<const double>&>(m_inv_cell_nb_nodes) =
-        inv_cell_nb_nodes;
+      parallel_for(
+        this->numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+          const auto& cell_nodes = cell_to_node_matrix.rowConst(j);
+          inv_cell_nb_nodes[j]   = 1. / cell_nodes.length;
+        });
+      const_cast<WeakCellValue<const double>&>(m_inv_cell_nb_nodes) = inv_cell_nb_nodes;
     }
 
     return m_inv_cell_nb_nodes;
diff --git a/src/mesh/ConnectivityComputer.cpp b/src/mesh/ConnectivityComputer.cpp
index f5d88bb5cd151751d0af6778fc1e28683709be7f..b040c48890f23085b2d6de6a0a9e2fe894d07a87 100644
--- a/src/mesh/ConnectivityComputer.cpp
+++ b/src/mesh/ConnectivityComputer.cpp
@@ -5,47 +5,39 @@
 
 template <typename ConnectivityType>
 PUGS_INLINE ConnectivityMatrix
-ConnectivityComputer::computeConnectivityMatrix(
-  const ConnectivityType& connectivity,
-  const ItemType& item_type,
-  const ItemType& child_item_type) const
+ConnectivityComputer::computeConnectivityMatrix(const ConnectivityType& connectivity,
+                                                const ItemType& item_type,
+                                                const ItemType& child_item_type) const
 {
   ConnectivityMatrix item_to_child_item_matrix;
   if (connectivity.isConnectivityMatrixBuilt(child_item_type, item_type)) {
-    const ConnectivityMatrix& child_to_item_matrix =
-      connectivity._getMatrix(child_item_type, item_type);
+    const ConnectivityMatrix& child_to_item_matrix = connectivity._getMatrix(child_item_type, item_type);
 
-    pout() << "computing connectivity " << itemName(item_type) << " -> "
-           << itemName(child_item_type) << '\n';
+    pout() << "computing connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n';
 
     item_to_child_item_matrix = this->_computeInverse(child_to_item_matrix);
   } else {
-    perr() << "unable to compute connectivity " << itemName(item_type) << " -> "
-           << itemName(child_item_type) << '\n';
+    perr() << "unable to compute connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n';
     std::terminate();
   }
 
   return item_to_child_item_matrix;
 }
 
-template ConnectivityMatrix ConnectivityComputer::computeConnectivityMatrix(
-  const Connectivity1D&,
-  const ItemType&,
-  const ItemType&) const;
+template ConnectivityMatrix ConnectivityComputer::computeConnectivityMatrix(const Connectivity1D&,
+                                                                            const ItemType&,
+                                                                            const ItemType&) const;
 
-template ConnectivityMatrix ConnectivityComputer::computeConnectivityMatrix(
-  const Connectivity2D&,
-  const ItemType&,
-  const ItemType&) const;
+template ConnectivityMatrix ConnectivityComputer::computeConnectivityMatrix(const Connectivity2D&,
+                                                                            const ItemType&,
+                                                                            const ItemType&) const;
 
-template ConnectivityMatrix ConnectivityComputer::computeConnectivityMatrix(
-  const Connectivity3D&,
-  const ItemType&,
-  const ItemType&) const;
+template ConnectivityMatrix ConnectivityComputer::computeConnectivityMatrix(const Connectivity3D&,
+                                                                            const ItemType&,
+                                                                            const ItemType&) const;
 
 ConnectivityMatrix
-ConnectivityComputer::_computeInverse(
-  const ConnectivityMatrix& item_to_child_matrix) const
+ConnectivityComputer::_computeInverse(const ConnectivityMatrix& item_to_child_matrix) const
 {
   std::map<unsigned int, std::vector<unsigned int>> child_to_item_vector_map;
   const size_t& number_of_items = item_to_child_matrix.numRows();
@@ -68,8 +60,7 @@ ConnectivityComputer::_computeInverse(
     }
   }
 
-  std::vector<std::vector<unsigned int>> child_to_items_vector(
-    child_to_item_vector_map.size());
+  std::vector<std::vector<unsigned int>> child_to_items_vector(child_to_item_vector_map.size());
   for (const auto& [child_item_id, item_vector] : child_to_item_vector_map) {
     child_to_items_vector[child_item_id] = item_vector;
   }
@@ -79,23 +70,18 @@ ConnectivityComputer::_computeInverse(
 
 template <typename ItemOfItem, typename ConnectivityType>
 WeakSubItemValuePerItem<const unsigned short, typename ItemOfItem::Reversed>
-ConnectivityComputer::computeLocalItemNumberInChildItem(
-  const ConnectivityType& connectivity) const
+ConnectivityComputer::computeLocalItemNumberInChildItem(const ConnectivityType& connectivity) const
 {
   using ReversedItemOfItem = typename ItemOfItem::Reversed;
 
   constexpr ItemType item_type       = ReversedItemOfItem::item_type;
   constexpr ItemType child_item_type = ReversedItemOfItem::sub_item_type;
 
-  const ConnectivityMatrix& child_item_to_items_matrix =
-    connectivity._getMatrix(child_item_type, item_type);
-  const ConnectivityMatrix& item_to_child_items_matrix =
-    connectivity._getMatrix(item_type, child_item_type);
+  const ConnectivityMatrix& child_item_to_items_matrix = connectivity._getMatrix(child_item_type, item_type);
+  const ConnectivityMatrix& item_to_child_items_matrix = connectivity._getMatrix(item_type, child_item_type);
 
-  WeakSubItemValuePerItem<unsigned short, ReversedItemOfItem>
-    item_number_in_child_item(connectivity);
-  for (ItemIdT<item_type> r = 0; r < item_to_child_items_matrix.numRows();
-       ++r) {
+  WeakSubItemValuePerItem<unsigned short, ReversedItemOfItem> item_number_in_child_item(connectivity);
+  for (ItemIdT<item_type> r = 0; r < item_to_child_items_matrix.numRows(); ++r) {
     const auto& item_to_child_items = item_to_child_items_matrix.rowConst(r);
     for (unsigned short J = 0; J < item_to_child_items.length; ++J) {
       const unsigned int j            = item_to_child_items(J);
@@ -116,85 +102,65 @@ ConnectivityComputer::computeLocalItemNumberInChildItem(
 // 1D
 
 template WeakSubItemValuePerItem<const unsigned short, CellOfNode>
-ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfCell>(
-  const Connectivity1D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfCell>(const Connectivity1D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, NodeOfCell>
-ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfNode>(
-  const Connectivity1D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfNode>(const Connectivity1D&) const;
 
 // 2D
 
 template WeakSubItemValuePerItem<const unsigned short, CellOfNode>
-ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfCell>(
-  const Connectivity2D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfCell>(const Connectivity2D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, CellOfFace>
-ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfCell>(
-  const Connectivity2D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfCell>(const Connectivity2D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, FaceOfNode>
-ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfFace>(
-  const Connectivity2D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfFace>(const Connectivity2D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, FaceOfCell>
-ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfFace>(
-  const Connectivity2D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfFace>(const Connectivity2D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, NodeOfFace>
-ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfNode>(
-  const Connectivity2D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfNode>(const Connectivity2D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, NodeOfCell>
-ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfNode>(
-  const Connectivity2D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfNode>(const Connectivity2D&) const;
 
 // 3D
 
 template WeakSubItemValuePerItem<const unsigned short, CellOfNode>
-ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfCell>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfCell>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, CellOfEdge>
-ConnectivityComputer::computeLocalItemNumberInChildItem<EdgeOfCell>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<EdgeOfCell>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, CellOfFace>
-ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfCell>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfCell>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, FaceOfNode>
-ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfFace>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfFace>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, FaceOfEdge>
-ConnectivityComputer::computeLocalItemNumberInChildItem<EdgeOfFace>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<EdgeOfFace>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, FaceOfCell>
-ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfFace>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfFace>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, EdgeOfNode>
-ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfEdge>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<NodeOfEdge>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, EdgeOfFace>
-ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfEdge>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfEdge>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, EdgeOfCell>
-ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfEdge>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfEdge>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, NodeOfEdge>
-ConnectivityComputer::computeLocalItemNumberInChildItem<EdgeOfNode>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<EdgeOfNode>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, NodeOfFace>
-ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfNode>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<FaceOfNode>(const Connectivity3D&) const;
 
 template WeakSubItemValuePerItem<const unsigned short, NodeOfCell>
-ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfNode>(
-  const Connectivity3D&) const;
+ConnectivityComputer::computeLocalItemNumberInChildItem<CellOfNode>(const Connectivity3D&) const;
diff --git a/src/mesh/ConnectivityComputer.hpp b/src/mesh/ConnectivityComputer.hpp
index 183f513ae2a7fff2f9687314f9437656ddd9d84b..b56b1895ef74bec0afc55bbeeea7b6f7b911dfe6 100644
--- a/src/mesh/ConnectivityComputer.hpp
+++ b/src/mesh/ConnectivityComputer.hpp
@@ -7,19 +7,17 @@
 class ConnectivityComputer
 {
  private:
-  ConnectivityMatrix _computeInverse(
-    const ConnectivityMatrix& item_to_child_matrix) const;
+  ConnectivityMatrix _computeInverse(const ConnectivityMatrix& item_to_child_matrix) const;
 
  public:
   template <typename ConnectivityType>
-  ConnectivityMatrix computeConnectivityMatrix(
-    const ConnectivityType& connectivity,
-    const ItemType& item_type,
-    const ItemType& child_item_type) const;
+  ConnectivityMatrix computeConnectivityMatrix(const ConnectivityType& connectivity,
+                                               const ItemType& item_type,
+                                               const ItemType& child_item_type) const;
 
   template <typename ItemOfItem, typename ConnectivityType>
-  WeakSubItemValuePerItem<const unsigned short, typename ItemOfItem::Reversed>
-  computeLocalItemNumberInChildItem(const ConnectivityType& connectivity) const;
+  WeakSubItemValuePerItem<const unsigned short, typename ItemOfItem::Reversed> computeLocalItemNumberInChildItem(
+    const ConnectivityType& connectivity) const;
 
   ConnectivityComputer(const ConnectivityComputer&) = default;
   ConnectivityComputer()                            = default;
diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp
index e3f419ca78cde0c41171a7f76b15ea56dcc36809..26ca51ce211bfda1d133fd42a49421f9d831ae74 100644
--- a/src/mesh/ConnectivityDispatcher.cpp
+++ b/src/mesh/ConnectivityDispatcher.cpp
@@ -19,27 +19,26 @@ ConnectivityDispatcher<Dimension>::_buildNewOwner()
 
     this->_dispatchedInfo<ItemType::cell>().m_new_owner = cell_new_owner;
   } else {
-    const auto& item_to_cell_matrix =
-      m_connectivity.template getItemToItemMatrix<item_type, ItemType::cell>();
+    const auto& item_to_cell_matrix = m_connectivity.template getItemToItemMatrix<item_type, ItemType::cell>();
 
-    const auto& cell_number = m_connectivity.cellNumber();
-    const auto& cell_new_owner =
-      this->_dispatchedInfo<ItemType::cell>().m_new_owner;
+    const auto& cell_number    = m_connectivity.cellNumber();
+    const auto& cell_new_owner = this->_dispatchedInfo<ItemType::cell>().m_new_owner;
 
     using ItemId = ItemIdT<item_type>;
     ItemValue<int, item_type> item_new_owner(m_connectivity);
-    parallel_for(item_new_owner.size(), PUGS_LAMBDA(const ItemId& l) {
-      const auto& item_to_cell = item_to_cell_matrix[l];
-      CellId Jmin              = item_to_cell[0];
-
-      for (size_t j = 1; j < item_to_cell.size(); ++j) {
-        const CellId J = item_to_cell[j];
-        if (cell_number[J] < cell_number[Jmin]) {
-          Jmin = J;
+    parallel_for(
+      item_new_owner.size(), PUGS_LAMBDA(const ItemId& l) {
+        const auto& item_to_cell = item_to_cell_matrix[l];
+        CellId Jmin              = item_to_cell[0];
+
+        for (size_t j = 1; j < item_to_cell.size(); ++j) {
+          const CellId J = item_to_cell[j];
+          if (cell_number[J] < cell_number[Jmin]) {
+            Jmin = J;
+          }
         }
-      }
-      item_new_owner[l] = cell_new_owner[Jmin];
-    });
+        item_new_owner[l] = cell_new_owner[Jmin];
+      });
 
     synchronize(item_new_owner);
     this->_dispatchedInfo<item_type>().m_new_owner = item_new_owner;
@@ -68,11 +67,9 @@ ConnectivityDispatcher<Dimension>::_buildItemListToSend()
     const auto& node_to_cell_matrix = m_connectivity.nodeToCellMatrix();
     const auto& cell_to_node_matrix = m_connectivity.cellToNodeMatrix();
 
-    const auto& cell_new_owner =
-      this->_dispatchedInfo<ItemType::cell>().m_new_owner;
+    const auto& cell_new_owner = this->_dispatchedInfo<ItemType::cell>().m_new_owner;
 
-    std::vector<std::vector<CellId>> cell_vector_to_send_by_proc(
-      parallel::size());
+    std::vector<std::vector<CellId>> cell_vector_to_send_by_proc(parallel::size());
     Array<bool> send_to_rank(parallel::size());
     for (CellId j = 0; j < m_connectivity.numberOfCells(); ++j) {
       send_to_rank.fill(false);
@@ -94,23 +91,18 @@ ConnectivityDispatcher<Dimension>::_buildItemListToSend()
       }
     }
 
-    auto& cell_list_to_send_by_proc =
-      this->_dispatchedInfo<ItemType::cell>().m_list_to_send_by_proc;
+    auto& cell_list_to_send_by_proc = this->_dispatchedInfo<ItemType::cell>().m_list_to_send_by_proc;
     cell_list_to_send_by_proc.resize(parallel::size());
     for (size_t i = 0; i < parallel::size(); ++i) {
-      cell_list_to_send_by_proc[i] =
-        convert_to_array(cell_vector_to_send_by_proc[i]);
+      cell_list_to_send_by_proc[i] = convert_to_array(cell_vector_to_send_by_proc[i]);
     }
   } else {
-    const auto& cell_list_to_send_by_proc =
-      this->_dispatchedInfo<ItemType::cell>().m_list_to_send_by_proc;
+    const auto& cell_list_to_send_by_proc = this->_dispatchedInfo<ItemType::cell>().m_list_to_send_by_proc;
 
-    using ItemId = ItemIdT<item_type>;
-    const auto& cell_to_sub_item_matrix =
-      m_connectivity.template getItemToItemMatrix<ItemType::cell, item_type>();
+    using ItemId                        = ItemIdT<item_type>;
+    const auto& cell_to_sub_item_matrix = m_connectivity.template getItemToItemMatrix<ItemType::cell, item_type>();
 
-    auto& item_list_to_send_by_proc =
-      this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+    auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
     item_list_to_send_by_proc.resize(parallel::size());
 
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
@@ -138,38 +130,30 @@ template <ItemType item_type>
 void
 ConnectivityDispatcher<Dimension>::_buildNumberOfItemToExchange()
 {
-  const auto& item_list_to_send_by_proc =
-    this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+  const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
   Array<unsigned int> nb_item_to_send_by_proc(parallel::size());
   for (size_t i = 0; i < parallel::size(); ++i) {
     nb_item_to_send_by_proc[i] = item_list_to_send_by_proc[i].size();
   }
-  this->_dispatchedInfo<item_type>().m_list_to_send_size_by_proc =
-    nb_item_to_send_by_proc;
+  this->_dispatchedInfo<item_type>().m_list_to_send_size_by_proc = nb_item_to_send_by_proc;
 
-  this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc =
-    parallel::allToAll(nb_item_to_send_by_proc);
+  this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc = parallel::allToAll(nb_item_to_send_by_proc);
 }
 
 template <int Dimension>
 template <typename DataType, ItemType item_type, typename ConnectivityPtr>
 void
-ConnectivityDispatcher<Dimension>::_gatherFrom(
-  const ItemValue<DataType, item_type, ConnectivityPtr>& data_to_gather,
-  std::vector<std::remove_const_t<DataType>>& gathered_vector)
+ConnectivityDispatcher<Dimension>::_gatherFrom(const ItemValue<DataType, item_type, ConnectivityPtr>& data_to_gather,
+                                               std::vector<std::remove_const_t<DataType>>& gathered_vector)
 {
-  std::vector<Array<const DataType>> recv_item_data_by_proc =
-    this->exchange(data_to_gather);
+  std::vector<Array<const DataType>> recv_item_data_by_proc = this->exchange(data_to_gather);
 
-  const auto& recv_id_correspondance_by_proc =
-    this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc;
+  const auto& recv_id_correspondance_by_proc = this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc;
   Assert(recv_id_correspondance_by_proc.size() == parallel::size());
 
-  gathered_vector.resize(
-    this->_dispatchedInfo<item_type>().m_number_to_id_map.size());
+  gathered_vector.resize(this->_dispatchedInfo<item_type>().m_number_to_id_map.size());
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-    Assert(recv_id_correspondance_by_proc[i_rank].size() ==
-           recv_item_data_by_proc[i_rank].size());
+    Assert(recv_id_correspondance_by_proc[i_rank].size() == recv_item_data_by_proc[i_rank].size());
     for (size_t r = 0; r < recv_id_correspondance_by_proc[i_rank].size(); ++r) {
       const auto& item_id      = recv_id_correspondance_by_proc[i_rank][r];
       gathered_vector[item_id] = recv_item_data_by_proc[i_rank][r];
@@ -181,8 +165,7 @@ template <int Dimension>
 template <typename DataType, typename ItemOfItem, typename ConnectivityPtr>
 void
 ConnectivityDispatcher<Dimension>::_gatherFrom(
-  const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>&
-    data_to_gather,
+  const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>& data_to_gather,
   std::vector<Array<std::remove_const_t<DataType>>>& gathered_vector)
 {
   using MutableDataType = std::remove_const_t<DataType>;
@@ -190,8 +173,7 @@ ConnectivityDispatcher<Dimension>::_gatherFrom(
   constexpr ItemType item_type = ItemOfItem::item_type;
   using ItemId                 = ItemIdT<item_type>;
 
-  const auto& item_list_to_send_by_proc =
-    this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+  const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
 
   std::vector<Array<MutableDataType>> data_to_send_by_proc(parallel::size());
 
@@ -208,26 +190,22 @@ ConnectivityDispatcher<Dimension>::_gatherFrom(
   }
 
   const auto& number_of_sub_item_per_item_to_recv_by_proc =
-    this->_dispatchedInfo<ItemOfItem>()
-      .m_number_of_sub_item_per_item_to_recv_by_proc;
+    this->_dispatchedInfo<ItemOfItem>().m_number_of_sub_item_per_item_to_recv_by_proc;
 
-  std::vector<Array<MutableDataType>> recv_data_to_gather_by_proc(
-    parallel::size());
+  std::vector<Array<MutableDataType>> recv_data_to_gather_by_proc(parallel::size());
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-    recv_data_to_gather_by_proc[i_rank] = Array<MutableDataType>(
-      sum(number_of_sub_item_per_item_to_recv_by_proc[i_rank]));
+    recv_data_to_gather_by_proc[i_rank] =
+      Array<MutableDataType>(sum(number_of_sub_item_per_item_to_recv_by_proc[i_rank]));
   }
 
   parallel::exchange(data_to_send_by_proc, recv_data_to_gather_by_proc);
 
-  const auto& item_list_to_recv_size_by_proc =
-    this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
+  const auto& item_list_to_recv_size_by_proc = this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
 
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
     int l = 0;
     for (size_t i = 0; i < item_list_to_recv_size_by_proc[i_rank]; ++i) {
-      Array<MutableDataType> data_vector(
-        number_of_sub_item_per_item_to_recv_by_proc[i_rank][i]);
+      Array<MutableDataType> data_vector(number_of_sub_item_per_item_to_recv_by_proc[i_rank][i]);
       for (size_t k = 0; k < data_vector.size(); ++k) {
         data_vector[k] = recv_data_to_gather_by_proc[i_rank][l++];
       }
@@ -240,16 +218,13 @@ template <int Dimension>
 void
 ConnectivityDispatcher<Dimension>::_buildCellNumberIdMap()
 {
-  const auto recv_cell_number_by_proc =
-    this->exchange(m_connectivity.template number<ItemType::cell>());
-  auto& cell_number_id_map =
-    this->_dispatchedInfo<ItemType::cell>().m_number_to_id_map;
+  const auto recv_cell_number_by_proc = this->exchange(m_connectivity.template number<ItemType::cell>());
+  auto& cell_number_id_map            = this->_dispatchedInfo<ItemType::cell>().m_number_to_id_map;
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
     CellId cell_id = 0;
     for (size_t i = 0; i < recv_cell_number_by_proc[i_rank].size(); ++i) {
-      const int cell_number = recv_cell_number_by_proc[i_rank][i];
-      auto [iterator, inserted] =
-        cell_number_id_map.insert(std::make_pair(cell_number, cell_id));
+      const int cell_number     = recv_cell_number_by_proc[i_rank][i];
+      auto [iterator, inserted] = cell_number_id_map.insert(std::make_pair(cell_number, cell_id));
       if (inserted)
         ++cell_id;
     }
@@ -261,22 +236,18 @@ template <typename ItemOfItemT>
 void
 ConnectivityDispatcher<Dimension>::_buildSubItemNumberToIdMap()
 {
-  static_assert(
-    ItemOfItemT::item_type == ItemType::cell,
-    "Dispatcher requires to be built using cell as master entities");
+  static_assert(ItemOfItemT::item_type == ItemType::cell, "Dispatcher requires to be built using cell as master "
+                                                          "entities");
 
   const auto& cell_sub_item_number_to_recv_by_proc =
     this->_dispatchedInfo<ItemOfItemT>().m_sub_item_numbers_to_recv_by_proc;
 
-  auto& sub_item_number_id_map =
-    this->_dispatchedInfo<ItemOfItemT::sub_item_type>().m_number_to_id_map;
+  auto& sub_item_number_id_map = this->_dispatchedInfo<ItemOfItemT::sub_item_type>().m_number_to_id_map;
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
     int sub_item_id = 0;
-    for (size_t i = 0; i < cell_sub_item_number_to_recv_by_proc[i_rank].size();
-         ++i) {
-      int sub_item_number = cell_sub_item_number_to_recv_by_proc[i_rank][i];
-      auto [iterator, inserted] = sub_item_number_id_map.insert(
-        std::make_pair(sub_item_number, sub_item_id));
+    for (size_t i = 0; i < cell_sub_item_number_to_recv_by_proc[i_rank].size(); ++i) {
+      int sub_item_number       = cell_sub_item_number_to_recv_by_proc[i_rank][i];
+      auto [iterator, inserted] = sub_item_number_id_map.insert(std::make_pair(sub_item_number, sub_item_id));
       if (inserted)
         sub_item_id++;
     }
@@ -289,20 +260,16 @@ void
 ConnectivityDispatcher<Dimension>::_buildNumberOfSubItemPerItemToRecvByProc()
 {
   const auto& item_to_sub_item_matrix =
-    m_connectivity.template getItemToItemMatrix<
-      SubItemOfItemT::item_type, SubItemOfItemT::sub_item_type>();
+    m_connectivity.template getItemToItemMatrix<SubItemOfItemT::item_type, SubItemOfItemT::sub_item_type>();
 
-  ItemValue<int, SubItemOfItemT::item_type> number_of_sub_item_per_item(
-    m_connectivity);
+  ItemValue<int, SubItemOfItemT::item_type> number_of_sub_item_per_item(m_connectivity);
 
   using ItemId = ItemIdT<SubItemOfItemT::item_type>;
   parallel_for(
-    number_of_sub_item_per_item.size(), PUGS_LAMBDA(const ItemId& j) {
-      number_of_sub_item_per_item[j] = item_to_sub_item_matrix[j].size();
-    });
+    number_of_sub_item_per_item.size(),
+    PUGS_LAMBDA(const ItemId& j) { number_of_sub_item_per_item[j] = item_to_sub_item_matrix[j].size(); });
 
-  this->_dispatchedInfo<SubItemOfItemT>()
-    .m_number_of_sub_item_per_item_to_recv_by_proc =
+  this->_dispatchedInfo<SubItemOfItemT>().m_number_of_sub_item_per_item_to_recv_by_proc =
     this->exchange(number_of_sub_item_per_item);
 }
 
@@ -313,21 +280,16 @@ ConnectivityDispatcher<Dimension>::_buildSubItemNumbersToRecvByProc()
 {
   const std::vector<Array<const int>> sub_item_numbers_to_send_by_proc = [&]() {
     const auto& item_to_sub_item_matrix =
-      m_connectivity.template getItemToItemMatrix<
-        SubItemOfItemT::item_type, SubItemOfItemT::sub_item_type>();
+      m_connectivity.template getItemToItemMatrix<SubItemOfItemT::item_type, SubItemOfItemT::sub_item_type>();
 
-    const auto& sub_item_number =
-      m_connectivity.template number<SubItemOfItemT::sub_item_type>();
+    const auto& sub_item_number = m_connectivity.template number<SubItemOfItemT::sub_item_type>();
 
     using ItemId    = ItemIdT<SubItemOfItemT::item_type>;
     using SubItemId = ItemIdT<SubItemOfItemT::sub_item_type>;
 
-    std::vector<Array<const int>> sub_item_numbers_to_send_by_proc(
-      parallel::size());
+    std::vector<Array<const int>> sub_item_numbers_to_send_by_proc(parallel::size());
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-      const auto& item_list_to_send_by_proc =
-        this->_dispatchedInfo<SubItemOfItemT::item_type>()
-          .m_list_to_send_by_proc;
+      const auto& item_list_to_send_by_proc = this->_dispatchedInfo<SubItemOfItemT::item_type>().m_list_to_send_by_proc;
 
       std::vector<int> sub_item_numbers_by_item_vector;
       for (size_t j = 0; j < item_list_to_send_by_proc[i_rank].size(); ++j) {
@@ -335,35 +297,29 @@ ConnectivityDispatcher<Dimension>::_buildSubItemNumbersToRecvByProc()
         const auto& sub_item_list = item_to_sub_item_matrix[item_id];
         for (size_t r = 0; r < sub_item_list.size(); ++r) {
           const SubItemId& sub_item_id = sub_item_list[r];
-          sub_item_numbers_by_item_vector.push_back(
-            sub_item_number[sub_item_id]);
+          sub_item_numbers_by_item_vector.push_back(sub_item_number[sub_item_id]);
         }
       }
-      sub_item_numbers_to_send_by_proc[i_rank] =
-        convert_to_array(sub_item_numbers_by_item_vector);
+      sub_item_numbers_to_send_by_proc[i_rank] = convert_to_array(sub_item_numbers_by_item_vector);
     }
     return sub_item_numbers_to_send_by_proc;
   }();
 
   const auto& number_of_sub_item_per_item_to_recv_by_proc =
-    this->_dispatchedInfo<SubItemOfItemT>()
-      .m_number_of_sub_item_per_item_to_recv_by_proc;
+    this->_dispatchedInfo<SubItemOfItemT>().m_number_of_sub_item_per_item_to_recv_by_proc;
 
   std::vector<Array<int>> sub_item_numbers_to_recv_by_proc(parallel::size());
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-    sub_item_numbers_to_recv_by_proc[i_rank] =
-      Array<int>(sum(number_of_sub_item_per_item_to_recv_by_proc[i_rank]));
+    sub_item_numbers_to_recv_by_proc[i_rank] = Array<int>(sum(number_of_sub_item_per_item_to_recv_by_proc[i_rank]));
   }
-  parallel::exchange(sub_item_numbers_to_send_by_proc,
-                     sub_item_numbers_to_recv_by_proc);
+  parallel::exchange(sub_item_numbers_to_send_by_proc, sub_item_numbers_to_recv_by_proc);
 
   auto& const_sub_item_numbers_to_recv_by_proc =
     this->_dispatchedInfo<SubItemOfItemT>().m_sub_item_numbers_to_recv_by_proc;
 
   const_sub_item_numbers_to_recv_by_proc.resize(parallel::size());
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-    const_sub_item_numbers_to_recv_by_proc[i_rank] =
-      sub_item_numbers_to_recv_by_proc[i_rank];
+    const_sub_item_numbers_to_recv_by_proc[i_rank] = sub_item_numbers_to_recv_by_proc[i_rank];
   }
 }
 
@@ -375,15 +331,12 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor()
   constexpr ItemType item_type     = ItemOfItemT::item_type;
   constexpr ItemType sub_item_type = ItemOfItemT::sub_item_type;
 
-  const auto& item_list_to_recv_size_by_proc =
-    this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
+  const auto& item_list_to_recv_size_by_proc = this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
 
   const auto& number_of_sub_item_per_item_to_recv_by_proc =
-    this->_dispatchedInfo<ItemOfItemT>()
-      .m_number_of_sub_item_per_item_to_recv_by_proc;
+    this->_dispatchedInfo<ItemOfItemT>().m_number_of_sub_item_per_item_to_recv_by_proc;
 
-  const auto& sub_item_number_id_map =
-    this->_dispatchedInfo<sub_item_type>().m_number_to_id_map;
+  const auto& sub_item_number_id_map = this->_dispatchedInfo<sub_item_type>().m_number_to_id_map;
 
   const auto& recv_item_of_item_numbers_by_proc =
     this->_dispatchedInfo<ItemOfItemT>().m_sub_item_numbers_to_recv_by_proc;
@@ -392,15 +345,12 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor()
     int l = 0;
     for (size_t i = 0; i < item_list_to_recv_size_by_proc[i_rank]; ++i) {
       std::vector<unsigned int> sub_item_vector;
-      for (int k = 0;
-           k < number_of_sub_item_per_item_to_recv_by_proc[i_rank][i]; ++k) {
-        const auto& searched_sub_item_id = sub_item_number_id_map.find(
-          recv_item_of_item_numbers_by_proc[i_rank][l++]);
+      for (int k = 0; k < number_of_sub_item_per_item_to_recv_by_proc[i_rank][i]; ++k) {
+        const auto& searched_sub_item_id = sub_item_number_id_map.find(recv_item_of_item_numbers_by_proc[i_rank][l++]);
         Assert(searched_sub_item_id != sub_item_number_id_map.end());
         sub_item_vector.push_back(searched_sub_item_id->second);
       }
-      m_new_descriptor.itemOfItemVector<ItemOfItemT>().emplace_back(
-        sub_item_vector);
+      m_new_descriptor.itemOfItemVector<ItemOfItemT>().emplace_back(sub_item_vector);
     }
   }
 }
@@ -410,40 +360,31 @@ template <ItemType item_type>
 void
 ConnectivityDispatcher<Dimension>::_buildRecvItemIdCorrespondanceByProc()
 {
-  const auto& item_list_to_send_by_proc =
-    this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
-  using ItemId = ItemIdT<item_type>;
+  const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+  using ItemId                          = ItemIdT<item_type>;
 
-  std::vector<Array<const ItemId>> recv_item_id_correspondance_by_proc(
-    parallel::size());
-  const ItemValue<const int, item_type>& item_number =
-    m_connectivity.template number<item_type>();
+  std::vector<Array<const ItemId>> recv_item_id_correspondance_by_proc(parallel::size());
+  const ItemValue<const int, item_type>& item_number = m_connectivity.template number<item_type>();
 
   std::vector<Array<const int>> send_item_number_by_proc(parallel::size());
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
     Array<int> send_item_number(item_list_to_send_by_proc[i_rank].size());
     const Array<const ItemId> send_item_id = item_list_to_send_by_proc[i_rank];
-    parallel_for(send_item_number.size(), PUGS_LAMBDA(const size_t& j) {
-      send_item_number[j] = item_number[send_item_id[j]];
-    });
+    parallel_for(
+      send_item_number.size(), PUGS_LAMBDA(const size_t& j) { send_item_number[j] = item_number[send_item_id[j]]; });
     send_item_number_by_proc[i_rank] = send_item_number;
   }
 
-  const auto& item_list_to_recv_size_by_proc =
-    this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
+  const auto& item_list_to_recv_size_by_proc = this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
   std::vector<Array<int>> recv_item_number_by_proc(parallel::size());
   for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-    recv_item_number_by_proc[i_rank] =
-      Array<int>(item_list_to_recv_size_by_proc[i_rank]);
+    recv_item_number_by_proc[i_rank] = Array<int>(item_list_to_recv_size_by_proc[i_rank]);
   }
   parallel::exchange(send_item_number_by_proc, recv_item_number_by_proc);
 
-  const auto& item_number_to_id_map =
-    this->_dispatchedInfo<item_type>().m_number_to_id_map;
-  for (size_t i_rank = 0; i_rank < item_list_to_recv_size_by_proc.size();
-       ++i_rank) {
-    Array<ItemId> item_id_correspondance(
-      item_list_to_recv_size_by_proc[i_rank]);
+  const auto& item_number_to_id_map = this->_dispatchedInfo<item_type>().m_number_to_id_map;
+  for (size_t i_rank = 0; i_rank < item_list_to_recv_size_by_proc.size(); ++i_rank) {
+    Array<ItemId> item_id_correspondance(item_list_to_recv_size_by_proc[i_rank]);
     for (size_t l = 0; l < item_list_to_recv_size_by_proc[i_rank]; ++l) {
       const int& item_number       = recv_item_number_by_proc[i_rank][l];
       const auto& searched_item_id = item_number_to_id_map.find(item_number);
@@ -452,8 +393,7 @@ ConnectivityDispatcher<Dimension>::_buildRecvItemIdCorrespondanceByProc()
     }
     recv_item_id_correspondance_by_proc[i_rank] = item_id_correspondance;
   }
-  this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc =
-    recv_item_id_correspondance_by_proc;
+  this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc = recv_item_id_correspondance_by_proc;
 }
 
 template <int Dimension>
@@ -464,14 +404,13 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
   using ItemId = ItemIdT<item_type>;
 
   // Getting references
-  Array<const size_t> number_of_item_ref_list_per_proc = parallel::allGather(
-    m_connectivity.template numberOfRefItemList<item_type>());
+  Array<const size_t> number_of_item_ref_list_per_proc =
+    parallel::allGather(m_connectivity.template numberOfRefItemList<item_type>());
 
   const size_t number_of_item_list_sender = [&]() {
     size_t number_of_item_list_sender = 0;
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-      number_of_item_list_sender +=
-        (number_of_item_ref_list_per_proc[i_rank] > 0);
+      number_of_item_list_sender += (number_of_item_ref_list_per_proc[i_rank] > 0);
     }
     return number_of_item_list_sender;
   }();
@@ -479,8 +418,7 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
   if (number_of_item_list_sender > 0) {
     if (number_of_item_list_sender > 1) {
       perr() << __FILE__ << ':' << __LINE__ << ": " << rang::fgB::red
-             << "need to check that knowing procs know the same item_ref_lists!"
-             << rang::fg::reset << '\n';
+             << "need to check that knowing procs know the same item_ref_lists!" << rang::fg::reset << '\n';
     }
 
     if (number_of_item_list_sender < parallel::size()) {
@@ -497,47 +435,34 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
       Assert(number_of_item_list_sender < parallel::size());
 
       // sending references tags
-      Array<RefId::TagNumberType> ref_tag_list{
-        number_of_item_ref_list_per_proc[sender_rank]};
+      Array<RefId::TagNumberType> ref_tag_list{number_of_item_ref_list_per_proc[sender_rank]};
       if (parallel::rank() == sender_rank) {
-        for (size_t i_item_ref_list = 0;
-             i_item_ref_list <
-             m_connectivity.template numberOfRefItemList<item_type>();
+        for (size_t i_item_ref_list = 0; i_item_ref_list < m_connectivity.template numberOfRefItemList<item_type>();
              ++i_item_ref_list) {
-          auto item_ref_list =
-            m_connectivity.template refItemList<item_type>(i_item_ref_list);
+          auto item_ref_list            = m_connectivity.template refItemList<item_type>(i_item_ref_list);
           ref_tag_list[i_item_ref_list] = item_ref_list.refId().tagNumber();
         }
       }
       parallel::broadcast(ref_tag_list, sender_rank);
 
       // sending references name size
-      Array<size_t> ref_name_size_list{
-        number_of_item_ref_list_per_proc[sender_rank]};
+      Array<size_t> ref_name_size_list{number_of_item_ref_list_per_proc[sender_rank]};
       if (parallel::rank() == sender_rank) {
-        for (size_t i_item_ref_list = 0;
-             i_item_ref_list <
-             m_connectivity.template numberOfRefItemList<item_type>();
+        for (size_t i_item_ref_list = 0; i_item_ref_list < m_connectivity.template numberOfRefItemList<item_type>();
              ++i_item_ref_list) {
-          auto item_ref_list =
-            m_connectivity.template refItemList<item_type>(i_item_ref_list);
-          ref_name_size_list[i_item_ref_list] =
-            item_ref_list.refId().tagName().size();
+          auto item_ref_list                  = m_connectivity.template refItemList<item_type>(i_item_ref_list);
+          ref_name_size_list[i_item_ref_list] = item_ref_list.refId().tagName().size();
         }
       }
       parallel::broadcast(ref_name_size_list, sender_rank);
 
       // sending references name size
-      Array<RefId::TagNameType::value_type> ref_name_cat{
-        sum(ref_name_size_list)};
+      Array<RefId::TagNameType::value_type> ref_name_cat{sum(ref_name_size_list)};
       if (parallel::rank() == sender_rank) {
         size_t i_char = 0;
-        for (size_t i_item_ref_list = 0;
-             i_item_ref_list <
-             m_connectivity.template numberOfRefItemList<item_type>();
+        for (size_t i_item_ref_list = 0; i_item_ref_list < m_connectivity.template numberOfRefItemList<item_type>();
              ++i_item_ref_list) {
-          auto item_ref_list =
-            m_connectivity.template refItemList<item_type>(i_item_ref_list);
+          auto item_ref_list = m_connectivity.template refItemList<item_type>(i_item_ref_list);
           for (auto c : item_ref_list.refId().tagName()) {
             ref_name_cat[i_char++] = c;
           }
@@ -551,8 +476,7 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
         size_t begining = 0;
         for (size_t i_ref = 0; i_ref < ref_name_size_list.size(); ++i_ref) {
           const size_t size = ref_name_size_list[i_ref];
-          ref_id_list.emplace_back(
-            ref_tag_list[i_ref], std::string{&(ref_name_cat[begining]), size});
+          ref_id_list.emplace_back(ref_tag_list[i_ref], std::string{&(ref_name_cat[begining]), size});
           begining += size;
         }
         return ref_id_list;
@@ -560,20 +484,16 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
 
       using block_type            = int32_t;
       constexpr size_t block_size = sizeof(block_type);
-      const size_t nb_block       = ref_id_list.size() / block_size +
-                              (ref_id_list.size() % block_size != 0);
+      const size_t nb_block       = ref_id_list.size() / block_size + (ref_id_list.size() % block_size != 0);
       for (size_t i_block = 0; i_block < nb_block; ++i_block) {
         ItemValue<block_type, item_type> item_references(m_connectivity);
         item_references.fill(0);
 
         if (m_connectivity.template numberOfRefItemList<item_type>() > 0) {
-          const size_t max_i_ref =
-            std::min(ref_id_list.size(), block_size * (i_block + 1));
-          for (size_t i_ref = block_size * i_block, i = 0; i_ref < max_i_ref;
-               ++i_ref, ++i) {
+          const size_t max_i_ref = std::min(ref_id_list.size(), block_size * (i_block + 1));
+          for (size_t i_ref = block_size * i_block, i = 0; i_ref < max_i_ref; ++i_ref, ++i) {
             block_type ref_bit{1 << i};
-            auto item_ref_list =
-              m_connectivity.template refItemList<item_type>(i_ref);
+            auto item_ref_list = m_connectivity.template refItemList<item_type>(i_ref);
 
             const auto& item_list = item_ref_list.list();
             for (size_t i_item = 0; i_item < item_list.size(); ++i_item) {
@@ -583,49 +503,42 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
           }
         }
 
-        const auto& nb_item_to_send_by_proc =
-          this->_dispatchedInfo<item_type>().m_list_to_send_size_by_proc;
+        const auto& nb_item_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_size_by_proc;
 
-        const auto& send_item_id_by_proc =
-          this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+        const auto& send_item_id_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
 
-        std::vector<Array<const block_type>> send_item_refs_by_proc(
-          parallel::size());
+        std::vector<Array<const block_type>> send_item_refs_by_proc(parallel::size());
 
         for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
           Array<block_type> send_item_refs(nb_item_to_send_by_proc[i_rank]);
           const Array<const ItemId> send_item_id = send_item_id_by_proc[i_rank];
-          parallel_for(send_item_id.size(), PUGS_LAMBDA(const size_t& l) {
-            const ItemId& item_id = send_item_id[l];
-            send_item_refs[l]     = item_references[item_id];
-          });
+          parallel_for(
+            send_item_id.size(), PUGS_LAMBDA(const size_t& l) {
+              const ItemId& item_id = send_item_id[l];
+              send_item_refs[l]     = item_references[item_id];
+            });
           send_item_refs_by_proc[i_rank] = send_item_refs;
         }
 
         std::vector<Array<block_type>> recv_item_refs_by_proc(parallel::size());
         for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
           recv_item_refs_by_proc[i_rank] =
-            Array<block_type>(this->_dispatchedInfo<item_type>()
-                                .m_list_to_recv_size_by_proc[i_rank]);
+            Array<block_type>(this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc[i_rank]);
         }
         parallel::exchange(send_item_refs_by_proc, recv_item_refs_by_proc);
 
         const auto& recv_item_id_correspondance_by_proc =
           this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc;
-        std::vector<block_type> item_refs(
-          m_new_descriptor.template itemNumberVector<item_type>().size());
+        std::vector<block_type> item_refs(m_new_descriptor.template itemNumberVector<item_type>().size());
         for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
           for (size_t r = 0; r < recv_item_refs_by_proc[i_rank].size(); ++r) {
-            const ItemId& item_id =
-              recv_item_id_correspondance_by_proc[i_rank][r];
-            item_refs[item_id] = recv_item_refs_by_proc[i_rank][r];
+            const ItemId& item_id = recv_item_id_correspondance_by_proc[i_rank][r];
+            item_refs[item_id]    = recv_item_refs_by_proc[i_rank][r];
           }
         }
 
-        const size_t max_i_ref =
-          std::min(ref_id_list.size(), block_size * (i_block + 1));
-        for (size_t i_ref = block_size * i_block, i = 0; i_ref < max_i_ref;
-             ++i_ref, ++i) {
+        const size_t max_i_ref = std::min(ref_id_list.size(), block_size * (i_block + 1));
+        for (size_t i_ref = block_size * i_block, i = 0; i_ref < max_i_ref; ++i_ref, ++i) {
           block_type ref_bit{1 << i};
 
           std::vector<ItemId> item_id_vector;
@@ -639,8 +552,7 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
 
           Array<const ItemId> item_id_array = convert_to_array(item_id_vector);
 
-          m_new_descriptor.addRefItemList(
-            RefItemList<item_type>(ref_id_list[i_ref], item_id_array));
+          m_new_descriptor.addRefItemList(RefItemList<item_type>(ref_id_list[i_ref], item_id_array));
         }
       }
     }
@@ -657,8 +569,7 @@ ConnectivityDispatcher<Dimension>::_dispatchEdges()
     this->_buildSubItemNumberToIdMap<EdgeOfCell>();
     this->_buildItemToExchangeLists<ItemType::edge>();
 
-    this->_gatherFrom(m_connectivity.template number<ItemType::edge>(),
-                      m_new_descriptor.edge_number_vector);
+    this->_gatherFrom(m_connectivity.template number<ItemType::edge>(), m_new_descriptor.edge_number_vector);
 
     this->_buildItemToSubItemDescriptor<EdgeOfCell>();
 
@@ -670,11 +581,9 @@ ConnectivityDispatcher<Dimension>::_dispatchEdges()
     this->_buildSubItemNumbersToRecvByProc<EdgeOfFace>();
     this->_buildItemToSubItemDescriptor<EdgeOfFace>();
 
-    this->_gatherFrom(m_connectivity.faceEdgeIsReversed(),
-                      m_new_descriptor.face_edge_is_reversed_vector);
+    this->_gatherFrom(m_connectivity.faceEdgeIsReversed(), m_new_descriptor.face_edge_is_reversed_vector);
 
-    this->_gatherFrom(this->_dispatchedInfo<ItemType::edge>().m_new_owner,
-                      m_new_descriptor.edge_owner_vector);
+    this->_gatherFrom(this->_dispatchedInfo<ItemType::edge>().m_new_owner, m_new_descriptor.edge_owner_vector);
 
     this->_buildItemReferenceList<ItemType::edge>();
   }
@@ -694,24 +603,20 @@ ConnectivityDispatcher<Dimension>::_dispatchFaces()
     this->_buildSubItemNumbersToRecvByProc<NodeOfFace>();
     this->_buildItemToSubItemDescriptor<NodeOfFace>();
 
-    this->_gatherFrom(m_connectivity.template number<ItemType::face>(),
-                      m_new_descriptor.face_number_vector);
+    this->_gatherFrom(m_connectivity.template number<ItemType::face>(), m_new_descriptor.face_number_vector);
 
     this->_buildItemToSubItemDescriptor<FaceOfCell>();
 
-    this->_gatherFrom(m_connectivity.cellFaceIsReversed(),
-                      m_new_descriptor.cell_face_is_reversed_vector);
+    this->_gatherFrom(m_connectivity.cellFaceIsReversed(), m_new_descriptor.cell_face_is_reversed_vector);
 
-    this->_gatherFrom(this->_dispatchedInfo<ItemType::face>().m_new_owner,
-                      m_new_descriptor.face_owner_vector);
+    this->_gatherFrom(this->_dispatchedInfo<ItemType::face>().m_new_owner, m_new_descriptor.face_owner_vector);
 
     this->_buildItemReferenceList<ItemType::face>();
   }
 }
 
 template <int Dimension>
-ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(
-  const ConnectivityType& connectivity)
+ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType& connectivity)
   : m_connectivity(connectivity)
 {
   this->_buildNewOwner<ItemType::cell>();
@@ -725,23 +630,18 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(
 
   this->_buildSubItemNumbersToRecvByProc<NodeOfCell>();
 
-  this->_gatherFrom(m_connectivity.template number<ItemType::cell>(),
-                    m_new_descriptor.cell_number_vector);
+  this->_gatherFrom(m_connectivity.template number<ItemType::cell>(), m_new_descriptor.cell_number_vector);
 
   this->_buildSubItemNumberToIdMap<NodeOfCell>();
 
   this->_buildItemToExchangeLists<ItemType::node>();
 
   // Fill new descriptor
-  this->_gatherFrom(m_connectivity.cellType(),
-                    m_new_descriptor.cell_type_vector);
-  this->_gatherFrom(this->_dispatchedInfo<ItemType::cell>().m_new_owner,
-                    m_new_descriptor.cell_owner_vector);
+  this->_gatherFrom(m_connectivity.cellType(), m_new_descriptor.cell_type_vector);
+  this->_gatherFrom(this->_dispatchedInfo<ItemType::cell>().m_new_owner, m_new_descriptor.cell_owner_vector);
 
-  this->_gatherFrom(m_connectivity.template number<ItemType::node>(),
-                    m_new_descriptor.node_number_vector);
-  this->_gatherFrom(this->_dispatchedInfo<ItemType::node>().m_new_owner,
-                    m_new_descriptor.node_owner_vector);
+  this->_gatherFrom(m_connectivity.template number<ItemType::node>(), m_new_descriptor.node_number_vector);
+  this->_gatherFrom(this->_dispatchedInfo<ItemType::node>().m_new_owner, m_new_descriptor.node_owner_vector);
 
   this->_buildItemToSubItemDescriptor<NodeOfCell>();
 
@@ -756,9 +656,6 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(
   m_dispatched_connectivity = ConnectivityType::build(m_new_descriptor);
 }
 
-template ConnectivityDispatcher<1>::ConnectivityDispatcher(
-  const ConnectivityType&);
-template ConnectivityDispatcher<2>::ConnectivityDispatcher(
-  const ConnectivityType&);
-template ConnectivityDispatcher<3>::ConnectivityDispatcher(
-  const ConnectivityType&);
+template ConnectivityDispatcher<1>::ConnectivityDispatcher(const ConnectivityType&);
+template ConnectivityDispatcher<2>::ConnectivityDispatcher(const ConnectivityType&);
+template ConnectivityDispatcher<3>::ConnectivityDispatcher(const ConnectivityType&);
diff --git a/src/mesh/ConnectivityDispatcher.hpp b/src/mesh/ConnectivityDispatcher.hpp
index afc2f2ef5002b68a39ced2a1320d4f73b5d97fbf..0e28f02e87ebef116ba02713450fe9e0a27cdc04 100644
--- a/src/mesh/ConnectivityDispatcher.hpp
+++ b/src/mesh/ConnectivityDispatcher.hpp
@@ -179,15 +179,12 @@ class ConnectivityDispatcher
   void _dispatchFaces();
 
   template <typename DataType, ItemType item_type, typename ConnectivityPtr>
-  void _gatherFrom(
-    const ItemValue<DataType, item_type, ConnectivityPtr>& data_to_gather,
-    std::vector<std::remove_const_t<DataType>>& gathered_vector);
+  void _gatherFrom(const ItemValue<DataType, item_type, ConnectivityPtr>& data_to_gather,
+                   std::vector<std::remove_const_t<DataType>>& gathered_vector);
 
   template <typename DataType, typename ItemOfItem, typename ConnectivityPtr>
-  void _gatherFrom(
-    const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>&
-      data_to_gather,
-    std::vector<Array<std::remove_const_t<DataType>>>& gathered_vector);
+  void _gatherFrom(const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>& data_to_gather,
+                   std::vector<Array<std::remove_const_t<DataType>>>& gathered_vector);
 
   template <typename SubItemOfItemT>
   void _buildNumberOfSubItemPerItemToRecvByProc();
@@ -214,35 +211,29 @@ class ConnectivityDispatcher
   {
     using ItemId          = ItemIdT<item_type>;
     using MutableDataType = std::remove_const_t<DataType>;
-    std::vector<Array<const DataType>> item_value_to_send_by_proc(
-      parallel::size());
+    std::vector<Array<const DataType>> item_value_to_send_by_proc(parallel::size());
 
-    const auto& item_list_to_send_by_proc =
-      this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+    const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
 
     for (size_t i = 0; i < parallel::size(); ++i) {
       const Array<const ItemId>& item_list = item_list_to_send_by_proc[i];
       Array<MutableDataType> item_value_list(item_list.size());
-      parallel_for(item_list.size(), PUGS_LAMBDA(const ItemId& item_id) {
-        item_value_list[item_id] = item_value[item_list[item_id]];
-      });
+      parallel_for(
+        item_list.size(),
+        PUGS_LAMBDA(const ItemId& item_id) { item_value_list[item_id] = item_value[item_list[item_id]]; });
       item_value_to_send_by_proc[i] = item_value_list;
     }
 
-    std::vector<Array<MutableDataType>> recv_item_value_by_proc(
-      parallel::size());
+    std::vector<Array<MutableDataType>> recv_item_value_by_proc(parallel::size());
     {
-      const auto& list_to_recv_size_by_proc =
-        this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
+      const auto& list_to_recv_size_by_proc = this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
       for (size_t i = 0; i < parallel::size(); ++i) {
-        recv_item_value_by_proc[i] =
-          Array<MutableDataType>(list_to_recv_size_by_proc[i]);
+        recv_item_value_by_proc[i] = Array<MutableDataType>(list_to_recv_size_by_proc[i]);
       }
     }
     parallel::exchange(item_value_to_send_by_proc, recv_item_value_by_proc);
 
-    std::vector<Array<const DataType>> const_recv_item_value_by_proc(
-      parallel::size());
+    std::vector<Array<const DataType>> const_recv_item_value_by_proc(parallel::size());
     for (size_t i = 0; i < parallel::size(); ++i) {
       const_recv_item_value_by_proc[i] = recv_item_value_by_proc[i];
     }
@@ -256,46 +247,40 @@ class ConnectivityDispatcher
   {
     using ItemId = ItemIdT<item_type>;
 
-    Assert(m_dispatched_connectivity.use_count() > 0,
-           "cannot dispatch quantity before connectivity");
+    Assert(m_dispatched_connectivity.use_count() > 0, "cannot dispatch quantity before connectivity");
 
-    const auto& item_list_to_send_by_proc =
-      this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
+    const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc;
 
     using MutableDataType = std::remove_const_t<DataType>;
     std::vector<Array<DataType>> item_value_to_send_by_proc(parallel::size());
     for (size_t i = 0; i < parallel::size(); ++i) {
       const Array<const ItemId>& item_list = item_list_to_send_by_proc[i];
       Array<MutableDataType> item_value_list(item_list.size());
-      parallel_for(item_list.size(), PUGS_LAMBDA(const ItemId& item_id) {
-        item_value_list[item_id] = item_value[item_list[item_id]];
-      });
+      parallel_for(
+        item_list.size(),
+        PUGS_LAMBDA(const ItemId& item_id) { item_value_list[item_id] = item_value[item_list[item_id]]; });
       item_value_to_send_by_proc[i] = item_value_list;
     }
 
-    const auto& item_list_to_recv_size_by_proc =
-      this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
-    std::vector<Array<MutableDataType>> recv_item_value_by_proc(
-      parallel::size());
+    const auto& item_list_to_recv_size_by_proc = this->_dispatchedInfo<item_type>().m_list_to_recv_size_by_proc;
+    std::vector<Array<MutableDataType>> recv_item_value_by_proc(parallel::size());
     for (size_t i = 0; i < parallel::size(); ++i) {
-      recv_item_value_by_proc[i] =
-        Array<MutableDataType>(item_list_to_recv_size_by_proc[i]);
+      recv_item_value_by_proc[i] = Array<MutableDataType>(item_list_to_recv_size_by_proc[i]);
     }
 
     parallel::exchange(item_value_to_send_by_proc, recv_item_value_by_proc);
 
     const auto& recv_item_id_correspondance_by_proc =
       this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc;
-    ItemValue<MutableDataType, item_type> new_item_value(
-      *m_dispatched_connectivity);
+    ItemValue<MutableDataType, item_type> new_item_value(*m_dispatched_connectivity);
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-      const auto& recv_item_id_correspondance =
-        recv_item_id_correspondance_by_proc[i_rank];
-      const auto& recv_item_value = recv_item_value_by_proc[i_rank];
-      parallel_for(recv_item_value.size(), PUGS_LAMBDA(size_t r) {
-        const ItemId& item_id   = recv_item_id_correspondance[r];
-        new_item_value[item_id] = recv_item_value[r];
-      });
+      const auto& recv_item_id_correspondance = recv_item_id_correspondance_by_proc[i_rank];
+      const auto& recv_item_value             = recv_item_value_by_proc[i_rank];
+      parallel_for(
+        recv_item_value.size(), PUGS_LAMBDA(size_t r) {
+          const ItemId& item_id   = recv_item_id_correspondance[r];
+          new_item_value[item_id] = recv_item_value[r];
+        });
     }
     return new_item_value;
   }
diff --git a/src/mesh/ConnectivityMatrix.hpp b/src/mesh/ConnectivityMatrix.hpp
index 6573d011daaac3430df4a77b3283b624af76f057..0ddb21a964e18e9adae051e536c5a3f266c0e8bb 100644
--- a/src/mesh/ConnectivityMatrix.hpp
+++ b/src/mesh/ConnectivityMatrix.hpp
@@ -66,10 +66,7 @@ class ConnectivityMatrix
 
   PUGS_INLINE
   ConnectivityMatrix(const std::vector<std::vector<unsigned int>>& initializer)
-    : m_host_matrix{Kokkos::create_staticcrsgraph<HostMatrix>(
-        "connectivity_matrix",
-        initializer)},
-      m_is_built{true}
+    : m_host_matrix{Kokkos::create_staticcrsgraph<HostMatrix>("connectivity_matrix", initializer)}, m_is_built{true}
   {
     ;
   }
diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index 3dcbb21df29e36ef2023f925209bce5c847c308c..3d2c7985b58fcea14015334d2b1e329b9e51d8c3 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -37,9 +37,8 @@ class ErrorHandler
   };
 
  private:
-  const std::string
-    __filename; /**< The source file name where the error occured */
-  const size_t __lineNumber; /**< The line number where exception was raised */
+  const std::string __filename;     /**< The source file name where the error occured */
+  const size_t __lineNumber;        /**< The line number where exception was raised */
   const std::string __errorMessage; /**< The reporting message */
 
   const Type __type; /**< the type of the error */
@@ -56,10 +55,7 @@ class ErrorHandler
    * @param e an handled error
    */
   ErrorHandler(const ErrorHandler& e)
-    : __filename(e.__filename),
-      __lineNumber(e.__lineNumber),
-      __errorMessage(e.__errorMessage),
-      __type(e.__type)
+    : __filename(e.__filename), __lineNumber(e.__lineNumber), __errorMessage(e.__errorMessage), __type(e.__type)
   {
     ;
   }
@@ -91,39 +87,32 @@ void
 ErrorHandler::writeErrorMessage() const
 {
   switch (__type) {
-    case asked: {
-      perr() << "\nremark: exit command explicitly called\n";
-      [[fallthrough]];
-    }
-    case normal: {
-      perr() << '\n'
-             << __filename << ':' << __lineNumber
-             << ":remark: emitted the following message\n";
-      perr() << "error: " << __errorMessage << '\n';
-      break;
-    }
-    case compilation: {
-      perr() << "\nline " << __lineNumber << ':' << __errorMessage << '\n';
-      break;
-    }
-    case unexpected: {
-      perr() << '\n'
-             << __filename << ':' << __lineNumber << ":\n"
-             << __errorMessage << '\n';
-      perr()
-        << "\nUNEXPECTED ERROR: this should not occure, please report it\n";
-      perr() << "\nBUG REPORT: Please send bug reports to:\n"
-             << "  ff3d-dev@nongnu.org or freefem@ann.jussieu.fr\n"
-             << "or better, use the Bug Tracking System:\n"
-             << "  http://savannah.nongnu.org/bugs/?group=ff3d\n";
-      break;
-    }
-    default: {
-      perr() << __filename << ':' << __lineNumber << ": " << __errorMessage
-             << '\n';
-      perr() << __FILE__ << ':' << __LINE__
-             << ":remark:  error type not implemented!\n";
-    }
+  case asked: {
+    perr() << "\nremark: exit command explicitly called\n";
+    [[fallthrough]];
+  }
+  case normal: {
+    perr() << '\n' << __filename << ':' << __lineNumber << ":remark: emitted the following message\n";
+    perr() << "error: " << __errorMessage << '\n';
+    break;
+  }
+  case compilation: {
+    perr() << "\nline " << __lineNumber << ':' << __errorMessage << '\n';
+    break;
+  }
+  case unexpected: {
+    perr() << '\n' << __filename << ':' << __lineNumber << ":\n" << __errorMessage << '\n';
+    perr() << "\nUNEXPECTED ERROR: this should not occure, please report it\n";
+    perr() << "\nBUG REPORT: Please send bug reports to:\n"
+           << "  ff3d-dev@nongnu.org or freefem@ann.jussieu.fr\n"
+           << "or better, use the Bug Tracking System:\n"
+           << "  http://savannah.nongnu.org/bugs/?group=ff3d\n";
+    break;
+  }
+  default: {
+    perr() << __filename << ':' << __lineNumber << ": " << __errorMessage << '\n';
+    perr() << __FILE__ << ':' << __LINE__ << ":remark:  error type not implemented!\n";
+  }
   }
 }
 
@@ -131,10 +120,7 @@ ErrorHandler::ErrorHandler(const std::string& filename,
                            const size_t& lineNumber,
                            const std::string& errorMessage,
                            const Type& type)
-  : __filename(filename),
-    __lineNumber(lineNumber),
-    __errorMessage(errorMessage),
-    __type(type)
+  : __filename(filename), __lineNumber(lineNumber), __errorMessage(errorMessage), __type(type)
 {
   ;
 }
@@ -215,23 +201,18 @@ class ConnectivityFace<2>
   bool
   operator<(const ConnectivityFace& f) const
   {
-    return (
-      (m_node_number_vector[m_node0_id] < m_node_number_vector[f.m_node0_id]) or
-      ((m_node_number_vector[m_node0_id] ==
-        m_node_number_vector[f.m_node0_id]) and
-       (m_node_number_vector[m_node1_id] <
-        m_node_number_vector[f.m_node1_id])));
+    return ((m_node_number_vector[m_node0_id] < m_node_number_vector[f.m_node0_id]) or
+            ((m_node_number_vector[m_node0_id] == m_node_number_vector[f.m_node0_id]) and
+             (m_node_number_vector[m_node1_id] < m_node_number_vector[f.m_node1_id])));
   }
 
   PUGS_INLINE
-  ConnectivityFace(const std::vector<unsigned int>& node_id_list,
-                   const std::vector<int>& node_number_vector)
+  ConnectivityFace(const std::vector<unsigned int>& node_id_list, const std::vector<int>& node_number_vector)
     : m_node_number_vector(node_number_vector)
   {
     Assert(node_id_list.size() == 2);
 
-    if (m_node_number_vector[node_id_list[0]] <
-        m_node_number_vector[node_id_list[1]]) {
+    if (m_node_number_vector[node_id_list[0]] < m_node_number_vector[node_id_list[1]]) {
       m_node0_id = node_id_list[0];
       m_node1_id = node_id_list[1];
       m_reversed = false;
@@ -281,12 +262,10 @@ class ConnectivityFace<3>
     const int shift   = std::distance(node_list.begin(), min_id);
 
     std::vector<unsigned int> rotated_node_list(node_list.size());
-    if (node_list[(shift + 1) % node_list.size()] >
-        node_list[(shift + node_list.size() - 1) % node_list.size()]) {
+    if (node_list[(shift + 1) % node_list.size()] > node_list[(shift + node_list.size() - 1) % node_list.size()]) {
       for (size_t i = 0; i < node_list.size(); ++i) {
-        rotated_node_list[i] =
-          node_list[(shift + node_list.size() - i) % node_list.size()];
-        m_reversed = true;
+        rotated_node_list[i] = node_list[(shift + node_list.size() - i) % node_list.size()];
+        m_reversed           = true;
       }
     } else {
       for (size_t i = 0; i < node_list.size(); ++i) {
@@ -313,11 +292,8 @@ class ConnectivityFace<3>
   }
 
   PUGS_INLINE
-  ConnectivityFace(const std::vector<unsigned int>& given_node_id_list,
-                   const std::vector<int>& node_number_vector)
-    : m_reversed(false),
-      m_node_id_list(_sort(given_node_id_list)),
-      m_node_number_vector(node_number_vector)
+  ConnectivityFace(const std::vector<unsigned int>& given_node_id_list, const std::vector<int>& node_number_vector)
+    : m_reversed(false), m_node_id_list(_sort(given_node_id_list)), m_node_number_vector(node_number_vector)
   {
     ;
   }
@@ -341,8 +317,7 @@ class ConnectivityFace<3>
   bool
   operator<(const ConnectivityFace& f) const
   {
-    const size_t min_nb_nodes =
-      std::min(f.m_node_id_list.size(), m_node_id_list.size());
+    const size_t min_nb_nodes = std::min(f.m_node_id_list.size(), m_node_id_list.size());
     for (size_t i = 0; i < min_nb_nodes; ++i) {
       if (m_node_id_list[i] < f.m_node_id_list[i])
         return true;
@@ -435,95 +410,87 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
       // Getting vertices list
       GmshReader::Keyword kw = this->__nextKeyword();
       switch (kw.second) {
-        // case NOD: {
-        //   this->__readGmsh1();
-        //   break;
-        // }
-        case MESHFORMAT: {
-          double fileVersion = this->_getReal();
-          if (fileVersion != 2.2) {
-            throw ErrorHandler(__FILE__, __LINE__,
-                               "Cannot read Gmsh format '" +
-                                 std::to_string(fileVersion) + "'",
-                               ErrorHandler::normal);
-          }
-          int fileType = this->_getInteger();
-          __binary     = (fileType == 1);
-          if ((fileType < 0) or (fileType > 1)) {
-            throw ErrorHandler(__FILE__, __LINE__,
-                               "Cannot read Gmsh file type '" +
-                                 std::to_string(fileType) + "'",
-                               ErrorHandler::normal);
-          }
-
-          int dataSize = this->_getInteger();
-          if (dataSize != sizeof(double)) {
-            throw ErrorHandler(__FILE__, __LINE__,
-                               "Data size not supported '" +
-                                 std::to_string(dataSize) + "'",
-                               ErrorHandler::normal);
-          }
-
-          if (__binary) {
-            //       int one=0;
-
-            //       fseek(__ifh,1L,SEEK_CUR);
-            //       fread(reinterpret_cast<char*>(&one),sizeof(int),1,__ifh);
-
-            //       if (one == 1) {
-            // 	__convertEndian = false;
-            //       } else {
-            // 	invertEndianess(one);
-
-            // 	if (one == 1) {
-            // 	  __convertEndian = true;
-            // 	} else {
-            // 	  throw ErrorHandler(__FILE__,__LINE__,
-            // 	  		     "Cannot determine endianess",
-            // 	  		     ErrorHandler::normal);
-            // 	}
-            // }
-
-            //       pout() << "- Binary format: ";
-            // #ifdef    WORDS_BIGENDIAN
-            //       if (not __convertEndian) {
-            // 	pout() << "big endian\n";
-            //       } else {
-            // 	pout() << "little endian\n";
-            //       }
-            // #else  // WORDS_BIGENDIAN
-            //       if (not __convertEndian) {
-            // 	pout() << "little endian\n";
-            //       } else {
-            // 	pout() << "big endian\n";
-            //       }
-            // #endif // WORDS_BIGENDIAN
-          }
-
-          kw = this->__nextKeyword();
-          if (kw.second != ENDMESHFORMAT) {
-            throw ErrorHandler(__FILE__, __LINE__,
-                               "reading file '" + m_filename +
-                                 "': expecting $EndMeshFormat, '" + kw.first +
-                                 "' was found",
-                               ErrorHandler::normal);
-          }
+      // case NOD: {
+      //   this->__readGmsh1();
+      //   break;
+      // }
+      case MESHFORMAT: {
+        double fileVersion = this->_getReal();
+        if (fileVersion != 2.2) {
+          throw ErrorHandler(__FILE__, __LINE__, "Cannot read Gmsh format '" + std::to_string(fileVersion) + "'",
+                             ErrorHandler::normal);
+        }
+        int fileType = this->_getInteger();
+        __binary     = (fileType == 1);
+        if ((fileType < 0) or (fileType > 1)) {
+          throw ErrorHandler(__FILE__, __LINE__, "Cannot read Gmsh file type '" + std::to_string(fileType) + "'",
+                             ErrorHandler::normal);
+        }
 
-          this->__readGmshFormat2_2();
+        int dataSize = this->_getInteger();
+        if (dataSize != sizeof(double)) {
+          throw ErrorHandler(__FILE__, __LINE__, "Data size not supported '" + std::to_string(dataSize) + "'",
+                             ErrorHandler::normal);
+        }
 
-          break;
+        if (__binary) {
+          //       int one=0;
+
+          //       fseek(__ifh,1L,SEEK_CUR);
+          //       fread(reinterpret_cast<char*>(&one),sizeof(int),1,__ifh);
+
+          //       if (one == 1) {
+          // 	__convertEndian = false;
+          //       } else {
+          // 	invertEndianess(one);
+
+          // 	if (one == 1) {
+          // 	  __convertEndian = true;
+          // 	} else {
+          // 	  throw ErrorHandler(__FILE__,__LINE__,
+          // 	  		     "Cannot determine endianess",
+          // 	  		     ErrorHandler::normal);
+          // 	}
+          // }
+
+          //       pout() << "- Binary format: ";
+          // #ifdef    WORDS_BIGENDIAN
+          //       if (not __convertEndian) {
+          // 	pout() << "big endian\n";
+          //       } else {
+          // 	pout() << "little endian\n";
+          //       }
+          // #else  // WORDS_BIGENDIAN
+          //       if (not __convertEndian) {
+          // 	pout() << "little endian\n";
+          //       } else {
+          // 	pout() << "big endian\n";
+          //       }
+          // #endif // WORDS_BIGENDIAN
         }
-        default: {
+
+        kw = this->__nextKeyword();
+        if (kw.second != ENDMESHFORMAT) {
           throw ErrorHandler(__FILE__, __LINE__,
-                             "cannot determine format version of '" +
-                               m_filename + "'",
+                             "reading file '" + m_filename + "': expecting $EndMeshFormat, '" + kw.first +
+                               "' was found",
                              ErrorHandler::normal);
         }
+
+        this->__readGmshFormat2_2();
+
+        break;
+      }
+      default: {
+        throw ErrorHandler(__FILE__, __LINE__, "cannot determine format version of '" + m_filename + "'",
+                           ErrorHandler::normal);
+      }
       }
 
       this->__proceedData();
       // this->__createMesh();
-    } catch (const ErrorHandler& e) {
+    }
+    catch (const ErrorHandler& e) {
       e.writeErrorMessage();
       std::exit(0);
     }
@@ -554,22 +521,22 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
       return *begin(dimension_set);
     }();
     switch (mesh_dimension) {
-      case 1: {
-        this->_dispatch<1>();
-        break;
-      }
-      case 2: {
-        this->_dispatch<2>();
-        break;
-      }
-      case 3: {
-        this->_dispatch<3>();
-        break;
-      }
-      default: {
-        perr() << "unexpected dimension " << mesh_dimension << '\n';
-        std::exit(1);
-      }
+    case 1: {
+      this->_dispatch<1>();
+      break;
+    }
+    case 2: {
+      this->_dispatch<2>();
+      break;
+    }
+    case 3: {
+      this->_dispatch<3>();
+      break;
+    }
+    default: {
+      perr() << "unexpected dimension " << mesh_dimension << '\n';
+      std::exit(1);
+    }
     }
   }
 }
@@ -580,9 +547,7 @@ GmshReader::__readVertices()
   const int numberOfVerices = this->_getInteger();
   pout() << "- Number Of Vertices: " << numberOfVerices << '\n';
   if (numberOfVerices < 0) {
-    throw ErrorHandler(__FILE__, __LINE__,
-                       "reading file '" + this->m_filename +
-                         "': number of vertices is negative",
+    throw ErrorHandler(__FILE__, __LINE__, "reading file '" + this->m_filename + "': number of vertices is negative",
                        ErrorHandler::normal);
   }
 
@@ -676,9 +641,7 @@ GmshReader::__readElements2_2()
   const int numberOfElements = this->_getInteger();
   pout() << "- Number Of Elements: " << numberOfElements << '\n';
   if (numberOfElements < 0) {
-    throw ErrorHandler(__FILE__, __LINE__,
-                       "reading file '" + m_filename +
-                         "': number of elements is negative",
+    throw ErrorHandler(__FILE__, __LINE__, "reading file '" + m_filename + "': number of elements is negative",
                        ErrorHandler::normal);
   }
 
@@ -694,9 +657,8 @@ GmshReader::__readElements2_2()
 
       if ((elementType < 0) or (elementType > 14)) {
         throw ErrorHandler(__FILE__, __LINE__,
-                           "reading file '" + m_filename +
-                             "': unknown element type '" +
-                             std::to_string(elementType) + "'",
+                           "reading file '" + m_filename + "': unknown element type '" + std::to_string(elementType) +
+                             "'",
                            ErrorHandler::normal);
       }
       __elementType[i]       = elementType;
@@ -789,13 +751,11 @@ GmshReader::__readPhysicalNames2_2()
     m_fin >> physical_name;
     physical_name = std::regex_replace(physical_name, std::regex("(\")"), "");
 
-    PhysicalRefId physical_ref_id(physical_dimension,
-                                  RefId(physical_number, physical_name));
+    PhysicalRefId physical_ref_id(physical_dimension, RefId(physical_number, physical_name));
     auto searched_physical_ref_id = m_physical_ref_map.find(physical_number);
     if (searched_physical_ref_id != m_physical_ref_map.end()) {
-      perr() << "Physical reference id '" << physical_ref_id
-             << "' already defined as '" << searched_physical_ref_id->second
-             << "'!";
+      perr() << "Physical reference id '" << physical_ref_id << "' already defined as '"
+             << searched_physical_ref_id->second << "'!";
       std::exit(0);
     }
     m_physical_ref_map[physical_number] = physical_ref_id;
@@ -804,11 +764,9 @@ GmshReader::__readPhysicalNames2_2()
 
 template <size_t Dimension>
 void
-GmshReader::__computeCellFaceAndFaceNodeConnectivities(
-  ConnectivityDescriptor& descriptor)
+GmshReader::__computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& descriptor)
 {
-  static_assert((Dimension == 2) or (Dimension == 3),
-                "Invalid dimension to compute cell-face connectivities");
+  static_assert((Dimension == 2) or (Dimension == 3), "Invalid dimension to compute cell-face connectivities");
   using CellFaceInfo = std::tuple<CellId, unsigned short, bool>;
   using Face         = ConnectivityFace<Dimension>;
 
@@ -820,117 +778,104 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(
 
     if constexpr (Dimension == 2) {
       switch (descriptor.cell_type_vector[j]) {
-        case CellType::Triangle: {
-          cell_nb_faces[j] = 3;
-          // face 0
-          Face f0({cell_nodes[1], cell_nodes[2]}, node_number_vector);
-          face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
-
-          // face 1
-          Face f1({cell_nodes[2], cell_nodes[0]}, node_number_vector);
-          face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
-
-          // face 2
-          Face f2({cell_nodes[0], cell_nodes[1]}, node_number_vector);
-          face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
-          break;
-        }
-        case CellType::Quadrangle: {
-          cell_nb_faces[j] = 4;
-          // face 0
-          Face f0({cell_nodes[0], cell_nodes[1]}, node_number_vector);
-          face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
-
-          // face 1
-          Face f1({cell_nodes[1], cell_nodes[2]}, node_number_vector);
-          face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
-
-          // face 2
-          Face f2({cell_nodes[2], cell_nodes[3]}, node_number_vector);
-          face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
-
-          // face 3
-          Face f3({cell_nodes[3], cell_nodes[0]}, node_number_vector);
-          face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
-          break;
-        }
-        default: {
-          perr() << name(descriptor.cell_type_vector[j])
-                 << ": unexpected cell type in dimension 2!\n";
-          std::terminate();
-        }
+      case CellType::Triangle: {
+        cell_nb_faces[j] = 3;
+        // face 0
+        Face f0({cell_nodes[1], cell_nodes[2]}, node_number_vector);
+        face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
+
+        // face 1
+        Face f1({cell_nodes[2], cell_nodes[0]}, node_number_vector);
+        face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
+
+        // face 2
+        Face f2({cell_nodes[0], cell_nodes[1]}, node_number_vector);
+        face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
+        break;
+      }
+      case CellType::Quadrangle: {
+        cell_nb_faces[j] = 4;
+        // face 0
+        Face f0({cell_nodes[0], cell_nodes[1]}, node_number_vector);
+        face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
+
+        // face 1
+        Face f1({cell_nodes[1], cell_nodes[2]}, node_number_vector);
+        face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
+
+        // face 2
+        Face f2({cell_nodes[2], cell_nodes[3]}, node_number_vector);
+        face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
+
+        // face 3
+        Face f3({cell_nodes[3], cell_nodes[0]}, node_number_vector);
+        face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
+        break;
+      }
+      default: {
+        perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 2!\n";
+        std::terminate();
+      }
       }
     } else if constexpr (Dimension == 3) {
       switch (descriptor.cell_type_vector[j]) {
-        case CellType::Tetrahedron: {
-          cell_nb_faces[j] = 4;
-          // face 0
-          Face f0({cell_nodes[1], cell_nodes[2], cell_nodes[3]},
-                  node_number_vector);
-          face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
-
-          // face 1
-          Face f1({cell_nodes[0], cell_nodes[3], cell_nodes[2]},
-                  node_number_vector);
-          face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
-
-          // face 2
-          Face f2({cell_nodes[0], cell_nodes[1], cell_nodes[3]},
-                  node_number_vector);
-          face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
-
-          // face 3
-          Face f3({cell_nodes[0], cell_nodes[2], cell_nodes[1]},
-                  node_number_vector);
-          face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
-          break;
-        }
-        case CellType::Hexahedron: {
-          // face 0
-          Face f0({cell_nodes[3], cell_nodes[2], cell_nodes[1], cell_nodes[0]},
-                  node_number_vector);
-          face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
-
-          // face 1
-          Face f1({cell_nodes[4], cell_nodes[5], cell_nodes[6], cell_nodes[7]},
-                  node_number_vector);
-          face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
-
-          // face 2
-          Face f2({cell_nodes[0], cell_nodes[4], cell_nodes[7], cell_nodes[3]},
-                  node_number_vector);
-          face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
-
-          // face 3
-          Face f3({cell_nodes[1], cell_nodes[2], cell_nodes[6], cell_nodes[5]},
-                  node_number_vector);
-          face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
-
-          // face 4
-          Face f4({cell_nodes[0], cell_nodes[1], cell_nodes[5], cell_nodes[4]},
-                  node_number_vector);
-          face_cells_map[f4].emplace_back(std::make_tuple(j, 4, f4.reversed()));
-
-          // face 5
-          Face f5({cell_nodes[3], cell_nodes[7], cell_nodes[6], cell_nodes[2]},
-                  node_number_vector);
-          face_cells_map[f5].emplace_back(std::make_tuple(j, 5, f5.reversed()));
-
-          cell_nb_faces[j] = 6;
-          break;
-        }
-        default: {
-          perr() << name(descriptor.cell_type_vector[j])
-                 << ": unexpected cell type in dimension 3!\n";
-          std::terminate();
-        }
+      case CellType::Tetrahedron: {
+        cell_nb_faces[j] = 4;
+        // face 0
+        Face f0({cell_nodes[1], cell_nodes[2], cell_nodes[3]}, node_number_vector);
+        face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
+
+        // face 1
+        Face f1({cell_nodes[0], cell_nodes[3], cell_nodes[2]}, node_number_vector);
+        face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
+
+        // face 2
+        Face f2({cell_nodes[0], cell_nodes[1], cell_nodes[3]}, node_number_vector);
+        face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
+
+        // face 3
+        Face f3({cell_nodes[0], cell_nodes[2], cell_nodes[1]}, node_number_vector);
+        face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
+        break;
+      }
+      case CellType::Hexahedron: {
+        // face 0
+        Face f0({cell_nodes[3], cell_nodes[2], cell_nodes[1], cell_nodes[0]}, node_number_vector);
+        face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
+
+        // face 1
+        Face f1({cell_nodes[4], cell_nodes[5], cell_nodes[6], cell_nodes[7]}, node_number_vector);
+        face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
+
+        // face 2
+        Face f2({cell_nodes[0], cell_nodes[4], cell_nodes[7], cell_nodes[3]}, node_number_vector);
+        face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
+
+        // face 3
+        Face f3({cell_nodes[1], cell_nodes[2], cell_nodes[6], cell_nodes[5]}, node_number_vector);
+        face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
+
+        // face 4
+        Face f4({cell_nodes[0], cell_nodes[1], cell_nodes[5], cell_nodes[4]}, node_number_vector);
+        face_cells_map[f4].emplace_back(std::make_tuple(j, 4, f4.reversed()));
+
+        // face 5
+        Face f5({cell_nodes[3], cell_nodes[7], cell_nodes[6], cell_nodes[2]}, node_number_vector);
+        face_cells_map[f5].emplace_back(std::make_tuple(j, 5, f5.reversed()));
+
+        cell_nb_faces[j] = 6;
+        break;
+      }
+      default: {
+        perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n";
+        std::terminate();
+      }
       }
     }
   }
 
   {
-    descriptor.cell_to_face_vector.resize(
-      descriptor.cell_to_node_vector.size());
+    descriptor.cell_to_face_vector.resize(descriptor.cell_to_node_vector.size());
     for (CellId j = 0; j < descriptor.cell_to_face_vector.size(); ++j) {
       descriptor.cell_to_face_vector[j].resize(cell_nb_faces[j]);
     }
@@ -938,7 +883,7 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(
     for (const auto& face_cells_vector : face_cells_map) {
       const auto& cells_vector = face_cells_vector.second;
       for (unsigned short lj = 0; lj < cells_vector.size(); ++lj) {
-        const auto& [cell_number, cell_local_face, reversed] = cells_vector[lj];
+        const auto& [cell_number, cell_local_face, reversed]         = cells_vector[lj];
         descriptor.cell_to_face_vector[cell_number][cell_local_face] = l;
       }
       ++l;
@@ -946,19 +891,15 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(
   }
 
   {
-    descriptor.cell_face_is_reversed_vector.resize(
-      descriptor.cell_to_node_vector.size());
-    for (CellId j = 0; j < descriptor.cell_face_is_reversed_vector.size();
-         ++j) {
-      descriptor.cell_face_is_reversed_vector[j] =
-        Array<bool>(cell_nb_faces[j]);
+    descriptor.cell_face_is_reversed_vector.resize(descriptor.cell_to_node_vector.size());
+    for (CellId j = 0; j < descriptor.cell_face_is_reversed_vector.size(); ++j) {
+      descriptor.cell_face_is_reversed_vector[j] = Array<bool>(cell_nb_faces[j]);
     }
     for (const auto& face_cells_vector : face_cells_map) {
       const auto& cells_vector = face_cells_vector.second;
       for (unsigned short lj = 0; lj < cells_vector.size(); ++lj) {
-        const auto& [cell_number, cell_local_face, reversed] = cells_vector[lj];
-        descriptor.cell_face_is_reversed_vector[cell_number][cell_local_face] =
-          reversed;
+        const auto& [cell_number, cell_local_face, reversed]                  = cells_vector[lj];
+        descriptor.cell_face_is_reversed_vector[cell_number][cell_local_face] = reversed;
       }
     }
   }
@@ -984,11 +925,9 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(
 
 template <size_t Dimension>
 void
-GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(
-  ConnectivityDescriptor& descriptor)
+GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(ConnectivityDescriptor& descriptor)
 {
-  static_assert(Dimension == 3,
-                "Invalid dimension to compute face-edge connectivities");
+  static_assert(Dimension == 3, "Invalid dimension to compute face-edge connectivities");
   using FaceEdgeInfo = std::tuple<FaceId, unsigned short, bool>;
   using Edge         = ConnectivityFace<2>;
 
@@ -1004,17 +943,14 @@ GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(
       edge_faces_map[e].emplace_back(std::make_tuple(l, r, e.reversed()));
     }
     {
-      Edge e({face_nodes[face_nodes.size() - 1], face_nodes[0]},
-             node_number_vector);
-      edge_faces_map[e].emplace_back(
-        std::make_tuple(l, face_nodes.size() - 1, e.reversed()));
+      Edge e({face_nodes[face_nodes.size() - 1], face_nodes[0]}, node_number_vector);
+      edge_faces_map[e].emplace_back(std::make_tuple(l, face_nodes.size() - 1, e.reversed()));
     }
   }
 
   std::unordered_map<Edge, EdgeId, typename Edge::Hash> edge_id_map;
   {
-    descriptor.face_to_edge_vector.resize(
-      descriptor.face_to_node_vector.size());
+    descriptor.face_to_edge_vector.resize(descriptor.face_to_node_vector.size());
     for (FaceId l = 0; l < descriptor.face_to_node_vector.size(); ++l) {
       descriptor.face_to_edge_vector[l].resize(face_nb_edges[l]);
     }
@@ -1022,7 +958,7 @@ GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(
     for (const auto& edge_faces_vector : edge_faces_map) {
       const auto& faces_vector = edge_faces_vector.second;
       for (unsigned short l = 0; l < faces_vector.size(); ++l) {
-        const auto& [face_number, face_local_edge, reversed] = faces_vector[l];
+        const auto& [face_number, face_local_edge, reversed]         = faces_vector[l];
         descriptor.face_to_edge_vector[face_number][face_local_edge] = e;
       }
       edge_id_map[edge_faces_vector.first] = e;
@@ -1031,19 +967,15 @@ GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(
   }
 
   {
-    descriptor.face_edge_is_reversed_vector.resize(
-      descriptor.face_to_node_vector.size());
-    for (FaceId j = 0; j < descriptor.face_edge_is_reversed_vector.size();
-         ++j) {
-      descriptor.face_edge_is_reversed_vector[j] =
-        Array<bool>(face_nb_edges[j]);
+    descriptor.face_edge_is_reversed_vector.resize(descriptor.face_to_node_vector.size());
+    for (FaceId j = 0; j < descriptor.face_edge_is_reversed_vector.size(); ++j) {
+      descriptor.face_edge_is_reversed_vector[j] = Array<bool>(face_nb_edges[j]);
     }
     for (const auto& edge_faces_vector : edge_faces_map) {
       const auto& faces_vector = edge_faces_vector.second;
       for (unsigned short lj = 0; lj < faces_vector.size(); ++lj) {
-        const auto& [face_number, face_local_edge, reversed] = faces_vector[lj];
-        descriptor.face_edge_is_reversed_vector[face_number][face_local_edge] =
-          reversed;
+        const auto& [face_number, face_local_edge, reversed]                  = faces_vector[lj];
+        descriptor.face_edge_is_reversed_vector[face_number][face_local_edge] = reversed;
       }
     }
   }
@@ -1067,54 +999,50 @@ GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(
   }
 
   {
-    descriptor.cell_to_node_vector.reserve(
-      descriptor.cell_to_node_vector.size());
+    descriptor.cell_to_node_vector.reserve(descriptor.cell_to_node_vector.size());
     for (CellId j = 0; j < descriptor.cell_to_node_vector.size(); ++j) {
       const auto& cell_nodes = descriptor.cell_to_node_vector[j];
 
       switch (descriptor.cell_type_vector[j]) {
-        case CellType::Tetrahedron: {
-          constexpr int local_edge[6][2] = {{0, 1}, {0, 2}, {0, 3},
-                                            {1, 2}, {2, 3}, {3, 1}};
-          std::vector<unsigned int> cell_edge_vector;
-          cell_edge_vector.reserve(6);
-          for (int i_edge = 0; i_edge < 6; ++i_edge) {
-            const auto e = local_edge[i_edge];
-            Edge edge{{cell_nodes[e[0]], cell_nodes[e[1]]}, node_number_vector};
-            auto i = edge_id_map.find(edge);
-            if (i == edge_id_map.end()) {
-              std::cerr << "could not find this edge!\n";
-              std::terminate();
-            }
-            cell_edge_vector.push_back(i->second);
+      case CellType::Tetrahedron: {
+        constexpr int local_edge[6][2] = {{0, 1}, {0, 2}, {0, 3}, {1, 2}, {2, 3}, {3, 1}};
+        std::vector<unsigned int> cell_edge_vector;
+        cell_edge_vector.reserve(6);
+        for (int i_edge = 0; i_edge < 6; ++i_edge) {
+          const auto e = local_edge[i_edge];
+          Edge edge{{cell_nodes[e[0]], cell_nodes[e[1]]}, node_number_vector};
+          auto i = edge_id_map.find(edge);
+          if (i == edge_id_map.end()) {
+            std::cerr << "could not find this edge!\n";
+            std::terminate();
           }
-          descriptor.cell_to_edge_vector.emplace_back(cell_edge_vector);
-          break;
+          cell_edge_vector.push_back(i->second);
         }
-        case CellType::Hexahedron: {
-          constexpr int local_edge[12][2] = {{0, 1}, {1, 2}, {2, 3}, {3, 0},
-                                             {4, 5}, {5, 6}, {6, 7}, {7, 4},
-                                             {0, 4}, {1, 5}, {2, 6}, {3, 7}};
-          std::vector<unsigned int> cell_edge_vector;
-          cell_edge_vector.reserve(12);
-          for (int i_edge = 0; i_edge < 12; ++i_edge) {
-            const auto e = local_edge[i_edge];
-            Edge edge{{cell_nodes[e[0]], cell_nodes[e[1]]}, node_number_vector};
-            auto i = edge_id_map.find(edge);
-            if (i == edge_id_map.end()) {
-              std::cerr << "could not find this edge!\n";
-              std::terminate();
-            }
-            cell_edge_vector.push_back(i->second);
+        descriptor.cell_to_edge_vector.emplace_back(cell_edge_vector);
+        break;
+      }
+      case CellType::Hexahedron: {
+        constexpr int local_edge[12][2] = {{0, 1}, {1, 2}, {2, 3}, {3, 0}, {4, 5}, {5, 6},
+                                           {6, 7}, {7, 4}, {0, 4}, {1, 5}, {2, 6}, {3, 7}};
+        std::vector<unsigned int> cell_edge_vector;
+        cell_edge_vector.reserve(12);
+        for (int i_edge = 0; i_edge < 12; ++i_edge) {
+          const auto e = local_edge[i_edge];
+          Edge edge{{cell_nodes[e[0]], cell_nodes[e[1]]}, node_number_vector};
+          auto i = edge_id_map.find(edge);
+          if (i == edge_id_map.end()) {
+            std::cerr << "could not find this edge!\n";
+            std::terminate();
           }
-          descriptor.cell_to_edge_vector.emplace_back(cell_edge_vector);
-          break;
-        }
-        default: {
-          perr() << name(descriptor.cell_type_vector[j])
-                 << ": unexpected cell type in dimension 3!\n";
-          std::terminate();
+          cell_edge_vector.push_back(i->second);
         }
+        descriptor.cell_to_edge_vector.emplace_back(cell_edge_vector);
+        break;
+      }
+      default: {
+        perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n";
+        std::terminate();
+      }
       }
     }
   }
@@ -1134,75 +1062,71 @@ GmshReader::__proceedData()
 
   for (size_t i = 0; i < elementNumber.dimension(); ++i) {
     if (elementNumber[i] > 0) {
-      pout() << "  - Number of " << __primitivesNames[i] << ": "
-             << elementNumber[i];
+      pout() << "  - Number of " << __primitivesNames[i] << ": " << elementNumber[i];
       if (not(__supportedPrimitives[i])) {
-        pout() << " [" << rang::fg::yellow << "IGNORED" << rang::style::reset
-               << "]";
+        pout() << " [" << rang::fg::yellow << "IGNORED" << rang::style::reset << "]";
       } else {
         pout() << " references: ";
-        for (std::set<size_t>::const_iterator iref =
-               elementReferences[i].begin();
-             iref != elementReferences[i].end(); ++iref) {
+        for (std::set<size_t>::const_iterator iref = elementReferences[i].begin(); iref != elementReferences[i].end();
+             ++iref) {
           if (iref != elementReferences[i].begin())
             pout() << ',';
           pout() << *iref;
         }
 
         switch (i) {
-          // Supported entities
-          case 0: {   // edges
-            __edges = Array<Edge>(elementNumber[i]);
-            __edges_ref.resize(elementNumber[i]);
-            __edges_number.resize(elementNumber[i]);
-            break;
-          }
-          case 1: {   // triangles
-            __triangles = Array<Triangle>(elementNumber[i]);
-            __triangles_ref.resize(elementNumber[i]);
-            __triangles_number.resize(elementNumber[i]);
-            break;
-          }
-          case 2: {   // quadrangles
-            __quadrangles = Array<Quadrangle>(elementNumber[i]);
-            __quadrangles_ref.resize(elementNumber[i]);
-            __quadrangles_number.resize(elementNumber[i]);
-            break;
-          }
-          case 3: {   // tetrahedra
-            __tetrahedra = Array<Tetrahedron>(elementNumber[i]);
-            __tetrahedra_ref.resize(elementNumber[i]);
-            __tetrahedra_number.resize(elementNumber[i]);
-            break;
-          }
-          case 4: {   // hexahedra
-            __hexahedra = Array<Hexahedron>(elementNumber[i]);
-            __hexahedra_ref.resize(elementNumber[i]);
-            __hexahedra_number.resize(elementNumber[i]);
-            break;
-          }
-          case 14: {   // point
-            __points = Array<Point>(elementNumber[i]);
-            __points_ref.resize(elementNumber[i]);
-            __points_number.resize(elementNumber[i]);
-            break;
-          }
-            // Unsupported entities
-          case 5:    // prism
-          case 6:    // pyramid
-          case 7:    // second order edge
-          case 8:    // second order triangle
-          case 9:    // second order quadrangle
-          case 10:   // second order tetrahedron
-          case 11:   // second order hexahedron
-          case 12:   // second order prism
-          case 13:   // second order pyramid
-          default: {
-            throw ErrorHandler(__FILE__, __LINE__,
-                               "reading file '" + m_filename +
-                                 "': ff3d cannot read this kind of element",
-                               ErrorHandler::normal);
-          }
+        // Supported entities
+        case 0: {   // edges
+          __edges = Array<Edge>(elementNumber[i]);
+          __edges_ref.resize(elementNumber[i]);
+          __edges_number.resize(elementNumber[i]);
+          break;
+        }
+        case 1: {   // triangles
+          __triangles = Array<Triangle>(elementNumber[i]);
+          __triangles_ref.resize(elementNumber[i]);
+          __triangles_number.resize(elementNumber[i]);
+          break;
+        }
+        case 2: {   // quadrangles
+          __quadrangles = Array<Quadrangle>(elementNumber[i]);
+          __quadrangles_ref.resize(elementNumber[i]);
+          __quadrangles_number.resize(elementNumber[i]);
+          break;
+        }
+        case 3: {   // tetrahedra
+          __tetrahedra = Array<Tetrahedron>(elementNumber[i]);
+          __tetrahedra_ref.resize(elementNumber[i]);
+          __tetrahedra_number.resize(elementNumber[i]);
+          break;
+        }
+        case 4: {   // hexahedra
+          __hexahedra = Array<Hexahedron>(elementNumber[i]);
+          __hexahedra_ref.resize(elementNumber[i]);
+          __hexahedra_number.resize(elementNumber[i]);
+          break;
+        }
+        case 14: {   // point
+          __points = Array<Point>(elementNumber[i]);
+          __points_ref.resize(elementNumber[i]);
+          __points_number.resize(elementNumber[i]);
+          break;
+        }
+          // Unsupported entities
+        case 5:    // prism
+        case 6:    // pyramid
+        case 7:    // second order edge
+        case 8:    // second order triangle
+        case 9:    // second order quadrangle
+        case 10:   // second order tetrahedron
+        case 11:   // second order hexahedron
+        case 12:   // second order prism
+        case 13:   // second order pyramid
+        default: {
+          throw ErrorHandler(__FILE__, __LINE__,
+                             "reading file '" + m_filename + "': ff3d cannot read this kind of element",
+                             ErrorHandler::normal);
+        }
         }
       }
       pout() << '\n';
@@ -1221,7 +1145,8 @@ GmshReader::__proceedData()
   if (minNumber < 0) {
     throw ErrorHandler(__FILE__, __LINE__,
                        "reading file '" + m_filename +
-                         "': ff3d does not implement negative vertices number",
+                         "': ff3d does not implement negative vertices "
+                         "number",
                        ErrorHandler::normal);
   }
 
@@ -1239,134 +1164,126 @@ GmshReader::__proceedData()
   for (size_t i = 0; i < __elementType.size(); ++i) {
     std::vector<int>& elementVertices = __elementVertices[i];
     switch (__elementType[i]) {
-      // Supported entities
-      case 0: {   // edge
-        int& edgeNumber = elementNumber[0];
-        const int a     = __verticesCorrepondance[elementVertices[0]];
-        const int b     = __verticesCorrepondance[elementVertices[1]];
-        if ((a < 0) or (b < 0)) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': error reading element " + std::to_string(i) +
-                               " [bad vertices definition]",
-                             ErrorHandler::normal);
-        }
-        __edges[edgeNumber]        = Edge(a, b);
-        __edges_ref[edgeNumber]    = __references[i];
-        __edges_number[edgeNumber] = __elementNumber[i];
-        edgeNumber++;   // one more edge
-        break;
+    // Supported entities
+    case 0: {   // edge
+      int& edgeNumber = elementNumber[0];
+      const int a     = __verticesCorrepondance[elementVertices[0]];
+      const int b     = __verticesCorrepondance[elementVertices[1]];
+      if ((a < 0) or (b < 0)) {
+        throw ErrorHandler(__FILE__, __LINE__,
+                           "reading file '" + m_filename + "': error reading element " + std::to_string(i) +
+                             " [bad vertices definition]",
+                           ErrorHandler::normal);
       }
-      case 1: {   // triangles
-        int& triangleNumber = elementNumber[1];
+      __edges[edgeNumber]        = Edge(a, b);
+      __edges_ref[edgeNumber]    = __references[i];
+      __edges_number[edgeNumber] = __elementNumber[i];
+      edgeNumber++;   // one more edge
+      break;
+    }
+    case 1: {   // triangles
+      int& triangleNumber = elementNumber[1];
 
-        const int a = __verticesCorrepondance[elementVertices[0]];
-        const int b = __verticesCorrepondance[elementVertices[1]];
-        const int c = __verticesCorrepondance[elementVertices[2]];
-        if ((a < 0) or (b < 0) or (c < 0)) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': error reading element " + std::to_string(i) +
-                               " [bad vertices definition]",
-                             ErrorHandler::normal);
-        }
-        __triangles[triangleNumber]        = Triangle(a, b, c);
-        __triangles_ref[triangleNumber]    = __references[i];
-        __triangles_number[triangleNumber] = __elementNumber[i];
-        triangleNumber++;   // one more triangle
-        break;
-      }
-      case 2: {   // quadrangle
-        int& quadrilateralNumber = elementNumber[2];
-
-        const int a = __verticesCorrepondance[elementVertices[0]];
-        const int b = __verticesCorrepondance[elementVertices[1]];
-        const int c = __verticesCorrepondance[elementVertices[2]];
-        const int d = __verticesCorrepondance[elementVertices[3]];
-        if ((a < 0) or (b < 0) or (c < 0) or (d < 0)) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': error reading element " + std::to_string(i) +
-                               " [bad vertices definition]",
-                             ErrorHandler::normal);
-        }
-        __quadrangles[quadrilateralNumber]        = Quadrangle(a, b, c, d);
-        __quadrangles_ref[quadrilateralNumber]    = __references[i];
-        __quadrangles_number[quadrilateralNumber] = __elementNumber[i];
-        quadrilateralNumber++;   // one more quadrangle
-        break;
-      }
-      case 3: {   // tetrahedra
-        int& tetrahedronNumber = elementNumber[3];
-
-        const int a = __verticesCorrepondance[elementVertices[0]];
-        const int b = __verticesCorrepondance[elementVertices[1]];
-        const int c = __verticesCorrepondance[elementVertices[2]];
-        const int d = __verticesCorrepondance[elementVertices[3]];
-        if ((a < 0) or (b < 0) or (c < 0) or (d < 0)) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': error reading element " + std::to_string(i) +
-                               " [bad vertices definition]",
-                             ErrorHandler::normal);
-        }
-        __tetrahedra[tetrahedronNumber]        = Tetrahedron(a, b, c, d);
-        __tetrahedra_ref[tetrahedronNumber]    = __references[i];
-        __tetrahedra_number[tetrahedronNumber] = __elementNumber[i];
-        tetrahedronNumber++;   // one more tetrahedron
-        break;
-      }
-      case 4: {   // hexaredron
-        int& hexahedronNumber = elementNumber[4];
-
-        const int a = __verticesCorrepondance[elementVertices[0]];
-        const int b = __verticesCorrepondance[elementVertices[1]];
-        const int c = __verticesCorrepondance[elementVertices[2]];
-        const int d = __verticesCorrepondance[elementVertices[3]];
-        const int e = __verticesCorrepondance[elementVertices[4]];
-        const int f = __verticesCorrepondance[elementVertices[5]];
-        const int g = __verticesCorrepondance[elementVertices[6]];
-        const int h = __verticesCorrepondance[elementVertices[7]];
-        if ((a < 0) or (b < 0) or (c < 0) or (d < 0) or (e < 0) or (f < 0) or
-            (g < 0) or (h < 0)) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': error reading element " + std::to_string(i) +
-                               " [bad vertices definition]",
-                             ErrorHandler::normal);
-        }
-        __hexahedra[hexahedronNumber]     = Hexahedron(a, b, c, d, e, f, g, h);
-        __hexahedra_ref[hexahedronNumber] = __references[i];
-        __hexahedra_number[hexahedronNumber] = __elementNumber[i];
-        hexahedronNumber++;   // one more hexahedron
-        break;
+      const int a = __verticesCorrepondance[elementVertices[0]];
+      const int b = __verticesCorrepondance[elementVertices[1]];
+      const int c = __verticesCorrepondance[elementVertices[2]];
+      if ((a < 0) or (b < 0) or (c < 0)) {
+        throw ErrorHandler(__FILE__, __LINE__,
+                           "reading file '" + m_filename + "': error reading element " + std::to_string(i) +
+                             " [bad vertices definition]",
+                           ErrorHandler::normal);
       }
-        // Unsupported entities
-      case 14: {   // point
-        int& point_number      = elementNumber[14];
-        const int a            = __verticesCorrepondance[elementVertices[0]];
-        __points[point_number] = a;
-        __points_ref[point_number]    = __references[i];
-        __points_number[point_number] = __elementNumber[i];
-        point_number++;
-        break;
+      __triangles[triangleNumber]        = Triangle(a, b, c);
+      __triangles_ref[triangleNumber]    = __references[i];
+      __triangles_number[triangleNumber] = __elementNumber[i];
+      triangleNumber++;   // one more triangle
+      break;
+    }
+    case 2: {   // quadrangle
+      int& quadrilateralNumber = elementNumber[2];
+
+      const int a = __verticesCorrepondance[elementVertices[0]];
+      const int b = __verticesCorrepondance[elementVertices[1]];
+      const int c = __verticesCorrepondance[elementVertices[2]];
+      const int d = __verticesCorrepondance[elementVertices[3]];
+      if ((a < 0) or (b < 0) or (c < 0) or (d < 0)) {
+        throw ErrorHandler(__FILE__, __LINE__,
+                           "reading file '" + m_filename + "': error reading element " + std::to_string(i) +
+                             " [bad vertices definition]",
+                           ErrorHandler::normal);
       }
-      case 5:      // prism
-      case 6:      // pyramid
-      case 7:      // second order edge
-      case 8:      // second order triangle
-      case 9:      // second order quadrangle
-      case 10:     // second order tetrahedron
-      case 11:     // second order hexahedron
-      case 12:     // second order prism
-      case 13: {   // second order pyramid
+      __quadrangles[quadrilateralNumber]        = Quadrangle(a, b, c, d);
+      __quadrangles_ref[quadrilateralNumber]    = __references[i];
+      __quadrangles_number[quadrilateralNumber] = __elementNumber[i];
+      quadrilateralNumber++;   // one more quadrangle
+      break;
+    }
+    case 3: {   // tetrahedra
+      int& tetrahedronNumber = elementNumber[3];
+
+      const int a = __verticesCorrepondance[elementVertices[0]];
+      const int b = __verticesCorrepondance[elementVertices[1]];
+      const int c = __verticesCorrepondance[elementVertices[2]];
+      const int d = __verticesCorrepondance[elementVertices[3]];
+      if ((a < 0) or (b < 0) or (c < 0) or (d < 0)) {
+        throw ErrorHandler(__FILE__, __LINE__,
+                           "reading file '" + m_filename + "': error reading element " + std::to_string(i) +
+                             " [bad vertices definition]",
+                           ErrorHandler::normal);
       }
-      default: {
+      __tetrahedra[tetrahedronNumber]        = Tetrahedron(a, b, c, d);
+      __tetrahedra_ref[tetrahedronNumber]    = __references[i];
+      __tetrahedra_number[tetrahedronNumber] = __elementNumber[i];
+      tetrahedronNumber++;   // one more tetrahedron
+      break;
+    }
+    case 4: {   // hexaredron
+      int& hexahedronNumber = elementNumber[4];
+
+      const int a = __verticesCorrepondance[elementVertices[0]];
+      const int b = __verticesCorrepondance[elementVertices[1]];
+      const int c = __verticesCorrepondance[elementVertices[2]];
+      const int d = __verticesCorrepondance[elementVertices[3]];
+      const int e = __verticesCorrepondance[elementVertices[4]];
+      const int f = __verticesCorrepondance[elementVertices[5]];
+      const int g = __verticesCorrepondance[elementVertices[6]];
+      const int h = __verticesCorrepondance[elementVertices[7]];
+      if ((a < 0) or (b < 0) or (c < 0) or (d < 0) or (e < 0) or (f < 0) or (g < 0) or (h < 0)) {
         throw ErrorHandler(__FILE__, __LINE__,
-                           "reading file '" + m_filename +
-                             "': ff3d cannot read this kind of element",
+                           "reading file '" + m_filename + "': error reading element " + std::to_string(i) +
+                             " [bad vertices definition]",
                            ErrorHandler::normal);
       }
+      __hexahedra[hexahedronNumber]        = Hexahedron(a, b, c, d, e, f, g, h);
+      __hexahedra_ref[hexahedronNumber]    = __references[i];
+      __hexahedra_number[hexahedronNumber] = __elementNumber[i];
+      hexahedronNumber++;   // one more hexahedron
+      break;
+    }
+      // Unsupported entities
+    case 14: {   // point
+      int& point_number             = elementNumber[14];
+      const int a                   = __verticesCorrepondance[elementVertices[0]];
+      __points[point_number]        = a;
+      __points_ref[point_number]    = __references[i];
+      __points_number[point_number] = __elementNumber[i];
+      point_number++;
+      break;
+    }
+    case 5:      // prism
+    case 6:      // pyramid
+    case 7:      // second order edge
+    case 8:      // second order triangle
+    case 9:      // second order quadrangle
+    case 10:     // second order tetrahedron
+    case 11:     // second order hexahedron
+    case 12:     // second order prism
+    case 13: {   // second order pyramid
+    }
+    default: {
+      throw ErrorHandler(__FILE__, __LINE__, "reading file '" + m_filename + "': ff3d cannot read this kind of element",
+                         ErrorHandler::normal);
+    }
     }
   }
 
@@ -1390,14 +1307,10 @@ GmshReader::__proceedData()
   dimension3_mask[12]                 = 1;
   dimension3_mask[13]                 = 1;
 
-  pout() << "- dimension 0 entities: " << (dimension0_mask, elementNumber)
-         << '\n';
-  pout() << "- dimension 1 entities: " << (dimension1_mask, elementNumber)
-         << '\n';
-  pout() << "- dimension 2 entities: " << (dimension2_mask, elementNumber)
-         << '\n';
-  pout() << "- dimension 3 entities: " << (dimension3_mask, elementNumber)
-         << '\n';
+  pout() << "- dimension 0 entities: " << (dimension0_mask, elementNumber) << '\n';
+  pout() << "- dimension 1 entities: " << (dimension1_mask, elementNumber) << '\n';
+  pout() << "- dimension 2 entities: " << (dimension2_mask, elementNumber) << '\n';
+  pout() << "- dimension 3 entities: " << (dimension3_mask, elementNumber) << '\n';
   if ((dimension3_mask, elementNumber) > 0) {
     const size_t nb_cells = (dimension3_mask, elementNumber);
 
@@ -1446,10 +1359,8 @@ GmshReader::__proceedData()
       for (size_t j = 0; j < ref_cell_list.second.size(); ++j) {
         cell_list[j] = ref_cell_list.second[j];
       }
-      const PhysicalRefId& physical_ref_id =
-        m_physical_ref_map.at(ref_cell_list.first);
-      descriptor.addRefItemList(
-        RefCellList(physical_ref_id.refId(), cell_list));
+      const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_cell_list.first);
+      descriptor.addRefItemList(RefCellList(physical_ref_id.refId(), cell_list));
     }
 
     this->__computeCellFaceAndFaceNodeConnectivities<3>(descriptor);
@@ -1457,33 +1368,30 @@ GmshReader::__proceedData()
     const auto& node_number_vector = descriptor.node_number_vector;
 
     {
-      using Face = ConnectivityFace<3>;
-      const std::unordered_map<Face, FaceId, typename Face::Hash>
-        face_to_id_map = [&] {
-          std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map;
-          for (FaceId l = 0; l < descriptor.face_to_node_vector.size(); ++l) {
-            const auto& node_vector = descriptor.face_to_node_vector[l];
-            face_to_id_map[Face(node_vector, node_number_vector)] = l;
-          }
-          return face_to_id_map;
-        }();
+      using Face                                                                 = ConnectivityFace<3>;
+      const std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map = [&] {
+        std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map;
+        for (FaceId l = 0; l < descriptor.face_to_node_vector.size(); ++l) {
+          const auto& node_vector                               = descriptor.face_to_node_vector[l];
+          face_to_id_map[Face(node_vector, node_number_vector)] = l;
+        }
+        return face_to_id_map;
+      }();
 
       std::unordered_map<int, FaceId> face_number_id_map = [&] {
         std::unordered_map<int, FaceId> face_number_id_map;
         for (size_t l = 0; l < descriptor.face_number_vector.size(); ++l) {
           face_number_id_map[descriptor.face_number_vector[l]] = l;
         }
-        Assert(face_number_id_map.size() ==
-               descriptor.face_number_vector.size());
+        Assert(face_number_id_map.size() == descriptor.face_number_vector.size());
         return face_number_id_map;
       }();
 
       std::map<unsigned int, std::vector<unsigned int>> ref_faces_map;
       for (unsigned int f = 0; f < __triangles.size(); ++f) {
         const unsigned int face_id = [&] {
-          auto i = face_to_id_map.find(
-            Face({__triangles[f][0], __triangles[f][1], __triangles[f][2]},
-                 node_number_vector));
+          auto i =
+            face_to_id_map.find(Face({__triangles[f][0], __triangles[f][1], __triangles[f][2]}, node_number_vector));
           if (i == face_to_id_map.end()) {
             std::cerr << "face not found!\n";
             std::terminate();
@@ -1495,35 +1403,28 @@ GmshReader::__proceedData()
         ref_faces_map[ref].push_back(face_id);
 
         if (descriptor.face_number_vector[face_id] != __quadrangles_number[f]) {
-          if (auto i_face = face_number_id_map.find(__quadrangles_number[f]);
-              i_face != face_number_id_map.end()) {
+          if (auto i_face = face_number_id_map.find(__quadrangles_number[f]); i_face != face_number_id_map.end()) {
             const int other_face_id = i_face->second;
-            std::swap(descriptor.face_number_vector[face_id],
-                      descriptor.face_number_vector[other_face_id]);
+            std::swap(descriptor.face_number_vector[face_id], descriptor.face_number_vector[other_face_id]);
 
             face_number_id_map.erase(descriptor.face_number_vector[face_id]);
-            face_number_id_map.erase(
-              descriptor.face_number_vector[other_face_id]);
+            face_number_id_map.erase(descriptor.face_number_vector[other_face_id]);
 
-            face_number_id_map[descriptor.face_number_vector[face_id]] =
-              face_id;
-            face_number_id_map[descriptor.face_number_vector[other_face_id]] =
-              other_face_id;
+            face_number_id_map[descriptor.face_number_vector[face_id]]       = face_id;
+            face_number_id_map[descriptor.face_number_vector[other_face_id]] = other_face_id;
           } else {
             face_number_id_map.erase(descriptor.face_number_vector[face_id]);
-            descriptor.face_number_vector[face_id] = __quadrangles_number[f];
-            face_number_id_map[descriptor.face_number_vector[face_id]] =
-              face_id;
+            descriptor.face_number_vector[face_id]                     = __quadrangles_number[f];
+            face_number_id_map[descriptor.face_number_vector[face_id]] = face_id;
           }
         }
       }
 
       for (unsigned int f = 0; f < __quadrangles.size(); ++f) {
         const unsigned int face_id = [&] {
-          auto i =
-            face_to_id_map.find(Face({__quadrangles[f][0], __quadrangles[f][1],
-                                      __quadrangles[f][2], __quadrangles[f][3]},
-                                     node_number_vector));
+          auto i = face_to_id_map.find(
+            Face({__quadrangles[f][0], __quadrangles[f][1], __quadrangles[f][2], __quadrangles[f][3]},
+                 node_number_vector));
           if (i == face_to_id_map.end()) {
             std::cerr << "face not found!\n";
             std::terminate();
@@ -1535,25 +1436,19 @@ GmshReader::__proceedData()
         ref_faces_map[ref].push_back(face_id);
 
         if (descriptor.face_number_vector[face_id] != __quadrangles_number[f]) {
-          if (auto i_face = face_number_id_map.find(__quadrangles_number[f]);
-              i_face != face_number_id_map.end()) {
+          if (auto i_face = face_number_id_map.find(__quadrangles_number[f]); i_face != face_number_id_map.end()) {
             const int other_face_id = i_face->second;
-            std::swap(descriptor.face_number_vector[face_id],
-                      descriptor.face_number_vector[other_face_id]);
+            std::swap(descriptor.face_number_vector[face_id], descriptor.face_number_vector[other_face_id]);
 
             face_number_id_map.erase(descriptor.face_number_vector[face_id]);
-            face_number_id_map.erase(
-              descriptor.face_number_vector[other_face_id]);
+            face_number_id_map.erase(descriptor.face_number_vector[other_face_id]);
 
-            face_number_id_map[descriptor.face_number_vector[face_id]] =
-              face_id;
-            face_number_id_map[descriptor.face_number_vector[other_face_id]] =
-              other_face_id;
+            face_number_id_map[descriptor.face_number_vector[face_id]]       = face_id;
+            face_number_id_map[descriptor.face_number_vector[other_face_id]] = other_face_id;
           } else {
             face_number_id_map.erase(descriptor.face_number_vector[face_id]);
-            descriptor.face_number_vector[face_id] = __quadrangles_number[f];
-            face_number_id_map[descriptor.face_number_vector[face_id]] =
-              face_id;
+            descriptor.face_number_vector[face_id]                     = __quadrangles_number[f];
+            face_number_id_map[descriptor.face_number_vector[face_id]] = face_id;
           }
         }
       }
@@ -1563,42 +1458,37 @@ GmshReader::__proceedData()
         for (size_t j = 0; j < ref_face_list.second.size(); ++j) {
           face_list[j] = ref_face_list.second[j];
         }
-        const PhysicalRefId& physical_ref_id =
-          m_physical_ref_map.at(ref_face_list.first);
-        descriptor.addRefItemList(
-          RefFaceList{physical_ref_id.refId(), face_list});
+        const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_face_list.first);
+        descriptor.addRefItemList(RefFaceList{physical_ref_id.refId(), face_list});
       }
     }
     this->__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities<3>(descriptor);
 
     {
-      using Edge                     = ConnectivityFace<2>;
-      const auto& node_number_vector = descriptor.node_number_vector;
-      const std::unordered_map<Edge, EdgeId, typename Edge::Hash>
-        edge_to_id_map = [&] {
-          std::unordered_map<Edge, EdgeId, typename Edge::Hash> edge_to_id_map;
-          for (EdgeId l = 0; l < descriptor.edge_to_node_vector.size(); ++l) {
-            const auto& node_vector = descriptor.edge_to_node_vector[l];
-            edge_to_id_map[Edge(node_vector, node_number_vector)] = l;
-          }
-          return edge_to_id_map;
-        }();
+      using Edge                                                                 = ConnectivityFace<2>;
+      const auto& node_number_vector                                             = descriptor.node_number_vector;
+      const std::unordered_map<Edge, EdgeId, typename Edge::Hash> edge_to_id_map = [&] {
+        std::unordered_map<Edge, EdgeId, typename Edge::Hash> edge_to_id_map;
+        for (EdgeId l = 0; l < descriptor.edge_to_node_vector.size(); ++l) {
+          const auto& node_vector                               = descriptor.edge_to_node_vector[l];
+          edge_to_id_map[Edge(node_vector, node_number_vector)] = l;
+        }
+        return edge_to_id_map;
+      }();
 
       std::unordered_map<int, EdgeId> edge_number_id_map = [&] {
         std::unordered_map<int, EdgeId> edge_number_id_map;
         for (size_t l = 0; l < descriptor.edge_number_vector.size(); ++l) {
           edge_number_id_map[descriptor.edge_number_vector[l]] = l;
         }
-        Assert(edge_number_id_map.size() ==
-               descriptor.edge_number_vector.size());
+        Assert(edge_number_id_map.size() == descriptor.edge_number_vector.size());
         return edge_number_id_map;
       }();
 
       std::map<unsigned int, std::vector<unsigned int>> ref_edges_map;
       for (unsigned int e = 0; e < __edges.size(); ++e) {
         const unsigned int edge_id = [&] {
-          auto i = edge_to_id_map.find(
-            Edge({__edges[e][0], __edges[e][1]}, node_number_vector));
+          auto i = edge_to_id_map.find(Edge({__edges[e][0], __edges[e][1]}, node_number_vector));
           if (i == edge_to_id_map.end()) {
             std::cerr << "edge " << __edges[e][0] << " not found!\n";
             std::terminate();
@@ -1609,25 +1499,19 @@ GmshReader::__proceedData()
         ref_edges_map[ref].push_back(edge_id);
 
         if (descriptor.edge_number_vector[edge_id] != __edges_number[e]) {
-          if (auto i_edge = edge_number_id_map.find(__edges_number[e]);
-              i_edge != edge_number_id_map.end()) {
+          if (auto i_edge = edge_number_id_map.find(__edges_number[e]); i_edge != edge_number_id_map.end()) {
             const int other_edge_id = i_edge->second;
-            std::swap(descriptor.edge_number_vector[edge_id],
-                      descriptor.edge_number_vector[other_edge_id]);
+            std::swap(descriptor.edge_number_vector[edge_id], descriptor.edge_number_vector[other_edge_id]);
 
             edge_number_id_map.erase(descriptor.edge_number_vector[edge_id]);
-            edge_number_id_map.erase(
-              descriptor.edge_number_vector[other_edge_id]);
+            edge_number_id_map.erase(descriptor.edge_number_vector[other_edge_id]);
 
-            edge_number_id_map[descriptor.edge_number_vector[edge_id]] =
-              edge_id;
-            edge_number_id_map[descriptor.edge_number_vector[other_edge_id]] =
-              other_edge_id;
+            edge_number_id_map[descriptor.edge_number_vector[edge_id]]       = edge_id;
+            edge_number_id_map[descriptor.edge_number_vector[other_edge_id]] = other_edge_id;
           } else {
             edge_number_id_map.erase(descriptor.edge_number_vector[edge_id]);
-            descriptor.edge_number_vector[edge_id] = __edges_number[e];
-            edge_number_id_map[descriptor.edge_number_vector[edge_id]] =
-              edge_id;
+            descriptor.edge_number_vector[edge_id]                     = __edges_number[e];
+            edge_number_id_map[descriptor.edge_number_vector[edge_id]] = edge_id;
           }
         }
       }
@@ -1637,10 +1521,8 @@ GmshReader::__proceedData()
         for (size_t j = 0; j < ref_edge_list.second.size(); ++j) {
           edge_list[j] = ref_edge_list.second[j];
         }
-        const PhysicalRefId& physical_ref_id =
-          m_physical_ref_map.at(ref_edge_list.first);
-        descriptor.addRefItemList(
-          RefEdgeList{physical_ref_id.refId(), edge_list});
+        const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_edge_list.first);
+        descriptor.addRefItemList(RefEdgeList{physical_ref_id.refId(), edge_list});
       }
     }
 
@@ -1656,27 +1538,21 @@ GmshReader::__proceedData()
       for (size_t j = 0; j < ref_point_list.second.size(); ++j) {
         point_list[j] = ref_point_list.second[j];
       }
-      const PhysicalRefId& physical_ref_id =
-        m_physical_ref_map.at(ref_point_list.first);
-      descriptor.addRefItemList(
-        RefNodeList(physical_ref_id.refId(), point_list));
+      const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_point_list.first);
+      descriptor.addRefItemList(RefNodeList(physical_ref_id.refId(), point_list));
     }
 
     descriptor.cell_owner_vector.resize(nb_cells);
-    std::fill(descriptor.cell_owner_vector.begin(),
-              descriptor.cell_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.cell_owner_vector.begin(), descriptor.cell_owner_vector.end(), parallel::rank());
 
     descriptor.face_owner_vector.resize(descriptor.face_number_vector.size());
-    std::fill(descriptor.face_owner_vector.begin(),
-              descriptor.face_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.face_owner_vector.begin(), descriptor.face_owner_vector.end(), parallel::rank());
 
     descriptor.edge_owner_vector.resize(descriptor.edge_number_vector.size());
-    std::fill(descriptor.edge_owner_vector.begin(),
-              descriptor.edge_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.edge_owner_vector.begin(), descriptor.edge_owner_vector.end(), parallel::rank());
 
     descriptor.node_owner_vector.resize(descriptor.node_number_vector.size());
-    std::fill(descriptor.node_owner_vector.begin(),
-              descriptor.node_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.node_owner_vector.begin(), descriptor.node_owner_vector.end(), parallel::rank());
 
     std::shared_ptr p_connectivity = Connectivity3D::build(descriptor);
     Connectivity3D& connectivity   = *p_connectivity;
@@ -1741,25 +1617,22 @@ GmshReader::__proceedData()
       for (size_t j = 0; j < ref_cell_list.second.size(); ++j) {
         cell_list[j] = ref_cell_list.second[j];
       }
-      const PhysicalRefId& physical_ref_id =
-        m_physical_ref_map.at(ref_cell_list.first);
-      descriptor.addRefItemList(
-        RefCellList(physical_ref_id.refId(), cell_list));
+      const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_cell_list.first);
+      descriptor.addRefItemList(RefCellList(physical_ref_id.refId(), cell_list));
     }
 
     this->__computeCellFaceAndFaceNodeConnectivities<2>(descriptor);
 
-    using Face                     = ConnectivityFace<2>;
-    const auto& node_number_vector = descriptor.node_number_vector;
-    const std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map =
-      [&] {
-        std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map;
-        for (FaceId l = 0; l < descriptor.face_to_node_vector.size(); ++l) {
-          const auto& node_vector = descriptor.face_to_node_vector[l];
-          face_to_id_map[Face(node_vector, node_number_vector)] = l;
-        }
-        return face_to_id_map;
-      }();
+    using Face                                                                 = ConnectivityFace<2>;
+    const auto& node_number_vector                                             = descriptor.node_number_vector;
+    const std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map = [&] {
+      std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map;
+      for (FaceId l = 0; l < descriptor.face_to_node_vector.size(); ++l) {
+        const auto& node_vector                               = descriptor.face_to_node_vector[l];
+        face_to_id_map[Face(node_vector, node_number_vector)] = l;
+      }
+      return face_to_id_map;
+    }();
 
     std::unordered_map<int, FaceId> face_number_id_map = [&] {
       std::unordered_map<int, FaceId> face_number_id_map;
@@ -1773,8 +1646,7 @@ GmshReader::__proceedData()
     std::map<unsigned int, std::vector<unsigned int>> ref_faces_map;
     for (unsigned int e = 0; e < __edges.size(); ++e) {
       const unsigned int edge_id = [&] {
-        auto i = face_to_id_map.find(
-          Face({__edges[e][0], __edges[e][1]}, node_number_vector));
+        auto i = face_to_id_map.find(Face({__edges[e][0], __edges[e][1]}, node_number_vector));
         if (i == face_to_id_map.end()) {
           std::cerr << "face " << __edges[e][0] << " not found!\n";
           std::terminate();
@@ -1785,22 +1657,18 @@ GmshReader::__proceedData()
       ref_faces_map[ref].push_back(edge_id);
 
       if (descriptor.face_number_vector[edge_id] != __edges_number[e]) {
-        if (auto i_face = face_number_id_map.find(__edges_number[e]);
-            i_face != face_number_id_map.end()) {
+        if (auto i_face = face_number_id_map.find(__edges_number[e]); i_face != face_number_id_map.end()) {
           const int other_edge_id = i_face->second;
-          std::swap(descriptor.face_number_vector[edge_id],
-                    descriptor.face_number_vector[other_edge_id]);
+          std::swap(descriptor.face_number_vector[edge_id], descriptor.face_number_vector[other_edge_id]);
 
           face_number_id_map.erase(descriptor.face_number_vector[edge_id]);
-          face_number_id_map.erase(
-            descriptor.face_number_vector[other_edge_id]);
+          face_number_id_map.erase(descriptor.face_number_vector[other_edge_id]);
 
-          face_number_id_map[descriptor.face_number_vector[edge_id]] = edge_id;
-          face_number_id_map[descriptor.face_number_vector[other_edge_id]] =
-            other_edge_id;
+          face_number_id_map[descriptor.face_number_vector[edge_id]]       = edge_id;
+          face_number_id_map[descriptor.face_number_vector[other_edge_id]] = other_edge_id;
         } else {
           face_number_id_map.erase(descriptor.face_number_vector[edge_id]);
-          descriptor.face_number_vector[edge_id] = __edges_number[e];
+          descriptor.face_number_vector[edge_id]                     = __edges_number[e];
           face_number_id_map[descriptor.face_number_vector[edge_id]] = edge_id;
         }
       }
@@ -1811,10 +1679,8 @@ GmshReader::__proceedData()
       for (size_t j = 0; j < ref_face_list.second.size(); ++j) {
         face_list[j] = ref_face_list.second[j];
       }
-      const PhysicalRefId& physical_ref_id =
-        m_physical_ref_map.at(ref_face_list.first);
-      descriptor.addRefItemList(
-        RefFaceList{physical_ref_id.refId(), face_list});
+      const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_face_list.first);
+      descriptor.addRefItemList(RefFaceList{physical_ref_id.refId(), face_list});
     }
 
     std::map<unsigned int, std::vector<unsigned int>> ref_points_map;
@@ -1829,23 +1695,18 @@ GmshReader::__proceedData()
       for (size_t j = 0; j < ref_point_list.second.size(); ++j) {
         point_list[j] = ref_point_list.second[j];
       }
-      const PhysicalRefId& physical_ref_id =
-        m_physical_ref_map.at(ref_point_list.first);
-      descriptor.addRefItemList(
-        RefNodeList(physical_ref_id.refId(), point_list));
+      const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_point_list.first);
+      descriptor.addRefItemList(RefNodeList(physical_ref_id.refId(), point_list));
     }
 
     descriptor.cell_owner_vector.resize(nb_cells);
-    std::fill(descriptor.cell_owner_vector.begin(),
-              descriptor.cell_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.cell_owner_vector.begin(), descriptor.cell_owner_vector.end(), parallel::rank());
 
     descriptor.face_owner_vector.resize(descriptor.face_number_vector.size());
-    std::fill(descriptor.face_owner_vector.begin(),
-              descriptor.face_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.face_owner_vector.begin(), descriptor.face_owner_vector.end(), parallel::rank());
 
     descriptor.node_owner_vector.resize(descriptor.node_number_vector.size());
-    std::fill(descriptor.node_owner_vector.begin(),
-              descriptor.node_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.node_owner_vector.begin(), descriptor.node_owner_vector.end(), parallel::rank());
 
     std::shared_ptr p_connectivity = Connectivity2D::build(descriptor);
     Connectivity2D& connectivity   = *p_connectivity;
@@ -1891,19 +1752,15 @@ GmshReader::__proceedData()
       for (size_t j = 0; j < ref_point_list.second.size(); ++j) {
         point_list[j] = ref_point_list.second[j];
       }
-      const PhysicalRefId& physical_ref_id =
-        m_physical_ref_map.at(ref_point_list.first);
-      descriptor.addRefItemList(
-        RefNodeList(physical_ref_id.refId(), point_list));
+      const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_point_list.first);
+      descriptor.addRefItemList(RefNodeList(physical_ref_id.refId(), point_list));
     }
 
     descriptor.cell_owner_vector.resize(nb_cells);
-    std::fill(descriptor.cell_owner_vector.begin(),
-              descriptor.cell_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.cell_owner_vector.begin(), descriptor.cell_owner_vector.end(), parallel::rank());
 
     descriptor.node_owner_vector.resize(descriptor.node_number_vector.size());
-    std::fill(descriptor.node_owner_vector.begin(),
-              descriptor.node_owner_vector.end(), parallel::rank());
+    std::fill(descriptor.node_owner_vector.begin(), descriptor.node_owner_vector.end(), parallel::rank());
 
     std::shared_ptr p_connectivity = Connectivity1D::build(descriptor);
     Connectivity1D& connectivity   = *p_connectivity;
@@ -1944,9 +1801,7 @@ GmshReader::__nextKeyword()
     return kw;
   }
 
-  throw ErrorHandler(__FILE__, __LINE__,
-                     "reading file '" + m_filename + "': unknown keyword '" +
-                       aKeyword + "'",
+  throw ErrorHandler(__FILE__, __LINE__, "reading file '" + m_filename + "': unknown keyword '" + aKeyword + "'",
                      ErrorHandler::normal);
 
   kw.first  = aKeyword;
@@ -1962,50 +1817,42 @@ GmshReader::__readGmshFormat2_2()
   while (kw.second != EndOfFile) {
     kw = this->__nextKeyword();
     switch (kw.second) {
-      case NODES: {
-        this->__readVertices();
-        if (this->__nextKeyword().second != ENDNODES) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': expecting $EndNodes, '" + kw.first +
-                               "' was found",
-                             ErrorHandler::normal);
-        }
-        break;
-      }
-      case ELEMENTS: {
-        this->__readElements2_2();
-        kw = this->__nextKeyword();
-        if (kw.second != ENDELEMENTS) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': expecting $EndElements, '" + kw.first +
-                               "' was found",
-                             ErrorHandler::normal);
-        }
-        break;
-      }
-      case PHYSICALNAMES: {
-        this->__readPhysicalNames2_2();
-        if (this->__nextKeyword().second != ENDPHYSICALNAMES) {
-          throw ErrorHandler(__FILE__, __LINE__,
-                             "reading file '" + m_filename +
-                               "': expecting $EndNodes, '" + kw.first +
-                               "' was found",
-                             ErrorHandler::normal);
-        }
-        break;
+    case NODES: {
+      this->__readVertices();
+      if (this->__nextKeyword().second != ENDNODES) {
+        throw ErrorHandler(__FILE__, __LINE__,
+                           "reading file '" + m_filename + "': expecting $EndNodes, '" + kw.first + "' was found",
+                           ErrorHandler::normal);
       }
-
-      case EndOfFile: {
-        break;
+      break;
+    }
+    case ELEMENTS: {
+      this->__readElements2_2();
+      kw = this->__nextKeyword();
+      if (kw.second != ENDELEMENTS) {
+        throw ErrorHandler(__FILE__, __LINE__,
+                           "reading file '" + m_filename + "': expecting $EndElements, '" + kw.first + "' was found",
+                           ErrorHandler::normal);
       }
-      default: {
+      break;
+    }
+    case PHYSICALNAMES: {
+      this->__readPhysicalNames2_2();
+      if (this->__nextKeyword().second != ENDPHYSICALNAMES) {
         throw ErrorHandler(__FILE__, __LINE__,
-                           "reading file '" + m_filename + "': unexpected '" +
-                             kw.first + "'",
+                           "reading file '" + m_filename + "': expecting $EndNodes, '" + kw.first + "' was found",
                            ErrorHandler::normal);
       }
+      break;
+    }
+
+    case EndOfFile: {
+      break;
+    }
+    default: {
+      throw ErrorHandler(__FILE__, __LINE__, "reading file '" + m_filename + "': unexpected '" + kw.first + "'",
+                         ErrorHandler::normal);
+    }
     }
   }
 }
diff --git a/src/mesh/GmshReader.hpp b/src/mesh/GmshReader.hpp
index 616532476e3c1710ce0d9155c5a7b49c6c3a2d58..d6d5f3887eff282833ec169cd410bd3026188181 100644
--- a/src/mesh/GmshReader.hpp
+++ b/src/mesh/GmshReader.hpp
@@ -31,8 +31,7 @@ class GmshReader
     friend std::ostream&
     operator<<(std::ostream& os, const PhysicalRefId& physical_ref_id)
     {
-      os << physical_ref_id.m_ref_id << "[dimension "
-         << physical_ref_id.m_dimension << "]";
+      os << physical_ref_id.m_ref_id << "[dimension " << physical_ref_id.m_dimension << "]";
       return os;
     }
 
@@ -62,8 +61,7 @@ class GmshReader
 
     PhysicalRefId& operator=(const PhysicalRefId&) = default;
     PhysicalRefId& operator=(PhysicalRefId&&) = default;
-    PhysicalRefId(const int& dimension, const RefId& ref_id)
-      : m_dimension(dimension), m_ref_id(ref_id)
+    PhysicalRefId(const int& dimension, const RefId& ref_id) : m_dimension(dimension), m_ref_id(ref_id)
     {
       ;
     }
@@ -266,12 +264,10 @@ class GmshReader
   void __readPhysicalNames2_2();
 
   template <size_t Dimension>
-  void __computeCellFaceAndFaceNodeConnectivities(
-    ConnectivityDescriptor& descriptor);
+  void __computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& descriptor);
 
   template <size_t Dimension>
-  void __computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(
-    ConnectivityDescriptor& descriptor);
+  void __computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(ConnectivityDescriptor& descriptor);
 
   template <int Dimension>
   void _dispatch();
diff --git a/src/mesh/IConnectivity.hpp b/src/mesh/IConnectivity.hpp
index 136ff17c080fb27c07b574562d2a7b58f1d22e9b..d548be0a4177036ca082e990d50aa222ba44368f 100644
--- a/src/mesh/IConnectivity.hpp
+++ b/src/mesh/IConnectivity.hpp
@@ -12,9 +12,7 @@ class IConnectivity : public std::enable_shared_from_this<IConnectivity>
   template <typename DataType, typename ItemOfItem, typename ConnectivityPtr>
   friend class SubItemValuePerItem;
 
-  virtual const ConnectivityMatrix& _getMatrix(
-    const ItemType& item_type_0,
-    const ItemType& item_type_1) const = 0;
+  virtual const ConnectivityMatrix& _getMatrix(const ItemType& item_type_0, const ItemType& item_type_1) const = 0;
 
  public:
   virtual size_t dimension() const = 0;
diff --git a/src/mesh/ItemOfItemType.hpp b/src/mesh/ItemOfItemType.hpp
index 027e35c96795e3727158a13399fbbf98721a70d3..9921eea68ef8393b11bf386a93086bf3c1d31786 100644
--- a/src/mesh/ItemOfItemType.hpp
+++ b/src/mesh/ItemOfItemType.hpp
@@ -6,8 +6,7 @@
 template <ItemType sub_item_t, ItemType item_t>
 struct ItemOfItemType
 {
-  static_assert(sub_item_t != item_t,
-                "item and its sub-item cannot be of same type");
+  static_assert(sub_item_t != item_t, "item and its sub-item cannot be of same type");
 
   constexpr static ItemType sub_item_type = sub_item_t;
   constexpr static ItemType item_type     = item_t;
diff --git a/src/mesh/ItemToItemMatrix.hpp b/src/mesh/ItemToItemMatrix.hpp
index 2438da59d96cc5b23583f191c715fc4c332ba06e..04b8a7b7487cb22789f4ff48c09292b403476695 100644
--- a/src/mesh/ItemToItemMatrix.hpp
+++ b/src/mesh/ItemToItemMatrix.hpp
@@ -82,15 +82,13 @@ class ItemToItemMatrix
   template <typename IndexType>
   PUGS_INLINE const auto& operator[](const IndexType& source_id) const
   {
-    static_assert(std::is_same_v<IndexType, SourceItemId>,
-                  "ItemToItemMatrix must be indexed using correct ItemId");
+    static_assert(std::is_same_v<IndexType, SourceItemId>, "ItemToItemMatrix must be indexed using correct ItemId");
     using RowType = decltype(m_connectivity_matrix.rowConst(source_id));
     return SubItemList<RowType>(m_connectivity_matrix.rowConst(source_id));
   }
 
   PUGS_INLINE
-  ItemToItemMatrix(const ConnectivityMatrix& connectivity_matrix)
-    : m_connectivity_matrix{connectivity_matrix}
+  ItemToItemMatrix(const ConnectivityMatrix& connectivity_matrix) : m_connectivity_matrix{connectivity_matrix}
   {
     ;
   }
diff --git a/src/mesh/ItemType.hpp b/src/mesh/ItemType.hpp
index ea5c2648629457fa2858bc1854db5a0810444ddb..1f4cbbd745514fc589fad56ad342a353dd581a94 100644
--- a/src/mesh/ItemType.hpp
+++ b/src/mesh/ItemType.hpp
@@ -19,29 +19,30 @@ itemName(const ItemType& item_type)
 {
   std::string_view name;
   switch (item_type) {
-    case ItemType::node: {
-      name = "node";
-      break;
-    }
-    case ItemType::edge: {
-      name = "edge";
-      break;
-    }
-    case ItemType::face: {
-      name = "face";
-      break;
-    }
-    case ItemType::cell: {
-      name = "cell";
-      break;
-    }
+  case ItemType::node: {
+    name = "node";
+    break;
+  }
+  case ItemType::edge: {
+    name = "edge";
+    break;
+  }
+  case ItemType::face: {
+    name = "face";
+    break;
+  }
+  case ItemType::cell: {
+    name = "cell";
+    break;
+  }
   }
   return name;
 }
 
 template <size_t Dimension>
 struct ItemTypeId
-{};
+{
+};
 
 template <>
 struct ItemTypeId<1>
@@ -52,17 +53,17 @@ struct ItemTypeId<1>
   {
     size_t i = std::numeric_limits<size_t>::max();
     switch (item_type) {
-      case ItemType::cell: {
-        i = 0;
-        break;
-      }
-      case ItemType::edge:
-      case ItemType::face:
-      case ItemType::node: {
-        // in 1d, faces, edges and nodes are the same
-        i = 1;
-        break;
-      }
+    case ItemType::cell: {
+      i = 0;
+      break;
+    }
+    case ItemType::edge:
+    case ItemType::face:
+    case ItemType::node: {
+      // in 1d, faces, edges and nodes are the same
+      i = 1;
+      break;
+    }
     }
     return i;
   }
@@ -77,20 +78,20 @@ struct ItemTypeId<2>
   {
     size_t i = std::numeric_limits<size_t>::max();
     switch (item_type) {
-      case ItemType::cell: {
-        i = 0;
-        break;
-      }
-      case ItemType::edge:
-      case ItemType::face: {
-        // in 2d, faces and edges are the same
-        i = 1;
-        break;
-      }
-      case ItemType::node: {
-        i = 2;
-        break;
-      }
+    case ItemType::cell: {
+      i = 0;
+      break;
+    }
+    case ItemType::edge:
+    case ItemType::face: {
+      // in 2d, faces and edges are the same
+      i = 1;
+      break;
+    }
+    case ItemType::node: {
+      i = 2;
+      break;
+    }
     }
     return i;
   }
@@ -105,22 +106,22 @@ struct ItemTypeId<3>
   {
     size_t i = std::numeric_limits<size_t>::max();
     switch (item_type) {
-      case ItemType::cell: {
-        i = 0;
-        break;
-      }
-      case ItemType::edge: {
-        i = 1;
-        break;
-      }
-      case ItemType::face: {
-        i = 2;
-        break;
-      }
-      case ItemType::node: {
-        i = 3;
-        break;
-      }
+    case ItemType::cell: {
+      i = 0;
+      break;
+    }
+    case ItemType::edge: {
+      i = 1;
+      break;
+    }
+    case ItemType::face: {
+      i = 2;
+      break;
+    }
+    case ItemType::node: {
+      i = 3;
+      break;
+    }
     }
     return i;
   }
diff --git a/src/mesh/ItemValue.hpp b/src/mesh/ItemValue.hpp
index d2ff6bedb048a3ca2f25a6ed3da20c17b4dca9fb..38b53ea79190724014241f50fc8cfd37d7599e40 100644
--- a/src/mesh/ItemValue.hpp
+++ b/src/mesh/ItemValue.hpp
@@ -12,9 +12,7 @@
 #include <IConnectivity.hpp>
 #include <memory>
 
-template <typename DataType,
-          ItemType item_type,
-          typename ConnectivityPtr = std::shared_ptr<const IConnectivity>>
+template <typename DataType, ItemType item_type, typename ConnectivityPtr = std::shared_ptr<const IConnectivity>>
 class ItemValue
 {
  public:
@@ -36,19 +34,15 @@ class ItemValue
   Array<DataType> m_values;
 
   // Allow const std:shared_ptr version to access our data
-  friend ItemValue<std::add_const_t<DataType>,
-                   item_type,
-                   ConnectivitySharedPtr>;
+  friend ItemValue<std::add_const_t<DataType>, item_type, ConnectivitySharedPtr>;
 
   // Allow const std:weak_ptr version to access our data
   friend ItemValue<std::add_const_t<DataType>, item_type, ConnectivityWeakPtr>;
 
-  friend PUGS_INLINE
-    ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr>
-    copy(const ItemValue<DataType, item_type, ConnectivityPtr>& source)
+  friend PUGS_INLINE ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr>
+  copy(const ItemValue<DataType, item_type, ConnectivityPtr>& source)
   {
-    ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr> image(
-      source);
+    ItemValue<std::remove_const_t<DataType>, item_type, ConnectivityPtr> image(source);
 
     image.m_values = copy(source.m_values);
     return image;
@@ -85,8 +79,7 @@ class ItemValue
   void
   fill(const DataType& data) const noexcept
   {
-    static_assert(not std::is_const_v<DataType>,
-                  "Cannot modify ItemValue of const");
+    static_assert(not std::is_const_v<DataType>, "Cannot modify ItemValue of const");
     m_values.fill(data);
   }
 
@@ -102,8 +95,7 @@ class ItemValue
   template <typename IndexType>
   DataType& operator[](const IndexType&) const noexcept(NO_ASSERT)
   {
-    static_assert(std::is_same_v<IndexType, ItemId>,
-                  "ItemValue must be indexed by ItemId");
+    static_assert(std::is_same_v<IndexType, ItemId>, "ItemValue must be indexed by ItemId");
   }
 
   PUGS_INLINE
@@ -119,19 +111,15 @@ class ItemValue
   operator=(const Array<DataType2>& values) noexcept(NO_ASSERT)
   {
     // ensures that DataType is the same as source DataType2
-    static_assert(std::is_same_v<std::remove_const_t<DataType>,
-                                 std::remove_const_t<DataType2>>,
+    static_assert(std::is_same_v<std::remove_const_t<DataType>, std::remove_const_t<DataType2>>,
                   "Cannot assign ItemValue of different type");
     // ensures that const is not lost through copy
-    static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or
-                   not std::is_const_v<DataType2>),
+    static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or not std::is_const_v<DataType2>),
                   "Cannot assign ItemValue of const to ItemValue of non-const");
 
-    Assert((m_values.size() == values.size()),
-           "Cannot assign an array of values of a different size\n");
+    Assert((m_values.size() == values.size()), "Cannot assign an array of values of a different size\n");
 
-    Assert((values.size() == 0) or this->isBuilt(),
-           "Cannot assign array of values to a non-built ItemValue\n");
+    Assert((values.size() == 0) or this->isBuilt(), "Cannot assign array of values to a non-built ItemValue\n");
 
     m_values = values;
 
@@ -140,16 +128,13 @@ class ItemValue
 
   template <typename DataType2, typename ConnectivityPtr2>
   PUGS_INLINE ItemValue&
-  operator=(const ItemValue<DataType2, item_type, ConnectivityPtr2>&
-              value_per_item) noexcept
+  operator=(const ItemValue<DataType2, item_type, ConnectivityPtr2>& value_per_item) noexcept
   {
     // ensures that DataType is the same as source DataType2
-    static_assert(std::is_same_v<std::remove_const_t<DataType>,
-                                 std::remove_const_t<DataType2>>,
+    static_assert(std::is_same_v<std::remove_const_t<DataType>, std::remove_const_t<DataType2>>,
                   "Cannot assign ItemValue of different type");
     // ensures that const is not lost through copy
-    static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or
-                   not std::is_const_v<DataType2>),
+    static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or not std::is_const_v<DataType2>),
                   "Cannot assign ItemValue of const to ItemValue of non-const");
 
     m_values = value_per_item.m_values;
@@ -165,8 +150,7 @@ class ItemValue
 
   template <typename DataType2, typename ConnectivityPtr2>
   PUGS_INLINE
-  ItemValue(const ItemValue<DataType2, item_type, ConnectivityPtr2>&
-              value_per_item) noexcept
+  ItemValue(const ItemValue<DataType2, item_type, ConnectivityPtr2>& value_per_item) noexcept
   {
     this->operator=(value_per_item);
   }
@@ -176,12 +160,10 @@ class ItemValue
 
   PUGS_INLINE
   ItemValue(const IConnectivity& connectivity) noexcept
-    : m_connectivity_ptr{connectivity.shared_ptr()},
-      m_values{connectivity.numberOf<item_type>()}
+    : m_connectivity_ptr{connectivity.shared_ptr()}, m_values{connectivity.numberOf<item_type>()}
   {
-    static_assert(
-      not std::is_const_v<DataType>,
-      "Cannot allocate ItemValue of const data: only view is supported");
+    static_assert(not std::is_const_v<DataType>, "Cannot allocate ItemValue of const data: only view is "
+                                                 "supported");
     ;
   }
 
@@ -204,8 +186,7 @@ using CellValue = ItemValue<DataType, ItemType::cell>;
 // Weak versions: should not be used outside of Connectivity
 
 template <typename DataType, ItemType item_type>
-using WeakItemValue =
-  ItemValue<DataType, item_type, std::weak_ptr<const IConnectivity>>;
+using WeakItemValue = ItemValue<DataType, item_type, std::weak_ptr<const IConnectivity>>;
 
 template <typename DataType>
 using WeakNodeValue = WeakItemValue<DataType, ItemType::node>;
diff --git a/src/mesh/ItemValueUtils.hpp b/src/mesh/ItemValueUtils.hpp
index 2013dcc2ae44ecbaf818c3a8ade0a6cf16d8e776..33a4a988a98bf9cf92524a5eb5da4948360bc00f 100644
--- a/src/mesh/ItemValueUtils.hpp
+++ b/src/mesh/ItemValueUtils.hpp
@@ -18,32 +18,28 @@ min(const ItemValue<DataType, item_type>& item_value)
   using index_type    = typename ItemValueType::index_type;
 
   const auto& is_owned = [&](const IConnectivity& connectivity) {
-    Assert((connectivity.dimension() > 0) and (connectivity.dimension() <= 3),
-           "unexpected connectivity dimension");
+    Assert((connectivity.dimension() > 0) and (connectivity.dimension() <= 3), "unexpected connectivity dimension");
 
     switch (connectivity.dimension()) {
-      case 1: {
-        const auto& connectivity_1d =
-          static_cast<const Connectivity1D&>(connectivity);
-        return connectivity_1d.isOwned<item_type>();
-        break;
-      }
-      case 2: {
-        const auto& connectivity_2d =
-          static_cast<const Connectivity2D&>(connectivity);
-        return connectivity_2d.isOwned<item_type>();
-        break;
-      }
-      case 3: {
-        const auto& connectivity_3d =
-          static_cast<const Connectivity3D&>(connectivity);
-        return connectivity_3d.isOwned<item_type>();
-        break;
-      }
-      default: {
-        perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
-        std::terminate();
-      }
+    case 1: {
+      const auto& connectivity_1d = static_cast<const Connectivity1D&>(connectivity);
+      return connectivity_1d.isOwned<item_type>();
+      break;
+    }
+    case 2: {
+      const auto& connectivity_2d = static_cast<const Connectivity2D&>(connectivity);
+      return connectivity_2d.isOwned<item_type>();
+      break;
+    }
+    case 3: {
+      const auto& connectivity_3d = static_cast<const Connectivity3D&>(connectivity);
+      return connectivity_3d.isOwned<item_type>();
+      break;
+    }
+    default: {
+      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::terminate();
+    }
     }
   }(*item_value.connectivity_ptr());
 
@@ -113,32 +109,28 @@ max(const ItemValue<DataType, item_type>& item_value)
   using index_type    = typename ItemValueType::index_type;
 
   const auto& is_owned = [&](const IConnectivity& connectivity) {
-    Assert((connectivity.dimension() > 0) and (connectivity.dimension() <= 3),
-           "unexpected connectivity dimension");
+    Assert((connectivity.dimension() > 0) and (connectivity.dimension() <= 3), "unexpected connectivity dimension");
 
     switch (connectivity.dimension()) {
-      case 1: {
-        const auto& connectivity_1d =
-          static_cast<const Connectivity1D&>(connectivity);
-        return connectivity_1d.isOwned<item_type>();
-        break;
-      }
-      case 2: {
-        const auto& connectivity_2d =
-          static_cast<const Connectivity2D&>(connectivity);
-        return connectivity_2d.isOwned<item_type>();
-        break;
-      }
-      case 3: {
-        const auto& connectivity_3d =
-          static_cast<const Connectivity3D&>(connectivity);
-        return connectivity_3d.isOwned<item_type>();
-        break;
-      }
-      default: {
-        perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
-        std::terminate();
-      }
+    case 1: {
+      const auto& connectivity_1d = static_cast<const Connectivity1D&>(connectivity);
+      return connectivity_1d.isOwned<item_type>();
+      break;
+    }
+    case 2: {
+      const auto& connectivity_2d = static_cast<const Connectivity2D&>(connectivity);
+      return connectivity_2d.isOwned<item_type>();
+      break;
+    }
+    case 3: {
+      const auto& connectivity_3d = static_cast<const Connectivity3D&>(connectivity);
+      return connectivity_3d.isOwned<item_type>();
+      break;
+    }
+    default: {
+      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::terminate();
+    }
     }
   }(*item_value.connectivity_ptr());
 
@@ -208,32 +200,28 @@ sum(const ItemValue<DataType, item_type>& item_value)
   using index_type    = typename ItemValueType::index_type;
 
   const auto& is_owned = [&](const IConnectivity& connectivity) {
-    Assert((connectivity.dimension() > 0) and (connectivity.dimension() <= 3),
-           "unexpected connectivity dimension");
+    Assert((connectivity.dimension() > 0) and (connectivity.dimension() <= 3), "unexpected connectivity dimension");
 
     switch (connectivity.dimension()) {
-      case 1: {
-        const auto& connectivity_1d =
-          static_cast<const Connectivity1D&>(connectivity);
-        return connectivity_1d.isOwned<item_type>();
-        break;
-      }
-      case 2: {
-        const auto& connectivity_2d =
-          static_cast<const Connectivity2D&>(connectivity);
-        return connectivity_2d.isOwned<item_type>();
-        break;
-      }
-      case 3: {
-        const auto& connectivity_3d =
-          static_cast<const Connectivity3D&>(connectivity);
-        return connectivity_3d.isOwned<item_type>();
-        break;
-      }
-      default: {
-        perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
-        std::terminate();
-      }
+    case 1: {
+      const auto& connectivity_1d = static_cast<const Connectivity1D&>(connectivity);
+      return connectivity_1d.isOwned<item_type>();
+      break;
+    }
+    case 2: {
+      const auto& connectivity_2d = static_cast<const Connectivity2D&>(connectivity);
+      return connectivity_2d.isOwned<item_type>();
+      break;
+    }
+    case 3: {
+      const auto& connectivity_3d = static_cast<const Connectivity3D&>(connectivity);
+      return connectivity_3d.isOwned<item_type>();
+      break;
+    }
+    default: {
+      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::terminate();
+    }
     }
   }(*item_value.connectivity_ptr());
 
@@ -300,13 +288,11 @@ template <typename DataType, ItemType item_type, typename ConnectivityPtr>
 void
 synchronize(ItemValue<DataType, item_type, ConnectivityPtr>& item_value)
 {
-  static_assert(not std::is_const_v<DataType>,
-                "cannot synchronize ItemValue of const data");
+  static_assert(not std::is_const_v<DataType>, "cannot synchronize ItemValue of const data");
   if (parallel::size() > 1) {
     auto& manager                     = SynchronizerManager::instance();
     const IConnectivity* connectivity = item_value.connectivity_ptr().get();
-    Synchronizer& synchronizer =
-      manager.getConnectivitySynchronizer(connectivity);
+    Synchronizer& synchronizer        = manager.getConnectivitySynchronizer(connectivity);
     synchronizer.synchronize(item_value);
   }
 }
diff --git a/src/mesh/Mesh.hpp b/src/mesh/Mesh.hpp
index af76417d50e1ea686548e6270147c2f0480cebe8..a8e9411007783bb5a6406510c38c2bd40eb03d54 100644
--- a/src/mesh/Mesh.hpp
+++ b/src/mesh/Mesh.hpp
@@ -79,8 +79,7 @@ class Mesh final : public IMesh
   }
 
   PUGS_INLINE
-  Mesh(const std::shared_ptr<const Connectivity>& connectivity,
-       NodeValue<Rd>& xr)
+  Mesh(const std::shared_ptr<const Connectivity>& connectivity, NodeValue<Rd>& xr)
     : m_connectivity{connectivity}, m_xr{xr}, m_mutable_xr{xr}
   {
     ;
diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp
index 0c512e4d14b1d862721431089d3a8a4d708a2a6a..17a1ac4c38a7eee7dc90a5584f8d91f4a7413d73 100644
--- a/src/mesh/MeshData.hpp
+++ b/src/mesh/MeshData.hpp
@@ -37,32 +37,31 @@ class MeshData
     if constexpr (Dimension == 1) {
       const NodeValue<const Rd>& xr = m_mesh.xr();
 
-      const auto& cell_to_node_matrix =
-        m_mesh.connectivity().cellToNodeMatrix();
+      const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
 
       CellValue<Rd> xj(m_mesh.connectivity());
-      parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-        const auto& cell_nodes = cell_to_node_matrix[j];
-        xj[j]                  = 0.5 * (xr[cell_nodes[0]] + xr[cell_nodes[1]]);
-      });
+      parallel_for(
+        m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+          const auto& cell_nodes = cell_to_node_matrix[j];
+          xj[j]                  = 0.5 * (xr[cell_nodes[0]] + xr[cell_nodes[1]]);
+        });
       m_xj = xj;
     } else {
       const NodeValue<const Rd>& xr = m_mesh.xr();
 
-      const CellValue<const double>& inv_cell_nb_nodes =
-        m_mesh.connectivity().invCellNbNodes();
+      const CellValue<const double>& inv_cell_nb_nodes = m_mesh.connectivity().invCellNbNodes();
 
-      const auto& cell_to_node_matrix =
-        m_mesh.connectivity().cellToNodeMatrix();
+      const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
       CellValue<Rd> xj(m_mesh.connectivity());
-      parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-        Rd X                   = zero;
-        const auto& cell_nodes = cell_to_node_matrix[j];
-        for (size_t R = 0; R < cell_nodes.size(); ++R) {
-          X += xr[cell_nodes[R]];
-        }
-        xj[j] = inv_cell_nb_nodes[j] * X;
-      });
+      parallel_for(
+        m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+          Rd X                   = zero;
+          const auto& cell_nodes = cell_to_node_matrix[j];
+          for (size_t R = 0; R < cell_nodes.size(); ++R) {
+            X += xr[cell_nodes[R]];
+          }
+          xj[j] = inv_cell_nb_nodes[j] * X;
+        });
       m_xj = xj;
     }
   }
@@ -75,15 +74,16 @@ class MeshData
     const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
 
     CellValue<double> Vj(m_mesh.connectivity());
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      double sum_cjr_xr      = 0;
-      const auto& cell_nodes = cell_to_node_matrix[j];
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        double sum_cjr_xr      = 0;
+        const auto& cell_nodes = cell_to_node_matrix[j];
 
-      for (size_t R = 0; R < cell_nodes.size(); ++R) {
-        sum_cjr_xr += (xr[cell_nodes[R]], m_Cjr(j, R));
-      }
-      Vj[j] = inv_Dimension * sum_cjr_xr;
-    });
+        for (size_t R = 0; R < cell_nodes.size(); ++R) {
+          sum_cjr_xr += (xr[cell_nodes[R]], m_Cjr(j, R));
+        }
+        Vj[j] = inv_Dimension * sum_cjr_xr;
+      });
     m_Vj = Vj;
   }
 
@@ -94,130 +94,123 @@ class MeshData
     if constexpr (Dimension == 1) {
       // Cjr/njr/ljr are constant overtime
     } else if constexpr (Dimension == 2) {
-      const NodeValue<const Rd>& xr = m_mesh.xr();
-      const auto& cell_to_node_matrix =
-        m_mesh.connectivity().cellToNodeMatrix();
+      const NodeValue<const Rd>& xr   = m_mesh.xr();
+      const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
 
       {
         NodeValuePerCell<Rd> Cjr(m_mesh.connectivity());
-        parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-          const auto& cell_nodes = cell_to_node_matrix[j];
-          for (size_t R = 0; R < cell_nodes.size(); ++R) {
-            int Rp1         = (R + 1) % cell_nodes.size();
-            int Rm1         = (R + cell_nodes.size() - 1) % cell_nodes.size();
-            Rd half_xrp_xrm = 0.5 * (xr[cell_nodes[Rp1]] - xr[cell_nodes[Rm1]]);
-            Cjr(j, R)       = Rd{-half_xrp_xrm[1], half_xrp_xrm[0]};
-          }
-        });
+        parallel_for(
+          m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+            const auto& cell_nodes = cell_to_node_matrix[j];
+            for (size_t R = 0; R < cell_nodes.size(); ++R) {
+              int Rp1         = (R + 1) % cell_nodes.size();
+              int Rm1         = (R + cell_nodes.size() - 1) % cell_nodes.size();
+              Rd half_xrp_xrm = 0.5 * (xr[cell_nodes[Rp1]] - xr[cell_nodes[Rm1]]);
+              Cjr(j, R)       = Rd{-half_xrp_xrm[1], half_xrp_xrm[0]};
+            }
+          });
         m_Cjr = Cjr;
       }
 
       {
         NodeValuePerCell<double> ljr(m_mesh.connectivity());
-        parallel_for(m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) {
-          ljr[jr] = l2Norm(m_Cjr[jr]);
-        });
+        parallel_for(
+          m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) { ljr[jr] = l2Norm(m_Cjr[jr]); });
         m_ljr = ljr;
       }
 
       {
         NodeValuePerCell<Rd> njr(m_mesh.connectivity());
-        parallel_for(m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) {
-          njr[jr] = (1. / m_ljr[jr]) * m_Cjr[jr];
-        });
+        parallel_for(
+          m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) { njr[jr] = (1. / m_ljr[jr]) * m_Cjr[jr]; });
         m_njr = njr;
       }
     } else if (Dimension == 3) {
       const NodeValue<const Rd>& xr = m_mesh.xr();
 
       NodeValuePerFace<Rd> Nlr(m_mesh.connectivity());
-      const auto& face_to_node_matrix =
-        m_mesh.connectivity().faceToNodeMatrix();
-
-      parallel_for(m_mesh.numberOfFaces(), PUGS_LAMBDA(const FaceId& l) {
-        const auto& face_nodes = face_to_node_matrix[l];
-        const size_t nb_nodes  = face_nodes.size();
-        std::vector<Rd> dxr(nb_nodes);
-        for (size_t r = 0; r < nb_nodes; ++r) {
-          dxr[r] = xr[face_nodes[(r + 1) % nb_nodes]] -
-                   xr[face_nodes[(r + nb_nodes - 1) % nb_nodes]];
-        }
-        const double inv_12_nb_nodes = 1. / (12. * nb_nodes);
-        for (size_t r = 0; r < nb_nodes; ++r) {
-          Rd Nr            = zero;
-          const Rd two_dxr = 2 * dxr[r];
-          for (size_t s = 0; s < nb_nodes; ++s) {
-            Nr += crossProduct((two_dxr - dxr[s]), xr[face_nodes[s]]);
+      const auto& face_to_node_matrix = m_mesh.connectivity().faceToNodeMatrix();
+
+      parallel_for(
+        m_mesh.numberOfFaces(), PUGS_LAMBDA(const FaceId& l) {
+          const auto& face_nodes = face_to_node_matrix[l];
+          const size_t nb_nodes  = face_nodes.size();
+          std::vector<Rd> dxr(nb_nodes);
+          for (size_t r = 0; r < nb_nodes; ++r) {
+            dxr[r] = xr[face_nodes[(r + 1) % nb_nodes]] - xr[face_nodes[(r + nb_nodes - 1) % nb_nodes]];
           }
-          Nr *= inv_12_nb_nodes;
-          Nr -= (1. / 6.) * crossProduct(dxr[r], xr[face_nodes[r]]);
-          Nlr(l, r) = Nr;
-        }
-      });
+          const double inv_12_nb_nodes = 1. / (12. * nb_nodes);
+          for (size_t r = 0; r < nb_nodes; ++r) {
+            Rd Nr            = zero;
+            const Rd two_dxr = 2 * dxr[r];
+            for (size_t s = 0; s < nb_nodes; ++s) {
+              Nr += crossProduct((two_dxr - dxr[s]), xr[face_nodes[s]]);
+            }
+            Nr *= inv_12_nb_nodes;
+            Nr -= (1. / 6.) * crossProduct(dxr[r], xr[face_nodes[r]]);
+            Nlr(l, r) = Nr;
+          }
+        });
 
-      const auto& cell_to_node_matrix =
-        m_mesh.connectivity().cellToNodeMatrix();
+      const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
 
-      const auto& cell_to_face_matrix =
-        m_mesh.connectivity().cellToFaceMatrix();
+      const auto& cell_to_face_matrix = m_mesh.connectivity().cellToFaceMatrix();
 
-      const auto& cell_face_is_reversed =
-        m_mesh.connectivity().cellFaceIsReversed();
+      const auto& cell_face_is_reversed = m_mesh.connectivity().cellFaceIsReversed();
 
       {
         NodeValuePerCell<Rd> Cjr(m_mesh.connectivity());
-        parallel_for(Cjr.numberOfValues(),
-                     PUGS_LAMBDA(const size_t& jr) { Cjr[jr] = zero; });
+        parallel_for(
+          Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) { Cjr[jr] = zero; });
 
-        parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-          const auto& cell_nodes = cell_to_node_matrix[j];
+        parallel_for(
+          m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+            const auto& cell_nodes = cell_to_node_matrix[j];
 
-          const auto& cell_faces       = cell_to_face_matrix[j];
-          const auto& face_is_reversed = cell_face_is_reversed.itemValues(j);
+            const auto& cell_faces       = cell_to_face_matrix[j];
+            const auto& face_is_reversed = cell_face_is_reversed.itemValues(j);
 
-          for (size_t L = 0; L < cell_faces.size(); ++L) {
-            const FaceId& l        = cell_faces[L];
-            const auto& face_nodes = face_to_node_matrix[l];
+            for (size_t L = 0; L < cell_faces.size(); ++L) {
+              const FaceId& l        = cell_faces[L];
+              const auto& face_nodes = face_to_node_matrix[l];
 
-            auto local_node_number_in_cell = [&](const NodeId& node_number) {
-              for (size_t i_node = 0; i_node < cell_nodes.size(); ++i_node) {
-                if (node_number == cell_nodes[i_node]) {
-                  return i_node;
+              auto local_node_number_in_cell = [&](const NodeId& node_number) {
+                for (size_t i_node = 0; i_node < cell_nodes.size(); ++i_node) {
+                  if (node_number == cell_nodes[i_node]) {
+                    return i_node;
+                  }
                 }
-              }
-              return std::numeric_limits<size_t>::max();
-            };
+                return std::numeric_limits<size_t>::max();
+              };
 
-            if (face_is_reversed[L]) {
-              for (size_t rl = 0; rl < face_nodes.size(); ++rl) {
-                const size_t R = local_node_number_in_cell(face_nodes[rl]);
-                Cjr(j, R) -= Nlr(l, rl);
-              }
-            } else {
-              for (size_t rl = 0; rl < face_nodes.size(); ++rl) {
-                const size_t R = local_node_number_in_cell(face_nodes[rl]);
-                Cjr(j, R) += Nlr(l, rl);
+              if (face_is_reversed[L]) {
+                for (size_t rl = 0; rl < face_nodes.size(); ++rl) {
+                  const size_t R = local_node_number_in_cell(face_nodes[rl]);
+                  Cjr(j, R) -= Nlr(l, rl);
+                }
+              } else {
+                for (size_t rl = 0; rl < face_nodes.size(); ++rl) {
+                  const size_t R = local_node_number_in_cell(face_nodes[rl]);
+                  Cjr(j, R) += Nlr(l, rl);
+                }
               }
             }
-          }
-        });
+          });
 
         m_Cjr = Cjr;
       }
 
       {
         NodeValuePerCell<double> ljr(m_mesh.connectivity());
-        parallel_for(m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) {
-          ljr[jr] = l2Norm(m_Cjr[jr]);
-        });
+        parallel_for(
+          m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) { ljr[jr] = l2Norm(m_Cjr[jr]); });
         m_ljr = ljr;
       }
 
       {
         NodeValuePerCell<Rd> njr(m_mesh.connectivity());
-        parallel_for(m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) {
-          njr[jr] = (1. / m_ljr[jr]) * m_Cjr[jr];
-        });
+        parallel_for(
+          m_Cjr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) { njr[jr] = (1. / m_ljr[jr]) * m_Cjr[jr]; });
         m_njr = njr;
       }
     }
@@ -281,18 +274,19 @@ class MeshData
       // in 1d Cjr are computed once for all
       {
         NodeValuePerCell<Rd> Cjr(m_mesh.connectivity());
-        parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-          Cjr(j, 0) = -1;
-          Cjr(j, 1) = 1;
-        });
+        parallel_for(
+          m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+            Cjr(j, 0) = -1;
+            Cjr(j, 1) = 1;
+          });
         m_Cjr = Cjr;
       }
       // in 1d njr=Cjr (here performs a shallow copy)
       m_njr = m_Cjr;
       {
         NodeValuePerCell<double> ljr(m_mesh.connectivity());
-        parallel_for(ljr.numberOfValues(),
-                     PUGS_LAMBDA(const size_t& jr) { ljr[jr] = 1; });
+        parallel_for(
+          ljr.numberOfValues(), PUGS_LAMBDA(const size_t& jr) { ljr[jr] = 1; });
         m_ljr = ljr;
       }
     }
diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp
index 9cc040a4a228354f82a5f608d2e1b8ad447de236..8f3b6362d827df82c8838bee8936728d40071ac6 100644
--- a/src/mesh/MeshNodeBoundary.hpp
+++ b/src/mesh/MeshNodeBoundary.hpp
@@ -38,13 +38,14 @@ class MeshNodeBoundary
     const auto& face_to_cell_matrix = mesh.connectivity().faceToCellMatrix();
 
     const Array<const FaceId>& face_list = ref_face_list.list();
-    parallel_for(face_list.size(), PUGS_LAMBDA(const int& l) {
-      const auto& face_cells = face_to_cell_matrix[face_list[l]];
-      if (face_cells.size() > 1) {
-        perr() << "internal faces cannot be used to define mesh boundaries\n";
-        std::exit(1);
-      }
-    });
+    parallel_for(
+      face_list.size(), PUGS_LAMBDA(const int& l) {
+        const auto& face_cells = face_to_cell_matrix[face_list[l]];
+        if (face_cells.size() > 1) {
+          perr() << "internal faces cannot be used to define mesh boundaries\n";
+          std::exit(1);
+        }
+      });
 
     Kokkos::vector<unsigned int> node_ids;
     // not enough but should reduce significantly the number of resizing
@@ -64,14 +65,13 @@ class MeshNodeBoundary
     node_ids.resize(std::distance(node_ids.begin(), last));
 
     Array<NodeId> node_list(node_ids.size());
-    parallel_for(node_ids.size(),
-                 PUGS_LAMBDA(const int& r) { node_list[r] = node_ids[r]; });
+    parallel_for(
+      node_ids.size(), PUGS_LAMBDA(const int& r) { node_list[r] = node_ids[r]; });
     m_node_list = node_list;
   }
 
   template <typename MeshType>
-  MeshNodeBoundary(const MeshType&, const RefNodeList& ref_node_list)
-    : m_node_list(ref_node_list.list())
+  MeshNodeBoundary(const MeshType&, const RefNodeList& ref_node_list) : m_node_list(ref_node_list.list())
   {
     static_assert(Dimension == MeshType::Dimension);
   }
@@ -115,16 +115,14 @@ class MeshFlatNodeBoundary : public MeshNodeBoundary<Dimension>
 
   template <typename MeshType>
   MeshFlatNodeBoundary(const MeshType& mesh, const RefFaceList& ref_face_list)
-    : MeshNodeBoundary<Dimension>(mesh, ref_face_list),
-      m_outgoing_normal(_getOutgoingNormal(mesh))
+    : MeshNodeBoundary<Dimension>(mesh, ref_face_list), m_outgoing_normal(_getOutgoingNormal(mesh))
   {
     ;
   }
 
   template <typename MeshType>
   MeshFlatNodeBoundary(const MeshType& mesh, const RefNodeList& ref_node_list)
-    : MeshNodeBoundary<Dimension>(mesh, ref_node_list),
-      m_outgoing_normal(_getOutgoingNormal(mesh))
+    : MeshNodeBoundary<Dimension>(mesh, ref_node_list), m_outgoing_normal(_getOutgoingNormal(mesh))
   {
     ;
   }
@@ -138,11 +136,10 @@ class MeshFlatNodeBoundary : public MeshNodeBoundary<Dimension>
 template <>
 template <typename MeshType>
 void
-MeshFlatNodeBoundary<2>::_checkBoundaryIsFlat(
-  const TinyVector<2, double>& normal,
-  const TinyVector<2, double>& xmin,
-  const TinyVector<2, double>& xmax,
-  const MeshType& mesh) const
+MeshFlatNodeBoundary<2>::_checkBoundaryIsFlat(const TinyVector<2, double>& normal,
+                                              const TinyVector<2, double>& xmin,
+                                              const TinyVector<2, double>& xmax,
+                                              const MeshType& mesh) const
 {
   static_assert(MeshType::Dimension == 2);
   using R2 = TinyVector<2, double>;
@@ -152,13 +149,14 @@ MeshFlatNodeBoundary<2>::_checkBoundaryIsFlat(
 
   const NodeValue<const R2>& xr = mesh.xr();
 
-  parallel_for(m_node_list.size(), PUGS_LAMBDA(const size_t& r) {
-    const R2& x = xr[m_node_list[r]];
-    if ((x - origin, normal) > 1E-13 * length) {
-      perr() << "this FlatBoundary is not flat!\n";
-      std::exit(1);
-    }
-  });
+  parallel_for(
+    m_node_list.size(), PUGS_LAMBDA(const size_t& r) {
+      const R2& x = xr[m_node_list[r]];
+      if ((x - origin, normal) > 1E-13 * length) {
+        perr() << "this FlatBoundary is not flat!\n";
+        std::exit(1);
+      }
+    });
 }
 
 template <>
@@ -187,11 +185,9 @@ MeshFlatNodeBoundary<2>::_getNormal(const MeshType& mesh)
 
   const NodeValue<const R2>& xr = mesh.xr();
 
-  R2 xmin(std::numeric_limits<double>::max(),
-          std::numeric_limits<double>::max());
+  R2 xmin(std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
 
-  R2 xmax(-std::numeric_limits<double>::max(),
-          -std::numeric_limits<double>::max());
+  R2 xmax(-std::numeric_limits<double>::max(), -std::numeric_limits<double>::max());
 
   for (size_t r = 0; r < m_node_list.size(); ++r) {
     const R2& x = xr[m_node_list[r]];
@@ -219,8 +215,7 @@ MeshFlatNodeBoundary<2>::_getNormal(const MeshType& mesh)
   }
 
   if (xmin == xmax) {
-    perr() << "xmin==xmax (" << xmin << "==" << xmax
-           << ") unable to compute normal";
+    perr() << "xmin==xmax (" << xmin << "==" << xmax << ") unable to compute normal";
     std::exit(1);
   }
 
@@ -242,9 +237,7 @@ MeshFlatNodeBoundary<3>::_getNormal(const MeshType& mesh)
   static_assert(MeshType::Dimension == 3);
   using R3 = TinyVector<3, double>;
 
-  R3 xmin(std::numeric_limits<double>::max(),
-          std::numeric_limits<double>::max(),
-          std::numeric_limits<double>::max());
+  R3 xmin(std::numeric_limits<double>::max(), std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
   R3 ymin = xmin;
   R3 zmin = xmin;
   ;
diff --git a/src/mesh/RefId.hpp b/src/mesh/RefId.hpp
index aebc9d7d7f9ad2b12776dca6cc9b15514a95339d..35b9c4ef2966d151def68f29736b23a496cd8151 100644
--- a/src/mesh/RefId.hpp
+++ b/src/mesh/RefId.hpp
@@ -29,16 +29,14 @@ class RefId
   bool
   operator==(const RefId& ref_id) const
   {
-    return ((m_tag_number == ref_id.m_tag_number) and
-            (m_tag_name == ref_id.m_tag_name));
+    return ((m_tag_number == ref_id.m_tag_number) and (m_tag_name == ref_id.m_tag_name));
   }
 
   bool
   operator<(const RefId& ref_id) const
   {
     return ((m_tag_number < ref_id.m_tag_number) or
-            ((m_tag_number == ref_id.m_tag_number) and
-             (m_tag_name < ref_id.m_tag_name)));
+            ((m_tag_number == ref_id.m_tag_number) and (m_tag_name < ref_id.m_tag_name)));
   }
 
   TagNumberType
@@ -65,8 +63,7 @@ class RefId
     ;
   }
 
-  explicit RefId(const TagNumberType& tag_number)
-    : m_tag_number(tag_number), m_tag_name(std::to_string(tag_number))
+  explicit RefId(const TagNumberType& tag_number) : m_tag_number(tag_number), m_tag_name(std::to_string(tag_number))
   {
     ;
   }
diff --git a/src/mesh/SubItemValuePerItem.hpp b/src/mesh/SubItemValuePerItem.hpp
index 6f350feb8aac001cfafe16ab53fe5de1de0a5abd..132a0fb83d3d6c9a04a21f59a99e8beccb765d18 100644
--- a/src/mesh/SubItemValuePerItem.hpp
+++ b/src/mesh/SubItemValuePerItem.hpp
@@ -17,9 +17,7 @@
 
 #include <memory>
 
-template <typename DataType,
-          typename ItemOfItem,
-          typename ConnectivityPtr = std::shared_ptr<const IConnectivity>>
+template <typename DataType, typename ItemOfItem, typename ConnectivityPtr = std::shared_ptr<const IConnectivity>>
 class SubItemValuePerItem
 {
  public:
@@ -44,18 +42,13 @@ class SubItemValuePerItem
   Array<DataType> m_values;
 
   // Allow const std:shared_ptr version to access our data
-  friend SubItemValuePerItem<std::add_const_t<DataType>,
-                             ItemOfItem,
-                             ConnectivitySharedPtr>;
+  friend SubItemValuePerItem<std::add_const_t<DataType>, ItemOfItem, ConnectivitySharedPtr>;
 
   // Allow const std:weak_ptr version to access our data
-  friend SubItemValuePerItem<std::add_const_t<DataType>,
-                             ItemOfItem,
-                             ConnectivityWeakPtr>;
+  friend SubItemValuePerItem<std::add_const_t<DataType>, ItemOfItem, ConnectivityWeakPtr>;
 
  public:
-  using ToShared =
-    SubItemValuePerItem<DataType, ItemOfItem, ConnectivitySharedPtr>;
+  using ToShared = SubItemValuePerItem<DataType, ItemOfItem, ConnectivitySharedPtr>;
 
   class SubView
   {
@@ -94,9 +87,7 @@ class SubItemValuePerItem
     SubView(SubView&&) noexcept = default;
 
     PUGS_INLINE
-    SubView(const Array<DataType>& values,
-            const size_t& begin,
-            const size_t& end) noexcept(NO_ASSERT)
+    SubView(const Array<DataType>& values, const size_t& begin, const size_t& end) noexcept(NO_ASSERT)
       : m_sub_values(&(values[begin])), m_size(end - begin)
     {
       Assert(begin <= end);
@@ -125,8 +116,7 @@ class SubItemValuePerItem
   PUGS_FORCEINLINE DataType&
   operator()(const IndexType& j, const size_t& r) const noexcept(NO_ASSERT)
   {
-    static_assert(std::is_same_v<IndexType, ItemId>,
-                  "SubItemValuePerItem indexed by ItemId");
+    static_assert(std::is_same_v<IndexType, ItemId>, "SubItemValuePerItem indexed by ItemId");
     Assert(this->isBuilt());
     return m_values[m_host_row_map(size_t{j}) + r];
   }
@@ -151,9 +141,8 @@ class SubItemValuePerItem
   template <typename IndexType>
   DataType& operator[](const IndexType& i) const noexcept(NO_ASSERT)
   {
-    static_assert(
-      std::is_same_v<IndexType, size_t>,
-      "Access to SubItemValuePerItem's array must be indexed by size_t");
+    static_assert(std::is_same_v<IndexType, size_t>, "Access to SubItemValuePerItem's array must be indexed by "
+                                                     "size_t");
     Assert(this->isBuilt());
     return m_values[i];
   }
@@ -199,16 +188,13 @@ class SubItemValuePerItem
 
   template <typename DataType2, typename ConnectivityPtr2>
   PUGS_INLINE SubItemValuePerItem&
-  operator=(const SubItemValuePerItem<DataType2, ItemOfItem, ConnectivityPtr2>&
-              sub_item_value_per_item) noexcept
+  operator=(const SubItemValuePerItem<DataType2, ItemOfItem, ConnectivityPtr2>& sub_item_value_per_item) noexcept
   {
     // ensures that DataType is the same as source DataType2
-    static_assert(std::is_same_v<std::remove_const_t<DataType>,
-                                 std::remove_const_t<DataType2>>,
+    static_assert(std::is_same_v<std::remove_const_t<DataType>, std::remove_const_t<DataType2>>,
                   "Cannot assign SubItemValuePerItem of different type");
     // ensures that const is not lost through copy
-    static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or
-                   not std::is_const_v<DataType2>),
+    static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or not std::is_const_v<DataType2>),
                   "Cannot assign SubItemValuePerItem of const data to "
                   "SubItemValuePerItem of non-const data");
     m_host_row_map = sub_item_value_per_item.m_host_row_map;
@@ -227,28 +213,23 @@ class SubItemValuePerItem
   template <typename DataType2, typename ConnectivityPtr2>
   PUGS_INLINE
   SubItemValuePerItem(
-    const SubItemValuePerItem<DataType2, ItemOfItem, ConnectivityPtr2>&
-      sub_item_value_per_item) noexcept
+    const SubItemValuePerItem<DataType2, ItemOfItem, ConnectivityPtr2>& sub_item_value_per_item) noexcept
   {
     this->operator=(sub_item_value_per_item);
   }
 
   SubItemValuePerItem() = default;
 
-  SubItemValuePerItem(const IConnectivity& connectivity) noexcept
-    : m_connectivity_ptr{connectivity.shared_ptr()}
+  SubItemValuePerItem(const IConnectivity& connectivity) noexcept : m_connectivity_ptr{connectivity.shared_ptr()}
   {
-    static_assert(not std::is_const_v<DataType>,
-                  "Cannot allocate SubItemValuePerItem of const data: only "
-                  "view is supported");
+    static_assert(not std::is_const_v<DataType>, "Cannot allocate SubItemValuePerItem of const data: only "
+                                                 "view is supported");
     ;
 
-    ConnectivityMatrix connectivity_matrix =
-      connectivity._getMatrix(item_type, sub_item_type);
+    ConnectivityMatrix connectivity_matrix = connectivity._getMatrix(item_type, sub_item_type);
 
     m_host_row_map = connectivity_matrix.rowsMap();
-    m_values =
-      Array<std::remove_const_t<DataType>>(connectivity_matrix.numEntries());
+    m_values       = Array<std::remove_const_t<DataType>>(connectivity_matrix.numEntries());
   }
 
   ~SubItemValuePerItem() = default;
@@ -302,8 +283,7 @@ using CellValuePerFace = SubItemValuePerItem<DataType, CellOfFace>;
 // Item values at nodes
 
 template <typename DataType, typename ItemOfItem>
-using WeakSubItemValuePerItem =
-  SubItemValuePerItem<DataType, ItemOfItem, std::weak_ptr<const IConnectivity>>;
+using WeakSubItemValuePerItem = SubItemValuePerItem<DataType, ItemOfItem, std::weak_ptr<const IConnectivity>>;
 
 template <typename DataType>
 using WeakNodeValuePerEdge = WeakSubItemValuePerItem<DataType, NodeOfEdge>;
diff --git a/src/mesh/Synchronizer.hpp b/src/mesh/Synchronizer.hpp
index ed378365dba4e1c9745ca71785fd2d554733bfb7..30781a63a0d67bbc9ee4031f82d579d92a6a2194 100644
--- a/src/mesh/Synchronizer.hpp
+++ b/src/mesh/Synchronizer.hpp
@@ -62,53 +62,44 @@ class Synchronizer
 
     auto& requested_item_info = this->_getRequestedItemInfo<item_type>();
     requested_item_info       = [&]() {
-      std::vector<std::vector<ItemId>> requested_item_vector_info(
-        parallel::size());
+      std::vector<std::vector<ItemId>> requested_item_vector_info(parallel::size());
       for (ItemId item_id = 0; item_id < item_owner.size(); ++item_id) {
-        if (const size_t owner = item_owner[item_id];
-            owner != parallel::rank()) {
+        if (const size_t owner = item_owner[item_id]; owner != parallel::rank()) {
           requested_item_vector_info[owner].emplace_back(item_id);
         }
       }
       std::vector<Array<const ItemId>> requested_item_info(parallel::size());
       for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
         const auto& requested_item_vector = requested_item_vector_info[i_rank];
-        requested_item_info[i_rank] = convert_to_array(requested_item_vector);
+        requested_item_info[i_rank]       = convert_to_array(requested_item_vector);
       }
       return requested_item_info;
     }();
 
     Array<unsigned int> local_number_of_requested_values(parallel::size());
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-      local_number_of_requested_values[i_rank] =
-        requested_item_info[i_rank].size();
+      local_number_of_requested_values[i_rank] = requested_item_info[i_rank].size();
     }
 
-    Array<unsigned int> local_number_of_values_to_send =
-      parallel::allToAll(local_number_of_requested_values);
+    Array<unsigned int> local_number_of_values_to_send = parallel::allToAll(local_number_of_requested_values);
 
-    std::vector<Array<const int>> requested_item_number_list_by_proc(
-      parallel::size());
+    std::vector<Array<const int>> requested_item_number_list_by_proc(parallel::size());
     const auto& item_number = connectivity.template number<item_type>();
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
       const auto& requested_item_info_from_rank = requested_item_info[i_rank];
       Array<int> item_number_list{requested_item_info_from_rank.size()};
-      parallel_for(requested_item_info_from_rank.size(),
-                   PUGS_LAMBDA(size_t i_item) {
-                     item_number_list[i_item] =
-                       item_number[requested_item_info_from_rank[i_item]];
-                   });
+      parallel_for(
+        requested_item_info_from_rank.size(),
+        PUGS_LAMBDA(size_t i_item) { item_number_list[i_item] = item_number[requested_item_info_from_rank[i_item]]; });
       requested_item_number_list_by_proc[i_rank] = item_number_list;
     }
 
     std::vector<Array<int>> provided_item_number_list_by_rank(parallel::size());
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-      provided_item_number_list_by_rank[i_rank] =
-        Array<int>{local_number_of_values_to_send[i_rank]};
+      provided_item_number_list_by_rank[i_rank] = Array<int>{local_number_of_values_to_send[i_rank]};
     }
 
-    parallel::exchange(requested_item_number_list_by_proc,
-                       provided_item_number_list_by_rank);
+    parallel::exchange(requested_item_number_list_by_proc, provided_item_number_list_by_rank);
 
     std::map<int, ItemId> item_number_to_id_correspondance;
     for (ItemId item_id = 0; item_id < item_number.size(); ++item_id) {
@@ -119,14 +110,10 @@ class Synchronizer
     provided_item_info       = [&]() {
       std::vector<Array<const ItemId>> provided_item_info(parallel::size());
       for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-        Array<ItemId> provided_item_id_to_rank{
-          local_number_of_values_to_send[i_rank]};
-        const Array<int>& provided_item_number_to_rank =
-          provided_item_number_list_by_rank[i_rank];
+        Array<ItemId> provided_item_id_to_rank{local_number_of_values_to_send[i_rank]};
+        const Array<int>& provided_item_number_to_rank = provided_item_number_list_by_rank[i_rank];
         for (size_t i = 0; i < provided_item_number_to_rank.size(); ++i) {
-          provided_item_id_to_rank[i] = item_number_to_id_correspondance
-                                          .find(provided_item_number_to_rank[i])
-                                          ->second;
+          provided_item_id_to_rank[i] = item_number_to_id_correspondance.find(provided_item_number_to_rank[i])->second;
         }
         provided_item_info[i_rank] = provided_item_id_to_rank;
       }
@@ -134,16 +121,11 @@ class Synchronizer
     }();
   }
 
-  template <typename ConnectivityType,
-            typename DataType,
-            ItemType item_type,
-            typename ConnectivityPtr>
+  template <typename ConnectivityType, typename DataType, ItemType item_type, typename ConnectivityPtr>
   PUGS_INLINE void
-  _synchronize(const ConnectivityType& connectivity,
-               ItemValue<DataType, item_type, ConnectivityPtr>& item_value)
+  _synchronize(const ConnectivityType& connectivity, ItemValue<DataType, item_type, ConnectivityPtr>& item_value)
   {
-    static_assert(not std::is_abstract_v<ConnectivityType>,
-                  "_synchronize must be called on a concrete connectivity");
+    static_assert(not std::is_abstract_v<ConnectivityType>, "_synchronize must be called on a concrete connectivity");
 
     using ItemId = ItemIdT<item_type>;
 
@@ -158,20 +140,18 @@ class Synchronizer
 
     std::vector<Array<const DataType>> provided_data_list(parallel::size());
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
-      const Array<const ItemId>& provided_item_info_to_rank =
-        provided_item_info[i_rank];
+      const Array<const ItemId>& provided_item_info_to_rank = provided_item_info[i_rank];
       Array<DataType> provided_data{provided_item_info_to_rank.size()};
-      parallel_for(provided_item_info_to_rank.size(), PUGS_LAMBDA(size_t i) {
-        provided_data[i] = item_value[provided_item_info_to_rank[i]];
-      });
+      parallel_for(
+        provided_item_info_to_rank.size(),
+        PUGS_LAMBDA(size_t i) { provided_data[i] = item_value[provided_item_info_to_rank[i]]; });
       provided_data_list[i_rank] = provided_data;
     }
 
     std::vector<Array<DataType>> requested_data_list(parallel::size());
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
       const auto& requested_item_info_from_rank = requested_item_info[i_rank];
-      requested_data_list[i_rank] =
-        Array<DataType>{requested_item_info_from_rank.size()};
+      requested_data_list[i_rank]               = Array<DataType>{requested_item_info_from_rank.size()};
     }
 
     parallel::exchange(provided_data_list, requested_data_list);
@@ -179,9 +159,9 @@ class Synchronizer
     for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) {
       const auto& requested_item_info_from_rank = requested_item_info[i_rank];
       const auto& requested_data                = requested_data_list[i_rank];
-      parallel_for(requested_item_info_from_rank.size(), PUGS_LAMBDA(size_t i) {
-        item_value[requested_item_info_from_rank[i]] = requested_data[i];
-      });
+      parallel_for(
+        requested_item_info_from_rank.size(),
+        PUGS_LAMBDA(size_t i) { item_value[requested_item_info_from_rank[i]] = requested_data[i]; });
     }
   }
 
@@ -190,30 +170,26 @@ class Synchronizer
   PUGS_INLINE void
   synchronize(ItemValue<DataType, item_type, ConnectivityPtr>& item_value)
   {
-    Assert(item_value.connectivity_ptr().use_count() > 0,
-           "No connectivity is associated to this ItemValue");
+    Assert(item_value.connectivity_ptr().use_count() > 0, "No connectivity is associated to this ItemValue");
     const IConnectivity& connectivity = *item_value.connectivity_ptr();
 
     switch (connectivity.dimension()) {
-      case 1: {
-        this->_synchronize(static_cast<const Connectivity1D&>(connectivity),
-                           item_value);
-        break;
-      }
-      case 2: {
-        this->_synchronize(static_cast<const Connectivity2D&>(connectivity),
-                           item_value);
-        break;
-      }
-      case 3: {
-        this->_synchronize(static_cast<const Connectivity3D&>(connectivity),
-                           item_value);
-        break;
-      }
-      default: {
-        perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
-        std::terminate();
-      }
+    case 1: {
+      this->_synchronize(static_cast<const Connectivity1D&>(connectivity), item_value);
+      break;
+    }
+    case 2: {
+      this->_synchronize(static_cast<const Connectivity2D&>(connectivity), item_value);
+      break;
+    }
+    case 3: {
+      this->_synchronize(static_cast<const Connectivity3D&>(connectivity), item_value);
+      break;
+    }
+    default: {
+      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::terminate();
+    }
     }
   }
 
diff --git a/src/mesh/SynchronizerManager.cpp b/src/mesh/SynchronizerManager.cpp
index 7854eb768be58ac4881c95c66ddddd38f80784f4..e739394e3fa24708a0165904d6e03d7934f48c69 100644
--- a/src/mesh/SynchronizerManager.cpp
+++ b/src/mesh/SynchronizerManager.cpp
@@ -9,8 +9,7 @@ SynchronizerManager* SynchronizerManager::m_instance{nullptr};
 SynchronizerManager::~SynchronizerManager()
 {
   if (m_connectivity_synchronizer_map.size() > 0) {
-    perr() << __FILE__ << ':' << __LINE__
-           << ": warning: some connectivities are still registered\n";
+    perr() << __FILE__ << ':' << __LINE__ << ": warning: some connectivities are still registered\n";
     ;
   }
 }
@@ -31,22 +30,19 @@ SynchronizerManager::destroy()
 }
 
 void
-SynchronizerManager::deleteConnectivitySynchronizer(
-  const IConnectivity* connectivity)
+SynchronizerManager::deleteConnectivitySynchronizer(const IConnectivity* connectivity)
 {
   m_connectivity_synchronizer_map.erase(connectivity);
 }
 
 Synchronizer&
-SynchronizerManager::getConnectivitySynchronizer(
-  const IConnectivity* connectivity)
+SynchronizerManager::getConnectivitySynchronizer(const IConnectivity* connectivity)
 {
-  if (auto connectivity_synchronizer =
-        m_connectivity_synchronizer_map.find(connectivity);
+  if (auto connectivity_synchronizer = m_connectivity_synchronizer_map.find(connectivity);
       connectivity_synchronizer != m_connectivity_synchronizer_map.end()) {
     return (*connectivity_synchronizer->second);
   } else {
-    std::shared_ptr synchronizer = std::make_shared<Synchronizer>();
+    std::shared_ptr synchronizer                  = std::make_shared<Synchronizer>();
     m_connectivity_synchronizer_map[connectivity] = synchronizer;
     return *synchronizer;
   }
diff --git a/src/mesh/SynchronizerManager.hpp b/src/mesh/SynchronizerManager.hpp
index 4ba1911d3e7d57c4fd48957c4abe742434098925..da01e98458a43f619932a3ad5b85ecead22e28f5 100644
--- a/src/mesh/SynchronizerManager.hpp
+++ b/src/mesh/SynchronizerManager.hpp
@@ -13,8 +13,7 @@ class Synchronizer;
 class SynchronizerManager
 {
  private:
-  std::map<const IConnectivity*, std::shared_ptr<Synchronizer>>
-    m_connectivity_synchronizer_map;
+  std::map<const IConnectivity*, std::shared_ptr<Synchronizer>> m_connectivity_synchronizer_map;
 
   static SynchronizerManager* m_instance;
   SynchronizerManager() = default;
diff --git a/src/output/OutputNamedItemValueSet.hpp b/src/output/OutputNamedItemValueSet.hpp
index 301652cf0326c0b7550c2eb0f31fca26a7b9d4c5..a893ab31cc01c9ec6e44900db229ad08dd478160 100644
--- a/src/output/OutputNamedItemValueSet.hpp
+++ b/src/output/OutputNamedItemValueSet.hpp
@@ -33,16 +33,13 @@ class NamedItemValue
   NamedItemValue& operator=(NamedItemValue&&) = default;
 
   template <typename ConnectivityPtr>
-  NamedItemValue(
-    const std::string& name,
-    const ItemValue<DataType, item_type, ConnectivityPtr>& item_value)
+  NamedItemValue(const std::string& name, const ItemValue<DataType, item_type, ConnectivityPtr>& item_value)
     : m_name(name), m_item_value(item_value)
   {
     ;
   }
 
-  NamedItemValue(const std::string& name,
-                 const ItemValue<const DataType, item_type>& item_value)
+  NamedItemValue(const std::string& name, const ItemValue<const DataType, item_type>& item_value)
     : m_name(name), m_item_value(item_value)
   {
     ;
@@ -77,18 +74,14 @@ class OutputNamedItemValueSet
   PUGS_FORCEINLINE constexpr void
   _doInsert(const NamedItemValue<DataType, item_type>& named_itemvalue)
   {
-    if (m_name_itemvariant_map.find(named_itemvalue.name()) ==
-        m_name_itemvariant_map.end()) {
-      m_name_itemvariant_map[named_itemvalue.name()] =
-        named_itemvalue.itemValue();
+    if (m_name_itemvariant_map.find(named_itemvalue.name()) == m_name_itemvariant_map.end()) {
+      m_name_itemvariant_map[named_itemvalue.name()] = named_itemvalue.itemValue();
     }
   }
 
   template <typename DataType, ItemType item_type, typename... Args>
   PUGS_FORCEINLINE constexpr void
-  _unpackVariadicInput(
-    const NamedItemValue<DataType, item_type>& named_itemvalue,
-    Args&&... args)
+  _unpackVariadicInput(const NamedItemValue<DataType, item_type>& named_itemvalue, Args&&... args)
   {
     _doInsert(named_itemvalue);
     if constexpr (sizeof...(args) > 0) {
@@ -110,8 +103,7 @@ class OutputNamedItemValueSet
   }
 
   template <typename... DataType, ItemType... item_type>
-  OutputNamedItemValueSet(
-    NamedItemValue<DataType, item_type>... named_itemvalue)
+  OutputNamedItemValueSet(NamedItemValue<DataType, item_type>... named_itemvalue)
   {
     _unpackVariadicInput(named_itemvalue...);
   }
diff --git a/src/output/VTKWriter.hpp b/src/output/VTKWriter.hpp
index 5a5fe82cbcbdf606981c7a6f0d87b7008d6fa68b..4793c1bf29c511fca2437a353aef229d9f5f0e8e 100644
--- a/src/output/VTKWriter.hpp
+++ b/src/output/VTKWriter.hpp
@@ -25,8 +25,7 @@ class VTKWriter
   {
     std::ostringstream sout;
     sout << m_base_filename;
-    sout << '.' << std::setfill('0') << std::setw(4) << m_file_number
-         << ".pvtu";
+    sout << '.' << std::setfill('0') << std::setw(4) << m_file_number << ".pvtu";
     return sout.str();
   }
   std::string
@@ -43,72 +42,55 @@ class VTKWriter
 
   template <typename DataType>
   void
-  _write_node_pvtu(std::ofstream& os,
-                   const std::string& name,
-                   const NodeValue<const DataType>&)
+  _write_node_pvtu(std::ofstream& os, const std::string& name, const NodeValue<const DataType>&)
   {
-    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\"/>\n";
+    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\"/>\n";
   }
 
   template <size_t N, typename DataType>
   void
-  _write_node_pvtu(std::ofstream& os,
-                   const std::string& name,
-                   const NodeValue<const TinyVector<N, DataType>>&)
+  _write_node_pvtu(std::ofstream& os, const std::string& name, const NodeValue<const TinyVector<N, DataType>>&)
   {
-    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\" NumberOfComponents=\"" << N << "\"/>\n";
+    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\" NumberOfComponents=\"" << N
+       << "\"/>\n";
   }
 
   template <typename DataType>
   void
-  _write_node_pvtu(std::ofstream&,
-                   const std::string&,
-                   const CellValue<const DataType>&)
+  _write_node_pvtu(std::ofstream&, const std::string&, const CellValue<const DataType>&)
   {}
 
   template <typename DataType>
   void
-  _write_cell_pvtu(std::ofstream& os,
-                   const std::string& name,
-                   const CellValue<const DataType>&)
+  _write_cell_pvtu(std::ofstream& os, const std::string& name, const CellValue<const DataType>&)
   {
-    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\"/>\n";
+    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\"/>\n";
   }
 
   template <size_t N, typename DataType>
   void
-  _write_cell_pvtu(std::ofstream& os,
-                   const std::string& name,
-                   const CellValue<const TinyVector<N, DataType>>&)
+  _write_cell_pvtu(std::ofstream& os, const std::string& name, const CellValue<const TinyVector<N, DataType>>&)
   {
-    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\" NumberOfComponents=\"" << N << "\"/>\n";
+    os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\" NumberOfComponents=\"" << N
+       << "\"/>\n";
   }
 
   template <typename DataType>
   void
-  _write_cell_pvtu(std::ofstream&,
-                   const std::string&,
-                   const NodeValue<const DataType>&)
+  _write_cell_pvtu(std::ofstream&, const std::string&, const NodeValue<const DataType>&)
   {}
 
   template <typename DataType>
   struct VTKType
-  {};
+  {
+  };
 
   template <typename DataType>
   void
-  _write_array(std::ofstream& os,
-               const std::string& name,
-               const Array<DataType>& item_value)
+  _write_array(std::ofstream& os, const std::string& name, const Array<DataType>& item_value)
   {
-    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\">\n";
-    for (typename Array<DataType>::index_type i = 0; i < item_value.size();
-         ++i) {
+    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\">\n";
+    for (typename Array<DataType>::index_type i = 0; i < item_value.size(); ++i) {
       // The following '+' enforces integer output for char types
       os << +item_value[i] << ' ';
     }
@@ -117,14 +99,11 @@ class VTKWriter
 
   template <size_t N, typename DataType>
   void
-  _write_array(std::ofstream& os,
-               const std::string& name,
-               const Array<TinyVector<N, DataType>>& item_value)
+  _write_array(std::ofstream& os, const std::string& name, const Array<TinyVector<N, DataType>>& item_value)
   {
-    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\" NumberOfComponents=\"" << N << "\">\n";
-    for (typename Array<DataType>::index_type i = 0; i < item_value.size();
-         ++i) {
+    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\" NumberOfComponents=\"" << N
+       << "\">\n";
+    for (typename Array<DataType>::index_type i = 0; i < item_value.size(); ++i) {
       for (size_t j = 0; j < N; ++j) {
         // The following '+' enforces integer output for char types
         os << +item_value[i][j] << ' ';
@@ -135,12 +114,9 @@ class VTKWriter
 
   template <typename DataType>
   void
-  _write_node_value(std::ofstream& os,
-                    const std::string& name,
-                    const NodeValue<const DataType>& item_value)
+  _write_node_value(std::ofstream& os, const std::string& name, const NodeValue<const DataType>& item_value)
   {
-    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\">\n";
+    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\">\n";
     for (NodeId i = 0; i < item_value.size(); ++i) {
       // The following '+' enforces integer output for char types
       os << +item_value[i] << ' ';
@@ -154,8 +130,8 @@ class VTKWriter
                     const std::string& name,
                     const NodeValue<const TinyVector<N, DataType>>& item_value)
   {
-    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\" NumberOfComponents=\"" << N << "\">\n";
+    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\" NumberOfComponents=\"" << N
+       << "\">\n";
     for (NodeId i = 0; i < item_value.size(); ++i) {
       for (size_t j = 0; j < N; ++j) {
         // The following '+' enforces integer output for char types
@@ -167,19 +143,14 @@ class VTKWriter
 
   template <typename DataType>
   void
-  _write_node_value(std::ofstream&,
-                    const std::string&,
-                    const CellValue<const DataType>&)
+  _write_node_value(std::ofstream&, const std::string&, const CellValue<const DataType>&)
   {}
 
   template <typename DataType>
   void
-  _write_cell_value(std::ofstream& os,
-                    const std::string& name,
-                    const CellValue<const DataType>& item_value)
+  _write_cell_value(std::ofstream& os, const std::string& name, const CellValue<const DataType>& item_value)
   {
-    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\">\n";
+    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\">\n";
     for (CellId i = 0; i < item_value.size(); ++i) {
       // The following '+' enforces integer output for char types
       os << +item_value[i] << ' ';
@@ -193,8 +164,8 @@ class VTKWriter
                     const std::string& name,
                     const CellValue<const TinyVector<N, DataType>>& item_value)
   {
-    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\""
-       << name << "\" NumberOfComponents=\"" << N << "\">\n";
+    os << "<DataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\" NumberOfComponents=\"" << N
+       << "\">\n";
     for (CellId i = 0; i < item_value.size(); ++i) {
       for (size_t j = 0; j < N; ++j) {
         // The following '+' enforces integer output for char types
@@ -206,9 +177,7 @@ class VTKWriter
 
   template <typename DataType>
   void
-  _write_cell_value(std::ofstream&,
-                    const std::string&,
-                    const NodeValue<const DataType>&)
+  _write_cell_value(std::ofstream&, const std::string&, const NodeValue<const DataType>&)
   {}
 
  public:
@@ -245,35 +214,23 @@ class VTKWriter
               "NumberOfComponents=\"1\"/>\n";
       fout << "<PDataArray type=\"Int8\" Name=\"types\" "
               "NumberOfComponents=\"1\"/>\n";
-      for (const auto& [name, item_value_variant] :
-           output_named_item_value_set) {
-        std::visit(
-          [&, name = name](auto&& item_value) {
-            return this->_write_cell_pvtu(fout, name, item_value);
-          },
-          item_value_variant);
+      for (const auto& [name, item_value_variant] : output_named_item_value_set) {
+        std::visit([&, name = name](auto&& item_value) { return this->_write_cell_pvtu(fout, name, item_value); },
+                   item_value_variant);
       }
       fout << "</PCells>\n";
 
       fout << "<PPointData>\n";
-      for (const auto& [name, item_value_variant] :
-           output_named_item_value_set) {
-        std::visit(
-          [&, name = name](auto&& item_value) {
-            return this->_write_node_pvtu(fout, name, item_value);
-          },
-          item_value_variant);
+      for (const auto& [name, item_value_variant] : output_named_item_value_set) {
+        std::visit([&, name = name](auto&& item_value) { return this->_write_node_pvtu(fout, name, item_value); },
+                   item_value_variant);
       }
       fout << "</PPointData>\n";
 
       fout << "<PCellData>\n";
-      for (const auto& [name, item_value_variant] :
-           output_named_item_value_set) {
-        std::visit(
-          [&, name = name](auto&& item_value) {
-            return this->_write_cell_pvtu(fout, name, item_value);
-          },
-          item_value_variant);
+      for (const auto& [name, item_value_variant] : output_named_item_value_set) {
+        std::visit([&, name = name](auto&& item_value) { return this->_write_cell_pvtu(fout, name, item_value); },
+                   item_value_variant);
       }
       fout << "</PCellData>\n";
 
@@ -289,26 +246,18 @@ class VTKWriter
       fout << "<?xml version=\"1.0\"?>\n";
       fout << "<VTKFile type=\"UnstructuredGrid\">\n";
       fout << "<UnstructuredGrid>\n";
-      fout << "<Piece NumberOfPoints=\"" << mesh.numberOfNodes()
-           << "\" NumberOfCells=\"" << mesh.numberOfCells() << "\">\n";
+      fout << "<Piece NumberOfPoints=\"" << mesh.numberOfNodes() << "\" NumberOfCells=\"" << mesh.numberOfCells()
+           << "\">\n";
       fout << "<CellData>\n";
-      for (const auto& [name, item_value_variant] :
-           output_named_item_value_set) {
-        std::visit(
-          [&, name = name](auto&& item_value) {
-            return this->_write_cell_value(fout, name, item_value);
-          },
-          item_value_variant);
+      for (const auto& [name, item_value_variant] : output_named_item_value_set) {
+        std::visit([&, name = name](auto&& item_value) { return this->_write_cell_value(fout, name, item_value); },
+                   item_value_variant);
       }
       fout << "</CellData>\n";
       fout << "<PointData>\n";
-      for (const auto& [name, item_value_variant] :
-           output_named_item_value_set) {
-        std::visit(
-          [&, name = name](auto&& item_value) {
-            return this->_write_node_value(fout, name, item_value);
-          },
-          item_value_variant);
+      for (const auto& [name, item_value_variant] : output_named_item_value_set) {
+        std::visit([&, name = name](auto&& item_value) { return this->_write_node_value(fout, name, item_value); },
+                   item_value_variant);
       }
       fout << "</PointData>\n";
       fout << "<Points>\n";
@@ -316,29 +265,28 @@ class VTKWriter
         using Rd                      = TinyVector<MeshType::Dimension>;
         const NodeValue<const Rd>& xr = mesh.xr();
         Array<TinyVector<3>> positions(mesh.numberOfNodes());
-        parallel_for(mesh.numberOfNodes(), PUGS_LAMBDA(NodeId r) {
-          for (unsigned short i = 0; i < MeshType::Dimension; ++i) {
-            positions[r][i] = xr[r][i];
-          }
-          for (unsigned short i = MeshType::Dimension; i < 3; ++i) {
-            positions[r][i] = 0;
-          }
-        });
+        parallel_for(
+          mesh.numberOfNodes(), PUGS_LAMBDA(NodeId r) {
+            for (unsigned short i = 0; i < MeshType::Dimension; ++i) {
+              positions[r][i] = xr[r][i];
+            }
+            for (unsigned short i = MeshType::Dimension; i < 3; ++i) {
+              positions[r][i] = 0;
+            }
+          });
         _write_array(fout, "Positions", positions);
       }
       fout << "</Points>\n";
 
       fout << "<Cells>\n";
       {
-        const auto& cell_to_node_matrix =
-          mesh.connectivity().cellToNodeMatrix();
+        const auto& cell_to_node_matrix = mesh.connectivity().cellToNodeMatrix();
 
         _write_array(fout, "connectivity", cell_to_node_matrix.entries());
       }
 
       {
-        const auto& cell_to_node_matrix =
-          mesh.connectivity().cellToNodeMatrix();
+        const auto& cell_to_node_matrix = mesh.connectivity().cellToNodeMatrix();
         Array<unsigned int> offsets(mesh.numberOfCells());
         unsigned int offset = 0;
         for (CellId j = 0; j < mesh.numberOfCells(); ++j) {
@@ -352,8 +300,9 @@ class VTKWriter
       {
         Array<int8_t> types(mesh.numberOfCells());
         const auto& cell_type = mesh.connectivity().cellType();
-        parallel_for(mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-          switch (cell_type[j]) {
+        parallel_for(
+          mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+            switch (cell_type[j]) {
             case CellType::Line: {
               types[j] = 3;
               break;
@@ -383,12 +332,11 @@ class VTKWriter
               break;
             }
             default: {
-              std::cerr << __FILE__ << ':' << __LINE__
-                        << ": unknown cell type\n";
+              std::cerr << __FILE__ << ':' << __LINE__ << ": unknown cell type\n";
               std::exit(1);
             }
-          }
-        });
+            }
+          });
         _write_array(fout, "types", types);
       }
 
diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp
index caf300bd8f9715a920099158809a2aaab1c227ae..01b485f5f9007b2d73328fd10bbac4ba1b6df154 100644
--- a/src/scheme/AcousticSolver.hpp
+++ b/src/scheme/AcousticSolver.hpp
@@ -38,12 +38,10 @@ class AcousticSolver
  private:
   PUGS_INLINE
   const CellValue<const double>
-  computeRhoCj(const CellValue<const double>& rhoj,
-               const CellValue<const double>& cj)
+  computeRhoCj(const CellValue<const double>& rhoj, const CellValue<const double>& cj)
   {
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      m_rhocj[j] = rhoj[j] * cj[j];
-    });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { m_rhocj[j] = rhoj[j] * cj[j]; });
     return m_rhocj;
   }
 
@@ -54,36 +52,36 @@ class AcousticSolver
              const NodeValuePerCell<const double>& /* ljr */,
              const NodeValuePerCell<const Rd>& njr)
   {
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      const size_t& nb_nodes = m_Ajr.numberOfSubValues(j);
-      const double& rho_c    = rhocj[j];
-      for (size_t r = 0; r < nb_nodes; ++r) {
-        m_Ajr(j, r) = tensorProduct(rho_c * Cjr(j, r), njr(j, r));
-      }
-    });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        const size_t& nb_nodes = m_Ajr.numberOfSubValues(j);
+        const double& rho_c    = rhocj[j];
+        for (size_t r = 0; r < nb_nodes; ++r) {
+          m_Ajr(j, r) = tensorProduct(rho_c * Cjr(j, r), njr(j, r));
+        }
+      });
   }
 
   PUGS_INLINE
   const NodeValue<const Rdd>
   computeAr(const NodeValuePerCell<const Rdd>& Ajr)
   {
-    const auto& node_to_cell_matrix = m_connectivity.nodeToCellMatrix();
-    const auto& node_local_numbers_in_their_cells =
-      m_connectivity.nodeLocalNumbersInTheirCells();
-
-    parallel_for(m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) {
-      Rdd sum                  = zero;
-      const auto& node_to_cell = node_to_cell_matrix[r];
-      const auto& node_local_number_in_its_cells =
-        node_local_numbers_in_their_cells.itemValues(r);
-
-      for (size_t j = 0; j < node_to_cell.size(); ++j) {
-        const CellId J       = node_to_cell[j];
-        const unsigned int R = node_local_number_in_its_cells[j];
-        sum += Ajr(J, R);
-      }
-      m_Ar[r] = sum;
-    });
+    const auto& node_to_cell_matrix               = m_connectivity.nodeToCellMatrix();
+    const auto& node_local_numbers_in_their_cells = m_connectivity.nodeLocalNumbersInTheirCells();
+
+    parallel_for(
+      m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) {
+        Rdd sum                                    = zero;
+        const auto& node_to_cell                   = node_to_cell_matrix[r];
+        const auto& node_local_number_in_its_cells = node_local_numbers_in_their_cells.itemValues(r);
+
+        for (size_t j = 0; j < node_to_cell.size(); ++j) {
+          const CellId J       = node_to_cell[j];
+          const unsigned int R = node_local_number_in_its_cells[j];
+          sum += Ajr(J, R);
+        }
+        m_Ar[r] = sum;
+      });
 
     return m_Ar;
   }
@@ -95,22 +93,21 @@ class AcousticSolver
             const CellValue<const Rd>& uj,
             const CellValue<const double>& pj)
   {
-    const auto& node_to_cell_matrix = m_connectivity.nodeToCellMatrix();
-    const auto& node_local_numbers_in_their_cells =
-      m_connectivity.nodeLocalNumbersInTheirCells();
-
-    parallel_for(m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) {
-      Rd& br                   = m_br[r];
-      br                       = zero;
-      const auto& node_to_cell = node_to_cell_matrix[r];
-      const auto& node_local_number_in_its_cells =
-        node_local_numbers_in_their_cells.itemValues(r);
-      for (size_t j = 0; j < node_to_cell.size(); ++j) {
-        const CellId J       = node_to_cell[j];
-        const unsigned int R = node_local_number_in_its_cells[j];
-        br += Ajr(J, R) * uj[J] + pj[J] * Cjr(J, R);
-      }
-    });
+    const auto& node_to_cell_matrix               = m_connectivity.nodeToCellMatrix();
+    const auto& node_local_numbers_in_their_cells = m_connectivity.nodeLocalNumbersInTheirCells();
+
+    parallel_for(
+      m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) {
+        Rd& br                                     = m_br[r];
+        br                                         = zero;
+        const auto& node_to_cell                   = node_to_cell_matrix[r];
+        const auto& node_local_number_in_its_cells = node_local_numbers_in_their_cells.itemValues(r);
+        for (size_t j = 0; j < node_to_cell.size(); ++j) {
+          const CellId J       = node_to_cell[j];
+          const unsigned int R = node_local_number_in_its_cells[j];
+          br += Ajr(J, R) * uj[J] + pj[J] * Cjr(J, R);
+        }
+      });
 
     return m_br;
   }
@@ -120,44 +117,43 @@ class AcousticSolver
   {
     for (const auto& handler : m_boundary_condition_list) {
       switch (handler.boundaryCondition().type()) {
-        case BoundaryCondition::normal_velocity: {
-          perr() << __FILE__ << ':' << __LINE__ << ": normal_velocity BC NIY\n";
-          std::exit(0);
-          break;
-        }
-        case BoundaryCondition::velocity: {
-          perr() << __FILE__ << ':' << __LINE__ << ": velocity BC NIY\n";
-          std::exit(0);
-          break;
-        }
-        case BoundaryCondition::pressure: {
-          // const PressureBoundaryCondition& pressure_bc
-          //   = dynamic_cast<const
-          //   PressureBoundaryCondition&>(handler.boundaryCondition());
-          perr() << __FILE__ << ':' << __LINE__ << ": pressure BC NIY\n";
-          std::exit(0);
-          break;
-        }
-        case BoundaryCondition::symmetry: {
-          const SymmetryBoundaryCondition<Dimension>& symmetry_bc =
-            dynamic_cast<const SymmetryBoundaryCondition<Dimension>&>(
-              handler.boundaryCondition());
-          const Rd& n = symmetry_bc.outgoingNormal();
-
-          const Rdd I   = identity;
-          const Rdd nxn = tensorProduct(n, n);
-          const Rdd P   = I - nxn;
-
-          const Array<const NodeId>& node_list = symmetry_bc.nodeList();
-          parallel_for(symmetry_bc.numberOfNodes(),
-                       PUGS_LAMBDA(const int& r_number) {
-                         const NodeId r = node_list[r_number];
-
-                         m_Ar[r] = P * m_Ar[r] * P + nxn;
-                         m_br[r] = P * m_br[r];
-                       });
-          break;
-        }
+      case BoundaryCondition::normal_velocity: {
+        perr() << __FILE__ << ':' << __LINE__ << ": normal_velocity BC NIY\n";
+        std::exit(0);
+        break;
+      }
+      case BoundaryCondition::velocity: {
+        perr() << __FILE__ << ':' << __LINE__ << ": velocity BC NIY\n";
+        std::exit(0);
+        break;
+      }
+      case BoundaryCondition::pressure: {
+        // const PressureBoundaryCondition& pressure_bc
+        //   = dynamic_cast<const
+        //   PressureBoundaryCondition&>(handler.boundaryCondition());
+        perr() << __FILE__ << ':' << __LINE__ << ": pressure BC NIY\n";
+        std::exit(0);
+        break;
+      }
+      case BoundaryCondition::symmetry: {
+        const SymmetryBoundaryCondition<Dimension>& symmetry_bc =
+          dynamic_cast<const SymmetryBoundaryCondition<Dimension>&>(handler.boundaryCondition());
+        const Rd& n = symmetry_bc.outgoingNormal();
+
+        const Rdd I   = identity;
+        const Rdd nxn = tensorProduct(n, n);
+        const Rdd P   = I - nxn;
+
+        const Array<const NodeId>& node_list = symmetry_bc.nodeList();
+        parallel_for(
+          symmetry_bc.numberOfNodes(), PUGS_LAMBDA(const int& r_number) {
+            const NodeId r = node_list[r_number];
+
+            m_Ar[r] = P * m_Ar[r] * P + nxn;
+            m_br[r] = P * m_br[r];
+          });
+        break;
+      }
       }
     }
   }
@@ -167,8 +163,8 @@ class AcousticSolver
   {
     inverse(Ar, m_inv_Ar);
     const NodeValue<const Rdd> invAr = m_inv_Ar;
-    parallel_for(m_mesh.numberOfNodes(),
-                 PUGS_LAMBDA(const NodeId& r) { m_ur[r] = invAr[r] * br[r]; });
+    parallel_for(
+      m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) { m_ur[r] = invAr[r] * br[r]; });
 
     return m_ur;
   }
@@ -182,21 +178,21 @@ class AcousticSolver
   {
     const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
 
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      const auto& cell_nodes = cell_to_node_matrix[j];
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        const auto& cell_nodes = cell_to_node_matrix[j];
 
-      for (size_t r = 0; r < cell_nodes.size(); ++r) {
-        m_Fjr(j, r) =
-          Ajr(j, r) * (uj[j] - ur[cell_nodes[r]]) + pj[j] * Cjr(j, r);
-      }
-    });
+        for (size_t r = 0; r < cell_nodes.size(); ++r) {
+          m_Fjr(j, r) = Ajr(j, r) * (uj[j] - ur[cell_nodes[r]]) + pj[j] * Cjr(j, r);
+        }
+      });
   }
 
   void
   inverse(const NodeValue<const Rdd>& A, NodeValue<Rdd>& inv_A) const
   {
-    parallel_for(m_mesh.numberOfNodes(),
-                 PUGS_LAMBDA(const NodeId& r) { inv_A[r] = ::inverse(A[r]); });
+    parallel_for(
+      m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) { inv_A[r] = ::inverse(A[r]); });
   }
 
   PUGS_INLINE
@@ -236,8 +232,7 @@ class AcousticSolver
   CellValue<double> m_Vj_over_cj;
 
  public:
-  AcousticSolver(MeshData& mesh_data,
-                 const std::vector<BoundaryConditionHandler>& bc_list)
+  AcousticSolver(MeshData& mesh_data, const std::vector<BoundaryConditionHandler>& bc_list)
     : m_mesh_data(mesh_data),
       m_mesh(mesh_data.mesh()),
       m_connectivity(m_mesh.connectivity()),
@@ -256,21 +251,21 @@ class AcousticSolver
 
   PUGS_INLINE
   double
-  acoustic_dt(const CellValue<const double>& Vj,
-              const CellValue<const double>& cj) const
+  acoustic_dt(const CellValue<const double>& Vj, const CellValue<const double>& cj) const
   {
     const NodeValuePerCell<const double>& ljr = m_mesh_data.ljr();
-    const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
+    const auto& cell_to_node_matrix           = m_mesh.connectivity().cellToNodeMatrix();
 
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      const auto& cell_nodes = cell_to_node_matrix[j];
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        const auto& cell_nodes = cell_to_node_matrix[j];
 
-      double S = 0;
-      for (size_t r = 0; r < cell_nodes.size(); ++r) {
-        S += ljr(j, r);
-      }
-      m_Vj_over_cj[j] = 2 * Vj[j] / (S * cj[j]);
-    });
+        double S = 0;
+        for (size_t r = 0; r < cell_nodes.size(); ++r) {
+          S += ljr(j, r);
+        }
+        m_Vj_over_cj[j] = 2 * Vj[j] / (S * cj[j]);
+      });
 
     return min(m_Vj_over_cj);
   }
@@ -298,32 +293,32 @@ class AcousticSolver
     const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
 
     const CellValue<const double> inv_mj = unknowns.invMj();
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      const auto& cell_nodes = cell_to_node_matrix[j];
-
-      Rd momentum_fluxes   = zero;
-      double energy_fluxes = 0;
-      for (size_t R = 0; R < cell_nodes.size(); ++R) {
-        const NodeId r = cell_nodes[R];
-        momentum_fluxes += Fjr(j, R);
-        energy_fluxes += (Fjr(j, R), ur[r]);
-      }
-      uj[j] -= (dt * inv_mj[j]) * momentum_fluxes;
-      Ej[j] -= (dt * inv_mj[j]) * energy_fluxes;
-    });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        const auto& cell_nodes = cell_to_node_matrix[j];
+
+        Rd momentum_fluxes   = zero;
+        double energy_fluxes = 0;
+        for (size_t R = 0; R < cell_nodes.size(); ++R) {
+          const NodeId r = cell_nodes[R];
+          momentum_fluxes += Fjr(j, R);
+          energy_fluxes += (Fjr(j, R), ur[r]);
+        }
+        uj[j] -= (dt * inv_mj[j]) * momentum_fluxes;
+        Ej[j] -= (dt * inv_mj[j]) * energy_fluxes;
+      });
 
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      ej[j] = Ej[j] - 0.5 * (uj[j], uj[j]);
-    });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { ej[j] = Ej[j] - 0.5 * (uj[j], uj[j]); });
 
     NodeValue<Rd> mutable_xr = m_mesh.mutableXr();
-    parallel_for(m_mesh.numberOfNodes(),
-                 PUGS_LAMBDA(const NodeId& r) { mutable_xr[r] += dt * ur[r]; });
+    parallel_for(
+      m_mesh.numberOfNodes(), PUGS_LAMBDA(const NodeId& r) { mutable_xr[r] += dt * ur[r]; });
     m_mesh_data.updateAllData();
 
     const CellValue<const double> mj = unknowns.mj();
-    parallel_for(m_mesh.numberOfCells(),
-                 PUGS_LAMBDA(const CellId& j) { rhoj[j] = mj[j] / Vj[j]; });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { rhoj[j] = mj[j] / Vj[j]; });
   }
 };
 
diff --git a/src/scheme/BlockPerfectGas.hpp b/src/scheme/BlockPerfectGas.hpp
index 1ae68273247ac8bd9f3fe310a163fed209f15b5a..69f1c24e8064c5201e371f271503f39eebea26d2 100644
--- a/src/scheme/BlockPerfectGas.hpp
+++ b/src/scheme/BlockPerfectGas.hpp
@@ -31,11 +31,12 @@ struct BlockPerfectGas
     const CellValue<const double>& e     = m_ej;
     const CellValue<const double>& gamma = m_gammaj;
 
-    parallel_for(nj, PUGS_LAMBDA(const CellId& j) {
-      const double gamma_minus_one = gamma[j] - 1;
-      m_pj[j]                      = gamma_minus_one * rho[j] * e[j];
-      m_cj[j] = std::sqrt(gamma[j] * gamma_minus_one * e[j]);
-    });
+    parallel_for(
+      nj, PUGS_LAMBDA(const CellId& j) {
+        const double gamma_minus_one = gamma[j] - 1;
+        m_pj[j]                      = gamma_minus_one * rho[j] * e[j];
+        m_cj[j]                      = std::sqrt(gamma[j] * gamma_minus_one * e[j]);
+      });
   }
 
   void
@@ -46,14 +47,12 @@ struct BlockPerfectGas
     const CellValue<const double>& p     = m_pj;
     const CellValue<const double>& gamma = m_gammaj;
 
-    parallel_for(nj, PUGS_LAMBDA(const CellId& j) {
-      m_ej[j] = p[j] / (rho[j] * (gamma[j] - 1));
-    });
+    parallel_for(
+      nj, PUGS_LAMBDA(const CellId& j) { m_ej[j] = p[j] / (rho[j] * (gamma[j] - 1)); });
 
     const CellValue<const double>& e = m_ej;
-    parallel_for(nj, PUGS_LAMBDA(const CellId& j) {
-      m_cj[j] = std::sqrt(gamma[j] * (gamma[j] - 1) * e[j]);
-    });
+    parallel_for(
+      nj, PUGS_LAMBDA(const CellId& j) { m_cj[j] = std::sqrt(gamma[j] * (gamma[j] - 1) * e[j]); });
   }
 };
 
diff --git a/src/scheme/BoundaryCondition.hpp b/src/scheme/BoundaryCondition.hpp
index ae09c0271a12859581c461263c261d107e69546e..23aaaa8995d4cda0e118200932f45d44f20065c6 100644
--- a/src/scheme/BoundaryCondition.hpp
+++ b/src/scheme/BoundaryCondition.hpp
@@ -65,15 +65,12 @@ class PressureBoundaryCondition : public BoundaryCondition
     return m_face_list;
   }
 
-  PressureBoundaryCondition(const double& value,
-                            const std::vector<unsigned int>& faces)
-    : BoundaryCondition(BoundaryCondition::pressure),
-      m_value(value),
-      m_number_of_faces(faces.size())
+  PressureBoundaryCondition(const double& value, const std::vector<unsigned int>& faces)
+    : BoundaryCondition(BoundaryCondition::pressure), m_value(value), m_number_of_faces(faces.size())
   {
     Array<unsigned int> face_list(faces.size());
-    parallel_for(m_number_of_faces,
-                 PUGS_LAMBDA(const int& f) { face_list[f] = faces[f]; });
+    parallel_for(
+      m_number_of_faces, PUGS_LAMBDA(const int& f) { face_list[f] = faces[f]; });
     m_face_list = face_list;
   }
 
@@ -108,10 +105,8 @@ class SymmetryBoundaryCondition : public BoundaryCondition
     return m_mesh_flat_node_boundary.nodeList();
   }
 
-  SymmetryBoundaryCondition(
-    const MeshFlatNodeBoundary<dimension>& mesh_flat_node_boundary)
-    : BoundaryCondition(BoundaryCondition::symmetry),
-      m_mesh_flat_node_boundary(mesh_flat_node_boundary)
+  SymmetryBoundaryCondition(const MeshFlatNodeBoundary<dimension>& mesh_flat_node_boundary)
+    : BoundaryCondition(BoundaryCondition::symmetry), m_mesh_flat_node_boundary(mesh_flat_node_boundary)
   {
     ;
   }
@@ -141,8 +136,7 @@ class BoundaryConditionHandler
   BoundaryConditionHandler(BoundaryConditionHandler&&) = default;
 
   PUGS_INLINE
-  BoundaryConditionHandler(
-    std::shared_ptr<BoundaryCondition> boundary_condition)
+  BoundaryConditionHandler(std::shared_ptr<BoundaryCondition> boundary_condition)
     : m_boundary_condition(boundary_condition)
   {}
 
diff --git a/src/scheme/BoundaryConditionDescriptor.hpp b/src/scheme/BoundaryConditionDescriptor.hpp
index 97b57dbdfce4cade2e17e2dcd435fc801f62d1eb..78a2ba947095672f452f4ed72d0498fcc6757321 100644
--- a/src/scheme/BoundaryConditionDescriptor.hpp
+++ b/src/scheme/BoundaryConditionDescriptor.hpp
@@ -129,8 +129,7 @@ class BoundaryConditionDescriptor
     return *m_boundary_descriptor;
   }
 
-  BoundaryConditionDescriptor(
-    std::shared_ptr<BoundaryDescriptor> boundary_descriptor)
+  BoundaryConditionDescriptor(std::shared_ptr<BoundaryDescriptor> boundary_descriptor)
     : m_boundary_descriptor(boundary_descriptor)
   {
     ;
@@ -156,16 +155,14 @@ class SymmetryBoundaryConditionDescriptor : public BoundaryConditionDescriptor
     return Type::symmetry;
   }
 
-  SymmetryBoundaryConditionDescriptor(
-    std::shared_ptr<BoundaryDescriptor> boundary_descriptor)
+  SymmetryBoundaryConditionDescriptor(std::shared_ptr<BoundaryDescriptor> boundary_descriptor)
     : BoundaryConditionDescriptor(boundary_descriptor)
   {
     ;
   }
 
-  SymmetryBoundaryConditionDescriptor(
-    const SymmetryBoundaryConditionDescriptor&) = default;
-  ~SymmetryBoundaryConditionDescriptor()        = default;
+  SymmetryBoundaryConditionDescriptor(const SymmetryBoundaryConditionDescriptor&) = default;
+  ~SymmetryBoundaryConditionDescriptor()                                          = default;
 };
 
 #endif   // BOUNDARY_CONDITION_DESCRIPTOR_HPP
diff --git a/src/scheme/FiniteVolumesEulerUnknowns.hpp b/src/scheme/FiniteVolumesEulerUnknowns.hpp
index 52d4ca15a8aed2e623f25e9175a77b2abd015290..d433e74af51fba3998cba8c2d65b7f0ae37eca35 100644
--- a/src/scheme/FiniteVolumesEulerUnknowns.hpp
+++ b/src/scheme/FiniteVolumesEulerUnknowns.hpp
@@ -143,41 +143,42 @@ class FiniteVolumesEulerUnknowns
   {
     const CellValue<const Rd>& xj = m_mesh_data.xj();
 
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      if (xj[j][0] < 0.5) {
-        m_rhoj[j] = 1;
-      } else {
-        m_rhoj[j] = 0.125;
-      }
-    });
-
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      if (xj[j][0] < 0.5) {
-        m_pj[j] = 1;
-      } else {
-        m_pj[j] = 0.1;
-      }
-    });
-
-    parallel_for(m_mesh.numberOfCells(),
-                 PUGS_LAMBDA(const CellId& j) { m_uj[j] = zero; });
-
-    parallel_for(m_mesh.numberOfCells(),
-                 PUGS_LAMBDA(const CellId& j) { m_gammaj[j] = 1.4; });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        if (xj[j][0] < 0.5) {
+          m_rhoj[j] = 1;
+        } else {
+          m_rhoj[j] = 0.125;
+        }
+      });
+
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
+        if (xj[j][0] < 0.5) {
+          m_pj[j] = 1;
+        } else {
+          m_pj[j] = 0.1;
+        }
+      });
+
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { m_uj[j] = zero; });
+
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { m_gammaj[j] = 1.4; });
 
     BlockPerfectGas block_eos(m_rhoj, m_ej, m_pj, m_gammaj, m_cj);
     block_eos.updateEandCFromRhoP();
 
-    parallel_for(m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) {
-      m_Ej[j] = m_ej[j] + 0.5 * (m_uj[j], m_uj[j]);
-    });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { m_Ej[j] = m_ej[j] + 0.5 * (m_uj[j], m_uj[j]); });
 
     const CellValue<const double>& Vj = m_mesh_data.Vj();
-    parallel_for(m_mesh.numberOfCells(),
-                 PUGS_LAMBDA(const CellId& j) { m_mj[j] = m_rhoj[j] * Vj[j]; });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { m_mj[j] = m_rhoj[j] * Vj[j]; });
 
-    parallel_for(m_mesh.numberOfCells(),
-                 PUGS_LAMBDA(const CellId& j) { m_inv_mj[j] = 1. / m_mj[j]; });
+    parallel_for(
+      m_mesh.numberOfCells(), PUGS_LAMBDA(const CellId& j) { m_inv_mj[j] = 1. / m_mj[j]; });
   }
 
   FiniteVolumesEulerUnknowns(const MeshDataType& mesh_data)
diff --git a/src/utils/Array.hpp b/src/utils/Array.hpp
index 84ea65aa1edc5b1ee67ea798691dc403603aec04..eaf368b3e7207e6ce849ff111a0dfff6ab113c6d 100644
--- a/src/utils/Array.hpp
+++ b/src/utils/Array.hpp
@@ -40,8 +40,7 @@ class Array
   }
 
   template <typename DataType2, typename... RT>
-  friend PUGS_INLINE Array<DataType2> encapsulate(
-    const Kokkos::View<DataType2*, RT...>& values);
+  friend PUGS_INLINE Array<DataType2> encapsulate(const Kokkos::View<DataType2*, RT...>& values);
 
   PUGS_INLINE
   DataType& operator[](const index_type& i) const noexcept(NO_ASSERT)
@@ -54,12 +53,11 @@ class Array
   void
   fill(const DataType& data) const
   {
-    static_assert(not std::is_const<DataType>(),
-                  "Cannot modify Array of const");
+    static_assert(not std::is_const<DataType>(), "Cannot modify Array of const");
 
     // could consider to use std::fill
-    parallel_for(this->size(),
-                 PUGS_LAMBDA(const index_type& i) { m_values[i] = data; });
+    parallel_for(
+      this->size(), PUGS_LAMBDA(const index_type& i) { m_values[i] = data; });
   }
 
   template <typename DataType2>
@@ -67,12 +65,10 @@ class Array
   operator=(const Array<DataType2>& array) noexcept
   {
     // ensures that DataType is the same as source DataType2
-    static_assert(std::is_same<std::remove_const_t<DataType>,
-                               std::remove_const_t<DataType2>>(),
+    static_assert(std::is_same<std::remove_const_t<DataType>, std::remove_const_t<DataType2>>(),
                   "Cannot assign Array of different type");
     // ensures that const is not lost through copy
-    static_assert(((std::is_const<DataType2>() and std::is_const<DataType>()) or
-                   not std::is_const<DataType2>()),
+    static_assert(((std::is_const<DataType2>() and std::is_const<DataType>()) or not std::is_const<DataType2>()),
                   "Cannot assign Array of const to Array of non-const");
     m_values = array.m_values;
     return *this;
@@ -87,9 +83,8 @@ class Array
   PUGS_INLINE
   Array(const size_t& size) : m_values("anonymous", size)
   {
-    static_assert(
-      not std::is_const<DataType>(),
-      "Cannot allocate Array of const data: only view is supported");
+    static_assert(not std::is_const<DataType>(), "Cannot allocate Array of const data: only view is "
+                                                 "supported");
   }
 
   PUGS_INLINE
diff --git a/src/utils/ArrayUtils.hpp b/src/utils/ArrayUtils.hpp
index f07b07d525a8b1c2dd0461893411883aa29082b9..54f5497bc7b96b8f8b9f23644d9280e9c7fb7eb9 100644
--- a/src/utils/ArrayUtils.hpp
+++ b/src/utils/ArrayUtils.hpp
@@ -192,21 +192,18 @@ template <template <typename... SourceT> typename SourceArray,
           typename... SourceT,
           typename... ImageT>
 void
-value_copy(const SourceArray<SourceT...>& source_array,
-           ImageArray<ImageT...>& image_array)
+value_copy(const SourceArray<SourceT...>& source_array, ImageArray<ImageT...>& image_array)
 {
   using SourceDataType = typename SourceArray<SourceT...>::data_type;
   using ImageDataType  = typename ImageArray<ImageT...>::data_type;
 
-  static_assert(
-    std::is_same_v<std::remove_const_t<SourceDataType>, ImageDataType>);
+  static_assert(std::is_same_v<std::remove_const_t<SourceDataType>, ImageDataType>);
   static_assert(not std::is_const_v<ImageDataType>);
 
   Assert(source_array.size() == image_array.size());
 
-  parallel_for(source_array.size(), PUGS_LAMBDA(const size_t& i) {
-    image_array[i] = source_array[i];
-  });
+  parallel_for(
+    source_array.size(), PUGS_LAMBDA(const size_t& i) { image_array[i] = source_array[i]; });
 }
 
 #endif   // ARRAY_UTILS_HPP
diff --git a/src/utils/BacktraceManager.cpp b/src/utils/BacktraceManager.cpp
index 4de2a3f7c82e66bdc7884f8458f1c5a9678003f3..80d9473444436e6c20ef9e47fbc81b733806047e 100644
--- a/src/utils/BacktraceManager.cpp
+++ b/src/utils/BacktraceManager.cpp
@@ -33,20 +33,17 @@ operator<<(std::ostream& os, const BacktraceManager& btm)
 
   for (size_t i_line = 0; i_line < lines.size(); ++i_line) {
     const auto& line = lines[i_line];
-    os << rang::fg::green << "[" << std::setw(width) << i_line + 1 << '/'
-       << lines.size() << "] " << rang::fg::reset;
+    os << rang::fg::green << "[" << std::setw(width) << i_line + 1 << '/' << lines.size() << "] " << rang::fg::reset;
     std::smatch matchex;
     int status = -1;
     if (std::regex_search(line, matchex, mangled_function)) {
-      std::string prefix = matchex.prefix().str();
-      std::string function =
-        line.substr(matchex.position() + 1, matchex.length() - 2);
-      std::string suffix = matchex.suffix().str();
+      std::string prefix   = matchex.prefix().str();
+      std::string function = line.substr(matchex.position() + 1, matchex.length() - 2);
+      std::string suffix   = matchex.suffix().str();
 
       os << prefix << '(';
       if (function.size() > 0) {
-        char* demangled =
-          abi::__cxa_demangle(function.c_str(), NULL, NULL, &status);
+        char* demangled = abi::__cxa_demangle(function.c_str(), NULL, NULL, &status);
         if (status == 0) {
           os << rang::style::bold << demangled << rang::style::reset;
           free(demangled);
diff --git a/src/utils/BacktraceManager.hpp b/src/utils/BacktraceManager.hpp
index 9b4162ac519cad75ae1b967152ff557d5ed89011..0ff2d2d42575ee42498a33fa2fd1c235a3e20b22 100644
--- a/src/utils/BacktraceManager.hpp
+++ b/src/utils/BacktraceManager.hpp
@@ -12,8 +12,7 @@ class BacktraceManager
  public:
   BacktraceManager();
 
-  friend std::ostream& operator<<(std::ostream& os,
-                                  const BacktraceManager& btm);
+  friend std::ostream& operator<<(std::ostream& os, const BacktraceManager& btm);
 
   BacktraceManager(const BacktraceManager&) = default;
   ~BacktraceManager()                       = default;
diff --git a/src/utils/BuildInfo.cpp b/src/utils/BuildInfo.cpp
index 636ef9efb297d9ef4b992498c11582962649a37a..2f46fb37174f83e7cf88d2f7fd299cfc91d3919c 100644
--- a/src/utils/BuildInfo.cpp
+++ b/src/utils/BuildInfo.cpp
@@ -18,8 +18,7 @@ std::string
 BuildInfo::compiler()
 {
   std::stringstream compiler_info;
-  compiler_info << PUGS_BUILD_COMPILER << " (" << PUGS_BUILD_COMPILER_VERSION
-                << ")" << std::ends;
+  compiler_info << PUGS_BUILD_COMPILER << " (" << PUGS_BUILD_COMPILER_VERSION << ")" << std::ends;
   return compiler_info.str();
 }
 
diff --git a/src/utils/CSRGraph.hpp b/src/utils/CSRGraph.hpp
index 2ef9aafc02d403c6a1310ee2171b8329570197d9..52a7989a9922bbccfc4c7e8633934d47581f4d39 100644
--- a/src/utils/CSRGraph.hpp
+++ b/src/utils/CSRGraph.hpp
@@ -32,8 +32,7 @@ class CSRGraph
   CSRGraph& operator=(CSRGraph&&) = default;
   CSRGraph& operator=(const CSRGraph&) = default;
 
-  CSRGraph(Array<int> entries, Array<int> neighbors)
-    : m_entries(entries), m_neighbors(neighbors)
+  CSRGraph(Array<int> entries, Array<int> neighbors) : m_entries(entries), m_neighbors(neighbors)
   {
     Assert(m_entries.size() > 0);
   }
diff --git a/src/utils/CastArray.hpp b/src/utils/CastArray.hpp
index 8720117858a4db4fb8f085b20bca5930dce4d745..e9f0cdd07d35255a7c4df9583732f0d84c1e231f 100644
--- a/src/utils/CastArray.hpp
+++ b/src/utils/CastArray.hpp
@@ -46,14 +46,10 @@ class CastArray
   CastArray(const Array<DataType>& array)
     : m_array(array),
       m_size(sizeof(DataType) * array.size() / sizeof(CastDataType)),
-      m_values((array.size() == 0)
-                 ? nullptr
-                 : reinterpret_cast<CastDataType*>(&(array[0])))
+      m_values((array.size() == 0) ? nullptr : reinterpret_cast<CastDataType*>(&(array[0])))
   {
-    static_assert(
-      (std::is_const_v<CastDataType> and std::is_const_v<DataType>) or
-        (not std::is_const_v<DataType>),
-      "CastArray cannot remove const attribute");
+    static_assert((std::is_const_v<CastDataType> and std::is_const_v<DataType>) or (not std::is_const_v<DataType>),
+                  "CastArray cannot remove const attribute");
 
     if (sizeof(DataType) * array.size() % sizeof(CastDataType)) {
       std::cerr << "cannot cast array to the chosen data type\n";
@@ -63,16 +59,12 @@ class CastArray
 
   PUGS_INLINE
   CastArray(DataType& value)
-    : m_size(sizeof(DataType) / sizeof(CastDataType)),
-      m_values(reinterpret_cast<CastDataType*>(&(value)))
+    : m_size(sizeof(DataType) / sizeof(CastDataType)), m_values(reinterpret_cast<CastDataType*>(&(value)))
   {
-    static_assert(
-      (std::is_const_v<CastDataType> and std::is_const_v<DataType>) or
-        (not std::is_const_v<DataType>),
-      "CastArray cannot remove const attribute");
-    static_assert(
-      is_trivially_castable<DataType>,
-      "Defining CastArray from non trivially castable type is not allowed");
+    static_assert((std::is_const_v<CastDataType> and std::is_const_v<DataType>) or (not std::is_const_v<DataType>),
+                  "CastArray cannot remove const attribute");
+    static_assert(is_trivially_castable<DataType>, "Defining CastArray from non trivially castable type is not "
+                                                   "allowed");
   }
 
   PUGS_INLINE
diff --git a/src/utils/ConsoleManager.cpp b/src/utils/ConsoleManager.cpp
index 2f819f27b7ccdcf2d65f44e266e6e3378f81a377..64ba8473376a8975e5a7d23b4b50e22bfbf0ed5f 100644
--- a/src/utils/ConsoleManager.cpp
+++ b/src/utils/ConsoleManager.cpp
@@ -15,18 +15,15 @@ ConsoleManager::init(const std::string& colorize)
   pout() << "Console management: color ";
   if (colorize == "auto") {
     if (isTerminal(pout())) {
-      pout() << rang::style::bold << rang::fgB::green << "enabled"
-             << rang::fg::reset << rang::style::reset;
+      pout() << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset << rang::style::reset;
     } else {
       pout() << "disabled";
     }
     pout() << " [auto]\n";
   } else if (colorize == "yes") {
     rang::setControlMode(rang::control::Force);
-    pout() << rang::style::bold << rang::fgB::green << "enabled"
-           << rang::fg::reset << rang::style::reset;
-    pout() << " [" << rang::style::bold << rang::fgB::red << "forced"
-           << rang::fg::reset << rang::style::reset << "]\n";
+    pout() << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset << rang::style::reset;
+    pout() << " [" << rang::style::bold << rang::fgB::red << "forced" << rang::fg::reset << rang::style::reset << "]\n";
   } else if (colorize == "no") {
     rang::setControlMode(rang::control::Off);
     pout() << "disabled [forced]\n";
diff --git a/src/utils/FPEManager.cpp b/src/utils/FPEManager.cpp
index 543357f22293b316dd1a246f30f84943608fa807..2c61e89209bc462c243cfd379a6a88b7bfa4fbfa 100644
--- a/src/utils/FPEManager.cpp
+++ b/src/utils/FPEManager.cpp
@@ -62,16 +62,16 @@ fedisableexcept(unsigned int excepts)
 void
 FPEManager::enable()
 {
-  pout() << "FE management: " << rang::style::bold << rang::fgB::green
-         << "enabled" << rang::fg::reset << rang::style::reset << '\n';
+  pout() << "FE management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset
+         << rang::style::reset << '\n';
   ::feenableexcept(MANAGED_FPE);
 }
 
 void
 FPEManager::disable()
 {
-  pout() << "FE management: " << rang::style::bold << rang::fgB::red
-         << "disabled" << rang::fg::reset << rang::style::reset << '\n';
+  pout() << "FE management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset
+         << rang::style::reset << '\n';
   ::fedisableexcept(MANAGED_FPE);
 }
 
@@ -80,15 +80,13 @@ FPEManager::disable()
 void
 FPEManager::enable()
 {
-  pout() << "FE management: enabled " << rang::fg::red << "[not supported]"
-         << rang::fg::reset << '\n';
+  pout() << "FE management: enabled " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n';
 }
 
 void
 FPEManager::disable()
 {
-  pout() << "FE management: disable " << rang::fg::red << "[not supported]"
-         << rang::fg::reset << '\n';
+  pout() << "FE management: disable " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n';
 }
 
 #endif   // PUGS_HAS_FENV_H
diff --git a/src/utils/Messenger.cpp b/src/utils/Messenger.cpp
index 1e0984a8eac88603d7002fec8b9558f04afbd1cd..f1d18053557fc8dbd9d4f1dea27ba74d61147129 100644
--- a/src/utils/Messenger.cpp
+++ b/src/utils/Messenger.cpp
@@ -1,8 +1,8 @@
 #include <Messenger.hpp>
 #include <PugsOStream.hpp>
 
-namespace parallel {
-
+namespace parallel
+{
 Messenger* Messenger::m_instance = nullptr;
 
 void
diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp
index ecdab71d1d73c2d653c607b5ab3ca141cb12b6ba..d697d61cd8839aafe4fb85345d3b19bc33feef8b 100644
--- a/src/utils/Messenger.hpp
+++ b/src/utils/Messenger.hpp
@@ -19,8 +19,8 @@
 
 #include <PugsTraits.hpp>
 
-namespace parallel {
-
+namespace parallel
+{
 class Messenger
 {
  private:
@@ -34,10 +34,8 @@ class Messenger
       if constexpr (std::is_const_v<DataType>) {
         return mpiType<std::remove_const_t<DataType>>();
       } else {
-        static_assert(std::is_arithmetic_v<DataType>,
-                      "Unexpected arithmetic type! Should not occur!");
-        static_assert(is_false_v<DataType>,
-                      "MPI_Datatype are only defined for arithmetic types!");
+        static_assert(std::is_arithmetic_v<DataType>, "Unexpected arithmetic type! Should not occur!");
+        static_assert(is_false_v<DataType>, "MPI_Datatype are only defined for arithmetic types!");
         return MPI_Datatype();
       }
     }
@@ -46,7 +44,8 @@ class Messenger
    private:
     template <typename T, typename Allowed = void>
     struct split_cast
-    {};
+    {
+    };
 
     template <typename T>
     struct split_cast<T, std::enable_if_t<not(sizeof(T) % sizeof(int64_t))>>
@@ -56,9 +55,7 @@ class Messenger
     };
 
     template <typename T>
-    struct split_cast<T,
-                      std::enable_if_t<not(sizeof(T) % sizeof(int32_t)) and
-                                       (sizeof(T) % sizeof(int64_t))>>
+    struct split_cast<T, std::enable_if_t<not(sizeof(T) % sizeof(int32_t)) and (sizeof(T) % sizeof(int64_t))>>
     {
       using type = int32_t;
       static_assert(not(sizeof(T) % sizeof(int32_t)));
@@ -66,8 +63,7 @@ class Messenger
 
     template <typename T>
     struct split_cast<T,
-                      std::enable_if_t<not(sizeof(T) % sizeof(int16_t)) and
-                                       (sizeof(T) % sizeof(int32_t)) and
+                      std::enable_if_t<not(sizeof(T) % sizeof(int16_t)) and (sizeof(T) % sizeof(int32_t)) and
                                        (sizeof(T) % sizeof(int64_t))>>
     {
       using type = int16_t;
@@ -75,11 +71,9 @@ class Messenger
     };
 
     template <typename T>
-    struct split_cast<
-      T,
-      std::enable_if_t<
-        not(sizeof(T) % sizeof(int8_t)) and (sizeof(T) % sizeof(int16_t)) and
-        (sizeof(T) % sizeof(int32_t)) and (sizeof(T) % sizeof(int64_t))>>
+    struct split_cast<T,
+                      std::enable_if_t<not(sizeof(T) % sizeof(int8_t)) and (sizeof(T) % sizeof(int16_t)) and
+                                       (sizeof(T) % sizeof(int32_t)) and (sizeof(T) % sizeof(int64_t))>>
     {
       using type = int8_t;
       static_assert(not(sizeof(T) % sizeof(int8_t)));
@@ -106,8 +100,7 @@ class Messenger
 #ifdef PUGS_HAS_MPI
     MPI_Datatype mpi_datatype = Messenger::helper::mpiType<DataType>();
 
-    MPI_Allgather(&data, 1, mpi_datatype, &(gather[0]), 1, mpi_datatype,
-                  MPI_COMM_WORLD);
+    MPI_Allgather(&data, 1, mpi_datatype, &(gather[0]), 1, mpi_datatype, MPI_COMM_WORLD);
 #else    // PUGS_HAS_MPI
     gather[0] = data;
 #endif   // PUGS_HAS_MPI
@@ -119,25 +112,21 @@ class Messenger
             typename... SendT,
             typename... RecvT>
   void
-  _allGather(const SendArrayType<SendT...>& data_array,
-             RecvArrayType<RecvT...> gather_array) const
+  _allGather(const SendArrayType<SendT...>& data_array, RecvArrayType<RecvT...> gather_array) const
   {
-    Assert(gather_array.size() ==
-           data_array.size() * m_size);   // LCOV_EXCL_LINE
+    Assert(gather_array.size() == data_array.size() * m_size);   // LCOV_EXCL_LINE
 
     using SendDataType = typename SendArrayType<SendT...>::data_type;
     using RecvDataType = typename RecvArrayType<RecvT...>::data_type;
 
-    static_assert(
-      std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>);
+    static_assert(std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>);
     static_assert(std::is_arithmetic_v<SendDataType>);
 
 #ifdef PUGS_HAS_MPI
     MPI_Datatype mpi_datatype = Messenger::helper::mpiType<RecvDataType>();
 
-    MPI_Allgather(&(data_array[0]), data_array.size(), mpi_datatype,
-                  &(gather_array[0]), data_array.size(), mpi_datatype,
-                  MPI_COMM_WORLD);
+    MPI_Allgather(&(data_array[0]), data_array.size(), mpi_datatype, &(gather_array[0]), data_array.size(),
+                  mpi_datatype, MPI_COMM_WORLD);
 #else    // PUGS_HAS_MPI
     value_copy(data_array, gather_array);
 #endif   // PUGS_HAS_MPI
@@ -145,8 +134,7 @@ class Messenger
 
   template <typename DataType>
   void
-  _broadcast_value([[maybe_unused]] DataType& data,
-                   [[maybe_unused]] const size_t& root_rank) const
+  _broadcast_value([[maybe_unused]] DataType& data, [[maybe_unused]] const size_t& root_rank) const
   {
     static_assert(not std::is_const_v<DataType>);
     static_assert(std::is_arithmetic_v<DataType>);
@@ -160,8 +148,7 @@ class Messenger
 
   template <typename ArrayType>
   void
-  _broadcast_array([[maybe_unused]] ArrayType& array,
-                   [[maybe_unused]] const size_t& root_rank) const
+  _broadcast_array([[maybe_unused]] ArrayType& array, [[maybe_unused]] const size_t& root_rank) const
   {
     using DataType = typename ArrayType::data_type;
     static_assert(not std::is_const_v<DataType>);
@@ -169,8 +156,7 @@ class Messenger
 
 #ifdef PUGS_HAS_MPI
     MPI_Datatype mpi_datatype = Messenger::helper::mpiType<DataType>();
-    MPI_Bcast(&(array[0]), array.size(), mpi_datatype, root_rank,
-              MPI_COMM_WORLD);
+    MPI_Bcast(&(array[0]), array.size(), mpi_datatype, root_rank, MPI_COMM_WORLD);
 #endif   // PUGS_HAS_MPI
   }
 
@@ -180,15 +166,13 @@ class Messenger
             typename... SendT,
             typename... RecvT>
   RecvArrayType<RecvT...>
-  _allToAll(const SendArrayType<SendT...>& sent_array,
-            RecvArrayType<RecvT...>& recv_array) const
+  _allToAll(const SendArrayType<SendT...>& sent_array, RecvArrayType<RecvT...>& recv_array) const
   {
 #ifdef PUGS_HAS_MPI
     using SendDataType = typename SendArrayType<SendT...>::data_type;
     using RecvDataType = typename RecvArrayType<RecvT...>::data_type;
 
-    static_assert(
-      std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>);
+    static_assert(std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>);
     static_assert(std::is_arithmetic_v<SendDataType>);
 
     Assert((sent_array.size() % m_size) == 0);        // LCOV_EXCL_LINE
@@ -198,8 +182,7 @@ class Messenger
 
     MPI_Datatype mpi_datatype = Messenger::helper::mpiType<SendDataType>();
 
-    MPI_Alltoall(&(sent_array[0]), count, mpi_datatype, &(recv_array[0]), count,
-                 mpi_datatype, MPI_COMM_WORLD);
+    MPI_Alltoall(&(sent_array[0]), count, mpi_datatype, &(recv_array[0]), count, mpi_datatype, MPI_COMM_WORLD);
 #else    // PUGS_HAS_MPI
     value_copy(sent_array, recv_array);
 #endif   // PUGS_HAS_MPI
@@ -218,8 +201,7 @@ class Messenger
     using SendDataType = typename SendArrayType<SendT...>::data_type;
     using RecvDataType = typename RecvArrayType<RecvT...>::data_type;
 
-    static_assert(
-      std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>);
+    static_assert(std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>);
     static_assert(std::is_arithmetic_v<SendDataType>);
 
 #ifdef PUGS_HAS_MPI
@@ -231,8 +213,7 @@ class Messenger
       const auto sent_array = sent_array_list[i_send];
       if (sent_array.size() > 0) {
         MPI_Request request;
-        MPI_Isend(&(sent_array[0]), sent_array.size(), mpi_datatype, i_send, 0,
-                  MPI_COMM_WORLD, &request);
+        MPI_Isend(&(sent_array[0]), sent_array.size(), mpi_datatype, i_send, 0, MPI_COMM_WORLD, &request);
         request_list.push_back(request);
       }
     }
@@ -241,16 +222,14 @@ class Messenger
       auto recv_array = recv_array_list[i_recv];
       if (recv_array.size() > 0) {
         MPI_Request request;
-        MPI_Irecv(&(recv_array[0]), recv_array.size(), mpi_datatype, i_recv, 0,
-                  MPI_COMM_WORLD, &request);
+        MPI_Irecv(&(recv_array[0]), recv_array.size(), mpi_datatype, i_recv, 0, MPI_COMM_WORLD, &request);
         request_list.push_back(request);
       }
     }
 
     if (request_list.size() > 0) {
       std::vector<MPI_Status> status_list(request_list.size());
-      if (MPI_SUCCESS != MPI_Waitall(request_list.size(), &(request_list[0]),
-                                     &(status_list[0]))) {
+      if (MPI_SUCCESS != MPI_Waitall(request_list.size(), &(request_list[0]), &(status_list[0]))) {
         // LCOV_EXCL_START
         std::cerr << "Communication error!\n";
         std::exit(1);
@@ -268,14 +247,12 @@ class Messenger
 
   template <typename DataType, typename CastDataType>
   void
-  _exchange_through_cast(
-    const std::vector<Array<DataType>>& sent_array_list,
-    std::vector<Array<std::remove_const_t<DataType>>>& recv_array_list) const
+  _exchange_through_cast(const std::vector<Array<DataType>>& sent_array_list,
+                         std::vector<Array<std::remove_const_t<DataType>>>& recv_array_list) const
   {
     std::vector<CastArray<DataType, const CastDataType>> sent_cast_array_list;
     for (size_t i = 0; i < sent_array_list.size(); ++i) {
-      sent_cast_array_list.emplace_back(
-        cast_array_to<const CastDataType>::from(sent_array_list[i]));
+      sent_cast_array_list.emplace_back(cast_array_to<const CastDataType>::from(sent_array_list[i]));
     }
 
     using MutableDataType = std::remove_const_t<DataType>;
@@ -372,8 +349,7 @@ class Messenger
       MPI_Datatype mpi_datatype = Messenger::helper::mpiType<InnerDataType>();
       const int size            = sizeof(DataType) / sizeof(InnerDataType);
       DataType data_sum         = data;
-      MPI_Allreduce(&data, &data_sum, size, mpi_datatype, MPI_SUM,
-                    MPI_COMM_WORLD);
+      MPI_Allreduce(&data, &data_sum, size, mpi_datatype, MPI_SUM, MPI_COMM_WORLD);
 
       return data_sum;
     }
@@ -418,9 +394,8 @@ class Messenger
       using CastType        = helper::split_cast_t<DataType>;
       using MutableCastType = helper::split_cast_t<MutableDataType>;
 
-      CastArray cast_array = cast_array_to<CastType>::from(array);
-      CastArray cast_gather_array =
-        cast_array_to<MutableCastType>::from(gather_array);
+      CastArray cast_array        = cast_array_to<CastType>::from(array);
+      CastArray cast_gather_array = cast_array_to<MutableCastType>::from(gather_array);
 
       _allGather(cast_array, cast_gather_array);
     } else {
@@ -482,8 +457,7 @@ class Messenger
   PUGS_INLINE void
   broadcast(Array<DataType>& array, const size_t& root_rank) const
   {
-    static_assert(not std::is_const_v<DataType>,
-                  "cannot broadcast array of const");
+    static_assert(not std::is_const_v<DataType>, "cannot broadcast array of const");
     if constexpr (std::is_arithmetic_v<DataType>) {
       size_t size = array.size();
       _broadcast_value(size, root_rank);
@@ -511,11 +485,9 @@ class Messenger
   exchange(const std::vector<Array<SendDataType>>& send_array_list,
            std::vector<Array<RecvDataType>>& recv_array_list) const
   {
-    static_assert(
-      std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>,
-      "send and receive data type do not match");
-    static_assert(not std::is_const_v<RecvDataType>,
-                  "receive data type cannot be const");
+    static_assert(std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>,
+                  "send and receive data type do not match");
+    static_assert(not std::is_const_v<RecvDataType>, "receive data type cannot be const");
     using DataType = std::remove_const_t<SendDataType>;
 
     Assert(send_array_list.size() == m_size);   // LCOV_EXCL_LINE
@@ -537,8 +509,7 @@ class Messenger
       _exchange(send_array_list, recv_array_list);
     } else if constexpr (is_trivially_castable<DataType>) {
       using CastType = helper::split_cast_t<DataType>;
-      _exchange_through_cast<SendDataType, CastType>(send_array_list,
-                                                     recv_array_list);
+      _exchange_through_cast<SendDataType, CastType>(send_array_list, recv_array_list);
     } else {
       static_assert(is_false_v<RecvDataType>, "unexpected type of data");
     }
@@ -634,13 +605,11 @@ broadcast(Array<DataType>& array, const size_t& root_rank)
 
 template <typename SendDataType, typename RecvDataType>
 PUGS_INLINE void
-exchange(const std::vector<Array<SendDataType>>& sent_array_list,
-         std::vector<Array<RecvDataType>>& recv_array_list)
+exchange(const std::vector<Array<SendDataType>>& sent_array_list, std::vector<Array<RecvDataType>>& recv_array_list)
 {
   static_assert(std::is_same_v<std::remove_const_t<SendDataType>, RecvDataType>,
                 "send and receive data type do not match");
-  static_assert(not std::is_const_v<RecvDataType>,
-                "receive data type cannot be const");
+  static_assert(not std::is_const_v<RecvDataType>, "receive data type cannot be const");
 
   messenger().exchange(sent_array_list, recv_array_list);
 }
diff --git a/src/utils/Partitioner.cpp b/src/utils/Partitioner.cpp
index 7d6cd98cd1e54451988dfc1209c49fd2da5050e4..8d3f46512fa7de558320b211ad22679d36beef13 100644
--- a/src/utils/Partitioner.cpp
+++ b/src/utils/Partitioner.cpp
@@ -15,8 +15,7 @@
 Array<int>
 Partitioner::partition(const CSRGraph& graph)
 {
-  pout() << "Partitioning graph into " << rang::style::bold << parallel::size()
-         << rang::style::reset << " parts\n";
+  pout() << "Partitioning graph into " << rang::style::bold << parallel::size() << rang::style::reset << " parts\n";
 
   int wgtflag = 0;
   int numflag = 0;
@@ -34,8 +33,7 @@ Partitioner::partition(const CSRGraph& graph)
 
   MPI_Group mesh_group;
   std::vector<int> group_ranks = [&]() {
-    Array<int> graph_node_owners =
-      parallel::allGather(static_cast<int>(graph.numberOfNodes()));
+    Array<int> graph_node_owners = parallel::allGather(static_cast<int>(graph.numberOfNodes()));
     std::vector<int> group_ranks;
     group_ranks.reserve(graph_node_owners.size());
     for (size_t i = 0; i < graph_node_owners.size(); ++i) {
@@ -46,8 +44,7 @@ Partitioner::partition(const CSRGraph& graph)
     return group_ranks;
   }();
 
-  MPI_Group_incl(world_group, group_ranks.size(), &(group_ranks[0]),
-                 &mesh_group);
+  MPI_Group_incl(world_group, group_ranks.size(), &(group_ranks[0]), &mesh_group);
 
   MPI_Comm parmetis_comm;
   MPI_Comm_create_group(MPI_COMM_WORLD, mesh_group, 1, &parmetis_comm);
@@ -61,10 +58,9 @@ Partitioner::partition(const CSRGraph& graph)
     const Array<int>& entries   = graph.entries();
     const Array<int>& neighbors = graph.neighbors();
 
-    int result = ParMETIS_V3_PartKway(
-      &(vtxdist[0]), &(entries[0]), &(neighbors[0]), NULL, NULL, &wgtflag,
-      &numflag, &ncon, &npart, &(tpwgts[0]), &(ubvec[0]), &(options[0]),
-      &edgecut, &(part[0]), &parmetis_comm);
+    int result =
+      ParMETIS_V3_PartKway(&(vtxdist[0]), &(entries[0]), &(neighbors[0]), NULL, NULL, &wgtflag, &numflag, &ncon, &npart,
+                           &(tpwgts[0]), &(ubvec[0]), &(options[0]), &edgecut, &(part[0]), &parmetis_comm);
     if (result == METIS_ERROR) {
       perr() << "Metis Error\n";
       std::exit(1);
diff --git a/src/utils/PugsAssert.hpp b/src/utils/PugsAssert.hpp
index b0f2603827325caa80e471fa3ba113e76d5e6c5b..1ca85e009d7e3013d34e2ef2dbce39c0351b5052 100644
--- a/src/utils/PugsAssert.hpp
+++ b/src/utils/PugsAssert.hpp
@@ -31,29 +31,18 @@ class AssertError
        << rang::style::bold << "---------- Assertion error -----------\n"
        << " at " << assert_error.m_file << ':' << assert_error.m_line << '\n'
        << " in " << assert_error.m_function << '\n'
-       << " assertion (" << rang::fgB::red << assert_error.m_test
-       << rang::fg::reset << ") failed!\n";
+       << " assertion (" << rang::fgB::red << assert_error.m_test << rang::fg::reset << ") failed!\n";
     if (not assert_error.m_message.empty()) {
-      os << ' ' << rang::fgB::yellow << assert_error.m_message
-         << rang::fg::reset << '\n';
+      os << ' ' << rang::fgB::yellow << assert_error.m_message << rang::fg::reset << '\n';
     }
-    os << "--------------------------------------" << rang::style::reset
-       << '\n';
+    os << "--------------------------------------" << rang::style::reset << '\n';
 
     return os;
   }
 
   AssertError(const AssertError&) = default;
-  AssertError(std::string file,
-              int line,
-              std::string function,
-              std::string test,
-              std::string message = "")
-    : m_file(file),
-      m_line(line),
-      m_function(function),
-      m_test(test),
-      m_message(message)
+  AssertError(std::string file, int line, std::string function, std::string test, std::string message = "")
+    : m_file(file), m_line(line), m_function(function), m_test(test), m_message(message)
   {
     ;
   }
@@ -79,17 +68,15 @@ PRAGMA_DIAGNOSTIC_POP
 
 #else   // NDEBUG
 
-#define Assert(assertion, ...)                                             \
-  if (not _pugs_assert(assertion)) {                                       \
-    using vargs_t = decltype(std::make_tuple(__VA_ARGS__));                \
-    static_assert(std::tuple_size_v<vargs_t> <= 1, "too many arguments");  \
-    if constexpr (std::tuple_size_v<vargs_t> == 0) {                       \
-      printAndThrow(                                                       \
-        AssertError(__FILE__, __LINE__, __PRETTY_FUNCTION__, #assertion)); \
-    } else {                                                               \
-      printAndThrow(AssertError(__FILE__, __LINE__, __PRETTY_FUNCTION__,   \
-                                #assertion, #__VA_ARGS__));                \
-    }                                                                      \
+#define Assert(assertion, ...)                                                                       \
+  if (not _pugs_assert(assertion)) {                                                                 \
+    using vargs_t = decltype(std::make_tuple(__VA_ARGS__));                                          \
+    static_assert(std::tuple_size_v<vargs_t> <= 1, "too many arguments");                            \
+    if constexpr (std::tuple_size_v<vargs_t> == 0) {                                                 \
+      printAndThrow(AssertError(__FILE__, __LINE__, __PRETTY_FUNCTION__, #assertion));               \
+    } else {                                                                                         \
+      printAndThrow(AssertError(__FILE__, __LINE__, __PRETTY_FUNCTION__, #assertion, #__VA_ARGS__)); \
+    }                                                                                                \
   }
 
 #endif   // NDEBUG
diff --git a/src/utils/PugsMacros.hpp b/src/utils/PugsMacros.hpp
index 94ac59789b214965c97fc1b2ecb417866aaf64f6..eb0697ba866f2c9b1d8e0c67d22c1e0a3bd4e03d 100644
--- a/src/utils/PugsMacros.hpp
+++ b/src/utils/PugsMacros.hpp
@@ -14,8 +14,7 @@
 
 #if !defined(__clang__) and defined(__GNUC__)
 
-#define PRAGMA_DIAGNOSTIC_IGNORED_WATTRIBUTES \
-  _Pragma("GCC diagnostic ignored \"-Wattributes\"")
+#define PRAGMA_DIAGNOSTIC_IGNORED_WATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wattributes\"")
 #define PRAGMA_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
 
 #else   // !defined(__clang__) and defined(__GNUC__)
diff --git a/src/utils/PugsTraits.hpp b/src/utils/PugsTraits.hpp
index 0699c209d7003ed70f9a4a631bd487f031a06a9d..3846e141ebe6986b02d4fdb2f87816cb6c4bb277 100644
--- a/src/utils/PugsTraits.hpp
+++ b/src/utils/PugsTraits.hpp
@@ -12,18 +12,14 @@ template <typename T>
 inline constexpr bool is_trivially_castable = std::is_trivial_v<T>;
 
 template <size_t N, typename T>
-inline constexpr bool is_trivially_castable<TinyVector<N, T>> =
-  is_trivially_castable<T>;
+inline constexpr bool is_trivially_castable<TinyVector<N, T>> = is_trivially_castable<T>;
 template <size_t N, typename T>
-inline constexpr bool is_trivially_castable<const TinyVector<N, T>> =
-  is_trivially_castable<T>;
+inline constexpr bool is_trivially_castable<const TinyVector<N, T>> = is_trivially_castable<T>;
 
 template <size_t N, typename T>
-inline constexpr bool is_trivially_castable<TinyMatrix<N, T>> =
-  is_trivially_castable<T>;
+inline constexpr bool is_trivially_castable<TinyMatrix<N, T>> = is_trivially_castable<T>;
 template <size_t N, typename T>
-inline constexpr bool is_trivially_castable<const TinyMatrix<N, T>> =
-  is_trivially_castable<T>;
+inline constexpr bool is_trivially_castable<const TinyMatrix<N, T>> = is_trivially_castable<T>;
 
 template <typename T>
 inline constexpr bool is_false_v = false;
diff --git a/src/utils/PugsUtils.cpp b/src/utils/PugsUtils.cpp
index e95105acc40402c445f3395fb670ce67fc15c3f3..b0092006fd7bb24743abfc3629d3b123cba17e94 100644
--- a/src/utils/PugsUtils.cpp
+++ b/src/utils/PugsUtils.cpp
@@ -24,17 +24,13 @@ initialize(int& argc, char* argv[])
   long unsigned number = 10;
   std::string filename;
 
-  pout() << "Pugs version: " << rang::style::bold << RevisionInfo::version()
-         << rang::style::reset << '\n';
-
-  pout() << "-------------------- " << rang::fg::green << "git info"
-         << rang::fg::reset << " -------------------------" << '\n';
-  pout() << "tag:  " << rang::style::bold << RevisionInfo::gitTag()
-         << rang::style::reset << '\n';
-  pout() << "HEAD: " << rang::style::bold << RevisionInfo::gitHead()
-         << rang::style::reset << '\n';
-  pout() << "hash: " << rang::style::bold << RevisionInfo::gitHash()
-         << rang::style::reset << "  (";
+  pout() << "Pugs version: " << rang::style::bold << RevisionInfo::version() << rang::style::reset << '\n';
+
+  pout() << "-------------------- " << rang::fg::green << "git info" << rang::fg::reset << " -------------------------"
+         << '\n';
+  pout() << "tag:  " << rang::style::bold << RevisionInfo::gitTag() << rang::style::reset << '\n';
+  pout() << "HEAD: " << rang::style::bold << RevisionInfo::gitHead() << rang::style::reset << '\n';
+  pout() << "hash: " << rang::style::bold << RevisionInfo::gitHash() << rang::style::reset << "  (";
 
   if (RevisionInfo::gitIsClean()) {
     pout() << rang::fgB::green << "clean" << rang::fg::reset;
@@ -42,16 +38,12 @@ initialize(int& argc, char* argv[])
     pout() << rang::fgB::red << "dirty" << rang::fg::reset;
   }
   pout() << ")\n";
-  pout() << "-------------------- " << rang::fg::green << "build info"
-         << rang::fg::reset << " -----------------------" << '\n';
-  pout() << "type:     " << rang::style::bold << BuildInfo::type()
-         << rang::style::reset << '\n';
-  pout() << "compiler: " << rang::style::bold << BuildInfo::compiler()
-         << rang::style::reset << '\n';
-  pout() << "kokkos:   " << rang::style::bold << BuildInfo::kokkosDevices()
-         << rang::style::reset << '\n';
-  pout() << "mpi:      " << rang::style::bold << BuildInfo::mpiLibrary()
-         << rang::style::reset << '\n';
+  pout() << "-------------------- " << rang::fg::green << "build info" << rang::fg::reset << " -----------------------"
+         << '\n';
+  pout() << "type:     " << rang::style::bold << BuildInfo::type() << rang::style::reset << '\n';
+  pout() << "compiler: " << rang::style::bold << BuildInfo::compiler() << rang::style::reset << '\n';
+  pout() << "kokkos:   " << rang::style::bold << BuildInfo::kokkosDevices() << rang::style::reset << '\n';
+  pout() << "mpi:      " << rang::style::bold << BuildInfo::mpiLibrary() << rang::style::reset << '\n';
   pout() << "-------------------------------------------------------\n";
   {
     CLI::App app{"Pugs help"};
@@ -66,23 +58,22 @@ initialize(int& argc, char* argv[])
       ->check(CLI::Range(1, std::numeric_limits<decltype(threads)>::max()));
 
     std::string colorize = "auto";
-    app.add_set("--colorize", colorize, {"auto", "yes", "no"},
-                "Colorize console output", true);
+    app.add_set("--colorize", colorize, {"auto", "yes", "no"}, "Colorize console output", true);
 
     bool disable_fpe = false;
-    app.add_flag("--no-fpe", disable_fpe,
-                 "Do not trap floating point exceptions");
+    app.add_flag("--no-fpe", disable_fpe, "Do not trap floating point exceptions");
     bool disable_signals = false;
     app.add_flag("--no-signal", disable_signals, "Do not catches signals");
 
     std::string pause_on_error = "auto";
-    app.add_set("--pause-on-error", pause_on_error, {"auto", "yes", "no"},
-                "Pause for debugging on unexpected error", true);
+    app.add_set("--pause-on-error", pause_on_error, {"auto", "yes", "no"}, "Pause for debugging on unexpected error",
+                true);
 
     std::atexit([]() { pout() << rang::style::reset; });
     try {
       app.parse(argc, argv);
-    } catch (const CLI::ParseError& e) {
+    }
+    catch (const CLI::ParseError& e) {
       parallel::Messenger::destroy();
       std::exit(app.exit(e, pout(), perr()));
     }
@@ -94,8 +85,8 @@ initialize(int& argc, char* argv[])
   }
 
   Kokkos::initialize(argc, argv);
-  pout() << "-------------------- " << rang::fg::green << "exec info"
-         << rang::fg::reset << " ------------------------" << '\n';
+  pout() << "-------------------- " << rang::fg::green << "exec info" << rang::fg::reset << " ------------------------"
+         << '\n';
 
   pout() << rang::style::bold;
   Kokkos::DefaultExecutionSpace::print_configuration(pout());
diff --git a/src/utils/PugsUtils.hpp b/src/utils/PugsUtils.hpp
index f5a41609e3ba9ed5fda4bbb751a1f66e51c44ed8..339f5de531d694ce27f921e38f3336e863569bae 100644
--- a/src/utils/PugsUtils.hpp
+++ b/src/utils/PugsUtils.hpp
@@ -9,19 +9,14 @@
 
 template <typename FunctionType>
 PUGS_FORCEINLINE void
-parallel_for(const size_t& size,
-             const FunctionType& lambda,
-             const std::string& label = "")
+parallel_for(const size_t& size, const FunctionType& lambda, const std::string& label = "")
 {
   Kokkos::parallel_for(size, lambda, label);
 }
 
 template <typename ArrayType, typename ReturnType>
 PUGS_FORCEINLINE void
-parallel_reduce(const size_t& size,
-                const ArrayType& array,
-                ReturnType& value,
-                const std::string& label = "")
+parallel_reduce(const size_t& size, const ArrayType& array, ReturnType& value, const std::string& label = "")
 {
   Kokkos::parallel_reduce(label, size, array, value);
 }
diff --git a/src/utils/SignalManager.cpp b/src/utils/SignalManager.cpp
index f258952ddf6101a3ad5282f74d0b5a7e30a8511d..26d6ea537368187af03ba7e393517d24ca026ce3 100644
--- a/src/utils/SignalManager.cpp
+++ b/src/utils/SignalManager.cpp
@@ -25,18 +25,18 @@ std::string
 SignalManager::signalName(const int& signal)
 {
   switch (signal) {
-    case SIGILL:
-      return "SIGILL";
-    case SIGFPE:
-      return "SIGFPE";
-    case SIGABRT:
-      return "SIGABRT";
-    case SIGINT:
-      return "SIGINT";
-    case SIGSEGV:
-      return "SIGSEGV";
-    case SIGTERM:
-      return "SIGTERM";
+  case SIGILL:
+    return "SIGILL";
+  case SIGFPE:
+    return "SIGFPE";
+  case SIGABRT:
+    return "SIGABRT";
+  case SIGINT:
+    return "SIGINT";
+  case SIGSEGV:
+    return "SIGSEGV";
+  case SIGTERM:
+    return "SIGTERM";
   }
   return "SIGNAL undefined!";
 }
@@ -47,13 +47,10 @@ SignalManager::pauseForDebug(const int& signal)
   if (std::string(PUGS_BUILD_TYPE) != "Release") {
     if (s_pause_on_error == "yes") {
       std::cerr << "\n======================================\n"
-                << rang::style::reset << rang::fg::reset << rang::style::bold
-                << "to attach gdb to this process run\n"
-                << "\tgdb -pid " << rang::fg::red << getpid() << rang::fg::reset
-                << '\n'
+                << rang::style::reset << rang::fg::reset << rang::style::bold << "to attach gdb to this process run\n"
+                << "\tgdb -pid " << rang::fg::red << getpid() << rang::fg::reset << '\n'
                 << "else press Control-C to exit\n"
-                << rang::style::reset
-                << "======================================\n"
+                << rang::style::reset << "======================================\n"
                 << std::flush;
       pause();
     }
@@ -78,16 +75,16 @@ SignalManager::handler(int signal)
     if (eptr) {
       std::rethrow_exception(eptr);
     }
-  } catch (const AssertError& assert_error) {
+  }
+  catch (const AssertError& assert_error) {
     std::cerr << assert_error << '\n';
-  } catch (...) {
+  }
+  catch (...) {
     std::cerr << "Unknown exception!\n";
   }
 
-  std::cerr << "\n *** " << rang::style::reset << rang::fg::reset
-            << rang::style::bold << "Signal " << rang::fgB::red
-            << signalName(signal) << rang::fg::reset << " caught"
-            << rang::style::reset << " ***\n";
+  std::cerr << "\n *** " << rang::style::reset << rang::fg::reset << rang::style::bold << "Signal " << rang::fgB::red
+            << signalName(signal) << rang::fg::reset << " caught" << rang::style::reset << " ***\n";
 
   SignalManager::pauseForDebug(signal);
 }
@@ -103,10 +100,10 @@ SignalManager::init(const bool& enable)
     std::signal(SIGABRT, SignalManager::handler);
     std::signal(SIGPIPE, SignalManager::handler);
 
-    pout() << "Signal management: " << rang::style::bold << rang::fgB::green
-           << "enabled" << rang::fg::reset << rang::style::reset << '\n';
+    pout() << "Signal management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset
+           << rang::style::reset << '\n';
   } else {
-    pout() << "Signal management: " << rang::style::bold << rang::fgB::red
-           << "disabled" << rang::fg::reset << rang::style::reset << '\n';
+    pout() << "Signal management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset
+           << rang::style::reset << '\n';
   }
 }
diff --git a/tests/mpi_test_Messenger.cpp b/tests/mpi_test_Messenger.cpp
index 6f634d60cda03496a9f452af163b2e624c85e432..64dd892751d57041eac1a4cf59c6828ceb7e0214 100644
--- a/tests/mpi_test_Messenger.cpp
+++ b/tests/mpi_test_Messenger.cpp
@@ -13,7 +13,8 @@
 #define IF_MPI(INSTRUCTION)
 #endif   // PUGS_HAS_MPI
 
-namespace mpi_check {
+namespace mpi_check
+{
 struct integer
 {
   int m_int;
@@ -41,8 +42,7 @@ struct tri_int
   bool
   operator==(const tri_int& t) const
   {
-    return ((m_int_0 == t.m_int_0) and (m_int_1 == t.m_int_1) and
-            (m_int_2 == t.m_int_2));
+    return ((m_int_0 == t.m_int_0) and (m_int_1 == t.m_int_1) and (m_int_2 == t.m_int_2));
   }
 };
 
@@ -157,10 +157,8 @@ TEST_CASE("Messenger", "[mpi]")
         Array<int> invalid_all_to_all(parallel::size() + 1);
         REQUIRE_THROWS_AS(parallel::allToAll(invalid_all_to_all), AssertError);
 
-        Array<int> different_size_all_to_all(parallel::size() *
-                                             (parallel::rank() + 1));
-        REQUIRE_THROWS_AS(parallel::allToAll(different_size_all_to_all),
-                          AssertError);
+        Array<int> different_size_all_to_all(parallel::size() * (parallel::rank() + 1));
+        REQUIRE_THROWS_AS(parallel::allToAll(different_size_all_to_all), AssertError);
       }
     }
 #endif   // NDEBUG
@@ -184,8 +182,7 @@ TEST_CASE("Messenger", "[mpi]")
 
     {
       // compound trivial type
-      mpi_check::tri_int value{static_cast<int>((3 + parallel::rank()) * 2),
-                               static_cast<int>(2 + parallel::rank()),
+      mpi_check::tri_int value{static_cast<int>((3 + parallel::rank()) * 2), static_cast<int>(2 + parallel::rank()),
                                static_cast<int>(4 - parallel::rank())};
       parallel::broadcast(value, 0);
       REQUIRE((value == mpi_check::tri_int{6, 2, 4}));
@@ -217,20 +214,14 @@ TEST_CASE("Messenger", "[mpi]")
     {
       // compound trivial type
       Array<mpi_check::tri_int> array(3);
-      array[0] =
-        mpi_check::tri_int{static_cast<int>((3 + parallel::rank()) * 2),
-                           static_cast<int>(2 + parallel::rank()),
-                           static_cast<int>(4 - parallel::rank())};
-      array[1] =
-        mpi_check::tri_int{static_cast<int>((2 + parallel::rank()) * 4),
-                           static_cast<int>(3 + parallel::rank()),
-                           static_cast<int>(1 - parallel::rank())};
-      array[2] = mpi_check::tri_int{static_cast<int>((5 + parallel::rank())),
-                                    static_cast<int>(-3 + parallel::rank()),
+      array[0] = mpi_check::tri_int{static_cast<int>((3 + parallel::rank()) * 2),
+                                    static_cast<int>(2 + parallel::rank()), static_cast<int>(4 - parallel::rank())};
+      array[1] = mpi_check::tri_int{static_cast<int>((2 + parallel::rank()) * 4),
+                                    static_cast<int>(3 + parallel::rank()), static_cast<int>(1 - parallel::rank())};
+      array[2] = mpi_check::tri_int{static_cast<int>((5 + parallel::rank())), static_cast<int>(-3 + parallel::rank()),
                                     static_cast<int>(parallel::rank())};
       parallel::broadcast(array, 0);
-      REQUIRE(((array[0] == mpi_check::tri_int{6, 2, 4}) and
-               (array[1] == mpi_check::tri_int{8, 3, 1}) and
+      REQUIRE(((array[0] == mpi_check::tri_int{6, 2, 4}) and (array[1] == mpi_check::tri_int{8, 3, 1}) and
                (array[2] == mpi_check::tri_int{5, -3, 0})));
     }
   }
@@ -262,15 +253,13 @@ TEST_CASE("Messenger", "[mpi]")
 
     {
       // compound trivial type
-      mpi_check::tri_int value{static_cast<int>((3 + parallel::rank()) * 2),
-                               static_cast<int>(2 + parallel::rank()),
+      mpi_check::tri_int value{static_cast<int>((3 + parallel::rank()) * 2), static_cast<int>(2 + parallel::rank()),
                                static_cast<int>(4 - parallel::rank())};
       Array<mpi_check::tri_int> gather_array = parallel::allGather(value);
 
       REQUIRE(gather_array.size() == parallel::size());
       for (size_t i = 0; i < gather_array.size(); ++i) {
-        mpi_check::tri_int expected_value{static_cast<int>((3 + i) * 2),
-                                          static_cast<int>(2 + i),
+        mpi_check::tri_int expected_value{static_cast<int>((3 + i) * 2), static_cast<int>(2 + i),
                                           static_cast<int>(4 - i)};
         REQUIRE((gather_array[i] == expected_value));
       }
@@ -289,8 +278,7 @@ TEST_CASE("Messenger", "[mpi]")
       REQUIRE(gather_array.size() == array.size() * parallel::size());
 
       for (size_t i = 0; i < gather_array.size(); ++i) {
-        const int expected_value =
-          (3 + i / array.size()) * 2 + (i % array.size());
+        const int expected_value = (3 + i / array.size()) * 2 + (i % array.size());
         REQUIRE((gather_array[i] == expected_value));
       }
     }
@@ -305,8 +293,7 @@ TEST_CASE("Messenger", "[mpi]")
       REQUIRE(gather_array.size() == array.size() * parallel::size());
 
       for (size_t i = 0; i < gather_array.size(); ++i) {
-        const int expected_value =
-          (3 + i / array.size()) * 2 + (i % array.size());
+        const int expected_value = (3 + i / array.size()) * 2 + (i % array.size());
         REQUIRE((gather_array[i] == expected_value));
       }
     }
@@ -316,18 +303,16 @@ TEST_CASE("Messenger", "[mpi]")
       Array<mpi_check::tri_int> array(3);
       for (size_t i = 0; i < array.size(); ++i) {
         array[i] =
-          mpi_check::tri_int{static_cast<int>((3 + parallel::rank()) * 2),
-                             static_cast<int>(2 + parallel::rank() + i),
+          mpi_check::tri_int{static_cast<int>((3 + parallel::rank()) * 2), static_cast<int>(2 + parallel::rank() + i),
                              static_cast<int>(4 - parallel::rank() - i)};
       }
       Array<mpi_check::tri_int> gather_array = parallel::allGather(array);
 
       REQUIRE(gather_array.size() == array.size() * parallel::size());
       for (size_t i = 0; i < gather_array.size(); ++i) {
-        mpi_check::tri_int expected_value{
-          static_cast<int>((3 + i / array.size()) * 2),
-          static_cast<int>(2 + i / array.size() + (i % array.size())),
-          static_cast<int>(4 - i / array.size() - (i % array.size()))};
+        mpi_check::tri_int expected_value{static_cast<int>((3 + i / array.size()) * 2),
+                                          static_cast<int>(2 + i / array.size() + (i % array.size())),
+                                          static_cast<int>(4 - i / array.size() - (i % array.size()))};
         REQUIRE((gather_array[i] == expected_value));
       }
     }
@@ -389,9 +374,8 @@ TEST_CASE("Messenger", "[mpi]")
       for (size_t i = 0; i < send_array_list.size(); ++i) {
         Array<mpi_check::tri_int> send_array(i + 1);
         for (size_t j = 0; j < send_array.size(); ++j) {
-          send_array[j] = mpi_check::tri_int{
-            static_cast<int>((parallel::rank() + 1) * j),
-            static_cast<int>(parallel::rank()), static_cast<int>(j)};
+          send_array[j] = mpi_check::tri_int{static_cast<int>((parallel::rank() + 1) * j),
+                                             static_cast<int>(parallel::rank()), static_cast<int>(j)};
         }
         send_array_list[i] = send_array;
       }
@@ -405,9 +389,7 @@ TEST_CASE("Messenger", "[mpi]")
       for (size_t i = 0; i < parallel::size(); ++i) {
         const Array<const mpi_check::tri_int> recv_array = recv_array_list[i];
         for (size_t j = 0; j < recv_array.size(); ++j) {
-          mpi_check::tri_int expected_value{static_cast<int>((i + 1) * j),
-                                            static_cast<int>(i),
-                                            static_cast<int>(j)};
+          mpi_check::tri_int expected_value{static_cast<int>((i + 1) * j), static_cast<int>(i), static_cast<int>(j)};
           REQUIRE((recv_array[j] == expected_value));
         }
       }
@@ -425,8 +407,7 @@ TEST_CASE("Messenger", "[mpi]")
     }
 
     std::vector<Array<int>> recv_array_list(parallel::size());
-    REQUIRE_THROWS_AS(parallel::exchange(send_array_list, recv_array_list),
-                      AssertError);
+    REQUIRE_THROWS_AS(parallel::exchange(send_array_list, recv_array_list), AssertError);
   }
 #endif   // NDEBUG
 
diff --git a/tests/test_Array.cpp b/tests/test_Array.cpp
index 445edd890a1fe08374793598d499fed587762bab..54610b6e93a3174b018fb14edee8eba68f253c34 100644
--- a/tests/test_Array.cpp
+++ b/tests/test_Array.cpp
@@ -23,29 +23,25 @@ TEST_CASE("Array", "[utils]")
     a[i] = 2 * i;
   }
 
-  REQUIRE(((a[0] == 0) and (a[1] == 2) and (a[2] == 4) and (a[3] == 6) and
-           (a[4] == 8) and (a[5] == 10) and (a[6] == 12) and (a[7] == 14) and
-           (a[8] == 16) and (a[9] == 18)));
+  REQUIRE(((a[0] == 0) and (a[1] == 2) and (a[2] == 4) and (a[3] == 6) and (a[4] == 8) and (a[5] == 10) and
+           (a[6] == 12) and (a[7] == 14) and (a[8] == 16) and (a[9] == 18)));
 
   SECTION("checking for copies")
   {
     Array<const int> b{a};
 
-    REQUIRE(((b[0] == 0) and (b[1] == 2) and (b[2] == 4) and (b[3] == 6) and
-             (b[4] == 8) and (b[5] == 10) and (b[6] == 12) and (b[7] == 14) and
-             (b[8] == 16) and (b[9] == 18)));
+    REQUIRE(((b[0] == 0) and (b[1] == 2) and (b[2] == 4) and (b[3] == 6) and (b[4] == 8) and (b[5] == 10) and
+             (b[6] == 12) and (b[7] == 14) and (b[8] == 16) and (b[9] == 18)));
 
     Array<int> c{a};
 
-    REQUIRE(((c[0] == 0) and (c[1] == 2) and (c[2] == 4) and (c[3] == 6) and
-             (c[4] == 8) and (c[5] == 10) and (c[6] == 12) and (c[7] == 14) and
-             (c[8] == 16) and (c[9] == 18)));
+    REQUIRE(((c[0] == 0) and (c[1] == 2) and (c[2] == 4) and (c[3] == 6) and (c[4] == 8) and (c[5] == 10) and
+             (c[6] == 12) and (c[7] == 14) and (c[8] == 16) and (c[9] == 18)));
 
     Array<int> d = std::move(c);
 
-    REQUIRE(((d[0] == 0) and (d[1] == 2) and (d[2] == 4) and (d[3] == 6) and
-             (d[4] == 8) and (d[5] == 10) and (d[6] == 12) and (d[7] == 14) and
-             (d[8] == 16) and (d[9] == 18)));
+    REQUIRE(((d[0] == 0) and (d[1] == 2) and (d[2] == 4) and (d[3] == 6) and (d[4] == 8) and (d[5] == 10) and
+             (d[6] == 12) and (d[7] == 14) and (d[8] == 16) and (d[9] == 18)));
   }
 
   SECTION("checking for fill")
@@ -53,9 +49,8 @@ TEST_CASE("Array", "[utils]")
     Array<int> b(10);
     b.fill(3);
 
-    REQUIRE(((b[0] == 3) and (b[1] == 3) and (b[2] == 3) and (b[3] == 3) and
-             (b[4] == 3) and (b[5] == 3) and (b[6] == 3) and (b[7] == 3) and
-             (b[8] == 3) and (b[9] == 3)));
+    REQUIRE(((b[0] == 3) and (b[1] == 3) and (b[2] == 3) and (b[3] == 3) and (b[4] == 3) and (b[5] == 3) and
+             (b[6] == 3) and (b[7] == 3) and (b[8] == 3) and (b[9] == 3)));
   }
 
   SECTION("checking for affectations (shallow copy)")
@@ -63,59 +58,50 @@ TEST_CASE("Array", "[utils]")
     Array<const int> b;
     b = a;
 
-    REQUIRE(((b[0] == 0) and (b[1] == 2) and (b[2] == 4) and (b[3] == 6) and
-             (b[4] == 8) and (b[5] == 10) and (b[6] == 12) and (b[7] == 14) and
-             (b[8] == 16) and (b[9] == 18)));
+    REQUIRE(((b[0] == 0) and (b[1] == 2) and (b[2] == 4) and (b[3] == 6) and (b[4] == 8) and (b[5] == 10) and
+             (b[6] == 12) and (b[7] == 14) and (b[8] == 16) and (b[9] == 18)));
 
     Array<int> c;
     c = a;
 
-    REQUIRE(((c[0] == 0) and (c[1] == 2) and (c[2] == 4) and (c[3] == 6) and
-             (c[4] == 8) and (c[5] == 10) and (c[6] == 12) and (c[7] == 14) and
-             (c[8] == 16) and (c[9] == 18)));
+    REQUIRE(((c[0] == 0) and (c[1] == 2) and (c[2] == 4) and (c[3] == 6) and (c[4] == 8) and (c[5] == 10) and
+             (c[6] == 12) and (c[7] == 14) and (c[8] == 16) and (c[9] == 18)));
 
     Array<int> d;
     d = std::move(c);
 
-    REQUIRE(((d[0] == 0) and (d[1] == 2) and (d[2] == 4) and (d[3] == 6) and
-             (d[4] == 8) and (d[5] == 10) and (d[6] == 12) and (d[7] == 14) and
-             (d[8] == 16) and (d[9] == 18)));
+    REQUIRE(((d[0] == 0) and (d[1] == 2) and (d[2] == 4) and (d[3] == 6) and (d[4] == 8) and (d[5] == 10) and
+             (d[6] == 12) and (d[7] == 14) and (d[8] == 16) and (d[9] == 18)));
   }
 
   SECTION("checking for affectations (deep copy)")
   {
     Array<int> b(copy(a));
 
-    REQUIRE(((b[0] == 0) and (b[1] == 2) and (b[2] == 4) and (b[3] == 6) and
-             (b[4] == 8) and (b[5] == 10) and (b[6] == 12) and (b[7] == 14) and
-             (b[8] == 16) and (b[9] == 18)));
+    REQUIRE(((b[0] == 0) and (b[1] == 2) and (b[2] == 4) and (b[3] == 6) and (b[4] == 8) and (b[5] == 10) and
+             (b[6] == 12) and (b[7] == 14) and (b[8] == 16) and (b[9] == 18)));
 
     b.fill(2);
 
-    REQUIRE(((a[0] == 0) and (a[1] == 2) and (a[2] == 4) and (a[3] == 6) and
-             (a[4] == 8) and (a[5] == 10) and (a[6] == 12) and (a[7] == 14) and
-             (a[8] == 16) and (a[9] == 18)));
+    REQUIRE(((a[0] == 0) and (a[1] == 2) and (a[2] == 4) and (a[3] == 6) and (a[4] == 8) and (a[5] == 10) and
+             (a[6] == 12) and (a[7] == 14) and (a[8] == 16) and (a[9] == 18)));
 
-    REQUIRE(((b[0] == 2) and (b[1] == 2) and (b[2] == 2) and (b[3] == 2) and
-             (b[4] == 2) and (b[5] == 2) and (b[6] == 2) and (b[7] == 2) and
-             (b[8] == 2) and (b[9] == 2)));
+    REQUIRE(((b[0] == 2) and (b[1] == 2) and (b[2] == 2) and (b[3] == 2) and (b[4] == 2) and (b[5] == 2) and
+             (b[6] == 2) and (b[7] == 2) and (b[8] == 2) and (b[9] == 2)));
 
     Array<int> c;
     c = a;
 
-    REQUIRE(((c[0] == 0) and (c[1] == 2) and (c[2] == 4) and (c[3] == 6) and
-             (c[4] == 8) and (c[5] == 10) and (c[6] == 12) and (c[7] == 14) and
-             (c[8] == 16) and (c[9] == 18)));
+    REQUIRE(((c[0] == 0) and (c[1] == 2) and (c[2] == 4) and (c[3] == 6) and (c[4] == 8) and (c[5] == 10) and
+             (c[6] == 12) and (c[7] == 14) and (c[8] == 16) and (c[9] == 18)));
 
     c = copy(b);
 
-    REQUIRE(((a[0] == 0) and (a[1] == 2) and (a[2] == 4) and (a[3] == 6) and
-             (a[4] == 8) and (a[5] == 10) and (a[6] == 12) and (a[7] == 14) and
-             (a[8] == 16) and (a[9] == 18)));
+    REQUIRE(((a[0] == 0) and (a[1] == 2) and (a[2] == 4) and (a[3] == 6) and (a[4] == 8) and (a[5] == 10) and
+             (a[6] == 12) and (a[7] == 14) and (a[8] == 16) and (a[9] == 18)));
 
-    REQUIRE(((c[0] == 2) and (c[1] == 2) and (c[2] == 2) and (c[3] == 2) and
-             (c[4] == 2) and (c[5] == 2) and (c[6] == 2) and (c[7] == 2) and
-             (c[8] == 2) and (c[9] == 2)));
+    REQUIRE(((c[0] == 2) and (c[1] == 2) and (c[2] == 2) and (c[3] == 2) and (c[4] == 2) and (c[5] == 2) and
+             (c[6] == 2) and (c[7] == 2) and (c[8] == 2) and (c[9] == 2)));
   }
 
   SECTION("checking for std container conversion")
@@ -126,16 +112,14 @@ TEST_CASE("Array", "[utils]")
         Array<int> v_array = convert_to_array(v);
 
         REQUIRE(v_array.size() == v.size());
-        REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and
-                 (v_array[2] == 5) and (v_array[3] == 3)));
+        REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and (v_array[2] == 5) and (v_array[3] == 3)));
       }
 
       {
         Array<const int> v_array = convert_to_array(v);
 
         REQUIRE(v_array.size() == v.size());
-        REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and
-                 (v_array[2] == 5) and (v_array[3] == 3)));
+        REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and (v_array[2] == 5) and (v_array[3] == 3)));
       }
     }
 
@@ -156,8 +140,7 @@ TEST_CASE("Array", "[utils]")
       Array<int> v_array = convert_to_array(v);
 
       REQUIRE(v_array.size() == v.size());
-      REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and (v_array[2] == 5) and
-               (v_array[3] == 3)));
+      REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and (v_array[2] == 5) and (v_array[3] == 3)));
     }
 
     {
@@ -165,8 +148,8 @@ TEST_CASE("Array", "[utils]")
       Array<int> s_array = convert_to_array(s);
 
       REQUIRE(s_array.size() == s.size());
-      REQUIRE(((s_array[0] == 1) and (s_array[1] == 2) and (s_array[2] == 3) and
-               (s_array[3] == 4) and (s_array[4] == 5)));
+      REQUIRE(
+        ((s_array[0] == 1) and (s_array[1] == 2) and (s_array[2] == 3) and (s_array[3] == 4) and (s_array[4] == 5)));
     }
 
     {
@@ -188,10 +171,8 @@ TEST_CASE("Array", "[utils]")
       Array<int> ms_array = convert_to_array(ms);
 
       REQUIRE(ms_array.size() == ms.size());
-      REQUIRE(((ms_array[0] == 1) and (ms_array[1] == 2) and
-               (ms_array[2] == 2) and (ms_array[3] == 3) and
-               (ms_array[4] == 3) and (ms_array[5] == 4) and
-               (ms_array[6] == 5)));
+      REQUIRE(((ms_array[0] == 1) and (ms_array[1] == 2) and (ms_array[2] == 2) and (ms_array[3] == 3) and
+               (ms_array[4] == 3) and (ms_array[5] == 4) and (ms_array[6] == 5)));
     }
 
     {
@@ -199,8 +180,8 @@ TEST_CASE("Array", "[utils]")
       Array<int> l_array = convert_to_array(l);
 
       REQUIRE(l_array.size() == l.size());
-      REQUIRE(((l_array[0] == 1) and (l_array[1] == 3) and (l_array[2] == 5) and
-               (l_array[3] == 6) and (l_array[4] == 2)));
+      REQUIRE(
+        ((l_array[0] == 1) and (l_array[1] == 3) and (l_array[2] == 5) and (l_array[3] == 6) and (l_array[4] == 2)));
     }
 
     {
@@ -209,8 +190,8 @@ TEST_CASE("Array", "[utils]")
       Array<int> q_array = convert_to_array(q);
 
       REQUIRE(q_array.size() == q.size());
-      REQUIRE(((q_array[0] == 2) and (q_array[1] == 1) and (q_array[2] == 3) and
-               (q_array[3] == 5) and (q_array[4] == 6) and (q_array[5] == 2)));
+      REQUIRE(((q_array[0] == 2) and (q_array[1] == 1) and (q_array[2] == 3) and (q_array[3] == 5) and
+               (q_array[4] == 6) and (q_array[5] == 2)));
     }
   }
 
diff --git a/tests/test_ItemType.cpp b/tests/test_ItemType.cpp
index e1164ee99c6ec28b8da2b8ea620e00b7240849bf..9b2813dff60ec34bf2bf33a6d52baf0893289f23 100644
--- a/tests/test_ItemType.cpp
+++ b/tests/test_ItemType.cpp
@@ -12,9 +12,8 @@ TEST_CASE("ItemType", "[connectivity]")
 
   SECTION("checking for item type differences")
   {
-    REQUIRE(((node_type != edge_type) and (node_type != face_type) and
-             (node_type != cell_type) and (edge_type != face_type) and
-             (edge_type != cell_type) and (face_type != cell_type)));
+    REQUIRE(((node_type != edge_type) and (node_type != face_type) and (node_type != cell_type) and
+             (edge_type != face_type) and (edge_type != cell_type) and (face_type != cell_type)));
   }
 
   SECTION("checking for item type names")
diff --git a/tests/test_PugsAssert.cpp b/tests/test_PugsAssert.cpp
index 570763b0a3bab52c4a6eaaefd78c44a77bfee94d..afa6e6d4bef5fee716430e960823a183f735eae4 100644
--- a/tests/test_PugsAssert.cpp
+++ b/tests/test_PugsAssert.cpp
@@ -14,10 +14,9 @@ TEST_CASE("PugsAssert", "[utils]")
 
     AssertError assert_error(filename, line, function, test);
 
-    REQUIRE(Catch::Detail::stringify(assert_error) ==
-            "\n---------- Assertion error -----------\n at filename:10\n in "
-            "function\n assertion (test) "
-            "failed!\n--------------------------------------\n");
+    REQUIRE(Catch::Detail::stringify(assert_error) == "\n---------- Assertion error -----------\n at filename:10\n in "
+                                                      "function\n assertion (test) "
+                                                      "failed!\n--------------------------------------\n");
   }
 
   SECTION("checking for assert error with message")
@@ -30,9 +29,8 @@ TEST_CASE("PugsAssert", "[utils]")
 
     AssertError assert_error(filename, line, function, test, message);
 
-    REQUIRE(Catch::Detail::stringify(assert_error) ==
-            "\n---------- Assertion error -----------\n at filename:10\n in "
-            "function\n assertion (test) failed!\n "
-            "message\n--------------------------------------\n");
+    REQUIRE(Catch::Detail::stringify(assert_error) == "\n---------- Assertion error -----------\n at filename:10\n in "
+                                                      "function\n assertion (test) failed!\n "
+                                                      "message\n--------------------------------------\n");
   }
 }
diff --git a/tests/test_TinyMatrix.cpp b/tests/test_TinyMatrix.cpp
index a12c9a462bcb0f5fdcb194729d7d7a8fdc96cc44..9ae46f62d19bbe6210cf7fc0eb22f9b339d40af7 100644
--- a/tests/test_TinyMatrix.cpp
+++ b/tests/test_TinyMatrix.cpp
@@ -14,27 +14,23 @@ template class TinyMatrix<4, double>;
 TEST_CASE("TinyMatrix", "[algebra]")
 {
   TinyMatrix<3, int> A(1, 2, 3, 4, 5, 6, 7, 8, 9);
-  REQUIRE(((A(0, 0) == 1) and (A(0, 1) == 2) and (A(0, 2) == 3) and
-           (A(1, 0) == 4) and (A(1, 1) == 5) and (A(1, 2) == 6) and
-           (A(2, 0) == 7) and (A(2, 1) == 8) and (A(2, 2) == 9)));
+  REQUIRE(((A(0, 0) == 1) and (A(0, 1) == 2) and (A(0, 2) == 3) and (A(1, 0) == 4) and (A(1, 1) == 5) and
+           (A(1, 2) == 6) and (A(2, 0) == 7) and (A(2, 1) == 8) and (A(2, 2) == 9)));
 
   TinyMatrix<3, int> B(6, 5, 3, 8, 34, 6, 35, 6, 7);
   SECTION("checking for opposed matrix")
   {
     const TinyMatrix<3, int> minus_A = -A;
-    REQUIRE(((minus_A(0, 0) == -1) and (minus_A(0, 1) == -2) and
-             (minus_A(0, 2) == -3) and (minus_A(1, 0) == -4) and
-             (minus_A(1, 1) == -5) and (minus_A(1, 2) == -6) and
-             (minus_A(2, 0) == -7) and (minus_A(2, 1) == -8) and
+    REQUIRE(((minus_A(0, 0) == -1) and (minus_A(0, 1) == -2) and (minus_A(0, 2) == -3) and (minus_A(1, 0) == -4) and
+             (minus_A(1, 1) == -5) and (minus_A(1, 2) == -6) and (minus_A(2, 0) == -7) and (minus_A(2, 1) == -8) and
              (minus_A(2, 2) == -9)));
   }
   SECTION("checking for equality and difference tests")
   {
     const TinyMatrix<3, int> copy_A = A;
-    REQUIRE(
-      ((copy_A(0, 0) == 1) and (copy_A(0, 1) == 2) and (copy_A(0, 2) == 3) and
-       (copy_A(1, 0) == 4) and (copy_A(1, 1) == 5) and (copy_A(1, 2) == 6) and
-       (copy_A(2, 0) == 7) and (copy_A(2, 1) == 8) and (copy_A(2, 2) == 9)));
+    REQUIRE(((copy_A(0, 0) == 1) and (copy_A(0, 1) == 2) and (copy_A(0, 2) == 3) and (copy_A(1, 0) == 4) and
+             (copy_A(1, 1) == 5) and (copy_A(1, 2) == 6) and (copy_A(2, 0) == 7) and (copy_A(2, 1) == 8) and
+             (copy_A(2, 2) == 9)));
     REQUIRE(copy_A == A);
     REQUIRE_FALSE(copy_A != A);
 
@@ -60,8 +56,7 @@ TEST_CASE("TinyMatrix", "[algebra]")
     const int a               = 2;
     TinyMatrix<3, int> copy_A = A;
 
-    REQUIRE((copy_A *= a) ==
-            TinyMatrix<3, int>(2, 4, 6, 8, 10, 12, 14, 16, 18));
+    REQUIRE((copy_A *= a) == TinyMatrix<3, int>(2, 4, 6, 8, 10, 12, 14, 16, 18));
   }
 
   SECTION("checking for null matrix management")
@@ -110,8 +105,7 @@ TEST_CASE("TinyMatrix", "[algebra]")
 
   SECTION("checking for matrices product")
   {
-    REQUIRE(A * B ==
-            TinyMatrix<3, int>(127, 91, 36, 274, 226, 84, 421, 361, 132));
+    REQUIRE(A * B == TinyMatrix<3, int>(127, 91, 36, 274, 226, 84, 421, 361, 132));
   }
 
   SECTION("checking for matrix-vector product")
@@ -124,8 +118,7 @@ TEST_CASE("TinyMatrix", "[algebra]")
     const TinyVector<3, int> u(1, 3, 7);
     const TinyVector<3, int> v(6, 2, -3);
 
-    REQUIRE(tensorProduct(u, v) ==
-            TinyMatrix<3, int>(6, 2, -3, 18, 6, -9, 42, 14, -21));
+    REQUIRE(tensorProduct(u, v) == TinyMatrix<3, int>(6, 2, -3, 18, 6, -9, 42, 14, -21));
   }
 
   SECTION("checking for minor calculation")
@@ -165,8 +158,7 @@ TEST_CASE("TinyMatrix", "[algebra]")
     REQUIRE(det(TinyMatrix<1, int>(6)) == 6);
     REQUIRE(det(TinyMatrix<2, int>(3, 1, -3, 6)) == 21);
     REQUIRE(det(B) == -1444);
-    REQUIRE(det(TinyMatrix<4, double>(1, 2.3, 7, -6.2, 3, 4, 9, 1, 4.1, 5, 2,
-                                      -3, 2, 27, 3, 17.5)) ==
+    REQUIRE(det(TinyMatrix<4, double>(1, 2.3, 7, -6.2, 3, 4, 9, 1, 4.1, 5, 2, -3, 2, 27, 3, 17.5)) ==
             Approx(6661.455).epsilon(1E-14));
   }