This project serves as an extension of LAMMPS to implement a pair style called 'ops', which can compute the pairwise interactions in an oriented particle system.
Steps to use:
- Download pair_ops.cpp, pair_ops.h and save them within the folder /lammps/src.
- Build LAMMPS.
- Use it like any other pair_style.
pair_style style args
- style = ops
- args = list of arguments for a particular style
ops args = cutoff
cutoff = global cutoff for Morse interactions (distance units)
pair_style ops 2.5
pair_coeff * * 100.0 2.0 1.5 1 0 1 1 1 1 1 1
Style ops computes pairwise interactions with the formula:
where
is the cutoff.
- Do, K are constants.
,
,
,
are weight constants for Morse potential, Co-planarity potential, Co-normality potential and Co-Circularity potential, respectively.
- a, b, c are constants for weighting function
. The weighting function provides either circular symmetricity
, or weights particles more in certain planes.
The 4 potentials used are Morse Potential, Co-Planarity Potential, Co-Normality Potential and Co-Corcularity Potential. Together, their weighted sum defines the potential energy of oriented particles.
The first three coefficients and the cutoff can be defined for each pair of atoms types via the :doc:pair_coeff <pair_coeff>
command as in the examples above, or in the data file or restart files read by the :doc:read_data <read_data>
or :doc:read_restart <read_restart>
commands (from LAMMPS doc). The remaining coefficients remain same for all atom pairs, hence needs to be specified in the main input file alongside pair_coeff * *
:
(energy units)
(1/distance units)
(distance units)
(energy units)
(energy units)
(energy units)
(energy units)
- K
- a (distance units)
- b (distance units)
- c (distance units)
- cutoff
(distance units)
The last coefficient is optional. If not specified, the global morse cutoff is used.
These pairs only work with atom_style sphere
. In the input file, a fix needs to be defined to input the normals of each of the atoms. An example is given below:
fix Vectors all property/atom d_normalX d_normalY d_normalZ
With this example, the read_data
command will look like this:
read_data <data.filename> fix Vectors NULL Normals
'Normals' will be the header in the data file, below which the atom ID along with three normal components (along x, y, and z axes) given for each atom.
This example is implemented in the test folder given with this project.
[1] Szeliski, R. & Tonnesen, D. (1992). Surface Modeling with Oriented Particle Systems. Computer Graphics, 26(2):185-194.
[2] Tonnesen, D. (1998). Dynamically Coupled Particle Systems for Geometric Modeling, Reconstruction, and Animation. University of Toronto. Retrieved from http://www.dgp.toronto.edu/~davet/phd/index.html
[3] Singh, A.R. (2018). Study of Zero and Finite Temperature Response of Discrete Deformable Surfaces. UCLA. ProQuest ID: Singh_ucla_0031D_17348. Merritt ID: ark:/13030/m5sz1b5x. Retrieved from https://escholarship.org/uc/item/6cg965pq