Stop moving a surface


I have many atoms scattered around a hollow cylinder in a simulation box.

During the simulation, as atoms penetrate the cylinder, both the outer and inner surfaces of the cylinder expand.

I want to prevent the surface of the cylinder from moving outwards and not allow the atoms of that surface to move during the simulation. In other words, the outer surface should act like a wall that does not expand and only expands inward.

In your opinion, which Lammps command can be used so that the outer surface remains fixed as a boundary and does not move.

Thank you.


you are saying they are scattered (I assume randomly) around a cylinder. Physically, I see no reason why they would not behave as they currently are. Some random distribution around a cylinder is very likely far from some equilibrium state and therefore atoms will move around for quite some time.
An example of a cylindrical topology would be nanotubes which you can simulate quite easily under PBC, but they have a well defined topology as opposed to a random distribution.
Can you provide more physical motivation for your intentions?


I was able to fix this issue…
I am investigating the process of diffusion of two materials under high temperature

Please note that the term “fixed” is a bad choice of words here.

First of all, “to fix” does not really mean what you want to say, “to fixate” would come closer, but the best choice would be to use “to immobilize” since that is really what you want to achieve. Second, because of the “fix” command, it is not a good choice since it can be very confusing, since a lot of people also use the verb “to fix” in the context of LAMMPS as a shortcut of “to apply a fix command”.

How to immobilize atoms has been discussed may times before. The best approach is usually to not include the atoms that you want to immobilize in the group that the time integration fix(es) are applied to. The second best approach is to zero out the velocities and then use fix setforce on those atoms. If the velocities and forces are zero, atoms cannot move. This option is the only option, if you want atoms to be immobilized in one or two dimensions only.

You are right, I’m sorry

I selected a layer and then set the velocity and force of that layer to zero :

velocity shell create 0 16952 mom yes rot yes dist uniform

fix move shell setforce NULL 0.0 0.0

Is this what you mean?
So there is no other option?


Note quite. Your velocity command is “weird”. I think it is an oversight that velocity create allows to use a temperature of 0. Typically one would use:

velocity shell set 0.0 0.0 0.0

There is, I explained it, and mentioned that it is my preferred choice.

Thank you for your guidance…

Sorry for asking a question:

When I prevent the movement of atoms according to the instructions above, will their atomic stresses also become zero?

This is a superfluous question. You can very easily figure this out for yourself.

Thanks a lot
I realized.