diff --git a/MathLib/KelvinVector.h b/MathLib/KelvinVector.h
index 6c31d6321a6407e45671a8f16df140337b288183..30d603b258e92b77ec273727e2b2bf4a5adcf156 100644
--- a/MathLib/KelvinVector.h
+++ b/MathLib/KelvinVector.h
@@ -20,20 +20,20 @@ namespace MathLib
 namespace KelvinVector
 {
 /// Kelvin vector dimensions for given displacement dimension.
-template <int DisplacementDim>
-struct KelvinVectorDimensions;
-
-template <>
-struct KelvinVectorDimensions<2>
-{
-    static int const value = 4;
-};
-
-template <>
-struct KelvinVectorDimensions<3>
+constexpr int kelvin_vector_dimensions(int const displacement_dim)
 {
-    static int const value = 6;
-};
+    if (displacement_dim == 2)
+    {
+        return 4;
+    }
+    else if (displacement_dim == 3)
+    {
+        return 6;
+    }
+    OGS_FATAL(
+        "Cannot convert displacement dimension {} to kelvin vector dimension.",
+        displacement_dim);
+}
 
 //
 // Kelvin vector and matrix templates for given displacement dimension.