group-ID = ID of group of atoms whose velocity will be changed
diff --git a/doc/velocity.txt b/doc/velocity.txt
index 8e8615e4dc..b2f18c0dbe 100644
--- a/doc/velocity.txt
+++ b/doc/velocity.txt
@@ -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
diff --git a/doc/write_dump.html b/doc/write_dump.html
new file mode 100644
index 0000000000..a375eec63b
--- /dev/null
+++ b/doc/write_dump.html
@@ -0,0 +1,101 @@
+
+ LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands
+
+
+
+
+
+
+
+
+
+write_dump command
+
+Syntax:
+
+write_dump ID group-ID style N file dump-args modify dump-modify-args
+
+- ID = user-assigned name for the dump (ignored)
+
+
- group-ID = ID of the group of atoms to be dumped
+
+
- style = any of the supported dump styles
+
+
- N = dump every this many timesteps (ignored)
+
+
- file = name of file to write dump info to
+
+
- dump-args = any additional args needed for a particular dump style
+
+
- modify = all args after this keyword are passed to dump_modify (optional)
+
+
- dump-modify-args = args for dump_modify (optional)
+
+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
+
+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 command which will write out multiple
+snapshots periodically during a running simulation.
+
+The syntax for this command is identical to that of the
+dump and dump_modify commands as if
+they were concatenated together, with one exception. This is so that
+the full range of dump_modify 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 commmand, they will
+operate in the same fashion to create the new filename(s).
+
+
+
+Restrictions:
+
+All restrictions for the dump and
+dump_modify commands apply to this command as well.
+For the dump image 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 or energy
+minimization, 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 doc page
+sectinn on Variable Accuracy for more information on this topic.
+
+Related commands:
+
+dump, dump image, dump_modify
+
+Default:
+
+The defaults are listed on the doc pages for the dump and
+dump image and dump_modify
+commands.
+
+
diff --git a/doc/write_dump.txt b/doc/write_dump.txt
new file mode 100644
index 0000000000..7ec1268cff
--- /dev/null
+++ b/doc/write_dump.txt
@@ -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.
diff --git a/src/output.cpp b/src/output.cpp
index 86c463164e..251a66fc87 100644
--- a/src/output.cpp
+++ b/src/output.cpp
@@ -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
diff --git a/src/version.h b/src/version.h
index 22ccfbb47b..c4bf8507de 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "30 Oct 2013"
+#define LAMMPS_VERSION "1 Nov 2013"
diff --git a/src/write_dump.cpp b/src/write_dump.cpp
index 8f5adace3c..9742ca2dfe 100644
--- a/src/write_dump.cpp
+++ b/src/write_dump.cpp
@@ -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 [] [modify ]
-//
-// are keywords supported by the dump command
-// 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;
}