diff --git a/PyEIS/PyEIS.py b/PyEIS/PyEIS.py index 78b4832..fe8681c 100644 --- a/PyEIS/PyEIS.py +++ b/PyEIS/PyEIS.py @@ -5,33 +5,29 @@ @author: Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) """ -#Python dependencies +# Python dependencies from __future__ import division import pandas as pd import numpy as np +import mpmath as mp +import matplotlib as mpl +import seaborn as sns from scipy.constants import codata from pylab import * -from scipy.optimize import curve_fit -import mpmath as mp -from lmfit import minimize, Minimizer, Parameters, Parameter, report_fit -#from scipy.optimize import leastsq +from lmfit import minimize, report_fit + +# from scipy.optimize import leastsq pd.options.mode.chained_assignment = None -#Plotting -import matplotlib as mpl -import matplotlib.pyplot as plt -from matplotlib.ticker import LinearLocator, FormatStrFormatter -import seaborn as sns -import matplotlib.ticker as mtick -mpl.rc('mathtext', fontset='stixsans', default='regular') -mpl.rcParams.update({'axes.labelsize':22}) -mpl.rc('xtick', labelsize=16) -mpl.rc('ytick', labelsize=16) -mpl.rc('legend',fontsize=14) +# Plotting +mpl.rc("mathtext", fontset="stixsans", default="regular") +mpl.rcParams.update({"axes.labelsize": 22}) +mpl.rc("xtick", labelsize=16) +mpl.rc("ytick", labelsize=16) +mpl.rc("legend", fontsize=14) -from scipy.constants import codata -F = codata.physical_constants['Faraday constant'][0] -Rg = codata.physical_constants['molar gas constant'][0] +F = codata.physical_constants["Faraday constant"][0] +Rg = codata.physical_constants["molar gas constant"][0] ### Importing PyEIS add-ons from .PyEIS_Data_extraction import * @@ -42,101 +38,113 @@ ## # def freq_gen(f_start, f_stop, pts_decade=7): - ''' + """ Frequency Generator with logspaced freqencies - + Inputs ---------- f_start = frequency start [Hz] f_stop = frequency stop [Hz] pts_decade = Points/decade, default 7 [-] - + Output ---------- [0] = frequency range [Hz] [1] = Angular frequency range [1/s] - ''' + """ f_decades = np.log10(f_start) - np.log10(f_stop) - f_range = np.logspace(np.log10(f_start), np.log10(f_stop), num=np.around(pts_decade*f_decades), endpoint=True) + f_range = np.logspace( + np.log10(f_start), + np.log10(f_stop), + num=np.around(pts_decade * f_decades).astype(int), + endpoint=True, + ) w_range = 2 * np.pi * f_range return f_range, w_range + ### Simulation Element Functions ## # def elem_L(w, L): - ''' + """ Simulation Function: -L- Returns the impedance of an inductor - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] L = Inductance [ohm * s] - ''' - return 1j*w*L + """ + return 1j * w * L + -def elem_C(w,C): - ''' +def elem_C(w, C): + """ Simulation Function: -C- - + Inputs ---------- w = Angular frequency [1/s] - C = Capacitance [F] - ''' - return 1/(C*(w*1j)) + C = Capacitance [F] + """ + return 1 / (C * (w * 1j)) -def elem_Q(w,Q,n): - ''' + +def elem_Q(w, Q, n): + """ Simulation Function: -Q- - + Inputs ---------- w = Angular frequency [1/s] Q = Constant phase element [s^n/ohm] n = Constant phase elelment exponent [-] - ''' - return 1/(Q*(w*1j)**n) + """ + return 1 / (Q * (w * 1j) ** n) + ### Simulation Curciuts Functions ## # + def cir_RsC(w, Rs, C): - ''' + """ Simulation Function: -Rs-C- - + Inputs ---------- w = Angular frequency [1/s] Rs = Series resistance [Ohm] - C = Capacitance [F] - ''' - return Rs + 1/(C*(w*1j)) + C = Capacitance [F] + """ + return Rs + 1 / (C * (w * 1j)) + def cir_RsQ(w, Rs, Q, n): - ''' + """ Simulation Function: -Rs-Q- - + Inputs ---------- w = Angular frequency [1/s] Rs = Series resistance [Ohm] Q = Constant phase element [s^n/ohm] n = Constant phase elelment exponent [-] - ''' - return Rs + 1/(Q*(w*1j)**n) + """ + return Rs + 1 / (Q * (w * 1j) ** n) -def cir_RQ(w, R='none', Q='none', n='none', fs='none'): - ''' + +def cir_RQ(w, R="none", Q="none", n="none", fs="none"): + """ Simulation Function: -RQ- Return the impedance of an Rs-RQ circuit. See details for RQ under cir_RQ_fit() - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] @@ -144,22 +152,23 @@ def cir_RQ(w, R='none', Q='none', n='none', fs='none'): Q = Constant phase element [s^n/ohm] n = Constant phase elelment exponent [-] fs = Summit frequency of RQ circuit [Hz] - ''' - if R == 'none': - R = (1/(Q*(2*np.pi*fs)**n)) - elif Q == 'none': - Q = (1/(R*(2*np.pi*fs)**n)) - elif n == 'none': - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - return (R/(1+R*Q*(w*1j)**n)) - -def cir_RsRQ(w, Rs='none', R='none', Q='none', n='none', fs='none'): - ''' + """ + if R == "none": + R = 1 / (Q * (2 * np.pi * fs) ** n) + elif Q == "none": + Q = 1 / (R * (2 * np.pi * fs) ** n) + elif n == "none": + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + return R / (1 + R * Q * (w * 1j) ** n) + + +def cir_RsRQ(w, Rs="none", R="none", Q="none", n="none", fs="none"): + """ Simulation Function: -Rs-RQ- Return the impedance of an Rs-RQ circuit. See details for RQ under cir_RQ_fit() - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] @@ -168,43 +177,56 @@ def cir_RsRQ(w, Rs='none', R='none', Q='none', n='none', fs='none'): Q = Constant phase element [s^n/ohm] n = Constant phase elelment exponent [-] fs = Summit frequency of RQ circuit [Hz] - ''' - if R == 'none': - R = (1/(Q*(2*np.pi*fs)**n)) - elif Q == 'none': - Q = (1/(R*(2*np.pi*fs)**n)) - elif n == 'none': - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - return Rs + (R/(1+R*Q*(w*1j)**n)) - -def cir_RC(w, C='none', R='none', fs='none'): - ''' + """ + if R == "none": + R = 1 / (Q * (2 * np.pi * fs) ** n) + elif Q == "none": + Q = 1 / (R * (2 * np.pi * fs) ** n) + elif n == "none": + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + return Rs + (R / (1 + R * Q * (w * 1j) ** n)) + + +def cir_RC(w, C="none", R="none", fs="none"): + """ Simulation Function: -RC- Returns the impedance of an RC circuit, using RQ definations where n=1. see cir_RQ() for details - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] R = Resistance [Ohm] C = Capacitance [F] fs = Summit frequency of RC circuit [Hz] - ''' + """ return cir_RQ(w, R=R, Q=C, n=1, fs=fs) -def cir_RsRQRQ(w, Rs, R='none', Q='none', n='none', fs='none', R2='none', Q2='none', n2='none', fs2='none'): - ''' + +def cir_RsRQRQ( + w, + Rs, + R="none", + Q="none", + n="none", + fs="none", + R2="none", + Q2="none", + n2="none", + fs2="none", +): + """ Simulation Function: -Rs-RQ-RQ- Return the impedance of an Rs-RQ circuit. See details for RQ under cir_RQ_fit() - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] Rs = Series Resistance [Ohm] - + R = Resistance [Ohm] Q = Constant phase element [s^n/ohm] n = Constant phase element exponent [-] @@ -214,32 +236,35 @@ def cir_RsRQRQ(w, Rs, R='none', Q='none', n='none', fs='none', R2='none', Q2='no Q2 = Constant phase element [s^n/ohm] n2 = Constant phase element exponent [-] fs2 = Summit frequency of RQ circuit [Hz] - ''' - if R == 'none': - R = (1/(Q*(2*np.pi*fs)**n)) - elif Q == 'none': - Q = (1/(R*(2*np.pi*fs)**n)) - elif n == 'none': - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - - if R2 == 'none': - R2 = (1/(Q2*(2*np.pi*fs2)**n2)) - elif Q2 == 'none': - Q2 = (1/(R2*(2*np.pi*fs2)**n2)) - elif n2 == 'none': - n2 = np.log(Q2*R2)/np.log(1/(2*np.pi*fs2)) - - return Rs + (R/(1+R*Q*(w*1j)**n)) + (R2/(1+R2*Q2*(w*1j)**n2)) - -def cir_RsRQQ(w, Rs, Q, n, R1='none', Q1='none', n1='none', fs1='none'): - ''' + """ + if R == "none": + R = 1 / (Q * (2 * np.pi * fs) ** n) + elif Q == "none": + Q = 1 / (R * (2 * np.pi * fs) ** n) + elif n == "none": + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + + if R2 == "none": + R2 = 1 / (Q2 * (2 * np.pi * fs2) ** n2) + elif Q2 == "none": + Q2 = 1 / (R2 * (2 * np.pi * fs2) ** n2) + elif n2 == "none": + n2 = np.log(Q2 * R2) / np.log(1 / (2 * np.pi * fs2)) + + return ( + Rs + (R / (1 + R * Q * (w * 1j) ** n)) + (R2 / (1 + R2 * Q2 * (w * 1j) ** n2)) + ) + + +def cir_RsRQQ(w, Rs, Q, n, R1="none", Q1="none", n1="none", fs1="none"): + """ Simulation Function: -Rs-RQ-Q- - + Inputs ---------- w = Angular frequency [1/s] Rs = Series Resistance [ohm] - + R1 = Resistance in (RQ) circuit [ohm] Q1 = Constant phase element in (RQ) circuit [s^n/ohm] n1 = Constant phase elelment exponent in (RQ) circuit [-] @@ -247,73 +272,90 @@ def cir_RsRQQ(w, Rs, Q, n, R1='none', Q1='none', n1='none', fs1='none'): Q = Constant phase element of series Q [s^n/ohm] n = Constant phase elelment exponent of series Q [-] - ''' - return Rs + cir_RQ(w, R=R1, Q=Q1, n=n1, fs=fs1) + elem_Q(w,Q,n) + """ + return Rs + cir_RQ(w, R=R1, Q=Q1, n=n1, fs=fs1) + elem_Q(w, Q, n) -def cir_RsRQC(w, Rs, C, R1='none', Q1='none', n1='none', fs1='none'): - ''' + +def cir_RsRQC(w, Rs, C, R1="none", Q1="none", n1="none", fs1="none"): + """ Simulation Function: -Rs-RQ-C- - + Inputs ---------- w = Angular frequency [1/s] Rs = Series Resistance [ohm] - + R1 = Resistance in (RQ) circuit [ohm] Q1 = Constant phase element in (RQ) circuit [s^n/ohm] n1 = Constant phase elelment exponent in (RQ) circuit [-] fs1 = summit frequency of RQ circuit [Hz] C = Constant phase element of series Q [s^n/ohm] - ''' + """ return Rs + cir_RQ(w, R=R1, Q=Q1, n=n1, fs=fs1) + elem_C(w, C=C) + def cir_RsRCC(w, Rs, R1, C1, C): - ''' + """ Simulation Function: -Rs-RC-C- - + Inputs ---------- w = Angular frequency [1/s] Rs = Series Resistance [ohm] - + R1 = Resistance in (RQ) circuit [ohm] C1 = Constant phase element in (RQ) circuit [s^n/ohm] C = Capacitance of series C [s^n/ohm] - ''' - return Rs + cir_RC(w, C=C1, R=R1, fs='none') + elem_C(w, C=C) + """ + return Rs + cir_RC(w, C=C1, R=R1, fs="none") + elem_C(w, C=C) + def cir_RsRCQ(w, Rs, R1, C1, Q, n): - ''' + """ Simulation Function: -Rs-RC-Q- - + Inputs ---------- w = Angular frequency [1/s] Rs = Series Resistance [ohm] - + R1 = Resistance in (RQ) circuit [ohm] C1 = Constant phase element in (RQ) circuit [s^n/ohm] Q = Constant phase element of series Q [s^n/ohm] n = Constant phase elelment exponent of series Q [-] - ''' - return Rs + cir_RC(w, C=C1, R=R1, fs='none') + elem_Q(w,Q,n) - -def Randles_coeff(w, n_electron, A, E='none', E0='none', D_red='none', D_ox='none', C_red='none', C_ox='none', Rg=Rg, F=F, T=298.15): - ''' - Returns the Randles coefficient sigma [ohm/s^1/2]. + """ + return Rs + cir_RC(w, C=C1, R=R1, fs="none") + elem_Q(w, Q, n) + + +def Randles_coeff( + w, + n_electron, + A, + E="none", + E0="none", + D_red="none", + D_ox="none", + C_red="none", + C_ox="none", + Rg=Rg, + F=F, + T=298.15, +): + """ + Returns the Randles coefficient sigma [ohm/s^1/2]. Two cases: a) ox and red are both present in solution here both Cred and Dred are defined, b) In the particular case where initially only Ox species are present in the solution with bulk concentration C*_ox, the surface concentrations may be calculated as function of the electrode potential following Nernst equation. Here C_red and D_red == 'none' - + Ref.: - - Lasia, A.L., ISBN: 978-1-4614-8932-0, "Electrochemical Impedance Spectroscopy and its Applications" + - Lasia, A.L., ISBN: 978-1-4614-8932-0, "Electrochemical Impedance Spectroscopy and its Applications" - Bard A.J., ISBN: 0-471-04372-9, Faulkner L. R. (2001) "Electrochemical methods: Fundamentals and applications". New York: Wiley. Kristian B. Knudsen (kknu@berkeley.edu // kristianbknudsen@gmail.com) - + Inputs ---------- n_electron = number of e- [-] @@ -329,31 +371,55 @@ def Randles_coeff(w, n_electron, A, E='none', E0='none', D_red='none', D_ox='non if reduced specie is absent == 'none' E0 = formal potential [V] if reduced specie is absent == 'none' - + Returns ---------- Randles coefficient [ohm/s^1/2] - ''' - if C_red != 'none' and D_red != 'none': - sigma = ((Rg*T) / ((n_electron**2) * A * (F**2) * (2**(1/2)))) * ((1/(D_ox**(1/2) * C_ox)) + (1/(D_red**(1/2) * C_red))) - elif C_red == 'none' and D_red == 'none' and E!='none' and E0!= 'none': - f = F/(Rg*T) - x = (n_electron*f*(E-E0))/2 - func_cosh2 = (np.cosh(2*x)+1)/2 - sigma = ((4*Rg*T) / ((n_electron**2) * A * (F**2) * C_ox * ((2*D_ox)**(1/2)) )) * func_cosh2 + """ + if C_red != "none" and D_red != "none": + sigma = ((Rg * T) / ((n_electron ** 2) * A * (F ** 2) * (2 ** (1 / 2)))) * ( + (1 / (D_ox ** (1 / 2) * C_ox)) + (1 / (D_red ** (1 / 2) * C_red)) + ) + elif C_red == "none" and D_red == "none" and E != "none" and E0 != "none": + f = F / (Rg * T) + x = (n_electron * f * (E - E0)) / 2 + func_cosh2 = (np.cosh(2 * x) + 1) / 2 + sigma = ( + (4 * Rg * T) + / ((n_electron ** 2) * A * (F ** 2) * C_ox * ((2 * D_ox) ** (1 / 2))) + ) * func_cosh2 else: - print('define E and E0') - Z_Aw = sigma*(w**(-0.5))-1j*sigma*(w**(-0.5)) + print("define E and E0") + Z_Aw = sigma * (w ** (-0.5)) - 1j * sigma * (w ** (-0.5)) return Z_Aw -def cir_Randles(w, n_electron, D_red, D_ox, C_red, C_ox, Rs, Rct, n, E, A, Q='none', fs='none', E0=0, F=F, Rg=Rg, T=298.15): - ''' + +def cir_Randles( + w, + n_electron, + D_red, + D_ox, + C_red, + C_ox, + Rs, + Rct, + n, + E, + A, + Q="none", + fs="none", + E0=0, + F=F, + Rg=Rg, + T=298.15, +): + """ Simulation Function: Randles -Rs-(Q-(RW)-)- Return the impedance of a Randles circuit with full complity of the warbug constant NOTE: This Randles circuit is only meant for semi-infinate linear diffusion Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ---------- n_electron = number of e- [-] @@ -375,53 +441,68 @@ def cir_Randles(w, n_electron, D_red, D_ox, C_red, C_ox, Rs, Rct, n, E, A, Q='no Q = Constant phase element used to model the double-layer capacitance [F] n = expononent of the CPE [-] - + Returns ---------- The real and imaginary impedance of a Randles circuit [ohm] - ''' + """ Z_Rct = Rct - Z_Q = elem_Q(w,Q,n) - Z_w = Randles_coeff(w, n_electron=n_electron, E=E, E0=E0, D_red=D_red, D_ox=D_ox, C_red=C_red, C_ox=C_ox, A=A, T=T, Rg=Rg, F=F) - return Rs + 1/(1/Z_Q + 1/(Z_Rct+Z_w)) - - -def cir_Randles_simplified(w, Rs, R, n, sigma, Q='none', fs='none'): - ''' + Z_Q = elem_Q(w, Q, n) + Z_w = Randles_coeff( + w, + n_electron=n_electron, + E=E, + E0=E0, + D_red=D_red, + D_ox=D_ox, + C_red=C_red, + C_ox=C_ox, + A=A, + T=T, + Rg=Rg, + F=F, + ) + return Rs + 1 / (1 / Z_Q + 1 / (Z_Rct + Z_w)) + + +def cir_Randles_simplified(w, Rs, R, n, sigma, Q="none", fs="none"): + """ Simulation Function: Randles -Rs-(Q-(RW)-)- Return the impedance of a Randles circuit with a simplified - + NOTE: This Randles circuit is only meant for semi-infinate linear diffusion - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - if R == 'none': - R = (1/(Q*(2*np.pi*fs)**n)) - elif Q == 'none': - Q = (1/(R*(2*np.pi*fs)**n)) - elif n == 'none': - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - - Z_Q = 1/(Q*(w*1j)**n) + """ + if R == "none": + R = 1 / (Q * (2 * np.pi * fs) ** n) + elif Q == "none": + Q = 1 / (R * (2 * np.pi * fs) ** n) + elif n == "none": + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + + Z_Q = 1 / (Q * (w * 1j) ** n) Z_R = R - Z_w = sigma*(w**(-0.5))-1j*sigma*(w**(-0.5)) - - return Rs + 1/(1/Z_Q + 1/(Z_R+Z_w)) + Z_w = sigma * (w ** (-0.5)) - 1j * sigma * (w ** (-0.5)) + + return Rs + 1 / (1 / Z_Q + 1 / (Z_R + Z_w)) + # Polymer electrolytes -def cir_C_RC_C(w, Ce, Cb='none', Rb='none', fsb='none'): - ''' + +def cir_C_RC_C(w, Ce, Cb="none", Rb="none", fsb="none"): + """ Simulation Function: -C-(RC)-C- - + This circuit is often used for modeling blocking electrodes with a polymeric electrolyte, which exhibts a immobile ionic species in bulk that gives a capacitance contribution to the otherwise resistive electrolyte - + Ref: - - MacCallum J.R., and Vincent, C.A. "Polymer Electrolyte Reviews - 1" Elsevier Applied Science Publishers LTD, London, Bruce, P. "Electrical Measurements on Polymer Electrolytes" - + - MacCallum J.R., and Vincent, C.A. "Polymer Electrolyte Reviews - 1" Elsevier Applied Science Publishers LTD, London, Bruce, P. "Electrical Measurements on Polymer Electrolytes" + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] @@ -429,56 +510,71 @@ def cir_C_RC_C(w, Ce, Cb='none', Rb='none', fsb='none'): Rb = Bulk/series resistance [Ohm] Cb = Bulk capacitance [F] fsb = summit frequency of bulk (RC) circuit [Hz] - ''' - Z_C = elem_C(w,C=Ce) + """ + Z_C = elem_C(w, C=Ce) Z_RC = cir_RC(w, C=Cb, R=Rb, fs=fsb) return Z_C + Z_RC -def cir_Q_RQ_Q(w, Qe, ne, Qb='none', Rb='none', fsb='none', nb='none'): - ''' + +def cir_Q_RQ_Q(w, Qe, ne, Qb="none", Rb="none", fsb="none", nb="none"): + """ Simulation Function: -Q-(RQ)-Q- - + Modified cir_C_RC_C() circuits that can be used if electrodes and bulk are not behaving like ideal capacitors - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] Qe = Interfacial capacitance modeled with a CPE [F] ne = Interfacial constant phase element exponent [-] - + Rb = Bulk/series resistance [Ohm] Qb = Bulk capacitance modeled with a CPE [s^n/ohm] nb = Bulk constant phase element exponent [-] fsb = summit frequency of bulk (RQ) circuit [Hz] - ''' - Z_Q = elem_Q(w,Q=Qe,n=ne) + """ + Z_Q = elem_Q(w, Q=Qe, n=ne) Z_RQ = cir_RQ(w, Q=Qb, R=Rb, fs=fsb, n=nb) return Z_Q + Z_RQ + def tanh(x): - ''' + """ As numpy gives errors when tanh becomes very large, above 10^250, this functions is used for np.tanh - ''' - return (1-np.exp(-2*x))/(1+np.exp(-2*x)) - -def cir_RCRCZD(w, L, D_s, u1, u2, Cb='none', Rb='none', fsb='none', Ce='none', Re='none', fse='none'): - ''' + """ + return (1 - np.exp(-2 * x)) / (1 + np.exp(-2 * x)) + + +def cir_RCRCZD( + w, + L, + D_s, + u1, + u2, + Cb="none", + Rb="none", + fsb="none", + Ce="none", + Re="none", + fse="none", +): + """ Simulation Function: -RC_b-RC_e-Z_D - + This circuit has been used to study non-blocking electrodes with an ioniocally conducting electrolyte with a mobile and immobile ionic specie in bulk, this is mixed with a ionically conducting salt. This behavior yields in a impedance response, that consists of the interfacial impendaces -(RC_e)-, the ionically conducitng polymer -(RC_e)-, and the diffusional impedance from the dissolved salt. - + Refs.: - Sørensen, P.R. and Jacobsen T., Electrochimica Acta, 27, 1671-1675, 1982, "Conductivity, Charge Transfer and Transport number - An AC-Investigation of the Polymer Electrolyte LiSCN-Poly(ethyleneoxide)" - MacCallum J.R., and Vincent, C.A. "Polymer Electrolyte Reviews - 1" Elsevier Applied Science Publishers LTD, London - Bruce, P. "Electrical Measurements on Polymer Electrolytes" + Bruce, P. "Electrical Measurements on Polymer Electrolytes" Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- w = Angular frequency [1/s] @@ -494,440 +590,469 @@ def cir_RCRCZD(w, L, D_s, u1, u2, Cb='none', Rb='none', fsb='none', Ce='none', R Rb = Bulk/series resistance [Ohm] Cb = Bulk capacitance [F] fsb = Summit frequency of the bulk (RC) circuit [Hz] - ''' + """ Z_RCb = cir_RC(w, C=Cb, R=Rb, fs=fsb) Z_RCe = cir_RC(w, C=Ce, R=Re, fs=fse) - alpha = ((w*1j*L**2)/D_s)**(1/2) - Z_D = Rb * (u2/u1) * (tanh(x=alpha)/alpha) + alpha = ((w * 1j * L ** 2) / D_s) ** (1 / 2) + Z_D = Rb * (u2 / u1) * (tanh(x=alpha) / alpha) return Z_RCb + Z_RCe + Z_D - + + # Transmission lines -def cir_RsTLsQ(w, Rs, L, Ri, Q='none', n='none'): - ''' + +def cir_RsTLsQ(w, Rs, L, Ri, Q="none", n="none"): + """ Simulation Function: -Rs-TLsQ- TLs = Simplified Transmission Line, with a non-faradaic interfacial impedance (Q) - - The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). - + + The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ----------- Rs = Series resistance [ohm] - + L = Length/Thickness of porous electrode [cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] Q = Interfacial capacitance of non-faradaic interface [F/cm] n = exponent for the interfacial capacitance [-] - ''' - Phi = 1/(Q*(w*1j)**n) - X1 = Ri # ohm/cm - Lam = (Phi/X1)**(1/2) #np.sqrt(Phi/X1) + """ + Phi = 1 / (Q * (w * 1j) ** n) + X1 = Ri # ohm/cm + Lam = (Phi / X1) ** (1 / 2) # np.sqrt(Phi/X1) - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) # Handles coth with x having very large or very small numbers - Z_TLsQ = Lam * X1 * coth_mp + Z_TLsQ = Lam * X1 * coth_mp return Rs + Z_TLsQ -def cir_RsRQTLsQ(w, Rs, R1, fs1, n1, L, Ri, Q, n, Q1='none'): - ''' + +def cir_RsRQTLsQ(w, Rs, R1, fs1, n1, L, Ri, Q, n, Q1="none"): + """ Simulation Function: -Rs-RQ-TLsQ- TLs = Simplified Transmission Line, with a non-faradaic interfacial impedance(Q) - - The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). - + + The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ----------- Rs = Series resistance [ohm] - + R1 = Charge transfer resistance of RQ circuit [ohm] fs1 = Summit frequency for RQ circuit [Hz] n1 = Exponent for RQ circuit [-] Q1 = Constant phase element of RQ circuit [s^n/ohm] - + L = Length/Thickness of porous electrode [cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] Q = Interfacial capacitance of non-faradaic interface [F/cm] n = Exponent for the interfacial capacitance [-] - + Output ----------- Impdance of Rs-(RQ)1-TLsQ - ''' + """ Z_RQ = cir_RQ(w=w, R=R1, Q=Q1, n=n1, fs=fs1) - - Phi = 1/(Q*(w*1j)**n) + + Phi = 1 / (Q * (w * 1j) ** n) X1 = Ri - Lam = (Phi/X1)**(1/2) - - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + Lam = (Phi / X1) ** (1 / 2) + + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) + coth_mp.append(float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j) Z_TLsQ = Lam * X1 * coth_mp - + return Rs + Z_RQ + Z_TLsQ -def cir_RsTLs(w, Rs, L, Ri, R='none', Q='none', n='none', fs='none'): - ''' + +def cir_RsTLs(w, Rs, L, Ri, R="none", Q="none", n="none", fs="none"): + """ Simulation Function: -Rs-TLs- TLs = Simplified Transmission Line, with a faradaic interfacial impedance (RQ) - - The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). - + + The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ----------- Rs = Series resistance [ohm] - + L = Length/Thickness of porous electrode [cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] R = Interfacial Charge transfer resistance [ohm*cm] fs = Summit frequency of interfacial RQ circuit [Hz] n = Exponent for interfacial RQ circuit [-] - Q = Constant phase element of interfacial capacitance [s^n/Ohm] + Q = Constant phase element of interfacial capacitance [s^n/Ohm] Output ----------- Impedance of Rs-TLs(RQ) - ''' + """ Phi = cir_RQ(w, R, Q, n, fs) X1 = Ri - Lam = (Phi/X1)**(1/2) + Lam = (Phi / X1) ** (1 / 2) - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers - + coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) # Handles coth with x having very large or very small numbers + Z_TLs = Lam * X1 * coth_mp - + return Rs + Z_TLs -def cir_RsRQTLs(w, Rs, L, Ri, R1, n1, fs1, R2, n2, fs2, Q1='none', Q2='none'): - ''' + +def cir_RsRQTLs(w, Rs, L, Ri, R1, n1, fs1, R2, n2, fs2, Q1="none", Q2="none"): + """ Simulation Function: -Rs-RQ-TLs- TLs = Simplified Transmission Line, with a faradaic interfacial impedance (RQ) - - The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). - + + The simplified transmission line assumes that Ri is much greater than Rel (electrode resistance). + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ----------- Rs = Series resistance [ohm] - + R1 = Charge transfer resistance of RQ circuit [ohm] fs1 = Summit frequency for RQ circuit [Hz] n1 = Exponent for RQ circuit [-] Q1 = Constant phase element of RQ circuit [s^n/(ohm * cm)] - + L = Length/Thickness of porous electrode [cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] R2 = Interfacial Charge transfer resistance [ohm*cm] fs2 = Summit frequency of interfacial RQ circuit [Hz] n2 = Exponent for interfacial RQ circuit [-] - Q2 = Constant phase element of interfacial capacitance [s^n/Ohm] - + Q2 = Constant phase element of interfacial capacitance [s^n/Ohm] + Output ----------- Impedance of Rs-(RQ)1-TLs(RQ)2 - ''' + """ Z_RQ = cir_RQ(w=w, R=R1, Q=Q1, n=n1, fs=fs1) - + Phi = cir_RQ(w=w, R=R2, Q=Q2, n=n2, fs=fs2) X1 = Ri - Lam = (Phi/X1)**(1/2) + Lam = (Phi / X1) ** (1 / 2) - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers - + coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) # Handles coth with x having very large or very small numbers + Z_TLs = Lam * X1 * coth_mp - + return Rs + Z_RQ + Z_TLs + ### Support function + def sinh(x): - ''' + """ As numpy gives errors when sinh becomes very large, above 10^250, this functions is used instead of np/mp.sinh() - ''' - return (1 - np.exp(-2*x))/(2*np.exp(-x)) + """ + return (1 - np.exp(-2 * x)) / (2 * np.exp(-x)) + def coth(x): - ''' + """ As numpy gives errors when coth becomes very large, above 10^250, this functions is used instead of np/mp.coth() - ''' - return (1 + np.exp(-2*x))/(1 - np.exp(-2*x)) + """ + return (1 + np.exp(-2 * x)) / (1 - np.exp(-2 * x)) + ### + def cir_RsTLQ(w, L, Rs, Q, n, Rel, Ri): - ''' + """ Simulation Function: -R-TLQ- (interfacial non-reacting, i.e. blocking electrode) Transmission line w/ full complexity, which both includes Ri and Rel - + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Rs = Series resistance [ohm] - Q = Constant phase element for the interfacial capacitance [s^n/ohm] + Q = Constant phase element for the interfacial capacitance [s^n/ohm] n = exponenet for interfacial RQ element [-] - + Rel = electronic resistance of electrode [ohm/cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] L = thickness of porous electrode [cm] - + Output -------------- Impedance of Rs-TL - ''' - #The impedance of the series resistance + """ + # The impedance of the series resistance Z_Rs = Rs - + # The Interfacial impedance is given by an -(RQ)- circuit Phi = elem_Q(w, Q=Q, n=n) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) - - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) - + Lam = (Phi / (X1 + X2)) ** (1 / 2) + + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) + return Z_Rs + Z_TL -def cir_RsRQTLQ(w, L, Rs, Q, n, Rel, Ri, R1, n1, fs1, Q1='none'): - ''' + +def cir_RsRQTLQ(w, L, Rs, Q, n, Rel, Ri, R1, n1, fs1, Q1="none"): + """ Simulation Function: -R-RQ-TLQ- (interfacial non-reacting, i.e. blocking electrode) Transmission line w/ full complexity, which both includes Ri and Rel - + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Rs = Series resistance [ohm] - + R1 = Charge transfer resistance of RQ circuit [ohm] fs1 = Summit frequency for RQ circuit [Hz] n1 = exponent for RQ circuit [-] Q1 = constant phase element of RQ circuit [s^n/(ohm * cm)] - Q = Constant phase element for the interfacial capacitance [s^n/ohm] + Q = Constant phase element for the interfacial capacitance [s^n/ohm] n = exponenet for interfacial RQ element [-] - + Rel = electronic resistance of electrode [ohm/cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] L = thickness of porous electrode [cm] - + Output -------------- Impedance of Rs-TL - ''' - #The impedance of the series resistance + """ + # The impedance of the series resistance Z_Rs = Rs - - #The (RQ) circuit in series with the transmission line + + # The (RQ) circuit in series with the transmission line Z_RQ1 = cir_RQ(w=w, R=R1, Q=Q1, n=n1, fs=fs1) - + # The Interfacial impedance is given by an -(RQ)- circuit Phi = elem_Q(w, Q=Q, n=n) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) - - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) - + Lam = (Phi / (X1 + X2)) ** (1 / 2) + + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) + return Z_Rs + Z_RQ1 + Z_TL -def cir_RsTL(w, L, Rs, R, fs, n, Rel, Ri, Q='none'): - ''' + +def cir_RsTL(w, L, Rs, R, fs, n, Rel, Ri, Q="none"): + """ Simulation Function: -R-TL- (interfacial reacting, i.e. non-blocking) Transmission line w/ full complexity, which both includes Ri and Rel - + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Rs = Series resistance [ohm] - + R = Interfacial charge transfer resistance [ohm * cm] fs = Summit frequency for the interfacial RQ element [Hz] n = Exponenet for interfacial RQ element [-] Q = Constant phase element for the interfacial capacitance [s^n/ohm] - + Rel = Electronic resistance of electrode [ohm/cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] L = Thickness of porous electrode [cm] - + Output -------------- Impedance of Rs-TL - ''' - #The impedance of the series resistance + """ + # The impedance of the series resistance Z_Rs = Rs - + # The Interfacial impedance is given by an -(RQ)- circuit Phi = cir_RQ(w, R=R, Q=Q, n=n, fs=fs) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) + Lam = (Phi / (X1 + X2)) ** (1 / 2) - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_TL -def cir_RsRQTL(w, L, Rs, R1, fs1, n1, R2, fs2, n2, Rel, Ri, Q1='none', Q2='none'): - ''' + +def cir_RsRQTL(w, L, Rs, R1, fs1, n1, R2, fs2, n2, Rel, Ri, Q1="none", Q2="none"): + """ Simulation Function: -R-RQ-TL- (interfacial reacting, i.e. non-blocking) Transmission line w/ full complexity, which both includes Ri and Rel - + Ref.: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Rs = Series resistance [ohm] - + R1 = Charge transfer resistance of RQ circuit [ohm] fs1 = Summit frequency for RQ circuit [Hz] n1 = exponent for RQ circuit [-] Q1 = constant phase element of RQ circuit [s^n/(ohm * cm)] - + R2 = interfacial charge transfer resistance [ohm * cm] fs2 = Summit frequency for the interfacial RQ element [Hz] n2 = exponenet for interfacial RQ element [-] Q2 = Constant phase element for the interfacial capacitance [s^n/ohm] - + Rel = electronic resistance of electrode [ohm/cm] Ri = Ionic resistance inside of flodded pores [ohm/cm] L = thickness of porous electrode [cm] - + Output -------------- Impedance of Rs-TL - ''' - #The impedance of the series resistance + """ + # The impedance of the series resistance Z_Rs = Rs - - #The (RQ) circuit in series with the transmission line + + # The (RQ) circuit in series with the transmission line Z_RQ1 = cir_RQ(w=w, R=R1, Q=Q1, n=n1, fs=fs1) - + # The Interfacial impedance is given by an -(RQ)- circuit Phi = cir_RQ(w, R=R2, Q=Q2, n=n2, fs=fs2) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) - - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + Lam = (Phi / (X1 + X2)) ** (1 / 2) + + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_RQ1 + Z_TL + # Transmission lines with solid-state transport + def cir_RsTL_1Dsolid(w, L, D, radius, Rs, R, Q, n, R_w, n_w, Rel, Ri): - ''' + """ Simulation Function: -R-TL(Q(RW))- Transmission line w/ full complexity, which both includes Ri and Rel - + Warburg element is specific for 1D solid-state diffusion - + Refs: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" @@ -935,1132 +1060,1194 @@ def cir_RsTL_1Dsolid(w, L, D, radius, Rs, R, Q, n, R_w, n_w, Rel, Ri): Relaxation of TiO2 nanoporous in aqueous solution" - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Illig, J., Physically based Impedance Modelling of Lithium-ion Cells, KIT Scientific Publishing (2014) - - Scipioni, et al., ECS Transactions, 69 (18) 71-80 (2015) - + - Scipioni, et al., ECS Transactions, 69 (18) 71-80 (2015) + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Rs = Series resistance [ohm] - + R = particle charge transfer resistance [ohm*cm^2] Q = Summit frequency peak of RQ element in the modified randles element of a particle [Hz] n = exponenet for internal RQ element in the modified randles element of a particle [-] - + Rel = electronic resistance of electrode [ohm/cm] Ri = ionic resistance of solution in flooded pores of electrode [ohm/cm] R_w = polarization resistance of finite diffusion Warburg element [ohm] n_w = exponent for Warburg element [-] - + L = thickness of porous electrode [cm] D = solid-state diffusion coefficient [cm^2/s] radius = average particle radius [cm] - + Output -------------- Impedance of Rs-TL(Q(RW)) - ''' - #The impedance of the series resistance + """ + # The impedance of the series resistance Z_Rs = Rs - - #The impedance of a 1D Warburg Element - time_const = (radius**2)/D - - x = (time_const*w*1j)**n_w + + # The impedance of a 1D Warburg Element + time_const = (radius ** 2) / D + + x = (time_const * w * 1j) ** n_w x_mp = mp.matrix(x) warburg_coth_mp = [] for i in range(len(w)): - warburg_coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) + warburg_coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) + + Z_w = R_w * np.array(warburg_coth_mp) / x - Z_w = R_w * np.array(warburg_coth_mp)/x - # The Interfacial impedance is given by a Randles Equivalent circuit with the finite space warburg element in series with R2 Z_Rct = R - Z_Q = elem_Q(w,Q=Q,n=n) - Z_Randles = 1/(1/Z_Q + 1/(Z_Rct+Z_w)) #Ohm + Z_Q = elem_Q(w, Q=Q, n=n) + Z_Randles = 1 / (1 / Z_Q + 1 / (Z_Rct + Z_w)) # Ohm # The Impedance of the Transmission Line - lamb = (Z_Randles/(Rel+Ri))**(1/2) - x = L/lamb -# lamb_mp = mp.matrix(x) -# sinh_mp = [] -# coth_mp = [] -# for j in range(len(lamb_mp)): -# sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) -# coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/sinh(x))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + lamb = (Z_Randles / (Rel + Ri)) ** (1 / 2) + x = L / lamb + # lamb_mp = mp.matrix(x) + # sinh_mp = [] + # coth_mp = [] + # for j in range(len(lamb_mp)): + # sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) + # coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * lamb) / sinh(x))) + lamb * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_TL -def cir_RsRQTL_1Dsolid(w, L, D, radius, Rs, R1, fs1, n1, R2, Q2, n2, R_w, n_w, Rel, Ri, Q1='none'): - ''' + +def cir_RsRQTL_1Dsolid( + w, L, D, radius, Rs, R1, fs1, n1, R2, Q2, n2, R_w, n_w, Rel, Ri, Q1="none" +): + """ Simulation Function: -R-RQ-TL(Q(RW))- Transmission line w/ full complexity, which both includes Ri and Rel - + Warburg element is specific for 1D solid-state diffusion - + Refs: - De Levie R., and Delahay P., Advances in Electrochemistry and Electrochemical Engineering, p. 329, Wiley-Interscience, New York (1973) - Bisquert J. Electrochemistry Communications 1, 1999, 429-435, "Anamalous transport effects in the impedance of porous film electrodes" - Bisquert J. J. Phys. Chem. B., 2000, 104, 2287-2298, "Doubling exponent models for the analysis of porous film electrodes by impedance. Relaxation of TiO2 nanoporous in aqueous solution" - Illig, J., Physically based Impedance Modelling of Lithium-ion Cells, KIT Scientific Publishing (2014) - - Scipioni, et al., ECS Transactions, 69 (18) 71-80 (2015) - + - Scipioni, et al., ECS Transactions, 69 (18) 71-80 (2015) + David Brown (demoryb@berkeley.edu) Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Rs = Series resistance [ohm] - + R1 = charge transfer resistance of the interfacial RQ element [ohm*cm^2] fs1 = max frequency peak of the interfacial RQ element[Hz] n1 = exponenet for interfacial RQ element - + R2 = particle charge transfer resistance [ohm*cm^2] Q2 = Summit frequency peak of RQ element in the modified randles element of a particle [Hz] n2 = exponenet for internal RQ element in the modified randles element of a particle [-] - + Rel = electronic resistance of electrode [ohm/cm] Ri = ionic resistance of solution in flooded pores of electrode [ohm/cm] R_w = polarization resistance of finite diffusion Warburg element [ohm] n_w = exponent for Warburg element [-] - + L = thickness of porous electrode [cm] D = solid-state diffusion coefficient [cm^2/s] radius = average particle radius [cm] - + Output ------------------ Impedance of R-RQ-TL(Q(RW)) - ''' - #The impedance of the series resistance + """ + # The impedance of the series resistance Z_Rs = Rs - + # The Interfacial impedance is given by an -(RQ)- circuit Z_RQ = cir_RQ(w=w, R=R1, Q=Q1, n=n1, fs=fs1) - - #The impedance of a 1D Warburg Element - time_const = (radius**2)/D - - x = (time_const*w*1j)**n_w + + # The impedance of a 1D Warburg Element + time_const = (radius ** 2) / D + + x = (time_const * w * 1j) ** n_w x_mp = mp.matrix(x) warburg_coth_mp = [] for i in range(len(w)): - warburg_coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) + warburg_coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) + + Z_w = R_w * np.array(warburg_coth_mp) / x - Z_w = R_w * np.array(warburg_coth_mp)/x - # The Interfacial impedance is given by a Randles Equivalent circuit with the finite space warburg element in series with R2 Z_Rct = R2 - Z_Q = elem_Q(w,Q=Q2,n=n2) - Z_Randles = 1/(1/Z_Q + 1/(Z_Rct+Z_w)) #Ohm + Z_Q = elem_Q(w, Q=Q2, n=n2) + Z_Randles = 1 / (1 / Z_Q + 1 / (Z_Rct + Z_w)) # Ohm # The Impedance of the Transmission Line - lamb = (Z_Randles/(Rel+Ri))**(1/2) - x = L/lamb -# lamb_mp = mp.matrix(x) -# sinh_mp = [] -# coth_mp = [] -# for j in range(len(lamb_mp)): -# sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) -# coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) -# -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/sinh(x))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) - + lamb = (Z_Randles / (Rel + Ri)) ** (1 / 2) + x = L / lamb + # lamb_mp = mp.matrix(x) + # sinh_mp = [] + # coth_mp = [] + # for j in range(len(lamb_mp)): + # sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) + # coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) + # + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * lamb) / sinh(x))) + lamb * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) + return Z_Rs + Z_RQ + Z_TL + ### Fitting Circuit Functions ## # + def elem_C_fit(params, w): - ''' + """ Fit Function: -C- - ''' - C = params['C'] - return 1/(C*(w*1j)) + """ + C = params["C"] + return 1 / (C * (w * 1j)) + def elem_Q_fit(params, w): - ''' + """ Fit Function: -Q- - + Constant Phase Element for Fitting - ''' - Q = params['Q'] - n = params['n'] - return 1/(Q*(w*1j)**n) + """ + Q = params["Q"] + n = params["n"] + return 1 / (Q * (w * 1j) ** n) + def cir_RsC_fit(params, w): - ''' + """ Fit Function: -Rs-C- - ''' - Rs = params['Rs'] - C = params['C'] - return Rs + 1/(C*(w*1j)) + """ + Rs = params["Rs"] + C = params["C"] + return Rs + 1 / (C * (w * 1j)) + def cir_RsQ_fit(params, w): - ''' + """ Fit Function: -Rs-Q- - ''' - Rs = params['Rs'] - Q = params['Q'] - n = params['n'] - return Rs + 1/(Q*(w*1j)**n) + """ + Rs = params["Rs"] + Q = params["Q"] + n = params["n"] + return Rs + 1 / (Q * (w * 1j) ** n) + def cir_RC_fit(params, w): - ''' + """ Fit Function: -RC- Returns the impedance of an RC circuit, using RQ definations where n=1 - ''' - if str(params.keys())[10:].find("R") == -1: #if R == 'none': - Q = params['C'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("C") == -1: #elif Q == 'none': - R = params['R'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("n") == -1: #elif n == 'none': - R = params['R'] - Q = params['C'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("fs") == -1: #elif fs == 'none': - R = params['R'] - Q = params['C'] + """ + if str(params.keys())[10:].find("R") == -1: # if R == 'none': + Q = params["C"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("C") == -1: # elif Q == 'none': + R = params["R"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("n") == -1: # elif n == 'none': + R = params["R"] + Q = params["C"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("fs") == -1: # elif fs == 'none': + R = params["R"] + Q = params["C"] return cir_RQ(w, R=R, Q=C, n=1, fs=fs) def cir_RQ_fit(params, w): - ''' + """ Fit Function: -RQ- Return the impedance of an RQ circuit: Z(w) = R / (1+ R*Q * (2w)^n) - + See Explanation of equations under cir_RQ() - + The params.keys()[10:] finds the names of the user defined parameters that should be interated over if X == -1, if the paramter is not given, it becomes equal to 'none' - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - if str(params.keys())[10:].find("R") == -1: #if R == 'none': - Q = params['Q'] - n = params['n'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("Q") == -1: #elif Q == 'none': - R = params['R'] - n = params['n'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("n") == -1: #elif n == 'none': - R = params['R'] - Q = params['Q'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("fs") == -1: #elif fs == 'none': - R = params['R'] - n = params['n'] - Q = params['Q'] - return R/(1+R*Q*(w*1j)**n) + """ + if str(params.keys())[10:].find("R") == -1: # if R == 'none': + Q = params["Q"] + n = params["n"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("Q") == -1: # elif Q == 'none': + R = params["R"] + n = params["n"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("n") == -1: # elif n == 'none': + R = params["R"] + Q = params["Q"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("fs") == -1: # elif fs == 'none': + R = params["R"] + n = params["n"] + Q = params["Q"] + return R / (1 + R * Q * (w * 1j) ** n) + def cir_RsRQ_fit(params, w): - ''' + """ Fit Function: -Rs-RQ- Return the impedance of an Rs-RQ circuit. See details for RQ under cir_RsRQ_fit() - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - if str(params.keys())[10:].find("R") == -1: #if R == 'none': - Q = params['Q'] - n = params['n'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("Q") == -1: #elif Q == 'none': - R = params['R'] - n = params['n'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("n") == -1: #elif n == 'none': - R = params['R'] - Q = params['Q'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("fs") == -1: #elif fs == 'none': - R = params['R'] - Q = params['Q'] - n = params['n'] - - Rs = params['Rs'] - return Rs + (R/(1+R*Q*(w*1j)**n)) + """ + if str(params.keys())[10:].find("R") == -1: # if R == 'none': + Q = params["Q"] + n = params["n"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("Q") == -1: # elif Q == 'none': + R = params["R"] + n = params["n"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("n") == -1: # elif n == 'none': + R = params["R"] + Q = params["Q"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("fs") == -1: # elif fs == 'none': + R = params["R"] + Q = params["Q"] + n = params["n"] + + Rs = params["Rs"] + return Rs + (R / (1 + R * Q * (w * 1j) ** n)) + def cir_RsRQRQ_fit(params, w): - ''' + """ Fit Function: -Rs-RQ-RQ- Return the impedance of an Rs-RQ circuit. See details under cir_RsRQRQ() - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - if str(params.keys())[10:].find("'R'") == -1: #if R == 'none': - Q = params['Q'] - n = params['n'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("'Q'") == -1: #elif Q == 'none': - R = params['R'] - n = params['n'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("'n'") == -1: #elif n == 'none': - R = params['R'] - Q = params['Q'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("'fs'") == -1: #elif fs == 'none': - R = params['R'] - Q = params['Q'] - n = params['n'] - - if str(params.keys())[10:].find("'R2'") == -1: #if R == 'none': - Q2 = params['Q2'] - n2 = params['n2'] - fs2 = params['fs2'] - R2 = (1/(Q2*(2*np.pi*fs2)**n2)) - if str(params.keys())[10:].find("'Q2'") == -1: #elif Q == 'none': - R2 = params['R2'] - n2 = params['n2'] - fs2 = params['fs2'] - Q2 = (1/(R2*(2*np.pi*fs2)**n2)) - if str(params.keys())[10:].find("'n2'") == -1: #elif n == 'none': - R2 = params['R2'] - Q2 = params['Q2'] - fs2 = params['fs2'] - n2 = np.log(Q2*R2)/np.log(1/(2*np.pi*fs2)) - if str(params.keys())[10:].find("'fs2'") == -1: #elif fs == 'none': - R2 = params['R2'] - Q2 = params['Q2'] - n2 = params['n2'] - - Rs = params['Rs'] - return Rs + (R/(1+R*Q*(w*1j)**n)) + (R2/(1+R2*Q2*(w*1j)**n2)) + """ + if str(params.keys())[10:].find("'R'") == -1: # if R == 'none': + Q = params["Q"] + n = params["n"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("'Q'") == -1: # elif Q == 'none': + R = params["R"] + n = params["n"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("'n'") == -1: # elif n == 'none': + R = params["R"] + Q = params["Q"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("'fs'") == -1: # elif fs == 'none': + R = params["R"] + Q = params["Q"] + n = params["n"] + + if str(params.keys())[10:].find("'R2'") == -1: # if R == 'none': + Q2 = params["Q2"] + n2 = params["n2"] + fs2 = params["fs2"] + R2 = 1 / (Q2 * (2 * np.pi * fs2) ** n2) + if str(params.keys())[10:].find("'Q2'") == -1: # elif Q == 'none': + R2 = params["R2"] + n2 = params["n2"] + fs2 = params["fs2"] + Q2 = 1 / (R2 * (2 * np.pi * fs2) ** n2) + if str(params.keys())[10:].find("'n2'") == -1: # elif n == 'none': + R2 = params["R2"] + Q2 = params["Q2"] + fs2 = params["fs2"] + n2 = np.log(Q2 * R2) / np.log(1 / (2 * np.pi * fs2)) + if str(params.keys())[10:].find("'fs2'") == -1: # elif fs == 'none': + R2 = params["R2"] + Q2 = params["Q2"] + n2 = params["n2"] + + Rs = params["Rs"] + return ( + Rs + (R / (1 + R * Q * (w * 1j) ** n)) + (R2 / (1 + R2 * Q2 * (w * 1j) ** n2)) + ) + def cir_Randles_simplified_Fit(params, w): - ''' + """ Fit Function: Randles simplified -Rs-(Q-(RW)-)- Return the impedance of a Randles circuit. See more under cir_Randles_simplified() NOTE: This Randles circuit is only meant for semi-infinate linear diffusion - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - if str(params.keys())[10:].find("'R'") == -1: #if R == 'none': - Q = params['Q'] - n = params['n'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("'Q'") == -1: #elif Q == 'none': - R = params['R'] - n = params['n'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("'n'") == -1: #elif n == 'none': - R = params['R'] - Q = params['Q'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("'fs'") == -1: #elif fs == 'none': - R = params['R'] - Q = params['Q'] - n = params['n'] - - Rs = params['Rs'] - sigma = params['sigma'] - - Z_Q = 1/(Q*(w*1j)**n) + """ + if str(params.keys())[10:].find("'R'") == -1: # if R == 'none': + Q = params["Q"] + n = params["n"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("'Q'") == -1: # elif Q == 'none': + R = params["R"] + n = params["n"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("'n'") == -1: # elif n == 'none': + R = params["R"] + Q = params["Q"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("'fs'") == -1: # elif fs == 'none': + R = params["R"] + Q = params["Q"] + n = params["n"] + + Rs = params["Rs"] + sigma = params["sigma"] + + Z_Q = 1 / (Q * (w * 1j) ** n) Z_R = R - Z_w = sigma*(w**(-0.5))-1j*sigma*(w**(-0.5)) - - return Rs + 1/(1/Z_Q + 1/(Z_R+Z_w)) + Z_w = sigma * (w ** (-0.5)) - 1j * sigma * (w ** (-0.5)) + + return Rs + 1 / (1 / Z_Q + 1 / (Z_R + Z_w)) + def cir_RsRQQ_fit(params, w): - ''' + """ Fit Function: -Rs-RQ-Q- - + See cir_RsRQQ() for details - ''' - Rs = params['Rs'] - Q = params['Q'] - n = params['n'] - Z_Q = 1/(Q*(w*1j)**n) - - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - if str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ = (R1/(1+R1*Q1*(w*1j)**n1)) - + """ + Rs = params["Rs"] + Q = params["Q"] + n = params["n"] + Z_Q = 1 / (Q * (w * 1j) ** n) + + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + if str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + return Rs + Z_RQ + Z_Q + def cir_RsRQC_fit(params, w): - ''' + """ Fit Function: -Rs-RQ-C- - + See cir_RsRQC() for details - ''' - Rs = params['Rs'] - C = params['C'] - Z_C = 1/(C*(w*1j)) - - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - if str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ = (R1/(1+R1*Q1*(w*1j)**n1)) - + """ + Rs = params["Rs"] + C = params["C"] + Z_C = 1 / (C * (w * 1j)) + + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + if str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + return Rs + Z_RQ + Z_C + def cir_RsRCC_fit(params, w): - ''' + """ Fit Function: -Rs-RC-C- - + See cir_RsRCC() for details - ''' - Rs = params['Rs'] - R1 = params['R1'] - C1 = params['C1'] - C = params['C'] - return Rs + cir_RC(w, C=C1, R=R1, fs='none') + elem_C(w, C=C) + """ + Rs = params["Rs"] + R1 = params["R1"] + C1 = params["C1"] + C = params["C"] + return Rs + cir_RC(w, C=C1, R=R1, fs="none") + elem_C(w, C=C) + def cir_RsRCQ_fit(params, w): - ''' + """ Fit Function: -Rs-RC-Q- - + See cir_RsRCQ() for details - ''' - Rs = params['Rs'] - R1 = params['R1'] - C1 = params['C1'] - Q = params['Q'] - n = params['n'] - return Rs + cir_RC(w, C=C1, R=R1, fs='none') + elem_Q(w,Q,n) + """ + Rs = params["Rs"] + R1 = params["R1"] + C1 = params["C1"] + Q = params["Q"] + n = params["n"] + return Rs + cir_RC(w, C=C1, R=R1, fs="none") + elem_Q(w, Q, n) + # Polymer electrolytes - + + def cir_C_RC_C_fit(params, w): - ''' + """ Fit Function: -C-(RC)-C- - + See cir_C_RC_C() for details - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' + """ # Interfacial impedance - Ce = params['Ce'] - Z_C = 1/(Ce*(w*1j)) - + Ce = params["Ce"] + Z_C = 1 / (Ce * (w * 1j)) + # Bulk impendance - if str(params.keys())[10:].find("Rb") == -1: #if R == 'none': - Cb = params['Cb'] - fsb = params['fsb'] - Rb = (1/(Cb*(2*np.pi*fsb))) - if str(params.keys())[10:].find("Cb") == -1: #elif Q == 'none': - Rb = params['Rb'] - fsb = params['fsb'] - Cb = (1/(Rb*(2*np.pi*fsb))) - if str(params.keys())[10:].find("fsb") == -1: #elif fs == 'none': - Rb = params['Rb'] - Cb = params['Cb'] - Z_RC = (Rb/(1+Rb*Cb*(w*1j))) - + if str(params.keys())[10:].find("Rb") == -1: # if R == 'none': + Cb = params["Cb"] + fsb = params["fsb"] + Rb = 1 / (Cb * (2 * np.pi * fsb)) + if str(params.keys())[10:].find("Cb") == -1: # elif Q == 'none': + Rb = params["Rb"] + fsb = params["fsb"] + Cb = 1 / (Rb * (2 * np.pi * fsb)) + if str(params.keys())[10:].find("fsb") == -1: # elif fs == 'none': + Rb = params["Rb"] + Cb = params["Cb"] + Z_RC = Rb / (1 + Rb * Cb * (w * 1j)) return Z_C + Z_RC + def cir_Q_RQ_Q_Fit(params, w): - ''' + """ Fit Function: -Q-(RQ)-Q- - + See cir_Q_RQ_Q() for details - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' + """ # Interfacial impedance - Qe = params['Qe'] - ne = params['ne'] - Z_Q = 1/(Qe*(w*1j)**ne) - + Qe = params["Qe"] + ne = params["ne"] + Z_Q = 1 / (Qe * (w * 1j) ** ne) + # Bulk impedance - if str(params.keys())[10:].find("Rb") == -1: #if R == 'none': - Qb = params['Qb'] - nb = params['nb'] - fsb = params['fsb'] - Rb = (1/(Qb*(2*np.pi*fsb)**nb)) - if str(params.keys())[10:].find("Qb") == -1: #elif Q == 'none': - Rb = params['Rb'] - nb = params['nb'] - fsb = params['fsb'] - Qb = (1/(Rb*(2*np.pi*fsb)**nb)) - if str(params.keys())[10:].find("nb") == -1: #elif n == 'none': - Rb = params['Rb'] - Qb = params['Qb'] - fsb = params['fsb'] - nb = np.log(Qb*Rb)/np.log(1/(2*np.pi*fsb)) - if str(params.keys())[10:].find("fsb") == -1: #elif fs == 'none': - Rb = params['Rb'] - nb = params['nb'] - Qb = params['Qb'] - Z_RQ = Rb/(1+Rb*Qb*(w*1j)**nb) + if str(params.keys())[10:].find("Rb") == -1: # if R == 'none': + Qb = params["Qb"] + nb = params["nb"] + fsb = params["fsb"] + Rb = 1 / (Qb * (2 * np.pi * fsb) ** nb) + if str(params.keys())[10:].find("Qb") == -1: # elif Q == 'none': + Rb = params["Rb"] + nb = params["nb"] + fsb = params["fsb"] + Qb = 1 / (Rb * (2 * np.pi * fsb) ** nb) + if str(params.keys())[10:].find("nb") == -1: # elif n == 'none': + Rb = params["Rb"] + Qb = params["Qb"] + fsb = params["fsb"] + nb = np.log(Qb * Rb) / np.log(1 / (2 * np.pi * fsb)) + if str(params.keys())[10:].find("fsb") == -1: # elif fs == 'none': + Rb = params["Rb"] + nb = params["nb"] + Qb = params["Qb"] + Z_RQ = Rb / (1 + Rb * Qb * (w * 1j) ** nb) return Z_Q + Z_RQ + def cir_RCRCZD_fit(params, w): - ''' + """ Fit Function: -RC_b-RC_e-Z_D - + See cir_RCRCZD() for details Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' + """ # Interfacial impendace - if str(params.keys())[10:].find("Re") == -1: #if R == 'none': - Ce = params['Ce'] - fse = params['fse'] - Re = (1/(Ce*(2*np.pi*fse))) - if str(params.keys())[10:].find("Ce") == -1: #elif Q == 'none': - Re = params['Rb'] - fse = params['fsb'] - Ce = (1/(Re*(2*np.pi*fse))) - if str(params.keys())[10:].find("fse") == -1: #elif fs == 'none': - Re = params['Re'] - Ce = params['Ce'] - Z_RCe = (Re/(1+Re*Ce*(w*1j))) + if str(params.keys())[10:].find("Re") == -1: # if R == 'none': + Ce = params["Ce"] + fse = params["fse"] + Re = 1 / (Ce * (2 * np.pi * fse)) + if str(params.keys())[10:].find("Ce") == -1: # elif Q == 'none': + Re = params["Rb"] + fse = params["fsb"] + Ce = 1 / (Re * (2 * np.pi * fse)) + if str(params.keys())[10:].find("fse") == -1: # elif fs == 'none': + Re = params["Re"] + Ce = params["Ce"] + Z_RCe = Re / (1 + Re * Ce * (w * 1j)) # Bulk impendance - if str(params.keys())[10:].find("Rb") == -1: #if R == 'none': - Cb = params['Cb'] - fsb = params['fsb'] - Rb = (1/(Cb*(2*np.pi*fsb))) - if str(params.keys())[10:].find("Cb") == -1: #elif Q == 'none': - Rb = params['Rb'] - fsb = params['fsb'] - Cb = (1/(Rb*(2*np.pi*fsb))) - if str(params.keys())[10:].find("fsb") == -1: #elif fs == 'none': - Rb = params['Rb'] - Cb = params['Cb'] - Z_RCb = (Rb/(1+Rb*Cb*(w*1j))) - + if str(params.keys())[10:].find("Rb") == -1: # if R == 'none': + Cb = params["Cb"] + fsb = params["fsb"] + Rb = 1 / (Cb * (2 * np.pi * fsb)) + if str(params.keys())[10:].find("Cb") == -1: # elif Q == 'none': + Rb = params["Rb"] + fsb = params["fsb"] + Cb = 1 / (Rb * (2 * np.pi * fsb)) + if str(params.keys())[10:].find("fsb") == -1: # elif fs == 'none': + Rb = params["Rb"] + Cb = params["Cb"] + Z_RCb = Rb / (1 + Rb * Cb * (w * 1j)) + # Mass transport impendance - L = params['L'] - D_s = params['D_s'] - u1 = params['u1'] - u2 = params['u2'] - - alpha = ((w*1j*L**2)/D_s)**(1/2) - Z_D = Rb * (u2/u1) * (tanh(alpha)/alpha) + L = params["L"] + D_s = params["D_s"] + u1 = params["u1"] + u2 = params["u2"] + + alpha = ((w * 1j * L ** 2) / D_s) ** (1 / 2) + Z_D = Rb * (u2 / u1) * (tanh(alpha) / alpha) return Z_RCb + Z_RCe + Z_D + # Transmission lines + def cir_RsTLsQ_fit(params, w): - ''' + """ Fit Function: -Rs-TLsQ- TLs = Simplified Transmission Line, with a non-faradaic interfacial impedance (Q) See more under cir_RsTLsQ() - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - Q = params['Q'] - n = params['n'] - - Phi = 1/(Q*(w*1j)**n) - X1 = Ri # ohm/cm - Lam = (Phi/X1)**(1/2) #np.sqrt(Phi/X1) - - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# -# Z_TLsQ = Lam * X1 * coth_mp + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + Q = params["Q"] + n = params["n"] + + Phi = 1 / (Q * (w * 1j) ** n) + X1 = Ri # ohm/cm + Lam = (Phi / X1) ** (1 / 2) # np.sqrt(Phi/X1) + + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # + # Z_TLsQ = Lam * X1 * coth_mp Z_TLsQ = Lam * X1 * coth(x) return Rs + Z_TLsQ + def cir_RsRQTLsQ_Fit(params, w): - ''' + """ Fit Function: -Rs-RQ-TLsQ- TLs = Simplified Transmission Line, with a non-faradaic interfacial impedance (Q) See more under cir_RsRQTLsQ - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - Q = params['Q'] - n = params['n'] - - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - if str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ = (R1/(1+R1*Q1*(w*1j)**n1)) - - - Phi = 1/(Q*(w*1j)**n) + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + Q = params["Q"] + n = params["n"] + + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + if str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + + Phi = 1 / (Q * (w * 1j) ** n) X1 = Ri - Lam = (Phi/X1)**(1/2) + Lam = (Phi / X1) ** (1 / 2) - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) # Handles coth with x having very large or very small numbers Z_TLsQ = Lam * X1 * coth_mp - + return Rs + Z_RQ + Z_TLsQ + def cir_RsTLs_Fit(params, w): - ''' + """ Fit Function: -Rs-RQ-TLs- TLs = Simplified Transmission Line, with a faradaic interfacial impedance (RQ) See mor under cir_RsTLs() - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - - if str(params.keys())[10:].find("R") == -1: #if R == 'none': - Q = params['Q'] - n = params['n'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("Q") == -1: #elif Q == 'none': - R = params['R'] - n = params['n'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("n") == -1: #elif n == 'none': - R = params['R'] - Q = params['Q'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("fs") == -1: #elif fs == 'none': - R = params['R'] - n = params['n'] - Q = params['Q'] - Phi = R/(1+R*Q*(w*1j)**n) + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + + if str(params.keys())[10:].find("R") == -1: # if R == 'none': + Q = params["Q"] + n = params["n"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("Q") == -1: # elif Q == 'none': + R = params["R"] + n = params["n"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("n") == -1: # elif n == 'none': + R = params["R"] + Q = params["Q"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("fs") == -1: # elif fs == 'none': + R = params["R"] + n = params["n"] + Q = params["Q"] + Phi = R / (1 + R * Q * (w * 1j) ** n) X1 = Ri - Lam = (Phi/X1)**(1/2) - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + Lam = (Phi / X1) ** (1 / 2) + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) # Handles coth with x having very large or very small numbers Z_TLs = Lam * X1 * coth_mp - + return Rs + Z_TLs + def cir_RsRQTLs_Fit(params, w): - ''' + """ Fit Function: -Rs-RQ-TLs- TLs = Simplified Transmission Line with a faradaic interfacial impedance (RQ) See more under cir_RsRQTLs() - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - if str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ = (R1/(1+R1*Q1*(w*1j)**n1)) - - if str(params.keys())[10:].find("R2") == -1: #if R == 'none': - Q2 = params['Q2'] - n2 = params['n2'] - fs2 = params['fs2'] - R2 = (1/(Q2*(2*np.pi*fs2)**n2)) - if str(params.keys())[10:].find("Q2") == -1: #elif Q == 'none': - R2 = params['R2'] - n2 = params['n2'] - fs2 = params['fs2'] - Q2 = (1/(R2*(2*np.pi*fs2)**n1)) - if str(params.keys())[10:].find("n2") == -1: #elif n == 'none': - R2 = params['R2'] - Q2 = params['Q2'] - fs2 = params['fs2'] - n2 = np.log(Q2*R2)/np.log(1/(2*np.pi*fs2)) - if str(params.keys())[10:].find("fs2") == -1: #elif fs == 'none': - R2 = params['R2'] - n2 = params['n2'] - Q2 = params['Q2'] - Phi = (R2/(1+R2*Q2*(w*1j)**n2)) + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + if str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + + if str(params.keys())[10:].find("R2") == -1: # if R == 'none': + Q2 = params["Q2"] + n2 = params["n2"] + fs2 = params["fs2"] + R2 = 1 / (Q2 * (2 * np.pi * fs2) ** n2) + if str(params.keys())[10:].find("Q2") == -1: # elif Q == 'none': + R2 = params["R2"] + n2 = params["n2"] + fs2 = params["fs2"] + Q2 = 1 / (R2 * (2 * np.pi * fs2) ** n1) + if str(params.keys())[10:].find("n2") == -1: # elif n == 'none': + R2 = params["R2"] + Q2 = params["Q2"] + fs2 = params["fs2"] + n2 = np.log(Q2 * R2) / np.log(1 / (2 * np.pi * fs2)) + if str(params.keys())[10:].find("fs2") == -1: # elif fs == 'none': + R2 = params["R2"] + n2 = params["n2"] + Q2 = params["Q2"] + Phi = R2 / (1 + R2 * Q2 * (w * 1j) ** n2) X1 = Ri - Lam = (Phi/X1)**(1/2) + Lam = (Phi / X1) ** (1 / 2) - x = L/Lam - x_mp = mp.matrix(x) #x in mp.math format + x = L / Lam + x_mp = mp.matrix(x) # x in mp.math format coth_mp = [] for i in range(len(Lam)): - coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers - + coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) # Handles coth with x having very large or very small numbers + Z_TLs = Lam * X1 * coth_mp - + return Rs + Z_RQ + Z_TLs + def cir_RsTLQ_fit(params, w): - ''' + """ Fit Function: -R-TLQ- (interface non-reacting, i.e. blocking electrode) Transmission line w/ full complexity, which both includes Ri and Rel - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - Rel = params['Rel'] - Q = params['Q'] - n = params['n'] - - #The impedance of the series resistance + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + Rel = params["Rel"] + Q = params["Q"] + n = params["n"] + + # The impedance of the series resistance Z_Rs = Rs - + # The Interfacial impedance is given by an -(RQ)- circuit Phi = elem_Q(w, Q=Q, n=n) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) + Lam = (Phi / (X1 + X2)) ** (1 / 2) - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_TL + def cir_RsRQTLQ_fit(params, w): - ''' + """ Fit Function: -R-RQ-TLQ- (interface non-reacting, i.e. blocking electrode) Transmission line w/ full complexity, which both includes Ri and Rel - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - Rel = params['Rel'] - Q = params['Q'] - n = params['n'] - - #The impedance of the series resistance + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + Rel = params["Rel"] + Q = params["Q"] + n = params["n"] + + # The impedance of the series resistance Z_Rs = Rs - - #The (RQ) circuit in series with the transmission line - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - if str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - if str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ1 = (R1/(1+R1*Q1*(w*1j)**n1)) - + + # The (RQ) circuit in series with the transmission line + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + if str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + if str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ1 = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + # The Interfacial impedance is given by an -(RQ)- circuit Phi = elem_Q(w, Q=Q, n=n) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) + Lam = (Phi / (X1 + X2)) ** (1 / 2) - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_RQ1 + Z_TL + def cir_RsTL_Fit(params, w): - ''' + """ Fit Function: -R-TLQ- (interface reacting, i.e. non-blocking) Transmission line w/ full complexity, which both includes Ri and Rel - + See cir_RsTL() for details - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - Rel = params['Rel'] - - #The impedance of the series resistance + + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + Rel = params["Rel"] + + # The impedance of the series resistance Z_Rs = Rs # The Interfacial impedance is given by an -(RQ)- circuit - if str(params.keys())[10:].find("R") == -1: #if R == 'none': - Q = params['Q'] - n = params['n'] - fs = params['fs'] - R = (1/(Q*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("Q") == -1: #elif Q == 'none': - R = params['R'] - n = params['n'] - fs = params['fs'] - Q = (1/(R*(2*np.pi*fs)**n)) - if str(params.keys())[10:].find("n") == -1: #elif n == 'none': - R = params['R'] - Q = params['Q'] - fs = params['fs'] - n = np.log(Q*R)/np.log(1/(2*np.pi*fs)) - if str(params.keys())[10:].find("fs") == -1: #elif fs == 'none': - R = params['R'] - n = params['n'] - Q = params['Q'] - - Phi = (R/(1+R*Q*(w*1j)**n)) + if str(params.keys())[10:].find("R") == -1: # if R == 'none': + Q = params["Q"] + n = params["n"] + fs = params["fs"] + R = 1 / (Q * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("Q") == -1: # elif Q == 'none': + R = params["R"] + n = params["n"] + fs = params["fs"] + Q = 1 / (R * (2 * np.pi * fs) ** n) + if str(params.keys())[10:].find("n") == -1: # elif n == 'none': + R = params["R"] + Q = params["Q"] + fs = params["fs"] + n = np.log(Q * R) / np.log(1 / (2 * np.pi * fs)) + if str(params.keys())[10:].find("fs") == -1: # elif fs == 'none': + R = params["R"] + n = params["n"] + Q = params["Q"] + + Phi = R / (1 + R * Q * (w * 1j) ** n) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) + Lam = (Phi / (X1 + X2)) ** (1 / 2) - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float(mp.sinh(x_mp[i]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_TL + def cir_RsRQTL_fit(params, w): - ''' + """ Fit Function: -R-RQ-TL- (interface reacting, i.e. non-blocking) Transmission line w/ full complexity including both includes Ri and Rel - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - Rel = params['Rel'] + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + Rel = params["Rel"] - #The impedance of the series resistance + # The impedance of the series resistance Z_Rs = Rs # The Interfacial impedance is given by an -(RQ)- circuit - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - elif str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - elif str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - elif str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ1 = (R1/(1+R1*Q1*(w*1j)**n1)) -# -# # The Interfacial impedance is given by an -(RQ)- circuit - if str(params.keys())[10:].find("R2") == -1: #if R == 'none': - Q2 = params['Q2'] - n2 = params['n2'] - fs2 = params['fs2'] - R2 = (1/(Q2*(2*np.pi*fs2)**n2)) - elif str(params.keys())[10:].find("Q2") == -1: #elif Q == 'none': - R2 = params['R2'] - n2 = params['n2'] - fs2 = params['fs2'] - Q2 = (1/(R2*(2*np.pi*fs2)**n1)) - elif str(params.keys())[10:].find("n2") == -1: #elif n == 'none': - R2 = params['R2'] - Q2 = params['Q2'] - fs2 = params['fs2'] - n2 = np.log(Q2*R2)/np.log(1/(2*np.pi*fs2)) - elif str(params.keys())[10:].find("fs2") == -1: #elif fs == 'none': - R2 = params['R2'] - n2 = params['n2'] - Q2 = params['Q2'] - Phi = (R2/(1+R2*Q2*(w*1j)**n2)) + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + elif str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + elif str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + elif str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ1 = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + # + # # The Interfacial impedance is given by an -(RQ)- circuit + if str(params.keys())[10:].find("R2") == -1: # if R == 'none': + Q2 = params["Q2"] + n2 = params["n2"] + fs2 = params["fs2"] + R2 = 1 / (Q2 * (2 * np.pi * fs2) ** n2) + elif str(params.keys())[10:].find("Q2") == -1: # elif Q == 'none': + R2 = params["R2"] + n2 = params["n2"] + fs2 = params["fs2"] + Q2 = 1 / (R2 * (2 * np.pi * fs2) ** n1) + elif str(params.keys())[10:].find("n2") == -1: # elif n == 'none': + R2 = params["R2"] + Q2 = params["Q2"] + fs2 = params["fs2"] + n2 = np.log(Q2 * R2) / np.log(1 / (2 * np.pi * fs2)) + elif str(params.keys())[10:].find("fs2") == -1: # elif fs == 'none': + R2 = params["R2"] + n2 = params["n2"] + Q2 = params["Q2"] + Phi = R2 / (1 + R2 * Q2 * (w * 1j) ** n2) X1 = Ri X2 = Rel - Lam = (Phi/(X1+X2))**(1/2) - - x = L/Lam -# x_mp = mp.matrix(x) #x in mp.math format -# coth_mp = [] -# sinh_mp = [] -# for i in range(len(Lam)): -# coth_mp.append(float(mp.coth(x_mp[i]).real)+float((mp.coth(x_mp[i]).imag))*1j) #Handles coth with x having very large or very small numbers -# sinh_mp.append(float(((1-mp.exp(-2*x_mp[i]))/(2*mp.exp(-x_mp[i]))).real) + float(((1-mp.exp(-2*x_mp[i]))/(2*mp.exp(-x_mp[i]))).real)*1j) -# sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float((mp.sinh(x_mp[i]).imag))*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/sinh(x))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) + Lam = (Phi / (X1 + X2)) ** (1 / 2) + + x = L / Lam + # x_mp = mp.matrix(x) #x in mp.math format + # coth_mp = [] + # sinh_mp = [] + # for i in range(len(Lam)): + # coth_mp.append(float(mp.coth(x_mp[i]).real)+float((mp.coth(x_mp[i]).imag))*1j) #Handles coth with x having very large or very small numbers + # sinh_mp.append(float(((1-mp.exp(-2*x_mp[i]))/(2*mp.exp(-x_mp[i]))).real) + float(((1-mp.exp(-2*x_mp[i]))/(2*mp.exp(-x_mp[i]))).real)*1j) + # sinh_mp.append(float(mp.sinh(x_mp[i]).real)+float((mp.sinh(x_mp[i]).imag))*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*Lam)/np.array(sinh_mp))) + Lam * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * Lam) / sinh(x))) + Lam * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) return Z_Rs + Z_RQ1 + Z_TL + def cir_RsTL_1Dsolid_fit(params, w): - ''' + """ Fit Function: -R-TL(Q(RW))- Transmission line w/ full complexity - + See cir_RsTL_1Dsolid() for details - + David Brown (demoryb@berkeley.edu) Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - radius = params['radius'] - D = params['D'] - R = params['R'] - Q = params['Q'] - n = params['n'] - R_w = params['R_w'] - n_w = params['n_w'] - Rel = params['Rel'] - Ri = params['Ri'] - - #The impedance of the series resistance + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + radius = params["radius"] + D = params["D"] + R = params["R"] + Q = params["Q"] + n = params["n"] + R_w = params["R_w"] + n_w = params["n_w"] + Rel = params["Rel"] + Ri = params["Ri"] + + # The impedance of the series resistance Z_Rs = Rs - - #The impedance of a 1D Warburg Element - time_const = (radius**2)/D - - x = (time_const*w*1j)**n_w + + # The impedance of a 1D Warburg Element + time_const = (radius ** 2) / D + + x = (time_const * w * 1j) ** n_w x_mp = mp.matrix(x) warburg_coth_mp = [] for i in range(len(w)): - warburg_coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) + warburg_coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) + + Z_w = R_w * np.array(warburg_coth_mp) / x - Z_w = R_w * np.array(warburg_coth_mp)/x - # The Interfacial impedance is given by a Randles Equivalent circuit with the finite space warburg element in series with R2 Z_Rct = R Z_Q = elem_Q(w=w, Q=Q, n=n) - Z_Randles = 1/(1/Z_Q + 1/(Z_Rct+Z_w)) #Ohm + Z_Randles = 1 / (1 / Z_Q + 1 / (Z_Rct + Z_w)) # Ohm # The Impedance of the Transmission Line - lamb = (Z_Randles/(Rel+Ri))**(1/2) - x = L/lamb -# lamb_mp = mp.matrix(x) -# sinh_mp = [] -# coth_mp = [] -# for j in range(len(lamb_mp)): -# sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) -# coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/sinh(x))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) - + lamb = (Z_Randles / (Rel + Ri)) ** (1 / 2) + x = L / lamb + # lamb_mp = mp.matrix(x) + # sinh_mp = [] + # coth_mp = [] + # for j in range(len(lamb_mp)): + # sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) + # coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * lamb) / sinh(x))) + lamb * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) + return Z_Rs + Z_TL + def cir_RsRQTL_1Dsolid_fit(params, w): - ''' + """ Fit Function: -R-RQ-TL(Q(RW))- Transmission line w/ full complexity, which both includes Ri and Rel. The Warburg element is specific for 1D solid-state diffusion - + See cir_RsRQTL_1Dsolid() for details - + David Brown (demoryb@berkeley.edu) Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - L = params['L'] - Ri = params['Ri'] - radius = params['radius'] - D = params['D'] - R2 = params['R2'] - Q2 = params['Q2'] - n2 = params['n2'] - R_w = params['R_w'] - n_w = params['n_w'] - Rel = params['Rel'] - Ri = params['Ri'] - #The impedance of the series resistance + """ + Rs = params["Rs"] + L = params["L"] + Ri = params["Ri"] + radius = params["radius"] + D = params["D"] + R2 = params["R2"] + Q2 = params["Q2"] + n2 = params["n2"] + R_w = params["R_w"] + n_w = params["n_w"] + Rel = params["Rel"] + Ri = params["Ri"] + # The impedance of the series resistance Z_Rs = Rs - + # The Interfacial impedance is given by an -(RQ)- circuit - if str(params.keys())[10:].find("R1") == -1: #if R == 'none': - Q1 = params['Q1'] - n1 = params['n1'] - fs1 = params['fs1'] - R1 = (1/(Q1*(2*np.pi*fs1)**n1)) - elif str(params.keys())[10:].find("Q1") == -1: #elif Q == 'none': - R1 = params['R1'] - n1 = params['n1'] - fs1 = params['fs1'] - Q1 = (1/(R1*(2*np.pi*fs1)**n1)) - elif str(params.keys())[10:].find("n1") == -1: #elif n == 'none': - R1 = params['R1'] - Q1 = params['Q1'] - fs1 = params['fs1'] - n1 = np.log(Q1*R1)/np.log(1/(2*np.pi*fs1)) - elif str(params.keys())[10:].find("fs1") == -1: #elif fs == 'none': - R1 = params['R1'] - n1 = params['n1'] - Q1 = params['Q1'] - Z_RQ1 = (R1/(1+R1*Q1*(w*1j)**n1)) - - #The impedance of a 1D Warburg Element - time_const = (radius**2)/D - - x = (time_const*w*1j)**n_w + if str(params.keys())[10:].find("R1") == -1: # if R == 'none': + Q1 = params["Q1"] + n1 = params["n1"] + fs1 = params["fs1"] + R1 = 1 / (Q1 * (2 * np.pi * fs1) ** n1) + elif str(params.keys())[10:].find("Q1") == -1: # elif Q == 'none': + R1 = params["R1"] + n1 = params["n1"] + fs1 = params["fs1"] + Q1 = 1 / (R1 * (2 * np.pi * fs1) ** n1) + elif str(params.keys())[10:].find("n1") == -1: # elif n == 'none': + R1 = params["R1"] + Q1 = params["Q1"] + fs1 = params["fs1"] + n1 = np.log(Q1 * R1) / np.log(1 / (2 * np.pi * fs1)) + elif str(params.keys())[10:].find("fs1") == -1: # elif fs == 'none': + R1 = params["R1"] + n1 = params["n1"] + Q1 = params["Q1"] + Z_RQ1 = R1 / (1 + R1 * Q1 * (w * 1j) ** n1) + + # The impedance of a 1D Warburg Element + time_const = (radius ** 2) / D + + x = (time_const * w * 1j) ** n_w x_mp = mp.matrix(x) warburg_coth_mp = [] for i in range(len(w)): - warburg_coth_mp.append(float(mp.coth(x_mp[i]).real)+float(mp.coth(x_mp[i]).imag)*1j) + warburg_coth_mp.append( + float(mp.coth(x_mp[i]).real) + float(mp.coth(x_mp[i]).imag) * 1j + ) + + Z_w = R_w * np.array(warburg_coth_mp) / x - Z_w = R_w * np.array(warburg_coth_mp)/x - # The Interfacial impedance is given by a Randles Equivalent circuit with the finite space warburg element in series with R2 Z_Rct = R2 - Z_Q = elem_Q(w,Q=Q2,n=n2) - Z_Randles = 1/(1/Z_Q + 1/(Z_Rct+Z_w)) #Ohm + Z_Q = elem_Q(w, Q=Q2, n=n2) + Z_Randles = 1 / (1 / Z_Q + 1 / (Z_Rct + Z_w)) # Ohm # The Impedance of the Transmission Line - lamb = (Z_Randles/(Rel+Ri))**(1/2) - x = L/lamb -# lamb_mp = mp.matrix(x) -# sinh_mp = [] -# coth_mp = [] -# for j in range(len(lamb_mp)): -# sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) -# coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) -# -# Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) - - Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/sinh(x))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * coth(x) - + lamb = (Z_Randles / (Rel + Ri)) ** (1 / 2) + x = L / lamb + # lamb_mp = mp.matrix(x) + # sinh_mp = [] + # coth_mp = [] + # for j in range(len(lamb_mp)): + # sinh_mp.append(float(mp.sinh(lamb_mp[j]).real)+float((mp.sinh(lamb_mp[j]).imag))*1j) + # coth_mp.append(float(mp.coth(lamb_mp[j]).real)+float(mp.coth(lamb_mp[j]).imag)*1j) + # + # Z_TL = ((Rel*Ri)/(Rel+Ri)) * (L+((2*lamb)/np.array(sinh_mp))) + lamb * ((Rel**2 + Ri**2)/(Rel+Ri)) * np.array(coth_mp) + + Z_TL = ((Rel * Ri) / (Rel + Ri)) * (L + ((2 * lamb) / sinh(x))) + lamb * ( + (Rel ** 2 + Ri ** 2) / (Rel + Ri) + ) * coth(x) + return Z_Rs + Z_RQ1 + Z_TL + ### Least-Squares error function def leastsq_errorfunc(params, w, re, im, circuit, weight_func): - ''' + """ Sum of squares error function for the complex non-linear least-squares fitting procedure (CNLS). The fitting function (lmfit) will use this function to iterate over until the total sum of errors is minimized. - + During the minimization the fit is weighed, and currently three different weigh options are avaliable: - modulus - unity - proportional - + Modulus is generially recommended as random errors and a bias can exist in the experimental data. - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) Inputs @@ -2102,112 +2289,118 @@ def leastsq_errorfunc(params, w, re, im, circuit, weight_func): - modulus - unity - proportional - ''' - if circuit == 'C': + """ + if circuit == "C": re_fit = elem_C_fit(params, w).real im_fit = -elem_C_fit(params, w).imag - elif circuit == 'Q': + elif circuit == "Q": re_fit = elem_Q_fit(params, w).real im_fit = -elem_Q_fit(params, w).imag - elif circuit == 'R-C': + elif circuit == "R-C": re_fit = cir_RsC_fit(params, w).real im_fit = -cir_RsC_fit(params, w).imag - elif circuit == 'R-Q': + elif circuit == "R-Q": re_fit = cir_RsQ_fit(params, w).real im_fit = -cir_RsQ_fit(params, w).imag - elif circuit == 'RC': + elif circuit == "RC": re_fit = cir_RC_fit(params, w).real im_fit = -cir_RC_fit(params, w).imag - elif circuit == 'RQ': + elif circuit == "RQ": re_fit = cir_RQ_fit(params, w).real im_fit = -cir_RQ_fit(params, w).imag - elif circuit == 'R-RQ': + elif circuit == "R-RQ": re_fit = cir_RsRQ_fit(params, w).real im_fit = -cir_RsRQ_fit(params, w).imag - elif circuit == 'R-RQ-RQ': + elif circuit == "R-RQ-RQ": re_fit = cir_RsRQRQ_fit(params, w).real im_fit = -cir_RsRQRQ_fit(params, w).imag - elif circuit == 'R-RC-C': + elif circuit == "R-RC-C": re_fit = cir_RsRCC_fit(params, w).real im_fit = -cir_RsRCC_fit(params, w).imag - elif circuit == 'R-RC-Q': + elif circuit == "R-RC-Q": re_fit = cir_RsRCQ_fit(params, w).real im_fit = -cir_RsRCQ_fit(params, w).imag - elif circuit == 'R-RQ-Q': + elif circuit == "R-RQ-Q": re_fit = cir_RsRQQ_fit(params, w).real im_fit = -cir_RsRQQ_fit(params, w).imag - elif circuit == 'R-RQ-C': + elif circuit == "R-RQ-C": re_fit = cir_RsRQC_fit(params, w).real im_fit = -cir_RsRQC_fit(params, w).imag - elif circuit == 'R-(Q(RW))': + elif circuit == "R-(Q(RW))": re_fit = cir_Randles_simplified_Fit(params, w).real im_fit = -cir_Randles_simplified_Fit(params, w).imag - elif circuit == 'R-(Q(RM))': + elif circuit == "R-(Q(RM))": re_fit = cir_Randles_uelectrode_fit(params, w).real im_fit = -cir_Randles_uelectrode_fit(params, w).imag - elif circuit == 'C-RC-C': + elif circuit == "C-RC-C": re_fit = cir_C_RC_C_fit(params, w).real im_fit = -cir_C_RC_C_fit(params, w).imag - elif circuit == 'Q-RQ-Q': + elif circuit == "Q-RQ-Q": re_fit = cir_Q_RQ_Q_Fit(params, w).real im_fit = -cir_Q_RQ_Q_Fit(params, w).imag - elif circuit == 'RC-RC-ZD': + elif circuit == "RC-RC-ZD": re_fit = cir_RCRCZD_fit(params, w).real im_fit = -cir_RCRCZD_fit(params, w).imag - elif circuit == 'R-TLsQ': + elif circuit == "R-TLsQ": re_fit = cir_RsTLsQ_fit(params, w).real im_fit = -cir_RsTLsQ_fit(params, w).imag - elif circuit == 'R-RQ-TLsQ': + elif circuit == "R-RQ-TLsQ": re_fit = cir_RsRQTLsQ_Fit(params, w).real im_fit = -cir_RsRQTLsQ_Fit(params, w).imag - elif circuit == 'R-TLs': + elif circuit == "R-TLs": re_fit = cir_RsTLs_Fit(params, w).real im_fit = -cir_RsTLs_Fit(params, w).imag - elif circuit == 'R-RQ-TLs': + elif circuit == "R-RQ-TLs": re_fit = cir_RsRQTLs_Fit(params, w).real im_fit = -cir_RsRQTLs_Fit(params, w).imag - elif circuit == 'R-TLQ': + elif circuit == "R-TLQ": re_fit = cir_RsTLQ_fit(params, w).real im_fit = -cir_RsTLQ_fit(params, w).imag - elif circuit == 'R-RQ-TLQ': + elif circuit == "R-RQ-TLQ": re_fit = cir_RsRQTLQ_fit(params, w).real im_fit = -cir_RsRQTLQ_fit(params, w).imag - elif circuit == 'R-TL': + elif circuit == "R-TL": re_fit = cir_RsTL_Fit(params, w).real im_fit = -cir_RsTL_Fit(params, w).imag - elif circuit == 'R-RQ-TL': + elif circuit == "R-RQ-TL": re_fit = cir_RsRQTL_fit(params, w).real im_fit = -cir_RsRQTL_fit(params, w).imag - elif circuit == 'R-TL1Dsolid': + elif circuit == "R-TL1Dsolid": re_fit = cir_RsTL_1Dsolid_fit(params, w).real im_fit = -cir_RsTL_1Dsolid_fit(params, w).imag - elif circuit == 'R-RQ-TL1Dsolid': + elif circuit == "R-RQ-TL1Dsolid": re_fit = cir_RsRQTL_1Dsolid_fit(params, w).real im_fit = -cir_RsRQTL_1Dsolid_fit(params, w).imag else: - print('Circuit is not defined in leastsq_errorfunc()') - - error = [(re-re_fit)**2, (im-im_fit)**2] #sum of squares - - #Different Weighing options, see Lasia - if weight_func == 'modulus': - weight = [1/((re_fit**2 + im_fit**2)**(1/2)), 1/((re_fit**2 + im_fit**2)**(1/2))] - elif weight_func == 'proportional': - weight = [1/(re_fit**2), 1/(im_fit**2)] - elif weight_func == 'unity': + print("Circuit is not defined in leastsq_errorfunc()") + + error = [(re - re_fit) ** 2, (im - im_fit) ** 2] # sum of squares + + # Different Weighing options, see Lasia + if weight_func == "modulus": + weight = [ + 1 / ((re_fit ** 2 + im_fit ** 2) ** (1 / 2)), + 1 / ((re_fit ** 2 + im_fit ** 2) ** (1 / 2)), + ] + elif weight_func == "proportional": + weight = [1 / (re_fit ** 2), 1 / (im_fit ** 2)] + elif weight_func == "unity": unity_1s = [] for k in range(len(re)): - unity_1s.append(1) #makes an array of [1]'s, so that the weighing is == 1 * sum of squres. + unity_1s.append( + 1 + ) # makes an array of [1]'s, so that the weighing is == 1 * sum of squres. weight = [unity_1s, unity_1s] else: - print('weight not defined in leastsq_errorfunc()') - - S = np.array(weight) * error #weighted sum of squares + print("weight not defined in leastsq_errorfunc()") + + S = np.array(weight) * error # weighted sum of squares return S + ### Fitting Class class EIS_exp: - ''' + """ This class is used to plot and/or analyze experimental impedance data. The class has three major functions: - EIS_plot() - Lin_KK() @@ -2216,7 +2409,7 @@ class EIS_exp: - EIS_plot() is used to plot experimental data with or without fit - Lin_KK() performs a linear Kramers-Kronig analysis of the experimental data set. - EIS_fit() performs complex non-linear least-squares fitting of the experimental data to an equivalent circuit - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) Inputs @@ -2226,28 +2419,36 @@ class EIS_exp: - cycle: Specific cycle numbers can be extracted using the cycle function. Default is 'none', which includes all cycle numbers. Specific cycles can be extracted using this parameter, insert cycle numbers in brackets, e.g. cycle number 1,4, and 6 are wanted. cycle=[1,4,6] - mask: ['high frequency' , 'low frequency'], if only a high- or low-frequency is desired use 'none' for the other, e.g. maks=[10**4,'none'] - ''' - def __init__(self, path, data, cycle='off', mask=['none','none']): + """ + + def __init__(self, path, data, cycle="off", mask=["none", "none"]): self.df_raw0 = [] self.cycleno = [] - for j in range(len(data)): - if data[j].find(".mpt") != -1: #file is a .mpt file - self.df_raw0.append(extract_mpt(path=path, EIS_name=data[j])) #reads all datafiles - elif data[j].find(".DTA") != -1: #file is a .dta file - self.df_raw0.append(extract_dta(path=path, EIS_name=data[j])) #reads all datafiles - elif data[j].find(".z") != -1: #file is a .z file - self.df_raw0.append(extract_solar(path=path, EIS_name=data[j])) #reads all datafiles + for j, f in enumerate(data, start=0): + if f.endswith("mpt"): # file is a .mpt file + self.df_raw0.append( + extract_mpt(path=path, EIS_name=f) + ) # reads all datafiles + elif f.endswith("DTA"): # file is a .dta file + self.df_raw0.append( + extract_dta(path=path, EIS_name=f) + ) # reads all datafiles + elif f.endswith("z"): # file is a .z file + self.df_raw0.append( + extract_solar(path=path, EIS_name=f) + ) # reads all datafiles + elif f.endswith("txt"): + self.df_raw0.append(extract_csv(path=path, EIS_name=f)) else: - print('Data file(s) could not be identified') - + print("Data file(s) could not be identified") self.cycleno.append(self.df_raw0[j].cycle_number) - if np.min(self.cycleno[j]) <= np.max(self.cycleno[j-1]): - if j > 0: #corrects cycle_number except for the first data file - self.df_raw0[j].update({'cycle_number': self.cycleno[j]+np.max(self.cycleno[j-1])}) #corrects cycle number -# else: -# print('__init__ Error (#1)') + if np.min(self.cycleno[j]) <= np.max(self.cycleno[j - 1]): + if j > 0: # corrects cycle_number except for the first data file + self.df_raw0[j].update( + {"cycle_number": self.cycleno[j] + np.max(self.cycleno[j - 1])} + ) # corrects cycle number - #currently need to append a cycle_number coloumn to gamry files + # currently need to append a cycle_number coloumn to gamry files # adds individual dataframes into one if len(self.df_raw0) == 1: @@ -2255,94 +2456,293 @@ def __init__(self, path, data, cycle='off', mask=['none','none']): elif len(self.df_raw0) == 2: self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1]], axis=0) elif len(self.df_raw0) == 3: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2]], axis=0) + self.df_raw = pd.concat( + [self.df_raw0[0], self.df_raw0[1], self.df_raw0[2]], axis=0 + ) elif len(self.df_raw0) == 4: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3]], axis=0) + self.df_raw = pd.concat( + [self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3]], + axis=0, + ) elif len(self.df_raw0) == 5: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + ], + axis=0, + ) elif len(self.df_raw0) == 6: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + ], + axis=0, + ) elif len(self.df_raw0) == 7: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + ], + axis=0, + ) elif len(self.df_raw0) == 8: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + ], + axis=0, + ) elif len(self.df_raw0) == 9: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + ], + axis=0, + ) elif len(self.df_raw0) == 10: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8], self.df_raw0[9]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + self.df_raw0[9], + ], + axis=0, + ) elif len(self.df_raw0) == 11: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8], self.df_raw0[9], self.df_raw0[10]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + self.df_raw0[9], + self.df_raw0[10], + ], + axis=0, + ) elif len(self.df_raw0) == 12: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8], self.df_raw0[9], self.df_raw0[10], self.df_raw0[11]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + self.df_raw0[9], + self.df_raw0[10], + self.df_raw0[11], + ], + axis=0, + ) elif len(self.df_raw0) == 13: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8], self.df_raw0[9], self.df_raw0[10], self.df_raw0[11], self.df_raw0[12]], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + self.df_raw0[9], + self.df_raw0[10], + self.df_raw0[11], + self.df_raw0[12], + ], + axis=0, + ) elif len(self.df_raw0) == 14: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8], self.df_raw0[9], self.df_raw0[10], self.df_raw0[11]], self.df_raw0[12], self.df_raw0[13], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + self.df_raw0[9], + self.df_raw0[10], + self.df_raw0[11], + ], + self.df_raw0[12], + self.df_raw0[13], + axis=0, + ) elif len(self.df_raw0) == 15: - self.df_raw = pd.concat([self.df_raw0[0], self.df_raw0[1], self.df_raw0[2], self.df_raw0[3], self.df_raw0[4], self.df_raw0[5], self.df_raw0[6], self.df_raw0[7], self.df_raw0[8], self.df_raw0[9], self.df_raw0[10], self.df_raw0[11]], self.df_raw0[12], self.df_raw0[13], self.df_raw0[14], axis=0) + self.df_raw = pd.concat( + [ + self.df_raw0[0], + self.df_raw0[1], + self.df_raw0[2], + self.df_raw0[3], + self.df_raw0[4], + self.df_raw0[5], + self.df_raw0[6], + self.df_raw0[7], + self.df_raw0[8], + self.df_raw0[9], + self.df_raw0[10], + self.df_raw0[11], + ], + self.df_raw0[12], + self.df_raw0[13], + self.df_raw0[14], + axis=0, + ) else: print("Too many data files || 15 allowed") - self.df_raw = self.df_raw.assign(w = 2*np.pi*self.df_raw.f) #creats a new coloumn with the angular frequency + self.df_raw = self.df_raw.assign( + w=2 * np.pi * self.df_raw.f + ) # creats a new coloumn with the angular frequency - #Masking data to each cycle + # Masking data to each cycle self.df_pre = [] self.df_limited = [] self.df_limited2 = [] self.df = [] - if mask == ['none','none'] and cycle == 'off': - for i in range(len(self.df_raw.cycle_number.unique())): #includes all data - self.df.append(self.df_raw[self.df_raw.cycle_number == self.df_raw.cycle_number.unique()[i]]) - elif mask == ['none','none'] and cycle != 'off': + if mask == ["none", "none"] and cycle == "off": + for i in range(len(self.df_raw.cycle_number.unique())): # includes all data + self.df.append( + self.df_raw[ + self.df_raw.cycle_number == self.df_raw.cycle_number.unique()[i] + ] + ) + elif mask == ["none", "none"] and cycle != "off": for i in range(len(cycle)): - self.df.append(self.df_raw[self.df_raw.cycle_number == cycle[i]]) #extracting dataframe for each cycle - elif mask[0] != 'none' and mask[1] == 'none' and cycle == 'off': + self.df.append( + self.df_raw[self.df_raw.cycle_number == cycle[i]] + ) # extracting dataframe for each cycle + elif mask[0] != "none" and mask[1] == "none" and cycle == "off": self.df_pre = self.df_raw.mask(self.df_raw.f > mask[0]) - self.df_pre.dropna(how='all', inplace=True) - for i in range(len(self.df_pre.cycle_number.unique())): #Appending data based on cycle number - self.df.append(self.df_pre[self.df_pre.cycle_number == self.df_pre.cycle_number.unique()[i]]) - elif mask[0] != 'none' and mask[1] == 'none' and cycle != 'off': # or [i for i, e in enumerate(mask) if e == 'none'] == [0] + self.df_pre.dropna(how="all", inplace=True) + for i in range( + len(self.df_pre.cycle_number.unique()) + ): # Appending data based on cycle number + self.df.append( + self.df_pre[ + self.df_pre.cycle_number == self.df_pre.cycle_number.unique()[i] + ] + ) + elif ( + mask[0] != "none" and mask[1] == "none" and cycle != "off" + ): # or [i for i, e in enumerate(mask) if e == 'none'] == [0] self.df_limited = self.df_raw.mask(self.df_raw.f > mask[0]) for i in range(len(cycle)): - self.df.append(self.df_limited[self.df_limited.cycle_number == cycle[i]]) - elif mask[0] == 'none' and mask[1] != 'none' and cycle == 'off': + self.df.append( + self.df_limited[self.df_limited.cycle_number == cycle[i]] + ) + elif mask[0] == "none" and mask[1] != "none" and cycle == "off": self.df_pre = self.df_raw.mask(self.df_raw.f < mask[1]) - self.df_pre.dropna(how='all', inplace=True) - for i in range(len(self.df_raw.cycle_number.unique())): #includes all data - self.df.append(self.df_pre[self.df_pre.cycle_number == self.df_pre.cycle_number.unique()[i]]) - elif mask[0] == 'none' and mask[1] != 'none' and cycle != 'off': + self.df_pre.dropna(how="all", inplace=True) + for i in range(len(self.df_raw.cycle_number.unique())): # includes all data + self.df.append( + self.df_pre[ + self.df_pre.cycle_number == self.df_pre.cycle_number.unique()[i] + ] + ) + elif mask[0] == "none" and mask[1] != "none" and cycle != "off": self.df_limited = self.df_raw.mask(self.df_raw.f < mask[1]) for i in range(len(cycle)): - self.df.append(self.df_limited[self.df_limited.cycle_number == cycle[i]]) - elif mask[0] != 'none' and mask[1] != 'none' and cycle != 'off': + self.df.append( + self.df_limited[self.df_limited.cycle_number == cycle[i]] + ) + elif mask[0] != "none" and mask[1] != "none" and cycle != "off": self.df_limited = self.df_raw.mask(self.df_raw.f < mask[1]) self.df_limited2 = self.df_limited.mask(self.df_raw.f > mask[0]) for i in range(len(cycle)): - self.df.append(self.df_limited[self.df_limited2.cycle_number == cycle[i]]) - elif mask[0] != 'none' and mask[1] != 'none' and cycle == 'off': + self.df.append( + self.df_limited[self.df_limited2.cycle_number == cycle[i]] + ) + elif mask[0] != "none" and mask[1] != "none" and cycle == "off": self.df_limited = self.df_raw.mask(self.df_raw.f < mask[1]) self.df_limited2 = self.df_limited.mask(self.df_raw.f > mask[0]) for i in range(len(self.df_raw.cycle_number.unique())): - self.df.append(self.df_limited[self.df_limited2.cycle_number == self.df_raw.cycle_number.unique()[i]]) + self.df.append( + self.df_limited[ + self.df_limited2.cycle_number + == self.df_raw.cycle_number.unique()[i] + ] + ) else: - print('__init__ error (#2)') - - - def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_xlim='none', nyq_ylim='none', weight_func='Boukamp', savefig='none'): - ''' + print("__init__ error (#2)") + + def Lin_KK( + self, + num_RC="auto", + legend="on", + plot="residuals", + bode="off", + nyq_xlim="none", + nyq_ylim="none", + weight_func="Boukamp", + savefig="none", + ): + """ Plots the Linear Kramers-Kronig (KK) Validity Test The script is based on Boukamp and Schōnleber et al.'s papers for fitting the resistances of multiple -(RC)- circuits to the data. A data quality analysis can hereby be made on the basis of the relative residuals Ref.: - Schōnleber, M. et al. Electrochimica Acta 131 (2014) 20-27 - - Boukamp, B.A. J. Electrochem. Soc., 142, 6, 1885-1894 - - The function performs the KK analysis and as default the relative residuals in each subplot - + - Boukamp, B.A. J. Electrochem. Soc., 142, 6, 1885-1894 + + The function performs the KK analysis and as default the relative residuals in each subplot + Note, that weigh_func should be equal to 'Boukamp'. - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Optional Inputs ----------------- - num_RC: @@ -2350,12 +2750,12 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x that ensures no under- or over-fitting occurs - can be hardwired by inserting any number (RC-elements/decade) - - plot: + - plot: - 'residuals' = plots the relative residuals in subplots correspoding to the cycle numbers picked - 'w_data' = plots the relative residuals with the experimental data, in Nyquist and bode plot if desired, see 'bode =' in description - + - nyq_xlim/nyq_xlim: Change the x/y-axis limits on nyquist plot, if not equal to 'none' state [min,max] value - + - legend: - 'on' = displays cycle number - 'potential' = displays average potential which the spectra was measured at @@ -2364,15 +2764,15 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x bode = Plots Bode Plot - options: 'on' = re, im vs. log(freq) 'log' = log(re, im) vs. log(freq) - + 're' = re vs. log(freq) 'log_re' = log(re) vs. log(freq) - + 'im' = im vs. log(freq) 'log_im' = log(im) vs. log(freq) - ''' - if num_RC == 'auto': - print('cycle || No. RC-elements || u') + """ + if num_RC == "auto": + print("cycle || No. RC-elements || u") self.decade = [] self.Rparam = [] self.t_const = [] @@ -2382,56 +2782,150 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x self.KK_R = [] self.number_RC = [] self.number_RC_sort = [] - + self.KK_u = [] self.KK_Rgreater = [] self.KK_Rminor = [] M = 2 for i in range(len(self.df)): - self.decade.append(np.log10(np.max(self.df[i].f))-np.log10(np.min(self.df[i].f))) #determine the number of RC circuits based on the number of decades measured and num_RC + self.decade.append( + np.log10(np.max(self.df[i].f)) - np.log10(np.min(self.df[i].f)) + ) # determine the number of RC circuits based on the number of decades measured and num_RC self.number_RC.append(M) - self.number_RC_sort.append(M) #needed for self.KK_R - self.Rparam.append(KK_Rnam_val(re=self.df[i].re, re_start=self.df[i].re.idxmin(), num_RC=int(self.number_RC[i]))[0]) #Creates intial guesses for R's - self.t_const.append(KK_timeconst(w=self.df[i].w, num_RC=int(self.number_RC[i]))) #Creates time constants values for self.number_RC -(RC)- circuits - - self.Lin_KK_Fit.append(minimize(KK_errorfunc, self.Rparam[i], method='leastsq', args=(self.df[i].w.values, self.df[i].re.values, self.df[i].im.values, self.number_RC[i], weight_func, self.t_const[i]) )) #maxfev=99 - self.R_names.append(KK_Rnam_val(re=self.df[i].re, re_start=self.df[i].re.idxmin(), num_RC=int(self.number_RC[i]))[1]) #creates R names + self.number_RC_sort.append(M) # needed for self.KK_R + self.Rparam.append( + KK_Rnam_val( + re=self.df[i].re, + re_start=self.df[i].re.idxmin(), + num_RC=int(self.number_RC[i]), + )[0] + ) # Creates intial guesses for R's + self.t_const.append( + KK_timeconst(w=self.df[i].w, num_RC=int(self.number_RC[i])) + ) # Creates time constants values for self.number_RC -(RC)- circuits + + self.Lin_KK_Fit.append( + minimize( + KK_errorfunc, + self.Rparam[i], + method="leastsq", + args=( + self.df[i].w.values, + self.df[i].re.values, + self.df[i].im.values, + self.number_RC[i], + weight_func, + self.t_const[i], + ), + ) + ) # maxfev=99 + self.R_names.append( + KK_Rnam_val( + re=self.df[i].re, + re_start=self.df[i].re.idxmin(), + num_RC=int(self.number_RC[i]), + )[1] + ) # creates R names for j in range(len(self.R_names[i])): - self.KK_R0.append(self.Lin_KK_Fit[i].params.get(self.R_names[i][j]).value) - self.number_RC_sort.insert(0,0) #needed for self.KK_R + self.KK_R0.append( + self.Lin_KK_Fit[i].params.get(self.R_names[i][j]).value + ) + self.number_RC_sort.insert(0, 0) # needed for self.KK_R for i in range(len(self.df)): - self.KK_R.append(self.KK_R0[int(np.cumsum(self.number_RC_sort)[i]):int(np.cumsum(self.number_RC_sort)[i+1])]) #assigns resistances from each spectra to their respective df - self.KK_Rgreater.append(np.where(np.array(self.KK_R)[i] >= 0, np.array(self.KK_R)[i], 0) ) - self.KK_Rminor.append(np.where(np.array(self.KK_R)[i] < 0, np.array(self.KK_R)[i], 0) ) - self.KK_u.append(1-(np.abs(np.sum(self.KK_Rminor[i]))/np.abs(np.sum(self.KK_Rgreater[i])))) - + self.KK_R.append( + self.KK_R0[ + int(np.cumsum(self.number_RC_sort)[i]) : int( + np.cumsum(self.number_RC_sort)[i + 1] + ) + ] + ) # assigns resistances from each spectra to their respective df + self.KK_Rgreater.append( + np.where(np.array(self.KK_R)[i] >= 0, np.array(self.KK_R)[i], 0) + ) + self.KK_Rminor.append( + np.where(np.array(self.KK_R)[i] < 0, np.array(self.KK_R)[i], 0) + ) + self.KK_u.append( + 1 + - ( + np.abs(np.sum(self.KK_Rminor[i])) + / np.abs(np.sum(self.KK_Rgreater[i])) + ) + ) + for i in range(len(self.df)): while self.KK_u[i] <= 0.75 or self.KK_u[i] >= 0.88: self.number_RC_sort0 = [] self.KK_R_lim = [] self.number_RC[i] = self.number_RC[i] + 1 self.number_RC_sort0.append(self.number_RC) - self.number_RC_sort = np.insert(self.number_RC_sort0, 0,0) - self.Rparam[i] = KK_Rnam_val(re=self.df[i].re, re_start=self.df[i].re.idxmin(), num_RC=int(self.number_RC[i]))[0] #Creates intial guesses for R's - self.t_const[i] = KK_timeconst(w=self.df[i].w, num_RC=int(self.number_RC[i])) #Creates time constants values for self.number_RC -(RC)- circuits - self.Lin_KK_Fit[i] = minimize(KK_errorfunc, self.Rparam[i], method='leastsq', args=(self.df[i].w.values, self.df[i].re.values, self.df[i].im.values, self.number_RC[i], weight_func, self.t_const[i]) ) #maxfev=99 - self.R_names[i] = KK_Rnam_val(re=self.df[i].re, re_start=self.df[i].re.idxmin(), num_RC=int(self.number_RC[i]))[1] #creates R names - self.KK_R0 = np.delete(np.array(self.KK_R0), np.s_[0:len(self.KK_R0)]) + self.number_RC_sort = np.insert(self.number_RC_sort0, 0, 0) + self.Rparam[i] = KK_Rnam_val( + re=self.df[i].re, + re_start=self.df[i].re.idxmin(), + num_RC=int(self.number_RC[i]), + )[ + 0 + ] # Creates intial guesses for R's + self.t_const[i] = KK_timeconst( + w=self.df[i].w, num_RC=int(self.number_RC[i]) + ) # Creates time constants values for self.number_RC -(RC)- circuits + self.Lin_KK_Fit[i] = minimize( + KK_errorfunc, + self.Rparam[i], + method="leastsq", + args=( + self.df[i].w.values, + self.df[i].re.values, + self.df[i].im.values, + self.number_RC[i], + weight_func, + self.t_const[i], + ), + ) # maxfev=99 + self.R_names[i] = KK_Rnam_val( + re=self.df[i].re, + re_start=self.df[i].re.idxmin(), + num_RC=int(self.number_RC[i]), + )[ + 1 + ] # creates R names + self.KK_R0 = np.delete( + np.array(self.KK_R0), np.s_[0 : len(self.KK_R0)] + ) self.KK_R0 = [] for q in range(len(self.df)): for j in range(len(self.R_names[q])): - self.KK_R0.append(self.Lin_KK_Fit[q].params.get(self.R_names[q][j]).value) - self.KK_R_lim = np.cumsum(self.number_RC_sort) #used for KK_R[i] - - self.KK_R[i] = self.KK_R0[self.KK_R_lim[i]:self.KK_R_lim[i+1]] #assigns resistances from each spectra to their respective df - self.KK_Rgreater[i] = np.where(np.array(self.KK_R[i]) >= 0, np.array(self.KK_R[i]), 0) - self.KK_Rminor[i] = np.where(np.array(self.KK_R[i]) < 0, np.array(self.KK_R[i]), 0) - self.KK_u[i] = 1-(np.abs(np.sum(self.KK_Rminor[i]))/np.abs(np.sum(self.KK_Rgreater[i]))) + self.KK_R0.append( + self.Lin_KK_Fit[q].params.get(self.R_names[q][j]).value + ) + self.KK_R_lim = np.cumsum(self.number_RC_sort) # used for KK_R[i] + + self.KK_R[i] = self.KK_R0[ + self.KK_R_lim[i] : self.KK_R_lim[i + 1] + ] # assigns resistances from each spectra to their respective df + self.KK_Rgreater[i] = np.where( + np.array(self.KK_R[i]) >= 0, np.array(self.KK_R[i]), 0 + ) + self.KK_Rminor[i] = np.where( + np.array(self.KK_R[i]) < 0, np.array(self.KK_R[i]), 0 + ) + self.KK_u[i] = 1 - ( + np.abs(np.sum(self.KK_Rminor[i])) + / np.abs(np.sum(self.KK_Rgreater[i])) + ) else: - print('['+str(i+1)+']'+' '+str(self.number_RC[i]),' '+str(np.round(self.KK_u[i],2))) - - elif num_RC != 'auto': #hardwired number of RC-elements/decade - print('cycle || u') + print( + "[" + + str(i + 1) + + "]" + + " " + + str(self.number_RC[i]), + " " + str(np.round(self.KK_u[i], 2)), + ) + + elif num_RC != "auto": # hardwired number of RC-elements/decade + print("cycle || u") self.decade = [] self.number_RC0 = [] self.number_RC = [] @@ -2442,19 +2936,53 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x self.KK_R0 = [] self.KK_R = [] for i in range(len(self.df)): - self.decade.append(np.log10(np.max(self.df[i].f))-np.log10(np.min(self.df[i].f))) #determine the number of RC circuits based on the number of decades measured and num_RC + self.decade.append( + np.log10(np.max(self.df[i].f)) - np.log10(np.min(self.df[i].f)) + ) # determine the number of RC circuits based on the number of decades measured and num_RC self.number_RC0.append(np.round(num_RC * self.decade[i])) - self.number_RC.append(np.round(num_RC * self.decade[i])) #Creats the the number of -(RC)- circuits - self.Rparam.append(KK_Rnam_val(re=self.df[i].re, re_start=self.df[i].re.idxmin(), num_RC=int(self.number_RC0[i]))[0]) #Creates intial guesses for R's - self.t_const.append(KK_timeconst(w=self.df[i].w, num_RC=int(self.number_RC0[i]))) #Creates time constants values for self.number_RC -(RC)- circuits - self.Lin_KK_Fit.append(minimize(KK_errorfunc, self.Rparam[i], method='leastsq', args=(self.df[i].w.values, self.df[i].re.values, self.df[i].im.values, self.number_RC0[i], weight_func, self.t_const[i]) )) #maxfev=99 - self.R_names.append(KK_Rnam_val(re=self.df[i].re, re_start=self.df[i].re.idxmin(), num_RC=int(self.number_RC0[i]))[1]) #creates R names + self.number_RC.append( + np.round(num_RC * self.decade[i]) + ) # Creats the the number of -(RC)- circuits + self.Rparam.append( + KK_Rnam_val( + re=self.df[i].re, + re_start=self.df[i].re.idxmin(), + num_RC=int(self.number_RC0[i]), + )[0] + ) # Creates intial guesses for R's + self.t_const.append( + KK_timeconst(w=self.df[i].w, num_RC=int(self.number_RC0[i])) + ) # Creates time constants values for self.number_RC -(RC)- circuits + self.Lin_KK_Fit.append( + minimize( + KK_errorfunc, + self.Rparam[i], + method="leastsq", + args=( + self.df[i].w.values, + self.df[i].re.values, + self.df[i].im.values, + self.number_RC0[i], + weight_func, + self.t_const[i], + ), + ) + ) # maxfev=99 + self.R_names.append( + KK_Rnam_val( + re=self.df[i].re, + re_start=self.df[i].re.idxmin(), + num_RC=int(self.number_RC0[i]), + )[1] + ) # creates R names for j in range(len(self.R_names[i])): - self.KK_R0.append(self.Lin_KK_Fit[i].params.get(self.R_names[i][j]).value) - self.number_RC0.insert(0,0) - - # print(report_fit(self.Lin_KK_Fit[i])) # prints fitting report - + self.KK_R0.append( + self.Lin_KK_Fit[i].params.get(self.R_names[i][j]).value + ) + self.number_RC0.insert(0, 0) + + # print(report_fit(self.Lin_KK_Fit[i])) # prints fitting report + self.KK_circuit_fit = [] self.KK_rr_re = [] self.KK_rr_im = [] @@ -2462,182 +2990,761 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x self.KK_Rminor = [] self.KK_u = [] for i in range(len(self.df)): - self.KK_R.append(self.KK_R0[int(np.cumsum(self.number_RC0)[i]):int(np.cumsum(self.number_RC0)[i+1])]) #assigns resistances from each spectra to their respective df + self.KK_R.append( + self.KK_R0[ + int(np.cumsum(self.number_RC0)[i]) : int( + np.cumsum(self.number_RC0)[i + 1] + ) + ] + ) # assigns resistances from each spectra to their respective df self.KK_Rx = np.array(self.KK_R) - self.KK_Rgreater.append(np.where(self.KK_Rx[i] >= 0, self.KK_Rx[i], 0) ) - self.KK_Rminor.append(np.where(self.KK_Rx[i] < 0, self.KK_Rx[i], 0) ) - self.KK_u.append(1-(np.abs(np.sum(self.KK_Rminor[i]))/np.abs(np.sum(self.KK_Rgreater[i])))) #currently gives incorrect values - print('['+str(i+1)+']'+' '+str(np.round(self.KK_u[i],2))) + self.KK_Rgreater.append(np.where(self.KK_Rx[i] >= 0, self.KK_Rx[i], 0)) + self.KK_Rminor.append(np.where(self.KK_Rx[i] < 0, self.KK_Rx[i], 0)) + self.KK_u.append( + 1 + - ( + np.abs(np.sum(self.KK_Rminor[i])) + / np.abs(np.sum(self.KK_Rgreater[i])) + ) + ) # currently gives incorrect values + print( + "[" + str(i + 1) + "]" + " " + str(np.round(self.KK_u[i], 2)) + ) else: - print('num_RC incorrectly defined') + print("num_RC incorrectly defined") self.KK_circuit_fit = [] self.KK_rr_re = [] self.KK_rr_im = [] for i in range(len(self.df)): if int(self.number_RC[i]) == 2: - self.KK_circuit_fit.append(KK_RC2(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC2( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 3: - self.KK_circuit_fit.append(KK_RC3(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC3( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 4: - self.KK_circuit_fit.append(KK_RC4(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC4( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 5: - self.KK_circuit_fit.append(KK_RC5(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC5( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 6: - self.KK_circuit_fit.append(KK_RC6(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC6( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 7: - self.KK_circuit_fit.append(KK_RC7(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC7( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 8: - self.KK_circuit_fit.append(KK_RC8(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC8( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 9: - self.KK_circuit_fit.append(KK_RC9(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC9( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 10: - self.KK_circuit_fit.append(KK_RC10(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC10( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 11: - self.KK_circuit_fit.append(KK_RC11(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC11( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 12: - self.KK_circuit_fit.append(KK_RC12(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC12( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 13: - self.KK_circuit_fit.append(KK_RC13(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC13( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 14: - self.KK_circuit_fit.append(KK_RC14(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC14( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 15: - self.KK_circuit_fit.append(KK_RC15(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC15( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 16: - self.KK_circuit_fit.append(KK_RC16(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC16( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 17: - self.KK_circuit_fit.append(KK_RC17(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC17( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 18: - self.KK_circuit_fit.append(KK_RC18(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC18( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 19: - self.KK_circuit_fit.append(KK_RC19(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC19( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 20: - self.KK_circuit_fit.append(KK_RC20(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC20( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 21: - self.KK_circuit_fit.append(KK_RC21(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC21( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 22: - self.KK_circuit_fit.append(KK_RC22(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC22( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 23: - self.KK_circuit_fit.append(KK_RC23(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC23( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 24: - self.KK_circuit_fit.append(KK_RC24(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC24( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 25: - self.KK_circuit_fit.append(KK_RC25(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC25( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 26: - self.KK_circuit_fit.append(KK_RC26(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC26( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 27: - self.KK_circuit_fit.append(KK_RC27(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC27( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 28: - self.KK_circuit_fit.append(KK_RC28(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC28( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 29: - self.KK_circuit_fit.append(KK_RC29(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC29( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 30: - self.KK_circuit_fit.append(KK_RC30(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC30( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 31: - self.KK_circuit_fit.append(KK_RC31(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC31( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 32: - self.KK_circuit_fit.append(KK_RC32(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC32( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 33: - self.KK_circuit_fit.append(KK_RC33(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC33( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 34: - self.KK_circuit_fit.append(KK_RC34(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC34( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 35: - self.KK_circuit_fit.append(KK_RC35(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC35( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 36: - self.KK_circuit_fit.append(KK_RC36(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC36( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 37: - self.KK_circuit_fit.append(KK_RC37(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC37( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 38: - self.KK_circuit_fit.append(KK_RC38(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC38( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 39: - self.KK_circuit_fit.append(KK_RC39(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC39( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 40: - self.KK_circuit_fit.append(KK_RC40(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC40( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 41: - self.KK_circuit_fit.append(KK_RC41(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC41( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 42: - self.KK_circuit_fit.append(KK_RC42(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC42( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 43: - self.KK_circuit_fit.append(KK_RC43(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC43( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 44: - self.KK_circuit_fit.append(KK_RC44(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC44( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 45: - self.KK_circuit_fit.append(KK_RC45(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC45( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 46: - self.KK_circuit_fit.append(KK_RC46(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC46( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 47: - self.KK_circuit_fit.append(KK_RC47(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC47( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 48: - self.KK_circuit_fit.append(KK_RC48(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC48( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 49: - self.KK_circuit_fit.append(KK_RC49(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC49( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 50: - self.KK_circuit_fit.append(KK_RC50(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC50( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 51: - self.KK_circuit_fit.append(KK_RC51(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC51( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 52: - self.KK_circuit_fit.append(KK_RC52(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC52( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 53: - self.KK_circuit_fit.append(KK_RC53(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC53( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 54: - self.KK_circuit_fit.append(KK_RC54(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC54( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 55: - self.KK_circuit_fit.append(KK_RC55(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC55( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 56: - self.KK_circuit_fit.append(KK_RC56(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC56( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 57: - self.KK_circuit_fit.append(KK_RC57(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC57( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 58: - self.KK_circuit_fit.append(KK_RC58(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC58( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 59: - self.KK_circuit_fit.append(KK_RC59(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC59( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 60: - self.KK_circuit_fit.append(KK_RC60(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC60( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 61: - self.KK_circuit_fit.append(KK_RC61(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC61( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 62: - self.KK_circuit_fit.append(KK_RC62(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC62( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 63: - self.KK_circuit_fit.append(KK_RC63(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC63( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 64: - self.KK_circuit_fit.append(KK_RC64(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC64( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 65: - self.KK_circuit_fit.append(KK_RC65(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC65( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 66: - self.KK_circuit_fit.append(KK_RC66(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC66( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 67: - self.KK_circuit_fit.append(KK_RC67(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC67( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 68: - self.KK_circuit_fit.append(KK_RC68(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC68( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 69: - self.KK_circuit_fit.append(KK_RC69(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC69( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 70: - self.KK_circuit_fit.append(KK_RC70(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC70( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 71: - self.KK_circuit_fit.append(KK_RC71(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC71( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 72: - self.KK_circuit_fit.append(KK_RC72(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC72( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 73: - self.KK_circuit_fit.append(KK_RC73(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC73( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 74: - self.KK_circuit_fit.append(KK_RC74(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC74( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 75: - self.KK_circuit_fit.append(KK_RC75(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC75( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 76: - self.KK_circuit_fit.append(KK_RC76(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC76( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 77: - self.KK_circuit_fit.append(KK_RC77(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC77( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 78: - self.KK_circuit_fit.append(KK_RC78(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC78( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 79: - self.KK_circuit_fit.append(KK_RC79(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC79( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) elif int(self.number_RC[i]) == 80: - self.KK_circuit_fit.append(KK_RC80(w=self.df[i].w, Rs=self.Lin_KK_Fit[i].params.get('Rs').value, R_values=self.KK_R[i], t_values=self.t_const[i])) + self.KK_circuit_fit.append( + KK_RC80( + w=self.df[i].w, + Rs=self.Lin_KK_Fit[i].params.get("Rs").value, + R_values=self.KK_R[i], + t_values=self.t_const[i], + ) + ) else: - print('RC simulation circuit not defined') - print(' Number of RC = ', self.number_RC) - self.KK_rr_re.append(residual_real(re=self.df[i].re, fit_re=self.KK_circuit_fit[i].real, fit_im=-self.KK_circuit_fit[i].imag)) #relative residuals for the real part - self.KK_rr_im.append(residual_imag(im=self.df[i].im, fit_re=self.KK_circuit_fit[i].real, fit_im=-self.KK_circuit_fit[i].imag)) #relative residuals for the imag part + print("RC simulation circuit not defined") + print(" Number of RC = ", self.number_RC) + self.KK_rr_re.append( + residual_real( + re=self.df[i].re, + fit_re=self.KK_circuit_fit[i].real, + fit_im=-self.KK_circuit_fit[i].imag, + ) + ) # relative residuals for the real part + self.KK_rr_im.append( + residual_imag( + im=self.df[i].im, + fit_re=self.KK_circuit_fit[i].real, + fit_im=-self.KK_circuit_fit[i].imag, + ) + ) # relative residuals for the imag part ### Plotting Linear_kk results ## @@ -2646,94 +3753,207 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x self.label_re_1 = [] self.label_im_1 = [] self.label_cycleno = [] - if legend == 'on': + if legend == "on": for i in range(len(self.df)): - self.label_re_1.append("Z' (#"+str(i+1)+")") - self.label_im_1.append("Z'' (#"+str(i+1)+")") - self.label_cycleno.append('#'+str(i+1)) - elif legend == 'potential': + self.label_re_1.append("Z' (#" + str(i + 1) + ")") + self.label_im_1.append("Z'' (#" + str(i + 1) + ")") + self.label_cycleno.append("#" + str(i + 1)) + elif legend == "potential": for i in range(len(self.df)): - self.label_re_1.append("Z' ("+str(np.round(np.average(self.df[i].E_avg), 2))+' V)') - self.label_im_1.append("Z'' ("+str(np.round(np.average(self.df[i].E_avg), 2))+' V)') - self.label_cycleno.append(str(np.round(np.average(self.df[i].E_avg), 2))+' V') - - - if plot == 'w_data': - fig = figure(figsize=(6, 8), dpi=120, facecolor='w', edgecolor='k') + self.label_re_1.append( + "Z' (" + str(np.round(np.average(self.df[i].E_avg), 2)) + " V)" + ) + self.label_im_1.append( + "Z'' (" + str(np.round(np.average(self.df[i].E_avg), 2)) + " V)" + ) + self.label_cycleno.append( + str(np.round(np.average(self.df[i].E_avg), 2)) + " V" + ) + + if plot == "w_data": + fig = figure(figsize=(6, 8), dpi=120, facecolor="w", edgecolor="k") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(311, aspect='equal') + ax = fig.add_subplot(311, aspect="equal") ax1 = fig.add_subplot(312) ax2 = fig.add_subplot(313) - + colors = sns.color_palette("colorblind", n_colors=len(self.df)) - colors_real = sns.color_palette("Blues", n_colors=len(self.df)+2) - colors_imag = sns.color_palette("Oranges", n_colors=len(self.df)+2) - + colors_real = sns.color_palette("Blues", n_colors=len(self.df) + 2) + colors_imag = sns.color_palette("Oranges", n_colors=len(self.df) + 2) + ### Nyquist Plot for i in range(len(self.df)): - ax.plot(self.df[i].re, self.df[i].im, marker='o', ms=4, lw=2, color=colors[i], ls='-', alpha=.7, label=self.label_cycleno[i]) - + ax.plot( + self.df[i].re, + self.df[i].im, + marker="o", + ms=4, + lw=2, + color=colors[i], + ls="-", + alpha=0.7, + label=self.label_cycleno[i], + ) + ### Bode Plot - if bode == 'on': + if bode == "on": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), self.df[i].re, color=colors_real[i+1], marker='D', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_re_1[i]) - ax1.plot(np.log10(self.df[i].f), self.df[i].im, color=colors_imag[i+1], marker='s', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_im_1[i]) + ax1.plot( + np.log10(self.df[i].f), + self.df[i].re, + color=colors_real[i + 1], + marker="D", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_re_1[i], + ) + ax1.plot( + np.log10(self.df[i].f), + self.df[i].im, + color=colors_imag[i + 1], + marker="s", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_im_1[i], + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z', -Z'' [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 're': + elif bode == "re": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), self.df[i].re, color=colors_real[i+1], marker='D', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_cycleno[i]) + ax1.plot( + np.log10(self.df[i].f), + self.df[i].re, + color=colors_real[i + 1], + marker="D", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_cycleno[i], + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z' [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 'log_re': + elif bode == "log_re": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].re), color=colors_real[i+1], marker='D', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_cycleno[i]) + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].re), + color=colors_real[i + 1], + marker="D", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_cycleno[i], + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z') [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 'im': + elif bode == "im": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), self.df[i].im, color=colors_imag[i+1], marker='s', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_cycleno[i]) + ax1.plot( + np.log10(self.df[i].f), + self.df[i].im, + color=colors_imag[i + 1], + marker="s", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_cycleno[i], + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("-Z'' [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 'log_im': + elif bode == "log_im": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].im), color=colors_imag[i+1], marker='s', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_cycleno[i]) + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].im), + color=colors_imag[i + 1], + marker="s", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_cycleno[i], + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(-Z'') [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 'log': + elif bode == "log": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].re), color=colors_real[i+1], marker='D', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_re_1[i]) - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].im), color=colors_imag[i+1], marker='s', ms=3, lw=2.25, ls='-', alpha=.7, label=self.label_im_1[i]) + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].re), + color=colors_real[i + 1], + marker="D", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_re_1[i], + ) + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].im), + color=colors_imag[i + 1], + marker="s", + ms=3, + lw=2.25, + ls="-", + alpha=0.7, + label=self.label_im_1[i], + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z', -Z'') [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - ### Kramers-Kronig Relative Residuals + ### Kramers-Kronig Relative Residuals for i in range(len(self.df)): - ax2.plot(np.log10(self.df[i].f), self.KK_rr_re[i]*100, color=colors_real[i+1], marker='D', ls='--', ms=6, alpha=.7, label=self.label_re_1[i]) - ax2.plot(np.log10(self.df[i].f), self.KK_rr_im[i]*100, color=colors_imag[i+1], marker='s', ls='--', ms=6, alpha=.7, label=self.label_im_1[i]) + ax2.plot( + np.log10(self.df[i].f), + self.KK_rr_re[i] * 100, + color=colors_real[i + 1], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label=self.label_re_1[i], + ) + ax2.plot( + np.log10(self.df[i].f), + self.KK_rr_im[i] * 100, + color=colors_imag[i + 1], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label=self.label_im_1[i], + ) ax2.set_xlabel("log(f) [Hz]") ax2.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and write 'KK-Test' on RR subplot self.KK_rr_im_min = [] self.KK_rr_im_max = [] @@ -2743,47 +3963,89 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x self.KK_rr_im_min.append(np.min(self.KK_rr_im[i])) self.KK_rr_im_max.append(np.max(self.KK_rr_im[i])) self.KK_rr_re_min.append(np.min(self.KK_rr_re[i])) - self.KK_rr_re_max.append(np.max(self.KK_rr_re[i])) + self.KK_rr_re_max.append(np.max(self.KK_rr_re[i])) if np.min(self.KK_rr_im_min) > np.min(self.KK_rr_re_min): - ax2.set_ylim(np.min(self.KK_rr_re_min)*100*1.5, np.max(np.abs(self.KK_rr_re_min))*100*1.5) - ax2.annotate('Lin-KK', xy=[np.min(np.log10(self.df[0].f)), np.max(self.KK_rr_re_max)*100*.9], color='k', fontweight='bold') + ax2.set_ylim( + np.min(self.KK_rr_re_min) * 100 * 1.5, + np.max(np.abs(self.KK_rr_re_min)) * 100 * 1.5, + ) + ax2.annotate( + "Lin-KK", + xy=[ + np.min(np.log10(self.df[0].f)), + np.max(self.KK_rr_re_max) * 100 * 0.9, + ], + color="k", + fontweight="bold", + ) elif np.min(self.KK_rr_im_min) < np.min(self.KK_rr_re_min): - ax2.set_ylim(np.min(self.KK_rr_im_min)*100*1.5, np.max(self.KK_rr_im_max)*100*1.5) - ax2.annotate('Lin-KK', xy=[np.min(np.log10(self.df[0].f)), np.max(self.KK_rr_im_max)*100*.9], color='k', fontweight='bold') - + ax2.set_ylim( + np.min(self.KK_rr_im_min) * 100 * 1.5, + np.max(self.KK_rr_im_max) * 100 * 1.5, + ) + ax2.annotate( + "Lin-KK", + xy=[ + np.min(np.log10(self.df[0].f)), + np.max(self.KK_rr_im_max) * 100 * 0.9, + ], + color="k", + fontweight="bold", + ) + ### Figure specifics - if legend == 'on' or legend == 'potential': - ax.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax.legend(loc="best", fontsize=10, frameon=False) ax.set_xlabel("Z' [$\Omega$]") ax.set_ylabel("-Z'' [$\Omega$]") - if nyq_xlim != 'none': + if nyq_xlim != "none": ax.set_xlim(nyq_xlim[0], nyq_xlim[1]) - if nyq_ylim != 'none': + if nyq_ylim != "none": ax.set_ylim(nyq_ylim[0], nyq_ylim[1]) - #Save Figure - if savefig != 'none': + # Save Figure + if savefig != "none": fig.savefig(savefig) ### Illustrating residuals only - - elif plot == 'residuals': + + elif plot == "residuals": colors = sns.color_palette("colorblind", n_colors=9) colors_real = sns.color_palette("Blues", n_colors=9) colors_imag = sns.color_palette("Oranges", n_colors=9) ### 1 Cycle if len(self.df) == 1: - fig = figure(figsize=(12, 3.8), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 3.8), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax = fig.add_subplot(231) - ax.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax.set_xlabel("log(f) [Hz]") ax.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]") - if legend == 'on' or legend == 'potential': - ax.legend(loc='best', fontsize=10, frameon=False) - ax.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on" or legend == "potential": + ax.legend(loc="best", fontsize=10, frameon=False) + ax.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and write 'KK-Test' on RR subplot self.KK_rr_im_min = np.min(self.KK_rr_im) self.KK_rr_im_max = np.max(self.KK_rr_im) @@ -2798,45 +4060,124 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin = self.KK_rr_im_min if np.abs(self.KK_ymin) > self.KK_ymax: - ax.set_ylim(self.KK_ymin*100*1.5, np.abs(self.KK_ymin)*100*1.5) - if legend == 'on': - ax.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin)*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin)*100*1.3], color='k', fontweight='bold') + ax.set_ylim( + self.KK_ymin * 100 * 1.5, np.abs(self.KK_ymin) * 100 * 1.5 + ) + if legend == "on": + ax.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin) < self.KK_ymax: - ax.set_ylim(np.negative(self.KK_ymax)*100*1.5, np.abs(self.KK_ymax)*100*1.5) - if legend == 'on': - ax.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax*100*1.3], color='k', fontweight='bold') - - #Save Figure - if savefig != 'none': + ax.set_ylim( + np.negative(self.KK_ymax) * 100 * 1.5, + np.abs(self.KK_ymax) * 100 * 1.5, + ) + if legend == "on": + ax.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + + # Save Figure + if savefig != "none": fig.savefig(savefig) ### 2 Cycles elif len(self.df) == 2: - fig = figure(figsize=(12, 5), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 5), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(231) ax2 = fig.add_subplot(232) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=18) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) - - #cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) + + # cycle 2 + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax2.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] @@ -2860,66 +4201,204 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.3], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.3], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.3], color='k', fontweight='bold') - #Save Figure - if savefig != 'none': + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + # Save Figure + if savefig != "none": fig.savefig(savefig) ### 3 Cycles elif len(self.df) == 3: - fig = figure(figsize=(12, 5), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 5), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(231) ax2 = fig.add_subplot(232) ax3 = fig.add_subplot(233) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=18) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax2.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax3.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on" or legend == "potential": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] self.KK_rr_im_max = [] @@ -2941,87 +4420,284 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.3], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.3], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.3], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.3], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.3], color='k', fontweight='bold') - #Save Figure - if savefig != 'none': + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + # Save Figure + if savefig != "none": fig.savefig(savefig) ### 4 Cycles elif len(self.df) == 4: - fig = figure(figsize=(12, 3.8), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 3.8), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(221) ax2 = fig.add_subplot(222) ax3 = fig.add_subplot(223) ax4 = fig.add_subplot(224) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=18) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax2.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax3.set_xlabel("log(f) [Hz]") ax3.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=18) - if legend == 'on' or legend == 'potential': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 4 - ax4.plot(np.log10(self.df[3].f), self.KK_rr_re[3]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax4.plot(np.log10(self.df[3].f), self.KK_rr_im[3]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_re[3] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_im[3] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax4.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax4.legend(loc='best', fontsize=10, frameon=False) - ax4.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on" or legend == "potential": + ax4.legend(loc="best", fontsize=10, frameon=False) + ax4.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] self.KK_rr_im_max = [] @@ -3043,107 +4719,363 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[3]) > self.KK_ymax[3]: - ax4.set_ylim(self.KK_ymin[3]*100*1.5, np.abs(self.KK_ymin[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + self.KK_ymin[3] * 100 * 1.5, np.abs(self.KK_ymin[3]) * 100 * 1.5 + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[3]) < self.KK_ymax[3]: - ax4.set_ylim(np.negative(self.KK_ymax[3])*100*1.5, np.abs(self.KK_ymax[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymax[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK, ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), self.KK_ymax[3]*100*1.2], color='k', fontweight='bold') - - #Save Figure - if savefig != 'none': + ax4.set_ylim( + np.negative(self.KK_ymax[3]) * 100 * 1.5, + np.abs(self.KK_ymax[3]) * 100 * 1.5, + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymax[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + self.KK_ymax[3] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + + # Save Figure + if savefig != "none": fig.savefig(savefig) ### 5 Cycles elif len(self.df) == 5: - fig = figure(figsize=(12, 3.8), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 3.8), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(231) ax2 = fig.add_subplot(232) ax3 = fig.add_subplot(233) ax4 = fig.add_subplot(234) ax5 = fig.add_subplot(235) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=18) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax3.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 4 - ax4.plot(np.log10(self.df[3].f), self.KK_rr_re[3]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax4.plot(np.log10(self.df[3].f), self.KK_rr_im[3]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_re[3] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_im[3] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax4.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=18) ax4.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax4.legend(loc='best', fontsize=10, frameon=False) - ax4.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax4.legend(loc="best", fontsize=10, frameon=False) + ax4.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 5 - ax5.plot(np.log10(self.df[4].f), self.KK_rr_re[4]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax5.plot(np.log10(self.df[4].f), self.KK_rr_im[4]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_re[4] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_im[4] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax5.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax5.legend(loc='best', fontsize=10, frameon=False) - ax5.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax5.legend(loc="best", fontsize=10, frameon=False) + ax5.axhline(0, ls="--", c="k", alpha=0.5) ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] @@ -3166,127 +5098,442 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[3]) > self.KK_ymax[3]: - ax4.set_ylim(self.KK_ymin[3]*100*1.5, np.abs(self.KK_ymin[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + self.KK_ymin[3] * 100 * 1.5, np.abs(self.KK_ymin[3]) * 100 * 1.5 + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[3]) < self.KK_ymax[3]: - ax4.set_ylim(np.negative(self.KK_ymax[3])*100*1.5, np.abs(self.KK_ymax[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymax[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK, ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), self.KK_ymax[3]*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + np.negative(self.KK_ymax[3]) * 100 * 1.5, + np.abs(self.KK_ymax[3]) * 100 * 1.5, + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymax[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + self.KK_ymax[3] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[4]) > self.KK_ymax[4]: - ax5.set_ylim(self.KK_ymin[4]*100*1.5, np.abs(self.KK_ymin[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + self.KK_ymin[4] * 100 * 1.5, np.abs(self.KK_ymin[4]) * 100 * 1.5 + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[4]) < self.KK_ymax[4]: - ax5.set_ylim(np.negative(self.KK_ymax[4])*100*1.5, np.abs(self.KK_ymax[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymax[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK, ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), self.KK_ymax[4]*100*1.2], color='k', fontweight='bold') - #Save Figure - if savefig != 'none': + ax5.set_ylim( + np.negative(self.KK_ymax[4]) * 100 * 1.5, + np.abs(self.KK_ymax[4]) * 100 * 1.5, + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymax[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + self.KK_ymax[4] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + # Save Figure + if savefig != "none": fig.savefig(savefig) ### 6 Cycles elif len(self.df) == 6: - fig = figure(figsize=(12, 3.8), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 3.8), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(231) ax2 = fig.add_subplot(232) ax3 = fig.add_subplot(233) ax4 = fig.add_subplot(234) ax5 = fig.add_subplot(235) ax6 = fig.add_subplot(236) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 4 - ax4.plot(np.log10(self.df[3].f), self.KK_rr_re[3]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax4.plot(np.log10(self.df[3].f), self.KK_rr_im[3]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_re[3] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_im[3] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax4.set_xlabel("log(f) [Hz]") ax4.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on' or legend == 'potential': - ax4.legend(loc='best', fontsize=10, frameon=False) - ax4.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax4.legend(loc="best", fontsize=10, frameon=False) + ax4.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 5 - ax5.plot(np.log10(self.df[4].f), self.KK_rr_re[4]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax5.plot(np.log10(self.df[4].f), self.KK_rr_im[4]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_re[4] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_im[4] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax5.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax5.legend(loc='best', fontsize=10, frameon=False) - ax5.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax5.legend(loc="best", fontsize=10, frameon=False) + ax5.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 6 - ax6.plot(np.log10(self.df[5].f), self.KK_rr_re[5]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax6.plot(np.log10(self.df[5].f), self.KK_rr_im[5]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_re[5] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_im[5] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax6.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax6.legend(loc='best', fontsize=10, frameon=False) - ax6.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on" or legend == "potential": + ax6.legend(loc="best", fontsize=10, frameon=False) + ax6.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] self.KK_rr_im_max = [] @@ -3308,85 +5555,333 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[3]) > self.KK_ymax[3]: - ax4.set_ylim(self.KK_ymin[3]*100*1.5, np.abs(self.KK_ymin[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + self.KK_ymin[3] * 100 * 1.5, np.abs(self.KK_ymin[3]) * 100 * 1.5 + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[3]) < self.KK_ymax[3]: - ax4.set_ylim(np.negative(self.KK_ymax[3])*100*1.5, np.abs(self.KK_ymax[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymax[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK, ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), self.KK_ymax[3]*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + np.negative(self.KK_ymax[3]) * 100 * 1.5, + np.abs(self.KK_ymax[3]) * 100 * 1.5, + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymax[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + self.KK_ymax[3] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[4]) > self.KK_ymax[4]: - ax5.set_ylim(self.KK_ymin[4]*100*1.5, np.abs(self.KK_ymin[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + self.KK_ymin[4] * 100 * 1.5, np.abs(self.KK_ymin[4]) * 100 * 1.5 + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[4]) < self.KK_ymax[4]: - ax5.set_ylim(np.negative(self.KK_ymax[4])*100*1.5, np.abs(self.KK_ymax[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymax[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK, ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), self.KK_ymax[4]*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + np.negative(self.KK_ymax[4]) * 100 * 1.5, + np.abs(self.KK_ymax[4]) * 100 * 1.5, + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymax[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + self.KK_ymax[4] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[5]) > self.KK_ymax[5]: - ax6.set_ylim(self.KK_ymin[5]*100*1.5, np.abs(self.KK_ymin[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + self.KK_ymin[5] * 100 * 1.5, np.abs(self.KK_ymin[5]) * 100 * 1.5 + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[5]) < self.KK_ymax[5]: - ax6.set_ylim(np.negative(self.KK_ymax[5])*100*1.5, np.abs(self.KK_ymax[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymax[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK, ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), self.KK_ymax[5]*100*1.2], color='k', fontweight='bold') - #Save Figure - if savefig != 'none': + ax6.set_ylim( + np.negative(self.KK_ymax[5]) * 100 * 1.5, + np.abs(self.KK_ymax[5]) * 100 * 1.5, + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymax[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + self.KK_ymax[5] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + # Save Figure + if savefig != "none": fig.savefig(savefig) - + ### 7 Cycles elif len(self.df) == 7: - fig = figure(figsize=(12, 5), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 5), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(331) ax2 = fig.add_subplot(332) ax3 = fig.add_subplot(333) @@ -3394,63 +5889,189 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x ax5 = fig.add_subplot(335) ax6 = fig.add_subplot(336) ax7 = fig.add_subplot(337) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax3.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 4 - ax4.plot(np.log10(self.df[3].f), self.KK_rr_re[3]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax4.plot(np.log10(self.df[3].f), self.KK_rr_im[3]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_re[3] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_im[3] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax4.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on' or legend == 'potential': - ax4.legend(loc='best', fontsize=10, frameon=False) - ax4.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax4.legend(loc="best", fontsize=10, frameon=False) + ax4.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 5 - ax5.plot(np.log10(self.df[4].f), self.KK_rr_re[4]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax5.plot(np.log10(self.df[4].f), self.KK_rr_im[4]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_re[4] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_im[4] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax5.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax5.legend(loc='best', fontsize=10, frameon=False) - ax5.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax5.legend(loc="best", fontsize=10, frameon=False) + ax5.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 6 - ax6.plot(np.log10(self.df[5].f), self.KK_rr_re[5]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax6.plot(np.log10(self.df[5].f), self.KK_rr_im[5]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_re[5] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_im[5] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax6.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax6.legend(loc='best', fontsize=10, frameon=False) - ax6.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax6.legend(loc="best", fontsize=10, frameon=False) + ax6.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 7 - ax7.plot(np.log10(self.df[6].f), self.KK_rr_re[6]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax7.plot(np.log10(self.df[6].f), self.KK_rr_im[6]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax7.plot( + np.log10(self.df[6].f), + self.KK_rr_re[6] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax7.plot( + np.log10(self.df[6].f), + self.KK_rr_im[6] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax7.set_xlabel("log(f) [Hz]") ax7.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on' or legend == 'potential': - ax7.legend(loc='best', fontsize=10, frameon=False) - ax7.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on" or legend == "potential": + ax7.legend(loc="best", fontsize=10, frameon=False) + ax7.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] self.KK_rr_im_max = [] @@ -3472,97 +6093,386 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[3]) > self.KK_ymax[3]: - ax4.set_ylim(self.KK_ymin[3]*100*1.5, np.abs(self.KK_ymin[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + self.KK_ymin[3] * 100 * 1.5, np.abs(self.KK_ymin[3]) * 100 * 1.5 + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[3]) < self.KK_ymax[3]: - ax4.set_ylim(np.negative(self.KK_ymax[3])*100*1.5, np.abs(self.KK_ymax[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymax[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK, ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), self.KK_ymax[3]*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + np.negative(self.KK_ymax[3]) * 100 * 1.5, + np.abs(self.KK_ymax[3]) * 100 * 1.5, + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymax[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + self.KK_ymax[3] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[4]) > self.KK_ymax[4]: - ax5.set_ylim(self.KK_ymin[4]*100*1.5, np.abs(self.KK_ymin[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + self.KK_ymin[4] * 100 * 1.5, np.abs(self.KK_ymin[4]) * 100 * 1.5 + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[4]) < self.KK_ymax[4]: - ax5.set_ylim(np.negative(self.KK_ymax[4])*100*1.5, np.abs(self.KK_ymax[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymax[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK, ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), self.KK_ymax[4]*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + np.negative(self.KK_ymax[4]) * 100 * 1.5, + np.abs(self.KK_ymax[4]) * 100 * 1.5, + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymax[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + self.KK_ymax[4] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[5]) > self.KK_ymax[5]: - ax6.set_ylim(self.KK_ymin[5]*100*1.5, np.abs(self.KK_ymin[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + self.KK_ymin[5] * 100 * 1.5, np.abs(self.KK_ymin[5]) * 100 * 1.5 + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[5]) < self.KK_ymax[5]: - ax6.set_ylim(np.negative(self.KK_ymax[5])*100*1.5, np.abs(self.KK_ymax[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymax[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK, ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), self.KK_ymax[5]*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + np.negative(self.KK_ymax[5]) * 100 * 1.5, + np.abs(self.KK_ymax[5]) * 100 * 1.5, + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymax[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + self.KK_ymax[5] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[6]) > self.KK_ymax[6]: - ax7.set_ylim(self.KK_ymin[6]*100*1.5, np.abs(self.KK_ymin[6])*100*1.5) - if legend == 'on': - ax7.annotate('Lin-KK, #7', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymin[6])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax7.annotate('Lin-KK ('+str(np.round(np.average(self.df[6].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymin[6])*100*1.2], color='k', fontweight='bold') + ax7.set_ylim( + self.KK_ymin[6] * 100 * 1.5, np.abs(self.KK_ymin[6]) * 100 * 1.5 + ) + if legend == "on": + ax7.annotate( + "Lin-KK, #7", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymin[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax7.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[6].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymin[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[6]) < self.KK_ymax[6]: - ax7.set_ylim(np.negative(self.KK_ymax[6])*100*1.5, np.abs(self.KK_ymax[6])*100*1.5) - if legend == 'on': - ax7.annotate('Lin-KK, #7', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymax[6])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax7.annotate('Lin-KK, ('+str(np.round(np.average(self.df[6].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[6].f)), self.KK_ymax[6]*100*1.2], color='k', fontweight='bold') - #Save Figure - if savefig != 'none': - fig.savefig(savefig) - + ax7.set_ylim( + np.negative(self.KK_ymax[6]) * 100 * 1.5, + np.abs(self.KK_ymax[6]) * 100 * 1.5, + ) + if legend == "on": + ax7.annotate( + "Lin-KK, #7", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymax[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax7.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[6].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[6].f)), + self.KK_ymax[6] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + # Save Figure + if savefig != "none": + fig.savefig(savefig) + ### 8 Cycles elif len(self.df) == 8: - fig = figure(figsize=(12, 5), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 5), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(331) ax2 = fig.add_subplot(332) ax3 = fig.add_subplot(333) @@ -3571,68 +6481,212 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x ax6 = fig.add_subplot(336) ax7 = fig.add_subplot(337) ax8 = fig.add_subplot(338) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=14) - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 4 - ax4.plot(np.log10(self.df[3].f), self.KK_rr_re[3]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax4.plot(np.log10(self.df[3].f), self.KK_rr_im[3]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_re[3] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_im[3] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax4.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=14) - if legend == 'on' or legend == 'potential': - ax4.legend(loc='best', fontsize=10, frameon=False) - ax4.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax4.legend(loc="best", fontsize=10, frameon=False) + ax4.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 5 - ax5.plot(np.log10(self.df[4].f), self.KK_rr_re[4]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax5.plot(np.log10(self.df[4].f), self.KK_rr_im[4]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on' or legend == 'potential': - ax5.legend(loc='best', fontsize=10, frameon=False) - ax5.axhline(0, ls='--', c='k', alpha=.5) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_re[4] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_im[4] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on" or legend == "potential": + ax5.legend(loc="best", fontsize=10, frameon=False) + ax5.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 6 - ax6.plot(np.log10(self.df[5].f), self.KK_rr_re[5]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax6.plot(np.log10(self.df[5].f), self.KK_rr_im[5]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_re[5] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_im[5] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax6.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax6.legend(loc='best', fontsize=10, frameon=False) - ax6.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax6.legend(loc="best", fontsize=10, frameon=False) + ax6.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 7 - ax7.plot(np.log10(self.df[6].f), self.KK_rr_re[6]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax7.plot(np.log10(self.df[6].f), self.KK_rr_im[6]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax7.plot( + np.log10(self.df[6].f), + self.KK_rr_re[6] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax7.plot( + np.log10(self.df[6].f), + self.KK_rr_im[6] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax7.set_xlabel("log(f) [Hz]") - ax7.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=14) - if legend == 'on' or legend == 'potential': - ax7.legend(loc='best', fontsize=10, frameon=False) - ax7.axhline(0, ls='--', c='k', alpha=.5) + ax7.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=14) + if legend == "on" or legend == "potential": + ax7.legend(loc="best", fontsize=10, frameon=False) + ax7.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 8 - ax8.plot(np.log10(self.df[7].f), self.KK_rr_re[7]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax8.plot(np.log10(self.df[7].f), self.KK_rr_im[7]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax8.plot( + np.log10(self.df[7].f), + self.KK_rr_re[7] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax8.plot( + np.log10(self.df[7].f), + self.KK_rr_im[7] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax8.set_xlabel("log(f) [Hz]") - if legend == 'on' or legend == 'potential': - ax8.legend(loc='best', fontsize=10, frameon=False) - ax8.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on" or legend == "potential": + ax8.legend(loc="best", fontsize=10, frameon=False) + ax8.axhline(0, ls="--", c="k", alpha=0.5) ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] @@ -3655,109 +6709,439 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[3]) > self.KK_ymax[3]: - ax4.set_ylim(self.KK_ymin[3]*100*1.5, np.abs(self.KK_ymin[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + self.KK_ymin[3] * 100 * 1.5, np.abs(self.KK_ymin[3]) * 100 * 1.5 + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[3]) < self.KK_ymax[3]: - ax4.set_ylim(np.negative(self.KK_ymax[3])*100*1.5, np.abs(self.KK_ymax[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymax[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK, ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), self.KK_ymax[3]*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + np.negative(self.KK_ymax[3]) * 100 * 1.5, + np.abs(self.KK_ymax[3]) * 100 * 1.5, + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymax[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + self.KK_ymax[3] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[4]) > self.KK_ymax[4]: - ax5.set_ylim(self.KK_ymin[4]*100*1.5, np.abs(self.KK_ymin[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + self.KK_ymin[4] * 100 * 1.5, np.abs(self.KK_ymin[4]) * 100 * 1.5 + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[4]) < self.KK_ymax[4]: - ax5.set_ylim(np.negative(self.KK_ymax[4])*100*1.5, np.abs(self.KK_ymax[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymax[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK, ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), self.KK_ymax[4]*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + np.negative(self.KK_ymax[4]) * 100 * 1.5, + np.abs(self.KK_ymax[4]) * 100 * 1.5, + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymax[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + self.KK_ymax[4] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[5]) > self.KK_ymax[5]: - ax6.set_ylim(self.KK_ymin[5]*100*1.5, np.abs(self.KK_ymin[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + self.KK_ymin[5] * 100 * 1.5, np.abs(self.KK_ymin[5]) * 100 * 1.5 + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[5]) < self.KK_ymax[5]: - ax6.set_ylim(np.negative(self.KK_ymax[5])*100*1.5, np.abs(self.KK_ymax[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymax[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK, ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), self.KK_ymax[5]*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + np.negative(self.KK_ymax[5]) * 100 * 1.5, + np.abs(self.KK_ymax[5]) * 100 * 1.5, + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymax[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + self.KK_ymax[5] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[6]) > self.KK_ymax[6]: - ax7.set_ylim(self.KK_ymin[6]*100*1.5, np.abs(self.KK_ymin[6])*100*1.5) - if legend == 'on': - ax7.annotate('Lin-KK, #7', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymin[6])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax7.annotate('Lin-KK ('+str(np.round(np.average(self.df[6].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymin[6])*100*1.2], color='k', fontweight='bold') + ax7.set_ylim( + self.KK_ymin[6] * 100 * 1.5, np.abs(self.KK_ymin[6]) * 100 * 1.5 + ) + if legend == "on": + ax7.annotate( + "Lin-KK, #7", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymin[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax7.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[6].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymin[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[6]) < self.KK_ymax[6]: - ax7.set_ylim(np.negative(self.KK_ymax[6])*100*1.5, np.abs(self.KK_ymax[6])*100*1.5) - if legend == 'on': - ax7.annotate('Lin-KK, #7', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymax[6])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax7.annotate('Lin-KK, ('+str(np.round(np.average(self.df[6].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[6].f)), self.KK_ymax[6]*100*1.2], color='k', fontweight='bold') + ax7.set_ylim( + np.negative(self.KK_ymax[6]) * 100 * 1.5, + np.abs(self.KK_ymax[6]) * 100 * 1.5, + ) + if legend == "on": + ax7.annotate( + "Lin-KK, #7", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymax[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax7.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[6].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[6].f)), + self.KK_ymax[6] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[7]) > self.KK_ymax[7]: - ax8.set_ylim(self.KK_ymin[7]*100*1.5, np.abs(self.KK_ymin[7])*100*1.5) - if legend == 'on': - ax8.annotate('Lin-KK, #8', xy=[np.min(np.log10(self.df[7].f)), np.abs(self.KK_ymin[7])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax8.annotate('Lin-KK ('+str(np.round(np.average(self.df[7].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[7].f)), np.abs(self.KK_ymin[7])*100*1.2], color='k', fontweight='bold') + ax8.set_ylim( + self.KK_ymin[7] * 100 * 1.5, np.abs(self.KK_ymin[7]) * 100 * 1.5 + ) + if legend == "on": + ax8.annotate( + "Lin-KK, #8", + xy=[ + np.min(np.log10(self.df[7].f)), + np.abs(self.KK_ymin[7]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax8.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[7].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[7].f)), + np.abs(self.KK_ymin[7]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[7]) < self.KK_ymax[7]: - ax8.set_ylim(np.negative(self.KK_ymax[7])*100*1.5, np.abs(self.KK_ymax[7])*100*1.5) - if legend == 'on': - ax8.annotate('Lin-KK, #8', xy=[np.min(np.log10(self.df[7].f)), np.abs(self.KK_ymax[7])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax8.annotate('Lin-KK, ('+str(np.round(np.average(self.df[7].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[7].f)), self.KK_ymax[7]*100*1.2], color='k', fontweight='bold') - #Save Figure - if savefig != 'none': + ax8.set_ylim( + np.negative(self.KK_ymax[7]) * 100 * 1.5, + np.abs(self.KK_ymax[7]) * 100 * 1.5, + ) + if legend == "on": + ax8.annotate( + "Lin-KK, #8", + xy=[ + np.min(np.log10(self.df[7].f)), + np.abs(self.KK_ymax[7]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax8.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[7].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[7].f)), + self.KK_ymax[7] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + # Save Figure + if savefig != "none": fig.savefig(savefig) ### 9 Cycles elif len(self.df) == 9: - fig = figure(figsize=(12, 5), dpi=120, facecolor='w', edgecolor='k') - fig.subplots_adjust(left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95) + fig = figure(figsize=(12, 5), dpi=120, facecolor="w", edgecolor="k") + fig.subplots_adjust( + left=0.1, right=0.95, hspace=0.25, wspace=0.25, bottom=0.1, top=0.95 + ) ax1 = fig.add_subplot(331) ax2 = fig.add_subplot(332) ax3 = fig.add_subplot(333) @@ -3767,76 +7151,238 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x ax7 = fig.add_subplot(337) ax8 = fig.add_subplot(338) ax9 = fig.add_subplot(339) - - #cycle 1 - ax1.plot(np.log10(self.df[0].f), self.KK_rr_re[0]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax1.plot(np.log10(self.df[0].f), self.KK_rr_im[0]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + + # cycle 1 + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_re[0] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax1.plot( + np.log10(self.df[0].f), + self.KK_rr_im[0] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax1.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - ax1.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + ax1.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 2 - ax2.plot(np.log10(self.df[1].f), self.KK_rr_re[1]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax2.plot(np.log10(self.df[1].f), self.KK_rr_im[1]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on': - ax2.legend(loc='best', fontsize=10, frameon=False) - ax2.axhline(0, ls='--', c='k', alpha=.5) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_re[1] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax2.plot( + np.log10(self.df[1].f), + self.KK_rr_im[1] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on": + ax2.legend(loc="best", fontsize=10, frameon=False) + ax2.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 3 - ax3.plot(np.log10(self.df[2].f), self.KK_rr_re[2]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax3.plot(np.log10(self.df[2].f), self.KK_rr_im[2]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on': - ax3.legend(loc='best', fontsize=10, frameon=False) - ax3.axhline(0, ls='--', c='k', alpha=.5) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_re[2] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax3.plot( + np.log10(self.df[2].f), + self.KK_rr_im[2] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on": + ax3.legend(loc="best", fontsize=10, frameon=False) + ax3.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 4 - ax4.plot(np.log10(self.df[3].f), self.KK_rr_re[3]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax4.plot(np.log10(self.df[3].f), self.KK_rr_im[3]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_re[3] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax4.plot( + np.log10(self.df[3].f), + self.KK_rr_im[3] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax4.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) - if legend == 'on': - ax4.legend(loc='best', fontsize=10, frameon=False) - ax4.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on": + ax4.legend(loc="best", fontsize=10, frameon=False) + ax4.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 5 - ax5.plot(np.log10(self.df[4].f), self.KK_rr_re[4]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax5.plot(np.log10(self.df[4].f), self.KK_rr_im[4]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on': - ax5.legend(loc='best', fontsize=10, frameon=False) - ax5.axhline(0, ls='--', c='k', alpha=.5) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_re[4] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax5.plot( + np.log10(self.df[4].f), + self.KK_rr_im[4] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on": + ax5.legend(loc="best", fontsize=10, frameon=False) + ax5.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 6 - ax6.plot(np.log10(self.df[5].f), self.KK_rr_re[5]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax6.plot(np.log10(self.df[5].f), self.KK_rr_im[5]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") - if legend == 'on': - ax6.legend(loc='best', fontsize=10, frameon=False) - ax6.axhline(0, ls='--', c='k', alpha=.5) + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_re[5] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax6.plot( + np.log10(self.df[5].f), + self.KK_rr_im[5] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) + if legend == "on": + ax6.legend(loc="best", fontsize=10, frameon=False) + ax6.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 7 - ax7.plot(np.log10(self.df[6].f), self.KK_rr_re[6]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax7.plot(np.log10(self.df[6].f), self.KK_rr_im[6]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax7.plot( + np.log10(self.df[6].f), + self.KK_rr_re[6] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax7.plot( + np.log10(self.df[6].f), + self.KK_rr_im[6] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax7.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]", fontsize=15) ax7.set_xlabel("log(f) [Hz]") - if legend == 'on': - ax7.legend(loc='best', fontsize=10, frameon=False) - ax7.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on": + ax7.legend(loc="best", fontsize=10, frameon=False) + ax7.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 8 - ax8.plot(np.log10(self.df[7].f), self.KK_rr_re[7]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax8.plot(np.log10(self.df[7].f), self.KK_rr_im[7]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax8.plot( + np.log10(self.df[7].f), + self.KK_rr_re[7] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax8.plot( + np.log10(self.df[7].f), + self.KK_rr_im[7] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax8.set_xlabel("log(f) [Hz]") - if legend == 'on': - ax8.legend(loc='best', fontsize=10, frameon=False) - ax8.axhline(0, ls='--', c='k', alpha=.5) + if legend == "on": + ax8.legend(loc="best", fontsize=10, frameon=False) + ax8.axhline(0, ls="--", c="k", alpha=0.5) # Cycle 9 - ax9.plot(np.log10(self.df[8].f), self.KK_rr_re[8]*100, color=colors_real[3], marker='D', ls='--', ms=6, alpha=.7, label="$\Delta$Z'") - ax9.plot(np.log10(self.df[8].f), self.KK_rr_im[8]*100, color=colors_imag[3], marker='s', ls='--', ms=6, alpha=.7, label="$\Delta$-Z''") + ax9.plot( + np.log10(self.df[8].f), + self.KK_rr_re[8] * 100, + color=colors_real[3], + marker="D", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$Z'", + ) + ax9.plot( + np.log10(self.df[8].f), + self.KK_rr_im[8] * 100, + color=colors_imag[3], + marker="s", + ls="--", + ms=6, + alpha=0.7, + label="$\Delta$-Z''", + ) ax9.set_xlabel("log(f) [Hz]") - if legend == 'on': - ax9.legend(loc='best', fontsize=10, frameon=False) - ax9.axhline(0, ls='--', c='k', alpha=.5) - + if legend == "on": + ax9.legend(loc="best", fontsize=10, frameon=False) + ax9.axhline(0, ls="--", c="k", alpha=0.5) + ### Setting ylims and labeling plot with 'KK-Test' in RR subplot self.KK_rr_im_min = [] self.KK_rr_im_max = [] @@ -3858,127 +7404,498 @@ def Lin_KK(self, num_RC='auto', legend='on', plot='residuals', bode='off', nyq_x else: self.KK_ymin.append(self.KK_rr_im_min[i]) if np.abs(self.KK_ymin[0]) > self.KK_ymax[0]: - ax1.set_ylim(self.KK_ymin[0]*100*1.5, np.abs(self.KK_ymin[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymin[0])*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + self.KK_ymin[0] * 100 * 1.5, np.abs(self.KK_ymin[0]) * 100 * 1.5 + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymin[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax1.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[0])*100*1.5) - if legend == 'on': - ax1.annotate('Lin-KK, #1', xy=[np.min(np.log10(self.df[0].f)), np.abs(self.KK_ymax[0])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax1.annotate('Lin-KK, ('+str(np.round(np.average(self.df[0].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[0].f)), self.KK_ymax[0]*100*1.2], color='k', fontweight='bold') + ax1.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[0]) * 100 * 1.5, + ) + if legend == "on": + ax1.annotate( + "Lin-KK, #1", + xy=[ + np.min(np.log10(self.df[0].f)), + np.abs(self.KK_ymax[0]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax1.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[0].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[0].f)), + self.KK_ymax[0] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[1]) > self.KK_ymax[1]: - ax2.set_ylim(self.KK_ymin[1]*100*1.5, np.abs(self.KK_ymin[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.3], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), np.max(np.abs(self.KK_ymin[1]))*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + self.KK_ymin[1] * 100 * 1.5, np.abs(self.KK_ymin[1]) * 100 * 1.5 + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.3, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + np.max(np.abs(self.KK_ymin[1])) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[0]) < self.KK_ymax[0]: - ax2.set_ylim(np.negative(self.KK_ymax[1])*100*1.5, np.abs(self.KK_ymax[1])*100*1.5) - if legend == 'on': - ax2.annotate('Lin-KK, #2', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax2.annotate('Lin-KK ('+str(np.round(np.average(self.df[1].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[1].f)), self.KK_ymax[1]*100*1.2], color='k', fontweight='bold') + ax2.set_ylim( + np.negative(self.KK_ymax[1]) * 100 * 1.5, + np.abs(self.KK_ymax[1]) * 100 * 1.5, + ) + if legend == "on": + ax2.annotate( + "Lin-KK, #2", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax2.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[1].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[1].f)), + self.KK_ymax[1] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[2]) > self.KK_ymax[2]: - ax3.set_ylim(self.KK_ymin[2]*100*1.5, np.abs(self.KK_ymin[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymin[2])*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + self.KK_ymin[2] * 100 * 1.5, np.abs(self.KK_ymin[2]) * 100 * 1.5 + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymin[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[2]) < self.KK_ymax[2]: - ax3.set_ylim(np.negative(self.KK_ymax[0])*100*1.5, np.abs(self.KK_ymax[2])*100*1.5) - if legend == 'on': - ax3.annotate('Lin-KK, #3', xy=[np.min(np.log10(self.df[2].f)), np.abs(self.KK_ymax[2])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax3.annotate('Lin-KK, ('+str(np.round(np.average(self.df[2].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[2].f)), self.KK_ymax[2]*100*1.2], color='k', fontweight='bold') + ax3.set_ylim( + np.negative(self.KK_ymax[0]) * 100 * 1.5, + np.abs(self.KK_ymax[2]) * 100 * 1.5, + ) + if legend == "on": + ax3.annotate( + "Lin-KK, #3", + xy=[ + np.min(np.log10(self.df[2].f)), + np.abs(self.KK_ymax[2]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax3.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[2].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[2].f)), + self.KK_ymax[2] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[3]) > self.KK_ymax[3]: - ax4.set_ylim(self.KK_ymin[3]*100*1.5, np.abs(self.KK_ymin[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymin[3])*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + self.KK_ymin[3] * 100 * 1.5, np.abs(self.KK_ymin[3]) * 100 * 1.5 + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymin[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[3]) < self.KK_ymax[3]: - ax4.set_ylim(np.negative(self.KK_ymax[3])*100*1.5, np.abs(self.KK_ymax[3])*100*1.5) - if legend == 'on': - ax4.annotate('Lin-KK, #4', xy=[np.min(np.log10(self.df[3].f)), np.abs(self.KK_ymax[3])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax4.annotate('Lin-KK, ('+str(np.round(np.average(self.df[3].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[3].f)), self.KK_ymax[3]*100*1.2], color='k', fontweight='bold') + ax4.set_ylim( + np.negative(self.KK_ymax[3]) * 100 * 1.5, + np.abs(self.KK_ymax[3]) * 100 * 1.5, + ) + if legend == "on": + ax4.annotate( + "Lin-KK, #4", + xy=[ + np.min(np.log10(self.df[3].f)), + np.abs(self.KK_ymax[3]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax4.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[3].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[3].f)), + self.KK_ymax[3] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[4]) > self.KK_ymax[4]: - ax5.set_ylim(self.KK_ymin[4]*100*1.5, np.abs(self.KK_ymin[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymin[4])*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + self.KK_ymin[4] * 100 * 1.5, np.abs(self.KK_ymin[4]) * 100 * 1.5 + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymin[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[4]) < self.KK_ymax[4]: - ax5.set_ylim(np.negative(self.KK_ymax[4])*100*1.5, np.abs(self.KK_ymax[4])*100*1.5) - if legend == 'on': - ax5.annotate('Lin-KK, #5', xy=[np.min(np.log10(self.df[4].f)), np.abs(self.KK_ymax[4])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax5.annotate('Lin-KK, ('+str(np.round(np.average(self.df[4].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[4].f)), self.KK_ymax[4]*100*1.2], color='k', fontweight='bold') + ax5.set_ylim( + np.negative(self.KK_ymax[4]) * 100 * 1.5, + np.abs(self.KK_ymax[4]) * 100 * 1.5, + ) + if legend == "on": + ax5.annotate( + "Lin-KK, #5", + xy=[ + np.min(np.log10(self.df[4].f)), + np.abs(self.KK_ymax[4]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax5.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[4].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[4].f)), + self.KK_ymax[4] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[5]) > self.KK_ymax[5]: - ax6.set_ylim(self.KK_ymin[5]*100*1.5, np.abs(self.KK_ymin[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymin[5])*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + self.KK_ymin[5] * 100 * 1.5, np.abs(self.KK_ymin[5]) * 100 * 1.5 + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymin[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[5]) < self.KK_ymax[5]: - ax6.set_ylim(np.negative(self.KK_ymax[5])*100*1.5, np.abs(self.KK_ymax[5])*100*1.5) - if legend == 'on': - ax6.annotate('Lin-KK, #6', xy=[np.min(np.log10(self.df[5].f)), np.abs(self.KK_ymax[5])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax6.annotate('Lin-KK, ('+str(np.round(np.average(self.df[5].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[5].f)), self.KK_ymax[5]*100*1.2], color='k', fontweight='bold') + ax6.set_ylim( + np.negative(self.KK_ymax[5]) * 100 * 1.5, + np.abs(self.KK_ymax[5]) * 100 * 1.5, + ) + if legend == "on": + ax6.annotate( + "Lin-KK, #6", + xy=[ + np.min(np.log10(self.df[5].f)), + np.abs(self.KK_ymax[5]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax6.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[5].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[5].f)), + self.KK_ymax[5] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[6]) > self.KK_ymax[6]: - ax7.set_ylim(self.KK_ymin[6]*100*1.5, np.abs(self.KK_ymin[6])*100*1.5) - if legend == 'on': - ax7.annotate('Lin-KK, #7', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymin[6])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax7.annotate('Lin-KK ('+str(np.round(np.average(self.df[6].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymin[6])*100*1.2], color='k', fontweight='bold') + ax7.set_ylim( + self.KK_ymin[6] * 100 * 1.5, np.abs(self.KK_ymin[6]) * 100 * 1.5 + ) + if legend == "on": + ax7.annotate( + "Lin-KK, #7", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymin[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax7.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[6].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymin[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[6]) < self.KK_ymax[6]: - ax7.set_ylim(np.negative(self.KK_ymax[6])*100*1.5, np.abs(self.KK_ymax[6])*100*1.5) - if legend == 'on': - ax7.annotate('Lin-KK, #7', xy=[np.min(np.log10(self.df[6].f)), np.abs(self.KK_ymax[6])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax7.annotate('Lin-KK, ('+str(np.round(np.average(self.df[6].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[6].f)), self.KK_ymax[6]*100*1.2], color='k', fontweight='bold') + ax7.set_ylim( + np.negative(self.KK_ymax[6]) * 100 * 1.5, + np.abs(self.KK_ymax[6]) * 100 * 1.5, + ) + if legend == "on": + ax7.annotate( + "Lin-KK, #7", + xy=[ + np.min(np.log10(self.df[6].f)), + np.abs(self.KK_ymax[6]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax7.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[6].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[6].f)), + self.KK_ymax[6] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[7]) > self.KK_ymax[7]: - ax8.set_ylim(self.KK_ymin[7]*100*1.5, np.abs(self.KK_ymin[7])*100*1.5) - if legend == 'on': - ax8.annotate('Lin-KK, #8', xy=[np.min(np.log10(self.df[7].f)), np.abs(self.KK_ymin[7])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax8.annotate('Lin-KK ('+str(np.round(np.average(self.df[7].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[7].f)), np.abs(self.KK_ymin[7])*100*1.2], color='k', fontweight='bold') + ax8.set_ylim( + self.KK_ymin[7] * 100 * 1.5, np.abs(self.KK_ymin[7]) * 100 * 1.5 + ) + if legend == "on": + ax8.annotate( + "Lin-KK, #8", + xy=[ + np.min(np.log10(self.df[7].f)), + np.abs(self.KK_ymin[7]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax8.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[7].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[7].f)), + np.abs(self.KK_ymin[7]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[7]) < self.KK_ymax[7]: - ax8.set_ylim(np.negative(self.KK_ymax[7])*100*1.5, np.abs(self.KK_ymax[7])*100*1.5) - if legend == 'on': - ax8.annotate('Lin-KK, #8', xy=[np.min(np.log10(self.df[7].f)), np.abs(self.KK_ymax[7])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax8.annotate('Lin-KK, ('+str(np.round(np.average(self.df[7].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[7].f)), self.KK_ymax[7]*100*1.2], color='k', fontweight='bold') + ax8.set_ylim( + np.negative(self.KK_ymax[7]) * 100 * 1.5, + np.abs(self.KK_ymax[7]) * 100 * 1.5, + ) + if legend == "on": + ax8.annotate( + "Lin-KK, #8", + xy=[ + np.min(np.log10(self.df[7].f)), + np.abs(self.KK_ymax[7]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax8.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[7].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[7].f)), + self.KK_ymax[7] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) if np.abs(self.KK_ymin[8]) > self.KK_ymax[8]: - ax9.set_ylim(self.KK_ymin[8]*100*1.5, np.abs(self.KK_ymin[8])*100*1.5) - if legend == 'on': - ax9.annotate('Lin-KK, #9', xy=[np.min(np.log10(self.df[8].f)), np.abs(self.KK_ymin[8])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax9.annotate('Lin-KK ('+str(np.round(np.average(self.df[8].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[8].f)), np.abs(self.KK_ymin[8])*100*1.2], color='k', fontweight='bold') + ax9.set_ylim( + self.KK_ymin[8] * 100 * 1.5, np.abs(self.KK_ymin[8]) * 100 * 1.5 + ) + if legend == "on": + ax9.annotate( + "Lin-KK, #9", + xy=[ + np.min(np.log10(self.df[8].f)), + np.abs(self.KK_ymin[8]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax9.annotate( + "Lin-KK (" + + str(np.round(np.average(self.df[8].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[8].f)), + np.abs(self.KK_ymin[8]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) elif np.abs(self.KK_ymin[8]) < self.KK_ymax[8]: - ax9.set_ylim(np.negative(self.KK_ymax[8])*100*1.5, np.abs(self.KK_ymax[8])*100*1.5) - if legend == 'on': - ax9.annotate('Lin-KK, #9', xy=[np.min(np.log10(self.df[8].f)), np.abs(self.KK_ymax[8])*100*1.2], color='k', fontweight='bold') - elif legend == 'potential': - ax9.annotate('Lin-KK, ('+str(np.round(np.average(self.df[8].E_avg),2))+' V)', xy=[np.min(np.log10(self.df[8].f)), self.KK_ymax[8]*100*1.2], color='k', fontweight='bold') - - #Save Figure - if savefig != 'none': + ax9.set_ylim( + np.negative(self.KK_ymax[8]) * 100 * 1.5, + np.abs(self.KK_ymax[8]) * 100 * 1.5, + ) + if legend == "on": + ax9.annotate( + "Lin-KK, #9", + xy=[ + np.min(np.log10(self.df[8].f)), + np.abs(self.KK_ymax[8]) * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + elif legend == "potential": + ax9.annotate( + "Lin-KK, (" + + str(np.round(np.average(self.df[8].E_avg), 2)) + + " V)", + xy=[ + np.min(np.log10(self.df[8].f)), + self.KK_ymax[8] * 100 * 1.2, + ], + color="k", + fontweight="bold", + ) + + # Save Figure + if savefig != "none": fig.savefig(savefig) else: - print('Too many spectras, cannot plot all. Maximum spectras allowed = 9') + print( + "Too many spectras, cannot plot all. Maximum spectras allowed = 9" + ) - def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): - ''' + def EIS_fit(self, params, circuit, weight_func="modulus", nan_policy="raise"): + """ EIS_fit() fits experimental data to an equivalent circuit model using complex non-linear least-squares (CNLS) fitting procedure and allows for batch fitting. - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ------------ - circuit: @@ -4009,84 +7926,150 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): - modulus (default) - unity - proportional - + - nan_policy How to handle Nan or missing values in dataset - ‘raise’ = raise a value error (default) - ‘propagate’ = do nothing - ‘omit’ = drops missing data - + Returns ------------ Returns the fitted impedance spectra(s) but also the fitted parameters that were used in the initial guesses. To call these use e.g. self.fit_Rs - ''' + """ self.Fit = [] self.circuit_fit = [] self.fit_E = [] for i in range(len(self.df)): - self.Fit.append(minimize(leastsq_errorfunc, params, method='leastsq', args=(self.df[i].w.values, self.df[i].re.values, self.df[i].im.values, circuit, weight_func), nan_policy=nan_policy, maxfev=9999990)) + self.Fit.append( + minimize( + leastsq_errorfunc, + params, + method="leastsq", + args=( + self.df[i].w.values, + self.df[i].re.values, + self.df[i].im.values, + circuit, + weight_func, + ), + nan_policy=nan_policy, + max_nfev=9999990, + ) + ) print(report_fit(self.Fit[i])) - + self.fit_E.append(np.average(self.df[i].E_avg)) - - if circuit == 'C': + + if circuit == "C": self.fit_C = [] for i in range(len(self.df)): - self.circuit_fit.append(elem_C(w=self.df[i].w, C=self.Fit[i].params.get('C').value)) - self.fit_C.append(self.Fit[i].params.get('C').value) - elif circuit == 'Q': + self.circuit_fit.append( + elem_C(w=self.df[i].w, C=self.Fit[i].params.get("C").value) + ) + self.fit_C.append(self.Fit[i].params.get("C").value) + elif circuit == "Q": self.fit_Q = [] self.fit_n = [] for i in range(len(self.df)): - self.circuit_fit.append(elem_Q(w=self.df[i].w, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value)) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - elif circuit == 'R-C': + self.circuit_fit.append( + elem_Q( + w=self.df[i].w, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + ) + ) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + elif circuit == "R-C": self.fit_Rs = [] self.fit_C = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsC(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, C=self.Fit[i].params.get('C').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_C.append(self.Fit[i].params.get('C').value) - elif circuit == 'R-Q': + self.circuit_fit.append( + cir_RsC( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + C=self.Fit[i].params.get("C").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_C.append(self.Fit[i].params.get("C").value) + elif circuit == "R-Q": self.fit_Rs = [] self.fit_Q = [] self.fit_n = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - elif circuit == 'RC': + self.circuit_fit.append( + cir_RsQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + elif circuit == "RC": self.fit_R = [] self.fit_C = [] self.fit_fs = [] for i in range(len(self.df)): if "'C'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RC(w=self.df[i].w, C=self.Fit[i].params.get('C').value, R=self.Fit[i].params.get('R').value, fs='none')) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_C.append(self.Fit[i].params.get('C').value) + self.circuit_fit.append( + cir_RC( + w=self.df[i].w, + C=self.Fit[i].params.get("C").value, + R=self.Fit[i].params.get("R").value, + fs="none", + ) + ) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_C.append(self.Fit[i].params.get("C").value) elif "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RC(w=self.df[i].w, C='none', R=self.Fit[i].params.get('R').value, fs=self.Fit[i].params.get('fs').value)) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_fs.append(self.Fit[i].params.get('R').value) - elif circuit == 'RQ': + self.circuit_fit.append( + cir_RC( + w=self.df[i].w, + C="none", + R=self.Fit[i].params.get("R").value, + fs=self.Fit[i].params.get("fs").value, + ) + ) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_fs.append(self.Fit[i].params.get("R").value) + elif circuit == "RQ": self.fit_R = [] self.fit_n = [] self.fit_fs = [] self.fit_Q = [] for i in range(len(self.df)): if "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RQ(w=self.df[i].w, R=self.Fit[i].params.get('R').value, Q='none', n=self.Fit[i].params.get('n').value, fs=self.Fit[i].params.get('fs').value)) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) + self.circuit_fit.append( + cir_RQ( + w=self.df[i].w, + R=self.Fit[i].params.get("R").value, + Q="none", + n=self.Fit[i].params.get("n").value, + fs=self.Fit[i].params.get("fs").value, + ) + ) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) elif "'Q'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RQ(w=self.df[i].w, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, fs='none')) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - elif circuit == 'R-RQ': + self.circuit_fit.append( + cir_RQ( + w=self.df[i].w, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + fs="none", + ) + ) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + elif circuit == "R-RQ": self.fit_Rs = [] self.fit_R = [] self.fit_n = [] @@ -4094,18 +8077,36 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q = [] for i in range(len(self.df)): if "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q='none', n=self.Fit[i].params.get('n').value, fs=self.Fit[i].params.get('fs').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) + self.circuit_fit.append( + cir_RsRQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q="none", + n=self.Fit[i].params.get("n").value, + fs=self.Fit[i].params.get("fs").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) elif "'Q'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, fs='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - elif circuit == 'R-RQ-RQ': + self.circuit_fit.append( + cir_RsRQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + fs="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + elif circuit == "R-RQ-RQ": self.fit_Rs = [] self.fit_R = [] self.fit_n = [] @@ -4116,67 +8117,144 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q = [] self.fit_Q2 = [] for i in range(len(self.df)): - if "'fs'" in str(self.Fit[i].params.keys()) and "'fs2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQRQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q='none', n=self.Fit[i].params.get('n').value, fs=self.Fit[i].params.get('fs').value, R2=self.Fit[i].params.get('R2').value, Q2='none', n2=self.Fit[i].params.get('n2').value, fs2=self.Fit[i].params.get('fs2').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_fs2.append(self.Fit[i].params.get('fs2').value) - elif "'Q'" in str(self.Fit[i].params.keys()) and "'fs2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQRQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, fs='none', R2=self.Fit[i].params.get('R2').value, Q2='none', n2=self.Fit[i].params.get('n2').value, fs2=self.Fit[i].params.get('fs2').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_fs2.append(self.Fit[i].params.get('fs2').value) - elif "'fs'" in str(self.Fit[i].params.keys()) and "'Q2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQRQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q='none', n=self.Fit[i].params.get('n').value, fs=self.Fit[i].params.get('fs').value, R2=self.Fit[i].params.get('R2').value, Q2=self.Fit[i].params.get('Q2').value, n2=self.Fit[i].params.get('n2').value, fs2='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - elif "'Q'" in str(self.Fit[i].params.keys()) and "'Q2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQRQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, fs='none', R2=self.Fit[i].params.get('R2').value, Q2=self.Fit[i].params.get('Q2').value, n2=self.Fit[i].params.get('n2').value, fs2='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - elif circuit == 'R-RC-C': + if "'fs'" in str(self.Fit[i].params.keys()) and "'fs2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQRQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q="none", + n=self.Fit[i].params.get("n").value, + fs=self.Fit[i].params.get("fs").value, + R2=self.Fit[i].params.get("R2").value, + Q2="none", + n2=self.Fit[i].params.get("n2").value, + fs2=self.Fit[i].params.get("fs2").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_fs2.append(self.Fit[i].params.get("fs2").value) + elif "'Q'" in str(self.Fit[i].params.keys()) and "'fs2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQRQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + fs="none", + R2=self.Fit[i].params.get("R2").value, + Q2="none", + n2=self.Fit[i].params.get("n2").value, + fs2=self.Fit[i].params.get("fs2").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_fs2.append(self.Fit[i].params.get("fs2").value) + elif "'fs'" in str(self.Fit[i].params.keys()) and "'Q2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQRQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q="none", + n=self.Fit[i].params.get("n").value, + fs=self.Fit[i].params.get("fs").value, + R2=self.Fit[i].params.get("R2").value, + Q2=self.Fit[i].params.get("Q2").value, + n2=self.Fit[i].params.get("n2").value, + fs2="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + elif "'Q'" in str(self.Fit[i].params.keys()) and "'Q2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQRQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + fs="none", + R2=self.Fit[i].params.get("R2").value, + Q2=self.Fit[i].params.get("Q2").value, + n2=self.Fit[i].params.get("n2").value, + fs2="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + elif circuit == "R-RC-C": self.fit_Rs = [] self.fit_R1 = [] self.fit_C1 = [] self.fit_C = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsRCC(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, C1=self.Fit[i].params.get('C1').value, C=self.Fit[i].params.get('C').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_C1.append(self.Fit[i].params.get('C1').value) - self.fit_C.append(self.Fit[i].params.get('C').value) - elif circuit == 'R-RC-Q': + self.circuit_fit.append( + cir_RsRCC( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + C1=self.Fit[i].params.get("C1").value, + C=self.Fit[i].params.get("C").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_C1.append(self.Fit[i].params.get("C1").value) + self.fit_C.append(self.Fit[i].params.get("C").value) + elif circuit == "R-RC-Q": self.fit_Rs = [] self.fit_R1 = [] self.fit_C1 = [] self.fit_Q = [] self.fit_n = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsRCQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, C1=self.Fit[i].params.get('C1').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_C1.append(self.Fit[i].params.get('C1').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - elif circuit == 'R-RQ-Q': + self.circuit_fit.append( + cir_RsRCQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + C1=self.Fit[i].params.get("C1").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_C1.append(self.Fit[i].params.get("C1").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + elif circuit == "R-RQ-Q": self.fit_Rs = [] self.fit_n = [] self.fit_R1 = [] @@ -4186,22 +8264,44 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q1 = [] for i in range(len(self.df)): if "'fs1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, R1=self.Fit[i].params.get('R1').value, Q1='none', n1=self.Fit[i].params.get('n1').value, fs1=self.Fit[i].params.get('fs1').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) + self.circuit_fit.append( + cir_RsRQQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + R1=self.Fit[i].params.get("R1").value, + Q1="none", + n1=self.Fit[i].params.get("n1").value, + fs1=self.Fit[i].params.get("fs1").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) elif "'Q1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, R1=self.Fit[i].params.get('R1').value, Q1=self.Fit[i].params.get('Q1').value, n1=self.Fit[i].params.get('n1').value, fs1='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - elif circuit == 'R-RQ-C': + self.circuit_fit.append( + cir_RsRQQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + R1=self.Fit[i].params.get("R1").value, + Q1=self.Fit[i].params.get("Q1").value, + n1=self.Fit[i].params.get("n1").value, + fs1="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + elif circuit == "R-RQ-C": self.fit_Rs = [] self.fit_C = [] self.fit_R1 = [] @@ -4210,20 +8310,40 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_fs1 = [] for i in range(len(self.df)): if "'fs1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQC(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, C=self.Fit[i].params.get('C').value, R1=self.Fit[i].params.get('R1').value, Q1='none', n1=self.Fit[i].params.get('n1').value, fs1=self.Fit[i].params.get('fs1').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_C.append(self.Fit[i].params.get('C').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) + self.circuit_fit.append( + cir_RsRQC( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + C=self.Fit[i].params.get("C").value, + R1=self.Fit[i].params.get("R1").value, + Q1="none", + n1=self.Fit[i].params.get("n1").value, + fs1=self.Fit[i].params.get("fs1").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_C.append(self.Fit[i].params.get("C").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) elif "'Q1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQC(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, C=self.Fit[i].params.get('C').value, R1=self.Fit[i].params.get('R1').value, Q1=self.Fit[i].params.get('Q1').value, n1=self.Fit[i].params.get('n1').value, fs1='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_C.append(self.Fit[i].params.get('C').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - elif circuit == 'R-(Q(RW))': + self.circuit_fit.append( + cir_RsRQC( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + C=self.Fit[i].params.get("C").value, + R1=self.Fit[i].params.get("R1").value, + Q1=self.Fit[i].params.get("Q1").value, + n1=self.Fit[i].params.get("n1").value, + fs1="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_C.append(self.Fit[i].params.get("C").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + elif circuit == "R-(Q(RW))": self.fit_Rs = [] self.fit_R = [] self.fit_n = [] @@ -4232,33 +8352,62 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q = [] for i in range(len(self.df)): if "'Q'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Randles_simplified(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, fs='none', n=self.Fit[i].params.get('n').value, sigma=self.Fit[i].params.get('sigma').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_sigma.append(self.Fit[i].params.get('sigma').value) + self.circuit_fit.append( + cir_Randles_simplified( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + fs="none", + n=self.Fit[i].params.get("n").value, + sigma=self.Fit[i].params.get("sigma").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_sigma.append(self.Fit[i].params.get("sigma").value) elif "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Randles_simplified(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q='none', fs=self.Fit[i].params.get('fs').value, n=self.Fit[i].params.get('n').value, sigma=self.Fit[i].params.get('sigma').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_sigma.append(self.Fit[i].params.get('sigma').value) - elif circuit == 'R-TLsQ': + self.circuit_fit.append( + cir_Randles_simplified( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q="none", + fs=self.Fit[i].params.get("fs").value, + n=self.Fit[i].params.get("n").value, + sigma=self.Fit[i].params.get("sigma").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_sigma.append(self.Fit[i].params.get("sigma").value) + elif circuit == "R-TLsQ": self.fit_Rs = [] self.fit_Q = [] self.fit_n = [] self.fit_Ri = [] self.fit_L = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsTLsQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif circuit == 'R-RQ-TLsQ': + self.circuit_fit.append( + cir_RsTLsQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif circuit == "R-RQ-TLsQ": self.fit_Rs = [] self.fit_R1 = [] self.fit_n1 = [] @@ -4270,26 +8419,52 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q1 = [] for i in range(len(self.df)): if "'fs1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLsQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, fs1=self.Fit[i].params.get('fs1').value, n1=self.Fit[i].params.get('n1').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, Q1='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) + self.circuit_fit.append( + cir_RsRQTLsQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + fs1=self.Fit[i].params.get("fs1").value, + n1=self.Fit[i].params.get("n1").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + Q1="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) elif "'Q1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLsQ(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, fs1='none', n1=self.Fit[i].params.get('n1').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, Q1=self.Fit[i].params.get('Q1').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif circuit == 'R-TLs': + self.circuit_fit.append( + cir_RsRQTLsQ( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + fs1="none", + n1=self.Fit[i].params.get("n1").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + Q1=self.Fit[i].params.get("Q1").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif circuit == "R-TLs": self.fit_Rs = [] self.fit_R = [] self.fit_n = [] @@ -4299,22 +8474,44 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q = [] for i in range(len(self.df)): if "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsTLs(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, R=self.Fit[i].params.get('R').value, Q='none', n=self.Fit[i].params.get('n').value, fs=self.Fit[i].params.get('fs').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) + self.circuit_fit.append( + cir_RsTLs( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + R=self.Fit[i].params.get("R").value, + Q="none", + n=self.Fit[i].params.get("n").value, + fs=self.Fit[i].params.get("fs").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) elif "'Q'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsTLs(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, fs='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif circuit == 'R-RQ-TLs': + self.circuit_fit.append( + cir_RsTLs( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + fs="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif circuit == "R-RQ-TLs": self.fit_Rs = [] self.fit_R1 = [] self.fit_n1 = [] @@ -4327,51 +8524,119 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q1 = [] self.fit_Q2 = [] for i in range(len(self.df)): - if "'fs1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLs(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, R1=self.Fit[i].params.get('R1').value, n1=self.Fit[i].params.get('n1').value, fs1=self.Fit[i].params.get('fs1').value, R2=self.Fit[i].params.get('R2').value, n2=self.Fit[i].params.get('n2').value, fs2=self.Fit[i].params.get('fs2').value, Q1='none', Q2='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_fs2.append(self.Fit[i].params.get('fs2').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif "'Q1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLs(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, R1=self.Fit[i].params.get('R1').value, n1=self.Fit[i].params.get('n1').value, fs1='none', R2=self.Fit[i].params.get('R2').value, n2=self.Fit[i].params.get('n2').value, fs2=self.Fit[i].params.get('fs2').value, Q1=self.Fit[i].params.get('Q1').value, Q2='none')) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_fs2.append(self.Fit[i].params.get('fs2').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif "'fs1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLs(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, R1=self.Fit[i].params.get('R1').value, n1=self.Fit[i].params.get('n1').value, fs1=self.Fit[i].params.get('fs1').value, R2=self.Fit[i].params.get('R2').value, n2=self.Fit[i].params.get('n2').value, fs2='none', Q1='none', Q2=self.Fit[i].params.get('Q2').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif "'Q1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLs(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, L=self.Fit[i].params.get('L').value, Ri=self.Fit[i].params.get('Ri').value, R1=self.Fit[i].params.get('R1').value, n1=self.Fit[i].params.get('n1').value, fs1='none', R2=self.Fit[i].params.get('R2').value, n2=self.Fit[i].params.get('n2').value, fs2='none', Q1=self.Fit[i].params.get('Q1').value, Q2=self.Fit[i].params.get('Q2').value)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_L.append(self.Fit[i].params.get('L').value) - elif circuit == 'R-TLQ': + if "'fs1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTLs( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + R1=self.Fit[i].params.get("R1").value, + n1=self.Fit[i].params.get("n1").value, + fs1=self.Fit[i].params.get("fs1").value, + R2=self.Fit[i].params.get("R2").value, + n2=self.Fit[i].params.get("n2").value, + fs2=self.Fit[i].params.get("fs2").value, + Q1="none", + Q2="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_fs2.append(self.Fit[i].params.get("fs2").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif "'Q1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTLs( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + R1=self.Fit[i].params.get("R1").value, + n1=self.Fit[i].params.get("n1").value, + fs1="none", + R2=self.Fit[i].params.get("R2").value, + n2=self.Fit[i].params.get("n2").value, + fs2=self.Fit[i].params.get("fs2").value, + Q1=self.Fit[i].params.get("Q1").value, + Q2="none", + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_fs2.append(self.Fit[i].params.get("fs2").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif "'fs1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTLs( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + R1=self.Fit[i].params.get("R1").value, + n1=self.Fit[i].params.get("n1").value, + fs1=self.Fit[i].params.get("fs1").value, + R2=self.Fit[i].params.get("R2").value, + n2=self.Fit[i].params.get("n2").value, + fs2="none", + Q1="none", + Q2=self.Fit[i].params.get("Q2").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif "'Q1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTLs( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + L=self.Fit[i].params.get("L").value, + Ri=self.Fit[i].params.get("Ri").value, + R1=self.Fit[i].params.get("R1").value, + n1=self.Fit[i].params.get("n1").value, + fs1="none", + R2=self.Fit[i].params.get("R2").value, + n2=self.Fit[i].params.get("n2").value, + fs2="none", + Q1=self.Fit[i].params.get("Q1").value, + Q2=self.Fit[i].params.get("Q2").value, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_L.append(self.Fit[i].params.get("L").value) + elif circuit == "R-TLQ": self.fit_L = [] self.fit_Rs = [] self.fit_Q = [] @@ -4379,14 +8644,24 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Rel = [] self.fit_Ri = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsTLQ(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif circuit == 'R-RQ-TLQ': + self.circuit_fit.append( + cir_RsTLQ( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif circuit == "R-RQ-TLQ": self.fit_Rs = [] self.fit_L = [] self.fit_Q = [] @@ -4399,28 +8674,56 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q1 = [] for i in range(len(self.df)): if "'fs1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLQ(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value, R1=self.Fit[i].params.get('R1').value, n1=self.Fit[i].params.get('n1').value, fs1=self.Fit[i].params.get('fs1').value, Q1='none')) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) + self.circuit_fit.append( + cir_RsRQTLQ( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + R1=self.Fit[i].params.get("R1").value, + n1=self.Fit[i].params.get("n1").value, + fs1=self.Fit[i].params.get("fs1").value, + Q1="none", + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) elif "'Q1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTLQ(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value, R1=self.Fit[i].params.get('R1').value, n1=self.Fit[i].params.get('n1').value, fs1='none', Q1=self.Fit[i].params.get('Q1').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - elif circuit == 'R-TL': + self.circuit_fit.append( + cir_RsRQTLQ( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + R1=self.Fit[i].params.get("R1").value, + n1=self.Fit[i].params.get("n1").value, + fs1="none", + Q1=self.Fit[i].params.get("Q1").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + elif circuit == "R-TL": self.fit_L = [] self.fit_Rs = [] self.fit_R = [] @@ -4430,15 +8733,27 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Ri = [] for i in range(len(self.df)): if "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsTL(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, fs=self.Fit[i].params.get('fs').value, n=self.Fit[i].params.get('n').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value, Q='none')) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif circuit == 'R-RQ-TL': + self.circuit_fit.append( + cir_RsTL( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + fs=self.Fit[i].params.get("fs").value, + n=self.Fit[i].params.get("n").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + Q="none", + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif circuit == "R-RQ-TL": self.fit_L = [] self.fit_Rs = [] self.fit_R1 = [] @@ -4452,55 +8767,127 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_fs1 = [] self.fit_fs2 = [] for i in range(len(self.df)): - if "'Q1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTL(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, fs1='none', Q1=self.Fit[i].params.get('Q1').value, n1=self.Fit[i].params.get('n1').value, R2=self.Fit[i].params.get('R2').value, fs2='none', Q2=self.Fit[i].params.get('Q2').value, n2=self.Fit[i].params.get('n2').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif "'fs1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTL(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, fs1=self.Fit[i].params.get('fs1').value, Q1='none', n1=self.Fit[i].params.get('n1').value, R2=self.Fit[i].params.get('R2').value, fs2=self.Fit[i].params.get('fs2').value, Q2='none', n2=self.Fit[i].params.get('n2').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_fs2.append(self.Fit[i].params.get('fs2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif "'Q1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTL(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, fs1='none', Q1=self.Fit[i].params.get('Q1').value, n1=self.Fit[i].params.get('n1').value, R2=self.Fit[i].params.get('R2').value, fs2=self.Fit[i].params.get('fs2').value, Q2='none', n2=self.Fit[i].params.get('n2').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_fs2.append(self.Fit[i].params.get('fs2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif "'fs1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTL(w=self.df[i].w, L=self.Fit[i].params.get('L').value, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, fs1=self.Fit[i].params.get('fs1').value, Q1='none', n1=self.Fit[i].params.get('n1').value, R2=self.Fit[i].params.get('R2').value, fs2='none', Q2=self.Fit[i].params.get('Q2').value, n2=self.Fit[i].params.get('n2').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif circuit == 'R-TL1Dsolid': + if "'Q1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTL( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + fs1="none", + Q1=self.Fit[i].params.get("Q1").value, + n1=self.Fit[i].params.get("n1").value, + R2=self.Fit[i].params.get("R2").value, + fs2="none", + Q2=self.Fit[i].params.get("Q2").value, + n2=self.Fit[i].params.get("n2").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif "'fs1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTL( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + fs1=self.Fit[i].params.get("fs1").value, + Q1="none", + n1=self.Fit[i].params.get("n1").value, + R2=self.Fit[i].params.get("R2").value, + fs2=self.Fit[i].params.get("fs2").value, + Q2="none", + n2=self.Fit[i].params.get("n2").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_fs2.append(self.Fit[i].params.get("fs2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif "'Q1'" in str(self.Fit[i].params.keys()) and "'fs2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTL( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + fs1="none", + Q1=self.Fit[i].params.get("Q1").value, + n1=self.Fit[i].params.get("n1").value, + R2=self.Fit[i].params.get("R2").value, + fs2=self.Fit[i].params.get("fs2").value, + Q2="none", + n2=self.Fit[i].params.get("n2").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_fs2.append(self.Fit[i].params.get("fs2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif "'fs1'" in str(self.Fit[i].params.keys()) and "'Q2'" in str( + self.Fit[i].params.keys() + ): + self.circuit_fit.append( + cir_RsRQTL( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + fs1=self.Fit[i].params.get("fs1").value, + Q1="none", + n1=self.Fit[i].params.get("n1").value, + R2=self.Fit[i].params.get("R2").value, + fs2="none", + Q2=self.Fit[i].params.get("Q2").value, + n2=self.Fit[i].params.get("n2").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif circuit == "R-TL1Dsolid": self.fit_L = [] self.fit_radius = [] self.fit_D = [] @@ -4513,19 +8900,34 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Rel = [] self.fit_Ri = [] for i in range(len(self.df)): - self.circuit_fit.append(cir_RsTL_1Dsolid(w=self.df[i].w, L=self.Fit[i].params.get('L').value, D=self.Fit[i].params.get('D').value, radius=self.Fit[i].params.get('radius').value, Rs=self.Fit[i].params.get('Rs').value, R=self.Fit[i].params.get('R').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, R_w=self.Fit[i].params.get('R_w').value, n_w=self.Fit[i].params.get('n_w').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_radius.append(self.Fit[i].params.get('radius').value) - self.fit_D.append(self.Fit[i].params.get('D').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R.append(self.Fit[i].params.get('R').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n.append(self.Fit[i].params.get('n').value) - self.fit_R_w.append(self.Fit[i].params.get('R_w').value) - self.fit_n_w.append(self.Fit[i].params.get('n_w').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif circuit == 'R-RQ-TL1Dsolid': + self.circuit_fit.append( + cir_RsTL_1Dsolid( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + D=self.Fit[i].params.get("D").value, + radius=self.Fit[i].params.get("radius").value, + Rs=self.Fit[i].params.get("Rs").value, + R=self.Fit[i].params.get("R").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + R_w=self.Fit[i].params.get("R_w").value, + n_w=self.Fit[i].params.get("n_w").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_radius.append(self.Fit[i].params.get("radius").value) + self.fit_D.append(self.Fit[i].params.get("D").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R.append(self.Fit[i].params.get("R").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n.append(self.Fit[i].params.get("n").value) + self.fit_R_w.append(self.Fit[i].params.get("R_w").value) + self.fit_n_w.append(self.Fit[i].params.get("n_w").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif circuit == "R-RQ-TL1Dsolid": self.fit_L = [] self.fit_radius = [] self.fit_D = [] @@ -4543,54 +8945,108 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Q1 = [] for i in range(len(self.df)): if "'fs1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTL_1Dsolid(w=self.df[i].w, L=self.Fit[i].params.get('L').value, D=self.Fit[i].params.get('D').value, radius=self.Fit[i].params.get('radius').value, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, Q1='none', fs1=self.Fit[i].params.get('fs1').value, n1=self.Fit[i].params.get('n1').value, R2=self.Fit[i].params.get('R2').value, Q2=self.Fit[i].params.get('Q2').value, n2=self.Fit[i].params.get('n2').value, R_w=self.Fit[i].params.get('R_w').value, n_w=self.Fit[i].params.get('n_w').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_radius.append(self.Fit[i].params.get('radius').value) - self.fit_D.append(self.Fit[i].params.get('D').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_fs1.append(self.Fit[i].params.get('fs1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_R_w.append(self.Fit[i].params.get('R_w').value) - self.fit_n_w.append(self.Fit[i].params.get('n_w').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) + self.circuit_fit.append( + cir_RsRQTL_1Dsolid( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + D=self.Fit[i].params.get("D").value, + radius=self.Fit[i].params.get("radius").value, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + Q1="none", + fs1=self.Fit[i].params.get("fs1").value, + n1=self.Fit[i].params.get("n1").value, + R2=self.Fit[i].params.get("R2").value, + Q2=self.Fit[i].params.get("Q2").value, + n2=self.Fit[i].params.get("n2").value, + R_w=self.Fit[i].params.get("R_w").value, + n_w=self.Fit[i].params.get("n_w").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_radius.append(self.Fit[i].params.get("radius").value) + self.fit_D.append(self.Fit[i].params.get("D").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_fs1.append(self.Fit[i].params.get("fs1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_R_w.append(self.Fit[i].params.get("R_w").value) + self.fit_n_w.append(self.Fit[i].params.get("n_w").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) elif "'Q1'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_RsRQTL_1Dsolid(w=self.df[i].w, L=self.Fit[i].params.get('L').value, D=self.Fit[i].params.get('D').value, radius=self.Fit[i].params.get('radius').value, Rs=self.Fit[i].params.get('Rs').value, R1=self.Fit[i].params.get('R1').value, Q1=self.Fit[i].params.get('Q1').value, fs1='none', n1=self.Fit[i].params.get('n1').value, R2=self.Fit[i].params.get('R2').value, Q2=self.Fit[i].params.get('Q2').value, n2=self.Fit[i].params.get('n2').value, R_w=self.Fit[i].params.get('R_w').value, n_w=self.Fit[i].params.get('n_w').value, Rel=self.Fit[i].params.get('Rel').value, Ri=self.Fit[i].params.get('Ri').value)) - self.fit_L.append(self.Fit[i].params.get('L').value) - self.fit_radius.append(self.Fit[i].params.get('radius').value) - self.fit_D.append(self.Fit[i].params.get('D').value) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_R1.append(self.Fit[i].params.get('R1').value) - self.fit_Q1.append(self.Fit[i].params.get('Q1').value) - self.fit_n1.append(self.Fit[i].params.get('n1').value) - self.fit_R2.append(self.Fit[i].params.get('R2').value) - self.fit_Q2.append(self.Fit[i].params.get('Q2').value) - self.fit_n2.append(self.Fit[i].params.get('n2').value) - self.fit_R_w.append(self.Fit[i].params.get('R_w').value) - self.fit_n_w.append(self.Fit[i].params.get('n_w').value) - self.fit_Rel.append(self.Fit[i].params.get('Rel').value) - self.fit_Ri.append(self.Fit[i].params.get('Ri').value) - elif circuit == 'C-RC-C': + self.circuit_fit.append( + cir_RsRQTL_1Dsolid( + w=self.df[i].w, + L=self.Fit[i].params.get("L").value, + D=self.Fit[i].params.get("D").value, + radius=self.Fit[i].params.get("radius").value, + Rs=self.Fit[i].params.get("Rs").value, + R1=self.Fit[i].params.get("R1").value, + Q1=self.Fit[i].params.get("Q1").value, + fs1="none", + n1=self.Fit[i].params.get("n1").value, + R2=self.Fit[i].params.get("R2").value, + Q2=self.Fit[i].params.get("Q2").value, + n2=self.Fit[i].params.get("n2").value, + R_w=self.Fit[i].params.get("R_w").value, + n_w=self.Fit[i].params.get("n_w").value, + Rel=self.Fit[i].params.get("Rel").value, + Ri=self.Fit[i].params.get("Ri").value, + ) + ) + self.fit_L.append(self.Fit[i].params.get("L").value) + self.fit_radius.append(self.Fit[i].params.get("radius").value) + self.fit_D.append(self.Fit[i].params.get("D").value) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_R1.append(self.Fit[i].params.get("R1").value) + self.fit_Q1.append(self.Fit[i].params.get("Q1").value) + self.fit_n1.append(self.Fit[i].params.get("n1").value) + self.fit_R2.append(self.Fit[i].params.get("R2").value) + self.fit_Q2.append(self.Fit[i].params.get("Q2").value) + self.fit_n2.append(self.Fit[i].params.get("n2").value) + self.fit_R_w.append(self.Fit[i].params.get("R_w").value) + self.fit_n_w.append(self.Fit[i].params.get("n_w").value) + self.fit_Rel.append(self.Fit[i].params.get("Rel").value) + self.fit_Ri.append(self.Fit[i].params.get("Ri").value) + elif circuit == "C-RC-C": self.fit_Ce = [] self.fit_Rb = [] self.fit_fsb = [] self.fit_Cb = [] for i in range(len(self.df)): if "'fsb'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_C_RC_C(w=self.df[i].w, Ce=self.Fit[i].params.get('Ce').value, Cb='none', Rb=self.Fit[i].params.get('Rb').value, fsb=self.Fit[i].params.get('fsb').value)) - self.fit_Ce.append(self.Fit[i].params.get('Ce').value) - self.fit_Rb.append(self.Fit[i].params.get('Rb').value) - self.fit_fsb.append(self.Fit[i].params.get('fsb').value) + self.circuit_fit.append( + cir_C_RC_C( + w=self.df[i].w, + Ce=self.Fit[i].params.get("Ce").value, + Cb="none", + Rb=self.Fit[i].params.get("Rb").value, + fsb=self.Fit[i].params.get("fsb").value, + ) + ) + self.fit_Ce.append(self.Fit[i].params.get("Ce").value) + self.fit_Rb.append(self.Fit[i].params.get("Rb").value) + self.fit_fsb.append(self.Fit[i].params.get("fsb").value) elif "'Cb'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_C_RC_C(w=self.df[i].w, Ce=self.Fit[i].params.get('Ce').value, Cb=self.Fit[i].params.get('Cb').value, Rb=self.Fit[i].params.get('Rb').value, fsb='none')) - self.fit_Ce.append(self.Fit[i].params.get('Ce').value) - self.fit_Rb.append(self.Fit[i].params.get('Rb').value) - self.fit_Cb.append(self.Fit[i].params.get('Cb').value) - elif circuit == 'Q-RQ-Q': + self.circuit_fit.append( + cir_C_RC_C( + w=self.df[i].w, + Ce=self.Fit[i].params.get("Ce").value, + Cb=self.Fit[i].params.get("Cb").value, + Rb=self.Fit[i].params.get("Rb").value, + fsb="none", + ) + ) + self.fit_Ce.append(self.Fit[i].params.get("Ce").value) + self.fit_Rb.append(self.Fit[i].params.get("Rb").value) + self.fit_Cb.append(self.Fit[i].params.get("Cb").value) + elif circuit == "Q-RQ-Q": self.fit_Qe = [] self.fit_ne = [] self.fit_Rb = [] @@ -4599,39 +9055,70 @@ def EIS_fit(self, params, circuit, weight_func='modulus', nan_policy='raise'): self.fit_Qb = [] for i in range(len(self.df)): if "'fsb'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Q_RQ_Q(w=self.df[i].w, Qe=self.Fit[i].params.get('Qe').value, ne=self.Fit[i].params.get('ne').value, Qb='none', Rb=self.Fit[i].params.get('Rb').value, fsb=self.Fit[i].params.get('fsb').value, nb=self.Fit[i].params.get('nb').value)) - self.fit_Qe.append(self.Fit[i].params.get('Qe').value) - self.fit_ne.append(self.Fit[i].params.get('ne').value) - self.fit_Rb.append(self.Fit[i].params.get('Rb').value) - self.fit_fsb.append(self.Fit[i].params.get('fsb').value) - self.fit_nb.append(self.Fit[i].params.get('nb').value) + self.circuit_fit.append( + cir_Q_RQ_Q( + w=self.df[i].w, + Qe=self.Fit[i].params.get("Qe").value, + ne=self.Fit[i].params.get("ne").value, + Qb="none", + Rb=self.Fit[i].params.get("Rb").value, + fsb=self.Fit[i].params.get("fsb").value, + nb=self.Fit[i].params.get("nb").value, + ) + ) + self.fit_Qe.append(self.Fit[i].params.get("Qe").value) + self.fit_ne.append(self.Fit[i].params.get("ne").value) + self.fit_Rb.append(self.Fit[i].params.get("Rb").value) + self.fit_fsb.append(self.Fit[i].params.get("fsb").value) + self.fit_nb.append(self.Fit[i].params.get("nb").value) elif "'Qb'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Q_RQ_Q(w=self.df[i].w, Qe=self.Fit[i].params.get('Qe').value, ne=self.Fit[i].params.get('ne').value, Qb=self.Fit[i].params.get('Qb').value, Rb=self.Fit[i].params.get('Rb').value, fsb='none', nb=self.Fit[i].params.get('nb').value)) - self.fit_Qe.append(self.Fit[i].params.get('Qe').value) - self.fit_ne.append(self.Fit[i].params.get('ne').value) - self.fit_Rb.append(self.Fit[i].params.get('Rb').value) - self.fit_Qb.append(self.Fit[i].params.get('Qb').value) - self.fit_nb.append(self.Fit[i].params.get('nb').value) + self.circuit_fit.append( + cir_Q_RQ_Q( + w=self.df[i].w, + Qe=self.Fit[i].params.get("Qe").value, + ne=self.Fit[i].params.get("ne").value, + Qb=self.Fit[i].params.get("Qb").value, + Rb=self.Fit[i].params.get("Rb").value, + fsb="none", + nb=self.Fit[i].params.get("nb").value, + ) + ) + self.fit_Qe.append(self.Fit[i].params.get("Qe").value) + self.fit_ne.append(self.Fit[i].params.get("ne").value) + self.fit_Rb.append(self.Fit[i].params.get("Rb").value) + self.fit_Qb.append(self.Fit[i].params.get("Qb").value) + self.fit_nb.append(self.Fit[i].params.get("nb").value) else: - print('Circuit was not properly defined, see details described in definition') - - def EIS_plot(self, bode='off', fitting='off', rr='off', nyq_xlim='none', nyq_ylim='none', legend='on', savefig='none'): - ''' + print( + "Circuit was not properly defined, see details described in definition" + ) + + def EIS_plot( + self, + bode="off", + fitting="off", + rr="off", + nyq_xlim="none", + nyq_ylim="none", + legend="on", + savefig="none", + ): + """ Plots Experimental and fitted impedance data in three subplots: a) Nyquist, b) Bode, c) relative residuals between experimental and fit - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Optional Inputs ----------------- - bode Plots the Bode Plot with the following possibilities - 'on' = re, im vs. log(freq) - 'log' = log(re, im) vs. log(freq) - + - 're' = re vs. log(freq) - 'log_re' = log(re) vs. log(freq) - + - 'im' = im vs. log(freq) - 'log_im' = log(im) vs. log(freq) @@ -4640,157 +9127,413 @@ def EIS_plot(self, bode='off', fitting='off', rr='off', nyq_xlim='none', nyq_yli - 'on' = illustrates the cycle number - 'off' = off - 'potential' = illustrates the potential - - - fitting: + + - fitting: If EIS_fit() has been called. To plot experimental- and fitted data turn fitting on - 'on' - 'off' (default) - - rr: + - rr: The relative residuals between fit and experimental data - 'on' = opens a new subplot - 'off' (default) - - - nyq_xlim/nyq_xlim: + + - nyq_xlim/nyq_xlim: x/y-axis on nyquist plot, if not equal to 'none' state [min,max] value - ''' - if bode=='off': - fig = figure(dpi=120, facecolor='w', edgecolor='w') + """ + if bode == "off": + fig = figure(dpi=120, facecolor="w", edgecolor="w") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(111, aspect='equal') - - elif bode=='on' and rr=='off' or bode=='log' and rr=='off' or bode=='re' and rr=='off' or bode=='log_re' and rr=='off' or bode=='im' and rr=='off' or bode=='log_im' and rr=='off' or bode=='log' and rr=='off': - fig = figure(figsize=(6, 5), dpi=120, facecolor='w', edgecolor='w') + ax = fig.add_subplot(111, aspect="equal") + + elif ( + bode == "on" + and rr == "off" + or bode == "log" + and rr == "off" + or bode == "re" + and rr == "off" + or bode == "log_re" + and rr == "off" + or bode == "im" + and rr == "off" + or bode == "log_im" + and rr == "off" + or bode == "log" + and rr == "off" + ): + fig = figure(figsize=(6, 5), dpi=120, facecolor="w", edgecolor="w") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(211, aspect='equal') + ax = fig.add_subplot(211, aspect="equal") ax1 = fig.add_subplot(212) - elif bode=='on' and rr=='on' or bode=='log' and rr=='on' or bode=='re' and rr=='on' or bode=='log_re' and rr=='on' or bode=='im' and rr=='on' or bode=='log_im' and rr=='on' or bode=='log' and rr=='on': - fig = figure(figsize=(6, 8), dpi=120, facecolor='w', edgecolor='k') + elif ( + bode == "on" + and rr == "on" + or bode == "log" + and rr == "on" + or bode == "re" + and rr == "on" + or bode == "log_re" + and rr == "on" + or bode == "im" + and rr == "on" + or bode == "log_im" + and rr == "on" + or bode == "log" + and rr == "on" + ): + fig = figure(figsize=(6, 8), dpi=120, facecolor="w", edgecolor="k") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(311, aspect='equal') + ax = fig.add_subplot(311, aspect="equal") ax1 = fig.add_subplot(312) ax2 = fig.add_subplot(313) ### Colors colors = sns.color_palette("colorblind", n_colors=len(self.df)) - colors_real = sns.color_palette("Blues", n_colors=len(self.df)+2) - colors_imag = sns.color_palette("Oranges", n_colors=len(self.df)+2) + colors_real = sns.color_palette("Blues", n_colors=len(self.df) + 2) + colors_imag = sns.color_palette("Oranges", n_colors=len(self.df) + 2) ### Label functions self.label_re_1 = [] self.label_im_1 = [] self.label_cycleno = [] - if legend == 'on': + if legend == "on": for i in range(len(self.df)): - self.label_re_1.append("Z' (#"+str(i+1)+")") - self.label_im_1.append("Z'' (#"+str(i+1)+")") - self.label_cycleno.append('#'+str(i+1)) - elif legend == 'potential': + self.label_re_1.append("Z' (#" + str(i + 1) + ")") + self.label_im_1.append("Z'' (#" + str(i + 1) + ")") + self.label_cycleno.append("#" + str(i + 1)) + elif legend == "potential": for i in range(len(self.df)): - self.label_re_1.append("Z' ("+str(np.round(np.average(self.df[i].E_avg), 2))+' V)') - self.label_im_1.append("Z'' ("+str(np.round(np.average(self.df[i].E_avg), 2))+' V)') - self.label_cycleno.append(str(np.round(np.average(self.df[i].E_avg), 2))+' V') - - + self.label_re_1.append( + "Z' (" + str(np.round(np.average(self.df[i].E_avg), 2)) + " V)" + ) + self.label_im_1.append( + "Z'' (" + str(np.round(np.average(self.df[i].E_avg), 2)) + " V)" + ) + self.label_cycleno.append( + str(np.round(np.average(self.df[i].E_avg), 2)) + " V" + ) ### Nyquist Plot for i in range(len(self.df)): - ax.plot(self.df[i].re, self.df[i].im, marker='o', ms=4, lw=2, color=colors[i], ls='-', label=self.label_cycleno[i]) - if fitting == 'on': - ax.plot(self.circuit_fit[i].real, -self.circuit_fit[i].imag, lw=0, marker='o', ms=8, mec='r', mew=1, mfc='none', label='') + ax.plot( + self.df[i].re, + self.df[i].im, + marker="o", + ms=4, + lw=2, + color=colors[i], + ls="-", + label=self.label_cycleno[i], + ) + if fitting == "on": + ax.plot( + [i.real for i in self.circuit_fit[i]], + [-i.imag for i in self.circuit_fit[i]], + lw=0, + marker="o", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) ### Bode Plot - if bode=='on': + if bode == "on": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), self.df[i].re, color=colors_real[i], marker='D', ms=3, lw=2.25, ls='-', label=self.label_re_1[i]) - ax1.plot(np.log10(self.df[i].f), self.df[i].im, color=colors_imag[i], marker='s', ms=3, lw=2.25, ls='-', label=self.label_im_1[i]) - if fitting == 'on': - ax1.plot(np.log10(self.df[i].f), self.circuit_fit[i].real, lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='') - ax1.plot(np.log10(self.df[i].f), -self.circuit_fit[i].imag, lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none') + ax1.plot( + np.log10(self.df[i].f), + self.df[i].re, + color=colors_real[i], + marker="D", + ms=3, + lw=2.25, + ls="-", + label=self.label_re_1[i], + ) + ax1.plot( + np.log10(self.df[i].f), + self.df[i].im, + color=colors_imag[i], + marker="s", + ms=3, + lw=2.25, + ls="-", + label=self.label_im_1[i], + ) + if fitting == "on": + ax1.plot( + np.log10(self.df[i].f), + self.circuit_fit[i].real, + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) + ax1.plot( + np.log10(self.df[i].f), + -self.circuit_fit[i].imag, + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z', -Z'' [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 're': + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "re": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), self.df[i].re, color=colors_real[i], marker='D', ms=3, lw=2.25, ls='-', label=self.label_cycleno[i]) - if fitting == 'on': - ax1.plot(np.log10(self.df[i].f), self.circuit_fit[i].real, lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='') + ax1.plot( + np.log10(self.df[i].f), + self.df[i].re, + color=colors_real[i], + marker="D", + ms=3, + lw=2.25, + ls="-", + label=self.label_cycleno[i], + ) + if fitting == "on": + ax1.plot( + np.log10(self.df[i].f), + self.circuit_fit[i].real, + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z' [$\Omega$]") - if legend == 'on' or legend =='potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 'log_re': + elif bode == "log_re": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].re), color=colors_real[i], marker='D', ms=3, lw=2.25, ls='-', label=self.label_cycleno[i]) - if fitting == 'on': - ax1.plot(np.log10(self.df[i].f), np.log10(self.circuit_fit[i].real), lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='') + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].re), + color=colors_real[i], + marker="D", + ms=3, + lw=2.25, + ls="-", + label=self.label_cycleno[i], + ) + if fitting == "on": + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.circuit_fit[i].real), + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z') [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode=='im': + elif bode == "im": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), self.df[i].im, color=colors_imag[i], marker='s', ms=3, lw=2.25, ls='-', label=self.label_cycleno[i]) - if fitting == 'on': - ax1.plot(np.log10(self.df[i].f), -self.circuit_fit[i].imag, lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none', label='') + ax1.plot( + np.log10(self.df[i].f), + self.df[i].im, + color=colors_imag[i], + marker="s", + ms=3, + lw=2.25, + ls="-", + label=self.label_cycleno[i], + ) + if fitting == "on": + ax1.plot( + np.log10(self.df[i].f), + -self.circuit_fit[i].imag, + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("-Z'' [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode=='log_im': + elif bode == "log_im": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].im), color=colors_imag[i], marker='s', ms=3, lw=2.25, ls='-', label=self.label_cycleno[i]) - if fitting == 'on': - ax1.plot(np.log10(self.df[i].f), np.log10(-self.circuit_fit[i].imag), lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none', label='') + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].im), + color=colors_imag[i], + marker="s", + ms=3, + lw=2.25, + ls="-", + label=self.label_cycleno[i], + ) + if fitting == "on": + ax1.plot( + np.log10(self.df[i].f), + np.log10(-self.circuit_fit[i].imag), + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(-Z'') [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) - elif bode == 'log': + elif bode == "log": for i in range(len(self.df)): - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].re), color=colors_real[i], marker='D', ms=3, lw=2.25, ls='-', label=self.label_re_1[i]) - ax1.plot(np.log10(self.df[i].f), np.log10(self.df[i].im), color=colors_imag[i], marker='s', ms=3, lw=2.25, ls='-', label=self.label_im_1[i]) - if fitting == 'on': - ax1.plot(np.log10(self.df[i].f), np.log10(self.circuit_fit[i].real), lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='') - ax1.plot(np.log10(self.df[i].f), np.log10(-self.circuit_fit[i].imag), lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none') + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].re), + color=colors_real[i], + marker="D", + ms=3, + lw=2.25, + ls="-", + label=self.label_re_1[i], + ) + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.df[i].im), + color=colors_imag[i], + marker="s", + ms=3, + lw=2.25, + ls="-", + label=self.label_im_1[i], + ) + if fitting == "on": + ax1.plot( + np.log10(self.df[i].f), + np.log10(self.circuit_fit[i].real), + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="", + ) + ax1.plot( + np.log10(self.df[i].f), + np.log10(-self.circuit_fit[i].imag), + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z', -Z'') [$\Omega$]") - if legend == 'on' or legend == 'potential': - ax1.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax1.legend(loc="best", fontsize=10, frameon=False) ### Relative Residuals on Fit - if rr=='on': - if fitting == 'off': - print('Fitting has not been performed, thus the relative residuals cannot be determined') - elif fitting == 'on': + if rr == "on": + if fitting == "off": + print( + "Fitting has not been performed, thus the relative residuals cannot be determined" + ) + elif fitting == "on": self.rr_real = [] self.rr_imag = [] for i in range(len(self.df)): - self.rr_real.append(residual_real(re=self.df[i].re.values, fit_re=self.circuit_fit[i].real, fit_im=-self.circuit_fit[i].imag)) - self.rr_imag.append(residual_imag(im=self.df[i].im.values, fit_re=self.circuit_fit[i].real, fit_im=-self.circuit_fit[i].imag)) - if legend == 'on': - ax2.plot(np.log10(self.df[i].f), self.rr_real[i]*100, color=colors_real[i], marker='D', ms=6, lw=1, ls='--', label='#'+str(i+1)) - ax2.plot(np.log10(self.df[i].f), self.rr_imag[i]*100, color=colors_imag[i], marker='s', ms=6, lw=1, ls='--',label='') - elif legend == 'potential': - ax2.plot(np.log10(self.df[i].f), self.rr_real[i]*100, color=colors_real[i], marker='D', ms=6, lw=1, ls='--', label=str(np.round(np.average(self.df[i].E_avg.values),2))+' V') - ax2.plot(np.log10(self.df[i].f), self.rr_imag[i]*100, color=colors_imag[i], marker='s', ms=6, lw=1, ls='--',label='') - - ax2.axhline(0, ls='--', c='k', alpha=.5) + self.rr_real.append( + residual_real( + re=self.df[i].re.values, + fit_re=self.circuit_fit[i].real, + fit_im=-self.circuit_fit[i].imag, + ) + ) + self.rr_imag.append( + residual_imag( + im=self.df[i].im.values, + fit_re=self.circuit_fit[i].real, + fit_im=-self.circuit_fit[i].imag, + ) + ) + if legend == "on": + ax2.plot( + np.log10(self.df[i].f), + self.rr_real[i] * 100, + color=colors_real[i], + marker="D", + ms=6, + lw=1, + ls="--", + label="#" + str(i + 1), + ) + ax2.plot( + np.log10(self.df[i].f), + self.rr_imag[i] * 100, + color=colors_imag[i], + marker="s", + ms=6, + lw=1, + ls="--", + label="", + ) + elif legend == "potential": + ax2.plot( + np.log10(self.df[i].f), + self.rr_real[i] * 100, + color=colors_real[i], + marker="D", + ms=6, + lw=1, + ls="--", + label=str(np.round(np.average(self.df[i].E_avg.values), 2)) + + " V", + ) + ax2.plot( + np.log10(self.df[i].f), + self.rr_imag[i] * 100, + color=colors_imag[i], + marker="s", + ms=6, + lw=1, + ls="--", + label="", + ) + + ax2.axhline(0, ls="--", c="k", alpha=0.5) ax2.set_xlabel("log(f) [Hz]") ax2.set_ylabel("$\Delta$Z', $\Delta$-Z'' [%]") - #Automatic y-limits limits + # Automatic y-limits limits self.rr_im_min = [] self.rr_im_max = [] self.rr_re_min = [] - for i in range(len(self.df)): # needs to be within a loop if cycles have different number of data points + for i in range( + len(self.df) + ): # needs to be within a loop if cycles have different number of data points self.rr_im_min = np.min(self.rr_imag[i]) self.rr_im_max = np.max(self.rr_imag[i]) self.rr_re_min = np.min(self.rr_real[i]) @@ -4802,57 +9545,194 @@ def EIS_plot(self, bode='off', fitting='off', rr='off', nyq_xlim='none', nyq_yli if self.rr_re_min < self.rr_im_min: self.rr_ymin = self.rr_re_min else: - self.rr_ymin = self.rr_im_min + self.rr_ymin = self.rr_im_min if np.abs(self.rr_ymin) > np.abs(self.rr_ymax): - ax2.set_ylim(self.rr_ymin *100*1.5, np.abs(self.rr_ymin)*100*1.5) - ax2.annotate("$\Delta$Z'", xy=(np.log10(np.min(self.df[0].f)), np.abs(self.rr_ymin )*100*1.2), color=colors_real[-1], fontsize=12) - ax2.annotate("$\Delta$-Z''", xy=(np.log10(np.min(self.df[0].f)), np.abs(self.rr_ymin )*100*0.9), color=colors_imag[-1], fontsize=12) + ax2.set_ylim( + self.rr_ymin * 100 * 1.5, np.abs(self.rr_ymin) * 100 * 1.5 + ) + ax2.annotate( + "$\Delta$Z'", + xy=( + np.log10(np.min(self.df[0].f)), + np.abs(self.rr_ymin) * 100 * 1.2, + ), + color=colors_real[-1], + fontsize=12, + ) + ax2.annotate( + "$\Delta$-Z''", + xy=( + np.log10(np.min(self.df[0].f)), + np.abs(self.rr_ymin) * 100 * 0.9, + ), + color=colors_imag[-1], + fontsize=12, + ) elif np.abs(self.rr_ymin) < np.abs(self.rr_ymax): - ax2.set_ylim(np.negative(self.rr_ymax)*100*1.5, np.abs(self.rr_ymax)*100*1.5) - ax2.annotate("$\Delta$Z'", xy=(np.log10(np.min(self.df[0].f)), np.abs(self.rr_ymax)*100*1.2), color=colors_real[-1], fontsize=12) - ax2.annotate("$\Delta$-Z''", xy=(np.log10(np.min(self.df[0].f)), np.abs(self.rr_ymax)*100*0.9), color=colors_imag[-1], fontsize=12) - - if legend == 'on' or legend == 'potential': - ax2.legend(loc='best', fontsize=10, frameon=False) + ax2.set_ylim( + np.negative(self.rr_ymax) * 100 * 1.5, + np.abs(self.rr_ymax) * 100 * 1.5, + ) + ax2.annotate( + "$\Delta$Z'", + xy=( + np.log10(np.min(self.df[0].f)), + np.abs(self.rr_ymax) * 100 * 1.2, + ), + color=colors_real[-1], + fontsize=12, + ) + ax2.annotate( + "$\Delta$-Z''", + xy=( + np.log10(np.min(self.df[0].f)), + np.abs(self.rr_ymax) * 100 * 0.9, + ), + color=colors_imag[-1], + fontsize=12, + ) + + if legend == "on" or legend == "potential": + ax2.legend(loc="best", fontsize=10, frameon=False) ### Figure specifics - if legend == 'on' or legend == 'potential': - ax.legend(loc='best', fontsize=10, frameon=False) + if legend == "on" or legend == "potential": + ax.legend(loc="best", fontsize=10, frameon=False) ax.set_xlabel("Z' [$\Omega$]") ax.set_ylabel("-Z'' [$\Omega$]") - if nyq_xlim != 'none': + if nyq_xlim != "none": ax.set_xlim(nyq_xlim[0], nyq_xlim[1]) - if nyq_ylim != 'none': + if nyq_ylim != "none": ax.set_ylim(nyq_ylim[0], nyq_ylim[1]) - #Save Figure - if savefig != 'none': - fig.savefig(savefig) #saves figure if fix text is given - - def Fit_uelectrode(self, params, circuit, D_ox, r, theta_real_red, theta_imag_red, n, T, F, R, Q='none', weight_func='modulus', nan_policy='raise'): - ''' + # Save Figure + if savefig != "none": + fig.savefig(savefig) # saves figure if fix text is given + + def Fit_uelectrode( + self, + params, + circuit, + D_ox, + r, + theta_real_red, + theta_imag_red, + n, + T, + F, + R, + Q="none", + weight_func="modulus", + nan_policy="raise", + ): + """ Fit the reductive microdisk electrode impedance repsonse following either BV or MHC infinite kientics - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' + """ self.Fit = [] self.circuit_fit = [] - + for i in range(len(self.df)): - self.Fit.append(minimize(leastsq_errorfunc_uelectrode, params, method='leastsq', args=(self.df[i].w, self.df[i].re, self.df[i].im, circuit, weight_func, np.average(self.df[i].E_avg), D_ox, r, theta_real_red, theta_imag_red, n, T, F, R), nan_policy=nan_policy, maxfev=9999990)) + self.Fit.append( + minimize( + leastsq_errorfunc_uelectrode, + params, + method="leastsq", + args=( + self.df[i].w, + self.df[i].re, + self.df[i].im, + circuit, + weight_func, + np.average(self.df[i].E_avg), + D_ox, + r, + theta_real_red, + theta_imag_red, + n, + T, + F, + R, + ), + nan_policy=nan_policy, + maxfev=9999990, + ) + ) print(report_fit(self.Fit[i])) - - if circuit == 'R-(Q(RM)),BV_red': + + if circuit == "R-(Q(RM)),BV_red": if "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Rs_QRM_BV_red(w=self.df[i].w, E=np.average(self.df[i].E_avg), E0=self.Fit[i].params.get('E0').value, Rs=self.Fit[i].params.get('Rs').value, fs=self.Fit[i].params.get('fs').value, n_Q=self.Fit[i].params.get('n_Q').value, Q='none', Rct=self.Fit[i].params.get('Rct').value, alpha=self.Fit[i].params.get('alpha').value, C_ox=self.Fit[i].params.get('C_ox').value, D_ox=D_ox, r=r, theta_real_red=theta_real_red, theta_imag_red=theta_imag_red, n=n, T=T, F=F, R=R)) + self.circuit_fit.append( + cir_Rs_QRM_BV_red( + w=self.df[i].w, + E=np.average(self.df[i].E_avg), + E0=self.Fit[i].params.get("E0").value, + Rs=self.Fit[i].params.get("Rs").value, + fs=self.Fit[i].params.get("fs").value, + n_Q=self.Fit[i].params.get("n_Q").value, + Q="none", + Rct=self.Fit[i].params.get("Rct").value, + alpha=self.Fit[i].params.get("alpha").value, + C_ox=self.Fit[i].params.get("C_ox").value, + D_ox=D_ox, + r=r, + theta_real_red=theta_real_red, + theta_imag_red=theta_imag_red, + n=n, + T=T, + F=F, + R=R, + ) + ) elif "'Q'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Rs_QRM_BV_red(w=self.df[i].w, E=np.average(self.df[i].E_avg), E0=self.Fit[i].params.get('E0').value, Rs=self.Fit[i].params.get('Rs').value, fs='none', n_Q=self.Fit[i].params.get('n_Q').value, Q=self.Fit[i].params.get('Q').value, Rct=self.Fit[i].params.get('Rct').value, alpha=self.Fit[i].params.get('alpha').value, C_ox=self.Fit[i].params.get('C_ox').value, D_ox=D_ox, r=r, theta_real_red=theta_real_red, theta_imag_red=theta_imag_red, n=n, T=T, F=F, R=R)) - - - def uelectrode(self, params, circuit, E, alpha, n, C_ox, D_red, D_ox, r, theta_real_red, theta_real_ox, theta_imag_red, theta_imag_ox, F, R, T, weight_func='modulus', nan_policy='raise'): - ''' + self.circuit_fit.append( + cir_Rs_QRM_BV_red( + w=self.df[i].w, + E=np.average(self.df[i].E_avg), + E0=self.Fit[i].params.get("E0").value, + Rs=self.Fit[i].params.get("Rs").value, + fs="none", + n_Q=self.Fit[i].params.get("n_Q").value, + Q=self.Fit[i].params.get("Q").value, + Rct=self.Fit[i].params.get("Rct").value, + alpha=self.Fit[i].params.get("alpha").value, + C_ox=self.Fit[i].params.get("C_ox").value, + D_ox=D_ox, + r=r, + theta_real_red=theta_real_red, + theta_imag_red=theta_imag_red, + n=n, + T=T, + F=F, + R=R, + ) + ) + + def uelectrode( + self, + params, + circuit, + E, + alpha, + n, + C_ox, + D_red, + D_ox, + r, + theta_real_red, + theta_real_ox, + theta_imag_red, + theta_imag_ox, + F, + R, + T, + weight_func="modulus", + nan_policy="raise", + ): + """ Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ------------ - Rs = Series resistance [ohm] @@ -4869,15 +9749,15 @@ def uelectrode(self, params, circuit, E, alpha, n, C_ox, D_red, D_ox, r, theta_r - modulus (default) - unity - proportional - + - nan_policy = if issues occur with this fitting due to nan values 'propagate' should be used. otherwise, 'raise' is default - + Returns ------------ Returns the fitted impedance spectra(s) but also the fitted parameters that were used in the initial guesses. To call these use e.g. self.fit_Rs - ''' + """ self.Fit = [] - self.circuit_fit = [] + self.circuit_fit = [] self.fit_Rs = [] self.fit_Q = [] self.fit_fs = [] @@ -4887,121 +9767,262 @@ def uelectrode(self, params, circuit, E, alpha, n, C_ox, D_red, D_ox, r, theta_r self.fit_Cred = [] for i in range(len(self.df)): - self.Fit.append(minimize(leastsq_errorfunc_uelectrode, params, method='leastsq', args=(self.df[i].w, self.df[i].re, self.df[i].im, circuit, weight_func, E, alpha, n, C_ox, D_red, D_ox, r, theta_real_red, theta_real_ox, theta_imag_red, theta_imag_ox, F, R, T), nan_policy=nan_policy, maxfev=9999990)) + self.Fit.append( + minimize( + leastsq_errorfunc_uelectrode, + params, + method="leastsq", + args=( + self.df[i].w, + self.df[i].re, + self.df[i].im, + circuit, + weight_func, + E, + alpha, + n, + C_ox, + D_red, + D_ox, + r, + theta_real_red, + theta_real_ox, + theta_imag_red, + theta_imag_ox, + F, + R, + T, + ), + nan_policy=nan_policy, + maxfev=9999990, + ) + ) print(report_fit(self.Fit[i])) - if circuit == 'R-(Q(RM))': + if circuit == "R-(Q(RM))": if "'fs'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Rs_QRM(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, fs=self.Fit[i].params.get('fs').value, Q='none', n_Q=self.Fit[i].params.get('n_Q').value, Rct=self.Fit[i].params.get('Rct').value, E=E, E0=self.Fit[i].params.get('E0').value, alpha=alpha, n=n, C_red=self.Fit[i].params.get('C_red').value, C_ox=C_ox, D_red=D_red, D_ox=D_ox, r=r, theta_real_red=theta_real_red, theta_real_ox=theta_real_ox, theta_imag_red=theta_imag_red, theta_imag_ox=theta_imag_ox, T=T, F=F, R=R)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_fs.append(self.Fit[i].params.get('fs').value) - self.fit_n_Q.append(self.Fit[i].params.get('n_Q').value) - self.fit_Rct.append(self.Fit[i].params.get('Rct').value) - self.fit_E0.append(self.Fit[i].params.get('E0').value) - self.fit_Cred.append(self.Fit[i].params.get('C_red').value) + self.circuit_fit.append( + cir_Rs_QRM( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + fs=self.Fit[i].params.get("fs").value, + Q="none", + n_Q=self.Fit[i].params.get("n_Q").value, + Rct=self.Fit[i].params.get("Rct").value, + E=E, + E0=self.Fit[i].params.get("E0").value, + alpha=alpha, + n=n, + C_red=self.Fit[i].params.get("C_red").value, + C_ox=C_ox, + D_red=D_red, + D_ox=D_ox, + r=r, + theta_real_red=theta_real_red, + theta_real_ox=theta_real_ox, + theta_imag_red=theta_imag_red, + theta_imag_ox=theta_imag_ox, + T=T, + F=F, + R=R, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_fs.append(self.Fit[i].params.get("fs").value) + self.fit_n_Q.append(self.Fit[i].params.get("n_Q").value) + self.fit_Rct.append(self.Fit[i].params.get("Rct").value) + self.fit_E0.append(self.Fit[i].params.get("E0").value) + self.fit_Cred.append(self.Fit[i].params.get("C_red").value) elif "'Q'" in str(self.Fit[i].params.keys()): - self.circuit_fit.append(cir_Rs_QRM(w=self.df[i].w, Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, fs='none', n_Q=self.Fit[i].params.get('n_Q').value, Rct=self.Fit[i].params.get('Rct').value, E=E, E0=self.Fit[i].params.get('E0').value, alpha=alpha, n=n, C_red=self.Fit[i].params.get('C_red').value, C_ox=C_ox, D_red=D_red, D_ox=D_ox, r=r, theta_real_red=theta_real_red, theta_real_ox=theta_real_ox, theta_imag_red=theta_imag_red, theta_imag_ox=theta_imag_ox, T=T, F=F, R=R)) - self.fit_Rs.append(self.Fit[i].params.get('Rs').value) - self.fit_Q.append(self.Fit[i].params.get('Q').value) - self.fit_n_Q.append(self.Fit[i].params.get('n_Q').value) - self.fit_Rct.append(self.Fit[i].params.get('Rct').value) - self.fit_E0.append(self.Fit[i].params.get('E0').value) - self.fit_Cred.append(self.Fit[i].params.get('C_red').value) - - def uelectrode_sim_fit(self, params, circuit, E, alpha, n, C_ox, D_red, D_ox, r, theta_real_red, theta_real_ox, theta_imag_red, theta_imag_ox, F, R, T, weight_func='modulus', nan_policy='raise'): - ''' + self.circuit_fit.append( + cir_Rs_QRM( + w=self.df[i].w, + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + fs="none", + n_Q=self.Fit[i].params.get("n_Q").value, + Rct=self.Fit[i].params.get("Rct").value, + E=E, + E0=self.Fit[i].params.get("E0").value, + alpha=alpha, + n=n, + C_red=self.Fit[i].params.get("C_red").value, + C_ox=C_ox, + D_red=D_red, + D_ox=D_ox, + r=r, + theta_real_red=theta_real_red, + theta_real_ox=theta_real_ox, + theta_imag_red=theta_imag_red, + theta_imag_ox=theta_imag_ox, + T=T, + F=F, + R=R, + ) + ) + self.fit_Rs.append(self.Fit[i].params.get("Rs").value) + self.fit_Q.append(self.Fit[i].params.get("Q").value) + self.fit_n_Q.append(self.Fit[i].params.get("n_Q").value) + self.fit_Rct.append(self.Fit[i].params.get("Rct").value) + self.fit_E0.append(self.Fit[i].params.get("E0").value) + self.fit_Cred.append(self.Fit[i].params.get("C_red").value) + + def uelectrode_sim_fit( + self, + params, + circuit, + E, + alpha, + n, + C_ox, + D_red, + D_ox, + r, + theta_real_red, + theta_real_ox, + theta_imag_red, + theta_imag_ox, + F, + R, + T, + weight_func="modulus", + nan_policy="raise", + ): + """ In development.. - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ------------ - weight_func = Weight function, Three options: - modulus (default) - unity - proportional - + - nan_policy = if issues occur with this fitting due to nan values 'propagate' should be used. otherwise, 'raise' is default - + - nyq_xlim/nyq_xlim: x/y-axis on nyquist plot, if not equal to 'none' state [min,max] value - + - legend: Display legend Turn 'on', 'off' - + - bode = Plots Bode Plot - options: 'on' = re, im vs. log(freq) 'log' = log(re, im) vs. log(freq) - + 're' = re vs. log(freq) 'log_re' = log(re) vs. log(freq) - + 'im' = im vs. log(freq) 'log_im' = log(im) vs. log(freq) - + - fitting: if EIS_exp_fit() has been called. Plotting exp and fits by = 'on' Turn 'on', 'off' - - - rr: relative residuals. Gives relative residuals of fit from experimental data. + + - rr: relative residuals. Gives relative residuals of fit from experimental data. Turn 'on', 'off' - + Returns ------------ The fitted impedance spectra(s) but also the fitted parameters that were used in the initial guesses. To call these use e.g. self.fit_Rs - ''' - self.Fit = minimize(leastsq_errorfunc_uelectrode, params, method='leastsq', args=(self.w, self.re, self.im, circuit, weight_func, E, alpha, n, C_ox, D_red, D_ox, r, theta_real_red, theta_real_ox, theta_imag_red, theta_imag_ox, F, R, T), nan_policy=nan_policy, maxfev=9999990) + """ + self.Fit = minimize( + leastsq_errorfunc_uelectrode, + params, + method="leastsq", + args=( + self.w, + self.re, + self.im, + circuit, + weight_func, + E, + alpha, + n, + C_ox, + D_red, + D_ox, + r, + theta_real_red, + theta_real_ox, + theta_imag_red, + theta_imag_ox, + F, + R, + T, + ), + nan_policy=nan_policy, + maxfev=9999990, + ) print(report_fit(self.Fit)) - def plot_Cdl_E(self, interface, BET_Area, m_electrode): - ''' + """ Normalizing Q to C_eff or Cdl using either norm_nonFara_Q_C() or norm_Fara_Q_C() - + Refs: - G. J.Brug, A.L.G. vandenEeden, M.Sluyters-Rehbach, and J.H.Sluyters, J.Elec- troanal. Chem. Interfacial Electrochem., 176, 275 (1984) - B. Hirschorn, ElectrochimicaActa, 55, 6218 (2010) - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs --------- interface = faradaic / nonfaradaic BET_Area = BET surface area of electrode material [cm] m_electrode = mass of electrode [cm2/mg] - + Inputs --------- C_eff/C_dl = Normalized Double-layer capacitance measured from impedance [uF/cm2] (normalized by norm_nonFara_Q_C() or norm_Fara_Q_C()) - ''' - fig = figure(dpi=120, facecolor='w', edgecolor='w') + """ + fig = figure(dpi=120, facecolor="w", edgecolor="w") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) ax = fig.add_subplot(111) self.Q_norm = [] self.E = [] - if interface == 'nonfaradaic': + if interface == "nonfaradaic": self.Q_norm = [] for i in range(len(self.df)): - #self.Q_norm.append(norm_nonFara_Q_C(Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, L=self.Fit[i].params.get('L').value) ) - self.Q_norm.append(norm_nonFara_Q_C(Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value) ) + # self.Q_norm.append(norm_nonFara_Q_C(Rs=self.Fit[i].params.get('Rs').value, Q=self.Fit[i].params.get('Q').value, n=self.Fit[i].params.get('n').value, L=self.Fit[i].params.get('L').value) ) + self.Q_norm.append( + norm_nonFara_Q_C( + Rs=self.Fit[i].params.get("Rs").value, + Q=self.Fit[i].params.get("Q").value, + n=self.Fit[i].params.get("n").value, + ) + ) self.E.append(np.average(self.df[i].E_avg)) - - elif interface == 'faradaic': + + elif interface == "faradaic": self.Q_norm = [] for j in range(len(self.df)): - self.Q_norm.append(norm_Fara_Q_C(Rs=self.Fit[j].params.get('Rs').value, Rct=self.Fit[j].params.get('R').value, n=self.Fit[j].params.get('n').value, fs=self.Fit[j].params.get('fs').value, L=self.Fit[j].params.get('L').value)) + self.Q_norm.append( + norm_Fara_Q_C( + Rs=self.Fit[j].params.get("Rs").value, + Rct=self.Fit[j].params.get("R").value, + n=self.Fit[j].params.get("n").value, + fs=self.Fit[j].params.get("fs").value, + L=self.Fit[j].params.get("L").value, + ) + ) self.E.append(np.average(self.df[j].E_avg)) - self.C_norm = (np.array(self.Q_norm)/(m_electrode*BET_Area))*10**6 #'uF/cm2' - ax.plot(self.E, self.C_norm, 'o--', label='C$_{dl}$') - ax.set_xlabel('Voltage [V]') - ax.set_ylabel('C$_{dl}$ [$\mu$F/cm$^2$]') + self.C_norm = ( + np.array(self.Q_norm) / (m_electrode * BET_Area) + ) * 10 ** 6 #'uF/cm2' + ax.plot(self.E, self.C_norm, "o--", label="C$_{dl}$") + ax.set_xlabel("Voltage [V]") + ax.set_ylabel("C$_{dl}$ [$\mu$F/cm$^2$]") class EIS_sim: - ''' + """ Simulates and plots Electrochemical Impedance Spectroscopy based-on build-in equivalent cirucit models - - Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) + + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) Following circuits are implemented: - RC @@ -5024,38 +10045,56 @@ class EIS_sim: - R-RQ-TL - R-TL1Dsolid (reactive interface with 1D solid-state diffusion) - R-RQ-TL1Dsolid - + Inputs -------- - - nyq_xlim/nyq_xlim: + - nyq_xlim/nyq_xlim: x/y-axis on nyquist plot, if not equal to 'none' state [min,max] value - + - bode: Plots following Bode plots - 'off' - 'on' = re, im vs. log(freq) - 'log' = log(re, im) vs. log(freq) - + - 're' = re vs. log(freq) - 'log_re' = log(re) vs. log(freq) - + - 'im' = im vs. log(freq) - 'log_im' = log(im) vs. log(freq) - ''' - def __init__(self, circuit, frange, bode='off', nyq_xlim='none', nyq_ylim='none', legend='on', savefig='none'): + """ + + def __init__( + self, + circuit, + frange, + bode="off", + nyq_xlim="none", + nyq_ylim="none", + legend="on", + savefig="none", + ): self.f = frange - self.w = 2*np.pi*frange + self.w = 2 * np.pi * frange self.re = circuit.real self.im = -circuit.imag - if bode=='off': - fig = figure(dpi=120, facecolor='w', edgecolor='w') + if bode == "off": + fig = figure(dpi=120, facecolor="w", edgecolor="w") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(111, aspect='equal') - - elif bode=='on' or bode=='log' or bode=='re' or bode=='log_re' or bode=='im' or bode=='log_im' or bode=='log': - fig = figure(figsize=(6, 4.5), dpi=120, facecolor='w', edgecolor='w') + ax = fig.add_subplot(111, aspect="equal") + + elif ( + bode == "on" + or bode == "log" + or bode == "re" + or bode == "log_re" + or bode == "im" + or bode == "log_im" + or bode == "log" + ): + fig = figure(figsize=(6, 4.5), dpi=120, facecolor="w", edgecolor="w") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(211, aspect='equal') + ax = fig.add_subplot(211, aspect="equal") ax1 = fig.add_subplot(212) colors = sns.color_palette("colorblind", n_colors=1) @@ -5063,74 +10102,165 @@ def __init__(self, circuit, frange, bode='off', nyq_xlim='none', nyq_ylim='none' colors_imag = sns.color_palette("Oranges", n_colors=1) ### Nyquist Plot - ax.plot(self.re, self.im, color=colors[0], marker='o', ms=4, lw=2, ls='-', label='Sim') + ax.plot( + self.re, + self.im, + color=colors[0], + marker="o", + ms=4, + lw=2, + ls="-", + label="Sim", + ) ### Bode Plot - if bode=='on': - ax1.plot(np.log10(self.f), self.re, color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z'") - ax1.plot(np.log10(self.f), self.im, color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") + if bode == "on": + ax1.plot( + np.log10(self.f), + self.re, + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z'", + ) + ax1.plot( + np.log10(self.f), + self.im, + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z', -Z'' [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 're': - ax1.plot(np.log10(self.f), self.re, color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z'") + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "re": + ax1.plot( + np.log10(self.f), + self.re, + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z'", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z' [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 'log_re': - ax1.plot(np.log10(self.f), np.log10(self.re), color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z''") + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "log_re": + ax1.plot( + np.log10(self.f), + np.log10(self.re), + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z') [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode=='im': - ax1.plot(np.log10(self.f), self.im, color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "im": + ax1.plot( + np.log10(self.f), + self.im, + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("-Z'' [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode=='log_im': - ax1.plot(np.log10(self.f), np.log10(self.im), color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "log_im": + ax1.plot( + np.log10(self.f), + np.log10(self.im), + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(-Z'') [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 'log': - ax1.plot(np.log10(self.f), np.log10(self.re), color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z''") - ax1.plot(np.log10(self.f), np.log10(self.im), color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "log": + ax1.plot( + np.log10(self.f), + np.log10(self.re), + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z''", + ) + ax1.plot( + np.log10(self.f), + np.log10(self.im), + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z', -Z'') [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + ### Figure specifics - if legend == 'on': - ax.legend(loc='best', fontsize=10, frameon=False) + if legend == "on": + ax.legend(loc="best", fontsize=10, frameon=False) ax.set_xlabel("Z' [$\Omega$]") ax.set_ylabel("-Z'' [$\Omega$]") - if nyq_xlim != 'none': + if nyq_xlim != "none": ax.set_xlim(nyq_xlim[0], nyq_xlim[1]) - if nyq_ylim != 'none': + if nyq_ylim != "none": ax.set_ylim(nyq_ylim[0], nyq_ylim[1]) - #Save Figure - if savefig != 'none': - fig.savefig(savefig) #saves figure if fix text is given - - - def EIS_sim_fit(self, params, circuit, weight_func='modulus', nan_policy='raise', bode='on', nyq_xlim='none', nyq_ylim='none', legend='on', savefig='none'): - ''' + # Save Figure + if savefig != "none": + fig.savefig(savefig) # saves figure if fix text is given + + def EIS_sim_fit( + self, + params, + circuit, + weight_func="modulus", + nan_policy="raise", + bode="on", + nyq_xlim="none", + nyq_ylim="none", + legend="on", + savefig="none", + ): + """ This function fits simulations with a selected circuit. This function is mainly used to test fitting functions prior to being used on experimental data - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - + Inputs ------------ - Circuit: Equivlaent circuit models @@ -5159,734 +10289,1203 @@ def EIS_sim_fit(self, params, circuit, weight_func='modulus', nan_policy='raise' - modulus (default) - unity - proportional - + - nyq_xlim/nyq_xlim: x/y-axis on nyquist plot, if not equal to 'none' state [min,max] value - + - legend: Display legend Turn 'on', 'off' - bode = Plots Bode Plot - options: 'on' = re, im vs. log(freq) 'log' = log(re, im) vs. log(freq) - + 're' = re vs. log(freq) 'log_re' = log(re) vs. log(freq) - + 'im' = im vs. log(freq) 'log_im' = log(im) vs. log(freq) - + Returns ------------ The fitted impedance spectra(s) but also the fitted parameters that were used in the initial guesses. To call these use e.g. self.fit_Rs - ''' - self.Fit = minimize(leastsq_errorfunc, params, method='leastsq', args=(self.w, self.re, self.im, circuit, weight_func), maxfev=9999990, nan_policy=nan_policy) + """ + self.Fit = minimize( + leastsq_errorfunc, + params, + method="leastsq", + args=(self.w, self.re, self.im, circuit, weight_func), + maxfev=9999990, + nan_policy=nan_policy, + ) print(report_fit(self.Fit)) - if circuit == 'C': - self.circuit_fit = elem_C(w=self.w, C=self.Fit.params.get('C').value) + if circuit == "C": + self.circuit_fit = elem_C(w=self.w, C=self.Fit.params.get("C").value) self.fit_C = [] - self.fit_C.append(self.Fit.params.get('C').value) - elif circuit == 'Q': - self.circuit_fit = elem_Q(w=self.w, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value) + self.fit_C.append(self.Fit.params.get("C").value) + elif circuit == "Q": + self.circuit_fit = elem_Q( + w=self.w, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + ) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) - elif circuit == 'R-C': - self.circuit_fit = cir_RsC(w=self.w, Rs=self.Fit.params.get('Rs').value, C=self.Fit.params.get('C').value) + self.fit_n.append(self.Fit.params.get("n").value) + elif circuit == "R-C": + self.circuit_fit = cir_RsC( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + C=self.Fit.params.get("C").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_C = [] - self.fit_C.append(self.Fit.params.get('C').value) - elif circuit == 'R-Q': - self.circuit_fit = cir_RsQ(w=self.w, Rs=self.Fit.params.get('Rs').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value) + self.fit_C.append(self.Fit.params.get("C").value) + elif circuit == "R-Q": + self.circuit_fit = cir_RsQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) - elif circuit == 'RC': + self.fit_n.append(self.Fit.params.get("n").value) + elif circuit == "RC": if "'C'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RC(w=self.w, C=self.Fit.params.get('C').value, R=self.Fit.params.get('R').value, fs='none') + self.circuit_fit = cir_RC( + w=self.w, + C=self.Fit.params.get("C").value, + R=self.Fit.params.get("R").value, + fs="none", + ) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_C = [] - self.fit_C.append(self.Fit.params.get('C').value) + self.fit_C.append(self.Fit.params.get("C").value) elif "'fs'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RC(w=self.w, C='none', R=self.Fit.params.get('R').value, fs=self.Fit.params.get('fs').value) + self.circuit_fit = cir_RC( + w=self.w, + C="none", + R=self.Fit.params.get("R").value, + fs=self.Fit.params.get("fs").value, + ) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('R').value) - elif circuit == 'RQ': + self.fit_fs.append(self.Fit.params.get("R").value) + elif circuit == "RQ": if "'fs'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RQ(w=self.w, R=self.Fit.params.get('R').value, Q='none', n=self.Fit.params.get('n').value, fs=self.Fit.params.get('fs').value) + self.circuit_fit = cir_RQ( + w=self.w, + R=self.Fit.params.get("R").value, + Q="none", + n=self.Fit.params.get("n").value, + fs=self.Fit.params.get("fs").value, + ) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) + self.fit_fs.append(self.Fit.params.get("fs").value) elif "'Q'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RQ(w=self.w, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, fs='none') + self.circuit_fit = cir_RQ( + w=self.w, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + fs="none", + ) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) - elif circuit == 'R-RQ': + self.fit_Q.append(self.Fit.params.get("Q").value) + elif circuit == "R-RQ": if "'fs'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q='none', n=self.Fit.params.get('n').value, fs=self.Fit.params.get('fs').value) + self.circuit_fit = cir_RsRQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q="none", + n=self.Fit.params.get("n").value, + fs=self.Fit.params.get("fs").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) + self.fit_fs.append(self.Fit.params.get("fs").value) elif "'Q'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, fs='none') + self.circuit_fit = cir_RsRQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + fs="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) - elif circuit == 'R-RQ-RQ': - if "'fs'" in str(self.Fit.params.keys()) and "'fs2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQRQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q='none', n=self.Fit.params.get('n').value, fs=self.Fit.params.get('fs').value, R2=self.Fit.params.get('R2').value, Q2='none', n2=self.Fit.params.get('n2').value, fs2=self.Fit.params.get('fs2').value) + self.fit_Q.append(self.Fit.params.get("Q").value) + elif circuit == "R-RQ-RQ": + if "'fs'" in str(self.Fit.params.keys()) and "'fs2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQRQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q="none", + n=self.Fit.params.get("n").value, + fs=self.Fit.params.get("fs").value, + R2=self.Fit.params.get("R2").value, + Q2="none", + n2=self.Fit.params.get("n2").value, + fs2=self.Fit.params.get("fs2").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) - self.fit_R2 =[] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_fs.append(self.Fit.params.get("fs").value) + self.fit_R2 = [] + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_fs2 = [] - self.fit_fs2.append(self.Fit.params.get('fs2').value) - elif "'Q'" in str(self.Fit.params.keys()) and "'fs2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQRQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, fs='none', R2=self.Fit.params.get('R2').value, Q2='none', n2=self.Fit.params.get('n2').value, fs2=self.Fit.params.get('fs2').value) + self.fit_fs2.append(self.Fit.params.get("fs2").value) + elif "'Q'" in str(self.Fit.params.keys()) and "'fs2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQRQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + fs="none", + R2=self.Fit.params.get("R2").value, + Q2="none", + n2=self.Fit.params.get("n2").value, + fs2=self.Fit.params.get("fs2").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_fs2 = [] - self.fit_fs2.append(self.Fit.params.get('fs2').value) - elif "'fs'" in str(self.Fit.params.keys()) and "'Q2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQRQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q='none', n=self.Fit.params.get('n').value, fs=self.Fit.params.get('fs').value, R2=self.Fit.params.get('R2').value, Q2=self.Fit.params.get('Q2').value, n2=self.Fit.params.get('n2').value, fs2='none') + self.fit_fs2.append(self.Fit.params.get("fs2").value) + elif "'fs'" in str(self.Fit.params.keys()) and "'Q2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQRQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q="none", + n=self.Fit.params.get("n").value, + fs=self.Fit.params.get("fs").value, + R2=self.Fit.params.get("R2").value, + Q2=self.Fit.params.get("Q2").value, + n2=self.Fit.params.get("n2").value, + fs2="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) + self.fit_fs.append(self.Fit.params.get("fs").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) - elif "'Q'" in str(self.Fit.params.keys()) and "'Q2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQRQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, fs='none', R2=self.Fit.params.get('R2').value, Q2=self.Fit.params.get('Q2').value, n2=self.Fit.params.get('n2').value, fs2='none') + self.fit_Q2.append(self.Fit.params.get("Q2").value) + elif "'Q'" in str(self.Fit.params.keys()) and "'Q2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQRQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + fs="none", + R2=self.Fit.params.get("R2").value, + Q2=self.Fit.params.get("Q2").value, + n2=self.Fit.params.get("n2").value, + fs2="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) - elif circuit == 'R-RC-C': - self.circuit_fit = cir_RsRCC(w=self.df[i].w, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, C1=self.Fit.params.get('C1').value, C=self.Fit.params.get('C').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) + elif circuit == "R-RC-C": + self.circuit_fit = cir_RsRCC( + w=self.df[i].w, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + C1=self.Fit.params.get("C1").value, + C=self.Fit.params.get("C").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_C1 = [] - self.fit_C1.append(self.Fit.params.get('C1').value) + self.fit_C1.append(self.Fit.params.get("C1").value) self.fit_C = [] - self.fit_C.append(self.Fit.params.get('C').value) - elif circuit == 'R-RC-Q': - self.circuit_fit = cir_RsRCQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, C1=self.Fit.params.get('C1').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value) + self.fit_C.append(self.Fit.params.get("C").value) + elif circuit == "R-RC-Q": + self.circuit_fit = cir_RsRCQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + C1=self.Fit.params.get("C1").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) - self.fit_R1 =[] - self.fit_R1.append(self.Fit.params.get('R1').value) - self.fit_C1 =[] - self.fit_C1.append(self.Fit.params.get('C1').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) + self.fit_R1 = [] + self.fit_R1.append(self.Fit.params.get("R1").value) + self.fit_C1 = [] + self.fit_C1.append(self.Fit.params.get("C1").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) - elif circuit == 'R-RQ-Q': + self.fit_n.append(self.Fit.params.get("n").value) + elif circuit == "R-RQ-Q": if "'fs1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQQ(w=self.w, Rs=self.Fit.params.get('Rs').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, R1=self.Fit.params.get('R1').value, Q1='none', n1=self.Fit.params.get('n1').value, fs1=self.Fit.params.get('fs1').value) + self.circuit_fit = cir_RsRQQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + R1=self.Fit.params.get("R1").value, + Q1="none", + n1=self.Fit.params.get("n1").value, + fs1=self.Fit.params.get("fs1").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) if "'Q1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQQ(w=self.w, Rs=self.Fit.params.get('Rs').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, R1=self.Fit.params.get('R1').value, Q1=self.Fit.params.get('Q1').value, n1=self.Fit.params.get('n1').value, fs1='none') + self.circuit_fit = cir_RsRQQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + R1=self.Fit.params.get("R1").value, + Q1=self.Fit.params.get("Q1").value, + n1=self.Fit.params.get("n1").value, + fs1="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_fQ = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) - elif circuit == 'R-RQ-C': + self.fit_Q1.append(self.Fit.params.get("Q1").value) + elif circuit == "R-RQ-C": if "'fs1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQC(w=self.w, Rs=self.Fit.params.get('Rs').value, C=self.Fit.params.get('C').value, R1=self.Fit.params.get('R1').value, Q1='none', n1=self.Fit.params.get('n1').value, fs1=self.Fit.params.get('fs1').value) + self.circuit_fit = cir_RsRQC( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + C=self.Fit.params.get("C").value, + R1=self.Fit.params.get("R1").value, + Q1="none", + n1=self.Fit.params.get("n1").value, + fs1=self.Fit.params.get("fs1").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_C = [] - self.fit_C.append(self.Fit.params.get('C').value) + self.fit_C.append(self.Fit.params.get("C").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) elif "'Q1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQC(w=self.df.w, Rs=self.Fit.params.get('Rs').value, C=self.Fit.params.get('C').value, R1=self.Fit.params.get('R1').value, Q1=self.Fit.params.get('Q1').value, n1=self.Fi.params.get('n1').value, fs1='none') + self.circuit_fit = cir_RsRQC( + w=self.df.w, + Rs=self.Fit.params.get("Rs").value, + C=self.Fit.params.get("C").value, + R1=self.Fit.params.get("R1").value, + Q1=self.Fit.params.get("Q1").value, + n1=self.Fi.params.get("n1").value, + fs1="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_C = [] - self.fit_C.append(self.Fit.params.get('C').value) + self.fit_C.append(self.Fit.params.get("C").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) - elif circuit == 'R-(Q(RW))': + self.fit_Q1.append(self.Fit.params.get("Q1").value) + elif circuit == "R-(Q(RW))": if "'Q'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_Randles_simplified(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, fs='none', n=self.Fit.params.get('n').value, sigma=self.Fit.params.get('sigma').value) + self.circuit_fit = cir_Randles_simplified( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + fs="none", + n=self.Fit.params.get("n").value, + sigma=self.Fit.params.get("sigma").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_sigma = [] - self.fit_sigma.append(self.Fit.params.get('sigma').value) + self.fit_sigma.append(self.Fit.params.get("sigma").value) elif "'fs'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_Randles_simplified(w=self.w, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q='none', fs=self.Fit.params.get('fs').value, n=self.Fit.params.get('n').value, sigma=self.Fit.params.get('sigma').value) + self.circuit_fit = cir_Randles_simplified( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q="none", + fs=self.Fit.params.get("fs").value, + n=self.Fit.params.get("n").value, + sigma=self.Fit.params.get("sigma").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) + self.fit_fs.append(self.Fit.params.get("fs").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_sigma = [] - self.fit_sigma.append(self.Fit.params.get('sigma').value) - elif circuit == 'R-TLsQ': - self.circuit_fit = cir_RsTLsQ(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value) + self.fit_sigma.append(self.Fit.params.get("sigma").value) + elif circuit == "R-TLsQ": + self.circuit_fit = cir_RsTLsQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif circuit == 'R-RQ-TLsQ': + self.fit_L.append(self.Fit.params.get("L").value) + elif circuit == "R-RQ-TLsQ": if "'fs1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLsQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, fs1=self.Fit.params.get('fs1').value, n1=self.Fit.params.get('n1').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, Q1='none') + self.circuit_fit = cir_RsRQTLsQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + fs1=self.Fit.params.get("fs1").value, + n1=self.Fit.params.get("n1").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + Q1="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) elif "'Q1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLsQ(w=self.w, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, fs1='none', n1=self.Fit.params.get('n1').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, Q1=self.Fit.params.get('Q1').value) + self.circuit_fit = cir_RsRQTLsQ( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + fs1="none", + n1=self.Fit.params.get("n1").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + Q1=self.Fit.params.get("Q1").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif circuit == 'R-TLs': + self.fit_L.append(self.Fit.params.get("L").value) + elif circuit == "R-TLs": if "'fs'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsTLs(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, R=self.Fit.params.get('R').value, Q='none', n=self.Fit.params.get('n').value, fs=self.Fit.params.get('fs').value) + self.circuit_fit = cir_RsTLs( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + R=self.Fit.params.get("R").value, + Q="none", + n=self.Fit.params.get("n").value, + fs=self.Fit.params.get("fs").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) + self.fit_fs.append(self.Fit.params.get("fs").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) elif "'Q'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsTLs(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, fs='none') + self.circuit_fit = cir_RsTLs( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + fs="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif circuit == 'R-RQ-TLs': - if "'fs1'" in str(self.Fit.params.keys()) and "'fs2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLs(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, R1=self.Fit.params.get('R1').value, n1=self.Fit.params.get('n1').value, fs1=self.Fit.params.get('fs1').value, R2=self.Fit.params.get('R2').value, n2=self.Fit.params.get('n2').value, fs2=self.Fit.params.get('fs2').value, Q1='none', Q2='none') + self.fit_L.append(self.Fit.params.get("L").value) + elif circuit == "R-RQ-TLs": + if "'fs1'" in str(self.Fit.params.keys()) and "'fs2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTLs( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + R1=self.Fit.params.get("R1").value, + n1=self.Fit.params.get("n1").value, + fs1=self.Fit.params.get("fs1").value, + R2=self.Fit.params.get("R2").value, + n2=self.Fit.params.get("n2").value, + fs2=self.Fit.params.get("fs2").value, + Q1="none", + Q2="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_fs2 = [] - self.fit_fs2.append(self.Fit.params.get('fs2').value) + self.fit_fs2.append(self.Fit.params.get("fs2").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif "'Q1'" in str(self.Fit.params.keys()) and "'fs2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLs(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, R1=self.Fit.params.get('R1').value, n1=self.Fit.params.get('n1').value, fs1='none', R2=self.Fit.params.get('R2').value, n2=self.Fit.params.get('n2').value, fs2=self.Fit.params.get('fs2').value, Q1=self.Fit.params.get('Q1').value, Q2='none') + self.fit_L.append(self.Fit.params.get("L").value) + elif "'Q1'" in str(self.Fit.params.keys()) and "'fs2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTLs( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + R1=self.Fit.params.get("R1").value, + n1=self.Fit.params.get("n1").value, + fs1="none", + R2=self.Fit.params.get("R2").value, + n2=self.Fit.params.get("n2").value, + fs2=self.Fit.params.get("fs2").value, + Q1=self.Fit.params.get("Q1").value, + Q2="none", + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_fs2 = [] - self.fit_fs2.append(self.Fit.params.get('fs2').value) + self.fit_fs2.append(self.Fit.params.get("fs2").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif "'fs1'" in str(self.Fit.params.keys()) and "'Q2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLs(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, R1=self.Fit.params.get('R1').value, n1=self.Fit.params.get('n1').value, fs1=self.Fit.params.get('fs1').value, R2=self.Fit.params.get('R2').value, n2=self.Fit.params.get('n2').value, fs2='none', Q1='none', Q2=self.Fit.params.get('Q2').value) + self.fit_L.append(self.Fit.params.get("L").value) + elif "'fs1'" in str(self.Fit.params.keys()) and "'Q2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTLs( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + R1=self.Fit.params.get("R1").value, + n1=self.Fit.params.get("n1").value, + fs1=self.Fit.params.get("fs1").value, + R2=self.Fit.params.get("R2").value, + n2=self.Fit.params.get("n2").value, + fs2="none", + Q1="none", + Q2=self.Fit.params.get("Q2").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif "'Q1'" in str(self.Fit.params.keys()) and "'Q2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLs(w=self.w, Rs=self.Fit.params.get('Rs').value, L=self.Fit.params.get('L').value, Ri=self.Fit.params.get('Ri').value, R1=self.Fit.params.get('R1').value, n1=self.Fit.params.get('n1').value, fs1='none', R2=self.Fit.params.get('R2').value, n2=self.Fit.params.get('n2').value, fs2='none', Q1=self.Fit.params.get('Q1').value, Q2=self.Fit.params.get('Q2').value) + self.fit_L.append(self.Fit.params.get("L").value) + elif "'Q1'" in str(self.Fit.params.keys()) and "'Q2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTLs( + w=self.w, + Rs=self.Fit.params.get("Rs").value, + L=self.Fit.params.get("L").value, + Ri=self.Fit.params.get("Ri").value, + R1=self.Fit.params.get("R1").value, + n1=self.Fit.params.get("n1").value, + fs1="none", + R2=self.Fit.params.get("R2").value, + n2=self.Fit.params.get("n2").value, + fs2="none", + Q1=self.Fit.params.get("Q1").value, + Q2=self.Fit.params.get("Q2").value, + ) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - elif circuit == 'R-TLQ': - self.circuit_fit = cir_RsTLQ(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) + self.fit_L.append(self.Fit.params.get("L").value) + elif circuit == "R-TLQ": + self.circuit_fit = cir_RsTLQ( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif circuit == 'R-RQ-TLQ': + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif circuit == "R-RQ-TLQ": if "'fs1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLQ(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value, R1=self.Fit.params.get('R1').value, n1=self.Fit.params.get('n1').value, fs1=self.Fit.params.get('fs1').value, Q1='none') + self.circuit_fit = cir_RsRQTLQ( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + R1=self.Fit.params.get("R1").value, + n1=self.Fit.params.get("n1").value, + fs1=self.Fit.params.get("fs1").value, + Q1="none", + ) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) elif "'Q1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTLQ(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value, R1=self.Fit.params.get('R1').value, n1=self.Fit.params.get('n1').value, fs1='none', Q1=self.Fit.params.get('Q1').value) + self.circuit_fit = cir_RsRQTLQ( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + R1=self.Fit.params.get("R1").value, + n1=self.Fit.params.get("n1").value, + fs1="none", + Q1=self.Fit.params.get("Q1").value, + ) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) - elif circuit == 'R-TL': + self.fit_n1.append(self.Fit.params.get("n1").value) + elif circuit == "R-TL": if "'fs'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsTL(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, fs=self.Fit.params.get('fs').value, n=self.Fit.params.get('n').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value, Q='none') - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.circuit_fit = cir_RsTL( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + fs=self.Fit.params.get("fs").value, + n=self.Fit.params.get("n").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + Q="none", + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_fs = [] - self.fit_fs.append(self.Fit.params.get('fs').value) + self.fit_fs.append(self.Fit.params.get("fs").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) elif "'Q'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsTL(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, fs='none', n=self.Fit.params.get('n').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value, Q=self.Fit.params.get('Q').value) - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.circuit_fit = cir_RsTL( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + fs="none", + n=self.Fit.params.get("n").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + Q=self.Fit.params.get("Q").value, + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) + self.fit_R.append(self.Fit.params.get("R").value) self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) + self.fit_Q.append(self.Fit.params.get("Q").value) self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) + self.fit_n.append(self.Fit.params.get("n").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif circuit == 'R-RQ-TL': - if "'Q1'" in str(self.Fit.params.keys()) and "'Q2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTL(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, fs1='none', Q1=self.Fit.params.get('Q1').value, n1=self.Fit.params.get('n1').value, R2=self.Fit.params.get('R2').value, fs2='none', Q2=self.Fit.params.get('Q2').value, n2=self.Fit.params.get('n2').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif circuit == "R-RQ-TL": + if "'Q1'" in str(self.Fit.params.keys()) and "'Q2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTL( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + fs1="none", + Q1=self.Fit.params.get("Q1").value, + n1=self.Fit.params.get("n1").value, + R2=self.Fit.params.get("R2").value, + fs2="none", + Q2=self.Fit.params.get("Q2").value, + n2=self.Fit.params.get("n2").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif "'fs1'" in str(self.Fit.params.keys()) and "'fs2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTL(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, fs1=self.Fit.params.get('fs1').value, Q1='none', n1=self.Fit.params.get('n1').value, R2=self.Fit.params.get('R2').value, fs2=self.Fit.params.get('fs2').value, Q2='none', n2=self.Fit.params.get('n2').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif "'fs1'" in str(self.Fit.params.keys()) and "'fs2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTL( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + fs1=self.Fit.params.get("fs1").value, + Q1="none", + n1=self.Fit.params.get("n1").value, + R2=self.Fit.params.get("R2").value, + fs2=self.Fit.params.get("fs2").value, + Q2="none", + n2=self.Fit.params.get("n2").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_fs2 = [] - self.fit_fs2.append(self.Fit.params.get('fs2').value) + self.fit_fs2.append(self.Fit.params.get("fs2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif "'Q1'" in str(self.Fit.params.keys()) and "'fs2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTL(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, fs1='none', Q1=self.Fit.params.get('Q1').value, n1=self.Fit.params.get('n1').value, R2=self.Fit.params.get('R2').value, fs2=self.Fit.params.get('fs2').value, Q2='none', n2=self.Fit.params.get('n2').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif "'Q1'" in str(self.Fit.params.keys()) and "'fs2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTL( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + fs1="none", + Q1=self.Fit.params.get("Q1").value, + n1=self.Fit.params.get("n1").value, + R2=self.Fit.params.get("R2").value, + fs2=self.Fit.params.get("fs2").value, + Q2="none", + n2=self.Fit.params.get("n2").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_fs2 = [] - self.fit_fs2.append(self.Fit.params.get('fs2').value) + self.fit_fs2.append(self.Fit.params.get("fs2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif "'fs1'" in str(self.Fit.params.keys()) and "'Q2'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTL(w=self.w, L=self.Fit.params.get('L').value, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, fs1=self.Fit.params.get('fs1').value, Q1='none', n1=self.Fit.params.get('n1').value, R2=self.Fit.params.get('R2').value, fs2='none', Q2=self.Fit.params.get('Q2').value, n2=self.Fit.params.get('n2').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif "'fs1'" in str(self.Fit.params.keys()) and "'Q2'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RsRQTL( + w=self.w, + L=self.Fit.params.get("L").value, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + fs1=self.Fit.params.get("fs1").value, + Q1="none", + n1=self.Fit.params.get("n1").value, + R2=self.Fit.params.get("R2").value, + fs2="none", + Q2=self.Fit.params.get("Q2").value, + n2=self.Fit.params.get("n2").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif circuit == 'R-TL1Dsolid': - self.circuit_fit = cir_RsTL_1Dsolid(w=self.w, L=self.Fit.params.get('L').value, D=self.Fit.params.get('D').value, radius=self.Fit.params.get('radius').value, Rs=self.Fit.params.get('Rs').value, R=self.Fit.params.get('R').value, Q=self.Fit.params.get('Q').value, n=self.Fit.params.get('n').value, R_w=self.Fit.params.get('R_w').value, n_w=self.Fit.params.get('n_w').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) - self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_radius = [] - self.fit_radius.append(self.Fit.params.get('radius').value) - self.fit_D = [] - self.fit_D.append(self.Fit.params.get('D').value) - self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) - self.fit_R = [] - self.fit_R.append(self.Fit.params.get('R').value) - self.fit_Q = [] - self.fit_Q.append(self.Fit.params.get('Q').value) - self.fit_n = [] - self.fit_n.append(self.Fit.params.get('n').value) - self.fit_R_w = [] - self.fit_R_w.append(self.Fit.params.get('R_w').value) - self.fit_n_w = [] - self.fit_n_w.append(self.Fit.params.get('n_w').value) - self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) - self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif circuit == 'R-RQ-TL1Dsolid': + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif circuit == "R-TL1Dsolid": + self.circuit_fit = cir_RsTL_1Dsolid( + w=self.w, + L=self.Fit.params.get("L").value, + D=self.Fit.params.get("D").value, + radius=self.Fit.params.get("radius").value, + Rs=self.Fit.params.get("Rs").value, + R=self.Fit.params.get("R").value, + Q=self.Fit.params.get("Q").value, + n=self.Fit.params.get("n").value, + R_w=self.Fit.params.get("R_w").value, + n_w=self.Fit.params.get("n_w").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) + self.fit_L = [] + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_radius = [] + self.fit_radius.append(self.Fit.params.get("radius").value) + self.fit_D = [] + self.fit_D.append(self.Fit.params.get("D").value) + self.fit_Rs = [] + self.fit_Rs.append(self.Fit.params.get("Rs").value) + self.fit_R = [] + self.fit_R.append(self.Fit.params.get("R").value) + self.fit_Q = [] + self.fit_Q.append(self.Fit.params.get("Q").value) + self.fit_n = [] + self.fit_n.append(self.Fit.params.get("n").value) + self.fit_R_w = [] + self.fit_R_w.append(self.Fit.params.get("R_w").value) + self.fit_n_w = [] + self.fit_n_w.append(self.Fit.params.get("n_w").value) + self.fit_Rel = [] + self.fit_Rel.append(self.Fit.params.get("Rel").value) + self.fit_Ri = [] + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif circuit == "R-RQ-TL1Dsolid": if "'fs1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTL_1Dsolid(w=self.w, L=self.Fit.params.get('L').value, D=self.Fit.params.get('D').value, radius=self.Fit.params.get('radius').value, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, Q1='none', fs1=self.Fit.params.get('fs1').value, n1=self.Fit.params.get('n1').value, R2=self.Fit.params.get('R2').value, Q2=self.Fit.params.get('Q2').value, n2=self.Fit.params.get('n2').value, R_w=self.Fit.params.get('R_w').value, n_w=self.Fit.params.get('n_w').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) + self.circuit_fit = cir_RsRQTL_1Dsolid( + w=self.w, + L=self.Fit.params.get("L").value, + D=self.Fit.params.get("D").value, + radius=self.Fit.params.get("radius").value, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + Q1="none", + fs1=self.Fit.params.get("fs1").value, + n1=self.Fit.params.get("n1").value, + R2=self.Fit.params.get("R2").value, + Q2=self.Fit.params.get("Q2").value, + n2=self.Fit.params.get("n2").value, + R_w=self.Fit.params.get("R_w").value, + n_w=self.Fit.params.get("n_w").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) self.fit_radius = [] - self.fit_radius.append(self.Fit.params.get('radius').value) + self.fit_radius.append(self.Fit.params.get("radius").value) self.fit_D = [] - self.fit_D.append(self.Fit.params.get('D').value) + self.fit_D.append(self.Fit.params.get("D").value) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_fs1 = [] - self.fit_fs1.append(self.Fit.params.get('fs1').value) + self.fit_fs1.append(self.Fit.params.get("fs1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_R_w = [] - self.fit_R_w.append(self.Fit.params.get('R_w').value) + self.fit_R_w.append(self.Fit.params.get("R_w").value) self.fit_n_w = [] - self.fit_n_w.append(self.Fit.params.get('n_w').value) + self.fit_n_w.append(self.Fit.params.get("n_w").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) + self.fit_Ri.append(self.Fit.params.get("Ri").value) elif "'Q1'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RsRQTL_1Dsolid(w=self.w, L=self.Fit.params.get('L').value, D=self.Fit.params.get('D').value, radius=self.Fit.params.get('radius').value, Rs=self.Fit.params.get('Rs').value, R1=self.Fit.params.get('R1').value, Q1=self.Fit.params.get('Q1').value, fs1='none', n1=self.Fit.params.get('n1').value, R2=self.Fit.params.get('R2').value, Q2=self.Fit.params.get('Q2').value, n2=self.Fit.params.get('n2').value, R_w=self.Fit.params.get('R_w').value, n_w=self.Fit.params.get('n_w').value, Rel=self.Fit.params.get('Rel').value, Ri=self.Fit.params.get('Ri').value) + self.circuit_fit = cir_RsRQTL_1Dsolid( + w=self.w, + L=self.Fit.params.get("L").value, + D=self.Fit.params.get("D").value, + radius=self.Fit.params.get("radius").value, + Rs=self.Fit.params.get("Rs").value, + R1=self.Fit.params.get("R1").value, + Q1=self.Fit.params.get("Q1").value, + fs1="none", + n1=self.Fit.params.get("n1").value, + R2=self.Fit.params.get("R2").value, + Q2=self.Fit.params.get("Q2").value, + n2=self.Fit.params.get("n2").value, + R_w=self.Fit.params.get("R_w").value, + n_w=self.Fit.params.get("n_w").value, + Rel=self.Fit.params.get("Rel").value, + Ri=self.Fit.params.get("Ri").value, + ) self.fit_L = [] - self.fit_L.append(self.Fit.params.get('L').value) + self.fit_L.append(self.Fit.params.get("L").value) self.fit_radius = [] - self.fit_radius.append(self.Fit.params.get('radius').value) + self.fit_radius.append(self.Fit.params.get("radius").value) self.fit_D = [] - self.fit_D.append(self.Fit.params.get('D').value) + self.fit_D.append(self.Fit.params.get("D").value) self.fit_Rs = [] - self.fit_Rs.append(self.Fit.params.get('Rs').value) + self.fit_Rs.append(self.Fit.params.get("Rs").value) self.fit_R1 = [] - self.fit_R1.append(self.Fit.params.get('R1').value) + self.fit_R1.append(self.Fit.params.get("R1").value) self.fit_Q1 = [] - self.fit_Q1.append(self.Fit.params.get('Q1').value) + self.fit_Q1.append(self.Fit.params.get("Q1").value) self.fit_n1 = [] - self.fit_n1.append(self.Fit.params.get('n1').value) + self.fit_n1.append(self.Fit.params.get("n1").value) self.fit_R2 = [] - self.fit_R2.append(self.Fit.params.get('R2').value) + self.fit_R2.append(self.Fit.params.get("R2").value) self.fit_Q2 = [] - self.fit_Q2.append(self.Fit.params.get('Q2').value) + self.fit_Q2.append(self.Fit.params.get("Q2").value) self.fit_n2 = [] - self.fit_n2.append(self.Fit.params.get('n2').value) + self.fit_n2.append(self.Fit.params.get("n2").value) self.fit_R_w = [] - self.fit_R_w.append(self.Fit.params.get('R_w').value) + self.fit_R_w.append(self.Fit.params.get("R_w").value) self.fit_n_w = [] - self.fit_n_w.append(self.Fit.params.get('n_w').value) + self.fit_n_w.append(self.Fit.params.get("n_w").value) self.fit_Rel = [] - self.fit_Rel.append(self.Fit.params.get('Rel').value) + self.fit_Rel.append(self.Fit.params.get("Rel").value) self.fit_Ri = [] - self.fit_Ri.append(self.Fit.params.get('Ri').value) - elif circuit == 'C-RC-C': + self.fit_Ri.append(self.Fit.params.get("Ri").value) + elif circuit == "C-RC-C": if "'fsb'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_C_RC_C(w=self.w, Ce=self.Fit.params.get('Ce').value, Cb='none', Rb=self.Fit.params.get('Rb').value, fsb=self.Fit.params.get('fsb').value) + self.circuit_fit = cir_C_RC_C( + w=self.w, + Ce=self.Fit.params.get("Ce").value, + Cb="none", + Rb=self.Fit.params.get("Rb").value, + fsb=self.Fit.params.get("fsb").value, + ) self.fit_Ce = [] - self.fit_Ce.append(self.Fit.params.get('Ce').value) + self.fit_Ce.append(self.Fit.params.get("Ce").value) self.fit_Rb = [] - self.fit_Rb.append(self.Fit.params.get('Rb').value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) self.fit_fsb = [] - self.fit_fsb.append(self.Fit.params.get('fsb').value) + self.fit_fsb.append(self.Fit.params.get("fsb").value) elif "'Cb'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_C_RC_C(w=self.w, Ce=self.Fit.params.get('Ce').value, Cb=self.Fit.params.get('Cb').value, Rb=self.Fit.params.get('Rb').value, fsb='none') + self.circuit_fit = cir_C_RC_C( + w=self.w, + Ce=self.Fit.params.get("Ce").value, + Cb=self.Fit.params.get("Cb").value, + Rb=self.Fit.params.get("Rb").value, + fsb="none", + ) self.fit_Ce = [] - self.fit_Ce.append(self.Fit.params.get('Ce').value) + self.fit_Ce.append(self.Fit.params.get("Ce").value) self.fit_Rb = [] - self.fit_Rb.append(self.Fit.params.get('Rb').value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) self.fit_Cb = [] - self.fit_Cb.append(self.Fit.params.get('Cb').value) - elif circuit == 'Q-RQ-Q': + self.fit_Cb.append(self.Fit.params.get("Cb").value) + elif circuit == "Q-RQ-Q": if "'fsb'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_Q_RQ_Q(w=self.w, Qe=self.Fit.params.get('Qe').value, ne=self.Fit.params.get('ne').value, Qb='none', Rb=self.Fit.params.get('Rb').value, fsb=self.Fit.params.get('fsb').value, nb=self.Fit.params.get('nb').value) + self.circuit_fit = cir_Q_RQ_Q( + w=self.w, + Qe=self.Fit.params.get("Qe").value, + ne=self.Fit.params.get("ne").value, + Qb="none", + Rb=self.Fit.params.get("Rb").value, + fsb=self.Fit.params.get("fsb").value, + nb=self.Fit.params.get("nb").value, + ) self.fit_Qe = [] - self.fit_Qe.append(self.Fit.params.get('Qe').value) + self.fit_Qe.append(self.Fit.params.get("Qe").value) self.fit_ne = [] - self.fit_ne.append(self.Fit.params.get('ne').value) + self.fit_ne.append(self.Fit.params.get("ne").value) self.fit_Rb = [] - self.fit_Rb.append(self.Fit.params.get('Rb').value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) self.fit_fsb = [] - self.fit_fsb.append(self.Fit.params.get('fsb').value) + self.fit_fsb.append(self.Fit.params.get("fsb").value) self.fit_nb = [] - self.fit_nb.append(self.Fit.params.get('nb').value) + self.fit_nb.append(self.Fit.params.get("nb").value) elif "'Qb'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_Q_RQ_Q(w=self.w, Qe=self.Fit.params.get('Qe').value, ne=self.Fit.params.get('ne').value, Qb=self.Fit.params.get('Qb').value, Rb=self.Fit.params.get('Rb').value, fsb='none', nb=self.Fit.params.get('nb').value) + self.circuit_fit = cir_Q_RQ_Q( + w=self.w, + Qe=self.Fit.params.get("Qe").value, + ne=self.Fit.params.get("ne").value, + Qb=self.Fit.params.get("Qb").value, + Rb=self.Fit.params.get("Rb").value, + fsb="none", + nb=self.Fit.params.get("nb").value, + ) self.fit_Qe = [] - self.fit_Qe.append(self.Fit.params.get('Qe').value) + self.fit_Qe.append(self.Fit.params.get("Qe").value) self.fit_ne = [] - self.fit_ne.append(self.Fit.params.get('ne').value) + self.fit_ne.append(self.Fit.params.get("ne").value) self.fit_Rb = [] - self.fit_Rb.append(self.Fit.params.get('Rb').value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) self.fit_Qb = [] - self.fit_Qb.append(self.Fit.params.get('Qb').value) + self.fit_Qb.append(self.Fit.params.get("Qb").value) self.fit_nb = [] - self.fit_nb.append(self.Fit.params.get('nb').value) - elif circuit == 'RC-RC-ZD': + self.fit_nb.append(self.Fit.params.get("nb").value) + elif circuit == "RC-RC-ZD": self.fit_L = [] self.fit_D_s = [] self.fit_u1 = [] @@ -5897,52 +11496,110 @@ def EIS_sim_fit(self, params, circuit, weight_func='modulus', nan_policy='raise' self.fit_Ce = [] self.fit_Re = [] self.fit_fse = [] - if "'fsb'" in str(self.Fit.params.keys()) and "'fse'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RCRCZD(w=self.w, L=self.Fit.params.get('L').value, D_s=self.Fit.params.get('D_s').value, u1=self.Fit.params.get('u1').value, u2=self.Fit.params.get('u2').value, Cb='none', Rb=self.Fit.params.get('Rb').value, fsb=self.Fit.params.get('fsb').value, Ce='none', Re=self.Fit.params.get('Re').value, fse=self.Fit.params.get('fse').value) - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_D_s.append(self.Fit.params.get('D_s').value) - self.fit_u1.append(self.Fit.params.get('u1').value) - self.fit_u2.append(self.Fit.params.get('u2').value) - self.fit_Rb.append(self.Fit.params.get('Rb').value) - self.fit_Re.append(self.Fit.params.get('Re').value) - self.fit_fsb.append(self.Fit.params.get('fsb').value) - self.fit_fse.append(self.Fit.params.get('fse').value) - elif "'Cb'" in str(self.Fit.params.keys()) and "'Ce'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RCRCZD(w=self.w, L=self.Fit.params.get('L').value, D_s=self.Fit.params.get('D_s').value, u1=self.Fit.params.get('u1').value, u2=self.Fit.params.get('u2').value, Cb=self.Fit.params.get('Cb').value, Rb=self.Fit.params.get('Rb').value, fsb='none', Ce=self.Fit.params.get('Ce').value, Re=self.Fit.params.get('Re').value, fse='none') - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_D_s.append(self.Fit.params.get('D_s').value) - self.fit_u1.append(self.Fit.params.get('u1').value) - self.fit_u2.append(self.Fit.params.get('u2').value) - self.fit_Rb.append(self.Fit.params.get('Rb').value) - self.fit_Re.append(self.Fit.params.get('Re').value) - self.fit_Cb.append(self.Fit.params.get('Cb').value) - self.fit_Ce.append(self.Fit.params.get('Ce').value) - elif "'Cb'" in str(self.Fit.params.keys()) and "'fse'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RCRCZD(w=self.w, L=self.Fit.params.get('L').value, D_s=self.Fit.params.get('D_s').value, u1=self.Fit.params.get('u1').value, u2=self.Fit.params.get('u2').value, Cb=self.Fit.params.get('Cb').value, Rb=self.Fit.params.get('Rb').value, fsb='none', Ce='none', Re=self.Fit.params.get('Re').value, fse=self.Fit.params.get('fse').value) - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_D_s.append(self.Fit.params.get('D_s').value) - self.fit_u1.append(self.Fit.params.get('u1').value) - self.fit_u2.append(self.Fit.params.get('u2').value) - self.fit_Rb.append(self.Fit.params.get('Rb').value) - self.fit_Re.append(self.Fit.params.get('Re').value) - self.fit_Cb.append(self.Fit.params.get('Cb').value) - self.fit_fse.append(self.Fit.params.get('fse').value) - elif "'fsb'" in str(self.Fit.params.keys()) and "'Ce'" in str(self.Fit.params.keys()): - self.circuit_fit = cir_RCRCZD(w=self.w, L=self.Fit.params.get('L').value, D_s=self.Fit.params.get('D_s').value, u1=self.Fit.params.get('u1').value, u2=self.Fit.params.get('u2').value, Cb=self.Fit.params.get('Cb').value, Rb='none', fsb=self.Fit.params.get('fsb').value, Ce=self.Fit.params.get('Ce').value, Re=self.Fit.params.get('Re').value, fse='none') - self.fit_L.append(self.Fit.params.get('L').value) - self.fit_D_s.append(self.Fit.params.get('D_s').value) - self.fit_u1.append(self.Fit.params.get('u1').value) - self.fit_u2.append(self.Fit.params.get('u2').value) - self.fit_Rb.append(self.Fit.params.get('Rb').value) - self.fit_Re.append(self.Fit.params.get('Re').value) - self.fit_fsb.append(self.Fit.params.get('fsb').value) - self.fit_Ce.append(self.Fit.params.get('Ce').value) + if "'fsb'" in str(self.Fit.params.keys()) and "'fse'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RCRCZD( + w=self.w, + L=self.Fit.params.get("L").value, + D_s=self.Fit.params.get("D_s").value, + u1=self.Fit.params.get("u1").value, + u2=self.Fit.params.get("u2").value, + Cb="none", + Rb=self.Fit.params.get("Rb").value, + fsb=self.Fit.params.get("fsb").value, + Ce="none", + Re=self.Fit.params.get("Re").value, + fse=self.Fit.params.get("fse").value, + ) + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_D_s.append(self.Fit.params.get("D_s").value) + self.fit_u1.append(self.Fit.params.get("u1").value) + self.fit_u2.append(self.Fit.params.get("u2").value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) + self.fit_Re.append(self.Fit.params.get("Re").value) + self.fit_fsb.append(self.Fit.params.get("fsb").value) + self.fit_fse.append(self.Fit.params.get("fse").value) + elif "'Cb'" in str(self.Fit.params.keys()) and "'Ce'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RCRCZD( + w=self.w, + L=self.Fit.params.get("L").value, + D_s=self.Fit.params.get("D_s").value, + u1=self.Fit.params.get("u1").value, + u2=self.Fit.params.get("u2").value, + Cb=self.Fit.params.get("Cb").value, + Rb=self.Fit.params.get("Rb").value, + fsb="none", + Ce=self.Fit.params.get("Ce").value, + Re=self.Fit.params.get("Re").value, + fse="none", + ) + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_D_s.append(self.Fit.params.get("D_s").value) + self.fit_u1.append(self.Fit.params.get("u1").value) + self.fit_u2.append(self.Fit.params.get("u2").value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) + self.fit_Re.append(self.Fit.params.get("Re").value) + self.fit_Cb.append(self.Fit.params.get("Cb").value) + self.fit_Ce.append(self.Fit.params.get("Ce").value) + elif "'Cb'" in str(self.Fit.params.keys()) and "'fse'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RCRCZD( + w=self.w, + L=self.Fit.params.get("L").value, + D_s=self.Fit.params.get("D_s").value, + u1=self.Fit.params.get("u1").value, + u2=self.Fit.params.get("u2").value, + Cb=self.Fit.params.get("Cb").value, + Rb=self.Fit.params.get("Rb").value, + fsb="none", + Ce="none", + Re=self.Fit.params.get("Re").value, + fse=self.Fit.params.get("fse").value, + ) + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_D_s.append(self.Fit.params.get("D_s").value) + self.fit_u1.append(self.Fit.params.get("u1").value) + self.fit_u2.append(self.Fit.params.get("u2").value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) + self.fit_Re.append(self.Fit.params.get("Re").value) + self.fit_Cb.append(self.Fit.params.get("Cb").value) + self.fit_fse.append(self.Fit.params.get("fse").value) + elif "'fsb'" in str(self.Fit.params.keys()) and "'Ce'" in str( + self.Fit.params.keys() + ): + self.circuit_fit = cir_RCRCZD( + w=self.w, + L=self.Fit.params.get("L").value, + D_s=self.Fit.params.get("D_s").value, + u1=self.Fit.params.get("u1").value, + u2=self.Fit.params.get("u2").value, + Cb=self.Fit.params.get("Cb").value, + Rb="none", + fsb=self.Fit.params.get("fsb").value, + Ce=self.Fit.params.get("Ce").value, + Re=self.Fit.params.get("Re").value, + fse="none", + ) + self.fit_L.append(self.Fit.params.get("L").value) + self.fit_D_s.append(self.Fit.params.get("D_s").value) + self.fit_u1.append(self.Fit.params.get("u1").value) + self.fit_u2.append(self.Fit.params.get("u2").value) + self.fit_Rb.append(self.Fit.params.get("Rb").value) + self.fit_Re.append(self.Fit.params.get("Re").value) + self.fit_fsb.append(self.Fit.params.get("fsb").value) + self.fit_Ce.append(self.Fit.params.get("Ce").value) else: - print('Circuit is not properly defined, see details described in definition') + print( + "Circuit is not properly defined, see details described in definition" + ) - fig = figure(figsize=(6, 4.5), dpi=120, facecolor='w', edgecolor='k') + fig = figure(figsize=(6, 4.5), dpi=120, facecolor="w", edgecolor="k") fig.subplots_adjust(left=0.1, right=0.95, hspace=0.5, bottom=0.1, top=0.95) - ax = fig.add_subplot(211, aspect='equal') + ax = fig.add_subplot(211, aspect="equal") ax1 = fig.add_subplot(212) colors = sns.color_palette("colorblind", n_colors=1) @@ -5950,77 +11607,247 @@ def EIS_sim_fit(self, params, circuit, weight_func='modulus', nan_policy='raise' colors_imag = sns.color_palette("Oranges", n_colors=1) ### Nyquist Plot - ax.plot(self.re, self.im, color=colors[0], marker='o', ms=4, lw=2, ls='-', label='Sim') - ax.plot(self.circuit_fit.real, -self.circuit_fit.imag, lw=0, marker='o', ms=8, mec='r', mew=1, mfc='none', label='Fit') + ax.plot( + self.re, + self.im, + color=colors[0], + marker="o", + ms=4, + lw=2, + ls="-", + label="Sim", + ) + ax.plot( + self.circuit_fit.real, + -self.circuit_fit.imag, + lw=0, + marker="o", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) ### Bode Plot - if bode=='on': - ax1.plot(np.log10(self.f), self.re, color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z'") - ax1.plot(np.log10(self.f), self.im, color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") - ax1.plot(np.log10(self.f), self.circuit_fit.real, lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='Fit') - ax1.plot(np.log10(self.f), -self.circuit_fit.imag, lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none') + if bode == "on": + ax1.plot( + np.log10(self.f), + self.re, + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z'", + ) + ax1.plot( + np.log10(self.f), + self.im, + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) + ax1.plot( + np.log10(self.f), + self.circuit_fit.real, + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) + ax1.plot( + np.log10(self.f), + -self.circuit_fit.imag, + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z', -Z'' [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 're': - ax1.plot(np.log10(self.f), self.re, color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z'") - ax1.plot(np.log10(self.f), self.circuit_fit.real, lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='Fit') + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "re": + ax1.plot( + np.log10(self.f), + self.re, + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z'", + ) + ax1.plot( + np.log10(self.f), + self.circuit_fit.real, + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("Z' [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 'log_re': - ax1.plot(np.log10(self.f), np.log10(self.re), color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z''") - ax1.plot(np.log10(self.f), np.log10(self.circuit_fit.real), lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='Fit') + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "log_re": + ax1.plot( + np.log10(self.f), + np.log10(self.re), + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z''", + ) + ax1.plot( + np.log10(self.f), + np.log10(self.circuit_fit.real), + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z') [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode=='im': - ax1.plot(np.log10(self.f), self.im, color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") - ax1.plot(np.log10(self.f), -self.circuit_fit.imag, lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none', label='Fit') + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "im": + ax1.plot( + np.log10(self.f), + self.im, + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) + ax1.plot( + np.log10(self.f), + -self.circuit_fit.imag, + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("-Z'' [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode=='log_im': - ax1.plot(np.log10(self.f), np.log10(self.im), color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") - ax1.plot(np.log10(self.f), np.log10(-self.circuit_fit.imag), lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none', label='Fit') + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "log_im": + ax1.plot( + np.log10(self.f), + np.log10(self.im), + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) + ax1.plot( + np.log10(self.f), + np.log10(-self.circuit_fit.imag), + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(-Z'') [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - - elif bode == 'log': - ax1.plot(np.log10(self.f), np.log10(self.re), color=colors_real[0], marker='D', ms=3, lw=2.25, ls='-', label="Z''") - ax1.plot(np.log10(self.f), np.log10(self.im), color=colors_imag[0], marker='s', ms=3, lw=2.25, ls='-', label="-Z''") - ax1.plot(np.log10(self.f), np.log10(self.circuit_fit.real), lw=0, marker='D', ms=8, mec='r', mew=1, mfc='none', label='Fit') - ax1.plot(np.log10(self.f), np.log10(-self.circuit_fit.imag), lw=0, marker='s', ms=8, mec='r', mew=1, mfc='none') + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + + elif bode == "log": + ax1.plot( + np.log10(self.f), + np.log10(self.re), + color=colors_real[0], + marker="D", + ms=3, + lw=2.25, + ls="-", + label="Z''", + ) + ax1.plot( + np.log10(self.f), + np.log10(self.im), + color=colors_imag[0], + marker="s", + ms=3, + lw=2.25, + ls="-", + label="-Z''", + ) + ax1.plot( + np.log10(self.f), + np.log10(self.circuit_fit.real), + lw=0, + marker="D", + ms=8, + mec="r", + mew=1, + mfc="none", + label="Fit", + ) + ax1.plot( + np.log10(self.f), + np.log10(-self.circuit_fit.imag), + lw=0, + marker="s", + ms=8, + mec="r", + mew=1, + mfc="none", + ) ax1.set_xlabel("log(f) [Hz]") ax1.set_ylabel("log(Z', -Z'') [$\Omega$]") - if legend == 'on': - ax1.legend(loc='best', fontsize=10, frameon=False) - + if legend == "on": + ax1.legend(loc="best", fontsize=10, frameon=False) + ### Figure specifics - if legend == 'on': - ax.legend(loc='best', fontsize=10, frameon=False) + if legend == "on": + ax.legend(loc="best", fontsize=10, frameon=False) ax.set_xlabel("Z' [$\Omega$]") ax.set_ylabel("-Z'' [$\Omega$]") - if nyq_xlim != 'none': + if nyq_xlim != "none": ax.set_xlim(nyq_xlim[0], nyq_xlim[1]) - if nyq_ylim != 'none': + if nyq_ylim != "none": ax.set_ylim(nyq_ylim[0], nyq_ylim[1]) - #Save Figure - if savefig != 'none': - fig.savefig(savefig) #saves figure if fix text is given + # Save Figure + if savefig != "none": + fig.savefig(savefig) # saves figure if fix text is given + -#print() -#print('---> PyEIS Core Loaded (v. 0.5.7 - 02/01/19)') -#print() \ No newline at end of file +# print() +# print('---> PyEIS Core Loaded (v. 0.5.7 - 02/01/19)') +# print() diff --git a/PyEIS/PyEIS_Advanced_tools.py b/PyEIS/PyEIS_Advanced_tools.py index eda01cb..ed6b7d0 100644 --- a/PyEIS/PyEIS_Advanced_tools.py +++ b/PyEIS/PyEIS_Advanced_tools.py @@ -12,142 +12,167 @@ import numpy as np from scipy.constants import codata -F = codata.physical_constants['Faraday constant'][0] -qe = codata.physical_constants['elementary charge'][0] -R = codata.physical_constants['molar gas constant'][0] -kB = codata.physical_constants['Boltzmann constant'][0] -kB_eV = codata.physical_constants['Boltzmann constant in eV/K'][0] -N_A = codata.physical_constants['Avogadro constant'][0] + +F = codata.physical_constants["Faraday constant"][0] +qe = codata.physical_constants["elementary charge"][0] +R = codata.physical_constants["molar gas constant"][0] +kB = codata.physical_constants["Boltzmann constant"][0] +kB_eV = codata.physical_constants["Boltzmann constant in eV/K"][0] +N_A = codata.physical_constants["Avogadro constant"][0] F, R, qe, kB, kB_eV, N_A ### Normalization of constant phase elements ## # -def norm_nonFara_Q_C(Rs, Q, n, L='none'): - ''' +def norm_nonFara_Q_C(Rs, Q, n, L="none"): + """ Normalziation of a non-faradaic interfacial capacitance (Blocking Electrode) - + Following Brug and Hirschorn's normalization of distribtuion of relaxation times Ref.: - G.J.Brug et al., J.Electroanal. Chem. Interfacial Electrochem., 176, 275 (1984) - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ------------------ Q = Constant phase element [s^n/ohm] n = Exponent of CPE [-] Rs = Series Resistance [ohm] - + Optional Inputs ------------------ L = Thickness/length of electrode, used in Porous Electrode Theory [cm] - + Returns ------------------ C_eff = normalized capacitance for a non-faradaic electrode [s/ohm = F] - ''' - if L == 'none': - C_eff = (Q * Rs**(1-n))**(1/n) + """ + if L == "none": + C_eff = (Q * Rs ** (1 - n)) ** (1 / n) else: - C_eff = ((Q*L) * Rs**(1-n))**(1/n) + C_eff = ((Q * L) * Rs ** (1 - n)) ** (1 / n) return C_eff -def norm_Fara_Q_C(Rs, Rct, n, Q='none', fs='none', L='none'): - ''' + +def norm_Fara_Q_C(Rs, Rct, n, Q="none", fs="none", L="none"): + """ Normalziation of a faradaic interfacial capacitance (Blocking Electrode) - + Contains option to use summit frequency (fs) instead of CPE (Q) - valueable for outputs of fits - + Following Brug and Hirschorn's normalization of distribtuion of relaxation times Ref.: - G.J.Brug et al., J.Electroanal. Chem. Interfacial Electrochem., 176, 275 (1984) - B.Hirschorn, et al., ElectrochimicaActa, 55, 6218 (2010) - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - + Inputs ---------- n = Exponent of CPE [-] Rs = Series Resistance [ohm] Rct = Charge Transfer Resistance [ohm] - + Optional Inputs ------------------ Q = Constant phase element [s^n/ohm] fs = summit frequencey of fitted spectra [Hz] - + Returns ---------- C_eff = normalized capacitance for a faradaic electrode [s/ohm = F] - ''' - if Q == 'none': - if L == 'none': - Q = (1/(Rct*(2*np.pi*fs)**n)) - C_eff = Q**(1/n) * ((Rs*Rct)/(Rs*Rct))**((1-n)/n) - if L != 'none': + """ + if Q == "none": + if L == "none": + Q = 1 / (Rct * (2 * np.pi * fs) ** n) + C_eff = Q ** (1 / n) * ((Rs * Rct) / (Rs * Rct)) ** ((1 - n) / n) + if L != "none": Rct_norm = Rct / L - Q = (1/(Rct_norm*(2*np.pi*fs)**n)) - C_eff = Q**(1/n) * ((Rs*Rct_norm)/(Rs*Rct_norm))**((1-n)/n) - if fs == 'none': - C_eff = Q**(1/n) * ((Rs*Rct)/(Rs*Rct))**((1-n)/n) + Q = 1 / (Rct_norm * (2 * np.pi * fs) ** n) + C_eff = Q ** (1 / n) * ((Rs * Rct_norm) / (Rs * Rct_norm)) ** ((1 - n) / n) + if fs == "none": + C_eff = Q ** (1 / n) * ((Rs * Rct) / (Rs * Rct)) ** ((1 - n) / n) return C_eff + def Theta(E, E0, n, T=298.15, F=F, R=R): - ''' + """ See explantion in C_redox_Estep_semiinfinite() Kristian B. Knudsen (kknu@berkeley.edu || Kristianbknudsen@gmail.com) - ''' - return np.exp(((n*F)/(R*T))*(E-E0)) + """ + return np.exp(((n * F) / (R * T)) * (E - E0)) + def Varsigma(D_ox, D_red): - ''' + """ See explantion in C_redox_Estep_semiinfinite() Kristian B. Knudsen (kknu@berkeley.edu || Kristianbknudsen@gmail.com) - ''' - return (D_ox/D_red)**(1/2) + """ + return (D_ox / D_red) ** (1 / 2) + def C_redox_Estep_semiinfinite(E, E0, n, C_ox, D_ox, D_red, T=298.15, R=R, F=F): - ''' - The concentration at the electrode surface (x=0) as a function of potential following Nernst eq. + """ + The concentration at the electrode surface (x=0) as a function of potential following Nernst eq. during semi-infinite linear diffusion (Macro disk electrode) - + O + ne- --> R - + Ref: Bard A.J., Faulkner L. R., ISBN: 0-471-04372-9 (2001) "Electrochemical methods: Fundamentals and applications". New York: Wiley. Author: Kristian B. Knudsen (kknu@berkeley.edu || Kristianbknudsen@gmail.com) - + returns ---------- [0] = C_red at x=0 [1] = C_ox at x=0 - ''' - C_red0 = C_ox * (Varsigma(D_ox=D_ox, D_red=D_red)/(1+(Varsigma(D_ox=D_ox, D_red=D_red)*Theta(E=E, E0=E0, n=n, T=T, F=F, R=R)))) - C_ox0 = C_ox * ((Varsigma(D_ox=D_ox, D_red=D_red)*Theta(E=E, E0=E0, n=n, T=T, F=F, R=R))/(1+(Varsigma(D_ox=D_ox, D_red=D_red)*Theta(E=E, E0=E0, n=n, T=T, F=F, R=R)))) + """ + C_red0 = C_ox * ( + Varsigma(D_ox=D_ox, D_red=D_red) + / ( + 1 + + (Varsigma(D_ox=D_ox, D_red=D_red) * Theta(E=E, E0=E0, n=n, T=T, F=F, R=R)) + ) + ) + C_ox0 = C_ox * ( + (Varsigma(D_ox=D_ox, D_red=D_red) * Theta(E=E, E0=E0, n=n, T=T, F=F, R=R)) + / ( + 1 + + (Varsigma(D_ox=D_ox, D_red=D_red) * Theta(E=E, E0=E0, n=n, T=T, F=F, R=R)) + ) + ) return C_red0, C_ox0 + def C_redox_Estep_semihemisperhical(E, E0, n, C_ox, D_ox, D_red, T=298.15, R=R, F=F): - ''' - The concentration at the electrode surface (x=0) as a function of potential following Nernst eq. + """ + The concentration at the electrode surface (x=0) as a function of potential following Nernst eq. during semi-infinite hemispherical diffusion (Micro disk electrode) O + ne- --> R - + Note: This equation applies only for a reversible system with rapid kinetics - + Ref: Bard A.J., Faulkner L. R., ISBN: 0-471-04372-9 (2001) "Electrochemical methods: Fundamentals and applications". New York: Wiley. Author: Kristian B. Knudsen (kknu@berkeley.edu || Kristianbknudsen@gmail.com) - + returns ---------- [0] = C_red at x=0 [1] = C_ox at x=0 - ''' - C_red0 = C_ox * ((Varsigma(D_ox, D_red)**2)/(1+Varsigma(D_ox, D_red)**2 * Theta(E, E0, n, T, F, R))) - C_ox0 = C_ox * (1- (1/(1+Varsigma(D_ox, D_red)**2 * Theta(E, E0, n, T, F, R)))) + """ + C_red0 = C_ox * ( + (Varsigma(D_ox, D_red) ** 2) + / (1 + Varsigma(D_ox, D_red) ** 2 * Theta(E, E0, n, T, F, R)) + ) + C_ox0 = C_ox * ( + 1 - (1 / (1 + Varsigma(D_ox, D_red) ** 2 * Theta(E, E0, n, T, F, R))) + ) return C_red0, C_ox0 + + # -#print() -#print('---> EIS Advanced Tools Loaded (v. 0.0.2 - 06/15/18)') \ No newline at end of file +# print() +# print('---> EIS Advanced Tools Loaded (v. 0.0.2 - 06/15/18)') diff --git a/PyEIS/PyEIS_Data_extraction.py b/PyEIS/PyEIS_Data_extraction.py index 07dc955..c7dfc1b 100644 --- a/PyEIS/PyEIS_Data_extraction.py +++ b/PyEIS/PyEIS_Data_extraction.py @@ -9,16 +9,15 @@ @author: Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) """ -#Python dependencies +# Python dependencies from __future__ import division import pandas as pd import numpy as np -from scipy.constants import codata #### Extracting .mpt files with PEIS or GEIS data def correct_text_EIS(text_header): - '''Corrects the text of '*.mpt' and '*.dta' files into readable parameters without spaces, ., or / - + """Corrects the text of '*.mpt' and '*.dta' files into readable parameters without spaces, ., or / + = averaged Wew value for each frequency = Averaged I values for each frequency |E_we| = module of Ewe @@ -27,121 +26,213 @@ def correct_text_EIS(text_header): Cp/F = Capacitance caluculated using an R-C (parallel) equivalent circuit Ref.: - EC-Lab User's Manual - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - if text_header == 'freq/Hz' or text_header == ' Freq(Hz)': - return 'f' - elif text_header == 'Re(Z)/Ohm' or text_header == "Z'(a)": - return 're' - elif text_header == '-Im(Z)/Ohm' or text_header == "Z''(b)": - return 'im' -# elif text_header == "Z''(b)": -# return 'im_neg' - elif text_header == '|Z|/Ohm': - return 'Z_mag' - elif text_header == 'Phase(Z)/deg': - return 'Z_phase' - elif text_header == 'time/s' or text_header == 'Time(Sec)': - return 'times' - elif text_header == '/V' or text_header == 'Bias': - return 'E_avg' - elif text_header == '/mA': - return 'I_avg' - elif text_header == 'Cs/F': - return 'Cs' #### - elif text_header == 'Cp/F': - return 'Cp' - elif text_header == 'cycle number': - return 'cycle_number' - elif text_header == 'Re(Y)/Ohm-1': - return 'Y_re' - elif text_header == 'Im(Y)/Ohm-1': - return 'Y_im' - elif text_header == '|Y|/Ohm-1': - return 'Y_mag' - elif text_header == 'Phase(Y)/deg': - return 'Y_phase' - elif text_header == 'Time': - return 'times' - elif text_header == 'Freq': - return 'f' - elif text_header == 'Zreal': - return 're' - elif text_header == 'Zimag': - return 'im' - elif text_header == 'Zmod': - return 'Z_mag' - elif text_header == 'Vdc': - return 'E_avg' - elif text_header == 'Idc': - return 'I_avg' - elif text_header == 'I/mA': - return 'ImA' - elif text_header == 'Ewe/V': - return 'EweV' - elif text_header == 'half cycle': - return 'half_cycle' - elif text_header == 'Ns changes': - return 'Ns_changes' + """ + if text_header == "freq/Hz" or text_header == " Freq(Hz)": + return "f" + elif text_header == "Re(Z)/Ohm" or text_header == "Z'(a)": + return "re" + elif text_header == "-Im(Z)/Ohm" or text_header == "Z''(b)": + return "im" + # elif text_header == "Z''(b)": + # return 'im_neg' + elif text_header == "|Z|/Ohm": + return "Z_mag" + elif text_header == "Phase(Z)/deg": + return "Z_phase" + elif text_header == "time/s" or text_header == "Time(Sec)": + return "times" + elif text_header == "/V" or text_header == "Bias": + return "E_avg" + elif text_header == "/mA": + return "I_avg" + elif text_header == "Cs/F": + return "Cs" #### + elif text_header == "Cp/F": + return "Cp" + elif text_header == "cycle number": + return "cycle_number" + elif text_header == "Re(Y)/Ohm-1": + return "Y_re" + elif text_header == "Im(Y)/Ohm-1": + return "Y_im" + elif text_header == "|Y|/Ohm-1": + return "Y_mag" + elif text_header == "Phase(Y)/deg": + return "Y_phase" + elif text_header == "Time": + return "times" + elif text_header == "Freq": + return "f" + elif text_header == "Zreal": + return "re" + elif text_header == "Zimag": + return "im" + elif text_header == "Zmod": + return "Z_mag" + elif text_header == "Vdc": + return "E_avg" + elif text_header == "Idc": + return "I_avg" + elif text_header == "I/mA": + return "ImA" + elif text_header == "Ewe/V": + return "EweV" + elif text_header == "half cycle": + return "half_cycle" + elif text_header == "Ns changes": + return "Ns_changes" else: return text_header - + + def extract_mpt(path, EIS_name): - ''' + """ Extracting PEIS and GEIS data files from EC-lab '.mpt' format, coloums are renames following correct_text_EIS() - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - EIS_init = pd.read_csv(path+EIS_name, sep='\t', nrows=1,header=0,names=['err'], encoding='latin1') #findes line that states skiplines -# EIS_test_header_names = pd.read_csv(path+EIS_name, sep='\t', skiprows=int(EIS_init.err[0][18:20])-1, encoding='latin1') #locates number of skiplines - EIS_test_header_names = pd.read_csv(path+EIS_name, sep='\t', skiprows=int(EIS_init.err[0][18:-1])-1, encoding='latin1') #locates number of skiplines + """ + EIS_init = pd.read_csv( + path + EIS_name, sep="\t", nrows=1, header=0, names=["err"], encoding="latin1" + ) # findes line that states skiplines + # EIS_test_header_names = pd.read_csv(path+EIS_name, sep='\t', skiprows=int(EIS_init.err[0][18:20])-1, encoding='latin1') #locates number of skiplines + EIS_test_header_names = pd.read_csv( + path + EIS_name, + sep="\t", + skiprows=int(EIS_init.err[0][18:-1]) - 1, + encoding="latin1", + ) # locates number of skiplines names_EIS = [] for j in range(len(EIS_test_header_names.columns)): - names_EIS.append(correct_text_EIS(EIS_test_header_names.columns[j])) #reads coloumn text -# return pd.read_csv(path+EIS_name, sep='\t', skiprows=int(EIS_init.err[0][18:20]), names=names_EIS, encoding='latin1') - return pd.read_csv(path+EIS_name, sep='\t', skiprows=int(EIS_init.err[0][18:-1]), names=names_EIS, encoding='latin1') + names_EIS.append( + correct_text_EIS(EIS_test_header_names.columns[j]) + ) # reads coloumn text + # return pd.read_csv(path+EIS_name, sep='\t', skiprows=int(EIS_init.err[0][18:20]), names=names_EIS, encoding='latin1') + return pd.read_csv( + path + EIS_name, + sep="\t", + skiprows=int(EIS_init.err[0][18:-1]), + names=names_EIS, + encoding="latin1", + ) + def extract_dta(path, EIS_name): - ''' + """ Extracting data files from Gamry '.DTA' format, coloums are renames following correct_text_EIS() - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - dummy_col = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I','J','K','L','M','N','O','P'] - init = pd.read_csv(path+EIS_name, encoding='latin1', sep='\t', names=dummy_col) + """ + dummy_col = [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + ] + init = pd.read_csv(path + EIS_name, encoding="latin1", sep="\t", names=dummy_col) ZC = pd.Index(init.A) - header_loc = ZC.get_loc('ZCURVE')+1 ##ZC.get_loc('ZCURVE')+3 - - header_names_raw = pd.read_csv(path+EIS_name, sep='\t', skiprows=header_loc, encoding='latin1') #locates number of skiplines + header_loc = ZC.get_loc("ZCURVE") + 1 ##ZC.get_loc('ZCURVE')+3 + + header_names_raw = pd.read_csv( + path + EIS_name, sep="\t", skiprows=header_loc, encoding="latin1" + ) # locates number of skiplines header_names = [] for j in range(len(header_names_raw.columns)): - header_names.append(correct_text_EIS(header_names_raw.columns[j])) #reads coloumn text - data = pd.read_csv(path+EIS_name, sep='\t', skiprows=ZC.get_loc('ZCURVE')+3, names=header_names, encoding='latin1') - data.update({'im': np.abs(data.im)}) - data = data.assign(cycle_number = 1.0) + header_names.append( + correct_text_EIS(header_names_raw.columns[j]) + ) # reads coloumn text + data = pd.read_csv( + path + EIS_name, + sep="\t", + skiprows=ZC.get_loc("ZCURVE") + 3, + names=header_names, + encoding="latin1", + ) + data.update({"im": np.abs(data.im)}) + data = data.assign(cycle_number=1.0) return data + def extract_solar(path, EIS_name): - ''' + """ Extracting data files from Solartron's '.z' format, coloums are renames following correct_text_EIS() - + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - dummy_col = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I','J','K','L','M','N','O','P'] - init = pd.read_csv(path+EIS_name, encoding='latin1', sep='\t', names=dummy_col) + """ + dummy_col = [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + ] + init = pd.read_csv(path + EIS_name, encoding="latin1", sep="\t", names=dummy_col) ZC = pd.Index(init.A) - header_loc = ZC.get_loc(' Freq(Hz)') - - header_names_raw = pd.read_csv(path+EIS_name, sep='\t', skiprows=header_loc, encoding='latin1') #locates number of skiplines + header_loc = ZC.get_loc(" Freq(Hz)") + + header_names_raw = pd.read_csv( + path + EIS_name, sep="\t", skiprows=header_loc, encoding="latin1" + ) # locates number of skiplines header_names = [] for j in range(len(header_names_raw.columns)): - header_names.append(correct_text_EIS(header_names_raw.columns[j])) #reads coloumn text - data = pd.read_csv(path+EIS_name, sep='\t', skiprows=header_loc+2, names=header_names, encoding='latin1') - data.update({'im': -data.im}) - data = data.assign(cycle_number = 1.0) + header_names.append( + correct_text_EIS(header_names_raw.columns[j]) + ) # reads coloumn text + data = pd.read_csv( + path + EIS_name, + sep="\t", + skiprows=header_loc + 2, + names=header_names, + encoding="latin1", + ) + data.update({"im": -data.im}) + data = data.assign(cycle_number=1.0) return data -# -#print() -#print('---> Data Extraction Script Loaded (v. 0.0.2 - 06/27/18)') \ No newline at end of file + +def extract_csv(path, EIS_name, sep="\t"): + """ + Extract data from simple csv style file. + + The standard seperator is TAB and one row with column names. We want the columns + to named in a unified way: f, re, im, Z_mag, Y_phase. + """ + + raw = pd.read_csv(path + EIS_name, sep="\t") + data = raw.rename( + columns={ + "Frequency": "f", + "Z_re": "re", + "Z_img": "im", + "Z_E": "Z_mag", + "Phase_E": "Y_phase", + } + ) + + data = data.assign(cycle_number=1.0) + + return data diff --git a/PyEIS/PyEIS_Lin_KK.py b/PyEIS/PyEIS_Lin_KK.py index 88ce3f4..4c81c8f 100644 --- a/PyEIS/PyEIS_Lin_KK.py +++ b/PyEIS/PyEIS_Lin_KK.py @@ -14,4700 +14,11733 @@ ## # + def KK_RC2(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + ) + def KK_RC3(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + ) + def KK_RC4(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + ) + def KK_RC5(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + ) + def KK_RC6(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + ) + def KK_RC7(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + ) + def KK_RC8(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + ) + def KK_RC9(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + ) + def KK_RC10(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + ) + def KK_RC11(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + ) + def KK_RC12(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + ) + def KK_RC13(w, Rs, R_values, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + ) + def KK_RC14(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + ) + def KK_RC15(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + ) + def KK_RC16(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + ) + def KK_RC17(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + ) + def KK_RC18(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + ) + def KK_RC19(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + ) + def KK_RC20(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + ) + def KK_RC21(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + ) + def KK_RC22(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + ) + def KK_RC23(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + ) + def KK_RC24(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + ) + def KK_RC25(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + ) + def KK_RC26(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + ) + def KK_RC27(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + ) + def KK_RC28(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + ) + def KK_RC29(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + ) + def KK_RC30(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + ) + def KK_RC31(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + ) + def KK_RC32(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + ) + def KK_RC33(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + ) + def KK_RC34(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + ) + def KK_RC35(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + ) + def KK_RC36(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + ) + def KK_RC37(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + ) + def KK_RC38(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + ) + def KK_RC39(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + ) + def KK_RC40(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + ) + def KK_RC41(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + ) + def KK_RC42(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + ) + def KK_RC43(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + ) + def KK_RC44(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + ) + def KK_RC45(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + ) + def KK_RC46(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + ) + def KK_RC47(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + ) + def KK_RC48(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + ) + def KK_RC49(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + ) + def KK_RC50(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + ) + def KK_RC51(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + ) + def KK_RC52(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + ) + def KK_RC53(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + ) + def KK_RC54(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + ) + def KK_RC55(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + ) + def KK_RC56(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + ) + def KK_RC57(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + ) + def KK_RC58(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + ) def KK_RC59(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + ) + def KK_RC60(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + ) + def KK_RC61(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + ) + def KK_RC62(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + ) + def KK_RC63(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + ) + def KK_RC64(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + ) + def KK_RC65(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + ) + def KK_RC66(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + ) + def KK_RC67(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + ) + def KK_RC68(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + ) + def KK_RC69(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + ) + def KK_RC70(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + ) + def KK_RC71(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + ) + def KK_RC72(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + ) + def KK_RC73(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + ) + def KK_RC74(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + ) + def KK_RC75(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + (R_values[74] /(1+w*1j*t_values[74])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + + (R_values[74] / (1 + w * 1j * t_values[74])) + ) + def KK_RC76(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + (R_values[74] /(1+w*1j*t_values[74])) + (R_values[75] /(1+w*1j*t_values[75])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + + (R_values[74] / (1 + w * 1j * t_values[74])) + + (R_values[75] / (1 + w * 1j * t_values[75])) + ) + def KK_RC77(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + (R_values[74] /(1+w*1j*t_values[74])) + (R_values[75] /(1+w*1j*t_values[75])) + (R_values[76] /(1+w*1j*t_values[76])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + + (R_values[74] / (1 + w * 1j * t_values[74])) + + (R_values[75] / (1 + w * 1j * t_values[75])) + + (R_values[76] / (1 + w * 1j * t_values[76])) + ) + def KK_RC78(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + (R_values[74] /(1+w*1j*t_values[74])) + (R_values[75] /(1+w*1j*t_values[75])) + (R_values[76] /(1+w*1j*t_values[76])) + (R_values[77] /(1+w*1j*t_values[77])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + + (R_values[74] / (1 + w * 1j * t_values[74])) + + (R_values[75] / (1 + w * 1j * t_values[75])) + + (R_values[76] / (1 + w * 1j * t_values[76])) + + (R_values[77] / (1 + w * 1j * t_values[77])) + ) + def KK_RC79(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + (R_values[74] /(1+w*1j*t_values[74])) + (R_values[75] /(1+w*1j*t_values[75])) + (R_values[76] /(1+w*1j*t_values[76])) + (R_values[77] /(1+w*1j*t_values[77])) + (R_values[78] /(1+w*1j*t_values[78])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + + (R_values[74] / (1 + w * 1j * t_values[74])) + + (R_values[75] / (1 + w * 1j * t_values[75])) + + (R_values[76] / (1 + w * 1j * t_values[76])) + + (R_values[77] / (1 + w * 1j * t_values[77])) + + (R_values[78] / (1 + w * 1j * t_values[78])) + ) + def KK_RC80(w, Rs, R_values, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - return Rs + (R_values[0]/(1+w*1j*t_values[0])) + (R_values[1] /(1+w*1j*t_values[1])) + (R_values[2] /(1+w*1j*t_values[2])) + (R_values[3] /(1+w*1j*t_values[3])) + (R_values[4] /(1+w*1j*t_values[4])) + (R_values[5] /(1+w*1j*t_values[5])) + (R_values[6] /(1+w*1j*t_values[6])) + (R_values[7] /(1+w*1j*t_values[7])) + (R_values[8] /(1+w*1j*t_values[8])) + (R_values[9] /(1+w*1j*t_values[9])) + (R_values[10] /(1+w*1j*t_values[10])) + (R_values[11] /(1+w*1j*t_values[11])) + (R_values[12] /(1+w*1j*t_values[12])) + (R_values[13] /(1+w*1j*t_values[13])) + (R_values[14] /(1+w*1j*t_values[14])) + (R_values[15] /(1+w*1j*t_values[15])) + (R_values[16] /(1+w*1j*t_values[16])) + (R_values[17] /(1+w*1j*t_values[17])) + (R_values[18] /(1+w*1j*t_values[18])) + (R_values[19] /(1+w*1j*t_values[19])) + (R_values[20] /(1+w*1j*t_values[20])) + (R_values[21] /(1+w*1j*t_values[21])) + (R_values[22] /(1+w*1j*t_values[22])) + (R_values[23] /(1+w*1j*t_values[23])) + (R_values[24] /(1+w*1j*t_values[24])) + (R_values[25] /(1+w*1j*t_values[25])) + (R_values[26] /(1+w*1j*t_values[26])) + (R_values[27] /(1+w*1j*t_values[27])) + (R_values[28] /(1+w*1j*t_values[28])) + (R_values[29] /(1+w*1j*t_values[29])) + (R_values[30] /(1+w*1j*t_values[30])) + (R_values[31] /(1+w*1j*t_values[31])) + (R_values[32] /(1+w*1j*t_values[32])) + (R_values[33] /(1+w*1j*t_values[33])) + (R_values[34] /(1+w*1j*t_values[34])) + (R_values[35] /(1+w*1j*t_values[35])) + (R_values[36] /(1+w*1j*t_values[36])) + (R_values[37] /(1+w*1j*t_values[37])) + (R_values[38] /(1+w*1j*t_values[38])) + (R_values[39] /(1+w*1j*t_values[39])) + (R_values[40] /(1+w*1j*t_values[40])) + (R_values[41] /(1+w*1j*t_values[41])) + (R_values[42] /(1+w*1j*t_values[42])) + (R_values[43] /(1+w*1j*t_values[43])) + (R_values[44] /(1+w*1j*t_values[44])) + (R_values[45] /(1+w*1j*t_values[45])) + (R_values[46] /(1+w*1j*t_values[46])) + (R_values[47] /(1+w*1j*t_values[47])) + (R_values[48] /(1+w*1j*t_values[48])) + (R_values[49] /(1+w*1j*t_values[49])) + (R_values[50] /(1+w*1j*t_values[50])) + (R_values[51] /(1+w*1j*t_values[51])) + (R_values[52] /(1+w*1j*t_values[52])) + (R_values[53] /(1+w*1j*t_values[53])) + (R_values[54] /(1+w*1j*t_values[54])) + (R_values[55] /(1+w*1j*t_values[55])) + (R_values[56] /(1+w*1j*t_values[56])) + (R_values[57] /(1+w*1j*t_values[57])) + (R_values[58] /(1+w*1j*t_values[58])) + (R_values[59] /(1+w*1j*t_values[59])) + (R_values[60] /(1+w*1j*t_values[60])) + (R_values[61] /(1+w*1j*t_values[61])) + (R_values[62] /(1+w*1j*t_values[62])) + (R_values[63] /(1+w*1j*t_values[63])) + (R_values[64] /(1+w*1j*t_values[64])) + (R_values[65] /(1+w*1j*t_values[65])) + (R_values[66] /(1+w*1j*t_values[66])) + (R_values[67] /(1+w*1j*t_values[67])) + (R_values[68] /(1+w*1j*t_values[68])) + (R_values[69] /(1+w*1j*t_values[69])) + (R_values[70] /(1+w*1j*t_values[70])) + (R_values[71] /(1+w*1j*t_values[71])) + (R_values[72] /(1+w*1j*t_values[72])) + (R_values[73] /(1+w*1j*t_values[73])) + (R_values[74] /(1+w*1j*t_values[74])) + (R_values[75] /(1+w*1j*t_values[75])) + (R_values[76] /(1+w*1j*t_values[76])) + (R_values[77] /(1+w*1j*t_values[77])) + (R_values[78] /(1+w*1j*t_values[78])) + (R_values[79] /(1+w*1j*t_values[79])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + return ( + Rs + + (R_values[0] / (1 + w * 1j * t_values[0])) + + (R_values[1] / (1 + w * 1j * t_values[1])) + + (R_values[2] / (1 + w * 1j * t_values[2])) + + (R_values[3] / (1 + w * 1j * t_values[3])) + + (R_values[4] / (1 + w * 1j * t_values[4])) + + (R_values[5] / (1 + w * 1j * t_values[5])) + + (R_values[6] / (1 + w * 1j * t_values[6])) + + (R_values[7] / (1 + w * 1j * t_values[7])) + + (R_values[8] / (1 + w * 1j * t_values[8])) + + (R_values[9] / (1 + w * 1j * t_values[9])) + + (R_values[10] / (1 + w * 1j * t_values[10])) + + (R_values[11] / (1 + w * 1j * t_values[11])) + + (R_values[12] / (1 + w * 1j * t_values[12])) + + (R_values[13] / (1 + w * 1j * t_values[13])) + + (R_values[14] / (1 + w * 1j * t_values[14])) + + (R_values[15] / (1 + w * 1j * t_values[15])) + + (R_values[16] / (1 + w * 1j * t_values[16])) + + (R_values[17] / (1 + w * 1j * t_values[17])) + + (R_values[18] / (1 + w * 1j * t_values[18])) + + (R_values[19] / (1 + w * 1j * t_values[19])) + + (R_values[20] / (1 + w * 1j * t_values[20])) + + (R_values[21] / (1 + w * 1j * t_values[21])) + + (R_values[22] / (1 + w * 1j * t_values[22])) + + (R_values[23] / (1 + w * 1j * t_values[23])) + + (R_values[24] / (1 + w * 1j * t_values[24])) + + (R_values[25] / (1 + w * 1j * t_values[25])) + + (R_values[26] / (1 + w * 1j * t_values[26])) + + (R_values[27] / (1 + w * 1j * t_values[27])) + + (R_values[28] / (1 + w * 1j * t_values[28])) + + (R_values[29] / (1 + w * 1j * t_values[29])) + + (R_values[30] / (1 + w * 1j * t_values[30])) + + (R_values[31] / (1 + w * 1j * t_values[31])) + + (R_values[32] / (1 + w * 1j * t_values[32])) + + (R_values[33] / (1 + w * 1j * t_values[33])) + + (R_values[34] / (1 + w * 1j * t_values[34])) + + (R_values[35] / (1 + w * 1j * t_values[35])) + + (R_values[36] / (1 + w * 1j * t_values[36])) + + (R_values[37] / (1 + w * 1j * t_values[37])) + + (R_values[38] / (1 + w * 1j * t_values[38])) + + (R_values[39] / (1 + w * 1j * t_values[39])) + + (R_values[40] / (1 + w * 1j * t_values[40])) + + (R_values[41] / (1 + w * 1j * t_values[41])) + + (R_values[42] / (1 + w * 1j * t_values[42])) + + (R_values[43] / (1 + w * 1j * t_values[43])) + + (R_values[44] / (1 + w * 1j * t_values[44])) + + (R_values[45] / (1 + w * 1j * t_values[45])) + + (R_values[46] / (1 + w * 1j * t_values[46])) + + (R_values[47] / (1 + w * 1j * t_values[47])) + + (R_values[48] / (1 + w * 1j * t_values[48])) + + (R_values[49] / (1 + w * 1j * t_values[49])) + + (R_values[50] / (1 + w * 1j * t_values[50])) + + (R_values[51] / (1 + w * 1j * t_values[51])) + + (R_values[52] / (1 + w * 1j * t_values[52])) + + (R_values[53] / (1 + w * 1j * t_values[53])) + + (R_values[54] / (1 + w * 1j * t_values[54])) + + (R_values[55] / (1 + w * 1j * t_values[55])) + + (R_values[56] / (1 + w * 1j * t_values[56])) + + (R_values[57] / (1 + w * 1j * t_values[57])) + + (R_values[58] / (1 + w * 1j * t_values[58])) + + (R_values[59] / (1 + w * 1j * t_values[59])) + + (R_values[60] / (1 + w * 1j * t_values[60])) + + (R_values[61] / (1 + w * 1j * t_values[61])) + + (R_values[62] / (1 + w * 1j * t_values[62])) + + (R_values[63] / (1 + w * 1j * t_values[63])) + + (R_values[64] / (1 + w * 1j * t_values[64])) + + (R_values[65] / (1 + w * 1j * t_values[65])) + + (R_values[66] / (1 + w * 1j * t_values[66])) + + (R_values[67] / (1 + w * 1j * t_values[67])) + + (R_values[68] / (1 + w * 1j * t_values[68])) + + (R_values[69] / (1 + w * 1j * t_values[69])) + + (R_values[70] / (1 + w * 1j * t_values[70])) + + (R_values[71] / (1 + w * 1j * t_values[71])) + + (R_values[72] / (1 + w * 1j * t_values[72])) + + (R_values[73] / (1 + w * 1j * t_values[73])) + + (R_values[74] / (1 + w * 1j * t_values[74])) + + (R_values[75] / (1 + w * 1j * t_values[75])) + + (R_values[76] / (1 + w * 1j * t_values[76])) + + (R_values[77] / (1 + w * 1j * t_values[77])) + + (R_values[78] / (1 + w * 1j * t_values[78])) + + (R_values[79] / (1 + w * 1j * t_values[79])) + ) + ### Fitting Functions ## # + def KK_RC2_fit(params, w, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + return Rs + (R1 / (1 + w * 1j * t_values[0])) + (R2 / (1 + w * 1j * t_values[1])) + def KK_RC3_fit(params, w, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + ) + def KK_RC4_fit(params, w, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + ) + def KK_RC5_fit(params, w, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + ) + def KK_RC6_fit(params, w, t_values): - ''' + """ Kramers-Kronig Function: -RC- - + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + ) + def KK_RC7_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + ) + def KK_RC8_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + ) + def KK_RC9_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + ) + def KK_RC10_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + ) + def KK_RC11_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + ) + def KK_RC12_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + ) + def KK_RC13_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + ) + def KK_RC14_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + ) + def KK_RC15_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + ) + def KK_RC15_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + ) + def KK_RC16_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + ) + def KK_RC17_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + ) + def KK_RC18_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + ) + def KK_RC19_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + ) + def KK_RC20_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + ) + def KK_RC21_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + ) + def KK_RC22_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + ) + def KK_RC23_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + ) + def KK_RC24_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + ) + def KK_RC25_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + ) + def KK_RC26_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + ) + def KK_RC27_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + ) + def KK_RC28_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + ) + def KK_RC29_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + ) + def KK_RC30_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + ) + def KK_RC31_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + ) + def KK_RC32_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + ) + def KK_RC33_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + ) + def KK_RC34_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + ) + def KK_RC35_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + ) + def KK_RC36_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + ) + def KK_RC37_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + ) + def KK_RC38_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + ) + def KK_RC39_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + ) + def KK_RC40_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + ) + def KK_RC41_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + ) + def KK_RC42_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + ) + def KK_RC43_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + ) + def KK_RC44_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + ) + def KK_RC45_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + ) + def KK_RC46_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + ) + def KK_RC47_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + ) + def KK_RC48_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + ) + def KK_RC49_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + ) + def KK_RC50_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + ) + def KK_RC51_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + ) + def KK_RC52_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + ) + def KK_RC53_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + ) + def KK_RC54_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + ) + def KK_RC55_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + ) + def KK_RC56_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + ) + def KK_RC57_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + ) + def KK_RC58_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + ) + def KK_RC59_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + ) + def KK_RC60_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + ) + def KK_RC61_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + ) + def KK_RC62_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + ) + def KK_RC63_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + ) + def KK_RC64_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + ) + def KK_RC65_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + ) + def KK_RC66_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + ) + def KK_RC67_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + ) + def KK_RC68_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + ) + def KK_RC69_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + ) + def KK_RC70_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + ) + def KK_RC71_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + ) + def KK_RC72_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + ) + def KK_RC73_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + ) + def KK_RC74_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + ) + def KK_RC75_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - R75 = params['R75'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + (R75 /(1+w*1j*t_values[74])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + R75 = params["R75"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + + (R75 / (1 + w * 1j * t_values[74])) + ) + def KK_RC76_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - R75 = params['R75'] - R76 = params['R76'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + (R75 /(1+w*1j*t_values[74])) + (R76 /(1+w*1j*t_values[75])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + R75 = params["R75"] + R76 = params["R76"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + + (R75 / (1 + w * 1j * t_values[74])) + + (R76 / (1 + w * 1j * t_values[75])) + ) + def KK_RC77_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - R75 = params['R75'] - R76 = params['R76'] - R77 = params['R77'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + (R75 /(1+w*1j*t_values[74])) + (R76 /(1+w*1j*t_values[75])) + (R77 /(1+w*1j*t_values[76])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + R75 = params["R75"] + R76 = params["R76"] + R77 = params["R77"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + + (R75 / (1 + w * 1j * t_values[74])) + + (R76 / (1 + w * 1j * t_values[75])) + + (R77 / (1 + w * 1j * t_values[76])) + ) + def KK_RC78_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - R75 = params['R75'] - R76 = params['R76'] - R77 = params['R77'] - R78 = params['R78'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + (R75 /(1+w*1j*t_values[74])) + (R76 /(1+w*1j*t_values[75])) + (R77 /(1+w*1j*t_values[76])) + (R78 /(1+w*1j*t_values[77])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + R75 = params["R75"] + R76 = params["R76"] + R77 = params["R77"] + R78 = params["R78"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + + (R75 / (1 + w * 1j * t_values[74])) + + (R76 / (1 + w * 1j * t_values[75])) + + (R77 / (1 + w * 1j * t_values[76])) + + (R78 / (1 + w * 1j * t_values[77])) + ) + def KK_RC79_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - R75 = params['R75'] - R76 = params['R76'] - R77 = params['R77'] - R78 = params['R78'] - R79 = params['R79'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + (R75 /(1+w*1j*t_values[74])) + (R76 /(1+w*1j*t_values[75])) + (R77 /(1+w*1j*t_values[76])) + (R78 /(1+w*1j*t_values[77])) + (R79 /(1+w*1j*t_values[78])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + R75 = params["R75"] + R76 = params["R76"] + R77 = params["R77"] + R78 = params["R78"] + R79 = params["R79"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + + (R75 / (1 + w * 1j * t_values[74])) + + (R76 / (1 + w * 1j * t_values[75])) + + (R77 / (1 + w * 1j * t_values[76])) + + (R78 / (1 + w * 1j * t_values[77])) + + (R79 / (1 + w * 1j * t_values[78])) + ) + def KK_RC80_fit(params, w, t_values): - ''' - Kramers-Kronig Function: -RC- - - Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) - ''' - Rs = params['Rs'] - R1 = params['R1'] - R2 = params['R2'] - R3 = params['R3'] - R4 = params['R4'] - R5 = params['R5'] - R6 = params['R6'] - R7 = params['R7'] - R8 = params['R8'] - R9 = params['R9'] - R10 = params['R10'] - R11 = params['R11'] - R12 = params['R12'] - R13 = params['R13'] - R14 = params['R14'] - R15 = params['R15'] - R16 = params['R16'] - R17 = params['R17'] - R18 = params['R18'] - R19 = params['R19'] - R20 = params['R20'] - R21 = params['R21'] - R22 = params['R22'] - R23 = params['R23'] - R24 = params['R24'] - R25 = params['R25'] - R26 = params['R26'] - R27 = params['R27'] - R28 = params['R28'] - R29 = params['R29'] - R30 = params['R30'] - R31 = params['R31'] - R32 = params['R32'] - R33 = params['R33'] - R34 = params['R34'] - R35 = params['R35'] - R36 = params['R36'] - R37 = params['R37'] - R38 = params['R38'] - R39 = params['R39'] - R40 = params['R40'] - R41 = params['R41'] - R42 = params['R42'] - R43 = params['R43'] - R44 = params['R44'] - R45 = params['R45'] - R46 = params['R46'] - R47 = params['R47'] - R48 = params['R48'] - R49 = params['R49'] - R50 = params['R50'] - R51 = params['R51'] - R52 = params['R52'] - R53 = params['R53'] - R54 = params['R54'] - R55 = params['R55'] - R56 = params['R56'] - R57 = params['R57'] - R58 = params['R58'] - R59 = params['R59'] - R60 = params['R60'] - R61 = params['R61'] - R62 = params['R62'] - R63 = params['R63'] - R64 = params['R64'] - R65 = params['R65'] - R66 = params['R66'] - R67 = params['R67'] - R68 = params['R68'] - R69 = params['R69'] - R70 = params['R70'] - R71 = params['R71'] - R72 = params['R72'] - R73 = params['R73'] - R74 = params['R74'] - R75 = params['R75'] - R76 = params['R76'] - R77 = params['R77'] - R78 = params['R78'] - R79 = params['R79'] - R80 = params['R80'] - return Rs + (R1/(1+w*1j*t_values[0])) + (R2 /(1+w*1j*t_values[1])) + (R3 /(1+w*1j*t_values[2])) + (R4 /(1+w*1j*t_values[3])) + (R5 /(1+w*1j*t_values[4])) + (R6 /(1+w*1j*t_values[5])) + (R7 /(1+w*1j*t_values[6])) + (R8 /(1+w*1j*t_values[7])) + (R9 /(1+w*1j*t_values[8])) + (R10 /(1+w*1j*t_values[9])) + (R11 /(1+w*1j*t_values[10])) + (R12 /(1+w*1j*t_values[11])) + (R13 /(1+w*1j*t_values[12])) + (R14 /(1+w*1j*t_values[13])) + (R15 /(1+w*1j*t_values[14])) + (R16 /(1+w*1j*t_values[15])) + (R17 /(1+w*1j*t_values[16])) + (R18 /(1+w*1j*t_values[17])) + (R19 /(1+w*1j*t_values[18])) + (R20 /(1+w*1j*t_values[19])) + (R21 /(1+w*1j*t_values[20])) + (R22 /(1+w*1j*t_values[21])) + (R23 /(1+w*1j*t_values[22])) + (R24 /(1+w*1j*t_values[23])) + (R25 /(1+w*1j*t_values[24])) + (R26 /(1+w*1j*t_values[25])) + (R27 /(1+w*1j*t_values[26])) + (R28 /(1+w*1j*t_values[27])) + (R29 /(1+w*1j*t_values[28])) + (R30 /(1+w*1j*t_values[29])) + (R31 /(1+w*1j*t_values[30])) + (R32 /(1+w*1j*t_values[31])) + (R33 /(1+w*1j*t_values[32])) + (R34 /(1+w*1j*t_values[33])) + (R35 /(1+w*1j*t_values[34])) + (R36 /(1+w*1j*t_values[35])) + (R37 /(1+w*1j*t_values[36])) + (R38 /(1+w*1j*t_values[37])) + (R39 /(1+w*1j*t_values[38])) + (R40 /(1+w*1j*t_values[39])) + (R41 /(1+w*1j*t_values[40])) + (R42 /(1+w*1j*t_values[41])) + (R43 /(1+w*1j*t_values[42])) + (R44 /(1+w*1j*t_values[43])) + (R45 /(1+w*1j*t_values[44])) + (R46 /(1+w*1j*t_values[45])) + (R47 /(1+w*1j*t_values[46])) + (R48 /(1+w*1j*t_values[47])) + (R49 /(1+w*1j*t_values[48])) + (R50 /(1+w*1j*t_values[49])) + (R51 /(1+w*1j*t_values[50])) + (R52 /(1+w*1j*t_values[51])) + (R53 /(1+w*1j*t_values[52])) + (R54 /(1+w*1j*t_values[53])) + (R55 /(1+w*1j*t_values[54])) + (R56 /(1+w*1j*t_values[55])) + (R57 /(1+w*1j*t_values[56])) + (R58 /(1+w*1j*t_values[57])) + (R59 /(1+w*1j*t_values[58])) + (R60 /(1+w*1j*t_values[59])) + (R61 /(1+w*1j*t_values[60])) + (R62 /(1+w*1j*t_values[61])) + (R63 /(1+w*1j*t_values[62])) + (R64 /(1+w*1j*t_values[63])) + (R65 /(1+w*1j*t_values[64])) + (R66 /(1+w*1j*t_values[65])) + (R67 /(1+w*1j*t_values[66])) + (R68 /(1+w*1j*t_values[67])) + (R69 /(1+w*1j*t_values[68])) + (R70 /(1+w*1j*t_values[69])) + (R71 /(1+w*1j*t_values[70])) + (R72 /(1+w*1j*t_values[71])) + (R73 /(1+w*1j*t_values[72])) + (R74 /(1+w*1j*t_values[73])) + (R75 /(1+w*1j*t_values[74])) + (R76 /(1+w*1j*t_values[75])) + (R77 /(1+w*1j*t_values[76])) + (R78 /(1+w*1j*t_values[77])) + (R79 /(1+w*1j*t_values[78])) + (R80 /(1+w*1j*t_values[79])) + """ + Kramers-Kronig Function: -RC- + + Kristian B. Knudsen (kknu@berkeley.edu / kristianbknudsen@gmail.com) + """ + Rs = params["Rs"] + R1 = params["R1"] + R2 = params["R2"] + R3 = params["R3"] + R4 = params["R4"] + R5 = params["R5"] + R6 = params["R6"] + R7 = params["R7"] + R8 = params["R8"] + R9 = params["R9"] + R10 = params["R10"] + R11 = params["R11"] + R12 = params["R12"] + R13 = params["R13"] + R14 = params["R14"] + R15 = params["R15"] + R16 = params["R16"] + R17 = params["R17"] + R18 = params["R18"] + R19 = params["R19"] + R20 = params["R20"] + R21 = params["R21"] + R22 = params["R22"] + R23 = params["R23"] + R24 = params["R24"] + R25 = params["R25"] + R26 = params["R26"] + R27 = params["R27"] + R28 = params["R28"] + R29 = params["R29"] + R30 = params["R30"] + R31 = params["R31"] + R32 = params["R32"] + R33 = params["R33"] + R34 = params["R34"] + R35 = params["R35"] + R36 = params["R36"] + R37 = params["R37"] + R38 = params["R38"] + R39 = params["R39"] + R40 = params["R40"] + R41 = params["R41"] + R42 = params["R42"] + R43 = params["R43"] + R44 = params["R44"] + R45 = params["R45"] + R46 = params["R46"] + R47 = params["R47"] + R48 = params["R48"] + R49 = params["R49"] + R50 = params["R50"] + R51 = params["R51"] + R52 = params["R52"] + R53 = params["R53"] + R54 = params["R54"] + R55 = params["R55"] + R56 = params["R56"] + R57 = params["R57"] + R58 = params["R58"] + R59 = params["R59"] + R60 = params["R60"] + R61 = params["R61"] + R62 = params["R62"] + R63 = params["R63"] + R64 = params["R64"] + R65 = params["R65"] + R66 = params["R66"] + R67 = params["R67"] + R68 = params["R68"] + R69 = params["R69"] + R70 = params["R70"] + R71 = params["R71"] + R72 = params["R72"] + R73 = params["R73"] + R74 = params["R74"] + R75 = params["R75"] + R76 = params["R76"] + R77 = params["R77"] + R78 = params["R78"] + R79 = params["R79"] + R80 = params["R80"] + return ( + Rs + + (R1 / (1 + w * 1j * t_values[0])) + + (R2 / (1 + w * 1j * t_values[1])) + + (R3 / (1 + w * 1j * t_values[2])) + + (R4 / (1 + w * 1j * t_values[3])) + + (R5 / (1 + w * 1j * t_values[4])) + + (R6 / (1 + w * 1j * t_values[5])) + + (R7 / (1 + w * 1j * t_values[6])) + + (R8 / (1 + w * 1j * t_values[7])) + + (R9 / (1 + w * 1j * t_values[8])) + + (R10 / (1 + w * 1j * t_values[9])) + + (R11 / (1 + w * 1j * t_values[10])) + + (R12 / (1 + w * 1j * t_values[11])) + + (R13 / (1 + w * 1j * t_values[12])) + + (R14 / (1 + w * 1j * t_values[13])) + + (R15 / (1 + w * 1j * t_values[14])) + + (R16 / (1 + w * 1j * t_values[15])) + + (R17 / (1 + w * 1j * t_values[16])) + + (R18 / (1 + w * 1j * t_values[17])) + + (R19 / (1 + w * 1j * t_values[18])) + + (R20 / (1 + w * 1j * t_values[19])) + + (R21 / (1 + w * 1j * t_values[20])) + + (R22 / (1 + w * 1j * t_values[21])) + + (R23 / (1 + w * 1j * t_values[22])) + + (R24 / (1 + w * 1j * t_values[23])) + + (R25 / (1 + w * 1j * t_values[24])) + + (R26 / (1 + w * 1j * t_values[25])) + + (R27 / (1 + w * 1j * t_values[26])) + + (R28 / (1 + w * 1j * t_values[27])) + + (R29 / (1 + w * 1j * t_values[28])) + + (R30 / (1 + w * 1j * t_values[29])) + + (R31 / (1 + w * 1j * t_values[30])) + + (R32 / (1 + w * 1j * t_values[31])) + + (R33 / (1 + w * 1j * t_values[32])) + + (R34 / (1 + w * 1j * t_values[33])) + + (R35 / (1 + w * 1j * t_values[34])) + + (R36 / (1 + w * 1j * t_values[35])) + + (R37 / (1 + w * 1j * t_values[36])) + + (R38 / (1 + w * 1j * t_values[37])) + + (R39 / (1 + w * 1j * t_values[38])) + + (R40 / (1 + w * 1j * t_values[39])) + + (R41 / (1 + w * 1j * t_values[40])) + + (R42 / (1 + w * 1j * t_values[41])) + + (R43 / (1 + w * 1j * t_values[42])) + + (R44 / (1 + w * 1j * t_values[43])) + + (R45 / (1 + w * 1j * t_values[44])) + + (R46 / (1 + w * 1j * t_values[45])) + + (R47 / (1 + w * 1j * t_values[46])) + + (R48 / (1 + w * 1j * t_values[47])) + + (R49 / (1 + w * 1j * t_values[48])) + + (R50 / (1 + w * 1j * t_values[49])) + + (R51 / (1 + w * 1j * t_values[50])) + + (R52 / (1 + w * 1j * t_values[51])) + + (R53 / (1 + w * 1j * t_values[52])) + + (R54 / (1 + w * 1j * t_values[53])) + + (R55 / (1 + w * 1j * t_values[54])) + + (R56 / (1 + w * 1j * t_values[55])) + + (R57 / (1 + w * 1j * t_values[56])) + + (R58 / (1 + w * 1j * t_values[57])) + + (R59 / (1 + w * 1j * t_values[58])) + + (R60 / (1 + w * 1j * t_values[59])) + + (R61 / (1 + w * 1j * t_values[60])) + + (R62 / (1 + w * 1j * t_values[61])) + + (R63 / (1 + w * 1j * t_values[62])) + + (R64 / (1 + w * 1j * t_values[63])) + + (R65 / (1 + w * 1j * t_values[64])) + + (R66 / (1 + w * 1j * t_values[65])) + + (R67 / (1 + w * 1j * t_values[66])) + + (R68 / (1 + w * 1j * t_values[67])) + + (R69 / (1 + w * 1j * t_values[68])) + + (R70 / (1 + w * 1j * t_values[69])) + + (R71 / (1 + w * 1j * t_values[70])) + + (R72 / (1 + w * 1j * t_values[71])) + + (R73 / (1 + w * 1j * t_values[72])) + + (R74 / (1 + w * 1j * t_values[73])) + + (R75 / (1 + w * 1j * t_values[74])) + + (R76 / (1 + w * 1j * t_values[75])) + + (R77 / (1 + w * 1j * t_values[76])) + + (R78 / (1 + w * 1j * t_values[77])) + + (R79 / (1 + w * 1j * t_values[78])) + + (R80 / (1 + w * 1j * t_values[79])) + ) + ### Least-squres function and related functions ## # def KK_Rnam_val(re, re_start, num_RC): - ''' + """ This function determines the name and initial guesses for resistances for the Linear KK test - + Ref.: - Schōnleber, M. et al. Electrochimica Acta 131 (2014) 20-27 - - Boukamp, B.A. J. Electrochem. Soc., 142, 6, 1885-1894 - + - Boukamp, B.A. J. Electrochem. Soc., 142, 6, 1885-1894 + Kristian B. Knudsen (kknu@berkeley.edu || Kristianbknudsen@gmail.com) - + Inputs ----------- w = angular frequency num_RC = number of -(RC)- circuits - + Outputs ----------- [0] = parameters for LMfit [1] = R_names [2] = number of R in each fit - ''' - num_RC = np.arange(1,num_RC+1,1) + """ + num_RC = np.arange(1, num_RC + 1, 1) R_name = [] R_initial = [] for j in range(len(num_RC)): - R_name.append('R'+str(num_RC[j])) - R_initial.append(1) #initial guess for Resistances + R_name.append("R" + str(num_RC[j])) + R_initial.append(1) # initial guess for Resistances params = Parameters() for j in range(len(num_RC)): params.add(R_name[j], value=R_initial[j]) - params.add('Rs', value=re[re_start], min=-10**5, max=10**5) + params.add("Rs", value=re[re_start], min=-(10 ** 5), max=10 ** 5) return params, R_name, num_RC + def KK_timeconst(w, num_RC): - ''' + """ This function determines the initial guesses for time constants for the Linear KK test - + Ref.: - Schōnleber, M. et al. Electrochimica Acta 131 (2014) 20-27 - + Kristian B. Knudsen (kknu@berkeley.edu || Kristianbknudsen@gmail.com) - ''' - num_RC = np.arange(1,num_RC+1,1) + """ + num_RC = np.arange(1, num_RC + 1, 1) - t_max = 1/min(w) - t_min = 1/max(w) + t_max = 1 / min(w) + t_min = 1 / max(w) t_name = [] t_initial = [] for j in range(len(num_RC)): - t_name.append('t'+str(num_RC[j])) - t_initial.append(10**((np.log10(t_min)) + (j-1)/(len(num_RC)-1) * np.log10(t_max/t_min)) ) #initial guess parameter parameter tau for each -RC- circuit + t_name.append("t" + str(num_RC[j])) + t_initial.append( + 10 + ** ( + (np.log10(t_min)) + + (j - 1) / (len(num_RC) - 1) * np.log10(t_max / t_min) + ) + ) # initial guess parameter parameter tau for each -RC- circuit return t_initial -#from scipy.optimize import curve_fit +# from scipy.optimize import curve_fit + def KK_errorfunc_2(w, re, im, num_RC, t_values): - ''' + """ test - ''' + """ if num_RC == 51: - re_fit = curve_fit(lambda w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51: KK_RC51_fit(w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, t_values), w, re)[0] -# im_fit = curve_fit(lambda w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51: KK_RC51_fit(w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, t_values)[1], w, im)[0] + re_fit = curve_fit( + lambda w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51: KK_RC51_fit( + w, + Rs, + R1, + R2, + R3, + R4, + R5, + R6, + R7, + R8, + R9, + R10, + R11, + R12, + R13, + R14, + R15, + R16, + R17, + R18, + R19, + R20, + R21, + R22, + R23, + R24, + R25, + R26, + R27, + R28, + R29, + R30, + R31, + R32, + R33, + R34, + R35, + R36, + R37, + R38, + R39, + R40, + R41, + R42, + R43, + R44, + R45, + R46, + R47, + R48, + R49, + R50, + R51, + t_values, + ), + w, + re, + )[0] + # im_fit = curve_fit(lambda w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51: KK_RC51_fit(w, Rs, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, t_values)[1], w, im)[0] else: - print('error in this crap') - return re_fit#, im_fit + print("error in this crap") + return re_fit # , im_fit def KK_errorfunc(params, w, re, im, num_RC, weight_func, t_values): - ''' - Sum of squares error function for linear least-squares fitting for the Kramers-Kronig Relations. + """ + Sum of squares error function for linear least-squares fitting for the Kramers-Kronig Relations. The fitting function will use this function to iterate over until the return the sum of errors is minimized - + The data should be minimized using the weight_func = 'Boukamp' - - Ref.: Boukamp, B.A. J. Electrochem. Soc., 142, 6, 1885-1894 - + + Ref.: Boukamp, B.A. J. Electrochem. Soc., 142, 6, 1885-1894 + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) Inputs @@ -4717,13 +11750,13 @@ def KK_errorfunc(params, w, re, im, num_RC, weight_func, t_values): - im = imaginary impedance - num_RC = number of RC-circuits - t_values = time constants - + weight_func = Weight function, Three options: - modulus - unity - proportional - Boukamp - ''' + """ if num_RC == 2: re_fit = KK_RC2_fit(params, w, t_values).real im_fit = -KK_RC2_fit(params, w, t_values).imag @@ -4962,23 +11995,28 @@ def KK_errorfunc(params, w, re, im, num_RC, weight_func, t_values): re_fit = KK_RC80_fit(params, w, t_values).real im_fit = -KK_RC80_fit(params, w, t_values).imag else: - print('In KK_errorfunc() - Define num_RC') - error = [(re-re_fit)**2, (im-im_fit)**2] #sum of squares - - if weight_func == 'modulus': - weight = [1/((re_fit**2 + im_fit**2)**(1/2)), 1/((re_fit**2 + im_fit**2)**(1/2))] - elif weight_func == 'proportional': - weight = [1/(re_fit**2), 1/(im_fit**2)] - elif weight_func == 'unity': + print("In KK_errorfunc() - Define num_RC") + error = [(re - re_fit) ** 2, (im - im_fit) ** 2] # sum of squares + + if weight_func == "modulus": + weight = [ + 1 / ((re_fit ** 2 + im_fit ** 2) ** (1 / 2)), + 1 / ((re_fit ** 2 + im_fit ** 2) ** (1 / 2)), + ] + elif weight_func == "proportional": + weight = [1 / (re_fit ** 2), 1 / (im_fit ** 2)] + elif weight_func == "unity": unity_1s = [] for k in range(len(re)): - unity_1s.append(1) #makes an array of [1]'s, so that the weighing is == 1 * sum of squares. + unity_1s.append( + 1 + ) # makes an array of [1]'s, so that the weighing is == 1 * sum of squares. weight = [unity_1s, unity_1s] - elif weight_func == 'Boukamp': - weight = [1/(re**2), 1/(im**2)] - elif weight_func == 'ignore': - print('weight ignored') - S = np.array(weight) * error #weighted sum of squares + elif weight_func == "Boukamp": + weight = [1 / (re ** 2), 1 / (im ** 2)] + elif weight_func == "ignore": + print("weight ignored") + S = np.array(weight) * error # weighted sum of squares return S @@ -4986,28 +12024,30 @@ def KK_errorfunc(params, w, re, im, num_RC, weight_func, t_values): ## # def residual_real(re, fit_re, fit_im): - ''' + """ Relative Residuals as based on Boukamp's definition Ref.: - - Boukamp, B.A. J. Electrochem. SoC., 142, 6, 1885-1894 - + - Boukamp, B.A. J. Electrochem. SoC., 142, 6, 1885-1894 + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - modulus_fit = (fit_re**2 + fit_im**2)**(1/2) + """ + modulus_fit = (fit_re ** 2 + fit_im ** 2) ** (1 / 2) return (re - fit_re) / modulus_fit + def residual_imag(im, fit_re, fit_im): - ''' + """ Relative Residuals as based on Boukamp's definition Ref.: - - Boukamp, B.A. J. Electrochem. SoC., 142, 6, 1885-1894 - + - Boukamp, B.A. J. Electrochem. SoC., 142, 6, 1885-1894 + Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) - ''' - modulus_fit = (fit_re**2 + fit_im**2)**(1/2) + """ + modulus_fit = (fit_re ** 2 + fit_im ** 2) ** (1 / 2) return (im - fit_im) / modulus_fit -#print() -#print('---> Linear Kramers-Kronig Script Loaded (v. 0.0.9 - 11/11/18)') \ No newline at end of file + +# print() +# print('---> Linear Kramers-Kronig Script Loaded (v. 0.0.9 - 11/11/18)') diff --git a/README.md b/README.md index 579e83b..674b60e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@

- +

+This is a fork of the currently not maintained original [repository](https://github.com/kbknudsen/PyEIS). + This repository contains PyEIS, A Python-based Electrochemical Impedance Spectroscopy analyzer and simulator. The software is designed to perform impedance simulations and analyze experimental data through the application of circuit elements. Physical processes in electrochemical systems can be represented by analog circuits containing capacitors (C), resistors (R), inductors (I), and some distributed elements such as constant-phase- (Q) and Warburg elements (W). These features make it possible to understand kinetics, double-layers, and mass-transport for a large range of electrochemical applications. PyEIS has nine main features: @@ -15,11 +17,11 @@ PyEIS has nine main features: - Open-source platform that makes it feasible to include any new equivalent circuit - Tutorials for simulating impedance, importing experimental data, and fitting experimental data +## Software and Installation +The PyEIS on PyPI is broken and currently not maintained. Instead use this installation: -Following the license agreement, please use the following citation: [![DOI](https://zenodo.org/badge/159585045.svg)](https://zenodo.org/badge/latestdoi/159585045) - - -Author: Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) + git clone https://github.com/n-bock/PyEIS.git + pip3 install -r requirements.txt ## How to use PyEIS PyEIS works in a python 3 environment. It was built, tested, and automated in Jupyter lab and Spyder. To use PyEIS, an independent interface is not available as impedance fitting and post analysis of fitted parameters would become a two-step process. Instead PyEIS works directly in a Python interface and fitted parameters are automatically output in variables directly accessible to plot or analyze vs. potential, current, state-of-charge, cycle number, time, etc. allowing for fast analysis. @@ -27,41 +29,24 @@ PyEIS works in a python 3 environment. It was built, tested, and automated in Ju The following command overview and two notebooks are tutorials that in a step-by-step manner introduce the functionality of PyEIS: -- [PyEIS command overview](https://github.com/kbknudsen/PyEIS/blob/master/Tutorials/PyEIS_command_overview.pdf) -- [Simulations with PyEIS](https://github.com/kbknudsen/PyEIS/blob/master/Tutorials/PyEIS_simulation_tutorial.ipynb) -- [Experimental Data Extraction and Fitting with PyEIS](https://github.com/kbknudsen/PyEIS/blob/master/Tutorials/PyEIS_experimental-data_tutorial.ipynb) +- [PyEIS command overview](Tutorials/PyEIS_command_overview.pdf) +- [Simulations with PyEIS](Tutorials/PyEIS_simulation_tutorial.ipynb) +- [Experimental Data Extraction and Fitting with PyEIS](Tutorials/PyEIS_experimental-data_tutorial.ipynb) -The [PyEIS command overview](https://github.com/kbknudsen/PyEIS/blob/master/Tutorials/PyEIS_command_overview.pdf) gives a brief overview of the main functionalities and their dependents. The [Simulations with PyEIS](https://github.com/kbknudsen/PyEIS/blob/master/Tutorials/PyEIS_simulation_tutorial.ipynb) notebook covers simulating and plotting impedance spectra’s with different built-in equivalent circuits, fitting generated data with equivalent circuits, and extracting fitted parameters. The [Experimental Data Extraction and Fitting with PyEIS](https://github.com/kbknudsen/PyEIS/blob/master/Tutorials/PyEIS_experimental-data_tutorial.ipynb) notebook covers how to import experimental data, perform linear Kramers-Kronig analysis of the experimental data to assess data quality, how to mask data, fitting and plotting experimental data using equivalent circuits, assessing quality of fit using relative residuals, and extracting fitted parameters such as resistors and capacitors for further post-analysis. +The [PyEIS command overview](Tutorials/PyEIS_command_overview.pdf) gives a brief overview of the main functionalities and their dependents. The [Simulations with PyEIS](Tutorials/PyEIS_simulation_tutorial.ipynb) notebook covers simulating and plotting impedance spectra’s with different built-in equivalent circuits, fitting generated data with equivalent circuits, and extracting fitted parameters. The [Experimental Data Extraction and Fitting with PyEIS](Tutorials/PyEIS_experimental-data_tutorial.ipynb) notebook covers how to import experimental data, perform linear Kramers-Kronig analysis of the experimental data to assess data quality, how to mask data, fitting and plotting experimental data using equivalent circuits, assessing quality of fit using relative residuals, and extracting fitted parameters such as resistors and capacitors for further post-analysis. The built-in equivalent circuits are illustrated in the following figure. Here Boukamp's simple notation of circuits [5] is used in the "trivial term", while "Simulation function" describes the function that needs to be called to perform simulations, and "Fit string" describes a circuit string that needs be called in the fitting function.

- +

-## Software and Installation -PyEIS is available on PyPI and can be install using the following command - -> - pip install PyEIS==1.0.10 -### Dependencies -The following libraries are required by PyEIS - -- numpy >= 1.13.3 -- scipy >= 1.0.1 -- pandas >= 0.22.0 -- mpmath >= 1.1.0 -- lmfit >= 0.9.7 -- matplotlib >= 2.2.2 -- seaborn >= 0.8.1 - - -### [Release history](https://github.com/kbknudsen/PyEIS/blob/master/Changes.txt) +## Acknowledgements +Following the license agreement, please use the following citation: [![DOI](https://zenodo.org/badge/159585045.svg)](https://zenodo.org/badge/latestdoi/159585045) -## License -All files in this repository including code, readme, logos, and figures are released under the Apache 2.0 License. Learn more at the [Open Source Initiative](https://opensource.org/licenses/Apache-2.0). +Author: Kristian B. Knudsen (kknu@berkeley.edu || kristianbknudsen@gmail.com) -## Acknowledgements PyEIS is the accumulation of Kristian's work studying kinetics, double-layer and capacitive effects, and mass transport limitations in electrochemical cells with Electrochemical Impedance Spectroscopy during his PhD at The Technical University of Denmark, Department of Energy under the supervision of Ass. Prof. Johan Hjelm. He currently maintains a Post Doctoral position at the University of California, Berkeley at the Department of Chemical Engineering with Ass. Prof. Bryan D. McCloskey. Funding is acknowledged from NASA ARMD Convergent Aeronautics Solutions (CAS) Project (Cooperative Agreement NNX16AR82A). @@ -83,4 +68,4 @@ Funding is acknowledged from NASA ARMD Convergent Aeronautics Solutions (CAS) Pr [7] McKinney W., Proceedings of the 9th Python in Science Conference, 51-56 (2010) "Data Structures for Statistical Computing in Python" -[8] Hunter, J.D. Computing in Science & Engineering, 9, 90-95 (2007) "Matplotlib: A 2D Graphics Environment", DOI:10.1109/MCSE.2007.55 \ No newline at end of file +[8] Hunter, J.D. Computing in Science & Engineering, 9, 90-95 (2007) "Matplotlib: A 2D Graphics Environment", DOI:10.1109/MCSE.2007.55 diff --git a/Tutorials/data/ex3.txt b/Tutorials/data/ex3.txt new file mode 100755 index 0000000..bf4bd7f --- /dev/null +++ b/Tutorials/data/ex3.txt @@ -0,0 +1,21 @@ +Frequency Z_E Phase_E Z_re Z_img +9.99999974737875E-5 100583.6953125 -0.279304325580597 27.0720300383251 7.764292820412 +2.64000002061948E-4 94564.09375 -0.30045759677887 25.2917649727993 7.83634239799212 +6.94999995175749E-4 74765.84375 -0.277011215686798 20.1363550823005 5.72519214566868 +0.00182999996468425 60787.3515625 -0.291797459125519 16.3009754118168 4.89634619343949 +0.00482999999076128 50841.2578125 -0.292887330055237 13.6293204344493 4.11005724755008 +0.012699999846518 41034.671875 -0.373376429080963 10.6980794680164 4.19100089402257 +0.0335999988019466 32260.626953125 -0.488816767930985 7.97511565518254 4.24171869846458 +0.0886000022292137 23141.171875 -0.673698782920837 5.06387704288688 4.04245395981071 +0.233999997377396 14394.5966796875 -0.830590903759003 2.71832007079357 2.97582963502232 +0.61599999666214 8027.01171875 -0.968166828155518 1.27394300153653 1.85165059664597 +1.62000000476837 4135.037109375 -1.06667029857636 0.559271484191949 1.01377527470784 +4.28000020980835 2047.56225585938 -1.12656533718109 0.246390984067987 0.517672058733144 +11.3000001907349 1010.5595703125 -1.14149475097656 0.117776716105174 0.257280251327722 +29.7999992370605 493.506958007813 -1.1841938495636 0.0521006506280274 0.127983487310445 +78.5544738769531 229.480880737305 -1.19812071323395 0.0233956747070571 0.0598439806122616 +207.120727539063 104.836708068848 -1.12022435665131 0.012783215532553 0.0264246675054082 +546.105041503906 52.2368049621582 -0.889707863330841 0.00920929245798327 0.0113629988017006 +1439.88830566406 33.1943054199219 -0.550724923610687 0.00792018481248082 0.00486380987101006 +3796.48291015625 27.5287494659424 -0.273702025413513 0.00742113193798794 0.0020834666438922 +10010 25.8860626220703 -0.116779141128063 0.00719873118873418 8.44504077744677E-4 diff --git a/bin/.ipynb_checkpoints/PyEIS_script-checkpoint.py b/bin/.ipynb_checkpoints/PyEIS_script-checkpoint.py deleted file mode 100644 index 4219ac5..0000000 --- a/bin/.ipynb_checkpoints/PyEIS_script-checkpoint.py +++ /dev/null @@ -1,8 +0,0 @@ -""" - -""" - -from PyEIS import PyEIS - -if __name__ == "__name__": - main.main() \ No newline at end of file diff --git a/bin/.ipynb_checkpoints/__init__-checkpoint.py b/bin/.ipynb_checkpoints/__init__-checkpoint.py deleted file mode 100644 index e69de29..0000000 diff --git a/bin/PyEIS_script.py b/bin/PyEIS_script.py deleted file mode 100644 index 4219ac5..0000000 --- a/bin/PyEIS_script.py +++ /dev/null @@ -1,8 +0,0 @@ -""" - -""" - -from PyEIS import PyEIS - -if __name__ == "__name__": - main.main() \ No newline at end of file diff --git a/pyEIS_images/C_RC_C_circuit.png b/docs/C_RC_C_circuit.png similarity index 100% rename from pyEIS_images/C_RC_C_circuit.png rename to docs/C_RC_C_circuit.png diff --git a/pyEIS_images/Equivalent_Circuits_avaliable.png b/docs/Equivalent_Circuits_avaliable.png similarity index 100% rename from pyEIS_images/Equivalent_Circuits_avaliable.png rename to docs/Equivalent_Circuits_avaliable.png diff --git a/pyEIS_images/PyEIS_logo.png b/docs/PyEIS_logo.png similarity index 100% rename from pyEIS_images/PyEIS_logo.png rename to docs/PyEIS_logo.png diff --git a/pyEIS_images/Q_RQ_Q_circuit.png b/docs/Q_RQ_Q_circuit.png similarity index 100% rename from pyEIS_images/Q_RQ_Q_circuit.png rename to docs/Q_RQ_Q_circuit.png diff --git a/pyEIS_images/RCRCZD_circuit.png b/docs/RCRCZD_circuit.png similarity index 100% rename from pyEIS_images/RCRCZD_circuit.png rename to docs/RCRCZD_circuit.png diff --git a/pyEIS_images/RC_circuit.png b/docs/RC_circuit.png similarity index 100% rename from pyEIS_images/RC_circuit.png rename to docs/RC_circuit.png diff --git a/pyEIS_images/RQ_circuit.png b/docs/RQ_circuit.png similarity index 100% rename from pyEIS_images/RQ_circuit.png rename to docs/RQ_circuit.png diff --git a/pyEIS_images/Randles_circuit.png b/docs/Randles_circuit.png similarity index 100% rename from pyEIS_images/Randles_circuit.png rename to docs/Randles_circuit.png diff --git a/pyEIS_images/RsRQRQ_circuit.png b/docs/RsRQRQ_circuit.png similarity index 100% rename from pyEIS_images/RsRQRQ_circuit.png rename to docs/RsRQRQ_circuit.png diff --git a/pyEIS_images/RsRQTL1Dsolid.png b/docs/RsRQTL1Dsolid.png similarity index 100% rename from pyEIS_images/RsRQTL1Dsolid.png rename to docs/RsRQTL1Dsolid.png diff --git a/pyEIS_images/RsRQTLQ_circuit.png b/docs/RsRQTLQ_circuit.png similarity index 100% rename from pyEIS_images/RsRQTLQ_circuit.png rename to docs/RsRQTLQ_circuit.png diff --git a/pyEIS_images/RsRQTL_circuit.png b/docs/RsRQTL_circuit.png similarity index 100% rename from pyEIS_images/RsRQTL_circuit.png rename to docs/RsRQTL_circuit.png diff --git a/pyEIS_images/RsRQTLsQ_circuit.png b/docs/RsRQTLsQ_circuit.png similarity index 100% rename from pyEIS_images/RsRQTLsQ_circuit.png rename to docs/RsRQTLsQ_circuit.png diff --git a/pyEIS_images/RsRQTLs_circuit.png b/docs/RsRQTLs_circuit.png similarity index 100% rename from pyEIS_images/RsRQTLs_circuit.png rename to docs/RsRQTLs_circuit.png diff --git a/pyEIS_images/RsRQ_circuit.png b/docs/RsRQ_circuit.png similarity index 100% rename from pyEIS_images/RsRQ_circuit.png rename to docs/RsRQ_circuit.png diff --git a/pyEIS_images/RsTL1Dsolid.png b/docs/RsTL1Dsolid.png similarity index 100% rename from pyEIS_images/RsTL1Dsolid.png rename to docs/RsTL1Dsolid.png diff --git a/pyEIS_images/RsTLQ_circuit.png b/docs/RsTLQ_circuit.png similarity index 100% rename from pyEIS_images/RsTLQ_circuit.png rename to docs/RsTLQ_circuit.png diff --git a/pyEIS_images/RsTL_circuit.png b/docs/RsTL_circuit.png similarity index 100% rename from pyEIS_images/RsTL_circuit.png rename to docs/RsTL_circuit.png diff --git a/pyEIS_images/RsTLsQ_circuit.png b/docs/RsTLsQ_circuit.png similarity index 100% rename from pyEIS_images/RsTLsQ_circuit.png rename to docs/RsTLsQ_circuit.png diff --git a/pyEIS_images/RsTLs_circuit.png b/docs/RsTLs_circuit.png similarity index 100% rename from pyEIS_images/RsTLs_circuit.png rename to docs/RsTLs_circuit.png diff --git a/pyEIS_images/Thumbs.db b/docs/Thumbs.db similarity index 100% rename from pyEIS_images/Thumbs.db rename to docs/Thumbs.db diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9694746 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +numpy >= 1.13.3 +scipy >= 1.0.1 +pandas >= 0.22.0 +mpmath >= 1.1.0 +lmfit >= 0.9.7 +matplotlib >= 2.2.2 +seaborn >= 0.8.1