Source code for pybamm.models.event

from enum import Enum


[docs]class EventType(Enum): """ Defines the type of event, see :class:`pybamm.Event` TERMINATION indicates an event that will terminate the solver, the expression should return 0 when the event is triggered DISCONTINUITY indicates an expected discontinuity in the solution, the expression should return the time that the discontinuity occurs. The solver will integrate up to the discontinuity and then restart just after the discontinuity. """ TERMINATION = 0 DISCONTINUITY = 1 INTERPOLANT_EXTRAPOLATION = 2
[docs]class Event: """ Defines an event for use within a pybamm model Attributes ---------- name: str A string giving the name of the event event_type: :class:`pybamm.EventType` An enum defining the type of event expression: :class:`pybamm.Symbol` An expression that defines when the event occurs """ def __init__(self, name, expression, event_type=EventType.TERMINATION): self._name = name self._expression = expression self._event_type = event_type
[docs] def evaluate(self, t=None, y=None, y_dot=None, inputs=None, known_evals=None): """ Acts as a drop-in replacement for :func:`pybamm.Symbol.evaluate` """ return self._expression.evaluate(t, y, y_dot, inputs, known_evals)
def __str__(self): return self._name @property def name(self): return self._name @property def expression(self): return self._expression @property def event_type(self): return self._event_type