Merge remote branch 'lammps-ro/master' into lammps-icms

Resolved Conflicts:
	doc/Manual.txt
	src/write_dump.cpp
This commit is contained in:
Axel Kohlmeyer
2013-11-02 12:51:34 +01:00
11 changed files with 232 additions and 42 deletions

View File

@ -22,7 +22,7 @@
<CENTER><H3>LAMMPS-ICMS Documentation
</H3></CENTER>
<CENTER><H4>30 Oct 2013 version
<CENTER><H4>1 Nov 2013 version
</H4></CENTER>
<H4>Version info:
</H4>

View File

@ -18,7 +18,7 @@
<H1></H1>
LAMMPS-ICMS Documentation :c,h3
30 Oct 2013 version :c,h4
1 Nov 2013 version :c,h4
Version info: :h4

View File

@ -317,7 +317,8 @@ in the command's documentation.
<A HREF = "dump_modify.html">dump_modify</A>, <A HREF = "restart.html">restart</A>,
<A HREF = "thermo.html">thermo</A>, <A HREF = "thermo_modify.html">thermo_modify</A>,
<A HREF = "thermo_style.html">thermo_style</A>, <A HREF = "undump.html">undump</A>,
<A HREF = "write_data.html">write_data</A>, <A HREF = "write_restart.html">write_restart</A>
<A HREF = "write_data.html">write_data</A>, <A HREF = "write_dump.html">write_dump</A>,
<A HREF = "write_restart.html">write_restart</A>
</P>
<P>Actions:
</P>
@ -361,7 +362,7 @@ in the command's documentation.
<TR ALIGN="center"><TD ><A HREF = "restart.html">restart</A></TD><TD ><A HREF = "run.html">run</A></TD><TD ><A HREF = "run_style.html">run_style</A></TD><TD ><A HREF = "set.html">set</A></TD><TD ><A HREF = "shell.html">shell</A></TD><TD ><A HREF = "special_bonds.html">special_bonds</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "suffix.html">suffix</A></TD><TD ><A HREF = "tad.html">tad</A></TD><TD ><A HREF = "temper.html">temper</A></TD><TD ><A HREF = "thermo.html">thermo</A></TD><TD ><A HREF = "thermo_modify.html">thermo_modify</A></TD><TD ><A HREF = "thermo_style.html">thermo_style</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "timestep.html">timestep</A></TD><TD ><A HREF = "uncompute.html">uncompute</A></TD><TD ><A HREF = "undump.html">undump</A></TD><TD ><A HREF = "unfix.html">unfix</A></TD><TD ><A HREF = "units.html">units</A></TD><TD ><A HREF = "variable.html">variable</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "velocity.html">velocity</A></TD><TD ><A HREF = "write_data.html">write_data</A></TD><TD ><A HREF = "write_restart.html">write_restart</A>
<TR ALIGN="center"><TD ><A HREF = "velocity.html">velocity</A></TD><TD ><A HREF = "write_data.html">write_data</A></TD><TD ><A HREF = "write_dump.html">write_dump</A></TD><TD ><A HREF = "write_restart.html">write_restart</A>
</TD></TR></TABLE></DIV>
<P>These are commands contributed by users, which can be used if <A HREF = "Section_start.html#start_3">LAMMPS

View File

@ -313,7 +313,8 @@ Output:
"dump_modify"_dump_modify.html, "restart"_restart.html,
"thermo"_thermo.html, "thermo_modify"_thermo_modify.html,
"thermo_style"_thermo_style.html, "undump"_undump.html,
"write_data"_write_data.html, "write_restart"_write_restart.html
"write_data"_write_data.html, "write_dump"_write_dump.html,
"write_restart"_write_restart.html
Actions:

View File

@ -13,7 +13,7 @@
</H3>
<P><B>Syntax:</B>
</P>
<PRE>velocity group-ID style args keyword args ...
<PRE>velocity group-ID style args keyword value ...
</PRE>
<UL><LI>group-ID = ID of group of atoms whose velocity will be changed

