This library lets you generate an arbitrary crystal structure of choice (represented by a Hamiltonian matrix). You can add dislocations to the crystal (modifying the Hamiltonian), and you can numerically solve Schrodinger's equation and visualize the resulting wavefunctions and band structure.
To generate the crystal you specify the unit cell, local Hamiltonian, and Burgers vector.
Contact andrewpareles(at)gmail(dot)com for the source.
Lines are connections between sites. Only hexagonal crystals are shown in this demo, but any unit cell and any Hamiltonian can be created and analyzed in the same exact way--square, hexagonal, cubic, diamond, fcc, bcc, hcp, etc., with any pattern of connections between sites.
left
center: Connections that wrap over the boundary are drawn transparent. This is a cylinder of graphene: imagine the transparent connections as looping around the back of the crystal (they're "deeper into the screen" or "behind" the other connections), making the crystal's topology one of a cylinder. The bottom left point can easily be removed to make it a perfect cylinder--this removal is not possible to anticipate in general, so it is left in.
right: Connections that are imaginary or complex are drawn with an arrow. The crystal drawn is the Haldane Model.
Wavefunctions are drawn with radius
left
center: One of the eigenstates or "wavefunctions" localized on the crystal's edge, robust against the dislocation (Haldane Model) (imaginary connections are now drawn in addition to the real red connections). This state appears because the crytal is finite and has no periodic boundary conditions.
right: Same as center (but with Kane Mele Model).
left/first: Band plot for a crystal (not shown) that has two periodic directions (see below for an alternate angle).
right/second: Band plot for the same crystal, but the crystal is periodic in only one direction. Note the minor differences which are hard to see at first glance (a few curves that now appear in the 1D case): these are the energies of states that live on the edge/boundary that was introduced going from fully periodic to periodic in only one direction.
below: An alternate view of the left/first band plot.
The notebook offers code for creating crystals (reading cif files, importing unit cells and creating Hamiltonians efficiently), adding dislocations (and other crystal manipulation functions like shifting and removing sites and cells), and drawing bands/wavefunctions. All these functions are built on top of Hamiltonian indexing functions CoordiOfIndex
and IndexOfCoord
that can convert between a coordinate in the crystal and an index in the Hamiltonian.
You can even index Hamiltonians and eigenvectors when sites were removed (like in a dislocation). This requires giving the functions just 1 more piece of information, called numIndsRemovedLTE
in the Guide.
This was the simplest design choice for creating a dislocation on a computer: start with a perfect crystal, manipulate the connections and remove some sites to create the dislocation, and don't worry about about drawing distances accurately afterwards since we only care about connections anyway.