Welcome to the Draw Brillouin Zones program! This tool helps you visualize three-dimensional Bulk and Surface Brillouin Zones (BZ). It's straightforward to use and requires only minimal dependencies.
If you find this program helpful, please consider starring this repository!
- Draw Bulk Brillouin Zones: Visualize high-symmetry points and lines for bulk BZs.
- Draw Surface Brillouin Zones: Generate surface BZ projections along specified directions.
- Lightweight and Easy-to-Use: Compatible with Jupyter notebooks and standalone Python scripts.
- Python 3.x
- Libraries:
numpymatplotlib
- Download the provided Jupyter Notebook or Python script from this repository.
- Ensure the required libraries (
numpy,matplotlib) are installed. - Initialize the
BZclass with the bulk BZ vectors.
-
Vectors of Bulk Brillouin Zone: A 3x3 numpy array representing the bulk BZ vectors in Cartesian coordinates, with units in
$\text{Å}^{-1}$ .
Example:np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
- Method:
self.bulkBZ() - Output Attributes:
self.hs_lines_f: Edges of the bulk BZ.self.hs_points: High-symmetry points (corners) of the bulk BZ.
- Method:
self.surfaceBZ(dis, direc)- Parameters:
dis: A positive number representing the distance between the bulk BZ center and surface BZ center (used for plotting purposes).direc: Surface normal direction in fractional coordinates, expressed using bulk BZ vectors as the basis.
- Output Attributes:
self.hs_lines_pro_f: Edges of the surface BZ.self.hs_pro_points: High-symmetry points of the surface BZ.
- Parameters:
- Always call
bulkBZ()before usingsurfaceBZ().
Calculate bulk BZ:
Visualization of bulk BZ:
Calculate surface BZ along (001) direction:
Visualization of surface and bulk BZ:
