Source code for pybamm.expression_tree.scalar

#
# Scalar class
#
import pybamm
import numpy as np


[docs]class Scalar(pybamm.Symbol): """A node in the expression tree representing a scalar value **Extends:** :class:`Symbol` 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 domain : iterable of str, optional list of domains the parameter is valid over, defaults to empty list """ def __init__(self, value, name=None, domain=[]): # set default name if not provided self.value = value if name is None: name = str(self.value) super().__init__(name, domain=domain) @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, name and domain alone self._id = hash( (self.__class__, self.name) + tuple(self.domain) + tuple(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 new_copy(self): """ See :meth:`pybamm.Symbol.new_copy()`. """ return Scalar(self.value, self.name, self.domain)
[docs] def is_constant(self): """ See :meth:`pybamm.Symbol.is_constant()`. """ return True