mods to Sergey's files

This commit is contained in:
Steven J. Plimpton
2018-07-09 14:16:46 -06:00
parent 7260bb58e1
commit 3a824b3a4b
8 changed files with 383 additions and 30 deletions

91
doc/src/pair_atm.html Normal file
View File

@ -0,0 +1,91 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style atm command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style atm args = cutoff
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style 2.5
pair_coeff * * * 0.072
</PRE>
<PRE>pair_style hybrid/overlay lj/cut 6.5 atm 2.5
pair_coeff * * lj/cut 1.0 1.0
pair_coeff * * atm * 0.072
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>atm</I> style computes a 3-body <A HREF = "#Axilrod">Axilrod-Teller-Muto</A>
potential for the energy E of a system of atoms as
</P>
<CENTER><IMG SRC = "Eqs/pair_atm.jpg">
</CENTER>
<P>where r12, r23 and r31 are the distances between the atoms,
gamma1 is included by the sides r12 and r31
with similar definitions for gamma2 and gamma3,
nu is the three-body interaction strength (energy times distance^9 units).
</P>
<P>The <I>atm</I> is typically used in compination with some two-body potential
using <A HREF = "pair_hybrid.html">hybrid/overlay</A> style as in an example above.
</P>
<P>The calculations are not undertaken if the distances between atoms satisfy
r12 r23 r31 > curoff^3. Virtual cutoff distance based on a user defined
tolerance tol is not used.
</P>
<P>The Axilrod-Teller-Muto potential file must contain entries for all the
elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
simulation; LAMMPS ignores those entries.
</P>
<P>For a single-element simulation, only a single entry is required
(e.g. 1 1 1). For a two-element simulation, the file must contain 4
entries (eg. 1 1 1, 1 1 2, 1 2 2, 2 2 2), that
specify ATM parameters for all combinations of the two elements
interacting in three-body configurations. Thus for 3 elements, 10
entries would be required, etc.
</P>
<HR>
<P><B>Shift, table, tail correction, rRESPA info</B>:
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the MANYBODY package. It is only enabled
if LAMMPS was built with that package. See
the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Axilrod"></A>
<P><B>(Axilrod)</B>
Axilrod and Teller, J Chem Phys, 11, 299 (1943);
Muto, Nippon Sugaku Butsuri Gakkwaishi 17, 629 (1943).
</P>
</HTML>

View File

@ -10,16 +10,18 @@ pair_style atm command :h3
[Syntax:]
pair_style atm args = cutoff :pre
pair_style atm cutoff :pre
cutoff = global cutoff for 3-body interactions (distance units) :ul
[Examples:]
pair_style 2.5
pair_coeff * * * 0.072 :pre
pair_style hybrid/overlay lj/cut 6.5 atm 2.5
pair_coeff * * lj/cut 1.0 1.0
pair_coeff * * atm * 0.072 :pre
pair_style hybrid/overlay lj/cut 6.5 atm 2.5
pair_coeff * * lj/cut 1.0 1.0
pair_coeff * * atm * 0.072 :pre
[Description:]
@ -28,18 +30,60 @@ potential for the energy E of a system of atoms as
:c,image(Eqs/pair_atm.jpg)
where r12, r23 and r31 are the distances between the atoms,
gamma1 is included by the sides r12 and r31
with similar definitions for gamma2 and gamma3,
nu is the three-body interaction strength (energy times distance^9 units).
where r12, r23 and r31 are the distances between pairs of atoms,
gamma1 is the angle ???, gamma2 is the angle ???, gamma3 is the angle
???, and nu is the three-body interaction strength.
A diagram of the 3 atoms might help here.
The {atm} is typically used in compination with some two-body potential
using "hybrid/overlay"_pair_hybrid.html style as in an example above.
The {atm} potential is typically used in combination with a two-body
potential using the "pair_style hybrid/overlay"_pair_hybrid.html
command as in the example above.
--------------------
The rest of this section needs some work to make things more clear.
You need to explain exactly how the cutoff is used.
I don't think this is true:
The calculations are not undertaken if the distances between atoms satisfy
r12 r23 r31 > curoff^3. Virtual cutoff distance based on a user defined
r12 r23 r31 > cutoff^3.
If r12 > cutoff+skin, then that pair of atoms is not in
the neighbor list, regardless of what r23 and r31 are,
so how can it be computed?
What does this line mean?
Virtual cutoff distance based on a user defined
tolerance tol is not used.
You must explain exactly what the user needs to put
in the input script to model single element and multi-element
systems.
You refer to an ATM potential file, but I don't think there is
such a thing. There is no code in pair_atm.cpp that reads
a file. Isn't it all pair_coeff commands? In LAMMPS lingo,
potential files are the files in the potentials dir.
There is no such thing for ATM, right?
What is the geometry of i,j,k interactions - you don't explain it.
Which one is the central atom?
You say all the K values for a particular I,J must be specified.
I don't see where the code checks for this.
This is the way to word the explation of the per-pair values required:
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the restart files read by the
"read_restart"_read_restart.html commands:
?? explain what K is and what are the allowed values
nu (energy/distance^9 units) :ul
Again: what file are you talking about?
The Axilrod-Teller-Muto potential file must contain entries for all the
elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
@ -52,12 +96,29 @@ specify ATM parameters for all combinations of the two elements
interacting in three-body configurations. Thus for 3 elements, 10
entries would be required, etc.
I think a better syntax for the pair coeff command might be this:
pair_coeff I J v1 v2 ... vN
when 1,2,...N are the number of atom types defined.
Then there be one pair_coeff command for each type pair,
the same syntax as all other potentials in LAMMPS use.
Note that you refer to "elements", but the pair coeff command
knows nothing about elements. Only atom types. There
could be 10 atom types that all map to the same chemical
element.
:line
[Shift, table, tail correction, rRESPA info]:
[Mixing, shift, table, tail correction, restart, rRESPA info]:
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair styles do not support the "pair_modify"_pair_modify.html
mix, shift, table, and tail options.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
@ -68,8 +129,8 @@ This pair style can only be used via the {pair} keyword of the
[Restrictions:]
This pair style is part of the MANYBODY package. It is only enabled
if LAMMPS was built with that package. See
the "Making LAMMPS"_Section_start.html#start_3 section for more info.
if LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
@ -82,4 +143,4 @@ the "Making LAMMPS"_Section_start.html#start_3 section for more info.
:link(Axilrod)
[(Axilrod)]
Axilrod and Teller, J Chem Phys, 11, 299 (1943);
Muto, Nippon Sugaku Butsuri Gakkwaishi 17, 629 (1943).
Muto, Nippon, Sugaku, Butsuri, Gakkwaishi 17, 629 (1943).

