fix qtb command


fix ID group-ID qtb keyword value ...
  • ID, group-ID are documented in fix command

  • qtb = style name of this fix

  • zero or more keyword/value pairs may be appended

  • keyword = temp or damp or seed or f_max or N_f

    temp value = target quantum temperature (temperature units)
    damp value = damping parameter (time units) inverse of friction <i>&gamma</i>;
    seed value = random number seed (positive integer)
    f_max value = upper cutoff frequency of the vibration spectrum (1/time units)
    N_f value = number of frequency bins (positive integer)


fix 1 all nve
fix 1 all qtb temp 110 damp 200 seed 35082 f_max 0.3 N_f 100 (liquid methane modeled with the REAX force field, real units)
fix 2 all nph iso 1.01325 1.01325 1
fix 2 all qtb temp 300 damp 1 seed 47508 f_max 120.0 N_f 100 (quartz modeled with the BKS force field, metal units)


This command performs the quantum thermal bath scheme proposed by (Dammak) to include self-consistent quantum nuclear effects, when used in conjunction with the fix nve or fix nph commands.

Classical molecular dynamics simulation does not include any quantum nuclear effect. Quantum treatment of the vibrational modes will introduce zero point energy into the system, alter the energy power spectrum and bias the heat capacity from the classical limit. Missing all the quantum nuclear effects, classical MD cannot model systems at temperatures lower than their classical limits. This effect is especially important for materials with a large population of hydrogen atoms and thus higher classical limits.

The equation of motion implemented by this command follows a Langevin form:

miai = fi + Ri - miγvi.

Here <i>m<sub>i</sub></i>, <i>a<sub>i</sub></i>, <i>f<sub>i</sub> </i>, <i>R<sub>i</sub></i>, <i>&gamma;</i> and <i>v<sub>i</sub> </i> represent mass, acceleration, force exerted by all other atoms, random force, frictional coefficient (the inverse of damping parameter damp), and velocity. The random force <i>R<sub>i</sub></i> is “colored” so that any vibrational mode with frequency <i>&omega;</i> will have a temperature-sensitive energy <i>&theta;</i>(<i>&omega;,T</i>) which resembles the energy expectation for a quantum harmonic oscillator with the same natural frequency:

θ(ω,T) = ℏω/2 + ℏω[exp(ℏω/kBT)-1]-1

To efficiently generate the random forces, we employ the method of (Barrat), that circumvents the need to generate all random forces for all times before the simulation. The memory requirement of this approach is less demanding and independent of the simulation duration. Since the total random force <i>R</i><sub>tot</sub> does not necessarily vanish for a finite number of atoms, <i>R<sub>i</sub></i> is replaced by <i>R<sub>i</sub></i> - <i>R</i><sub>tot</sub>/<i>N</i><sub>tot</sub> to avoid collective motion of the system.

The temp parameter sets the target quantum temperature. LAMMPS will still have an output temperature in its thermo style. That is the instantaneous classical temperature <i>T</i><sup>cl</sup> derived from the atom velocities at thermal equilibrium. A non-zero <i>T</i><sup>cl</sup> will be present even when the quantum temperature approaches zero. This is associated with zero-point energy at low temperatures.

Tcl = ∑ mivi2/3NkB

The damp parameter is specified in time units, and it equals the inverse of the frictional coefficient <i>&gamma;</i>. <i>&gamma;</i> should be as small as possible but slightly larger than the timescale of anharmonic coupling in the system which is about 10 ps to 100 ps. When <i>&gamma;</i> is too large, it gives an energy spectrum that differs from the desired Bose-Einstein spectrum. When <i>&gamma;</i> is too small, the quantum thermal bath coupling to the system will be less significant than anharmonic effects, reducing to a classical limit. We find that setting <i>&gamma;</i> between 5 THz and 1 THz could be appropriate depending on the system.

The random number seed is a positive integer used to initiate a Marsaglia random number generator. Each processor uses the input seed to generate its own unique seed and its own stream of random numbers. Thus the dynamics of the system will not be identical on two runs on different numbers of processors.

The f_max parameter truncate the noise frequency domain so that vibrational modes with frequencies higher than f_max will not be modulated. If we denote &Delta;<i>t</i> as the time interval for the MD integration, f_max is always reset by the code to make <i>&alpha;</i> = (int)(2*f_max*&Delta;<i>t</i>)<sup><i>-1</i></sup> a positive integer and print out relative information. An appropriate value for the cutoff frequency f_max would be around 2~3 <i>f</i><sub>D</sub>, where <i>f</i><sub>D</sub> is the Debye frequency.

The N_f parameter is the frequency grid size, the number of points from 0 to f_max in the frequency domain that will be sampled. <i>3&times;2</i> N_f per-atom random numbers are required in the random force generation and there could be as many atoms as in the whole simulation that can migrate into every individual processor. A larger N_f provides a more accurate sampling of the spectrum while consumes more memory. With fixed f_max and <i>&gamma;</i>, N_f should be big enough to converge the classical temperature <i>T</i><sup>cl</sup> as a function of target quantum bath temperature. Memory usage per processor could be from 10 to 100 Mbytes.


Unlike the fix nvt command which performs Nose/Hoover thermostatting AND time integration, this fix does NOT perform time integration. It only modifies forces to a colored thermostat. Thus you must use a separate time integration fix, like fix nve or fix nph to actually update the velocities and positions of atoms (as shown in the examples). Likewise, this fix should not normally be used with other fixes or commands that also specify system temperatures , e.g. fix nvt and fix temp/rescale.

Restart, fix_modify, output, run start/stop, minimizie info:

No information about this fix is written to binary restart files. Because the state of the random number generator is not saved in restart files, this means you cannot do “exact” restarts with this fix. However, in a statistical sense, a restarted simulation should produce similar behaviors of the system.

This fix is not invoked during energy minimization.


This fix style is part of the USER-QTB package. It is only enabled if LAMMPS was built with that package. See the Making LAMMPS section for more info.


The keyword defaults are temp = 300, damp = 1, seed = 880302, f_max=200.0 and N_f = 100.

(Dammak) Dammak, Chalopin, Laroche, Hayoun, and Greffet, Phys Rev Lett, 103, 190601 (2009).

(Barrat) Barrat and Rodney, J. Stat. Phys, 144, 679 (2011).