Question regarding eam/alloy

Hi,

I am confused by some feature of the eam/alloy potential. I am using a potential file from here :

The specified is cutoff is 6.5 A.

When displacing one atom by a small distance, without equilibrating, the other particles don’t move but the forces on them change, even if they are beyond the cutofff.
In fact, all the particles in the sample have a change in their forces.
(The system is much larger than the cutoff)

I would expect the forces to be adjusted only within the cutoff distance.
I am probably misunderstanding something basic about such potentials.

Talya

Hi - I’m CCing Aidan in case I get this wrong for EAM - he can correct me.

EAM is a short-range potential so beyond some distance, moving
atom J will have no effect on the force on atom I.

For EAM, I think that distance is 2x the cutoff. The energy of
an atom depends on its neighbor’s coords (within the cutoff).
That energy includes the atom’s embedding term in the EAM
formula. But the force on an atom depends on the embedding
energy of its neighbors. So force effectively depends on neighbors of
neighbors. In your case that distance would be 13 Angs.

If your box is periodic, then in one dimension, you need a box
bigger than twice that or 26A, for an atom to no longer
have another atom within 13A. If you consider the diagonal
direction, it’s sqrt(3) smaller. I.e. for a periodic cubic box
with side length a, you need to have sqrt(3) * a > 26A,
before you start to see the force on any atom in
the system unaffected by displacing a single atom.

Steve

If I consider the sample on the website I mentioned, it’s length is 65A. For this sample I expect to get particles that are beyond the cutoff of a certain particle.
Yet, a slight displacement which I took to be 10^-5A, changes the forces of the entire system.

My command is :

group one id 1

displace_atoms one move 0.00001 0 0 units box

dump matr all custom 1 myfile.dat id type x y z fx fy fz

run 0

Is there a better way to compute the forces created by a displacement?

I appreciate your help and time,

Talya

I think this has less to do with the cutoff but with breaking the perfect symmetry of your original system.

if i modify the input you are referring to as follows:

run 1
fix 0 all store/state 0 fx fy fz x y z
write_dump all custom init.dump id fx fy fz modify sort id

atom 8421 is at 0.0 0.0 0.0

group center id 8421
print “before displace: position (x[8421]) (y[8421]) (z[8421]) force (fx[8421]) (fy[8421]) (fz[8421])”
displace_atoms center move 0.0001 0.0 0.0
run 0 post no
write_dump all custom displaced.dump id fx fy fz modify sort id
variable absforce atom sqrt((fx-f_0[1])(fx-f_0[1])+(fy-f_0[2])(fy-f_0[2])+(fz-f_0[3])(fz-f_0[3]))
variable distance atom sqrt(x
x+yy+zz)
print “after displace: position (x[8421]) (y[8421]) (z[8421]) force (fx[8421]) (fy[8421]) (fz[8421])”
write_dump all custom compare.dump id v_absforce v_distance modify sort 3 thresh v_absforce > 1.0e-10

then the “compare.dump” file, which should only contain the distance from the origin and the difference in force, they only contain an expected (small) number of atoms within the 2x cutoff range.

Axel.

p.s.: here is the equivalent input for the EAM benchmark example:

variable xx equal 10
variable yy equal 10
variable zz equal 10

units metal
atom_style atomic
atom_modify map array

lattice fcc 3.615
region box block -{xx} {xx} -{yy} {yy} -{zz} {zz}
create_box 1 box
create_atoms 1 box

pair_style eam
pair_coeff 1 1 Cu_u3.eam

velocity all create 1600.0 376847 loop geom

neighbor 1.0 bin
neigh_modify every 1 delay 5 check yes

fix 1 all nve

timestep 0.005
thermo 50

#run 100

fix 0 all store/state 0 fx fy fz x y z
run 0
write_dump all custom init.dump id fx fy fz modify sort id

variable center index 16841

group center id {center} print "before displace: position (x[v_center]) (y[v_center]) (z[v_center]) force (fx[v_center]) (fy[v_center]) (fz[v_center])" displace_atoms center move 0.0001 0.0 0.0 run 0 post no write_dump all custom displaced.dump id fx fy fz modify sort id variable absforce atom sqrt((fx-f_0[1])*(fx-f_0[1])+(fy-f_0[2])*(fy-f_0[2])+(fz-f_0[3])*(fz-f_0[3])) variable distance atom sqrt(x*x+y*y+z*z) print "after displace: position (x[v_center]) (y[v_center]) (z[v_center]) force (fx[v_center]) (fy[v_center]) \$(fz[v_center])"
write_dump all custom compare.dump id v_absforce v_distance modify sort 3 thresh v_absforce > 1.0e-10

Thank you Axel!
It seems like what made the difference is putting “run 1” before doing the displacement.
Even when I started with amorphous systems, I still had the problem until I added “run 1”, so I don’t know if it is connected to symmetry.
Do you have an idea why this should be?

HI!
Rechecking I think that what made the difference is looking at the difference in forces rather than the force itself.
Do you agree?

No