git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@16053 f3b2605a-c512-4ea7-a41b...
[lammps.git] / doc / src / pair_hybrid.txt
blob47451cf14a8a5a5709ce73a8461a5e0d20e7dbe7
1 "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
3 :link(lws,http://lammps.sandia.gov)
4 :link(ld,Manual.html)
5 :link(lc,Section_commands.html#comm)
7 :line
9 pair_style hybrid command :h3
10 pair_style hybrid/omp command :h3
11 pair_style hybrid/overlay command :h3
12 pair_style hybrid/overlay/omp command :h3
14 [Syntax:]
16 pair_style hybrid style1 args style2 args ...
17 pair_style hybrid/overlay style1 args style2 args ... :pre
19 style1,style2 = list of one or more pair styles and their arguments :ul
21 [Examples:]
23 pair_style hybrid lj/cut/coul/cut 10.0 eam lj/cut 5.0
24 pair_coeff 1*2 1*2 eam niu3
25 pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0
26 pair_coeff 1*2 3 lj/cut 0.5 1.2 :pre
28 pair_style hybrid/overlay lj/cut 2.5 coul/long 2.0
29 pair_coeff * * lj/cut 1.0 1.0
30 pair_coeff * * coul/long :pre
32 [Description:]
34 The {hybrid} and {hybrid/overlay} styles enable the use of multiple
35 pair styles in one simulation.  With the {hybrid} style, exactly one
36 pair style is assigned to each pair of atom types.  With the
37 {hybrid/overlay} style, one or more pair styles can be assigned to
38 each pair of atom types.  The assignment of pair styles to type pairs
39 is made via the "pair_coeff"_pair_coeff.html command.
41 Here are two examples of hybrid simulations.  The {hybrid} style could
42 be used for a simulation of a metal droplet on a LJ surface.  The
43 metal atoms interact with each other via an {eam} potential, the
44 surface atoms interact with each other via a {lj/cut} potential, and
45 the metal/surface interaction is also computed via a {lj/cut}
46 potential.  The {hybrid/overlay} style could be used as in the 2nd
47 example above, where multiple potentials are superposed in an additive
48 fashion to compute the interaction between atoms.  In this example,
49 using {lj/cut} and {coul/long} together gives the same result as if
50 the {lj/cut/coul/long} potential were used by itself.  In this case,
51 it would be more efficient to use the single combined potential, but
52 in general any combination of pair potentials can be used together in
53 to produce an interaction that is not encoded in any single pair_style
54 file, e.g. adding Coulombic forces between granular particles.
56 All pair styles that will be used are listed as "sub-styles" following
57 the {hybrid} or {hybrid/overlay} keyword, in any order.  Each
58 sub-style's name is followed by its usual arguments, as illustrated in
59 the example above.  See the doc pages of individual pair styles for a
60 listing and explanation of the appropriate arguments.
62 Note that an individual pair style can be used multiple times as a
63 sub-style.  For efficiency this should only be done if your model
64 requires it.  E.g. if you have different regions of Si and C atoms and
65 wish to use a Tersoff potential for pure Si for one set of atoms, and
66 a Tersoff potetnial for pure C for the other set (presumably with some
67 3rd potential for Si-C interactions), then the sub-style {tersoff}
68 could be listed twice.  But if you just want to use a Lennard-Jones or
69 other pairwise potential for several different atom type pairs in your
70 model, then you should just list the sub-style once and use the
71 pair_coeff command to assign parameters for the different type pairs.
73 NOTE: There are two exceptions to this option to list an individual
74 pair style multiple times.  The first is for pair styles implemented
75 as Fortran libraries: "pair_style meam"_pair_meam.html and "pair_style
76 reax"_pair_reax.html ("pair_style reax/c"_pair_reax_c.html is OK).
77 This is because unlike a C++ class, they can not be instantiated
78 multiple times, due to the manner in which they were coded in Fortran.
79 The second is for GPU-enabled pair styles in the GPU package.  This is
80 b/c the GPU package also currently assumes that only one instance of a
81 pair style is being used.
83 In the pair_coeff commands, the name of a pair style must be added
84 after the I,J type specification, with the remaining coefficients
85 being those appropriate to that style.  If the pair style is used
86 multiple times in the pair_style command, then an additional numeric
87 argument must also be specified which is a number from 1 to M where M
88 is the number of times the sub-style was listed in the pair style
89 command.  The extra number indicates which instance of the sub-style
90 these coefficients apply to.
92 For example, consider a simulation with 3 atom types: types 1 and 2
93 are Ni atoms, type 3 are LJ atoms with charges.  The following
94 commands would set up a hybrid simulation:
96 pair_style hybrid eam/alloy lj/cut/coul/cut 10.0 lj/cut 8.0
97 pair_coeff * * eam/alloy nialhjea Ni Ni NULL
98 pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0
99 pair_coeff 1*2 3 lj/cut 0.8 1.3 :pre
101 As an example of using the same pair style multiple times, consider a
102 simulation with 2 atom types.  Type 1 is Si, type 2 is C.  The
103 following commands would model the Si atoms with Tersoff, the C atoms
104 with Tersoff, and the cross-interactions with Lennard-Jones:
106 pair_style hybrid lj/cut 2.5 tersoff tersoff
107 pair_coeff * * tersoff 1 Si.tersoff Si NULL
108 pair_coeff * * tersoff 2 C.tersoff NULL C
109 pair_coeff 1 2 lj/cut 1.0 1.5 :pre
111 If pair coefficients are specified in the data file read via the
112 "read_data"_read_data.html command, then the same rule applies.
113 E.g. "eam/alloy" or "lj/cut" must be added after the atom type, for
114 each line in the "Pair Coeffs" section, e.g.
116 Pair Coeffs :pre
118 1 lj/cut/coul/cut 1.0 1.0
119 ... :pre
121 Note that the pair_coeff command for some potentials such as
122 "pair_style eam/alloy"_pair_eam.html includes a mapping specification
123 of elements to all atom types, which in the hybrid case, can include
124 atom types not assigned to the {eam/alloy} potential.  The NULL
125 keyword is used by many such potentials (eam/alloy, Tersoff, AIREBO,
126 etc), to denote an atom type that will be assigned to a different
127 sub-style.
129 For the {hybrid} style, each atom type pair I,J is assigned to exactly
130 one sub-style.  Just as with a simulation using a single pair style,
131 if you specify the same atom type pair in a second pair_coeff command,
132 the previous assignment will be overwritten.
134 For the {hybrid/overlay} style, each atom type pair I,J can be
135 assigned to one or more sub-styles.  If you specify the same atom type
136 pair in a second pair_coeff command with a new sub-style, then the
137 second sub-style is added to the list of potentials that will be
138 calculated for two interacting atoms of those types.  If you specify
139 the same atom type pair in a second pair_coeff command with a
140 sub-style that has already been defined for that pair of atoms, then
141 the new pair coefficients simply override the previous ones, as in the
142 normal usage of the pair_coeff command.  E.g. these two sets of
143 commands are the same:
145 pair_style lj/cut 2.5
146 pair_coeff * * 1.0 1.0
147 pair_coeff 2 2 1.5 0.8 :pre
149 pair_style hybrid/overlay lj/cut 2.5
150 pair_coeff * * lj/cut 1.0 1.0
151 pair_coeff 2 2 lj/cut 1.5 0.8 :pre
153 Coefficients must be defined for each pair of atoms types via the
154 "pair_coeff"_pair_coeff.html command as described above, or in the
155 data file or restart files read by the "read_data"_read_data.html or
156 "read_restart"_read_restart.html commands, or by mixing as described
157 below.
159 For both the {hybrid} and {hybrid/overlay} styles, every atom type
160 pair I,J (where I <= J) must be assigned to at least one sub-style via
161 the "pair_coeff"_pair_coeff.html command as in the examples above, or
162 in the data file read by the "read_data"_read_data.html, or by mixing
163 as described below.
165 If you want there to be no interactions between a particular pair of
166 atom types, you have 3 choices.  You can assign the type pair to some
167 sub-style and use the "neigh_modify exclude type"_neigh_modify.html
168 command.  You can assign it to some sub-style and set the coefficients
169 so that there is effectively no interaction (e.g. epsilon = 0.0 in a
170 LJ potential).  Or, for {hybrid} and {hybrid/overlay} simulations, you
171 can use this form of the pair_coeff command in your input script:
173 pair_coeff        2 3 none :pre
175 or this form in the "Pair Coeffs" section of the data file:
177 3 none :pre
179 If an assignment to {none} is made in a simulation with the
180 {hybrid/overlay} pair style, it wipes out all previous assignments of
181 that atom type pair to sub-styles.
183 Note that you may need to use an "atom_style"_atom_style.html hybrid
184 command in your input script, if atoms in the simulation will need
185 attributes from several atom styles, due to using multiple pair
186 potentials.
188 :line
190 Different force fields (e.g. CHARMM vs AMBER) may have different rules
191 for applying weightings that change the strength of pairwise
192 interactions bewteen pairs of atoms that are also 1-2, 1-3, and 1-4
193 neighbors in the molecular bond topology, as normally set by the
194 "special_bonds"_special_bonds.html command.  Different weights can be
195 assigned to different pair hybrid sub-styles via the "pair_modify
196 special"_pair_modify.html command. This allows multiple force fields
197 to be used in a model of a hybrid system, however, there is no consistent
198 approach to determine parameters automatically for the interactions
199 between the two force fields, this is only recommended when particles
200 described by the different force fields do not mix.
202 Here is an example for mixing CHARMM and AMBER: The global {amber}
203 setting sets the 1-4 interactions to non-zero scaling factors and
204 then overrides them with 0.0 only for CHARMM:
206 special_bonds amber
207 pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0
208 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 :pre
210 The this input achieves the same effect:
212 special_bonds 0.0 0.0 0.1
213 pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0
214 pair_modify pair lj/cut/coul/long special lj 0.0 0.0 0.5
215 pair_modify pair lj/cut/coul/long special coul 0.0 0.0 0.83333333
216 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 :pre
218 Here is an example for mixing Tersoff with OPLS/AA based on
219 a data file that defines bonds for all atoms where for the
220 Tersoff part of the system the force constants for the bonded
221 interactions have been set to 0. Note the global settings are
222 effectively {lj/coul 0.0 0.0 0.5} as required for OPLS/AA:
224 special_bonds lj/coul 1e-20 1e-20 0.5
225 pair_hybrid tersoff lj/cut/coul/long 12.0
226 pair_modify pair tersoff special lj/coul 1.0 1.0 1.0 :pre
228 See the "pair_modify"_pair_modify.html doc page for details on
229 the specific syntax, requirements and restrictions.
231 :line
233 The potential energy contribution to the overall system due to an
234 individual sub-style can be accessed and output via the "compute
235 pair"_compute_pair.html command.
237 :line
239 NOTE: Several of the potentials defined via the pair_style command in
240 LAMMPS are really many-body potentials, such as Tersoff, AIREBO, MEAM,
241 ReaxFF, etc.  The way to think about using these potentials in a
242 hybrid setting is as follows.
244 A subset of atom types is assigned to the many-body potential with a
245 single "pair_coeff"_pair_coeff.html command, using "* *" to include
246 all types and the NULL keywords described above to exclude specific
247 types not assigned to that potential.  If types 1,3,4 were assigned in
248 that way (but not type 2), this means that all many-body interactions
249 between all atoms of types 1,3,4 will be computed by that potential.
250 Pair_style hybrid allows interactions between type pairs 2-2, 1-2,
251 2-3, 2-4 to be specified for computation by other pair styles.  You
252 could even add a second interaction for 1-1 to be computed by another
253 pair style, assuming pair_style hybrid/overlay is used.
255 But you should not, as a general rule, attempt to exclude the
256 many-body interactions for some subset of the type pairs within the
257 set of 1,3,4 interactions, e.g. exclude 1-1 or 1-3 interactions.  That
258 is not conceptually well-defined for many-body interactions, since the
259 potential will typically calculate energies and foces for small groups
260 of atoms, e.g. 3 or 4 atoms, using the neighbor lists of the atoms to
261 find the additional atoms in the group.  It is typically non-physical
262 to think of excluding an interaction between a particular pair of
263 atoms when the potential computes 3-body or 4-body interactions.
265 However, you can still use the pair_coeff none setting or the
266 "neigh_modify exclude"_neigh_modify.html command to exclude certain
267 type pairs from the neighbor list that will be passed to a manybody
268 sub-style.  This will alter the calculations made by a many-body
269 potential, since it builds its list of 3-body, 4-body, etc
270 interactions from the pair list.  You will need to think carefully as
271 to whether it produces a physically meaningful result for your model.
273 For example, imagine you have two atom types in your model, type 1 for
274 atoms in one surface, and type 2 for atoms in the other, and you wish
275 to use a Tersoff potential to compute interactions within each
276 surface, but not between surfaces.  Then either of these two command
277 sequences would implement that model:
279 pair_style hybrid tersoff
280 pair_coeff * * tersoff SiC.tersoff C C
281 pair_coeff 1 2 none :pre
283 pair_style tersoff
284 pair_coeff * * SiC.tersoff C C
285 neigh_modify exclude type 1 2 :pre
287 Either way, only neighbor lists with 1-1 or 2-2 interactions would be
288 passed to the Tersoff potential, which means it would compute no
289 3-body interactions containing both type 1 and 2 atoms.
291 Here is another example, using hybrid/overlay, to use 2 many-body
292 potentials together, in an overlapping manner.  Imagine you have CNT
293 (C atoms) on a Si surface.  You want to use Tersoff for Si/Si and Si/C
294 interactions, and AIREBO for C/C interactions.  Si atoms are type 1; C
295 atoms are type 2.  Something like this will work:
297 pair_style hybrid/overlay tersoff airebo 3.0
298 pair_coeff * * tersoff SiC.tersoff.custom Si C
299 pair_coeff * * airebo CH.airebo NULL C :pre
301 Note that to prevent the Tersoff potential from computing C/C
302 interactions, you would need to modify the SiC.tersoff file to turn
303 off C/C interaction, i.e. by setting the appropriate coefficients to
304 0.0.
306 :line
308 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
309 functionally the same as the corresponding style without the suffix.
310 They have been optimized to run faster, depending on your available
311 hardware, as discussed in "Section 5"_Section_accelerate.html
312 of the manual.
314 Since the {hybrid} and {hybrid/overlay} styles delegate computation to
315 the individual sub-styles, the suffix versions of the {hybrid} and
316 {hybrid/overlay} styles are used to propagate the corresponding suffix
317 to all sub-styles, if those versions exist. Otherwise the
318 non-accelerated version will be used.
320 The individual accelerated sub-styles are part of the GPU,
321 USER-OMP and OPT packages, respectively.  They are only enabled if
322 LAMMPS was built with those packages.  See the
323 "Making LAMMPS"_Section_start.html#start_3 section for more info.
325 You can specify the accelerated styles explicitly in your input script
326 by including their suffix, or you can use the "-suffix command-line
327 switch"_Section_start.html#start_7 when you invoke LAMMPS, or you can
328 use the "suffix"_suffix.html command in your input script.
330 See "Section 5"_Section_accelerate.html of the manual for
331 more instructions on how to use the accelerated styles effectively.
333 :line
335 [Mixing, shift, table, tail correction, restart, rRESPA info]:
337 Any pair potential settings made via the
338 "pair_modify"_pair_modify.html command are passed along to all
339 sub-styles of the hybrid potential.
341 For atom type pairs I,J and I != J, if the sub-style assigned to I,I
342 and J,J is the same, and if the sub-style allows for mixing, then the
343 coefficients for I,J can be mixed.  This means you do not have to
344 specify a pair_coeff command for I,J since the I,J type pair will be
345 assigned automatically to the sub-style defined for both I,I and J,J
346 and its coefficients generated by the mixing rule used by that
347 sub-style.  For the {hybrid/overlay} style, there is an additional
348 requirement that both the I,I and J,J pairs are assigned to a single
349 sub-style.  See the "pair_modify" command for details of mixing rules.
350 See the See the doc page for the sub-style to see if allows for
351 mixing.
353 The hybrid pair styles supports the "pair_modify"_pair_modify.html
354 shift, table, and tail options for an I,J pair interaction, if the
355 associated sub-style supports it.
357 For the hybrid pair styles, the list of sub-styles and their
358 respective settings are written to "binary restart
359 files"_restart.html, so a "pair_style"_pair_style.html command does
360 not need to specified in an input script that reads a restart file.
361 However, the coefficient information is not stored in the restart
362 file.  Thus, pair_coeff commands need to be re-specified in the
363 restart input script.
365 These pair styles support the use of the {inner}, {middle}, and
366 {outer} keywords of the "run_style respa"_run_style.html command, if
367 their sub-styles do.
369 [Restrictions:]
371 When using a long-range Coulombic solver (via the
372 "kspace_style"_kspace_style.html command) with a hybrid pair_style,
373 one or more sub-styles will be of the "long" variety,
374 e.g. {lj/cut/coul/long} or {buck/coul/long}.  You must insure that the
375 short-range Coulombic cutoff used by each of these long pair styles is
376 the same or else LAMMPS will generate an error.
378 [Related commands:]
380 "pair_coeff"_pair_coeff.html
382 [Default:] none