Skip to content

ECCI Defect Image Simulations

Marc DeGraef edited this page Nov 2, 2018 · 5 revisions

ECCI defect image simulations

The EMECCI program allows for the computation of electron channeling contrast images for arbitrary user-defined configurations of near-surface defects. These simulations are carried out for a scanning electron microscope (SEM) geometry and require quite a few input parameters. In this document, we describe all parameters that are specific to the ECCI case; foil/sample geometry is common to both TEM and SEM, as are defect definitions, so we describe those parameters in a separate wiki page (General Parameter Definitions: Foil Defect Configuration Definitions).

Running the EMECCI program with the -t option generates 4 template files: BetheParameters, EMfoil, EMdefectdata, and EMECCI. The foil and defect data files, which need to be renamed to .json files, are described elsewhere; the BetheParameters template file needs to be renamed to BetheParameters.nml, and the default values for the Bethe potential truncation factors are suitable for ECCI simulations. The remaining file, which should be renamed to EMECCI.nml, has the following entries:

 &ECCIlist
! The line above must not be changed
!
! The values below are the default values for this program
!
!------------
! multi-threading parameters
!------------
 nthreads = 1,
!------------
! microscope parameters
!------------
! microscope accelerating voltage [kV]
 voltage = 30.,
!------------
! crystal structure and incident beam parameters
!------------
! crystal structure filename
 xtalname = 'undefined',
! program mode  'array' or 'trace'
 progmode = 'array',
! summation mode  'diag' or 'full'
 summode = 'diag',
! incident beam direction
 k = 0,0,1,
! kt step size
 dkt = 0.1,
! beam convergence angle in terms of the ratio kt/|g_a| (i.e., kt_max)
 ktmax = 5.0,
!  laue center coordinates
 lauec = 0.0, 0.0,
!  second laue point for trace mode
 lauec2 = 0.0, 0.0,
! number of steps along trace
 nktstep = 20,
! smallest d-spacing to take into account [nm]
 dmin = 0.1,
!------------
! various filenames
!------------
! name of the nml file with the foil parameters
 defectfilename = 'some/folder/EMdefect.json',
! full filename of the output file, including complete path
 dataname = '/some/folder/on/your/drive/trialbinary.data',
! full filename of the corresponding ECP file
 ECPname = '/some/folder/on/your/drive/ECPfile.data',
! name for optional output of image montage (can be .tiff, .jpeg, or .png)
! leave set to undefined if not needed
 montagename = 'undefined',
!------------
! image parameters and scattering matrix step size
!------------
! edge length of a column [nm] in the column approximation context
 DF_L = 1.0,
! number of x-columns (=number of x-pixels in output image)
 DF_npix = 256,
! number of y-columns (=number of y-pixels in output image)
 DF_npiy = 256,
! slice thickness for scattering matrix approach [nm]
 DF_slice = 1.0
 /

Most of these parameters are self-explanatory. The progmode parameter defines which type of simulation is carried out: either an array of images centered on a particular beam direction, or a linear trace between two points in an ECP pattern. The figure below shows a [001] ECP for GaP at 20 kV. A grid of lines is superimposed on the patterns; they serve as a coordinate grid to define the incident beam directions (i.e., the diffraction condition) for the ECCI simulation. The grid spacing is equal to the Bragg angle for the lowest index reflection corresponding to the vertical Kikuchi band, which, in this case, is the (100) band. Since the (100) reflection is forbidden in GaP, the band actually has twice the width, so its edges coincide with the second grid line out from the center. The left and middle images show the beam direction sampling that results when progmode is set to 'array': ktmax is set to 2.0 in grid units, and dkt is set to 0.5; hence there are 9 sampling points across the cone of incident beam directions. If the lauec parameter is set to the vector (0.0, 0.0), then the center of the cone will be in the origin of the ECP pattern. For the pattern in the center, lauec was set to (5.0, 7.0) and the entire set of beam directions shift to the corresponding point.

20 keV ECPs for GaP in [001] orientation

For the 'trace' mode, both lauec and lauec2 need to be defined; for the pattern on the right, we have lauec set to (11.0, 2.0), and lauec2 to (6.5, 6.5). The parameter nktstep determines how many points will be selected along the trace between these two points. This mode is useful to obtain the contrast variations across a Kikuchi band. The 'array' mode can provide an overview of image contrast near a zone axis orientation.

Note that the zone axis is set using the k parameter. The EMZAgeom utility program can be used to obtain information regarding the coordinate grid used for the ECP. When executing this command line program for the GaP crystal structure and the [001] zone axis direction, the relevant part of the output looks as follows:

