mirror of https://github.com/lammps/lammps.git
220 lines
10 KiB
HTML
220 lines
10 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 nphug command
|
||
|
</H3>
|
||
|
<P><B>Syntax:</B>
|
||
|
</P>
|
||
|
<PRE>fix ID group-ID nphug keyword value ...
|
||
|
</PRE>
|
||
|
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
|
||
|
|
||
|
<PRE>one or more keyword value pairs may be appended
|
||
|
keyword = <I>temp</I> or <I>iso</I> or <I>aniso</I> or <I>tri</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>couple</I> or <I>tchain</I> or <I>pchain</I> or <I>mtk</I> or <I>tloop</I> or <I>ploop</I> or <I>nreset</I> or <I>drag</I> or <I>dilate</I> or <I>scaleyz</I> or <I>scalexz</I> or <I>scalexy</I>
|
||
|
<I>temp</I> values = Value1 Value2 Tdamp
|
||
|
Value1, Value2 = Nose-Hoover target temperatures, ignored by Hugoniostat
|
||
|
Tdamp = temperature damping parameter (time units)
|
||
|
<I>iso</I> or <I>aniso</I> or <I>tri</I> values = Pstart Pstop Pdamp
|
||
|
Pstart,Pstop = scalar external pressures, must be equal (pressure units)
|
||
|
Pdamp = pressure damping parameter (time units)
|
||
|
<I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> values = Pstart Pstop Pdamp
|
||
|
Pstart,Pstop = external stress tensor components, must be equal (pressure units)
|
||
|
Pdamp = stress damping parameter (time units)
|
||
|
<I>couple</I> = <I>none</I> or <I>xyz</I> or <I>xy</I> or <I>yz</I> or <I>xz</I>
|
||
|
<I>tchain</I> value = length of thermostat chain (1 = single thermostat)
|
||
|
<I>pchain</I> values = length of thermostat chain on barostat (0 = no thermostat)
|
||
|
<I>mtk</I> value = <I>yes</I> or <I>no</I> = add in MTK adjustment term or not
|
||
|
<I>tloop</I> value = number of sub-cycles to perform on thermostat
|
||
|
<I>ploop</I> value = number of sub-cycles to perform on barostat thermostat
|
||
|
<I>nreset</I> value = reset reference cell every this many timesteps
|
||
|
<I>drag</I> value = drag factor added to barostat/thermostat (0.0 = no drag)
|
||
|
<I>dilate</I> value = <I>all</I> or <I>partial</I>
|
||
|
<I>scaleyz</I> value = <I>yes</I> or <I>no</I> = scale yz with lz
|
||
|
<I>scalexz</I> value = <I>yes</I> or <I>no</I> = scale xz with lz
|
||
|
<I>scalexy</I> value = <I>yes</I> or <I>no</I> = scale xy with ly
|
||
|
</PRE>
|
||
|
|
||
|
</UL>
|
||
|
<P><B>Examples:</B>
|
||
|
</P>
|
||
|
<P>fix myhug all nphug temp 1.0 1.0 10.0 z 40.0 40.0 70.0
|
||
|
fix myhug all nphug temp 1.0 1.0 10.0 iso 40.0 40.0 70.0 drag 200.0 tchain 1 pchain 0
|
||
|
</P>
|
||
|
<P><B>Description:</B>
|
||
|
</P>
|
||
|
<P>This command is a variant of the Nose-Hoover
|
||
|
<A HREF = "fix_nh.html">fix npt</A> fix style.
|
||
|
It performs time integration of the Hugoniostat equations
|
||
|
of motion developed by Ravelo et al. <A HREF = "#Ravelo">(Ravelo)</A>.
|
||
|
These equations compress the system to a state with average
|
||
|
axial stress or pressure equal to the specified target value
|
||
|
and that satisfies the Rankine-Hugoniot (RH)
|
||
|
jump conditions for steady shocks.
|
||
|
</P>
|
||
|
<P>The compression can be performed
|
||
|
either
|
||
|
hydrostatically (using keyword iso, aniso, or tri) or uniaxially
|
||
|
(using keywords x, y, or z). In the hydrostatic case,
|
||
|
the cell dimensions change dynamically so that the average axial stress
|
||
|
in all three directions converges towards the specified target value.
|
||
|
In the uniaxial case, the chosen cell dimension changes dynamically
|
||
|
so that the average
|
||
|
axial stress in that direction converges towards the target value. The
|
||
|
other two cell dimensions are kept fixed (zero lateral strain).
|
||
|
</P>
|
||
|
<P>This leads to the following additional restrictions on the keywords:
|
||
|
</P>
|
||
|
<P>One and only one of the following keywords should be used: iso, aniso, tri, x, y, z,
|
||
|
</P>
|
||
|
<P>The specified initial and final target pressures must be the same.
|
||
|
</P>
|
||
|
<P>The keywords xy, xz, yz may not be used.
|
||
|
</P>
|
||
|
<P>The only admissible value for the couple keyword is xyz,
|
||
|
which has the same effect as keyword iso
|
||
|
</P>
|
||
|
<UL><LI>The temp keyword must be used in order to specify the time constant for
|
||
|
<LI>kinetic energy relaxation, but initial and final target temperature values
|
||
|
<LI>are ignored.
|
||
|
</UL>
|
||
|
<P>Essentially, a Hugoniostat simulation is an NPT simulation in which the
|
||
|
user-specified target temperature is replaced with a time-dependent
|
||
|
target temperature Tt obtained from the following equation:
|
||
|
</P>
|
||
|
<P>Tt - T = (0.5*(P+P0)(V0-V)+E0-E)/(Ndof kB) = Delta
|
||
|
</P>
|
||
|
<P>where T and Tt are the instantaneous and target temperatures,
|
||
|
P and P0 are the instantaneous and reference pressure or axial stress,
|
||
|
depending on whether hydrostatic or uniaxial compression is being
|
||
|
performed, V and V0 are the instantaneous and reference volumes,
|
||
|
E and E0 are the instantaneous and reference internal energy (potential
|
||
|
plus kinetic), Ndof is the number of degrees of freedom used in the
|
||
|
definition of temperature, and kB is the Boltzmann constant. Delta is the
|
||
|
negative deviation of the instantaneous temperature from the target temperature.
|
||
|
The values of E0, V0, and P0 are the instantaneous values at the start of
|
||
|
the simulation. These can be overridden using the fix_modify keywords <I>e0</I>,
|
||
|
<I>v0</I>, and <I>p0</I> described below.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_temp_berendsen.html">fix
|
||
|
temp/berendsen</A> command which performs
|
||
|
thermostatting but NO time integration, this fix performs
|
||
|
thermostatting/barostatting AND time integration. Thus you should not
|
||
|
use any other time integration fix, such as <A HREF = "fix_nve.html">fix nve</A> on
|
||
|
atoms to which this fix is applied. Likewise, this fix should not be
|
||
|
used on atoms that have their temperature controlled by another fix
|
||
|
- e.g. by <A HREF = "fix_nh.html">fix langevin</A> or <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>
|
||
|
commands.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P>This fix compute a temperature and pressure each timestep. To do
|
||
|
this, the fix creates its own computes of style "temp" and "pressure",
|
||
|
as if one of these two sets of commands had been issued:
|
||
|
</P>
|
||
|
<PRE>compute fix-ID_temp group-ID temp
|
||
|
compute fix-ID_press group-ID pressure fix-ID_temp
|
||
|
</PRE>
|
||
|
<PRE>compute fix-ID_temp all temp
|
||
|
compute fix-ID_press all pressure fix-ID_temp
|
||
|
</PRE>
|
||
|
<P>See the <A HREF = "compute_temp.html">compute temp</A> and <A HREF = "compute_pressure.html">compute
|
||
|
pressure</A> commands for details. Note that the
|
||
|
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
|
||
|
+ underscore + "press". For fix nvt, the group for the new computes
|
||
|
is the same as the fix group. For fix nph and fix npt, the group for
|
||
|
the new computes is "all" since pressure is computed for the entire
|
||
|
system.
|
||
|
</P>
|
||
|
<P>Note that these are NOT the computes used by thermodynamic output (see
|
||
|
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>
|
||
|
and <I>thermo_press</I>. This means you can change the attributes of this
|
||
|
fix's temperature or pressure via the
|
||
|
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
|
||
|
or pressure during thermodynamic 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> or
|
||
|
<I>thermo_press</I> will have no effect on this fix.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
|
||
|
</P>
|
||
|
<P>This fix writes the values of E0, V0, and P0, as well as the
|
||
|
state of all the thermostat and barostat
|
||
|
variables to <A HREF = "restart.html">binary restart files</A>. See the
|
||
|
<A HREF = "read_restart.html">read_restart</A> command for info on how to re-specify
|
||
|
a fix in an input script that reads a restart file, so that the
|
||
|
operation of the fix continues in an uninterrupted fashion.
|
||
|
</P>
|
||
|
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>e0</I>, <I>v0</I> and <I>p0</I> keywords
|
||
|
can be used to define the values of these quantities. Note the
|
||
|
the values for <I>e0</I> and <I>v0</I> are extensive, and so must correspond
|
||
|
to the total energy and volume of the entire system, not energy and
|
||
|
volume per atom. If any of these quantities are not specified, then the
|
||
|
instanteous value in the system at the start of the simulation is used.
|
||
|
</P>
|
||
|
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> and <I>press</I> options are
|
||
|
supported by these fixes. You can use them to assign a
|
||
|
<A HREF = "compute.html">compute</A> you have defined to this fix which will be used
|
||
|
in its thermostatting or barostatting procedure, as described above.
|
||
|
If you do this, note that the kinetic energy derived from the compute
|
||
|
temperature should be consistent with the virial term computed using
|
||
|
all atoms for the pressure. LAMMPS will warn you if you choose to
|
||
|
compute temperature on a subset of atoms.
|
||
|
</P>
|
||
|
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by these
|
||
|
fixes to add the energy change induced by Nose/Hoover thermostatting
|
||
|
and barostatting to the system's potential energy as part of
|
||
|
<A HREF = "thermo_style.html">thermodynamic output</A>. Either way, this energy is *not*
|
||
|
included in the definition of internal energy E when calculating the value
|
||
|
of Delta in the above equation.
|
||
|
</P>
|
||
|
<P>These fixes compute a global scalar and a global vector of quantities,
|
||
|
which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
|
||
|
commands</A>. The scalar value calculated by
|
||
|
these fixes is "extensive"; the vector values are "intensive".
|
||
|
</P>
|
||
|
<P>The scalar is the cumulative energy change due to the fix.
|
||
|
</P>
|
||
|
<P>The vector stores three quantities unique to this fix (Delta, Us, and up),
|
||
|
followed by all the internal Nose/Hoover thermostat and barostat
|
||
|
variables defined for <A HREF = "fix_nh.html">fix_style npt</A>. Delta is the deviation
|
||
|
of the temperature from the target temperature, given by the above equation.
|
||
|
Us and up are the shock and particle velocity correspponding to a steady
|
||
|
shock calculated from the Rh conditions. They have units of distance/time.
|
||
|
</P>
|
||
|
<P><B>Restrictions:</B>
|
||
|
</P>
|
||
|
<P>This fix style is part of the SHOCK package. It is only enabled if
|
||
|
LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
|
||
|
LAMMPS</A> section for more info.
|
||
|
</P>
|
||
|
<P>All the usual restrictions for <A HREF = "fix_nh.html">fix_style npt</A> apply,
|
||
|
plus the additional ones mentioned above.
|
||
|
</P>
|
||
|
<P><B>Related commands:</B>
|
||
|
</P>
|
||
|
<P><A HREF = "fix_msst.html">fix msst</A>, <A HREF = "fix_nh.html">fix npt</A>, <A HREF = "fix_modify.html">fix_modify</A>
|
||
|
</P>
|
||
|
<P><B>Default:</B>
|
||
|
</P>
|
||
|
<P>The keyword defaults are the same as those for <A HREF = "fix_nh.html">fix npt</A>
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<A NAME = "Ravelo"></A>
|
||
|
|
||
|
<P><B>(Ravelo)</B> Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004).
|
||
|
</P>
|
||
|
</HTML>
|