Source code for pybamm.expression_tree.vector
#
# Vector class
#
from __future__ import annotations
import numpy as np
import pybamm
from pybamm.type_definitions import DomainType, AuxiliaryDomainType, DomainsType
[docs]
class Vector(pybamm.Array):
"""
node in the expression tree that holds a vector type (e.g. :class:`numpy.array`)
"""
def __init__(
self,
entries: np.ndarray | list[float] | np.matrix,
name: str | None = None,
domain: DomainType = None,
auxiliary_domains: AuxiliaryDomainType = None,
domains: DomainsType = None,
entries_string: str | None = None,
) -> None:
if isinstance(entries, (list, np.matrix)):
entries = np.array(entries)
# make sure that entries are a vector (can be a column vector)
if entries.ndim == 1:
entries = entries[:, np.newaxis]
if entries.shape[1] != 1:
raise ValueError(
f"""
Entries must have 1 dimension or be column vector, not have shape {entries.shape}
"""
)
if name is None:
name = f"Column vector of length {entries.shape[0]!s}"
super().__init__(
entries, name, domain, auxiliary_domains, domains, entries_string
)