diff --git a/MathLib/ODE/OdeSolver.h b/MathLib/ODE/OdeSolver.h
index ffaadf7b29fe93327d6f96d530f80cbf7094ab6c..2500f26e91c92dd5a520927a09e4068ddfd1d489 100644
--- a/MathLib/ODE/OdeSolver.h
+++ b/MathLib/ODE/OdeSolver.h
@@ -40,8 +40,9 @@ public:
 
 	virtual void setIC(const double t0,
 	                   std::array<double, NumEquations> const& y0) = 0;
-	virtual void setIC(const double t0,
-	                   Eigen::Matrix<double, NumEquations, 1> const& y0) = 0;
+	virtual void setIC(
+	    const double t0,
+	    Eigen::Matrix<double, NumEquations, 1, Eigen::ColMajor> const& y0) = 0;
 
 	virtual void preSolve() = 0;
 	virtual void solve(const double t) = 0;
@@ -49,7 +50,7 @@ public:
 	virtual unsigned getNumEquations() const { return NumEquations; }
 	virtual MappedConstVector<NumEquations> getSolution() const = 0;
 	virtual double getTime() const = 0;
-	virtual Eigen::Matrix<double, NumEquations, 1> getYDot(
+	virtual Eigen::Matrix<double, NumEquations, 1, Eigen::ColMajor> getYDot(
 	    const double t, const MappedConstVector<NumEquations>& y) const = 0;
 
 	virtual ~OdeSolver() = default;
diff --git a/MathLib/ODE/OdeSolverFactory.h b/MathLib/ODE/OdeSolverFactory.h
index 3d4d9c1af64b27f2916795be16c4a5a2a1f60dab..435d8326003e92e7f4818e61b66a1d8023545373 100644
--- a/MathLib/ODE/OdeSolverFactory.h
+++ b/MathLib/ODE/OdeSolverFactory.h
@@ -163,7 +163,8 @@ public:
 	}
 
 	void setIC(const double t0,
-	           Eigen::Matrix<double, NumEquations, 1> const& y0) override
+	           Eigen::Matrix<double, NumEquations, 1, Eigen::ColMajor> const&
+	               y0) override
 	{
 		Implementation::setIC(t0, y0.data());
 	}
@@ -176,10 +177,10 @@ public:
 	}
 
 	double getTime() const override { return Implementation::getTime(); }
-	Eigen::Matrix<double, NumEquations, 1> getYDot(
+	Eigen::Matrix<double, NumEquations, 1, Eigen::ColMajor> getYDot(
 	    const double t, const MappedConstVector<NumEquations>& y) const override
 	{
-		Eigen::Matrix<double, NumEquations, 1> y_dot;
+		Eigen::Matrix<double, NumEquations, 1, Eigen::ColMajor> y_dot;
 		Implementation::getYDot(t, y.data(), y_dot.data());
 		return y_dot;
 	}
diff --git a/MathLib/ODE/OdeSolverTypes.h b/MathLib/ODE/OdeSolverTypes.h
index 15d8b31338ae24c40432bfb6dbccb9825d960fde..7c441faf6da306a4532af19b3f06fc16556f7094 100644
--- a/MathLib/ODE/OdeSolverTypes.h
+++ b/MathLib/ODE/OdeSolverTypes.h
@@ -15,10 +15,11 @@
 namespace MathLib
 {
 template <int M, int N>
-using MappedMatrix = Eigen::Map<Eigen::Matrix<double, M, N>>;
+using MappedMatrix = Eigen::Map<Eigen::Matrix<double, M, N, Eigen::ColMajor>>;
 
 template <int M, int N>
-using MappedConstMatrix = Eigen::Map<const Eigen::Matrix<double, M, N>>;
+using MappedConstMatrix =
+    Eigen::Map<const Eigen::Matrix<double, M, N, Eigen::ColMajor>>;
 
 template <int N>
 using MappedVector = MappedMatrix<N, 1>;