Fix smd

Dear Lammps developers and users
I am using fix smd cvel tether, to move a group of atoms with constant velocity and my velocity is 0/0005 but when i run the code the velocity vary between 0/001 and 0/0001 but i think the average is something near my desired velocity , my question is weather this fluctuations normal or not . Thanks in advance.

Hello Lami, with tether you’re setting the velocity for a virtual particle and coupling that to your atoms. You’re not setting the velocity of the group of atoms directly, so it will fluctuate according to the interatomic potential, plus the added spring potential.

As for the exact magnitude of the fluctuations, nobody can know without the force constant or the temperature, neither of which you reported, and they would also depend on the rest of the simulation model. With no other forces acting on the center of the atoms and the virtual particle not moving (velocity zero), you have a harmonic oscillator whose thermal fluctuations are known.


It is more a question about whether this is what you desire. Just think of middle school level physics experiments about kinematics.
you are pulling an object with a string in an environment causing friction. so what happens is a function of the mass of the object, the force constant of the spring, the pulling speed, and the magnitude of friction. at least two of these factors you can control yourself.


Thanks for your help. So there is no easy way to move a group of atoms with constant velocity .

Thanks for your help. So there is no easy way to move a group of atoms with constant velocity .

yes, there is. it is all a question of your choices and what physics you want.

for example fix move does this, or using fix setforce and defining an initial velocity.

you will get exactly constant velocity in both cases, but then those atoms are ignoring all interactions and moving as a rigid entity.

if, like with fix smd, you are “driving” those atoms and want them to interact and be non-rigid and deformable, then you must not expect exactly constant velocity since those deviations are due to the interactions you are including. as mentioned before, how close the driven system is following depends on your choices of size/mass of the driven group, spring force constant, pulling speed, strength of interactions with the environment.

this is really all a question of rather simple physics and your choices and not a question of using LAMMPS.
LAMMPS will do what you ask of it, and follow the laws of classical mechanics and kinematics applied to particles of atomic scale and the interaction potential functions you select. you just need to spend some time figuring out how this all connects.
I gave a talk on that 10 years ago at an Nvidia GPU technology conference in the context of using interactive MD simulations with a haptic device. where the situation is even more complex as you also have to include the time scale at which you observe and interact with the system.

i suggest you grab a kinematics text book and implement some of those experiments of dragging macroscopic objects of varying masses around by a spring of varying spring constant with varying degrees of friction. should be simple and straightforward to do with a little python script or similar. always keep in mind that length and time scales are different and for example a typical AFM tip is on the atomic scale a huge and very, very heavy object. comparing those length, time, and size relations to what you expect from macroscopic experiments is crucial to understand what you are doing and have to provide as input.

simulations follow the GI-GO principle!