[lammps-users] Binary type system discrepancy

I am setting up a systems with two types of atoms, and as a first step have tested these systems against systems with only one type of atom. Regardless of whether the system contains one or two types of atoms, the potentials between all atoms is the same (the only difference between systems is the type label). When using a Lennard-Jones potential, there is no difference between a system with one or two types of atoms (after 1000 timesteps). However, when using a Yukawa potential, there is a difference in results between a system with one or two types of atoms. I am including my source files below. I would appreciate any suggestions!

Thanks!
Stephanie

#Mono Type LJ
units lj
dimension 3
atom_style atomic

lattice custom 0.5 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 &
       basis 0.0 0.0 0.0 basis 0.5 0.5 0.5

region box block -3.0 3.0 -3.0 3.0 -3.0 3.0
create_box 1 box
create_atoms 1 box

mass 1 1.0
velocity all create 1.0 87287

pair_style lj/cut 2.5 pair_coeff 1 1 1.0 1.0 2.5
pair_modify shift yes

neighbor 0.3 bin neigh_modify delay 0 every 10 check no

fix 1 all nvt 1.0 1.0 1.0 drag 0.2
thermo 20
dump MyDumpRandomize all xyz 10000 dump_randomize*.atom
run 1000

#Binary Type LJ units lj
dimension 3
atom_style atomic

lattice custom 0.5 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 &
         basis 0.0 0.0 0.0 basis 0.5 0.5 0.5

region box block -3.0 3.0 -3.0 3.0 -3.0 3.0
create_box 2 box
create_atoms 2 region box basis 1 1 basis 2 2

mass 1 1.0
mass 2 1.0
velocity all create 1.0 87287

pair_style lj/cut 2.5 pair_coeff 1 1 1.0 1.0 2.5 pair_coeff 1 2 1.0 1.0 2.5 pair_coeff 2 2 1.0 1.0 2.5
pair_modify shift yes

neighbor 0.3 bin neigh_modify delay 0 every 10 check no

fix 1 all nvt 1.0 1.0 1.0 drag 0.2
thermo 20
dump MyDumpRandomize all xyz 1000 dump_randomize*.atom
run 1000

#Mono Type Yukawa
units lj
dimension 3
atom_style atomic

lattice custom 0.5 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 &
       basis 0.0 0.0 0.0 basis 0.5 0.5 0.5

region box block -3.0 3.0 -3.0 3.0 -3.0 3.0

create_box 1 box
create_atoms 1 box

mass 1 1.0
mass 2 1.0
velocity all create 1.0 87287

pair_style yukawa 5.0 2.5
pair_coeff 1 1 1000.0 2.5
pair_modify shift yes

neighbor 0.3 bin neigh_modify delay 0 every 10 check no

fix 1 all nvt 1.0 1.0 1.0 drag 0.2
thermo 20
dump MyDumpRandomize all xyz 1000 dump_randomize*.atom
run 1000

#Binary Type Yukawa
units lj
dimension 3
atom_style atomic

lattice custom 0.5 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 &
        basis 0.0 0.0 0.0 basis 0.5 0.5 0.5

region box block -3.0 3.0 -3.0 3.0 -3.0 3.0
create_box 2 box
create_atoms 2 region box basis 1 1 basis 2 2

mass 1 1.0
mass 2 1.0
velocity all create 1.0 87287

pair_style yukawa 5.0 2.5
pair_coeff 1 1 1000.0 2.5
pair_coeff 1 2 1000.0 2.5
pair_coeff 2 2 1000.0 2.5
pair_modify shift yes

neighbor 0.3 bin neigh_modify delay 0 every 10 check no

fix 1 all nvt 1.0 1.0 1.0 drag 0.2
thermo 20
dump MyDumpRandomize all xyz 1000 dump_randomize*.atom
run 1000

Hi, Stephanie:

This appears to be a bug in pair_yukawa.cpp. You need to add

a[j][i] = a[i][j];
cut[j][i] = cut[i][j];

to the routine init_one. (I got suspicious when I swapped the atom types in the lattice and the energy changed!)

–AEI

I'll post a patch - thanks

Steve

Please try out the 27Mar08 patch and see if it fixes
the problem.

Thanks,
Steve