Velocity command in granule

Dear all:
LAMMPS (3 Mar 2020)
atom_style sphere
units si
pair_style granular
Under the above conditions, I want to know how to initialize the velocity of each particle with the velocity command. I’ve tried the following commands:
velocity all create 300 28459 rot yes dist gaussian mom yes

velocity all create 100 28459 rot yes dist gaussian mom yes

velocity all create 300 28459 rot yes dist gaussian mom yes
run 0
velocity all scale 300

But the final output kinetic energy is almost the same, which shows that the velocity command does not work. So here to ask you, can I set the initialization speed of granular? If I can, how should I set it? Thank you!


I would be very careful before making statements claiming that some command does not work, specifically when your post is lacking any kind of proof.

The documentation for the velocity command — LAMMPS documentation
is quite detailed about what it does and what options you have.

Setting the velocity to a “temperature” like you did, does not make much sense for granular systems.
It is most useful for systems at the atomic scale.

Please also note that the velocity command - as documented - sets an initial velocity (either explicitly or following a given distribution or by rescaling), but then the evolution of the kinetic energy depends on the specific system and its geometry and interaction model. Moreover, when your temperature differs by a factor or 3, then so should the kinetic energy, which means the resulting value will be of the same order of magnitude.

And as a final comment, please keep in mind that the velocity command, like most commands in LAMMPS that don’t explicitly claim otherwise, operates on point particles. So it can only access the translational velocity of your granular particles.

First of all, thank you very much for your answer. Your answer is very helpful to me, but I still have some questions.

It’s about the description of your fourth paragraph. I’m a simulated cycle equilibrium process. I use a velocity command before each cycle. Then I find that there is no difference between 100K and 300K. Their kinetic energy after each cycle may be between 200000 and 300000, There is no multiple difference, so I don’t know whether it is the problem I set, or as you mentioned in the third paragraph, setting the velocity command to “temperature” can’t reset the kinetic energy of the granule system. If this is really the reason, what should I do to achieve the goal that I can reset the velocity of each particle in the granule system every cycle.

Thank you for your trouble.

It is impossible to give specific advice for a specific system on only a vague description of your process.

Please provide a very simple, small, and fast to run example input script that quickly demonstrates your issue and where you add some comments about what this is supposed to do and what kind of behavior your expect.

Please also explain what you expect the “temperature” you are setting is supposed to mean for your kind of system.

#Some basic settings

atom_style sphere
units si
fix 1 all nve/sphere
neighbor 0.02 bin
neigh_modify delay 0 every 1 check yes one 10000 page 100000
pair_style granular
pair_coeff * * hertz/material 5e7 0.3 0.5 tangential mindlin_rescale NULL 1.0 0.5 damping tsuji
timestep 0.000001

“”“The next step is to compress the box circularly. After compressing the box, there will be particles overlapping, so it will be balanced under the NVE ensemble for a period of time. I want to reset the particle velocity here, so that it will not have too much kinetic energy, and finally achieve the purpose of saving time.”""

variable i loop 20
label changebox
change_box all x scale 0.95 y scale 0.95 z scale 0.95 remap
velocity all create 100 28459 rot yes dist gaussian mom yes
run 100000
unfix overlap
next i
jump in.adopted changebox

The above is a simple code. At the beginning, it was because the kinetic energy generated by overlapping particles after balancing was very large, and the balancing time was too long. So I wanted to use the velocity command to reset the speed to save the balancing time, but the velocity command didn’t work in practice. What do you think I should do? Thank you very much for your advice.


Sorry, but without the data file, that input is useless.

At least the description is somewhat helpful. It would be much easier to read, if you would use the common nomenclature of the field, e.g. “equilibration” instead of “balancing”.

If I understand you correctly, you should have originally asked “How can I quench the kinetic energy of my system with granular particles using atom style sphere?” or “How can I reset the translational and rotational velocities of my particles to zero?”.

For that you should be using the set command — LAMMPS documentation
which allows to set vx, vy, vz, and omegax, omegay, and omegaz to any values including zero.

As mentioned before, the velocity command is only looking at point particles and those do not have any rotational velocities.

I seem to understand a little. Thank you very much for your help, but I don’t want to make the kinetic energy zero, because after compressing the box, some particles will overlap and produce the wrong configuration. It needs a certain velocity to make the overlapped particles move and separate to get a correct configuration, but the previous velocity comes from the potential energy generated by the overlapped particles, sometimes very large, So it takes a long time to equilibrium. Can I use the set command to simply set a relatively small velocity and angular velocity to achieve my goal?

This is a superfluous question. Please study the documentation and make a test.

Hahaha, OK, thank you very much!