From 313c9c39b63c7f2dfd29106b2d4aa5e2f10a8f0a Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Tue, 3 Aug 2021 21:51:08 +0100 Subject: [PATCH] #1477 fix bug in solution --- pybamm/solvers/solution.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pybamm/solvers/solution.py b/pybamm/solvers/solution.py index 6cba2dd8c6..8c6b794be5 100644 --- a/pybamm/solvers/solution.py +++ b/pybamm/solvers/solution.py @@ -135,11 +135,25 @@ def __init__( pybamm.citations.register("Andersson2019") def extract_explicit_sensitivities(self): + # if we got here, we havn't set y yet + self.set_y() + + # extract sensitivities from full y solution self._y, self._sensitivities = \ self._extract_explicit_sensitivities( self.all_models[0], self.y, self.t, self.all_inputs[0] ) + # make sure we remove all sensitivities from all_ys + for index, (model, ys, ts, inputs) in enumerate( + zip(self.all_models, self.all_ys, self.all_ts, + self.all_inputs) + ): + self._all_ys[index], _ = \ + self._extract_explicit_sensitivities( + model, ys, ts, inputs + ) + def _extract_explicit_sensitivities(self, model, y, t_eval, inputs): """ given a model and a solution y, extracts the sensitivities @@ -411,6 +425,10 @@ def set_summary_variables(self, all_summary_variables): def update(self, variables): """Add ProcessedVariables to the dictionary of variables in the solution""" + # make sure that sensitivities are extracted if required + if isinstance(self._sensitivities, bool) and self._sensitivities: + self.extract_explicit_sensitivities() + # Convert single entry to list if isinstance(variables, str): variables = [variables]