TAD for a Ag adatom

Hi,

I am facing a few problems in running a TAD job for a Ag adatom on Ag[001] surface.

I am attaching the input here.

  1. As far as I am running the dynamics (before switching on the TAD), its running well without any “lost atoms” message.

But as soon as I am switching on the TAD command, the problem starts. After ~400000 steps, it crashes with a “lost atoms” message.

To see what is happening, I have checked the trajectory using VMD and OVITO. It is seen that before “TAD” started working, the dynamics is as expected : The bottom layer is fixed, the surface atoms are showing the thermal vibration and the adatom is also vibrating about its initial position and very rarely it makes jumps on the surface.

The problem starts after that. After TAD starts working, the dump file is being written as soon as an event occurs. I have seen that the whole set of atoms actually moving within the simulation box (in this case, the box has some empty space). It appears that the center of mass is actually moving. But to fix the COM motion, I have added an extra command “velocity all zero linear” in the input script.

So I am confused. Can anybody suggest what to do in such a situation ?

  1. There is a second problem:

I have defined a “substrate” region such that:

substrate = moving + fixed (regions)

Therefore, we expect that ,

#_of_atoms = #_moving + #_fixed

But the output shows that,

of atoms in substrate = 350

of atoms in moving = 150

of atoms in fixed = 150

Hi,

I am facing a few problems in running a TAD job for a Ag adatom on Ag[001]
surface.

I am attaching the input here.

1. As far as I am running the dynamics (before switching on the TAD), its
running well without any "lost atoms" message.

But as soon as I am switching on the TAD command, the problem starts. After
~400000 steps, it crashes with a "lost atoms" message.

i don't think your problem it has much to do with TAD.
the problem is how you set your integrator and thermostat.
please see my comments in your input.

To see what is happening, I have checked the trajectory using VMD and OVITO.
It is seen that before "TAD" started working, the dynamics is as expected :
The bottom layer is fixed, the surface atoms are showing the thermal
vibration and the adatom is also vibrating about its initial position and
very rarely it makes jumps on the surface.

The problem starts after that. After TAD starts working, the dump file is
being written as soon as an event occurs. I have seen that the whole set of
atoms actually moving within the simulation box (in this case, the box has
some empty space). It appears that the center of mass is actually moving.
But to fix the COM motion, I have added an extra command "velocity all zero
linear" in the input script.

this is nonsense. the velocity command is a one shot operation.
if you properly fix your substrate, there should be no motion.

So I am confused. Can anybody suggest what to do in such a situation ?

2. There is a second problem:

I have defined a "substrate" region such that:

substrate = moving + fixed (regions)

Therefore, we expect that ,

#_of_atoms = #_moving + #_fixed

But the output shows that,

# of atoms in substrate = 350
# of atoms in moving = 150
# of atoms in fixed = 150

Part of the output:

lattice fcc 4.09
Lattice spacing in x,y,z = 4.09 4.09 4.09
region myreg block 0 5 0 5 0 5
create_box 2 myreg
Created orthogonal box = (0 0 0) to (20.45 20.45 20.45)
1 by 1 by 1 MPI processor grid

region substrate block INF INF INF INF INF 3
region moving block INF INF INF INF 2 3
region fixed block INF INF INF INF INF 1

you put your region boundaries *exactly* on
the lattice points. that will result in ill-defined
behavior as to whether atom positions are
considered inside or outside of the region
due to floating point truncation. better to use
numbers near the boundary. try for example:

region substrate block INF INF INF INF INF 3.1
region moving block INF INF INF INF 1.9 3.1
region fixed block INF INF INF INF INF 1.1

create_atoms 1 region substrate
Created 350 atoms

group Gsubstrate region substrate
350 atoms in group Gsubstrate
group Gmoving region moving
150 atoms in group Gmoving
group Gfixed region fixed
150 atoms in group Gfixed

Any help will be greatly appreciated.

Best regard,

--

Prithwish

The input is as follows:

==================================================
# temperature accelerated dynamics model for an adatom on Ag[001] surface

# SETTINGS
units metal
atom_style atomic
atom_modify map array
boundary p p f
atom_modify sort 0 0.0

# temperatures
variable tlo equal 300.0
variable thi equal 800.0

# minimization parameters

variable etol equal 1.0e-5
variable ftol equal 1.0e-5
variable maxiter equal 100
variable maxeval equal 100
variable dmax equal 1.0e-1

# deposit an adatom on Ag[0 0 1] surface

# Making the surface
variable a equal 4.09
lattice fcc $a
region myreg block 0 5 &
0 5 &
0 5
create_box 2 myreg

region substrate block INF INF INF INF INF 3
region moving block INF INF INF INF 2 3
region fixed block INF INF INF INF INF 1

create_atoms 1 region substrate

group Gsubstrate region substrate
group Gmoving region moving
group Gfixed region fixed

region slab block 0 5 0 5 4 5

group Ag type 1
group addatoms type 2

# add adatom

fix 2 addatoms deposit 1 2 10 12345 region slab global 1.8 2.0
units box
fix 3 addatoms wall/reflect zhi EDGE

# DEFINE POTENTIAL
pair_style eam
pair_coeff * * Ag_u3.eam
mass * 107.8682

neigh_modify delay 0
compute add addatoms temp
compute_modify add dynamic yes extra 0

# INITIALIZE VELOCITIES
velocity all create \{thi\} 4928459 rot yes mom yes dist gaussian timestep 0\.001 fix 4 all nve fix 5 all langevin {thi} ${thi} 0.1 48278

if you don't want your fixed substrate atoms
to move, you must not thermostat them.
not only is your effective temperature wrong
(as you include the DOFs from the fixed atoms)
this way, they will slowly pick up kinetic energy.

# FIX THE BOTTOM LAYER
fix 6 Gfixed setforce 0.0 0.0 0.0
velocity Gfixed set 0.0 0.0 0.0

thermo_style custom step atoms temp epair etotal press
thermo 100
thermo_modify temp add

dump 1 all atom 10 tmp.deposit
run 10000

# TAD

# COM to be fixed
velocity all zero linear

no. this will only remove COM bias once.

dump events all custom 1 dump.tad id type x y z

compute patom all pe/atom
compute pe all reduce sum c_patom
compute satom all stress/atom
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol)

   thermo\_style custom step temp pe c\_pe press v\_press

    compute         event all event/displace 2\.89

     unfix 4
     unfix 5
     fix             7 all nvt temp $\{thi\} $\{thi\} 0\.1

here you integrate and thermalize all atoms again.
this is not correct and explains your losing atoms.

mind you, if you'd run the first part as long as
the TAD part, you'd probably lose atoms sooner
or later, too. this part is worse due to the relative
order of fix setforce vs fix nvt.

axel.

Dear Axel,

Thank you very much for your guidance.

I modified the input script as you guided. I am happy to inform you that I was able to reproduce the original Ag adatom results by Sorensen and Art Voter fairly well (not exactly !).

Thanks again. However, I am going to post the modified input file once again if it comes to help to some folks.

Best regards,