gftool.lattice.triangular.dos_mp
- gftool.lattice.triangular.dos_mp(eps, half_bandwidth=1)[source]
Multi-precision DOS of non-interacting 2D triangular lattice.
The DOS diverges at -4/9*half_bandwidth.
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(-4/9)] + f(-4/9)\) 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 < -2/3`half_bandwidth`) = 0, DOS(4/3`half_bandwidth` < eps) = 0. The half_bandwidth corresponds to the nearest neighbor hopping \(t=4D/9\).
- Returns:
- mpmath.mpf
The value of the DOS.
See also
gftool.lattice.triangular.dos
Vectorized version suitable for array evaluations.
References
[kogan2021]Kogan, E. and Gumbs, G. (2021) Green’s Functions and DOS for Some 2D Lattices. Graphene, 10, 1-12. https://doi.org/10.4236/graphene.2021.101001.
Examples
Calculate integrals:
>>> from mpmath import mp >>> mp.quad(gt.lattice.triangular.dos_mp, [-2/3, -4/9, 4/3]) mpf('1.0')
>>> eps = np.linspace(-2/3 - 0.1, 4/3 + 0.1, num=1000) >>> dos_mp = [gt.lattice.triangular.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.axvline(-4/9, color='black', linewidth=0.8) >>> _ = plt.axvline(0, color='black', linewidth=0.8) >>> _ = plt.plot(eps, dos_mp) >>> _ = plt.xlabel(r"$\epsilon/D$") >>> _ = plt.ylabel(r"DOS * $D$") >>> _ = plt.ylim(bottom=0) >>> _ = plt.xlim(left=eps.min(), right=eps.max()) >>> plt.show()