Nektar++
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::Stimulus Class Referenceabstract

Stimulus base class. More...

#include <Stimulus.h>

Inheritance diagram for Nektar::Stimulus:
[legend]

Public Member Functions

virtual ~Stimulus ()
 
void Initialise ()
 Initialise the stimulus storage and set initial conditions. More...
 
void Update (Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
 Updates RHS of outarray by adding a stimulus to it. More...
 
void GenerateSummary (SolverUtils::SummaryList &s)
 Print a summary of the outarray. More...
 

Static Public Member Functions

static std::vector< StimulusSharedPtrLoadStimuli (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 

Protected Member Functions

 Stimulus (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField, const TiXmlElement *pXml)
 
virtual void v_Update (Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)=0
 
virtual void v_GenerateSummary (SolverUtils::SummaryList &s)=0
 

Protected Attributes

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...
 
ProtocolSharedPtr m_Protocol
 Stimulus protocol to apply. More...
 

Detailed Description

Stimulus base class.

The Stimulus class and derived classes implement a range of stimuli. The stimulus contains input stimuli that can be applied throughout the domain, on specified regions determined by the derived classes of Stimulus, at specified frequencies determined by the derived classes of Protocol.

Definition at line 65 of file Stimulus.h.

Constructor & Destructor Documentation

◆ ~Stimulus()

virtual Nektar::Stimulus::~Stimulus ( )
inlinevirtual

Definition at line 68 of file Stimulus.h.

References Initialise().

68 {}

◆ Stimulus()

Nektar::Stimulus::Stimulus ( const LibUtilities::SessionReaderSharedPtr pSession,
const MultiRegions::ExpListSharedPtr pField,
const TiXmlElement *  pXml 
)
protected

Stimulus base class constructor.

Definition at line 64 of file Stimulus.cpp.

References Nektar::LibUtilities::NekFactory< tKey, tBase, tParam >::CreateInstance(), and Nektar::GetProtocolFactory().

67  {
68  m_session = pSession;
69  m_field = pField;
70  m_nq = pField->GetTotPoints();
71 
72  const TiXmlElement* vProtocol = pXml->FirstChildElement("PROTOCOL");
73  string vTypeP = vProtocol->Attribute("TYPE");
74 
76  vTypeP, pSession, vProtocol);
77 
78  }
ProtocolSharedPtr m_Protocol
Stimulus protocol to apply.
Definition: Stimulus.h:98
ProtocolFactory & GetProtocolFactory()
Definition: Protocol.cpp:39
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: Stimulus.h:92
int m_nq
Number of physical points.
Definition: Stimulus.h:96
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
Definition: NekFactory.hpp:144
MultiRegions::ExpListSharedPtr m_field
Transmembrane potential field from PDE system.
Definition: Stimulus.h:94

Member Function Documentation

◆ GenerateSummary()

void Nektar::Stimulus::GenerateSummary ( SolverUtils::SummaryList s)
inline

Print a summary of the outarray.

Definition at line 81 of file Stimulus.h.

References LoadStimuli(), and v_GenerateSummary().

82  {
84  }
virtual void v_GenerateSummary(SolverUtils::SummaryList &s)=0

◆ Initialise()

void Nektar::Stimulus::Initialise ( )

Initialise the stimulus storage and set initial conditions.

Initialise the stimulus. Allocate workspace and variable storage.

Definition at line 84 of file Stimulus.cpp.

Referenced by ~Stimulus().

85  {
86  }

◆ LoadStimuli()

vector< StimulusSharedPtr > Nektar::Stimulus::LoadStimuli ( const LibUtilities::SessionReaderSharedPtr pSession,
const MultiRegions::ExpListSharedPtr pField 
)
static

Definition at line 92 of file Stimulus.cpp.

References Nektar::GetStimulusFactory().

Referenced by GenerateSummary(), Nektar::BidomainRoth::v_InitObject(), and Nektar::Monodomain::v_InitObject().

95  {
96  vector<StimulusSharedPtr> vStimList;
97 
98  TiXmlElement* vStimuli = pSession->GetElement("Nektar/Stimuli");
99  if (vStimuli)
100  {
101  TiXmlElement* vStimulus = vStimuli->FirstChildElement("STIMULUS");
102  while (vStimulus)
103  {
104  string vType = vStimulus->Attribute("TYPE");
105 
106  vStimList.push_back(GetStimulusFactory().CreateInstance(
107  vType, pSession, pField, vStimulus));
108  vStimulus = vStimulus->NextSiblingElement("STIMULUS");
109  }
110  }
111  return vStimList;
112  }
StimulusFactory & GetStimulusFactory()
Definition: Stimulus.cpp:44

◆ Update()

void Nektar::Stimulus::Update ( Array< OneD, Array< OneD, NekDouble > > &  outarray,
const NekDouble  time 
)
inline

Updates RHS of outarray by adding a stimulus to it.

Definition at line 74 of file Stimulus.h.

References v_Update().

76  {
77  v_Update(outarray, time);
78  }
virtual void v_Update(Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)=0

◆ v_GenerateSummary()

virtual void Nektar::Stimulus::v_GenerateSummary ( SolverUtils::SummaryList s)
protectedpure virtual

◆ v_Update()

virtual void Nektar::Stimulus::v_Update ( Array< OneD, Array< OneD, NekDouble > > &  outarray,
const NekDouble  time 
)
protectedpure virtual

Member Data Documentation

◆ m_field

MultiRegions::ExpListSharedPtr Nektar::Stimulus::m_field
protected

◆ m_nq

int Nektar::Stimulus::m_nq
protected

Number of physical points.

Definition at line 96 of file Stimulus.h.

Referenced by Nektar::StimulusCirc::StimulusCirc(), Nektar::StimulusPoint::StimulusPoint(), and Nektar::StimulusRect::StimulusRect().

◆ m_Protocol

ProtocolSharedPtr Nektar::Stimulus::m_Protocol
protected

◆ m_session

LibUtilities::SessionReaderSharedPtr Nektar::Stimulus::m_session
protected