Velocity equilibration problem

Hello. Respected Lammps users, I am actually try to collide the molten silver block to the substrate of diamond. When I use Velocity set command in my script and apply increasing velocity like Vy 50 100 300 etc “velocity water set 0.0 -300 0”, it is not working and the block slows down. I have visualized dump file in ovito. Kindly check my script. Here is my script.
Thanks for cooperation

units metal
dimension 3
boundary p p p
atom_style atomic

region simbox block -49 87 -75 240 -89 195 units box

lattice fcc 3.567
region substratediamond block -60 85 70 100 -30 140 units box

region ironball block -21 61 110 160 35 75 side in units box
#lattice bcc 2.856
lattice fcc 4.09

create_box 2 simbox

create_atoms 1 region substratediamond
create_atoms 2 region ironball

group slab region substratediamond
group water region ironball

mass 1 12
mass 2 107
group slab type 1
group water type 2

pair_style hybrid eam lj/cut 17
pair_coeff 1 1 none
pair_coeff 22 22 eam Ag_u3.eam
pair_coeff 1 2 lj/cut 0.02 3

thermo 1
thermo_style custom step lx ly lz press pxx pyy pzz pe temp
thermo_modify norm no

#minimize 1.0e-21 1.0e-21 10000 10000
timestep 0.001
velocity water create 1700 12345 mom yes rot no

velocity water scale 1700
fix 1 water nvt temp 1700 1700 0.1

velocity water set 0.0 -300 0
dump movie all atom 100 m.pb
run 3000000

This looks like the expected behavior. The ‘velocity set’ command only sets the velocity when it is called (here at the first timestep), but if you don’t use the ‘set_force’ command to prevent any change in the velocity, its likely that the velocity will evolve with time due to interactions.

Respected Simongravelle, I have added a new command fix 3 water setforce 0 0 0 before velocity set but it is not working. Secondly how the interaction between atoms affect as the interatomic potential has influence within units in the system? Why it worked a bit when I reduced velocity keeping the potentials constant? Kindly check.
Thanks for cooperation

What do you mean by not working? Also I did not say that using set_force is necessary the solution for your given problem, as it would make the system behaves as a unstoppable rigid bullet.

Sorry but I can’t figure out what this sentence means.

Sorry but ‘worked a bit’ is too vague and too unclear for me to help you.


These commands in combination make no sense: first you assign a randomized velocity distribution to a group of atoms, then you add time integration with a thermostat, and then you reset the velocities completely, before even doing any actual steps with time integration, i.e. equilibration.

What you observe is what I would expect from this input. That is, the “water” group will start moving as prescribed, but then - gradually - the Nose-Hoover thermostat of fix nvt will change the velocities to the desired kinetic energy distribution.

What you should be doing instead is:

  • create the atom positions
  • run a minimization (so to remove any excess potential energy due to mismatch of input lattice constants and the intrinsic lattice constants of the used potentials)
  • assign initial temperatures to both, mobile part of the substrate and projectile
  • set up time integration and thermostats for both, mobile part of the substrate and projectile to their respective desired temperatures
  • run until the system has equilibrated. Note that you need to monitor the temperatures of the individual groups, not the total.
  • remove thermostatting and run with plain fix nve time integration
  • use velocity add to add a velocity to the projectile. note that this will change its temperature
  • run until you see the desired collision and its effects

[Edit] Also, using a dissipative thermostat instead of the Nose-Hoover algorithm (which is meant for maintaining an equilibrium temperature of a bulk system with fluctuations following an NVT statistical mechanical ensemble) is likely more useful, as it promotes equipartitioning of the kinetic energy.

P.S.: it will help the clarity of your input if you use names, that reflect what they represent. using the group name “water” for something that is not water is quite confusing. while it does not matter technically, it makes a big difference if you want others to read and quickly understand your inputs.

Respected Simongrevelle, Sorry for inconvenience “1. how the interaction between atoms affect as the interatomic potential has influence within units in the system” : Here in my script the influence distance is just only 2units and free from interatomic potentials out of it because the block is 10units apart from the position of launch; "this is what you mentioned in previous reply that interactions affects but it is limited to 2units only above the diamond substrate.

  1. it worked a bit when I reduced velocity keeping the potentials constant: When I change the magnitude of velocity set and reduce it from 300 to 10 units the block starts moving faster rather than when it is at -300 units. It doesnt behave as a rigid bullet at low velocity magnitude rather it shows proper molecular collision within the block which when collide with substrates starts to deform as a molten piece.
  2. I need to melt the metal block and also collide it to spread so I dont need rigid behaviour of block. I need to execute atomic collisions of crystal when it melts as well as bulk resultant motion of whole block in order to collide to diamond substrate.

