diff --git a/MathLib/LinAlg/Eigen/EigenMatrix.h b/MathLib/LinAlg/Eigen/EigenMatrix.h
index 22d523efd1e80e2b0fd8f53c99db014378b14ab5..e8fd6b2bf0683bb8bfb4d46376a202db07db29fd 100644
--- a/MathLib/LinAlg/Eigen/EigenMatrix.h
+++ b/MathLib/LinAlg/Eigen/EigenMatrix.h
@@ -39,23 +39,23 @@ public:
      * @param n the number of rows (that is equal to the number of columns)
      * @param n_nonzero_columns the number of non-zero columns used for preallocation
      */
-    explicit EigenMatrix(std::size_t n, std::size_t n_nonzero_columns = 0) :_mat(n, n)
+    explicit EigenMatrix(IndexType n, IndexType n_nonzero_columns = 0) :_mat(n, n)
     {
         if (n_nonzero_columns > 0)
             _mat.reserve(Eigen::VectorXi::Constant(n, n_nonzero_columns));
     }
 
     /// return the number of rows
-    std::size_t getNumberOfRows() const { return _mat.rows(); }
+    IndexType getNumberOfRows() const { return _mat.rows(); }
 
     /// return the number of columns
-    std::size_t getNumberOfColumns() const { return _mat.cols(); }
+    IndexType getNumberOfColumns() const { return _mat.cols(); }
 
     /// return a start index of the active data range
-    std::size_t getRangeBegin() const  { return 0; }
+    IndexType getRangeBegin() const  { return 0; }
 
     /// return an end index of the active data range
-    std::size_t getRangeEnd() const  { return getNumberOfRows(); }
+    IndexType getRangeEnd() const  { return getNumberOfRows(); }
 
     /// reset data entries to zero.
     void setZero()
diff --git a/MathLib/LinAlg/Eigen/EigenVector.h b/MathLib/LinAlg/Eigen/EigenVector.h
index 8266cdba9e3b160ea77beb9790f7b1bef31a6830..981139dd5952ffb040c00e8b491713fa73b25930 100644
--- a/MathLib/LinAlg/Eigen/EigenVector.h
+++ b/MathLib/LinAlg/Eigen/EigenVector.h
@@ -37,19 +37,19 @@ public:
 
     /// Constructor for initialization of the number of rows
     /// @param length number of rows
-    explicit EigenVector(std::size_t length) : _vec(length) {}
+    explicit EigenVector(IndexType length) : _vec(length) {}
 
     /// copy constructor
     EigenVector(EigenVector const& src) = default;
 
     /// return a vector length
-    std::size_t size() const { return _vec.size(); }
+    IndexType size() const { return _vec.size(); }
 
     /// return a start index of the active data range
-    std::size_t getRangeBegin() const { return 0;}
+    IndexType getRangeBegin() const { return 0;}
 
     /// return an end index of the active data range
-    std::size_t getRangeEnd() const { return size(); }
+    IndexType getRangeEnd() const { return size(); }
 
     // TODO preliminary
     void setZero() { _vec.setZero(); }
diff --git a/MathLib/LinAlg/UnifiedMatrixSetters.cpp b/MathLib/LinAlg/UnifiedMatrixSetters.cpp
index dae45664fffdad24d64544255191c6f3d0a045b4..253d0faea5d55e55824b97bc000d2e3a882e137b 100644
--- a/MathLib/LinAlg/UnifiedMatrixSetters.cpp
+++ b/MathLib/LinAlg/UnifiedMatrixSetters.cpp
@@ -133,8 +133,8 @@ void setMatrix(EigenMatrix& m,
     Eigen::MatrixXd tmp(rows, cols);
 
     auto it = values.begin();
-    for (std::size_t r=0; r<rows; ++r) {
-        for (std::size_t c=0; c<cols; ++c) {
+    for (GlobalIndexType r=0; r<rows; ++r) {
+        for (GlobalIndexType c=0; c<cols; ++c) {
             tmp(r, c) = *(it++);
         }
     }
@@ -157,8 +157,8 @@ void addToMatrix(EigenMatrix& m,
     Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> tmp(rows, cols);
 
     auto it = values.begin();
-    for (std::size_t r=0; r<rows; ++r) {
-        for (std::size_t c=0; c<cols; ++c) {
+    for (GlobalIndexType r=0; r<rows; ++r) {
+        for (GlobalIndexType c=0; c<cols; ++c) {
             tmp(r, c) = *(it++);
         }
     }
diff --git a/ProcessLib/ProcessOutput.cpp b/ProcessLib/ProcessOutput.cpp
index 4f35ad6f4b178d57c80c9ef6024c7f7b686a0e15..7f90dcacb1128f79b6344cf2da1e33786294ed8f 100644
--- a/ProcessLib/ProcessOutput.cpp
+++ b/ProcessLib/ProcessOutput.cpp
@@ -135,8 +135,7 @@ void doProcessOutput(std::string const& file_name,
                     var.fcts.eval_field(x, dof_table, result_cache);
 
             // Copy result
-            for (std::size_t i = 0; i < mesh.getNumberOfNodes(); ++i)
-            {
+            for (GlobalIndexType i = 0; i < nodal_values.size(); ++i) {
                 assert(!std::isnan(nodal_values[i]));
                 (*result)[i] = nodal_values[i];
             }
@@ -155,7 +154,7 @@ void doProcessOutput(std::string const& file_name,
                     var.fcts.eval_residuals(x, dof_table, result_cache);
 
             // Copy result
-            for (std::size_t i = 0; i < mesh.getNumberOfElements(); ++i)
+            for (GlobalIndexType i = 0; i < residuals.size(); ++i)
             {
                 assert(!std::isnan(residuals[i]));
                 (*result)[i] = residuals[i];
diff --git a/Tests/NumLib/TestSerialLinearSolver.cpp b/Tests/NumLib/TestSerialLinearSolver.cpp
index cb97f08ba8bc24e7abc6c5fd98a40d3109dd6852..ab5ab0758f4f332389a3b5474d6410d4054f6ef3 100644
--- a/Tests/NumLib/TestSerialLinearSolver.cpp
+++ b/Tests/NumLib/TestSerialLinearSolver.cpp
@@ -141,7 +141,7 @@ TEST(NumLibSerialLinearSolver, Steady2DdiffusionQuadElem)
 
     // copy solution to double vector
     std::vector<double> solution(x->size());
-    for (std::size_t i = 0; i < x->size(); ++i)
+    for (GlobalIndexType i = 0; i < x->size(); ++i)
         solution[i] = (*x)[i];
 
     ASSERT_ARRAY_NEAR(&ex1.exact_solutions[0], &solution[0], ex1.dim_eqs, 1.e-5);