LAMMPS (30 Apr 2015)
# Test of Kawasaki Dynamics on LJ test system

units		metal
#newton off
boundary	p p p

lattice         fcc 1 origin 0.25 0.25 0.25
Lattice spacing in x,y,z = 1 1 1
atom_style	atomic

# indexed atom variables in test 5 need a map

atom_modify     sort 0 0.0 map hash

region          box block 0 10  0 10 0 10
create_box      2 box
Created orthogonal box = (0 0 0) to (10 10 10)
  1 by 2 by 2 MPI processor grid
create_atoms    1 box basis 1 2
Created 4000 atoms

mass 1 50
mass 2 50

pair_style      lj/cut 2.0
pair_coeff      1 1 0.0 1.0
pair_coeff      1 2 0.0 1.0
pair_coeff      2 2 0.0 1.0

neighbor	0.3 bin
neigh_modify	delay 10

# set the cut-off to 2.5x the cutoff from the potential
comm_modify     cutoff 5.0

# atom radii per type
variable r atom (type==1)*0.1+(type==2)*0.3

# groups
group type1 type 1
3000 atoms in group type1
group type2 type 2
1000 atoms in group type2

thermo 1
# reduce computes
#compute r1 type1 reduce sum c_v1[1]
#compute r2 type2 reduce sum c_v1[1]

#compute v1 all voronoi/atom radius v_r

#
# TEST 1: Sum of all voronoi cells is the simulation cell volume
#

compute v1 all voronoi/atom
dump    d1 all custom 1 dump.voro id type x y z c_v1[1] c_v1[2]
compute r0 all   reduce sum c_v1[1]
thermo_style custom c_r0
variable t1 equal c_r0
run  0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Neighbor list info ...
  1 neighbor list requests
  update every 1 steps, delay 10 steps, check yes
  master list distance cutoff = 2.3
Memory usage per processor = 7.70003 Mbytes
r0 
        1000 
Loop time of 2.14577e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 2.14577e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
print "TEST_1  $(round(abs(v_t1-1000)/10))% Error.  Sum of all voronoi cells is the simulation cell volume"
TEST_1  0% Error.  Sum of all voronoi cells is the simulation cell volume
uncompute v1
uncompute r0
undump    d1

#
# TEST 2: Sum of all only_group voronoi cells is the simulation cell volume
#

compute v1 type2 voronoi/atom only_group
dump    d1 all custom 1 dump.voro id type x y z c_v1[1] c_v1[2]
compute r0 type2   reduce sum c_v1[1]
compute r1 type1   reduce sum c_v1[1]
thermo_style custom c_r0 c_r1
variable t2a equal c_r0
variable t2b equal c_r1
run  0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 7.70003 Mbytes
r0 r1 
        1000            0 
Loop time of 2.68221e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 2.68221e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
print "TEST_2a $(round(abs(v_t2a-1000)/10))% Error.  Sum of all only_group voronoi cells is the simulation cell volume"
TEST_2a 0% Error.  Sum of all only_group voronoi cells is the simulation cell volume
print "TEST_2b $(round(v_t2b/10))% Error.  Sum of all only_group not included voronoi cells is zero"
TEST_2b 0% Error.  Sum of all only_group not included voronoi cells is zero
uncompute v1
uncompute r0
uncompute r1
undump    d1

#
# TEST 3: Sum of all radius voronoi cells is the simulation cell volume
#

compute v1 all voronoi/atom radius v_r
dump    d1 all custom 1 dump.voro id type x y z c_v1[1] c_v1[2]
compute r0 all   reduce sum c_v1[1]
thermo_style custom c_r0
variable t3 equal c_r0
run  0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 7.70003 Mbytes
r0 
        1000 
Loop time of 4.11272e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 4.11272e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
print "TEST_3  $(round(abs(v_t3-1000)/10))% Error.  Sum of all radius voronoi cells is the simulation cell volume"
TEST_3  0% Error.  Sum of all radius voronoi cells is the simulation cell volume
uncompute v1
uncompute r0
undump    d1

#
# TEST 4: Edge histogram tests
#

compute v1 type2 voronoi/atom edge_histo 8
thermo_style custom c_v1[1] c_v1[2] c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7]
run  1
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 5.64663 Mbytes
v1[1] v1[2] v1[3] v1[4] v1[5] v1[6] v1[7] 
           0            0            0        12000            0            0            0 
           0            0            0        12000            0            0            0 
