From 218331a1bb961f7f53cb69e55e8f8c62392e2418 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Mon, 21 Mar 2016 01:01:05 +0000 Subject: [PATCH] [MaL] ODE: Explicitly specify ColMajor for eigen. --- MathLib/ODE/OdeSolver.h | 7 ++++--- MathLib/ODE/OdeSolverFactory.h | 7 ++++--- MathLib/ODE/OdeSolverTypes.h | 5 +++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/MathLib/ODE/OdeSolver.h b/MathLib/ODE/OdeSolver.h index ffaadf7b29f..2500f26e91c 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 3d4d9c1af64..435d8326003 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 15d8b31338a..7c441faf6da 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>; -- GitLab