Kinetics

class pybamm.kinetics.BaseKinetics(param, domain, reaction, options, phase='primary')

Base submodel for kinetics

Parameters:
  • param – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.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

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_algebraic(variables)

A method to set the differential equations which do not contain a time derivative. Note: this method modifies the state of self.algebraic. 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_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 a implemented in pybamm.BaseSubModel.

Parameters:

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

class pybamm.kinetics.SymmetricButlerVolmer(param, domain, reaction, options, phase='primary')

Submodel which implements the symmetric forward Butler-Volmer equation:

\[j = 2 * j_0(c) * \sinh( (ne / (2 * (1 + \Theta T)) * \eta_r(c))\]
Parameters:
  • param (parameter class) – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –

class pybamm.kinetics.AsymmetricButlerVolmer(param, domain, reaction, options, phase='primary')

Submodel which implements the asymmetric forward Butler-Volmer equation

Parameters:
  • param (parameter class) – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –

class pybamm.kinetics.Linear(param, domain, reaction, options, phase='primary')

Submodel which implements linear kinetics. Valid for small overpotentials/currents.

Parameters:
  • param (parameter class) – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –

class pybamm.kinetics.Marcus(param, domain, reaction, options, phase='primary')

Submodel which implements Marcus kinetics.

Parameters:
  • param (parameter class) – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –

class pybamm.kinetics.MarcusHushChidsey(param, domain, reaction, options, phase='primary')

Submodel which implements asymptotic Marcus-Hush-Chidsey kinetics, as derived in [1].

References

Parameters:
  • param (parameter class) – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –

class pybamm.kinetics.NoReaction(param, domain, reaction, options, phase='primary')

Base submodel for when no reaction occurs

Parameters:
  • param – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –

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.kinetics.ForwardTafel(param, domain, reaction, options, phase='primary')

Base submodel which implements the forward Tafel equation:

\[j = u * j_0(c) * \exp((ne / (2 * (1 + \Theta T)) * \eta_r(c))\]
Parameters:
  • param – model parameters

  • domain (str) – The domain to implement the model, either: ‘Negative’ or ‘Positive’.

  • reaction (str) – The name of the reaction being implemented

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

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

  • **Extends (** pybamm.interface.kinetics.BaseKinetics) –