def lico2_cracking_rate_Ai2020(T_dim): """ lico2 particle cracking rate as a function of temperature [1, 2]. References ---------- .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 DOI: 10.1149/2.0122001JES. .. [2] > Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). Battery cycle life prediction with coupled chemical degradation and fatigue mechanics. Journal of the Electrochemical Society, 159(10), A1730. Parameters ---------- T: :class:`pybamm.Symbol` temperature, [K] Returns ------- k_cr: :class:`pybamm.Symbol` cracking rate, [m/(Pa.m0.5)^m_cr] where m_cr is another Paris' law constant """ k_cr = 3.9e-20 T_ref = Parameter("Reference temperature [K]") Eac_cr = Parameter( "Positive electrode activation energy for cracking rate [J.mol-1]") arrhenius = exp(Eac_cr / constants.R * (1 / T_dim - 1 / T_ref)) return k_cr * arrhenius
def dlnf_dlnc_Ai2020(c_e, T, T_ref=298.3, t_plus=0.38): """ Activity dependence of LiPF6 in EC:DMC as a function of ion concentration. References ---------- .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512. DOI: 10.1149/2.0122001JES. Parameters ---------- c_e: :class:`pybamm.Symbol` Dimensional electrolyte concentration, mol/m^3 T: :class:`pybamm.Symbol` Dimensional temperature, K Returns ------- :class:`pybamm.Symbol` 1 + dlnf/dlnc """ T_ref = Parameter("Reference temperature [K]") t_plus = Parameter("Cation transference number") dlnf_dlnc = ( 0.601 - 0.24 * (c_e / 1000) ** 0.5 + 0.982 * (1 - 0.0052 * (T - T_ref)) * (c_e / 1000) ** 1.5 ) / (1 - t_plus) return dlnf_dlnc
def lico2_volume_change_Ai2020(sto): """ lico2 particle volume change as a function of stochiometry [1, 2]. References ---------- .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 DOI: 10.1149/2.0122001JES. .. [2] > Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). A new method to model the thickness change of a commercial pouch cell during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. Parameters ---------- sto: :class:`pybamm.Symbol` Electrode stochiometry, dimensionless should be R-averaged particle concentration Returns ------- t_change:class:`pybamm.Symbol` volume change, dimensionless, normalised by particle volume """ omega = Parameter("Positive electrode partial molar volume [m3.mol-1]") c_p_max = Parameter("Maximum concentration in positive electrode [mol.m-3]") t_change = omega * c_p_max * sto return t_change
def lico2_electrolyte_exchange_current_density_Dualfoil1998(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between lico2 and LiPF6 in EC:DMC. References ---------- .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = 1 * 10**(-11) * constants.F # need to match the unit from m/s # (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 5000 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_p_max = Parameter( "Maximum concentration in positive electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_p_max - c_s_surf)**0.5)
def graphite_diffusivity_Dualfoil1998(sto, T): """ Graphite diffusivity as a function of stochiometry [1, 2, 3]. References ---------- .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 DOI: 10.1149/2.0122001JES. .. [2] > Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). A new method to model the thickness change of a commercial pouch cell during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. Parameters ---------- sto: :class:`pybamm.Symbol` Electrode stochiometry T: :class:`pybamm.Symbol` Dimensional temperature, [K] Returns ------- :class:`pybamm.Symbol` Solid diffusivity [m2.s-1] """ D_ref = 3.9 * 10 ** (-14) E_D_s = 5000 T_ref = Parameter("Reference temperature [K]") arrhenius = exp(E_D_s / constants.R * (1 / T_ref - 1 / T)) return D_ref * arrhenius
def nmc_electrolyte_exchange_current_density_Xu2019(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in EC:DMC. References ---------- .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss." Journal of The Electrochemical Society 166.14 (2019): A3456-A3463. Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ # assuming implicit correction of incorrect units from the paper m_ref = 5.76e-11 * constants.F # (A/m2)(mol/m3)**1.5 - includes ref concentrations c_p_max = Parameter("Maximum concentration in positive electrode [mol.m-3]") return m_ref * c_e ** 0.5 * c_s_surf ** 0.5 * (c_p_max - c_s_surf) ** 0.5
def plating_exchange_current_density_OKane2020(c_e, c_Li, T): """ Exchange-current density for Li plating reaction [A.m-2]. References ---------- .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and Monica Marinescu. "Physical origin of the differential voltage minimum associated with lithium plating in Li-ion batteries." Journal of The Electrochemical Society 167, no. 9 (2020): 090540. Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_Li : :class:`pybamm.Symbol` Plated lithium concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ k_plating = Parameter("Lithium plating kinetic rate constant [m.s-1]") return constants.F * k_plating * c_e
def graphite_electrolyte_exchange_current_density_PeymanMPM(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC. Check the unit of Reaction rate constant k0 is from Peyman MPM. References ---------- .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = 1.061 * 10**(-6) # unit has been converted # units are (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 37480 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_n_max = Parameter( "Maximum concentration in negative electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_n_max - c_s_surf)**0.5)
def oxygen_exchange_current_density_Sulzer2019(c_e, T): """ Dimensional oxygen exchange-current density in the positive electrode, from [1]_ References ---------- .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), 166(12), 2363 (2019). Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ j0_ref = 2.5e-23 # srinivasan2003mathematical c_e_typ = Parameter("Typical electrolyte concentration [mol.m-3]") j0 = j0_ref * (c_e / c_e_typ) return j0
def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in EC:DMC. References ---------- .. [1] Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. "Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models." Journal of the Electrochemical Society 167 (2020): 080534. Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = 3.42e-6 # (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 17800 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_p_max = Parameter( "Maximum concentration in positive electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_p_max - c_s_surf)**0.5)
def graphite_electrolyte_exchange_current_density_Dualfoil1998( c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC. References ---------- .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = (1 * 10**(-11) * constants.F ) # (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 5000 # activation energy for Temperature Dependent Reaction Constant [J/mol] arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_n_max = Parameter( "Maximum concentration in negative electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_n_max - c_s_surf)**0.5)
def LFP_electrolyte_exchange_current_density_kashkooli2017(c_e, c_s_surf, T): # , 1 """ Exchange-current density for Butler-Volmer reactions between LFP and electrolyte References ---------- .. [1] Kashkooli, A. G., Amirfazli, A., Farhad, S., Lee, D. U., Felicelli, S., Park, H. W., ... & Chen, Z. (2017). Representative volume element model of lithium-ion battery electrodes based on X-ray nano-tomography. Journal of Applied Electrochemistry, 47(3), 281-293. Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = 6 * 10**(-7) # (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 39570 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_p_max = Parameter( "Maximum concentration in positive electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_p_max - c_s_surf)**0.5)
def lico2_diffusivity_Dualfoil1998(sto, T): """ LiCo2 diffusivity as a function of stochiometry, in this case the diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. References ---------- .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html Parameters ---------- sto: :class:`pybamm.Symbol` Electrode stochiometry T: :class:`pybamm.Symbol` Dimensional temperature, [K] Returns ------- :class:`pybamm.Symbol` Solid diffusivity [m2.s-1] """ D_ref = 5.387 * 10**(-15) E_D_s = 5000 T_ref = Parameter("Reference temperature [K]") arrhenius = exp(E_D_s / constants.R * (1 / T_ref - 1 / T)) return D_ref * arrhenius
def NMC_electrolyte_exchange_current_density_PeymanMPM(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in EC:DMC. References ---------- .. Peyman MPM manuscript (to be submitted) Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = 4.824 * 10 ** (-6) # (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 39570 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_p_max = Parameter("Maximum concentration in positive electrode [mol.m-3]") return ( m_ref * arrhenius * c_e ** 0.5 * c_s_surf ** 0.5 * (c_p_max - c_s_surf) ** 0.5 )
def graphite_entropic_change_Moura2016(sto): """ Graphite entropic change in open circuit potential (OCP) at a temperature of 298.15K as a function of the stochiometry taken from Scott Moura's FastDFN code [1]. References ---------- .. [1] https://github.com/scott-moura/fastDFN Parameters ---------- sto : :class:`pybamm.Symbol` Stochiometry of material (li-fraction) """ c_n_max = Parameter( "Maximum concentration in negative electrode [mol.m-3]") du_dT = (-1.5 * (120.0 / c_n_max) * exp(-120 * sto) + (0.0351 / (0.083 * c_n_max)) * ((cosh( (sto - 0.286) / 0.083))**(-2)) - (0.0045 / (0.119 * c_n_max)) * ((cosh( (sto - 0.849) / 0.119))**(-2)) - (0.035 / (0.05 * c_n_max)) * ((cosh((sto - 0.9233) / 0.05))**(-2)) - (0.0147 / (0.034 * c_n_max)) * ((cosh( (sto - 0.5) / 0.034))**(-2)) - (0.102 / (0.142 * c_n_max)) * ((cosh((sto - 0.194) / 0.142))**(-2)) - (0.022 / (0.0164 * c_n_max)) * ((cosh( (sto - 0.9) / 0.0164))**(-2)) - (0.011 / (0.0226 * c_n_max)) * ((cosh((sto - 0.124) / 0.0226))**(-2)) + (0.0155 / (0.029 * c_n_max)) * ((cosh( (sto - 0.105) / 0.029))**(-2))) return du_dT
def graphite_electrolyte_exchange_current_density_Ramadass2004( c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC. References ---------- .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." (2004) Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ m_ref = 4.854 * 10**(-6) # (A/m2)(mol/m3)**1.5 E_r = 37480 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) c_n_max = Parameter( "Maximum concentration in negative electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_n_max - c_s_surf)**0.5)
def graphite_electrolyte_exchange_current_density_Kim2011(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC [1]. References ---------- .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ i0_ref = 36 # reference exchange current density at 100% SOC sto = 0.36 # stochiometry at 100% SOC c_s_n_max = Parameter( "Maximum concentration in negative electrode [mol.m-3]") c_s_n_ref = sto * c_s_n_max # reference electrode concentration c_e_ref = Parameter("Typical electrolyte concentration [mol.m-3]") alpha = 0.5 # charge transfer coefficient m_ref = i0_ref / (c_e_ref**alpha * (c_s_n_max - c_s_n_ref)**alpha * c_s_n_ref**alpha) E_r = 3e4 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) return (m_ref * arrhenius * c_e**alpha * c_s_surf**alpha * (c_s_n_max - c_s_surf)**alpha)
def nco_electrolyte_exchange_current_density_Ecker2015(c_e, c_s_surf, T): """ Exchange-current density for Butler-Volmer reactions between NCO and LiPF6 in EC:DMC [1, 2, 3]. References ---------- .. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of a lithium-ion battery i. determination of parameters." Journal of the Electrochemical Society 162.9 (2015): A1836-A1848. .. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of a lithium-ion battery ii. model validation." Journal of The Electrochemical Society 162.9 (2015): A1849-A1857. .. [3] Richardson, Giles, et. al. "Generalised single particle models for high-rate operation of graded lithium-ion electrodes: Systematic derivation and validation." Electrochemica Acta 339 (2020): 135862 Parameters ---------- c_e : :class:`pybamm.Symbol` Electrolyte concentration [mol.m-3] c_s_surf : :class:`pybamm.Symbol` Particle concentration [mol.m-3] T : :class:`pybamm.Symbol` Temperature [K] Returns ------- :class:`pybamm.Symbol` Exchange-current density [A.m-2] """ k_ref = 5.196e-11 # multiply by Faraday's constant to get correct units m_ref = constants.F * k_ref # (A/m2)(mol/m3)**1.5 - includes ref concentrations E_r = 4.36e4 arrhenius = exp(-E_r / (constants.R * T)) * exp(E_r / (constants.R * 296.15)) c_p_max = Parameter( "Maximum concentration in positive electrode [mol.m-3]") return (m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_p_max - c_s_surf)**0.5)
def lico2_entropic_change_Moura2016(sto): """ Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at a temperature of 298.15K as a function of the stochiometry. The fit is taken from Scott Moura's FastDFN code [1]. References ---------- .. [1] https://github.com/scott-moura/fastDFN Parameters ---------- sto : :class:`pybamm.Symbol` Stochiometry of material (li-fraction) """ c_p_max = Parameter( "Maximum concentration in positive electrode [mol.m-3]") # Since the equation for LiCo2 from this ref. has the stretch factor, # should this too? If not, the "bumps" in the OCV don't line up. stretch = 1.062 sto = stretch * sto du_dT = (0.07645 * (-54.4806 / c_p_max) * ((1.0 / cosh(30.834 - 54.4806 * sto))**2) + 2.1581 * (-50.294 / c_p_max) * ((cosh(52.294 - 50.294 * sto))**(-2)) + 0.14169 * (19.854 / c_p_max) * ((cosh(11.0923 - 19.8543 * sto))**(-2)) - 0.2051 * (5.4888 / c_p_max) * ((cosh(1.4684 - 5.4888 * sto))**(-2)) - (0.2531 / 0.1316 / c_p_max) * ((cosh( (-sto + 0.56478) / 0.1316))**(-2)) - (0.02167 / 0.006 / c_p_max) * ((cosh( (sto - 0.525) / 0.006))**(-2))) return du_dT