Skip to content

[Bug]: DFN model for sodium-ion batteries Demo can not run the full cycle #5306

@Sihui-Chen

Description

@Sihui-Chen

PyBaMM Version

24.11.2

Python Version

3.12.12

Describe the bug

I see the demo can run 4000s cycling at 1/12C, 5/12, 10/12, and 1C. But in my environment setup (PyBaMM 24.11.2, Python 3.12.12), the longest runable time is 3420s under 0.0005C. Higher C-rates can only run a shorter period of time. I am not sure the source of problem. The problem may comes from some kinetic-related functions? or my environment setting? Constructive reply will be highly appreciated.

Cathy

Steps to Reproduce

C_rates = [1 / 12, 5 / 12, 10 / 12, 1]
solutions = []

for C_rate in C_rates:
sim = pybamm.Simulation(model, C_rate=C_rate)
sol = sim.solve([0, 4000 / C_rate])
solutions.append(sol)

pybamm.dynamic_plot(solutions)

Relevant log output

At t = 164.02, repeated recoverable residual errors.
At t = 164.02, repeated recoverable residual errors.
---------------------------------------------------------------------------
SolverError                               Traceback (most recent call last)
Cell In[13], line 6
      4 for C_rate in C_rates:
      5     sim = pybamm.Simulation(model, C_rate=C_rate)
----> 6     sol = sim.solve([0, 4000 / C_rate])
      7     solutions.append(sol)
      9 pybamm.dynamic_plot(solutions)

File c:\Users\29028\.conda\envs\pybamm\Lib\site-packages\pybamm\simulation.py:546, in Simulation.solve(self, t_eval, solver, save_at_cycles, calc_esoh, starting_solution, initial_soc, callbacks, showprogress, inputs, t_interp, **kwargs)
    534             if dt_eval_max > np.nextafter(dt_data_min, np.inf):
    535                 warnings.warn(
    536                     f"The largest timestep in t_eval ({dt_eval_max}) is larger than "
    537                     f"the smallest timestep in the data ({dt_data_min}). The returned "
   (...)    543                     stacklevel=2,
    544                 )
--> 546     self._solution = solver.solve(
    547         self._built_model, t_eval, inputs=inputs, t_interp=t_interp, **kwargs
    548     )
    550 elif self.operating_mode == "with experiment":
    551     callbacks.on_experiment_start(logs)

File c:\Users\29028\.conda\envs\pybamm\Lib\site-packages\pybamm\solvers\base_solver.py:962, in BaseSolver.solve(self, model, t_eval, inputs, nproc, calculate_sensitivities, t_interp)
    958 solve_time = timer.time()
    960 for i, solution in enumerate(solutions):
...
   1521     )
   1522 elif self._on_extrapolation == "warn":
   1523     name = solution.all_models[-1].name

SolverError: Solver failed because the following interpolation bounds were exceeded: ["Interpolant 'k_n' lower bound", "Interpolant 'U_n' lower bound"]. You may need to provide additional interpolation points outside these bounds.
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

Metadata

Metadata

Assignees

No one assigned

    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