Source code for pybamm.expression_tree.scalar

#
# Scalar class
#
import numpy as np
import sympy

import pybamm


[docs]class Scalar(pybamm.Symbol): """ A node in the expression tree representing a scalar value. Parameters ---------- value : numeric the value returned by the node when evaluated name : str, optional the name of the node. Defaulted to ``str(value)`` if not provided """ def __init__(self, value, name=None): # set default name if not provided self.value = value if name is None: name = str(self.value) super().__init__(name) def __str__(self): return str(self.value) @property def value(self): """The value returned by the node when evaluated.""" return self._value @value.setter def value(self, value): self._value = np.float64(value)
[docs] def set_id(self): """See :meth:`pybamm.Symbol.set_id()`.""" # We must include the value in the hash, since different scalars can be # indistinguishable by class and name alone self._id = hash((self.__class__, str(self.value)))
def _base_evaluate(self, t=None, y=None, y_dot=None, inputs=None): """See :meth:`pybamm.Symbol._base_evaluate()`.""" return self._value def _jac(self, variable): """See :meth:`pybamm.Symbol._jac()`.""" return pybamm.Scalar(0)
[docs] def create_copy(self): """See :meth:`pybamm.Symbol.new_copy()`.""" return Scalar(self.value, self.name)
[docs] def is_constant(self): """See :meth:`pybamm.Symbol.is_constant()`.""" return True
[docs] def to_equation(self): """Returns the value returned by the node when evaluated.""" if self.print_name is not None: return sympy.Symbol(self.print_name) else: return self.value