Dear Steve,

I am very interested in LAMMPS for MD simulation.

When I am using lattice command to construct a fcc (or bcc) structure, I met a problem with <11-2> orientation as follows.

Using the following command,

…

lattice fcc 3.615 orient z 1 1 1 orient x 1 -1 0 orient y 1 1 -2 origin 0 0 0

region domCu block 0 2 0 2 0 2 units lattice

…

The print results in screen or log.lammps is

…

Lattice spacing in x,y,z = 5.11238 5.90327 6.26136

Created orthogonal box = (0 0 0) to (10.2248 11.8065 12.5227)

…

It is clear that the lattice spacing (5.90327) along y direction is WRONG!

The correct spacing along y direction should be 3.615*(1+1+4)^0.5=8.8549.

I checked the output atomic structure which does not show correct periodic along y direction.

Could you please kindly consider this matter? Your kind reply is much appreciated!

Best regards,

Ruifeng

Lattice spacing> It is clear that the lattice spacing (5.90327) along y direction is WRONG!

The correct spacing along y direction should be 3.615*(1+1+4)^0.5=8.8549.

it's not wrong; it's just different than you expect. The doc page

clearly states

that the lattice spacing LAMMPS computes is not guaranteed to be a

periodic repeat

distance: (from the doc page):

IMPORTANT NOTE: For non-orthogonal unit cells and/or when a rotation

is applied via the orient keyword, then the lattice spacings may be

less intuitive. In particular, in these cases, there is no guarantee

that the lattice spacing is an integer multiple of the periodicity of

the lattice in that direction. Thus, if you create an orthogonal

periodic simulation box whose size in a dimension is a multiple of the

lattice spacing, and then fill it with atoms via the create_atoms

command, you will NOT necessarily create a periodic system. I.e. atoms

may overlap incorrectly at the faces of the simulation box.

Your formula would not give a periodic repeat distance for a non-cubic

or non-orthogonal unit cell, once

is was rotated, so LAMMPS does this instead (from the manual);

If the spacing option is not specified, the lattice spacings are

computed by LAMMPS in the following way. A unit cell of the lattice is

mapped into the simulation box (scaled, shifted, rotated), so that it

now has (perhaps) a modified size and orientation. The lattice spacing

in X is defined as the difference between the min/max extent of the x

coordinates of the 8 corner points of the modified unit cell.

Similarly, the Y and Z lattice spacings are defined as the difference

in the min/max of the y and z coordinates.

If you don't like the value this produces, then it is just a number.

You can change it using the spacing

option of the lattice command: (from the manual), and set it to your

formula if you like:

The spacing option sets the 3 lattice spacings directly. All must be

non-zero (use 1.0 for dz in a 2d simulation). The specified values are

multiplied by the multiplicative factor described above that is

associated with the scale factor. Thus a spacing of 1.0 means one unit

cell independent of the scale factor. This option can be useful if the

spacings LAMMPS computes are inconvenient to use in subsequent

commands, which can be the case for non-orthogonal or rotated

lattices.

Steve

Dear Steve,

Many thanks for your kind reply together with clear clarification!

Based on the defination of “The lattice spacing in X is defined as the difference between the min/max extent of the x

coordinates of the 8 corner points of the modified unit cell.”, it is understandble for the lattice space along [11-2], which is different from “periodic repeating lattice spacing”.

Thanks again!

Have a nice weekend!

Best regards,

Ruifeng