Loop time of 0.256451 on 4 procs for 1 steps with 4000 atoms

Pair  time (%) = 0.00153804 (0.599739)
Neigh time (%) = 0 (0)
Comm  time (%) = 0.000682592 (0.266169)
Outpt time (%) = 0.254151 (99.1033)
Other time (%) = 7.90358e-05 (0.030819)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
variable t4a equal (abs(c_v1[4]-12000)+c_v1[1]+c_v1[2]+c_v1[3]+c_v1[5]+c_v1[6]+c_v1[7])/120
print "TEST_4a $(round(v_t4a))% Error.  Edge histogram of a simple cubic lattice (6 sides. 4 edges per side)"
TEST_4a 0% Error.  Edge histogram of a simple cubic lattice (6 sides. 4 edges per side)
uncompute v1
compute v1 all voronoi/atom edge_histo 8
thermo_style custom c_v1[1] c_v1[2] c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7]
run  1
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 5.64663 Mbytes
v1[1] v1[2] v1[3] v1[4] v1[5] v1[6] v1[7] 
           0            0            0        48000            0            0            0 
           0            0            0        48000            0            0            0 
Loop time of 0.25606 on 4 procs for 1 steps with 4000 atoms

Pair  time (%) = 0.00152463 (0.595418)
Neigh time (%) = 0 (0)
Comm  time (%) = 0.000471294 (0.184056)
Outpt time (%) = 0.254003 (99.1966)
Other time (%) = 6.12736e-05 (0.0239294)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
variable t4b equal (abs(c_v1[4]-48000)+c_v1[1]+c_v1[2]+c_v1[3]+c_v1[5]+c_v1[6]+c_v1[7])/480
print "TEST_4b $(round(v_t4b))% Error.  Edge histogram of a face centered cubic lattice (12 sides. 4 edges per side)"
TEST_4b 0% Error.  Edge histogram of a face centered cubic lattice (12 sides. 4 edges per side)
uncompute v1

# perturbed fcc lattice
displace_atoms all random 0.01 0.01 0.01 31423
compute v1 all voronoi/atom edge_histo 8 edge_threshold 0.1
thermo_style custom c_v1[1] c_v1[2] c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7]
run  1
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 5.64663 Mbytes
v1[1] v1[2] v1[3] v1[4] v1[5] v1[6] v1[7] 
           0            0            0        48000            0            0            0 
           0            0            0        48000            0            0            0 
Loop time of 0.271724 on 4 procs for 1 steps with 4000 atoms

Pair  time (%) = 0.00160706 (0.591431)
Neigh time (%) = 0 (0)
Comm  time (%) = 0.000579119 (0.213128)
Outpt time (%) = 0.269461 (99.1672)
Other time (%) = 7.67708e-05 (0.0282532)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100016 max 99984 min
Histogram: 1 0 0 1 0 0 1 0 0 1

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
variable t4c equal (abs(c_v1[4]-48000)+c_v1[1]+c_v1[2]+c_v1[3]+c_v1[5]+c_v1[6]+c_v1[7])/480
print "TEST_4c $(round(v_t4c))% Error.  Edge histogram of a perturbed face centered cubic lattice with edge_threshold"
TEST_4c 0% Error.  Edge histogram of a perturbed face centered cubic lattice with edge_threshold
uncompute v1

# bcc lattice
delete_atoms group all
Deleted 4000 atoms, new total = 0
lattice         bcc 1 origin 0.25 0.25 0.25
Lattice spacing in x,y,z = 1 1 1
create_atoms    1 box
Created 2000 atoms
compute v1 all voronoi/atom edge_histo 8
thermo_style custom c_v1[1] c_v1[2] c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7]
run  1
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 5.64663 Mbytes
v1[1] v1[2] v1[3] v1[4] v1[5] v1[6] v1[7] 
           0            0            0        12000            0        16000            0 
           0            0            0        12000            0        16000            0 
Loop time of 0.12346 on 4 procs for 1 steps with 2000 atoms

Pair  time (%) = 0.000387013 (0.313473)
Neigh time (%) = 0 (0)
Comm  time (%) = 0.000298023 (0.241393)
Outpt time (%) = 0.122753 (99.4275)
Other time (%) = 2.17557e-05 (0.0176217)

