TBit- Utilities for condensed matter physics tight binding calculations.

Safe HaskellNone




meshBZ :: Parameterized (Grid Wavevector) Source

Returns a mesh of points within the n-parallelepiped subtended by the reciprocal lattice vectors. Covers the entire brillouin zone, though not in the shape you might expect, and not in a way that's pretty for graphing.

meshBigBZ :: Parameterized (Grid Wavevector) Source

As meshBZ, but with parallelepipeds extending in each quadrant, octant... n-ant of the reciprocal lattice basis. Should cover more than the entire first Brillouin zone.

bzIntegral :: (Wavevector -> Parameterized Double) -> Parameterized Double Source

Integrates using a simple grid-sum.

bzIntegral' :: (Wavevector -> Parameterized Double) -> Parameterized (Double, Double) Source

As bzIntegral, but also gives the absolute error as the second value in the returned tuple.

bzIntegral'' :: (Wavevector -> Parameterized Double) -> Parameterized Double Source

Given a function defined on the Brillouin zone, evaluate it everywhere by doing nested single integrations and using Takahashi and Mori's Tanh-Sinh quadrature method. Should be robust against singularities and the like, and is properly set up for massive parallelization (via EdwardKmett's integration library, certainly not mine). Watch Dirac run this thing. Only implemented in 2D.

kPath :: [Wavevector] -> Parameterized [Wavevector] Source

Given a list of points in k-space, return a list of points that interpolates affine paths between them, in turn; a typical usage case might be

kPath [gammaPoint, kPoint, mPoint, gammaPoint]

which is used in the bandPlot function. The spacing between points on the interpolated path is determined by the meshingData parameter.