14 #define DECLARE_MODEL(TYPE, NUM_PARAMS, NUM_VARS) \ 15 DECLARE_SNIPPET(TYPE, NUM_PARAMS); \ 16 typedef Models::VarInitContainerBase<NUM_VARS> VarValues; \ 17 typedef Models::VarInitContainerBase<0> PreVarValues; \ 18 typedef Models::VarInitContainerBase<0> PostVarValues 20 #define IMPLEMENT_MODEL(TYPE) IMPLEMENT_SNIPPET(TYPE) 22 #define SET_VARS(...) virtual VarVec getVars() const override{ return __VA_ARGS__; } 23 #define SET_EXTRA_GLOBAL_PARAMS(...) virtual VarVec getExtraGlobalParams() const override{ return __VA_ARGS__; } 52 template<
size_t NumVars>
59 typedef std::vector<VarInit> InitialiserArray;
64 template<
typename... T>
65 VarInitContainerBase(T&&... initialisers) : m_Initialisers(InitialiserArray{{std::forward<const VarInit>(initialisers)...}})
67 static_assert(
sizeof...(initialisers) == NumVars,
"Wrong number of initialisers");
76 return m_Initialisers;
84 return m_Initialisers[pos];
91 InitialiserArray m_Initialisers;
105 template<
typename... T>
108 static_assert(
sizeof...(initialisers) == 0,
"Wrong number of initialisers");
148 return getVarVecIndex(varName, getVars());
154 return getVarVecIndex(paramName, getExtraGlobalParams());
size_t getExtraGlobalParamIndex(const std::string ¶mName) const
Find the index of a named extra global parameter.
Definition: models.h:152
VarInit(const InitVarSnippet::Base *snippet, const std::vector< double > ¶ms)
Definition: models.h:36
Base class for all models - in addition to the parameters snippets have, models can have state variab...
Definition: models.h:129
Definition: snippet.h:185
Init(const InitVarSnippet::Base *snippet, const std::vector< double > ¶ms)
Definition: snippet.h:188
virtual VarVec getExtraGlobalParams() const
Definition: models.h:140
VarInit(double constant)
Definition: models.h:41
VarInitContainerBase(T &&... initialisers)
Definition: models.h:65
VarInitContainerBase(T &&... initialisers)
Definition: models.h:106
const std::vector< VarInit > & getInitialisers() const
Gets initialisers as a vector of Values.
Definition: models.h:74
const VarInit & operator[](size_t pos) const
Definition: models.h:82
Definition: initVarSnippet.h:17
virtual VarVec getVars() const
Gets names and types (as strings) of model variables.
Definition: models.h:136
size_t getVarIndex(const std::string &varName) const
Find the index of a named variable.
Definition: models.h:146
VarInitContainerBase(const Snippet::ValueBase< 0 > &)
Definition: models.h:111
Base class for all value initialisation snippets.
Definition: initVarSnippet.h:15
std::vector< Var > VarVec
Definition: snippet.h:148
Base class for all code snippets.
Definition: snippet.h:112
std::vector< VarInit > getInitialisers() const
Gets initialisers as a vector of Values.
Definition: models.h:119