ECCI Example - EMsoft-org/EMsoft GitHub Wiki

ECCI Image simulation example

This example concerns the simulation of a series of EECI images for a combination of lattice defects in a GaP foil. The EMECCI program requires four different input files for the foil information, the defect configuration, the BetheParameters for the dynamical simulation, and the general setup. We will use the default BetheParameters.nml file for this example.

The foil information is specified as follows in the file EMfoil.json:

 {
     "FoilDescriptor": {
         "foilF": [ 0.0, 0.0, 1.0 ],
         "foilq": [ 1.0, 0.0, 0.0 ],
         "foilalP": 0.0,
         "foilalS": 0.0,
         "foilalR": 0.0,
         "foilz0": 100.0,
         "foilelmo": {
             "row1": [ 168.4, 121.4, 121.4, 0.0, 0.0, 0.0 ],
             "row2": [ 121.4, 168.4, 121.4, 0.0, 0.0, 0.0 ],
             "row3": [ 121.4, 121.4, 168.4, 0.0, 0.0, 0.0 ],
             "row4": [ 0.0, 0.0, 0.0, 75.5, 0.0, 0.0 ],
             "row5": [ 0.0, 0.0, 0.0, 0.0, 75.5, 0.0 ],
             "row6": [ 0.0, 0.0, 0.0, 0.0, 0.0, 75.5 ]
         }
     }
 }

The elastic moduli are only used for fully embedded dislocations that do not intersect the foil surface (and we do not use any of those in this example, so the values do not matter).

The defect configuration file contains five surface-penetrating dislocations, one screw dislocation at the center of the image with line direction parallel to the foil normal, and four inclined dislocations; and a stacking-fault tetrahedron on four different SF planes.

 {
     "DefectDescriptors": {
         "foil": {
             "foilfilename": "datapathname/EMfoil.json"
         },
         "Ydislocations": [
                 {
                     "id": 0.001,
                     "jd": -0.001,
                     "u": [ 0.0, 0.0, -1.0 ],
                     "bv": [ 0.0, 0.0,-1.0 ],
                     "poisson": 0.31
                 },
                 {
                     "id": 0.651,
                     "jd": -0.651,
                     "u": [ 0.0, -1.0, -1.0 ],
                     "bv": [ 0.0, -1.0,-1.0 ],
                     "poisson": 0.31
                 },
                 {
                     "id": 0.651,
                     "jd": 0.651,
                     "u": [ -1.0, 0.0, -1.0 ],
                     "bv": [-1.0, 0.0,  1.0 ],
                     "poisson": 0.31
                 },
                 {
                     "id": -0.651,
                     "jd": 0.651,
                     "u": [ 0.0,  1.0, -1.0 ],
                     "bv": [ 0.0,  1.0,-1.0 ],
                     "poisson": 0.31
                 },
                 {
                     "id": -0.651,
                     "jd": -0.651,
                     "u": [  1.0, 0.0, -1.0 ],
                     "bv": [ 1.0, 0.0,  1.0 ],
                     "poisson": 0.31
                 }
         ],
         "stackingfaults": [
                 {
                     "SFi": 0.25,
                     "SFj": 0.25,
                     "SFsep": 90.509,
                     "SFplane": [ 1.0, 1.0, -1.0 ],
                     "SFlpu": [ -1.0, 0.0, -1.0 ],
                     "SFlpb": [ -0.166667, -0.166667, -0.333333 ],
                     "SFtpu": [ 0.0, -1.0, -1.0 ],
                     "SFtpb": [ 0.166667, -0.333333, -0.166667 ]
                 },
                 {
                     "SFi": -0.25,
                     "SFj": 0.25,
                     "SFsep": 90.509,
                     "SFplane": [ -1.0, 1.0, -1.0 ],
                     "SFlpu": [ 0.0, -1.0, -1.0 ],
                     "SFlpb": [ -0.166667, 0.166667, 0.333333 ],
                     "SFtpu": [ 1.0, 0.0, -1.0 ],
                     "SFtpb": [ -0.333333, -0.166667, 0.166667 ]
                 },
                 {
                     "SFi": -0.25,
                     "SFj": -0.25,
                     "SFsep": 90.509,
                     "SFplane": [ -1.0, -1.0, -1.0 ],
                     "SFlpu": [ 1.0, 0.0, -1.0 ],
                     "SFlpb": [ 0.166667, 0.166667, -0.333333 ],
                     "SFtpu": [ 0.0, 1.0, -1.0 ],
                     "SFtpb": [ -0.166667, 0.333333, -0.166667 ]
                 },
                 {
                     "SFi": 0.25,
                     "SFj": -0.25,
                     "SFsep": 90.509,
                     "SFplane": [ 1.0, -1.0, -1.0 ],
                     "SFlpu": [ 0.0, 1.0, -1.0 ],
                     "SFlpb": [ 0.166667, -0.166667, 0.333333 ],
                     "SFtpu": [ -1.0, 0.0, -1.0 ],
                     "SFtpb": [ 0.333333, 0.166667, 0.166667 ]
                 }
         ]
     }
 }

The EMECCI.nml input file has the following parameters:

 &ECCIlist
! The line above must not be changed
!
! The values below are the default values for this program
!
!------------
! multi-threading parameters
!------------
 nthreads = 4,
!------------
! microscope parameters
!------------
! microscope accelerating voltage [V]
 voltage = 20.,
!------------
! crystal structure and incident beam parameters
!------------
! crystal structure filename
 xtalname = 'GaP.xtal',
! program mode  'array' or 'trace'
 progmode = 'array',
! incident beam direction
 k = 0,0,1,
! kt step size
 dkt = 1.5,
! beam convergence angle in terms of the ratio kt/|g_a| (i.e., kt_max)
 ktmax = 3.0,
!  laue center coordinates
 lauec = 0.0, .0,
!  second laue point for trace mode
 lauec2 = 0.0, 0.0,
! number of steps along trace
 nktstep = 0,
! smallest d-spacing to take into account [nm]
 dmin = 0.1,
!------------
! various filenames
!------------
! name of the nml file with the foil parameters
 defectfilename = 'datapathname/defects.json',
! full filename of the output file, including complete path
 dataname = 'datapathname/GaP-ECCI.h5',
 ECPname = 'datapathname/GaPtest.data'
 montagename = 'datapathname/ECCImontage.tiff',
!------------
! 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
 /

Execution of this program will generate an array of 113 ECCI images centered around the [001] zone axis. A small portion of the full image montage is shown below; the complete montage file can be downloaded from this URL.

20 keV ECCI images for faults in GaP; [001] orientation