Back to main menu

Mode: polycrystal


atomsk --polycrystal <seed> <param_file> <outputfile> [<formats>] [options]


This mode generates a polycrystal from a given <seed>, using the Voronoi tesselation method and the parameters provided in the file <param_file>. The positions and crystallographic orientations of the grains can be given explicitely, or generated randomly.

The file <seed> must contain an atomic system in one of the supported formats. Usually the seed is a unit cell of a material (such simple systems can be created thanks to the mode --create). However the <seed> can also be a supercell, a large system containing defects, a polycrystal, or any arbitrary atomic system.

The <param_file> is a text file that must contain keywords followed by appropriate values. Empty lines, and lines starting with the hash symbol (#), are ignored.

The keyword box is mandatory and must appear before any other keyword. It must be followed by three real numbers defining the size of the final box (in Å). The final box can only be a parallelepiped.

The keyword random <N> can be used to generate a random structure containing <N> grains. The positions and crystallographic orientations of the grains will be decided randomly by the program. Note that this method attempts to generate random numbers, therefore it is largely non-reproducible, i.e. starting from the exact same <param_file> and constructing a polycrystal with the present mode will most likely lead to different results.

With the keyword lattice, followed by a lattice type, the positions of the grains will be set according to the given lattice type. The lattice types are "bcc", "fcc", "diamond". For instance with an fcc lattice seeds will be placed at each corner of the box and at the center of each face. The crystallographic orientation of the grains will be randomly decided by the program.

The keyword node can be used to define explicitely the position (x,y,z) and orientation of a grain. The cartesian coordinates x, y, z, are usually given in Å. It is also possible to give them with respect to the box dimensions with the keyword BOX and an operation (see this page). For each grain, the crystallographic orientation can be specified in one of the following ways:

Each line starting with the keyword node defines one grain.

The keywords random, lattice, and node are mutually exclusive. Only one of them must be used in a parameter file.

By default the grains are constructed thanks to a 3-D Voronoi tesselation of space: the <seed> is placed at the position of each node, and expanded into the Voronoi polyhedron. Periodic bounday conditions are used in the three dimensions of space.

If one dimension of the box is shorter or equal to the provided <seed>, then a 2-D Voronoi tesselation will be automatically used. The dimension of the final box along that direction will automatically be set to the dimension of the <seed>. If a random orientation of the grains is asked for, the lattice will only be rotated around the small axis, i.e. all grains will have the same crystallographic orientation along that axis. Note that afterwards, one can use the option -duplicate along that direction to generate a columnar structure.

If the initial <seed> contains shells (in the sense of an ionic core-shell model) they are duplicated along with the atoms (or cores). If auxiliary properties are defined for each atom in the initial <seed>, then the atom replica will be assigned the same auxiliary properties.

The mode --polycrystal will assign a new auxiliary property to each atom: its grainID, i.e. the index of the grain the atom belongs to. This allows to easily select grains with the option -select. Note that auxiliary properties can be written only to some file formats, e.g. Atomeye CFG format.

Once the polycrystal is generated, the grain size distribution is computed and written to a data file (*.dat), named after the output file.

If you use this mode with one or several options, then they will apply to the created system.

After generation of the polycrystal some atoms may not be inside of the simulation box, which can be fixed thanks to the option -wrap. Some atoms may also be too close to one another (at grain boundaries), which can be fixed thanks to the option -remove-doubles.

Beware that the system you create with this mode is not relaxed nor optimized.


Back to main menu