From c2e1c1a5de99410a2d8b7d83dd702bf7221df9a3 Mon Sep 17 00:00:00 2001 From: Valentin Sulzer Date: Fri, 31 Jan 2020 23:35:48 -0500 Subject: [PATCH] #709 fixing examples --- .../models/compare-lithium-ion.ipynb | 54 +++++------ examples/notebooks/models/lead-acid.ipynb | 97 ++++++++++--------- 2 files changed, 77 insertions(+), 74 deletions(-) diff --git a/examples/notebooks/models/compare-lithium-ion.ipynb b/examples/notebooks/models/compare-lithium-ion.ipynb index 8dc595a4c5..8971dea6c2 100644 --- a/examples/notebooks/models/compare-lithium-ion.ipynb +++ b/examples/notebooks/models/compare-lithium-ion.ipynb @@ -104,7 +104,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -248,14 +248,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Solved the Doyle-Fuller-Newman model in 3.515 seconds\n" + "Solved the Doyle-Fuller-Newman model in 0.426 seconds\n" ] }, { @@ -265,31 +265,30 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/input_parameter.py\u001b[0m in \u001b[0;36m_base_evaluate\u001b[0;34m(self, t, y, u)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0;31m# raise more informative error if can't find name in dict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/input_parameter.py\u001b[0m in \u001b[0;36m_base_evaluate\u001b[0;34m(self, t, y, u)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0;31m# raise more informative error if can't find name in dict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyError\u001b[0m: 'current'", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmodel_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mstart\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0msolution\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefault_solver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msolve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt_eval\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m\"current\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0mend\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Solved the {} in {:.3f} seconds\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/solvers/base_solver.py\u001b[0m in \u001b[0;36msolve\u001b[0;34m(self, model, t_eval, external_variables, inputs)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0;31m# Solve\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m solution, solve_time, termination = self.compute_solution(\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt_eval\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m )\n\u001b[1;32m 98\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/solvers/ode_solver.py\u001b[0m in \u001b[0;36mcompute_solution\u001b[0;34m(self, model, t_eval, inputs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;31m# Identify the event that caused termination\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 64\u001b[0;31m \u001b[0mtermination\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_termination_reason\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevents\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msolution\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msolve_time\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtermination\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/solvers/base_solver.py\u001b[0m in \u001b[0;36mget_termination_reason\u001b[0;34m(self, solution, events)\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0my_event\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madd_external\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my_event\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my_pad\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my_ext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m final_event_values[name] = abs(\n\u001b[0;32m--> 306\u001b[0;31m \u001b[0mevent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mt_event\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_event\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 307\u001b[0m )\n\u001b[1;32m 308\u001b[0m \u001b[0mtermination_event\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfinal_event_values\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfinal_event_values\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/functions.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 167\u001b[0;31m \u001b[0mevaluated_children\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mchild\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchildren\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 168\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevaluated_children\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/functions.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 167\u001b[0;31m \u001b[0mevaluated_children\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mchild\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchildren\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 168\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevaluated_children\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/unary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 74\u001b[0;31m \u001b[0mchild\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 75\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_unary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/symbol.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 556\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 557\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 558\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_base_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 559\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 560\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mevaluate_for_shape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/mnt/c/Users/vsulzer/Documents/Energy_Storage/PyBaMM/pybamm/expression_tree/input_parameter.py\u001b[0m in \u001b[0;36m_base_evaluate\u001b[0;34m(self, t, y, u)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# raise more informative error if can't find name in dict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Input parameter '{}' not found\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmodel_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mstart\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0msolution\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msolver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msolve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt_eval\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m\"current\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0mend\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Solved the {} in {:.3f} seconds\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/solvers/base_solver.py\u001b[0m in \u001b[0;36msolve\u001b[0;34m(self, model, t_eval, external_variables, inputs)\u001b[0m\n\u001b[1;32m 426\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 427\u001b[0m \u001b[0;31m# Identify the event that caused termination\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 428\u001b[0;31m \u001b[0mtermination\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_termination_reason\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevents\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 429\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 430\u001b[0m \u001b[0mpybamm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Finish solving {} ({})\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtermination\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/solvers/base_solver.py\u001b[0m in \u001b[0;36mget_termination_reason\u001b[0;34m(self, solution, events)\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mevents\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 564\u001b[0m final_event_values[name] = abs(\n\u001b[0;32m--> 565\u001b[0;31m \u001b[0mevent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mt_event\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msolution\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my_event\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 566\u001b[0m )\n\u001b[1;32m 567\u001b[0m \u001b[0mtermination_event\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfinal_event_values\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfinal_event_values\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/functions.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 167\u001b[0;31m \u001b[0mevaluated_children\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mchild\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchildren\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 168\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevaluated_children\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/functions.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 167\u001b[0;31m \u001b[0mevaluated_children\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mchild\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchildren\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 168\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevaluated_children\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/unary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 74\u001b[0;31m \u001b[0mchild\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 75\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_unary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/binary_operators.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0mright\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_binary_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/symbol.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, t, y, u, known_evals)\u001b[0m\n\u001b[1;32m 556\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mknown_evals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 557\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 558\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_base_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 559\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 560\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mevaluate_for_shape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/expression_tree/input_parameter.py\u001b[0m in \u001b[0;36m_base_evaluate\u001b[0;34m(self, t, y, u)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# raise more informative error if can't find name in dict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Input parameter '{}' not found\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mKeyError\u001b[0m: \"Input parameter 'current' not found\"" ] } @@ -298,9 +297,10 @@ "timer = pybamm.Timer()\n", "solutions = {}\n", "t_eval = np.linspace(0, 0.5, 100)\n", + "solver = pybamm.CasadiSolver()\n", "for model_name, model in models.items():\n", " start = timer.time()\n", - " solution = model.default_solver.solve(model, t_eval, inputs={\"current\": 1})\n", + " solution = solver.solve(model, t_eval, inputs={\"current\": 1})\n", " end = timer.time()\n", " print(\"Solved the {} in {:.3f} seconds\".format(model.name, end-start))\n", " solutions[model_name] = solution" @@ -431,7 +431,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.7.3" } }, "nbformat": 4, diff --git a/examples/notebooks/models/lead-acid.ipynb b/examples/notebooks/models/lead-acid.ipynb index 09e42c6b13..42e073f627 100644 --- a/examples/notebooks/models/lead-acid.ipynb +++ b/examples/notebooks/models/lead-acid.ipynb @@ -206,7 +206,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We load process parameters for each model, using the same set of (default) parameters for all" + "We load process parameters for each model, using the same set of (default) parameters for all. In anticipation of changing the current later, we make current an input parameter" ] }, { @@ -219,7 +219,10 @@ "models = [loqs, composite, full]\n", "\n", "# process parameters\n", + "def current_function(t):\n", + " return pybamm.InputParameter(\"current\")\n", "param = models[0].default_parameter_values\n", + "param[\"Current function [A]\"] = current_function\n", "for model in models:\n", " param.process_model(model)" ] @@ -237,7 +240,6 @@ "metadata": {}, "outputs": [], "source": [ - "discs = {}\n", "for model in models:\n", " # load and process default geometry\n", " geometry = model.default_geometry\n", @@ -246,15 +248,14 @@ " # discretise using default settings\n", " mesh = pybamm.Mesh(geometry, model.default_submesh_types, model.default_var_pts)\n", " disc = pybamm.Discretisation(mesh, model.default_spatial_methods)\n", - " disc.process_model(model)\n", - " discs[model] = disc" + " disc.process_model(model)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, we solve each model using its own individual solver" + "Finally, we solve each model using CasADi's solver and a current of 1A" ] }, { @@ -262,23 +263,13 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/vsulzer/Documents/Energy_storage/PyBaMM/PyBaMM-env/lib/python3.7/site-packages/scipy/integrate/_ivp/ivp.py:146: RuntimeWarning: invalid value encountered in greater_equal\n", - " up = (g <= 0) & (g_new >= 0)\n", - "/Users/vsulzer/Documents/Energy_storage/PyBaMM/PyBaMM-env/lib/python3.7/site-packages/scipy/integrate/_ivp/ivp.py:147: RuntimeWarning: invalid value encountered in less_equal\n", - " down = (g >= 0) & (g_new <= 0)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "Solved the LOQS model in 0.038 seconds\n", - "Solved the Composite model in 0.273 seconds\n", - "Solved the Full model in 1.584 seconds\n" + "Solved the LOQS model in 0.133 seconds\n", + "Solved the Composite model in 1.034 seconds\n", + "Solved the Full model in 1.187 seconds\n" ] } ], @@ -286,9 +277,10 @@ "timer = pybamm.Timer()\n", "solutions = {}\n", "t_eval = np.linspace(0, 0.5, 100)\n", + "solver = pybamm.CasadiSolver()\n", "for model in models:\n", " start = timer.time()\n", - " solution = model.default_solver.solve(model, t_eval)\n", + " solution = solver.solve(model, t_eval, inputs={\"current\": 1})\n", " end = timer.time()\n", " print(\"Solved the {} in {:.3f} seconds\".format(model.name, end-start))\n", " solutions[model] = solution" @@ -313,26 +305,9 @@ "execution_count": 8, "metadata": {}, "outputs": [ - { - "ename": "KeyError", - "evalue": "'Time [h]'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/solvers/solution.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;31m# return it if it exists\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 181\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_variables\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 182\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'Time [h]'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msolutions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mtime\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msolutions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Time [h]\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mvoltage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msolutions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Terminal voltage [V]\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvoltage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlw\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/solvers/solution.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 182\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[0;31m# otherwise create it, save it and then return it\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 184\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 185\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_variables\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Documents/Energy_storage/PyBaMM/pybamm/solvers/solution.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, variables)\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[0mpybamm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Post-processing {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 150\u001b[0m var = pybamm.ProcessedVariable(\n\u001b[0;32m--> 151\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariables\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mknown_evals\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 152\u001b[0m )\n\u001b[1;32m 153\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'Time [h]'" - ] - }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -364,11 +339,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6145d7740fa04796aa4dae9bb09c125e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=0.0, description='t', max=16.38242960161448, step=0.05), Output()), _d…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "mesh = list(discs.values())[0].mesh\n", "solution_values = [solutions[model] for model in models]\n", "quick_plot = pybamm.QuickPlot(solution_values)\n", "import ipywidgets as widgets\n", @@ -384,15 +373,29 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3578ee915f79432c931ffecf4b543c1b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=0.0, description='t', max=16.38242960161448, step=0.05), Output()), _d…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# update parameter values and solve again\n", - "param.update({\"Typical current [A]\": 20})\n", "for model in models:\n", - " param.update_model(model, discs[model])\n", - " solutions[model] = model.default_solver.solve(model, t_eval)\n", + " solutions[model] = solver.solve(model, t_eval, inputs={\"current\": 20})\n", "\n", "# Plot\n", "solution_values = [solutions[model] for model in models]\n",