diff --git a/STEM.md b/STEM.md index 2ac84c5..ade16d4 100644 --- a/STEM.md +++ b/STEM.md @@ -10,7 +10,7 @@ numbering: (initial-conditions-of-the-electron-wave)= ### Initial Conditions of the Electron Wave -In STEM the objective lens acts on the electron beam before the beam reaches the specimen, hence the effects of the lens aberrations and aperture is incorporated in the initial conditions of the wavefunction. +In STEM the objective lens acts on the electron beam before the beam reaches the specimen, hence the effects of the lens aberrations and aperture are incorporated in the initial conditions of the wavefunction. The incident probe wavefunction is easiest to define in Fourier space @@ -32,9 +32,9 @@ where the amplitude, {math}`A(\bm{k})`, is the aperture function and the phase, \end{aligned} ``` -While the above definition is typical for most STEM experiments, the initial wavefunction can be defined using any other complex function, and other initial conditions may be required for simulating more exotic experiments such phase plate STEM. +While the above definition is typical for most STEM experiments, the initial wavefunction can be defined using any other complex function, and other initial conditions may be required for simulating more exotic experiments such as phase plate STEM. -The probe is transferred to the specimen using an inverse Fourier transform and, in the same step, we can shift the by the Fourier shift theorem +The probe-forming lens focuses the electron wave in the aperture plane to a probe at the specimen. In the far-field (Fraunhofer) limit, a lens maps each angle in its aperture plane onto a position in its focal plane, and so the probe wavefunction is the Fourier transform of the aperture function {cite:p}`hecht_optics_2017`. We therefore compute the probe at the specimen using an inverse Fourier transform and, in the same step, we can shift the probe to the desired position using the Fourier shift theorem ```{math} :label: eq:realspace_probe @@ -42,7 +42,7 @@ The probe is transferred to the specimen using an inverse Fourier transform and, \psi_0(\bm{r}, \bm{r}_p) = \mathcal{F}_{\bm{q}}^{-1} \left[\mathrm{e^{-i\chi(\bm{k}) - 2 \pi i \bm{k}\cdot \bm{r}_p }} A(\bm{k}) \right] , ``` -where, {math}`\bm{r}_p`, is a specified probe position in relative to the atomic coordinates. +where {math}`\bm{r}_p` is a specified probe position relative to the atomic coordinates. Because STEM simulations can require long computation times, we often try to reduce the size of the simulation cell as much as possible. However, we must be careful to use a simulation cell large enough to hold the STEM probe. In particular, we need to consider the size of the probe throughout the full simulation cell volume. For an empty cell, the probe will have a maximum size at either the entrance or exit surface, depending on the probe defocus. @@ -80,17 +80,19 @@ where If {math}`D(\bm{k})` is a small point on the axis then the measurement is a bright field image. If {math}`D(\bm{k})` is a large annulus covering the high angle scattering then the measurement is an annular dark field image. -In [](#fig_stem_processing), we present a visualization for exploring how the integration region of flexible circular and annular detectors influence the image contrast. More discussion of flexible detectors in STEM experiments is in [4D-STEM](#id-4d-stem). For BF imaging, we often use a collection angle just larger than the convergence angle of the incident probe. In annular dark field (ADF) imaging the contrast is approximately $Z^\alpha$, where Z is the atomic number and $\alpha$ is anywhere between 1.3 and 2 depending on the detector geometry {cite:p}`treacy2011z`. In a high angle annular dark field (HAADF) experiment, the contrast is even more strongly dominated by the heavy atoms. ADF imaging is a linear technqiue and relatively robust to sample thickness, but as can be observed in [](#fig_stem_processing) is not well suited for visualizing light elements. Annular bright field imaging (ABF) uses a colleciton angle matching the outer ring of the bright field disk, and capture signals from both heavy and light elements {cite:p}`okunishi2009visualization`. +In [](#fig_stem_detectors), we present a visualization for exploring how the integration region of flexible circular and annular detectors influences the image contrast. More discussion of flexible detectors in STEM experiments is in [4D-STEM](#id-4d-stem). For BF imaging, we often use a collection angle just larger than the convergence angle of the incident probe. In annular dark field (ADF) imaging the contrast is approximately $Z^\alpha$, where Z is the atomic number and $\alpha$ is anywhere between 1.3 and 2 depending on the detector geometry {cite:p}`treacy2011z`. In a high angle annular dark field (HAADF) experiment, the contrast is even more strongly dominated by the heavy atoms. ADF imaging is a linear technique and relatively robust to sample thickness, but as can be observed in [](#fig_stem_processing) it is not well suited for visualizing light elements. Annular bright field imaging (ABF) uses a collection angle matching the outer ring of the bright field disk, and capture signals from both heavy and light elements {cite:p}`okunishi2009visualization`. -The image, {math}`g(\bm{r}_p)`, is the collection of integrated intensities at all sample positions in a (typically) rectangular region. The scan region may be chosen independently of the supercell and may cover only part of the super cell. In the case of a super cell consisting smaller periodic units, computation can be saved by choosing a scan window covering just one of the periodic units. For non-periodic cells, it is important to pad the region of interest to avoid wrap-around errors in the sample field of view. +The image, {math}`g(\bm{r}_p)`, is the collection of integrated intensities at all sample positions in a (typically) rectangular region. The scan region may be chosen independently of the supercell and may cover only part of the super cell. In the case of a super cell consisting of smaller periodic units, computation can be saved by choosing a scan window covering just one of the periodic units. For non-periodic cells, it is important to pad the region of interest to avoid wrap-around errors in the sample field of view. -We can significantly limit the computational cost, by choosing the largest possible spacing between the sample positions, or probe step size, $\Delta r_p$. +We can significantly limit the computational cost by choosing the largest possible spacing between the sample positions, or probe step size, $\Delta r_p$. +The highest spatial frequency which a STEM probe with convergence semiangle $\alpha_{cutoff}$ can transfer to an image is $2 \alpha_{cutoff} / \lambda$, and so the [Nyquist](wiki:Nyquist–Shannon_sampling_theorem) condition requires a probe step size of {cite:p}`dwyer_simulation_2010` -\begin{align*} - - \Delta r_p = 0.9 \frac{1}{4 \lambda \alpha_{cutoff}}. +```{math} +:label: eq:probe_step +\Delta r_p \leq \frac{\lambda}{4 \alpha_{cutoff}}. +``` -\end{align*} +For example, a 20 mrad probe at 200 kV requires a probe step size of 0.31 Å or smaller. In practice, we often use a slightly smaller step, such as 90% of this value. It is important to remember the difference between the wavefunction sampling and probe step, both in units of Ångströms. The probe step only refers to the spacing of the initial probe, and it is entirely independent from the grid used to sample the wavefunctions and potentials. @@ -103,12 +105,12 @@ Aluminum, iron and gold nanoparticles on a carbon film: **Left** image from a ci (stem-image-simulation)= ### Image Simulation and Post-Processing -Scanning imaging modes such as STEM works by rastering an electron probe across a sample pixel by pixel and recording the scattering signal. The computational cost of the simulation is directly proportional to the number of scan pixels, each requiring a separate multislice simulation. As mentioned above, for periodic speciments, even though the potential needs to be large enough to fit the probe, there is no need to scan over repated unit cells as tiling afterwards can yield the same result. +Scanning imaging modes such as STEM works by rastering an electron probe across a sample pixel by pixel and recording the scattering signal. The computational cost of the simulation is directly proportional to the number of scan pixels, each requiring a separate multislice simulation. As mentioned above, for periodic specimens, even though the potential needs to be large enough to fit the probe, there is no need to scan over repeated unit cells as tiling afterwards can yield the same result. -STEM simulations are computationally demanding, but it is typically not required to use as many pixels in simulations as there are in experimental images. A sparse sampling can usually be interpolated to save a lot of computational effort, and blurring, tiling and applying noise can be done after the simulation is completed. We apply some of the most common steps post-processing step in this tutorial. +STEM simulations are computationally demanding, but it is typically not required to use as many pixels in simulations as there are in experimental images. A sparse sampling can usually be interpolated to save a lot of computational effort, and blurring, tiling and applying noise can be done after the simulation is completed. We apply some of the most common post-processing steps in this tutorial. #### STEM Image Simulation: STO/LTO -As an example, we simulate the BF (0 to 20 mrad), MAADF (40 to 100 mrad), and HAADF (100 to 180 mrad) images of a STO/LTO interface that we built in the [simulation inputs](./sim_inputs.md) chapter. Note that since the structure repeats in the $x$-direction, we only scan over the unit cell, as shown in [](#fig_stem_specimen) below in red. The images are simulated with a primary beam energy of 150 keV, a defocus of 50 Å, and a probe convergence-semiangle of 20 mrad. Note that these would be quite pixelated since we simulated at Nyqvist sampling to save computational effort; below we show how these are interpolated to a higher resolution. +As an example, we simulate the BF (0 to 20 mrad), MAADF (40 to 100 mrad), and HAADF (100 to 180 mrad) images of a STO/LTO interface that we built in the [simulation inputs](#sim_inputs_page) chapter. Note that since the structure repeats in the $x$-direction, we only scan over the unit cell, as shown in [](#fig_stem_specimen) below in red. The images are simulated with a primary beam energy of 150 keV, a defocus of 50 Å, and a probe convergence-semiangle of 20 mrad. Note that these would be quite pixelated since we simulated at Nyquist sampling to save computational effort; below we show how these are interpolated to a higher resolution. ```{figure} #app:stem_sto-lto_scan :name: fig_stem_specimen @@ -117,13 +119,13 @@ A SrTiO3/LaTiO3 (STO/LTO) interface model. The red overlai ``` #### Interpolation -We can save a great deal of computational effort by scanning at the [Nyquist_frequency](wiki:Nyquist_frequency), which is information-theoretically guaranteed to be sufficient — but the result is visually quite pixelated. To address this, we can interpolate the images to a sampling of 0.05 $\mathrm{\AA}$. *ab*TEM’s default interpolation algorithm is Fourier-space padding, but spline interpolation is also available, which is more appropriate if the image in non-periodic. +We can save a great deal of computational effort by scanning at the [Nyquist frequency](wiki:Nyquist_frequency) given by [](#eq:probe_step), which is guaranteed to capture all of the information in the image {cite:p}`dwyer_simulation_2010`, but the result is visually quite pixelated. To address this, we can interpolate the images to a sampling of 0.05 $\mathrm{\AA}$. *ab*TEM’s default interpolation algorithm is Fourier-space padding, but spline interpolation is also available, which is more appropriate if the image is non-periodic. #### Blurring Standard multislice simulations are too idealized to describe a realistic experimental image. For example, a finite Gaussian-shaped source will result in a blurring of the image, and vibrations and other instabilities may further contribute to the blur. It is typical and convenient to approximate these by applying a Gaussian blur with a standard deviation of $0.35 \ \mathrm{\AA}$ (corresponding to a source of approximately that size). However, note that correctly including spatial and temporal incoherence is a bit more complicated and may be necessary for quantitative comparisons with experiment. #### Noise -Analogous to the discussion in [](#id-tem-phase), STEM simulations are initially performed at infinite dose, and we need to add Poisson nose to reach more realistic conditions. In this case we add a dose per area of $10^5 \ \mathrm{e}^- / \mathrm{\AA}^2$ to form a more realistic image. +Analogous to the discussion in [](#id-tem-phase), STEM simulations are initially performed at infinite dose, and we need to add Poisson noise to reach more realistic conditions. In this case we add a dose per area of $10^5 \ \mathrm{e}^- / \mathrm{\AA}^2$ to form a more realistic image. The different STEM post-processing steps can be explored in [](#fig_stem_processing). @@ -139,21 +141,21 @@ The phase problem, namely the loss of phase information when taking a measuremen When an electron probe interacts with a sample potential the center of mass (CoM) of the beam changes. Depending on the sample potential and the size of the probe, this will take the form of either a rigid disk shift, for low-frequency features, or a change in the distribution of signal within a disk, for high-frequency features, such as atoms {cite:p}`cao2018theory`. -First proposed by {cite:t}`dekkers1974differential` replacing conventional detectors with segemented detectors can capture this change in center of mass. Differential phase contrast (DPC) measurements are made by differentiating signal from oppposite segments, and this signal is proportional to the phase of the sample. [](#fig_stem_detectors) illustrates a DPC approach for the mixed nanoparticle on carbon structure, and compared to the bright-field and dark-field images, the signal from both the heavy and light components is more clear. The DPC approach is also more efficient than the ABF mode. The contrast transfer function for DPC peaks for the convergence angle of the probe, so simulations with these detectors can be helpful for optimizing experimental parameters. +As first proposed by {cite:t}`dekkers1974differential`, replacing conventional detectors with segmented detectors can capture this change in center of mass. Differential phase contrast (DPC) measurements are made by subtracting the signals from opposite segments, and for a thin, weakly scattering sample this signal is approximately proportional to the gradient of the phase of the sample, rather than the phase itself. [](#fig_stem_detectors) illustrates a DPC approach for the mixed nanoparticle on carbon structure, and compared to the bright-field and dark-field images, the signal from both the heavy and light components is more clear. For thin samples, DPC and its integrated form (iDPC) also make more efficient use of the electron dose than ABF imaging, producing images of both light and heavy atoms with a higher signal-to-noise ratio at the same dose {cite:p}`lazic_phase_2016,yucelen_phase_2018`. The contrast transfer function for DPC peaks for the convergence angle of the probe, so simulations with these detectors can be helpful for optimizing experimental parameters. (id-4d-stem)= ### 4D-STEM -In a conventional imaging experiment, detectors of fixed collection angle integrate the signal from the exit wave. By contrast, in a 4D-STEM experiment, at each probe position a full diffraction pattern is recorded. A 4D-dataset contains spatially resolved structural information, and post-processing can be used to recover features not possible with a conventional imaging technqiues. +In a conventional imaging experiment, detectors of fixed collection angle integrate the signal from the exit wave. By contrast, in a 4D-STEM experiment, at each probe position a full diffraction pattern is recorded. A 4D-dataset contains spatially resolved structural information, and post-processing can be used to recover features not possible with conventional imaging techniques. -There are myriad possibilities with 4D-STEM, and we refer you to other references for a more complete discussion {cite:p}`ophus2019four`. It is difficult to visualize a 4D-dataset, so most reconstruction approaches map this 4D-dataset into real or reciprocal space reflections of the full dataset. One of the more straight forward and common applications of 4D-STEM virtual imaging. In a virtual imaging reconstruction, a detector is applied in reciprocal space to create a real space image, and we refer to the detector as virtual because it is applied computationally after the data is acquired. Virtual detectors can take any form including binary filters that match the geometry of conventional detectors and circular detectors to pick-up specific Bragg disks. Similiarly, a virtual mask can be applied in real space to show diffraction patterns from a subset of the field of interest. +There are myriad possibilities with 4D-STEM, and we refer you to other references for a more complete discussion {cite:p}`ophus2019four`. It is difficult to visualize a 4D-dataset, so most reconstruction approaches map this 4D-dataset into real or reciprocal space reflections of the full dataset. One of the more straightforward and common applications of 4D-STEM is virtual imaging. In a virtual imaging reconstruction, a detector is applied in reciprocal space to create a real space image, and we refer to the detector as virtual because it is applied computationally after the data is acquired. Virtual detectors can take any form including binary filters that match the geometry of conventional detectors and circular detectors to pick-up specific Bragg disks. Similarly, a virtual mask can be applied in real space to show diffraction patterns from a subset of the field of interest. ```{figure} #app:stem_convergence :name: fig_stem_convergence :placeholder: ./static/stem_convergence.png -Using the slider observe how the separation of Bragg disks and probe size change with convergence angle for graphene. 80 kV simulation. +Using the slider observe how the separation of Bragg disks and probe size change with convergence angle for graphene. 80 kV simulation. The diffraction pattern intensity is shown with a fourth-root scaling, so that the weak Bragg disks of graphene are visible next to the direct beam. ``` -For more complex analysis, there are two most common modes for experimental set-up: small and large convergence angle, which can be explored in [](#fig_stem_convergence). Using a small convergence angle leads to large separation between Bragg disks in reciprocal space, which is ideal for orientation and strain experiments. For orientation mapping, the diffraction pattern at each position is compared to a library of patterns from a reference structure to solve for rotation of the crystal. Strain mapping is accomplished by comparing to a reference diffraction pattern and computing subtle shifts in Bragg disks resulting from structural disorder. The structure of amorphous materials can also be studied with this configuration by computing the radial distribution function. Careful choice of simulation parameters is imporant for this set-up. The small convergence angle creates a large real space probe size, which requires a large cell to hold the probe. At the same time, the maximum scattering angle needs to be large enough to capture enough Bragg disks for structural identification. +For more complex analysis, there are two most common modes for experimental set-up: small and large convergence angle, which can be explored in [](#fig_stem_convergence). Using a small convergence angle leads to large separation between Bragg disks in reciprocal space, which is ideal for orientation and strain experiments. For orientation mapping, the diffraction pattern at each position is compared to a library of patterns from a reference structure to solve for rotation of the crystal. Strain mapping is accomplished by comparing to a reference diffraction pattern and computing subtle shifts in Bragg disks resulting from structural disorder. The structure of amorphous materials can also be studied with this configuration by computing the radial distribution function. Careful choice of simulation parameters is important for this set-up. The small convergence angle creates a large real space probe size, which requires a large cell to hold the probe. At the same time, the maximum scattering angle needs to be large enough to capture enough Bragg disks for structural identification. -A large convergence angle creates a small probe in real space, which is ideal for atomic resolution imaging, and the overlap between diffracted disks transfers information for phase reconstruction experiments. There are a variety of ways to reconstruct the phase of the sample from 4D-STEM experiments, and the ideal approach will depend on the structure, field of view, and simulation parameters. The simpilest approach is a DPC reconstruction. As compared to the experimental set-up in the [DPC](#differential-phase-contrast) section, the segmented detectors are replaced with a pixelated detector for more accurate center of mass and thus phase determination. More complicated reconstruction algorithms include tilt-corrected bright field (or parallax), where virtual images from each pixel in the central disk are aligned to create a high-signal to noise phase reconstruction {cite:p}`yu2024dose, varnavides2024tilt`, and ptychograpy {cite:p}`yang2017electron, varnavides2023iterative`. Iterative electron ptychography referes to a family of algoirthms where the probe and object are reconstructed from the 4D-STEM dataset. In this method the maximum scattering angle is set by the highest spatial frequency recorded in the detector, so it is possible to form an image with higher resolution than real space sampling {cite:p}`jiang_electron_2018`. +A large convergence angle creates a small probe in real space, which is ideal for atomic resolution imaging, and the overlap between diffracted disks transfers information for phase reconstruction experiments. There are a variety of ways to reconstruct the phase of the sample from 4D-STEM experiments, and the ideal approach will depend on the structure, field of view, and simulation parameters. The simplest approach is a DPC reconstruction. As compared to the experimental set-up in the [DPC](#differential-phase-contrast) section, the segmented detectors are replaced with a pixelated detector for more accurate center of mass and thus phase determination. More complicated reconstruction algorithms include tilt-corrected bright field (or parallax), where virtual images from each pixel in the central disk are aligned to create a high-signal to noise phase reconstruction {cite:p}`yu2024dose, varnavides2024tilt`, and ptychography {cite:p}`yang2017electron, varnavides2023iterative`. Iterative electron ptychography refers to a family of algorithms where the probe and object are reconstructed from the 4D-STEM dataset. In this method the maximum scattering angle is set by the highest spatial frequency recorded in the detector, so it is possible to form an image with higher resolution than real space sampling {cite:p}`jiang_electron_2018`. diff --git a/TEM.md b/TEM.md index 81167c2..c91e533 100644 --- a/TEM.md +++ b/TEM.md @@ -17,14 +17,14 @@ After building an atomic potential as described in the [](#algorithms_page), the \psi_0(\bm{r}) = 1. ``` -However, it is possible to introduce more complications, such as a slightly [titled plane wave](https://abtem.readthedocs.io/en/main/user_guide/walkthrough/multislice.html#small-angle-beam-tilt). The sampling is set by the gridpoint and extent as described in section [](#sim_inputs_page). +However, it is possible to introduce more complications, such as a slightly [tilted plane wave](https://abtem.readthedocs.io/en/main/user_guide/walkthrough/multislice.html#small-angle-beam-tilt). The sampling is set by the gridpoint and extent as described in section [](#sim_inputs_page). (id-tem-imaging)= ### Imaging A TEM image is simulated by propagating the wavefunction through the specimen potential using the multislice algorithm (as described in [](#algorithms_page)), which calculates how the wave evolves due to scattering by the specimen atoms and the propagation through it. The resulting exit-wave is complex, but can be visualized via its intensity. -For a more realistic image, a [contrast transfer function](#CTF_page) can be applied to model the optics of the microscope. More details aberrations can be found in [](#CTF_page). In TEM, aberrations ({math}`\chi(\bm{k})`) modify the exit wave ({math}`\psi_{exit}`) after the multislice simulation: +For a more realistic image, a [contrast transfer function](#CTF_page) can be applied to model the optics of the microscope. More details about aberrations can be found in [](#CTF_page). In TEM, aberrations ({math}`\chi(\bm{k})`) modify the exit wave ({math}`\psi_{exit}`) after the multislice simulation: ```{math} :label: eq:TEM_aberrations @@ -33,13 +33,15 @@ For a more realistic image, a [contrast transfer function](#CTF_page) can be app ``` -Note that in TEM simulations, aberrations are added after the computationally time-consuming multislice calculation, which described the physics of the interaction. +Note that in TEM simulations, aberrations are added after the computationally time-consuming multislice calculation, which describes the physics of the interaction. In [](#fig_tem_Au_potential_wave_image) we show an interactive visualization of the cumulative projected potential of gold with a lattice constant of 4.08 Å in the <100> zone axis, the corresponding exit wave function, and the resulting image as a function of depth through the specimen. The multislice algorithm is only accurate in the limit of good (small) sampling rate and thin slices, but improving these parameters also increases computational cost. A sensible value for the sampling is between $\mathrm{0.05} \ \mathrm{Å}$ and $0.02 \ \mathrm{Å}$, and the slice thickness is typically between $1.0 \ \mathrm{Å}$ and $0.025 \ \mathrm{Å}$; we use a value of $\sim1.0 \ \mathrm{Å}$ here. -In [](#fig_tem_Au_potential_wave_image), we start with no potential and correspondingly the exit wave is flat and has no features. As the thickness of the gold sample increases, so does the potential, which is why we see increased contrast in the left panel. The corresponding exit wave calculated from the multislice simulation is shown in the middle. We are visualizing the intenisty of the exit wave (more information about phase in [](#id-tem-phase)). The relationship between the exit wave and thickness is not linear as in th case of the potential, so you will see oscillations as the thickness changes. +In [](#fig_tem_Au_potential_wave_image), we start with no potential and correspondingly the exit wave is flat and has no features. As the thickness of the gold sample increases, so does the potential, which is why we see increased contrast in the left panel. The corresponding exit wave calculated from the multislice simulation is shown in the middle. We are visualizing the intensity of the exit wave (more information about phase in [](#id-tem-phase)). The relationship between the exit wave and thickness is not linear as in the case of the potential, so you will see oscillations as the thickness changes. -Finally the right panel shows the resulting image from this simulation. To describe a parallel illumination TEM experiment, we use a plane wavefunction with an energy of $200 \ \mathrm{keV}$. For the CTF, the spherical aberration will be set to $-20~\mu \mathrm{m}$ (remember that *ab*TEM uses units of $\mathrm{Å}$) and the defocus is set to the [Scherzer defocus](https://en.wikipedia.org/wiki/High-resolution_transmission_electron_microscopy). The aperture is set at the first zero cross-over of the CTF, and a focal spread of $10 \ \mathrm{Å}$ is applied as an easy way to model realistic blurring of the image. +Finally the right panel shows the resulting image from this simulation. To describe a parallel illumination TEM experiment, we use a plane wavefunction with an energy of $200 \ \mathrm{keV}$. For the CTF, the spherical aberration will be set to $-20~\mu \mathrm{m}$ (remember that *ab*TEM uses units of $\mathrm{Å}$) and the defocus is set to the [Scherzer defocus](https://en.wikipedia.org/wiki/High-resolution_transmission_electron_microscopy). The aperture is set at the first zero cross-over of the CTF, and a focal spread of $10 \ \mathrm{Å}$ is applied as an easy way to model realistic blurring of the image. All three panels show $4 \times 4$ unit cells, which we tile after the simulation since the specimen is periodic. + +The defocus slider in [](#fig_tem_Au_potential_wave_image) shows how sensitive HRTEM images are to the choice of defocus. Depending on the defocus and the thickness, the atomic columns can appear as bright spots, as dark spots, or with almost no contrast, which is why selecting the correct defocus (for example the Scherzer defocus) is difficult in experiments, and why HRTEM images are usually interpreted by comparing them to simulations. The slider starts at the Scherzer defocus, which is $-87$ Å in the *ab*TEM sign convention for these conditions (overfocus, because we use a negative spherical aberration), and the aperture remains fixed at the Scherzer crossover angle as the defocus changes, as an objective aperture would in an experiment. ```{figure} #app:tem_Au_potential_wave_image @@ -50,13 +52,13 @@ Finally the right panel shows the resulting image from this simulation. To descr ### Electron Diffraction Patterns -Instead of an image, we can instead simulate a selected area diffraction (SAD) experiment by using the `DiffractionPatterns` method. We use `block_direct=True` to block the direct beam, which typically has a much higher intensity than the scattered beams, making it show it on the same scale. In a real experiment, you may similarly use a central beam stop in order to to visualize the scattered beams. +Instead of an image, we can instead simulate a selected area diffraction (SAD) experiment by using the `DiffractionPatterns` method. We use `block_direct=True` to block the direct beam, which typically has a much higher intensity than the scattered beams, making it difficult to show on the same scale as the scattered beams. In a real experiment, you may similarly use a central beam stop in order to visualize the scattered beams. You may wonder; why do the diffraction spots look like squares? This is because the incoming wave function is a periodic and infinite plane wave, hence the intersection with the Ewald sphere is pointlike. However, since we are discretizing the wave function on a square grid (i.e. pixels), the spots can only be as small as single pixels. In real SAD experiments, the spot size is broadened due to the finite extent of the crystal as well instrumental effects. -We can use the `index_diffraction_spots` method to create a represention of SAD patterns as a mapping of Miller indices to the intensity of the corresponding reflections. The *conventional* unit cell have to be provided in order to index the pattern, we can provide this as the unit cell of the gold crystal we created earlier, we cannot use the the repeated cell. +We can use the `index_diffraction_spots` method to create a representation of SAD patterns as a mapping of Miller indices to the intensity of the corresponding reflections. The *conventional* unit cell has to be provided in order to index the pattern, we can provide this as the unit cell of the gold crystal we created earlier, we cannot use the repeated cell. -In [](#fig_tem_Au_diffraction) we show an interactive visualization of the diffraction intensities and indexed diffraction spots as function of the depth through the specimen. We see that the {100} reflections are extinguished, as is expected from the selection rules of an F-centered crystal. We can also observe that the <220> spots end up with significantly higher intensity than the <200> spots; this is due to dynamical scattering — which is accounted for by the multislice algorithm. Finally you may notice as the thickness increases, the apperance of higher order laue zones. +In [](#fig_tem_Au_diffraction) we show an interactive visualization of the diffraction intensities and indexed diffraction spots as function of the depth through the specimen. We see that the {100} reflections are extinguished, as is expected from the selection rules of an F-centered crystal. We can also observe that the <220> spots end up with significantly higher intensity than the <200> spots; this is due to dynamical scattering — which is accounted for by the multislice algorithm. Finally you may notice as the thickness increases, the appearance of higher order Laue zones. ```{figure} #app:tem_Au_diffraction :name: fig_tem_Au_diffraction @@ -68,17 +70,17 @@ In [](#fig_tem_Au_diffraction) we show an interactive visualization of the diffr ### Contrast Transfer and Phase Imaging Thus far we have been considering how to form images and diffraction patterns with perfect incident illumination and at infinite dose. However, often we're interested in simulating TEM experiments under more realistic conditions. -One example of the importance of aberrations and wavfunction modification is shown in [](#fig_tem_phase). Although the wavfunction at the imaging plane ({math}`\Psi_{image}(\bm{k}`)) may be complex, only the intensity of the exit wave is measured by detectors. Weakly scattering samples impart very little ampltidue contrast on the incident beam, so most of the structural information is encoded in the phase of the exit wave. This is especially well known in the case of imaging of biological materials, as these structures are beam-sensitive and composed of low atomic number (weakly scattering elements). This effect is evident in the left pannel of [](#fig_tem_phase); as the dose decreases, it is very challenging to observe the simulated covid spike protein. +One example of the importance of aberrations and wavefunction modification is shown in [](#fig_tem_phase). Although the wavefunction at the imaging plane ({math}`\Psi_{image}(\bm{k}`)) may be complex, only the intensity of the exit wave is measured by detectors. Weakly scattering samples impart very little amplitude contrast on the incident beam, so most of the structural information is encoded in the phase of the exit wave. This is especially well known in the case of imaging of biological materials, as these structures are beam-sensitive and composed of low atomic number (weakly scattering elements). This effect is evident in the left panel of [](#fig_tem_phase); as the dose decreases, it is very challenging to observe the simulated coronavirus spike protein. -Note that simulations described thus far are performed to the limit of infinite electron dose. Leaving aside other factors, the main source of noise in S/TEM is so-called shot noise arising from the discrete nature of electrons. We can effectively emulate finite dose by drawing random numbers from a Poisson distribution for every pixel. We apply this so-called Poisson noise corresponding a dose per area, for example in the [](#fig_tem_phase). +Note that simulations described thus far are performed to the limit of infinite electron dose. Leaving aside other factors, the main source of noise in S/TEM is so-called shot noise arising from the discrete nature of electrons. We can effectively emulate finite dose by drawing random numbers from a Poisson distribution for every pixel. We apply this so-called Poisson noise corresponding to a dose per area, for example in the [](#fig_tem_phase). -As discussed in [](#id-tem-imaging), we may also be interested in seeing how aberrations or other beam modifications impact imaging conditions. For the same dose, the image contrast can be increased by modfying the wavefunctions by way of aberrations. This is most often done with defocus, which is illustrated in the middle pannel [](#fig_tem_phase). The resulting image has improved contrast, making it easier to visualize the covid spike protein. The middle pannel shows the defocused image, and the aberrations can often be corrected for later in post-processing. +As discussed in [](#id-tem-imaging), we may also be interested in seeing how aberrations or other beam modifications impact imaging conditions. For the same dose, the image contrast can be increased by modifying the wavefunctions by way of aberrations. This is most often done with defocus, which is illustrated in the middle panel of [](#fig_tem_phase). The resulting image has improved contrast, making it easier to visualize the coronavirus spike protein. The middle panel shows the defocused image, and the aberrations can often be corrected for later in post-processing. -The phase of the spike protein can also be image through the introduction of a phase plate after the sample. This simulation ([](#fig_tem_phase) right) shows a Zernike phase plate {cite:p}`zernike1942phase`, where electrons scattered to higher angles, gain an extra phase shift. This high-contrast image is free of aberrations, making it easy to see the spike protein. However, changing the slides on the widget highlgihts some of the challenges of phase contrast imaging with a phase plate. The best transfer of information occurs with a phase plate that approximtes a delta function, meaning all the electrons exepct those in the very center of the aperature get an extra $\pi/2$ phase shift. However, as the size of the hole increases or the phase shift changes, the transfer of information gets worse. +The phase of the spike protein can also be imaged through the introduction of a phase plate after the sample. This simulation ([](#fig_tem_phase) right) shows a Zernike phase plate {cite:p}`zernike1942phase`, where electrons scattered to higher angles, gain an extra phase shift. This high-contrast image is free of aberrations, making it easy to see the spike protein. However, changing the sliders on the widget highlights some of the challenges of phase contrast imaging with a phase plate. The best transfer of information occurs with a phase plate that approximates a delta function, meaning all the electrons except those in the very center of the aperture get an extra $\pi/2$ phase shift. However, as the size of the hole increases or the phase shift changes, the transfer of information gets worse. ```{figure} #app:tem_contrast :name: fig_tem_phase :placeholder: ./static/tem_contrast.png -**TEM imaging of COVID spike protein**: (left) In focus, (middle) defocued, and (right) Zernike phase plate TEM images. [Covid structure](https://www.rcsb.org/structure/3jcl) from {cite}`walls2016cryo` +**TEM imaging of a coronavirus spike protein**: (left) In focus, (middle) defocused, and (right) Zernike phase plate TEM images. [Murine hepatitis virus spike glycoprotein structure](https://www.rcsb.org/structure/3jcl) from {cite}`walls2016cryo`. ``` diff --git a/aberrations.md b/aberrations.md index e786dce..572afa6 100644 --- a/aberrations.md +++ b/aberrations.md @@ -10,7 +10,7 @@ label : CTF_page An ideal lens forms a spherical wave converging on or emerging from a single point. This means that a plane wave will be converted to a spherical wave converging at the focal point of the lens, and the image of a point source is also a point. In STEM we want the objective lens to produce the smallest possible probe and in HRTEM we want the objective lens to produce a perfect magnified image of the sample. In most cases, both of these objectives require that we minimize all aberrations as much as possible. -While the last decades has seen enormous improvements in the optics of electron microscopes, S/TEMs are far from ideal optical system. Imperfections causes the focused wave front to deviate from the ideal spherical surface. +While the last decades have seen enormous improvements in the optics of electron microscopes, S/TEMs are far from ideal optical systems. Imperfections cause the focused wave front to deviate from the ideal spherical surface. ### Contrast Transfer and the Point-Spread Function @@ -29,11 +29,59 @@ The phase error can be expressed in different ways, however, it is traditionally ```{math} \chi(k, \phi) = \frac{2 \pi}{\lambda} \sum_{n,m} \frac{1}{n + 1} C_{n,m} (k \lambda)^{n+1} \cos\left[m (\phi - \phi_{n,m}) \right] , ``` -where $k$ is the Fourier space radial coordinate and $\phi$ is the corresponding azimuthal coordinate. The coefficient $C_{n,m}$ represents the magnitude of an aberration and $\phi_{n,m}$ gives a direction to that aberration. There are other ways of representing the aberration function, you might have seen the Cartesian representation where some parameters has an "a" and "b" version. +where $k$ is the Fourier space radial coordinate and $\phi$ is the corresponding azimuthal coordinate. The coefficient $C_{n,m}$ represents the magnitude of an aberration and $\phi_{n,m}$ gives a direction to that aberration. There are other ways of representing the aberration function, you might have seen the Cartesian representation where some parameters have an "a" and "b" version. + +The most common aberrations have well-known names, which are listed in [](#tab:aberrations) together with the alternative notation of {cite:t}`krivanek_towards_1999`. +The radial order $n$ sets how quickly each aberration grows with scattering angle, while the azimuthal order $m$ sets its rotational symmetry; for example, an aberration with $m=3$ has three-fold symmetry. + +:::{list-table} Common aberration coefficients in the polar notation used in this article, the equivalent notation of {cite:t}`krivanek_towards_1999`, and their names. +:label: tab:aberrations +:header-rows: 1 + +* - $C_{n,m}$ + - Krivanek + - Name +* - $C_{1,0}$ + - $C_1$ + - Defocus +* - $C_{1,2}$ + - $A_1$ + - Two-fold astigmatism +* - $C_{2,1}$ + - $B_2$ + - Axial coma +* - $C_{2,3}$ + - $A_2$ + - Three-fold astigmatism (trefoil) +* - $C_{3,0}$ + - $C_3$ + - Third-order spherical aberration ($C_s$) +* - $C_{3,2}$ + - $S_3$ + - Axial star aberration +* - $C_{3,4}$ + - $A_3$ + - Four-fold astigmatism (quadrafoil) +* - $C_{4,1}$ + - $B_4$ + - Fourth-order axial coma +* - $C_{4,3}$ + - $D_4$ + - Three-lobe aberration +* - $C_{4,5}$ + - $A_4$ + - Five-fold astigmatism (pentafoil) +* - $C_{5,0}$ + - $C_5$ + - Fifth-order spherical aberration +* - $C_{5,6}$ + - $A_5$ + - Six-fold astigmatism (hexafoil) +::: #### Visualizing the CTF and PSF -Below we visualize each aberration by mapping the phase to different colors. We can also visualize each phase aberration by showing its effect on a small probe wave function using the PSF. Note that the magnitude of the aberrations are scaled by a power law are scaled by the radial order ($n$) according to a power law. +Below we visualize each aberration by mapping the phase to different colors. We can also visualize each phase aberration by showing its effect on a small probe wave function using the PSF. Note that the magnitudes of the aberrations shown are scaled with their radial order $n$ according to a power law, so that each aberration produces a similar phase error at the edge of the plot. ````{tab-set} ```{tab-item} CTF @@ -44,12 +92,12 @@ Below we visualize each aberration by mapping the phase to different colors. We ``` ```` -We can also visualize this interactively as shown in [](#fig_ctf_psf). +We can also visualize this interactively as shown in [](#fig_ctf_psf), where the sliders control the defocus, two-fold astigmatism, axial coma, three-fold astigmatism, and third- and fifth-order spherical aberration. ```{figure} #app:ctf_psf :name: fig_ctf_psf :placeholder: ./figures/ctf_psf.png -**Interactive widget showing the influence of common aberrations on the point spread function (PSF) and contact transfer function (CTF).** +**Interactive widget showing the influence of common aberrations on the point spread function (PSF) and contrast transfer function (CTF).** ``` ### Aperture @@ -63,13 +111,36 @@ $$ where $A(k)$ is the aperture function $$ - A(k) = \begin{cases} 1 & \text{if } x \leq k_{cut} \\ 0 & \text{if } x > k_{cut} \end{cases} . + A(k) = \begin{cases} 1 & \text{if } k \leq k_{cut} \\ 0 & \text{if } k > k_{cut} \end{cases} . $$ We typically cut off the `CTF` at the angle corresponding to the Scherzer [point resolution](https://en.wikipedia.org/wiki/High-resolution_transmission_electron_microscopy#Scherzer_defocus), which is defined as the angle where the phase of the `CTF` crosses the abscissa for the first time (`crossover_angle`). +(partial-coherence)= ### Partial Coherence (Quasi-Coherent) -Partial coherence acts similarly to the aperture function to dampen the high spatial frequencies of the signal. Partial coherence may be approximated by multiplying the `CTF` by envelope functions: +So far we have assumed perfectly coherent illumination, where every electron has exactly the same energy and incident direction. +In a real microscope, the electrons have a small spread of energies, and a small spread of incident directions or source positions. +Each electron only interferes with itself, and so the measured image is an incoherent sum of the images formed by electrons with slightly different energies and directions. +The result is a loss of contrast, which mostly affects high spatial frequencies. +We divide partial coherence into two parts. + +**Spatial coherence** describes the spread of incident directions (in TEM) or of source positions (in STEM) of the electrons. +Its main source is the finite size of the electron source, as imaged onto the specimen by the condenser lenses. +Mechanical vibrations, drift, and stray electromagnetic fields which move the beam relative to the specimen during an exposure have a similar effect, and increase the effective source size {cite:p}`dwyer_measurement_2010`. +In STEM, the effective source size blurs the image, which we approximate by convolving simulated STEM images with a Gaussian in [](#stem-image-simulation). + +**Temporal coherence** describes the spread of electron energies. +Electrons with different energies are focused at different heights by the chromatic aberration $C_c$ of the objective lens, which produces a spread of defocus values. +The root-mean-square focal spread is approximately {cite:p}`kirkland2020` +```{math} +:label: eq:focal_spread +\Delta = C_c \sqrt{\left(\frac{\Delta E}{e E_0}\right)^2 + \left(\frac{\Delta V}{V}\right)^2 + \left(\frac{2 \Delta I}{I}\right)^2}, +``` +where $\Delta E$ is the energy spread of the electron source, $E_0$ is the accelerating voltage, and $\Delta V / V$ and $\Delta I / I$ are the fractional instabilities of the high voltage supply and of the objective lens current. +We refer to the resulting blur as temporal incoherence. +Because the defocus term of the aberration function is proportional to $k^2$, temporal incoherence damps high spatial frequencies very strongly, and it often sets the information limit of HRTEM images. + +Similar to the aperture function, partial coherence dampens the high spatial frequencies of the signal. Partial coherence may be approximated by multiplying the `CTF` by envelope functions: $$ \psi_{\mathrm{image}}(k, \phi) = \mathrm{CTF}(k, \phi) \psi_{\mathrm{exit}}(k, \phi), @@ -81,24 +152,24 @@ $$ \mathrm{CTF}(k, \phi) = E_t(k) E_s(k) A(k) \exp[-i \chi(k, \phi)] $$ -and $E_t(k)$ and $E_s(k)$ are the temporal and spatial envelopes, respectively (see [abTEM documentation](https://abtem.github.io/doc/user_guide/walkthrough/contrast_transfer_function.html#partial-coherence-quasi-coherent) for more detail). +and $E_t(k)$ and $E_s(k)$ are the temporal and spatial envelopes, respectively. For a Gaussian distribution of defocus values with root-mean-square focal spread $\Delta$, the temporal envelope is $E_t(k) = \exp\left[-\frac{1}{2}\left(\pi \lambda \Delta k^2\right)^2\right]$ {cite:p}`kirkland2020`, while the spatial envelope depends on the gradient of the aberration function $\chi(\bm{k})$ and on the angular spread of the illumination (see the [abTEM documentation](https://abtem.github.io/doc/user_guide/walkthrough/contrast_transfer_function.html#partial-coherence-quasi-coherent) for more detail). Note that the `focal_spread` and `angular_spread` parameters in *ab*TEM, which we use for the interactive figures, follow the convention of {cite:t}`kirkland2020` and give the $1/e$ half-width of each distribution, which is $\sqrt{2}$ times its standard deviation. ### Spherical-Aberration Limited Contrast Transfer For an uncorrected microscope the dominant aberration is the third order spherical aberration ($C_{3,0}$). Assuming the other non-symmetric components have been well aligned by the user, the contrast transfer function simplifies to: ```{math} - \chi(k) \approx \frac{2\pi}{\lambda}\left( \frac{\lambda^2 k^2}{2} \Delta f + \frac{\lambda^4 k^4}{4} C_s \right) \quad . + \chi(k) \approx \frac{2\pi}{\lambda}\left( -\frac{\lambda^2 k^2}{2} \Delta f + \frac{\lambda^4 k^4}{4} C_s \right) \quad . ``` -Here we used the common aliases of the aberration coefficients, so $C10 = -\Delta f$ is the negative defocus and $C_{30} = C_s$ is the third order spherical aberration. +Here we used the common aliases of the aberration coefficients, so $\Delta f = -C_{1,0}$ is the defocus and $C_s = C_{3,0}$ is the third order spherical aberration. #### Visualizing the Contrast Transfer Function -The contrast transfer function can also be plotted as a line profile, which *by convention* display the imaginary part of complex exponential of the phase error. The horizontal axis denotes a specific spatial frequency, while the vertical axis how the contrast at that spatial frequency is transferred. +The contrast transfer function can also be plotted as a line profile, which *by convention* displays the imaginary part of the complex exponential of the phase error. The horizontal axis denotes a specific spatial frequency, while the vertical axis shows how the contrast at that spatial frequency is transferred. Below in [](#fig_ctf_line), we visualize the CTF interactively for different primary beam energies, defocus values, spherical aberration, aperture cutoff, and temporal and spatial incoherences. ```{figure} #app:ctf_line :name: fig_ctf_line :placeholder: ./static/ctf_line.png -**Interactive widget showing the influence of common coherent and incoherent parameters on the contact transfer function (CTF).** +**Interactive widget showing the influence of common coherent and incoherent parameters on the contrast transfer function (CTF).** ``` \ No newline at end of file diff --git a/algorithms.md b/algorithms.md index 4954ddb..2f7c8ab 100644 --- a/algorithms.md +++ b/algorithms.md @@ -14,7 +14,9 @@ label : algorithms_page (numerical-solutions-of-the-schrodinger-equation)= ## Numerical Solutions of the Schrödinger Equation -As discussed in [](#physics_bound_systems), the [Schrödinger equation](wiki:Schrödinger_equation) typically cannot be solved analytically in complex systems. Therefore, in order to perform electron scattering simulations, we must calculate numerical solutions of Equation [](#eq:Schrodinger_time) for electron waves. First, we define the {cite:t}`debroglie1925recherches` wavelength of a free electrons (corrected for relativistic effects) as +As discussed in [](#physics_bound_systems), the [Schrödinger equation](wiki:Schrödinger_equation) typically cannot be solved analytically in complex systems. Therefore, in order to perform electron scattering simulations, we must calculate numerical solutions of Equation [](#eq:Schrodinger_time) for the fast electrons in the microscope. In this section we derive the equation solved by the multislice method, and state each approximation as we make it. More detailed derivations can be found in {cite:t}`kirkland2020`. + +First, we define the {cite:t}`debroglie1925recherches` wavelength of the incident electrons, corrected for relativistic effects {cite:p}`humphreys_scattering_1979`, as ```{math} :label: eq:wavelength @@ -22,26 +24,29 @@ As discussed in [](#physics_bound_systems), the [Schrödinger equation](wiki:Sch \lambda = \frac{h \, c}{\sqrt{e \, E_0 (2 \, m \, c^2 + e \, E_0)}}, ``` -where {math}`h` is the Plank constant, {math}`c` is the speed of light, {math}`e` is the electron charge, and {math}`E_0` is the accelerating voltage applied to the electron. Using SI units for [](#eq:wavelength) will give the wavelength in units of meters. In practice we typically use length units of for all calculations, and therefore multiple this result by {math}`10^{10}`. +where {math}`h` is the Planck constant, {math}`c` is the speed of light, {math}`e` is the elementary charge, {math}`m` is the electron rest mass, and {math}`E_0` is the accelerating voltage. Using SI units for [](#eq:wavelength) will give the wavelength in units of meters. In practice we typically use length units of Å for all calculations, and therefore multiply this result by {math}`10^{10}`. For example, the wavelength of 200 kV electrons is $\lambda \approx 0.0251$ Å. -Next, we define the electron-potential interaction constant as (the numerical values of these constants can be found in  [](#app:constants)) +Next, we define the electron-potential interaction constant as (the numerical values of these constants can be found in [](#app:constants)) ```{math} :label: eq:interaction_constant -\sigma = \frac{2 \pi \, m \, e \, \lambda}{h^2}. +\sigma = \frac{2 \pi \, \gamma \, m \, e \, \lambda}{h^2}, ``` -In our simulations, we will assume the {math}`z`-position coordinate of the wavefunction {math}`\psi(\bm{r})` is alone sufficient to describe its propagation in both time and space. Starting from Equaton [](#eq:Schrodinger_time) and assuming steady-state conditions with $V(\bm{r}, t) = V(\bm{r})$, we replace $\psi(\bm{r}, t)$ with $\psi(\bm{r}) e^{-\ii E t / \hbar}$ and separate the time dependence. This gives the time-independent Schrödinger equation: +where $\gamma = 1 + e E_0 / (m c^2)$ is the relativistic Lorentz factor, which converts the electron rest mass $m$ into its relativistic mass $\gamma m$. The interaction constant has units of radians per volt per Å, and converts the projected potential of a specimen into a phase shift of the electron wave. + +We look for steady-state solutions, where the electron energy is fixed by the accelerating voltage and the potential does not change in time, i.e. $V(\bm{r}, t) = V(\bm{r})$. Starting from Equation [](#eq:Schrodinger_time), we replace $\psi(\bm{r}, t)$ with $\psi(\bm{r}) e^{-\ii E t / \hbar}$ and separate the time dependence. This gives the time-independent Schrödinger equation: ```{math} -\left[-\frac{\hbar^2}{2m} \nabla^2 + e V(\bm{r}) \right] \psi(\bm{r}) = E \psi(\bm{r}), +:label: eq:schrodinger_tise +\left[-\frac{\hbar^2}{2 \gamma m} \nabla^2 - e V(\bm{r}) \right] \psi(\bm{r}) = E \psi(\bm{r}), ``` -where $V(\bm{r})$ is the crystal potential, and $E$ is the total energy of the electron. Substituting $\lambda $ and $\sigma$ into the equation and rearranging in terms of the electron’s wavevector $k_0 = 1/\lambda$, we obtain: +where $V(\bm{r})$ is the electrostatic potential of the specimen in volts, $-e V(\bm{r})$ is the potential energy of the electron (negative because the electron is attracted to the positive potential near the atomic nuclei), and $E$ is the kinetic energy of the incident electron far from the specimen. Substituting $\lambda$ and $\sigma$ into the equation and rearranging in terms of the magnitude of the electron's wavevector $k_0 = 1/\lambda$, we obtain: ```{math} :label: eq:schrodinger_start -\left[\nabla^2 + 4\pi^2 k_0^2\right] \psi(\bm{r}) = -4\pi^2 \sigma V(\bm{r}) \psi(\bm{r}), +\left[\nabla^2 + 4\pi^2 k_0^2\right] \psi(\bm{r}) = -\frac{4\pi \sigma}{\lambda} V(\bm{r}) \psi(\bm{r}). ``` This 3D time-independent Schrödinger equation serves as the foundation for deriving numerical electron scattering algorithms. @@ -50,11 +55,23 @@ This 3D time-independent Schrödinger equation serves as the foundation for deri ## The Multislice Method By a wide margin, the most common algorithm used for electron scattering simulations is the multislice method, first described by {cite:t}`cowley1957scattering`. -In this method, we make two assumptions: -- The $\partial^2 / \partial z^2$ term in the Laplacian can be neglected, as the wavefunction's variation along the $z$-axis is much slower compared to its variation in the transverse $(x, y)$ directions. -- The longitudinal wavevector $k_0$ is much larger than the contributions from transverse components of the wavefunction, i.e., $k_0 \gg |{\nabla_{xy}}^2|$. +For fast electrons, the wavefunction is dominated by the incident plane wave travelling along the optic axis $z$. We therefore write the wavefunction as the product + +```{math} +:label: eq:envelope +\psi(\bm{r}) = \phi(\bm{r}) \exp\left(2 \pi \ii z / \lambda\right), +``` -With these assumptions, we can substitute Equations [](#eq:wavelength) and [](#eq:interaction_constant) into Equation [](#eq:schrodinger_start) to obtain {cite:p}`kirkland2020` +where $\phi(\bm{r})$ is an envelope function that varies slowly along $z$ compared to the wavelength $\lambda$ {cite:p}`kirkland2020`. Substituting [](#eq:envelope) into [](#eq:schrodinger_start), the $4 \pi^2 k_0^2$ terms cancel, leaving + +```{math} +{\nabla_{xy}}^2 \phi(\bm{r}) ++ \frac{\partial^2 \phi(\bm{r})}{\partial z^2} ++ \frac{4 \pi \ii}{\lambda} \frac{\partial \phi(\bm{r})}{\partial z} += -\frac{4\pi \sigma}{\lambda} V(\bm{r}) \phi(\bm{r}), +``` + +where {math}`{\nabla_{xy}}^2 = \partial^2/\partial x^2 + \partial^2/\partial y^2` is the Laplacian in the transverse $(x,y)$ plane. We now make the paraxial approximation: because $\phi(\bm{r})$ varies slowly along $z$, the term $\partial^2 \phi / \partial z^2$ is much smaller than $(4\pi/\lambda) \, \partial \phi / \partial z$, and can be neglected. This approximation also neglects backscattering, which is very weak for the high accelerating voltages used in S/TEM. Rearranging the remaining terms gives {cite:p}`kirkland2020` ```{math} :label: eq:Shrodinger_electron @@ -65,7 +82,7 @@ With these assumptions, we can substitute Equations [](#eq:wavelength) and [](#e \ii \sigma V(\bm{r}) \psi(\bm{r}), ``` -where {math}`{\nabla_{xy}}^2 = \partial^2/\partial x^2 + \partial^2/\partial y^2`. +where we have renamed the envelope function $\phi(\bm{r})$ back to $\psi(\bm{r})$. The factor $\exp(2 \pi \ii z / \lambda)$ is identical at every transverse position $(x,y)$, and so it does not change any measured intensity. From this point on we therefore drop it, and $\psi(\bm{r})$ refers to the slowly-varying envelope of the electron wave. Equation [](#eq:Shrodinger_electron) shows the overall numerical recipe we will use; when the wavefunction {math}`\psi_0(\bm{r})` is at position {math}`z_0`, we will evaluate the operators on the right hand side over a distance {math}`\Delta z` to calculate the new wavefunction {math}`\psi(\bm{r})` at position {math}`z_0 + \Delta z`. {cite:t}`kirkland2020` gives the formal operator solution to [](#eq:Shrodinger_electron) as @@ -82,7 +99,7 @@ Equation [](#eq:Shrodinger_electron) shows the overall numerical recipe we will \ii \sigma V(\bm{r}) \right] dz \right\} - \psi_0(\bm{r}) + \psi_0(\bm{r}). ``` Assuming {math}`\Delta z` is small, [](#eq:Shrodinger_solution) can be simplified to @@ -107,41 +124,44 @@ V_{\Delta z}(\bm{r}) V(\bm{r}) dz, ``` -is a thin slice of the potential as described in Equation [](#isolated-atomic-potentials) or [](#dft-potentials). -Unfortunately, even with the above approximations, Equation [](#eq:Shrodinger_simple) cannot be solved in closed form due to the two non-commuting operators. -Instead, we solve it numerically by using a split-step method, where we alternate between solving each operator independently. +is the projected potential of a thin slice of the specimen, computed from the isolated atomic potentials described in [](#physics_isolated_atomic_potentials) or the DFT potentials described in [](#physics_dft_potentials). +Unfortunately, even with the above approximations, Equation [](#eq:Shrodinger_simple) cannot be evaluated directly, because the two operators in the exponent do not commute. +Instead, we solve it numerically by using the split-step method, where we alternate between applying each operator separately, i.e. we approximate $\exp(A + B) \approx \exp(A)\exp(B)$ for the propagation operator $A$ and the transmission operator $B$, with an error that decreases as the slice thickness $\Delta z$ is reduced. +The same split-step approach is widely used to solve other wave equations, including nonlinear Schrödinger equations {cite:p}`taha_analytical_1984`. The steps of the multislice method are detailed below. ### Steps of the Multislice Method #### 1. Atomic Coordinates We first generate a set of atomic coordinates for our desired sample. -The atomic coordinates are placed in a *simulation cell*, a [rectangular cuboid](#wiki:Rectangular_cuboid) where all edges vectors are $90^\circ$ apart. +The atomic coordinates are placed in a *simulation cell*, a [rectangular cuboid](wiki:Rectangular_cuboid) where all edge vectors are $90^\circ$ apart. We assume the optic axis of the electron beam is along the $z$ axis. -For each atom, we define the $\bm{r}=(x,y,z)$ position, the atomic number, a thermal vibration parameter, and sometimes the occupancy. +For each atom, we define the $\bm{r}=(x,y,z)$ position, the atomic number, a thermal vibration parameter (see [](#frozen-phonons)), and sometimes the occupancy. Ideally the atomic coordinates will be periodic in the $(x,y)$ plane, though this is not always possible. #### 2. Potential Slices -Next, we calculate the potential $V(\bm{r})$ for the sample. We compute this potential numerically, either using the parameterization approach shown in [](#isolated-atomic-potentials) or using a DFT calculation as described in [](#dft-potentials). +Next, we calculate the potential $V(\bm{r})$ for the sample. We compute this potential numerically, either using the parameterization approach shown in [](#physics_isolated_atomic_potentials) or using a DFT calculation as described in [](#physics_dft_potentials). We divide the atomic potentials into *slices*, which are thin sections of the sample in the $(x,y)$ plane. Thinner slices will produce more accurate simulations, at the cost of longer computation times. -Typical slice thicknesses for accurate simulations are 1--2 $\rm{\AA}$, equal to roughly the atomic spacing of most solid materials. +Typical slice thicknesses for accurate simulations are 1–2 Å, equal to roughly the atomic spacing of most solid materials. -When using isolated atomic potentials, we can either take the infinite projected potential which places the full scattering cross-section of each into a single slice, or perform numerical integration of a finite 3D projected potential which allows the potential of each atom to be spread into multiple adjacent slices. +When using isolated atomic potentials, we can either take the infinite projected potential which places the full scattering cross-section of each atom into a single slice, or perform numerical integration of a finite 3D projected potential which allows the potential of each atom to be spread into multiple adjacent slices. -We can also add additional electrostatic or electromagnetic fields to the potential slices. Electrostatic fields can be produced by electric fields across the sample or excess charges or holes, and will produce the same phase shifts as the atomic potentials, described by Equation [](#eq:Shrodinger_electron). -The effect of both extrinsic and intrinsic magnetic fields can be calculated using the [Aharonov–Bohm equation](#wiki:Aharonov–Bohm_effect). +We can also add additional electrostatic or magnetic fields to the potential slices. Electrostatic fields can be produced by electric fields across the sample or excess charges or holes, and will produce the same phase shifts as the atomic potentials, described by Equation [](#eq:Shrodinger_electron). +The phase shifts produced by both extrinsic and intrinsic magnetic fields can be calculated from the magnetic vector potential, using the [Aharonov–Bohm effect](wiki:Aharonov–Bohm_effect) {cite:p}`aharonov_significance_1959`. #### 3. Initial Wavefunctions -Next, we define the intitial condition of the electron beam wavefunction $\psi(\bm{r})$, described in [](#CTF_page). In an ideal plane wave TEM or diffraction pattern simulation, we use only a single initial wavefunction. +Next, we define the initial condition of the electron beam wavefunction $\psi(\bm{r})$, described in [](#CTF_page). In an ideal plane wave TEM or diffraction pattern simulation, we use only a single initial wavefunction. We can also include spatial coherence in a [TEM simulation](#tem_sims) by performing a multislice simulation where the initial probe is tilted to a range of incident probe angles, which are then summed incoherently to generate the simulation output. +An incoherent sum adds the intensities $|\psi(\bm{r})|^2$ of the individual simulations, while a coherent sum adds the complex wavefunctions $\psi(\bm{r})$ before the squared magnitude is taken. +Waves summed coherently can interfere with each other, while waves summed incoherently cannot. For a [STEM simulation](#stem_sims), we may need to calculate thousands or even millions of initial conditions for the electron probe, as each unique STEM probe position requires another simulation. #### 4. Transmission Operator -Following {cite:t}`kirkland2020`, if we assume a slice is infinitesimal thickness, we can set the ${\nabla_{xy}}^2$ term from [](#eq:Shrodinger_simple) to zero and obtain the solution +Following {cite:t}`kirkland2020`, if we assume a slice has infinitesimal thickness, we can set the ${\nabla_{xy}}^2$ term from [](#eq:Shrodinger_simple) to zero and obtain the solution ```{math} :label: eq:operator_transmission \psi(\bm{r}) @@ -150,110 +170,59 @@ Following {cite:t}`kirkland2020`, if we assume a slice is infinitesimal thicknes \exp[\ii \sigma V_{\Delta z}(\bm{r})]. ``` -We see from this expression that as the electron wavefuncton passes through a given slice, it will pick up a forward phase shift proportional to $V_{\Delta z}(\bm{r})$. This first Born approximation is quite accurate for high accelerating voltages, for small-to-intermediate atomic number species, and for thin slices. However we may require a more accurate expansion and / or numerical slicing of individual atomic potentals when using very low accelerating voltages or for calculating scattering from high atomic number species. +We see from this expression that as the electron wavefunction passes through a given slice, it will pick up a forward phase shift proportional to the projected potential $V_{\Delta z}(\bm{r})$. +[](#eq:operator_transmission) is known as the projection, or phase grating, approximation, because it treats all of the scattering within a slice as occurring in a single infinitesimally thin plane. +Note that this is not the same as the first Born approximation described in [](#physics_born_approximation): the transmission operator includes scattering to all orders of the potential within the slice, but it neglects the propagation of the wave inside the slice. +Multiple scattering through the full thickness of the specimen is then included by alternating the transmission and propagation steps. +The projection approximation is quite accurate for high accelerating voltages, for small-to-intermediate atomic number species, and for thin slices. However we may require thinner slices and / or numerical slicing of individual atomic potentials when using very low accelerating voltages or for calculating scattering from high atomic number species. #### 5. Propagation Operator -Next, we need to *propagate* the electron wave from one slice to the next by using the propagation operator in Equation [](#eq:Shrodinger_simple). We assume empty space between slices, setting $V(\bm{r})=0$ in [](#eq:Shrodinger_simple) to get +Next, we need to *propagate* the electron wave from one slice to the next. We assume empty space between slices, setting $V(\bm{r})=0$ in [](#eq:Shrodinger_electron) to get the free-space paraxial wave equation ```{math} :label: eq:prop01 -\psi(\bm{r}) - = - \exp \left\{ - \frac{\ii \lambda \Delta z}{4 \pi} {\nabla_{xy}}^2 - \right\} - \psi_0(\bm{r}). +\frac{\partial }{\partial z} \psi(\bm{r}) + = + \frac{\ii \lambda}{4 \pi} {\nabla_{xy}}^2 \psi(\bm{r}). ``` -Setting $\Lambda = \lambda \Delta z / 4 \pi$ and Taylor expanding this expression gives + +This equation is easiest to solve in Fourier space. We take the 2D Fourier transform $\Psi(\bm{k}, z) = \mathscr{F}_{\bm{r} \rightarrow \bm{k}}\{ \psi(\bm{r}) \}$ of both sides, with the sign convention of [](#math_fast_fourier_transform). Each derivative $\partial / \partial x$ becomes a multiplication by $2 \pi \ii k_x$ (and likewise for $y$), and so the transverse Laplacian becomes a multiplication by $(2 \pi \ii k_x)^2 + (2 \pi \ii k_y)^2 = -4 \pi^2 |\bm{k}|^2$. This gives + ```{math} :label: eq:prop02 -\psi(\bm{r}) - = - \left[ - \sum_{m=0}^\infty - (\ii \Lambda)^m - \frac{\partial^{2m} \psi_0(\bm{r})}{\partial x^{2m}} - \right] - \left[ - \sum_{n=0}^\infty - (\ii \Lambda)^n - \frac{\partial^{2n} \psi_0(\bm{r})}{\partial y^{2n}} - \right]. +\frac{\partial }{\partial z} \Psi(\bm{k}, z) + = + -\ii \pi \lambda |\bm{k}|^2 \, \Psi(\bm{k}, z), ``` -Taking the 2D Fourier transform $\Psi(\bm{k}) = \mathscr{F}_{\bm{r} \rightarrow \bm{k}}\{ \psi(\bm{r}) \}$ of both sides and using the fact that the x and y derivatives are orthogonal, we get -```{math} -:label: eq:prop01 -\begin{aligned} -\Psi(\bm{k}) - &= - \left[ - \sum_{m=0}^\infty - (\ii \Lambda)^m - (\ii 2 \pi k_x)^{2m} - \right] - \left[ - \sum_{n=0}^\infty - (\ii \Lambda)^n - (\ii 2 \pi k_y)^{2n} - \right] - \Psi_0(\bm{k}) \\ - - &= - \left[ - \sum_{m=0}^\infty - (-\ii 4 \pi^2 \Lambda {k_x}^2)^m - \right] - \left[ - \sum_{m=0}^\infty - (-\ii 4 \pi^2 \Lambda {k_y}^2)^m - \right] - \Psi_0(\bm{k}) \\ +which is an ordinary differential equation in $z$ for each spatial frequency $\bm{k}$. Its solution over a distance $\Delta z$ is - &= - \left[ - \sum_{m=0}^\infty - (-\ii \pi \lambda \Delta z {k_x}^2)^m - \right] - \left[ - \sum_{m=0}^\infty - (-\ii \pi \lambda \Delta z {k_y}^2)^m - \right] - \Psi_0(\bm{k}) \\ - - &= - \exp\left( - -\ii \pi \lambda \Delta z {k_x}^2 - \right) - \exp\left( - -\ii \pi \lambda \Delta z {k_y}^2 - \right) - \Psi_0(\bm{k}). -\end{aligned} -``` -We can now write the final propagation operator by combining ${k_x}^2+{k_y}^2=|\bm{k}|^2$ to get ```{math} :label: eq:prop -\Psi(\bm{k}) +\Psi(\bm{k}, z_0 + \Delta z) = \exp\left( -\ii \pi \lambda \Delta z |\bm{k}|^2 \right) - \Psi_0(\bm{k}). + \Psi(\bm{k}, z_0). ``` -If there are still remaining slices that the electron wave has not passed through, we alternate steps 4 and 5 until the prope wavefunction reaches the output surface of the sample, where it is referred to as the `exit wave`. +[](#eq:prop) is the Fresnel free-space propagator written in Fourier space: each spatial frequency picks up a phase shift proportional to $|\bm{k}|^2$, which is the same form as the defocus operator in [](#tab:fft_pairs). In real space, applying this propagator is equivalent to convolving the wavefunction with the Fresnel kernel, which is proportional to $\exp\left[\ii \pi |\bm{r}|^2 / (\lambda \Delta z)\right]$. In practice we always apply the propagator in Fourier space, which requires only two FFTs and an element-wise multiplication. + +If there are still remaining slices that the electron wave has not passed through, we alternate steps 4 and 5 until the wavefunction reaches the exit surface of the sample, where it is referred to as the exit wave. #### 6. Transfer Function -After we have calculated the exit wave, we then need to apply the effects of our microscope optics to this wave and reach the detector plane by using a modulation transfer function (MTF). The MTF could be very simple; for example, in either a TEM diffraction simulation or a typical STEM simulation, we assume that the detector is placed at the far field limit and that therefore we only need to Fourier transform the exit wave to reach the detector plane. +After we have calculated the exit wave, we then need to apply the effects of the microscope optics after the specimen, and propagate the wave to the detector plane. This step can be very simple; for example, in either a TEM diffraction simulation or a typical STEM simulation, we assume that the detector is placed at the far field limit and that therefore we only need to Fourier transform the exit wave to reach the detector plane. -For a TEM imaging simulation, we typically use a contrast transfer function (CTF) for the MTF. The CTF can include aplanatic [optical aberrations](wiki:Optical_aberration) such as defocus, spherical aberration, astigmatism, and higher order coherent wave aberrations. It can also include more complex optical affects such as field distortion, image rotation, or planatic aberrations, where the aberrations vary as a function of position. The CTF equations are described in [](#CTF_page). +For a TEM imaging simulation, we apply the contrast transfer function (CTF) of the objective lens to the exit wave. The CTF can include aplanatic [optical aberrations](wiki:Optical_aberration) such as defocus, spherical aberration, astigmatism, and higher order coherent wave aberrations. It can also include more complex optical effects such as field distortion, image rotation, or off-axial aberrations, where the aberrations vary as a function of position in the field of view. The CTF equations are described in [](#CTF_page). + +Real detectors also reduce the contrast at high spatial frequencies, due to their finite pixel size and the spreading of the signal from each electron into neighboring pixels. This loss of contrast is described by the modulation transfer function (MTF) of the detector, which we can apply by multiplying the Fourier transform of the measured intensity, after it has been computed in the next step. #### 7. Detector Functions -Finally, we convert from the complex wavefunction to a real-valued detector measurement. This intensity measurement may be performed in real space for near-field imaging giving $I(\bm{r})$, or in Fourier space for far-field diffraction space measurements giving $I(\bm{k})$. The measured intensity for a pixelated detector is just the magnitude squared of the wavefunction $|\psi(\bm{r})|^2$ or $|\psi(\bm{k})|^2$. To simulated an integrating detector intensity $I_D(\bm{k})$, such as those for BF or DF STEM measurements, we apply a detector function $D(\bm{k})$ to our measured intensity using the expression +Finally, we convert from the complex wavefunction to a real-valued detector measurement. This intensity measurement may be performed in real space for near-field imaging giving $I(\bm{r})$, or in Fourier space for far-field diffraction space measurements giving $I(\bm{k})$. The measured intensity for a pixelated detector is just the magnitude squared of the wavefunction $|\psi(\bm{r})|^2$ or $|\psi(\bm{k})|^2$. To simulate an integrating detector intensity $I_D(\bm{k})$, such as those for BF or DF STEM measurements, we apply a detector function $D(\bm{k})$ to our measured intensity using the expression ```{math} :label: eq:detector_function I_D(\bm{R}) @@ -265,7 +234,7 @@ I_D(\bm{R}) ``` where $\bm{R}$ is the position of the STEM probe, and $D(\bm{k})$ is usually an array of zeroes and ones defining the detector shape. -Because we're performing a simulation, we do not need to used a fixed detector geometry. We could instead define variable detectors such as a set of concentric annular ring detectors with a spacing $\Delta k$, using the expression +Because we're performing a simulation, we do not need to use a fixed detector geometry. We could instead define variable detectors such as a set of concentric annular ring detectors with a spacing $\Delta k$, using the expression ```{math} :label: eq:detector_annular_rings I(\bm{R},n) @@ -278,14 +247,29 @@ I(\bm{R},n) ``` where *$\theta$* is the annular coordinate and $k'$ is the radial coordinate for $\bm{k}$-space. +(inelastic-scattering)= +### Inelastic Scattering + +The multislice method as described above simulates elastic scattering, where the fast electron does not lose energy to the specimen. +Real specimens also scatter electrons inelastically, by exciting phonons (atomic vibrations), plasmons (collective oscillations of the valence electrons), and single-electron transitions such as inner-shell ionization. +Each of these processes can be included in simulations, with different levels of approximation {cite:p}`allen_modelling_2015`: + +- **Phonons.** Thermal diffuse scattering from phonons is usually included using the frozen phonon method, described in [](#frozen-phonons), which averages the intensities of many elastic simulations with different random atomic displacements {cite:p}`loane_thermal_1991`. The energy lost to phonons is very small (tens to hundreds of meV), and so frozen phonon simulations treat phonon scattering as quasi-elastic {cite:p}`van_dyck_frozen_2009,forbes_thermal_2011`. +- **Absorptive potentials.** When we only need the elastic signal, for example in an energy-filtered image, the electrons removed by inelastic scattering can be approximated by adding a small imaginary component to the potential, which reduces the amplitude of the elastic wave {cite:p}`weickenmeier_computation_1991`. +- **Plasmons.** Plasmon scattering can be added to the multislice method using a Monte Carlo approach, where each simulated electron can randomly excite a plasmon in each slice, changing its energy and deflecting it by a small angle {cite:p}`mendis_inelastic_2019`. +- **Inner-shell ionization.** Core-loss signals such as EELS and EDX maps can be simulated by computing the transition potential for each ionization event, which describes the scattering of the fast electron while it excites a core electron to an unoccupied state. The inelastically scattered wave is then propagated through the rest of the specimen using the multislice method {cite:p}`dwyer_multislice_2005`. This requires one additional multislice calculation for each transition and each scattering depth, which can be accelerated substantially using scattering matrix methods {cite:p}`brown_linear-scaling_2019`. + +In this article we only consider elastic and thermal diffuse scattering, but the same simulation codes can often be extended to these inelastic signals; for example, *ab*TEM can compute core-loss transitions from DFT calculations. + We will use the multislice method in the rest of this article, so you can proceed to [](#wave-aberrations), or read below for information on other simulation methods! (blochwave-method)= ## Bloch Wave Simulations While the multislice method is widely used for electron scattering simulations due to its flexibility and scalability, the Bloch wave method provides an alternative approach that is especially efficient for small, periodic structures. +The Bloch wave method was introduced by {cite:t}`bethe_theorie_1928`, and detailed descriptions can be found in {cite:t}`humphreys_scattering_1979`, {cite:t}`spence_electron_1992`, and {cite:t}`zuo_dynamical_2017`. The Bloch wave formalism leverages the translational symmetry of the crystal lattice to express the electron wavefunction as a sum of periodic Bloch states, significantly reducing computational effort for crystalline samples. -This reduction in computational cost is possible because in a Bloch wave simulation, we only consider a small number of scattering vectors $k$, or equivalently to a small number of scattering angles $\alpha = \lambda k$ +This reduction in computational cost is possible because in a Bloch wave simulation, we only consider a small number of scattering vectors $\bm{g}$, or equivalently a small number of scattering angles $\alpha = \lambda |\bm{g}|$. The Bloch wave method is particularly advantageous for periodic systems, as it reduces the computational domain to a single unit cell and directly incorporates crystal symmetry. However, it is less suited for non-periodic systems or those with large-scale defects, where the multislice method is more appropriate. This approach requires careful numerical handling of eigenvalue decomposition and the summation over a sufficiently large number of reciprocal lattice vectors to ensure convergence. @@ -296,60 +280,74 @@ This approach requires careful numerical handling of eigenvalue decomposition an The electron wavefunction $\psi(\bm{r})$ inside a crystal can be expressed as a linear combination of Bloch waves, $b_j(\bm{k}_j, \bm{r})$, which satisfy the periodicity of the crystal potential: ```{math} +:label: eq:bloch_sum \psi(\bm{r}) = \sum_j \alpha_j b_j(\bm{k}_j, \bm{r}), ``` where ```{math} +:label: eq:bloch_wave b_j(\bm{k}_j, \bm{r}) = e^{2\pi i \bm{k}_j \cdot \bm{r}} \sum_{\bm{g}} c_{\bm{g},j} e^{2\pi i \bm{g} \cdot \bm{r}}, ``` where $\bm{k}_j$ are the Bloch wavevectors, $\bm{g}$ are the reciprocal lattice vectors, -$c_{\bm{g},j}$ are coefficients describing the contribution of each plane wave to the Bloch wave. +$c_{\bm{g},j}$ are coefficients describing the contribution of each plane wave to the Bloch wave, and $\alpha_j$ are the excitation coefficients that describe how strongly each Bloch wave is excited by the incident beam. This expansion allows us to represent the electron wavefunction as a superposition of states that inherently respect the periodicity of the crystal. +Below we show how to compute $\bm{k}_j$, $c_{\bm{g},j}$, and $\alpha_j$. -#### 2. Schrödinger Equation +#### 2. Schrödinger Equation for a Crystal + +Inside a crystal, the potential is periodic, and so it can be written as a Fourier series over the reciprocal lattice vectors $\bm{g}$, -We can rewrite Equation [](eq:schrodinger_start) as: ```{math} -\left[\nabla^2 + 4\pi^2 k_0^2\right] \psi(\bm{r}) = -4\pi^2 \sigma V(\bm{r}) \psi(\bm{r}), +V(\bm{r}) = \sum_{\bm{g}} V_{\bm{g}} e^{2\pi i \bm{g} \cdot \bm{r}}. ``` -where we approximate the second $z$-derivative term for high-energy electrons using $\frac{\partial^2}{\partial z^2} \approx -(2\pi/\lambda)^2$. This approximation assumes the electron wavefunction is dominated by a plane wave propagating along $z$ with wavevector $k_0 = 1 / \lambda$. - -To separate the rapidly oscillating component of the wavefunction, we use the substitution $\psi(\bm{r}) = \exp(2\pi i k_0 z) \phi(\bm{r})$, where $\phi(\bm{r})$ represents a slowly varying envelope function. Substituting into the equation yields: +We also define the scaled Fourier coefficients $U_{\bm{g}} = \sigma V_{\bm{g}} / (\pi \lambda)$, so that the right hand side of [](#eq:schrodinger_start) becomes $-4 \pi^2 \sum_{\bm{g}} U_{\bm{g}} e^{2\pi i \bm{g} \cdot \bm{r}} \psi(\bm{r})$. +Following the same idea as the multislice derivation, we write the wavefunction as a sum of plane waves, one for each diffracted beam $\bm{g}$, whose amplitudes $\psi_{\bm{g}}(z)$ vary slowly with the depth $z$: ```{math} -\left[-\frac{\hbar^2}{2m} \nabla^2 + eV(\bm{r})\right] \phi(\bm{r}) = E \phi(\bm{r}), +:label: eq:bloch_beams +\psi(\bm{r}) = \sum_{\bm{g}} \psi_{\bm{g}}(z) e^{2\pi i (\bm{k}_0 + \bm{g}) \cdot \bm{r}}, ``` -where $E = \hbar^2 k_0^2 / 2m$ is the total energy of the electron. This time-independent Schrödinger equation now describes the interaction of the electron wave with the crystal potential $V(\bm{r})$ in all spatial directions. -To account for the periodicity of the crystal lattice, we expand $\phi(\bm{r})$ as a sum of Bloch waves: +where $\bm{k}_0$ is the incident wavevector with magnitude $k_0 = 1/\lambda$. For simplicity, we only include the reciprocal lattice vectors $\bm{g}$ which are perpendicular to the beam direction (the zero order Laue zone). + +#### 3. Eigenvalue Problem + +We substitute [](#eq:bloch_beams) into [](#eq:schrodinger_start), multiply both sides by $e^{-2\pi i (\bm{k}_0 + \bm{h}) \cdot \bm{r}}$, and integrate over the unit cell. +Because plane waves with different reciprocal lattice vectors are orthogonal over the unit cell, only the terms with $\bm{g} = \bm{h}$ survive this integration, which gives one equation for each beam. +As in the multislice derivation, we also neglect the second derivatives $d^2 \psi_{\bm{g}} / dz^2$, and obtain a set of coupled first-order differential equations for the beam amplitudes: ```{math} -\phi(\bm{r}) = \sum_{\bm{g}} c_{\bm{g},j} e^{2\pi i \bm{g} \cdot \bm{r}}, +:label: eq:bloch_coupled +\frac{d \psi_{\bm{g}}(z)}{dz} += 2 \pi i \left[ s_{\bm{g}} \psi_{\bm{g}}(z) + \sum_{\bm{h}} \frac{U_{\bm{g}-\bm{h}}}{2 k_0} \psi_{\bm{h}}(z) \right], ``` -where $\bm{g}$ are reciprocal lattice vectors, and $c_{\bm{g},j}$ are the coefficients of the expansion. Similarly, the crystal potential is expressed as a Fourier series: +where ```{math} -V(\bm{r}) = \sum_{\bm{g}} V_{\bm{g}} e^{2\pi i \bm{g} \cdot \bm{r}}. +s_{\bm{g}} = \frac{k_0^2 - |\bm{k}_0 + \bm{g}|^2}{2 k_0} ``` -Substituting these expansions into the Schrödinger equation results in a set of coupled equations for the plane wave coefficients $c_{\bm{g},j}$, which form the basis for Bloch wave simulations. - -#### 3. Eigenvalue Problem - -Inserting the expansions into the Schrödinger equation yields: +is the excitation error of beam $\bm{g}$, which measures how far the reciprocal lattice point $\bm{g}$ lies from the Ewald sphere. +We can write these equations compactly in matrix form as ```{math} -\sum_{\bm{g}} \left(k_0^2 - |\bm{k}_j + \bm{g}|^2\right) c_{\bm{g},j} e^{2\pi i (\bm{k}_j + \bm{g}) \cdot \bm{r}} -= -\sum_{\bm{g},\bm{h}} V_{\bm{g} - \bm{h}} C_{\bm{h},j} e^{2\pi i (\bm{k}_j + \bm{g}) \cdot \bm{r}}. +:label: eq:bloch_ode +\frac{d \bm{\Psi}(z)}{dz} = 2 \pi i \, \bm{A} \, \bm{\Psi}(z), ``` -By matching coefficients of $\exp^{2\pi i (\bm{k}_j + \bm{g}) \cdot \bm{r}}$, we obtain the eigenvalue equation: +where $\bm{\Psi}(z)$ is a vector containing all of the beam amplitudes $\psi_{\bm{g}}(z)$, and the structure matrix $\bm{A}$ has diagonal elements $A_{\bm{g}\bm{g}} = s_{\bm{g}} + U_{\bm{0}}/(2 k_0)$ and off-diagonal elements $A_{\bm{g}\bm{h}} = U_{\bm{g}-\bm{h}}/(2 k_0)$. + +[](#eq:bloch_ode) is a first-order matrix differential equation, and this is the key to understanding the Bloch wave method. Its solution for a crystal of thickness $z$ is ```{math} -\left[2k_0 s_{\bm{g}} - 2\gamma_j k_{0,z}\right] c_{\bm{g},j} + \sum_{\bm{h} \neq \bm{g}} V_{\bm{g} - \bm{h}} C_{\bm{h},j} = 0, +:label: eq:bloch_solution +\bm{\Psi}(z) = \exp\left(2 \pi i \bm{A} z \right) \bm{\Psi}(0). ``` -where $s_{\bm{g}} = (k_0^2 - |\bm{k}_0 + \bm{g}|^2) / 2k_0$ is the excitation error. -We solve this set of linear equations to find the eigenvalues $2\gamma_j k_{0,z}$ and eigenvectors $c_{\bm{g},j}$, representing the Bloch wave propagation constants and coefficients. +To evaluate the matrix exponential, we compute the eigenvalue decomposition $\bm{A} = \bm{C} \bm{\Gamma} \bm{C}^{-1}$, where $\bm{\Gamma}$ is a diagonal matrix containing the eigenvalues $\gamma_j$, and the columns of $\bm{C}$ are the eigenvectors with elements $c_{\bm{g},j}$. +The matrix exponential is then $\exp(2 \pi i \bm{A} z) = \bm{C} \exp(2 \pi i \bm{\Gamma} z) \bm{C}^{-1}$, where $\exp(2 \pi i \bm{\Gamma} z)$ is a diagonal matrix with elements $e^{2\pi i \gamma_j z}$. +For a real crystal potential, $U_{\bm{g}-\bm{h}} = U^*_{\bm{h}-\bm{g}}$, the structure matrix is Hermitian, and the inverse $\bm{C}^{-1} = \bm{C}^\dagger$ is simply the conjugate transpose of $\bm{C}$. +Each eigenvector is one Bloch wave: $c_{\bm{g},j}$ are the plane wave coefficients in [](#eq:bloch_wave), and the eigenvalue $\gamma_j$ gives the Bloch wavevector $\bm{k}_j = \bm{k}_0 + \gamma_j \hat{\bm{z}}$, which differs from the incident wavevector only along the beam direction. +Once $\bm{A}$ has been diagonalized, the wavefunction at any depth is given by the simple phase factors $e^{2\pi i \gamma_j z}$, as described in the next steps. #### 4. Bloch Wave Propagation @@ -371,18 +369,18 @@ At the entrance surface ($z=0$), the wavefunction at the entrance surface of the ```{math} \psi_0(\bm{r}) = \sum_{\bm{g}} \psi_{\bm{g}}(0) e^{2\pi i \bm{g} \cdot \bm{r}}, ``` -where $\psi_{\bm{g}}(0)$ represents the Fourier components of the input wavefunction. These Fourier components serve as the basis for expanding $\psi_0(\bm{r})$ in terms of Bloch waves. +where $\psi_{\bm{g}}(0)$ represents the Fourier components of the input wavefunction. For plane wave illumination along $\bm{k}_0$, $\psi_{\bm{0}}(0) = 1$ and all other $\psi_{\bm{g}}(0) = 0$. -The expansion of $\psi_0(\bm{r})$ into Bloch waves is achieved by determining the weighting coefficients $\alpha_j$, which describe the contribution of each Bloch wave $b_j(\bm{r})$ to the input wavefunction. By solving: +The expansion of $\psi_0(\bm{r})$ into Bloch waves is achieved by determining the weighting coefficients $\alpha_j$, which describe the contribution of each Bloch wave $b_j(\bm{r})$ to the input wavefunction. These coefficients are the elements of the vector $\bm{C}^{-1} \bm{\Psi}(0) = \bm{C}^{\dagger} \bm{\Psi}(0)$, or ```{math} \alpha_j = \sum_{\bm{g}} c_{\bm{g},j}^* \psi_{\bm{g}}(0), ``` -we relate the Bloch wave expansion coefficients $\alpha_j$ to the plane wave coefficients $\psi_{\bm{g}}(0)$ of the input wavefunction and the coupling coefficients $c_{\bm{g},j}$, which describe the relationship between the plane wave and Bloch wave bases. +which relates the Bloch wave expansion coefficients $\alpha_j$ to the plane wave coefficients $\psi_{\bm{g}}(0)$ of the input wavefunction and the coupling coefficients $c_{\bm{g},j}$, which describe the relationship between the plane wave and Bloch wave bases. #### 6. Output Wavefunction -At the exit surface ($z = z_{\text{max}}$, corresponding to the crystal thickness $t$), the real-space wavefunction $\psi(\bm{r})$ is expressed using the Bloch wave expansion. The wavefunction is given by: +At the exit surface ($z = z_{\text{max}}$, corresponding to the crystal thickness $t$), the real-space wavefunction $\psi(\bm{r})$ is expressed using the Bloch wave expansion. Dropping the common factor $e^{2\pi i \bm{k}_0 \cdot \bm{r}}$, as we did for the multislice method, the wavefunction is given by: ```{math} \psi(\bm{r}) = \sum_{j} \alpha_j \left( \sum_{\bm{g}} c_{\bm{g},j} e^{2\pi i \bm{g} \cdot \bm{r}} \right) e^{2\pi i \gamma_j t}. diff --git a/figures/ctf_psf.png b/figures/ctf_psf.png index 7036643..bfd28ef 100644 Binary files a/figures/ctf_psf.png and b/figures/ctf_psf.png differ diff --git a/inputs.md b/inputs.md index de79697..95fefe1 100644 --- a/inputs.md +++ b/inputs.md @@ -88,4 +88,60 @@ $$ Finally, we want to stress the perhaps non-intuitive fact that although some codes allow the sampling of diffraction patterns to be separately set, due to the reciprocal pixel-wise numerical correspondence between the real and reciprocal spaces, the only true way to improve reciprocal-space sampling, i.e. decrease $\Delta k$, is to increase the size of the supercell in $x$ and $y$. -In *ab*TEM we choose to retain the direct correspondence between the real-space extent of the potential and the reciprocal-space sampling, and only use interpolation to *decrease* the number of pixels along one direction to reach [uniform sampling](https://abtem.github.io/doc/reference/api/_autosummary/abtem.measurements.DiffractionPatterns.html#abtem.measurements.DiffractionPatterns.interpolate). You can find some more information in the [*ab*TEM documentation](https://abtem.github.io/doc/user_guide/appendix/antialiasing.html). \ No newline at end of file +In *ab*TEM we choose to retain the direct correspondence between the real-space extent of the potential and the reciprocal-space sampling, and only use interpolation to *decrease* the number of pixels along one direction to reach [uniform sampling](https://abtem.github.io/doc/reference/api/_autosummary/abtem.measurements.DiffractionPatterns.html#abtem.measurements.DiffractionPatterns.interpolate). You can find some more information in the [*ab*TEM documentation](https://abtem.github.io/doc/user_guide/appendix/antialiasing.html). + +(choosing-sampling)= +### Choosing the Grid Size and Sampling + +The real-space sampling and the size of the simulation cell are the two most important numerical parameters in a simulation, and choosing them poorly can produce errors which are easy to miss {cite:p}`kirkland2020`. + +The real-space sampling $\Delta x$ sets the highest scattering angle included in the simulation. +Because the transmission operator multiplies the wavefunction by the transmission function in real space, which is a convolution in Fourier space, the multislice method can produce aliasing artifacts at the edges of Fourier space. +To prevent these, most codes including *ab*TEM apply an antialiasing aperture which removes all spatial frequencies above $2/3$ of $k_{\mathrm{max}}$, giving a maximum scattering angle of +```{math} +:label: eq:max_angle +\alpha_{\mathrm{max}} = \frac{2}{3} \frac{\lambda}{2 \Delta x} = \frac{\lambda}{3 \Delta x}. +``` +For example, at 200 kV ($\lambda \approx 0.0251$ Å) a sampling of $\Delta x = 0.05$ Å gives $\alpha_{\mathrm{max}} \approx 168$ mrad. +Any electrons scattered beyond this angle are removed from the simulation. +For STEM simulations, $\alpha_{\mathrm{max}}$ must therefore be larger than the outer angle of every detector we want to simulate, otherwise the simulated ADF signals will be too low. +The sampling must also be fine enough to describe the sharply peaked atomic potentials, which is why typical values are between 0.02 and 0.05 Å. + +The size of the simulation cell $L$ sets the reciprocal-space sampling $\Delta k = 1/L$. +In STEM, the cell must be large enough to contain the full probe, including the probe tails and any spreading of the probe through the thickness of the specimen and from defocus. +Because the multislice method uses periodic boundary conditions, a probe which is too large for the cell will overlap with its own periodic images, producing wrap-around artifacts. +The cell must also be large enough to sample the diffraction pattern finely, since the number of pixels across the diameter of the bright field disk is $2 \alpha_{\mathrm{cutoff}} L / \lambda$, where $\alpha_{\mathrm{cutoff}}$ is the convergence semiangle. +For example, a $20$ mrad probe at 200 kV in a $20$ Å cell gives approximately 32 pixels across the bright field disk, which is sufficient for most detector geometries. +Small or finely structured detectors, such as those used for DPC or 4D-STEM, require finer sampling of the diffraction pattern and therefore larger cells. + +The safest way to choose these parameters is to perform a convergence test: repeat a small test simulation with finer sampling and a larger cell, and confirm that the quantity of interest (for example an image contrast or an integrated detector intensity) no longer changes by more than the required precision. +Note that the real-space sampling of the wavefunction is independent of the STEM probe step size, which we discuss in [](#imaging). + +(frozen-phonons)= +## Thermal Vibrations and Frozen Phonons + +Atoms in a real specimen vibrate about their equilibrium positions, even at cryogenic temperatures due to zero-point motion. +A fast electron passes through a typical TEM specimen in approximately $10^{-16}$ s, which is much shorter than the period of atomic vibrations (approximately $10^{-13}$ s). +Each electron therefore sees the atoms frozen in a single set of displaced positions. +In the frozen phonon method, we perform many multislice simulations, each with a different random set of atomic displacements, and average the resulting intensities incoherently {cite:p}`loane_thermal_1991`. + +In the simplest model, the Einstein model, each atom is displaced independently by a random Gaussian displacement along each direction, with a root-mean-square displacement $u$ for each element. +These values can be taken from the Debye-Waller factors $B = 8 \pi^2 u^2$ measured by X-ray or neutron diffraction, and are typically on the order of $0.1$ Å at room temperature. +More accurate models use correlated displacements from molecular dynamics or phonon calculations {cite:p}`forbes_thermal_2011`. + +Averaging the intensities over many configurations produces thermal diffuse scattering (TDS), the diffuse intensity between and beyond the Bragg disks, which dominates the signal at high scattering angles. +TDS is therefore essential for quantitative simulations of HAADF-STEM images, and also reduces the intensity of the Bragg beams and changes the contrast of TEM images and CBED patterns. +Even though phonon scattering is an inelastic process, the energy lost by the fast electron is only tens to hundreds of meV, and the frozen phonon method describes the resulting intensity accurately {cite:p}`van_dyck_frozen_2009`. + +Because the frozen phonon result is a Monte Carlo average, its statistical error decreases with the number of configurations $N$ as $1/\sqrt{N}$. +The number of configurations needed depends on the measurement. +Signals which integrate over large regions of the diffraction pattern, such as ADF images, typically converge with fewer configurations than individual diffraction patterns, where the TDS between the Bragg disks remains speckled until many configurations have been averaged. +Larger simulation cells also require fewer configurations, because each configuration already contains more independently displaced atoms. +As for the sampling, a practical approach is to increase $N$ (for example from 4 to 8 to 16 configurations) until the quantity of interest changes by less than the required precision. +In *ab*TEM, frozen phonons are defined by wrapping the atomic model, for example + +```python +frozen_phonons = abtem.FrozenPhonons(atoms, num_configs=16, sigmas=0.1) +``` + +where `sigmas` is the root-mean-square displacement $u$ in Å, which can also be given separately for each element. diff --git a/math.md b/math.md index 39077d4..28a623d 100644 --- a/math.md +++ b/math.md @@ -33,7 +33,7 @@ This unit is a number which satisfies the equation i^2 = -1. ``` Examples of complex numbers include $3+5i$, $4/5-(9/7)i$, $-0.23+4.33i$, and $1+\sqrt{5}i$. [](#fig_complex) shows examples of complex numbers. -These are enormously powerful, and essential when performing calclations using [quantum mechanics](wiki:Quantum_mechanics). +These are enormously powerful, and essential when performing calculations using [quantum mechanics](wiki:Quantum_mechanics). ```{figure} #app:complex_numbers :name: fig_complex @@ -47,24 +47,53 @@ The magnitude of a complex number $z=a+ib$ is defined by its Euclidean length :label: eq:mag |z| = \sqrt{a^2 + b^2}. ``` -This quantity is also sometimes referred to as the magnitude or the absolute value. -The second quantity we define is the complex argument, defined as the angle $\phi$ from the real axis to the complex vector. -Note that we usually want the signed angle, meaning we use which quadrant the complex value $(a,b)$ is located in to determine the signed angle using the expression +This quantity is also sometimes referred to as the modulus or the absolute value. +The second quantity we define is the complex argument, defined as the angle $\phi$ measured counterclockwise from the positive real axis to the complex vector $(a,b)$, as shown in [](#fig_complex). +The ratio $b/a$ alone does not determine this angle, because $(a,b)$ and $(-a,-b)$ have the same ratio but point in opposite directions. +The standard function $\arctan(b/a)$ only returns angles between $-\pi/2$ and $\pi/2$, and so we also need the signs of $a$ and $b$ to determine which quadrant the complex value is located in. +The two-argument arctangent function performs this quadrant correction, giving a signed angle between $-\pi$ and $\pi$, ```{math} :label: eq:arg -\phi = \arctan2(b, a). +\phi = \arctan2(b, a) = +\begin{cases} +\arctan(b/a) & a > 0, \\ +\arctan(b/a) + \pi & a < 0,\ b \geq 0, \\ +\arctan(b/a) - \pi & a < 0,\ b < 0, \\ +\pi/2 & a = 0,\ b > 0, \\ +-\pi/2 & a = 0,\ b < 0. +\end{cases} ``` -In programming, functions which measure this value are often named $\arg(z)$ or $\rm{angle}(z)$. -One of the most powerful identities using complex numbers is [Euler's formula](wiki:Euler%27s_formula) +The angle is undefined for $z=0$, and most programming languages return $\phi = 0$ in this case. +In programming, functions which measure this value are often named $\arg(z)$ or $\rm{angle}(z)$, for example `numpy.angle()` in Python. +Going the other way, we can recover the real and imaginary parts from the magnitude and angle using $a = |z| \cos \phi$ and $b = |z| \sin \phi$. + +One of the most powerful identities using complex numbers is [Euler's formula](wiki:Euler%27s_formula), which for a real angle $\phi$ is ```{math} :label: eq:euler -\exp(i z) = \cos(z) + i \sin(z). +\exp(i \phi) = \cos(\phi) + i \sin(\phi). +``` +This expression links complex numbers to the trigonometric functions, and combining it with the expressions for $a$ and $b$ above allows us to write any complex number in polar form as +```{math} +:label: eq:polar +z = a + ib = |z| \left[\cos(\phi) + i \sin(\phi)\right] = |z| \exp(i \phi). ``` -This expression links complex numbers to the trigonometric functions. This relationship foreshadows a key upcoming concept, namely that the trigonometric oscillations describe waves, where the physical concept of the complex angle will be mapped onto relative phase shifts of electron waves. We will therefore usually refer to the complex argument as the **phase** of a given complex value. As we will see, even though computers internally store complex numbers using real and imaginary components as $z=(a,b)$, it is often more intuitive for us to represent these numbers using their magnitude and phase, i.e. as $|z| \exp{(i \phi)}$. +Multiplication shows why. +For two complex numbers $z_1 = a_1 + i b_1 = |z_1| \exp(i \phi_1)$ and $z_2 = a_2 + i b_2 = |z_2| \exp(i \phi_2)$, using [](#eq:imag) the product in Cartesian form is +```{math} +:label: eq:product_cartesian +z_1 z_2 = (a_1 a_2 - b_1 b_2) + i (a_1 b_2 + a_2 b_1), +``` +while in polar form it is simply +```{math} +:label: eq:product_polar +z_1 z_2 = |z_1| |z_2| \exp\left[i (\phi_1 + \phi_2)\right]. +``` +When we multiply two complex numbers, their magnitudes multiply and their phases add. +We will use this property many times, for example when an electron wave passes through a thin specimen and picks up a phase shift, which we compute by multiplying the wave by a complex number with unit magnitude. We also sometimes take the [conjugate](wiki:Complex_conjugate) of complex numbers, which means that we reverse the sign of the imaginary part. This operation is defined for a complex number $z=a+i b$ as @@ -77,6 +106,8 @@ or for $z=|z| \exp{(i \phi)}$ as :label: eq:complex_conjugate_2 z^* = |z|\exp{(-i \phi)}. ``` +Multiplying a complex number by its conjugate gives the squared magnitude $z z^* = a^2 + b^2 = |z|^2$, which is a real number. +This is how we compute measured intensities from complex electron wavefunctions. (math_fourier_transform)= ## 1D Fourier Transform @@ -99,7 +130,7 @@ and we can recover the original function with the inverse transform :label: eq:ft_inverse f(x) = \frac{1}{2 \pi} \int_{-\infty}^{\infty} F(\omega) \exp\left( - -i \omega x + i \omega x \right) d\omega. ``` @@ -122,7 +153,7 @@ We instead use the [discrete Fourier transform](wiki:Discrete_Fourier_transform) \end{aligned} ``` where $N$ is the number of samples for both functions, and $f_n$ is the $n$'th sample of $f(x)$. -The inverse DTF is defined as +The inverse DFT is defined as ```{math} :label: eq:dft_inverse \begin{aligned} @@ -137,12 +168,12 @@ The inverse DTF is defined as ``` where $F_k$ is the $k$'th sample of $F(k)$. Both $f(x)$ and $F(k)$ can be complex-valued. -If either sequence is purely real-valued, the other will be conjugate symmetric, which means that if reverse the sequence and take the complex conjugate, we will recover the same sequence. +If either sequence is purely real-valued, the other will be conjugate symmetric, which means that if we reverse the sequence and take the complex conjugate, we will recover the same sequence. [](#fig:fft_1d) shows an interactive version of the 1D discrete Fourier transform. Try switching between the different preset functions. You can also change the amplitude of $F(k)$ by clicking and moving the points up and down, or the phase by moving left and right. -It can be difficult at first to gain intution for how changing the values of a given spatial frequency $F_k$ will change the output, but working in Fourier space will become second nature to you when you routinely perform STEM simulations. +It can be difficult at first to gain intuition for how changing the values of a given spatial frequency $F_k$ will change the output, but working in Fourier space will become second nature to you when you routinely perform STEM simulations. ```{figure} #app:fft_1d :name: fig:fft_1d @@ -195,7 +226,7 @@ We can simplify this notation by combining the two sequential operations into on ``` where $\bm{r} = (x,y)$ and $\bm{k} = (k_x,k_y)$ are the 2D coordinate systems for real and diffraction space respectively. As in the 1D case, in practice we use the [fast Fourier transform](https://en.wikipedia.org/wiki/Fast_Fourier_transform) (FFT) algorithm to compute these transforms with small computational overhead. -[](#fig:fft_2d) shows an interactive version of the forward and and inverse 2D FFT. +[](#fig:fft_2d) shows an interactive version of the forward and inverse 2D FFT. ```{figure} #app:fft_2d @@ -206,7 +237,7 @@ Both images have been FFT-shifted, with origins shown as a red `+` symbol. Amplitude is shown as the pixel values, while phase is shown as a periodic colorwheel. ``` -On the left panel of [](fig:fft_2d), you can click to swap individual pixels between 0 and 1 in Fourier space, while observing the response on the real space function. +On the left panel of [](#fig:fft_2d), you can click to swap individual pixels between 0 and 1 in Fourier space, while observing the response on the real space function. On the right panel, you can click and drag to shift the function by a distance $\Delta \bm{r}$, which is applied by using the Fourier shift theorem as ```{math} f(\bm{r} - \Delta \bm{r}) = diff --git a/myst.yml b/myst.yml index 476b557..e4414b9 100644 --- a/myst.yml +++ b/myst.yml @@ -87,10 +87,10 @@ project: CPU: central processing unit CTF: contrast transfer function DF: dark-field - DFT: discete Fourier transform + DFT: discrete Fourier transform GPU: graphics processing unit FFT: fast Fourier transform - MTF: microscope transfer function + MTF: modulation transfer function STEM: scanning transmission electron microscopy S/TEM: scanning transmission electron microscopy TEM: transmission electron microscopy diff --git a/notebooks/03.3_concepts_FFT2D.ipynb b/notebooks/03.3_concepts_FFT2D.ipynb index 528fe26..f95ec46 100644 --- a/notebooks/03.3_concepts_FFT2D.ipynb +++ b/notebooks/03.3_concepts_FFT2D.ipynb @@ -9,9 +9,7 @@ "title: Interactive figure for 2D Fourier transforms\n", "authors: [Colin Ophus]\n", "date: 2023/12/23\n", - "---\n", - "\n", - "TODO: add colorwheel legend?" + "---" ] }, { @@ -96,7 +94,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "2812738dde394361bd66be80c42826a0", + "model_id": "6879a037ff4c4505902f4588a58d50ec", "version_major": 2, "version_minor": 0 }, @@ -125,8 +123,9 @@ "# fig = plt.figure(figsize=(680/dpi, 340/dpi), dpi=dpi)\n", "with plt.ioff():\n", " fig = plt.figure(figsize=(500/dpi, 300/dpi), dpi=dpi)\n", - "ax_fft = fig.add_axes([0.01, 0.02, 0.41, 0.96])\n", - "ax_real = fig.add_axes([0.51, 0.02, 0.41, 0.96])\n", + "ax_fft = fig.add_axes([0.01, 0.25, 0.41, 0.68])\n", + "ax_real = fig.add_axes([0.51, 0.25, 0.41, 0.68])\n", + "ax_wheel = fig.add_axes([0.355, 0.02, 0.22, 0.22])\n", "\n", "# global variables\n", "fig.dragging = False\n", @@ -136,10 +135,10 @@ "\n", "# plot initial images\n", "h_im_fft = ax_fft.imshow(\n", - " np.fft.fftshift(complex_im(fig.im_fft)),\n", + " np.fft.fftshift(complex_im(fig.im_fft), axes = (0,1)),\n", ")\n", "h_im_real = ax_real.imshow(\n", - " np.fft.fftshift(complex_im(im_real)),\n", + " np.fft.fftshift(complex_im(im_real), axes = (0,1)),\n", ")\n", "# origins\n", "ax_fft.scatter(\n", @@ -157,6 +156,20 @@ " s = 100,\n", ")\n", "\n", + "# colorwheel legend for phase (brightness is amplitude)\n", + "wheel_coords = np.linspace(-1, 1, 128)\n", + "wheel = wheel_coords[None,:] + 1j*wheel_coords[::-1,None]\n", + "wheel_rgb = complex_im(wheel, amp_range = (0,1))\n", + "wheel_alpha = (np.abs(wheel) <= 1)[:,:,None].astype('float')\n", + "ax_wheel.imshow(\n", + " np.concatenate((wheel_rgb, wheel_alpha), axis = 2),\n", + " extent = (-1,1,-1,1),\n", + ")\n", + "ax_wheel.text(1.08, 0, '0', ha = 'left', va = 'center')\n", + "ax_wheel.text(0, 1.06, 'π/2', ha = 'center', va = 'bottom')\n", + "ax_wheel.text(-1.08, 0, 'π', ha = 'right', va = 'center')\n", + "ax_wheel.text(-1.7, 0, 'phase', ha = 'right', va = 'center')\n", + "\n", "# Appearance\n", "fig.canvas.resizable=False\n", "fig.canvas.toolbar_visible = True\n", @@ -169,17 +182,18 @@ "# Axes appearance\n", "ax_fft.axis('off');\n", "ax_real.axis('off');\n", + "ax_wheel.axis('off');\n", "ax_fft.set_title('Click to switch pixels on and off');\n", "ax_real.set_title('Drag to move with Fourier shift theorem');\n", "\n", "def update_images():\n", - " h_im_fft.set_data(np.fft.fftshift(complex_im(fig.im_fft)))\n", + " h_im_fft.set_data(np.fft.fftshift(complex_im(fig.im_fft), axes = (0,1)))\n", " im_real = make_im_real(fig.im_fft,shape_real) \n", - " h_im_real.set_data(np.fft.fftshift(complex_im(im_real)))\n", + " h_im_real.set_data(np.fft.fftshift(complex_im(im_real), axes = (0,1)))\n", "\n", "def button_press_callback(event):\n", " # if left click and within axes, proceed with mouse movement event\n", - " if event.inaxes is None:\n", + " if event.inaxes is None or event.inaxes is ax_wheel:\n", " return\n", " if event.button != 1:\n", " return\n", diff --git a/notebooks/07_ctf_psf_widget.ipynb b/notebooks/07_ctf_psf_widget.ipynb index e8c432c..6cffa19 100644 --- a/notebooks/07_ctf_psf_widget.ipynb +++ b/notebooks/07_ctf_psf_widget.ipynb @@ -26,6 +26,7 @@ "from matplotlib import cm, colors as mcolors, pyplot as plt\n", "import numpy as np\n", "from mpl_toolkits.axes_grid1 import make_axes_locatable\n", + "from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar\n", "from colorspacious import cspace_convert\n", "\n", "from IPython.display import display\n", @@ -164,6 +165,21 @@ " add_colorbar_arg(ax)\n", " ax.set_title(title)\n", "\n", + "# real space scale bar (the PSF field of view is fixed by gpts and sampling)\n", + "scalebar_length = 20 # A\n", + "scalebar = AnchoredSizeBar(\n", + " ax_psf.transData,\n", + " scalebar_length / probe.sampling[1],\n", + " f\"{scalebar_length} Å\",\n", + " loc = \"lower left\",\n", + " color = \"white\",\n", + " frameon = False,\n", + " size_vertical = 2,\n", + " pad = 0.6,\n", + " sep = 4,\n", + ")\n", + "ax_psf.add_artist(scalebar)\n", + "\n", "fig.tight_layout()\n", "\n", "fig.canvas.resizable = False\n", @@ -182,13 +198,17 @@ "metadata": {}, "outputs": [], "source": [ - "def update_aberrations(energy, defocus, C30, semiangle):\n", + "def update_aberrations(energy, defocus, C12, C21, C23, C30, C50, semiangle):\n", "\n", " ctf = abtem.CTF(\n", " energy=energy*1e3, \n", " semiangle_cutoff = semiangle,\n", " defocus = defocus,\n", + " C12 = C12,\n", + " C21 = C21*10,\n", + " C23 = C23*10,\n", " C30 = C30*1e7,\n", + " C50 = C50*1e7,\n", " )\n", "\n", " probe_init = abtem.Probe(\n", @@ -229,6 +249,13 @@ "\n", "# update the plots with a pre-selected function\n", "def select_preset_eventhandler(change):\n", + " if change.new in option_list[1:]:\n", + " # presets only use round aberrations\n", + " C12.value = 0\n", + " C21.value = 0\n", + " C23.value = 0\n", + " C50.value = 0\n", + "\n", " if change.new == option_list[1]: #uncorrected STEM\n", " energy.value = 300\n", " defocus.value = 0\n", @@ -253,7 +280,7 @@ " \n", " if change.new == option_list[4]: #SEM\n", " energy.value = 20\n", - " defocus.vaue = 0\n", + " defocus.value = 0\n", " C30.value = 5\n", " semiangle.value = 2.5\n", " \n", @@ -270,39 +297,81 @@ ")\n", "dropdown.observe(select_preset_eventhandler, names='value')\n", "\n", + "# aberrations are labelled C(n,m) with their common names, non-round aberrations have angle 0\n", "style = {\n", - " 'description_width': 'initial',\n", + " 'description_width': '150px',\n", "}\n", + "layout = ipywidgets.Layout(width='335px')\n", "\n", "energy = ipywidgets.IntSlider(\n", " value=60, min=10, max=300, \n", " step = 2,\n", " description = \"energy (kV)\",\n", " style = style,\n", + " layout = layout,\n", + ")\n", + "\n", + "semiangle = ipywidgets.FloatLogSlider(\n", + " value=20,\n", + " base=10,\n", + " min=0, # min exponent of base\n", + " max=1.6021, # max exponent of base\n", + " step=0.05, # exponent step\n", + " description = \"semiangle (mrad)\",\n", + " style = style,\n", + " layout = layout,\n", ")\n", "\n", "defocus = ipywidgets.IntSlider(\n", " value = 0, min = -2000, max = 2000, \n", " step = 20,\n", - " description = \"defocus / -1*C1 (A)\",\n", - " style = style\n", + " description = \"defocus Δf = −C1,0 (Å)\",\n", + " style = style,\n", + " layout = layout,\n", ")\n", "\n", "C30 = ipywidgets.FloatSlider(\n", " value = 0, min = 0, max =5, \n", " step = 0.1,\n", - " description = \"C3 (mm)\",\n", - " style = style\n", + " description = \"C3,0 spherical (mm)\",\n", + " style = style,\n", + " layout = layout,\n", ")\n", "\n", - "semiangle = ipywidgets.FloatLogSlider(\n", - " value=20,\n", - " base=10,\n", - " min=0, # min exponent of base\n", - " max=1.6021, # max exponent of base\n", - " step=0.05, # exponent step\n", - " description = \"semiangle (mrad)\",\n", + "C12 = ipywidgets.FloatSlider(\n", + " value = 0, min = 0, max = 200, \n", + " step = 2,\n", + " readout_format = '.0f',\n", + " description = \"C1,2 2-fold astig. (Å)\",\n", " style = style,\n", + " layout = layout,\n", + ")\n", + "\n", + "C21 = ipywidgets.FloatSlider(\n", + " value = 0, min = 0, max = 1000, \n", + " step = 10,\n", + " readout_format = '.0f',\n", + " description = \"C2,1 axial coma (nm)\",\n", + " style = style,\n", + " layout = layout,\n", + ")\n", + "\n", + "C23 = ipywidgets.FloatSlider(\n", + " value = 0, min = 0, max = 1000, \n", + " step = 10,\n", + " readout_format = '.0f',\n", + " description = \"C2,3 trefoil (nm)\",\n", + " style = style,\n", + " layout = layout,\n", + ")\n", + "\n", + "C50 = ipywidgets.FloatSlider(\n", + " value = 0, min = 0, max = 20, \n", + " step = 0.5,\n", + " readout_format = '.1f',\n", + " description = \"C5,0 5th-order sph. (mm)\",\n", + " style = style,\n", + " layout = layout,\n", ")\n", "\n", "ipywidgets.interactive_output(\n", @@ -311,7 +380,11 @@ " 'energy':energy,\n", " 'defocus':defocus,\n", " 'semiangle':semiangle,\n", + " 'C12':C12,\n", + " 'C21':C21,\n", + " 'C23':C23,\n", " 'C30':C30,\n", + " 'C50':C50,\n", " },\n", ")\n", "None" @@ -326,7 +399,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a68b3b66d72443479925c5f6bfcad35d", + "model_id": "a542dcb1da4742efb51e292f65951715", "version_major": 2, "version_minor": 0 }, @@ -347,14 +420,20 @@ " ipywidgets.HBox([\n", " ipywidgets.VBox([\n", " energy,\n", - " defocus,\n", " semiangle,\n", + " defocus,\n", " C30, \n", " ]),\n", " ipywidgets.VBox([\n", - " ipywidgets.Label('Preset probes',layout=ipywidgets.Layout(width='100px',height='30px')), \n", - " dropdown,\n", - " ])\n", + " C12,\n", + " C21,\n", + " C23,\n", + " C50,\n", + " ]),\n", + " ]),\n", + " ipywidgets.HBox([\n", + " ipywidgets.Label('Preset probes',layout=ipywidgets.Layout(width='100px',height='30px')), \n", + " dropdown,\n", " ]),\n", " ],\n", ")\n", diff --git a/notebooks/08_simple_TEM_imaging.ipynb b/notebooks/08_simple_TEM_imaging.ipynb index 8881d1e..e42aabf 100644 --- a/notebooks/08_simple_TEM_imaging.ipynb +++ b/notebooks/08_simple_TEM_imaging.ipynb @@ -55,7 +55,7 @@ "outputs": [ { "data": { - "image/png": "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+itefvnlwn3iPodEEBHR/eC5iejOOFSPSCH/+9//EB0dDa1WK0u6NmzY8J6f4+uvv5YnuFatWhXuE0uziecU62Y0adKknFtNRESWjOcmojtj4kSkgNzcXHn17cUXX5TjyF977TWcOnUK/v7+9/Q84urdO++8g/79+xvtHzFiBFatWsWTExERlRnPTUR3x8SJSAHvvfceUlNTMX/+fLi5ueGXX37BwIED5WTasjp8+DDOnj2L9evXo06dOkaPifKvEyZMwKxZs2RFJCIiotLw3ER0d5zjRFTBdu/ejblz58qhDB4eHrC1tZX3//zzTyxZsuSeruiJybbFT0yCqIqUkpKCzZs3l3PriYjIEvHcRFQ69jgRVbA2bdrI9S2Kqlq1qrzKdy/udiITZWXF+HIiIqKy4LmJqHRMnIhU5OGHH0bjxo3looT3Qgy5ECcrZ2dnk7WNiIisE89NZC2YOBGpQGhoKC5cuCDv309p2OPHj8uvYj0NIiKi8sBzE1kbG52oD0lERERERER3xOIQREREREREpWDiREREREREVAomTkRERERERKVg4kRERERERFQKJk5ERERERESlYOJERERERERUCiZOREREREREpWDiREREREREVAomTkRERERERLi7/wdIdXB8Q7SFeQAAAABJRU5ErkJggg==", + "image/png": "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unPJDGdygWqJMSPSRXLu3Llq1lJJNGTMtiRTMuOeNZg1a1auybB0i8vapVJuon388cdqvI5MxtGrVy/VVdVaSIInn+E567Ru3TqV8EdHR6ubFpK4SoJtyXPrjBkz1E1ySaBl3J5MfpH170E+Q+R68MyZM+pmrCRUeU2MYe2YPBEREREREZmB6zwRERERERGZgckTERERERGRGZg8ERERERERmYHJExERERERkRmYPBEREREREZmByRMREREREZEZmDwRERERERGZgckTkU7Ioo8bN25EaGiopatCRESk/Pvvv2ox3eTkZB4R0gUukkukA5GRkWjSpAlq1aqF48eP46+//sq2Kj0REVFx27FjB3r16oUaNWogNTUV27dvh42NDQNBmmZv6QoQkXnkxPPDDz+o5x4eHujYsWPma3v27FHlzz77DJMmTcLWrVvRu3fvbN+/bt06xMfHq+cvvPACT2BERHTPrl+/jj///FM9r169urqRl2Ht2rWYO3cuOnXqhNatWyM4OBgBAQGZr8fExKgeE8LX1xePPvooI0JWj932iDQiMTERL774IpYsWYLff/8922sNGzZUCdT//vc//Prrr2jZsuVt379582YsWrRI/Yy0tLRirDkREenV33//rVqXJFE6evRottfatm2LhQsXYt68eeoGoL+/f7bXJXmS7/vggw8wefLkYq450d1htz0ijYiNjVUtTtIlr0WLFre9/tJLL+G7775Du3btVKKUG+ky8cgjjyAlJQX29mx4JiKieyPJT8+ePdU5Kqf09HTVhVzG4k6fPh2jR4/O9We8++672LVrlzpHEVk7tjwRWcjp06fx/fffZ2sFio6OxqpVq1Q3iIKQ7/v555/VnTvpshcUFFQENSYiIr2TBOaPP/7Itu3s2bPq5pzceCuI3377TbUujR07FitWrCjkmhJZBpMnIgvx8vLCiBEjMHXq1MxtQ4YMwUcffQQfH58C/SxJuOR7xo8fjzp16mD58uVFUGMiItI76V7Xvn171RIkJPnp0KEDdu/eDQcHhwL9rKVLl+L555/Hq6++qm4YShc/Iq1j8kRkITI49ssvv1R9vffu3YuvvvpKdX9YuXIlHB0dC3yC6tu3L2xtbdG/f38sW7asyOpNRET6JV2/R44cqbriRUVFqcTH2dkZM2bMKNDPiYiIUBMV9evXT00S8dRTT6lzFZHWMXkisqAnn3wSQ4cORY8ePdQJatasWahdu3aBfsapU6fU3bxXXnlFlWXg7pUrV7Bz584iqjUREemZ9IgoW7asmiFPuuvJTT1JoAri66+/RqVKldCqVStVHjBgAL799lskJCQUUa2JigeTJyILe++999QYJT8/PwwbNqzA3y+z71WuXFlNJCHd96SPec2aNXmHj4iI7or0fpgwYYJaN1B6M9x///0F/hnSA0LWHpTzkjyk+58kTmvWrGFUSNOYPBFZ2Lhx41CxYkVcvnxZnWAKQgbvyt09WVtDuvxlPCSZkjWh5GRFRERUEJLkyAx4MoZWupRfuHChQN9/8OBBNcbJxcUl87y0YcMGtawGu+6R1nGuYiILkhOKzEC0b98+NbuRdOF76KGHEBgYaNb3y8koLi5OzbSXtUuFwWBQCZl0t5CuEkREROZ666231M25Q4cOqW7l0h1cuoLb2dmZ9f2SIMmyGDlvCEpCVbduXVy8eBFVqlRhQEiT2PJEZCGy0rokNlOmTMEDDzyAUaNGoVmzZuokJWtjmHuCknFTOfui29jYqBXdeYePiIgK4pdffsHixYvxzTffwN3dXZ1Hzp8/r85V5i7oLmObunTpcttrMqb3vvvu46RGpGlMnogsZP369Wo2ozfffDMz4ZHZ92RWIpl9Ly9btmzBxo0bkZycjNKlS2Pw4MG57tenTx81WFdmSxIy69G2bduK6N0QEZHWyY07WWR93rx5aNq0aebMsNI9/Ny5c4iMjMxzenNpZTpw4ADOnDmjpjrPLXkSY8aMUQmWkK7l8n0y8RGRVtgYpH8PEVm9pKQklRAJmVxizpw5Bfr+4cOHq6ljhcycJNOaExER3QtJmGSmWPH444+rCSbMJZMlvfHGG+q5jK+SCZSIrB2TJyIiIiIiIjPw1jMREREREZEZmDwRERERERGZgckTERERERGRGZg8ERERERERmYHJExERERERkRmYPBEREREREZmByRMREREREZEZmDwRERERERGZgckTERERERGRGZg8ERERERERmYHJExEREREREe7s//scS78SGYNCAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -104,7 +104,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[########################################] | 100% Completed | 1.27 ss\n" + "[########################################] | 100% Completed | 2.17 s\n" ] } ], @@ -151,78 +151,82 @@ "name": "stdout", "output_type": "stream", "text": [ - "[########################################] | 100% Completed | 969.14 ms\n", - "[########################################] | 100% Completed | 958.78 ms\n" + "[########################################] | 100% Completed | 1.79 s\n" ] } ], "source": [ "%matplotlib ipympl\n", "\n", + "# the simulation cell is periodic, so we tile the results for display\n", + "# instead of running a larger multislice simulation\n", + "tiling = (4, 4)\n", + "extent = [0, potential.extent[0] * tiling[0], 0, potential.extent[1] * tiling[1]]\n", + "\n", + "def tile(array):\n", + " return np.tile(array, tiling).T\n", + "\n", + "# cumulative projected potential after each slice (index 0 is no potential)\n", + "potential_array = potential.build().compute().array\n", + "potential_cumulative = np.concatenate(\n", + " (np.zeros((1,) + potential_array.shape[1:]), np.cumsum(potential_array, axis=0))\n", + ")\n", + "\n", + "# the defocus slider changes the CTF defocus, the aperture stays fixed at the Scherzer crossover angle\n", + "ctf_widget = ctf.copy()\n", + "\n", + "def simulate_image(plane, defocus):\n", + " ctf_widget.defocus = defocus\n", + " return exit_wave[plane].apply_ctf(ctf_widget).intensity().array\n", + "\n", "with plt.ioff():\n", " dpi = 72\n", " fig, axs = plt.subplots(1,3, figsize=(675/dpi, 400/dpi), dpi=dpi)\n", "\n", - " \n", - "im0_vmax = potential[:].array.sum(0).max()/2\n", + "im0_vmax = potential_cumulative[-1].max()/2\n", "im0_vmin = 0 \n", "\n", "im1_vmax = (np.abs(exit_wave[1:][:].array)**2).max()/2\n", "im1_vmin = 0 \n", "\n", "im2_vmax = image[1:][:].array.max()\n", - "im2_vmin = image[1:][:].array.min()\n", + "im2_vmin = 0\n", "\n", - "potential.build().compute()\n", - "exit_wave.compute()\n", - "image.compute()\n", - "\n", - "pots = potential.to_images()[0].show(ax=axs[0], vmin = im0_vmin, vmax = im0_vmax)\n", - "wavs = exit_wave[1:][0].show(ax=axs[1], vmin = im1_vmin, vmax = im1_vmax)\n", - "imgs = image[1:][0].show(ax=axs[2], vmin = im2_vmin, vmax = im2_vmax)\n", - "\n", - "#pots = axs[0].imshow(potential[0].array[0])\n", - "#wavs = axs[1].imshow(exit_wave[1:][0].intensity().array)\n", - "#imgs = axs[2].imshow(image[1:][0].array)\n", + "im0 = axs[0].imshow(\n", + " tile(potential_cumulative[0]),\n", + " extent = extent, origin = 'lower', cmap = 'viridis',\n", + " vmin = im0_vmin, vmax = im0_vmax,\n", + ")\n", + "im1 = axs[1].imshow(\n", + " tile(np.abs(exit_wave[0].array)**2),\n", + " extent = extent, origin = 'lower', cmap = 'viridis',\n", + " vmin = im1_vmin, vmax = im1_vmax,\n", + ")\n", + "im2 = axs[2].imshow(\n", + " tile(simulate_image(0, ctf.scherzer_defocus)),\n", + " extent = extent, origin = 'lower', cmap = 'viridis',\n", + " vmin = im2_vmin, vmax = im2_vmax,\n", + ")\n", "\n", "axs[0].set_title('Cumulative potential')\n", "axs[1].set_title('Exit wave')\n", "axs[2].set_title('Image')\n", "\n", + "for ax in axs:\n", + " ax.set_xlabel(r\"$x$ [Å]\")\n", + "axs[0].set_ylabel(r\"$y$ [Å]\")\n", "axs[1].set_yticks([])\n", "axs[2].set_yticks([])\n", - "axs[1].set_ylabel(\"\")\n", - "axs[2].set_ylabel(\"\")\n", "\n", "plt.tight_layout() \n", "\n", - "im0 = axs[0].get_images()[0]\n", - "im1 = axs[1].get_images()[0]\n", - "im2 = axs[2].get_images()[0]\n", - "\n", "# interact\n", - "def update_images(plane): \n", - " # axs[0].cla()\n", - " # axs[1].cla()\n", - " # axs[2].cla()\n", - "\n", - " # pots._artists[0,0].set_data(potential[plane].array)\n", - " # wavs._artists[0,0].set_data(exit_wave[1:][plane].array)\n", - " # imgs._artists[0,0].set_data(image[1:][plane].array)\n", - "\n", - " #pots.set_data(potential[plane].array[0])\n", - " #wavs.set_data(exit_wave[1:][plane].intensity().array)\n", - " #imgs.set_data(image[1:][plane].array)\n", - " \n", - " im0.set_data(potential[0:plane].array.sum(0))\n", - " im1.set_data(np.abs(exit_wave[:-1][plane].array)**2)\n", - " im2.set_data(image[:-1][plane].array)\n", - " \n", - " im0.set_clim(vmax = im0_vmax, vmin = im0_vmin)\n", - " im1.set_clim(vmax = im1_vmax, vmin = im1_vmin)\n", - " im2.set_clim(vmax = im2_vmax, vmin = im1_vmin)\n", + "def update_images(plane, defocus): \n", + " im0.set_data(tile(potential_cumulative[plane]))\n", + " im1.set_data(tile(np.abs(exit_wave[plane].array)**2))\n", + " im2.set_data(tile(simulate_image(plane, defocus)))\n", " \n", - " fig.canvas.draw_idle()\n", + " im0.figure.canvas.draw_idle()\n", "\n", "style = {\n", " 'description_width': 'initial',\n", @@ -238,10 +242,20 @@ " layout = layout,\n", ")\n", "\n", + "defocus = widgets.FloatSlider(\n", + " value = ctf.scherzer_defocus, min = -400, max = 200,\n", + " step = 1,\n", + " readout_format = '.0f',\n", + " description = \"Defocus (Å)\",\n", + " style = style,\n", + " layout = Layout(width='270px',height='30px'),\n", + ")\n", + "\n", "widgets.interactive_output(\n", " update_images, \n", " {\n", " 'plane':plane,\n", + " 'defocus':defocus,\n", " },\n", ")\n", "\n", @@ -257,7 +271,11 @@ " [\n", " fig.canvas,\n", " HBox(\n", - " [plane]\n", + " [\n", + " plane,\n", + " defocus,\n", + " Label(f\"Scherzer: {ctf.scherzer_defocus:.0f} Å\".replace(\"-\", \"−\")),\n", + " ]\n", " )\n", " ],\n", ")" @@ -272,7 +290,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ee08fda6c0ec4846afa4a8e36b9790ff", + "model_id": "76b237f9854a484bbf95fe34b3ae2194", "version_major": 2, "version_minor": 0 }, @@ -419,7 +437,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "02576239f89f4e7cb51875161bbde470", + "model_id": "f46f10fde21340fe82a0cbd9cb9abd45", "version_major": 2, "version_minor": 0 }, diff --git a/notebooks/09.2_STEM_convergence.ipynb b/notebooks/09.2_STEM_convergence.ipynb index ca3f31a..cafe381 100644 --- a/notebooks/09.2_STEM_convergence.ipynb +++ b/notebooks/09.2_STEM_convergence.ipynb @@ -22,7 +22,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[########################################] | 100% Completed | 698.37 ms\n" + "[########################################] | 100% Completed | 702.04 ms\n" ] } ], @@ -59,6 +59,9 @@ "measurement = probe.scan(potential, detectors=abtem.PixelatedDetector(max_angle=\"valid\"), scan=point_scan).compute();\n", "probe_show = np.abs(probe.build().array)**2\n", "\n", + "# a power-law (fourth root) intensity scaling makes the weak graphene Bragg disks visible next to the direct beam\n", + "power = 0.25\n", + "\n", "#show\n", "with plt.ioff():\n", " dpi = 72\n", @@ -67,7 +70,7 @@ "ax0 = fig.add_axes([0.05, 0.15, 0.35, 0.75])\n", "ax1 = fig.add_axes([0.55, 0.15, 0.35, 0.75])\n", "im0 = ax0.imshow(\n", - " measurement.array ** 0.5, \n", + " measurement.array.squeeze() ** power, \n", " cmap = \"turbo\"\n", ")\n", "\n", @@ -78,7 +81,7 @@ "ax0.set_xticks([]);\n", "ax0.set_yticks([]);\n", "\n", - "ax0.set_title('graphene diffraction pattern');\n", + "ax0.set_title('graphene diffraction pattern (intensity$^{1/4}$)');\n", "ax1.set_title('probe real space intensity');\n", "\n", "\n", @@ -92,14 +95,14 @@ " point_scan = abtem.CustomScan((15,15))\n", " measurement = probe.scan(potential, detectors=abtem.PixelatedDetector(max_angle=\"valid\"), scan=point_scan).compute();\n", " probe_show = np.abs(probe.build().array)**2\n", + " dp_show = measurement.array.squeeze() ** power\n", "\n", - " \n", " im0.set_data(\n", - " measurement.array ** 0.5,\n", + " dp_show,\n", " )\n", " im0.set_clim(\n", - " vmax = (measurement.array** 0.5).max(), \n", - " vmin = (measurement.array**0.5).min()\n", + " vmax = dp_show.max(), \n", + " vmin = 0,\n", " )\n", " im1.set_data(probe_show)\n", " im1.set_clim(\n", @@ -151,7 +154,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "807ab3e169634a288f5f125a36c3ebda", + "model_id": "1859db475acd49e8bdab635a4f1caa20", "version_major": 2, "version_minor": 0 }, diff --git a/physics.md b/physics.md index fa46b7f..b207221 100644 --- a/physics.md +++ b/physics.md @@ -23,7 +23,7 @@ Mathematically, both free propagating electrons and those bound into atoms are d An electron wavefunction, typically denoted by $\psi$, is a mathematical description of the quantum state of an isolated quantum system. The wavefunctions are complex-valued, and thus not directly observable, but their squared amplitudes can be interpreted as probabilities to find the electrons in particular states that do correspond to physically observable properties of the system. -Wavefunctions naturally live in a many-dimensional mathematical space called the Hilbert space. +Wavefunctions naturally live in a many-dimensional mathematical space called the [Hilbert space](wiki:Hilbert_space) (see Chapter 3 of {cite:t}`griffiths_introduction_2018` for an introduction). By choosing a basis of representation, they can be represented in real space, typically using either Cartesian (convenient for planewave propagation) or spherical coordinates (convenient for scattering). Two kinds of wavefunctions are commonly encountered in the context of electron scattering: freely propagating plane and spherical waves, and wavefunctions of electrons bound by (a collection of) atoms. @@ -54,12 +54,12 @@ To calculate the wave in an arbitrary position, we can simply substitute the new ## Bound Systems: The Schrödinger Equation To derive the wavefunction of a bound system, we need to solve the quantum "equation of motion" for the electron(s) in the corresponding confining potential: this is the Schrödinger equation. -The Schrödinger equation gives the fundamental mathematical description of quantum systems, describing the time-evolution of their wavefunction. +The Schrödinger equation gives the fundamental mathematical description of quantum systems, describing the time-evolution of their wavefunction {cite:p}`griffiths_introduction_2018`. The equation for a single non-relativistic particle can in the position representation be written as ```{math} :label: eq:Schrodinger_time - \hbar \frac{\partial}{\partial t} \psi(\bm{r}, t)=\left[-\frac{\hbar^{2}}{2 m} \frac{\partial^{2}}{\partial \bm{r}^{2}}+V(\bm{r}, t)\right] \psi(\bm{r}, t), + i \hbar \frac{\partial}{\partial t} \psi(\bm{r}, t)=\left[-\frac{\hbar^{2}}{2 m} \frac{\partial^{2}}{\partial \bm{r}^{2}}+V(\bm{r}, t)\right] \psi(\bm{r}, t), ``` where $\hbar$ is the reduced Planck constant, $m$ is the electron mass, and $V(\bm{r}, t)$ is the potential, e.g., Coulomb potential of a nucleus in the case of an atom. @@ -122,7 +122,7 @@ whose squared norm gives the (non-relativistic) electron density of hydrogen as To understand how electrons scatter from a potential, we can consider an electron plane wave incident on an isolated atom. The wave interacts with the electrostatic potential of the nucleus and electrons of the atom, and an outgoing spherical wave is generated. -To understand the effect of the atom on the wave, we need to calculated the distribution of scattered intensity, which is not isotropic due to the initial linear momentum of the incident wave. +To understand the effect of the atom on the wave, we need to calculate the distribution of scattered intensity, which is not isotropic due to the initial linear momentum of the incident wave. The scattering problem can be formally treated by finding a solution of the Schrödinger equation [](#eq:Schrodinger) for the incident electron inside the scattering atom (with electron coordinates $\bm{r^{\prime}}$) @@ -182,20 +182,20 @@ By further defining $\Delta \bm{k} \equiv \bm{k}-\bm{k}_{0}$, we can write the s \psi_{\mathrm{scatt}}(\Delta \bm{k}, \bm{r})=\frac{\mathrm{e}^{\mathrm{i} k \cdot \bm{r}}}{|\bm{r}|} f(\Delta \bm{k}), ``` -which is a function of only the difference between the incident and outgoing wavevectors $\Delta \bm{k}$, describes the change in the direction of the scattered radiation with respect to the incident direction (i.e. momentumn transfer). The factor +which is a function of only the difference between the incident and outgoing wavevectors $\Delta \bm{k}$, describes the change in the direction of the scattered radiation with respect to the incident direction (i.e. momentum transfer). The factor ```{math} :label: eq:formfactor f(\Delta \bm{k}) \equiv-\frac{m}{2 \pi \hbar^{2}} \int V\left(\bm{r}^{\prime}\right) \mathrm{e}^{-\mathrm{i} \Delta \bm{k} \cdot \bm{r}^{\prime}} \mathrm{d}^{3} \bm{r}^{\prime}, ``` -is called the atomic form factor (or electron scattering factor {cite:p}`kirkland_advanced_2010` and it describes the angular distribution of scattered intensity. +is called the atomic form factor (or electron scattering factor {cite:p}`kirkland_advanced_2010`) and it describes the angular distribution of scattered intensity. In the first Born approximation it corresponds to the Fourier transform of the scattering potential ($f(\Delta \bm{k})=\mathcal{F}_k[V(r)]$). (physics_atomic_form_factors)= ### Atomic Form Factors -The atomic form factors thus describe the angular amplitude for scattering of a single electron of by a single atom. +The atomic form factors thus describe the angular amplitude for scattering of a single electron by a single atom. While the first Born approximation is inadequate for describing real specimens (as electrons typically scatter multiple times when passing through a crystal), this description is quite useful since it relates the three-dimensional Fourier transform of the atomic potential to the scattering amplitude. In the general case, we can describe the potential as a sum of a negative term due to the Coulomb attraction of the nucleus with atomic number $Z$ and a positive term arising from the Coulomb repulsion of the atomic electrons with electron density $\rho(\bm{r})$ @@ -229,7 +229,7 @@ relating electron scattering factors with x-ray scattering factors $f_{x}(k)=\ma This comparison highlights that unlike x-ray scattering (where the nucleus is too heavy to accelerate in an interaction with a nearly massless photon), electron scattering is sensitive to both nuclear and electron charges, with the latter contribution being relatively enhanced for small electron scattering angles (corresponding to small momentum vectors $k$). The Mott-Bethe formula is a convenient way to obtain the potential distribution from a charge distribution including the nuclear point charge, effectively by solving Poisson's equation in reciprocal space. -As an example, we can calculate the x-ray form factor for hydrogen in spherical coordinates (c.f. [](#eq:H_density), assuming that the incident electron wavevector $\bm{k} = (0, 0, k)$ is parallel to the $z$ axis. +As an example, we can calculate the x-ray form factor for hydrogen in spherical coordinates (c.f. [](#eq:H_density)), assuming that the incident electron wavevector $\bm{k} = (0, 0, k)$ is parallel to the $z$ axis. In this spherically symmetric case, the x-ray form factor reduces to a radial integral ```{math} @@ -244,7 +244,7 @@ f_{x}(\Delta k) = \frac{e^2}{m c^2} \int_{0}^{\infty} \frac{r \mathrm{e}^{-2r / = \frac{e^2}{m c^2}\frac{1}{\left(1+\pi^2 \Delta k^2 a_0^{2}\right)^{2}}. ``` -Using the definition of the Bohr radius ($a_{0}=4 \pi \varepsilon_{0} \hbar^{2} / m e^{2}$), the electron scattering factor for hydrogen ($Z = 1$) can then further be written via by the Mott-Bethe formula as +Using the definition of the Bohr radius ($a_{0}=4 \pi \varepsilon_{0} \hbar^{2} / m e^{2}$), the electron scattering factor for hydrogen ($Z = 1$) can then further be written via the Mott-Bethe formula as ```{math} f(\Delta k)=\frac{a_0}{2 \varepsilon_0 \Delta k^{2}} \left(1-\frac{1}{\left(1+\pi^2 \Delta k^2 a_0^{2}\right)^{2}}\right). @@ -275,7 +275,7 @@ Independent atom model potentials and scattering factors for several elements. ## Density Functional Theory Potentials Since the complicated many-body interactions of multiple electrons mean that wavefunction cannot in general be analytically solved, further approximations are needed. -Density functional theory (DFT) is the most prominent one and is widely use for modeling the electronic structure of molecules and solids. +Density functional theory (DFT) is the most prominent one and is widely used for modeling the electronic structure of molecules and solids. In DFT, the combinatorially intractable many-body problem of $N$ electrons with $3N$ spatial coordinates is reduced to a solution for the three spatial coordinates of the electron density that can be variationally reached. This approximation would in principle be exact, but a term that describes electron exchange and correlation is not analytically known and must be approximated. @@ -298,11 +298,11 @@ The Poisson equation is with the solution ```{math} +:label: eq:H_potential V(r) = \frac{q_e}{4 \pi \epsilon_{0}} \frac{\mathrm{e^{-2 r / a_0}}}{r}\left(1 + \frac{r}{a_0}\right). -\label{eq:H_potential} ``` -This expression is singular at the origin due to the point charge of the nucleus, but that singularity gets smeared out due and numerically discretized in practical calculations (by default, GPAW smears the nuclear potentials with a Gaussian function). +This expression is singular at the origin due to the point charge of the nucleus. In practical calculations, the singularity is removed by smearing out the nuclear charge (by default, GPAW uses a Gaussian function) and by sampling the potential on a discrete numerical grid. In [](#fig:H_atom), we plot the exact solution of [](#eq:H_potential) against the Kirkland IAM parameterization as well as a DFT calculation using the GPAW code. While all models agree perfectly near the nucleus (the discontinuous appearance of the line is due to a finite computational grid with a spacing of 0.01 Å), where the potential is the strongest, small differences emerge further away. diff --git a/refs.bib b/refs.bib index 382ce81..e5f1475 100644 --- a/refs.bib +++ b/refs.bib @@ -20834,3 +20834,158 @@ @article{zernike1942phase publisher={Elsevier} } + +@book{griffiths_introduction_2018, + title = {Introduction to Quantum Mechanics}, + edition = {3}, + publisher = {Cambridge University Press}, + author = {Griffiths, David J. and Schroeter, Darrell F.}, + year = {2018}, + doi = {10.1017/9781316995433}, +} + +@article{humphreys_scattering_1979, + title = {The scattering of fast electrons by crystals}, + volume = {42}, + doi = {10.1088/0034-4885/42/11/002}, + journal = {Reports on Progress in Physics}, + author = {Humphreys, Colin J.}, + year = {1979}, + pages = {1825--1887}, +} + +@article{aharonov_significance_1959, + title = {Significance of electromagnetic potentials in the quantum theory}, + volume = {115}, + doi = {10.1103/PhysRev.115.485}, + journal = {Physical Review}, + author = {Aharonov, Y. and Bohm, D.}, + year = {1959}, + pages = {485--491}, +} + +@article{taha_analytical_1984, + title = {Analytical and numerical aspects of certain nonlinear evolution equations. {II}. {Numerical}, nonlinear {Schrödinger} equation}, + volume = {55}, + doi = {10.1016/0021-9991(84)90003-2}, + journal = {Journal of Computational Physics}, + author = {Taha, Thiab R. and Ablowitz, Mark I.}, + year = {1984}, + pages = {203--230}, +} + +@article{bethe_theorie_1928, + title = {Theorie der {Beugung} von {Elektronen} an {Kristallen}}, + volume = {392}, + doi = {10.1002/andp.19283921704}, + journal = {Annalen der Physik}, + author = {Bethe, H.}, + year = {1928}, + pages = {55--129}, +} + +@incollection{zuo_dynamical_2017, + title = {Dynamical Theory of Electron Diffraction for Perfect Crystals}, + booktitle = {Advanced Transmission Electron Microscopy: Imaging and Diffraction in Nanoscience}, + publisher = {Springer}, + author = {Zuo, Jian Min and Spence, John C. H.}, + year = {2017}, + pages = {101--141}, + doi = {10.1007/978-1-4939-6607-3_5}, +} + +@article{dwyer_simulation_2010, + title = {Simulation of scanning transmission electron microscope images on desktop computers}, + volume = {110}, + doi = {10.1016/j.ultramic.2009.11.009}, + journal = {Ultramicroscopy}, + author = {Dwyer, C.}, + year = {2010}, + pages = {195--198}, +} + +@book{hecht_optics_2017, + title = {Optics}, + edition = {5}, + publisher = {Pearson}, + author = {Hecht, Eugene}, + year = {2017}, +} + +@article{loane_thermal_1991, + title = {Thermal vibrations in convergent-beam electron diffraction}, + volume = {47}, + doi = {10.1107/S0108767391000375}, + journal = {Acta Crystallographica Section A}, + author = {Loane, R. F. and Xu, P. and Silcox, J.}, + year = {1991}, + pages = {267--278}, +} + +@article{van_dyck_frozen_2009, + title = {Is the frozen phonon model adequate to describe inelastic phonon scattering?}, + volume = {109}, + doi = {10.1016/j.ultramic.2009.01.001}, + journal = {Ultramicroscopy}, + author = {Van Dyck, D.}, + year = {2009}, + pages = {677--682}, +} + +@article{allen_modelling_2015, + title = {Modelling the inelastic scattering of fast electrons}, + volume = {151}, + doi = {10.1016/j.ultramic.2014.10.011}, + journal = {Ultramicroscopy}, + author = {Allen, L. J. and D'Alfonso, A. J. and Findlay, S. D.}, + year = {2015}, + pages = {11--22}, +} + +@article{dwyer_multislice_2005, + title = {Multislice theory of fast electron scattering incorporating atomic inner-shell ionization}, + volume = {104}, + doi = {10.1016/j.ultramic.2005.03.005}, + journal = {Ultramicroscopy}, + author = {Dwyer, C.}, + year = {2005}, + pages = {141--151}, +} + +@article{brown_linear-scaling_2019, + title = {Linear-scaling algorithm for rapid computation of inelastic transitions in the presence of multiple electron scattering}, + volume = {1}, + doi = {10.1103/PhysRevResearch.1.033186}, + journal = {Physical Review Research}, + author = {Brown, Hamish G. and Ciston, Jim and Ophus, Colin}, + year = {2019}, + pages = {033186}, +} + +@article{yucelen_phase_2018, + title = {Phase contrast scanning transmission electron microscopy imaging of light and heavy atoms at the limit of contrast and resolution}, + volume = {8}, + doi = {10.1038/s41598-018-20377-2}, + journal = {Scientific Reports}, + author = {Yücelen, Emrah and Lazić, Ivan and Bosch, Eric G. T.}, + year = {2018}, + pages = {2676}, +} + +@article{dwyer_measurement_2010, + title = {Measurement of effective source distribution and its importance for quantitative interpretation of {STEM} images}, + volume = {110}, + doi = {10.1016/j.ultramic.2010.01.007}, + journal = {Ultramicroscopy}, + author = {Dwyer, C. and Erni, R. and Etheridge, J.}, + year = {2010}, + pages = {952--957}, +} + +@book{spence_electron_1992, + title = {Electron Microdiffraction}, + publisher = {Springer}, + author = {Spence, J. C. H. and Zuo, J. M.}, + year = {1992}, + doi = {10.1007/978-1-4899-2353-0}, +} diff --git a/static/fft_2d.png b/static/fft_2d.png index cf5e3e8..e8acae9 100644 Binary files a/static/fft_2d.png and b/static/fft_2d.png differ diff --git a/static/stem_convergence.png b/static/stem_convergence.png index 7daa4f0..0f5963b 100644 Binary files a/static/stem_convergence.png and b/static/stem_convergence.png differ diff --git a/static/tem_Au_potential_wave_image.png b/static/tem_Au_potential_wave_image.png index 4c74b5e..e2e6bfd 100644 Binary files a/static/tem_Au_potential_wave_image.png and b/static/tem_Au_potential_wave_image.png differ