Periodic boundary conditions and distances computations¶
The PBC
module offers utilities for distance computations using periodic
boundary conditions.
Minimal images¶
These functions take a vector and wrap it inside a cell, by finding the minimal vector fitting inside the cell.

minimal_image
(vect, cell::UnitCell)¶ Wraps the
vect
vector inside thecell
unit cell. vect can be aVector
(i.e. a 1D array), or a view from an Array3D. This function returns the wrapped vector.

minimal_image!
(vect, cell::UnitCell)¶ Wraps
vect
inside ofcell
, and stores the result invect
.

minimal_image!
(A::Matrix, cell::UnitCell) If
A
is a 3xN Array, wraps each one of the columns in thecell
. The result is stored inA
. IfA
is not a 3xN array, this throws an error.
Distances¶
Distances are computed using periodic boundary conditions, by wrapping the \(\vec r_i  \vec r_j\) vector in the cell before computing its norm.
Within one Frame¶
This set of functions computes distances within one frame.

distance
(ref::Frame, i::Integer, j::Integer)¶ Computes the distance between particles
i
andj
in the frame.

distance_array
(ref::Frame[, result])¶ Computes all the distances between particles in
frame
. Theresult
array can be passed as a preallocated storage for the \(N\times N\) distances matrix.result[i, j]
will be the distance between the particle i and the particle j.

distance3d
(ref::Frame, i::Integer, j::Integer)¶ Computes the \(\vec r_i  \vec r_j\) vector and wraps it in the cell. This function returns a 3D vector.
Between two Frames¶
This set of functions computes distances within two frames, either computing the how much a single particle moved between two frames or the distance between the position of a particle i in a reference frame and a particle j in a specific configuration frame.

distance
(ref::Frame, conf::Frame, i::Integer, j::Integer) Computes the distance between the position of the particle i in
ref
, and the position of the particle j inconf

distance
(ref::Frame, conf::Frame, i::Integer) Computes the distance between the position of the same particle i in
ref
andconf
.

distance3d
(ref::Frame, conf::Frame, i::Integer) Wraps the
ref[i]  conf[i]
vector in theref
unit cell.

distance3d
(ref::Frame, conf::Frame, i::Integer, j::Integer) Wraps the
ref[i]  conf[i]
vector in theref
unit cell.