diff --git a/src/algebra/CRSMatrix.hpp b/src/algebra/CRSMatrix.hpp
index 98297d759675fdb7fdbf8be1e638f19cba4cc562..edb85d5e87b6a347ad5bc4f82987fd9255154484 100644
--- a/src/algebra/CRSMatrix.hpp
+++ b/src/algebra/CRSMatrix.hpp
@@ -21,13 +21,29 @@ class CRSMatrix
 
   HostMatrix m_host_matrix;
   Array<const DataType> m_values;
+  size_t m_nb_rows;
+  size_t m_nb_columns;
 
  public:
+  PUGS_INLINE
+  bool
+  isSquare() const noexcept
+  {
+    return m_nb_rows == m_nb_columns;
+  }
+
   PUGS_INLINE
   size_t
   numberOfRows() const
   {
-    return m_host_matrix.numRows();
+    return m_nb_rows;
+  }
+
+  PUGS_INLINE
+  size_t
+  numberOfColumns() const
+  {
+    return m_nb_columns;
   }
 
   auto
@@ -75,6 +91,7 @@ class CRSMatrix
   }
 
   CRSMatrix(const SparseMatrixDescriptor<DataType, IndexType>& M)
+    : m_nb_rows{M.numberOfRows()}, m_nb_columns{M.numberOfColumns()}
   {
     {
       auto host_matrix =
diff --git a/src/algebra/SparseMatrixDescriptor.hpp b/src/algebra/SparseMatrixDescriptor.hpp
index f63a17576d619bf692f36a00e5c0c4e373effdbf..d94ed468606a10ee15857a971abab20fb4be5b1a 100644
--- a/src/algebra/SparseMatrixDescriptor.hpp
+++ b/src/algebra/SparseMatrixDescriptor.hpp
@@ -63,6 +63,7 @@ class SparseMatrixDescriptor
 
  private:
   Array<SparseRowDescriptor> m_row_array;
+  const size_t m_nb_columns;
 
  public:
   PUGS_INLINE
@@ -72,6 +73,13 @@ class SparseMatrixDescriptor
     return m_row_array.size();
   }
 
+  PUGS_INLINE
+  size_t
+  numberOfColumns() const noexcept
+  {
+    return m_nb_columns;
+  }
+
   SparseRowDescriptor&
   row(const IndexType i)
   {
@@ -90,7 +98,7 @@ class SparseMatrixDescriptor
   operator()(const IndexType& i, const IndexType& j)
   {
     Assert(i < m_row_array.size());
-    Assert(j < m_row_array.size());
+    Assert(j < m_nb_columns);
     return m_row_array[i][j];
   }
 
@@ -98,7 +106,7 @@ class SparseMatrixDescriptor
   operator()(const IndexType& i, const IndexType& j) const
   {
     Assert(i < m_row_array.size());
-    Assert(j < m_row_array.size());
+    Assert(j < m_nb_columns);
     const auto& r = m_row_array[i];   // split to ensure const-ness of call
     return r[j];
   }
@@ -145,13 +153,17 @@ class SparseMatrixDescriptor
     return values;
   }
 
-  SparseMatrixDescriptor(size_t nb_row) : m_row_array{nb_row}
+  SparseMatrixDescriptor(size_t nb_rows, size_t nb_columns) : m_row_array{nb_rows}, m_nb_columns{nb_columns}
   {
-    for (size_t i = 0; i < nb_row; ++i) {
-      m_row_array[i][i] = 0;
+    if (nb_rows == nb_columns) {
+      for (size_t i = 0; i < nb_rows; ++i) {
+        m_row_array[i][i] = 0;
+      }
     }
   }
 
+  SparseMatrixDescriptor(size_t nb_rows) : SparseMatrixDescriptor{nb_rows, nb_rows} {}
+
   ~SparseMatrixDescriptor() = default;
 };
 
diff --git a/src/algebra/TinyMatrix.hpp b/src/algebra/TinyMatrix.hpp
index 636ff19c18112c582c8968e8dc6f4df5ebdee726..6c23b068bf1a8c8744e24ffbf60ec88b42b1317b 100644
--- a/src/algebra/TinyMatrix.hpp
+++ b/src/algebra/TinyMatrix.hpp
@@ -36,6 +36,12 @@ class [[nodiscard]] TinyMatrix
   }
 
  public:
+  PUGS_INLINE
+  constexpr bool isSquare() const noexcept
+  {
+    return true;
+  }
+
   PUGS_INLINE
   constexpr size_t dimension() const
   {
@@ -43,13 +49,19 @@ class [[nodiscard]] TinyMatrix
   }
 
   PUGS_INLINE
-  constexpr size_t nbRows() const
+  constexpr size_t numberOfValues() const
+  {
+    return this->dimension();
+  }
+
+  PUGS_INLINE
+  constexpr size_t numberOfRows() const
   {
     return N;
   }
 
   PUGS_INLINE
-  constexpr size_t nbColumns() const
+  constexpr size_t numberOfColumns() const
   {
     return N;
   }