Nlocal:    500 ave 500 max 500 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    8500 ave 8500 max 8500 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    28000 ave 28000 max 28000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 112000
Ave neighs/atom = 56
Neighbor list builds = 0
Dangerous builds = 0
variable t4d equal (abs(c_v1[4]-12000)+abs(c_v1[6]-16000)+c_v1[1]+c_v1[2]+c_v1[3]+c_v1[5]+c_v1[7])/280
print "TEST_4d $(round(v_t4d))% Error.  Edge histogram of a body centered cubic lattice (truncated octahedron, 6 sides with 4 edges, 8 sides with 6 edges)"
TEST_4d 0% Error.  Edge histogram of a body centered cubic lattice (truncated octahedron, 6 sides with 4 edges, 8 sides with 6 edges)
uncompute v1

# restore fcc lattice
delete_atoms group all
Deleted 2000 atoms, new total = 0
lattice         fcc 1 origin 0.25 0.25 0.25
Lattice spacing in x,y,z = 1 1 1
create_atoms    1 box basis 1 2
Created 4000 atoms

#
# TEST 5: Occupation analysis
#

print "START5"
START5

# start with pristine lattice
variable i1 equal 13
variable i2 equal 257
compute v1 all voronoi/atom occupation
compute r0 all   reduce sum c_v1[1]
compute r1 all   reduce sum c_v1[2]
variable d5a equal c_v1[${i1}][1]
variable d5a equal c_v1[13][1]
variable d5b equal c_v1[${i2}][1]
variable d5b equal c_v1[257][1]
variable d5c equal c_v1[${i1}][2]
variable d5c equal c_v1[13][2]
variable d5d equal c_v1[${i2}][2]
variable d5d equal c_v1[257][2]
thermo_style custom c_r0 c_r1 v_d5a v_d5b v_d5c v_d5d

run 0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 5.64663 Mbytes
r0 r1 d5a d5b d5c d5d 
        4000         4000            1            1            1            1 
Loop time of 2.20537e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 2.20537e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
# expect 1 1 1 1 (one atom per cell each)
variable t5a equal abs(${d5a}-1)+abs(${d5b}-1)+abs(${d5c}-1)+abs(${d5d}-1)
variable t5a equal abs(1-1)+abs(${d5b}-1)+abs(${d5c}-1)+abs(${d5d}-1)
variable t5a equal abs(1-1)+abs(1-1)+abs(${d5c}-1)+abs(${d5d}-1)
variable t5a equal abs(1-1)+abs(1-1)+abs(1-1)+abs(${d5d}-1)
variable t5a equal abs(1-1)+abs(1-1)+abs(1-1)+abs(1-1)

# move atom i1 next to atom i2
variable oxd equal x[${i1}]
variable oxd equal x[13]
variable oyd equal y[${i1}]
variable oyd equal y[13]
variable ozd equal z[${i1}]
variable ozd equal z[13]
# we need to freeze this value
variable ox equal ${oxd}
variable ox equal 3.25
variable oy equal ${oyd}
variable oy equal 0.25
variable oz equal ${ozd}
variable oz equal 0.25
# these coords dont change so dynamic evaluation is ok
variable nx equal x[${i2}]
variable nx equal x[257]
variable ny equal y[${i2}]
variable ny equal y[257]
variable nz equal z[${i2}]
variable nz equal z[257]
set atom ${i1} x $(v_nx+0.2) y $(v_ny+0.2) z $(v_nz+0.2)
set atom 13 x $(v_nx+0.2) y $(v_ny+0.2) z $(v_nz+0.2)
set atom 13 x 4.4500000000000001776 y $(v_ny+0.2) z $(v_nz+0.2)
set atom 13 x 4.4500000000000001776 y 1.4499999999999999556 z $(v_nz+0.2)
set atom 13 x 4.4500000000000001776 y 1.4499999999999999556 z 1.4499999999999999556
  1 settings made for x
  1 settings made for y
  1 settings made for z

run 0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 6.14663 Mbytes
r0 r1 d5a d5b d5c d5d 
        4000         4002            0            2            2            2 
Loop time of 3.57628e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 3.57628e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    99999.2 ave 100075 max 99967 min
Histogram: 2 1 0 0 0 0 0 0 0 1

