Source code for pybop.pybamm.design_variables

import pybamm


[docs] def add_variable_to_model(model, variable: str, target_time: float | None = None): """Supplement a lithium-ion model with a design variable.""" if variable == "Gravimetric energy density [Wh.kg-1]": model.variables["Gravimetric energy density [Wh.kg-1]"] = ( pybamm.ExplicitTimeIntegral( model.variables["Voltage [V]"] * model.variables["Current [A]"] / (3600 * pybamm.Parameter("Cell mass [kg]")), initial_condition=0.0, ) ) elif variable == "Volumetric energy density [Wh.m-3]": model.variables["Volumetric energy density [Wh.m-3]"] = ( pybamm.ExplicitTimeIntegral( model.variables["Voltage [V]"] * model.variables["Current [A]"] / (3600 * pybamm.Parameter("Cell volume [m3]")), initial_condition=0.0, ) ) elif variable == "Gravimetric power density [W.kg-1]": model.variables["Gravimetric power density [W.kg-1]"] = ( pybamm.ExplicitTimeIntegral( model.variables["Voltage [V]"] * model.variables["Current [A]"] / (target_time * pybamm.Parameter("Cell mass [kg]")), initial_condition=0.0, ) ) elif variable == "Volumetric power density [W.m-3]": model.variables["Volumetric power density [W.m-3]"] = ( pybamm.ExplicitTimeIntegral( model.variables["Voltage [V]"] * model.variables["Current [A]"] / (target_time * pybamm.Parameter("Cell volume [m3]")), initial_condition=0.0, ) ) else: raise ValueError(f"Unrecognised variable name: {variable}")