ddplot

Visualization of dislocations by two-dimensional differential displacement maps
SCREENSHOTS DOWNLOAD FILE FORMATS CONTACT

This program visualizes dislocations in crystals using the so-called differential displacement maps. If dislocations are present in the crystal, the atoms close to its core are displaced from their positions in the ideal crystal. The change in the separations of neighboring atoms is depicted by arrows whose lengths correspond to the magnitudes of the changes of their separation relative to their distance in the ideal crystal.

The main features implemented in ddplot are:
  • plotting of atomic structure
  • visualization of screw and edge components around a dislocation line
  • projection of relative displacements into an arbitrary direction
  • scaling of arrows (for the plotting of edge components)
  • automatic finding of the first to fifth nearest neighbors
  • unrelaxed/relaxed configuration
  • coordinate transformations
  • output to Postscript, .XYZ (JMol), standard .CFG (AtomEye)
  • group loading of a set of plot files
  • internal .DD format containing the coordinate system, position of the dislocation, lattice parameter, etc.
  • creating a .GIF animation from the uploaded blocks
  • changing colors, line thickness and radii of atoms and arrows
  • distinguishing atomic layers or atomic types
  • user-defined settings can be stored in ~/.ddplot or loaded at the start

Screenshots

Click on the pictures below to see their actual size.


Snapshot of ddplot showing a block of Mo atoms with a 1/2[111] screw dislocation that has moved from the center by the action of applied shear stress parallel to the slip direction. The arrows correspond to the screw displacements perpendicular to the plane of the figure. The gray lines are traces of planes that make angles 0, 15, 30, 45, 60, 75 and 90 deg with the (-101) plane.


Snapshot of Mo atoms in the bcc structure showing the atoms colored according to the number of neighboring atoms (see the color bar on the right). The list of atomic planes is shown on the left (they can be turned on and off to make calculations only for a given slab of atoms).


In the version 5.0+ ddplot allows to find the dislocation position and dislocation pathways, for example from a series of atomic configurations obtained by the Nudged Elastic Band method. This snapshot shows such calculation for 17 atomic blocks of bcc Mo. The little green triangles are approximations of dislocation positions. The green curve is the calculated dislocation pathway.

Download

version 5.2 (released October 24, 2022)

Windows 7/8/10 (64bit) ddplot-5.2-win64.zip unzip and run ddplot.exe
Source code ddplot-5.2-src.tar.gz compile with Qt5 library
Default settings .ddplot Loaded on startup. Store in your home directory and edit with a text editor.

version 5.1 (released June 23, 2020)

Windows 7/8/10 (64bit) ddplot-5.1-win64.zip unzip and run ddplot.exe
Mac OS X (64bit) ddplot-5.1-mac64.dmg tested on macOS 10.13.6 High Sierra
Linux (Ubuntu 64bit) ddplot-5.1-linux64.tar.gz x86_64, compiled with Qt 5.15.0, tested on Ubuntu 20.04 LTS
Source code ddplot-5.1-src.tar.gz compile with Qt5 library
Default settings .ddplot Loaded on startup. Store in your home directory and edit with a text editor.

You can also get the latest sources from github as:

 git clone https://github.com/romangroger/ddplot.git ddplot 

Follow the instructions there to compile and run.
  • precompiled binaries for Win64, Mac64 and Linux x86_64
  • significant speed up after optimizing the manipulations with arrays
  • fixing the problems with too small fonts under Mac OS X
  • completed implementation of the calculation of the dislocation position using the generalized Peierls-Nabarro model
  • new 3D rendering of atoms, incl. antialiasing
  • the properties of atoms can be assigned to all atoms in the selected set
  • the code can be given a number of files to open at once or even plot*.dat
  • setting the background color in .ddplot and in GUI
  • completely reworked calculation of the Burgers vector by the Burgers circuit construction
  • moving up/down in the list of Z-layers using Alt+Up, Alt+Down
  • improved export to postscript
  • distinguishing atoms according to atomic types and numbers of neighbors
  • probing relative atomic displacements
  • native installers for Mac OS X and Windows
  • color maps when distinguishing the atoms according to atomic types and the number of neighbors
  • fixed bug in plotting arrows to account for the existence of periodicity in the Z-direction (the arrows are plotted only between first neighbors)

File formats

Following is a list of file formats that are readable by ddplot. If you want to use this code for plotting, you are supposed to prepare your data in one of the supported formats. The only format that ddplot uses for saving is the internal .dd format that whose complexity will evolve in future releases to accommodate all possible information required for effective plotting of the differential displacement maps. The underlined words are keywords and must appear as written below.

.xyz format

This is the most trivial format that does not contain any information about the orientation of the block, periodicity and the like. It is entirely up to the user of ddplot to remember these parameters.

