gftool.lattice.bcc.dos_mp

gftool.lattice.bcc.dos_mp(eps, half_bandwidth=1)[source]

Multi-precision DOS of non-interacting 3D body-centered lattice.

Has a van Hove singularity (logarithmic divergence) at eps = 0.

This function is particularity suited to calculate integrals of the form \(∫dϵ DOS(ϵ)f(ϵ)\). If you have problems with the convergence, consider using \(∫dϵ DOS(ϵ)[f(ϵ)-f(0)] + f(0)\) to avoid the singularity.

Parameters
epsmpmath.mpf or mpf_like

DOS is evaluated at points eps.

half_bandwidthmpmath.mpf or mpf_like

Half-bandwidth of the DOS, DOS(| eps | > half_bandwidth) = 0. The half_bandwidth corresponds to the nearest neighbor hopping t=D/8

Returns
dos_mpmpmath.mpf

The value of the DOS.

See also

gftool.lattice.bcc.dos

vectorized version suitable for array evaluations

References

morita1971

Morita, T., Horiguchi, T., 1971. Calculation of the Lattice Green’s Function for the bcc, fcc, and Rectangular Lattices. Journal of Mathematical Physics 12, 986–992. https://doi.org/10.1063/1.1665693

Examples

Calculate integrals:

>>> from mpmath import mp
>>> mp.quad(gt.lattice.bcc.dos_mp, [-1, 0, 1])
mpf('1.0')
>>> eps = np.linspace(-1.1, 1.1, num=500)
>>> dos_mp = [gt.lattice.bcc.dos_mp(ee, half_bandwidth=1) for ee in eps]
>>> dos_mp = np.array(dos_mp, dtype=np.float64)
>>> import matplotlib.pyplot as plt
>>> _ = plt.plot(eps, dos_mp)
>>> _ = plt.xlabel(r"$\epsilon/D$")
>>> _ = plt.ylabel(r"DOS * $D$")
>>> _ = plt.axvline(0, color='black', linewidth=0.8)
>>> _ = plt.ylim(bottom=0)
>>> _ = plt.xlim(left=eps.min(), right=eps.max())
>>> plt.show()

(png, pdf)

../_images/gftool-lattice-bcc-dos_mp-1.png