diff --git a/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp b/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp
index e717044d1dea5fe6b85aec6c41941699c1e5ef65..dcb2441c8bf14452c1f7af56a6a55bcdf340ede0 100644
--- a/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp
@@ -29,9 +29,9 @@ ASTNodeArraySubscriptExpressionBuilder::ASTNodeArraySubscriptExpressionBuilder(A
     }
     }
   } else if (array_expression.m_data_type == ASTNodeDataType::matrix_t) {
-    Assert(array_expression.m_data_type.nbRows() == array_expression.m_data_type.nbColumns());
+    Assert(array_expression.m_data_type.numberOfRows() == array_expression.m_data_type.numberOfColumns());
 
-    switch (array_expression.m_data_type.nbRows()) {
+    switch (array_expression.m_data_type.numberOfRows()) {
     case 1: {
       node.m_node_processor = std::make_unique<ArraySubscriptProcessor<TinyMatrix<1>>>(node);
       break;
diff --git a/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp
index 412906b9d67291ed7901d3ac00943cc8a9107449..70d8e3b3ac10456eb28c0036fdfa31eb1630bcab 100644
--- a/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp
@@ -120,8 +120,8 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
     if constexpr (std::is_same_v<ParameterT, TinyMatrix<1>>) {
       switch (argument_node_sub_data_type.m_data_type) {
       case ASTNodeDataType::matrix_t: {
-        if ((argument_node_sub_data_type.m_data_type.nbRows() == 1) and
-            (argument_node_sub_data_type.m_data_type.nbColumns() == 1)) {
+        if ((argument_node_sub_data_type.m_data_type.numberOfRows() == 1) and
+            (argument_node_sub_data_type.m_data_type.numberOfColumns() == 1)) {
           return std::make_unique<FunctionTinyMatrixArgumentConverter<ParameterT, ParameterT>>(argument_number);
         } else {
           // LCOV_EXCL_START
@@ -152,8 +152,8 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
     } else {
       switch (argument_node_sub_data_type.m_data_type) {
       case ASTNodeDataType::matrix_t: {
-        if ((argument_node_sub_data_type.m_data_type.nbRows() == parameter_v.nbRows()) and
-            (argument_node_sub_data_type.m_data_type.nbColumns() == parameter_v.nbColumns())) {
+        if ((argument_node_sub_data_type.m_data_type.numberOfRows() == parameter_v.numberOfRows()) and
+            (argument_node_sub_data_type.m_data_type.numberOfColumns() == parameter_v.numberOfColumns())) {
           return std::make_unique<FunctionTinyMatrixArgumentConverter<ParameterT, ParameterT>>(argument_number);
         } else {
           // LCOV_EXCL_START
@@ -164,7 +164,7 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
       }
       case ASTNodeDataType::list_t: {
         if (argument_node_sub_data_type.m_parent_node.children.size() ==
-            (parameter_v.nbRows() * parameter_v.nbColumns())) {
+            (parameter_v.numberOfRows() * parameter_v.numberOfColumns())) {
           return std::make_unique<FunctionTinyMatrixArgumentConverter<ParameterT, ParameterT>>(argument_number);
         } else {
           // LCOV_EXCL_START
@@ -293,8 +293,8 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
       }
     }
     case ASTNodeDataType::matrix_t: {
-      Assert(arg_data_type.nbRows() == arg_data_type.nbColumns());
-      switch (arg_data_type.nbRows()) {
+      Assert(arg_data_type.numberOfRows() == arg_data_type.numberOfColumns());
+      switch (arg_data_type.numberOfRows()) {
       case 1: {
         return std::make_unique<FunctionTupleArgumentConverter<ParameterContentT, TinyMatrix<1>>>(argument_number);
       }
@@ -370,8 +370,8 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
       }
     }
     case ASTNodeDataType::matrix_t: {
-      Assert(parameter_type.nbRows() == parameter_type.nbColumns());
-      switch (parameter_type.nbRows()) {
+      Assert(parameter_type.numberOfRows() == parameter_type.numberOfColumns());
+      switch (parameter_type.numberOfRows()) {
       case 1: {
         return get_function_argument_converter_for_matrix(TinyMatrix<1>{});
       }
@@ -439,8 +439,8 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
         }
       }
       case ASTNodeDataType::matrix_t: {
-        Assert(parameter_type.contentType().nbRows() == parameter_type.contentType().nbColumns());
-        switch (parameter_type.contentType().nbRows()) {
+        Assert(parameter_type.contentType().numberOfRows() == parameter_type.contentType().numberOfColumns());
+        switch (parameter_type.contentType().numberOfRows()) {
         case 1: {
           return get_function_argument_to_tuple_converter(TinyMatrix<1>{});
         }
diff --git a/src/language/ast/ASTNodeDataTypeBuilder.cpp b/src/language/ast/ASTNodeDataTypeBuilder.cpp
index d8cf06824ea5cf070a07a84d4bf3bcc711f71a79..eb307e2c16893be52128166c973f4992e86f3cb4 100644
--- a/src/language/ast/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ast/ASTNodeDataTypeBuilder.cpp
@@ -266,10 +266,11 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) const
             }
           } else if (image_domain_node.is_type<language::matrix_type>()) {
             ASTNodeDataType image_type = getMatrixDataType(image_domain_node);
-            if (image_type.nbRows() * image_type.nbColumns() != nb_image_expressions) {
+            if (image_type.numberOfRows() * image_type.numberOfColumns() != nb_image_expressions) {
               std::ostringstream message;
-              message << "expecting " << image_type.nbRows() * image_type.nbColumns() << " scalar expressions or an "
-                      << dataTypeName(image_type) << ", found " << nb_image_expressions << " scalar expressions";
+              message << "expecting " << image_type.numberOfRows() * image_type.numberOfColumns()
+                      << " scalar expressions or an " << dataTypeName(image_type) << ", found " << nb_image_expressions
+                      << " scalar expressions";
               throw ParseError(message.str(), image_expression_node.begin());
             }
           } else {
diff --git a/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp
index 15720a9f645616ad08588c5d00e5185d06482276..6c1db0335b2f46a8410baed7f02e59efa6ae49c8 100644
--- a/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp
@@ -112,8 +112,8 @@ ASTNodeFunctionExpressionBuilder::_getArgumentConverter(SymbolType& parameter_sy
     using ParameterT = std::decay_t<decltype(parameter_v)>;
     switch (node_sub_data_type.m_data_type) {
     case ASTNodeDataType::matrix_t: {
-      if ((node_sub_data_type.m_data_type.nbRows() == parameter_v.nbRows()) and
-          (node_sub_data_type.m_data_type.nbColumns() == parameter_v.nbColumns())) {
+      if ((node_sub_data_type.m_data_type.numberOfRows() == parameter_v.numberOfRows()) and
+          (node_sub_data_type.m_data_type.numberOfColumns() == parameter_v.numberOfColumns())) {
         return std::make_unique<FunctionTinyMatrixArgumentConverter<ParameterT, ParameterT>>(parameter_id);
       } else {
         // LCOV_EXCL_START
@@ -187,9 +187,10 @@ ASTNodeFunctionExpressionBuilder::_getArgumentConverter(SymbolType& parameter_sy
       // LCOV_EXCL_STOP
     }
     case ASTNodeDataType::matrix_t: {
-      Assert(parameter_symbol.attributes().dataType().nbRows() == parameter_symbol.attributes().dataType().nbColumns());
+      Assert(parameter_symbol.attributes().dataType().numberOfRows() ==
+             parameter_symbol.attributes().dataType().numberOfColumns());
 
-      switch (parameter_symbol.attributes().dataType().nbRows()) {
+      switch (parameter_symbol.attributes().dataType().numberOfRows()) {
       case 1: {
         return get_function_argument_converter_for_matrix(TinyMatrix<1>{});
       }
@@ -361,8 +362,8 @@ ASTNodeFunctionExpressionBuilder::_getFunctionProcessor(const ASTNodeDataType& r
     using ReturnT = std::decay_t<decltype(return_v)>;
     switch (function_component_expression.m_data_type) {
     case ASTNodeDataType::matrix_t: {
-      if ((function_component_expression.m_data_type.nbRows() == return_v.nbRows()) and
-          (function_component_expression.m_data_type.nbColumns() == return_v.nbColumns())) {
+      if ((function_component_expression.m_data_type.numberOfRows() == return_v.numberOfRows()) and
+          (function_component_expression.m_data_type.numberOfColumns() == return_v.numberOfColumns())) {
         return std::make_unique<FunctionExpressionProcessor<ReturnT, ReturnT>>(function_component_expression);
       } else {
         // LCOV_EXCL_START
@@ -461,9 +462,9 @@ ASTNodeFunctionExpressionBuilder::_getFunctionProcessor(const ASTNodeDataType& r
       }
     }
     case ASTNodeDataType::matrix_t: {
-      Assert(return_value_type.nbRows() == return_value_type.nbColumns());
+      Assert(return_value_type.numberOfRows() == return_value_type.numberOfColumns());
 
-      switch (return_value_type.nbRows()) {
+      switch (return_value_type.numberOfRows()) {
       case 1: {
         if (function_component_expression.m_data_type == ASTNodeDataType::matrix_t) {
           return get_function_processor_for_expression_matrix(TinyMatrix<1>{});
@@ -624,15 +625,15 @@ ASTNodeFunctionExpressionBuilder::ASTNodeFunctionExpressionBuilder(ASTNode& node
     ASTNodeNaturalConversionChecker<AllowRToR1Conversion>{function_expression, matrix_type};
 
     if (function_expression.is_type<language::expression_list>()) {
-      Assert(matrix_type.nbRows() * matrix_type.nbColumns() == function_expression.children.size());
+      Assert(matrix_type.numberOfRows() * matrix_type.numberOfColumns() == function_expression.children.size());
 
-      for (size_t i = 0; i < matrix_type.nbRows() * matrix_type.nbColumns(); ++i) {
+      for (size_t i = 0; i < matrix_type.numberOfRows() * matrix_type.numberOfColumns(); ++i) {
         function_processor->addFunctionExpressionProcessor(
           this->_getFunctionProcessor(ASTNodeDataType::build<ASTNodeDataType::double_t>(), node,
                                       *function_expression.children[i]));
       }
 
-      switch (matrix_type.nbRows()) {
+      switch (matrix_type.numberOfRows()) {
       case 2: {
         node.m_node_processor =
           std::make_unique<TupleToTinyMatrixProcessor<FunctionProcessor, 2>>(node, std::move(function_processor));
@@ -651,7 +652,7 @@ ASTNodeFunctionExpressionBuilder::ASTNodeFunctionExpressionBuilder(ASTNode& node
       }
     } else if (function_expression.is_type<language::integer>()) {
       if (std::stoi(function_expression.string()) == 0) {
-        switch (matrix_type.nbRows()) {
+        switch (matrix_type.numberOfRows()) {
         case 1: {
           node.m_node_processor =
             std::make_unique<FunctionExpressionProcessor<TinyMatrix<1>, ZeroType>>(function_expression);
diff --git a/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp b/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp
index 6b53db72a1a257f74196a56f6e2c83694531fd5f..dc438e61f5aa8ea2ad0f4d3d2b0879c0e2ec0f0e 100644
--- a/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp
@@ -85,19 +85,19 @@ ASTNodeListAffectationExpressionBuilder::_buildAffectationProcessor(
     using ValueT = std::decay_t<decltype(value)>;
     if constexpr (std::is_same_v<ValueT, TinyMatrix<1>>) {
       if ((node_sub_data_type.m_data_type == ASTNodeDataType::matrix_t) and
-          (node_sub_data_type.m_data_type.nbRows() == value.nbRows()) and
-          (node_sub_data_type.m_data_type.nbColumns() == value.nbColumns())) {
+          (node_sub_data_type.m_data_type.numberOfRows() == value.numberOfRows()) and
+          (node_sub_data_type.m_data_type.numberOfColumns() == value.numberOfColumns())) {
         list_affectation_processor->template add<ValueT, ValueT>(value_node);
       } else {
         add_affectation_processor_for_data(value, node_sub_data_type);
       }
     } else if constexpr (std::is_same_v<ValueT, TinyMatrix<2>> or std::is_same_v<ValueT, TinyMatrix<3>>) {
       if ((node_sub_data_type.m_data_type == ASTNodeDataType::matrix_t) and
-          (node_sub_data_type.m_data_type.nbRows() == value.nbRows()) and
-          (node_sub_data_type.m_data_type.nbColumns() == value.nbColumns())) {
+          (node_sub_data_type.m_data_type.numberOfRows() == value.numberOfRows()) and
+          (node_sub_data_type.m_data_type.numberOfColumns() == value.numberOfColumns())) {
         list_affectation_processor->template add<ValueT, ValueT>(value_node);
       } else if ((node_sub_data_type.m_data_type == ASTNodeDataType::list_t) and
-                 (node_sub_data_type.m_parent_node.children.size() == value.nbRows() * value.nbColumns())) {
+                 (node_sub_data_type.m_parent_node.children.size() == value.numberOfRows() * value.numberOfColumns())) {
         list_affectation_processor->template add<ValueT, AggregateDataVariant>(value_node);
       } else if (node_sub_data_type.m_parent_node.is_type<language::integer>()) {
         if (std::stoi(node_sub_data_type.m_parent_node.string()) == 0) {
@@ -241,8 +241,8 @@ ASTNodeListAffectationExpressionBuilder::_buildAffectationProcessor(
       break;
     }
     case ASTNodeDataType::matrix_t: {
-      Assert(value_type.nbRows() == value_type.nbColumns());
-      switch (value_type.nbRows()) {
+      Assert(value_type.numberOfRows() == value_type.numberOfColumns());
+      switch (value_type.numberOfRows()) {
       case 1: {
         add_affectation_processor_for_matrix_data(TinyMatrix<1>{}, node_sub_data_type);
         break;
diff --git a/src/language/node_processor/AffectationProcessor.hpp b/src/language/node_processor/AffectationProcessor.hpp
index 07a52de44e09cba57cf5b60aba65e844ff7faa94..f24e8473be7717f4ddd2e8f20d3d2ab666f19001 100644
--- a/src/language/node_processor/AffectationProcessor.hpp
+++ b/src/language/node_processor/AffectationProcessor.hpp
@@ -141,8 +141,8 @@ class AffectationExecutor final : public IAffectationExecutor
                     v[i]);
                 }
               } else if constexpr (is_tiny_matrix_v<ValueT>) {
-                for (size_t i = 0, l = 0; i < m_lhs.nbRows(); ++i) {
-                  for (size_t j = 0; j < m_lhs.nbColumns(); ++j, ++l) {
+                for (size_t i = 0, l = 0; i < m_lhs.numberOfRows(); ++i) {
+                  for (size_t j = 0; j < m_lhs.numberOfColumns(); ++j, ++l) {
                     std::visit(
                       [&](auto&& Aij) {
                         using Aij_T = std::decay_t<decltype(Aij)>;
@@ -435,12 +435,12 @@ class AffectationProcessor final : public INodeProcessor
         }
       } else if (array_expression.m_data_type == ASTNodeDataType::matrix_t) {
         Assert(lhs_node.children.size() == 3);
-        Assert(array_expression.m_data_type.nbRows() == array_expression.m_data_type.nbColumns());
+        Assert(array_expression.m_data_type.numberOfRows() == array_expression.m_data_type.numberOfColumns());
 
         auto& index0_expression = *lhs_node.children[1];
         auto& index1_expression = *lhs_node.children[2];
 
-        switch (array_expression.m_data_type.nbRows()) {
+        switch (array_expression.m_data_type.numberOfRows()) {
         case 1: {
           using ArrayTypeT = TinyMatrix<1>;
           if (not std::holds_alternative<ArrayTypeT>(value)) {
@@ -576,8 +576,8 @@ class AffectationToTinyMatrixFromListProcessor final : public AffectationToDataV
     static_assert(std::is_same_v<OperatorT, language::eq_op>, "forbidden affection operator for list to vectors");
 
     ValueT v;
-    for (size_t i = 0, l = 0; i < v.nbRows(); ++i) {
-      for (size_t j = 0; j < v.nbColumns(); ++j, ++l) {
+    for (size_t i = 0, l = 0; i < v.numberOfRows(); ++i) {
+      for (size_t j = 0; j < v.numberOfColumns(); ++j, ++l) {
         std::visit(
           [&](auto&& child_value) {
             using T = std::decay_t<decltype(child_value)>;
@@ -721,9 +721,9 @@ class AffectationToTupleFromListProcessor final : public AffectationToDataVarian
           } else if constexpr (is_tiny_matrix_v<ValueT>) {
             if constexpr (std::is_same_v<T, AggregateDataVariant>) {
               ValueT& A = tuple_value[i];
-              Assert(A.nbRows() * A.nbColumns() == child_value.size());
-              for (size_t j = 0, l = 0; j < A.nbRows(); ++j) {
-                for (size_t k = 0; k < A.nbColumns(); ++k, ++l) {
+              Assert(A.numberOfRows() * A.numberOfColumns() == child_value.size());
+              for (size_t j = 0, l = 0; j < A.numberOfRows(); ++j) {
+                for (size_t k = 0; k < A.numberOfColumns(); ++k, ++l) {
                   std::visit(
                     [&](auto&& Ajk) {
                       using Ti = std::decay_t<decltype(Ajk)>;
@@ -927,9 +927,9 @@ class ListAffectationProcessor final : public INodeProcessor
         auto& index0_expression = *array_subscript_expression.children[1];
         auto& index1_expression = *array_subscript_expression.children[2];
 
-        Assert(array_expression.m_data_type.nbRows() == array_expression.m_data_type.nbColumns());
+        Assert(array_expression.m_data_type.numberOfRows() == array_expression.m_data_type.numberOfColumns());
 
-        switch (array_expression.m_data_type.nbRows()) {
+        switch (array_expression.m_data_type.numberOfRows()) {
         case 1: {
           using ArrayTypeT = TinyMatrix<1>;
           if (not std::holds_alternative<ArrayTypeT>(value)) {
diff --git a/src/language/node_processor/ExecutionPolicy.hpp b/src/language/node_processor/ExecutionPolicy.hpp
index 47fc3174ca5236c067bde9045a97f4d1c0fe160a..672daf5915808232285d76b2f6ea8492a3bdb7c2 100644
--- a/src/language/node_processor/ExecutionPolicy.hpp
+++ b/src/language/node_processor/ExecutionPolicy.hpp
@@ -34,12 +34,14 @@ class ExecutionPolicy
       return m_shared_values->size();
     }
 
-    DataVariant& operator[](size_t i)
+    DataVariant&
+    operator[](size_t i)
     {
       return (*m_shared_values)[i];
     }
 
-    const DataVariant& operator[](size_t i) const
+    const DataVariant&
+    operator[](size_t i) const
     {
       return (*m_shared_values)[i];
     }
diff --git a/src/language/node_processor/FunctionArgumentConverter.hpp b/src/language/node_processor/FunctionArgumentConverter.hpp
index b13eb222b08cd2c0f5dde5e72d4de5626ef7758b..f747672e2c036ab59402610cb7170218f96c15e3 100644
--- a/src/language/node_processor/FunctionArgumentConverter.hpp
+++ b/src/language/node_processor/FunctionArgumentConverter.hpp
@@ -139,8 +139,8 @@ class FunctionTinyMatrixArgumentConverter final : public IFunctionArgumentConver
             exec_policy.currentContext()[m_argument_id] = std::move(value);
           } else if constexpr (std::is_same_v<ValueT, AggregateDataVariant>) {
             ExpectedValueType matrix_value{};
-            for (size_t i = 0, l = 0; i < matrix_value.nbRows(); ++i) {
-              for (size_t j = 0; j < matrix_value.nbColumns(); ++j, ++l) {
+            for (size_t i = 0, l = 0; i < matrix_value.numberOfRows(); ++i) {
+              for (size_t j = 0; j < matrix_value.numberOfColumns(); ++j, ++l) {
                 std::visit(
                   [&](auto&& A_ij) {
                     using Vi_T = std::decay_t<decltype(A_ij)>;
diff --git a/src/language/node_processor/FunctionProcessor.hpp b/src/language/node_processor/FunctionProcessor.hpp
index f8c86ea9e5cb51e169e48ecadc0b4770ef873cc8..cead55c20fd2e6b34edb4df510840d683fc8b5b8 100644
--- a/src/language/node_processor/FunctionProcessor.hpp
+++ b/src/language/node_processor/FunctionProcessor.hpp
@@ -38,8 +38,8 @@ class FunctionExpressionProcessor final : public INodeProcessor
       } else {
         static_assert(is_tiny_matrix_v<ReturnType>);
 
-        for (size_t i = 0, l = 0; i < return_value.nbRows(); ++i) {
-          for (size_t j = 0; j < return_value.nbColumns(); ++j, ++l) {
+        for (size_t i = 0, l = 0; i < return_value.numberOfRows(); ++i) {
+          for (size_t j = 0; j < return_value.numberOfColumns(); ++j, ++l) {
             std::visit(
               [&](auto&& Aij) {
                 using Vi_T = std::decay_t<decltype(Aij)>;
diff --git a/src/language/utils/ASTNodeDataType.cpp b/src/language/utils/ASTNodeDataType.cpp
index 3550025dd36e05c46e8ca20ce49a45d6b0fff30b..ddea3a6dd9a6a79fda474bb93e05645d55dd7503 100644
--- a/src/language/utils/ASTNodeDataType.cpp
+++ b/src/language/utils/ASTNodeDataType.cpp
@@ -76,7 +76,7 @@ dataTypeName(const ASTNodeDataType& data_type)
     name = "R^" + std::to_string(data_type.dimension());
     break;
   case ASTNodeDataType::matrix_t:
-    name = "R^" + std::to_string(data_type.nbRows()) + "x" + std::to_string(data_type.nbColumns());
+    name = "R^" + std::to_string(data_type.numberOfRows()) + "x" + std::to_string(data_type.numberOfColumns());
     break;
   case ASTNodeDataType::tuple_t:
     name = "(" + dataTypeName(data_type.contentType()) + "...)";
@@ -173,8 +173,8 @@ isNaturalConversion(const ASTNodeDataType& data_type, const ASTNodeDataType& tar
     } else if (data_type == ASTNodeDataType::vector_t) {
       return (data_type.dimension() == target_data_type.dimension());
     } else if (data_type == ASTNodeDataType::matrix_t) {
-      return ((data_type.nbRows() == target_data_type.nbRows()) and
-              (data_type.nbColumns() == target_data_type.nbColumns()));
+      return ((data_type.numberOfRows() == target_data_type.numberOfRows()) and
+              (data_type.numberOfColumns() == target_data_type.numberOfColumns()));
     } else {
       return true;
     }
diff --git a/src/language/utils/ASTNodeDataType.hpp b/src/language/utils/ASTNodeDataType.hpp
index c31c9e15b6e8df0055aa4854bb7ede0a73318abd..ea744757cf68b5055605111d35acc14564b06b30 100644
--- a/src/language/utils/ASTNodeDataType.hpp
+++ b/src/language/utils/ASTNodeDataType.hpp
@@ -70,7 +70,7 @@ class ASTNodeDataType
 
   PUGS_INLINE
   size_t
-  nbRows() const
+  numberOfRows() const
   {
     Assert(std::holds_alternative<std::array<size_t, 2>>(m_details));
     return std::get<std::array<size_t, 2>>(m_details)[0];
@@ -78,7 +78,7 @@ class ASTNodeDataType
 
   PUGS_INLINE
   size_t
-  nbColumns() const
+  numberOfColumns() const
   {
     Assert(std::holds_alternative<std::array<size_t, 2>>(m_details));
     return std::get<std::array<size_t, 2>>(m_details)[1];
diff --git a/src/language/utils/ASTNodeNaturalConversionChecker.cpp b/src/language/utils/ASTNodeNaturalConversionChecker.cpp
index 81a277574753dc3e8cc75871a07d8d8a3b1a0cc6..a05c5aa1b4fcc79d531ea51544fb47dc1b40698e 100644
--- a/src/language/utils/ASTNodeNaturalConversionChecker.cpp
+++ b/src/language/utils/ASTNodeNaturalConversionChecker.cpp
@@ -14,8 +14,8 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalTypeConversion(
   if (not isNaturalConversion(data_type, target_data_type)) {
     if constexpr (std::is_same_v<RToR1ConversionStrategy, AllowRToR1Conversion>) {
       if (((target_data_type == ASTNodeDataType::vector_t) and (target_data_type.dimension() == 1)) or
-          ((target_data_type == ASTNodeDataType::matrix_t) and (target_data_type.nbRows() == 1) and
-           (target_data_type.nbColumns() == 1))) {
+          ((target_data_type == ASTNodeDataType::matrix_t) and (target_data_type.numberOfRows() == 1) and
+           (target_data_type.numberOfColumns() == 1))) {
         if (isNaturalConversion(data_type, ASTNodeDataType::build<ASTNodeDataType::double_t>())) {
           return;
         }
@@ -93,10 +93,11 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve
     switch (data_type) {
     case ASTNodeDataType::list_t: {
       const auto& content_type_list = data_type.contentTypeList();
-      if (content_type_list.size() != (target_data_type.nbRows() * target_data_type.nbColumns())) {
+      if (content_type_list.size() != (target_data_type.numberOfRows() * target_data_type.numberOfColumns())) {
         std::ostringstream os;
         os << "incompatible dimensions in affectation: expecting "
-           << target_data_type.nbRows() * target_data_type.nbColumns() << ", but provided " << content_type_list.size();
+           << target_data_type.numberOfRows() * target_data_type.numberOfColumns() << ", but provided "
+           << content_type_list.size();
         throw ParseError(os.str(), std::vector{node.begin()});
       }
 
@@ -112,8 +113,8 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve
       break;
     }
     case ASTNodeDataType::matrix_t: {
-      if ((data_type.nbRows() != target_data_type.nbRows()) or
-          (data_type.nbColumns() != target_data_type.nbColumns())) {
+      if ((data_type.numberOfRows() != target_data_type.numberOfRows()) or
+          (data_type.numberOfColumns() != target_data_type.numberOfColumns())) {
         std::ostringstream error_message;
         error_message << "invalid implicit conversion: ";
         error_message << rang::fgB::red << dataTypeName(data_type) << " -> " << dataTypeName(target_data_type)
diff --git a/src/language/utils/BuiltinFunctionEmbedderUtils.cpp b/src/language/utils/BuiltinFunctionEmbedderUtils.cpp
index ffe1112d0543fa644aa952a9599d9fb12eb5e383..1c7723ff1c3f2b510db742dd9b647f643b83d303 100644
--- a/src/language/utils/BuiltinFunctionEmbedderUtils.cpp
+++ b/src/language/utils/BuiltinFunctionEmbedderUtils.cpp
@@ -109,13 +109,13 @@ getBuiltinFunctionEmbedder(ASTNode& n)
     }
 
     bool is_castable = true;
-    if (target_type.nbRows() > 1) {
+    if (target_type.numberOfRows() > 1) {
       switch (arg_type) {
       case ASTNodeDataType::int_t: {
         break;
       }
       case ASTNodeDataType::list_t: {
-        if (arg_type.contentTypeList().size() != target_type.nbRows() * target_type.nbColumns()) {
+        if (arg_type.contentTypeList().size() != target_type.numberOfRows() * target_type.numberOfColumns()) {
           is_castable = false;
           break;
         }
diff --git a/src/language/utils/EmbeddedIDiscreteFunctionOperators.cpp b/src/language/utils/EmbeddedIDiscreteFunctionOperators.cpp
index 0e5a789ce31e645b8ccdde6c48009eca4275d76b..13def86d07990370bb7dce658dde09f8d06b565a 100644
--- a/src/language/utils/EmbeddedIDiscreteFunctionOperators.cpp
+++ b/src/language/utils/EmbeddedIDiscreteFunctionOperators.cpp
@@ -58,8 +58,8 @@ applyUnaryOperation(const std::shared_ptr<const IDiscreteFunction>& f)
       }
     }
     case ASTNodeDataType::matrix_t: {
-      Assert(f->dataType().nbRows() == f->dataType().nbColumns());
-      switch (f->dataType().nbRows()) {
+      Assert(f->dataType().numberOfRows() == f->dataType().numberOfColumns());
+      switch (f->dataType().numberOfRows()) {
       case 1: {
         auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
         return applyUnaryOperation<UnaryOperatorT>(fh);
@@ -205,8 +205,8 @@ innerCompositionLaw(const std::shared_ptr<const IDiscreteFunction>& f,
   }
   case ASTNodeDataType::matrix_t: {
     Assert(f->descriptor().type() == DiscreteFunctionType::P0);
-    Assert(f->dataType().nbRows() == f->dataType().nbColumns());
-    switch (f->dataType().nbRows()) {
+    Assert(f->dataType().numberOfRows() == f->dataType().numberOfColumns());
+    switch (f->dataType().numberOfRows()) {
     case 1: {
       auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
       auto gh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*g);
@@ -350,9 +350,9 @@ applyBinaryOperation(const DiscreteFunctionT& fh, const std::shared_ptr<const ID
     }
   }
   case ASTNodeDataType::matrix_t: {
-    Assert(g->dataType().nbRows() == g->dataType().nbColumns());
+    Assert(g->dataType().numberOfRows() == g->dataType().numberOfColumns());
     if constexpr (std::is_same_v<lhs_data_type, double> and std::is_same_v<language::multiply_op, BinOperatorT>) {
-      switch (g->dataType().nbRows()) {
+      switch (g->dataType().numberOfRows()) {
       case 1: {
         auto gh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*g);
 
@@ -397,8 +397,8 @@ applyBinaryOperation(const std::shared_ptr<const IDiscreteFunction>& f,
     return applyBinaryOperation<BinOperatorT, Dimension>(fh, g);
   }
   case ASTNodeDataType::matrix_t: {
-    Assert(f->dataType().nbRows() == f->dataType().nbColumns());
-    switch (f->dataType().nbRows()) {
+    Assert(f->dataType().numberOfRows() == f->dataType().numberOfColumns());
+    switch (f->dataType().numberOfRows()) {
     case 1: {
       auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
 
@@ -621,9 +621,9 @@ applyBinaryOperationWithLeftConstant(const DataType& a, const std::shared_ptr<co
     }
   }
   case ASTNodeDataType::matrix_t: {
-    Assert(f->dataType().nbRows() == f->dataType().nbColumns());
+    Assert(f->dataType().numberOfRows() == f->dataType().numberOfColumns());
     if constexpr (is_tiny_matrix_v<DataType>) {
-      switch (f->dataType().nbRows()) {
+      switch (f->dataType().numberOfRows()) {
       case 1: {
         if constexpr (std::is_same_v<DataType, TinyMatrix<1>>) {
           auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
@@ -653,7 +653,7 @@ applyBinaryOperationWithLeftConstant(const DataType& a, const std::shared_ptr<co
       }
       }
     } else {
-      switch (f->dataType().nbRows()) {
+      switch (f->dataType().numberOfRows()) {
       case 1: {
         auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
         return applyBinaryOperationWithLeftConstant<BinOperatorT>(a, fh);
@@ -747,9 +747,9 @@ applyBinaryOperationWithRightConstant(const std::shared_ptr<const IDiscreteFunct
     return applyBinaryOperationWithRightConstant<BinOperatorT>(fh, a);
   }
   case ASTNodeDataType::matrix_t: {
-    Assert(f->dataType().nbRows() == f->dataType().nbColumns());
+    Assert(f->dataType().numberOfRows() == f->dataType().numberOfColumns());
     if constexpr (is_tiny_matrix_v<DataType>) {
-      switch (f->dataType().nbRows()) {
+      switch (f->dataType().numberOfRows()) {
       case 1: {
         if constexpr (std::is_same_v<DataType, TinyMatrix<1>>) {
           auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
@@ -779,7 +779,7 @@ applyBinaryOperationWithRightConstant(const std::shared_ptr<const IDiscreteFunct
       }
       }
     } else {
-      switch (f->dataType().nbRows()) {
+      switch (f->dataType().numberOfRows()) {
       case 1: {
         auto fh = dynamic_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>&>(*f);
         return applyBinaryOperationWithRightConstant<BinOperatorT>(fh, a);
diff --git a/src/language/utils/EmbeddedIDiscreteFunctionUtils.hpp b/src/language/utils/EmbeddedIDiscreteFunctionUtils.hpp
index 9321c3273d7955e77934f9f4233ae3603cf14990..981cd8be9ca166038b5aa4b913dae63488868b64 100644
--- a/src/language/utils/EmbeddedIDiscreteFunctionUtils.hpp
+++ b/src/language/utils/EmbeddedIDiscreteFunctionUtils.hpp
@@ -35,8 +35,8 @@ isSameDiscretization(const IDiscreteFunction& f, const IDiscreteFunction& g)
       return f.dataType().dimension() == g.dataType().dimension();
     }
     case ASTNodeDataType::matrix_t: {
-      return (f.dataType().nbRows() == g.dataType().nbRows()) and
-             (f.dataType().nbColumns() == g.dataType().nbColumns());
+      return (f.dataType().numberOfRows() == g.dataType().numberOfRows()) and
+             (f.dataType().numberOfColumns() == g.dataType().numberOfColumns());
     }
     default: {
       throw UnexpectedError("invalid data type " + operand_type_name(f));
diff --git a/src/language/utils/EmbedderTable.hpp b/src/language/utils/EmbedderTable.hpp
index 60441cec257aee69afc0caa72faf9a487fc736d0..68e1ddb5243e7c954745842e9e7d1e13677fcbca 100644
--- a/src/language/utils/EmbedderTable.hpp
+++ b/src/language/utils/EmbedderTable.hpp
@@ -21,7 +21,8 @@ class EmbedderTable
   }
 
   PUGS_INLINE
-  const std::shared_ptr<EmbedderT>& operator[](size_t embedder_id) const
+  const std::shared_ptr<EmbedderT>&
+  operator[](size_t embedder_id) const
   {
     Assert(embedder_id < m_embedder_list.size());
     return m_embedder_list[embedder_id];
diff --git a/src/language/utils/PugsFunctionAdapter.hpp b/src/language/utils/PugsFunctionAdapter.hpp
index b6d3a259dbb676d5f1259c058e0ea1f36fb925fd..3047652e3017fb2cd193b799a8edf454e3e4c22b 100644
--- a/src/language/utils/PugsFunctionAdapter.hpp
+++ b/src/language/utils/PugsFunctionAdapter.hpp
@@ -209,7 +209,7 @@ class PugsFunctionAdapter<OutputType(InputType...)>
           };
         } else {
           // If this point is reached must be a 0 vector
-          return [](DataVariant&&) -> OutputType { return OutputType{ZeroType{}}; };
+          return [](DataVariant &&) -> OutputType { return OutputType{ZeroType{}}; };
         }
       }
       case ASTNodeDataType::double_t: {
@@ -236,8 +236,8 @@ class PugsFunctionAdapter<OutputType(InputType...)>
           AggregateDataVariant& v = std::get<AggregateDataVariant>(result);
           OutputType x;
 
-          for (size_t i = 0, l = 0; i < x.nbRows(); ++i) {
-            for (size_t j = 0; j < x.nbColumns(); ++j, ++l) {
+          for (size_t i = 0, l = 0; i < x.numberOfRows(); ++i) {
+            for (size_t j = 0; j < x.numberOfColumns(); ++j, ++l) {
               std::visit(
                 [&](auto&& Aij) {
                   using Aij_T = std::decay_t<decltype(Aij)>;
@@ -288,7 +288,7 @@ class PugsFunctionAdapter<OutputType(InputType...)>
           };
         } else {
           // If this point is reached must be a 0 matrix
-          return [](DataVariant&&) -> OutputType { return OutputType{ZeroType{}}; };
+          return [](DataVariant &&) -> OutputType { return OutputType{ZeroType{}}; };
         }
       }
       case ASTNodeDataType::double_t: {
diff --git a/src/mesh/ItemArray.hpp b/src/mesh/ItemArray.hpp
index 1a2b004c9533921ab6531b6fa73c9a955badff57..5a16861a37b5642ba10977d8c9e2d5ecd25fd194 100644
--- a/src/mesh/ItemArray.hpp
+++ b/src/mesh/ItemArray.hpp
@@ -109,7 +109,7 @@ class ItemArray
   numberOfItems() const noexcept(NO_ASSERT)
   {
     Assert(this->isBuilt());
-    return m_values.nbRows();
+    return m_values.numberOfRows();
   }
 
   PUGS_INLINE
@@ -117,7 +117,7 @@ class ItemArray
   sizeOfArrays() const
   {
     Assert(this->isBuilt());
-    return m_values.nbColumns();
+    return m_values.numberOfColumns();
   }
 
   template <typename DataType2>
@@ -131,11 +131,11 @@ class ItemArray
     static_assert(((std::is_const_v<DataType2> and std::is_const_v<DataType>) or not std::is_const_v<DataType2>),
                   "Cannot assign ItemArray of const to ItemArray of non-const");
 
-    Assert((table.nbRows() * table.nbColumns() == 0) or this->isBuilt(),
+    Assert((table.numberOfRows() * table.numberOfColumns() == 0) or this->isBuilt(),
            "Cannot assign array of arrays to a non-built ItemArray\n");
 
-    Assert(this->numberOfItems() == table.nbRows(), "Cannot assign a table of a different dimensions\n");
-    Assert(this->sizeOfArrays() == table.nbColumns(), "Cannot assign a table of a different dimensions\n");
+    Assert(this->numberOfItems() == table.numberOfRows(), "Cannot assign a table of a different dimensions\n");
+    Assert(this->sizeOfArrays() == table.numberOfColumns(), "Cannot assign a table of a different dimensions\n");
 
     m_values = table;
 
diff --git a/src/mesh/SubItemArrayPerItem.hpp b/src/mesh/SubItemArrayPerItem.hpp
index 501762ea6270b7ebf59b26c4afdea6edd552cc3e..9fd488bc5e6ebe3ea189368de8eeb67073e590ec 100644
--- a/src/mesh/SubItemArrayPerItem.hpp
+++ b/src/mesh/SubItemArrayPerItem.hpp
@@ -100,7 +100,7 @@ class SubItemArrayPerItem
   {
     static_assert(std::is_integral_v<ArrayIndexType>, "index must be an integral type");
     Assert(this->isBuilt());
-    Assert(static_cast<size_t>(i) < m_values.nbRows());
+    Assert(static_cast<size_t>(i) < m_values.numberOfRows());
     return m_values[i];
   }
 
@@ -109,7 +109,7 @@ class SubItemArrayPerItem
   numberOfArrays() const noexcept(NO_ASSERT)
   {
     Assert(this->isBuilt());
-    return m_values.nbRows();
+    return m_values.numberOfRows();
   }
 
   PUGS_INLINE
@@ -125,7 +125,7 @@ class SubItemArrayPerItem
   sizeOfArrays() const noexcept(NO_ASSERT)
   {
     Assert(this->isBuilt());
-    return m_values.nbColumns();
+    return m_values.numberOfColumns();
   }
 
   template <typename IndexType>
diff --git a/src/output/GnuplotWriter.cpp b/src/output/GnuplotWriter.cpp
index 5cb59553a54df6f1b7c173066079110058c84330..324620fd67f3330bd92958fd8df8a8ccadfc5088 100644
--- a/src/output/GnuplotWriter.cpp
+++ b/src/output/GnuplotWriter.cpp
@@ -64,8 +64,8 @@ GnuplotWriter::_writePreamble(const OutputNamedItemDataSet& output_named_item_da
               fout << ' ' << i++ << ':' << name << '[' << j << ']';
             }
           } else if constexpr (is_tiny_matrix_v<DataType>) {
-            for (size_t j = 0; j < DataType{}.nbRows(); ++j) {
-              for (size_t k = 0; k < DataType{}.nbColumns(); ++k) {
+            for (size_t j = 0; j < DataType{}.numberOfRows(); ++j) {
+              for (size_t k = 0; k < DataType{}.numberOfColumns(); ++k) {
                 fout << ' ' << i++ << ':' << name << '(' << j << ',' << k << ')';
               }
             }
@@ -101,8 +101,8 @@ GnuplotWriter::_writeCellData(const CellValue<DataType>& cell_value, CellId cell
       fout << ' ' << value[i];
     }
   } else if constexpr (is_tiny_matrix_v<std::decay_t<DataType>>) {
-    for (size_t i = 0; i < value.nbRows(); ++i) {
-      for (size_t j = 0; j < value.nbColumns(); ++j) {
+    for (size_t i = 0; i < value.numberOfRows(); ++i) {
+      for (size_t j = 0; j < value.numberOfColumns(); ++j) {
         fout << ' ' << value(i, j);
       }
     }
@@ -209,8 +209,8 @@ GnuplotWriter::_writeNodeData(const NodeValue<DataType>& node_value, NodeId node
       fout << ' ' << value[i];
     }
   } else if constexpr (is_tiny_matrix_v<std::decay_t<DataType>>) {
-    for (size_t i = 0; i < value.nbRows(); ++i) {
-      for (size_t j = 0; j < value.nbColumns(); ++j) {
+    for (size_t i = 0; i < value.numberOfRows(); ++i) {
+      for (size_t j = 0; j < value.numberOfColumns(); ++j) {
         fout << ' ' << value(i, j);
       }
     }
diff --git a/src/output/GnuplotWriter1D.cpp b/src/output/GnuplotWriter1D.cpp
index 31320054e6f244e9e0771190c539eecd733d66ee..a57405d3aabc4ef23aefd6bd2b5f74f2f1681fa3 100644
--- a/src/output/GnuplotWriter1D.cpp
+++ b/src/output/GnuplotWriter1D.cpp
@@ -74,8 +74,8 @@ GnuplotWriter1D::_writePreamble(const OutputNamedItemDataSet& output_named_item_
               fout << ' ' << i++ << ':' << name << '[' << j << ']';
             }
           } else if constexpr (is_tiny_matrix_v<DataType>) {
-            for (size_t j = 0; j < DataType{}.nbRows(); ++j) {
-              for (size_t k = 0; k < DataType{}.nbColumns(); ++k) {
+            for (size_t j = 0; j < DataType{}.numberOfRows(); ++j) {
+              for (size_t k = 0; k < DataType{}.numberOfColumns(); ++k) {
                 fout << ' ' << i++ << ':' << name << '(' << j << ',' << k << ')';
               }
             }
@@ -199,8 +199,8 @@ GnuplotWriter1D::_writeItemDatas(const std::shared_ptr<const MeshType>& mesh,
                   }
                 } else if constexpr (is_tiny_matrix_v<DataT>) {
                   size_t k = number_of_columns * index + column_number;
-                  for (size_t i = 0; i < DataT{}.nbRows(); ++i) {
-                    for (size_t j = 0; j < DataT{}.nbColumns(); ++j) {
+                  for (size_t i = 0; i < DataT{}.numberOfRows(); ++i) {
+                    for (size_t j = 0; j < DataT{}.numberOfColumns(); ++j) {
                       values[k++] = item_data[item_id](i, j);
                     }
                   }
diff --git a/src/output/WriterBase.cpp b/src/output/WriterBase.cpp
index 40d08b305094c6c33576181a9d730e579656497e..21589e732ecde0a85491438ae7dba259b8ed3060 100644
--- a/src/output/WriterBase.cpp
+++ b/src/output/WriterBase.cpp
@@ -85,8 +85,8 @@ WriterBase::_register(const std::string& name,
                   IDiscreteFunction::HandledItemDataType::vector) {
       throw UnexpectedError("invalid data type for vector data");
     } else {
-      Assert(data_type.nbRows() == data_type.nbColumns(), "invalid matrix dimensions");
-      switch (data_type.nbRows()) {
+      Assert(data_type.numberOfRows() == data_type.numberOfColumns(), "invalid matrix dimensions");
+      switch (data_type.numberOfRows()) {
       case 1: {
         _register(name,
                   dynamic_cast<const DiscreteFunctionType<Dimension, TinyMatrix<1, double>>&>(i_discrete_function),
diff --git a/src/scheme/DiscreteFunctionInterpoler.cpp b/src/scheme/DiscreteFunctionInterpoler.cpp
index c8eeaf94cb8d4f1037b28ebf65d377660464c093..11b19835eab3af91c0ea125359364831916cbc18 100644
--- a/src/scheme/DiscreteFunctionInterpoler.cpp
+++ b/src/scheme/DiscreteFunctionInterpoler.cpp
@@ -60,8 +60,8 @@ DiscreteFunctionInterpoler::_interpolate() const
     }
   }
   case ASTNodeDataType::matrix_t: {
-    Assert(data_type.nbColumns() == data_type.nbRows(), "undefined matrix type");
-    switch (data_type.nbColumns()) {
+    Assert(data_type.numberOfColumns() == data_type.numberOfRows(), "undefined matrix type");
+    switch (data_type.numberOfColumns()) {
     case 1: {
       return this->_interpolate<Dimension, TinyMatrix<1>>();
     }
diff --git a/src/scheme/DiscreteFunctionUtils.cpp b/src/scheme/DiscreteFunctionUtils.cpp
index 56453a746a19b9ee999fe1548d7067250e2884eb..6d2e62da4fcdd9d1c785b01894ca3d4776dfae8c 100644
--- a/src/scheme/DiscreteFunctionUtils.cpp
+++ b/src/scheme/DiscreteFunctionUtils.cpp
@@ -53,12 +53,12 @@ shallowCopy(const std::shared_ptr<const Mesh<Connectivity<Dimension>>>& mesh,
       }
     }
     case ASTNodeDataType::matrix_t: {
-      if (discrete_function->dataType().nbRows() != discrete_function->dataType().nbColumns()) {
+      if (discrete_function->dataType().numberOfRows() != discrete_function->dataType().numberOfColumns()) {
         throw UnexpectedError(
-          "invalid data matrix dimensions: " + std::to_string(discrete_function->dataType().nbRows()) + "x" +
-          std::to_string(discrete_function->dataType().nbColumns()));
+          "invalid data matrix dimensions: " + std::to_string(discrete_function->dataType().numberOfRows()) + "x" +
+          std::to_string(discrete_function->dataType().numberOfColumns()));
       }
-      switch (discrete_function->dataType().nbRows()) {
+      switch (discrete_function->dataType().numberOfRows()) {
       case 1: {
         return shallowCopy(mesh, std::dynamic_pointer_cast<const DiscreteFunctionP0<Dimension, TinyMatrix<1>>>(
                                    discrete_function));
@@ -73,8 +73,8 @@ shallowCopy(const std::shared_ptr<const Mesh<Connectivity<Dimension>>>& mesh,
       }
       default: {
         throw UnexpectedError(
-          "invalid data matrix dimensions: " + std::to_string(discrete_function->dataType().nbRows()) + "x" +
-          std::to_string(discrete_function->dataType().nbColumns()));
+          "invalid data matrix dimensions: " + std::to_string(discrete_function->dataType().numberOfRows()) + "x" +
+          std::to_string(discrete_function->dataType().numberOfColumns()));
       }
       }
     }
diff --git a/src/utils/Table.hpp b/src/utils/Table.hpp
index 02c98c0b1f557bf401f876a9dbddbc7a15cbae6c..8dae32b97b0d15a99256fd38c4f4f7c5ecf29588 100644
--- a/src/utils/Table.hpp
+++ b/src/utils/Table.hpp
@@ -21,12 +21,12 @@ class [[nodiscard]] Table
   friend Table<std::add_const_t<DataType>>;
 
  public:
-  PUGS_INLINE size_t nbRows() const noexcept
+  PUGS_INLINE size_t numberOfRows() const noexcept
   {
     return m_values.extent(0);
   }
 
-  PUGS_INLINE size_t nbColumns() const noexcept
+  PUGS_INLINE size_t numberOfColumns() const noexcept
   {
     return m_values.extent(1);
   }
@@ -34,13 +34,13 @@ class [[nodiscard]] Table
   PUGS_INLINE
   Array<DataType> operator[](index_type i) const
   {
-    Assert(i < this->nbRows());
+    Assert(i < this->numberOfRows());
     return encapsulate(Kokkos::View<DataType*>(m_values, i, Kokkos::ALL));
   }
 
   friend PUGS_INLINE Table<std::remove_const_t<DataType>> copy(const Table<DataType>& source)
   {
-    Table<std::remove_const_t<DataType>> image(source.nbRows(), source.nbColumns());
+    Table<std::remove_const_t<DataType>> image(source.numberOfRows(), source.numberOfColumns());
     Kokkos::deep_copy(image.m_values, source.m_values);
 
     return image;
@@ -49,8 +49,8 @@ class [[nodiscard]] Table
   friend PUGS_INLINE void copy_to(const Table<DataType>& source,
                                   const Table<std::remove_const_t<DataType>>& destination)
   {
-    Assert(source.nbRows() == destination.nbRows());
-    Assert(source.nbColumns() == destination.nbColumns());
+    Assert(source.numberOfRows() == destination.numberOfRows());
+    Assert(source.numberOfColumns() == destination.numberOfColumns());
     Kokkos::deep_copy(destination.m_values, source.m_values);
   }
 
@@ -66,8 +66,8 @@ class [[nodiscard]] Table
 
   PUGS_INLINE DataType& operator()(index_type i, index_type j) const noexcept(NO_ASSERT)
   {
-    Assert(i < this->nbRows());
-    Assert(j < this->nbColumns());
+    Assert(i < this->numberOfRows());
+    Assert(j < this->numberOfColumns());
     return m_values(i, j);
   }
 
@@ -147,10 +147,10 @@ subTable(const Table<DataType>& table,
          typename Table<DataType>::index_type column_begin,
          typename Table<DataType>::index_type column_size)
 {
-  Assert(row_begin < table.nbRows());
-  Assert(row_begin + row_size <= table.nbRows());
-  Assert(column_begin < table.nbColumns());
-  Assert(column_begin + column_size <= table.nbColumns());
+  Assert(row_begin < table.numberOfRows());
+  Assert(row_begin + row_size <= table.numberOfRows());
+  Assert(column_begin < table.numberOfColumns());
+  Assert(column_begin + column_size <= table.numberOfColumns());
   return encapsulate(Kokkos::View<DataType**>(table.m_values, std::make_pair(row_begin, row_begin + row_size),
                                               std::make_pair(column_begin, column_begin + column_size)));
 }
diff --git a/tests/test_ASTNodeDataType.cpp b/tests/test_ASTNodeDataType.cpp
index 9316c27dbcf09f0f114500a6c04ca3dad1c8806b..023ec9963bcd66286c9ffcfcadbc4fb3b2abdbee 100644
--- a/tests/test_ASTNodeDataType.cpp
+++ b/tests/test_ASTNodeDataType.cpp
@@ -213,8 +213,8 @@ TEST_CASE("ASTNodeDataType", "[language]")
     SECTION("good node")
     {
       REQUIRE(getMatrixDataType(*type_node) == ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3, 3));
-      REQUIRE(getMatrixDataType(*type_node).nbRows() == 3);
-      REQUIRE(getMatrixDataType(*type_node).nbColumns() == 3);
+      REQUIRE(getMatrixDataType(*type_node).numberOfRows() == 3);
+      REQUIRE(getMatrixDataType(*type_node).numberOfColumns() == 3);
     }
 
     SECTION("bad node type")
diff --git a/tests/test_CRSMatrix.cpp b/tests/test_CRSMatrix.cpp
index 0f748fb37971fefb53cdc881d7452607c6dd3e6e..d6bfdaba966c0c36a5245af457954a6f53a0919d 100644
--- a/tests/test_CRSMatrix.cpp
+++ b/tests/test_CRSMatrix.cpp
@@ -26,6 +26,7 @@ TEST_CASE("CRSMatrix", "[algebra]")
     CRSMatrix<int, uint8_t> A{S};
 
     REQUIRE(A.numberOfRows() == S.numberOfRows());
+    REQUIRE(A.numberOfColumns() == S.numberOfColumns());
   }
 
   SECTION("matrix vector product (simple)")
@@ -43,7 +44,7 @@ TEST_CASE("CRSMatrix", "[algebra]")
 
     CRSMatrix<int, uint8_t> A{S};
 
-    Vector<int> x{A.numberOfRows()};
+    Vector<int> x{A.numberOfColumns()};
     x    = 0;
     x[0] = 1;
 
@@ -117,7 +118,7 @@ TEST_CASE("CRSMatrix", "[algebra]")
 
     CRSMatrix<int, uint8_t> A{S};
 
-    Vector<int> x{A.numberOfRows()};
+    Vector<int> x{A.numberOfColumns()};
     x[0] = 1;
     x[1] = 2;
     x[2] = 3;
diff --git a/tests/test_InterpolateItemArray.cpp b/tests/test_InterpolateItemArray.cpp
index cf65afdf42c803b15900be7fc96fdad23e9c230f..5e0bbd962bd9c24165956b9e17a223f80a187055 100644
--- a/tests/test_InterpolateItemArray.cpp
+++ b/tests/test_InterpolateItemArray.cpp
@@ -241,8 +241,8 @@ let scalar_non_linear_3d: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
   SECTION("interpolate on items list")
   {
     auto same_cell_value = [](auto interpolated, auto reference) -> bool {
-      for (size_t i = 0; i < interpolated.nbRows(); ++i) {
-        for (size_t j = 0; j < interpolated.nbColumns(); ++j) {
+      for (size_t i = 0; i < interpolated.numberOfRows(); ++i) {
+        for (size_t j = 0; j < interpolated.numberOfColumns(); ++j) {
           if (interpolated[i][j] != reference[i][j]) {
             return false;
           }
diff --git a/tests/test_ItemArray.cpp b/tests/test_ItemArray.cpp
index 2a76275324c4922ed0bad182ebcfa106c3d9b462..17337200786737dcc7b98c75eb18021cfd62a82d 100644
--- a/tests/test_ItemArray.cpp
+++ b/tests/test_ItemArray.cpp
@@ -120,8 +120,8 @@ TEST_CASE("ItemArray", "[mesh]")
     Table<size_t> table{cell_array.numberOfItems(), cell_array.sizeOfArrays()};
     {
       size_t k = 0;
-      for (size_t i = 0; i < table.nbRows(); ++i) {
-        for (size_t j = 0; j < table.nbColumns(); ++j) {
+      for (size_t i = 0; i < table.numberOfRows(); ++i) {
+        for (size_t j = 0; j < table.numberOfColumns(); ++j) {
           table(i, j) = k++;
         }
       }
diff --git a/tests/test_SparseMatrixDescriptor.cpp b/tests/test_SparseMatrixDescriptor.cpp
index 8bd0c37c5cc9e294462fc92a759980dbc7a4a336..77bc890f7c4a53ea170de08bebb83de9b7e0fbed 100644
--- a/tests/test_SparseMatrixDescriptor.cpp
+++ b/tests/test_SparseMatrixDescriptor.cpp
@@ -51,10 +51,11 @@ TEST_CASE("SparseMatrixDescriptor", "[algebra]")
     }
   }
 
-  SECTION("number of columns")
+  SECTION("matrix size")
   {
     SparseMatrixDescriptor<int, uint8_t> S{5};
     REQUIRE(S.numberOfRows() == 5);
+    REQUIRE(S.numberOfColumns() == 5);
   }
 
   SECTION("location operators")
diff --git a/tests/test_SubItemArrayPerItem.cpp b/tests/test_SubItemArrayPerItem.cpp
index b03353f0ebbff8fe3d6c5634020d1ea739668f57..d1cb315046b5450e975b7ced5e795103bb6453ad 100644
--- a/tests/test_SubItemArrayPerItem.cpp
+++ b/tests/test_SubItemArrayPerItem.cpp
@@ -80,7 +80,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
           for (CellId cell_id = 0; cell_id < connectivity.numberOfCells(); ++cell_id) {
             is_correct &=
               (cell_to_node_matrix[cell_id].size() == node_array_per_cell.numberOfSubArrays(cell_id)) and
-              (node_array_per_cell.itemTable(cell_id).nbRows() == node_array_per_cell.numberOfSubArrays(cell_id));
+              (node_array_per_cell.itemTable(cell_id).numberOfRows() == node_array_per_cell.numberOfSubArrays(cell_id));
           }
           REQUIRE(is_correct);
         }
@@ -89,8 +89,8 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
         {
           bool is_correct = true;
           for (CellId cell_id = 0; cell_id < connectivity.numberOfCells(); ++cell_id) {
-            is_correct &=
-              (const_node_array_per_cell.itemTable(cell_id).nbRows() == node_array_per_cell.numberOfSubArrays(cell_id));
+            is_correct &= (const_node_array_per_cell.itemTable(cell_id).numberOfRows() ==
+                           node_array_per_cell.numberOfSubArrays(cell_id));
           }
           REQUIRE(is_correct);
         }
@@ -576,7 +576,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
         size_t i     = 0;
         for (CellId cell_id = 0; cell_id < connectivity.numberOfCells(); ++cell_id) {
           const auto& cell_table = const_edge_arrays_per_cell.itemTable(cell_id);
-          for (size_t i_edge = 0; i_edge < cell_table.nbRows(); ++i_edge) {
+          for (size_t i_edge = 0; i_edge < cell_table.numberOfRows(); ++i_edge) {
             const auto& array = cell_table[i_edge];
             for (size_t l = 0; l < array.size(); ++l, ++i) {
               is_same &= (array[l] == i * i + 1);
@@ -640,7 +640,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
         size_t i     = 0;
         for (FaceId face_id = 0; face_id < connectivity.numberOfFaces(); ++face_id) {
           const auto& face_table = const_cell_arrays_per_face.itemTable(face_id);
-          for (size_t i_cell = 0; i_cell < face_table.nbRows(); ++i_cell) {
+          for (size_t i_cell = 0; i_cell < face_table.numberOfRows(); ++i_cell) {
             const auto& array = face_table[i_cell];
             for (size_t l = 0; l < array.size(); ++l, ++i) {
               is_same &= (array[l] == 3 * i + 1);
@@ -703,7 +703,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
         size_t i     = 0;
         for (NodeId node_id = 0; node_id < connectivity.numberOfNodes(); ++node_id) {
           const auto& node_table = const_face_arrays_per_node.itemTable(node_id);
-          for (size_t i_face = 0; i_face < node_table.nbRows(); ++i_face) {
+          for (size_t i_face = 0; i_face < node_table.numberOfRows(); ++i_face) {
             const auto& array = node_table[i_face];
             for (size_t l = 0; l < array.size(); ++l, ++i) {
               is_same &= (array[l] == 3 + i * i);
@@ -900,9 +900,9 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
       if (connectivity.numberOfFaces() > 0) {
         FaceId face_id         = 0;
         const auto& face_table = cell_array_per_face.itemTable(face_id);
-        REQUIRE_THROWS_AS(cell_array_per_face(face_id, face_table.nbRows()), AssertError);
-        REQUIRE_THROWS_AS(face_table[face_table.nbRows()], AssertError);
-        REQUIRE_THROWS_AS(cell_array_per_face.itemTable(face_id)[face_table.nbRows()], AssertError);
+        REQUIRE_THROWS_AS(cell_array_per_face(face_id, face_table.numberOfRows()), AssertError);
+        REQUIRE_THROWS_AS(face_table[face_table.numberOfRows()], AssertError);
+        REQUIRE_THROWS_AS(cell_array_per_face.itemTable(face_id)[face_table.numberOfRows()], AssertError);
         REQUIRE_THROWS_AS(cell_array_per_face.itemTable(face_id)[0][cell_array_per_face.sizeOfArrays()], AssertError);
         REQUIRE_THROWS_AS(cell_array_per_face.itemTable(face_id)[0][cell_array_per_face.sizeOfArrays()] = 2,
                           AssertError);
@@ -916,9 +916,9 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
       if (connectivity.numberOfNodes() > 0) {
         NodeId node_id         = 0;
         const auto& node_table = face_array_per_node.itemTable(node_id);
-        REQUIRE_THROWS_AS(face_array_per_node(node_id, node_table.nbRows()), AssertError);
-        REQUIRE_THROWS_AS(node_table[node_table.nbRows()], AssertError);
-        REQUIRE_THROWS_AS(face_array_per_node.itemTable(node_id)[node_table.nbRows()], AssertError);
+        REQUIRE_THROWS_AS(face_array_per_node(node_id, node_table.numberOfRows()), AssertError);
+        REQUIRE_THROWS_AS(node_table[node_table.numberOfRows()], AssertError);
+        REQUIRE_THROWS_AS(face_array_per_node.itemTable(node_id)[node_table.numberOfRows()], AssertError);
         REQUIRE_THROWS_AS(face_array_per_node.itemTable(node_id)[0][face_array_per_node.sizeOfArrays()], AssertError);
         REQUIRE_THROWS_AS(face_array_per_node.itemTable(node_id)[0][face_array_per_node.sizeOfArrays()] = 2,
                           AssertError);
@@ -932,9 +932,9 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
       if (connectivity.numberOfCells() > 0) {
         CellId cell_id         = 0;
         const auto& cell_table = edge_array_per_cell.itemTable(cell_id);
-        REQUIRE_THROWS_AS(edge_array_per_cell(cell_id, cell_table.nbRows()), AssertError);
-        REQUIRE_THROWS_AS(cell_table[cell_table.nbRows()], AssertError);
-        REQUIRE_THROWS_AS(edge_array_per_cell.itemTable(cell_id)[cell_table.nbRows()], AssertError);
+        REQUIRE_THROWS_AS(edge_array_per_cell(cell_id, cell_table.numberOfRows()), AssertError);
+        REQUIRE_THROWS_AS(cell_table[cell_table.numberOfRows()], AssertError);
+        REQUIRE_THROWS_AS(edge_array_per_cell.itemTable(cell_id)[cell_table.numberOfRows()], AssertError);
         REQUIRE_THROWS_AS(edge_array_per_cell.itemTable(cell_id)[0][edge_array_per_cell.sizeOfArrays()], AssertError);
         REQUIRE_THROWS_AS(edge_array_per_cell.itemTable(cell_id)[0][edge_array_per_cell.sizeOfArrays()] == 2,
                           AssertError);
@@ -948,9 +948,9 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
       if (connectivity.numberOfEdges() > 0) {
         EdgeId edge_id         = 0;
         const auto& edge_table = node_array_per_edge.itemTable(edge_id);
-        REQUIRE_THROWS_AS(node_array_per_edge(edge_id, edge_table.nbRows()), AssertError);
-        REQUIRE_THROWS_AS(edge_table[edge_table.nbRows()], AssertError);
-        REQUIRE_THROWS_AS(node_array_per_edge.itemTable(edge_id)[edge_table.nbRows()], AssertError);
+        REQUIRE_THROWS_AS(node_array_per_edge(edge_id, edge_table.numberOfRows()), AssertError);
+        REQUIRE_THROWS_AS(edge_table[edge_table.numberOfRows()], AssertError);
+        REQUIRE_THROWS_AS(node_array_per_edge.itemTable(edge_id)[edge_table.numberOfRows()], AssertError);
         REQUIRE_THROWS_AS(node_array_per_edge.itemTable(edge_id)[0][node_array_per_edge.sizeOfArrays()], AssertError);
         REQUIRE_THROWS_AS(node_array_per_edge.itemTable(edge_id)[0][node_array_per_edge.sizeOfArrays()] = 2,
                           AssertError);
diff --git a/tests/test_Table.cpp b/tests/test_Table.cpp
index 3521476c375dba6a31e57dd2f55ad09430026d8a..5e738867a592c3f06a9fe8ac7bd958dbcf390e4e 100644
--- a/tests/test_Table.cpp
+++ b/tests/test_Table.cpp
@@ -13,15 +13,15 @@ template class Table<int>;
 TEST_CASE("Table", "[utils]")
 {
   Table<int> a(4, 3);
-  REQUIRE(a.nbRows() == 4);
-  REQUIRE(a.nbColumns() == 3);
+  REQUIRE(a.numberOfRows() == 4);
+  REQUIRE(a.numberOfColumns() == 3);
   REQUIRE(a[0].size() == 3);
   REQUIRE(a[1].size() == 3);
   REQUIRE(a[2].size() == 3);
   REQUIRE(a[3].size() == 3);
 
-  for (size_t i = 0; i < a.nbRows(); ++i) {
-    for (size_t j = 0; j < a.nbColumns(); ++j) {
+  for (size_t i = 0; i < a.numberOfRows(); ++i) {
+    for (size_t j = 0; j < a.numberOfColumns(); ++j) {
       a(i, j) = 2 * i + j;
     }
   }
@@ -138,7 +138,7 @@ TEST_CASE("Table", "[utils]")
              (c(0, 1) == 2) and (c(1, 1) == 2) and (c(2, 1) == 2) and (c(3, 1) == 2) and   //
              (c(0, 2) == 2) and (c(1, 2) == 2) and (c(2, 2) == 2) and (c(3, 2) == 2)));
 
-    Table<int> d{a.nbRows(), a.nbColumns()};
+    Table<int> d{a.numberOfRows(), a.numberOfColumns()};
     copy_to(a, d);
 
     REQUIRE(((a(0, 0) == 0) and (a(1, 0) == 2) and (a(2, 0) == 4) and (a(3, 0) == 6) and   //
@@ -168,10 +168,10 @@ TEST_CASE("Table", "[utils]")
 
       Table table = encapsulate(kokkos_view);
 
-      REQUIRE(table.nbRows() == kokkos_view.extent(0));
-      REQUIRE(table.nbColumns() == kokkos_view.extent(1));
-      for (size_t i = 0; i < table.nbRows(); ++i) {
-        for (size_t j = 0; j < table.nbColumns(); ++j) {
+      REQUIRE(table.numberOfRows() == kokkos_view.extent(0));
+      REQUIRE(table.numberOfColumns() == kokkos_view.extent(1));
+      for (size_t i = 0; i < table.numberOfRows(); ++i) {
+        for (size_t j = 0; j < table.numberOfColumns(); ++j) {
           REQUIRE(&table(i, j) == &kokkos_view(i, j));
         }
       }
@@ -189,13 +189,13 @@ TEST_CASE("Table", "[utils]")
   {
     SECTION("wrong row number")
     {
-      Table<int> b{2 * a.nbRows(), a.nbColumns()};
+      Table<int> b{2 * a.numberOfRows(), a.numberOfColumns()};
       REQUIRE_THROWS_AS(copy_to(a, b), AssertError);
     }
 
     SECTION("wrong column number")
     {
-      Table<int> c{a.nbRows(), 2 * a.nbColumns()};
+      Table<int> c{a.numberOfRows(), 2 * a.numberOfColumns()};
       REQUIRE_THROWS_AS(copy_to(a, c), AssertError);
     }
   }
diff --git a/tests/test_TinyMatrix.cpp b/tests/test_TinyMatrix.cpp
index 158512dbf67e80751c362c67385b454a1bd1e5c9..464e78448192f3dacc248d6c7fde8c63338449bb 100644
--- a/tests/test_TinyMatrix.cpp
+++ b/tests/test_TinyMatrix.cpp
@@ -206,16 +206,16 @@ TEST_CASE("TinyMatrix", "[algebra]")
 
   SECTION("checking for sizes")
   {
-    REQUIRE(TinyMatrix<1>{}.nbRows() == 1);
-    REQUIRE(TinyMatrix<1>{}.nbColumns() == 1);
+    REQUIRE(TinyMatrix<1>{}.numberOfRows() == 1);
+    REQUIRE(TinyMatrix<1>{}.numberOfColumns() == 1);
     REQUIRE(TinyMatrix<1>{}.dimension() == 1);
 
-    REQUIRE(TinyMatrix<2>{}.nbRows() == 2);
-    REQUIRE(TinyMatrix<2>{}.nbColumns() == 2);
+    REQUIRE(TinyMatrix<2>{}.numberOfRows() == 2);
+    REQUIRE(TinyMatrix<2>{}.numberOfColumns() == 2);
     REQUIRE(TinyMatrix<2>{}.dimension() == 4);
 
-    REQUIRE(TinyMatrix<3>{}.nbRows() == 3);
-    REQUIRE(TinyMatrix<3>{}.nbColumns() == 3);
+    REQUIRE(TinyMatrix<3>{}.numberOfRows() == 3);
+    REQUIRE(TinyMatrix<3>{}.numberOfColumns() == 3);
     REQUIRE(TinyMatrix<3>{}.dimension() == 9);
   }