n_dims ! Euclidian space dimensionality (2 or 3)
N dispersity ! Total number of particles and number of species
N_1 N_2 ... ! Number of particles of each specie
D_1 D_2... ! Sphere diameters for each specie
Lambda ! Lattice vectors for unit cell
T T T ! Periodic or hard wall boundaries
x1 y1 z1 ! Coordinates of first sphere center
x2 y2 z2 ! second, etc...
...
n_dims
N dispersity
N_1 N_2 ... ! One for each specie (each specie is a distribution for polydisperse packings, rather than a fixed size)
Lambda ! Unit cell
T T T ! Periodic or hard wall
x1 y1 z1 D1
x2 y2 z2 D2
...
______________________
M2 N M
1 N_1
j1_1 k1_1 l1_1
j1_2 k1_2 l1_2
...
2 N_2
j2_1 k2_1 l2_1
....
______________________Here M2 is the total number of contacts listed in the file. This includes both directions for contacts between particles, and M gives the total number of contacts without double-counting (M=M2/2 with periodic BCs, but it may change if hard-wall neighbors are included). N is the total number of particles. Then comes a list of all N_1 contacts of particle 1, listed one after the other, where j1_1 is the neighbour particle, k1_1 is an image unit cell identifier (explained shortly) and l1_1 is the strength of the interaction between the two particles (such as force---it can be ignored if not needed, but it has to be there as a floating-point number), etc. The image identifiers is used for periodic boundary conditions to indicate contacts crossing the torus and is explained in the paper cited at the top of this page. It is zero if the contact is between particles in the base unit cell. After all the contacts for particle 1 have been listed, the same is done for particle 2, etc. Note that if a particle neighbour is negative that indicates a hard wall, with
PackLSD.super.static.x < PackLSD.super.input
ProcessPacking.super.static.x < ProcessPacking.full.input