lammps/doc/fix_nvt_sllod.html

145 lines
6.1 KiB
HTML

<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nvt/sllod command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nvt/sllod Tstart Tstop Tdamp keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nvt/sllod = style name of this fix command
<LI>Tstart,Tstop = desired temperature at start/end of run
<LI>Tdamp = temperature damping parameter (time units)
<LI>zero or more keyword/value pairs may be appended to the args
<LI>keyword = <I>drag</I>
<PRE> <I>drag</I> value = drag factor added to thermostat (0.0 = no drag)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nvt/sllod 300.0 300.0 100.0
fix 1 all nvt/sllod 300.0 300.0 100.0 drag 0.2
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVT integration to update positions and velocities
each timestep for atoms in the group using a Nose/Hoover temperature
thermostat. V is volume; T is temperature. This creates a system
trajectory consistent with the canonical ensemble.
</P>
<P>This thermostat is used for a simulation box that is changing size
and/or shape, for example in a non-equilibrium MD (NEMD) simulation.
The size/shape change is induced by use of the <A HREF = "fix_deform.html">fix
deform</A> command, so each point in the simulation box
can be thought of as having a "streaming" velocity. This
position-dependent streaming velocity is subtracted from each atom's
actual velocity to yield a thermal velocity which is used for
temperature computation and thermostatting. For example, if the box
is being sheared in x, relative to y, then points at the bottom of the
box (low y) have a small x velocity, while points at the top of the
box (hi y) have a large x velocity. These velocities do not
contribute to the thermal "temperature" of the atom.
</P>
<P>IMPORTANT NOTE: <A HREF = "fix_deform.html">Fix deform</A> has an option for
remapping either atom coordinates or velocities to the changing
simulation box. To use fix nvt/sllod, fix deform should NOT remap
atom positions, because fix nvt/sllod adjusts the atom positions and
velocities to create a velocity profile that matches the changing box
size/shape. Fix deform SHOULD remap atom velocities when atoms cross
periodic boundaries since that is consistent with maintaining the
velocity profile created by fix nvt/sllod. LAMMPS will give an
error if this setting is not consistent.
</P>
<P>The SLLOD equations of motion coupled to a Nose/Hoover thermostat are
discussed in <A HREF = "#Tuckerman">(Tuckerman)</A> (eqs 4 and 5), which is what is
implemented in LAMMPS in a velocity Verlet formulation.
</P>
<P>The desired temperature at each timestep is a ramped value during the
run from <I>Tstart</I> to <I>Tstop</I>. The <A HREF = "run.html">run</A> command documents
how to make the ramping take place across multiple runs. The <I>Tdamp</I>
parameter is specified in time units and determines how rapidly the
temperature is relaxed. For example, a value of 100.0 means to relax
the temperature in a timespan of (roughly) 100 time units (tau or
fmsec or psec - see the <A HREF = "units.html">units</A> command).
</P>
<P>In some cases (e.g. for solids) the temperature of the system can
oscillate undesirably when a Nose/Hoover thermostat is applied. The
optional <I>drag</I> keyword will damp these oscillations, although it
alters the Nose/Hoover equations. A value of 0.0 (no drag) leaves the
Nose/Hoover formalism unchanged. A non-zero value adds a drag term;
the larger the value specified, the greater the damping effect.
Performing a short run and monitoring the temperature is the best way
to determine if the drag term is working. Typically a value between
0.2 to 2.0 is sufficient to damp oscillations after a few periods.
</P>
<P>This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp/deform", as if this command had
been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp/deform
</PRE>
<P>See the <A HREF = "compute_temp_deform.html">compute temp/deform</A> command for
details. Note that the ID of the new compute is the fix-ID with
underscore + "temp" appended and the group for the new compute is the
same as the fix group.
</P>
<P>Note that this is NOT the compute used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
during thermodyanmic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> will have no
effect on this fix. Alternatively, you can directly assign a new
compute (for calculating temeperature) that you have defined to this
fix via the <A HREF = "fix_modify.html">fix_modify</A> command.
</P>
<P>This fix makes a contribution to the potential energy of the system
that can be included in thermodynamic output of potential energy using
the <A HREF = "fix_modify.html">fix_modify energy</A> option. The contribution can
also be printed by itself via the keyword <I>f_fix-ID</I> in the
<A HREF = "thermo_style.html">thermo_style custom</A> command.
</P>
<P><B>Restrictions:</B>
</P>
<P>The final Tstop cannot be 0.0 since it would make the target T = 0.0
at some timestep during the simulation which is not allowed in
the Nose/Hoover formulation.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_npt.html">fix npt</A>, <A HREF = "fix_npt.html">fix
npt</A>, <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>, <A HREF = "fix_langevin.html">fix
langevin</A>, <A HREF = "fix_modify.html">fix_modify</A>,
<A HREF = "temperature.html">temperature</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are drag = 0.0.
</P>
<HR>
<A NAME = "Tuckerman"></A>
<P><B>(Tuckerman)</B> Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys,
106, 5615 (1997).
</P>
</HTML>