View File

@ -10,7 +10,7 @@ velocity command :h3
[Syntax:]
velocity group-ID style args keyword args ... :pre
velocity group-ID style args keyword value ... :pre
group-ID = ID of group of atoms whose velocity will be changed :ulb,l
style = {create} or {set} or {scale} or {ramp} or {zero} :l

101
doc/write_dump.html Normal file
View File

@ -0,0 +1,101 @@
<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>write_dump command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>write_dump ID group-ID style N file dump-args modify dump-modify-args
</PRE>
<UL><LI>ID = user-assigned name for the dump (ignored)
<LI>group-ID = ID of the group of atoms to be dumped
<LI>style = any of the supported <A HREF = "dump.html">dump styles</A>
<LI>N = dump every this many timesteps (ignored)
<LI>file = name of file to write dump info to
<LI>dump-args = any additional args needed for a particular <A HREF = "dump.html">dump style</A>
<LI>modify = all args after this keyword are passed to <A HREF = "dump_modify.html">dump_modify</A> (optional)
<LI>dump-modify-args = args for <A HREF = "dump_modify.html">dump_modify</A> (optional)
</UL>
<P><B>Examples:</B>
</P>
<PRE>write_dump 1 all atom 0 dump.atom
write_dump 1 subgroup atom 0 dump.run.bin
write_dump 1 all custom 0 dump.myforce.* id type x y vx fx
write_dump 1 flow custom 0 dump.%.myforce id type c_myF[3] v_ke modify sort id
write_dump 1 all xyz 0 system.xyz modify sort id elements O H
write_dump 1 all image 0 snap*.jpg type type size 960 960 modify backcolor white
write_dump 1 all image 0 snap*.jpg element element &
bond atom 0.3 shiny 0.1 ssao yes 6345 0.2 size 1600 1600 &
modify backcolor white element C C O H N C C C O H H S O H
</PRE>
<P><B>Description:</B>
</P>
<P>Dump a single snapshot of atom quantities to one or more files for the
current state of the system. This is a one-time operation, in
contrast to the <A HREF = "dump.html">dump</A> command which will write out multiple
snapshots periodically during a running simulation.
</P>
<P>The syntax for this command is identical to that of the
<A HREF = "dump.html">dump</A> and <A HREF = "dump_modify.html">dump_modify</A> commands as if
they were concatenated together, with one exception. This is so that
the full range of <A HREF = "dump_modify.html">dump_modify</A> options can be
specified for the single snapshot, just as they can be for multiple
snapshots. The syntax exception is that if a second set of
dump-modify-args is specified, they must be preceeded by the "modify"
keyword, so that LAMMPS can cleanly separate the two sets of args.
</P>
<P>Note that the dump ID and frequency <I>N</I> arguments are ignored, since
they are irrelevant when only a single snapshot is being written.
</P>
<P>Also note that if the specified filename uses the wildcard characters
"*" or "%", as supported by the <A HREF = "dump.html">dump</A> commmand, they will
operate in the same fashion to create the new filename(s).
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>All restrictions for the <A HREF = "dump.html">dump</A> and
<A HREF = "dump_modify.html">dump_modify</A> commands apply to this command as well.
For the <A HREF = "dump_image.html">dump image</A> dump style, this means the
filename is required to contain a '*' character, which will be
replaced by the current timestep.
</P>
<P>Since dumps are normally written during a <A HREF = "run.html">run</A> or <A HREF = "minimize.html">energy
minimization</A>, the simulation has to be ready to run
before this command can be used. Similarly, if the dump requires
information from a compute, fix, or variable, the information needs to
have been calculated for the current timestep (e.g. by a prior run),
else LAMMPS will generate an error message.
</P>
<P>For example, it is not possible to dump per-atom energy with this
command before a run has been performed, since no energies and forces
have yet been calculated. See the <A HREF = "variable.html">variable</A> doc page
sectinn on Variable Accuracy for more information on this topic.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump</A>, <A HREF = "dump_image.html">dump image</A>, <A HREF = "dump_modify.html">dump_modify</A>
</P>
<P><B>Default:</B>
</P>
<P>The defaults are listed on the doc pages for the <A HREF = "dump.html">dump</A> and
<A HREF = "dump_image.html">dump image</A> and <A HREF = "dump_modify.html">dump_modify</A>
commands.
</P>
</HTML>

