Potential truncations¶
sharp¶
Create sharp truncation by setting the potential to zero for particle distances larger than the cutoff distance , i.e., by multiplying with a step function:
Both potential and force are discontinuous at the cutoff.
Example:
potential = potential:truncate({"sharp", cutoff = 4})
shifted¶
Amend the sharp truncation by an energy shift such that the potential is continuous at the cutoff distance :
The force is not affected by this and remains discontinuous at the cutoff.
Example:
potential = potential:truncate({"shifted", cutoff = 2.5})
force_shifted¶
Amend the energy-shifted potential by a linear term, effectively shifting the force to zero at the cutoff distance :
Both energy and force are continuous at the cutoff. Note that this modification globally tilts the potential with possible physical implications for, e.g., phase diagrams.
Example:
potential = potential:truncate({"force_shifted", cutoff = 2.5})
smooth_r4¶
Truncate the potential such that it remains a C²-continuous
function at the cutoff, i.e., the force being continuously differentiable.
As a consequence, momentum and energy drift are drastically diminished
even from long runs using symplectic integrators such as
halmd.mdsim.integrators.verlet
.
The truncation is implemented by multiplication of the energy-shifted potential with the local smoothing function
where is the cutoff distance, and the parameter , which has the dimension of a length, controls the the range of smoothing. The C²-continuous truncated potential then reads
and the C¹-continuous force is
with the derivative of the smoothing function .
Example:
potential = potential:truncate({"smooth_r4", cutoff = 2.5, h = 0.005})
The following figure shows unmodified and C²-smooth variants of the Weeks-Chandler-Andersen potential, the repulsive part of the Lennard-Jones potential sharply cutoff at .
(Source code, png, hires.png, pdf)
The following figure shows the absolute value of the force.
(Source code, png, hires.png, pdf)