@@ -491,27 +491,27 @@ def test_dae_solver_algebraic_model(self):
491491 solver .solve (model , t_eval )
492492
493493 def test_interpolant_extrapolate (self ):
494- model = pybamm .lithium_ion .DFN ()
495- param = pybamm .ParameterValues ("NCA_Kim2011" )
496- experiment = pybamm .Experiment (
497- ["Charge at 1C until 4.2 V" ], period = "10 seconds"
498- )
494+ x = np .linspace (0 , 2 )
495+ var = pybamm .Variable ("var" )
496+ rhs = pybamm .FunctionParameter ("func" , {"var" : var })
499497
500- param ["Upper voltage cut-off [V]" ] = 4.8
498+ model = pybamm .BaseModel ()
499+ model .rhs [var ] = rhs
500+ model .initial_conditions [var ] = pybamm .Scalar (1 )
501+
502+ # Bug: we need to set the interpolant via parameter values for the extrapolation
503+ # to be detected
504+ def func (var ):
505+ return pybamm .Interpolant (x , x , var , interpolator = "linear" )
506+
507+ parameter_values = pybamm .ParameterValues ({"func" : func })
508+ parameter_values .process_model (model )
509+
510+ solver = pybamm .CasadiSolver ()
511+ t_eval = [0 , 5 ]
501512
502- sim = pybamm .Simulation (
503- model ,
504- parameter_values = param ,
505- experiment = experiment ,
506- solver = pybamm .CasadiSolver (
507- mode = "safe" ,
508- dt_max = 0.001 ,
509- extrap_tol = 1e-3 ,
510- extra_options_setup = {"max_num_steps" : 500 },
511- ),
512- )
513513 with self .assertRaisesRegex (pybamm .SolverError , "interpolation bounds" ):
514- sim .solve ()
514+ solver .solve (model , t_eval )
515515
516516 def test_casadi_safe_no_termination (self ):
517517 model = pybamm .BaseModel ()
0 commit comments