Total # of neighbors = 399997
Ave neighs/atom = 99.9993
Neighbor list builds = 0
Dangerous builds = 0
# expect 0 2 2 2 (vacancy at the original i1 site, interstitial at i2 and both atoms are now sharing a site)
variable t5b equal abs(${d5a}-0)+abs(${d5b}-2)+abs(${d5c}-2)+abs(${d5d}-2)
variable t5b equal abs(0-0)+abs(${d5b}-2)+abs(${d5c}-2)+abs(${d5d}-2)
variable t5b equal abs(0-0)+abs(2-2)+abs(${d5c}-2)+abs(${d5d}-2)
variable t5b equal abs(0-0)+abs(2-2)+abs(2-2)+abs(${d5d}-2)
variable t5b equal abs(0-0)+abs(2-2)+abs(2-2)+abs(2-2)

# move atom back
set atom ${i1} x ${ox} y ${oy} z ${oz}
set atom 13 x ${ox} y ${oy} z ${oz}
set atom 13 x 3.25 y ${oy} z ${oz}
set atom 13 x 3.25 y 0.25 z ${oz}
set atom 13 x 3.25 y 0.25 z 0.25
  1 settings made for x
  1 settings made for y
  1 settings made for z

run 0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Memory usage per processor = 6.14663 Mbytes
r0 r1 d5a d5b d5c d5d 
        4000         4000            1            1            1            1 
Loop time of 3.33786e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 3.33786e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17000 ave 17000 max 17000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    100000 ave 100000 max 100000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 400000
Ave neighs/atom = 100
Neighbor list builds = 0
Dangerous builds = 0
# expect 1 1 1 1 (restored to the initial state)
variable t5c equal abs(${d5a}-1)+abs(${d5b}-1)+abs(${d5c}-1)+abs(${d5d}-1)
variable t5c equal abs(1-1)+abs(${d5b}-1)+abs(${d5c}-1)+abs(${d5d}-1)
variable t5c equal abs(1-1)+abs(1-1)+abs(${d5c}-1)+abs(${d5d}-1)
variable t5c equal abs(1-1)+abs(1-1)+abs(1-1)+abs(${d5d}-1)
variable t5c equal abs(1-1)+abs(1-1)+abs(1-1)+abs(1-1)

print "TEST_5  $((v_t5a+v_t5b+v_t5c)*100)% Error.  Detection of vacancies and interstitials using the {occupation} keyword."
TEST_5  0% Error.  Detection of vacancies and interstitials using the {occupation} keyword.

uncompute v1
uncompute r0
uncompute r1

#
# TEST 6: Sum of all voronoi cells is the triclinic simulation cell volume
#

# switch to triclinic box
change_box all triclinic
  triclinic box = (0 0 0) to (10 10 10) with tilt (0 0 0)
change_box all xy final 5.0 remap units box
  triclinic box = (0 0 0) to (10 10 10) with tilt (5 0 0)

compute v1 all voronoi/atom
dump    d1 all custom 1 dump.voro id type x y z c_v1[1] c_v1[2]
compute r0 all   reduce sum c_v1[1]
thermo_style custom c_r0
variable t6 equal c_r0
run  0
WARNING: No fixes defined, atoms won't move (../verlet.cpp:55)
Neighbor list info ...
  1 neighbor list requests
  update every 1 steps, delay 10 steps, check yes
  master list distance cutoff = 2.3
Memory usage per processor = 7.70784 Mbytes
r0 
        1000 
Loop time of 3.27826e-06 on 4 procs for 0 steps with 4000 atoms

Pair  time (%) = 0 (0)
Neigh time (%) = 0 (0)
Comm  time (%) = 0 (0)
Outpt time (%) = 0 (0)
Other time (%) = 3.27826e-06 (100)

Nlocal:    1000 ave 1000 max 1000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost:    17900 ave 17900 max 17900 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs:    108000 ave 108000 max 108000 min
Histogram: 4 0 0 0 0 0 0 0 0 0

Total # of neighbors = 432000
Ave neighs/atom = 108
Neighbor list builds = 0
Dangerous builds = 0
print "TEST_6  $(round((v_t6-1000)/10))% Error.  Sum of all voronoi cells is the triclinic simulation cell volume"
TEST_6  0% Error.  Sum of all voronoi cells is the triclinic simulation cell volume
uncompute v1
uncompute r0
undump    d1

# All tests done

print TEST_DONE
TEST_DONE
