Constant width of Debye-term

In order to determine reproducible $\tau$-distributions we have to check that the single Debye-term always has the same (logspaced) curve width in the imaginary part. This allows us to determine a tau-range in which a given frequency can be significantly influenced by polarization effects.


In [40]:
from NDimInv.plot_helper import *
import dd_res
dd_res = dd_res.dd_resistivity()

m_level = 0.01
rho0 = 100

m = np.array((np.log10(m_level),))
s = np.log10(tau)
f = np.logspace(-3, 6, 200)
pars = np.hstack((np.log10(200), m))
omega = f * 2 * np.pi

fig = plt.figure(figsize=(20,6))
ax = fig.add_subplot(111)

for tau_value in (100, 1e0, 1e-2, 1e-4, 1e-6):
    tau = np.array((tau_value,))    
    re,im = dd_res.forward_re_mim(omega, pars, np.log10(tau))
    ax.semilogx(f, im)
    
    # Determine 1/e-fraction hight
    im_norm = im / np.max(np.abs(im))
    threshold = 1 / np.e
    height_index = np.argmin(np.abs(im_norm - threshold))
    height = im[height_index]
    ax.axhline(y=height)

    # building on this, find the two nearest values
    sort_indices = np.where(im >= height)
    pos_im = im[sort_indices]
    pos_f = f[sort_indices]

    min_indices = np.argsort(pos_im)
    ax.axvline(x=pos_f[min_indices[0]])
    ax.axvline(x=pos_f[min_indices[1]])

    debye_width = np.abs(np.log10(pos_f[min_indices[0]]) - np.log10(pos_f[min_indices[1]]))
    print('Debye Width', debye_width)
    
ax.set_title('Width of single-term Debye model, $\rho_0$: {0}, m\_level: {1}, '.format(rho0, m_level))
ax.set_xlabel('Frequency~(Hz)')
ax.set_ylabel(r'$Im(\rho)~(S/m)$')


('Debye Width', 0.045226130653266416)
('Debye Width', 1.4020100502512562)
('Debye Width', 1.4020100502512562)
('Debye Width', 1.4020100502512562)
('Debye Width', 1.4020100502512562)
Out[40]:
<matplotlib.text.Text at 0x7fc84192f310>

In [ ]: