diff --git a/NumLib/ODESolver/TimeDiscretizedODESystem.h b/NumLib/ODESolver/TimeDiscretizedODESystem.h index 2fccfcd2580790833e635c32f40ad784106de2d3..63ec4822b0b7a99e5934ef8decb66a7b1c16c1d9 100644 --- a/NumLib/ODESolver/TimeDiscretizedODESystem.h +++ b/NumLib/ODESolver/TimeDiscretizedODESystem.h @@ -359,10 +359,14 @@ public: _ode.getKnownSolutions(_time_disc.getCurrentTime()); if (known_solutions) { + using IndexType = typename MathLib::MatrixVectorTraits<Matrix>::Index; + std::vector<IndexType> ids; + std::vector<double> values; for (auto const& bc : *known_solutions) { - // TODO maybe it would be faster to apply all at once - MathLib::applyKnownSolution(A, rhs, x, bc.ids, bc.values); + std::copy(bc.ids.cbegin(), bc.ids.cend(), std::back_inserter(ids)); + std::copy(bc.values.cbegin(), bc.values.cend(), std::back_inserter(values)); } + MathLib::applyKnownSolution(A, rhs, x, ids, values); } }