merged in develop
This commit is contained in:
90
src/dump.cpp
90
src/dump.cpp
@ -1060,12 +1060,12 @@ void Dump::balance()
|
||||
|
||||
void Dump::modify_params(int narg, char **arg)
|
||||
{
|
||||
if (narg == 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (narg == 0) utils::missing_cmd_args(FLERR, "dump_modify", error);
|
||||
|
||||
int iarg = 0;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"append") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify append", error);
|
||||
append_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
@ -1076,7 +1076,7 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"buffer") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify buffer", error);
|
||||
buffer_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
if (buffer_flag && buffer_allow == 0)
|
||||
error->all(FLERR,"Dump_modify buffer yes not allowed for this style");
|
||||
@ -1109,14 +1109,14 @@ void Dump::modify_params(int narg, char **arg)
|
||||
}
|
||||
|
||||
} else if (strcmp(arg[iarg],"delay") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify delay", error);
|
||||
delaystep = utils::bnumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (delaystep >= 0) delay_flag = 1;
|
||||
else delay_flag = 0;
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"every") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify every", error);
|
||||
int idump;
|
||||
for (idump = 0; idump < output->ndump; idump++)
|
||||
if (strcmp(id,output->dump[idump]->id) == 0) break;
|
||||
@ -1124,17 +1124,19 @@ void Dump::modify_params(int narg, char **arg)
|
||||
if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) {
|
||||
delete[] output->var_dump[idump];
|
||||
output->var_dump[idump] = utils::strdup(&arg[iarg+1][2]);
|
||||
output->last_dump[idump] = -1;
|
||||
n = 0;
|
||||
} else {
|
||||
n = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (n <= 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (n <= 0) error->all(FLERR, "Invalid dump_modify every argument: {}", n);
|
||||
output->next_dump[idump] = (update->ntimestep/n)*n+n;
|
||||
}
|
||||
output->mode_dump[idump] = 0;
|
||||
output->every_dump[idump] = n;
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"every/time") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify every/time", error);
|
||||
int idump;
|
||||
for (idump = 0; idump < output->ndump; idump++)
|
||||
if (strcmp(id,output->dump[idump]->id) == 0) break;
|
||||
@ -1145,7 +1147,7 @@ void Dump::modify_params(int narg, char **arg)
|
||||
delta = 0.0;
|
||||
} else {
|
||||
delta = utils::numeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (delta <= 0.0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (delta <= 0.0) error->all(FLERR, "Invalid dump_modify every/time argument: {}", delta);
|
||||
}
|
||||
output->mode_dump[idump] = 1;
|
||||
output->every_time_dump[idump] = delta;
|
||||
@ -1153,11 +1155,11 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"fileper") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify fileper", error);
|
||||
if (!multiproc)
|
||||
error->all(FLERR,"Cannot use dump_modify fileper without % in dump file name");
|
||||
int nper = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (nper <= 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (nper <= 0) error->all(FLERR, "Invalid dump_modify fileper argument: {}", nper);
|
||||
|
||||
multiproc = nprocs/nper;
|
||||
if (nprocs % nper) multiproc++;
|
||||
@ -1179,17 +1181,43 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"first") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify first", error);
|
||||
first_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"flush") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify flush", error);
|
||||
flush_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"colname") == 0) {
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify colname", error);
|
||||
if (strcmp(arg[iarg+1],"default") == 0) {
|
||||
for (auto &item : keyword_user) item.clear();
|
||||
iarg += 2;
|
||||
} else {
|
||||
if (iarg+3 > narg) utils::missing_cmd_args(FLERR, "dump_modify colname", error);
|
||||
int icol = -1;
|
||||
if (utils::is_integer(arg[iarg + 1])) {
|
||||
icol = utils::inumeric(FLERR,arg[iarg + 1],false,lmp);
|
||||
if (icol < 0) icol = keyword_user.size() + icol + 1;
|
||||
icol--;
|
||||
} else {
|
||||
try {
|
||||
icol = key2col.at(arg[iarg + 1]);
|
||||
} catch (std::out_of_range &) {
|
||||
icol = -1;
|
||||
}
|
||||
}
|
||||
if ((icol < 0) || (icol >= (int)keyword_user.size()))
|
||||
error->all(FLERR, "Incorrect dump_modify arguments: {} {} {}",
|
||||
arg[iarg], arg[iarg+1], arg[iarg+2]);
|
||||
keyword_user[icol] = arg[iarg+2];
|
||||
iarg += 3;
|
||||
}
|
||||
|
||||
} else if (strcmp(arg[iarg],"format") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify format", error);
|
||||
|
||||
if (strcmp(arg[iarg+1],"none") == 0) {
|
||||
delete[] format_line_user;
|
||||
@ -1207,7 +1235,7 @@ void Dump::modify_params(int narg, char **arg)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (iarg+3 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+3 > narg) utils::missing_cmd_args(FLERR, "dump_modify format", error);
|
||||
|
||||
if (strcmp(arg[iarg+1],"line") == 0) {
|
||||
delete[] format_line_user;
|
||||
@ -1215,17 +1243,17 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 3;
|
||||
} else { // pass other format options to child classes
|
||||
int n = modify_param(narg-iarg,&arg[iarg]);
|
||||
if (n == 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (n == 0) error->all(FLERR,"Unknown dump_modify format keyword: {}", arg[iarg+1]);
|
||||
iarg += n;
|
||||
}
|
||||
|
||||
} else if (strcmp(arg[iarg],"header") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify header", error);
|
||||
write_header_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"maxfiles") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify maxfiles", error);
|
||||
if (!multifile)
|
||||
error->all(FLERR,"Cannot use dump_modify maxfiles without * in dump file name");
|
||||
// wipe out existing storage
|
||||
@ -1235,7 +1263,7 @@ void Dump::modify_params(int narg, char **arg)
|
||||
delete[] nameslist;
|
||||
}
|
||||
maxfiles = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (maxfiles == 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (maxfiles == 0) error->all(FLERR, "Invalid dump_modify maxfiles argument: {}", maxfiles);
|
||||
if (maxfiles > 0) {
|
||||
nameslist = new char*[maxfiles];
|
||||
numfiles = 0;
|
||||
@ -1246,11 +1274,11 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"nfile") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify nfile", error);
|
||||
if (!multiproc)
|
||||
error->all(FLERR,"Cannot use dump_modify nfile without % in dump file name");
|
||||
int nfile = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (nfile <= 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (nfile <= 0) error->all(FLERR, "Invalid dump_modify nfile argument: {}", nfile);
|
||||
nfile = MIN(nfile,nprocs);
|
||||
|
||||
multiproc = nfile;
|
||||
@ -1277,13 +1305,13 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"pad") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify pad", error);
|
||||
padflag = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (padflag < 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (padflag < 0) error->all(FLERR, "Invalid dump_modify pad argument: {}", padflag);
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"pbc") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify pbc", error);
|
||||
pbcflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
@ -1297,7 +1325,7 @@ void Dump::modify_params(int narg, char **arg)
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"sort") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify sort", error);
|
||||
if (strcmp(arg[iarg+1],"off") == 0) sort_flag = 0;
|
||||
else if (strcmp(arg[iarg+1],"id") == 0) {
|
||||
sort_flag = 1;
|
||||
@ -1307,7 +1335,7 @@ void Dump::modify_params(int narg, char **arg)
|
||||
sort_flag = 1;
|
||||
sortcol = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
sortorder = ASCEND;
|
||||
if (sortcol == 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (sortcol == 0) error->all(FLERR, "Invalid dump_modify sort argument: {}", sortcol);
|
||||
if (sortcol < 0) {
|
||||
sortorder = DESCEND;
|
||||
sortcol = -sortcol;
|
||||
@ -1316,19 +1344,25 @@ void Dump::modify_params(int narg, char **arg)
|
||||
}
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"balance") == 0) {
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify blance", error);
|
||||
if (nprocs > 1)
|
||||
balance_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"time") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify time", error);
|
||||
time_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"units") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify units", error);
|
||||
unit_flag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
||||
} else {
|
||||
int n = modify_param(narg-iarg,&arg[iarg]);
|
||||
if (n == 0) error->all(FLERR,"Illegal dump_modify command");
|
||||
if (n == 0) error->all(FLERR,"Unknown dump_modify keyword: {}", arg[iarg]);
|
||||
iarg += n;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user