diff --git a/MathLib/ODE/ConcreteOdeSolver.h b/MathLib/ODE/ConcreteOdeSolver.h
index af5a69bc8834f07c3be08e591eb6a4a7b2347aa0..64ca47e555cea807842f88bb79114d40691a16f3 100644
--- a/MathLib/ODE/ConcreteOdeSolver.h
+++ b/MathLib/ODE/ConcreteOdeSolver.h
@@ -73,10 +73,11 @@ public:
 		Implementation::setTolerance(abstol, reltol);
 	}
 
-	void setIC(const double t0,
-	           std::array<double, NumEquations> const& y0) override
+	virtual void setIC(const double t0,
+	                   std::initializer_list<double> const& y0) override
 	{
-		Implementation::setIC(t0, y0.data());
+		assert(y0.size() == NumEquations);
+		Implementation::setIC(t0, y0.begin());
 	}
 
 	void setIC(const double t0,
diff --git a/MathLib/ODE/OdeSolver.h b/MathLib/ODE/OdeSolver.h
index 2500f26e91c92dd5a520927a09e4068ddfd1d489..9823741d7dea744b065f5801cb4c62df7409f842 100644
--- a/MathLib/ODE/OdeSolver.h
+++ b/MathLib/ODE/OdeSolver.h
@@ -39,7 +39,7 @@ public:
 	virtual void setTolerance(const double abstol, const double reltol) = 0;
 
 	virtual void setIC(const double t0,
-	                   std::array<double, NumEquations> const& y0) = 0;
+	                   std::initializer_list<double> const& y0) = 0;
 	virtual void setIC(
 	    const double t0,
 	    Eigen::Matrix<double, NumEquations, 1, Eigen::ColMajor> const& y0) = 0;