89
doc/write_dump.txt Normal file
View File

@ -0,0 +1,89 @@
"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
write_dump command :h3
[Syntax:]
write_dump ID group-ID style N file dump-args modify dump-modify-args :pre
ID = user-assigned name for the dump (ignored) :ulb,l
group-ID = ID of the group of atoms to be dumped :l
style = any of the supported "dump styles"_dump.html :l
N = dump every this many timesteps (ignored) :l
file = name of file to write dump info to :l
dump-args = any additional args needed for a particular "dump style"_dump.html :l
modify = all args after this keyword are passed to "dump_modify"_dump_modify.html (optional) :l
dump-modify-args = args for "dump_modify"_dump_modify.html (optional) :l,ule
[Examples:]
write_dump 1 all atom 0 dump.atom
write_dump 1 subgroup atom 0 dump.run.bin
write_dump 1 all custom 0 dump.myforce.* id type x y vx fx
write_dump 1 flow custom 0 dump.%.myforce id type c_myF\[3\] v_ke modify sort id
write_dump 1 all xyz 0 system.xyz modify sort id elements O H
write_dump 1 all image 0 snap*.jpg type type size 960 960 modify backcolor white
write_dump 1 all image 0 snap*.jpg element element &
bond atom 0.3 shiny 0.1 ssao yes 6345 0.2 size 1600 1600 &
modify backcolor white element C C O H N C C C O H H S O H :pre
[Description:]
Dump a single snapshot of atom quantities to one or more files for the
current state of the system. This is a one-time operation, in
contrast to the "dump"_dump.html command which will write out multiple
snapshots periodically during a running simulation.
The syntax for this command is identical to that of the
"dump"_dump.html and "dump_modify"_dump_modify.html commands as if
they were concatenated together, with one exception. This is so that
the full range of "dump_modify"_dump_modify.html options can be
specified for the single snapshot, just as they can be for multiple
snapshots. The syntax exception is that if a second set of
dump-modify-args is specified, they must be preceeded by the "modify"
keyword, so that LAMMPS can cleanly separate the two sets of args.
Note that the dump ID and frequency {N} arguments are ignored, since
they are irrelevant when only a single snapshot is being written.
Also note that if the specified filename uses the wildcard characters
"*" or "%", as supported by the "dump"_dump.html commmand, they will
operate in the same fashion to create the new filename(s).
:line
[Restrictions:]
All restrictions for the "dump"_dump.html and
"dump_modify"_dump_modify.html commands apply to this command as well.
For the "dump image"_dump_image.html dump style, this means the
filename is required to contain a '*' character, which will be
replaced by the current timestep.
Since dumps are normally written during a "run"_run.html or "energy
minimization"_minimize.html, the simulation has to be ready to run
before this command can be used. Similarly, if the dump requires
information from a compute, fix, or variable, the information needs to
have been calculated for the current timestep (e.g. by a prior run),
else LAMMPS will generate an error message.
For example, it is not possible to dump per-atom energy with this
command before a run has been performed, since no energies and forces
have yet been calculated. See the "variable"_variable.html doc page
sectinn on Variable Accuracy for more information on this topic.
[Related commands:]
"dump"_dump.html, "dump image"_dump_image.html, "dump_modify"_dump_modify.html
[Default:]
The defaults are listed on the doc pages for the "dump"_dump.html and
"dump image"_dump_image.html and "dump_modify"_dump_modify.html
commands.

