diff --git a/ProcessLib/Utils/SetOrGetIntegrationPointData.h b/ProcessLib/Utils/SetOrGetIntegrationPointData.h
index 5bce9f39d4616088168a4610849b63b0f4ad69ba..01638bf5e3410a7709448d52de7a39a012c2c762 100644
--- a/ProcessLib/Utils/SetOrGetIntegrationPointData.h
+++ b/ProcessLib/Utils/SetOrGetIntegrationPointData.h
@@ -57,29 +57,15 @@ std::vector<double> const& getIntegrationPointKelvinVectorData(
     return cache;
 }
 
-template <int DisplacementDim, typename IntegrationPointData,
+template <int DisplacementDim, typename IntegrationPointDataVector,
           typename MemberType>
 std::vector<double> getIntegrationPointKelvinVectorData(
-    std::vector<IntegrationPointData,
-                Eigen::aligned_allocator<IntegrationPointData>> const&
-        ip_data_vector,
-    MemberType member)
+    IntegrationPointDataVector const& ip_data_vector, MemberType member)
 {
-    constexpr int kelvin_vector_size =
-        MathLib::KelvinVector::kelvin_vector_dimensions(DisplacementDim);
-    auto const n_integration_points = ip_data_vector.size();
-
     std::vector<double> ip_kelvin_vector_values;
-    auto cache_mat = MathLib::createZeroedMatrix<Eigen::Matrix<
-        double, Eigen::Dynamic, kelvin_vector_size, Eigen::RowMajor>>(
-        ip_kelvin_vector_values, n_integration_points, kelvin_vector_size);
 
-    for (unsigned ip = 0; ip < n_integration_points; ++ip)
-    {
-        auto const& ip_member = ip_data_vector[ip].*member;
-        cache_mat.row(ip) =
-            MathLib::KelvinVector::kelvinVectorToSymmetricTensor(ip_member);
-    }
+    getIntegrationPointKelvinVectorData<DisplacementDim>(
+        ip_data_vector, member, ip_kelvin_vector_values);
 
     return ip_kelvin_vector_values;
 }