View File

@ -59,6 +59,7 @@ sub-directories:
accelerate: use of all the various accelerator packages
airebo: polyethylene with AIREBO potential
atm: Axilrod-Teller-Muto potential
balance: dynamic load balancing, 2d system
body: body particles, 2d system
cmap: CMAP 5-body contributions to CHARMM force field

View File

@ -1,3 +1,5 @@
# Axilrod-Teller-Muto potential example
variable x index 1
variable y index 1
variable z index 1
@ -24,6 +26,6 @@ velocity all create 1.033 12345678 loop geom
fix 1 all nvt temp 1.033 1.033 0.05
timestep 0.002
thermo 1
thermo 5
run 50
run 25

View File

@ -0,0 +1,100 @@
LAMMPS (29 Jun 2018)
# Axilrod-Teller-Muto potential example
variable x index 1
variable y index 1
variable z index 1
variable xx equal 10*$x
variable xx equal 10*1
variable yy equal 10*$y
variable yy equal 10*1
variable zz equal 10*$z
variable zz equal 10*1
units lj
atom_style atomic
lattice fcc 0.65
Lattice spacing in x,y,z = 1.83252 1.83252 1.83252
region box block 0 ${xx} 0 ${yy} 0 ${zz}
region box block 0 10 0 ${yy} 0 ${zz}
region box block 0 10 0 10 0 ${zz}
region box block 0 10 0 10 0 10
create_box 1 box
Created orthogonal box = (0 0 0) to (18.3252 18.3252 18.3252)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 4000 atoms
Time spent = 0.00120211 secs
pair_style hybrid/overlay lj/cut 4.5 atm 2.5
pair_coeff * * lj/cut 1.0 1.0
pair_coeff * * atm * 0.072
mass * 1.0
velocity all create 1.033 12345678 loop geom
fix 1 all nvt temp 1.033 1.033 0.05
timestep 0.002
thermo 5
run 25
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.8
ghost atom cutoff = 4.8
binsize = 2.4, bins = 8 8 8
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut, perpetual, half/full from (2)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
(2) pair atm, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 11.47 | 11.47 | 11.47 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1.033 -4.5929584 0 -3.0438458 -3.6506231
5 1.0335109 -4.5924034 0 -3.0425247 -3.6376817
10 1.0347484 -4.5941952 0 -3.0424606 -3.6032204
15 1.0357954 -4.5962409 0 -3.0429363 -3.5421887
20 1.0350606 -4.595891 0 -3.0436883 -3.4478779
25 1.0301813 -4.5896962 0 -3.0448107 -3.3111695
Loop time of 34.5602 on 1 procs for 25 steps with 4000 atoms
Performance: 124.999 tau/day, 0.723 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 34.556 | 34.556 | 34.556 | 0.0 | 99.99
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.001323 | 0.001323 | 0.001323 | 0.0 | 0.00
Output | 0.00018287 | 0.00018287 | 0.00018287 | 0.0 | 0.00
Modify | 0.0016184 | 0.0016184 | 0.0016184 | 0.0 | 0.00
Other | | 0.0006311 | | | 0.00
Nlocal: 4000 ave 4000 max 4000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 10895 ave 10895 max 10895 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 640000 ave 640000 max 640000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 1.28e+06 ave 1.28e+06 max 1.28e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1280000
Ave neighs/atom = 320
Neighbor list builds = 0
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:36

