Skip to content

Problem: Forced to manually provide average Si OCV when using hysteresis with lumped thermal model #5400

@LijieZhong

Description

@LijieZhong

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions