\(\renewcommand{\AA}{\text{Å}}\)
pair_style polymorphic command
Syntax
pair_style polymorphic
style = polymorphic
Examples
pair_style polymorphic
pair_coeff * * FeCH_BOP_I.poly Fe C H
pair_coeff * * TlBr_msw.poly Tl Br
pair_coeff * * CuTa_eam.poly Cu Ta
pair_coeff * * GaN_tersoff.poly Ga N
pair_coeff * * GaN_sw.poly Ga N
Description
The polymorphic pair style computes a 3-body free-form potential (Zhou3) for the energy E of a system of atoms as
where I, J, K represent species of atoms i, j, and k, \(i_1, ..., i_N\) represents a list of i‘s neighbors, \(\delta_{ij}\) is a Dirac constant (i.e., \(\delta_{ij} = 1\) when \(i = j\), and \(\delta_{ij} = 0\) otherwise), \(\eta_{ij}\) is similar constant that can be set either to \(\eta_{ij} = \delta_{ij}\) or \(\eta_{ij} = 1 - \delta_{ij}\) depending on the potential type, \(U_{IJ}(r_{ij})\), \(V_{IJ}(r_{ij})\), \(W_{IK}(r_{ik})\) are pair functions, \(G_{JIK}(\cos\theta_{jik})\) is an angular function, \(P_{JIK}(\Delta r_{jik})\) is a function of atomic spacing differential \(\Delta r_{jik} = r_{ij} - \xi_{IJ} \cdot r_{ik}\) with \(\xi_{IJ}\) being a pair-dependent parameter, and \(F_{IJ}(X_{ij})\) is a function of the local environment variable \(X_{ij}\). This generic potential is fully defined once the constants \(\eta_{ij}\) and \(\xi_{IJ}\), and the six functions \(U_{IJ}(r_{ij})\), \(V_{IJ}(r_{ij})\), \(W_{IK}(r_{ik})\), \(G_{JIK}(\cos\theta_{jik})\), \(P_{JIK}(\Delta r_{jik})\), and \(F_{IJ}(X_{ij})\) are given. Here LAMMPS uses a global parameter \(\eta\) to represent \(\eta_{ij}\). When \(\eta = 1\), \(\eta_{ij} = 1 - \delta_{ij}\), otherwise \(\eta_{ij} = \delta_{ij}\). Additionally, \(\eta = 3\) indicates that the function \(P_{JIK}(\Delta r)\) depends on species I, J and K, otherwise \(P_{JIK}(\Delta r) = P_{IK}(\Delta r)\) only depends on species I and K. Note that these six functions are all one dimensional, and hence can be provided in a tabular form. This allows users to design different potentials solely based on a manipulation of these functions. For instance, the potential reduces to a Stillinger-Weber potential (SW) if we set
The potential reduces to a Tersoff potential (Tersoff or Albe1) if we set
where
The potential reduces to a modified Stillinger-Weber potential (Zhou3) if we set
The potential reduces to a Rockett-Tersoff potential (Wang3) if we set
where \(f_{ca,IJ}(r)\) is similar to the \(f_{c,IJ}(r)\) defined above:
The potential becomes the embedded atom method (Daw) if we set
In the embedded atom method case, \(\phi_{IJ}(r)\) is the pair energy, \(F_I(X)\) is the embedding energy, X is the local electron density, and \(f_J(r)\) is the atomic electron density function.
The potential reduces to another type of Tersoff potential (Zhou4) if we set
where \(f_{c,IJ}(r)\) is the same as defined above. This Tersoff potential differs from the one above because the \(P_{JIK}(\Delta r)\) function is now dependent on all three species I, J, and K.
If the tabulated functions are created using the parameters of Stillinger-Weber, Tersoff, and EAM potentials, the polymorphic pair style will produce the same global properties (energies and stresses) and the same forces as the sw, tersoff, and eam pair styles. The polymorphic pair style also produces the same per-atom properties (energies and stresses) as the corresponding tersoff and eam pair styles. However, due to a different partitioning of global properties to per-atom properties, the polymorphic pair style will produce different per-atom properties (energies and stresses) as the sw pair style. This does not mean that polymorphic pair style is different from the sw pair style. It just means that the definitions of the atom energies and atom stresses are different.
Only a single pair_coeff command is used with the polymorphic pair style which specifies a potential file for all needed elements. These are mapped to LAMMPS atom types by specifying N additional arguments after the filename in the pair_coeff command, where N is the number of LAMMPS atom types:
filename
N element names = mapping of polymorphic potential elements to atom types
See the pair_coeff page for alternate ways to specify the path for the potential file. Several files for polymorphic potentials are included in the potentials directory of the LAMMPS distribution. They have a “poly” suffix.
As an example, imagine the GaN_tersoff.poly file has tabulated functions for Ga-N tersoff potential. If your LAMMPS simulation has 4 atom types and you want the first 3 to be Ga, and the fourth to be N, you would use the following pair_coeff command:
pair_coeff * * GaN_tersoff.poly Ga Ga Ga N
The first two arguments must be * * to span all pairs of LAMMPS atom types. The first three Ga arguments map LAMMPS atom types 1,2,3 to the Ga element in the polymorphic file. The final N argument maps LAMMPS atom type 4 to the N element in the polymorphic file. If a mapping value is specified as NULL, the mapping is not performed. This can be used when an polymorphic potential is used as part of the hybrid pair style. The NULL values are placeholders for atom types that will be used with other potentials.
Potential files in the potentials directory of the LAMMPS distribution have a “.poly” suffix. At the beginning of the files, an unlimited number of lines starting with ‘#’ are used to describe the potential and are ignored by LAMMPS. The next line lists two numbers:
ntypes eta
Here ntypes represent total number of species defined in the potential file, \(\eta = 1\) reduces to embedded atom method, \(\eta = 3\) assumes a three species dependent \(P_{JIK}(\Delta r)\) function, and all other values of \(\eta\) assume a two species dependent \(P_{JK}(\Delta r)\) function. The value of ntypes must equal the total number of different species defined in the pair_coeff command. The next ntypes lines each lists two numbers and a character string representing atomic number, atomic mass, and name of the species of the ntypes elements:
atomic-number atomic-mass element-name(1)
atomic-number atomic-mass element-name(2)
...
atomic-number atomic-mass element-name(ntypes)
The next line contains four numbers:
nr ntheta nx xmax
Here nr is total number of tabular points for radial functions U, V, W, P, ntheta is total number of tabular points for the angular function G, nx is total number of tabular points for the function F, xmax is a maximum value of the argument of function F. Note that the pair functions \(U_{IJ}(r)\), \(V_{IJ}(r)\), \(W_{IJ}(r)\) are uniformly tabulated between 0 and cutoff distance of the IJ pair, \(G_{JIK}(\cos\theta)\) is uniformly tabulated between -1 and 1, \(P_{JIK}(\Delta r)\) is uniformly tabulated between -rcmax and rcmax where rcmax is the maximum cutoff distance of all pairs, and \(F_{IJ}(X)\) is uniformly tabulated between 0 and xmax. Linear extrapolation is assumed if actual simulations exceed these ranges.
The next ntypes*(ntypes+1)/2 lines contain two numbers:
cut xi(1) cut xi(2) ... cut xi(ntypes*(ntypes+1)/2)
Here cut means the cutoff distance of the pair functions, “xi” is \(\xi\) as defined in the potential functions above. The ntypes*(ntypes+1)/2 lines are related to the pairs according to the sequence of first ii (self) pairs, i = 1, 2, …, ntypes, and then ij (cross) pairs, i = 1, 2, …, ntypes-1, and j = i+1, i+2, …, ntypes (i.e., the sequence of the ij pairs follows 11, 22, …, 12, 13, 14, …, 23, 24, …).
In the final blocks of the potential file, U, V, W, P, G, and F functions are listed sequentially. First, U functions are given for each of the ntypes*(ntypes+1)/2 pairs according to the sequence described above. For each of the pairs, nr values are listed. Next, similar arrays are given for V and W functions. If P functions depend only on pair species, i.e., \(\eta \neq 3\), then P functions are also listed the same way the next. If P functions depend on three species, i.e., \(\eta = 3\), then P functions are listed for all the ntypes*ntypes*ntypes IJK triplets in a natural sequence I from 1 to ntypes, J from 1 to ntypes, and K from 1 to ntypes (i.e., IJK = 111, 112, 113, …, 121, 122, 123 …, 211, 212, …). Next, G functions are listed for all the ntypes*ntypes*ntypes IJK triplets similarly. For each of the G functions, ntheta values are listed. Finally, F functions are listed for all the ntypes*(ntypes+1)/2 pairs in the same sequence as described above. For each of the F functions, nx values are listed.
Mixing, shift, table, tail correction, restart, rRESPA info
This pair style does not support the pair_modify shift, table, and tail options.
This pair style does not write their information to binary restart files, since it is stored in potential files. Thus, you need to re-specify the pair_style and pair_coeff commands in an input script that reads a restart file.
Restrictions
If using create_atoms command, atomic masses must be defined in the input script. If using read_data, atomic masses must be defined in the atomic structure data file.
This pair style is part of the MANYBODY package. It is only enabled if LAMMPS was built with that package. See the Build package page for more info.
This pair potential requires the newton setting to be “on” for pair interactions.
The potential files provided with LAMMPS (see the potentials directory) are parameterized for metal units. You can use any LAMMPS units, but you would need to create your own potential files.