Added FixMSST in package shock

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@4276 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
athomps 2010-06-16 21:05:37 +00:00
parent 73b32571d9
commit 0166234a3c
5 changed files with 326 additions and 1 deletions

View File

@ -367,6 +367,7 @@ package".
<TR><TD >poems </TD><TD > coupled rigid body motion</TD></TR>
<TR><TD >prd </TD><TD > parallel replica dynamics</TD></TR>
<TR><TD >reax </TD><TD > ReaxFF potential</TD></TR>
<TR><TD >shock </TD><TD > methods for MD simulations of shock loading</TD></TR>
<TR><TD >xtc </TD><TD > dump atom snapshots in XTC format
</TD></TR></TABLE></DIV>

View File

@ -361,6 +361,7 @@ peri : Peridynamics model and potential
poems : coupled rigid body motion
prd : parallel replica dynamics
reax : ReaxFF potential
shock : methods for MD simulations of shock loading
xtc : dump atom snapshots in XTC format :tb(s=:)
There are also user-contributed packages which may be as simple as a

168
doc/fix_msst.html Normal file
View File

@ -0,0 +1,168 @@
<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 msst command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID msst dir shockvel keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>msst = style name of this fix
<LI>dir = <I>x</I> or <I>y</I> or <I>z</I>
<LI>shockvel = shock velocity (strictly positive, distance/time units)
<LI>zero or more keyword value pairs may be appended
<LI>keyword = <I>q</I> or <I>mu</I> or <I>p0</I> or <I>v0</I> or <I>e0</I> or <I>tscale</I>
<PRE> <I>q</I> value = cell mass-like parameter (mass^2/distance^4 units)
<I>mu</I> value = artificial viscosity (mass/length/time units)
<I>p0</I> value = initial pressure in the shock equations (pressure units)
<I>v0</I> value = initial simulation cell volume in the shock equations (distance^3 units)
<I>e0</I> value = initial total energy (energy units)
<I>tscale</I> value = reduction in initial temperature (unitless fraction between 0.0 and 1.0)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all msst y 100.0 q 1.0e5 mu 1.0e5
fix 2 all msst z 50.0 q 1.0e4 mu 1.0e4 v0 4.3419e+03 p0 3.7797e+03 e0 -9.72360e+02 tscale 0.01
</PRE>
<P><B>Description:</B>
</P>
<P>This command performs the Multi-Scale Shock Technique (MSST) integration
to update positions and velocities each timestep to mimic a compressive shock
wave passing over the system. See <A HREF = "#Reed">(Reed)</A> for a detailed description of this method.
The MSST varies the cell volume and temperature in such a
way as to restrain the system to the shock Hugoniot and the Rayleigh
line. These restraints correspond to the macroscopic conservation laws
dictated by a shock front. <I>shockvel</I> determines the steady shock
velocity that will be simulated.
</P>
<P>To perform a simulation, choose a value of <I>q</I> that provides volume compression
on the timescale of 100 fs to 1 ps. If the volume is not compressing, either
the shock speed is chosen to be below the material sound speed or <I>p0</I> has been
chosen inaccurately. Volume compression at the start can
be sped up by using a non-zero value of <I>tscale</I>. Use the smallest value of
<I>tscale</I> that results in compression.
</P>
<P>Under some special high-symmetry conditions, the pressure (volume) and/or temperature
of the system may oscillate for many cycles even with an appropriate
choice of mass-like parameter <I>q</I>. Such oscillations have physical
significance in some cases. The optional <I>mu</I> keyword adds an artificial
viscosity that helps break the system symmetry
to equilibrate to the shock Hugoniot and Rayleigh line more rapidly in such cases.
</P>
<P><I>tscale</I> is a factor between 0 and 1 that determines
what fraction of thermal kinetic energy is converted to compressive strain
kinetic energy at the start of the simulation. Setting this parameter to a
non-zero value may assist in compression at the start of simulations where it
is slow to occur.
</P>
<P>If keywords <I>e0</I>, <I>p0</I>,or <I>v0</I> are not supplied, these quantities will be calculated
on the first step, after the energy specified by <I>tscale</I> is removed.
The value of <I>e0</I> is not used in the dynamical equations,
but is used in calculating the deviation from the Hugoniot.
</P>
<P>Values of shockvel less than a critical value determined by the material
response will not have compressive solutions. This will be reflected in
lack of significant change of the volume in the MSST.
</P>
<P>For all pressure styles, the simulation box stays orthogonal in shape.
Parrinello-Rahman boundary conditions (tilted box) are supported by LAMMPS,
but are not implemented for MSST.
</P>
<P>This fix computes a temperature and pressure each timestep. To do this,
the fix creates its own computes of style "temp" and "pressure", as if
these commands had been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID 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". The group for
the new computes is "all".
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of all internal
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 progress of the MSST can be monitored by printing the global scalar and
global vector quantities computed by the fix.
</P>
<P>The scalar is the cumulative energy change due to the fix. This is also the energy
added to the potential energy by the <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> command.
With this command, the thermo keyword
<I>etotal</I> prints the conserved quantity of the MSST dynamic equations. This can be
used to test if the MD timestep is sufficiently small for accurate integration
of the dynamic equations. See also <A HREF = "thermo_style.html">thermo_style</A> command.
</P>
<P>The global vector contains four values in this order:
</P>
<P>[<I>dhugoniot</I>, <I>drayleigh</I>, <I>lagrangian_speed</I>, <I>lagrangian_position</I>]
</P>
<OL><LI><I>dhugoniot</I> is the departure from the Hugoniot (temperature units).
<LI><I>drayleigh</I> is the departure from the Rayleigh line (pressure units).
<LI><I>lagrangian_speed</I> is the laboratory-frame Lagrangian speed (particle velocity) of the computational cell (velocity units).
<LI><I>lagrangian_position</I> is the computational cell position in the reference frame moving at the shock speed. This is usually a good estimate of distance of the computational cell behind the shock front.
</OL>
<P>To print these quantities to the log file with descriptive column headers, the
following LAMMPS commands are suggested:
</P>
<PRE>fix msst all msst z
fix_modify msst energy yes
variable dhug equal f_msst[1]
variable dray equal f_msst[2]
variable lgr_vel equal f_msst[3]
variable lgr_pos equal f_msst[4]
thermo_style custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_lgr_pos f_msst
</PRE>
<P>These fixes compute a global scalar and a global vector of 4 quantities,
which can be accessed by various <A HREF = "Section_howto.html#4_15">output commands</A>.
The scalar values calculated by
this fix are "extensive"; the vector values are "intensive".
</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#2_3">Making
LAMMPS</A> section for more info.
</P>
<P>All cell dimensions must be periodic. This fix can not be used with a triclinic cell.
The MSST fix has been tested only for the group-ID all.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_deform.html">fix deform</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are q = 10, mu = 0, tscale = 0.01. p0, v0, and e0
are calculated on the first step.
</P>
<HR>
<A NAME = "Reed"></A>
<P><B>(Reed)</B> Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003).
</P>
</HTML>

