This tool is used for analyzing strain for multilayer structures (like heterostructures, and sandwich structures .eg). It analyzed and output the vertical displacements of atoms for the layer you select, and the changes of bond lengths.
It contains several useful functions. The first one is layer_sep, which is used to separate layers from the original structures. It returns separated layers as ASE atoms object in a list. To analyze strain, a flake for the selected layer will be generated by the flake_generator function. It also has a mirror function to flip the structure in case you want to change the direction of displacements.
The workflow is shown below:
- Use the layer_sep function to separate layers
- Generate flakes of the layers that you want to analyze
- Use the prepare function to prepare the data
- Visualize it.
Attention: The structures can't contain free atoms. Free atoms will be identified as independent layers. The distances amongst atoms should be appropriate that can't be identified as being bonded for atoms in different layers.
Details for every function:
-
layer_sep: It takes two input values. The first one is the ASE atoms object of the structure. The second one is periodicity (True or False). It returns a list that contains ASE atoms object for every layer.
-
flake_generator: It takes four input values. The first one is the ASE atoms of the structure. The next three, x,y, and z, are the number of cells that you want to extend in the three directions.
-
mirror: It takes two inputs. The first one is the ASE atoms of the structure. The second one is the plane for inversion. (xy,xz,yz).
-
prepare_G: Two inputs are taken. The flake of layer before optimization and after optimization. It analyzes the change of bond lengths, z coordinate, and bonding conditions.
-
prepare_COF: Same as prepare_G.
-
out_plane: plot the vertical displacements.
-
in_plane: plot the bond length changes.
-
add_COF: add the COF framework on top of graphene after visualizing the strain.