Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes | List of all members
Nektar::CellModelFitzHughNagumo Class Reference

FitzHugh-Nagumo model. More...

#include <FitzhughNagumo.h>

Inheritance diagram for Nektar::CellModelFitzHughNagumo:
Inheritance graph
[legend]
Collaboration diagram for Nektar::CellModelFitzHughNagumo:
Collaboration graph
[legend]

Public Member Functions

 CellModelFitzHughNagumo (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 
virtual ~CellModelFitzHughNagumo ()
 
- Public Member Functions inherited from Nektar::CellModel
 CellModel (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 
virtual ~CellModel ()
 
void Initialise ()
 Initialise the cell model storage and set initial conditions. More...
 
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. More...
 
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. More...
 
void GenerateSummary (SummaryList &s)
 Print a summary of the cell model. More...
 
unsigned int GetNumCellVariables ()
 
std::string GetCellVarName (unsigned int idx)
 
Array< OneD, NekDoubleGetCellSolutionCoeffs (unsigned int idx)
 
Array< OneD, NekDoubleGetCellSolution (unsigned int idx)
 

Static Public Member Functions

static CellModelSharedPtr create (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 Creates an instance of this class. More...
 

Static Public Attributes

static std::string className
 Name of class. More...
 

Protected Member Functions

virtual void v_Update (const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
 
virtual void v_GenerateSummary (SummaryList &s)
 
virtual void v_SetInitialConditions ()
 
- Protected Member Functions inherited from Nektar::CellModel
virtual std::string v_GetCellVarName (unsigned int idx)
 
void LoadCellModel ()
 

Private Attributes

NekDouble m_beta
 
NekDouble m_epsilon
 
Array< OneD, NekDoublem_uuu
 Temporary space for storing $u^3$ when computing reaction term. More...
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::CellModel
LibUtilities::SessionReaderSharedPtr m_session
 Session. More...
 
MultiRegions::ExpListSharedPtr m_field
 Transmembrane potential field from PDE system. More...
 
int m_nq
 Number of physical points. More...
 
int m_nvar
 Number of variables in cell model (inc. transmembrane voltage) More...
 
NekDouble m_lastTime
 Timestep for pde model. More...
 
int m_substeps
 Number of substeps to take. More...
 
Array< OneD, Array< OneD, NekDouble > > m_cellSol
 Cell model solution variables. More...
 
Array< OneD, Array< OneD, NekDouble > > m_wsp
 Cell model integration workspace. More...
 
bool m_useNodal
 Flag indicating whether nodal projection in use. More...
 
StdRegions::StdNodalTriExpSharedPtr m_nodalTri
 StdNodalTri for cell model calculations. More...
 
StdRegions::StdNodalTetExpSharedPtr m_nodalTet
 
Array< OneD, Array< OneD, NekDouble > > m_nodalTmp
 Temporary array for nodal projection. More...
 
std::vector< int > m_concentrations
 Indices of cell model variables which are concentrations. More...
 
std::vector< int > m_gates
 Indices of cell model variables which are gates. More...
 
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
 Storage for gate tau values. More...
 

Detailed Description

FitzHugh-Nagumo model.

Definition at line 44 of file FitzhughNagumo.h.

Constructor & Destructor Documentation

Nektar::CellModelFitzHughNagumo::CellModelFitzHughNagumo ( const LibUtilities::SessionReaderSharedPtr pSession,
const MultiRegions::ExpListSharedPtr pField 
)

Definition at line 53 of file FitzhughNagumo.cpp.

References m_beta, Nektar::CellModel::m_concentrations, m_epsilon, Nektar::CellModel::m_nq, Nektar::CellModel::m_nvar, and m_uuu.

56  : CellModel(pSession, pField)
57  {
58  pSession->LoadParameter("beta", m_beta, 0.0);
59  pSession->LoadParameter("epsilon", m_epsilon, 1.0);
60 
62 
63  m_nvar = 2;
64  m_concentrations.push_back(1);
65  }
Array< OneD, NekDouble > m_uuu
Temporary space for storing when computing reaction term.
int m_nq
Number of physical points.
Definition: CellModel.h:117
CellModel(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Definition: CellModel.cpp:67
std::vector< int > m_concentrations
Indices of cell model variables which are concentrations.
Definition: CellModel.h:139
int m_nvar
Number of variables in cell model (inc. transmembrane voltage)
Definition: CellModel.h:119
virtual Nektar::CellModelFitzHughNagumo::~CellModelFitzHughNagumo ( )
inlinevirtual

Definition at line 62 of file FitzhughNagumo.h.

62 {}

Member Function Documentation

static CellModelSharedPtr Nektar::CellModelFitzHughNagumo::create ( const LibUtilities::SessionReaderSharedPtr pSession,
const MultiRegions::ExpListSharedPtr pField 
)
inlinestatic

Creates an instance of this class.

Definition at line 48 of file FitzhughNagumo.h.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

51  {
53  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
void Nektar::CellModelFitzHughNagumo::v_GenerateSummary ( SummaryList s)
protectedvirtual

Implements Nektar::CellModel.

Definition at line 97 of file FitzhughNagumo.cpp.

References Nektar::SolverUtils::AddSummaryItem(), and m_beta.

98  {
99  SolverUtils::AddSummaryItem(s, "Cell model","FitzHugh-Nagumo");
100  SolverUtils::AddSummaryItem(s, "Cell model beta", m_beta);
101  }
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
Definition: Misc.cpp:50
void Nektar::CellModelFitzHughNagumo::v_SetInitialConditions ( )
protectedvirtual

Implements Nektar::CellModel.

Definition at line 107 of file FitzhughNagumo.cpp.

References Vmath::Fill(), Nektar::CellModel::m_cellSol, and Nektar::CellModel::m_nq.

108  {
109  Vmath::Fill(m_nq, 0.0, m_cellSol[0], 1);
110  Vmath::Fill(m_nq, 0.0, m_cellSol[1], 1);
111  }
int m_nq
Number of physical points.
Definition: CellModel.h:117
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
Definition: Vmath.cpp:46
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
Definition: CellModel.h:126
void Nektar::CellModelFitzHughNagumo::v_Update ( const Array< OneD, const Array< OneD, NekDouble > > &  inarray,
Array< OneD, Array< OneD, NekDouble > > &  outarray,
const NekDouble  time 
)
protectedvirtual

Implements Nektar::CellModel.

Definition at line 68 of file FitzhughNagumo.cpp.

References m_beta, m_epsilon, Nektar::CellModel::m_nq, m_uuu, Vmath::Sadd(), Vmath::Smul(), Vmath::Svtvp(), Vmath::Vmul(), and Vmath::Vsub().

72  {
73  NekDouble m_gamma = 0.5;
74 
75  // compute u^2: m_u = u*u
76  Vmath::Vmul(m_nq, &inarray[0][0], 1, &inarray[0][0], 1, &m_uuu[0], 1);
77 
78  // compute u^3: m_u = u*u*u
79  Vmath::Vmul(m_nq, &inarray[0][0], 1, &m_uuu[0], 1, &m_uuu[0], 1);
80 
81  // For u: (1/m_epsilon)*( u*-u*u*u/3 - v )
82  // physfield = u - (1.0/3.0)*u*u*u
83  Vmath::Svtvp(m_nq, (-1.0/3.0), &m_uuu[0], 1, &inarray[0][0], 1, &outarray[0][0], 1);
84 
85  Vmath::Vsub(m_nq, &inarray[1][0], 1, &outarray[0][0], 1, &outarray[0][0], 1);
86  Vmath::Smul(m_nq, -1.0/m_epsilon, &outarray[0][0], 1, &outarray[0][0], 1);
87 
88  // For v: m_epsilon*( u + m_beta - m_gamma*v )
89  Vmath::Svtvp(m_nq, -1.0*m_gamma, &inarray[1][0], 1, &inarray[0][0], 1, &outarray[1][0], 1);
90  Vmath::Sadd(m_nq, m_beta, &outarray[1][0], 1, &outarray[1][0], 1);
91  Vmath::Smul(m_nq, m_epsilon, &outarray[1][0], 1, &outarray[1][0], 1);
92  }
Array< OneD, NekDouble > m_uuu
Temporary space for storing when computing reaction term.
int m_nq
Number of physical points.
Definition: CellModel.h:117
void Svtvp(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
svtvp (scalar times vector plus vector): z = alpha*x + y
Definition: Vmath.cpp:471
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
Definition: Vmath.cpp:199
double NekDouble
void Sadd(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Add vector y = alpha + x.
Definition: Vmath.cpp:301
void Vsub(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Subtract vector z = x-y.
Definition: Vmath.cpp:329
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
Definition: Vmath.cpp:169

Member Data Documentation

std::string Nektar::CellModelFitzHughNagumo::className
static
Initial value:
"FitzHughNagumo",
"Phenomological model of squid nerve cell.")

Name of class.

Registers the class with the Factory.

Definition at line 56 of file FitzhughNagumo.h.

NekDouble Nektar::CellModelFitzHughNagumo::m_beta
private

Definition at line 75 of file FitzhughNagumo.h.

Referenced by CellModelFitzHughNagumo(), v_GenerateSummary(), and v_Update().

NekDouble Nektar::CellModelFitzHughNagumo::m_epsilon
private

Definition at line 76 of file FitzhughNagumo.h.

Referenced by CellModelFitzHughNagumo(), and v_Update().

Array<OneD, NekDouble> Nektar::CellModelFitzHughNagumo::m_uuu
private

Temporary space for storing $u^3$ when computing reaction term.

Definition at line 79 of file FitzhughNagumo.h.

Referenced by CellModelFitzHughNagumo(), and v_Update().