ninit number of atoms in the initial structure
title_init
el1 x(1) y(1) z(1)
el2 x(2) y(2) z(2)
: : : : coordinates of atoms in the initial configuration
: : : : (usually unrelaxed ideal lattice)
eln x(n) y(n) z(n)
nrel
title_rel
el1 x(1) y(1) z(1)
el2 x(2) y(2) z(2)
: : : : coordinates of atoms in the relaxed
: : : : configuration (relaxed structure)
eln x(n) y(n) z(n)
BVECT bx by bz Burgers vector of screw dislocation (if any)


.plt format

This is an old format used in one of our simulation codes. Note, that the number of atoms in the relaxed configuration should be identical to that in the perfect lattice. The relaxed configuration is usually obtained by stressing a perfect crystal, where the initial positions of atoms correspond to the perfect lattice.

nrel number of atoms in the relaxed configuration
z(1)
z(2)
: z-positions of atoms in the relaxed
: configuration
z(nrel)
x(1) y(1) zlayer(1)
x(2) y(2) zlayer(2)
: : : (x,y) positions of atoms in the
: : : relaxed configuration
x(nrel) y(nrel) zlayer(nrel)
ninit number of atoms in the perfect lattice
z(1)
z(2)
: z-positions of atoms in the perfect lattice
:
z(nrel)
x(1) y(1)
x(2) y(2)
: : (x,y) positions of atoms in the perfect
: : lattice
x(ninit) y(ninit)
0 unused, don't ask me why
xperiod
yperiod periodicity in the x, y, z directions
zperiod
CORE { xpos; ypos } (x,y) position of the screw dislocation

If the block does not contain any screw dislocation, simply omit the last line.


.bl format

This is another format from the same simulation code that we are using. The format is a bit complicated and is not supposed to be used any more. It is left in ddplot only for the sake of quick visualization of the results of our simulations.

LEN
xlen ylen zlen x, y and z size of the block
LATPAR
latpar lattice parameter
ND
nd number of active atoms
D
x(1) y(1) z(1) elem(1)
x(2) y(2) z(2) elem(2) coordinates of active atoms in the
: : : : relaxed configuration and the name
: : : : of the element, e.g. Mo
x(nd) y(nd) z(nd) elem(nd)
NINERT
ninert number of inert atoms
DINERT
x(1) y(1) z(1) elem(1)
x(2) y(2) z(2) elem(2) coordinates of inert atoms in the
: : : : relaxed configuration and the name
: : : : of the element, e.g. Mo
x(ninert) y(ninert) z(ninert) elem(ninert)
UNRLD
x(1) y(1) z(1) elem(1)
x(2) y(2) z(2) elem(2) coordinates of atoms in the
: : : : perfect lattice and the name
: : : : of the element, e.g. Mo
x(nunrld) y(nunrld) z(nunrld) elem(nunrld) nurld=nd+ninert

In our simulations, the block is usually divided into two parts. Outer part of the (x,y) plane contains inert atoms into which we apply anisotropic displacements corresponding to a given stress field. The inner part then contains active atoms whose position is obtained by minimization. In the relaxed configuration, the force on each atom is essentially zero.


.dd format

This is the internal ddplot's format that contain all possible information about the block, including the orientation of the block, positions of dislocations, periodicity, etc. Each block starts with a header that is written below in capital letters. Comments begin with '#' and are ignored by ddplot. Number of spaces between each number in a row and between lines is arbitrary.

CSYS orientation of the block given by three
x1 y1 z1 vectors defined in the cube coordinate system
x2 y2 z2 [100], [010], [001]
x3 y3 z3
PERIOD
xperiod yperiod zperiod periodicity along x, y and z
DISLO_CENTER
xpos ypos (x,y) position of the screw dislocation
NUM_UNREL
ninit number of atoms in the perfect lattice
COOR_UNREL
x(1) y(1) z(1) elem(1)
x(2) y(2) z(2) elem(2) coordinates of atoms in the
: : : : perfect lattice and the index
: : : : of the element of this atom
x(ninit) y(ninit) z(ninit) elem(ninit) (count from 0)
NUM_REL
nrel number of atoms in the relaxed configuration
COOR_REL
x(1) y(1) z(1)
x(2) y(2) z(2) coordinates of atoms in the relaxed
: : : configuration
: : :
x(nrel) y(nrel) z(nrel)

The mandatory fields are NUM_UNREL, COOR_UNREL, NUM_REL, COOR_REL and PERIOD.

Contact

Roman Gröger (groger@ipm.cz)

To keep you updated about new versions of ddplot, send me your e-mail and I will add you into the ddplot mailing list. I will be glad to hear about your experience with ddplot, your suggestions but also criticism. If you have some nice figures from ddplot, please, send me .JPG or .GIF to put them here as screenshots.