35#ifndef NEKTAR_SOLVERS_ADRSOLVER_CELLMODELS_CELLMODEL
36#define NEKTAR_SOLVERS_ADRSOLVER_CELLMODELS_CELLMODEL
52typedef std::vector<std::pair<std::string, std::string>>
SummaryList;
154 return "Var" + std::to_string(idx);
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
void Initialise()
Initialise the cell model storage and set initial conditions.
void Update(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
Compute the derivatives of cell model variables.
Array< OneD, Array< OneD, NekDouble > > m_wsp
Cell model integration workspace.
bool m_useNodal
Flag indicating whether nodal projection in use.
Array< OneD, NekDouble > GetCellSolutionCoeffs(size_t idx)
NekDouble m_lastTime
Timestep for pde model.
size_t m_substeps
Number of substeps to take.
virtual std::string v_GetCellVarName(size_t idx)
StdRegions::StdNodalTetExpSharedPtr m_nodalTet
Array< OneD, Array< OneD, NekDouble > > m_nodalTmp
Temporary array for nodal projection.
MultiRegions::ExpListSharedPtr m_field
Transmembrane potential field from PDE system.
std::vector< int > m_concentrations
Indices of cell model variables which are concentrations.
virtual void v_GenerateSummary(SummaryList &s)=0
void GenerateSummary(SummaryList &s)
Print a summary of the cell model.
std::vector< int > m_gates
Indices of cell model variables which are gates.
virtual void v_Update(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)=0
Array< OneD, NekDouble > GetCellSolution(size_t idx)
virtual void v_SetInitialConditions()=0
StdRegions::StdNodalTriExpSharedPtr m_nodalTri
StdNodalTri for cell model calculations.
LibUtilities::SessionReaderSharedPtr m_session
Session.
size_t m_nq
Number of physical points.
size_t m_nvar
Number of variables in cell model (inc. transmembrane voltage)
CellModel(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
void TimeIntegrate(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
Time integrate the cell model by one PDE timestep.
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
Storage for gate tau values.
size_t GetNumCellVariables()
std::string GetCellVarName(size_t idx)
Provides a generic Factory class.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::vector< std::pair< std::string, std::string > > SummaryList
std::shared_ptr< StdNodalTetExp > StdNodalTetExpSharedPtr
std::shared_ptr< StdNodalTriExp > StdNodalTriExpSharedPtr
CellModelFactory & GetCellModelFactory()
std::vector< std::pair< std::string, std::string > > SummaryList
std::shared_ptr< CellModel > CellModelSharedPtr
A shared pointer to an EquationSystem object.
LibUtilities::NekFactory< std::string, CellModel, const LibUtilities::SessionReaderSharedPtr &, const MultiRegions::ExpListSharedPtr & > CellModelFactory
Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class.