Zone Axis :[  0  0  1]

 Crystal point group           :  -43m
 Crystal point group number    : 31
 Laue group                    :  m-3m
 Diffraction group             : 4RmmR
 Diffraction group number      : 18
 Projection diffraction group  : 4mm1R

 Bright Field symmetry         :   4mm
 Whole Pattern symmetry        :   2mm
 Dark Field general symmetry   :     1
 Dark Field special symmetry   :     m

 Reciprocal lattice vectors : (  1  0  0) and (  0  1  0)

 --> Note that the first of these vectors is by default the horizontal direction in
     any diffraction pattern or image simulation. All reference frames are right-handed.

This tells the user that the vertical Kikuchi band corresponds to the (100) planes (regardless of whether or not the structure factor vanishes) and this sets the scale of the coordinate grid on the ECP. The other pieces of information listed have to do with pattern symmetries for Convergent Beam Electron Diffraction (CBED); the symmetry of the ECP zone axis pattern corresponds to the Whole Pattern Symmetry listed.

For the remaining input parameters listed above, we make the following remarks: dmin determines the smallest lattice spacing taken into account in the simulations; the parameters starting with the letters 'DF_' have to do with the size of the image that will be generated (DF_npix by DF_npiy), and the magnification, set by the pixel size DF_L in nm, which corresponds to the column width in the column approximation. Finally, the DF_slice parameter sets the slice thickness for the scattering matrix formalism; values of 0.5 or 1.0 nm are appropriate (the smaller the value, the longer the simulation takes).

Once all the parameters have been set, the program can be executed with the following command:

EMECCI EMECCI.nml

This program can take quite a while to complete, depending on the number of beam directions defined as well as the value of the dmin parameter, which determines the size of the dynamical matrix. The code first pre-computes an array of scattering matrices for the given beam direction, and then integrates the amplitude along each image column to obtain a complete ECCI for that beam direction. The images are stored in an array of dimensions DF_npix by DF_npiy by N, where N is the number of incident beam directions in the cone or along the trace. For an example simulation for a stacking fault tetrahedron in GaP, see item 5. under the Examples menu in this wiki.

Note that the summode and ECPname parameters are obsolete and will be removed in a later version of the program.

Information for Users

Home

SEM Modalities     - Monte Carlo Simulations
    - EBSD Master Pattern Simulations
    - EBSD Overlap Master Patterns
    - EBSD Pattern Simulations
    - EBSD Dictionary Indexing
    - EBSD Spherical Indexing
    - EBSD Reflector Ranking
    - EBSD HREBSD
    - ECP Master Pattern Simulations
    - ECP Pattern Simulations
    - TKD Master Pattern Simulations
    - TKD Pattern Simulations
    - ECCI Defect Image Simulations
TEM Modalities     - HH4
    - PED
    - CBED Pattern Simulations
    - STEM-DCI Image Simulations
    - EMIntegrateSTEM utility
XRD Modalities     - Laue Master Pattern Simulation
    - EMLaue
    - EMLaueSlit
General Parameter Definitions * Foil Defect Configuration Definitions
EMsoftWorkbench
Utility Programs     - EMConvertOrientations
    - EMDisorientations
    - EMHOLZ
    - EMKikuchiMap
    - EMOpenCLinfo
    - EMZAgeom
    - EMcuboMK
    - EMdpextract
    - EMdpmerge
    - EMdrawcell
    - EMeqvPS
    - EMeqvrot
    - EMfamily
    - EMGBO
    - EMGBOdm
    - EMgetEulers
    - EMgetOSM
    - EMlatgeom
    - EMlistSG
    - EMlistTC
    - EMmkxtal
    - EMorbit
    - EMorient
    - EMqg
    - EMsampleRFZ
    - EMshowxtal
    - EMsoftSlackTest
    - EMsoftinit
    - EMstar
    - EMstereo
    - EMxtalExtract
    - EMxtalinfo
    - EMzap
IDL Scripts     - Virtual Machine Apps
    - SEMDisplay
    - Efit
    - CBEDDisplay
python wrappers     - python examples
Docker     - Docker Image

Complete Examples

  1. Crystal Data Entry Example
  2. EBSD Example
  3. ECP Example
  4. TKD Example
  5. ECCI Example
  6. CBED Example
  7. Dictionary Indexing Example
  8. DItutorial

Information for Developers

Clone this wiki locally