When trying to use a pybamm.Interpolant as an input argument to the solve() method.
parameter_values[“Current function [A]”] = “[input]”
interpolant = pybamm.Interpolant(experiment[:, 0], experiment[:, 1], pybamm.t)
model = pybamm.lithium_ion.DFN()
solver = pybamm.IDAKLUSolver()
sim = pybamm.Simulation(
model, solver=solver, parameter_values=parameter_values
)solution = sim.solve(inputs={“Current function [A]”: interpolant})
The simulation fails with the following error
Traceback (most recent call last):
File line 84, in
solution = sim.solve([0, 300.0], inputs={“Current function [A]”: interpolant})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/pybamm/simulation.py”, line 541, in solve
self._solution = solver.solve(
^^^^^^^^^^^^^
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/pybamm/solvers/base_solver.py”, line 799, in solve
self.set_up(model, model_inputs_list[0], t_eval)
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/pybamm/solvers/idaklu_solver.py”, line 265, in set_up
base_set_up_return = super().set_up(model, inputs, t_eval, ics_only)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/pybamm/solvers/base_solver.py”, line 170, in set_up
self._set_initial_conditions(model, 0.0, inputs)
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/pybamm/solvers/base_solver.py”, line 293, in _set_initial_conditions
inputs_y0_ics = casadi.vertcat(*[x for x in inputs.values()])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/casadi/casadi.py”, line 518, in vertcat
return _vertcat(args)
^^^^^^^^^^^^^^
File “/home/oarcelus/miniconda3/envs/pybamm/lib/python3.12/site-packages/casadi/casadi.py”, line 34167, in _vertcat
return _casadi._vertcat(*args)
^^^^^^^^^^^^^^^^^^^^^^^
NotImplementedError: Wrong number or type of arguments for overloaded function ‘_vertcat’.
Possible prototypes are:
_vertcat([Sparsity])
_vertcat([DM])
_vertcat([SX])
_vertcat([MX])
You have: ‘((Interpolant))’
I want to select my current input only after I generate the pybamm.Simulation object, such that I do not need to reinstantiante the entire simulation object each time I want to change the current (beit constant current or a dyanmic profile). How could I do it?