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>;