Brillouin zones¶
Brillouin zone overlay¶
Python¶
Plot the constant-energy map. Then construct the real-space lattice vectors and pass
them to erlab.plotting.plot_bz():
import matplotlib.pyplot as plt
import erlab
import erlab.plotting as eplt
lattice_constant = 6.97
avec = erlab.lattice.abc2avec(
lattice_constant,
lattice_constant,
1.0,
90.0,
90.0,
120.0,
)
fig, ax = plt.subplots(figsize=(3.4, 3.0), layout="compressed")
eplt.plot_array(
constant_energy_map,
ax=ax,
cmap="Greys",
gamma=0.5,
aspect="equal",
)
eplt.plot_bz(
avec,
ax=ax,
rotate=30.0,
edgecolor="tab:purple",
linestyle="--",
linewidth=1.2,
)
Figure Composer¶
The current BZ Overlay step draws an in-plane section. It does not draw the single first-zone polygon in this guide.
Planned Figure Composer support
Figure Composer does not yet have an editable step for this plotting operation. Structured support is planned. Until then, add a Python step to the recipe and use the code in this section.
Set Layout to a \(1 \times 1\) grid.
Add
constant_energy_mapin Sources.Add an Image Plot step and set Aspect to
equal.Add a Python step after the image.
Review this code, then enter it in Code:
import erlab
lattice_constant = 6.97
avec = erlab.lattice.abc2avec(
lattice_constant,
lattice_constant,
1.0,
90.0,
90.0,
120.0,
)
eplt.plot_bz(
avec,
ax=ax,
rotate=30.0,
fill=False,
)
Replace the lattice parameters with those of the measured material. See
erlab.plotting.plot_bz() for reciprocal input, rotation, and offset arguments.
In-plane sections¶
Python¶
Construct the conventional real-space lattice vectors. Convert the centered conventional cell to primitive lattice vectors. Then calculate the reciprocal-lattice vectors:
import matplotlib.pyplot as plt
import erlab
import erlab.plotting as eplt
avec = erlab.lattice.abc2avec(6.0, 10.0, 25.0, 90.0, 90.0, 90.0)
avec_primitive = erlab.lattice.to_primitive(avec, centering_type="F")
bvec = erlab.lattice.to_reciprocal(avec_primitive)
fig, ax = plt.subplots(figsize=(3.0, 3.0), layout="compressed")
eplt.plot_in_plane_bz(
bvec,
kz=0.2,
angle=60.0,
bounds=(-1.5, 1.5, -1.5, 1.5),
ax=ax,
vertices=True,
color="tab:purple",
linewidth=1.5,
)
ax.set(
xlabel=r"$k_x$ (Å$^{-1}$)",
ylabel=r"$k_y$ (Å$^{-1}$)",
aspect="equal",
)
Set kz to the out-of-plane momentum of the measured section. Use angle for the
rotation about the \(k_z\) axis. Set bounds to the required in-plane momentum window.
erlab.plotting.plot_in_plane_bz() obtains the boundary segments and vertices from
erlab.lattice.get_bz_slice(). Use get_bz_slice() directly
for an arbitrary plane. Supply a point on the plane, its normal vector, and the bounds
in the local plane coordinates.
Figure Composer¶
In ImageTool Manager, choose .
Add a BZ Overlay step.
Under Slice, set Mode to
In-plane. Enter the kz, Angle, and Bounds for the required section.Under Lattice, enter the lattice parameters and Centering for the sample.
Under Style, enable Vertices if corner markers are useful.
Add Axes Method steps for
set_xlabelandset_ylabel. Enter the in-plane momentum labels and units.Add an Axes Method step for
set_aspect, and set Aspect toequal.
The kz control accepts both multiples of \(\pi/c\) and Å\(^{-1}\). See
erlab.plotting.plot_in_plane_bz() for the corresponding Python arguments.
Out-of-plane sections¶
Python¶
Construct the real-space lattice vectors and apply the crystal centering. Convert the primitive vectors to reciprocal lattice vectors before you calculate the section:
import matplotlib.pyplot as plt
import erlab
import erlab.plotting as eplt
avec = erlab.lattice.abc2avec(6.0, 10.0, 25.0, 90.0, 90.0, 90.0)
avec_primitive = erlab.lattice.to_primitive(avec, centering_type="F")
bvec = erlab.lattice.to_reciprocal(avec_primitive)
fig, ax = plt.subplots(figsize=(3.0, 3.0), layout="compressed")
eplt.plot_out_of_plane_bz(
bvec,
k_parallel=0.0,
angle=90.0,
bounds=(-1.5, 1.5, -1.5, 1.5),
ax=ax,
vertices=True,
color="tab:purple",
linewidth=1.5,
)
ax.set(
xlabel=r"$k_x$ (Å$^{-1}$)",
ylabel=r"$k_z$ (Å$^{-1}$)",
aspect="equal",
)
Figure Composer¶
In ImageTool Manager, choose .
Set Layout to a \(1 \times 1\) grid.
Add a BZ Overlay step.
Under Slice, set Mode to
Out-of-plane. Enter the Angle, fixed k parallel, and Bounds for the required section.Under Lattice, enter the lattice parameters and Centering for the sample.
Under Points, enable Vertices if corner markers are useful.
Add an Axes Method step for
set_xlabel, and set Label to \(k_x\) (Å\(^{-1}\)).Add an Axes Method step for
set_ylabel, and set Label to \(k_z\) (Å\(^{-1}\)).Add an Axes Method step for
set_aspect, and set Aspect toequal.
To compare the section with measured intensity, plot the corresponding momentum-space intensity on the same axes before the boundary. Confirm the fixed momentum, azimuthal direction, and coordinate orientation first.
See erlab.plotting.plot_out_of_plane_bz() for the supported slice parameters.