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.