[lammps-users] Shape of box in domain


the shape of the box is defined in Voigt’s notation in domain.h
double h[6],h_inv[6]; // shape matrix in Voigt notation

How is that possible?
Let’s say we have a box made out of three non-orthogonal vectors a,b,c defining edges in each dimension. I expected h to be a matrix like
h = [a b c].
In this notation h is not symmetric and cannot be stored in Voigt’s reduced form.

I guess lammps’s h is different.
h[0],h[1] and h[2] might be the lengths in each direction, but what is h[3], h[4] and h[5]?

Best and thanks for any help,

If you take a look at the code in domain.cpp—as well as the documentation for the “prism” style of the region command—you’ll see that the extra components represent the tilt factor; roughly speaking, the degree of deformation from a standard orthogonal coordinate system.


Voigt notation is the upper triangular part of an h matrix
that has been rotated to be upper triangular instead of
the h = [abc] form you list. This incurs no loss of generality.
Basically your LAMMPS simulation box needs to have
a along the x axis, b in the xy plane, and arbitrary c.