Skip to content

Repository files navigation

BrillouinZones

Programs for constructing Brillouin zones in three- and two-dimensional space. It was written to create images of Brillouin zones for the course of condensed matter physics.

How to use?

  1. Install dependencies (Python 3.10+):
pip3 install -r requirements.txt
  1. Run the drawers:
# First Brillouin zone in three-dimensional space
# (prompts for a lattice: body-centered, face-centered, primitive,
# hexagonal close-packed or base-centered).
python3 "./3d Brillouin Zone/index.py"

# Non-interactive: pass the lattice number (1..5) as an argument.
python3 "./3d Brillouin Zone/index.py" 3

# First several Brillouin zones in two-dimensional space.
python3 "./2d Brillouin Zone/index.py"

Configuration via environment variables:

  • BRILLOUIN_OUTPUT — output image path (default brillouin_zone.png for 2D, brillouin_zone_3d.png for 3D);
  • BRILLOUIN_ZONES — number of zones to highlight in the 2D drawer (default 12);
  • BRILLOUIN_NO_SHOW=1 — do not open an image viewer after the 2D drawer finishes;
  • MPLBACKEND=Agg — render the 3D figure to a file instead of opening a window (headless mode).

To edit the 2D lattice type (primitive, hexagonal or parallelogram), change the crystal initialization in 2d Brillouin Zone/index.py.

Development

pip3 install -r requirements-dev.txt
pytest tests

Examples

FirstZoneForBaseCenteredLattice

FirstZoneForFaceCenteredLattice

SeveralZonesForTheSquareLattice

About

Programs for constructing Brillouin zones in three- and two-dimensional space.

Topics

Resources

Stars

33 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages