EulerIntegrator
-
class EulerIntegrator : public rr::Integrator
An example class intended to show how to create an Integrator.
This class implements the most basic possible integration algorithm: the forward Euler method.
This integrator should not really be used in practice as the forward Euler algorithm is highly unstable and will seldomly yield numerically correct values.
An example of calling simulate in Python is
rr.setIntegrator('euler') rr.simulate(); print(rr.integrator) < roadrunner.EulerIntegrator() { 'this' : 0x101f28350 }>
Public Functions
-
inline EulerIntegrator(ExecutableModel *m)
Creates a new EulerIntegrator.
The IntegratorFactory is the ONLY object that creates integrators.
Integrators are created when the IntegratorFactory::New method is called, typically by the top level RoadRunner object.
The integrator will hold onto the ExecutableModel pointer, m, and when the integrate method is called, will advance the model object forward in time.
- Parameters:
m – a borrowed reference to an existing ExecutableModel object.
-
inline ~EulerIntegrator() override
delete any memory we allocated
-
inline virtual double integrate(double t0, double h) override
integrates the model from t0 to t0 + hstep
In this implementation, this performs a basic forward Euler step. This method also demonstrates how to notify the listener that a timestep has completed.
- Returns:
the end time.
-
inline void applyEvents(double timeEnd, std::vector<unsigned char> &previousEventStatus)
-
inline virtual void restart(double t0) override
This simple integrator has nothing to reset, so do nothing here.
-
inline virtual void setListener(IntegratorListenerPtr p) override
Clients may register a listener to listen for sbml events and time step events.
-
inline virtual IntegratorListenerPtr getListener() override
get the integrator listener
-
inline virtual std::string toString() const override
get a description of this object, compatable with python str
-
inline virtual std::string toRepr() const override
get a short descriptions of this object, compatable with python repr.
-
inline virtual std::string getName() const override
get the name of this integrator
-
inline virtual std::string getDescription() const override
Get the description for this integrator.
- Author
JKM
Note
Delegates to getDescription
-
inline virtual std::string getHint() const override
Get the hint for this integrator.
- Author
JKM
Note
Delegates to getHint
-
inline virtual Solver *construct(ExecutableModel *executableModel) const override
Constructs a new Solver of a given type.
the caller is responsible for deleting memory associated with the returned Solver*.
- Author
JKM, WBC
-
inline virtual IntegrationMethod getIntegrationMethod() const override
Always deterministic for Euler.
- Author
JKM
-
inline virtual void setItem(const std::string &key, const rr::Setting &value)
sets the value for a key.
This integrator only supports 2 values, so those are the only two valid items to set.
-
inline virtual Setting getItem(const std::string &key) const
Get a value.
This integrator only supports two parameters, those are the only valid ones to get.
-
inline virtual bool hasKey(const std::string &key) const
is there a key matching this name.
-
inline virtual int deleteItem(const std::string &key)
remove a value, this example class does not support deleting keys, so just raise an exception if someone tries to do so.
-
inline virtual std::vector<std::string> getKeys() const
list of keys in this object.
-
inline virtual void resetSettings() override
Reset all settings to their respective default values.
-
explicit Integrator(ExecutableModel *model)
-
Integrator()
Private Members
-
double exampleParameter1
a parameter which does nothing
-
std::string exampleParameter2
another parameter which does nothing
-
double *rateBuffer
two buffers to store the state std::vector rate, and new state std::vector
-
double *stateBufferBegin
-
double *stateBufferEnd
-
int stateVectorSize
size of state std::vector
-
std::vector<unsigned char> eventStatus
-
std::vector<unsigned char> previousEventStatus
-
IntegratorListenerPtr listener
Clients may register a listener to listen for time steps, or sbml events.
Time step events are much more usefull for variable time step integrators where they may take long time steps and clients may be notified when these occur.
This is a smart pointer to a object which implements the IntegratorListener interface.
-
inline EulerIntegrator(ExecutableModel *m)