added -restart2dump command-line option
This commit is contained in:
@ -24,8 +24,9 @@ letter abbreviation can be used:
|
|||||||
"-p or -partition"_#partition
|
"-p or -partition"_#partition
|
||||||
"-pl or -plog"_#plog
|
"-pl or -plog"_#plog
|
||||||
"-ps or -pscreen"_#pscreen
|
"-ps or -pscreen"_#pscreen
|
||||||
"-r or -restart"_#restart
|
|
||||||
"-ro or -reorder"_#reorder
|
"-ro or -reorder"_#reorder
|
||||||
|
"-r2data or -restart2data"_#restart2data
|
||||||
|
"-r2dump or -restart2dump"_#restart2dump
|
||||||
"-sc or -screen"_#screen
|
"-sc or -screen"_#screen
|
||||||
"-sf or -suffix"_#suffix
|
"-sf or -suffix"_#suffix
|
||||||
"-v or -var"_#var :ul
|
"-v or -var"_#var :ul
|
||||||
@ -280,34 +281,6 @@ specified by the -screen command-line option.
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
[-restart restartfile {remap} datafile keyword value ...] :link(restart)
|
|
||||||
|
|
||||||
Convert the restart file into a data file and immediately exit. This
|
|
||||||
is the same operation as if the following 2-line input script were
|
|
||||||
run:
|
|
||||||
|
|
||||||
read_restart restartfile {remap}
|
|
||||||
write_data datafile keyword value ... :pre
|
|
||||||
|
|
||||||
Note that the specified restartfile and datafile can have wild-card
|
|
||||||
characters ("*",%") as described by the
|
|
||||||
"read_restart"_read_restart.html and "write_data"_write_data.html
|
|
||||||
commands. But a filename such as file.* will need to be enclosed in
|
|
||||||
quotes to avoid shell expansion of the "*" character.
|
|
||||||
|
|
||||||
Note that following restartfile, the optional flag {remap} can be
|
|
||||||
used. This has the same effect as adding it to the
|
|
||||||
"read_restart"_read_restart.html command, as explained on its doc
|
|
||||||
page. This is only useful if the reading of the restart file triggers
|
|
||||||
an error that atoms have been lost. In that case, use of the remap
|
|
||||||
flag should allow the data file to still be produced.
|
|
||||||
|
|
||||||
Also note that following datafile, the same optional keyword/value
|
|
||||||
pairs can be listed as used by the "write_data"_write_data.html
|
|
||||||
command.
|
|
||||||
|
|
||||||
:line
|
|
||||||
|
|
||||||
[-reorder] :link(reorder)
|
[-reorder] :link(reorder)
|
||||||
|
|
||||||
This option has 2 forms:
|
This option has 2 forms:
|
||||||
@ -381,6 +354,77 @@ the LAMMPS simulation domain.
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
[-restart2data restartfile (remap) datafile keyword value ...] :link(restart2data)
|
||||||
|
|
||||||
|
Convert the restart file into a data file and immediately exit. This
|
||||||
|
is the same operation as if the following 2-line input script were
|
||||||
|
run:
|
||||||
|
|
||||||
|
read_restart restartfile (remap)
|
||||||
|
write_data datafile keyword value ... :pre
|
||||||
|
|
||||||
|
Note that the specified restartfile and/or datafile can have the
|
||||||
|
wild-card character "*". The restartfile can also have the wild-card
|
||||||
|
character "%". The meaning of these characters is explained on the
|
||||||
|
"read_restart"_read_restart.html and "write_data"_write_data.html doc
|
||||||
|
pages. The use of "%" means that a parallel restart file can be read.
|
||||||
|
Note that a filename such as file.* will need to be enclosed in quotes
|
||||||
|
to avoid shell expansion of the "*" character.
|
||||||
|
|
||||||
|
Note that following restartfile, the optional word "remap" can be
|
||||||
|
used. This has the effect of adding it to the
|
||||||
|
"read_restart"_read_restart.html command, as explained on its doc
|
||||||
|
page. This is useful if reading the restart file triggers an error
|
||||||
|
that atoms have been lost. In that case, use of the remap flag should
|
||||||
|
allow the data file to still be produced.
|
||||||
|
|
||||||
|
The syntax following restartfile (or remap), namely
|
||||||
|
|
||||||
|
datafile keyword value ... :pre
|
||||||
|
|
||||||
|
is identical to the arguments of the "write_data"_write_data.html
|
||||||
|
command. See its doc page for details. This includes its
|
||||||
|
optional keyword/value settings.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
[-restart2dump restartfile {remap} group-ID dumpstyle dumpfile arg1 arg2 ...] :link(restart2dump)
|
||||||
|
|
||||||
|
Convert the restart file into a dump file and immediately exit. This
|
||||||
|
is the same operation as if the following 2-line input script were
|
||||||
|
run:
|
||||||
|
|
||||||
|
read_restart restartfile (remap)
|
||||||
|
write_dump group-ID dumpstyle dumpfile arg1 arg2 ... :pre
|
||||||
|
|
||||||
|
Note that the specified restartfile and dumpfile can have wild-card
|
||||||
|
characters ("*","%") as explained on the
|
||||||
|
"read_restart"_read_restart.html and "write_dump"_write_dump.html doc
|
||||||
|
pages. The use of "%" means that a parallel restart file and/or
|
||||||
|
parallel dump file can be read and/or written. Note that a filename
|
||||||
|
such as file.* will need to be enclosed in quotes to avoid shell
|
||||||
|
expansion of the "*" character.
|
||||||
|
|
||||||
|
Note that following restartfile, the optional word "remap" can be
|
||||||
|
used. This has the effect as adding it to the
|
||||||
|
"read_restart"_read_restart.html command, as explained on its doc
|
||||||
|
page. This is useful if reading the restart file triggers an error
|
||||||
|
that atoms have been lost. In that case, use of the remap flag should
|
||||||
|
allow the dump file to still be produced.
|
||||||
|
|
||||||
|
The syntax following restartfile (or remap), namely
|
||||||
|
|
||||||
|
group-ID dumpstyle dumpfile arg1 arg2 ... :pre
|
||||||
|
|
||||||
|
is identical to the arguments of the "write_dump"_write_dump.html
|
||||||
|
command. See its doc page for details. This includes what per-atom
|
||||||
|
fields are written to the dump file and optional dump_modify settings,
|
||||||
|
including ones that affect how parallel dump files are written, e.g.
|
||||||
|
the {nfile} and {fileper} keywords. See the
|
||||||
|
"dump_modify"_dump_modify.html doc page for details.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
[-screen file] :link(screen)
|
[-screen file] :link(screen)
|
||||||
|
|
||||||
Specify a file for LAMMPS to write its screen information to. In
|
Specify a file for LAMMPS to write its screen information to. In
|
||||||
|
|||||||
@ -121,8 +121,9 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator)
|
|||||||
int partscreenflag = 0;
|
int partscreenflag = 0;
|
||||||
int partlogflag = 0;
|
int partlogflag = 0;
|
||||||
int kokkosflag = 0;
|
int kokkosflag = 0;
|
||||||
int restartflag = 0;
|
int restart2data = 0;
|
||||||
int restartremapflag = 0;
|
int restart2dump = 0;
|
||||||
|
int restartremap = 0;
|
||||||
int citeflag = 1;
|
int citeflag = 1;
|
||||||
int helpflag = 0;
|
int helpflag = 0;
|
||||||
|
|
||||||
@ -132,9 +133,8 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator)
|
|||||||
else exename = NULL;
|
else exename = NULL;
|
||||||
packargs = NULL;
|
packargs = NULL;
|
||||||
num_package = 0;
|
num_package = 0;
|
||||||
char *rfile = NULL;
|
char *restartfile = NULL;
|
||||||
char *dfile = NULL;
|
int wfirst,wlast;
|
||||||
int wdfirst,wdlast;
|
|
||||||
int kkfirst,kklast;
|
int kkfirst,kklast;
|
||||||
|
|
||||||
int npack = 0;
|
int npack = 0;
|
||||||
@ -248,26 +248,49 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator)
|
|||||||
universe->reorder(arg[iarg+1],arg[iarg+2]);
|
universe->reorder(arg[iarg+1],arg[iarg+2]);
|
||||||
iarg += 3;
|
iarg += 3;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"-restart") == 0 ||
|
} else if (strcmp(arg[iarg],"-restart2data") == 0 ||
|
||||||
strcmp(arg[iarg],"-r") == 0) {
|
strcmp(arg[iarg],"-r2data") == 0) {
|
||||||
if (iarg+3 > narg)
|
if (iarg+3 > narg)
|
||||||
error->universe_all(FLERR,"Invalid command-line argument");
|
error->universe_all(FLERR,"Invalid command-line argument");
|
||||||
restartflag = 1;
|
if (restart2dump)
|
||||||
rfile = arg[iarg+1];
|
error->universe_all(FLERR,
|
||||||
dfile = arg[iarg+2];
|
"Cannot use both -restart2data and -restart2dump");
|
||||||
|
restart2data = 1;
|
||||||
|
restartfile = arg[iarg+1];
|
||||||
// check for restart remap flag
|
// check for restart remap flag
|
||||||
if (strcmp(dfile,"remap") == 0) {
|
if (strcmp(arg[iarg+2],"remap") == 0) {
|
||||||
if (iarg+4 > narg)
|
if (iarg+4 > narg)
|
||||||
error->universe_all(FLERR,"Invalid command-line argument");
|
error->universe_all(FLERR,"Invalid command-line argument");
|
||||||
restartremapflag = 1;
|
restartremap = 1;
|
||||||
dfile = arg[iarg+3];
|
|
||||||
iarg++;
|
iarg++;
|
||||||
}
|
}
|
||||||
iarg += 3;
|
iarg += 2;
|
||||||
// delimit any extra args for the write_data command
|
// delimit args for the write_data command
|
||||||
wdfirst = iarg;
|
wfirst = iarg;
|
||||||
while (iarg < narg && arg[iarg][0] != '-') iarg++;
|
while (iarg < narg && arg[iarg][0] != '-') iarg++;
|
||||||
wdlast = iarg;
|
wlast = iarg;
|
||||||
|
|
||||||
|
} else if (strcmp(arg[iarg],"-restart2dump") == 0 ||
|
||||||
|
strcmp(arg[iarg],"-r2dump") == 0) {
|
||||||
|
if (iarg+3 > narg)
|
||||||
|
error->universe_all(FLERR,"Invalid command-line argument");
|
||||||
|
if (restart2data)
|
||||||
|
error->universe_all(FLERR,
|
||||||
|
"Cannot use both -restart2data and -restart2dump");
|
||||||
|
restart2dump = 1;
|
||||||
|
restartfile = arg[iarg+1];
|
||||||
|
// check for restart remap flag
|
||||||
|
if (strcmp(arg[iarg+2],"remap") == 0) {
|
||||||
|
if (iarg+4 > narg)
|
||||||
|
error->universe_all(FLERR,"Invalid command-line argument");
|
||||||
|
restartremap = 1;
|
||||||
|
iarg++;
|
||||||
|
}
|
||||||
|
iarg += 2;
|
||||||
|
// delimit args for the write_dump command
|
||||||
|
wfirst = iarg;
|
||||||
|
while (iarg < narg && arg[iarg][0] != '-') iarg++;
|
||||||
|
wlast = iarg;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"-screen") == 0 ||
|
} else if (strcmp(arg[iarg],"-screen") == 0 ||
|
||||||
strcmp(arg[iarg],"-sc") == 0) {
|
strcmp(arg[iarg],"-sc") == 0) {
|
||||||
@ -547,6 +570,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator)
|
|||||||
input = new Input(this,narg,arg);
|
input = new Input(this,narg,arg);
|
||||||
|
|
||||||
// copy package cmdline arguments
|
// copy package cmdline arguments
|
||||||
|
|
||||||
if (npack > 0) {
|
if (npack > 0) {
|
||||||
num_package = npack;
|
num_package = npack;
|
||||||
packargs = new char**[npack];
|
packargs = new char**[npack];
|
||||||
@ -573,19 +597,21 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator)
|
|||||||
error->done(0);
|
error->done(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if restartflag set, invoke 2 commands and quit
|
// if either restart conversion option was used, invoke 2 commands and quit
|
||||||
// add args between wdfirst and wdlast to write_data command
|
// add args between wfirst and wlast to write_data or write_data command
|
||||||
// also add "noinit" to prevent write_data from doing system init
|
// add "noinit" to write_data to prevent a system init
|
||||||
|
// write_dump will just give a warning message about no init
|
||||||
|
|
||||||
if (restartflag) {
|
if (restart2data || restart2dump) {
|
||||||
char cmd[128];
|
char cmd[256];
|
||||||
snprintf(cmd,128,"read_restart %s\n",rfile);
|
snprintf(cmd,256,"read_restart %s\n",restartfile);
|
||||||
if (restartremapflag) strcat(cmd," remap\n");
|
if (restartremap) strcat(cmd," remap\n");
|
||||||
input->one(cmd);
|
input->one(cmd);
|
||||||
snprintf(cmd,128,"write_data %s",dfile);
|
if (restart2data) snprintf(cmd,256,"write_data");
|
||||||
for (iarg = wdfirst; iarg < wdlast; iarg++)
|
else snprintf(cmd,256,"write_dump");
|
||||||
|
for (iarg = wfirst; iarg < wlast; iarg++)
|
||||||
sprintf(&cmd[strlen(cmd)]," %s",arg[iarg]);
|
sprintf(&cmd[strlen(cmd)]," %s",arg[iarg]);
|
||||||
strcat(cmd," noinit\n");
|
if (restart2data) strcat(cmd," noinit\n");
|
||||||
input->one(cmd);
|
input->one(cmd);
|
||||||
error->done(0);
|
error->done(0);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user