155
doc/fix_msst.txt Normal file
View File

@ -0,0 +1,155 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix msst command :h3
[Syntax:]
fix ID group-ID msst dir shockvel keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
msst = style name of this fix :l
dir = {x} or {y} or {z} :l
shockvel = shock velocity (strictly positive, distance/time units) :l
zero or more keyword value pairs may be appended :l
keyword = {q} or {mu} or {p0} or {v0} or {e0} or {tscale} :l
{q} value = cell mass-like parameter (mass^2/distance^4 units)
{mu} value = artificial viscosity (mass/length/time units)
{p0} value = initial pressure in the shock equations (pressure units)
{v0} value = initial simulation cell volume in the shock equations (distance^3 units)
{e0} value = initial total energy (energy units)
{tscale} value = reduction in initial temperature (unitless fraction between 0.0 and 1.0) :pre
:ule
[Examples:]
fix 1 all msst y 100.0 q 1.0e5 mu 1.0e5
fix 2 all msst z 50.0 q 1.0e4 mu 1.0e4 v0 4.3419e+03 p0 3.7797e+03 e0 -9.72360e+02 tscale 0.01 :pre
[Description:]
This command performs the Multi-Scale Shock Technique (MSST) integration
to update positions and velocities each timestep to mimic a compressive shock
wave passing over the system. See "(Reed)"_#Reed for a detailed description of this method.
The MSST varies the cell volume and temperature in such a
way as to restrain the system to the shock Hugoniot and the Rayleigh
line. These restraints correspond to the macroscopic conservation laws
dictated by a shock front. {shockvel} determines the steady shock
velocity that will be simulated.
To perform a simulation, choose a value of {q} that provides volume compression
on the timescale of 100 fs to 1 ps. If the volume is not compressing, either
the shock speed is chosen to be below the material sound speed or {p0} has been
chosen inaccurately. Volume compression at the start can
be sped up by using a non-zero value of {tscale}. Use the smallest value of
{tscale} that results in compression.
Under some special high-symmetry conditions, the pressure (volume) and/or temperature
of the system may oscillate for many cycles even with an appropriate
choice of mass-like parameter {q}. Such oscillations have physical
significance in some cases. The optional {mu} keyword adds an artificial
viscosity that helps break the system symmetry
to equilibrate to the shock Hugoniot and Rayleigh line more rapidly in such cases.
{tscale} is a factor between 0 and 1 that determines
what fraction of thermal kinetic energy is converted to compressive strain
kinetic energy at the start of the simulation. Setting this parameter to a
non-zero value may assist in compression at the start of simulations where it
is slow to occur.
If keywords {e0}, {p0},or {v0} are not supplied, these quantities will be calculated
on the first step, after the energy specified by {tscale} is removed.
The value of {e0} is not used in the dynamical equations,
but is used in calculating the deviation from the Hugoniot.
Values of shockvel less than a critical value determined by the material
response will not have compressive solutions. This will be reflected in
lack of significant change of the volume in the MSST.
For all pressure styles, the simulation box stays orthogonal in shape.
Parrinello-Rahman boundary conditions (tilted box) are supported by LAMMPS,
but are not implemented for MSST.
This fix computes a temperature and pressure each timestep. To do this,
the fix creates its own computes of style "temp" and "pressure", as if
these commands had been issued:
compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp :pre
See the "compute temp"_compute_temp.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press". The group for
the new computes is "all".
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of all internal
variables to "binary restart files"_restart.html. See the
"read_restart"_read_restart.html 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.
The progress of the MSST can be monitored by printing the global scalar and
global vector quantities computed by the fix.
The scalar is the cumulative energy change due to the fix. This is also the energy
added to the potential energy by the "fix_modify"_fix_modify.html {energy} command.
With this command, the thermo keyword
{etotal} prints the conserved quantity of the MSST dynamic equations. This can be
used to test if the MD timestep is sufficiently small for accurate integration
of the dynamic equations. See also "thermo_style"_thermo_style.html command.
The global vector contains four values in this order:
\[{dhugoniot}, {drayleigh}, {lagrangian_speed}, {lagrangian_position}\]
{dhugoniot} is the departure from the Hugoniot (temperature units).
{drayleigh} is the departure from the Rayleigh line (pressure units).
{lagrangian_speed} is the laboratory-frame Lagrangian speed (particle velocity) of the computational cell (velocity units).
{lagrangian_position} is the computational cell position in the reference frame moving at the shock speed. This is usually a good estimate of distance of the computational cell behind the shock front. :ol
To print these quantities to the log file with descriptive column headers, the
following LAMMPS commands are suggested:
fix msst all msst z
fix_modify msst energy yes
variable dhug equal f_msst\[1\]
variable dray equal f_msst\[2\]
variable lgr_vel equal f_msst\[3\]
variable lgr_pos equal f_msst\[4\]
thermo_style custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_lgr_pos f_msst :pre
These fixes compute a global scalar and a global vector of 4 quantities,
which can be accessed by various "output commands"_Section_howto.html#4_15.
The scalar values calculated by
this fix are "extensive"; the vector values are "intensive".
[Restrictions:]
This fix style is part of the "shock" package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#2_3 section for more info.
All cell dimensions must be periodic. This fix can not be used with a triclinic cell.
The MSST fix has been tested only for the group-ID all.
[Related commands:]
"fix deform"_fix_deform.html
[Default:]
The keyword defaults are q = 10, mu = 0, tscale = 0.01. p0, v0, and e0
are calculated on the first step.
:line
:link(Reed)
[(Reed)] Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003).

View File

@ -223,7 +223,7 @@ barostat variables.
The {mtk} keyword controls whether or not the correction terms due to
Martyna, Tuckerman, and Klein are included in the equations of motion
"(Martyna1994)"_#Martyna1994. Specifying {no} reproduces the original
"(Martyna)"_#Martyna. Specifying {no} reproduces the original
Hoover barostat, whose volume probability distribution function
differs from the true NPT and NPH ensembles by a factor of 1/V. Hence
using {yes} is more correct, but in many cases the difference is