[lammps-users] How to set initial the temperature to a molecule?

Dear LAMMPS users,

I’ve tried to use “velocity + create” command to set the initial temperature to a molecule, but it didn’t work.

This simulation is about Si deposition on silicon nitride surface.

So, I need to set the initial temperature to Si precursor (in my input file, molecule SiN) and region ‘surface’


LAMMPS input - silicon nitride with reaxff

#----------------------------- Initial setup -------------------------------

boundary p p f

units real

atom_style charge

read_data RECON_Si3N4

molecule SiN SiH2NH221.data

group ADD type 2

run 0

timestep 0.1

pair_style reax/c lmp_control

pair_coeff * * ffield.reax.SiN Si N

#----------------------------- Grouping --------------------------------

region bulk prism 0 30.334820 0 26.270725 2.17 22.3319 -15.16741 0 0

group bulk region bulk

region surface prism 0 30.334820 0 26.270725 23 31.36 -15.16741 0 0

group surface region surface

region addarea prism 10 20 10 20 37 40 -15.16741 0 0

group addarea region addarea

neigh_modify delay 0

#--------------------------------- Minimization -----------------------------

fix bulknve bulk nve

fix surfacenve surface nve

fix Temp bulk temp/berendsen 500.0 500.0 100.0

fix qeq all qeq/reax 1 0.0 10.0 1e-6 param.qeq

minimize 1.0e-4 1.0e-6 500 1000

thermo 100

run 500

reset_timestep 0

For making the system in temperature equilibrium

#------------------------------- Simulation start --------------------------

fix please ADD deposit 1 0 1000 12345 region addarea near 1.0 &

mol SiN vz -0.03 -0.03

velocity surface create 500 12345

velocity ADD create 500 12345

dump dp1 all atom 50 ADD.lammpstrj

thermo 100

run 4000

there is a technical problem and a conceptual problem here.

technically, you can assign velocities to deposited atoms/molecules with the vx, vy, vz keyword.
the velocity command is not suitable, since in LAMMPS commands are executed immediately and thus when you apply the velocity command to the ADD group, there are no atoms in the ADD group and thus it cannot assign any velocities/temperature.

conceptually, it doesn’t make sense to have deposited particles assigned to to a specific “temperature”. first of all, the whole idea of temperature is a concept of a bulk system, so the temperature of a single atom or molecule is ill defined. you can compute it only based on the assumption of equipartitioning (i.e. that each part has the same (averaged) temperature) and based on looking at, e.g. a crystal where atoms are tethered to each other with harmonic springs. when you look at the deposition process the dominant contribution to the kinetic energy of the deposited particles is their “impact velocity”, i.e. the property you can assign with the fix deposit command. the actual temperature distribution may be different from the equilibrated bulk temperature, because there is nothing those deposited molecules are interacting with and thus could equilibrate and exchange kinetic energy with until they hit the surface. that impact may even create a temperature gradient due to the kinetic energy from the impact velocity.
so ultimately, what you are asking for is not very physical.

please also note that using velocity create on your bulk after you had already equilibrated the system makes not much sense either. why disrupt the system again and thus forcing another equilibration period and possibly invalidating your simulation results?