Skip to content

[Bug]: IDAKLU output_variables fails when checking for interpolant_extrapolation events #4439

@pipliggins

Description

@pipliggins

PyBaMM Version

develop

Python Version

3.11.6

Describe the bug

When running a model with the IDAKLU solver and some output_variables and the solution contains INTERPOLANT_EXTRAPOLATION events, pybamm complains about y_slice vectors being too short.

The code to reproduce is taken from #4414 .

Steps to Reproduce

import pybamm
import numpy as np

# Define inputs
inputs = {
    "Current function [A]": 0.222,
    "Separator porosity": 0.3,
}

# Set-up the model
options = {"cell geometry": "arbitrary", "thermal": "lumped"}
model = pybamm.lithium_ion.DFN(options=options)
geometry = model.default_geometry
# param = model.default_parameter_values
param = pybamm.ParameterValues.create_from_bpx(r"lfp_18650_cell_BPX.json")
param.update(inputs)
var = pybamm.standard_spatial_vars
var_pts = {var.x_n: 20, var.x_s: 20, var.x_p: 20, var.r_n: 10, var.r_p: 10}

# Use a short time-vector for this example
t_eval = np.linspace(0, 360, 10)

# Include the variable of interest in output_variables
output_variables = [
    "Voltage [V]",
    "Current [A]",
    "Time [min]",
    "X-averaged cell temperature [C]",  # want to retrieve this and print the output
]

# Create the IDAKLU Solver object
idaklu_solver = pybamm.IDAKLUSolver(
    rtol=1e-6, atol=1e-6, output_variables=output_variables
)

sim = pybamm.Simulation(
    model,
    parameter_values=param,
    geometry=geometry,
    var_pts=var_pts,
    solver=idaklu_solver,
    output_variables=output_variables,
)
sol = sim.solve(
    t_eval=t_eval,
    calculate_sensitivities=True,
)

Relevant log output

File "/Users/pipliggins/Documents/repos/pybamm-local/issue_test_copy.py", line 47, in <module>
    sol = sim.solve(
          ^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/simulation.py", line 534, in solve
    self._solution = solver.solve(
                     ^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/solvers/base_solver.py", line 957, in solve
    self.check_extrapolation(solution, model.events)
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/solvers/base_solver.py", line 1497, in check_extrapolation
    and event.expression.evaluate(t, y, inputs=inputs) < self.extrap_tol
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/functions.py", line 130, in evaluate
    evaluated_children = [
                         ^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/functions.py", line 131, in <listcomp>
    child.evaluate(t, y, y_dot, inputs) for child in self.children
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/binary_operators.py", line 160, in evaluate
    left = self.left.evaluate(t, y, y_dot, inputs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/binary_operators.py", line 160, in evaluate
    left = self.left.evaluate(t, y, y_dot, inputs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/binary_operators.py", line 161, in evaluate
    right = self.right.evaluate(t, y, y_dot, inputs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/symbol.py", line 817, in evaluate
    return self._base_evaluate(t, y, y_dot, inputs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pipliggins/Documents/repos/pybamm-local/src/pybamm/expression_tree/state_vector.py", line 292, in _base_evaluate
    raise ValueError(
ValueError: y is too short, so value with slice is smaller than expected

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions