diff --git a/src/numerics/CVodesIntegrator.cpp b/src/numerics/CVodesIntegrator.cpp index c118b56a78..eeb5528352 100644 --- a/src/numerics/CVodesIntegrator.cpp +++ b/src/numerics/CVodesIntegrator.cpp @@ -89,6 +89,7 @@ CVodesIntegrator::CVodesIntegrator() : m_hmin(0.0), m_maxsteps(20000), m_maxErrTestFails(0), + m_yS(nullptr), m_np(0), m_mupper(0), m_mlower(0), m_sens_ok(false) @@ -109,6 +110,9 @@ CVodesIntegrator::~CVodesIntegrator() if (m_abstol) { N_VDestroy_Serial(m_abstol); } + if (m_yS) { + N_VDestroyVectorArray_Serial(m_yS, m_np); + } } double& CVodesIntegrator::solution(size_t k) @@ -219,6 +223,7 @@ void CVodesIntegrator::sensInit(double t0, FuncEval& func) for (size_t n = 0; n < m_np; n++) { N_VConst(0.0, m_yS[n]); } + N_VDestroy_Serial(y); int flag = CVodeSensInit(m_cvode_mem, static_cast(m_np), CV_STAGGERED, CVSensRhsFn(0), m_yS);