View File

@ -0,0 +1,100 @@
LAMMPS (29 Jun 2018)
# Axilrod-Teller-Muto potential example
variable x index 1
variable y index 1
variable z index 1
variable xx equal 10*$x
variable xx equal 10*1
variable yy equal 10*$y
variable yy equal 10*1
variable zz equal 10*$z
variable zz equal 10*1
units lj
atom_style atomic
lattice fcc 0.65
Lattice spacing in x,y,z = 1.83252 1.83252 1.83252
region box block 0 ${xx} 0 ${yy} 0 ${zz}
region box block 0 10 0 ${yy} 0 ${zz}
region box block 0 10 0 10 0 ${zz}
region box block 0 10 0 10 0 10
create_box 1 box
Created orthogonal box = (0 0 0) to (18.3252 18.3252 18.3252)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 4000 atoms
Time spent = 0.000735998 secs
pair_style hybrid/overlay lj/cut 4.5 atm 2.5
pair_coeff * * lj/cut 1.0 1.0
pair_coeff * * atm * 0.072
mass * 1.0
velocity all create 1.033 12345678 loop geom
fix 1 all nvt temp 1.033 1.033 0.05
timestep 0.002
thermo 5
run 25
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.8
ghost atom cutoff = 4.8
binsize = 2.4, bins = 8 8 8
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut, perpetual, half/full from (2)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
(2) pair atm, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 5.532 | 5.532 | 5.532 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1.033 -4.5929584 0 -3.0438458 -3.6506231
5 1.0335109 -4.5924034 0 -3.0425247 -3.6376817
10 1.0347484 -4.5941952 0 -3.0424606 -3.6032204
15 1.0357954 -4.5962409 0 -3.0429363 -3.5421887
20 1.0350606 -4.595891 0 -3.0436883 -3.4478779
25 1.0301813 -4.5896962 0 -3.0448107 -3.3111695
Loop time of 10.061 on 4 procs for 25 steps with 4000 atoms
Performance: 429.382 tau/day, 2.485 timesteps/s
100.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 9.8393 | 9.9439 | 10.008 | 2.0 | 98.84
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.052154 | 0.11613 | 0.22077 | 18.7 | 1.15
Output | 7.2241e-05 | 8.2552e-05 | 0.00011158 | 0.0 | 0.00
Modify | 0.00053763 | 0.00055265 | 0.00056624 | 0.0 | 0.01
Other | | 0.0002971 | | | 0.00
Nlocal: 1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 5835 ave 5835 max 5835 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 160000 ave 160000 max 160000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 320000 ave 320000 max 320000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1280000
Ave neighs/atom = 320
Neighbor list builds = 0
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:10

View File

@ -49,8 +49,8 @@ PairATM::PairATM(LAMMPS *lmp) : Pair(lmp)
if (lmp->citeme) lmp->citeme->add(cite_atm_package);
single_enable = 0;
restartinfo = 0;
one_coeff = 1;
//restartinfo = 1; // it does save restart info, correct?
//one_coeff = 0; // it does not only use * *, correct?
manybody_flag = 1;
}
@ -129,7 +129,7 @@ void PairATM::compute(int eflag, int vflag)
if (r6 > cut_sixth) continue;
interaction_ddd(nu[type[i]][type[j]][type[k]],
r6,rij2,rik2,rjk2,rij,rik,rjk,fj,fk,eflag,evdwl);
r6,rij2,rik2,rjk2,rij,rik,rjk,fj,fk,eflag,evdwl);
f[i][0] -= fj[0] + fk[0];
f[i][1] -= fj[1] + fk[1];
@ -229,7 +229,9 @@ void PairATM::write_restart(FILE *fp)
for (i = 1; i <= atom->ntypes; i++) {
for (j = i; j <= atom->ntypes; j++) {
fwrite(&setflag[i][j],sizeof(int),1,fp);
if (setflag[i][j]) for (k = i; k <= atom->ntypes; k++) fwrite(&nu[i][j][k],sizeof(double),1,fp);
if (setflag[i][j])
for (k = i; k <= atom->ntypes; k++)
fwrite(&nu[i][j][k],sizeof(double),1,fp);
}
}
}

View File

@ -11,10 +11,6 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Sergey Lishchuk
------------------------------------------------------------------------- */
#ifdef PAIR_CLASS
PairStyle(atm,PairATM)
@ -46,9 +42,9 @@ class PairATM : public Pair {
double cut_global, cut_sixth;
double ***nu;
protected:
virtual void allocate();
void interaction_ddd(double, double, double, double, double, double *, double *, double *, double *, double *, int, double &);
void allocate();
void interaction_ddd(double, double, double, double, double, double *,
double *, double *, double *, double *, int, double &);
};
}