Description
I'm working on a PyBaMM model for a lithium-ion battery with a silicon (Si) negative electrode, and I've enabled hysteresis for the Si open-circuit potential (OCP) while also using the lumped thermal model.
Expected behavior
When hysteresis is enabled for the Si OCP, the model should dynamically compute the effective OCV based on the hysteresis function (e.g., "one-state" or "current sigmoid"), and I should not need to manually provide an average Si OCV. The thermal model should use the hysteresis-derived OCV for heat generation calculations.
Actual behavior
The model still requires me to explicitly provide an average Si OCV as a parameter. Currently, I'm using a workaround where I define the average OCV as the mean of the lithiation and delithiation OCPs:
def silicon_ocp_average(self, sto):
return (self.silicon_ocp_lithiation(sto) + self.silicon_ocp_delithiation(sto)) / 2
and pass this as the "Negative electrode OCP [V]" parameter. However, this approach is not ideal because it may lead to inaccurate heat generation calculations, as the thermal model should use the hysteresis-adjusted OCV instead of a static average.
Relevant code snippets
Parameter definitions:
"Secondary: Negative electrode diffusivity [m2.s-1]": self.silicon_diffusivity,
"Secondary: Negative electrode lithiation OCP [V]": self.silicon_ocp_lithiation,
"Secondary: Negative electrode delithiation OCP [V]": self.silicon_ocp_delithiation,
"Secondary: Negative electrode OCP [V]": self.silicon_ocp_average,
Model parameter settings:
if I_input == "user":
h_method = "one-state"
else:
h_method = "current sigmoid"
para = self.get_parameter_values()
model = pybamm.lithium_ion.DFN(
{
"particle phases": ("2", "1"),
"open-circuit potential": ({"single": f"{h_method}"}, "single"),
"thermal": "lumped",
"contact resistance": "true",
"cell geometry": "arbitrary"
}
)
Motivation
Is there a way to configure the model so that it automatically uses the hysteresis-derived OCV for heat generation calculations in the lumped thermal model, without needing to manually provide an average Si OCV? If this is not currently supported, could this feature be considered for future development?
Possible Implementation
No response
Additional context
No response
Description
I'm working on a PyBaMM model for a lithium-ion battery with a silicon (Si) negative electrode, and I've enabled hysteresis for the Si open-circuit potential (OCP) while also using the lumped thermal model.
Expected behavior
When hysteresis is enabled for the Si OCP, the model should dynamically compute the effective OCV based on the hysteresis function (e.g., "one-state" or "current sigmoid"), and I should not need to manually provide an average Si OCV. The thermal model should use the hysteresis-derived OCV for heat generation calculations.
Actual behavior
The model still requires me to explicitly provide an average Si OCV as a parameter. Currently, I'm using a workaround where I define the average OCV as the mean of the lithiation and delithiation OCPs:
and pass this as the "Negative electrode OCP [V]" parameter. However, this approach is not ideal because it may lead to inaccurate heat generation calculations, as the thermal model should use the hysteresis-adjusted OCV instead of a static average.
Relevant code snippets
Parameter definitions:
Model parameter settings:
Motivation
Is there a way to configure the model so that it automatically uses the hysteresis-derived OCV for heat generation calculations in the lumped thermal model, without needing to manually provide an average Si OCV? If this is not currently supported, could this feature be considered for future development?
Possible Implementation
No response
Additional context
No response