Thanks for cooperation

Respected Dr. Axel Kohlmeyer and lammps users,

  1. After I applied NVT ensemble, the random lattice vibrations were not activated in ovito visualization. The group id of water was just like a rigid body colliding to substrate and didnt indicate melting lacking lattice kinetic motion(atomistic vibrations like a gas molecules) at its place.

  2. Why shouldnt I use velocity seed “velocity water create 1700 12345 mom yes rot yes” to apply temperature as the kinetic energy is related to temperature?

  3. Why shouldnt I use velocity seed along with velocity set in order to collide molten lattice to substrate? May both these not be applied together to superpose each other and work in parallel? May velocity set not translate the block while seed melt it?

  4. Here in my case the substrate is stationery and have very high melting point compared to mobile block. Why should stationery part be thermoset then?

  5. How do random seed numbers affects "215678 , 12345, 76548 etc. May different seeds have different affects. How can best possible seed be determined?

What I want to perform is to collide a molten metal at a specific melting temperature so that when it collide to substrate at different velocity it should splash like a liquid and spread on substrate. According to this concern are the above measures you suggested and my queries concerned to this problem.

P.S.: it will help the clarity of your input if you use names, that reflect what they represent. using the group name “water” for something that is not water is quite confusing. while it does not matter technically, it makes a big difference if you want others to read and quickly understand your inputs.: water is actually a metal while slab is diamond crystal.
Thanks for cooperation

If you follow the procedure outlined in my post, you will get the kind of simulation that you are looking for.

Yes, which is a direct consequence of your input and that is why I said it makes no sense. The commands you use will not generate the system you obviously desire to simulate. It is as simple as that.

I did not say you should not. I pointed out that the effect of your “velocity create” command will be wiped out by the “velocity set” command. That is why your molten drop remains rigid.

The behavior of the velocity command is explained in detail in the documentation. LAMMPS is a computer program and as such it will do exactly what the individual commands are programmed to do, line after line, command after command. It cannot know what your intentions are and those are (obviously) not represented by the commands you use. You have to improve your understanding of this and pay closer attention to the details. As mentioned before, my outlined procedure will produce the kind of system you want to simulate, provided you implement each step correctly.

If it is not thermostatted, it will represent a system at 0 Kelvin. Moreover, without equilibration and time integration, there is no impact, no reaction/deformation/reflection etc. of the substrate to the impacting projectile. Do you consider that a good model? I don’t. Hence the suggestion for (initial) thermalization and time integration.

Please read up on how computer programs general (pseudo) random numbers. Once you understand how this works you will understand the need for using random seeds and different or the same random seeds. You should find something about this in a text book on monte carlo simulations.

That is what I understood from your original post and what I was outlining a simulation protocol for.

… and that is why it is confusing and why I was calling this not a good idea. It can mislead people reading your input and then give you incorrect advice.

Your questions indicate a lack of understanding of both, the details of the commands in your input as described in the LAMMPS documentation, and the kind of model you want to implement.

Thus what you are asking about are not so much LAMMPS questions but questions of understanding MD simulations and specifically simulations of the kind you want to do with surface systems and objects interacting with them. You should therefore have a discussion with whoever is advising or training you in MD simulations on how to correctly implement your desired model.

Respected Dr. Axel kohlmeyer and lammps users,
After reading your suggested script, I request to ask you; Which lammps command will activate translational motion of metal projectile ( motion of whole metal block; bulk or resultant motion required to reach substrate for collision) rather than its atomic vibrations showing melting at given temperature. Is velocity set right or velocity add will work? Is velocity add any command in lammps which is not available in documentation as I searched!

Thanks for your precious advice

I have nothing to add to my previous responses. All the information you need to do a successful simulation of the system you intend is there or in the LAMMPS documentation. If you need help beyond that, e.g. in how to set up simulations/models for such systems in general beyond just figuring out the syntax, you have to consult your adviser(s) and tutor(s). I don’t have the time and interest to give you a step-by-step personal tutoring and this is not the place to do that, anyway.

I wish you good luck.

I will close this topic now. If you have new questions to specific LAMMPS issues, please post a new topic with just that specific question. This will help to keep things on topic and so that people won’t have to read through lots of messages to understand what you are asking about.