36#ifndef VECTORHELPERFUNCTIONS_HPP_
37#define VECTORHELPERFUNCTIONS_HPP_
51#include <nvector/nvector_serial.h>
52#if CHASTE_SUNDIALS_VERSION >= 70000
54#define realtype sunrealtype
57#if CHASTE_SUNDIALS_VERSION >= 60000
58#include "CvodeContextManager.hpp"
71template <
typename VECTOR>
84template <
typename VECTOR>
96template <
typename VECTOR>
107template <
typename VECTOR>
120template <
typename VECTOR>
128template <
typename VECTOR>
137template <
typename VECTOR>
148template <
typename VECTOR>
160template <
typename VECTOR>
172template <
typename VECTOR>
184template <
typename VECTOR>
198 assert(index < rVec.size());
211 assert(index < rVec.size());
256 return std::vector<double>();
285inline std::vector<double>
CopyVector(std::vector<double>& rVec)
296inline void CopyToStdVector(
const std::vector<double>& rSrc, std::vector<double>& rDest)
323 assert(rVec !=
nullptr);
324 return NV_Ith_S(rVec, index);
336 assert(rVec !=
nullptr);
337 NV_Ith_S(rVec, index) = value;
348 assert(rVec !=
nullptr);
349 return NV_LENGTH_S(rVec);
372#if CHASTE_SUNDIALS_VERSION >= 60000
373 rVec = N_VNew_Serial(size, CvodeContextManager::Instance()->GetSundialsContext());
375 rVec = N_VNew_Serial(size);
398 return rVec ==
nullptr;
410 rVec->ops->nvdestroy(rVec);
426 copy = N_VClone(rVec);
427 unsigned size = NV_LENGTH_S(rVec);
428 for (
unsigned i = 0; i < size; i++)
430 NV_Ith_S(copy, i) = NV_Ith_S(rVec, i);
446 realtype* p_src = NV_DATA_S(rSrc);
447 if (p_src == rDest.data())
450 long size = NV_LENGTH_S(rSrc);
453 for (
long i = 0; i < size; i++)
469 realtype* p_dest = NV_DATA_S(rDest);
470 if (p_dest == rSrc.data())
return;
473 long size = NV_LENGTH_S(rDest);
474 assert(size == (
long)rSrc.size());
477 for (
long i = 0; i < size; i++)
491 std::vector<double> sv;
void DeleteVector(VECTOR &rVec)
void CreateVectorIfEmpty(VECTOR &rVec, unsigned size)
void SetVectorComponent(VECTOR &rVec, unsigned index, double value)
double GetVectorComponent(const VECTOR &rVec, unsigned index)
VECTOR CreateEmptyVector()
std::vector< double > MakeStdVec(N_Vector v)
unsigned GetVectorSize(const VECTOR &rVec)
N_Vector MakeNVector(const std::vector< double > &rSrc)
bool IsEmptyVector(VECTOR &rVec)
VECTOR CopyVector(VECTOR &rVec)
void InitialiseEmptyVector(VECTOR &rVec)
void CopyFromStdVector(const std::vector< double > &rSrc, VECTOR &rDest)
void CopyToStdVector(const VECTOR &rSrc, std::vector< double > &rDest)