Can I assign an initial velocity to a single atom in LAMMPS?

Hi all,

I am fairly new to LAMMPS and am trying to “shoot” a hydrogen atom at an amorphous water-ice slab. The slab is comprised of 1000 water molecules, and I am simply trying to place an atom at some point above the slab, give it an initial velocity, and see if the hydrogen atom sticks to the slab.

I can create the slab fine, but I am having trouble assigning a velocity to a atom so that the atom will approach the slab. I have tried to explicitly set the velocity (i.e. with “velocity set” and assigning a value for vz), and while the printed velocity is the one I gave it, the atom will not move from its initial position.

I can fix the velocity to a certain value, this will move the atom but serves no purpose in what I’m trying to simulate because the velocity is staying fixed at that value. I just want an initial kick.

Of course, temperature scaling won’t do because this is a single atom. Temperature scaling (i.e. with “velocity create” or “velocity scale”) does work if I am using molecular hydrogen after I fix the bond as rigid between the two hydrogen atoms.

There must be something fundamental that I am doing wrong. Is there a way to do this in LAMMPS? Or is my approach just entirely incorrect. I’ve attached my input files.

I appreciate any and all help.


John (946 Bytes) (461 Bytes) (658 Bytes)

The problem is you’re not integrating the position of the atoms in group hyd. You’re only applying fix nvt to the atoms in water, so hyd won’t change.


And you probably don’t want to thermostat the single atom.
So you should apply a fix nve to a group containing the
single atom, which will time integrate it.


Thanks Steve and Ahmed! That did the trick, silly overlook on my part.