## Brillouin.jl

Brillouin zones and paths for dispersion calculations in Julia.
Author thchr
Popularity
2 Stars
Updated Last
1 Year Ago
Started In
February 2021

# Brillouin

Brillouin.jl is a Julia package that provides tools to generate and visualize k-space paths and Brillouin zones that arise for crystalline eigenvalue problems. The functionalities are inspired by the Python SeeK-path package.

## Examples

Generate the Brillouin zone of a crystal in space group 147 (Bravais type hP; using Crystalline.jl to easily generate a standard basis):

```julia> using Brillouin, Crystalline
julia> Rs   = directbasis(147)
julia> Gs   = reciprocalbasis(Rs)
julia> cell = wignerseitz(Gs)
Cell{3} (8 faces, 12 vertices):
verts: [-0.0, -0.577, -0.866]
[0.0, 0.577, -0.866]
[0.5, 0.289, -0.866]
[0.5, -0.289, -0.866]
[-0.0, -0.577, 0.866]
[0.0, 0.577, 0.866]
[-0.5, 0.289, 0.866]
[-0.5, -0.289, 0.866]
[-0.5, -0.289, -0.866]
[-0.5, 0.289, -0.866]
[0.5, -0.289, 0.866]
[0.5, 0.289, 0.866]
faces: [4, 3, 12, 11]
[2, 6, 12, 3]
[11, 12, 6, 7, 8, 5]
[10, 9, 8, 7]
[7, 6, 2, 10]
[2, 3, 4, 1, 9, 10]
[5, 8, 9, 1]
[4, 11, 5, 1]
basis: [6.283, 3.628, 0.0]
[0.0, 7.255, 0.0]
[0.0, 0.0, 5.027]```

The resulting Brillouin zone can be plotted using e.g. PlotlyJS.jl (or 3D-capable backends of AbstractPlotting.jl such as GLMakie.jl):

```julia> using PlotlyJS
julia> plot(cell)```

Examples of interactive visualizations are included in the documentation.

Irreducible k-paths are returned by `irrfbz_path`, and can similarly be visualized (see examples in documentation):

```julia> kp = irrfbz_path(147, Rs)
KPath{3} (7 points, 3 paths, 13 points in paths):
points: :M => [0.5, 0.0, 0.0]
:A => [0.0, 0.0, 0.5]
:H => [0.3333333333333333, 0.3333333333333333, 0.5]
:K => [0.3333333333333333, 0.3333333333333333, 0.0]
:Γ => [0.0, 0.0, 0.0]
:L => [0.5, 0.0, 0.5]
:H₂ => [0.3333333333333333, 0.3333333333333333, -0.5]
paths: [:Γ, :M, :K, :Γ, :A, :L, :H, :A]
[:L, :M]
[:H, :K, :H₂]```

The resulting object can be interpolated, using either `interpolate(kp, N)` or `splice(kp, N)`, which produces an `KPathInterpolant` iterable whose elements interpolate the connected paths (and enable convenient plotting of band structure diagrams).

### Used By Packages

No packages found.