From 97bd404f337ca7898a85f40f2d6f32413fa57c69 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Nov 2022 03:46:50 -0500 Subject: [PATCH 01/30] add versionadded marker --- doc/src/Run_options.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/Run_options.rst b/doc/src/Run_options.rst index f7bb652ea9..73fc37183e 100644 --- a/doc/src/Run_options.rst +++ b/doc/src/Run_options.rst @@ -262,6 +262,8 @@ Disable generating a citation reminder (see above) at all. **-nonbuf** +.. versionadded:: 15Sep2022 + Turn off buffering for screen and logfile output. For performance reasons, output to the screen and logfile is usually buffered, i.e. output is only written to a file if its buffer - typically 4096 bytes - From 31972fc287217afb91107f5f73807b44d16745d1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Nov 2022 03:48:30 -0500 Subject: [PATCH 02/30] reduce redundant code. avoid `Domain::minimum_image()` getting "stuck". --- src/domain.cpp | 81 +++++++++++++------------------------------------- 1 file changed, 20 insertions(+), 61 deletions(-) diff --git a/src/domain.cpp b/src/domain.cpp index fe57aa6a96..1ce2b8ba0a 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -984,22 +984,34 @@ void Domain::subbox_too_small_check(double thresh) use minimum_image_once() instead ------------------------------------------------------------------------- */ +#ifdef LAMMPS_BIGBIG +static constexpr double maximgcount = 1<<21; +#else +static constexpr double maximgcount = 1<<10; +#endif + void Domain::minimum_image(double &dx, double &dy, double &dz) { if (triclinic == 0) { if (xperiodic) { + if (fabs(dx) > (maximgcount * xprd)) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dx); while (fabs(dx) > xprd_half) { if (dx < 0.0) dx += xprd; else dx -= xprd; } } if (yperiodic) { + if (fabs(dy) > (maximgcount * yprd)) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dy); while (fabs(dy) > yprd_half) { if (dy < 0.0) dy += yprd; else dy -= yprd; } } if (zperiodic) { + if (fabs(dz) > (maximgcount * zprd)) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dz); while (fabs(dz) > zprd_half) { if (dz < 0.0) dz += zprd; else dz -= zprd; @@ -1008,6 +1020,8 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } else { if (zperiodic) { + if (fabs(dz) > (maximgcount * zprd)) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dz); while (fabs(dz) > zprd_half) { if (dz < 0.0) { dz += zprd; @@ -1021,6 +1035,8 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } if (yperiodic) { + if (fabs(dy) > (maximgcount * yprd)) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dy); while (fabs(dy) > yprd_half) { if (dy < 0.0) { dy += yprd; @@ -1032,6 +1048,8 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } if (xperiodic) { + if (fabs(dx) > (maximgcount * xprd)) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dx); while (fabs(dx) > xprd_half) { if (dx < 0.0) dx += xprd; else dx -= xprd; @@ -1042,71 +1060,12 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) /* ---------------------------------------------------------------------- minimum image convention in periodic dimensions - use 1/2 of box size as test - for triclinic, also add/subtract tilt factors in other dims as needed - changed "if" to "while" to enable distance to - far-away ghost atom returned by atom->map() to be wrapped back into box - could be problem for looking up atom IDs when cutoff > boxsize - this should not be used if atom has moved infinitely far outside box - b/c while could iterate forever - e.g. fix shake prediction of new position with highly overlapped atoms - use minimum_image_once() instead + use same algorithm as before ------------------------------------------------------------------------- */ void Domain::minimum_image(double *delta) { - if (triclinic == 0) { - if (xperiodic) { - while (fabs(delta[0]) > xprd_half) { - if (delta[0] < 0.0) delta[0] += xprd; - else delta[0] -= xprd; - } - } - if (yperiodic) { - while (fabs(delta[1]) > yprd_half) { - if (delta[1] < 0.0) delta[1] += yprd; - else delta[1] -= yprd; - } - } - if (zperiodic) { - while (fabs(delta[2]) > zprd_half) { - if (delta[2] < 0.0) delta[2] += zprd; - else delta[2] -= zprd; - } - } - - } else { - if (zperiodic) { - while (fabs(delta[2]) > zprd_half) { - if (delta[2] < 0.0) { - delta[2] += zprd; - delta[1] += yz; - delta[0] += xz; - } else { - delta[2] -= zprd; - delta[1] -= yz; - delta[0] -= xz; - } - } - } - if (yperiodic) { - while (fabs(delta[1]) > yprd_half) { - if (delta[1] < 0.0) { - delta[1] += yprd; - delta[0] += xy; - } else { - delta[1] -= yprd; - delta[0] -= xy; - } - } - } - if (xperiodic) { - while (fabs(delta[0]) > xprd_half) { - if (delta[0] < 0.0) delta[0] += xprd; - else delta[0] -= xprd; - } - } - } + minimum_image(delta[0], delta[1], delta[2]); } /* ---------------------------------------------------------------------- From 40c05114f2b7675d046a415deb8ad5cc78d26a60 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Nov 2022 17:01:30 -0500 Subject: [PATCH 03/30] update pair style suffix handling in compute fep to support hybrid suffixes --- src/FEP/compute_fep.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/FEP/compute_fep.cpp b/src/FEP/compute_fep.cpp index 13fcb98850..995e2f9f3d 100644 --- a/src/FEP/compute_fep.cpp +++ b/src/FEP/compute_fep.cpp @@ -190,26 +190,34 @@ void ComputeFEP::init() Perturb *pert = &perturb[m]; pert->ivar = input->variable->find(pert->var); - if (pert->ivar < 0) error->all(FLERR, "Variable name for compute fep does not exist"); + if (pert->ivar < 0) + error->all(FLERR, "Variable name {} for compute fep does not exist", pert->var); if (!input->variable->equalstyle(pert->ivar)) - error->all(FLERR, "Variable for compute fep is of invalid style"); + error->all(FLERR, "Variable {} for compute fep is of invalid style", pert->var); if (force->pair == nullptr) error->all(FLERR, "compute fep pair requires pair interactions"); if (pert->which == PAIR) { pairflag = 1; Pair *pair = nullptr; + if (lmp->suffix_enable) { + if (lmp->suffix) { + auto pstyle = fmt::format("{}/{}", pert->pstyle, lmp->suffix); + pair = force->pair_match(pstyle, 1); + } + if ((pair == nullptr) && lmp->suffix2) { + auto pstyle = fmt::format("{}/{}", pert->pstyle, lmp->suffix2); + pair = force->pair_match(pstyle, 1); + } + } - if (lmp->suffix_enable) - pair = force->pair_match(std::string(pert->pstyle)+"/"+lmp->suffix,1); - - if (pair == nullptr) pair = force->pair_match(pert->pstyle,1); + if (pair == nullptr) pair = force->pair_match(pert->pstyle, 1); if (pair == nullptr) - error->all(FLERR, - "compute fep pair style " - "does not exist"); + error->all(FLERR, "compute fep pair style {} does not exist", pert->pstyle); + void *ptr = pair->extract(pert->pparam, pert->pdim); - if (ptr == nullptr) error->all(FLERR, "compute fep pair style param not supported"); + if (ptr == nullptr) + error->all(FLERR, "compute fep pair style param {} not supported", pert->pparam); pert->array = (double **) ptr; From 1464b55f81c1d563d92f967fba238fc66bbf0178 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Nov 2022 17:07:02 -0500 Subject: [PATCH 04/30] add symbolic links for data file for FEP examples --- examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp | 1 + examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp | 1 + examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp | 1 + examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp | 1 + examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp | 1 + examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp | 1 + examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp | 1 + examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp | 1 + examples/PACKAGES/fep/CH4hyd/fep01/data.lmp | 1 + examples/PACKAGES/fep/CH4hyd/fep10/data.lmp | 1 + examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp | 1 + examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp | 1 + 12 files changed, 12 insertions(+) create mode 120000 examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp create mode 120000 examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp create mode 120000 examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp create mode 120000 examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp create mode 120000 examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp create mode 120000 examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp create mode 120000 examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp create mode 120000 examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp create mode 120000 examples/PACKAGES/fep/CH4hyd/fep01/data.lmp create mode 120000 examples/PACKAGES/fep/CH4hyd/fep10/data.lmp create mode 120000 examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp create mode 120000 examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp diff --git a/examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp b/examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp new file mode 120000 index 0000000000..5c33e53300 --- /dev/null +++ b/examples/PACKAGES/fep/CC-CO/fep01/data.0.lmp @@ -0,0 +1 @@ +../mols/data.0.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp b/examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp new file mode 120000 index 0000000000..4222a38b76 --- /dev/null +++ b/examples/PACKAGES/fep/CC-CO/fep10/data.1.lmp @@ -0,0 +1 @@ +../mols/data.1.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp b/examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp new file mode 120000 index 0000000000..5c33e53300 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/bar01/data.0.lmp @@ -0,0 +1 @@ +../mols/data.0.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp b/examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp new file mode 120000 index 0000000000..4222a38b76 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/bar10/data.1.lmp @@ -0,0 +1 @@ +../mols/data.1.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp b/examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp new file mode 120000 index 0000000000..5c33e53300 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/fep01/data.0.lmp @@ -0,0 +1 @@ +../mols/data.0.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp b/examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp new file mode 120000 index 0000000000..4222a38b76 --- /dev/null +++ b/examples/PACKAGES/fep/CH4-CF4/fep10/data.1.lmp @@ -0,0 +1 @@ +../mols/data.1.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp b/examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fdti01/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp b/examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fdti10/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fep01/data.lmp b/examples/PACKAGES/fep/CH4hyd/fep01/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fep01/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/CH4hyd/fep10/data.lmp b/examples/PACKAGES/fep/CH4hyd/fep10/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/CH4hyd/fep10/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp b/examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/SPCEhyd/fep01/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file diff --git a/examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp b/examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp new file mode 120000 index 0000000000..73cccaf269 --- /dev/null +++ b/examples/PACKAGES/fep/SPCEhyd/fep10/data.lmp @@ -0,0 +1 @@ +../mols/data.lmp \ No newline at end of file From 81c37f6dd6633b4560a4083e5dd1e702c68a58b5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Nov 2022 17:15:07 -0500 Subject: [PATCH 05/30] add versionchanged tag to "python source" docs --- doc/src/python.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/python.rst b/doc/src/python.rst index e5854faf46..5316fb28a5 100644 --- a/doc/src/python.rst +++ b/doc/src/python.rst @@ -129,6 +129,8 @@ The first argument of the *python* command is either the *source* keyword or the name of a Python function. This defines the mode of the python command. +.. versionchanged:: TBD + If the *source* keyword is used, it is followed by either a file name or the *here* keyword. No other keywords can be used. The *here* keyword is followed by a string with python commands, either on a single line From 67c5bb2a0d1cdcb5e3b7bf11637854f62d0fa747 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Nov 2022 21:13:22 -0500 Subject: [PATCH 06/30] small programming style updates --- src/REACTION/fix_bond_react.cpp | 43 +++++++++++++++++---------------- src/REACTION/fix_bond_react.h | 4 +-- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index 8857590c4f..d6dcb2d8b6 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -22,6 +22,7 @@ Contributing Author: Jacob Gissinger (jacob.r.gissinger@gmail.com) #include "atom_vec.h" #include "citeme.h" #include "comm.h" +#include "compute.h" #include "domain.h" #include "error.h" #include "fix_bond_history.h" @@ -118,11 +119,8 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : fix3 = nullptr; reset_mol_ids = nullptr; - if (narg < 8) error->all(FLERR,"Illegal fix bond/react command: " - "too few arguments"); + if (narg < 8) utils::missing_cmd_args(FLERR,"fix bond/react", error); - MPI_Comm_rank(world,&me); - MPI_Comm_size(world,&nprocs); newton_bond = force->newton_bond; restart_global = 1; @@ -495,7 +493,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : for (int i = 0; i < nreacts; i++) { for (int j = 0; j < nconstraints[i]; j++) { if (constraints[j][i].type == ARRHENIUS) { - rrhandom[tmp++] = new RanMars(lmp,(int) constraints[j][i].par[4] + me); + rrhandom[tmp++] = new RanMars(lmp,(int) constraints[j][i].par[4] + comm->me); } } } @@ -530,7 +528,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : random = new RanMars*[nreacts]; for (int i = 0; i < nreacts; i++) { - random[i] = new RanMars(lmp,seed[i] + me); + random[i] = new RanMars(lmp,seed[i] + comm->me); } // set comm sizes needed by this fix @@ -1252,6 +1250,7 @@ void FixBondReact::close_partner() void FixBondReact::superimpose_algorithm() { + const int nprocs = comm->nprocs; local_num_mega = 0; ghostly_num_mega = 0; @@ -1401,7 +1400,7 @@ void FixBondReact::superimpose_algorithm() MPI_Allreduce(&local_rxn_count[0],&reaction_count[0],nreacts,MPI_INT,MPI_SUM,world); int rxnflag = 0; - if (me == 0) + if (comm->me == 0) for (int i = 0; i < nreacts; i++) { reaction_count_total[i] += reaction_count[i] + ghostly_rxn_count[i]; rxnflag += reaction_count[i] + ghostly_rxn_count[i]; @@ -1441,7 +1440,7 @@ void FixBondReact::superimpose_algorithm() memory->create(local_rxncounts,nprocs,"bond/react:local_rxncounts"); memory->create(all_localskips,nprocs,"bond/react:all_localskips"); MPI_Gather(&local_rxn_count[i],1,MPI_INT,local_rxncounts,1,MPI_INT,0,world); - if (me == 0) { + if (comm->me == 0) { int delta_rxn = reaction_count[i] + ghostly_rxn_count[i]; // when using variable input for rate_limit, rate_limit_overstep could be > delta_rxn (below) // we need to limit overstep to the number of reactions on this timestep @@ -2616,7 +2615,7 @@ void FixBondReact::find_landlocked_atoms(int myrxn) } // also, if atoms change number of bonds, but aren't landlocked, that could be bad - if (me == 0) + if (comm->me == 0) for (int i = 0; i < twomol->natoms; i++) { if ((create_atoms[i][myrxn] == 0) && (twomol_nxspecial[i][0] != onemol_nxspecial[equivalences[i][1][myrxn]-1][0]) && @@ -2948,6 +2947,7 @@ broadcast entries of mega_glove which contain nonlocal atoms for perusal by all void FixBondReact::ghost_glovecast() { #if !defined(MPI_STUBS) + const int nprocs = comm->nprocs; global_megasize = 0; @@ -2966,7 +2966,7 @@ void FixBondReact::ghost_glovecast() int *allstarts = new int[nprocs]; int start = 0; - for (int i = 0; i < me; i++) { + for (int i = 0; i < comm->me; i++) { start += allncols[i]; } MPI_Allgather(&start, 1, MPI_INT, allstarts, 1, MPI_INT, world); @@ -2994,7 +2994,7 @@ void FixBondReact::ghost_glovecast() } } // let's send to root, dedup, then broadcast - if (me == 0) { + if (comm->me == 0) { MPI_Gatherv(MPI_IN_PLACE, ghostly_num_mega, column, // Note: some values ignored for MPI_IN_PLACE &(global_mega_glove[0][0]), allncols, allstarts, column, 0, world); @@ -3004,7 +3004,7 @@ void FixBondReact::ghost_glovecast() column, 0, world); } - if (me == 0) dedup_mega_gloves(GLOBAL); // global_mega_glove mode + if (comm->me == 0) dedup_mega_gloves(GLOBAL); // global_mega_glove mode MPI_Bcast(&global_megasize,1,MPI_INT,0,world); MPI_Bcast(&(global_mega_glove[0][0]), global_megasize, column, 0, world); @@ -3746,7 +3746,7 @@ int FixBondReact::insert_atoms(tagint **my_mega_glove, int iupdate) Superpose3D superposer(n2superpose); int fitroot = 0; if (ifit >= 0 && ifit < atom->nlocal) { - fitroot = me; + fitroot = comm->me; // get 'temperatere' averaged over site, used for created atoms' vels t = get_temperature(my_mega_glove,1,iupdate); @@ -3764,7 +3764,8 @@ int FixBondReact::insert_atoms(tagint **my_mega_glove, int iupdate) int ipre = equivalences[j][1][rxnID]-1; // equiv pre-reaction template index if (!create_atoms[j][rxnID] && !delete_atoms[ipre][rxnID]) { if (atom->map(my_mega_glove[ipre+1][iupdate]) < 0) { - error->warning(FLERR," eligible atoms skipped for created-atoms fit on rank {}\n",me); + error->warning(FLERR," eligible atoms skipped for created-atoms fit on rank {}\n", + comm->me); continue; } iatom = atom->map(my_mega_glove[ipre+1][iupdate]); @@ -3792,7 +3793,7 @@ int FixBondReact::insert_atoms(tagint **my_mega_glove, int iupdate) if (create_atoms[m][rxnID] == 1) { // apply optimal rotation/translation for created atom coords // also map coords back into simulation box - if (fitroot == me) { + if (fitroot == comm->me) { MathExtra::matvec(rotmat,twomol->x[m],coords[m]); for (int i = 0; i < 3; i++) coords[m][i] += superposer.T[i]; imageflags[m] = atom->image[ifit]; @@ -3880,7 +3881,7 @@ int FixBondReact::insert_atoms(tagint **my_mega_glove, int iupdate) int root = 0; if (flag) { - root = me; + root = comm->me; atom->avec->create_atom(twomol->type[m],coords[m]); int n = atom->nlocal - 1; @@ -4026,7 +4027,7 @@ void FixBondReact::read_map_file(int myrxn) while (strlen(keyword)) { if (strcmp(keyword,"InitiatorIDs") == 0 || strcmp(keyword,"BondingIDs") == 0) { if (strcmp(keyword,"BondingIDs") == 0) - if (me == 0) error->warning(FLERR,"Fix bond/react: The BondingIDs section title has been deprecated. Please use InitiatorIDs instead."); + if (comm->me == 0) error->warning(FLERR,"Fix bond/react: The BondingIDs section title has been deprecated. Please use InitiatorIDs instead."); bondflag = 1; readline(line); sscanf(line,"%d",&ibonding[myrxn]); @@ -4292,7 +4293,7 @@ void FixBondReact::open(char *file) void FixBondReact::readline(char *line) { int n; - if (me == 0) { + if (comm->me == 0) { if (fgets(line,MAXLINE,fp) == nullptr) n = 0; else n = strlen(line) + 1; } @@ -4309,7 +4310,7 @@ void FixBondReact::parse_keyword(int flag, char *line, char *keyword) // eof is set to 1 if any read hits end-of-file int eof = 0; - if (me == 0) { + if (comm->me == 0) { if (fgets(line,MAXLINE,fp) == nullptr) eof = 1; while (eof == 0 && strspn(line," \t\n\r") == strlen(line)) { if (fgets(line,MAXLINE,fp) == nullptr) eof = 1; @@ -4328,7 +4329,7 @@ void FixBondReact::parse_keyword(int flag, char *line, char *keyword) // bcast keyword line to all procs int n; - if (me == 0) n = strlen(line) + 1; + if (comm->me == 0) n = strlen(line) + 1; MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); } @@ -4493,7 +4494,7 @@ void FixBondReact::write_restart(FILE *fp) memcpy(rbuf,&store_rxn_count[0][0],sizeof(int)*rbufcount); } - if (me == 0) { + if (comm->me == 0) { int size = nreacts*sizeof(Set)+(rbufcount+1)*sizeof(int); fwrite(&size,sizeof(int),1,fp); fwrite(&revision,sizeof(int),1,fp); diff --git a/src/REACTION/fix_bond_react.h b/src/REACTION/fix_bond_react.h index b55608b07e..5bc20883ca 100644 --- a/src/REACTION/fix_bond_react.h +++ b/src/REACTION/fix_bond_react.h @@ -25,7 +25,6 @@ FixStyle(bond/react,FixBondReact); #define LMP_FIX_BOND_REACT_H #include "fix.h" -#include "compute.h" #include #include @@ -55,7 +54,6 @@ class FixBondReact : public Fix { double memory_usage() override; private: - int me, nprocs; int newton_bond; int nreacts; int *nevery; @@ -236,7 +234,7 @@ class FixBondReact : public Fix { std::vector customvarstrs; int nvvec; double **vvec; // per-atom vector to store custom constraint atom-style variable values - Compute *cperbond; // pointer to 'compute bond/local' used by custom constraint ('rxnbond' function) + class Compute *cperbond; // pointer to 'compute bond/local' used by custom constraint ('rxnbond' function) std::map, int> atoms2bond; // maps atom pair to index of local bond array std::vector> constraints; From 925a9a4bb363d93ac192611d357bb403ba823472 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Nov 2022 09:59:02 -0500 Subject: [PATCH 07/30] use name in capitals for compile time constant --- src/domain.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/domain.cpp b/src/domain.cpp index 1ce2b8ba0a..fe8d0bbb25 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -985,16 +985,16 @@ void Domain::subbox_too_small_check(double thresh) ------------------------------------------------------------------------- */ #ifdef LAMMPS_BIGBIG -static constexpr double maximgcount = 1<<21; +static constexpr double MAXIMGCOUNT = 1<<21; #else -static constexpr double maximgcount = 1<<10; +static constexpr double MAXIMGCOUNT = 1<<10; #endif void Domain::minimum_image(double &dx, double &dy, double &dz) { if (triclinic == 0) { if (xperiodic) { - if (fabs(dx) > (maximgcount * xprd)) + if (fabs(dx) > (MAXIMGCOUNT * xprd)) error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dx); while (fabs(dx) > xprd_half) { if (dx < 0.0) dx += xprd; @@ -1002,7 +1002,7 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } if (yperiodic) { - if (fabs(dy) > (maximgcount * yprd)) + if (fabs(dy) > (MAXIMGCOUNT * yprd)) error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dy); while (fabs(dy) > yprd_half) { if (dy < 0.0) dy += yprd; @@ -1010,7 +1010,7 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } if (zperiodic) { - if (fabs(dz) > (maximgcount * zprd)) + if (fabs(dz) > (MAXIMGCOUNT * zprd)) error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dz); while (fabs(dz) > zprd_half) { if (dz < 0.0) dz += zprd; @@ -1020,7 +1020,7 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } else { if (zperiodic) { - if (fabs(dz) > (maximgcount * zprd)) + if (fabs(dz) > (MAXIMGCOUNT * zprd)) error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dz); while (fabs(dz) > zprd_half) { if (dz < 0.0) { @@ -1035,7 +1035,7 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } if (yperiodic) { - if (fabs(dy) > (maximgcount * yprd)) + if (fabs(dy) > (MAXIMGCOUNT * yprd)) error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dy); while (fabs(dy) > yprd_half) { if (dy < 0.0) { @@ -1048,7 +1048,7 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } if (xperiodic) { - if (fabs(dx) > (maximgcount * xprd)) + if (fabs(dx) > (MAXIMGCOUNT * xprd)) error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dx); while (fabs(dx) > xprd_half) { if (dx < 0.0) dx += xprd; From 57e42a06af6f6c3853a251296798c333aab649fd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Nov 2022 10:02:02 -0500 Subject: [PATCH 08/30] make overloaded alias inline function --- src/domain.cpp | 10 ---------- src/domain.h | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/domain.cpp b/src/domain.cpp index fe8d0bbb25..b4f4c8385e 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1058,16 +1058,6 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) } } -/* ---------------------------------------------------------------------- - minimum image convention in periodic dimensions - use same algorithm as before -------------------------------------------------------------------------- */ - -void Domain::minimum_image(double *delta) -{ - minimum_image(delta[0], delta[1], delta[2]); -} - /* ---------------------------------------------------------------------- minimum image convention in periodic dimensions use 1/2 of box size as test diff --git a/src/domain.h b/src/domain.h index 6bb39c747a..8830c5d051 100644 --- a/src/domain.h +++ b/src/domain.h @@ -120,7 +120,7 @@ class Domain : protected Pointers { void box_too_small_check(); void subbox_too_small_check(double); void minimum_image(double &, double &, double &); - void minimum_image(double *); + void minimum_image(double *delta) { minimum_image(delta[0], delta[1], delta[2]); } void minimum_image_once(double *); int closest_image(int, int); int closest_image(const double *const, int); From a46b1114ffc115d6425864623269454d4f92de28 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Nov 2022 14:15:56 -0500 Subject: [PATCH 09/30] spelling updates for fix bond/react --- doc/src/fix_bond_react.rst | 2 +- doc/utils/sphinx-config/false_positives.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index 15098761cc..665dce5105 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -640,7 +640,7 @@ specified by the *max_rxn* keyword. .. versionadded:: TBD The *rate_limit* keyword can enforce an upper limit on the overall -rate of the reaction. The number of reaction occurences is limited to +rate of the reaction. The number of reaction occurrences is limited to Nlimit within an interval of Nsteps timesteps. No reactions are permitted to occur within the first Nsteps timesteps of the first run after reading a data file. Nlimit can be specified with an equal-style diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 13a3682870..c748afa841 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -2385,6 +2385,7 @@ nktv nl nlayers nlen +Nlimit nlines Nlines nlo @@ -2474,6 +2475,7 @@ nsq Nstart nstats Nstep +Nsteps nsteplast Nstop nsub @@ -3091,6 +3093,7 @@ Rutuparna rx rxd rxnave +rxnbond rxnsum ry Ryckaert From b60725197f9653593d4df8735484a22e9f790265 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Nov 2022 14:50:16 -0500 Subject: [PATCH 10/30] address uninitialized data warnings from coverity scan --- src/ML-PACE/pair_pace_extrapolation.cpp | 1 + src/ML-PACE/pair_pace_extrapolation.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/pair_pace_extrapolation.cpp b/src/ML-PACE/pair_pace_extrapolation.cpp index d95c4cfb91..ec185e75df 100644 --- a/src/ML-PACE/pair_pace_extrapolation.cpp +++ b/src/ML-PACE/pair_pace_extrapolation.cpp @@ -96,6 +96,7 @@ PairPACEExtrapolation::PairPACEExtrapolation(LAMMPS *lmp) : Pair(lmp) aceimpl = new ACEALImpl; scale = nullptr; + flag_compute_extrapolation_grade = 0; extrapolation_grade_gamma = nullptr; } diff --git a/src/ML-PACE/pair_pace_extrapolation.h b/src/ML-PACE/pair_pace_extrapolation.h index 4c31fcbc3f..c5d9da23db 100644 --- a/src/ML-PACE/pair_pace_extrapolation.h +++ b/src/ML-PACE/pair_pace_extrapolation.h @@ -51,7 +51,6 @@ class PairPACEExtrapolation : public Pair { void allocate(); std::vector element_names; // list of elements (used by dump pace/extrapolation) - int nelements; // # of unique elements double *extrapolation_grade_gamma; //per-atom gamma value int flag_compute_extrapolation_grade; From dde2ef3462d5463f555f2b30499d10874a485db7 Mon Sep 17 00:00:00 2001 From: mehdibghk Date: Thu, 17 Nov 2022 23:25:04 +0800 Subject: [PATCH 11/30] correct a grammatical error --- doc/src/pair_ylz.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/pair_ylz.rst b/doc/src/pair_ylz.rst index 5c3738f509..17cf0ca639 100644 --- a/doc/src/pair_ylz.rst +++ b/doc/src/pair_ylz.rst @@ -82,7 +82,7 @@ mixing as described below: * :math:`\epsilon` = well depth (energy units) * :math:`\sigma` = minimum effective particle radii (distance units) -* :math:`\zeta` = tune parameter for the slope of the attractive branch +* :math:`\zeta` = tuning parameter for the slope of the attractive branch * :math:`\mu` = parameter related to bending rigidity * :math:`\beta` = parameter related to the spontaneous curvature * cutoff (distance units) From 096a70363bc0486d2fab6339b81e911bd5109623 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Nov 2022 11:31:34 -0500 Subject: [PATCH 12/30] allow to check if Kokkos is active and retrieve number of threads and gpus --- src/library.cpp | 16 +++++++++-- .../c-library/test_library_properties.cpp | 28 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/library.cpp b/src/library.cpp index a1cc67cfa5..e7f3471d64 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -983,7 +983,7 @@ be called without a valid LAMMPS object handle (it is ignored). **Image masks** These settings are related to how LAMMPS stores and interprets periodic images. The values are used -internally by the Fortran interface and are not likely to be useful to users. +internally by the :doc:`Fortran interface ` and are not likely to be useful to users. .. list-table:: :header-rows: 1 @@ -1015,8 +1015,17 @@ internally by the Fortran interface and are not likely to be useful to users. * - box_exist - 1 if the simulation box is defined, 0 if not. See :doc:`create_box`. + * - kokkos_active + - 1 if the KOKKOS package is compiled in **and** activated, 0 if not. + See :doc:``. + * - kokkos_nthreads + - Number of Kokkos threads per MPI process, 0 if Kokkos is not active. + See :doc:``. + * - kokkos_ngpus + - Number of Kokkos gpus per MPI process, 0 if Kokkos is not active or no GPU support. + See :doc:``. * - nthreads - - Number of requested OpenMP threads for LAMMPS' execution + - Number of requested OpenMP threads per MPI process for LAMMPS' execution * - newton_bond - 1 if Newton's 3rd law is applied to bonded interactions, 0 if not. * - newton_pair @@ -1126,6 +1135,9 @@ int lammps_extract_setting(void *handle, const char *keyword) if (strcmp(keyword,"dimension") == 0) return lmp->domain->dimension; if (strcmp(keyword,"box_exist") == 0) return lmp->domain->box_exist; + if (strcmp(keyword,"kokkos_active") == 0) return (lmp->kokkos) ? 1 : 0; + if (strcmp(keyword,"kokkos_nthreads") == 0) return (lmp->kokkos) ? lmp->kokkos->nthreads : 0; + if (strcmp(keyword,"kokkos_ngpus") == 0) return (lmp->kokkos) ? lmp->kokkos->ngpus : 0; if (strcmp(keyword,"newton_bond") == 0) return lmp->force->newton_bond; if (strcmp(keyword,"newton_pair") == 0) return lmp->force->newton_pair; if (strcmp(keyword,"triclinic") == 0) return lmp->domain->triclinic; diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index bbb363dfab..56486fba6c 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -209,6 +209,10 @@ TEST_F(LibraryProperties, setting) lammps_command(lmp, "dimension 3"); if (!verbose) ::testing::internal::GetCapturedStdout(); + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_active"), 0); + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_nthreads"), 0); + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_ngpus"), 0); + EXPECT_EQ(lammps_extract_setting(lmp, "world_size"), 1); EXPECT_EQ(lammps_extract_setting(lmp, "world_rank"), 0); EXPECT_EQ(lammps_extract_setting(lmp, "universe_size"), 1); @@ -545,3 +549,27 @@ TEST_F(AtomProperties, position) EXPECT_DOUBLE_EQ(x[1][1], 0.1); EXPECT_DOUBLE_EQ(x[1][2], 0.1); } + +TEST(SystemSettings, kokkos) +{ + if (!lammps_config_has_package("KOKKOS")) GTEST_SKIP(); + if (!lammps_config_accelerator("KOKKOS", "api", "openmp")) GTEST_SKIP(); + + // clang-format off + const char *args[] = {"SystemSettings", "-log", "none", "-echo", "screen", "-nocite", + "-k", "on", "t", "4", "-sf", "kk"}; + // clang-format on + char **argv = (char **)args; + int argc = sizeof(args) / sizeof(char *); + + ::testing::internal::CaptureStdout(); + void *lmp = lammps_open_no_mpi(argc, argv, nullptr); + std::string output = ::testing::internal::GetCapturedStdout(); + if (verbose) std::cout << output; + EXPECT_THAT(output, StartsWith("LAMMPS (")); + + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_active"), 1); + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_nthreads"), 4); + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_ngpus"), 0); + lammps_close(lmp); +} From 15bf4a281d494e76fab69faa9b5473ddfbcbe7ba Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Nov 2022 11:48:13 -0500 Subject: [PATCH 13/30] documentation corrections --- doc/utils/sphinx-config/false_positives.txt | 1 + src/library.cpp | 8 ++++---- unittest/c-library/test_library_properties.cpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c748afa841..9e8fb042a0 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -2360,6 +2360,7 @@ Ng nghost Nghost Ngpu +ngpus Ngyuen nh nharmonic diff --git a/src/library.cpp b/src/library.cpp index e7f3471d64..1e3c96cdcf 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -1017,13 +1017,13 @@ internally by the :doc:`Fortran interface ` and are not likely to be us See :doc:`create_box`. * - kokkos_active - 1 if the KOKKOS package is compiled in **and** activated, 0 if not. - See :doc:``. + See :doc:`Speed_kokkos`. * - kokkos_nthreads - Number of Kokkos threads per MPI process, 0 if Kokkos is not active. - See :doc:``. + See :doc:`Speed_kokkos`. * - kokkos_ngpus - - Number of Kokkos gpus per MPI process, 0 if Kokkos is not active or no GPU support. - See :doc:``. + - Number of Kokkos gpus per physical node, 0 if Kokkos is not active or no GPU support. + See :doc:`Speed_kokkos`. * - nthreads - Number of requested OpenMP threads per MPI process for LAMMPS' execution * - newton_bond diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 56486fba6c..bb0f6e2894 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -570,6 +570,6 @@ TEST(SystemSettings, kokkos) EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_active"), 1); EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_nthreads"), 4); - EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_ngpus"), 0); + EXPECT_EQ(lammps_extract_setting(lmp, "kokkos_ngpus"), 0); lammps_close(lmp); } From ae1b48b52b8413084ad6680116c33e7e1be28b2d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Nov 2022 14:15:30 -0500 Subject: [PATCH 14/30] use smaller maximum box count for maximum allowed distance --- src/domain.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/domain.cpp b/src/domain.cpp index b4f4c8385e..6ed91d0ea8 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -981,14 +981,10 @@ void Domain::subbox_too_small_check(double thresh) this should not be used if atom has moved infinitely far outside box b/c while could iterate forever e.g. fix shake prediction of new position with highly overlapped atoms - use minimum_image_once() instead + uses minimum_image_once() instead ------------------------------------------------------------------------- */ -#ifdef LAMMPS_BIGBIG -static constexpr double MAXIMGCOUNT = 1<<21; -#else -static constexpr double MAXIMGCOUNT = 1<<10; -#endif +static constexpr double MAXIMGCOUNT = 16; void Domain::minimum_image(double &dx, double &dy, double &dz) { From 6c87236e7af6485d5553e71862dd650ad76cf7fd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Nov 2022 08:09:12 -0500 Subject: [PATCH 15/30] fix typos --- doc/src/angle_gaussian.rst | 4 ++-- doc/src/bond_gaussian.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/angle_gaussian.rst b/doc/src/angle_gaussian.rst index f0a50938e4..88f17092bc 100644 --- a/doc/src/angle_gaussian.rst +++ b/doc/src/angle_gaussian.rst @@ -25,7 +25,7 @@ The *gaussian* angle style uses the potential: .. math:: - E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-(\theta-\theta_{i})^2}{w_i^2})\right) \right) + E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-2(\theta-\theta_{i})^2}{w_i^2}\right) \right) This analytical form is a suitable potential for obtaining mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) ` @@ -34,7 +34,7 @@ The following coefficients must be defined for each angle type via the the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands: -* T temperature at which the potential was derived +* :math:`T` temperature at which the potential was derived * :math:`n` (integer >=1) * :math:`A_1` (-) * :math:`w_1` (-) diff --git a/doc/src/bond_gaussian.rst b/doc/src/bond_gaussian.rst index 9fbcf4778c..6ee15248ad 100644 --- a/doc/src/bond_gaussian.rst +++ b/doc/src/bond_gaussian.rst @@ -25,7 +25,7 @@ The *gaussian* bond style uses the potential: .. math:: - E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-(r-r_{i})^2}{w_i^2})\right) \right) + E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-2(r-r_{i})^2}{w_i^2}\right)\right) This analytical form is a suitable potential for obtaining mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) ` @@ -35,7 +35,7 @@ The following coefficients must be defined for each bond type via the the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands: -* T temperature at which the potential was derived +* :math:`T` temperature at which the potential was derived * :math:`n` (integer >=1) * :math:`A_1` (-) * :math:`w_1` (-) From b39842ba23bd071d4a92efe0d994bb05dae6e397 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 19 Nov 2022 14:00:22 -0500 Subject: [PATCH 16/30] avoid segfault when reading beyond the provided number of lines --- src/fix_property_atom.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index 68440e4d58..24704a12ad 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -275,6 +275,7 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, tagint for (int i = 0; i < n; i++) { next = strchr(buf, '\n'); + if (!next) error->all(FLERR, "Unexpected end of file while reading data section"); *next = '\0'; try { From 442eeb9f52651a4de183f475566dbec53bb30e70 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 19 Nov 2022 14:01:10 -0500 Subject: [PATCH 17/30] support special case where number of data lines from fix is number of added atoms --- src/fix_property_atom.cpp | 4 ++-- src/read_data.cpp | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index 24704a12ad..95e25c59b2 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -325,12 +325,12 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, tagint } /* ---------------------------------------------------------------------- - return # of lines in section of data file labeled by keyword + return # of lines in section of data file labeled by keyword. -1 signals use # of added atoms ------------------------------------------------------------------------- */ bigint FixPropertyAtom::read_data_skip_lines(char * /*keyword*/) { - return atom->natoms; + return -1; } /* ---------------------------------------------------------------------- diff --git a/src/read_data.cpp b/src/read_data.cpp index ee6399a2d3..5317a4217a 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -875,10 +875,13 @@ void ReadData::command(int narg, char **arg) int i; for (i = 0; i < nfix; i++) if (strcmp(keyword, fix_section[i]) == 0) { - if (firstpass) + if (firstpass) { fix(fix_index[i], keyword); - else - skip_lines(fix_index[i]->read_data_skip_lines(keyword)); + } else { + auto nskip = fix_index[i]->read_data_skip_lines(keyword); + if (nskip < 0) nskip = natoms; + skip_lines(nskip); + } break; } if (i == nfix) @@ -2225,6 +2228,7 @@ void ReadData::fix(Fix *ifix, char *keyword) int nchunk, eof; bigint nline = ifix->read_data_skip_lines(keyword); + if (nline < 0) nline = natoms; bigint nread = 0; while (nread < nline) { From 045afe00d89d331b502b15f7b8e01e5994a40243 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 19 Nov 2022 21:19:20 -0500 Subject: [PATCH 18/30] add tests for read_data add, and read_data with fix property/atom --- unittest/formats/test_file_operations.cpp | 112 ++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index 9c75029130..d48dee34b2 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -469,6 +469,8 @@ TEST_F(FileOperationsTest, write_data) TEST_FAILURE(".*ERROR: Cannot open file noexist.data: No such file or directory.*", command("read_data noexist.data");); + TEST_FAILURE(".*ERROR: Unknown read_data keyword xxx.*", + command("read_data noexist.data xxx");); BEGIN_HIDE_OUTPUT(); command("pair_style zero 1.0"); @@ -501,6 +503,116 @@ TEST_F(FileOperationsTest, write_data) delete_file("triclinic.data"); } +#define GETIDX(i) lmp->atom->map(i) +TEST_F(FileOperationsTest, read_data_fix) +{ + ASSERT_EQ(lmp->restart_ver, -1); + BEGIN_HIDE_OUTPUT(); + command("echo none"); + command("atom_modify map array"); + command("fix MoleculeIDs all property/atom mol"); + command("region box block -2 2 -2 2 -2 2"); + command("create_box 1 box"); + command("create_atoms 1 single 1.0 0.0 0.0"); + command("create_atoms 1 single 0.0 1.0 0.0"); + command("create_atoms 1 single 1.0 0.0 1.0"); + command("create_atoms 1 single 0.0 1.0 1.0"); + command("mass 1 1.0"); + command("set atom 1*2 mol 1"); + command("set atom 3*4 mol 2"); + command("write_data test_mol_id.data"); + lmp->atom->molecule[0] = 5; + lmp->atom->molecule[1] = 6; + lmp->atom->molecule[2] = 5; + lmp->atom->molecule[3] = 6; + lmp->atom->tag[0] = 9; + lmp->atom->tag[1] = 6; + lmp->atom->tag[2] = 7; + lmp->atom->tag[3] = 8; + lmp->atom->map_init(1); + lmp->atom->map_set(); + command("write_data test_mol_id_merge.data"); + command("clear"); + END_HIDE_OUTPUT(); + TEST_FAILURE(".*ERROR: Cannot use read_data add before simulation box is defined.*", + command("read_data test_mol_id.data add append");); + + BEGIN_HIDE_OUTPUT(); + command("atom_modify map array"); + command("fix MoleculeIDs all property/atom mol"); + command("read_data test_mol_id.data fix MoleculeIDs NULL Molecules"); + command("read_data test_mol_id_merge.data add merge fix MoleculeIDs NULL Molecules"); + END_HIDE_OUTPUT(); + + EXPECT_EQ(lmp->atom->natoms, 8); + EXPECT_EQ(lmp->atom->molecule[GETIDX(1)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(2)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(3)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(4)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(6)], 6); + EXPECT_EQ(lmp->atom->molecule[GETIDX(7)], 5); + EXPECT_EQ(lmp->atom->molecule[GETIDX(8)], 6); + EXPECT_EQ(lmp->atom->molecule[GETIDX(9)], 5); + EXPECT_EQ(lmp->atom->tag[GETIDX(1)], 1); + EXPECT_EQ(lmp->atom->tag[GETIDX(2)], 2); + EXPECT_EQ(lmp->atom->tag[GETIDX(3)], 3); + EXPECT_EQ(lmp->atom->tag[GETIDX(4)], 4); + EXPECT_EQ(lmp->atom->tag[GETIDX(6)], 6); + EXPECT_EQ(lmp->atom->tag[GETIDX(7)], 7); + EXPECT_EQ(lmp->atom->tag[GETIDX(8)], 8); + EXPECT_EQ(lmp->atom->tag[GETIDX(9)], 9); + + BEGIN_HIDE_OUTPUT(); + command("clear"); + command("atom_modify map array"); + command("fix MoleculeIDs all property/atom mol"); + command("read_data test_mol_id.data fix MoleculeIDs NULL Molecules"); + command("read_data test_mol_id.data add append fix MoleculeIDs NULL Molecules"); + END_HIDE_OUTPUT(); + EXPECT_EQ(lmp->atom->natoms, 8); + EXPECT_EQ(lmp->atom->molecule[GETIDX(1)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(2)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(3)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(4)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(5)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(6)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(7)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(8)], 2); + EXPECT_EQ(lmp->atom->tag[GETIDX(1)], 1); + EXPECT_EQ(lmp->atom->tag[GETIDX(2)], 2); + EXPECT_EQ(lmp->atom->tag[GETIDX(3)], 3); + EXPECT_EQ(lmp->atom->tag[GETIDX(4)], 4); + EXPECT_EQ(lmp->atom->tag[GETIDX(5)], 5); + EXPECT_EQ(lmp->atom->tag[GETIDX(6)], 6); + EXPECT_EQ(lmp->atom->tag[GETIDX(7)], 7); + EXPECT_EQ(lmp->atom->tag[GETIDX(8)], 8); + + BEGIN_HIDE_OUTPUT(); + command("clear"); + command("atom_modify map array"); + command("fix MoleculeIDs all property/atom mol"); + command("read_data test_mol_id.data fix MoleculeIDs NULL Molecules"); + command("read_data test_mol_id.data add 6 4 fix MoleculeIDs NULL Molecules"); + END_HIDE_OUTPUT(); + EXPECT_EQ(lmp->atom->natoms, 8); + EXPECT_EQ(lmp->atom->molecule[GETIDX(1)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(2)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(3)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(4)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(7)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(8)], 1); + EXPECT_EQ(lmp->atom->molecule[GETIDX(9)], 2); + EXPECT_EQ(lmp->atom->molecule[GETIDX(10)], 2); + EXPECT_EQ(lmp->atom->tag[GETIDX(1)], 1); + EXPECT_EQ(lmp->atom->tag[GETIDX(2)], 2); + EXPECT_EQ(lmp->atom->tag[GETIDX(3)], 3); + EXPECT_EQ(lmp->atom->tag[GETIDX(4)], 4); + EXPECT_EQ(lmp->atom->tag[GETIDX(7)], 7); + EXPECT_EQ(lmp->atom->tag[GETIDX(8)], 8); + EXPECT_EQ(lmp->atom->tag[GETIDX(9)], 9); + EXPECT_EQ(lmp->atom->tag[GETIDX(10)], 10); +} + int main(int argc, char **argv) { MPI_Init(&argc, &argv); From 13fcbeda18db2f3f550a8785cd16df41f2af38e0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 21 Nov 2022 13:46:59 -0500 Subject: [PATCH 19/30] remove "box" command --- src/deprecated.cpp | 4 ++++ src/deprecated.h | 1 + src/domain.cpp | 27 ++------------------------- src/domain.h | 2 -- src/input.cpp | 10 ---------- src/input.h | 1 - 6 files changed, 7 insertions(+), 38 deletions(-) diff --git a/src/deprecated.cpp b/src/deprecated.cpp index 3558935cb3..81a05307cb 100644 --- a/src/deprecated.cpp +++ b/src/deprecated.cpp @@ -32,6 +32,10 @@ void Deprecated::command(int narg, char **arg) if (cmd == "DEPRECATED") { if (lmp->comm->me == 0) utils::logmesg(lmp, "\nCommand 'DEPRECATED' is a dummy command\n\n"); return; + } else if (cmd == "box") { + if (lmp->comm->me == 0) + utils::logmesg(lmp, "\nThe 'box' command has been removed and will be ignored\n\n"); + return; } else if (cmd == "reset_ids") { if (lmp->comm->me == 0) utils::logmesg(lmp, "\n'reset_ids' has been renamed to 'reset_atom_ids'\n\n"); diff --git a/src/deprecated.h b/src/deprecated.h index e2e7e396e9..2eb334b3ef 100644 --- a/src/deprecated.h +++ b/src/deprecated.h @@ -14,6 +14,7 @@ #ifdef COMMAND_CLASS // clang-format off CommandStyle(DEPRECATED,Deprecated); +CommandStyle(box,Deprecated); CommandStyle(reset_ids,Deprecated); CommandStyle(kim_init,Deprecated); CommandStyle(kim_interactions,Deprecated); diff --git a/src/domain.cpp b/src/domain.cpp index 6ed91d0ea8..c51f222483 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -82,7 +82,6 @@ Domain::Domain(LAMMPS *lmp) : Pointers(lmp) minzlo = minzhi = 0.0; triclinic = 0; - tiltsmall = 1; boxlo[0] = boxlo[1] = boxlo[2] = -0.5; boxhi[0] = boxhi[1] = boxhi[2] = 0.5; @@ -218,10 +217,8 @@ void Domain::set_initial_box(int expandflag) if ((fabs(xy/(boxhi[0]-boxlo[0])) > 0.5 && xperiodic) || (fabs(xz/(boxhi[0]-boxlo[0])) > 0.5 && xperiodic) || (fabs(yz/(boxhi[1]-boxlo[1])) > 0.5 && yperiodic)) { - if (tiltsmall) - error->all(FLERR,"Triclinic box skew is too large"); - else if (comm->me == 0) - error->warning(FLERR,"Triclinic box skew is large"); + if (comm->me == 0) + error->warning(FLERR,"Triclinic box skew is large. LAMMPS will run inefficiently."); } } @@ -1874,26 +1871,6 @@ void Domain::set_boundary(int narg, char **arg, int flag) } } -/* ---------------------------------------------------------------------- - set domain attributes -------------------------------------------------------------------------- */ - -void Domain::set_box(int narg, char **arg) -{ - if (narg < 1) utils::missing_cmd_args(FLERR, "box", error); - - int iarg = 0; - while (iarg < narg) { - if (strcmp(arg[iarg],"tilt") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "box tilt", error); - if (strcmp(arg[iarg+1],"small") == 0) tiltsmall = 1; - else if (strcmp(arg[iarg+1],"large") == 0) tiltsmall = 0; - else error->all(FLERR,"Unknown box tilt argument: {}", arg[iarg+1]); - iarg += 2; - } else error->all(FLERR,"Unknown box keyword: {}", arg[iarg]); - } -} - /* ---------------------------------------------------------------------- print box info, orthogonal or triclinic ------------------------------------------------------------------------- */ diff --git a/src/domain.h b/src/domain.h index 8830c5d051..7d3194ccc9 100644 --- a/src/domain.h +++ b/src/domain.h @@ -41,7 +41,6 @@ class Domain : protected Pointers { // 3 = shrink-wrap non-per w/ min int triclinic; // 0 = orthog box, 1 = triclinic - int tiltsmall; // 1 if limit tilt, else 0 // orthogonal box @@ -141,7 +140,6 @@ class Domain : protected Pointers { const std::vector get_region_by_style(const std::string &) const; const std::vector get_region_list(); void set_boundary(int, char **, int); - void set_box(int, char **); void print_box(const std::string &); void boundary_string(char *); diff --git a/src/input.cpp b/src/input.cpp index 5128f0261f..a3c363b639 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -772,7 +772,6 @@ int Input::execute_command() else if (!strcmp(command,"bond_style")) bond_style(); else if (!strcmp(command,"bond_write")) bond_write(); else if (!strcmp(command,"boundary")) boundary(); - else if (!strcmp(command,"box")) box(); else if (!strcmp(command,"comm_modify")) comm_modify(); else if (!strcmp(command,"comm_style")) comm_style(); else if (!strcmp(command,"compute")) compute(); @@ -1411,15 +1410,6 @@ void Input::boundary() /* ---------------------------------------------------------------------- */ -void Input::box() -{ - if (domain->box_exist) - error->all(FLERR,"Box command after simulation box is defined"); - domain->set_box(narg,arg); -} - -/* ---------------------------------------------------------------------- */ - void Input::comm_modify() { comm->modify_params(narg,arg); diff --git a/src/input.h b/src/input.h index de4c393693..ebd7c13331 100644 --- a/src/input.h +++ b/src/input.h @@ -94,7 +94,6 @@ class Input : protected Pointers { void bond_style(); void bond_write(); void boundary(); - void box(); void comm_modify(); void comm_style(); void compute(); From 356827df12a5fe28350356d4cef4c7bc7e21a3fb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 21 Nov 2022 14:04:58 -0500 Subject: [PATCH 20/30] update documentation for removal of box command --- doc/src/Commands_all.rst | 1 - doc/src/Commands_category.rst | 1 - doc/src/Howto_triclinic.rst | 5 -- doc/src/box.rst | 70 ------------------------- doc/src/commands_list.rst | 1 - doc/src/create_box.rst | 25 ++++----- doc/src/fix_nh_uef.rst | 97 ++++++++++++++++++----------------- doc/src/read_data.rst | 24 +++++---- 8 files changed, 77 insertions(+), 147 deletions(-) delete mode 100644 doc/src/box.rst diff --git a/doc/src/Commands_all.rst b/doc/src/Commands_all.rst index d7b1609619..01cb6812fc 100644 --- a/doc/src/Commands_all.rst +++ b/doc/src/Commands_all.rst @@ -31,7 +31,6 @@ table above. * :doc:`bond_style ` * :doc:`bond_write ` * :doc:`boundary ` - * :doc:`box ` * :doc:`change_box ` * :doc:`clear ` * :doc:`comm_modify ` diff --git a/doc/src/Commands_category.rst b/doc/src/Commands_category.rst index 4a08d040b7..7ac747e8fc 100644 --- a/doc/src/Commands_category.rst +++ b/doc/src/Commands_category.rst @@ -25,7 +25,6 @@ Setup simulation box: :columns: 4 * :doc:`boundary ` - * :doc:`box ` * :doc:`change_box ` * :doc:`create_box ` * :doc:`dimension ` diff --git a/doc/src/Howto_triclinic.rst b/doc/src/Howto_triclinic.rst index 5e952709c9..dd0a949f68 100644 --- a/doc/src/Howto_triclinic.rst +++ b/doc/src/Howto_triclinic.rst @@ -144,11 +144,6 @@ does not change the atom positions due to non-periodicity. In this mode, if you tilt the system to extreme angles, the simulation will simply become inefficient, due to the highly skewed simulation box. -The limitation on not creating a simulation box with a tilt factor -skewing the box more than half the distance of the parallel box length -can be overridden via the :doc:`box ` command. Setting the *tilt* -keyword to *large* allows any tilt factors to be specified. - Box flips that may occur using the :doc:`fix deform ` or :doc:`fix npt ` commands can be turned off using the *flip no* option with either of the commands. diff --git a/doc/src/box.rst b/doc/src/box.rst deleted file mode 100644 index 096a171249..0000000000 --- a/doc/src/box.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. index:: box - -box command -=========== - -Syntax -"""""" - -.. code-block:: LAMMPS - - box keyword value ... - -* one or more keyword/value pairs may be appended -* keyword = *tilt* - - .. parsed-literal:: - - *tilt* value = *small* or *large* - -Examples -"""""""" - -.. code-block:: LAMMPS - - box tilt large - box tilt small - -Description -""""""""""" - -Set attributes of the simulation box. - -For triclinic (non-orthogonal) simulation boxes, the *tilt* keyword -allows simulation domains to be created with arbitrary tilt factors, -e.g. via the :doc:`create_box ` or -:doc:`read_data ` commands. Tilt factors determine how -skewed the triclinic box is; see the :doc:`Howto triclinic ` page for a discussion of triclinic -boxes in LAMMPS. - -LAMMPS normally requires that no tilt factor can skew the box more -than half the distance of the parallel box length, which is the first -dimension in the tilt factor (x for xz). If *tilt* is set to -*small*, which is the default, then an error will be -generated if a box is created which exceeds this limit. If *tilt* -is set to *large*, then no limit is enforced. You can create -a box with any tilt factors you wish. - -Note that if a simulation box has a large tilt factor, LAMMPS will run -less efficiently, due to the large volume of communication needed to -acquire ghost atoms around a processor's irregular-shaped sub-domain. -For extreme values of tilt, LAMMPS may also lose atoms and generate an -error. - -Restrictions -"""""""""""" - -This command cannot be used after the simulation box is defined by a -:doc:`read_data ` or :doc:`create_box ` command or -:doc:`read_restart ` command. - -Related commands -"""""""""""""""" - -none - - -Default -""""""" - -The default value is tilt = small. diff --git a/doc/src/commands_list.rst b/doc/src/commands_list.rst index ee032bfd9e..571b569213 100644 --- a/doc/src/commands_list.rst +++ b/doc/src/commands_list.rst @@ -13,7 +13,6 @@ Commands bond_style bond_write boundary - box change_box clear comm_modify diff --git a/doc/src/create_box.rst b/doc/src/create_box.rst index 889a57605d..f930ecea83 100644 --- a/doc/src/create_box.rst +++ b/doc/src/create_box.rst @@ -66,20 +66,21 @@ positive or negative values and are called "tilt factors" because they are the amount of displacement applied to faces of an originally orthogonal box to transform it into the parallelepiped. -By default, a *prism* region used with the create_box command must -have tilt factors :math:`(xy,xz,yz)` that do not skew the box more than half +By default, a *prism* region used with the create_box command must have +tilt factors :math:`(xy,xz,yz)` that do not skew the box more than half the distance of the parallel box length. For example, if :math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x` -box length is 10 and the :math:`xy` tilt factor must be between :math:`-5` and -:math:`5`. Similarly, both :math:`xz` and :math:`yz` must be between -:math:`-(x_\text{hi}-x_\text{lo})/2` and :math:`+(y_\text{hi}-y_\text{lo})/2`. -Note that this is not a limitation, since if the maximum tilt factor is 5 (as -in this example), then configurations with tilt :math:`= \dots, -15`, -:math:`-5`, :math:`5`, :math:`15`, :math:`25, \dots` -are all geometrically equivalent. If you wish to define a box with tilt -factors that exceed these limits, you can use the :doc:`box tilt ` -command, with a setting of *large*\ ; a setting of *small* is the -default. +box length is 10 and the :math:`xy` tilt factor must be between +:math:`-5` and :math:`5`. Similarly, both :math:`xz` and :math:`yz` +must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and +:math:`+(y_\text{hi}-y_\text{lo})/2`. Note that this is not a +limitation, since if the maximum tilt factor is 5 (as in this example), +then configurations with tilt :math:`= \dots, -15`, :math:`-5`, +:math:`5`, :math:`15`, :math:`25, \dots` are all geometrically +equivalent. Simulations with large tilt factors will run inefficiently, +since they require more ghost atoms and thus more communication. With +very large tilt factors, LAMMPS will eventually produce incorrect +trajectories and stop with errors due to lost atoms or similar. See the :doc:`Howto triclinic ` page for a geometric description of triclinic boxes, as defined by LAMMPS, and diff --git a/doc/src/fix_nh_uef.rst b/doc/src/fix_nh_uef.rst index 83cf88b11f..cf20d56ce7 100644 --- a/doc/src/fix_nh_uef.rst +++ b/doc/src/fix_nh_uef.rst @@ -44,19 +44,23 @@ Examples Description """"""""""" -This fix can be used to simulate non-equilibrium molecular dynamics -(NEMD) under diagonal flow fields, including uniaxial and bi-axial -flow. Simulations under continuous extensional flow may be carried -out for an indefinite amount of time. It is an implementation of the -boundary conditions from :ref:`(Dobson) `, and also uses numerical +These fixes can be used to simulate non-equilibrium molecular dynamics +(NEMD) under diagonal flow fields, including uniaxial and bi-axial flow. +Simulations under continuous extensional flow may be carried out for an +indefinite amount of time. It is an implementation of the boundary +conditions from :ref:`(Dobson) `, and also uses numerical lattice reduction as was proposed by :ref:`(Hunt) `. The lattice -reduction algorithm is from :ref:`(Semaev) `. The fix is intended for -simulations of homogeneous flows, and integrates the SLLOD equations -of motion, originally proposed by Hoover and Ladd (see :ref:`(Evans and Morriss) `). Additional detail about this implementation can be -found in :ref:`(Nicholson and Rutledge) `. +reduction algorithm is from :ref:`(Semaev) `. The fix is +intended for simulations of homogeneous flows, and integrates the SLLOD +equations of motion, originally proposed by Hoover and Ladd (see +:ref:`(Evans and Morriss) `). Additional detail about this +implementation can be found in :ref:`(Nicholson and Rutledge) +`. Note that NEMD simulations of a continuously strained system can be -performed using the :doc:`fix deform `, :doc:`fix nvt/sllod `, and :doc:`compute temp/deform ` commands. +performed using the :doc:`fix deform `, :doc:`fix nvt/sllod +`, and :doc:`compute temp/deform ` +commands. The applied flow field is set by the *eps* keyword. The values *edot_x* and *edot_y* correspond to the strain rates in the xx and yy @@ -73,11 +77,11 @@ to -(*edot_x* + *edot_y*). The boundary conditions require a simulation box that does not have a consistent alignment relative to the applied flow field. Since LAMMPS utilizes an upper-triangular simulation box, it is not possible to -express the evolving simulation box in the same coordinate system as -the flow field. This fix keeps track of two coordinate systems: the -flow frame, and the upper triangular LAMMPS frame. The coordinate -systems are related to each other through the QR decomposition, as is -illustrated in the image below. +express the evolving simulation box in the same coordinate system as the +flow field. These fixes keep track of two coordinate systems: the flow +frame, and the upper triangular LAMMPS frame. The coordinate systems are +related to each other through the QR decomposition, as is illustrated in +the image below. .. image:: JPG/uef_frames.jpg :align: center @@ -99,12 +103,12 @@ using the dump command will be in the LAMMPS frame unless the ---------- Temperature control is achieved with the default Nose-Hoover style -thermostat documented in :doc:`fix npt `. When this fix is +thermostat documented in :doc:`fix nvt `. When this fix is active, only the peculiar velocity of each atom is stored, defined as -the velocity relative to the streaming velocity. This is in contrast -to :doc:`fix nvt/sllod `, which uses a lab-frame -velocity, and removes the contribution from the streaming velocity in -order to compute the temperature. +the velocity relative to the streaming velocity. This is in contrast to +:doc:`fix nvt/sllod `, which uses a lab-frame velocity, +and removes the contribution from the streaming velocity in order to +compute the temperature. Pressure control is achieved using the default Nose-Hoover barostat documented in :doc:`fix npt `. There are two ways to control the @@ -156,8 +160,8 @@ The following commands will not work: ---------- -These fix computes a temperature and pressure each timestep. To do -this, it creates its own computes of style "temp/uef" and +These fixes compute a temperature and pressure each timestep. To do +this, they create their own computes of style "temp/uef" and "pressure/uef", as if one of these two sets of commands had been issued: @@ -169,18 +173,19 @@ issued: compute fix-ID_temp all temp/uef compute fix-ID_press all pressure/uef fix-ID_temp -See the :doc:`compute temp/uef ` and :doc:`compute pressure/uef ` commands for details. Note -that the IDs of the new computes are the fix-ID + underscore + "temp" -or fix_ID + underscore + "press". +See the :doc:`compute temp/uef ` and :doc:`compute +pressure/uef ` commands for details. Note that +the IDs of the new computes are the fix-ID + underscore + "temp" or +fix_ID + underscore + "press". Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" The fix writes the state of all the thermostat and barostat variables, -as well as the cumulative strain applied, to :doc:`binary restart files `. See the :doc:`read_restart ` command -for info on how to re-specify a fix in an input script that reads a -restart file, so that the operation of the fix continues in an -uninterrupted fashion. +as well as the cumulative strain applied, to :doc:`binary restart files +`. See the :doc:`read_restart ` command for info +on how to re-specify a fix in an input script that reads a restart file, +so that the operation of the fix continues in an uninterrupted fashion. .. note:: @@ -189,43 +194,41 @@ uninterrupted fashion. not contain the cumulative applied strain, will this keyword be necessary. -This fix can be used with the :doc:`fix_modify ` *temp* and -*press* options. The temperature and pressure computes used must be of -type *temp/uef* and *pressure/uef*\ . +These fixes can be used with the :doc:`fix_modify ` *temp* +and *press* options. The temperature and pressure computes used must be +of type *temp/uef* and *pressure/uef*\ . -This fix computes the same global scalar and vector quantities as :doc:`fix npt `. +These fixes compute the same global scalar and vector quantities as +:doc:`fix nvt andnpt `. -The fix is not invoked during :doc:`energy minimization `. +These fixes are not invoked during :doc:`energy minimization `. Restrictions """""""""""" -This fix is part of the UEF package. It is only enabled if LAMMPS -was built with that package. See the :doc:`Build package ` page for more info. +These fixes are part of the UEF package. They are only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` page for more info. Due to requirements of the boundary conditions, when the *strain* keyword is set to zero (or unset), the initial simulation box must be cubic and have style triclinic. If the box is initially of type ortho, use :doc:`change_box ` before invoking the fix. -.. note:: - - When resuming from restart files, you may need to use :doc:`box tilt - large ` since LAMMPS has internal criteria from lattice - reduction that are not the same as the criteria in the numerical - lattice reduction algorithm. - Related commands """""""""""""""" -:doc:`fix nvt `, :doc:`fix nvt/sllod `, :doc:`compute temp/uef `, :doc:`compute pressure/uef `, :doc:`dump cfg/uef ` +:doc:`fix nvt `, :doc:`fix npt `, `fix nvt/sllod +:doc:`, `compute temp/uef `, +:doc::doc:`compute pressure/uef `, `dump cfg/uef +:doc:` Default """"""" -The default keyword values specific to this fix are exy = xyz, strain -= 0 0. The remaining defaults are the same as for :doc:`fix npt ` -except tchain = 1. The reason for this change is given in +The default keyword values specific to these fixes are exy = xyz, strain += 0 0. The remaining defaults are the same as for :doc:`fix nvt or npt +` except tchain = 1. The reason for this change is given in :doc:`fix nvt/sllod `. ---------- diff --git a/doc/src/read_data.rst b/doc/src/read_data.rst index 961b92c83e..453208ed3f 100644 --- a/doc/src/read_data.rst +++ b/doc/src/read_data.rst @@ -340,16 +340,20 @@ and are called "tilt factors" because they are the amount of displacement applied to faces of an originally orthogonal box to transform it into the parallelepiped. -By default, the tilt factors (xy,xz,yz) can not skew the box more than -half the distance of the corresponding parallel box length. For -example, if xlo = 2 and xhi = 12, then the x box length is 10 and the -xy tilt factor must be between -5 and 5. Similarly, both xz and yz -must be between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not -a limitation, since if the maximum tilt factor is 5 (as in this -example), then configurations with tilt = ..., -15, -5, 5, 15, 25, -... are all geometrically equivalent. If you wish to define a box -with tilt factors that exceed these limits, you can use the :doc:`box tilt ` command, with a setting of *large*\ ; a setting of -*small* is the default. +The tilt factors (xy,xz,yz) should not skew the box more than half the +distance of the corresponding parallel box length. For example, if +:math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x` +box length is 10 and the :math:`xy` tilt factor must be between +:math:`-5` and :math:`5`. Similarly, both :math:`xz` and :math:`yz` +must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and +:math:`+(y_\text{hi}-y_\text{lo})/2`. Note that this is not a +limitation, since if the maximum tilt factor is 5 (as in this example), +then configurations with tilt :math:`= \dots, -15`, :math:`-5`, +:math:`5`, :math:`15`, :math:`25, \dots` are all geometrically +equivalent. Simulations with large tilt factors will run inefficiently, +since they require more ghost atoms and thus more communication. With +very large tilt factors, LAMMPS will eventually produce incorrect +trajectories and stop with errors due to lost atoms or similar. See the :doc:`Howto triclinic ` page for a geometric description of triclinic boxes, as defined by LAMMPS, and From e9ec915e45a4de24fb8049e3ee80928bbea9ff1e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 21 Nov 2022 17:59:29 -0500 Subject: [PATCH 21/30] document removal of "box" command. --- doc/src/Commands_removed.rst | 17 +++++++++++++---- tools/coding_standard/versiontags.py | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index 1000d11e29..20698e2708 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -2,10 +2,11 @@ Removed commands and packages ============================= This page lists LAMMPS commands and packages that have been removed from -the distribution and provides suggestions for alternatives or replacements. -LAMMPS has special dummy styles implemented, that will stop LAMMPS and -print a suitable error message in most cases, when a style/command is used -that has been removed. +the distribution and provides suggestions for alternatives or +replacements. LAMMPS has special dummy styles implemented, that will +stop LAMMPS and print a suitable error message in most cases, when a +style/command is used that has been removed or will replace the command +with the direct alternative (if available) and print a warning. Fix ave/spatial and fix ave/spatial/sphere ------------------------------------------ @@ -17,6 +18,14 @@ ways through the :doc:`compute chunk/atom ` command and then averaging is done using :doc:`fix ave/chunk `. Please refer to the :doc:`chunk HOWTO ` section for an overview. +Box command +----------- + +.. deprecated:: TBD + +The *box* command has been removed and the LAMMPS code changed so it won't +be needed. If present, LAMMPS will ignore the command and print a warning. + Reset_ids command ----------------- diff --git a/tools/coding_standard/versiontags.py b/tools/coding_standard/versiontags.py index 75a37dfbcc..0b4597046f 100644 --- a/tools/coding_standard/versiontags.py +++ b/tools/coding_standard/versiontags.py @@ -36,7 +36,7 @@ patterns: """ def check_pending_tag(f): - pattern = re.compile(r'^ *\.\. +version(changed|added):: +TBD') + pattern = re.compile(r'^ *\.\. +(version(changed|added)|deprecated):: +TBD') last_line = "\n" lineno = 1 errors = set() From a098b16030493b0473282c138677df9771273d6f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 21 Nov 2022 22:17:15 -0500 Subject: [PATCH 22/30] expand valid range of bond/angle style gaussian. update docs and tests. --- doc/src/angle_gaussian.rst | 14 ++- doc/src/bond_gaussian.rst | 21 ++-- src/EXTRA-MOLECULE/angle_gaussian.cpp | 20 +-- src/EXTRA-MOLECULE/bond_gaussian.cpp | 17 ++- .../force-styles/tests/bond-gaussian.yaml | 115 +++++++++--------- 5 files changed, 101 insertions(+), 86 deletions(-) diff --git a/doc/src/angle_gaussian.rst b/doc/src/angle_gaussian.rst index 88f17092bc..6b102a693b 100644 --- a/doc/src/angle_gaussian.rst +++ b/doc/src/angle_gaussian.rst @@ -27,8 +27,10 @@ The *gaussian* angle style uses the potential: E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-2(\theta-\theta_{i})^2}{w_i^2}\right) \right) -This analytical form is a suitable potential for obtaining -mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) ` +This analytical form is a suitable potential for obtaining mesoscale +effective force fields which can reproduce target atomistic +distributions :ref:`(Milano) `. + The following coefficients must be defined for each angle type via the :doc:`angle_coeff ` command as in the example above, or in the data file or restart files read by the :doc:`read_data ` @@ -36,12 +38,12 @@ or :doc:`read_restart ` commands: * :math:`T` temperature at which the potential was derived * :math:`n` (integer >=1) -* :math:`A_1` (-) -* :math:`w_1` (-) +* :math:`A_1` (> 0, radians) +* :math:`w_1` (> 0, radians) * :math:`\theta_1` (degrees) * ... -* :math:`A_n` (-) -* :math:`w_n` (-) +* :math:`A_n` (> 0, radians) +* :math:`w_n` (> 0, radians) * :math:`\theta_n` (degrees) diff --git a/doc/src/bond_gaussian.rst b/doc/src/bond_gaussian.rst index 6ee15248ad..74e5b973eb 100644 --- a/doc/src/bond_gaussian.rst +++ b/doc/src/bond_gaussian.rst @@ -27,8 +27,9 @@ The *gaussian* bond style uses the potential: E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-2(r-r_{i})^2}{w_i^2}\right)\right) -This analytical form is a suitable potential for obtaining -mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) ` +This analytical form is a suitable potential for obtaining mesoscale +effective force fields which can reproduce target atomistic +distributions :ref:`(Milano) ` The following coefficients must be defined for each bond type via the :doc:`bond_coeff ` command as in the example above, or in @@ -37,21 +38,21 @@ or :doc:`read_restart ` commands: * :math:`T` temperature at which the potential was derived * :math:`n` (integer >=1) -* :math:`A_1` (-) -* :math:`w_1` (-) -* :math:`r_1` (length) +* :math:`A_1` (> 0, distance) +* :math:`w_1` (> 0, distance) +* :math:`r_1` (>= 0, distance) * ... -* :math:`A_n` (-) -* :math:`w_n` (-) -* :math:`r_n` (length) +* :math:`A_n` (> 0, distance) +* :math:`w_n` (> 0, distance) +* :math:`r_n` (>= 0, distance) Restrictions """""""""""" This bond style can only be used if LAMMPS was built with the -EXTRA-MOLECULE package. See the :doc:`Build package ` doc -page for more info. +EXTRA-MOLECULE package. See the :doc:`Build package ` +doc page for more info. Related commands """""""""""""""" diff --git a/src/EXTRA-MOLECULE/angle_gaussian.cpp b/src/EXTRA-MOLECULE/angle_gaussian.cpp index a474195af5..7290cb70cc 100644 --- a/src/EXTRA-MOLECULE/angle_gaussian.cpp +++ b/src/EXTRA-MOLECULE/angle_gaussian.cpp @@ -28,8 +28,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMAL 0.001 -#define SMALL 1.0e-8 +static constexpr double SMALL = 0.001; +static constexpr double SMALLG = 2.0e-308; /* ---------------------------------------------------------------------- */ @@ -112,7 +112,7 @@ void AngleGaussian::compute(int eflag, int vflag) if (c < -1.0) c = -1.0; s = sqrt(1.0 - c * c); - if (s < SMAL) s = SMAL; + if (s < SMALL) s = SMALL; s = 1.0 / s; // force & energy @@ -123,13 +123,15 @@ void AngleGaussian::compute(int eflag, int vflag) for (int i = 0; i < nterms[type]; i++) { dtheta = theta - theta0[type][i]; prefactor = (alpha[type][i] / (width[type][i] * sqrt(MY_PI2))); - exponent = -2 * dtheta * dtheta / (width[type][i] * width[type][i]); + exponent = -2.0 * dtheta * dtheta / (width[type][i] * width[type][i]); g_i = prefactor * exp(exponent); sum_g_i += g_i; sum_numerator += g_i * dtheta / (width[type][i] * width[type][i]); } - if (sum_g_i < SMALL) sum_g_i = SMALL; + // avoid overflow + if (sum_g_i < sum_numerator * SMALLG) sum_g_i = sum_numerator * SMALLG; + if (eflag) eangle = -(force->boltz * angle_temperature[type]) * log(sum_g_i); // I should check about the sign of this expression @@ -198,14 +200,16 @@ void AngleGaussian::allocate() void AngleGaussian::coeff(int narg, char **arg) { - if (narg < 6) error->all(FLERR, "Incorrect args for angle coefficients"); + if (narg < 6) utils::missing_cmd_args(FLERR, "angle_coeff", error); int ilo, ihi; utils::bounds(FLERR, arg[0], 1, atom->nangletypes, ilo, ihi, error); double angle_temperature_one = utils::numeric(FLERR, arg[1], false, lmp); int n = utils::inumeric(FLERR, arg[2], false, lmp); - if (narg != 3 * n + 3) error->all(FLERR, "Incorrect args for angle coefficients"); + if (n < 1) error->all(FLERR, "Invalid angle style gaussian value for n: {}", n); + + if (narg != 3 * n + 3) utils::missing_cmd_args(FLERR, "angle_coeff", error); if (!allocated) allocate(); @@ -223,7 +227,9 @@ void AngleGaussian::coeff(int narg, char **arg) theta0[i] = new double[n]; for (int j = 0; j < n; j++) { alpha[i][j] = utils::numeric(FLERR, arg[3 + 3 * j], false, lmp); + if (alpha[i][j] <= 0.0) error->all(FLERR, "Invalid value for A_{}: {}", j, alpha[i][j]); width[i][j] = utils::numeric(FLERR, arg[4 + 3 * j], false, lmp); + if (width[i][j] <= 0.0) error->all(FLERR, "Invalid value for w_{}: {}", j, width[i][j]); theta0[i][j] = utils::numeric(FLERR, arg[5 + 3 * j], false, lmp) * MY_PI / 180.0; setflag[i] = 1; } diff --git a/src/EXTRA-MOLECULE/bond_gaussian.cpp b/src/EXTRA-MOLECULE/bond_gaussian.cpp index 655a5e557f..baca0b6e1a 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.cpp +++ b/src/EXTRA-MOLECULE/bond_gaussian.cpp @@ -27,7 +27,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 1.0e-10 +static constexpr double SMALL = 2.0e-308; /* ---------------------------------------------------------------------- */ @@ -92,15 +92,16 @@ void BondGaussian::compute(int eflag, int vflag) for (int i = 0; i < nterms[type]; i++) { dr = r - r0[type][i]; prefactor = (alpha[type][i] / (width[type][i] * sqrt(MY_PI2))); - exponent = -2 * dr * dr / (width[type][i] * width[type][i]); + exponent = -2.0 * dr * dr / (width[type][i] * width[type][i]); g_i = prefactor * exp(exponent); sum_g_i += g_i; sum_numerator += g_i * dr / (width[type][i] * width[type][i]); } - // force & energy - if (sum_g_i < SMALL) sum_g_i = SMALL; + // avoid overflow + if (sum_g_i < sum_numerator * SMALL) sum_g_i = sum_numerator * SMALL; + // force & energy if (r > 0.0) fbond = -4.0 * (force->boltz * bond_temperature[type]) * (sum_numerator / sum_g_i) / r; else @@ -153,14 +154,15 @@ void BondGaussian::allocate() void BondGaussian::coeff(int narg, char **arg) { - if (narg < 6) error->all(FLERR, "Incorrect args for bond coefficients"); + if (narg < 6) utils::missing_cmd_args(FLERR, "bond_coeff", error); int ilo, ihi; utils::bounds(FLERR, arg[0], 1, atom->nbondtypes, ilo, ihi, error); double bond_temp_one = utils::numeric(FLERR, arg[1], false, lmp); int n = utils::inumeric(FLERR, arg[2], false, lmp); - if (narg != 3 * n + 3) error->all(FLERR, "Incorrect args for bond coefficients"); + if (n < 1) error->all(FLERR, "Invalid bond style gaussian value for n: {}", n); + if (narg != 3 * n + 3) utils::missing_cmd_args(FLERR, "bond_coeff", error); if (!allocated) allocate(); @@ -176,8 +178,11 @@ void BondGaussian::coeff(int narg, char **arg) r0[i] = new double[n]; for (int j = 0; j < n; j++) { alpha[i][j] = utils::numeric(FLERR, arg[3 + 3 * j], false, lmp); + if (alpha[i][j] <= 0.0) error->all(FLERR, "Invalid value for A_{}: {}", j, alpha[i][j]); width[i][j] = utils::numeric(FLERR, arg[4 + 3 * j], false, lmp); + if (width[i][j] <= 0.0) error->all(FLERR, "Invalid value for w_{}: {}", j, width[i][j]); r0[i][j] = utils::numeric(FLERR, arg[5 + 3 * j], false, lmp); + if (r0[i][j] <= 0.0) error->all(FLERR, "Invalid value for r0_{}: {}", j, r0[i][j]); setflag[i] = 1; } count++; diff --git a/unittest/force-styles/tests/bond-gaussian.yaml b/unittest/force-styles/tests/bond-gaussian.yaml index e6e259b32a..e85d14fba3 100644 --- a/unittest/force-styles/tests/bond-gaussian.yaml +++ b/unittest/force-styles/tests/bond-gaussian.yaml @@ -1,6 +1,7 @@ --- -lammps_version: 17 Feb 2022 -date_generated: Fri Mar 18 22:17:50 2022 +lammps_version: 3 Nov 2022 +tags: generated +date_generated: Mon Nov 21 21:52:14 2022 epsilon: 1e-12 skip_tests: prerequisites: ! | @@ -19,70 +20,70 @@ bond_coeff: ! | equilibrium: 5 1.45 1.37 1.61 2.45 2.85 extract: ! "" natoms: 29 -init_energy: 194.9780382216324 -init_stress: ! |- - -2.4024989684355553e+01 -3.8521513996632500e+01 -1.0851224048428129e+01 1.2562604359180053e+01 1.3677283516797356e+01 4.3206731051245653e+00 +init_energy: 4638.6541482649545 +init_stress: ! |2- + 1.8359565872923367e+03 1.1685750963854580e+03 2.2772768476286187e+03 9.0129794950892881e+02 4.5431504423505157e+02 5.8087298633263757e+01 init_forces: ! |2 - 1 -1.7791337913398690e+00 -5.2745532425491986e+00 -1.9333096530222391e+00 - 2 7.8999913149794128e-293 6.5010830500033665e-293 -9.2980646648301405e-293 + 1 -2.6166538657523114e+02 -2.1914087860149658e+02 3.0394540432772982e+02 + 2 2.5988625278389128e+02 2.1386632535894739e+02 -3.0587871398075208e+02 3 2.4197086198752562e+01 -1.2911571268065043e+01 -1.2153319969868038e+01 4 -3.5002110421521651e+00 9.8124800657318079e-01 -2.4834895420880554e+00 5 -8.7934593181833831e-01 -1.3513167937313169e+00 4.4900533574430685e+00 - 6 -1.9224405194016612e+01 1.9525383982308810e+01 1.1251608936919853e+01 - 7 2.6580140740726381e-131 -1.3633763941647238e-130 -6.8018769495047054e-130 - 8 1.4462104594211977e+00 -1.2568711136582216e+00 7.3991622652588918e-01 - 9 1.2099652614352605e-300 1.3032068217192395e-300 5.3545155818429412e-300 + 6 -3.1076039081690663e+01 8.0316024755627467e+01 3.1453576435533836e+02 + 7 1.1851633887674051e+01 -6.0790640773318657e+01 -3.0328415541841849e+02 + 8 -9.7268051920198786e+01 -1.0757818812527627e+02 -4.3610490313202450e+02 + 9 9.8714262379619981e+01 1.0632131701161805e+02 4.3684481935855041e+02 10 1.8282673669124623e+01 -6.7893037436650294e-01 1.0475143579619905e+01 11 -9.5181855408160265e-01 -2.3577388099405021e+00 -3.8685744266264179e+00 12 -1.1761121482537199e+01 -1.1840691118605761e+01 8.9587696830512531e+00 13 3.9348879648968196e+00 -1.5566010373601853e+00 -7.3956496855403397e-02 14 -1.5580348688551586e+00 3.1703943744370217e-01 -4.0404862787928506e+00 15 -1.0483110905921594e-01 4.0280962447539723e+00 1.4354708657826634e+00 - 16 -8.1019563183350432e+00 1.2376506087197068e+01 -1.2797826282089627e+01 - 17 -9.6845722000297944e-125 6.7536031200741501e-125 2.5693469616608658e-124 - 18 5.0042083741224387e-291 3.2014176819490257e-291 6.0624670892900674e-291 - 19 -5.0042167517970120e-291 -3.2014265949545701e-291 -6.0624614384187022e-291 - 20 8.3776745733654894e-297 8.9130055442585484e-297 -5.6508713648842736e-297 - 21 5.0373663727594610e-296 1.1676684296048456e-296 8.1823232295641435e-296 - 22 -5.1857245273845906e-296 -1.2567112623130275e-296 -8.1358238807042024e-296 - 23 1.4835815462512912e-297 8.9042832708182009e-298 -4.6499348859940937e-298 - 24 6.5124799547612842e-295 -1.0579059065054233e-295 5.4786730014873485e-295 - 25 -6.5176382072810523e-295 1.0492453069148130e-295 -5.4792561056911984e-295 - 26 5.1582525197680877e-298 8.6605995906103569e-298 5.8310420384964103e-299 - 27 -1.5677247388593395e-295 -1.8232011058192963e-295 -3.8038051984576450e-296 - 28 -3.2483754529644398e-299 1.3960035208884715e-299 -2.1978823514938368e-299 - 29 1.5680495764046360e-295 1.8230615054672073e-295 3.8060030808091389e-296 -run_energy: 194.9688901668597 -run_stress: ! |- - -2.4084235648269384e+01 -3.8596877573973650e+01 -1.0971337511117875e+01 1.2627485208541385e+01 1.3589007837800324e+01 4.4518443361436777e+00 + 16 9.5774980977037984e+01 -6.0062791522626100e+01 -2.8838655412045694e+02 + 17 -1.0387693729537303e+02 7.2439297609823171e+01 2.7558872783836733e+02 + 18 -1.7290589161548496e+01 -1.3179016873564919e+02 5.1586854877010114e+02 + 19 -2.6734331696703003e+02 -1.7103176128697325e+02 -3.2387856688053216e+02 + 20 2.8463390612857853e+02 3.0282193002262244e+02 -1.9198998188956895e+02 + 21 -1.3595471277589198e+02 -1.6879175531311859e+02 5.0125731248385966e+02 + 22 -2.4366036541914886e+02 -5.9048783595141884e+01 -3.8227595956741493e+02 + 23 3.7961507819504084e+02 2.2784053890826047e+02 -1.1898135291644472e+02 + 24 1.1246873070738241e+02 -4.4920523111996721e+02 2.6503426336875481e+02 + 25 -3.4676635177604459e+02 5.5824357785083230e+01 -2.9151996318153743e+02 + 26 2.3429762106866218e+02 3.9338087333488397e+02 2.6485699812782624e+01 + 27 6.4413473322621542e+01 -4.9624245043025996e+02 1.7125457908457409e+02 + 28 -3.5866433728099020e+02 1.5413756350253817e+02 -2.4267577083822729e+02 + 29 2.9425086395836865e+02 3.4210488692772179e+02 7.1421191753653204e+01 +run_energy: 4618.705952125554 +run_stress: ! |2- + 1.8397902589595653e+03 1.1724487863122602e+03 2.2782759319716897e+03 9.0366417527896033e+02 4.5574598799336053e+02 5.9672689485998390e+01 run_forces: ! |2 - 1 -1.7800915383536471e+00 -5.2662174638478936e+00 -1.9311810441446928e+00 - 2 9.1200716389742962e-293 7.5205784896271243e-293 -1.0695855329374170e-292 - 3 2.4188774318819682e+01 -1.2910730800434983e+01 -1.2139174094227805e+01 - 4 -3.4905807721708837e+00 9.7423802985974728e-01 -2.4827066691937869e+00 - 5 -8.7826414385513407e-01 -1.3507945719900971e+00 4.4847167409249762e+00 - 6 -1.9198711248640532e+01 1.9501343007070176e+01 1.1259539605043198e+01 - 7 4.0781500460380220e-131 -2.0934766207882755e-130 -1.0411772151605081e-129 - 8 1.4035232720380466e+00 -1.2181526258990241e+00 7.2552718656771575e-01 - 9 1.4877356608185432e-300 1.5947265521745610e-300 6.5759628249586203e-300 - 10 1.8340705485218969e+01 -7.9602516938863732e-01 1.0533434146468263e+01 - 11 -9.4713695434855716e-01 -2.3455928036230933e+00 -3.8477133980837270e+00 - 12 -1.1753841378581289e+01 -1.1839528950721563e+01 8.9356024501072664e+00 - 13 3.9289793641831325e+00 -1.5460483921060724e+00 -7.3078087497547045e-02 - 14 -1.5515717239320088e+00 3.1019421574866657e-01 -4.0233193667488729e+00 - 15 -1.1312732638809736e-01 4.0290637402465492e+00 1.4439547691915919e+00 - 16 -8.1486573539896803e+00 1.2458251785086224e+01 -1.2885602238406578e+01 - 17 -8.5522515805489358e-125 5.9749160301406998e-125 2.2702237597406565e-124 - 18 2.5382954259673697e-291 1.6282298856292719e-291 3.0672317979786876e-291 - 19 -2.5383561239391082e-291 -1.6282944740463789e-291 -3.0671910793881731e-291 - 20 6.0697971738423079e-296 6.4588417107197222e-296 -4.0718590514496707e-296 - 21 3.1636825215784415e-296 7.4502521705718285e-297 5.0914419661316058e-296 - 22 -3.2413538119513539e-296 -7.9143971383319095e-297 -5.0672219270657353e-296 - 23 7.7671290372912634e-298 4.6414496776008138e-298 -2.4220039065870281e-298 - 24 1.1528889554480086e-295 -1.8584672369333140e-296 9.7061626349018667e-296 - 25 -1.1544439355951613e-295 1.8323577266329387e-296 -9.7079719071127095e-296 - 26 1.5549801471527681e-298 2.6109510300375245e-298 1.8092722108425850e-299 - 27 -1.0502291554946705e-295 -1.2226612584790533e-295 -2.5738911540368265e-296 - 28 -1.8342692926757559e-299 7.8715078988712594e-300 -1.2385711775450889e-299 - 29 1.0504125824239381e-295 1.2225825434000646e-295 2.5751297252143716e-296 + 1 -2.6123247146110606e+02 -2.1919307263372883e+02 3.0237555508171170e+02 + 2 2.5946481985769248e+02 2.1395800468042034e+02 -3.0429922592566089e+02 + 3 2.4104808395110172e+01 -1.2865854073142392e+01 -1.2083882913387207e+01 + 4 -3.4905809559903060e+00 9.7423804418107429e-01 -2.4827069981835161e+00 + 5 -8.7826407777385485e-01 -1.3507948021059526e+00 4.4847171151687837e+00 + 6 -3.1019740486745086e+01 8.0315470917380424e+01 3.1385270827879697e+02 + 7 1.1855512952124167e+01 -6.0859047439602143e+01 -3.0267942216207678e+02 + 8 -9.7139239668224732e+01 -1.0689115264867354e+02 -4.3492337910287688e+02 + 9 9.8566534070284817e+01 1.0565669621976006e+02 4.3567718006870649e+02 + 10 1.8332862345492853e+01 -7.7546447474524260e-01 1.0479498854248916e+01 + 11 -9.4713700870724160e-01 -2.3455930111707550e+00 -3.8477135785159731e+00 + 12 -1.1753839309353248e+01 -1.1839526860590677e+01 8.9356008317611710e+00 + 13 3.9289793641852362e+00 -1.5460483921084245e+00 -7.3078087496756511e-02 + 14 -1.5515717239340792e+00 3.1019421574772799e-01 -4.0233193667504690e+00 + 15 -1.1312732638930625e-01 4.0290637402491614e+00 1.4439547691937924e+00 + 16 9.5584985328403420e+01 -6.0034377008082046e+01 -2.8814471939578698e+02 + 17 -1.0371253029506924e+02 7.2457263526211193e+01 2.7530823253114755e+02 + 18 -1.6734173006461219e+01 -1.3081888486925550e+02 5.1373496074962804e+02 + 19 -2.6689091522155491e+02 -1.7109178558868115e+02 -3.2299073527643651e+02 + 20 2.8362508822801612e+02 3.0191067045793665e+02 -1.9074422547319156e+02 + 21 -1.3584009311603779e+02 -1.6741847021957338e+02 4.9993505971275158e+02 + 22 -2.4342958636297089e+02 -5.9309435913166546e+01 -3.8123078015208006e+02 + 23 3.7926967947900869e+02 2.2672790613273992e+02 -1.1870427956067151e+02 + 24 1.1263526323552287e+02 -4.4826736307529882e+02 2.6440276469069875e+02 + 25 -3.4626849198042515e+02 5.5368312528579615e+01 -2.9134479497708327e+02 + 26 2.3363322874490228e+02 3.9289905054671920e+02 2.6942030286384533e+01 + 27 6.4905554146281361e+01 -4.9580198077236491e+02 1.7016719858461872e+02 + 28 -3.5803172302507875e+02 1.5409360889763499e+02 -2.4188045098816568e+02 + 29 2.9312616887879739e+02 3.4170837187472995e+02 7.1713252403546960e+01 ... From a8f45846a723fb3d691ddb5540fa99bff99e6b3f Mon Sep 17 00:00:00 2001 From: ssande7 <1731652+ssande7@users.noreply.github.com> Date: Tue, 22 Nov 2022 16:30:55 +1000 Subject: [PATCH 23/30] Respect thermo_modify warn always --- src/error.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/error.cpp b/src/error.cpp index bf0f56d7a6..b351c64ad1 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -122,7 +122,8 @@ void Error::universe_one(const std::string &file, int line, const std::string &s void Error::universe_warn(const std::string &file, int line, const std::string &str) { ++numwarn; - if ((numwarn > maxwarn) || (allwarn > maxwarn) || (maxwarn < 0)) return; + if (maxwarn < 0) return; + if (maxwarn != 0 && ((numwarn > maxwarn) || (allwarn > maxwarn))) return; if (universe->uscreen) fmt::print(universe->uscreen,"WARNING on proc {}: {} ({}:{})\n", universe->me,str,truncpath(file),line); @@ -254,7 +255,8 @@ void Error::_one(const std::string &file, int line, fmt::string_view format, void Error::warning(const std::string &file, int line, const std::string &str) { ++numwarn; - if ((numwarn > maxwarn) || (allwarn > maxwarn) || (maxwarn < 0)) return; + if (maxwarn < 0) return; + if (maxwarn != 0 && ((numwarn > maxwarn) || (allwarn > maxwarn))) return; std::string mesg = fmt::format("WARNING: {} ({}:{})\n", str,truncpath(file),line); if (screen) fputs(mesg.c_str(),screen); From 00b474eee5dcba64075898987ff684f71ca3607d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 22 Nov 2022 05:46:53 -0500 Subject: [PATCH 24/30] simplify --- src/error.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/error.cpp b/src/error.cpp index b351c64ad1..c49bc6ce58 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -122,8 +122,7 @@ void Error::universe_one(const std::string &file, int line, const std::string &s void Error::universe_warn(const std::string &file, int line, const std::string &str) { ++numwarn; - if (maxwarn < 0) return; - if (maxwarn != 0 && ((numwarn > maxwarn) || (allwarn > maxwarn))) return; + if ((maxwarn != 0) && ((numwarn > maxwarn) || (allwarn > maxwarn) || (maxwarn < 0))) return; if (universe->uscreen) fmt::print(universe->uscreen,"WARNING on proc {}: {} ({}:{})\n", universe->me,str,truncpath(file),line); @@ -255,8 +254,7 @@ void Error::_one(const std::string &file, int line, fmt::string_view format, void Error::warning(const std::string &file, int line, const std::string &str) { ++numwarn; - if (maxwarn < 0) return; - if (maxwarn != 0 && ((numwarn > maxwarn) || (allwarn > maxwarn))) return; + if ((maxwarn != 0) && ((numwarn > maxwarn) || (allwarn > maxwarn) || (maxwarn < 0))) return; std::string mesg = fmt::format("WARNING: {} ({}:{})\n", str,truncpath(file),line); if (screen) fputs(mesg.c_str(),screen); From 3a49b69dee468b0be239961d9c3660fd6860dd45 Mon Sep 17 00:00:00 2001 From: Tim Teichmann Date: Wed, 23 Nov 2022 15:14:12 +0100 Subject: [PATCH 25/30] Fix SPH shock tube 2d example input deck --- examples/PACKAGES/sph/shock_tube/shock2d.lmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PACKAGES/sph/shock_tube/shock2d.lmp b/examples/PACKAGES/sph/shock_tube/shock2d.lmp index 32cfd8067b..c63b537bc7 100644 --- a/examples/PACKAGES/sph/shock_tube/shock2d.lmp +++ b/examples/PACKAGES/sph/shock_tube/shock2d.lmp @@ -22,7 +22,7 @@ pair_style hybrid/overlay sph/rhosum 1 sph/idealgas pair_coeff * * sph/rhosum 4.0 pair_coeff * * sph/idealgas 0.75 4.0 -compute rhoatom all shp/rho/atom +compute rhoatom all sph/rho/atom compute ieatom all sph/e/atom compute esph all reduce sum c_ieatom # total internal energy compute ke all ke From ed756f50777ca98e0d13c9eb4f037a5d2a167437 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Nov 2022 12:23:42 -0500 Subject: [PATCH 26/30] fix bug parsing arguments in nm/cut/coul/* pair styles --- src/EXTRA-PAIR/pair_nm_cut.cpp | 4 ++-- src/EXTRA-PAIR/pair_nm_cut_coul_cut.cpp | 7 +++---- src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/EXTRA-PAIR/pair_nm_cut.cpp b/src/EXTRA-PAIR/pair_nm_cut.cpp index 9a39c091b9..18b5810abc 100644 --- a/src/EXTRA-PAIR/pair_nm_cut.cpp +++ b/src/EXTRA-PAIR/pair_nm_cut.cpp @@ -18,8 +18,6 @@ #include "pair_nm_cut.h" -#include -#include #include "atom.h" #include "comm.h" #include "force.h" @@ -28,6 +26,8 @@ #include "memory.h" #include "error.h" +#include +#include using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/EXTRA-PAIR/pair_nm_cut_coul_cut.cpp b/src/EXTRA-PAIR/pair_nm_cut_coul_cut.cpp index 569fba970f..adc6d5a058 100644 --- a/src/EXTRA-PAIR/pair_nm_cut_coul_cut.cpp +++ b/src/EXTRA-PAIR/pair_nm_cut_coul_cut.cpp @@ -223,8 +223,7 @@ void PairNMCutCoulCut::settings(int narg, char **arg) void PairNMCutCoulCut::coeff(int narg, char **arg) { - if (narg < 6 || narg > 8) - error->all(FLERR,"Incorrect args for pair coefficients"); + if (narg < 6 || narg > 8) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -238,8 +237,8 @@ void PairNMCutCoulCut::coeff(int narg, char **arg) double cut_lj_one = cut_lj_global; double cut_coul_one = cut_coul_global; - if (narg >= 7) cut_coul_one = cut_lj_one = utils::numeric(FLERR,arg[4],false,lmp); - if (narg == 8) cut_coul_one = utils::numeric(FLERR,arg[5],false,lmp); + if (narg >= 7) cut_coul_one = cut_lj_one = utils::numeric(FLERR,arg[6],false,lmp); + if (narg == 8) cut_coul_one = utils::numeric(FLERR,arg[7],false,lmp); int count = 0; for (int i = ilo; i <= ihi; i++) { diff --git a/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp b/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp index 464e647227..13171c87dd 100644 --- a/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp +++ b/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp @@ -277,7 +277,7 @@ void PairNMCutCoulLong::coeff(int narg, char **arg) double mm_one = utils::numeric(FLERR,arg[5],false,lmp); double cut_lj_one = cut_lj_global; - if (narg == 7) cut_lj_one = utils::numeric(FLERR,arg[4],false,lmp); + if (narg == 7) cut_lj_one = utils::numeric(FLERR,arg[6],false,lmp); int count = 0; for (int i = ilo; i <= ihi; i++) { From b2f680e4bc88d48701b3145072dd055c52de89d8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Nov 2022 12:24:29 -0500 Subject: [PATCH 27/30] update unit tests for pair style bugfixes --- .../tests/mol-pair-nm_cut_coul_cut.yaml | 128 +++++++++--------- .../tests/mol-pair-nm_cut_coul_long.yaml | 126 ++++++++--------- .../tests/mol-pair-nm_cut_coul_table.yaml | 126 ++++++++--------- 3 files changed, 190 insertions(+), 190 deletions(-) diff --git a/unittest/force-styles/tests/mol-pair-nm_cut_coul_cut.yaml b/unittest/force-styles/tests/mol-pair-nm_cut_coul_cut.yaml index e10d630408..dc09f6242b 100644 --- a/unittest/force-styles/tests/mol-pair-nm_cut_coul_cut.yaml +++ b/unittest/force-styles/tests/mol-pair-nm_cut_coul_cut.yaml @@ -1,7 +1,7 @@ --- -lammps_version: 17 Feb 2022 -date_generated: Fri Mar 18 22:17:35 2022 -epsilon: 5e-13 +lammps_version: 3 Nov 2022 +date_generated: Wed Nov 23 12:21:08 2022 +epsilon: 2e-12 skip_tests: prerequisites: ! | atom full @@ -33,72 +33,72 @@ extract: ! | nn 2 mm 2 natoms: 29 -init_vdwl: 184.28678589160327 -init_coul: -135.3222017722983 +init_vdwl: 184.287044185624 +init_coul: -137.87932620011787 init_stress: ! |2- - 5.1099535412443879e+02 4.9267015856417487e+02 1.0972826650625757e+03 -1.9179119371088936e+02 -3.5985836516943652e+00 1.6890666491875683e+02 + 5.0652399415102809e+02 4.9736621002026737e+02 1.0945023745733126e+03 -1.9301832865224381e+02 1.8762224642096914e-01 1.7162238049862481e+02 init_forces: ! |2 - 1 -3.3237622364758597e+00 6.7713954997753760e+01 8.3067188829067177e+01 - 2 3.9621008700560012e+01 3.0171229889604540e+01 -4.8145332639882334e+01 - 3 -3.5364644744971940e+01 -9.6539501255026011e+01 -3.5029548782863188e+01 - 4 -5.3015461109817663e-01 1.6289587757514515e-01 -7.2423374326431356e-01 - 5 -5.9482314827521177e-01 3.6012564229132904e-01 7.9763541784878933e-01 - 6 -2.0517469128198312e+02 2.3641073678086124e+02 2.8403110395134235e+02 - 7 1.4287738299209584e+01 -8.3042673557006708e+01 -4.2404138177988466e+02 - 8 3.4432579872496632e+01 -2.3062478463316680e+01 1.0196257581358861e+02 - 9 2.1504316475975024e+01 1.5520947058320779e+01 8.8721284584619994e+01 - 10 1.3156277736186865e+02 -1.5256269193303697e+02 -4.7528776206099316e+01 - 11 -1.1549608580120421e+00 7.0751627315313514e-01 -1.2306532477500820e+00 - 12 8.2305373454600836e+00 2.8332067643232048e+00 -1.6285990412442382e+00 - 13 2.2152653863898988e-01 -2.5442239617884921e-01 -1.7821156240885982e-02 - 14 -1.4864243248803288e+00 4.9691633196181018e-01 -6.5591950906426355e-01 - 15 1.9536455977505707e-01 4.6553673584615141e-01 -7.3823010387388632e-01 - 16 1.1408068052592634e+02 -8.3363365075734180e+01 -2.9358101411834207e+02 - 17 -1.1530269288646562e+02 8.4705249217102178e+01 2.9252691476710731e+02 - 18 1.2607896146319246e+00 6.6515350853351460e+00 -9.8941034529134715e+00 - 19 1.6182226631729169e+00 -1.6594283813607693e+00 5.6553541079235838e+00 - 20 -3.4521573063242741e+00 -3.1789176785999720e+00 4.2591620921699045e+00 - 21 -1.5230523428245663e+01 -1.8827777303529409e+01 4.5543598985413915e+01 - 22 -2.5331360436022880e+01 -5.4301878248720961e+00 -3.5349975516643234e+01 - 23 4.0112972843495513e+01 2.2949867135700025e+01 -9.6970781334064569e+00 + 1 -3.5396501309981954e+00 6.6944364611585584e+01 8.3059219120660856e+01 + 2 3.9621008700560019e+01 3.0171229889604543e+01 -4.8145332639882334e+01 + 3 -3.5309288471259912e+01 -9.6592073986045776e+01 -3.5059191984527324e+01 + 4 -5.3015461109817674e-01 1.6289587757514493e-01 -7.2423374326431356e-01 + 5 -5.9482314827521177e-01 3.6012564229132926e-01 7.9763541784878955e-01 + 6 -2.0517469128198312e+02 2.3641073678086121e+02 2.8403110395134229e+02 + 7 1.4287738299209584e+01 -8.3042673557006694e+01 -4.2404138177988466e+02 + 8 3.4432579872496632e+01 -2.3062478463316697e+01 1.0196257581358860e+02 + 9 2.1504316475975028e+01 1.5520947058320786e+01 8.8721284584619994e+01 + 10 1.3157989652366749e+02 -1.5248002606214345e+02 -4.7534699865938585e+01 + 11 -1.1549608580120423e+00 7.0751627315313514e-01 -1.2306532477500822e+00 + 12 7.2669942071383717e+00 2.0827730884953919e+00 -9.0483043978096866e-01 + 13 2.2152653863898994e-01 -2.5442239617884937e-01 -1.7821156240885788e-02 + 14 -1.4864243248803288e+00 4.9691633196180973e-01 -6.5591950906426388e-01 + 15 1.9536455977505737e-01 4.6553673584615107e-01 -7.3823010387388610e-01 + 16 1.1427944925864990e+02 -8.2676440560459525e+01 -2.9356712075009648e+02 + 17 -1.1530269288646562e+02 8.4705249217102164e+01 2.9252691476710731e+02 + 18 1.2607896146319251e+00 6.6515350853351460e+00 -9.8941034529134697e+00 + 19 1.6182226631729160e+00 -1.6594283813607693e+00 5.6553541079235821e+00 + 20 -3.4521573063242741e+00 -3.1789176785999724e+00 4.2591620921699054e+00 + 21 -1.5285879701957692e+01 -1.8775204572509647e+01 4.5573242187078066e+01 + 22 -2.5331360436022880e+01 -5.4301878248720943e+00 -3.5349975516643234e+01 + 23 4.0112972843495520e+01 2.2949867135700025e+01 -9.6970781334064569e+00 24 6.6473466694181287e+00 -4.2720688813774373e+01 2.5475101119120744e+01 25 -3.3278855135511762e+01 2.8247579501663811e+00 -2.7042493390233950e+01 26 2.5709355480930235e+01 3.9014887914531776e+01 2.6900053403817590e+00 - 27 1.0035511306793698e+01 -4.5249946085110551e+01 1.8136503701331897e+01 - 28 -3.9953070294941519e+01 1.3962092508592026e+01 -2.6231057257176037e+01 - 29 3.0657392434855581e+01 3.0940622604427993e+01 8.6697893689665211e+00 -run_vdwl: 182.40565476045293 -run_coul: -135.3428229317011 + 27 1.0999054445115412e+01 -4.4499512409282737e+01 1.7412735099868630e+01 + 28 -3.9953070294941519e+01 1.3962092508592027e+01 -2.6231057257176040e+01 + 29 3.0657392434855577e+01 3.0940622604427993e+01 8.6697893689665193e+00 +run_vdwl: 182.40627457531505 +run_coul: -137.89878255208336 run_stress: ! |2- - 5.0949331883645084e+02 4.9079274612266465e+02 1.0779924919705209e+03 -1.8978874005409725e+02 -2.3414288930535676e+00 1.6680086396779814e+02 + 5.0502284487804911e+02 4.9549254038893065e+02 1.0752131218453601e+03 -1.9101402318764428e+02 1.4448370451390913e+00 1.6951693900962570e+02 run_forces: ! |2 - 1 -3.0222512967714557e+00 6.7548505252631742e+01 8.2368596588550062e+01 - 2 3.9249247328631569e+01 2.9923489231546629e+01 -4.7570871930892892e+01 - 3 -3.5327226055520775e+01 -9.6102750283993871e+01 -3.4890589040756382e+01 - 4 -5.2696455605069259e-01 1.6213860296922811e-01 -7.2430457126338410e-01 - 5 -5.9400169113171586e-01 3.6136912208033589e-01 7.9530286564994024e-01 - 6 -2.0274433560773628e+02 2.3284786713406370e+02 2.7401951211582013e+02 - 7 1.4053553144930220e+01 -8.1102084254822103e+01 -4.1219124551744085e+02 - 8 3.2718675446198795e+01 -2.1551046804011083e+01 1.0097962112112319e+02 - 9 2.1323856224128093e+01 1.5222193966786529e+01 8.7834851199368813e+01 - 10 1.3130268818222987e+02 -1.5219622702094762e+02 -4.7515342312770102e+01 - 11 -1.1541261444752642e+00 7.1381752451384339e-01 -1.2230561924848902e+00 - 12 8.2264000446385346e+00 2.8299212831552727e+00 -1.6299507774035358e+00 - 13 2.1792987819368359e-01 -2.5267817510362128e-01 -1.9040070778804069e-02 - 14 -1.4863827602148627e+00 4.9691341825375590e-01 -6.4929126993868946e-01 - 15 1.9516446161304488e-01 4.6409461483290748e-01 -7.4066880359248788e-01 - 16 1.1245063534493042e+02 -8.2380964098503739e+01 -2.8939941367324343e+02 - 17 -1.1367888495468203e+02 8.3736413965239862e+01 2.8833591319216583e+02 - 18 1.2131213413750925e+00 6.6087858905244472e+00 -9.8443684782076062e+00 - 19 1.6546892701962139e+00 -1.6335518483372100e+00 5.6675264381026587e+00 - 20 -3.4406155231052553e+00 -3.1608955862760086e+00 4.2021081664244280e+00 - 21 -1.5380842837515630e+01 -1.8832663749099712e+01 4.5639191584555739e+01 - 22 -2.5437261250740086e+01 -5.4851555768258553e+00 -3.5409747254511750e+01 - 23 4.0368809860056317e+01 2.3008461599616822e+01 -9.7324663526701478e+00 - 24 7.1229399666679027e+00 -4.3444645139181588e+01 2.6085435505612736e+01 - 25 -3.4137823679541398e+01 2.8946896673905611e+00 -2.7774080649897098e+01 - 26 2.6093689208699011e+01 3.9671650206452789e+01 2.8124886686652082e+00 - 27 1.0189565500107717e+01 -4.5358416256293751e+01 1.8141445825723800e+01 - 28 -4.0123206182868742e+01 1.4015089779144132e+01 -2.6301107890805710e+01 - 29 3.0672957337757669e+01 3.0995677534193614e+01 8.7335515148952023e+00 + 1 -3.2370828229989943e+00 6.6780774771428867e+01 8.2360566992843957e+01 + 2 3.9248669659652556e+01 2.9923101710814461e+01 -4.7570156486162247e+01 + 3 -3.5272405495891725e+01 -9.6156898011190052e+01 -3.4920858821878639e+01 + 4 -5.2696307806019427e-01 1.6213782144861011e-01 -7.2430297098202856e-01 + 5 -5.9400132072875222e-01 3.6136881819958322e-01 7.9530174833943768e-01 + 6 -2.0274433109253258e+02 2.3284785750828254e+02 2.7401951291433039e+02 + 7 1.4053553193905296e+01 -8.1102076691627317e+01 -4.1219125509985423e+02 + 8 3.2718449282709940e+01 -2.1550864085726676e+01 1.0097970359571399e+02 + 9 2.1323849598698548e+01 1.5222193680732165e+01 8.7834847272654116e+01 + 10 1.3131984144877813e+02 -1.5211385896116542e+02 -4.7521267129265915e+01 + 11 -1.1541259655305498e+00 7.1381836660091746e-01 -1.2230539280652590e+00 + 12 7.2630852175005964e+00 2.0798061880380749e+00 -9.0633631991268937e-01 + 13 2.1792142656044974e-01 -2.5267485273151963e-01 -1.9040900180560982e-02 + 14 -1.4863809886398240e+00 4.9691277039032383e-01 -6.4928587974626595e-01 + 15 1.9516412586808574e-01 4.6408847437290568e-01 -7.4067142611860370e-01 + 16 1.1264998906650452e+02 -8.1693726909197835e+01 -2.8938652282069330e+02 + 17 -1.1367940494205878e+02 8.3736184613376594e+01 2.8833692617302631e+02 + 18 1.2131256191519586e+00 6.6087841118467869e+00 -9.8443636765781175e+00 + 19 1.6546867296048959e+00 -1.6335521580158148e+00 5.6675246971307507e+00 + 20 -3.4406162815803181e+00 -3.1608941993411719e+00 4.2021061175034422e+00 + 21 -1.5436168448451303e+01 -1.8780058922578032e+01 4.5668818732530838e+01 + 22 -2.5437256643599888e+01 -5.4851610900512116e+00 -3.5409746057405300e+01 + 23 4.0368779518163102e+01 2.3008433743607917e+01 -9.7324579117657564e+00 + 24 7.1229403171558960e+00 -4.3444642379685369e+01 2.6085431366299698e+01 + 25 -3.4137823381351410e+01 2.8946870622451546e+00 -2.7774076485443004e+01 + 26 2.6093689507109417e+01 3.9671649820489279e+01 2.8124906008412616e+00 + 27 1.1152133422843132e+01 -4.4609063038241878e+01 1.7417265391517304e+01 + 28 -4.0123145645809892e+01 1.4014953690801475e+01 -2.6300937504650808e+01 + 29 3.0673827973027787e+01 3.0996718146876649e+01 8.7338378159710270e+00 ... diff --git a/unittest/force-styles/tests/mol-pair-nm_cut_coul_long.yaml b/unittest/force-styles/tests/mol-pair-nm_cut_coul_long.yaml index b3c77b862c..8bc69e85f4 100644 --- a/unittest/force-styles/tests/mol-pair-nm_cut_coul_long.yaml +++ b/unittest/force-styles/tests/mol-pair-nm_cut_coul_long.yaml @@ -1,6 +1,6 @@ --- -lammps_version: 17 Feb 2022 -date_generated: Fri Mar 18 22:17:35 2022 +lammps_version: 3 Nov 2022 +date_generated: Wed Nov 23 12:21:08 2022 epsilon: 7.5e-13 skip_tests: prerequisites: ! | @@ -39,72 +39,72 @@ extract: ! | mm 2 cut_coul 0 natoms: 29 -init_vdwl: 184.28678589160327 +init_vdwl: 184.287044185624 init_coul: 225.82181512692495 init_stress: ! |2- - 5.1535561642229106e+02 5.0058662653359033e+02 1.1159625282020661e+03 -1.8397466102442883e+02 -2.0220636765660638e+00 1.7544854550792292e+02 + 5.1535625659153879e+02 5.0058721227699067e+02 1.1159628277106565e+03 -1.8397448571567824e+02 -2.0224936628921029e+00 1.7544839728662993e+02 init_forces: ! |2 - 1 -3.0654526282473653e+00 6.6615864099533127e+01 8.2943973715838268e+01 - 2 3.9068866013811309e+01 2.9455617832505151e+01 -4.7591021495719247e+01 - 3 -3.5280048507313708e+01 -9.6589706921967377e+01 -3.5074530442718626e+01 - 4 -6.6290078829733745e-01 1.7069498108397532e-01 -6.5698974844320646e-01 - 5 -7.3666031116459629e-01 3.1866503947918778e-01 8.0597153193899140e-01 - 6 -2.0569141405030027e+02 2.3627567491105717e+02 2.8443813098936624e+02 - 7 1.4533357696957466e+01 -8.2901362570668283e+01 -4.2411675286042595e+02 - 8 3.4572734326141102e+01 -2.2709011166557751e+01 1.0190201388959704e+02 - 9 2.1302134918689685e+01 1.5382116555420744e+01 8.8486496066808485e+01 - 10 1.3163065394972341e+02 -1.5255187760681488e+02 -4.7566872183542166e+01 - 11 -1.0673114564038046e+00 6.0655281622864732e-01 -1.2545988594461333e+00 - 12 7.7809585200300058e+00 3.1160398793201316e+00 -1.4701791888504216e+00 - 13 5.3014557250212346e-01 -2.5075115207640880e-01 -1.8692015200156273e-01 - 14 -1.3123789187002088e+00 4.0626415990577358e-01 -7.3662740015731798e-01 - 15 3.2883564820812672e-01 4.2874288932750715e-01 -7.8340375997477496e-01 - 16 1.1459556574512777e+02 -8.2820743414973677e+01 -2.9444590351113385e+02 - 17 -1.1537978255115650e+02 8.4825361701504292e+01 2.9365401995966459e+02 - 18 3.5910667886316144e-01 4.7762805533526835e+00 -7.8633657965049659e+00 - 19 1.9899962970618248e+00 -7.2139551998620521e-01 5.5216058955830674e+00 - 20 -2.9130824841870520e+00 -3.9872076040781708e+00 4.1253374345150986e+00 - 21 -1.5875835643064573e+01 -1.5889863208570942e+01 4.7172258432278930e+01 - 22 -2.5015657684773860e+01 -7.0704088600117272e+00 -3.6174324111002065e+01 - 23 4.0477622003880207e+01 2.3373134480751212e+01 -1.0495870801503438e+01 + 1 -3.0654561493791848e+00 6.6615850470254358e+01 8.2943973912197166e+01 + 2 3.9068866013811295e+01 2.9455617832505151e+01 -4.7591021495719239e+01 + 3 -3.5280084914007190e+01 -9.6589672345953218e+01 -3.5074510946988802e+01 + 4 -6.6290078829733778e-01 1.7069498108397516e-01 -6.5698974844320646e-01 + 5 -7.3666031116459629e-01 3.1866503947918762e-01 8.0597153193899174e-01 + 6 -2.0569141405030027e+02 2.3627567491105717e+02 2.8443813098936630e+02 + 7 1.4533357696957466e+01 -8.2901362570668297e+01 -4.2411675286042589e+02 + 8 3.4572734326141102e+01 -2.2709011166557758e+01 1.0190201388959706e+02 + 9 2.1302134918689685e+01 1.5382116555420737e+01 8.8486496066808471e+01 + 10 1.3163065501356638e+02 -1.5255187246967631e+02 -4.7566872551658555e+01 + 11 -1.0673114564038049e+00 6.0655281622864710e-01 -1.2545988594461335e+00 + 12 7.7810444548679740e+00 3.1161068077157283e+00 -1.4702437390869596e+00 + 13 5.3014557250212357e-01 -2.5075115207640869e-01 -1.8692015200156262e-01 + 14 -1.3123789187002091e+00 4.0626415990577341e-01 -7.3662740015731820e-01 + 15 3.2883564820812672e-01 4.2874288932750720e-01 -7.8340375997477496e-01 + 16 1.1459556820241663e+02 -8.2820734922833438e+01 -2.9444590333937629e+02 + 17 -1.1537978255115650e+02 8.4825361701504292e+01 2.9365401995966465e+02 + 18 3.5910667886316239e-01 4.7762805533526844e+00 -7.8633657965049650e+00 + 19 1.9899962970618255e+00 -7.2139551998620499e-01 5.5216058955830682e+00 + 20 -2.9130824841870520e+00 -3.9872076040781712e+00 4.1253374345150977e+00 + 21 -1.5875799236371092e+01 -1.5889897784585100e+01 4.7172238936549107e+01 + 22 -2.5015657684773856e+01 -7.0704088600117272e+00 -3.6174324111002072e+01 + 23 4.0477622003880199e+01 2.3373134480751215e+01 -1.0495870801503438e+01 24 7.4996662349142147e+00 -4.3426856761904077e+01 2.2815324534810056e+01 25 -3.3807147976811798e+01 2.9988027310973613e+00 -2.7577372367283733e+01 - 26 2.5746888892709649e+01 4.0174454060022633e+01 4.1505216253578832e+00 - 27 1.0861995979992932e+01 -4.6328822142297405e+01 1.8883010243779164e+01 - 28 -4.0470174882584459e+01 1.5020795051869365e+01 -2.6766823901697389e+01 - 29 2.9999319404392626e+01 3.1302945187447804e+01 7.8628922608669090e+00 -run_vdwl: 182.40255929507265 -run_coul: 225.80523122237145 + 26 2.5746888892709649e+01 4.0174454060022640e+01 4.1505216253578832e+00 + 27 1.0861910045154971e+01 -4.6328889070692995e+01 1.8883074794015705e+01 + 28 -4.0470174882584466e+01 1.5020795051869364e+01 -2.6766823901697389e+01 + 29 2.9999319404392619e+01 3.1302945187447808e+01 7.8628922608669081e+00 +run_vdwl: 182.4028175410934 +run_coul: 225.8052312234039 run_stress: ! |2- - 5.1384631551491782e+02 4.9870417055031982e+02 1.0966342093912015e+03 -1.8197324336578851e+02 -7.7105078556388151e-01 1.7333789878387816e+02 + 5.1384695555524797e+02 4.9870475622702440e+02 1.0966345088415544e+03 -1.8197306815785140e+02 -7.7148065920433828e-01 1.7333775064278868e+02 run_forces: ! |2 - 1 -2.7683190788522740e+00 6.6449095933852917e+01 8.2247798763054263e+01 - 2 3.8702194737017720e+01 2.9212212087553127e+01 -4.7019606503568262e+01 - 3 -3.5243454712977965e+01 -9.6154953753202179e+01 -3.4936504547233788e+01 - 4 -6.5977694961123645e-01 1.7011044348999105e-01 -6.5636000725760957e-01 - 5 -7.3566520752177100e-01 3.2004552783623724e-01 8.0428279587216267e-01 - 6 -2.0326269571945986e+02 2.3271299846462981e+02 2.7442711029956843e+02 - 7 1.4300022426556877e+01 -8.0959802783401827e+01 -4.1226588339681336e+02 - 8 3.2858865815794836e+01 -2.1199692716643838e+01 1.0091081448967174e+02 - 9 2.1122712553671928e+01 1.5084944366082448e+01 8.7605507483986727e+01 - 10 1.3136998924075732e+02 -1.5218480626807963e+02 -4.7552578947927799e+01 - 11 -1.0661815519248918e+00 6.1243966630893298e-01 -1.2462619432373649e+00 - 12 7.7760226803888877e+00 3.1127903917502313e+00 -1.4744683960464942e+00 - 13 5.2674567614856260e-01 -2.4917750370694214e-01 -1.8723948852408964e-01 - 14 -1.3120520030459297e+00 4.0614121490067551e-01 -7.2914653810616858e-01 - 15 3.2867638556545775e-01 4.2750422420803547e-01 -7.8475645386864112e-01 - 16 1.1296204426736116e+02 -8.1834725178344044e+01 -2.9024712497341085e+02 - 17 -1.1375160210673371e+02 8.3851461683740141e+01 2.8944627577285223e+02 - 18 3.0738271507674780e-01 4.7275452047652715e+00 -7.8225407640491564e+00 - 19 2.0274564843313856e+00 -6.9333851982762851e-01 5.5367198586609998e+00 - 20 -2.8992094355719793e+00 -3.9662518101373307e+00 4.0716447585419049e+00 - 21 -1.6026802334504676e+01 -1.5883942063853187e+01 4.7256123626066532e+01 - 22 -2.5118526633549543e+01 -7.1302229414472507e+00 -3.6226155173751806e+01 - 23 4.0731190500597606e+01 2.3426593800522156e+01 -1.0527512154067734e+01 - 24 7.9759015134187958e+00 -4.4140032709411031e+01 2.3421942671527756e+01 - 25 -3.4663427794559517e+01 3.0656502790867206e+00 -2.8305771158291158e+01 - 26 2.6127821098995337e+01 4.0822834309889892e+01 4.2748874027969199e+00 - 27 1.1011144648995060e+01 -4.6436392031462617e+01 1.8878782007839565e+01 - 28 -4.0634772085359785e+01 1.5071357955251854e+01 -2.6829753884337045e+01 - 29 3.0014314868995513e+01 3.1359612725649200e+01 7.9297744000519685e+00 + 1 -2.7683225482283809e+00 6.6449082401023148e+01 8.2247798981789643e+01 + 2 3.8702194726711895e+01 2.9212212080708927e+01 -4.7019606490893651e+01 + 3 -3.5243491151797656e+01 -9.6154919282511642e+01 -3.4936485094808461e+01 + 4 -6.5977694998018921e-01 1.7011044357157604e-01 -6.5636000759126256e-01 + 5 -7.3566520753163211e-01 3.2004552769599226e-01 8.0428279621249554e-01 + 6 -2.0326269572309553e+02 2.3271299846832454e+02 2.7442711030170454e+02 + 7 1.4300022426979604e+01 -8.0959802783845490e+01 -4.1226588339625141e+02 + 8 3.2858865805990142e+01 -2.1199692705942155e+01 1.0091081449262803e+02 + 9 2.1122712553325698e+01 1.5084944366414280e+01 8.7605507484381420e+01 + 10 1.3136999033009897e+02 -1.5218480112815018e+02 -4.7552579328976627e+01 + 11 -1.0661815520486129e+00 6.1243966623508861e-01 -1.2462619432216921e+00 + 12 7.7761085744513680e+00 3.1128572757481363e+00 -1.4745329169765931e+00 + 13 5.2674567689395169e-01 -2.4917750397088440e-01 -1.8723948847901425e-01 + 14 -1.3120520033096184e+00 4.0614121494992139e-01 -7.2914653857642009e-01 + 15 3.2867638550341521e-01 4.2750422476572436e-01 -7.8475645363096747e-01 + 16 1.1296204673281163e+02 -8.1834716679121783e+01 -2.9024712481379936e+02 + 17 -1.1375160211353307e+02 8.3851461680840046e+01 2.8944627578500337e+02 + 18 3.0738271486215951e-01 4.7275452050710545e+00 -7.8225407641446587e+00 + 19 2.0274564844173879e+00 -6.9333851990195527e-01 5.5367198587099775e+00 + 20 -2.8992094355377156e+00 -3.9662518102337199e+00 4.0716447585813889e+00 + 21 -1.6026765950606343e+01 -1.5883976653313633e+01 4.7256104141803178e+01 + 22 -2.5118526637643978e+01 -7.1302229387234384e+00 -3.6226155173665845e+01 + 23 4.0731190519921540e+01 2.3426593817372833e+01 -1.0527512159329465e+01 + 24 7.9759015134016398e+00 -4.4140032709414839e+01 2.3421942671485997e+01 + 25 -3.4663427794542088e+01 3.0656502790778966e+00 -2.8305771158233721e+01 + 26 2.6127821099004976e+01 4.0822834309892897e+01 4.2748874028091679e+00 + 27 1.1011058821774000e+01 -4.6436458847462333e+01 1.8878846579362040e+01 + 28 -4.0634772090200137e+01 1.5071357967752173e+01 -2.6829753899915300e+01 + 29 3.0014314791906596e+01 3.1359612633147766e+01 7.9297743740230970e+00 ... diff --git a/unittest/force-styles/tests/mol-pair-nm_cut_coul_table.yaml b/unittest/force-styles/tests/mol-pair-nm_cut_coul_table.yaml index f53a664d2a..c6c13ec92a 100644 --- a/unittest/force-styles/tests/mol-pair-nm_cut_coul_table.yaml +++ b/unittest/force-styles/tests/mol-pair-nm_cut_coul_table.yaml @@ -1,6 +1,6 @@ --- -lammps_version: 17 Feb 2022 -date_generated: Fri Mar 18 22:17:35 2022 +lammps_version: 3 Nov 2022 +date_generated: Wed Nov 23 12:21:08 2022 epsilon: 5e-12 skip_tests: gpu prerequisites: ! | @@ -39,72 +39,72 @@ extract: ! | mm 2 cut_coul 0 natoms: 29 -init_vdwl: 184.28678589160327 -init_coul: 225.82185134782813 +init_vdwl: 184.287044185624 +init_coul: 225.8218513478281 init_stress: ! |2- - 5.1535563668501300e+02 5.0058663228965906e+02 1.1159625416266908e+03 -1.8397465772983549e+02 -2.0220541814186075e+00 1.7544854959858193e+02 + 5.1535627685426095e+02 5.0058721803305957e+02 1.1159628411352805e+03 -1.8397448242108504e+02 -2.0224841677449517e+00 1.7544840137728934e+02 init_forces: ! |2 - 1 -3.0654541322175968e+00 6.6615863677171617e+01 8.2943971924222254e+01 + 1 -3.0654576533494127e+00 6.6615850047892891e+01 8.2943972120581122e+01 2 3.9068865513677615e+01 2.9455617099928201e+01 -4.7591020157569005e+01 - 3 -3.5280048398649157e+01 -9.6589707037291518e+01 -3.5074530567243464e+01 - 4 -6.6290079171346505e-01 1.7069544377339213e-01 -6.5698955820925042e-01 - 5 -7.3666014335594099e-01 3.1866598696678072e-01 8.0597176706748563e-01 - 6 -2.0569141450616158e+02 2.3627567585415383e+02 2.8443812919367736e+02 - 7 1.4533356899344014e+01 -8.2901362616912394e+01 -4.2411675492205256e+02 - 8 3.4572733596567637e+01 -2.2709011431274082e+01 1.0190201593114163e+02 - 9 2.1302136717273982e+01 1.5382115964517633e+01 8.8486497965632879e+01 - 10 1.3163065406656153e+02 -1.5255187717021275e+02 -4.7566872791707098e+01 - 11 -1.0673115707973471e+00 6.0655351752474329e-01 -1.2545987554013556e+00 - 12 7.7809586887870594e+00 3.1160399372388605e+00 -1.4701800924466619e+00 - 13 5.3014565234400191e-01 -2.5075128500262650e-01 -1.8692002168697544e-01 - 14 -1.3123790631110117e+00 4.0626403937555045e-01 -7.3662725812128549e-01 - 15 3.2883559728278194e-01 4.2874259749687393e-01 -7.8340316469885862e-01 - 16 1.1459556694004317e+02 -8.2820744612264363e+01 -2.9444590318663785e+02 - 17 -1.1537978278388316e+02 8.4825361961770099e+01 2.9365401989722858e+02 - 18 3.5910722977056597e-01 4.7762805084795117e+00 -7.8633666628226111e+00 - 19 1.9899942949153411e+00 -7.2139693846497077e-01 5.5216057638120377e+00 - 20 -2.9130806625761494e+00 -3.9872064081602967e+00 4.1253385233400710e+00 - 21 -1.5875836014985955e+01 -1.5889862643744696e+01 4.7172259002528357e+01 - 22 -2.5015660385936844e+01 -7.0704105161901349e+00 -3.6174325746867012e+01 - 23 4.0477625196492205e+01 2.3373135655738206e+01 -1.0495869916757165e+01 + 3 -3.5280084805342639e+01 -9.6589672461277360e+01 -3.5074511071513633e+01 + 4 -6.6290079171346505e-01 1.7069544377339210e-01 -6.5698955820925031e-01 + 5 -7.3666014335594110e-01 3.1866598696678072e-01 8.0597176706748597e-01 + 6 -2.0569141450616158e+02 2.3627567585415389e+02 2.8443812919367736e+02 + 7 1.4533356899344010e+01 -8.2901362616912380e+01 -4.2411675492205251e+02 + 8 3.4572733596567609e+01 -2.2709011431274096e+01 1.0190201593114163e+02 + 9 2.1302136717273982e+01 1.5382115964517647e+01 8.8486497965632879e+01 + 10 1.3163065513040453e+02 -1.5255187203307418e+02 -4.7566873159823480e+01 + 11 -1.0673115707973471e+00 6.0655351752474307e-01 -1.2545987554013558e+00 + 12 7.7810446236250250e+00 3.1161068656344568e+00 -1.4702446426831981e+00 + 13 5.3014565234400202e-01 -2.5075128500262667e-01 -1.8692002168697544e-01 + 14 -1.3123790631110113e+00 4.0626403937555039e-01 -7.3662725812128527e-01 + 15 3.2883559728278206e-01 4.2874259749687393e-01 -7.8340316469885873e-01 + 16 1.1459556939733203e+02 -8.2820736120124138e+01 -2.9444590301488040e+02 + 17 -1.1537978278388316e+02 8.4825361961770113e+01 2.9365401989722858e+02 + 18 3.5910722977056608e-01 4.7762805084795099e+00 -7.8633666628226058e+00 + 19 1.9899942949153395e+00 -7.2139693846497099e-01 5.5216057638120368e+00 + 20 -2.9130806625761498e+00 -3.9872064081602954e+00 4.1253385233400701e+00 + 21 -1.5875799608292471e+01 -1.5889897219758861e+01 4.7172239506798533e+01 + 22 -2.5015660385936840e+01 -7.0704105161901358e+00 -3.6174325746867005e+01 + 23 4.0477625196492198e+01 2.3373135655738203e+01 -1.0495869916757163e+01 24 7.4996665312988062e+00 -4.3426856369883282e+01 2.2815324088130364e+01 25 -3.3807149952465473e+01 2.9988014337987989e+00 -2.7577373212676150e+01 - 26 2.5746891183225689e+01 4.0174455514363842e+01 4.1505232593253609e+00 - 27 1.0861995864629581e+01 -4.6328821976580151e+01 1.8883010049856995e+01 - 28 -4.0470177594126923e+01 1.5020794116966732e+01 -2.6766825117758021e+01 - 29 2.9999322027766638e+01 3.1302945696716428e+01 7.8628937666919105e+00 -run_vdwl: 182.40255928657774 -run_coul: 225.80526621801556 + 26 2.5746891183225689e+01 4.0174455514363835e+01 4.1505232593253609e+00 + 27 1.0861909929791622e+01 -4.6328888904975756e+01 1.8883074600093536e+01 + 28 -4.0470177594126930e+01 1.5020794116966732e+01 -2.6766825117758025e+01 + 29 2.9999322027766638e+01 3.1302945696716428e+01 7.8628937666919114e+00 +run_vdwl: 182.40281753260578 +run_coul: 225.80526621917056 run_stress: ! |2- - 5.1384633450263470e+02 4.9870417152157029e+02 1.0966342229480442e+03 -1.8197323856665997e+02 -7.7104387031605370e-01 1.7333790492919763e+02 + 5.1384697454379841e+02 4.9870475719746798e+02 1.0966345223981718e+03 -1.8197306335846980e+02 -7.7147374345845032e-01 1.7333775678806884e+02 run_forces: ! |2 - 1 -2.7683205204507280e+00 6.6449095490165703e+01 8.2247797711895885e+01 - 2 3.8702193821877493e+01 2.9212211419425969e+01 -4.7019604804325617e+01 - 3 -3.5243454585514591e+01 -9.6154953863738911e+01 -3.4936504643788560e+01 - 4 -6.5977687131041252e-01 1.7011085278366439e-01 -6.5635985341126124e-01 - 5 -7.3566505234358270e-01 3.2004653103552905e-01 8.0428307532511589e-01 - 6 -2.0326269614835340e+02 2.3271299913843555e+02 2.7442710822013873e+02 - 7 1.4300021996054623e+01 -8.0959802494991251e+01 -4.1226588541677728e+02 - 8 3.2858865265765651e+01 -2.1199693568720125e+01 1.0091081733429107e+02 - 9 2.1122714604067934e+01 1.5084943250328770e+01 8.7605509332947179e+01 - 10 1.3136998941143941e+02 -1.5218480590048722e+02 -4.7552579577409830e+01 - 11 -1.0661815608329375e+00 6.1244026211185132e-01 -1.2462619124968015e+00 - 12 7.7760233760077231e+00 3.1127902634122728e+00 -1.4744694804987457e+00 - 13 5.2674586924271427e-01 -2.4917758586878880e-01 -1.8723934835850795e-01 - 14 -1.3120523259791150e+00 4.0614108203397964e-01 -7.2914636677516875e-01 - 15 3.2867610981988737e-01 4.2750390948272482e-01 -7.8475586802253572e-01 - 16 1.1296204447867072e+02 -8.1834725270478103e+01 -2.9024712501702589e+02 - 17 -1.1375160235079549e+02 8.3851462518713276e+01 2.8944627514695969e+02 - 18 3.0738345014064944e-01 4.7275451584201162e+00 -7.8225421226147951e+00 - 19 2.0274544872239728e+00 -6.9334025263478072e-01 5.5367196067976767e+00 - 20 -2.8992075327228490e+00 -3.9662506277601803e+00 4.0716458277265861e+00 - 21 -1.6026802838192324e+01 -1.5883941405520059e+01 4.7256124362739875e+01 - 22 -2.5118529350290316e+01 -7.1302246487029537e+00 -3.6226156710291576e+01 - 23 4.0731193744183564e+01 2.3426594982025247e+01 -1.0527511305357223e+01 - 24 7.9759015601633747e+00 -4.4140032390736621e+01 2.3421941942737131e+01 - 25 -3.4663429593566200e+01 3.0656489475373521e+00 -2.8305771699474640e+01 - 26 2.6127823323620827e+01 4.0822835743219649e+01 4.2748889953069069e+00 - 27 1.1011144344413010e+01 -4.6436391929690870e+01 1.8878781879279799e+01 - 28 -4.0634774700271556e+01 1.5071357061734957e+01 -2.6829755168650092e+01 - 29 3.0014317587931910e+01 3.1359613328463354e+01 7.9297758591329561e+00 + 1 -2.7683239898506331e+00 6.6449081957468636e+01 8.2247797930661747e+01 + 2 3.8702193811582511e+01 2.9212211412571293e+01 -4.7019604791653393e+01 + 3 -3.5243491024333295e+01 -9.6154919393054271e+01 -3.4936485191359907e+01 + 4 -6.5977687168190458e-01 1.7011085284653316e-01 -6.5635985375283568e-01 + 5 -7.3566505234995705e-01 3.2004653083828444e-01 8.0428307567331736e-01 + 6 -2.0326269615165228e+02 2.3271299914190627e+02 2.7442710822226110e+02 + 7 1.4300021996095619e+01 -8.0959802495291143e+01 -4.1226588541635073e+02 + 8 3.2858865255384757e+01 -2.1199693557841638e+01 1.0091081733750200e+02 + 9 2.1122714603970017e+01 1.5084943250468159e+01 8.7605509333063679e+01 + 10 1.3136999050087155e+02 -1.5218480076049869e+02 -4.7552579958511345e+01 + 11 -1.0661815608470382e+00 6.1244026210440039e-01 -1.2462619124717631e+00 + 12 7.7761092701979475e+00 3.1128571473156490e+00 -1.4745340012267927e+00 + 13 5.2674586999352180e-01 -2.4917758618970665e-01 -1.8723934833596209e-01 + 14 -1.3120523262243908e+00 4.0614108204631622e-01 -7.2914636724809301e-01 + 15 3.2867610975969386e-01 4.2750391001876636e-01 -7.8475586778582129e-01 + 16 1.1296204694413225e+02 -8.1834716771070589e+01 -2.9024712485782527e+02 + 17 -1.1375160235744099e+02 8.3851462515852432e+01 2.8944627515943881e+02 + 18 3.0738344999939127e-01 4.7275451584991384e+00 -7.8225421226024254e+00 + 19 2.0274544872772347e+00 -6.9334025264774690e-01 5.5367196067971562e+00 + 20 -2.8992075326987843e+00 -3.9662506277824492e+00 4.0716458277284353e+00 + 21 -1.6026766454385204e+01 -1.5883975994889351e+01 4.7256104878610991e+01 + 22 -2.5118529354380893e+01 -7.1302246459886085e+00 -3.6226156710215299e+01 + 23 4.0731193763533284e+01 2.3426594998848003e+01 -1.0527511310640200e+01 + 24 7.9759015601568057e+00 -4.4140032390724294e+01 2.3421941942726932e+01 + 25 -3.4663429593560622e+01 3.0656489475121842e+00 -2.8305771699451558e+01 + 26 2.6127823323623851e+01 4.0822835743217404e+01 4.2748889953099694e+00 + 27 1.1011058517091254e+01 -4.6436458745736758e+01 1.8878846450788387e+01 + 28 -4.0634774705109990e+01 1.5071357074236101e+01 -2.6829755184229253e+01 + 29 3.0014317510846237e+01 3.1359613235965710e+01 7.9297758330981845e+00 ... From 32ce17c9ad961bcc954e1ca3c03548258c24ed7a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Nov 2022 12:55:51 -0500 Subject: [PATCH 28/30] fix typo --- doc/src/dump_image.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/dump_image.rst b/doc/src/dump_image.rst index bc2373afac..c9e838b7cf 100644 --- a/doc/src/dump_image.rst +++ b/doc/src/dump_image.rst @@ -69,7 +69,7 @@ Syntax yes/no = do or do not draw simulation box lines diam = diameter of box lines as fraction of shortest box length *axes* values = axes length diam = draw xyz axes - axes = *yes* or *no = do or do not draw xyz axes lines next to simulation box + axes = *yes* or *no* = do or do not draw xyz axes lines next to simulation box length = length of axes lines as fraction of respective box lengths diam = diameter of axes lines as fraction of shortest box length *subbox* values = lines diam = draw outline of processor sub-domains From 0ae5fd3a6015a4a0459e2f9457cef54a9838b499 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Nov 2022 13:31:47 -0500 Subject: [PATCH 29/30] cosmetic --- src/change_box.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/change_box.cpp b/src/change_box.cpp index 8ecaeaafe0..1cef7c96a5 100644 --- a/src/change_box.cpp +++ b/src/change_box.cpp @@ -281,9 +281,7 @@ void ChangeBox::command(int narg, char **arg) } else if (ops[m].style == BOUNDARY) { domain->set_boundary(3,&arg[ops[m].boundindex],1); if (domain->dimension == 2 && domain->zperiodic == 0) - error->all(FLERR, - "Cannot change box z boundary to " - "non-periodic for a 2d simulation"); + error->all(FLERR, "Cannot change box z boundary to non-periodic for a 2d simulation"); domain->set_initial_box(); domain->set_global_box(); domain->set_local_box(); From 7f4ebaf672eb0989abbf588fe3fa5afca20f3f7f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Nov 2022 13:32:13 -0500 Subject: [PATCH 30/30] correct triclinic box check --- src/domain.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/domain.cpp b/src/domain.cpp index c51f222483..97f626cbcd 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -211,12 +211,11 @@ void Domain::set_initial_box(int expandflag) if (dimension == 2 && (xz != 0.0 || yz != 0.0)) error->all(FLERR,"Cannot skew triclinic box in z for 2d simulation"); - // error check or warning on triclinic tilt factors + // check on triclinic tilt factors if (triclinic) { - if ((fabs(xy/(boxhi[0]-boxlo[0])) > 0.5 && xperiodic) || - (fabs(xz/(boxhi[0]-boxlo[0])) > 0.5 && xperiodic) || - (fabs(yz/(boxhi[1]-boxlo[1])) > 0.5 && yperiodic)) { + if ((fabs(xy/(boxhi[1]-boxlo[1])) > 0.5 && yperiodic) || + ((fabs(xz)+fabs(yz))/(boxhi[2]-boxlo[2]) > 0.5 && zperiodic)) { if (comm->me == 0) error->warning(FLERR,"Triclinic box skew is large. LAMMPS will run inefficiently."); }