diff --git a/src/GPU/fix_gpu.cpp b/src/GPU/fix_gpu.cpp index 212b140093..672c0018b0 100644 --- a/src/GPU/fix_gpu.cpp +++ b/src/GPU/fix_gpu.cpp @@ -138,6 +138,10 @@ FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : if (iarg+2 > narg) error->all(FLERR,"Illegal package gpu command"); if (strcmp(arg[iarg+1],"yes") == 0) _gpu_mode = GPU_NEIGH; else if (strcmp(arg[iarg+1],"no") == 0) _gpu_mode = GPU_FORCE; + else if (strcmp(arg[iarg+1],"on") == 0) _gpu_mode = GPU_NEIGH; + else if (strcmp(arg[iarg+1],"off") == 0) _gpu_mode = GPU_FORCE; + else if (strcmp(arg[iarg+1],"true") == 0) _gpu_mode = GPU_NEIGH; + else if (strcmp(arg[iarg+1],"false") == 0) _gpu_mode = GPU_FORCE; else if (strcmp(arg[iarg+1],"hybrid") == 0) _gpu_mode = GPU_HYB_NEIGH; else error->all(FLERR,"Illegal package gpu command"); iarg += 2; diff --git a/src/H5MD/dump_h5md.cpp b/src/H5MD/dump_h5md.cpp index 9517877053..43219fb035 100644 --- a/src/H5MD/dump_h5md.cpp +++ b/src/H5MD/dump_h5md.cpp @@ -460,9 +460,7 @@ int DumpH5MD::modify_param(int narg, char **arg) { if (strcmp(arg[0],"unwrap") == 0) { if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); - if (strcmp(arg[1],"yes") == 0) unwrap_flag = 1; - else if (strcmp(arg[1],"no") == 0) unwrap_flag = 0; - else error->all(FLERR,"Illegal dump_modify command"); + unwrap_flag = utils::logical(FLERR, arg[1], false, lmp); return 2; } return 0; diff --git a/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp b/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp index 9db1c2acec..e8dc972a2a 100644 --- a/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp +++ b/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp @@ -19,19 +19,19 @@ #include "fix_lb_rigid_pc_sphere.h" -#include - -#include #include "atom.h" -#include "domain.h" -#include "update.h" -#include "modify.h" -#include "group.h" #include "comm.h" -#include "force.h" -#include "memory.h" +#include "domain.h" #include "error.h" #include "fix_lb_fluid.h" +#include "force.h" +#include "group.h" +#include "memory.h" +#include "modify.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -237,15 +237,9 @@ FixLbRigidPCSphere::FixLbRigidPCSphere(LAMMPS *lmp, int narg, char **arg) : utils::bounds(FLERR,arg[iarg+1],1,nbody,mlo,mhi,error); double xflag,yflag,zflag; - if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0; - else if (strcmp(arg[iarg+2],"on") == 0) xflag = 1.0; - else error->all(FLERR,"Illegal fix lb/rigid/pc/sphere command"); - if (strcmp(arg[iarg+2],"off") == 0) yflag = 0.0; - else if (strcmp(arg[iarg+3],"on") == 0) yflag = 1.0; - else error->all(FLERR,"Illegal fix lb/rigid/pc/sphere command"); - if (strcmp(arg[iarg+4],"off") == 0) zflag = 0.0; - else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; - else error->all(FLERR,"Illegal fix lb/rigid/pc/sphere command"); + xflag = (double) utils::logical(FLERR, arg[iarg+2], false, lmp); + yflag = (double) utils::logical(FLERR, arg[iarg+3], false, lmp); + zflag = (double) utils::logical(FLERR, arg[iarg+4], false, lmp); int count = 0; for (int m = mlo; m <= mhi; m++) { diff --git a/src/MISC/fix_imd.cpp b/src/MISC/fix_imd.cpp index abba37cf3f..1e2160ef07 100644 --- a/src/MISC/fix_imd.cpp +++ b/src/MISC/fix_imd.cpp @@ -458,28 +458,20 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) : imd_trate = 1; /* parse optional arguments */ - int argsdone = 4; - while (argsdone+1 < narg) { - if (0 == strcmp(arg[argsdone], "unwrap")) { - if (0 == strcmp(arg[argsdone+1], "on")) { - unwrap_flag = 1; - } else { - unwrap_flag = 0; - } - } else if (0 == strcmp(arg[argsdone], "nowait")) { - if (0 == strcmp(arg[argsdone+1], "on")) { - nowait_flag = 1; - } else { - nowait_flag = 0; - } - } else if (0 == strcmp(arg[argsdone], "fscale")) { - imd_fscale = utils::numeric(FLERR,arg[argsdone+1],false,lmp); - } else if (0 == strcmp(arg[argsdone], "trate")) { - imd_trate = utils::inumeric(FLERR,arg[argsdone+1],false,lmp); + int iarg = 4; + while (iarg+1 < narg) { + if (0 == strcmp(arg[iarg], "unwrap")) { + unwrap_flag = utils::logical(FLERR, arg[iarg+1], false, lmp); + } else if (0 == strcmp(arg[iarg], "nowait")) { + nowait_flag = utils::logical(FLERR, arg[iarg+1], false, lmp); + } else if (0 == strcmp(arg[iarg], "fscale")) { + imd_fscale = utils::numeric(FLERR,arg[iarg+1],false,lmp); + } else if (0 == strcmp(arg[iarg], "trate")) { + imd_trate = utils::inumeric(FLERR,arg[iarg+1],false,lmp); } else { error->all(FLERR,"Unknown fix imd parameter"); } - ++argsdone; ++argsdone; + ++iarg; ++iarg; } /* sanity check on parameters */ diff --git a/src/MISC/pair_srp.cpp b/src/MISC/pair_srp.cpp index 456d45c0ae..77a8eb4c2d 100644 --- a/src/MISC/pair_srp.cpp +++ b/src/MISC/pair_srp.cpp @@ -378,12 +378,8 @@ void PairSRP::settings(int narg, char **arg) while (iarg < narg) { if (strcmp(arg[iarg],"exclude") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal pair srp command"); - if (strcmp(arg[iarg+1],"yes") == 0) - exclude = 1; - if (strcmp(arg[iarg+1],"no") == 0) { - if (min) error->all(FLERR,"Illegal exclude option in pair srp command"); - exclude = 0; - } + exclude = utils::logical(FLERR, arg[iarg+1], false, lmp); + if (min && !exclude) error->all(FLERR,"Illegal exclude option in pair srp command"); iarg += 2; } else if (strcmp(arg[iarg],"bptype") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal pair srp command"); diff --git a/src/ML-HDNNP/pair_hdnnp.cpp b/src/ML-HDNNP/pair_hdnnp.cpp index c27f93c132..8411a0c3cf 100644 --- a/src/ML-HDNNP/pair_hdnnp.cpp +++ b/src/ML-HDNNP/pair_hdnnp.cpp @@ -148,12 +148,7 @@ void PairHDNNP::settings(int narg, char **arg) // show extrapolation warnings } else if (strcmp(arg[iarg], "showew") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal pair_style command"); - if (strcmp(arg[iarg + 1], "yes") == 0) - showew = true; - else if (strcmp(arg[iarg + 1], "no") == 0) - showew = false; - else - error->all(FLERR, "Illegal pair_style command"); + showew = utils::logical(FLERR, arg[iarg + 1], false, lmp) == 1; iarg += 2; // show extrapolation warning summary } else if (strcmp(arg[iarg], "showewsum") == 0) { @@ -168,12 +163,7 @@ void PairHDNNP::settings(int narg, char **arg) // reset extrapolation warning counter } else if (strcmp(arg[iarg], "resetew") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal pair_style command"); - if (strcmp(arg[iarg + 1], "yes") == 0) - resetew = true; - else if (strcmp(arg[iarg + 1], "no") == 0) - resetew = false; - else - error->all(FLERR, "Illegal pair_style command"); + resetew = utils::logical(FLERR, arg[iarg + 1], false, lmp) == 1; iarg += 2; // length unit conversion factor } else if (strcmp(arg[iarg], "cflength") == 0) { diff --git a/src/MSCG/fix_mscg.cpp b/src/MSCG/fix_mscg.cpp index 0d420cace8..8387ff4ebf 100644 --- a/src/MSCG/fix_mscg.cpp +++ b/src/MSCG/fix_mscg.cpp @@ -18,9 +18,6 @@ #include "fix_mscg.h" -#include - -#include "mscg.h" #include "atom.h" #include "comm.h" #include "domain.h" @@ -35,6 +32,10 @@ #include "update.h" #include "variable.h" +#include + +#include "mscg.h" + using namespace LAMMPS_NS; using namespace FixConst; @@ -49,8 +50,7 @@ FixMSCG::FixMSCG(LAMMPS *lmp, int narg, char **arg) : me = comm->me; nprocs = comm->nprocs; - if (nprocs > 1) error->all(FLERR,"Fix mscg does not yet support " - "parallel use via MPI"); + if (nprocs > 1) error->all(FLERR,"Fix mscg does not yet support parallel use via MPI"); if (sizeof(tagint) != sizeof(smallint)) error->all(FLERR,"Fix mscg must be used with 32-bit atom IDs"); @@ -77,11 +77,7 @@ FixMSCG::FixMSCG(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"range") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix mscg command"); - if (strcmp(arg[iarg+1],"on") == 0) - range_flag = 1; - else if (strcmp(arg[iarg+1],"off") == 0) - range_flag = 0; - else error->all(FLERR,"Illegal fix mscg command"); + range_flag = utils::logical(FLERR, arg[iarg+1], false, lmp); iarg += 2; } else if (strcmp(arg[iarg],"name") == 0) { if (iarg+ntypes+1 > narg) @@ -89,23 +85,23 @@ FixMSCG::FixMSCG(LAMMPS *lmp, int narg, char **arg) : name_flag = 1; for (int i = 0; i < ntypes; i++) { iarg += 1; - std::string str = arg[iarg]; - type_names[i] = strcat(strdup(str.c_str()),"\0"); + delete[] type_names[i]; + type_names[i] = utils::strdup(arg[iarg]); } iarg += 1; } else if (strcmp(arg[iarg],"max") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix mscg command"); - max_partners_bond = atoi(arg[iarg+1]); - max_partners_angle = atoi(arg[iarg+2]); - max_partners_dihedral = atoi(arg[iarg+3]); + max_partners_bond = utils::inumeric(FLERR,arg[iarg+1],false, lmp); + max_partners_angle = utils::inumeric(FLERR,arg[iarg+2],false, lmp); + max_partners_dihedral = utils::inumeric(FLERR,arg[iarg+3],false, lmp); iarg += 4; } else error->all(FLERR,"Illegal fix mscg command"); } if (name_flag == 0) { for (int i = 0; i < natoms; i++) { - std::string str = std::to_string(i+1); - type_names[i] = strcat(strdup(str.c_str()),"\0"); + delete[] type_names[i]; + type_names[i] = utils::strdup(std::to_string(i+1)); } } } @@ -114,6 +110,9 @@ FixMSCG::FixMSCG(LAMMPS *lmp, int narg, char **arg) : FixMSCG::~FixMSCG() { + int natoms = atom->natoms; + for (int i = 0; i < natoms; i++) delete[] type_names[i]; + delete[] type_names; memory->destroy(f); } @@ -321,8 +320,7 @@ void FixMSCG::post_run() if (nframes != n_frames) error->warning(FLERR,"Fix mscg n_frames is inconsistent with control.in"); if (nframes % block_size != 0) - error->warning(FLERR,"Fix mscg n_frames is not divisible by " - "block_size in control.in"); + error->warning(FLERR,"Fix mscg n_frames is not divisible by block_size in control.in"); if (range_flag) rangefinder_solve_and_output(mscg_struct); diff --git a/src/PHONON/dynamical_matrix.cpp b/src/PHONON/dynamical_matrix.cpp index 810111998e..443d468a45 100644 --- a/src/PHONON/dynamical_matrix.cpp +++ b/src/PHONON/dynamical_matrix.cpp @@ -181,30 +181,29 @@ void DynamicalMatrix::command(int narg, char **arg) void DynamicalMatrix::options(int narg, char **arg) { - if (narg < 0) error->all(FLERR,"Illegal dynamical_matrix command"); - int iarg = 0; - const char* filename = "dynmat.dyn"; - while (iarg < narg) { - if (strcmp(arg[iarg],"binary") == 0) { - if (iarg + 2 > narg) error->all(FLERR, "Illegal dynamical_matrix command"); - if (strcmp(arg[iarg+1],"gzip") == 0) { - compressed = 1; - } - else if (strcmp(arg[iarg+1],"yes") == 0) { - binaryflag = 1; - } - iarg += 2; - } - else if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all(FLERR, "Illegal dynamical_matrix command"); - filename = arg[iarg + 1]; - file_flag = 1; - iarg += 2; - } else error->all(FLERR,"Illegal dynamical_matrix command"); - } - if (file_flag == 1) { - openfile(filename); + if (narg < 0) error->all(FLERR,"Illegal dynamical_matrix command"); + int iarg = 0; + const char* filename = "dynmat.dyn"; + while (iarg < narg) { + if (strcmp(arg[iarg],"binary") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal dynamical_matrix command"); + if (strcmp(arg[iarg+1],"gzip") == 0) { + compressed = 1; + } else if (strcmp(arg[iarg+1],"yes") == 0) { + binaryflag = 1; + } + iarg += 2; } + else if (strcmp(arg[iarg],"file") == 0) { + if (iarg+2 > narg) error->all(FLERR, "Illegal dynamical_matrix command"); + filename = arg[iarg + 1]; + file_flag = 1; + iarg += 2; + } else error->all(FLERR,"Illegal dynamical_matrix command"); + } + if (file_flag == 1) { + openfile(filename); + } } /* ---------------------------------------------------------------------- diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index 23553a9d94..329ad5e100 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -105,7 +105,6 @@ void PairSpinExchange::coeff(int narg, char **arg) // get exchange arguments from input command - int iarg = 7; const double rc = utils::numeric(FLERR,arg[3],false,lmp); const double j1 = utils::numeric(FLERR,arg[4],false,lmp); const double j2 = utils::numeric(FLERR,arg[5],false,lmp); @@ -113,13 +112,10 @@ void PairSpinExchange::coeff(int narg, char **arg) // read energy offset flag if specified + int iarg = 7; while (iarg < narg) { - if (strcmp(arg[7],"offset") == 0) { - if (strcmp(arg[8],"yes") == 0) { - e_offset = 1; - } else if (strcmp(arg[8],"no") == 0) { - e_offset = 0; - } else error->all(FLERR,"Incorrect args for pair coefficients"); + if (strcmp(arg[iarg],"offset") == 0) { + e_offset = utils::logical(FLERR, arg[iarg+1], false, lmp); iarg += 2; } else error->all(FLERR,"Incorrect args for pair coefficients"); } diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index 22fade7bf3..f1e17eaa24 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -142,12 +142,7 @@ FixSRD::FixSRD(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg], "overlap") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix srd command"); - if (strcmp(arg[iarg + 1], "yes") == 0) - overlap = 1; - else if (strcmp(arg[iarg + 1], "no") == 0) - overlap = 0; - else - error->all(FLERR, "Illegal fix srd command"); + overlap = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg], "inside") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix srd command"); @@ -162,12 +157,7 @@ FixSRD::FixSRD(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg], "exact") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix srd command"); - if (strcmp(arg[iarg + 1], "yes") == 0) - exactflag = 1; - else if (strcmp(arg[iarg + 1], "no") == 0) - exactflag = 0; - else - error->all(FLERR, "Illegal fix srd command"); + exactflag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg], "radius") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix srd command"); @@ -206,12 +196,7 @@ FixSRD::FixSRD(LAMMPS *lmp, int narg, char **arg) : iarg += 3; } else if (strcmp(arg[iarg], "tstat") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix srd command"); - if (strcmp(arg[iarg + 1], "no") == 0) - tstat = 0; - else if (strcmp(arg[iarg + 1], "yes") == 0) - tstat = 1; - else - error->all(FLERR, "Illegal fix srd command"); + tstat = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg], "rescale") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix srd command"); diff --git a/src/lammps.cpp b/src/lammps.cpp index bf0abbe2b1..d40289729c 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -270,8 +270,8 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) : else if (strcmp(arg[iarg+1],"off") == 0) kokkosflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) kokkosflag = 1; else if (strcmp(arg[iarg+1],"no") == 0) kokkosflag = 0; - else if (strcmp(arg[iarg+1],"1") == 0) kokkosflag = 1; - else if (strcmp(arg[iarg+1],"0") == 0) kokkosflag = 0; + else if (strcmp(arg[iarg+1],"true") == 0) kokkosflag = 1; + else if (strcmp(arg[iarg+1],"false") == 0) kokkosflag = 0; else error->universe_all(FLERR,"Invalid command-line argument"); iarg += 2; // delimit any extra args for the Kokkos instantiation diff --git a/src/read_dump.cpp b/src/read_dump.cpp index 72ac587a09..c09bd38c87 100644 --- a/src/read_dump.cpp +++ b/src/read_dump.cpp @@ -1235,6 +1235,8 @@ int ReadDump::fields_and_keywords(int narg, char **arg) if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); if (strcmp(arg[iarg+1],"yes") == 0) addflag = YESADD; else if (strcmp(arg[iarg+1],"no") == 0) addflag = NOADD; + else if (strcmp(arg[iarg+1],"true") == 0) addflag = YESADD; + else if (strcmp(arg[iarg+1],"false") == 0) addflag = NOADD; else if (strcmp(arg[iarg+1],"keep") == 0) addflag = KEEPADD; else error->all(FLERR,"Illegal read_dump command"); iarg += 2; diff --git a/unittest/formats/test_input_convert.cpp b/unittest/formats/test_input_convert.cpp index 020e86a65b..0ff6878b13 100644 --- a/unittest/formats/test_input_convert.cpp +++ b/unittest/formats/test_input_convert.cpp @@ -41,26 +41,38 @@ protected: TEST_F(InputConvertTest, logical) { EXPECT_EQ(utils::logical(FLERR, "yes", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "Yes", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "YES", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "yEs", false, lmp), 1); EXPECT_EQ(utils::logical(FLERR, "true", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "True", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "TRUE", false, lmp), 1); EXPECT_EQ(utils::logical(FLERR, "on", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "On", false, lmp), 1); - EXPECT_EQ(utils::logical(FLERR, "ON", false, lmp), 1); EXPECT_EQ(utils::logical(FLERR, "1", false, lmp), 1); EXPECT_EQ(utils::logical(FLERR, "no", false, lmp), 0); - EXPECT_EQ(utils::logical(FLERR, "No", false, lmp), 0); - EXPECT_EQ(utils::logical(FLERR, "NO", false, lmp), 0); - EXPECT_EQ(utils::logical(FLERR, "nO", false, lmp), 0); + EXPECT_EQ(utils::logical(FLERR, "false", false, lmp), 0); EXPECT_EQ(utils::logical(FLERR, "off", false, lmp), 0); - EXPECT_EQ(utils::logical(FLERR, "Off", false, lmp), 0); - EXPECT_EQ(utils::logical(FLERR, "OFF", false, lmp), 0); - EXPECT_EQ(utils::logical(FLERR, "OfF", false, lmp), 0); EXPECT_EQ(utils::logical(FLERR, "0", false, lmp), 0); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "YES", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "Yes", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "On", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "ON", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "TRUE", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "True", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "NO", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "No", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "Off", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "OFF", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "FALSE", false, lmp);); + TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", + utils::logical(FLERR, "False", false, lmp);); TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*", utils::logical(FLERR, "yay", false, lmp);); TEST_FAILURE(".*ERROR: Expected boolean parameter instead of.*",