import abtem
import ase
import matplotlib.pyplot as plt
from ase.io import write

PACBED quickstart#

This notebook demonstrates a basic simulation of a position averaged convergent beam electron diffraction (PACBED) simulation of SrTiO\(_3\).

Configuration#

We start by (optionally) setting our configuration. See documentation for details.

abtem.config.set(
    {
        "device": "cpu",
        "fft": "fftw",
        "diagnostics.task_progress": False,
        "diagnostics.progress_bar": False,
    }
);

Atomic model#

We import a model of SrTiO3. See our walkthrough or our tutorial on atomic models.

atoms = ase.io.read("data/SrTiO3.cif")

abtem.show_atoms(atoms);
../../../_images/c0d4006a21e2d15454335477021f68595b93ba3642472030bcf142901e8211d3.png

Crystal potential#

potential_unit = abtem.Potential(atoms, slice_thickness=0.5, sampling=0.05)
repetitions_xy = 5
repetitions_z = 10

potential = abtem.CrystalPotential(
    potential_unit, repetitions=(repetitions_xy, repetitions_xy, repetitions_z)
)

Probe#

probe = abtem.Probe(energy=100e3, semiangle_cutoff=30)

probe.grid.match(potential)

Scan#

scan = abtem.GridScan(potential=potential, start=(0, 0), end=(1 / repetitions_xy, 1 / repetitions_xy), fractional=True)
visualization = potential.show()

scan.add_to_plot(visualization)
../../../_images/4021f34e52ab05972ad6892ad3193648f5aee3316e971e43a3155a3f7dcab267.png

Detect#

detector = abtem.PixelatedDetector()
measurement = probe.scan(scan=scan, potential=potential, detectors=detector)
measurement.compute();

Average over scan positions#

measurement.shape
(13, 13, 185, 185)
measurement.axes_metadata
type                 label     coordinates
-------------------  --------  --------------------
ScanAxis             x [Å]     0.00 0.30 ... 3.64
ScanAxis             y [Å]     0.00 0.30 ... 3.64
ReciprocalSpaceAxis  kx [1/Å]  -4.66 -4.61 ... 4.66
ReciprocalSpaceAxis  ky [1/Å]  -4.66 -4.61 ... 4.66
pacbed = measurement.mean(axis=(0,1))
pacbed.crop(50).show(power=0.5);
../../../_images/ab49f0f583518145da9005054a123be987cf99a57755061bb8c31dd6218858db.png
# this cell produces a thumbnail for the online documentation

visualization = pacbed.crop(50).show(power=0.5)
visualization.axis_off()
plt.savefig(
    "../thumbnails/pacbed_quickstart.png", bbox_inches="tight", pad_inches=0
)
../../../_images/a9cb24f047a9a2589581002fbbadc0be6ad5fe2d0fb5cfa6cd7eb905e6e80f4f.png