36#ifndef VECTORHELPERFUNCTIONS_HPP_
37#define VECTORHELPERFUNCTIONS_HPP_
52#include <nvector/nvector_serial.h>
53#if CHASTE_SUNDIALS_VERSION >= 70000
55#define realtype sunrealtype
58#if CHASTE_SUNDIALS_VERSION >= 60000
59#include "CvodeContextManager.hpp"
74template <
typename VECTOR>
87template <
typename VECTOR>
99template <
typename VECTOR>
110template <
typename VECTOR>
123template <
typename VECTOR>
131template <
typename VECTOR>
140template <
typename VECTOR>
151template <
typename VECTOR>
163template <
typename VECTOR>
175template <
typename VECTOR>
187template <
typename VECTOR>
201 assert(index < rVec.size());
214 assert(index < rVec.size());
259 return std::vector<double>();
288inline std::vector<double>
CopyVector(std::vector<double>& rVec)
299inline void CopyToStdVector(
const std::vector<double>& rSrc, std::vector<double>& rDest)
328 assert(rVec !=
nullptr);
329 return NV_Ith_S(rVec, index);
341 assert(rVec !=
nullptr);
342 NV_Ith_S(rVec, index) = value;
353 assert(rVec !=
nullptr);
354 return NV_LENGTH_S(rVec);
377#if CHASTE_SUNDIALS_VERSION >= 60000
378 rVec = N_VNew_Serial(size, CvodeContextManager::Instance()->GetSundialsContext());
380 rVec = N_VNew_Serial(size);
403 return rVec ==
nullptr;
415 rVec->ops->nvdestroy(rVec);
431 copy = N_VClone(rVec);
432 unsigned size = NV_LENGTH_S(rVec);
433 for (
unsigned i = 0; i < size; i++)
435 NV_Ith_S(copy, i) = NV_Ith_S(rVec, i);
451 realtype* p_src = NV_DATA_S(rSrc);
452 if (!rDest.empty() && p_src == &(rDest[0]))
455 long size = NV_LENGTH_S(rSrc);
458 for (
long i = 0; i < size; i++)
474 realtype* p_dest = NV_DATA_S(rDest);
475 if (p_dest == &(rSrc[0]))
return;
478 long size = NV_LENGTH_S(rDest);
479 assert(size == (
long)rSrc.size());
482 for (
long i = 0; i < size; i++)
496 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)