From 5a95b35fb30628234e590f81ef433ff1a9f1a2b1 Mon Sep 17 00:00:00 2001 From: Joel Thomas Clemmer <=> Date: Fri, 18 Feb 2022 10:22:08 -0700 Subject: [PATCH] Adding bondstyle restart and fixing a few labels --- src/BPM/bond_bpm.cpp | 6 +++--- src/BPM/bond_bpm.h | 2 +- src/BPM/bond_bpm_rotational.cpp | 2 +- src/BPM/bond_bpm_spring.cpp | 2 +- src/input.cpp | 21 +++++++++++++++++++++ 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/BPM/bond_bpm.cpp b/src/BPM/bond_bpm.cpp index 6cdb5d7ee2..085e292c4c 100644 --- a/src/BPM/bond_bpm.cpp +++ b/src/BPM/bond_bpm.cpp @@ -157,7 +157,7 @@ void BondBPM::init_style() void BondBPM::settings(int narg, char **arg) { - leftover_args.clear(); + leftover_iarg.clear(); int iarg = 0; while (iarg < narg) { @@ -198,7 +198,7 @@ void BondBPM::settings(int narg, char **arg) overlay_flag = 1; iarg ++; } else { - leftover_args.push_back(iarg); + leftover_iarg.push_back(iarg); iarg ++; } } @@ -206,7 +206,7 @@ void BondBPM::settings(int narg, char **arg) if (id_fix_store_local) { if (nvalues == 0) error->all(FLERR, - "Bond style bpm/rotational must include at least one value to output"); + "Storing local data must include at least one value to output"); memory->create(output_data, nvalues, "bond/bpm:output_data"); int ifix = modify->find_fix(id_fix_store_local); diff --git a/src/BPM/bond_bpm.h b/src/BPM/bond_bpm.h index 24689e6f52..8dbab8c683 100644 --- a/src/BPM/bond_bpm.h +++ b/src/BPM/bond_bpm.h @@ -39,7 +39,7 @@ class BondBPM : public Bond { double max_stretch; int store_local_freq; - std::vector leftover_args; + std::vector leftover_iarg; char *id_fix_dummy, *id_fix_dummy2; char *id_fix_update, *id_fix_bond_history; diff --git a/src/BPM/bond_bpm_rotational.cpp b/src/BPM/bond_bpm_rotational.cpp index ccc96d8fbc..9461329b96 100644 --- a/src/BPM/bond_bpm_rotational.cpp +++ b/src/BPM/bond_bpm_rotational.cpp @@ -654,7 +654,7 @@ void BondBPMRotational::settings(int narg, char **arg) { BondBPM::settings(narg, arg); - for (int iarg : leftover_args) { + for (int iarg : leftover_iarg) { error->all(FLERR, "Illegal bond_style command"); } } diff --git a/src/BPM/bond_bpm_spring.cpp b/src/BPM/bond_bpm_spring.cpp index 5cd64ac3f8..c2c5547541 100644 --- a/src/BPM/bond_bpm_spring.cpp +++ b/src/BPM/bond_bpm_spring.cpp @@ -290,7 +290,7 @@ void BondBPMSpring::settings(int narg, char **arg) { BondBPM::settings(narg, arg); - for (int iarg : leftover_args) { + for (int iarg : leftover_iarg) { error->all(FLERR, "Illegal bond_style command"); } } diff --git a/src/input.cpp b/src/input.cpp index 30424ad5cb..990d0562e5 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -1318,6 +1318,27 @@ void Input::bond_style() if (narg < 1) error->all(FLERR,"Illegal bond_style command"); if (atom->avec->bonds_allow == 0) error->all(FLERR,"Bond_style command when no bonds allowed"); + + if (force->bond) { + std::string style = arg[0]; + int match = 0; + if (style == force->bond_style) match = 1; + if (!match && lmp->suffix_enable) { + if (lmp->suffixp) + if (style + "/" + lmp->suffixp == force->bond_style) match = 1; + + if (lmp->suffix && !lmp->suffixp) + if (style + "/" + lmp->suffix == force->bond_style) match = 1; + + if (lmp->suffix2) + if (style + "/" + lmp->suffix2 == force->bond_style) match = 1; + } + if (match) { + force->bond->settings(narg-1,&arg[1]); + return; + } + } + force->create_bond(arg[0],1); if (force->bond) force->bond->settings(narg-1,&arg[1]); }