View File

@ -544,7 +544,8 @@ void Output::add_dump(int narg, char **arg)
error->all(FLERR,"Reuse of dump ID");
int igroup = group->find(arg[1]);
if (igroup == -1) error->all(FLERR,"Could not find dump group ID");
if (force->inumeric(FLERR,arg[3]) <= 0) error->all(FLERR,"Invalid dump frequency");
if (force->inumeric(FLERR,arg[3]) <= 0)
error->all(FLERR,"Invalid dump frequency");
// extend Dump list if necessary

View File

@ -1 +1 @@
#define LAMMPS_VERSION "30 Oct 2013"
#define LAMMPS_VERSION "1 Nov 2013"

View File

@ -10,13 +10,14 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Axel Kohlmeyer (Temple U)
------------------------------------------------------------------------- */
#include "write_dump.h"
#include "dump.h"
#include "style_dump.h"
#include "dump.h"
#include "atom.h"
#include "group.h"
#include "error.h"
@ -27,59 +28,55 @@ using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
// syntax:
// write_dump <group-ID> <dump-style> <filename> [<flags1>] [modify <flags2>]
//
// <flags1> are keywords supported by the dump command
// <flags2> are keywords supported by the dump_modify command
void WriteDump::command(int narg, char **arg)
{
Dump *dump;
int i,lnarg,modarg;
char **larg;
if (narg < 3) error->all(FLERR,"Illegal write_dump command");
if (atom->tag_enable == 0)
error->all(FLERR,"Must have atom IDs for write_dump command");
// modindex = index in args of "modify" keyword
// will be narg if "modify" is not present
// create the Dump class instance
lnarg = narg + 2; // all arguments plus dump id and frequency
larg = new char*[lnarg];
larg[0] = (char *) "WRITE_DUMP"; // dump id
larg[1] = arg[0]; // group
larg[2] = arg[1]; // dump style
larg[3] = (char *) "0"; // dump frequency
// copy the remaining arguments until we hit "modify"
for (i=modarg=2; i < narg; modarg = ++i) {
if (strcmp(arg[i],"modify") == 0) break;
larg[i+2] = arg[i];
}
lnarg = modarg+2;
int modindex;
for (modindex = 0; modindex < narg; modindex++)
if (strcmp(arg[modindex],"modify") == 0) break;
// create the Dump instance
Dump *dump;
// dump command line. set required arguments
char **dumpargs = new char*[modindex+2];
dumpargs[0] = (char *) "WRITE_DUMP"; // dump id
dumpargs[1] = arg[0]; // group
dumpargs[2] = arg[1]; // dump style
dumpargs[3] = (char *) "0"; // dump frequency
// optional arguments
for (int i=2; i < modindex; ++i)
dumpargs[i+2] = arg[i];
if (0) return; // dummy line to enable else-if macro expansion
#define DUMP_CLASS
#define DumpStyle(key,Class) \
else if (strcmp(arg[1],#key) == 0) dump = new Class(lmp,lnarg,larg);
else if (strcmp(arg[2],#key) == 0) dump = new Class(lmp,modindex+2,dumpargs);
#include "style_dump.h"
#undef DUMP_CLASS
else error->all(FLERR,"Invalid dump style");
// tweak dump settings via dump_modify with the remaining arguments, if any.
++modarg;
lnarg = narg - modarg;
for (i = 0; i < lnarg; ++i)
larg[i] = arg[i+modarg];
if (lnarg > 0) dump->modify_params(lnarg,larg);
if (modindex < narg) dump->modify_params(narg-modindex-1,&arg[modindex+1]);
// write out one frame and then delete the dump again
dump->init();
dump->write();
// delete the Dump instance and local storage
delete dump;
delete[] larg;
delete[] dumpargs;
}