Updated documentation and source

This commit is contained in:
Sergey Lishchuk
2018-07-13 20:45:06 +01:00
6 changed files with 294 additions and 2 deletions

View File

@ -21,10 +21,14 @@ pair_coeff * * * 0.072 :pre
pair_style hybrid/overlay lj/cut 6.5 atm 2.5
pair_coeff * * lj/cut 1.0 1.0
<<<<<<< HEAD
pair_coeff 1 1 atm 1 0.064
pair_coeff 1 1 atm 2 0.080
pair_coeff 1 2 atm 2 0.100
pair_coeff 2 2 atm 2 0.125 :pre
=======
pair_coeff * * atm * 0.072 :pre
>>>>>>> 75ec0a6a990ae6eec59ca7fa80c8cff14d561495
[Description:]
@ -33,6 +37,7 @@ potential for the energy E of a system of atoms as
:c,image(Eqs/pair_atm.jpg)
<<<<<<< HEAD
where nu is the three-body interaction strength,
and the distances between pairs of atoms r12, r23 and r31
and the angles gamma1, gamma2 and gamma3
@ -42,11 +47,18 @@ are shown at the diagram:
There is no \"central\" atom, the interaction is symmetric with respect
to permutation of atom types.
=======
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.
>>>>>>> 75ec0a6a990ae6eec59ca7fa80c8cff14d561495
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.
<<<<<<< HEAD
The potential is calculated if all three atoms are in the
"neighbor list"_neighbor.html
and the distances between atoms satisfy r12 r23 r31 > cutoff^3.
@ -78,6 +90,57 @@ pair_coeff 2 1 1 nu :pre
Thus, to specify all ATM interactions between two atom types (eg 1 and 2)
it is sufficient to provide four pair_coeff commands, eg:
=======
--------------------
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 > 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
simulation; LAMMPS ignores those entries.
>>>>>>> 75ec0a6a990ae6eec59ca7fa80c8cff14d561495
pair_coeff 1 1 1 nu1
pair_coeff 1 1 2 nu2
@ -121,6 +184,19 @@ no requirement to supply the values of nu for all triplets.
--------------------
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
[Mixing, shift, table, tail correction, restart, rRESPA info]:
@ -155,4 +231,8 @@ LAMMPS"_Section_start.html#start_3 section for more info.
:link(Axilrod)
[(Axilrod)]
Axilrod and Teller, J Chem Phys, 11, 299 (1943);
<<<<<<< HEAD
Muto, Nippon Sugaku-Buturigakkwaishi 17, 629 (1943).
=======
Muto, Nippon, Sugaku, Butsuri, Gakkwaishi 17, 629 (1943).
>>>>>>> 75ec0a6a990ae6eec59ca7fa80c8cff14d561495

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,13 @@ PairATM::PairATM(LAMMPS *lmp) : Pair(lmp)
if (lmp->citeme) lmp->citeme->add(cite_atm_package);
single_enable = 0;
<<<<<<< HEAD
restartinfo = 1;
one_coeff = 0;
=======
//restartinfo = 1; // it does save restart info, correct?
//one_coeff = 0; // it does not only use * *, correct?
>>>>>>> 75ec0a6a990ae6eec59ca7fa80c8cff14d561495
manybody_flag = 1;
}
@ -129,9 +134,13 @@ void PairATM::compute(int eflag, int vflag)
r6 = rij2*rik2*rjk2;
if (r6 > cut_sixth) continue;
<<<<<<< HEAD
nu_local = nu[type[i]][type[j]][type[k]];
if (nu_local == 0.0) continue;
interaction_ddd(nu_local,
=======
interaction_ddd(nu[type[i]][type[j]][type[k]],
>>>>>>> 75ec0a6a990ae6eec59ca7fa80c8cff14d561495
r6,rij2,rik2,rjk2,rij,rik,rjk,fj,fk,eflag,evdwl);
f[i][0] -= fj[0] + fk[0];