Dear open source community,
thank you very much for this powerful package. We are currently preparing a manuscript where we had to adjust this tool to incorporate another equivalent circuit that is frequently used by our chair:
The equivalent circuit is basically identical to TLMQ, with the only difference being that the interface element is an RQ-element (constant phase element in parallel to a real resistance) instead of a simple constant phase element.
The impedance is given in Equation 11 (second part) of:
An Analysis Protocol for Three-Electrode Li-Ion Battery Impedance Spectra: Part I. Analysis of a High-Voltage Positive Electrode
by Johannes Landesfeind, Daniel Pritzl and Hubert. A. Gasteiger
Link:https://iopscience.iop.org/article/10.1149/2.0131709jes
a possible implementation could be (source should be changed):
@element(num_params=4, units=["Ohm", "Ohm","F sec^(gamma - 1)", ""])
def TLMQF(p, f):
"""Transmission-line with an RQ-element as interface impedance
as defined by https://iopscience.iop.org/article/10.1149/2.0131709jes.
Notes
-----
.. math::
Z = \\sqrt{R_{ion}Z_{S}} \\coth \\sqrt{\\frac{R_{ion}}{Z_{S}}}
[<number>] J. Landesfeind et al.,
Journal of The Electrochemical Society, 163 (7) A1373-A1387 (2016)
`doi: 10.1016/10.1149/2.1141607jes
<http://doi.org/10.1149/2.1141607jes>`_.
"""
omega = 2 * np.pi * np.array(f)
Rion, Rct, Qs, gamma = p[0], p[1], p[2],p[3]
Zs =1/( (Qs * (1j * omega) ** gamma) + 1./Rct )
Z = np.sqrt(Rion * Zs) / np.tanh(np.sqrt(Rion / Zs))
return Z
Best,
Josef Keilhofer