SEI models#

class pybamm.sei.BaseModel(param, options, phase='primary', cracks=False)#

Base class for SEI models.

Parameters:
  • param (parameter class) – The parameters to use for this submodel

  • options (dict) – A dictionary of options to be passed to the model.

  • phase (str, optional) – Phase of the particle (default is “primary”)

  • cracks (bool, optional) – Whether this is a submodel for standard SEI or SEI on cracks

Extends: pybamm.models.submodels.interface.base_interface.BaseInterface

get_coupled_variables(variables)#

A public method that creates and returns the variables in a submodel which require variables in other submodels to be set first. For example, the exchange current density requires the concentration in the electrolyte to be created before it can be created. If a variable can be created independent of other submodels then it should be created in ‘get_fundamental_variables’ instead of this method.

Parameters:

variables (dict) – The variables in the whole model.

Returns:

The variables created in this submodel which depend on variables in other submodels.

Return type:

dict

class pybamm.sei.ConstantSEI(param, options, phase='primary')#

Class for SEI with constant thickness.

Note that there is no SEI current, so we don’t need to update the “sum of interfacial current densities” variables from pybamm.interface.BaseInterface

Parameters:
  • param (parameter class) – The parameters to use for this submodel

  • options (dict) – A dictionary of options to be passed to the model.

  • phase (str, optional) – Phase of the particle (default is “primary”)

Extends: pybamm.models.submodels.interface.sei.base_sei.BaseModel

get_coupled_variables(variables)#

A public method that creates and returns the variables in a submodel which require variables in other submodels to be set first. For example, the exchange current density requires the concentration in the electrolyte to be created before it can be created. If a variable can be created independent of other submodels then it should be created in ‘get_fundamental_variables’ instead of this method.

Parameters:

variables (dict) – The variables in the whole model.

Returns:

The variables created in this submodel which depend on variables in other submodels.

Return type:

dict

get_fundamental_variables()#

A public method that creates and returns the variables in a submodel which can be created independent of other submodels. For example, the electrolyte concentration variables can be created independent of whether any other variables have been defined in the model. As a rule, if a variable can be created without variables from other submodels, then it should be placed in this method.

Returns:

The variables created by the submodel which are independent of variables in other submodels.

Return type:

dict

class pybamm.sei.SEIGrowth(param, reaction_loc, options, phase='primary', cracks=False)#

Class for SEI growth.

Most of the models are from section 5.6.4 of the thesis of Scott Marquis (Marquis, S. G. (2020). Long-term degradation of lithium-ion batteries (Doctoral dissertation, University of Oxford)), and references therein

The ec reaction limited model is from: Yang, Xiao-Guang, et al. “Modeling of lithium plating induced aging of lithium-ion batteries: Transition from linear to nonlinear aging.” Journal of Power Sources 360 (2017): 28-40.

Parameters:
  • param (parameter class) – The parameters to use for this submodel

  • reaction_loc (str) – Where the reaction happens: “x-average” (SPM, SPMe, etc), “full electrode” (full DFN), or “interface” (half-cell model)

  • options (dict) – A dictionary of options to be passed to the model.

  • phase (str, optional) – Phase of the particle (default is “primary”)

  • cracks (bool, optional) – Whether this is a submodel for standard SEI or SEI on cracks

Extends: pybamm.models.submodels.interface.sei.base_sei.BaseModel

get_coupled_variables(variables)#

A public method that creates and returns the variables in a submodel which require variables in other submodels to be set first. For example, the exchange current density requires the concentration in the electrolyte to be created before it can be created. If a variable can be created independent of other submodels then it should be created in ‘get_fundamental_variables’ instead of this method.

Parameters:

variables (dict) – The variables in the whole model.

Returns:

The variables created in this submodel which depend on variables in other submodels.

Return type:

dict

get_fundamental_variables()#

A public method that creates and returns the variables in a submodel which can be created independent of other submodels. For example, the electrolyte concentration variables can be created independent of whether any other variables have been defined in the model. As a rule, if a variable can be created without variables from other submodels, then it should be placed in this method.

Returns:

The variables created by the submodel which are independent of variables in other submodels.

Return type:

dict

set_initial_conditions(variables)#

A method to set the initial conditions for the submodel. Note: this method modifies the state of self.initial_conditions. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

set_rhs(variables)#

A method to set the right hand side of the differential equations which contain a time derivative. Note: this method modifies the state of self.rhs. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

class pybamm.sei.NoSEI(param, options, phase='primary', cracks=False)#

Class for no SEI.

Parameters:
  • param (parameter class) – The parameters to use for this submodel

  • options (dict) – A dictionary of options to be passed to the model.

  • phase (str, optional) – Phase of the particle (default is “primary”)

  • cracks (bool, optional) – Whether this is a submodel for standard SEI or SEI on cracks

Extends: pybamm.models.submodels.interface.sei.base_sei.BaseModel

get_coupled_variables(variables)#

A public method that creates and returns the variables in a submodel which require variables in other submodels to be set first. For example, the exchange current density requires the concentration in the electrolyte to be created before it can be created. If a variable can be created independent of other submodels then it should be created in ‘get_fundamental_variables’ instead of this method.

Parameters:

variables (dict) – The variables in the whole model.

Returns:

The variables created in this submodel which depend on variables in other submodels.

Return type:

dict

get_fundamental_variables()#

A public method that creates and returns the variables in a submodel which can be created independent of other submodels. For example, the electrolyte concentration variables can be created independent of whether any other variables have been defined in the model. As a rule, if a variable can be created without variables from other submodels, then it should be placed in this method.

Returns:

The variables created by the submodel which are independent of variables in other submodels.

Return type:

dict