From fb2cf0c32a7ca4ae73b2097221e8efc1641d37e4 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 4 Aug 2022 14:05:18 -0600 Subject: [PATCH 0001/1002] Prototyping new nstencil/npair classes --- src/{npair_full_bin.cpp => npair_bin.cpp} | 76 +++++- src/{npair_full_bin.h => npair_bin.h} | 25 +- src/npair_bin_atomonly.cpp | 148 +++++++++++ ...ll_bin_atomonly.h => npair_bin_atomonly.h} | 15 +- src/npair_copy.cpp | 38 --- src/npair_copy.h | 42 ---- src/npair_full_bin_atomonly.cpp | 94 ------- src/npair_full_bin_ghost.cpp | 156 ------------ src/npair_full_bin_ghost.h | 47 ---- src/npair_full_multi.cpp | 143 ----------- src/npair_full_multi.h | 46 ---- src/npair_full_multi_old.cpp | 133 ---------- src/npair_full_multi_old.h | 46 ---- src/npair_full_nsq.cpp | 125 ---------- src/npair_full_nsq.h | 46 ---- src/npair_full_nsq_ghost.cpp | 138 ----------- src/npair_full_nsq_ghost.h | 47 ---- src/npair_half_bin_atomonly_newton.cpp | 116 --------- src/npair_half_bin_atomonly_newton.h | 46 ---- src/npair_half_bin_newtoff.cpp | 129 ---------- src/npair_half_bin_newtoff.h | 46 ---- src/npair_half_bin_newtoff_ghost.cpp | 162 ------------ src/npair_half_bin_newtoff_ghost.h | 46 ---- src/npair_half_bin_newton.cpp | 161 ------------ src/npair_half_bin_newton.h | 46 ---- src/npair_half_bin_newton_tri.cpp | 134 ---------- src/npair_half_bin_newton_tri.h | 46 ---- src/npair_half_multi_newtoff.cpp | 146 ----------- src/npair_half_multi_newtoff.h | 46 ---- src/npair_half_multi_newton.cpp | 194 --------------- src/npair_half_multi_newton.h | 42 ---- src/npair_half_multi_newton_tri.cpp | 159 ------------ src/npair_half_multi_newton_tri.h | 42 ---- src/npair_half_multi_old_newtoff.cpp | 136 ---------- src/npair_half_multi_old_newtoff.h | 46 ---- src/npair_half_multi_old_newton.cpp | 169 ------------- src/npair_half_multi_old_newton.h | 46 ---- src/npair_half_multi_old_newton_tri.cpp | 144 ----------- src/npair_half_multi_old_newton_tri.h | 46 ---- src/npair_half_nsq_newtoff.cpp | 125 ---------- src/npair_half_nsq_newtoff.h | 46 ---- src/npair_half_nsq_newtoff_ghost.cpp | 150 ----------- src/npair_half_nsq_newtoff_ghost.h | 46 ---- src/npair_half_nsq_newton.cpp | 142 ----------- src/npair_half_nsq_newton.h | 46 ---- src/npair_half_respa_bin_newtoff.cpp | 187 -------------- src/npair_half_respa_bin_newtoff.h | 46 ---- src/npair_half_respa_bin_newton.cpp | 233 ------------------ src/npair_half_respa_bin_newton.h | 46 ---- src/npair_half_respa_bin_newton_tri.cpp | 195 --------------- src/npair_half_respa_bin_newton_tri.h | 46 ---- src/npair_half_respa_nsq_newtoff.cpp | 182 -------------- src/npair_half_respa_nsq_newtoff.h | 46 ---- src/npair_half_respa_nsq_newton.cpp | 202 --------------- src/npair_half_respa_nsq_newton.h | 46 ---- src/npair_half_size_bin_newtoff.cpp | 138 ----------- src/npair_half_size_bin_newtoff.h | 46 ---- src/npair_half_size_bin_newton.cpp | 176 ------------- src/npair_half_size_bin_newton.h | 46 ---- src/npair_half_size_bin_newton_tri.cpp | 147 ----------- src/npair_half_size_bin_newton_tri.h | 46 ---- src/npair_half_size_multi_newtoff.cpp | 160 ------------ src/npair_half_size_multi_newtoff.h | 46 ---- src/npair_half_size_multi_newton.cpp | 213 ---------------- src/npair_half_size_multi_newton.h | 46 ---- src/npair_half_size_multi_newton_tri.cpp | 172 ------------- src/npair_half_size_multi_newton_tri.h | 46 ---- src/npair_half_size_multi_old_newtoff.cpp | 149 ----------- src/npair_half_size_multi_old_newtoff.h | 45 ---- src/npair_half_size_multi_old_newton.cpp | 187 -------------- src/npair_half_size_multi_old_newton.h | 45 ---- src/npair_half_size_multi_old_newton_tri.cpp | 156 ------------ src/npair_half_size_multi_old_newton_tri.h | 45 ---- src/npair_half_size_nsq_newtoff.cpp | 136 ---------- src/npair_half_size_nsq_newtoff.h | 46 ---- src/npair_half_size_nsq_newton.cpp | 154 ------------ src/npair_half_size_nsq_newton.h | 46 ---- src/npair_halffull_newtoff.cpp | 83 ------- src/npair_halffull_newtoff.h | 62 ----- src/npair_halffull_newton.cpp | 97 -------- src/npair_halffull_newton.h | 52 ---- src/npair_skip.cpp | 102 -------- src/npair_skip.h | 54 ---- src/npair_skip_respa.cpp | 163 ------------ src/npair_skip_respa.h | 48 ---- src/npair_skip_size.cpp | 88 ------- src/npair_skip_size.h | 47 ---- src/npair_skip_size_off2on.cpp | 100 -------- src/npair_skip_size_off2on.h | 48 ---- src/npair_skip_size_off2on_oneside.cpp | 163 ------------ src/npair_skip_size_off2on_oneside.h | 48 ---- ...l_half_bin_3d_tri.cpp => nstencil_bin.cpp} | 41 ++- src/nstencil_bin.h | 69 ++++++ src/nstencil_full_bin_2d.cpp | 37 --- src/nstencil_full_bin_2d.h | 42 ---- src/nstencil_full_bin_3d.cpp | 38 --- src/nstencil_full_bin_3d.h | 42 ---- src/nstencil_full_ghost_bin_2d.cpp | 44 ---- src/nstencil_full_ghost_bin_2d.h | 42 ---- src/nstencil_full_ghost_bin_3d.cpp | 45 ---- src/nstencil_full_ghost_bin_3d.h | 42 ---- src/nstencil_full_multi_2d.cpp | 81 ------ src/nstencil_full_multi_2d.h | 44 ---- src/nstencil_full_multi_3d.cpp | 86 ------- src/nstencil_full_multi_3d.h | 44 ---- src/nstencil_full_multi_old_2d.cpp | 51 ---- src/nstencil_full_multi_old_2d.h | 42 ---- src/nstencil_full_multi_old_3d.cpp | 52 ---- src/nstencil_full_multi_old_3d.h | 42 ---- src/nstencil_half_bin_2d.cpp | 38 --- src/nstencil_half_bin_2d.h | 42 ---- src/nstencil_half_bin_2d_tri.cpp | 38 --- src/nstencil_half_bin_2d_tri.h | 42 ---- src/nstencil_half_bin_3d.cpp | 39 --- src/nstencil_half_bin_3d.h | 42 ---- src/nstencil_half_bin_3d_tri.h | 42 ---- src/nstencil_half_multi_2d.cpp | 103 -------- src/nstencil_half_multi_2d.h | 44 ---- src/nstencil_half_multi_2d_tri.cpp | 100 -------- src/nstencil_half_multi_2d_tri.h | 44 ---- src/nstencil_half_multi_3d.cpp | 109 -------- src/nstencil_half_multi_3d.h | 44 ---- src/nstencil_half_multi_3d_tri.cpp | 106 -------- src/nstencil_half_multi_3d_tri.h | 44 ---- src/nstencil_half_multi_old_2d.cpp | 53 ---- src/nstencil_half_multi_old_2d.h | 41 --- src/nstencil_half_multi_old_2d_tri.cpp | 52 ---- src/nstencil_half_multi_old_2d_tri.h | 41 --- src/nstencil_half_multi_old_3d.cpp | 54 ---- src/nstencil_half_multi_old_3d.h | 41 --- src/nstencil_half_multi_old_3d_tri.cpp | 53 ---- src/nstencil_half_multi_old_3d_tri.h | 41 --- 132 files changed, 349 insertions(+), 10531 deletions(-) rename src/{npair_full_bin.cpp => npair_bin.cpp} (58%) rename src/{npair_full_bin.h => npair_bin.h} (60%) create mode 100644 src/npair_bin_atomonly.cpp rename src/{npair_full_bin_atomonly.h => npair_bin_atomonly.h} (71%) delete mode 100644 src/npair_copy.cpp delete mode 100644 src/npair_copy.h delete mode 100644 src/npair_full_bin_atomonly.cpp delete mode 100644 src/npair_full_bin_ghost.cpp delete mode 100644 src/npair_full_bin_ghost.h delete mode 100644 src/npair_full_multi.cpp delete mode 100644 src/npair_full_multi.h delete mode 100644 src/npair_full_multi_old.cpp delete mode 100644 src/npair_full_multi_old.h delete mode 100644 src/npair_full_nsq.cpp delete mode 100644 src/npair_full_nsq.h delete mode 100644 src/npair_full_nsq_ghost.cpp delete mode 100644 src/npair_full_nsq_ghost.h delete mode 100644 src/npair_half_bin_atomonly_newton.cpp delete mode 100644 src/npair_half_bin_atomonly_newton.h delete mode 100644 src/npair_half_bin_newtoff.cpp delete mode 100644 src/npair_half_bin_newtoff.h delete mode 100644 src/npair_half_bin_newtoff_ghost.cpp delete mode 100644 src/npair_half_bin_newtoff_ghost.h delete mode 100644 src/npair_half_bin_newton.cpp delete mode 100644 src/npair_half_bin_newton.h delete mode 100644 src/npair_half_bin_newton_tri.cpp delete mode 100644 src/npair_half_bin_newton_tri.h delete mode 100644 src/npair_half_multi_newtoff.cpp delete mode 100644 src/npair_half_multi_newtoff.h delete mode 100644 src/npair_half_multi_newton.cpp delete mode 100644 src/npair_half_multi_newton.h delete mode 100644 src/npair_half_multi_newton_tri.cpp delete mode 100644 src/npair_half_multi_newton_tri.h delete mode 100644 src/npair_half_multi_old_newtoff.cpp delete mode 100644 src/npair_half_multi_old_newtoff.h delete mode 100644 src/npair_half_multi_old_newton.cpp delete mode 100644 src/npair_half_multi_old_newton.h delete mode 100644 src/npair_half_multi_old_newton_tri.cpp delete mode 100644 src/npair_half_multi_old_newton_tri.h delete mode 100644 src/npair_half_nsq_newtoff.cpp delete mode 100644 src/npair_half_nsq_newtoff.h delete mode 100644 src/npair_half_nsq_newtoff_ghost.cpp delete mode 100644 src/npair_half_nsq_newtoff_ghost.h delete mode 100644 src/npair_half_nsq_newton.cpp delete mode 100644 src/npair_half_nsq_newton.h delete mode 100644 src/npair_half_respa_bin_newtoff.cpp delete mode 100644 src/npair_half_respa_bin_newtoff.h delete mode 100644 src/npair_half_respa_bin_newton.cpp delete mode 100644 src/npair_half_respa_bin_newton.h delete mode 100644 src/npair_half_respa_bin_newton_tri.cpp delete mode 100644 src/npair_half_respa_bin_newton_tri.h delete mode 100644 src/npair_half_respa_nsq_newtoff.cpp delete mode 100644 src/npair_half_respa_nsq_newtoff.h delete mode 100644 src/npair_half_respa_nsq_newton.cpp delete mode 100644 src/npair_half_respa_nsq_newton.h delete mode 100644 src/npair_half_size_bin_newtoff.cpp delete mode 100644 src/npair_half_size_bin_newtoff.h delete mode 100644 src/npair_half_size_bin_newton.cpp delete mode 100644 src/npair_half_size_bin_newton.h delete mode 100644 src/npair_half_size_bin_newton_tri.cpp delete mode 100644 src/npair_half_size_bin_newton_tri.h delete mode 100644 src/npair_half_size_multi_newtoff.cpp delete mode 100644 src/npair_half_size_multi_newtoff.h delete mode 100644 src/npair_half_size_multi_newton.cpp delete mode 100644 src/npair_half_size_multi_newton.h delete mode 100644 src/npair_half_size_multi_newton_tri.cpp delete mode 100644 src/npair_half_size_multi_newton_tri.h delete mode 100644 src/npair_half_size_multi_old_newtoff.cpp delete mode 100644 src/npair_half_size_multi_old_newtoff.h delete mode 100644 src/npair_half_size_multi_old_newton.cpp delete mode 100644 src/npair_half_size_multi_old_newton.h delete mode 100644 src/npair_half_size_multi_old_newton_tri.cpp delete mode 100644 src/npair_half_size_multi_old_newton_tri.h delete mode 100644 src/npair_half_size_nsq_newtoff.cpp delete mode 100644 src/npair_half_size_nsq_newtoff.h delete mode 100644 src/npair_half_size_nsq_newton.cpp delete mode 100644 src/npair_half_size_nsq_newton.h delete mode 100644 src/npair_halffull_newtoff.cpp delete mode 100644 src/npair_halffull_newtoff.h delete mode 100644 src/npair_halffull_newton.cpp delete mode 100644 src/npair_halffull_newton.h delete mode 100644 src/npair_skip.cpp delete mode 100644 src/npair_skip.h delete mode 100644 src/npair_skip_respa.cpp delete mode 100644 src/npair_skip_respa.h delete mode 100644 src/npair_skip_size.cpp delete mode 100644 src/npair_skip_size.h delete mode 100644 src/npair_skip_size_off2on.cpp delete mode 100644 src/npair_skip_size_off2on.h delete mode 100644 src/npair_skip_size_off2on_oneside.cpp delete mode 100644 src/npair_skip_size_off2on_oneside.h rename src/{nstencil_half_bin_3d_tri.cpp => nstencil_bin.cpp} (51%) create mode 100644 src/nstencil_bin.h delete mode 100644 src/nstencil_full_bin_2d.cpp delete mode 100644 src/nstencil_full_bin_2d.h delete mode 100644 src/nstencil_full_bin_3d.cpp delete mode 100644 src/nstencil_full_bin_3d.h delete mode 100644 src/nstencil_full_ghost_bin_2d.cpp delete mode 100644 src/nstencil_full_ghost_bin_2d.h delete mode 100644 src/nstencil_full_ghost_bin_3d.cpp delete mode 100644 src/nstencil_full_ghost_bin_3d.h delete mode 100644 src/nstencil_full_multi_2d.cpp delete mode 100644 src/nstencil_full_multi_2d.h delete mode 100644 src/nstencil_full_multi_3d.cpp delete mode 100644 src/nstencil_full_multi_3d.h delete mode 100644 src/nstencil_full_multi_old_2d.cpp delete mode 100644 src/nstencil_full_multi_old_2d.h delete mode 100644 src/nstencil_full_multi_old_3d.cpp delete mode 100644 src/nstencil_full_multi_old_3d.h delete mode 100644 src/nstencil_half_bin_2d.cpp delete mode 100644 src/nstencil_half_bin_2d.h delete mode 100644 src/nstencil_half_bin_2d_tri.cpp delete mode 100644 src/nstencil_half_bin_2d_tri.h delete mode 100644 src/nstencil_half_bin_3d.cpp delete mode 100644 src/nstencil_half_bin_3d.h delete mode 100644 src/nstencil_half_bin_3d_tri.h delete mode 100644 src/nstencil_half_multi_2d.cpp delete mode 100644 src/nstencil_half_multi_2d.h delete mode 100644 src/nstencil_half_multi_2d_tri.cpp delete mode 100644 src/nstencil_half_multi_2d_tri.h delete mode 100644 src/nstencil_half_multi_3d.cpp delete mode 100644 src/nstencil_half_multi_3d.h delete mode 100644 src/nstencil_half_multi_3d_tri.cpp delete mode 100644 src/nstencil_half_multi_3d_tri.h delete mode 100644 src/nstencil_half_multi_old_2d.cpp delete mode 100644 src/nstencil_half_multi_old_2d.h delete mode 100644 src/nstencil_half_multi_old_2d_tri.cpp delete mode 100644 src/nstencil_half_multi_old_2d_tri.h delete mode 100644 src/nstencil_half_multi_old_3d.cpp delete mode 100644 src/nstencil_half_multi_old_3d.h delete mode 100644 src/nstencil_half_multi_old_3d_tri.cpp delete mode 100644 src/nstencil_half_multi_old_3d_tri.h diff --git a/src/npair_full_bin.cpp b/src/npair_bin.cpp similarity index 58% rename from src/npair_full_bin.cpp rename to src/npair_bin.cpp index 64404ccf8d..294336a03a 100644 --- a/src/npair_full_bin.cpp +++ b/src/npair_bin.cpp @@ -12,29 +12,33 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "npair_full_bin.h" +#include "npair_bin.h" #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" #include "molecule.h" +#include "neighbor.h" #include "domain.h" #include "my_page.h" #include "error.h" using namespace LAMMPS_NS; +using namespace NeighConst; /* ---------------------------------------------------------------------- */ -NPairFullBin::NPairFullBin(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- binned neighbor list construction for all neighbors every neighbor pair appears in list of both atoms i and j ------------------------------------------------------------------------- */ -void NPairFullBin::build(NeighList *list) +template +void NPairBin::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; + int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; @@ -77,14 +81,59 @@ void NPairFullBin::build(NeighList *list) tagprev = tag[i] - iatom - 1; } - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -121,5 +170,12 @@ void NPairFullBin::build(NeighList *list) } list->inum = inum; - list->gnum = 0; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBin<0,1,0>; +template class NPairBin<1,0,0>; +template class NPairBin<1,1,0>; +template class NPairBin<1,1,1>; } diff --git a/src/npair_full_bin.h b/src/npair_bin.h similarity index 60% rename from src/npair_full_bin.h rename to src/npair_bin.h index 4d40763271..af23880db7 100644 --- a/src/npair_full_bin.h +++ b/src/npair_bin.h @@ -13,23 +13,40 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairBin<0, 1, 0> NPairFullBin; NPairStyle(full/bin, NPairFullBin, NP_FULL | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 0, 0> NPairHalfBinNewtoff; +NPairStyle(half/bin/newtoff, + NPairHalfBinNewtoff, + NP_HALF | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 1, 0> NPairHalfBinNewton; +NPairStyle(half/bin/newton, + NPairHalfBinNewton, + NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBin<1, 1, 1> NPairHalfBinNewtonTri; +NPairStyle(half/bin/newton/tri, + NPairHalfBinNewtonTri, + NP_HALF | NP_BIN | NP_NEWTON | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_H -#define LMP_NPAIR_FULL_BIN_H +#ifndef LMP_NPAIR_BIN_H +#define LMP_NPAIR_BIN_H #include "npair.h" namespace LAMMPS_NS { -class NPairFullBin : public NPair { +template +class NPairBin : public NPair { public: - NPairFullBin(class LAMMPS *); + NPairBin(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp new file mode 100644 index 0000000000..aa66089fc5 --- /dev/null +++ b/src/npair_bin_atomonly.cpp @@ -0,0 +1,148 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_bin_atomonly.h" + +#include "atom.h" +#include "error.h" +#include "neighbor.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j +------------------------------------------------------------------------- */ + +template +void NPairBinAtomonly::build(NeighList *list) +{ + int i,j,k,n,itype,jtype,ibin,bin_start; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *molecule = atom->molecule; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBinAtomonly<0,1,0>; +template class NPairBinAtomonly<1,1,0>; +} diff --git a/src/npair_full_bin_atomonly.h b/src/npair_bin_atomonly.h similarity index 71% rename from src/npair_full_bin_atomonly.h rename to src/npair_bin_atomonly.h index 8e3f96e59b..ae64863138 100644 --- a/src/npair_full_bin_atomonly.h +++ b/src/npair_bin_atomonly.h @@ -13,23 +13,30 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairBinAtomonly<0, 1, 0> NPairFullBinAtomonly; NPairStyle(full/bin/atomonly, NPairFullBinAtomonly, NP_FULL | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 1, 0> NPairHalfBinAtomonlyNewton; +NPairStyle(half/bin/atomonly/newton, + NPairHalfBinAtomonlyNewton, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_ATOMONLY_H -#define LMP_NPAIR_FULL_BIN_ATOMONLY_H +#ifndef LMP_NPAIR_BIN_ATOMONLY_H +#define LMP_NPAIR_BIN_ATOMONLY_H #include "npair.h" namespace LAMMPS_NS { -class NPairFullBinAtomonly : public NPair { +template +class NPairBinAtomonly : public NPair { public: - NPairFullBinAtomonly(class LAMMPS *); + NPairBinAtomonly(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_copy.cpp b/src/npair_copy.cpp deleted file mode 100644 index b3cab53e0a..0000000000 --- a/src/npair_copy.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_copy.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairCopy::NPairCopy(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - create list which is simply a copy of parent list -------------------------------------------------------------------------- */ - -void NPairCopy::build(NeighList *list) -{ - NeighList *listcopy = list->listcopy; - - list->inum = listcopy->inum; - list->gnum = listcopy->gnum; - list->ilist = listcopy->ilist; - list->numneigh = listcopy->numneigh; - list->firstneigh = listcopy->firstneigh; - list->ipage = listcopy->ipage; -} diff --git a/src/npair_copy.h b/src/npair_copy.h deleted file mode 100644 index 36b80f83d9..0000000000 --- a/src/npair_copy.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(copy, - NPairCopy, - NP_COPY); -// clang-format on -#else - -#ifndef LMP_NPAIR_COPY_H -#define LMP_NPAIR_COPY_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairCopy : public NPair { - public: - NPairCopy(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/npair_full_bin_atomonly.cpp b/src/npair_full_bin_atomonly.cpp deleted file mode 100644 index b8c4378280..0000000000 --- a/src/npair_full_bin_atomonly.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_bin_atomonly.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinAtomonly::NPairFullBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinAtomonly::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_bin_ghost.cpp b/src/npair_full_bin_ghost.cpp deleted file mode 100644 index e051a1d75a..0000000000 --- a/src/npair_full_bin_ghost.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_bin_ghost.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinGhost::NPairFullBinGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinGhost::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int xbin,ybin,zbin,xbin2,ybin2,zbin2; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = 0; i < nall; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // when i is a ghost atom, must check if stencil bin is out of bounds - // skip i = j - // no molecular test when i = ghost atom - - if (i < nlocal) { - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - } else { - ibin = coord2bin(x[i],xbin,ybin,zbin); - for (k = 0; k < nstencil; k++) { - xbin2 = xbin + stencilxyz[k][0]; - ybin2 = ybin + stencilxyz[k][1]; - zbin2 = zbin + stencilxyz[k][2]; - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_full_bin_ghost.h b/src/npair_full_bin_ghost.h deleted file mode 100644 index 4b7e08a0e1..0000000000 --- a/src/npair_full_bin_ghost.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/ghost, - NPairFullBinGhost, - NP_FULL | NP_BIN | NP_GHOST | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_GHOST_H -#define LMP_NPAIR_FULL_BIN_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullBinGhost : public NPair { - public: - NPairFullBinGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_multi.cpp b/src/npair_full_multi.cpp deleted file mode 100644 index 34b7a7bfa8..0000000000 --- a/src/npair_full_multi.cpp +++ /dev/null @@ -1,143 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_multi.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMulti::NPairFullMulti(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi stencil is icollection-jcollection dependent - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMulti::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_multi.h b/src/npair_full_multi.h deleted file mode 100644 index dcd1b5d8a9..0000000000 --- a/src/npair_full_multi.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/multi, - NPairFullMulti, - NP_FULL | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_H -#define LMP_NPAIR_FULL_MULTI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMulti : public NPair { - public: - NPairFullMulti(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_multi_old.cpp b/src/npair_full_multi_old.cpp deleted file mode 100644 index 7b89f35268..0000000000 --- a/src/npair_full_multi_old.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_multi_old.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMultiOld::NPairFullMultiOld(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi-type stencil is itype dependent and is distance checked - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMultiOld::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil, including self - // skip if i,j neighbor cutoff is less than bin distance - // skip i = j - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (i == j) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_multi_old.h b/src/npair_full_multi_old.h deleted file mode 100644 index 0dd825fcce..0000000000 --- a/src/npair_full_multi_old.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/multi/old, - NPairFullMultiOld, - NP_FULL | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_OLD_H -#define LMP_NPAIR_FULL_MULTI_OLD_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMultiOld : public NPair { - public: - NPairFullMultiOld(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_nsq.cpp b/src/npair_full_nsq.cpp deleted file mode 100644 index c6427366f4..0000000000 --- a/src/npair_full_nsq.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_nsq.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullNsq::NPairFullNsq(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 search for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullNsq::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms, owned and ghost - // skip i = j - - for (j = 0; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (i == j) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_nsq.h b/src/npair_full_nsq.h deleted file mode 100644 index 0e65fcd027..0000000000 --- a/src/npair_full_nsq.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/nsq, - NPairFullNsq, - NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_H -#define LMP_NPAIR_FULL_NSQ_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsq : public NPair { - public: - NPairFullNsq(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_nsq_ghost.cpp b/src/npair_full_nsq_ghost.cpp deleted file mode 100644 index 9550ae54f3..0000000000 --- a/src/npair_full_nsq_ghost.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_nsq_ghost.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullNsqGhost::NPairFullNsqGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 search for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullNsqGhost::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = 0; i < nall; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms, owned and ghost - // skip i = j - // no molecular test when i = ghost atom - - if (i < nlocal) { - for (j = 0; j < nall; j++) { - if (i == j) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } else { - for (j = 0; j < nall; j++) { - if (i == j) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_full_nsq_ghost.h b/src/npair_full_nsq_ghost.h deleted file mode 100644 index 6ae517ccf7..0000000000 --- a/src/npair_full_nsq_ghost.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/nsq/ghost, - NPairFullNsqGhost, - NP_FULL | NP_NSQ | NP_GHOST | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_GHOST_H -#define LMP_NPAIR_FULL_NSQ_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsqGhost : public NPair { - public: - NPairFullNsqGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_atomonly_newton.cpp b/src/npair_half_bin_atomonly_newton.cpp deleted file mode 100644 index db84d38f6e..0000000000 --- a/src/npair_half_bin_atomonly_newton.cpp +++ /dev/null @@ -1,116 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_atomonly_newton.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinAtomonlyNewton::NPairHalfBinAtomonlyNewton(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinAtomonlyNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_atomonly_newton.h b/src/npair_half_bin_atomonly_newton.h deleted file mode 100644 index 7a3eaf34bc..0000000000 --- a/src/npair_half_bin_atomonly_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/atomonly/newton, - NPairHalfBinAtomonlyNewton, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_H -#define LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinAtomonlyNewton : public NPair { - public: - NPairHalfBinAtomonlyNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newtoff.cpp b/src/npair_half_bin_newtoff.cpp deleted file mode 100644 index 00318b2aa7..0000000000 --- a/src/npair_half_bin_newtoff.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newtoff.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoff::NPairHalfBinNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_newtoff.h b/src/npair_half_bin_newtoff.h deleted file mode 100644 index db240f8bd9..0000000000 --- a/src/npair_half_bin_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newtoff, - NPairHalfBinNewtoff, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoff : public NPair { - public: - NPairHalfBinNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newtoff_ghost.cpp b/src/npair_half_bin_newtoff_ghost.cpp deleted file mode 100644 index b85e3328e1..0000000000 --- a/src/npair_half_bin_newtoff_ghost.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newtoff_ghost.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoffGhost::NPairHalfBinNewtoffGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - owned and ghost atoms check own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoffGhost::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int xbin,ybin,zbin,xbin2,ybin2,zbin2; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nall; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // when i is a ghost atom, must check if stencil bin is out of bounds - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - } else { - ibin = coord2bin(x[i],xbin,ybin,zbin); - for (k = 0; k < nstencil; k++) { - xbin2 = xbin + stencilxyz[k][0]; - ybin2 = ybin + stencilxyz[k][1]; - zbin2 = zbin + stencilxyz[k][2]; - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_half_bin_newtoff_ghost.h b/src/npair_half_bin_newtoff_ghost.h deleted file mode 100644 index b11e0f4802..0000000000 --- a/src/npair_half_bin_newtoff_ghost.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newtoff/ghost, - NPairHalfBinNewtoffGhost, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoffGhost : public NPair { - public: - NPairHalfBinNewtoffGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newton.cpp b/src/npair_half_bin_newton.cpp deleted file mode 100644 index d07ebf01f9..0000000000 --- a/src/npair_half_bin_newton.cpp +++ /dev/null @@ -1,161 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newton.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewton::NPairHalfBinNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_newton.h b/src/npair_half_bin_newton.h deleted file mode 100644 index 19f7b93ae4..0000000000 --- a/src/npair_half_bin_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton, - NPairHalfBinNewton, - NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_H -#define LMP_NPAIR_HALF_BIN_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewton : public NPair { - public: - NPairHalfBinNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp deleted file mode 100644 index ef2e48a417..0000000000 --- a/src/npair_half_bin_newton_tri.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newton_tri.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonTri::NPairHalfBinNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_newton_tri.h b/src/npair_half_bin_newton_tri.h deleted file mode 100644 index ad270ae173..0000000000 --- a/src/npair_half_bin_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/tri, - NPairHalfBinNewtonTri, - NP_HALF | NP_BIN | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_TRI_H -#define LMP_NPAIR_HALF_BIN_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonTri : public NPair { - public: - NPairHalfBinNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_newtoff.cpp b/src/npair_half_multi_newtoff.cpp deleted file mode 100644 index cef28f4cb4..0000000000 --- a/src/npair_half_multi_newtoff.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_multi_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtoff::NPairHalfMultiNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_newtoff.h b/src/npair_half_multi_newtoff.h deleted file mode 100644 index 3142587da6..0000000000 --- a/src/npair_half_multi_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newtoff, - NPairHalfMultiNewtoff, - NP_HALF | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTOFF_H -#define LMP_NPAIR_HALF_MULTI_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtoff : public NPair { - public: - NPairHalfMultiNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_newton.cpp b/src/npair_half_multi_newton.cpp deleted file mode 100644 index 3ee4ce5fde..0000000000 --- a/src/npair_half_multi_newton.cpp +++ /dev/null @@ -1,194 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_multi_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewton::NPairHalfMultiNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == 2) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if (icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if((icollection != jcollection) && (j < i)) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_newton.h b/src/npair_half_multi_newton.h deleted file mode 100644 index 55439eacca..0000000000 --- a/src/npair_half_multi_newton.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newton, - NPairHalfMultiNewton, - NP_HALF | NP_MULTI | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewton : public NPair { - public: - NPairHalfMultiNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp deleted file mode 100644 index 4a8bb8e19f..0000000000 --- a/src/npair_half_multi_newton_tri.cpp +++ /dev/null @@ -1,159 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_multi_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtonTri::NPairHalfMultiNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == 2) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_newton_tri.h b/src/npair_half_multi_newton_tri.h deleted file mode 100644 index 2b6d69f332..0000000000 --- a/src/npair_half_multi_newton_tri.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newton/tri, - NPairHalfMultiNewtonTri, - NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_TRI_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtonTri : public NPair { - public: - NPairHalfMultiNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/npair_half_multi_old_newtoff.cpp b/src/npair_half_multi_old_newtoff.cpp deleted file mode 100644 index eb6c7d9069..0000000000 --- a/src/npair_half_multi_old_newtoff.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_multi_old_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtoff::NPairHalfMultiOldNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_old_newtoff.h b/src/npair_half_multi_old_newtoff.h deleted file mode 100644 index 9418cf5a4c..0000000000 --- a/src/npair_half_multi_old_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newtoff, - NPairHalfMultiOldNewtoff, - NP_HALF | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtoff : public NPair { - public: - NPairHalfMultiOldNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_old_newton.cpp b/src/npair_half_multi_old_newton.cpp deleted file mode 100644 index 9708b3e879..0000000000 --- a/src/npair_half_multi_old_newton.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_multi_old_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewton::NPairHalfMultiOldNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - // loop over all atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_old_newton.h b/src/npair_half_multi_old_newton.h deleted file mode 100644 index 5c84b8ef98..0000000000 --- a/src/npair_half_multi_old_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newton, - NPairHalfMultiOldNewton, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewton : public NPair { - public: - NPairHalfMultiOldNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_old_newton_tri.cpp b/src/npair_half_multi_old_newton_tri.cpp deleted file mode 100644 index 683cc5f53c..0000000000 --- a/src/npair_half_multi_old_newton_tri.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_multi_old_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtonTri::NPairHalfMultiOldNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_old_newton_tri.h b/src/npair_half_multi_old_newton_tri.h deleted file mode 100644 index 016746cf12..0000000000 --- a/src/npair_half_multi_old_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newton/tri, - NPairHalfMultiOldNewtonTri, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtonTri : public NPair { - public: - NPairHalfMultiOldNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_nsq_newtoff.cpp b/src/npair_half_nsq_newtoff.cpp deleted file mode 100644 index affcdcf39f..0000000000 --- a/src/npair_half_nsq_newtoff.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_nsq_newtoff.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoff::NPairHalfNsqNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoff::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - // only store pair if i < j - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_nsq_newtoff.h b/src/npair_half_nsq_newtoff.h deleted file mode 100644 index 45bef5b0b0..0000000000 --- a/src/npair_half_nsq_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newtoff, - NPairHalfNsqNewtoff, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtoff : public NPair { - public: - NPairHalfNsqNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_nsq_newtoff_ghost.cpp b/src/npair_half_nsq_newtoff_ghost.cpp deleted file mode 100644 index eebee1208b..0000000000 --- a/src/npair_half_nsq_newtoff_ghost.cpp +++ /dev/null @@ -1,150 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_nsq_newtoff_ghost.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoffGhost::NPairHalfNsqNewtoffGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoffGhost::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = 0; i < nall; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - } else { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_half_nsq_newtoff_ghost.h b/src/npair_half_nsq_newtoff_ghost.h deleted file mode 100644 index 5d6cb69450..0000000000 --- a/src/npair_half_nsq_newtoff_ghost.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newtoff/ghost, - NPairHalfNsqNewtoffGhost, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtoffGhost : public NPair { - public: - NPairHalfNsqNewtoffGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp deleted file mode 100644 index 5263903657..0000000000 --- a/src/npair_half_nsq_newton.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_nsq_newton.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewton::NPairHalfNsqNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - every pair stored exactly once by some processor - decision on ghost atoms based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewton::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint itag,jtag,tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itag = tag[i]; - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - // itag = jtag is possible for long cutoffs that include images of self - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_nsq_newton.h b/src/npair_half_nsq_newton.h deleted file mode 100644 index 6b7ec89b82..0000000000 --- a/src/npair_half_nsq_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newton, - NPairHalfNsqNewton, - NP_HALF | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTON_H -#define LMP_NPAIR_HALF_NSQ_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewton : public NPair { - public: - NPairHalfNsqNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_bin_newtoff.cpp b/src/npair_half_respa_bin_newtoff.cpp deleted file mode 100644 index b0fb7cb097..0000000000 --- a/src/npair_half_respa_bin_newtoff.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_respa_bin_newtoff.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtoff::NPairHalfRespaBinNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[inum] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_bin_newtoff.h b/src/npair_half_respa_bin_newtoff.h deleted file mode 100644 index 2782ae239e..0000000000 --- a/src/npair_half_respa_bin_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newtoff, - NPairHalfRespaBinNewtoff, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtoff : public NPair { - public: - NPairHalfRespaBinNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_bin_newton.cpp b/src/npair_half_respa_bin_newton.cpp deleted file mode 100644 index 0bb6756497..0000000000 --- a/src/npair_half_respa_bin_newton.cpp +++ /dev/null @@ -1,233 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_respa_bin_newton.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewton::NPairHalfRespaBinNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[inum] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_bin_newton.h b/src/npair_half_respa_bin_newton.h deleted file mode 100644 index c83ca89891..0000000000 --- a/src/npair_half_respa_bin_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newton, - NPairHalfRespaBinNewton, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewton : public NPair { - public: - NPairHalfRespaBinNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_bin_newton_tri.cpp b/src/npair_half_respa_bin_newton_tri.cpp deleted file mode 100644 index c6c569d794..0000000000 --- a/src/npair_half_respa_bin_newton_tri.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_respa_bin_newton_tri.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtonTri::NPairHalfRespaBinNewtonTri(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[inum] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_bin_newton_tri.h b/src/npair_half_respa_bin_newton_tri.h deleted file mode 100644 index a5b573103c..0000000000 --- a/src/npair_half_respa_bin_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newton/tri, - NPairHalfRespaBinNewtonTri, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtonTri : public NPair { - public: - NPairHalfRespaBinNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_nsq_newtoff.cpp b/src/npair_half_respa_nsq_newtoff.cpp deleted file mode 100644 index ff512be7d9..0000000000 --- a/src/npair_half_respa_nsq_newtoff.cpp +++ /dev/null @@ -1,182 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_respa_nsq_newtoff.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaNsqNewtoff::NPairHalfRespaNsqNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfRespaNsqNewtoff::build(NeighList *list) -{ - int i,j,n,itype,jtype,n_inner,n_middle,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - ilist[inum] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_nsq_newtoff.h b/src/npair_half_respa_nsq_newtoff.h deleted file mode 100644 index d13fb810da..0000000000 --- a/src/npair_half_respa_nsq_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/nsq/newtoff, - NPairHalfRespaNsqNewtoff, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaNsqNewtoff : public NPair { - public: - NPairHalfRespaNsqNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_nsq_newton.cpp b/src/npair_half_respa_nsq_newton.cpp deleted file mode 100644 index 941ce41159..0000000000 --- a/src/npair_half_respa_nsq_newton.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_respa_nsq_newton.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaNsqNewton::NPairHalfRespaNsqNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfRespaNsqNewton::build(NeighList *list) -{ - int i,j,n,itype,jtype,itag,jtag,n_inner,n_middle,bitmask; - int imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itag = tag[i]; - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - ilist[inum] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_nsq_newton.h b/src/npair_half_respa_nsq_newton.h deleted file mode 100644 index 9050ca0fde..0000000000 --- a/src/npair_half_respa_nsq_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/nsq/newton, - NPairHalfRespaNsqNewton, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaNsqNewton : public NPair { - public: - NPairHalfRespaNsqNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_bin_newtoff.cpp b/src/npair_half_size_bin_newtoff.cpp deleted file mode 100644 index de063c1eb9..0000000000 --- a/src/npair_half_size_bin_newtoff.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtoff::NPairHalfSizeBinNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtoff::build(NeighList *list) -{ - int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_bin_newtoff.h b/src/npair_half_size_bin_newtoff.h deleted file mode 100644 index f1f9b2a34b..0000000000 --- a/src/npair_half_size_bin_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newtoff, - NPairHalfSizeBinNewtoff, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtoff : public NPair { - public: - NPairHalfSizeBinNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_bin_newton.cpp b/src/npair_half_size_bin_newton.cpp deleted file mode 100644 index fbf5ce14d4..0000000000 --- a/src/npair_half_size_bin_newton.cpp +++ /dev/null @@ -1,176 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewton::NPairHalfSizeBinNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewton::build(NeighList *list) -{ - int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_bin_newton.h b/src/npair_half_size_bin_newton.h deleted file mode 100644 index a592969c46..0000000000 --- a/src/npair_half_size_bin_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newton, - NPairHalfSizeBinNewton, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewton : public NPair { - public: - NPairHalfSizeBinNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_bin_newton_tri.cpp b/src/npair_half_size_bin_newton_tri.cpp deleted file mode 100644 index 15728a596a..0000000000 --- a/src/npair_half_size_bin_newton_tri.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtonTri::NPairHalfSizeBinNewtonTri(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtonTri::build(NeighList *list) -{ - int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_bin_newton_tri.h b/src/npair_half_size_bin_newton_tri.h deleted file mode 100644 index 50861d560e..0000000000 --- a/src/npair_half_size_bin_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newton/tri, - NPairHalfSizeBinNewtonTri, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtonTri : public NPair { - public: - NPairHalfSizeBinNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_newtoff.cpp b/src/npair_half_size_multi_newtoff.cpp deleted file mode 100644 index ecb70cd6c4..0000000000 --- a/src/npair_half_size_multi_newtoff.cpp +++ /dev/null @@ -1,160 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains -es certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtoff::NPairHalfSizeMultiNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtoff::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_newtoff.h b/src/npair_half_size_multi_newtoff.h deleted file mode 100644 index b33634e5be..0000000000 --- a/src/npair_half_size_multi_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newtoff, - NPairHalfSizeMultiNewtoff, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtoff : public NPair { - public: - NPairHalfSizeMultiNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_newton.cpp b/src/npair_half_size_multi_newton.cpp deleted file mode 100644 index ee100596bc..0000000000 --- a/src/npair_half_size_multi_newton.cpp +++ /dev/null @@ -1,213 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewton::NPairHalfSizeMultiNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewton::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns,js; - int which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if (icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if ((icollection != jcollection) && (j < i)) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_newton.h b/src/npair_half_size_multi_newton.h deleted file mode 100644 index 32139136e6..0000000000 --- a/src/npair_half_size_multi_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newton, - NPairHalfSizeMultiNewton, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewton : public NPair { - public: - NPairHalfSizeMultiNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp deleted file mode 100644 index 9a170948b9..0000000000 --- a/src/npair_half_size_multi_newton_tri.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtonTri::NPairHalfSizeMultiNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtonTri::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns,js; - int which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_newton_tri.h b/src/npair_half_size_multi_newton_tri.h deleted file mode 100644 index 10e7a90d16..0000000000 --- a/src/npair_half_size_multi_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newton/tri, - NPairHalfSizeMultiNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtonTri : public NPair { - public: - NPairHalfSizeMultiNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_old_newtoff.cpp b/src/npair_half_size_multi_old_newtoff.cpp deleted file mode 100644 index 4f8e4a8078..0000000000 --- a/src/npair_half_size_multi_old_newtoff.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtoff::NPairHalfSizeMultiOldNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtoff::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_old_newtoff.h b/src/npair_half_size_multi_old_newtoff.h deleted file mode 100644 index c2ca814129..0000000000 --- a/src/npair_half_size_multi_old_newtoff.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newtoff, - NPairHalfSizeMultiOldNewtoff, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtoff : public NPair { - public: - NPairHalfSizeMultiOldNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED -*/ diff --git a/src/npair_half_size_multi_old_newton.cpp b/src/npair_half_size_multi_old_newton.cpp deleted file mode 100644 index 753c8c7d44..0000000000 --- a/src/npair_half_size_multi_old_newton.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewton::NPairHalfSizeMultiOldNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewton::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - if (history && rsq < radsum*radsum) - j = j ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_old_newton.h b/src/npair_half_size_multi_old_newton.h deleted file mode 100644 index 2322b5bc42..0000000000 --- a/src/npair_half_size_multi_old_newton.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newton, - NPairHalfSizeMultiOldNewton, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewton : public NPair { - public: - NPairHalfSizeMultiOldNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED -*/ diff --git a/src/npair_half_size_multi_old_newton_tri.cpp b/src/npair_half_size_multi_old_newton_tri.cpp deleted file mode 100644 index ee7a11a36e..0000000000 --- a/src/npair_half_size_multi_old_newton_tri.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtonTri::NPairHalfSizeMultiOldNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_old_newton_tri.h b/src/npair_half_size_multi_old_newton_tri.h deleted file mode 100644 index 1658abc717..0000000000 --- a/src/npair_half_size_multi_old_newton_tri.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newton/tri, - NPairHalfSizeMultiOldNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtonTri : public NPair { - public: - NPairHalfSizeMultiOldNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED -*/ diff --git a/src/npair_half_size_nsq_newtoff.cpp b/src/npair_half_size_nsq_newtoff.cpp deleted file mode 100644 index 9ace347901..0000000000 --- a/src/npair_half_size_nsq_newtoff.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_nsq_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewtoff::NPairHalfSizeNsqNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewtoff::build(NeighList *list) -{ - int i,j,jh,n,bitmask,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_nsq_newtoff.h b/src/npair_half_size_nsq_newtoff.h deleted file mode 100644 index b263a907ed..0000000000 --- a/src/npair_half_size_nsq_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/nsq/newtoff, - NPairHalfSizeNsqNewtoff, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewtoff : public NPair { - public: - NPairHalfSizeNsqNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_nsq_newton.cpp b/src/npair_half_size_nsq_newton.cpp deleted file mode 100644 index 05409a0bab..0000000000 --- a/src/npair_half_size_nsq_newton.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_nsq_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewton::NPairHalfSizeNsqNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewton::build(NeighList *list) -{ - int i,j,jh,n,itag,jtag,bitmask,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - tagint *tag = atom->tag; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itag = tag[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_nsq_newton.h b/src/npair_half_size_nsq_newton.h deleted file mode 100644 index 17735ccc45..0000000000 --- a/src/npair_half_size_nsq_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/nsq/newton, - NPairHalfSizeNsqNewton, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewton : public NPair { - public: - NPairHalfSizeNsqNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_halffull_newtoff.cpp b/src/npair_halffull_newtoff.cpp deleted file mode 100644 index 475325c2f0..0000000000 --- a/src/npair_halffull_newtoff.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newtoff.h" - -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtoff::NPairHalffullNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) - works if full list is a skip list - works for owned (non-ghost) list, also for ghost list - if ghost, also store neighbors of ghost atoms & set inum,gnum correctly -------------------------------------------------------------------------- */ - -void NPairHalffullNewtoff::build(NeighList *list) -{ - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - int inum_full = list->listfull->inum; - if (list->ghost) inum_full += list->listfull->gnum; - - int inum = 0; - ipage->reset(); - - // loop over atoms in full list - - for (ii = 0; ii < inum_full; ii++) { - n = 0; - neighptr = ipage->vget(); - - // loop over parent full list - - i = ilist_full[ii]; - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j > i) neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; - if (list->ghost) list->gnum = list->listfull->gnum; -} diff --git a/src/npair_halffull_newtoff.h b/src/npair_halffull_newtoff.h deleted file mode 100644 index 0a00267449..0000000000 --- a/src/npair_halffull_newtoff.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI); - -NPairStyle(halffull/newtoff/skip, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP); - -NPairStyle(halffull/newtoff/ghost, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_GHOST); - -NPairStyle(halffull/newtoff/skip/ghost, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTOFF_H -#define LMP_NPAIR_HALFFULL_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtoff : public NPair { - public: - NPairHalffullNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_halffull_newton.cpp b/src/npair_halffull_newton.cpp deleted file mode 100644 index d9ba02d5b0..0000000000 --- a/src/npair_halffull_newton.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewton::NPairHalffullNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - if j is ghost, only store if j coords are "above and to the right" of i - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewton::build(NeighList *list) -{ - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - double xtmp,ytmp,ztmp; - - double **x = atom->x; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - int inum_full = list->listfull->inum; - - int inum = 0; - ipage->reset(); - - // loop over parent full list - - for (ii = 0; ii < inum_full; ii++) { - n = 0; - neighptr = ipage->vget(); - - i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over full neighbor list - - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j < nlocal) { - if (i > j) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_halffull_newton.h b/src/npair_halffull_newton.h deleted file mode 100644 index 95cc09ec0b..0000000000 --- a/src/npair_halffull_newton.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton, - NPairHalffullNewton, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI); - -NPairStyle(halffull/newton/skip, - NPairHalffullNewton, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI | NP_SKIP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_H -#define LMP_NPAIR_HALFFULL_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewton : public NPair { - public: - NPairHalffullNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp deleted file mode 100644 index 4ef0573dbb..0000000000 --- a/src/npair_skip.cpp +++ /dev/null @@ -1,102 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - works for half and full lists - works for owned (non-ghost) list, also for ghost list - iskip and ijskip flag which atom types and type pairs to skip - if ghost, also store neighbors of ghost atoms & set inum,gnum correctly -------------------------------------------------------------------------- */ - -void NPairSkip::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal; - int *neighptr,*jlist; - - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int num_skip = list->listskip->inum; - if (list->ghost) num_skip += list->listskip->gnum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < num_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; - if (list->ghost) { - int num = 0; - for (i = 0; i < inum; i++) - if (ilist[i] < nlocal) num++; - else break; - list->inum = num; - list->gnum = inum - num; - } -} diff --git a/src/npair_skip.h b/src/npair_skip.h deleted file mode 100644 index aa2b14e12a..0000000000 --- a/src/npair_skip.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip, - NPairSkip, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -NPairStyle(skip/ghost, - NPairSkip, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_H -#define LMP_NPAIR_SKIP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkip : public NPair { - public: - NPairSkip(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp deleted file mode 100644 index 373fe3f8db..0000000000 --- a/src/npair_skip_respa.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_respa.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipRespa::NPairSkipRespa(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - this is for respa lists, copy the inner/middle values from parent -------------------------------------------------------------------------- */ - -void NPairSkipRespa::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal,n_inner,n_middle; - int *neighptr,*jlist,*neighptr_inner,*neighptr_middle; - - int *type = atom->type; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - int *numneigh_inner_skip = list->listskip->numneigh_inner; - int **firstneigh_inner_skip = list->listskip->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int *numneigh_middle_skip,**firstneigh_middle_skip; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - numneigh_middle_skip = list->listskip->numneigh_middle; - firstneigh_middle_skip = list->listskip->firstneigh_middle; - } - - int inum = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - // loop over parent outer rRESPA list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr[n++] = joriginal; - } - - // loop over parent inner rRESPA list - - jlist = firstneigh_inner_skip[i]; - jnum = numneigh_inner_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr_inner[n_inner++] = joriginal; - } - - // loop over parent middle rRESPA list - - if (respamiddle) { - jlist = firstneigh_middle_skip[i]; - jnum = numneigh_middle_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr_middle[n_middle++] = joriginal; - } - } - - ilist[inum] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_skip_respa.h b/src/npair_skip_respa.h deleted file mode 100644 index b0938287b5..0000000000 --- a/src/npair_skip_respa.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/half/respa, - NPairSkipRespa, - NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_RESPA_H -#define LMP_NPAIR_SKIP_RESPA_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipRespa : public NPair { - public: - NPairSkipRespa(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_size.cpp b/src/npair_skip_size.cpp deleted file mode 100644 index f4fe760e08..0000000000 --- a/src/npair_skip_size.cpp +++ /dev/null @@ -1,88 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_size.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSize::NPairSkipSize(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip -------------------------------------------------------------------------- */ - -void NPairSkipSize::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal; - int *neighptr,*jlist; - - int *type = atom->type; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_skip_size.h b/src/npair_skip_size.h deleted file mode 100644 index df8d479185..0000000000 --- a/src/npair_skip_size.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/half/size, - NPairSkipSize, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_H -#define LMP_NPAIR_SKIP_SIZE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSize : public NPair { - public: - NPairSkipSize(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_size_off2on.cpp b/src/npair_skip_size_off2on.cpp deleted file mode 100644 index e48ca345ff..0000000000 --- a/src/npair_skip_size_off2on.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_size_off2on.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSizeOff2on::NPairSkipSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - parent non-skip list used newton off, this skip list is newton on -------------------------------------------------------------------------- */ - -void NPairSkipSizeOff2on::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal; - tagint itag,jtag; - int *neighptr,*jlist; - - tagint *tag = atom->tag; - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - itag = tag[i]; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list and optionally its history info - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // only keep I,J when J = ghost if Itag < Jtag - - jtag = tag[j]; - if (j >= nlocal && jtag < itag) continue; - - neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - list->inum = inum; -} diff --git a/src/npair_skip_size_off2on.h b/src/npair_skip_size_off2on.h deleted file mode 100644 index 39aee76b09..0000000000 --- a/src/npair_skip_size_off2on.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/size/off2on, - NPairSkipSizeOff2on, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_H -#define LMP_NPAIR_SKIP_SIZE_OFF2ON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSizeOff2on : public NPair { - public: - NPairSkipSizeOff2on(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp deleted file mode 100644 index 1e4b4ac78d..0000000000 --- a/src/npair_skip_size_off2on_oneside.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_size_off2on_oneside.h" - -#include "atom.h" -#include "domain.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSizeOff2onOneside::NPairSkipSizeOff2onOneside(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - parent non-skip list used newton off and was not onesided, - this skip list is newton on and onesided -------------------------------------------------------------------------- */ - -void NPairSkipSizeOff2onOneside::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal,flip,tmp; - int *surf,*jlist; - - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - if (domain->dimension == 2) surf = atom->line; - else surf = atom->tri; - - int inum = 0; - ipage->reset(); - - // two loops over parent list required, one to count, one to store - // because onesided constraint means pair I,J may be stored with I or J - // so don't know in advance how much space to alloc for each atom's neighs - - // first loop over atoms in other list to count neighbors - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (i = 0; i < nlocal; i++) numneigh[i] = 0; - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // flip I,J if necessary to satisfy onesided constraint - // do not keep if I is now ghost - - if (surf[i] >= 0) { - if (j >= nlocal) continue; - tmp = i; - i = j; - j = tmp; - flip = 1; - } else flip = 0; - - numneigh[i]++; - if (flip) i = j; - } - } - - // allocate all per-atom neigh list chunks - - for (i = 0; i < nlocal; i++) { - if (numneigh[i] == 0) continue; - n = numneigh[i]; - firstneigh[i] = ipage->get(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - // second loop over atoms in other list to store neighbors - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (i = 0; i < nlocal; i++) numneigh[i] = 0; - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - // loop over parent non-skip size list and optionally its history info - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // flip I,J if necessary to satisfy onesided constraint - // do not keep if I is now ghost - - if (surf[i] >= 0) { - if (j >= nlocal) continue; - tmp = i; - i = j; - j = tmp; - flip = 1; - } else flip = 0; - - // store j in neigh list, not joriginal, like other neigh methods - // OK, b/c there is no special list flagging for surfs - - firstneigh[i][numneigh[i]] = j; - numneigh[i]++; - if (flip) i = j; - } - - // only add atom I to ilist if it has neighbors - - if (numneigh[i]) ilist[inum++] = i; - } - - list->inum = inum; -} diff --git a/src/npair_skip_size_off2on_oneside.h b/src/npair_skip_size_off2on_oneside.h deleted file mode 100644 index 3f1cd6ef34..0000000000 --- a/src/npair_skip_size_off2on_oneside.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/size/off2on/oneside, - NPairSkipSizeOff2onOneside, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H -#define LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSizeOff2onOneside : public NPair { - public: - NPairSkipSizeOff2onOneside(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_bin.cpp similarity index 51% rename from src/nstencil_half_bin_3d_tri.cpp rename to src/nstencil_bin.cpp index 8d1920ae8c..c5026cb338 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_bin.cpp @@ -12,28 +12,55 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "nstencil_half_bin_3d_tri.h" +#include "nstencil_bin.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfBin3dTri::NStencilHalfBin3dTri(LAMMPS *lmp) : - NStencil(lmp) {} +template +NStencilBin::NStencilBin(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff ------------------------------------------------------------------------- */ -void NStencilHalfBin3dTri::create() +template +void NStencilBin::create() { int i,j,k; + bool bin_include; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; nstencil = 0; - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Half and ortho stencils only include own and "upper right" bins + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i >= 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i >= 0))) continue; + if (bin_distance(i,j,k) < cutneighmaxsq) stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilBin<0,0,0>; +template class NStencilBin<0,1,0>; +template class NStencilBin<1,0,0>; +template class NStencilBin<1,0,1>; +template class NStencilBin<1,1,0>; +template class NStencilBin<1,1,1>; } diff --git a/src/nstencil_bin.h b/src/nstencil_bin.h new file mode 100644 index 0000000000..a10150fcda --- /dev/null +++ b/src/nstencil_bin.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilBin<0, 0, 0> NStencilFullBin2d; +NStencilStyle(full/bin/2d, + NStencilFullBin2d, + NS_FULL | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilBin<0, 1, 0> NStencilFullBin3d; +NStencilStyle(full/bin/3d, + NStencilFullBin3d, + NS_FULL | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilBin<1, 0, 0> NStencilHalfBin2d; +NStencilStyle(half/bin/2d, + NStencilHalfBin2d, + NS_HALF | NS_BIN | NS_2D | NS_ORTHO); + +typedef NStencilBin<1, 0, 1> NStencilHalfBin2dTri; +NStencilStyle(half/bin/2d/tri, + NStencilHalfBin2dTri, + NS_HALF | NS_BIN | NS_2D | NS_TRI); + +typedef NStencilBin<1, 1, 0> NStencilHalfBin3d; +NStencilStyle(half/bin/3d, + NStencilHalfBin3d, + NS_HALF | NS_BIN | NS_3D | NS_ORTHO); + +typedef NStencilBin<1, 1, 1> NStencilHalfBin3dTri; +NStencilStyle(half/bin/3d/tri, + NStencilHalfBin3dTri, + NS_HALF | NS_BIN | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_BIN_H +#define LMP_NSTENCIL_BIN_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilBin : public NStencil { + public: + NStencilBin(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/nstencil_full_bin_2d.cpp b/src/nstencil_full_bin_2d.cpp deleted file mode 100644 index ba4ca97ed6..0000000000 --- a/src/nstencil_full_bin_2d.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_bin_2d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullBin2d::NStencilFullBin2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullBin2d::create() -{ - int i,j; - - nstencil = 0; - - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; -} diff --git a/src/nstencil_full_bin_2d.h b/src/nstencil_full_bin_2d.h deleted file mode 100644 index f4c630d3c2..0000000000 --- a/src/nstencil_full_bin_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/bin/2d, - NStencilFullBin2d, - NS_FULL | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_BIN_2D_H -#define LMP_NSTENCIL_FULL_BIN_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullBin2d : public NStencil { - public: - NStencilFullBin2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_bin_3d.cpp b/src/nstencil_full_bin_3d.cpp deleted file mode 100644 index 8aa593eb0b..0000000000 --- a/src/nstencil_full_bin_3d.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_bin_3d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullBin3d::NStencilFullBin3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullBin3d::create() -{ - int i,j,k; - - nstencil = 0; - - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; -} diff --git a/src/nstencil_full_bin_3d.h b/src/nstencil_full_bin_3d.h deleted file mode 100644 index 463dda1f62..0000000000 --- a/src/nstencil_full_bin_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/bin/3d, - NStencilFullBin3d, - NS_FULL | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_BIN_3D_H -#define LMP_NSTENCIL_FULL_BIN_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullBin3d : public NStencil { - public: - NStencilFullBin3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_ghost_bin_2d.cpp b/src/nstencil_full_ghost_bin_2d.cpp deleted file mode 100644 index b5a6bac56c..0000000000 --- a/src/nstencil_full_ghost_bin_2d.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_ghost_bin_2d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullGhostBin2d::NStencilFullGhostBin2d(LAMMPS *lmp) : NStencil(lmp) -{ - xyzflag = 1; -} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullGhostBin2d::create() -{ - int i,j; - - nstencil = 0; - - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) { - stencilxyz[nstencil][0] = i; - stencilxyz[nstencil][1] = j; - stencilxyz[nstencil][2] = 0; - stencil[nstencil++] = j*mbinx + i; - } -} diff --git a/src/nstencil_full_ghost_bin_2d.h b/src/nstencil_full_ghost_bin_2d.h deleted file mode 100644 index 6326aae5ea..0000000000 --- a/src/nstencil_full_ghost_bin_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/ghost/bin/2d, - NStencilFullGhostBin2d, - NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_GHOST_BIN_2D_H -#define LMP_NSTENCIL_FULL_GHOST_BIN_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullGhostBin2d : public NStencil { - public: - NStencilFullGhostBin2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_ghost_bin_3d.cpp b/src/nstencil_full_ghost_bin_3d.cpp deleted file mode 100644 index 2023495c34..0000000000 --- a/src/nstencil_full_ghost_bin_3d.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_ghost_bin_3d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullGhostBin3d::NStencilFullGhostBin3d(LAMMPS *lmp) : NStencil(lmp) -{ - xyzflag = 1; -} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullGhostBin3d::create() -{ - int i,j,k; - - nstencil = 0; - - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) { - stencilxyz[nstencil][0] = i; - stencilxyz[nstencil][1] = j; - stencilxyz[nstencil][2] = k; - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; - } -} diff --git a/src/nstencil_full_ghost_bin_3d.h b/src/nstencil_full_ghost_bin_3d.h deleted file mode 100644 index eed98279aa..0000000000 --- a/src/nstencil_full_ghost_bin_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/ghost/bin/3d, - NStencilFullGhostBin3d, - NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_GHOST_BIN_3D_H -#define LMP_NSTENCIL_FULL_GHOST_BIN_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullGhostBin3d : public NStencil { - public: - NStencilFullGhostBin3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_2d.cpp b/src/nstencil_full_multi_2d.cpp deleted file mode 100644 index 52ae88d09e..0000000000 --- a/src/nstencil_full_multi_2d.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_multi_2d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMulti2d::NStencilFullMulti2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilFullMulti2d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Always look up neighbor using full stencil and neighbor's bin - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - flag_half_multi[i][j] = false; - flag_skip_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMulti2d::create() -{ - int icollection, jcollection, bin_collection, i, j, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_full_multi_2d.h b/src/nstencil_full_multi_2d.h deleted file mode 100644 index 2ef43f1999..0000000000 --- a/src/nstencil_full_multi_2d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/2d, - NStencilFullMulti2d, NS_FULL | NS_MULTI | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_2D_H -#define LMP_NSTENCIL_FULL_MULTI_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMulti2d : public NStencil { - public: - NStencilFullMulti2d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_3d.cpp b/src/nstencil_full_multi_3d.cpp deleted file mode 100644 index d48cf0c8d7..0000000000 --- a/src/nstencil_full_multi_3d.cpp +++ /dev/null @@ -1,86 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_multi_3d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMulti3d::NStencilFullMulti3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilFullMulti3d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Always look up neighbor using full stencil and neighbor's bin - // Stencil cutoff set by i-j cutoff - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - flag_half_multi[i][j] = true; - flag_skip_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMulti3d::create() -{ - int icollection, jcollection, bin_collection, i, j, k, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - sz = stencil_sz_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - mbinz = stencil_mbinz_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_full_multi_3d.h b/src/nstencil_full_multi_3d.h deleted file mode 100644 index 894c688a9f..0000000000 --- a/src/nstencil_full_multi_3d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/3d, - NStencilFullMulti3d, NS_FULL | NS_MULTI | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_3D_H -#define LMP_NSTENCIL_FULL_MULTI_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMulti3d : public NStencil { - public: - NStencilFullMulti3d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_old_2d.cpp b/src/nstencil_full_multi_old_2d.cpp deleted file mode 100644 index d653e1080e..0000000000 --- a/src/nstencil_full_multi_old_2d.cpp +++ /dev/null @@ -1,51 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_multi_old_2d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMultiOld2d::NStencilFullMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMultiOld2d::create() -{ - int i,j,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,0); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_full_multi_old_2d.h b/src/nstencil_full_multi_old_2d.h deleted file mode 100644 index 9b56be0793..0000000000 --- a/src/nstencil_full_multi_old_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/old/2d, - NStencilFullMultiOld2d, - NS_FULL | NS_MULTI_OLD | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_OLD_2D_H -#define LMP_NSTENCIL_FULL_MULTI_OLD_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMultiOld2d : public NStencil { - public: - NStencilFullMultiOld2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_old_3d.cpp b/src/nstencil_full_multi_old_3d.cpp deleted file mode 100644 index 849ee5a9f9..0000000000 --- a/src/nstencil_full_multi_old_3d.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_full_multi_old_3d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMultiOld3d::NStencilFullMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMultiOld3d::create() -{ - int i,j,k,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,k); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_full_multi_old_3d.h b/src/nstencil_full_multi_old_3d.h deleted file mode 100644 index d19da9c95f..0000000000 --- a/src/nstencil_full_multi_old_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/old/3d, - NStencilFullMultiOld3d, - NS_FULL | NS_MULTI_OLD | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_OLD_3D_H -#define LMP_NSTENCIL_FULL_MULTI_OLD_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMultiOld3d : public NStencil { - public: - NStencilFullMultiOld3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_2d.cpp b/src/nstencil_half_bin_2d.cpp deleted file mode 100644 index 004d6a8016..0000000000 --- a/src/nstencil_half_bin_2d.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_bin_2d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfBin2d::NStencilHalfBin2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfBin2d::create() -{ - int i,j; - - nstencil = 0; - - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; -} diff --git a/src/nstencil_half_bin_2d.h b/src/nstencil_half_bin_2d.h deleted file mode 100644 index f11138dd54..0000000000 --- a/src/nstencil_half_bin_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/2d, - NStencilHalfBin2d, - NS_HALF | NS_BIN | NS_2D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_2D_H -#define LMP_NSTENCIL_HALF_BIN_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin2d : public NStencil { - public: - NStencilHalfBin2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_2d_tri.cpp b/src/nstencil_half_bin_2d_tri.cpp deleted file mode 100644 index 9f5ace1ed1..0000000000 --- a/src/nstencil_half_bin_2d_tri.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_bin_2d_tri.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfBin2dTri::NStencilHalfBin2dTri(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfBin2dTri::create() -{ - int i,j; - - nstencil = 0; - - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; -} diff --git a/src/nstencil_half_bin_2d_tri.h b/src/nstencil_half_bin_2d_tri.h deleted file mode 100644 index 5088bc2edc..0000000000 --- a/src/nstencil_half_bin_2d_tri.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/2d/tri, - NStencilHalfBin2dTri, - NS_HALF | NS_BIN | NS_2D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_2D_TRI_H -#define LMP_NSTENCIL_HALF_BIN_2D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin2dTri : public NStencil { - public: - NStencilHalfBin2dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_3d.cpp b/src/nstencil_half_bin_3d.cpp deleted file mode 100644 index a8cacdb601..0000000000 --- a/src/nstencil_half_bin_3d.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_bin_3d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfBin3d::NStencilHalfBin3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfBin3d::create() -{ - int i,j,k; - - nstencil = 0; - - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (k > 0 || j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; -} diff --git a/src/nstencil_half_bin_3d.h b/src/nstencil_half_bin_3d.h deleted file mode 100644 index f235d6688b..0000000000 --- a/src/nstencil_half_bin_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/3d, - NStencilHalfBin3d, - NS_HALF | NS_BIN | NS_3D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_3D_H -#define LMP_NSTENCIL_HALF_BIN_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin3d : public NStencil { - public: - NStencilHalfBin3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_3d_tri.h b/src/nstencil_half_bin_3d_tri.h deleted file mode 100644 index fa2975ef0a..0000000000 --- a/src/nstencil_half_bin_3d_tri.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/3d/tri, - NStencilHalfBin3dTri, - NS_HALF | NS_BIN | NS_3D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_3D_TRI_H -#define LMP_NSTENCIL_HALF_BIN_3D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin3dTri : public NStencil { - public: - NStencilHalfBin3dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_2d.cpp b/src/nstencil_half_multi_2d.cpp deleted file mode 100644 index 81713e183d..0000000000 --- a/src/nstencil_half_multi_2d.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_2d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti2d::NStencilHalfMulti2d(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti2d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti2d::create() -{ - int icollection, jcollection, bin_collection, i, j, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) { - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } - } else { - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} - diff --git a/src/nstencil_half_multi_2d.h b/src/nstencil_half_multi_2d.h deleted file mode 100644 index 043d160b9e..0000000000 --- a/src/nstencil_half_multi_2d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/2d, - NStencilHalfMulti2d, NS_HALF | NS_MULTI | NS_2D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_2D_H -#define LMP_NSTENCIL_HALF_MULTI_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti2d : public NStencil { - public: - NStencilHalfMulti2d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_2d_tri.cpp b/src/nstencil_half_multi_2d_tri.cpp deleted file mode 100644 index d53c503fad..0000000000 --- a/src/nstencil_half_multi_2d_tri.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_2d_tri.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti2dTri::NStencilHalfMulti2dTri(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti2dTri::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti2dTri::create() -{ - int icollection, jcollection, bin_collection, i, j, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } else { - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_half_multi_2d_tri.h b/src/nstencil_half_multi_2d_tri.h deleted file mode 100644 index 1d1a469e72..0000000000 --- a/src/nstencil_half_multi_2d_tri.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/2d/tri, - NStencilHalfMulti2dTri, NS_HALF | NS_MULTI | NS_2D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_2D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_2D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti2dTri : public NStencil { - public: - NStencilHalfMulti2dTri(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_3d.cpp b/src/nstencil_half_multi_3d.cpp deleted file mode 100644 index ca4b4c4111..0000000000 --- a/src/nstencil_half_multi_3d.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_3d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti3d::NStencilHalfMulti3d(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti3d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti3d::create() -{ - int icollection, jcollection, bin_collection, i, j, k, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - sz = stencil_sz_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - mbinz = stencil_mbinz_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (k > 0 || j > 0 || (j == 0 && i > 0)) { - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } - } else { - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} - diff --git a/src/nstencil_half_multi_3d.h b/src/nstencil_half_multi_3d.h deleted file mode 100644 index 246d71f3e4..0000000000 --- a/src/nstencil_half_multi_3d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/3d, - NStencilHalfMulti3d, NS_HALF | NS_MULTI | NS_3D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_3D_H -#define LMP_NSTENCIL_HALF_MULTI_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti3d : public NStencil { - public: - NStencilHalfMulti3d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_3d_tri.cpp b/src/nstencil_half_multi_3d_tri.cpp deleted file mode 100644 index 60df9199a2..0000000000 --- a/src/nstencil_half_multi_3d_tri.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_3d_tri.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti3dTri::NStencilHalfMulti3dTri(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti3dTri::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti3dTri::create() -{ - int icollection, jcollection, bin_collection, i, j, k, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - sz = stencil_sz_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - mbinz = stencil_mbinz_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } else { - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_half_multi_3d_tri.h b/src/nstencil_half_multi_3d_tri.h deleted file mode 100644 index 2ced4b0c20..0000000000 --- a/src/nstencil_half_multi_3d_tri.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/3d/tri, - NStencilHalfMulti3dTri, NS_HALF | NS_MULTI | NS_3D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_3D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_3D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti3dTri : public NStencil { - public: - NStencilHalfMulti3dTri(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_2d.cpp b/src/nstencil_half_multi_old_2d.cpp deleted file mode 100644 index 7a2f5a25e2..0000000000 --- a/src/nstencil_half_multi_old_2d.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_old_2d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld2d:: -NStencilHalfMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld2d::create() -{ - int i,j,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) { - rsq = bin_distance(i,j,0); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_2d.h b/src/nstencil_half_multi_old_2d.h deleted file mode 100644 index 387429d160..0000000000 --- a/src/nstencil_half_multi_old_2d.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/old/2d, - NStencilHalfMultiOld2d, NS_HALF | NS_MULTI_OLD | NS_2D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_2D_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld2d : public NStencil { - public: - NStencilHalfMultiOld2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_2d_tri.cpp b/src/nstencil_half_multi_old_2d_tri.cpp deleted file mode 100644 index 7e5158cc31..0000000000 --- a/src/nstencil_half_multi_old_2d_tri.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_old_2d_tri.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld2dTri:: -NStencilHalfMultiOld2dTri(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld2dTri::create() -{ - int i,j,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,0); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_2d_tri.h b/src/nstencil_half_multi_old_2d_tri.h deleted file mode 100644 index a81d37062c..0000000000 --- a/src/nstencil_half_multi_old_2d_tri.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/old/2d/tri, - NStencilHalfMultiOld2dTri, NS_HALF | NS_MULTI_OLD | NS_2D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_2D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_2D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld2dTri : public NStencil { - public: - NStencilHalfMultiOld2dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_3d.cpp b/src/nstencil_half_multi_old_3d.cpp deleted file mode 100644 index cdb22c2d13..0000000000 --- a/src/nstencil_half_multi_old_3d.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_old_3d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld3d:: -NStencilHalfMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld3d::create() -{ - int i,j,k,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (k > 0 || j > 0 || (j == 0 && i > 0)) { - rsq = bin_distance(i,j,k); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_3d.h b/src/nstencil_half_multi_old_3d.h deleted file mode 100644 index d7d8157afa..0000000000 --- a/src/nstencil_half_multi_old_3d.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi_old/3d, - NStencilHalfMultiOld3d, NS_HALF | NS_MULTI_OLD | NS_3D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_3D_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld3d : public NStencil { - public: - NStencilHalfMultiOld3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_3d_tri.cpp b/src/nstencil_half_multi_old_3d_tri.cpp deleted file mode 100644 index 6fb9b6d3d1..0000000000 --- a/src/nstencil_half_multi_old_3d_tri.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "nstencil_half_multi_old_3d_tri.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld3dTri:: -NStencilHalfMultiOld3dTri(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld3dTri::create() -{ - int i,j,k,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,k); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_3d_tri.h b/src/nstencil_half_multi_old_3d_tri.h deleted file mode 100644 index 2a7a5a22bb..0000000000 --- a/src/nstencil_half_multi_old_3d_tri.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/old/3d/tri, - NStencilHalfMultiOld3dTri, NS_HALF | NS_MULTI_OLD | NS_3D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_3D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_3D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld3dTri : public NStencil { - public: - NStencilHalfMultiOld3dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ From 25b89473b203f4cfa80c3066a284a6a2f898f17f Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 3 Sep 2022 16:46:55 -0600 Subject: [PATCH 0002/1002] changing order of central bin --- src/nstencil_bin.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/nstencil_bin.cpp b/src/nstencil_bin.cpp index c5026cb338..45908671fd 100644 --- a/src/nstencil_bin.cpp +++ b/src/nstencil_bin.cpp @@ -39,15 +39,20 @@ void NStencilBin::create() nstencil = 0; + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (HALF && (!TRI)) stencil[nstencil++] = 0; + for (k = -sz_min; k <= sz; k++) { for (j = -sy_min; j <= sy; j++) { for (i = -sx; i <= sx; i++) { - // Half and ortho stencils only include own and "upper right" bins + // Now only include "upper right" bins for half and ortho stencils if (HALF && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i >= 0))) continue; + if (! (j > 0 || (j == 0 && i > 0))) continue; if (HALF && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i >= 0))) continue; + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; if (bin_distance(i,j,k) < cutneighmaxsq) stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; From a03a6a9692175de24bb4aec471b5383beefcf975 Mon Sep 17 00:00:00 2001 From: Goff Date: Wed, 28 Sep 2022 10:12:00 -0600 Subject: [PATCH 0003/1002] compute pace for ACE descriptor calculations --- src/ML-PACE/compute_pace.cpp | 496 +++++++++++++++++++++++++++++++++++ src/ML-PACE/compute_pace.h | 86 ++++++ 2 files changed, 582 insertions(+) create mode 100644 src/ML-PACE/compute_pace.cpp create mode 100644 src/ML-PACE/compute_pace.h diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp new file mode 100644 index 0000000000..8c2b0b1afa --- /dev/null +++ b/src/ML-PACE/compute_pace.cpp @@ -0,0 +1,496 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "compute_pace.h" +#include "ace_evaluator.h" +#include "ace_c_basis.h" +#include "ace_abstract_basis.h" +#include "ace_types.h" +#include +#include + +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +enum{SCALAR,VECTOR,ARRAY}; +ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), + paceall(nullptr), pace_peratom(nullptr), + basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) +{ + + array_flag = 1; + extarray = 0; + bikflag = 0; + dgradflag = 0; + + int ntypes = atom->ntypes; + int nargmin = 4; + + if (narg < nargmin) error->all(FLERR,"Illegal compute pace command"); + + bikflag = utils::inumeric(FLERR, arg[4], false, lmp); + dgradflag = utils::inumeric(FLERR, arg[5], false, lmp); + if (dgradflag && !bikflag) + error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); + + + memory->create(map,ntypes+1,"pace:map"); + + //read in file with CG coefficients or c_tilde coefficients + basis_set = new ACECTildeBasisSet(arg[3]); + double cut = basis_set->cutoffmax; + double cutmax = basis_set->cutoffmax; + double cuti; + double radelemall = 0.5; + memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + for (int i = 1; i <= ntypes; i++) { + cuti = basis_set->radial_functions->cut(map[i], map[i]); + if (cuti > cutmax) cutmax = cuti; + cutsq[i][i] = cuti*cuti; + for (int j = i+1; j <= ntypes; j++) { + cuti = basis_set->radial_functions->cut(map[i], map[j]); + cutsq[i][j] = cutsq[j][i] = cuti*cuti; + } + } + //# of rank 1, rank > 1 functions + int n_r1, n_rp = 0; + n_r1 = basis_set->total_basis_size_rank1[0]; + n_rp = basis_set->total_basis_size[0]; + + int ncoeff = n_r1 + n_rp; + int nvalues = ncoeff; + + //----------------------------------------------------------- + nperdim = ncoeff; + ndims_force = 3; + ndims_virial = 6; + bik_rows = 1; + yoffset = nperdim; + zoffset = 2*nperdim; + natoms = atom->natoms; + if (bikflag) bik_rows = natoms; + dgrad_rows = ndims_force*natoms; + size_array_rows = bik_rows+dgrad_rows + ndims_virial; + if (dgradflag) { + size_array_rows = bik_rows + 3*natoms*natoms + 1; + size_array_cols = nvalues + 3; + error->warning(FLERR,"dgradflag=1 creates a N^2 array, beware of large systems."); + } + else size_array_cols = nvalues*atom->ntypes + 1; + lastcol = size_array_cols-1; + + ndims_peratom = ndims_force; + size_peratom = ndims_peratom*nperdim*atom->ntypes; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputePACE::~ComputePACE() +{ + memory->destroy(pace); + memory->destroy(paceall); + memory->destroy(cutsq); + memory->destroy(pace_peratom); + memory->destroy(map); +} + +/* ---------------------------------------------------------------------- */ + +void ComputePACE::init() +{ + if (force->pair == nullptr) + error->all(FLERR,"Compute pace requires a pair style be defined"); + if (cutmax > force->pair->cutforce) + error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + + // need an occasional full neighbor list + neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"pace") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute pace"); + + // allocate memory for global array + memory->create(pace,size_array_rows,size_array_cols, + "pace:pace"); + memory->create(paceall,size_array_rows,size_array_cols, + "pace:paceall"); + array = paceall; + + // find compute for reference energy + + std::string id_pe = std::string("thermo_pe"); + int ipe = modify->find_compute(id_pe); + if (ipe == -1) + error->all(FLERR,"compute thermo_pe does not exist."); + c_pe = modify->compute[ipe]; + + // add compute for reference virial tensor + + std::string id_virial = std::string("pace_press"); + std::string pcmd = id_virial + " all pressure NULL virial"; + modify->add_compute(pcmd); + + int ivirial = modify->find_compute(id_virial); + if (ivirial == -1) + error->all(FLERR,"compute pace_press does not exist."); + c_virial = modify->compute[ivirial]; + +} + + +/* ---------------------------------------------------------------------- */ + +void ComputePACE::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputePACE::compute_array() +{ + int ntotal = atom->nlocal + atom->nghost; + double **f = atom->f; + invoked_array = update->ntimestep; + + // grow pace_peratom array if necessary + + if (atom->nmax > nmax) { + memory->destroy(pace_peratom); + nmax = atom->nmax; + memory->create(pace_peratom,nmax,size_peratom, + "pace:pace_peratom"); + } + + // clear global array + + for (int irow = 0; irow < size_array_rows; irow++){ + for (int icoeff = 0; icoeff < size_array_cols; icoeff++){ + pace[irow][icoeff] = 0.0; + } + } + + // clear local peratom array + + for (int i = 0; i < ntotal; i++){ + for (int icoeff = 0; icoeff < size_peratom; icoeff++) { + pace_peratom[i][icoeff] = 0.0; + } + } + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + SPECIES_TYPE *mus; + NS_TYPE *ns; + LS_TYPE *ls; + + int n_r1, n_rp = 0; + n_r1 = basis_set->total_basis_size_rank1[0]; + n_rp = basis_set->total_basis_size[0]; + + const int inum = list->inum; + const int* const ilist = list->ilist; + const int* const numneigh = list->numneigh; + int** const firstneigh = list->firstneigh; + int * const type = atom->type; + + //determine the maximum number of neighbours + int max_jnum = -1; + int nei = 0; + int jtmp =0; + for (int iitmp = 0; iitmp < list->inum; iitmp++) { + int itmp = ilist[iitmp]; + jtmp = numneigh[itmp]; + nei = nei + jtmp; + if (jtmp > max_jnum){ + max_jnum = jtmp; + } + } + + // compute pace derivatives for each atom in group + // use full neighbor list to count atoms less than cutoff + + double** const x = atom->x; + const int* const mask = atom->mask; + const int ntypes = atom->ntypes; + + for (int ii = 0; ii < inum; ii++) { + int irow = 0; + if (bikflag) irow = atom->tag[ilist[ii] & NEIGHMASK]-1; + const int i = ilist[ii]; + if (mask[i] & groupbit) { + const int itype = type[i]; + const int* const jlist = firstneigh[i]; + const int jnum = numneigh[i]; + const int typeoffset_local = ndims_peratom*nperdim*(itype-1); + const int typeoffset_global = nperdim*(itype-1); + + ace = new ACECTildeEvaluator(*basis_set); + int n_r1, n_rp = 0; + n_r1 = basis_set->total_basis_size_rank1[0]; + n_rp = basis_set->total_basis_size[0]; + + int ncoeff = n_r1 + n_rp; + ace->element_type_mapping.init(ntypes+1); + for (int ik = 1; ik <= ntypes; ik++) { + for(int mu = 0; mu < basis_set->nelements; mu++){ + if (mu != -1) { + if (mu == ik - 1) { + map[ik] = mu; + ace->element_type_mapping(ik) = mu; + } + } + } + } + + + if (dgradflag) { + + // dBi/dRi tags + + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][0] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][1] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][2] = 0; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][0] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][1] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][2] = 1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][0] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][1] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][2] = 2; + + // dBi/dRj tags + + for (int j=0; jtag[i]-1) + 0][0] = atom->tag[i]-1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 0][1] = j; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 0][2] = 0; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 1][0] = atom->tag[i]-1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 1][1] = j; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 1][2] = 1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 2][0] = atom->tag[i]-1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 2][1] = j; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 2][2] = 2; + } + } + + // resize the neighbor cache after setting the basis + ace->resize_neighbours_cache(max_jnum); + ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); + Array1D Bs =ace->B_all; + + for (int jj = 0; jj < jnum; jj++) { + const int j = jlist[jj]; + //replace mapping of jj to j + if (!dgradflag) { + double *pacedi = pace_peratom[i]+typeoffset_local; + double *pacedj = pace_peratom[j]+typeoffset_local; + + Array3D fs = ace->neighbours_dB; + //force array in (func_ind,neighbour_ind,xyz_ind) format + // dimension: (n_descriptors,max_jnum,3) + //example to access entries for neighbour jj after running compute_atom for atom i: + for (int func_ind =0; func_ind < n_r1 + n_rp; func_ind++){ + DOUBLE_TYPE fx_dB = fs(func_ind,jj,0); + DOUBLE_TYPE fy_dB = fs(func_ind,jj,1); + DOUBLE_TYPE fz_dB = fs(func_ind,jj,2); + pacedi[func_ind] += fx_dB; + pacedi[func_ind+yoffset] += fy_dB; + pacedi[func_ind+zoffset] += fz_dB; + pacedj[func_ind] -= fx_dB; + pacedj[func_ind+yoffset] -= fy_dB; + pacedj[func_ind+zoffset] -= fz_dB; + } + } else { + //printf("inside dBi/dRj logical : ncoeff = %d \n", ncoeff); + Array3D fs = ace->neighbours_dB; + for (int iicoeff = 0; iicoeff < ncoeff; iicoeff++) { + + // add to pace array for this proc + //printf("inside dBi/dRj loop\n"); + // dBi/dRj + DOUBLE_TYPE fx_dB = fs(iicoeff,jj,0); + DOUBLE_TYPE fy_dB = fs(iicoeff,jj,1); + DOUBLE_TYPE fz_dB = fs(iicoeff,jj,2); + pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][iicoeff+3] -= fx_dB; + pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][iicoeff+3] -= fy_dB; + pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][iicoeff+3] -= fz_dB; + + // dBi/dRi + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][iicoeff+3] += fx_dB; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][iicoeff+3] += fy_dB; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][iicoeff+3] += fz_dB; + } + } + } // loop over jj inside + if (!dgradflag) { + + int k = typeoffset_global; + + for (int icoeff = 0; icoeff < ncoeff; icoeff++){ + pace[0][k++] += Bs(icoeff); + } + } else { + int k = 3; + for (int icoeff = 0; icoeff < ncoeff; icoeff++){ + pace[irow][k++] += Bs(icoeff); + } + } + delete ace; + } //group bit + } // for ii loop + delete basis_set; + // accumulate force contributions to global array + if (!dgradflag){ + for (int itype = 0; itype < atom->ntypes; itype++) { + const int typeoffset_local = ndims_peratom*nperdim*itype; + const int typeoffset_global = nperdim*itype; + for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int i = 0; i < ntotal; i++) { + double *pacedi = pace_peratom[i]+typeoffset_local; + int iglobal = atom->tag[i]; + int irow = 3*(iglobal-1)+1; + pace[irow++][icoeff+typeoffset_global] += pacedi[icoeff]; + pace[irow++][icoeff+typeoffset_global] += pacedi[icoeff+yoffset]; + pace[irow][icoeff+typeoffset_global] += pacedi[icoeff+zoffset]; + } + } + } + } + + if (!dgradflag) { + // accumulate forces to global array + for (int i = 0; i < atom->nlocal; i++) { + int iglobal = atom->tag[i]; + int irow = 3*(iglobal-1)+1; + pace[irow++][lastcol] = atom->f[i][0]; + pace[irow++][lastcol] = atom->f[i][1]; + pace[irow][lastcol] = atom->f[i][2]; + } + } else { + + // for dgradflag=1, put forces at first 3 columns of bik rows + + for (int i=0; inlocal; i++) { + int iglobal = atom->tag[i]; + pace[iglobal-1][0+0] = atom->f[i][0]; + pace[iglobal-1][0+1] = atom->f[i][1]; + pace[iglobal-1][0+2] = atom->f[i][2]; + } + } + + dbdotr_compute(); + + // sum up over all processes + MPI_Allreduce(&pace[0][0],&paceall[0][0],size_array_rows*size_array_cols,MPI_DOUBLE,MPI_SUM,world); + + // assign energy to last column + + if (!dgradflag) { + for (int i = 0; i < bik_rows; i++) paceall[i][lastcol] = 0; + int irow = 0; + double reference_energy = c_pe->compute_scalar(); + paceall[irow][lastcol] = reference_energy; + } else { + + // assign reference energy right after the dgrad rows, first column + + int irow = bik_rows + 3*natoms*natoms; + double reference_energy = c_pe->compute_scalar(); + paceall[irow][0] = reference_energy; + } + + // assign virial stress to last column + // switch to Voigt notation + + if (!dgradflag) { + c_virial->compute_vector(); + int irow = 3*natoms+bik_rows; + paceall[irow++][lastcol] = c_virial->vector[0]; + paceall[irow++][lastcol] = c_virial->vector[1]; + paceall[irow++][lastcol] = c_virial->vector[2]; + paceall[irow++][lastcol] = c_virial->vector[5]; + paceall[irow++][lastcol] = c_virial->vector[4]; + paceall[irow++][lastcol] = c_virial->vector[3]; + } +} + +/* ---------------------------------------------------------------------- + compute global virial contributions via summing r_i.dB^j/dr_i over + own & ghost atoms +------------------------------------------------------------------------- */ +void ComputePACE::dbdotr_compute() +{ + + if (dgradflag) return; + + double **x = atom->x; + int irow0 = bik_rows+ndims_force*natoms; + + // sum over ace contributions to forces + // on all particles including ghosts + + int nall = atom->nlocal + atom->nghost; + for (int i = 0; i < nall; i++) + for (int itype = 0; itype < atom->ntypes; itype++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + double *pacedi = pace_peratom[i]+typeoffset_local; + for (int icoeff = 0; icoeff < nperdim; icoeff++) { + double dbdx = pacedi[icoeff]; + double dbdy = pacedi[icoeff+yoffset]; + double dbdz = pacedi[icoeff+zoffset]; + int irow = irow0; + pace[irow++][icoeff+typeoffset_global] += dbdx*x[i][0]; + pace[irow++][icoeff+typeoffset_global] += dbdy*x[i][1]; + pace[irow++][icoeff+typeoffset_global] += dbdz*x[i][2]; + pace[irow++][icoeff+typeoffset_global] += dbdz*x[i][1]; + pace[irow++][icoeff+typeoffset_global] += dbdz*x[i][0]; + pace[irow++][icoeff+typeoffset_global] += dbdy*x[i][0]; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage +------------------------------------------------------------------------- */ + +double ComputePACE::memory_usage() +{ + + double bytes = (double)size_array_rows*size_array_cols * + sizeof(double); // pace + bytes += (double)size_array_rows*size_array_cols * + sizeof(double); // paceall + bytes += (double)nmax*size_peratom * sizeof(double); // pace_peratom + int n = atom->ntypes+1; + bytes += (double)n*sizeof(int); // map + + return bytes; +} diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h new file mode 100644 index 0000000000..e806c65c16 --- /dev/null +++ b/src/ML-PACE/compute_pace.h @@ -0,0 +1,86 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(pace,ComputePACE); +// clang-format on +#else + +#ifndef LMP_COMPUTE_PACE_H +#define LMP_COMPUTE_PACE_H + +#include "compute.h" +#include "ace_c_basis.h" +#include "ace_evaluator.h" +#include "ace_abstract_basis.h" + +namespace LAMMPS_NS { + +class ComputePACE : public Compute { + public: + ComputePACE(class LAMMPS *, int, char **); + ~ComputePACE(); + void init(); + void init_list(int, class NeighList *); + void compute_array(); + double memory_usage(); + + private: + int natoms, nmax, size_peratom, lastcol; + int ncoeff, nvalues, nperdim, yoffset, zoffset; + int ndims_peratom, ndims_force, ndims_virial; + double **cutsq; + class NeighList *list; + double **pace, **paceall; + double **pace_peratom; + double rcutfac; + int *map; // map types to [0,nelements) + int nelements, chemflag; + int bikflag, bik_rows, dgradflag, dgrad_rows; + double *cg; + class ACECTildeEvaluator *ace; + class ACECTildeBasisSet *basis_set; + double cutmax; + Compute *c_pe; + Compute *c_virial; + + void dbdotr_compute(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Compute pace requires a pair style be defined + +Self-explanatory. + +E: Compute pace cutoff is longer than pairwise cutoff + +UNDOCUMENTED + +W: More than one compute pace/atom + +Self-explanatory. + +*/ From 43698824f122de724af3e7aa629f66d1650044b4 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:07:50 -0600 Subject: [PATCH 0004/1002] add examples --- examples/test.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt new file mode 100644 index 0000000000..58e2592d61 --- /dev/null +++ b/examples/test.txt @@ -0,0 +1,2 @@ +this is a test + From b4eab5e9b01f5fa59d97de1bf19b96c549e9fc4e Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:08:56 -0600 Subject: [PATCH 0005/1002] add examples --- .../multi-elem/coupling_coefficients.yace | 294 ++++++++++++++++++ examples/pace/multi-elem/latte_cell_0.data | 172 ++++++++++ examples/pace/multi-elem/latte_cell_0.xyz | 163 ++++++++++ .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 0 -> 1424928 bytes examples/pace/multi-elem/loop.sh | 7 + examples/pace/multi-elem/test_en.py | 84 +++++ 6 files changed, 720 insertions(+) create mode 100644 examples/pace/multi-elem/coupling_coefficients.yace create mode 100644 examples/pace/multi-elem/latte_cell_0.data create mode 100644 examples/pace/multi-elem/latte_cell_0.xyz create mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy create mode 100755 examples/pace/multi-elem/loop.sh create mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/pace/multi-elem/coupling_coefficients.yace new file mode 100644 index 0000000000..2953222216 --- /dev/null +++ b/examples/pace/multi-elem/coupling_coefficients.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/pace/multi-elem/latte_cell_0.data new file mode 100644 index 0000000000..b18ec13a4d --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/pace/multi-elem/latte_cell_0.xyz new file mode 100644 index 0000000000..afe0a27f35 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.xyz @@ -0,0 +1,163 @@ +161 +Lattice="12.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 12.0" Properties=species:S:1:pos:R:3 pbc="T T T" +O 1.26880968 2.00799384 2.74468299 +H 1.53430682 2.06387665 3.71056269 +H 1.78482796 2.67550034 2.22688472 +H 1.56251195 1.10891269 2.39781152 +H 11.61728216 5.71881094 2.47320460 +N 6.55018656 4.74395668 3.65260255 +H 6.45648953 4.15716730 2.69752680 +N 2.08355610 1.59406078 8.54980476 +H 1.10411625 1.49717716 8.15078792 +H 2.60115534 2.29459604 7.95374187 +H 1.98177233 2.01940664 9.51282394 +H 0.99333338 3.69839073 8.19039479 +O 4.94840710 5.36455014 9.16152503 +H 9.07161706 9.37484540 4.22764624 +N 0.30864419 7.71366575 2.92749956 +H 0.47661671 10.18072110 3.71160091 +H 1.07465334 7.82269220 3.57714669 +H 0.38402250 8.37704933 2.17484371 +H 11.43541341 7.79037360 3.40402455 +O 6.15703846 10.25988474 3.50899568 +H 5.59322244 9.56329447 3.14465590 +N 1.77855690 7.63125793 9.14884523 +H 2.55940486 6.96832838 9.30697002 +H 2.12441551 8.45479870 8.64286229 +H 1.04552782 7.16977228 8.58942450 +H 0.34824446 10.17844028 9.16294638 +O 5.96388304 10.72370940 9.45688039 +H 6.58908357 10.92648611 8.79819258 +N 7.10658904 1.83029753 3.34525436 +H 6.92293050 1.84650221 4.30890371 +H 8.07804336 1.93030522 3.20895214 +H 5.67953736 10.47183163 4.32443905 +H 6.82999417 0.95850113 2.98152882 +N 11.38380535 4.63012252 2.53936884 +H 0.37927047 4.19432163 2.59073807 +O 5.23764101 1.91523463 9.72406364 +H 4.78872025 2.70369365 9.56981423 +H 9.81299067 9.20751407 4.08265499 +H 4.79808795 1.14034947 9.67399628 +H 5.44558456 2.01021000 10.62077351 +O 0.90954339 4.62400932 8.31081106 +H 11.90973532 4.74838140 8.25006246 +N 7.32234245 7.58664570 3.02452265 +H 7.44703622 8.31696467 3.71480033 +H 6.90738053 7.93850210 2.17237687 +H 5.55428685 5.11760658 3.76552520 +H 6.81243095 6.77788116 3.39732325 +N 0.29575823 11.04303794 3.10161425 +H 0.86490722 11.83879228 3.63899745 +O 6.85201686 8.08463693 8.87628788 +H 7.33514301 7.42634987 9.38216748 +H 6.79196133 7.75954772 7.97161748 +H 3.89904877 6.42834904 8.88324096 +H 5.95997296 9.93297232 9.47466547 +O 11.40365898 10.37196036 9.27660922 +H 10.98366636 9.51571998 9.14787573 +O 1.52232797 5.33273311 0.57537606 +H 2.38151140 5.72519912 0.77945296 +H 0.92079957 6.09312823 0.62203253 +O 11.23490924 2.91533552 6.75850641 +H 10.79234019 2.97552251 5.90000184 +H 10.75124206 2.18961560 7.18074015 +O 11.39027944 7.34628556 6.72582995 +H 10.92025679 6.69831954 7.27766966 +H 11.12238028 7.06320210 5.83941078 +O 8.46843195 10.71736286 10.60018556 +H 8.56722016 11.42046608 11.25794033 +H 9.08031098 10.04804949 10.94065170 +O 6.58517573 9.99406234 6.55746149 +H 7.02763258 10.76096604 6.17233337 +H 5.74193274 10.38458392 6.82288230 +O 1.76005464 1.01771919 5.49267877 +H 1.97042091 1.01748419 6.44297037 +H 1.42973007 0.11076352 5.34706449 +H 2.61130613 9.70341237 10.45030683 +O 3.05086908 10.48131334 10.08518931 +H 3.00326932 10.93357295 9.36521210 +O 6.46315322 8.76520583 11.96784797 +H 6.45068084 9.65965953 11.58895602 +H 5.66116297 8.35357377 11.63844333 +O 1.17459993 5.24206908 5.10014497 +H 1.31932881 5.52363924 6.01289663 +H 0.58053835 4.48981346 5.23255650 +O 6.72755497 0.78840875 7.38172809 +H 6.38879656 1.54670982 6.86345204 +H 7.67917840 0.94039024 7.26494610 +O 8.54766572 0.00647503 5.04505141 +H 8.87362909 11.10484108 4.86018079 +H 8.04775976 0.20198361 4.23573994 +O 1.28950300 8.42800979 11.82038504 +H 1.47666664 8.10878664 10.87290333 +H 2.10220669 8.19476202 0.29510553 +O 9.67979076 6.42073355 4.34691506 +H 8.92715301 6.72940235 3.79741224 +H 10.20024126 5.91677392 3.66976111 +O 3.57411616 6.70410217 3.88254785 +H 2.88948995 6.15605298 4.29808481 +H 4.36137077 6.43047324 4.38049654 +O 4.75065560 11.44185335 1.12537088 +H 4.08611928 10.74852367 1.19233471 +H 5.50353016 10.96568825 0.73651277 +O 9.52545264 4.89944439 8.37322841 +H 8.78859598 4.35080439 8.66328314 +H 9.61490675 4.60849115 7.45400687 +O 4.19707467 1.34592128 3.67401439 +H 4.94370120 0.74406281 3.51406800 +H 4.19055349 1.77303760 2.79630494 +O 1.88232618 11.95451227 0.60024434 +H 2.04645873 11.02454723 0.38329541 +H 1.15184937 0.17494341 11.99928285 +O 3.75938422 11.01685511 6.45620508 +H 3.21254143 10.45537470 5.88949171 +H 3.41660269 10.82155767 7.32965639 +O 9.70398414 3.95001545 11.89474325 +H 10.46166606 3.91631180 11.28543523 +H 10.09834695 4.40269974 0.68193008 +O 8.56395964 3.51695075 5.62241042 +H 8.39666503 2.62622147 5.26381643 +H 7.96953714 4.08250598 5.00494074 +O 9.67362450 0.48030482 7.92575778 +H 9.61319804 11.88341918 7.16809240 +H 9.97840503 11.90238635 8.63894187 +O 3.94241531 6.96502967 11.60258943 +H 4.27671527 6.84600490 10.67022522 +H 4.65706385 6.51294615 0.09115988 +O 3.05701732 9.66319585 3.66112506 +H 2.54004901 9.57433550 2.84440476 +H 2.93148744 8.78098072 4.04252342 +O 7.45496127 5.84308508 11.01138472 +H 8.16758841 5.46391828 10.47644287 +H 6.71355737 5.83938184 10.36109975 +O 9.80291393 7.95789017 10.21404942 +H 10.38910242 8.34006414 10.87949429 +H 9.06376120 7.63923741 10.75692887 +O 4.49634356 4.10679358 11.73387805 +H 4.54737279 4.95779709 11.19223377 +H 5.35888184 4.17561117 0.20355937 +O 9.59234481 7.34180146 1.34856172 +H 8.87155933 7.47768372 2.05040471 +H 9.04432217 7.27322008 0.54011714 +O 7.03509631 3.22348773 0.70708240 +H 7.17844705 4.13403143 1.01841097 +H 7.77878544 2.78888884 1.15838887 +O 9.21241078 0.48085900 1.21751966 +H 9.66204365 11.65727108 1.45318397 +H 9.94048839 1.11619136 1.18684594 +O 1.19704207 9.58599592 6.61908889 +H 0.25606413 9.67373665 6.83193409 +H 1.26900519 8.62493549 6.54801125 +O 0.78256134 2.60406093 11.45340836 +H 0.61502181 3.56074060 11.40300991 +H 1.55655312 2.54573688 10.86673303 +O 5.86279361 7.12170548 5.89173203 +H 6.34324107 7.94001367 6.08558403 +H 5.50772967 6.84683068 6.74368758 +O 10.88782815 9.96374825 0.51092816 +H 11.78841776 10.32204307 0.44704989 +H 11.02688182 9.20519067 1.09766613 +O 3.93073389 4.16456745 5.71378770 +H 4.68840630 3.57889133 5.56446058 +H 4.29569485 4.76448881 6.38016697 diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy new file mode 100644 index 0000000000000000000000000000000000000000..27f08781454251ec44961a1f4a90ba6fb86797b0 GIT binary patch literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe 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 z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` 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 Date: Thu, 29 Sep 2022 10:07:22 -0600 Subject: [PATCH 0006/1002] Working multi-element example --- examples/pace/multi-elem/README.md | 5 ++++ examples/pace/multi-elem/loop.sh | 1 + examples/pace/multi-elem/test_en.py | 6 ++-- src/ML-PACE/compute_pace.cpp | 45 ++++++++++++++++++++--------- 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 examples/pace/multi-elem/README.md diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md new file mode 100644 index 0000000000..e2ab583d10 --- /dev/null +++ b/examples/pace/multi-elem/README.md @@ -0,0 +1,5 @@ +Check that seg fault doesn't occur by doing: + + ./loop.sh + +which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/loop.sh b/examples/pace/multi-elem/loop.sh index cd9f6da895..613636a30e 100755 --- a/examples/pace/multi-elem/loop.sh +++ b/examples/pace/multi-elem/loop.sh @@ -1,6 +1,7 @@ for (( ; ; )) do python test_en.py + # terminate loop if seg fault if [[ $? -eq 139 ]]; then break fi diff --git a/examples/pace/multi-elem/test_en.py b/examples/pace/multi-elem/test_en.py index b9dc064189..17c1924080 100644 --- a/examples/pace/multi-elem/test_en.py +++ b/examples/pace/multi-elem/test_en.py @@ -19,6 +19,8 @@ def run_struct(f): cmds = ["-screen", "none", "-log", "none"] lmp = lammps(cmdargs = cmds) + print("Made LAMMPS instance") + def run_lammps(dgradflag): # simulation settings @@ -68,8 +70,9 @@ def run_struct(f): nd = 91 dgradflag = 0 + run_lammps(dgradflag) - + lmp_pace = lmp.numpy.extract_compute("pace", LMP_STYLE_GLOBAL, LMP_TYPE_ARRAY) print ('global shape',np.shape(lmp_pace)) np.save('%s_chi_i.npy' % file_prefix,lmp_pace) @@ -77,7 +80,6 @@ def run_struct(f): del lmp return None - import glob for f in sorted(glob.glob('*.xyz')): print ('running %s' % f) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 8c2b0b1afa..74f00f9b52 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -38,7 +38,6 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : paceall(nullptr), pace_peratom(nullptr), basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) { - array_flag = 1; extarray = 0; bikflag = 0; @@ -54,40 +53,53 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + for (int i=0; icutoffmax; - double cutmax = basis_set->cutoffmax; + cutmax = basis_set->cutoffmax; double cuti; double radelemall = 0.5; + /* memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + printf("----- looping over ntypes\n"); for (int i = 1; i <= ntypes; i++) { + printf("----- map[%d]: %d\n", i, map[i]); cuti = basis_set->radial_functions->cut(map[i], map[i]); if (cuti > cutmax) cutmax = cuti; cutsq[i][i] = cuti*cuti; for (int j = i+1; j <= ntypes; j++) { + //printf("----- j: %d\n", j); + printf("----- map[%d]: %d\n", j, map[j]); cuti = basis_set->radial_functions->cut(map[i], map[j]); cutsq[i][j] = cutsq[j][i] = cuti*cuti; } } + printf("----- looped over ntypes\n"); + */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - int nvalues = ncoeff; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- - nperdim = ncoeff; + //nperdim = ncoeff; + ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nperdim; - zoffset = 2*nperdim; + yoffset = nvalues; //nperdim; + zoffset = 2*nvalues; //nperdim; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -101,7 +113,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : lastcol = size_array_cols-1; ndims_peratom = ndims_force; - size_peratom = ndims_peratom*nperdim*atom->ntypes; + size_peratom = ndims_peratom*nvalues*atom->ntypes; nmax = 0; } @@ -123,9 +135,14 @@ void ComputePACE::init() { if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); + + printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + //if (basis_set->cutoffmax > force->pair->cutforce) + // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -249,8 +266,8 @@ void ComputePACE::compute_array() const int itype = type[i]; const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - const int typeoffset_local = ndims_peratom*nperdim*(itype-1); - const int typeoffset_global = nperdim*(itype-1); + const int typeoffset_local = ndims_peratom*nvalues*(itype-1); + const int typeoffset_global = nvalues*(itype-1); ace = new ACECTildeEvaluator(*basis_set); int n_r1, n_rp = 0; @@ -369,9 +386,9 @@ void ComputePACE::compute_array() // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { - const int typeoffset_local = ndims_peratom*nperdim*itype; - const int typeoffset_global = nperdim*itype; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + for (int icoeff = 0; icoeff < nvalues; icoeff++) { for (int i = 0; i < ntotal; i++) { double *pacedi = pace_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; @@ -462,7 +479,7 @@ void ComputePACE::dbdotr_compute() const int typeoffset_local = ndims_peratom*nvalues*itype; const int typeoffset_global = nvalues*itype; double *pacedi = pace_peratom[i]+typeoffset_local; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int icoeff = 0; icoeff < nvalues; icoeff++) { double dbdx = pacedi[icoeff]; double dbdy = pacedi[icoeff+yoffset]; double dbdz = pacedi[icoeff+zoffset]; From 80da41efc9e3bcc0d7ed063902bb716b0b2130e6 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 29 Sep 2022 10:53:28 -0600 Subject: [PATCH 0007/1002] No need to populate map in constructor --- src/ML-PACE/compute_pace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 74f00f9b52..e9899d1962 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -56,9 +56,11 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : // map[i] = which element the Ith atom type is, -1 if not mapped // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + /* for (int i=0; i Date: Wed, 28 Sep 2022 13:07:50 -0600 Subject: [PATCH 0008/1002] add examples --- examples/test.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt new file mode 100644 index 0000000000..58e2592d61 --- /dev/null +++ b/examples/test.txt @@ -0,0 +1,2 @@ +this is a test + From bc6a419dd4c6223bb1cc241ac2256b7d2d3c7a8c Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:08:56 -0600 Subject: [PATCH 0009/1002] add examples --- .../multi-elem/coupling_coefficients.yace | 294 ++++++++++++++++++ examples/pace/multi-elem/latte_cell_0.data | 172 ++++++++++ examples/pace/multi-elem/latte_cell_0.xyz | 163 ++++++++++ .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 0 -> 1424928 bytes examples/pace/multi-elem/loop.sh | 7 + examples/pace/multi-elem/test_en.py | 84 +++++ 6 files changed, 720 insertions(+) create mode 100644 examples/pace/multi-elem/coupling_coefficients.yace create mode 100644 examples/pace/multi-elem/latte_cell_0.data create mode 100644 examples/pace/multi-elem/latte_cell_0.xyz create mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy create mode 100755 examples/pace/multi-elem/loop.sh create mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/pace/multi-elem/coupling_coefficients.yace new file mode 100644 index 0000000000..2953222216 --- /dev/null +++ b/examples/pace/multi-elem/coupling_coefficients.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/pace/multi-elem/latte_cell_0.data new file mode 100644 index 0000000000..b18ec13a4d --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/pace/multi-elem/latte_cell_0.xyz new file mode 100644 index 0000000000..afe0a27f35 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.xyz @@ -0,0 +1,163 @@ +161 +Lattice="12.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 12.0" Properties=species:S:1:pos:R:3 pbc="T T T" +O 1.26880968 2.00799384 2.74468299 +H 1.53430682 2.06387665 3.71056269 +H 1.78482796 2.67550034 2.22688472 +H 1.56251195 1.10891269 2.39781152 +H 11.61728216 5.71881094 2.47320460 +N 6.55018656 4.74395668 3.65260255 +H 6.45648953 4.15716730 2.69752680 +N 2.08355610 1.59406078 8.54980476 +H 1.10411625 1.49717716 8.15078792 +H 2.60115534 2.29459604 7.95374187 +H 1.98177233 2.01940664 9.51282394 +H 0.99333338 3.69839073 8.19039479 +O 4.94840710 5.36455014 9.16152503 +H 9.07161706 9.37484540 4.22764624 +N 0.30864419 7.71366575 2.92749956 +H 0.47661671 10.18072110 3.71160091 +H 1.07465334 7.82269220 3.57714669 +H 0.38402250 8.37704933 2.17484371 +H 11.43541341 7.79037360 3.40402455 +O 6.15703846 10.25988474 3.50899568 +H 5.59322244 9.56329447 3.14465590 +N 1.77855690 7.63125793 9.14884523 +H 2.55940486 6.96832838 9.30697002 +H 2.12441551 8.45479870 8.64286229 +H 1.04552782 7.16977228 8.58942450 +H 0.34824446 10.17844028 9.16294638 +O 5.96388304 10.72370940 9.45688039 +H 6.58908357 10.92648611 8.79819258 +N 7.10658904 1.83029753 3.34525436 +H 6.92293050 1.84650221 4.30890371 +H 8.07804336 1.93030522 3.20895214 +H 5.67953736 10.47183163 4.32443905 +H 6.82999417 0.95850113 2.98152882 +N 11.38380535 4.63012252 2.53936884 +H 0.37927047 4.19432163 2.59073807 +O 5.23764101 1.91523463 9.72406364 +H 4.78872025 2.70369365 9.56981423 +H 9.81299067 9.20751407 4.08265499 +H 4.79808795 1.14034947 9.67399628 +H 5.44558456 2.01021000 10.62077351 +O 0.90954339 4.62400932 8.31081106 +H 11.90973532 4.74838140 8.25006246 +N 7.32234245 7.58664570 3.02452265 +H 7.44703622 8.31696467 3.71480033 +H 6.90738053 7.93850210 2.17237687 +H 5.55428685 5.11760658 3.76552520 +H 6.81243095 6.77788116 3.39732325 +N 0.29575823 11.04303794 3.10161425 +H 0.86490722 11.83879228 3.63899745 +O 6.85201686 8.08463693 8.87628788 +H 7.33514301 7.42634987 9.38216748 +H 6.79196133 7.75954772 7.97161748 +H 3.89904877 6.42834904 8.88324096 +H 5.95997296 9.93297232 9.47466547 +O 11.40365898 10.37196036 9.27660922 +H 10.98366636 9.51571998 9.14787573 +O 1.52232797 5.33273311 0.57537606 +H 2.38151140 5.72519912 0.77945296 +H 0.92079957 6.09312823 0.62203253 +O 11.23490924 2.91533552 6.75850641 +H 10.79234019 2.97552251 5.90000184 +H 10.75124206 2.18961560 7.18074015 +O 11.39027944 7.34628556 6.72582995 +H 10.92025679 6.69831954 7.27766966 +H 11.12238028 7.06320210 5.83941078 +O 8.46843195 10.71736286 10.60018556 +H 8.56722016 11.42046608 11.25794033 +H 9.08031098 10.04804949 10.94065170 +O 6.58517573 9.99406234 6.55746149 +H 7.02763258 10.76096604 6.17233337 +H 5.74193274 10.38458392 6.82288230 +O 1.76005464 1.01771919 5.49267877 +H 1.97042091 1.01748419 6.44297037 +H 1.42973007 0.11076352 5.34706449 +H 2.61130613 9.70341237 10.45030683 +O 3.05086908 10.48131334 10.08518931 +H 3.00326932 10.93357295 9.36521210 +O 6.46315322 8.76520583 11.96784797 +H 6.45068084 9.65965953 11.58895602 +H 5.66116297 8.35357377 11.63844333 +O 1.17459993 5.24206908 5.10014497 +H 1.31932881 5.52363924 6.01289663 +H 0.58053835 4.48981346 5.23255650 +O 6.72755497 0.78840875 7.38172809 +H 6.38879656 1.54670982 6.86345204 +H 7.67917840 0.94039024 7.26494610 +O 8.54766572 0.00647503 5.04505141 +H 8.87362909 11.10484108 4.86018079 +H 8.04775976 0.20198361 4.23573994 +O 1.28950300 8.42800979 11.82038504 +H 1.47666664 8.10878664 10.87290333 +H 2.10220669 8.19476202 0.29510553 +O 9.67979076 6.42073355 4.34691506 +H 8.92715301 6.72940235 3.79741224 +H 10.20024126 5.91677392 3.66976111 +O 3.57411616 6.70410217 3.88254785 +H 2.88948995 6.15605298 4.29808481 +H 4.36137077 6.43047324 4.38049654 +O 4.75065560 11.44185335 1.12537088 +H 4.08611928 10.74852367 1.19233471 +H 5.50353016 10.96568825 0.73651277 +O 9.52545264 4.89944439 8.37322841 +H 8.78859598 4.35080439 8.66328314 +H 9.61490675 4.60849115 7.45400687 +O 4.19707467 1.34592128 3.67401439 +H 4.94370120 0.74406281 3.51406800 +H 4.19055349 1.77303760 2.79630494 +O 1.88232618 11.95451227 0.60024434 +H 2.04645873 11.02454723 0.38329541 +H 1.15184937 0.17494341 11.99928285 +O 3.75938422 11.01685511 6.45620508 +H 3.21254143 10.45537470 5.88949171 +H 3.41660269 10.82155767 7.32965639 +O 9.70398414 3.95001545 11.89474325 +H 10.46166606 3.91631180 11.28543523 +H 10.09834695 4.40269974 0.68193008 +O 8.56395964 3.51695075 5.62241042 +H 8.39666503 2.62622147 5.26381643 +H 7.96953714 4.08250598 5.00494074 +O 9.67362450 0.48030482 7.92575778 +H 9.61319804 11.88341918 7.16809240 +H 9.97840503 11.90238635 8.63894187 +O 3.94241531 6.96502967 11.60258943 +H 4.27671527 6.84600490 10.67022522 +H 4.65706385 6.51294615 0.09115988 +O 3.05701732 9.66319585 3.66112506 +H 2.54004901 9.57433550 2.84440476 +H 2.93148744 8.78098072 4.04252342 +O 7.45496127 5.84308508 11.01138472 +H 8.16758841 5.46391828 10.47644287 +H 6.71355737 5.83938184 10.36109975 +O 9.80291393 7.95789017 10.21404942 +H 10.38910242 8.34006414 10.87949429 +H 9.06376120 7.63923741 10.75692887 +O 4.49634356 4.10679358 11.73387805 +H 4.54737279 4.95779709 11.19223377 +H 5.35888184 4.17561117 0.20355937 +O 9.59234481 7.34180146 1.34856172 +H 8.87155933 7.47768372 2.05040471 +H 9.04432217 7.27322008 0.54011714 +O 7.03509631 3.22348773 0.70708240 +H 7.17844705 4.13403143 1.01841097 +H 7.77878544 2.78888884 1.15838887 +O 9.21241078 0.48085900 1.21751966 +H 9.66204365 11.65727108 1.45318397 +H 9.94048839 1.11619136 1.18684594 +O 1.19704207 9.58599592 6.61908889 +H 0.25606413 9.67373665 6.83193409 +H 1.26900519 8.62493549 6.54801125 +O 0.78256134 2.60406093 11.45340836 +H 0.61502181 3.56074060 11.40300991 +H 1.55655312 2.54573688 10.86673303 +O 5.86279361 7.12170548 5.89173203 +H 6.34324107 7.94001367 6.08558403 +H 5.50772967 6.84683068 6.74368758 +O 10.88782815 9.96374825 0.51092816 +H 11.78841776 10.32204307 0.44704989 +H 11.02688182 9.20519067 1.09766613 +O 3.93073389 4.16456745 5.71378770 +H 4.68840630 3.57889133 5.56446058 +H 4.29569485 4.76448881 6.38016697 diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy new file mode 100644 index 0000000000000000000000000000000000000000..27f08781454251ec44961a1f4a90ba6fb86797b0 GIT binary patch literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe 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
+Q^=l9&c^f(N^wG~LD;N)OIwdUv=61wUK0 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 z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` 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 Date: Thu, 29 Sep 2022 10:07:22 -0600 Subject: [PATCH 0010/1002] Working multi-element example --- examples/pace/multi-elem/README.md | 5 ++++ examples/pace/multi-elem/loop.sh | 1 + examples/pace/multi-elem/test_en.py | 6 ++-- src/ML-PACE/compute_pace.cpp | 45 ++++++++++++++++++++--------- 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 examples/pace/multi-elem/README.md diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md new file mode 100644 index 0000000000..e2ab583d10 --- /dev/null +++ b/examples/pace/multi-elem/README.md @@ -0,0 +1,5 @@ +Check that seg fault doesn't occur by doing: + + ./loop.sh + +which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/loop.sh b/examples/pace/multi-elem/loop.sh index cd9f6da895..613636a30e 100755 --- a/examples/pace/multi-elem/loop.sh +++ b/examples/pace/multi-elem/loop.sh @@ -1,6 +1,7 @@ for (( ; ; )) do python test_en.py + # terminate loop if seg fault if [[ $? -eq 139 ]]; then break fi diff --git a/examples/pace/multi-elem/test_en.py b/examples/pace/multi-elem/test_en.py index b9dc064189..17c1924080 100644 --- a/examples/pace/multi-elem/test_en.py +++ b/examples/pace/multi-elem/test_en.py @@ -19,6 +19,8 @@ def run_struct(f): cmds = ["-screen", "none", "-log", "none"] lmp = lammps(cmdargs = cmds) + print("Made LAMMPS instance") + def run_lammps(dgradflag): # simulation settings @@ -68,8 +70,9 @@ def run_struct(f): nd = 91 dgradflag = 0 + run_lammps(dgradflag) - + lmp_pace = lmp.numpy.extract_compute("pace", LMP_STYLE_GLOBAL, LMP_TYPE_ARRAY) print ('global shape',np.shape(lmp_pace)) np.save('%s_chi_i.npy' % file_prefix,lmp_pace) @@ -77,7 +80,6 @@ def run_struct(f): del lmp return None - import glob for f in sorted(glob.glob('*.xyz')): print ('running %s' % f) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 8c2b0b1afa..74f00f9b52 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -38,7 +38,6 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : paceall(nullptr), pace_peratom(nullptr), basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) { - array_flag = 1; extarray = 0; bikflag = 0; @@ -54,40 +53,53 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + for (int i=0; icutoffmax; - double cutmax = basis_set->cutoffmax; + cutmax = basis_set->cutoffmax; double cuti; double radelemall = 0.5; + /* memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + printf("----- looping over ntypes\n"); for (int i = 1; i <= ntypes; i++) { + printf("----- map[%d]: %d\n", i, map[i]); cuti = basis_set->radial_functions->cut(map[i], map[i]); if (cuti > cutmax) cutmax = cuti; cutsq[i][i] = cuti*cuti; for (int j = i+1; j <= ntypes; j++) { + //printf("----- j: %d\n", j); + printf("----- map[%d]: %d\n", j, map[j]); cuti = basis_set->radial_functions->cut(map[i], map[j]); cutsq[i][j] = cutsq[j][i] = cuti*cuti; } } + printf("----- looped over ntypes\n"); + */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - int nvalues = ncoeff; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- - nperdim = ncoeff; + //nperdim = ncoeff; + ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nperdim; - zoffset = 2*nperdim; + yoffset = nvalues; //nperdim; + zoffset = 2*nvalues; //nperdim; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -101,7 +113,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : lastcol = size_array_cols-1; ndims_peratom = ndims_force; - size_peratom = ndims_peratom*nperdim*atom->ntypes; + size_peratom = ndims_peratom*nvalues*atom->ntypes; nmax = 0; } @@ -123,9 +135,14 @@ void ComputePACE::init() { if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); + + printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + //if (basis_set->cutoffmax > force->pair->cutforce) + // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -249,8 +266,8 @@ void ComputePACE::compute_array() const int itype = type[i]; const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - const int typeoffset_local = ndims_peratom*nperdim*(itype-1); - const int typeoffset_global = nperdim*(itype-1); + const int typeoffset_local = ndims_peratom*nvalues*(itype-1); + const int typeoffset_global = nvalues*(itype-1); ace = new ACECTildeEvaluator(*basis_set); int n_r1, n_rp = 0; @@ -369,9 +386,9 @@ void ComputePACE::compute_array() // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { - const int typeoffset_local = ndims_peratom*nperdim*itype; - const int typeoffset_global = nperdim*itype; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + for (int icoeff = 0; icoeff < nvalues; icoeff++) { for (int i = 0; i < ntotal; i++) { double *pacedi = pace_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; @@ -462,7 +479,7 @@ void ComputePACE::dbdotr_compute() const int typeoffset_local = ndims_peratom*nvalues*itype; const int typeoffset_global = nvalues*itype; double *pacedi = pace_peratom[i]+typeoffset_local; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int icoeff = 0; icoeff < nvalues; icoeff++) { double dbdx = pacedi[icoeff]; double dbdy = pacedi[icoeff+yoffset]; double dbdz = pacedi[icoeff+zoffset]; From 079ab1946fb6143491fefd42446330cec9ec81af Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 29 Sep 2022 10:53:28 -0600 Subject: [PATCH 0011/1002] No need to populate map in constructor --- src/ML-PACE/compute_pace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 74f00f9b52..e9899d1962 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -56,9 +56,11 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : // map[i] = which element the Ith atom type is, -1 if not mapped // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + /* for (int i=0; i Date: Sun, 16 Oct 2022 21:02:02 -0600 Subject: [PATCH 0012/1002] Adding other nstencil classes --- src/nstencil_bin.cpp | 5 +- src/nstencil_ghost_bin.cpp | 73 ++++++++++++++++++++ src/nstencil_ghost_bin.h | 69 +++++++++++++++++++ src/nstencil_multi.cpp | 133 +++++++++++++++++++++++++++++++++++++ src/nstencil_multi.h | 72 ++++++++++++++++++++ src/nstencil_multi_old.cpp | 85 ++++++++++++++++++++++++ src/nstencil_multi_old.h | 69 +++++++++++++++++++ 7 files changed, 503 insertions(+), 3 deletions(-) create mode 100644 src/nstencil_ghost_bin.cpp create mode 100644 src/nstencil_ghost_bin.h create mode 100644 src/nstencil_multi.cpp create mode 100644 src/nstencil_multi.h create mode 100644 src/nstencil_multi_old.cpp create mode 100644 src/nstencil_multi_old.h diff --git a/src/nstencil_bin.cpp b/src/nstencil_bin.cpp index 45908671fd..22fdc335e4 100644 --- a/src/nstencil_bin.cpp +++ b/src/nstencil_bin.cpp @@ -28,8 +28,7 @@ NStencilBin::NStencilBin(LAMMPS *lmp) : NStencil(lmp) {} template void NStencilBin::create() { - int i,j,k; - bool bin_include; + int i, j, k; // For half stencils, only the upper plane is needed int sy_min = sy; @@ -55,7 +54,7 @@ void NStencilBin::create() if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } } } diff --git a/src/nstencil_ghost_bin.cpp b/src/nstencil_ghost_bin.cpp new file mode 100644 index 0000000000..7531a3ff32 --- /dev/null +++ b/src/nstencil_ghost_bin.cpp @@ -0,0 +1,73 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "nstencil_ghost_bin.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilGhostBin::create() +{ + int i, j, k; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + nstencil = 0; + + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (HALF && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance(i,j,k) < cutneighmaxsq) + stencilxyz[nstencil][0] = i; + stencilxyz[nstencil][1] = j; + stencilxyz[nstencil][2] = k; + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilGhostBin<0,0,0>; +template class NStencilGhostBin<0,1,0>; +template class NStencilGhostBin<1,0,0>; +template class NStencilGhostBin<1,0,1>; +template class NStencilGhostBin<1,1,0>; +template class NStencilGhostBin<1,1,1>; +} diff --git a/src/nstencil_ghost_bin.h b/src/nstencil_ghost_bin.h new file mode 100644 index 0000000000..31268cc30d --- /dev/null +++ b/src/nstencil_ghost_bin.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilGhostBin<0, 0, 0> NStencilFullGhostBin2d; +NStencilStyle(full/ghost/bin/2d, + NStencilFullGhostBin2d, + NS_FULL | NS_GhostBin | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilGhostBin<0, 1, 0> NStencilFullGhostBin3d; +NStencilStyle(full/ghost/bin/3d, + NStencilFullGhostBin3d, + NS_FULL | NS_GhostBin | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilGhostBin<1, 0, 0> NStencilHalfGhostBin2d; +NStencilStyle(half/ghost/bin/2d, + NStencilHalfGhostBin2d, + NS_HALF | NS_GhostBin | NS_2D | NS_ORTHO); + +typedef NStencilGhostBin<1, 0, 1> NStencilHalfGhostBin2dTri; +NStencilStyle(half/ghost/bin/2d/tri, + NStencilHalfGhostBin2dTri, + NS_HALF | NS_GhostBin | NS_2D | NS_TRI); + +typedef NStencilGhostBin<1, 1, 0> NStencilHalfGhostBin3d; +NStencilStyle(half/ghost/bin/3d, + NStencilHalfGhostBin3d, + NS_HALF | NS_GhostBin | NS_3D | NS_ORTHO); + +typedef NStencilGhostBin<1, 1, 1> NStencilHalfGhostBin3dTri; +NStencilStyle(half/ghost/bin/3d/tri, + NStencilHalfGhostBin3dTri, + NS_HALF | NS_GhostBin | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_GHOST_BIN_H +#define LMP_NSTENCIL_GHOST_BIN_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilGhostBin : public NStencil { + public: + NStencilGhostBin(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp new file mode 100644 index 0000000000..6b0688d903 --- /dev/null +++ b/src/nstencil_multi.cpp @@ -0,0 +1,133 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "nstencil_multi.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilMulti::NStencilMulti(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- */ + +template +void NStencilMulti::set_stencil_properties() +{ + int n = ncollections; + int i, j; + + // FULL + // Always look up neighbor using full stencil and neighbor's bin + // Stencil cutoff set by i-j cutoff + + // HALF + // Cross collections: use full stencil, looking one way through hierarchy + // smaller -> larger => use full stencil in larger bin + // larger -> smaller => no nstencil required + // If cut offs are same, use half stencil + + for (i = 0; i < n; i++) { + for (j = 0; j < n; j++) { + if (HALF) + if (cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; + + flag_skip_multi[i][j] = false; + flag_half_multi[i][j] = false; + bin_collection_multi[i][j] = j; + + if (HALF) { + if (cutcollectionsq[i][i] == cutcollectionsq[j][j]) { + flag_half_multi[i][j] = true; + bin_collection_multi[i][j] = i; + } + } + } + } +} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilMulti::create() +{ + int icollection, jcollection, bin_collection, i, j, k, ns, half_flag; + int n = ncollections; + double cutsq; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + for (icollection = 0; icollection < n; icollection++) { + for (jcollection = 0; jcollection < n; jcollection++) { + if (flag_skip_multi[icollection][jcollection]) { + nstencil_multi[icollection][jcollection] = 0; + continue; + } + + ns = 0; + + sx = stencil_sx_multi[icollection][jcollection]; + sy = stencil_sy_multi[icollection][jcollection]; + sz = stencil_sz_multi[icollection][jcollection]; + + mbinx = stencil_mbinx_multi[icollection][jcollection]; + mbiny = stencil_mbiny_multi[icollection][jcollection]; + mbinz = stencil_mbinz_multi[icollection][jcollection]; + + bin_collection = bin_collection_multi[icollection][jcollection]; + cutsq = cutcollectionsq[icollection][jcollection]; + + half_flag = flag_half_multi[icollection][jcollection]; + + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (half_flag && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (half_flag && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (half_flag && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance_multi(i,j,k,bin_collection) < cutsq) + stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } + + nstencil_multi[icollection][jcollection] = ns; + } + } +} + +namespace LAMMPS_NS { +template class NStencilMulti<0,0,0>; +template class NStencilMulti<0,1,0>; +template class NStencilMulti<1,0,0>; +template class NStencilMulti<1,0,1>; +template class NStencilMulti<1,1,0>; +template class NStencilMulti<1,1,1>; +} diff --git a/src/nstencil_multi.h b/src/nstencil_multi.h new file mode 100644 index 0000000000..4747284f2d --- /dev/null +++ b/src/nstencil_multi.h @@ -0,0 +1,72 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilMulti<0, 0, 0> NStencilFullMulti2d; +NStencilStyle(full/multi/2d, + NStencilFullMulti2d, + NS_FULL | NS_MULTI | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilMulti<0, 1, 0> NStencilFullMulti3d; +NStencilStyle(full/multi/3d, + NStencilFullMulti3d, + NS_FULL | NS_MULTI | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilMulti<1, 0, 0> NStencilHalfMulti2d; +NStencilStyle(half/multi/2d, + NStencilHalfMulti2d, + NS_HALF | NS_MULTI | NS_2D | NS_ORTHO); + +typedef NStencilMulti<1, 0, 1> NStencilHalfMulti2dTri; +NStencilStyle(half/multi/2d/tri, + NStencilHalfMulti2dTri, + NS_HALF | NS_MULTI | NS_2D | NS_TRI); + +typedef NStencilMulti<1, 1, 0> NStencilHalfMulti3d; +NStencilStyle(half/multi/3d, + NStencilHalfMulti3d, + NS_HALF | NS_MULTI | NS_3D | NS_ORTHO); + +typedef NStencilMulti<1, 1, 1> NStencilHalfMulti3dTri; +NStencilStyle(half/multi/3d/tri, + NStencilHalfMulti3dTri, + NS_HALF | NS_MULTI | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_MULTI_H +#define LMP_NSTENCIL_MULTI_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilMulti : public NStencil { + public: + NStencilMulti(class LAMMPS *); + void create() override; + + protected: + void set_stencil_properties() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/nstencil_multi_old.cpp b/src/nstencil_multi_old.cpp new file mode 100644 index 0000000000..b6b99374fa --- /dev/null +++ b/src/nstencil_multi_old.cpp @@ -0,0 +1,85 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "nstencil_multi_old.h" +#include "atom.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilMultiOld::NStencilMultiOld(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilMultiOld::create() +{ + int i, j, k, n, itype; + double rsq, typesq; + int *s; + double *distsq; + int ntypes = atom->ntypes; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + for (itype = 1; itype <= ntypes; itype++) { + + typesq = cuttypesq[itype]; + s = stencil_multi_old[itype]; + distsq = distsq_multi_old[itype]; + n = 0; + + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (HALF && (!TRI)) s[n++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + rsq = bin_distance(i, j, 0); + if (rsq < typesq) { + distsq[n] = rsq; + s[n++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } + } + nstencil_multi_old[itype] = n; + } +} + +namespace LAMMPS_NS { +template class NStencilMultiOld<0,0,0>; +template class NStencilMultiOld<0,1,0>; +template class NStencilMultiOld<1,0,0>; +template class NStencilMultiOld<1,0,1>; +template class NStencilMultiOld<1,1,0>; +template class NStencilMultiOld<1,1,1>; +} diff --git a/src/nstencil_multi_old.h b/src/nstencil_multi_old.h new file mode 100644 index 0000000000..b5190b6736 --- /dev/null +++ b/src/nstencil_multi_old.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilMultiOld<0, 0, 0> NStencilFullMultiOld2d; +NStencilStyle(full/multi/old/2d, + NStencilFullMultiOld2d, + NS_FULL | NS_MULTI_OLD | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilMultiOld<0, 1, 0> NStencilFullMultiOld3d; +NStencilStyle(full/multi/old/3d, + NStencilFullMultiOld3d, + NS_FULL | NS_MULTI_OLD | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilMultiOld<1, 0, 0> NStencilHalfMultiOld2d; +NStencilStyle(half/multi/old/2d, + NStencilHalfMultiOld2d, + NS_HALF | NS_MULTI_OLD | NS_2D | NS_ORTHO); + +typedef NStencilMultiOld<1, 0, 1> NStencilHalfMultiOld2dTri; +NStencilStyle(half/multi/old/2d/tri, + NStencilHalfMultiOld2dTri, + NS_HALF | NS_MULTI_OLD | NS_2D | NS_TRI); + +typedef NStencilMultiOld<1, 1, 0> NStencilHalfMultiOld3d; +NStencilStyle(half/multi/old/3d, + NStencilHalfMultiOld3d, + NS_HALF | NS_MULTI_OLD | NS_3D | NS_ORTHO); + +typedef NStencilMultiOld<1, 1, 1> NStencilHalfMultiOld3dTri; +NStencilStyle(half/multi/old/3d/tri, + NStencilHalfMultiOld3dTri, + NS_HALF | NS_MULTI_OLD | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_MULTI_OLD_H +#define LMP_NSTENCIL_MULTI_OLD_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilMultiOld : public NStencil { + public: + NStencilMultiOld(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ From e8cd99289135cb3ae2b58ac9aadff3a4326583f3 Mon Sep 17 00:00:00 2001 From: Goff Date: Tue, 18 Oct 2022 17:29:56 -0600 Subject: [PATCH 0013/1002] fixed bug for bikflag 1 dgradflag 0 --- src/ML-PACE/compute_pace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index e9899d1962..c931d2aff5 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -373,7 +373,7 @@ void ComputePACE::compute_array() int k = typeoffset_global; for (int icoeff = 0; icoeff < ncoeff; icoeff++){ - pace[0][k++] += Bs(icoeff); + pace[irow][k++] += Bs(icoeff); } } else { int k = 3; From 3a57f5185d8b0e7803702c485cf91bacc921c64b Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:07:50 -0600 Subject: [PATCH 0014/1002] add examples --- examples/test.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt new file mode 100644 index 0000000000..58e2592d61 --- /dev/null +++ b/examples/test.txt @@ -0,0 +1,2 @@ +this is a test + From 0159810cc8ef569393b09cc7437115c2019a4994 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:08:56 -0600 Subject: [PATCH 0015/1002] add examples --- .../multi-elem/coupling_coefficients.yace | 294 ++++++++++++++++++ examples/pace/multi-elem/latte_cell_0.data | 172 ++++++++++ examples/pace/multi-elem/latte_cell_0.xyz | 163 ++++++++++ .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 0 -> 1424928 bytes examples/pace/multi-elem/loop.sh | 7 + examples/pace/multi-elem/test_en.py | 84 +++++ 6 files changed, 720 insertions(+) create mode 100644 examples/pace/multi-elem/coupling_coefficients.yace create mode 100644 examples/pace/multi-elem/latte_cell_0.data create mode 100644 examples/pace/multi-elem/latte_cell_0.xyz create mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy create mode 100755 examples/pace/multi-elem/loop.sh create mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/pace/multi-elem/coupling_coefficients.yace new file mode 100644 index 0000000000..2953222216 --- /dev/null +++ b/examples/pace/multi-elem/coupling_coefficients.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/pace/multi-elem/latte_cell_0.data new file mode 100644 index 0000000000..b18ec13a4d --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/pace/multi-elem/latte_cell_0.xyz new file mode 100644 index 0000000000..afe0a27f35 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.xyz @@ -0,0 +1,163 @@ +161 +Lattice="12.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 12.0" Properties=species:S:1:pos:R:3 pbc="T T T" +O 1.26880968 2.00799384 2.74468299 +H 1.53430682 2.06387665 3.71056269 +H 1.78482796 2.67550034 2.22688472 +H 1.56251195 1.10891269 2.39781152 +H 11.61728216 5.71881094 2.47320460 +N 6.55018656 4.74395668 3.65260255 +H 6.45648953 4.15716730 2.69752680 +N 2.08355610 1.59406078 8.54980476 +H 1.10411625 1.49717716 8.15078792 +H 2.60115534 2.29459604 7.95374187 +H 1.98177233 2.01940664 9.51282394 +H 0.99333338 3.69839073 8.19039479 +O 4.94840710 5.36455014 9.16152503 +H 9.07161706 9.37484540 4.22764624 +N 0.30864419 7.71366575 2.92749956 +H 0.47661671 10.18072110 3.71160091 +H 1.07465334 7.82269220 3.57714669 +H 0.38402250 8.37704933 2.17484371 +H 11.43541341 7.79037360 3.40402455 +O 6.15703846 10.25988474 3.50899568 +H 5.59322244 9.56329447 3.14465590 +N 1.77855690 7.63125793 9.14884523 +H 2.55940486 6.96832838 9.30697002 +H 2.12441551 8.45479870 8.64286229 +H 1.04552782 7.16977228 8.58942450 +H 0.34824446 10.17844028 9.16294638 +O 5.96388304 10.72370940 9.45688039 +H 6.58908357 10.92648611 8.79819258 +N 7.10658904 1.83029753 3.34525436 +H 6.92293050 1.84650221 4.30890371 +H 8.07804336 1.93030522 3.20895214 +H 5.67953736 10.47183163 4.32443905 +H 6.82999417 0.95850113 2.98152882 +N 11.38380535 4.63012252 2.53936884 +H 0.37927047 4.19432163 2.59073807 +O 5.23764101 1.91523463 9.72406364 +H 4.78872025 2.70369365 9.56981423 +H 9.81299067 9.20751407 4.08265499 +H 4.79808795 1.14034947 9.67399628 +H 5.44558456 2.01021000 10.62077351 +O 0.90954339 4.62400932 8.31081106 +H 11.90973532 4.74838140 8.25006246 +N 7.32234245 7.58664570 3.02452265 +H 7.44703622 8.31696467 3.71480033 +H 6.90738053 7.93850210 2.17237687 +H 5.55428685 5.11760658 3.76552520 +H 6.81243095 6.77788116 3.39732325 +N 0.29575823 11.04303794 3.10161425 +H 0.86490722 11.83879228 3.63899745 +O 6.85201686 8.08463693 8.87628788 +H 7.33514301 7.42634987 9.38216748 +H 6.79196133 7.75954772 7.97161748 +H 3.89904877 6.42834904 8.88324096 +H 5.95997296 9.93297232 9.47466547 +O 11.40365898 10.37196036 9.27660922 +H 10.98366636 9.51571998 9.14787573 +O 1.52232797 5.33273311 0.57537606 +H 2.38151140 5.72519912 0.77945296 +H 0.92079957 6.09312823 0.62203253 +O 11.23490924 2.91533552 6.75850641 +H 10.79234019 2.97552251 5.90000184 +H 10.75124206 2.18961560 7.18074015 +O 11.39027944 7.34628556 6.72582995 +H 10.92025679 6.69831954 7.27766966 +H 11.12238028 7.06320210 5.83941078 +O 8.46843195 10.71736286 10.60018556 +H 8.56722016 11.42046608 11.25794033 +H 9.08031098 10.04804949 10.94065170 +O 6.58517573 9.99406234 6.55746149 +H 7.02763258 10.76096604 6.17233337 +H 5.74193274 10.38458392 6.82288230 +O 1.76005464 1.01771919 5.49267877 +H 1.97042091 1.01748419 6.44297037 +H 1.42973007 0.11076352 5.34706449 +H 2.61130613 9.70341237 10.45030683 +O 3.05086908 10.48131334 10.08518931 +H 3.00326932 10.93357295 9.36521210 +O 6.46315322 8.76520583 11.96784797 +H 6.45068084 9.65965953 11.58895602 +H 5.66116297 8.35357377 11.63844333 +O 1.17459993 5.24206908 5.10014497 +H 1.31932881 5.52363924 6.01289663 +H 0.58053835 4.48981346 5.23255650 +O 6.72755497 0.78840875 7.38172809 +H 6.38879656 1.54670982 6.86345204 +H 7.67917840 0.94039024 7.26494610 +O 8.54766572 0.00647503 5.04505141 +H 8.87362909 11.10484108 4.86018079 +H 8.04775976 0.20198361 4.23573994 +O 1.28950300 8.42800979 11.82038504 +H 1.47666664 8.10878664 10.87290333 +H 2.10220669 8.19476202 0.29510553 +O 9.67979076 6.42073355 4.34691506 +H 8.92715301 6.72940235 3.79741224 +H 10.20024126 5.91677392 3.66976111 +O 3.57411616 6.70410217 3.88254785 +H 2.88948995 6.15605298 4.29808481 +H 4.36137077 6.43047324 4.38049654 +O 4.75065560 11.44185335 1.12537088 +H 4.08611928 10.74852367 1.19233471 +H 5.50353016 10.96568825 0.73651277 +O 9.52545264 4.89944439 8.37322841 +H 8.78859598 4.35080439 8.66328314 +H 9.61490675 4.60849115 7.45400687 +O 4.19707467 1.34592128 3.67401439 +H 4.94370120 0.74406281 3.51406800 +H 4.19055349 1.77303760 2.79630494 +O 1.88232618 11.95451227 0.60024434 +H 2.04645873 11.02454723 0.38329541 +H 1.15184937 0.17494341 11.99928285 +O 3.75938422 11.01685511 6.45620508 +H 3.21254143 10.45537470 5.88949171 +H 3.41660269 10.82155767 7.32965639 +O 9.70398414 3.95001545 11.89474325 +H 10.46166606 3.91631180 11.28543523 +H 10.09834695 4.40269974 0.68193008 +O 8.56395964 3.51695075 5.62241042 +H 8.39666503 2.62622147 5.26381643 +H 7.96953714 4.08250598 5.00494074 +O 9.67362450 0.48030482 7.92575778 +H 9.61319804 11.88341918 7.16809240 +H 9.97840503 11.90238635 8.63894187 +O 3.94241531 6.96502967 11.60258943 +H 4.27671527 6.84600490 10.67022522 +H 4.65706385 6.51294615 0.09115988 +O 3.05701732 9.66319585 3.66112506 +H 2.54004901 9.57433550 2.84440476 +H 2.93148744 8.78098072 4.04252342 +O 7.45496127 5.84308508 11.01138472 +H 8.16758841 5.46391828 10.47644287 +H 6.71355737 5.83938184 10.36109975 +O 9.80291393 7.95789017 10.21404942 +H 10.38910242 8.34006414 10.87949429 +H 9.06376120 7.63923741 10.75692887 +O 4.49634356 4.10679358 11.73387805 +H 4.54737279 4.95779709 11.19223377 +H 5.35888184 4.17561117 0.20355937 +O 9.59234481 7.34180146 1.34856172 +H 8.87155933 7.47768372 2.05040471 +H 9.04432217 7.27322008 0.54011714 +O 7.03509631 3.22348773 0.70708240 +H 7.17844705 4.13403143 1.01841097 +H 7.77878544 2.78888884 1.15838887 +O 9.21241078 0.48085900 1.21751966 +H 9.66204365 11.65727108 1.45318397 +H 9.94048839 1.11619136 1.18684594 +O 1.19704207 9.58599592 6.61908889 +H 0.25606413 9.67373665 6.83193409 +H 1.26900519 8.62493549 6.54801125 +O 0.78256134 2.60406093 11.45340836 +H 0.61502181 3.56074060 11.40300991 +H 1.55655312 2.54573688 10.86673303 +O 5.86279361 7.12170548 5.89173203 +H 6.34324107 7.94001367 6.08558403 +H 5.50772967 6.84683068 6.74368758 +O 10.88782815 9.96374825 0.51092816 +H 11.78841776 10.32204307 0.44704989 +H 11.02688182 9.20519067 1.09766613 +O 3.93073389 4.16456745 5.71378770 +H 4.68840630 3.57889133 5.56446058 +H 4.29569485 4.76448881 6.38016697 diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy new file mode 100644 index 0000000000000000000000000000000000000000..27f08781454251ec44961a1f4a90ba6fb86797b0 GIT binary patch literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe 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
+Q^=l9&c^f(N^wG~LD;N)OIwdUv=61wUK0 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 z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` 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 Date: Thu, 29 Sep 2022 10:07:22 -0600 Subject: [PATCH 0016/1002] Working multi-element example --- examples/pace/multi-elem/README.md | 5 ++++ examples/pace/multi-elem/loop.sh | 1 + examples/pace/multi-elem/test_en.py | 6 ++-- src/ML-PACE/compute_pace.cpp | 45 ++++++++++++++++++++--------- 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 examples/pace/multi-elem/README.md diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md new file mode 100644 index 0000000000..e2ab583d10 --- /dev/null +++ b/examples/pace/multi-elem/README.md @@ -0,0 +1,5 @@ +Check that seg fault doesn't occur by doing: + + ./loop.sh + +which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/loop.sh b/examples/pace/multi-elem/loop.sh index cd9f6da895..613636a30e 100755 --- a/examples/pace/multi-elem/loop.sh +++ b/examples/pace/multi-elem/loop.sh @@ -1,6 +1,7 @@ for (( ; ; )) do python test_en.py + # terminate loop if seg fault if [[ $? -eq 139 ]]; then break fi diff --git a/examples/pace/multi-elem/test_en.py b/examples/pace/multi-elem/test_en.py index b9dc064189..17c1924080 100644 --- a/examples/pace/multi-elem/test_en.py +++ b/examples/pace/multi-elem/test_en.py @@ -19,6 +19,8 @@ def run_struct(f): cmds = ["-screen", "none", "-log", "none"] lmp = lammps(cmdargs = cmds) + print("Made LAMMPS instance") + def run_lammps(dgradflag): # simulation settings @@ -68,8 +70,9 @@ def run_struct(f): nd = 91 dgradflag = 0 + run_lammps(dgradflag) - + lmp_pace = lmp.numpy.extract_compute("pace", LMP_STYLE_GLOBAL, LMP_TYPE_ARRAY) print ('global shape',np.shape(lmp_pace)) np.save('%s_chi_i.npy' % file_prefix,lmp_pace) @@ -77,7 +80,6 @@ def run_struct(f): del lmp return None - import glob for f in sorted(glob.glob('*.xyz')): print ('running %s' % f) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 8c2b0b1afa..74f00f9b52 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -38,7 +38,6 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : paceall(nullptr), pace_peratom(nullptr), basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) { - array_flag = 1; extarray = 0; bikflag = 0; @@ -54,40 +53,53 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + for (int i=0; icutoffmax; - double cutmax = basis_set->cutoffmax; + cutmax = basis_set->cutoffmax; double cuti; double radelemall = 0.5; + /* memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + printf("----- looping over ntypes\n"); for (int i = 1; i <= ntypes; i++) { + printf("----- map[%d]: %d\n", i, map[i]); cuti = basis_set->radial_functions->cut(map[i], map[i]); if (cuti > cutmax) cutmax = cuti; cutsq[i][i] = cuti*cuti; for (int j = i+1; j <= ntypes; j++) { + //printf("----- j: %d\n", j); + printf("----- map[%d]: %d\n", j, map[j]); cuti = basis_set->radial_functions->cut(map[i], map[j]); cutsq[i][j] = cutsq[j][i] = cuti*cuti; } } + printf("----- looped over ntypes\n"); + */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - int nvalues = ncoeff; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- - nperdim = ncoeff; + //nperdim = ncoeff; + ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nperdim; - zoffset = 2*nperdim; + yoffset = nvalues; //nperdim; + zoffset = 2*nvalues; //nperdim; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -101,7 +113,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : lastcol = size_array_cols-1; ndims_peratom = ndims_force; - size_peratom = ndims_peratom*nperdim*atom->ntypes; + size_peratom = ndims_peratom*nvalues*atom->ntypes; nmax = 0; } @@ -123,9 +135,14 @@ void ComputePACE::init() { if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); + + printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + //if (basis_set->cutoffmax > force->pair->cutforce) + // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -249,8 +266,8 @@ void ComputePACE::compute_array() const int itype = type[i]; const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - const int typeoffset_local = ndims_peratom*nperdim*(itype-1); - const int typeoffset_global = nperdim*(itype-1); + const int typeoffset_local = ndims_peratom*nvalues*(itype-1); + const int typeoffset_global = nvalues*(itype-1); ace = new ACECTildeEvaluator(*basis_set); int n_r1, n_rp = 0; @@ -369,9 +386,9 @@ void ComputePACE::compute_array() // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { - const int typeoffset_local = ndims_peratom*nperdim*itype; - const int typeoffset_global = nperdim*itype; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + for (int icoeff = 0; icoeff < nvalues; icoeff++) { for (int i = 0; i < ntotal; i++) { double *pacedi = pace_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; @@ -462,7 +479,7 @@ void ComputePACE::dbdotr_compute() const int typeoffset_local = ndims_peratom*nvalues*itype; const int typeoffset_global = nvalues*itype; double *pacedi = pace_peratom[i]+typeoffset_local; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int icoeff = 0; icoeff < nvalues; icoeff++) { double dbdx = pacedi[icoeff]; double dbdy = pacedi[icoeff+yoffset]; double dbdz = pacedi[icoeff+zoffset]; From e74b6769a9011945c92d2033e5082c5fc078846c Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 29 Sep 2022 10:53:28 -0600 Subject: [PATCH 0017/1002] No need to populate map in constructor --- src/ML-PACE/compute_pace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 74f00f9b52..e9899d1962 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -56,9 +56,11 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : // map[i] = which element the Ith atom type is, -1 if not mapped // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + /* for (int i=0; i Date: Tue, 18 Oct 2022 17:29:56 -0600 Subject: [PATCH 0018/1002] fixed bug for bikflag 1 dgradflag 0 --- src/ML-PACE/compute_pace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index e9899d1962..c931d2aff5 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -373,7 +373,7 @@ void ComputePACE::compute_array() int k = typeoffset_global; for (int icoeff = 0; icoeff < ncoeff; icoeff++){ - pace[0][k++] += Bs(icoeff); + pace[irow][k++] += Bs(icoeff); } } else { int k = 3; From fcc47158b382440f6ca939f1bcbdfdd610a3e175 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 29 Oct 2022 20:35:04 -0600 Subject: [PATCH 0019/1002] Adding other npair classes --- src/npair_bin.cpp | 97 +++++++--- src/npair_bin.h | 35 +++- src/npair_bin_atomonly.cpp | 54 ++++-- src/npair_bin_atomonly.h | 37 +++- src/npair_bin_ghost.cpp | 188 +++++++++++++++++++ src/npair_bin_ghost.h | 53 ++++++ src/npair_halffull.cpp | 142 +++++++++++++++ src/npair_halffull.h | 115 ++++++++++++ src/npair_multi.cpp | 205 +++++++++++++++++++++ src/npair_multi.h | 85 +++++++++ src/npair_multi_old.cpp | 236 ++++++++++++++++++++++++ src/npair_multi_old.h | 85 +++++++++ src/npair_nsq.cpp | 205 +++++++++++++++++++++ src/npair_nsq.h | 76 ++++++++ src/npair_nsq_ghost.cpp | 176 ++++++++++++++++++ src/npair_nsq_ghost.h | 53 ++++++ src/npair_respa_bin.cpp | 240 +++++++++++++++++++++++++ src/npair_respa_bin.h | 58 ++++++ src/npair_respa_nsq.cpp | 214 ++++++++++++++++++++++ src/npair_respa_nsq.h | 53 ++++++ src/npair_skip.cpp | 102 +++++++++++ src/npair_skip.h | 59 ++++++ src/npair_skip_respa.cpp | 163 +++++++++++++++++ src/npair_skip_respa.h | 48 +++++ src/npair_skip_size_off2on.cpp | 100 +++++++++++ src/npair_skip_size_off2on.h | 48 +++++ src/npair_skip_size_off2on_oneside.cpp | 163 +++++++++++++++++ src/npair_skip_size_off2on_oneside.h | 48 +++++ src/nstencil_ghost_bin.h | 12 +- 29 files changed, 3098 insertions(+), 52 deletions(-) create mode 100644 src/npair_bin_ghost.cpp create mode 100644 src/npair_bin_ghost.h create mode 100644 src/npair_halffull.cpp create mode 100644 src/npair_halffull.h create mode 100644 src/npair_multi.cpp create mode 100644 src/npair_multi.h create mode 100644 src/npair_multi_old.cpp create mode 100644 src/npair_multi_old.h create mode 100644 src/npair_nsq.cpp create mode 100644 src/npair_nsq.h create mode 100644 src/npair_nsq_ghost.cpp create mode 100644 src/npair_nsq_ghost.h create mode 100644 src/npair_respa_bin.cpp create mode 100644 src/npair_respa_bin.h create mode 100644 src/npair_respa_nsq.cpp create mode 100644 src/npair_respa_nsq.h create mode 100644 src/npair_skip.cpp create mode 100644 src/npair_skip.h create mode 100644 src/npair_skip_respa.cpp create mode 100644 src/npair_skip_respa.h create mode 100644 src/npair_skip_size_off2on.cpp create mode 100644 src/npair_skip_size_off2on.h create mode 100644 src/npair_skip_size_off2on_oneside.cpp create mode 100644 src/npair_skip_size_off2on_oneside.h diff --git a/src/npair_bin.cpp b/src/npair_bin.cpp index 294336a03a..83f8c53ecc 100644 --- a/src/npair_bin.cpp +++ b/src/npair_bin.cpp @@ -27,23 +27,35 @@ using namespace NeighConst; /* ---------------------------------------------------------------------- */ -template -NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairBin::build(NeighList *list) +template +void NPairBin::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; + int i,j,jh,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; int *neighptr; double **x = atom->x; + double *radius = atom->radius; int *type = atom->type; int *mask = atom->mask; tagint *tag = atom->tag; @@ -59,6 +71,9 @@ void NPairBin::build(NeighList *list) if (molecular == Atom::TEMPLATE) moltemplate = 1; else moltemplate = 0; + int history = list->history; + int mask_history = 1 << HISTBITS; + int *ilist = list->ilist; int *numneigh = list->numneigh; int **firstneigh = list->firstneigh; @@ -141,22 +156,48 @@ void NPairBin::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } } } } @@ -174,8 +215,12 @@ void NPairBin::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairBin<0,1,0>; -template class NPairBin<1,0,0>; -template class NPairBin<1,1,0>; -template class NPairBin<1,1,1>; +template class NPairBin<0,1,0,0>; +template class NPairBin<1,0,0,0>; +template class NPairBin<1,1,0,0>; +template class NPairBin<1,1,1,0>; +template class NPairBin<0,1,0,1>; +template class NPairBin<1,0,0,1>; +template class NPairBin<1,1,0,1>; +template class NPairBin<1,1,1,1>; } diff --git a/src/npair_bin.h b/src/npair_bin.h index af23880db7..92e3243397 100644 --- a/src/npair_bin.h +++ b/src/npair_bin.h @@ -13,26 +13,47 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairBin<0, 1, 0> NPairFullBin; +typedef NPairBin<0, 1, 0, 0> NPairFullBin; NPairStyle(full/bin, NPairFullBin, NP_FULL | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 0, 0> NPairHalfBinNewtoff; +typedef NPairBin<1, 0, 0, 0> NPairHalfBinNewtoff; NPairStyle(half/bin/newtoff, NPairHalfBinNewtoff, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 1, 0> NPairHalfBinNewton; +typedef NPairBin<1, 1, 0, 0> NPairHalfBinNewton; NPairStyle(half/bin/newton, NPairHalfBinNewton, NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairBin<1, 1, 1> NPairHalfBinNewtonTri; +typedef NPairBin<1, 1, 1, 0> NPairHalfBinNewtonTri; NPairStyle(half/bin/newton/tri, NPairHalfBinNewtonTri, - NP_HALF | NP_BIN | NP_NEWTON | NP_TRI); + NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairBin<0, 1, 0, 1> NPairFullSizeBin; +NPairStyle(full/size/bin, + NPairFullSizeBin, + NP_FULL | NP_SIZE | NP_BIN | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 0, 0, 1> NPairHalfSizeBinNewtoff; +NPairStyle(half/size/bin/newtoff, + NPairHalfSizeBinNewtoff, + NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 1, 0, 1> NPairHalfSizeBinNewton; +NPairStyle(half/size/bin/newton, + NPairHalfSizeBinNewton, + NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBin<1, 1, 1, 1> NPairHalfSizeBinNewtonTri; +NPairStyle(half/size/bin/newton/tri, + NPairHalfSizeBinNewtonTri, + NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -43,7 +64,7 @@ NPairStyle(half/bin/newton/tri, namespace LAMMPS_NS { -template +template class NPairBin : public NPair { public: NPairBin(class LAMMPS *); diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index aa66089fc5..3b15580264 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -25,28 +25,43 @@ using namespace NeighConst; /* ---------------------------------------------------------------------- */ -template -NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairBinAtomonly::build(NeighList *list) +template +void NPairBinAtomonly::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin,bin_start; + int i,j,jh,k,n,itype,jtype,ibin,bin_start; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; int *neighptr; double **x = atom->x; + double *radius = atom->radius; int *type = atom->type; int *mask = atom->mask; tagint *molecule = atom->molecule; int nlocal = atom->nlocal; if (includegroup) nlocal = atom->nfirst; + int history = list->history; + int mask_history = 1 << HISTBITS; + int *ilist = list->ilist; int *numneigh = list->numneigh; int **firstneigh = list->firstneigh; @@ -126,7 +141,20 @@ void NPairBinAtomonly::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } } } @@ -143,6 +171,12 @@ void NPairBinAtomonly::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairBinAtomonly<0,1,0>; -template class NPairBinAtomonly<1,1,0>; +template class NPairBinAtomonly<0,1,0,0>; +template class NPairBinAtomonly<1,0,0,0>; +template class NPairBinAtomonly<1,1,0,0>; +template class NPairBinAtomonly<1,1,1,0>; +template class NPairBinAtomonly<0,1,0,1>; +template class NPairBinAtomonly<1,0,0,1>; +template class NPairBinAtomonly<1,1,0,1>; +template class NPairBinAtomonly<1,1,1,1>; } diff --git a/src/npair_bin_atomonly.h b/src/npair_bin_atomonly.h index ae64863138..581700af7d 100644 --- a/src/npair_bin_atomonly.h +++ b/src/npair_bin_atomonly.h @@ -13,16 +13,47 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairBinAtomonly<0, 1, 0> NPairFullBinAtomonly; +typedef NPairBinAtomonly<0, 1, 0, 0> NPairFullBinAtomonly; NPairStyle(full/bin/atomonly, NPairFullBinAtomonly, NP_FULL | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBinAtomonly<1, 1, 0> NPairHalfBinAtomonlyNewton; +typedef NPairBinAtomonly<1, 0, 0, 0> NPairHalfBinAtomonlyNewtoff; +NPairStyle(half/bin/atomonly/newtoff, + NPairHalfBinAtomonlyNewtoff, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 1, 0, 0> NPairHalfBinAtomonlyNewton; NPairStyle(half/bin/atomonly/newton, NPairHalfBinAtomonlyNewton, NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonly<1, 1, 1, 0> NPairHalfBinAtomonlyNewtonTri; +NPairStyle(half/bin/atomonly/newton/tri, + NPairHalfBinAtomonlyNewtonTri, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinAtomonly<0, 1, 0, 1> NPairFullSizeBinAtomonly; +NPairStyle(full/size/bin/atomonly, + NPairFullSizeBinAtomonly, + NP_FULL | NP_SIZE | NP_BIN | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 0, 0, 1> NPairHalfSizeBinAtomonlyNewtoff; +NPairStyle(half/size/bin/atomonly/newtoff, + NPairHalfSizeBinAtomonlyNewtoff, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 1, 0, 1> NPairHalfSizeBinAtomonlyNewton; +NPairStyle(half/size/bin/atomonly/newton, + NPairHalfSizeBinAtomonlyNewton, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonly<1, 1, 1, 1> NPairHalfSizeBinAtomonlyNewtonTri; +NPairStyle(half/size/bin/atomonly/newton/tri, + NPairHalfSizeBinAtomonlyNewtonTri, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -33,7 +64,7 @@ NPairStyle(half/bin/atomonly/newton, namespace LAMMPS_NS { -template +template class NPairBinAtomonly : public NPair { public: NPairBinAtomonly(class LAMMPS *); diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp new file mode 100644 index 0000000000..5be3352095 --- /dev/null +++ b/src/npair_bin_ghost.cpp @@ -0,0 +1,188 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_bin_ghost.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "neighbor.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinGhost::NPairBinGhost(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + binned neighbor list construction for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + owned and ghost atoms check own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j +------------------------------------------------------------------------- */ + + +template +void NPairBinGhost::build(NeighList *list) +{ + int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int xbin,ybin,zbin,xbin2,ybin2,zbin2; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + // loop over owned & ghost atoms, storing neighbors + for (i = 0; i < nall; i++) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + if (i < nlocal) { + ibin = atom2bin[i]; + + // loop over all atoms in surrounding bins in stencil including self + // when i is a ghost atom, must check if stencil bin is out of bounds + // no molecular test when i = ghost atom + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + // stores ghost/ghost pairs only once + if (j <= i) continue; + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + } else { + ibin = coord2bin(x[i],xbin,ybin,zbin); + for (k = 0; k < nstencil; k++) { + xbin2 = xbin + stencilxyz[k][0]; + ybin2 = ybin + stencilxyz[k][1]; + zbin2 = zbin + stencilxyz[k][2]; + if (xbin2 < 0 || xbin2 >= mbinx || + ybin2 < 0 || ybin2 >= mbiny || + zbin2 < 0 || zbin2 >= mbinz) continue; + for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + if (!HALF) { + if (i == j) continue; + } else { + if (j <= i) continue; + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + } + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = atom->nlocal; + list->gnum = inum - atom->nlocal; +} + +namespace LAMMPS_NS { +template class NPairBinGhost<0>; +template class NPairBinGhost<1>; +} diff --git a/src/npair_bin_ghost.h b/src/npair_bin_ghost.h new file mode 100644 index 0000000000..602aaf986e --- /dev/null +++ b/src/npair_bin_ghost.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairBinGhost<0> NPairFullBinGhost; +NPairStyle(full/bin/ghost, + NPairFullBinGhost, + NP_FULL | NP_BIN | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); + +typedef NPairBinGhost<1> NPairHalfBinGhostNewtoff; +NPairStyle(half/bin/ghost/newtoff, + NPairHalfBinGhostNewtoff, + NP_HALF | NP_BIN | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_BIN_GHOST_H +#define LMP_NPAIR_BIN_GHOST_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairBinGhost : public NPair { + public: + NPairBinGhost(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_halffull.cpp b/src/npair_halffull.cpp new file mode 100644 index 0000000000..b9652484ce --- /dev/null +++ b/src/npair_halffull.cpp @@ -0,0 +1,142 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_halffull.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairHalffull::NPairHalffull(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build half list from full list + pair stored once if i,j are both owned and i < j + works if full list is a skip list + + Newtoff: + pair stored by me if j is ghost (also stored by proc owning j) + works for owned (non-ghost) list, also for ghost list + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly + Newton: + if j is ghost, only store if j coords are "above and to the right" of i +------------------------------------------------------------------------- */ + +template +void NPairHalffull::build(NeighList *list) +{ + int i,j,ii,jj,n,jnum,joriginal; + int *neighptr,*jlist; + double xtmp,ytmp,ztmp; + double delx,dely,delz,rsq; + + double **x = atom->x; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_full = list->listfull->ilist; + int *numneigh_full = list->listfull->numneigh; + int **firstneigh_full = list->listfull->firstneigh; + int inum_full = list->listfull->inum; + if (!NEWTON) + if (list->ghost) inum_full += list->listfull->gnum; + + int inum = 0; + ipage->reset(); + + double cutsq_custom = cutoff_custom * cutoff_custom; + + // loop over atoms in full list + + for (ii = 0; ii < inum_full; ii++) { + n = 0; + neighptr = ipage->vget(); + + // loop over parent full list + + i = ilist_full[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + jlist = firstneigh_full[i]; + jnum = numneigh_full[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (NEWTON) { + if (j < nlocal) { + if (i > j) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + + if (TRIM) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq > cutsq_custom) continue; + } + neighptr[n++] = joriginal; + } else { + if (j > i) { + if (TRIM) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq > cutsq_custom) continue; + } + neighptr[n++] = joriginal; + } + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; + if (!NEWTON) + if (list->ghost) list->gnum = list->listfull->gnum; +} + +namespace LAMMPS_NS { +template class NPairHalffull<0,0>; +template class NPairHalffull<1,0>; +template class NPairHalffull<0,1>; +template class NPairHalffull<1,1>; +} diff --git a/src/npair_halffull.h b/src/npair_halffull.h new file mode 100644 index 0000000000..519cb0ced1 --- /dev/null +++ b/src/npair_halffull.h @@ -0,0 +1,115 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI); + +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff/skip, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP); + +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff/ghost, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST); + +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff/skip/ghost, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST); + +typedef NPairHalffull<1, 0> NPairHalffullNewton; +NPairStyle(halffull/newton, + NPairHalffullNewton, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI); + +typedef NPairHalffull<1, 0> NPairHalffullNewton; +NPairStyle(halffull/newton/skip, + NPairHalffullNewton, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_TRIM); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/skip/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/ghost/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/skip/ghost/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM); + +typedef NPairHalffull<1, 1> NPairHalffullNewtonTrim; +NPairStyle(halffull/newton/trim, + NPairHalffullNewtonTrim, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_TRIM); + +typedef NPairHalffull<1, 1> NPairHalffullNewtonTrim; +NPairStyle(halffull/newton/skip/trim, + NPairHalffullNewtonTrim, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM); +// clang-format on +#else + +#ifndef LMP_NPAIR_HALFFULL_H +#define LMP_NPAIR_HALFFULL_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairHalffull : public NPair { + public: + NPairHalffull(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp new file mode 100644 index 0000000000..76e90ec674 --- /dev/null +++ b/src/npair_multi.cpp @@ -0,0 +1,205 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_multi.h" +#include "atom.h" +#include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "molecule.h" +#include "my_page.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairMulti::NPairMulti(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi stencil is icollection-jcollection dependent + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMulti::build(NeighList *list) +{ + int i,j,jh,js,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr,*s; + + int *collection = neighbor->collection; + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + itype = type[i]; + icollection = collection[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + ibin = atom2bin[i]; + + // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { + + // if same collection use own bin + if (icollection == jcollection) jbin = ibin; + else jbin = coord2bin(x[i], jcollection); + + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; + + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMulti<0,1,0,0>; +template class NPairMulti<1,0,0,0>; +template class NPairMulti<1,1,0,0>; +template class NPairMulti<1,1,1,0>; +template class NPairMulti<0,1,0,1>; +template class NPairMulti<1,0,0,1>; +template class NPairMulti<1,1,0,1>; +template class NPairMulti<1,1,1,1>; +} diff --git a/src/npair_multi.h b/src/npair_multi.h new file mode 100644 index 0000000000..288498dc00 --- /dev/null +++ b/src/npair_multi.h @@ -0,0 +1,85 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairMulti<0, 1, 0, 0> NPairFullMulti; +NPairStyle(full/Multi, + NPairFullMulti, + NP_FULL | NP_MULTI | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 0, 0, 0> NPairHalfMultiNewtoff; +NPairStyle(half/multi/newtoff, + NPairHalfMultiNewtoff, + NP_HALF | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 1, 0, 0> NPairHalfMultiNewton; +NPairStyle(half/multi/newton, + NPairHalfMultiNewton, + NP_HALF | NP_MULTI | NP_NEWTON | NP_ORTHO); + +typedef NPairMulti<1, 1, 1, 0> NPairHalfMultiNewtonTri; +NPairStyle(half/multi/newton/tri, + NPairHalfMultiNewtonTri, + NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); + +typedef NPairMulti<0, 1, 0, 1> NPairFullSizeMulti; +NPairStyle(full/size/Multi, + NPairFullSizeMulti, + NP_FULL | NP_SIZE | NP_MULTI | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 0, 0, 1> NPairHalfSizeMultiNewtoff; +NPairStyle(half/size/multi/newtoff, + NPairHalfSizeMultiNewtoff, + NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 1, 0, 1> NPairHalfSizeMultiNewton; +NPairStyle(half/size/multi/newton, + NPairHalfSizeMultiNewton, + NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_ORTHO); + +typedef NPairMulti<1, 1, 1, 1> NPairHalfSizeMultiNewtonTri; +NPairStyle(half/size/multi/newton/tri, + NPairHalfSizeMultiNewtonTri, + NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_H +#define LMP_NPAIR_MULTI_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMulti : public NPair { + public: + NPairMulti(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp new file mode 100644 index 0000000000..28efc16797 --- /dev/null +++ b/src/npair_multi_old.cpp @@ -0,0 +1,236 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_multi_old.h" + +#include "atom.h" +#include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairMultiOld::NPairMultiOld(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi/old-type stencil is itype dependent and is distance checked + Full: + binned neighbor list construction for all neighbors + multi-type stencil is itype dependent and is distance checked + every neighbor pair appears in list of both atoms i and j + Half + newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + multi-type stencil is itype dependent and is distance checked + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + multi-type stencil is itype dependent and is distance checked + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMultiOld::build(NeighList *list) +{ + int i,j,jh,k,n,itype,jtype,ibin,bin_start,which,ns,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr,*s; + double *cutsq,*distsq; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + ibin = atom2bin[i]; + s = stencil_multi_old[itype]; + distsq = distsq_multi_old[itype]; + cutsq = cutneighsq[itype]; + ns = nstencil_multi_old[itype]; + for (k = 0; k < ns; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (cutsq[jtype] < distsq[k]) continue; + if (i == j) continue; + + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMultiOld<0,1,0,0>; +template class NPairMultiOld<1,0,0,0>; +template class NPairMultiOld<1,1,0,0>; +template class NPairMultiOld<1,1,1,0>; +template class NPairMultiOld<0,1,0,1>; +template class NPairMultiOld<1,0,0,1>; +template class NPairMultiOld<1,1,0,1>; +template class NPairMultiOld<1,1,1,1>; +} diff --git a/src/npair_multi_old.h b/src/npair_multi_old.h new file mode 100644 index 0000000000..52b071ebc5 --- /dev/null +++ b/src/npair_multi_old.h @@ -0,0 +1,85 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairMultiOld<0, 1, 0, 0> NPairFullMultiOld; +NPairStyle(full/multi/old, + NPairFullMultiOld, + NP_FULL | NP_MULTI_OLD | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 0, 0, 0> NPairHalfMultiOldNewtoff; +NPairStyle(half/multi/old/newtoff, + NPairHalfMultiOldNewtoff, + NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 1, 0, 0> NPairHalfMultiOldNewton; +NPairStyle(half/multi/old/newton, + NPairHalfMultiOldNewton, + NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOld<1, 1, 1, 0> NPairHalfMultiOldNewtonTri; +NPairStyle(half/multi/old/newton/tri, + NPairHalfMultiOldNewtonTri, + NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairMultiOld<0, 1, 0, 1> NPairFullSizeMultiOld; +NPairStyle(full/size/multi/old, + NPairFullSizeMultiOld, + NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 0, 0, 1> NPairHalfSizeMultiOldNewtoff; +NPairStyle(half/size/multi/old/newtoff, + NPairHalfSizeMultiOldNewtoff, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 1, 0, 1> NPairHalfSizeMultiOldNewton; +NPairStyle(half/size/multi/old/newton, + NPairHalfSizeMultiOldNewton, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOld<1, 1, 1, 1> NPairHalfSizeMultiOldNewtonTri; +NPairStyle(half/size/multi/old/newton/tri, + NPairHalfSizeMultiOldNewtonTri, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_OLD_H +#define LMP_NPAIR_MULTI_OLD_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMultiOld : public NPair { + public: + NPairMultiOld(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_nsq.cpp b/src/npair_nsq.cpp new file mode 100644 index 0000000000..87a05e8136 --- /dev/null +++ b/src/npair_nsq.cpp @@ -0,0 +1,205 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_nsq.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "neighbor.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairNsq::NPairNsq(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + N^2 search for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + every pair stored exactly once by some processor + decision on ghost atoms based on itag,jtag tests +------------------------------------------------------------------------- */ + +template +void NPairNsq::build(NeighList *list) +{ + int i,j,jh,jstart,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; + tagint itag,jtag,tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) { + nlocal = atom->nfirst; + bitmask = group->bitmask[includegroup]; + } + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + + itag = tag[i]; + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + // Full: loop over all atoms, owned and ghost, skip i = j + // Half: loop over remaining atoms, owned and ghost + // Newtoff: only store pair if i < j + // Newton: itag = jtag is possible for long cutoffs that include images of self + + if (!HALF) jstart = 0; + else jstart = i + 1; + + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; + + if (!HALF) { + // Full neighbor list + if (i == j) continue; + } else if (NEWTON) { + // Half neighbor list, newton on + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairNsq<0,1,0>; +template class NPairNsq<1,0,0>; +template class NPairNsq<1,1,0>; +template class NPairNsq<0,1,1>; +template class NPairNsq<1,0,1>; +template class NPairNsq<1,1,1>; +} diff --git a/src/npair_nsq.h b/src/npair_nsq.h new file mode 100644 index 0000000000..4d616d33f2 --- /dev/null +++ b/src/npair_nsq.h @@ -0,0 +1,76 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairNsq<0, 1, 0> NPairFullNsq; +NPairStyle(full/nsq, + NPairFullNsq, + NP_FULL | NP_NSQ | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 0, 0> NPairHalfNsqNewtoff; +NPairStyle(half/nsq/newtoff, + NPairHalfNsqNewtoff, + NP_HALF | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 1, 0> NPairHalfNsqNewton; +NPairStyle(half/nsq/newton, + NPairHalfNsqNewton, + NP_HALF | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + +typedef NPairNsq<0, 1, 1> NPairFullSizeNsq; +NPairStyle(full/size/nsq, + NPairFullSizeNsq, + NP_FULL | NP_SIZE | NP_NSQ | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 0, 1> NPairHalfSizeNsqNewtoff; +NPairStyle(half/size/nsq/newtoff, + NPairHalfSizeNsqNewtoff, + NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 1, 1> NPairHalfSizeNsqNewton; +NPairStyle(half/size/nsq/newton, + NPairHalfSizeNsqNewton, + NP_HALF | NP_SIZE | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + +// clang-format on +#else + +#ifndef LMP_NPAIR_Nsq_H +#define LMP_NPAIR_Nsq_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairNsq : public NPair { + public: + NPairNsq(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp new file mode 100644 index 0000000000..4a733047c4 --- /dev/null +++ b/src/npair_nsq_ghost.cpp @@ -0,0 +1,176 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_nsq_ghost.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "neighbor.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairNsqGhost::NPairNsqGhost(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + N^2 search for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j +------------------------------------------------------------------------- */ + + +template +void NPairNsqGhost::build(NeighList *list) +{ + int i,j,jstart,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) { + nlocal = atom->nfirst; + bitmask = group->bitmask[includegroup]; + } + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + // loop over owned & ghost atoms, storing neighbors + for (i = 0; i < nall; i++) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + // loop over all atoms, owned and ghost + // Full: + // skip i = j + // Half: + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs with owned atom only, on both procs + // stores ghost/ghost pairs only once + // no molecular test when i = ghost atom + + if (!HALF) jstart = 0; + else jstart = i + 1; + + if (i < nlocal) { + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; // JTC: missing in original full version + if (!HALF) { + if (i == j) continue; + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } else { + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; // JTC: missing in original full version + if (!HALF) { + if (i == j) continue; + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = atom->nlocal; + list->gnum = inum - atom->nlocal; +} + +namespace LAMMPS_NS { +template class NPairNsqGhost<0>; +template class NPairNsqGhost<1>; +} diff --git a/src/npair_nsq_ghost.h b/src/npair_nsq_ghost.h new file mode 100644 index 0000000000..d1f34969d5 --- /dev/null +++ b/src/npair_nsq_ghost.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairNsqGhost<0> NPairFullNsqGhost; +NPairStyle(full/nsq/ghost, + NPairFullNsqGhost, + NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); + +typedef NPairNsqGhost<1> NPairHalfNsqGhostNewtoff; +NPairStyle(half/nsq/ghost/newtoff, + NPairHalfNsqGhostNewtoff, + NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_NSQ_GHOST_H +#define LMP_NPAIR_NSQ_GHOST_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairNsqGhost : public NPair { + public: + NPairNsqGhost(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp new file mode 100644 index 0000000000..7e8f79df5f --- /dev/null +++ b/src/npair_respa_bin.cpp @@ -0,0 +1,240 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_respa_bin.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairRespaBin::NPairRespaBin(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multiple respa lists + Newtoff + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and surrounding bins in non-Newton stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Newton + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairRespaBin::build(NeighList *list) +{ + int i,j,k,n,itype,jtype,ibin,bin_start,n_inner,n_middle,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr,*neighptr_inner,*neighptr_middle; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_inner = list->ilist_inner; + int *numneigh_inner = list->numneigh_inner; + int **firstneigh_inner = list->firstneigh_inner; + MyPage *ipage_inner = list->ipage_inner; + + int *ilist_middle,*numneigh_middle,**firstneigh_middle; + MyPage *ipage_middle; + int respamiddle = list->respamiddle; + if (respamiddle) { + ilist_middle = list->ilist_middle; + numneigh_middle = list->numneigh_middle; + firstneigh_middle = list->firstneigh_middle; + ipage_middle = list->ipage_middle; + } + + int inum = 0; + int which = 0; + int minchange = 0; + ipage->reset(); + ipage_inner->reset(); + if (respamiddle) ipage_middle->reset(); + + for (i = 0; i < nlocal; i++) { + n = n_inner = 0; + neighptr = ipage->vget(); + neighptr_inner = ipage_inner->vget(); + if (respamiddle) { + n_middle = 0; + neighptr_middle = ipage_middle->vget(); + } + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = binstart; j >= 0; j = bins[j]) { + if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if ((minchange = domain->minimum_image_check(delx,dely,delz))) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + + if (rsq < cut_inner_sq) { + if (which == 0) neighptr_inner[n_inner++] = j; + else if (minchange) neighptr_inner[n_inner++] = j; + else if (which > 0) + neighptr_inner[n_inner++] = j ^ (which << SBBITS); + } + + if (respamiddle && + rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { + if (which == 0) neighptr_middle[n_middle++] = j; + else if (minchange) neighptr_middle[n_middle++] = j; + else if (which > 0) + neighptr_middle[n_middle++] = j ^ (which << SBBITS); + } + } + } + } + + ilist[inum] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + ilist_inner[inum] = i; + firstneigh_inner[i] = neighptr_inner; + numneigh_inner[i] = n_inner; + ipage_inner->vgot(n_inner); + if (ipage_inner->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + if (respamiddle) { + ilist_middle[inum] = i; + firstneigh_middle[i] = neighptr_middle; + numneigh_middle[i] = n_middle; + ipage_middle->vgot(n_middle); + if (ipage_middle->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + inum++; + } + + list->inum = inum; + list->inum_inner = inum; + if (respamiddle) list->inum_middle = inum; +} + +namespace LAMMPS_NS { +template class NPairRespaBin<0,0>; +template class NPairRespaBin<1,0>; +template class NPairRespaBin<1,1>; +} diff --git a/src/npair_respa_bin.h b/src/npair_respa_bin.h new file mode 100644 index 0000000000..bf52ebcadc --- /dev/null +++ b/src/npair_respa_bin.h @@ -0,0 +1,58 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairRespaBin<0, 0> NPairHalfRespaBinNewtoff; +NPairStyle(half/respa/bin/newtoff, + NPairHalfRespaBinNewtoff, + NP_HALF | NP_RESPA | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaBin<1, 0> NPairHalfRespaBinNewton; +NPairStyle(half/respa/bin/newton, + NPairHalfRespaBinNewton, + NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_ORTHO); + +typedef NPairRespaBin<1, 1> NPairHalfRespaBinNewtonTri; +NPairStyle(half/respa/bin/newton/tri, + NPairHalfRespaBinNewtonTri, + NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_RESPA_BIN_H +#define LMP_NPAIR_RESPA_BIN_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairRespaBin : public NPair { + public: + NPairRespaBin(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_respa_nsq.cpp b/src/npair_respa_nsq.cpp new file mode 100644 index 0000000000..5587758cd4 --- /dev/null +++ b/src/npair_respa_nsq.cpp @@ -0,0 +1,214 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_respa_nsq.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "group.h" +#include "molecule.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairRespaNsq::NPairRespaNsq(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multiple respa lists + Newtoff + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + pair added if j is ghost (also stored by proc owning j) + Newton + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + if j is ghost only me or other proc adds pair + decision based on itag,jtag tests +------------------------------------------------------------------------- */ + +template +void NPairRespaNsq::build(NeighList *list) +{ + int i,j,n,itype,jtype,n_inner,n_middle,bitmask,imol,iatom,moltemplate; + tagint itag,jtag,tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr,*neighptr_inner,*neighptr_middle; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) { + nlocal = atom->nfirst; + bitmask = group->bitmask[includegroup]; + } + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_inner = list->ilist_inner; + int *numneigh_inner = list->numneigh_inner; + int **firstneigh_inner = list->firstneigh_inner; + MyPage *ipage_inner = list->ipage_inner; + + int *ilist_middle,*numneigh_middle,**firstneigh_middle; + MyPage *ipage_middle; + int respamiddle = list->respamiddle; + if (respamiddle) { + ilist_middle = list->ilist_middle; + numneigh_middle = list->numneigh_middle; + firstneigh_middle = list->firstneigh_middle; + ipage_middle = list->ipage_middle; + } + + int inum = 0; + int which = 0; + int minchange = 0; + ipage->reset(); + ipage_inner->reset(); + if (respamiddle) ipage_middle->reset(); + + for (i = 0; i < nlocal; i++) { + n = n_inner = 0; + neighptr = ipage->vget(); + neighptr_inner = ipage_inner->vget(); + if (respamiddle) { + n_middle = 0; + neighptr_middle = ipage_middle->vget(); + } + + itype = type[i]; + itag = tag[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + // loop over remaining atoms, owned and ghost + + for (j = i+1; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; + + if (NEWTON) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if ((minchange = domain->minimum_image_check(delx,dely,delz))) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + + if (rsq < cut_inner_sq) { + if (which == 0) neighptr_inner[n_inner++] = j; + else if (minchange) neighptr_inner[n_inner++] = j; + else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); + } + + if (respamiddle && rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { + if (which == 0) neighptr_middle[n_middle++] = j; + else if (minchange) neighptr_middle[n_middle++] = j; + else if (which > 0) + neighptr_middle[n_middle++] = j ^ (which << SBBITS); + } + } + } + + ilist[inum] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + ilist_inner[inum] = i; + firstneigh_inner[i] = neighptr_inner; + numneigh_inner[i] = n_inner; + ipage_inner->vgot(n_inner); + if (ipage_inner->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + if (respamiddle) { + ilist_middle[inum] = i; + firstneigh_middle[i] = neighptr_middle; + numneigh_middle[i] = n_middle; + ipage_middle->vgot(n_middle); + if (ipage_middle->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + inum++; + } + + list->inum = inum; + list->inum_inner = inum; + if (respamiddle) list->inum_middle = inum; +} + +namespace LAMMPS_NS { +template class NPairRespaNsq<0>; +template class NPairRespaNsq<1>; +} diff --git a/src/npair_respa_nsq.h b/src/npair_respa_nsq.h new file mode 100644 index 0000000000..5d6ea60465 --- /dev/null +++ b/src/npair_respa_nsq.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairRespaNsq<0> NPairHalfRespaNsqNewtoff; +NPairStyle(half/respa/nsq/newtoff, + NPairHalfRespaNsqNewtoff, + NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaNsq<1> NPairHalfRespaNsqNewton; +NPairStyle(half/respa/nsq/newton, + NPairHalfRespaNsqNewton, + NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); //JTC: Originally didn't have TRI +// clang-format on +#else + +#ifndef LMP_NPAIR_RESPA_NSQ_H +#define LMP_NPAIR_RESPA_NSQ_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairRespaNsq : public NPair { + public: + NPairRespaNsq(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp new file mode 100644 index 0000000000..4ef0573dbb --- /dev/null +++ b/src/npair_skip.cpp @@ -0,0 +1,102 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_skip.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + works for half and full lists + works for owned (non-ghost) list, also for ghost list + iskip and ijskip flag which atom types and type pairs to skip + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly +------------------------------------------------------------------------- */ + +void NPairSkip::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal; + int *neighptr,*jlist; + + int *type = atom->type; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int num_skip = list->listskip->inum; + if (list->ghost) num_skip += list->listskip->gnum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + int inum = 0; + ipage->reset(); + + // loop over atoms in other list + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (ii = 0; ii < num_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + n = 0; + neighptr = ipage->vget(); + + // loop over parent non-skip list + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr[n++] = joriginal; + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; + if (list->ghost) { + int num = 0; + for (i = 0; i < inum; i++) + if (ilist[i] < nlocal) num++; + else break; + list->inum = num; + list->gnum = inum - num; + } +} diff --git a/src/npair_skip.h b/src/npair_skip.h new file mode 100644 index 0000000000..b2a0752117 --- /dev/null +++ b/src/npair_skip.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +NPairStyle(skip, + NPairSkip, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +NPairStyle(skip/ghost, + NPairSkip, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); + +NPairStyle(skip/half/size, + NPairSkip, + NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_H +#define LMP_NPAIR_SKIP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkip : public NPair { + public: + NPairSkip(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp new file mode 100644 index 0000000000..373fe3f8db --- /dev/null +++ b/src/npair_skip_respa.cpp @@ -0,0 +1,163 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_skip_respa.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkipRespa::NPairSkipRespa(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + iskip and ijskip flag which atom types and type pairs to skip + this is for respa lists, copy the inner/middle values from parent +------------------------------------------------------------------------- */ + +void NPairSkipRespa::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal,n_inner,n_middle; + int *neighptr,*jlist,*neighptr_inner,*neighptr_middle; + + int *type = atom->type; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int inum_skip = list->listskip->inum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + int *ilist_inner = list->ilist_inner; + int *numneigh_inner = list->numneigh_inner; + int **firstneigh_inner = list->firstneigh_inner; + MyPage *ipage_inner = list->ipage_inner; + int *numneigh_inner_skip = list->listskip->numneigh_inner; + int **firstneigh_inner_skip = list->listskip->firstneigh_inner; + + int *ilist_middle,*numneigh_middle,**firstneigh_middle; + MyPage *ipage_middle; + int *numneigh_middle_skip,**firstneigh_middle_skip; + int respamiddle = list->respamiddle; + if (respamiddle) { + ilist_middle = list->ilist_middle; + numneigh_middle = list->numneigh_middle; + firstneigh_middle = list->firstneigh_middle; + ipage_middle = list->ipage_middle; + numneigh_middle_skip = list->listskip->numneigh_middle; + firstneigh_middle_skip = list->listskip->firstneigh_middle; + } + + int inum = 0; + ipage->reset(); + ipage_inner->reset(); + if (respamiddle) ipage_middle->reset(); + + // loop over atoms in other list + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + n = n_inner = 0; + neighptr = ipage->vget(); + neighptr_inner = ipage_inner->vget(); + if (respamiddle) { + n_middle = 0; + neighptr_middle = ipage_middle->vget(); + } + + // loop over parent outer rRESPA list + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr[n++] = joriginal; + } + + // loop over parent inner rRESPA list + + jlist = firstneigh_inner_skip[i]; + jnum = numneigh_inner_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr_inner[n_inner++] = joriginal; + } + + // loop over parent middle rRESPA list + + if (respamiddle) { + jlist = firstneigh_middle_skip[i]; + jnum = numneigh_middle_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr_middle[n_middle++] = joriginal; + } + } + + ilist[inum] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + ilist_inner[inum] = i; + firstneigh_inner[i] = neighptr_inner; + numneigh_inner[i] = n_inner; + ipage_inner->vgot(n); + if (ipage_inner->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + if (respamiddle) { + ilist_middle[inum] = i; + firstneigh_middle[i] = neighptr_middle; + numneigh_middle[i] = n_middle; + ipage_middle->vgot(n); + if (ipage_middle->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + inum++; + } + + list->inum = inum; + list->inum_inner = inum; + if (respamiddle) list->inum_middle = inum; +} diff --git a/src/npair_skip_respa.h b/src/npair_skip_respa.h new file mode 100644 index 0000000000..b0938287b5 --- /dev/null +++ b/src/npair_skip_respa.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +NPairStyle(skip/half/respa, + NPairSkipRespa, + NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_RESPA_H +#define LMP_NPAIR_SKIP_RESPA_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkipRespa : public NPair { + public: + NPairSkipRespa(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip_size_off2on.cpp b/src/npair_skip_size_off2on.cpp new file mode 100644 index 0000000000..e48ca345ff --- /dev/null +++ b/src/npair_skip_size_off2on.cpp @@ -0,0 +1,100 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_skip_size_off2on.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkipSizeOff2on::NPairSkipSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + iskip and ijskip flag which atom types and type pairs to skip + parent non-skip list used newton off, this skip list is newton on +------------------------------------------------------------------------- */ + +void NPairSkipSizeOff2on::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal; + tagint itag,jtag; + int *neighptr,*jlist; + + tagint *tag = atom->tag; + int *type = atom->type; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int inum_skip = list->listskip->inum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + int inum = 0; + ipage->reset(); + + // loop over atoms in other list + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + itag = tag[i]; + + n = 0; + neighptr = ipage->vget(); + + // loop over parent non-skip size list and optionally its history info + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + + // only keep I,J when J = ghost if Itag < Jtag + + jtag = tag[j]; + if (j >= nlocal && jtag < itag) continue; + + neighptr[n++] = joriginal; + } + + ilist[inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + list->inum = inum; +} diff --git a/src/npair_skip_size_off2on.h b/src/npair_skip_size_off2on.h new file mode 100644 index 0000000000..39aee76b09 --- /dev/null +++ b/src/npair_skip_size_off2on.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +NPairStyle(skip/size/off2on, + NPairSkipSizeOff2on, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_H +#define LMP_NPAIR_SKIP_SIZE_OFF2ON_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkipSizeOff2on : public NPair { + public: + NPairSkipSizeOff2on(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp new file mode 100644 index 0000000000..1e4b4ac78d --- /dev/null +++ b/src/npair_skip_size_off2on_oneside.cpp @@ -0,0 +1,163 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_skip_size_off2on_oneside.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkipSizeOff2onOneside::NPairSkipSizeOff2onOneside(LAMMPS *lmp) : + NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + iskip and ijskip flag which atom types and type pairs to skip + parent non-skip list used newton off and was not onesided, + this skip list is newton on and onesided +------------------------------------------------------------------------- */ + +void NPairSkipSizeOff2onOneside::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal,flip,tmp; + int *surf,*jlist; + + int *type = atom->type; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int inum_skip = list->listskip->inum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + if (domain->dimension == 2) surf = atom->line; + else surf = atom->tri; + + int inum = 0; + ipage->reset(); + + // two loops over parent list required, one to count, one to store + // because onesided constraint means pair I,J may be stored with I or J + // so don't know in advance how much space to alloc for each atom's neighs + + // first loop over atoms in other list to count neighbors + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (i = 0; i < nlocal; i++) numneigh[i] = 0; + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + n = 0; + + // loop over parent non-skip size list + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + + // flip I,J if necessary to satisfy onesided constraint + // do not keep if I is now ghost + + if (surf[i] >= 0) { + if (j >= nlocal) continue; + tmp = i; + i = j; + j = tmp; + flip = 1; + } else flip = 0; + + numneigh[i]++; + if (flip) i = j; + } + } + + // allocate all per-atom neigh list chunks + + for (i = 0; i < nlocal; i++) { + if (numneigh[i] == 0) continue; + n = numneigh[i]; + firstneigh[i] = ipage->get(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + // second loop over atoms in other list to store neighbors + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (i = 0; i < nlocal; i++) numneigh[i] = 0; + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + // loop over parent non-skip size list and optionally its history info + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + + // flip I,J if necessary to satisfy onesided constraint + // do not keep if I is now ghost + + if (surf[i] >= 0) { + if (j >= nlocal) continue; + tmp = i; + i = j; + j = tmp; + flip = 1; + } else flip = 0; + + // store j in neigh list, not joriginal, like other neigh methods + // OK, b/c there is no special list flagging for surfs + + firstneigh[i][numneigh[i]] = j; + numneigh[i]++; + if (flip) i = j; + } + + // only add atom I to ilist if it has neighbors + + if (numneigh[i]) ilist[inum++] = i; + } + + list->inum = inum; +} diff --git a/src/npair_skip_size_off2on_oneside.h b/src/npair_skip_size_off2on_oneside.h new file mode 100644 index 0000000000..3f1cd6ef34 --- /dev/null +++ b/src/npair_skip_size_off2on_oneside.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +NPairStyle(skip/size/off2on/oneside, + NPairSkipSizeOff2onOneside, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | + NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H +#define LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkipSizeOff2onOneside : public NPair { + public: + NPairSkipSizeOff2onOneside(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/nstencil_ghost_bin.h b/src/nstencil_ghost_bin.h index 31268cc30d..cab6e6714c 100644 --- a/src/nstencil_ghost_bin.h +++ b/src/nstencil_ghost_bin.h @@ -16,32 +16,32 @@ typedef NStencilGhostBin<0, 0, 0> NStencilFullGhostBin2d; NStencilStyle(full/ghost/bin/2d, NStencilFullGhostBin2d, - NS_FULL | NS_GhostBin | NS_2D | NS_ORTHO | NS_TRI); + NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); typedef NStencilGhostBin<0, 1, 0> NStencilFullGhostBin3d; NStencilStyle(full/ghost/bin/3d, NStencilFullGhostBin3d, - NS_FULL | NS_GhostBin | NS_3D | NS_ORTHO | NS_TRI); + NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); typedef NStencilGhostBin<1, 0, 0> NStencilHalfGhostBin2d; NStencilStyle(half/ghost/bin/2d, NStencilHalfGhostBin2d, - NS_HALF | NS_GhostBin | NS_2D | NS_ORTHO); + NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO); typedef NStencilGhostBin<1, 0, 1> NStencilHalfGhostBin2dTri; NStencilStyle(half/ghost/bin/2d/tri, NStencilHalfGhostBin2dTri, - NS_HALF | NS_GhostBin | NS_2D | NS_TRI); + NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_TRI); typedef NStencilGhostBin<1, 1, 0> NStencilHalfGhostBin3d; NStencilStyle(half/ghost/bin/3d, NStencilHalfGhostBin3d, - NS_HALF | NS_GhostBin | NS_3D | NS_ORTHO); + NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO); typedef NStencilGhostBin<1, 1, 1> NStencilHalfGhostBin3dTri; NStencilStyle(half/ghost/bin/3d/tri, NStencilHalfGhostBin3dTri, - NS_HALF | NS_GhostBin | NS_3D | NS_TRI); + NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_TRI); // clang-format on #else From 6544fbd248e9a8a6486ca01422610f054ddb09c3 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sun, 30 Oct 2022 21:04:31 -0600 Subject: [PATCH 0020/1002] Fixing compilation mistake, updating dev reference --- src/npair_bin.cpp | 4 ++-- src/npair_bin.h | 10 +--------- src/npair_bin_atomonly.cpp | 4 ++-- src/npair_bin_atomonly.h | 10 +--------- src/npair_multi_old.cpp | 10 +++++----- src/npair_nsq.cpp | 5 +++-- src/npair_nsq_ghost.cpp | 1 + src/npair_respa_bin.cpp | 4 ++-- 8 files changed, 17 insertions(+), 31 deletions(-) diff --git a/src/npair_bin.cpp b/src/npair_bin.cpp index 83f8c53ecc..41f4575444 100644 --- a/src/npair_bin.cpp +++ b/src/npair_bin.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/npair_bin.h b/src/npair_bin.h index 92e3243397..e9cd65fa34 100644 --- a/src/npair_bin.h +++ b/src/npair_bin.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -75,11 +75,3 @@ class NPairBin : public NPair { #endif #endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index 3b15580264..f658a44b60 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/npair_bin_atomonly.h b/src/npair_bin_atomonly.h index 581700af7d..febe7c2f0e 100644 --- a/src/npair_bin_atomonly.h +++ b/src/npair_bin_atomonly.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -75,11 +75,3 @@ class NPairBinAtomonly : public NPair { #endif #endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index 28efc16797..3c61d4ba29 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -56,7 +56,7 @@ void NPairMultiOld::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radsum,cut,cutsq; int *neighptr,*s; - double *cutsq,*distsq; + double *cutnsq,*distsq; double **x = atom->x; double *radius = atom->radius; @@ -103,7 +103,7 @@ void NPairMultiOld::build(NeighList *list) ibin = atom2bin[i]; s = stencil_multi_old[itype]; distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; + cutnsq = cutneighsq[itype]; ns = nstencil_multi_old[itype]; for (k = 0; k < ns; k++) { bin_start = binhead[ibin+stencil[k]]; @@ -158,7 +158,7 @@ void NPairMultiOld::build(NeighList *list) } jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; + if (cutnsq[jtype] < distsq[k]) continue; if (i == j) continue; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_nsq.cpp b/src/npair_nsq.cpp index 87a05e8136..77dafe6191 100644 --- a/src/npair_nsq.cpp +++ b/src/npair_nsq.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -16,6 +16,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "group.h" #include "molecule.h" #include "neighbor.h" #include "domain.h" diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp index 8ff34accf8..e9cc732e7d 100644 --- a/src/npair_nsq_ghost.cpp +++ b/src/npair_nsq_ghost.cpp @@ -16,6 +16,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "group.h" #include "molecule.h" #include "neighbor.h" #include "domain.h" diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp index 2f39ad547c..a3bcbf5124 100644 --- a/src/npair_respa_bin.cpp +++ b/src/npair_respa_bin.cpp @@ -116,14 +116,14 @@ void NPairRespaBin::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { + if (NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; } } - for (j = binstart; j >= 0; j = bins[j]) { + for (j = bin_start; j >= 0; j = bins[j]) { if (!NEWTON) { // Half neighbor list, newton off // only store pair if i < j From 02370fa25ebe55efba6ace6a1547e77d22c9e405 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 2 Nov 2022 14:51:00 -0600 Subject: [PATCH 0021/1002] Include headers in ace-evaluator directory --- src/ML-PACE/compute_pace.cpp | 8 ++++---- src/ML-PACE/compute_pace.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index c931d2aff5..23e0a14776 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -11,10 +11,10 @@ ------------------------------------------------------------------------- */ #include "compute_pace.h" -#include "ace_evaluator.h" -#include "ace_c_basis.h" -#include "ace_abstract_basis.h" -#include "ace_types.h" +#include "ace-evaluator/ace_evaluator.h" +#include "ace-evaluator/ace_c_basis.h" +#include "ace-evaluator/ace_abstract_basis.h" +#include "ace-evaluator/ace_types.h" #include #include diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h index e806c65c16..44d92ca280 100644 --- a/src/ML-PACE/compute_pace.h +++ b/src/ML-PACE/compute_pace.h @@ -21,9 +21,9 @@ ComputeStyle(pace,ComputePACE); #define LMP_COMPUTE_PACE_H #include "compute.h" -#include "ace_c_basis.h" -#include "ace_evaluator.h" -#include "ace_abstract_basis.h" +#include "ace-evaluator/ace_c_basis.h" +#include "ace-evaluator/ace_evaluator.h" +#include "ace-evaluator/ace_abstract_basis.h" namespace LAMMPS_NS { From 48a957f333178a45472833f0c37d2b1b90def7d9 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 3 Nov 2022 09:04:50 -0600 Subject: [PATCH 0022/1002] Remove screen print --- src/ML-PACE/compute_pace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 23e0a14776..223b8b4b19 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -138,7 +138,7 @@ void ComputePACE::init() if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); - printf("----- cutoffmax: %f\n", cutmax); + //printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); From c5181bb7c80ee3c28d2aec63e602d7745e384ef5 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 11 Nov 2022 16:56:21 -0700 Subject: [PATCH 0023/1002] Fixing various oversights in npair classes --- src/npair_bin_atomonly.cpp | 2 +- src/npair_bin_ghost.cpp | 16 +++++------ src/npair_multi.cpp | 54 ++++++++++++++++++++++++++++---------- src/npair_multi.h | 4 +-- src/npair_multi_old.h | 16 +++++------ 5 files changed, 59 insertions(+), 33 deletions(-) diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index f658a44b60..100b521b92 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -139,7 +139,7 @@ void NPairBinAtomonly::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (SIZE) { radsum = radius[i] + radius[j]; diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp index 615759508d..4cf30f10f9 100644 --- a/src/npair_bin_ghost.cpp +++ b/src/npair_bin_ghost.cpp @@ -103,17 +103,17 @@ void NPairBinGhost::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; for (j = bin_start; j >= 0; j = bins[j]) { - if (!HALF) { - // Full neighbor list - // only skip i = j - if (i == j) continue; - } else { + if (HALF) { // Half neighbor list, newton off // only store pair if i < j // stores own/own pairs only once // stores own/ghost pairs on both procs // stores ghost/ghost pairs only once if (j <= i) continue; + } else { + // Full neighbor list + // only skip i = j + if (i == j) continue; } jtype = type[j]; @@ -151,10 +151,10 @@ void NPairBinGhost::build(NeighList *list) ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (!HALF) { - if (i == j) continue; - } else { + if (HALF) { if (j <= i) continue; + } else { + if (i == j) continue; } jtype = type[j]; diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 103f5a1845..ab182f39c4 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -162,20 +162,46 @@ void NPairMulti::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } } } } diff --git a/src/npair_multi.h b/src/npair_multi.h index 4bb1315200..f6a68711e2 100644 --- a/src/npair_multi.h +++ b/src/npair_multi.h @@ -14,7 +14,7 @@ #ifdef NPAIR_CLASS // clang-format off typedef NPairMulti<0, 1, 0, 0> NPairFullMulti; -NPairStyle(full/Multi, +NPairStyle(full/multi, NPairFullMulti, NP_FULL | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); @@ -35,7 +35,7 @@ NPairStyle(half/multi/newton/tri, NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); typedef NPairMulti<0, 1, 0, 1> NPairFullSizeMulti; -NPairStyle(full/size/Multi, +NPairStyle(full/size/multi, NPairFullSizeMulti, NP_FULL | NP_SIZE | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); diff --git a/src/npair_multi_old.h b/src/npair_multi_old.h index 8eb1cc3b00..f01844ed57 100644 --- a/src/npair_multi_old.h +++ b/src/npair_multi_old.h @@ -16,44 +16,44 @@ typedef NPairMultiOld<0, 1, 0, 0> NPairFullMultiOld; NPairStyle(full/multi/old, NPairFullMultiOld, - NP_FULL | NP_MULTI_OLD | NP_MOLONLY | + NP_FULL | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 0, 0, 0> NPairHalfMultiOldNewtoff; NPairStyle(half/multi/old/newtoff, NPairHalfMultiOldNewtoff, - NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 1, 0, 0> NPairHalfMultiOldNewton; NPairStyle(half/multi/old/newton, NPairHalfMultiOldNewton, - NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); typedef NPairMultiOld<1, 1, 1, 0> NPairHalfMultiOldNewtonTri; NPairStyle(half/multi/old/newton/tri, NPairHalfMultiOldNewtonTri, - NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); + NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_TRI); typedef NPairMultiOld<0, 1, 0, 1> NPairFullSizeMultiOld; NPairStyle(full/size/multi/old, NPairFullSizeMultiOld, - NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | + NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 0, 0, 1> NPairHalfSizeMultiOldNewtoff; NPairStyle(half/size/multi/old/newtoff, NPairHalfSizeMultiOldNewtoff, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 1, 0, 1> NPairHalfSizeMultiOldNewton; NPairStyle(half/size/multi/old/newton, NPairHalfSizeMultiOldNewton, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); typedef NPairMultiOld<1, 1, 1, 1> NPairHalfSizeMultiOldNewtonTri; NPairStyle(half/size/multi/old/newton/tri, NPairHalfSizeMultiOldNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_TRI); // clang-format on #else From 11f3195b0c5a582d933d01f44d5a7e32145401eb Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 11 Nov 2022 20:35:52 -0700 Subject: [PATCH 0024/1002] Fixing more oversights in npair classes --- src/npair_nsq.h | 14 ++++++-------- src/npair_nsq_ghost.cpp | 9 ++++++--- src/npair_nsq_ghost.h | 6 +++--- src/npair_respa_nsq.cpp | 4 ++-- src/npair_skip.h | 5 ----- 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/npair_nsq.h b/src/npair_nsq.h index 505a72ea03..749ea3a78c 100644 --- a/src/npair_nsq.h +++ b/src/npair_nsq.h @@ -16,8 +16,7 @@ typedef NPairNsq<0, 1, 0> NPairFullNsq; NPairStyle(full/nsq, NPairFullNsq, - NP_FULL | NP_NSQ | NP_MOLONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairNsq<1, 0, 0> NPairHalfNsqNewtoff; NPairStyle(half/nsq/newtoff, @@ -27,13 +26,12 @@ NPairStyle(half/nsq/newtoff, typedef NPairNsq<1, 1, 0> NPairHalfNsqNewton; NPairStyle(half/nsq/newton, NPairHalfNsqNewton, - NP_HALF | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + NP_HALF | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); typedef NPairNsq<0, 1, 1> NPairFullSizeNsq; NPairStyle(full/size/nsq, NPairFullSizeNsq, - NP_FULL | NP_SIZE | NP_NSQ | NP_MOLONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_FULL | NP_SIZE | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairNsq<1, 0, 1> NPairHalfSizeNsqNewtoff; NPairStyle(half/size/nsq/newtoff, @@ -43,13 +41,13 @@ NPairStyle(half/size/nsq/newtoff, typedef NPairNsq<1, 1, 1> NPairHalfSizeNsqNewton; NPairStyle(half/size/nsq/newton, NPairHalfSizeNsqNewton, - NP_HALF | NP_SIZE | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_Nsq_H -#define LMP_NPAIR_Nsq_H +#ifndef LMP_NPAIR_NSQ_H +#define LMP_NPAIR_NSQ_H #include "npair.h" diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp index e9cc732e7d..5e4185f9d6 100644 --- a/src/npair_nsq_ghost.cpp +++ b/src/npair_nsq_ghost.cpp @@ -106,8 +106,8 @@ void NPairNsqGhost::build(NeighList *list) // stores ghost/ghost pairs only once // no molecular test when i = ghost atom - if (!HALF) jstart = 0; - else jstart = i + 1; + if (HALF) jstart = i + 1; + else jstart = 0; if (i < nlocal) { for (j = jstart; j < nall; j++) { @@ -155,7 +155,10 @@ void NPairNsqGhost::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx * delx + dely * dely + delz * delz; - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + if (HALF) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; } } diff --git a/src/npair_nsq_ghost.h b/src/npair_nsq_ghost.h index 79dfce0c9c..516f0bd929 100644 --- a/src/npair_nsq_ghost.h +++ b/src/npair_nsq_ghost.h @@ -18,9 +18,9 @@ NPairStyle(full/nsq/ghost, NPairFullNsqGhost, NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); -typedef NPairNsqGhost<1> NPairHalfNsqGhostNewtoff; -NPairStyle(half/nsq/ghost/newtoff, - NPairHalfNsqGhostNewtoff, +typedef NPairNsqGhost<1> NPairHalfNsqNewtoffGhost; +NPairStyle(half/nsq/newtoff/ghost, + NPairHalfNsqNewtoffGhost, NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); // clang-format on #else diff --git a/src/npair_respa_nsq.cpp b/src/npair_respa_nsq.cpp index ce73d534c8..7c816f305b 100644 --- a/src/npair_respa_nsq.cpp +++ b/src/npair_respa_nsq.cpp @@ -119,14 +119,14 @@ void NPairRespaNsq::build(NeighList *list) // loop over remaining atoms, owned and ghost - for (j = i+1; j < nall; j++) { + for (j = i + 1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; if (NEWTON) { if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; + if ((itag + jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; } else { diff --git a/src/npair_skip.h b/src/npair_skip.h index 6eaf03e1c5..4e85174730 100644 --- a/src/npair_skip.h +++ b/src/npair_skip.h @@ -24,11 +24,6 @@ NPairStyle(skip/ghost, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); - -NPairStyle(skip/half/size, - NPairSkip, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); // clang-format on #else From b0dcaa38231ed1188f89a04ac7e20ea5f01e4bab Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 12 Nov 2022 16:18:11 -0700 Subject: [PATCH 0025/1002] Updating OPENMP package --- src/OPENMP/npair_bin_atomonly_omp.cpp | 195 ++++++++++++++ src/OPENMP/npair_bin_atomonly_omp.h | 78 ++++++ ..._ghost_omp.cpp => npair_bin_ghost_omp.cpp} | 49 +++- ..._bin_ghost_omp.h => npair_bin_ghost_omp.h} | 18 +- src/OPENMP/npair_bin_omp.cpp | 237 +++++++++++++++++ src/OPENMP/npair_bin_omp.h | 77 ++++++ src/OPENMP/npair_full_bin_atomonly_omp.cpp | 106 -------- src/OPENMP/npair_full_bin_atomonly_omp.h | 39 --- src/OPENMP/npair_full_bin_omp.cpp | 135 ---------- src/OPENMP/npair_full_bin_omp.h | 39 --- src/OPENMP/npair_full_multi_old_omp.cpp | 144 ---------- src/OPENMP/npair_full_multi_old_omp.h | 39 --- src/OPENMP/npair_full_multi_omp.cpp | 154 ----------- src/OPENMP/npair_full_multi_omp.h | 39 --- src/OPENMP/npair_full_nsq_ghost_omp.h | 39 --- src/OPENMP/npair_full_nsq_omp.cpp | 134 ---------- src/OPENMP/npair_full_nsq_omp.h | 39 --- .../npair_half_bin_atomonly_newton_omp.cpp | 126 --------- .../npair_half_bin_atomonly_newton_omp.h | 38 --- .../npair_half_bin_newtoff_ghost_omp.cpp | 174 ------------ src/OPENMP/npair_half_bin_newtoff_ghost_omp.h | 39 --- src/OPENMP/npair_half_bin_newtoff_omp.cpp | 139 ---------- src/OPENMP/npair_half_bin_newtoff_omp.h | 38 --- src/OPENMP/npair_half_bin_newton_omp.cpp | 172 ------------ src/OPENMP/npair_half_bin_newton_omp.h | 38 --- src/OPENMP/npair_half_bin_newton_tri_omp.cpp | 145 ---------- src/OPENMP/npair_half_bin_newton_tri_omp.h | 38 --- src/OPENMP/npair_half_multi_newtoff_omp.cpp | 157 ----------- src/OPENMP/npair_half_multi_newtoff_omp.h | 38 --- src/OPENMP/npair_half_multi_newton_omp.cpp | 205 --------------- src/OPENMP/npair_half_multi_newton_omp.h | 38 --- .../npair_half_multi_newton_tri_omp.cpp | 171 ------------ src/OPENMP/npair_half_multi_newton_tri_omp.h | 38 --- .../npair_half_multi_old_newtoff_omp.cpp | 146 ----------- src/OPENMP/npair_half_multi_old_newtoff_omp.h | 38 --- .../npair_half_multi_old_newton_omp.cpp | 179 ------------- src/OPENMP/npair_half_multi_old_newton_omp.h | 38 --- .../npair_half_multi_old_newton_tri_omp.cpp | 155 ----------- .../npair_half_multi_old_newton_tri_omp.h | 38 --- .../npair_half_nsq_newtoff_ghost_omp.cpp | 158 ----------- src/OPENMP/npair_half_nsq_newtoff_omp.cpp | 134 ---------- src/OPENMP/npair_half_nsq_newtoff_omp.h | 38 --- src/OPENMP/npair_half_nsq_newton_omp.cpp | 152 ----------- src/OPENMP/npair_half_nsq_newton_omp.h | 38 --- .../npair_half_respa_bin_newtoff_omp.cpp | 203 -------------- src/OPENMP/npair_half_respa_bin_newtoff_omp.h | 39 --- .../npair_half_respa_bin_newton_tri_omp.cpp | 210 --------------- .../npair_half_respa_bin_newton_tri_omp.h | 38 --- src/OPENMP/npair_half_respa_nsq_newtoff_omp.h | 39 --- .../npair_half_respa_nsq_newton_omp.cpp | 216 --------------- .../npair_half_size_bin_newtoff_omp.cpp | 151 ----------- src/OPENMP/npair_half_size_bin_newtoff_omp.h | 39 --- src/OPENMP/npair_half_size_bin_newton_omp.cpp | 187 ------------- src/OPENMP/npair_half_size_bin_newton_omp.h | 38 --- .../npair_half_size_bin_newton_tri_omp.cpp | 158 ----------- .../npair_half_size_bin_newton_tri_omp.h | 38 --- .../npair_half_size_multi_newtoff_omp.cpp | 172 ------------ .../npair_half_size_multi_newtoff_omp.h | 38 --- .../npair_half_size_multi_newton_omp.cpp | 225 ---------------- src/OPENMP/npair_half_size_multi_newton_omp.h | 38 --- .../npair_half_size_multi_newton_tri_omp.cpp | 187 ------------- .../npair_half_size_multi_newton_tri_omp.h | 38 --- .../npair_half_size_multi_old_newtoff_omp.cpp | 158 ----------- .../npair_half_size_multi_old_newtoff_omp.h | 39 --- .../npair_half_size_multi_old_newton_omp.h | 38 --- ...air_half_size_multi_old_newton_tri_omp.cpp | 166 ------------ ...npair_half_size_multi_old_newton_tri_omp.h | 38 --- .../npair_half_size_nsq_newtoff_omp.cpp | 147 ----------- src/OPENMP/npair_half_size_nsq_newtoff_omp.h | 39 --- src/OPENMP/npair_half_size_nsq_newton_omp.cpp | 166 ------------ src/OPENMP/npair_half_size_nsq_newton_omp.h | 39 --- src/OPENMP/npair_halffull_newtoff_omp.cpp | 90 ------- src/OPENMP/npair_halffull_newtoff_omp.h | 44 ---- src/OPENMP/npair_halffull_newtoff_trim_omp.h | 44 ---- src/OPENMP/npair_halffull_newton_omp.cpp | 107 -------- src/OPENMP/npair_halffull_newton_omp.h | 44 ---- src/OPENMP/npair_halffull_newton_trim_omp.cpp | 120 --------- src/OPENMP/npair_halffull_newton_trim_omp.h | 44 ---- ...ff_trim_omp.cpp => npair_halffull_omp.cpp} | 67 +++-- src/OPENMP/npair_halffull_omp.h | 107 ++++++++ src/OPENMP/npair_multi_old_omp.cpp | 243 +++++++++++++++++ src/OPENMP/npair_multi_old_omp.h | 77 ++++++ src/OPENMP/npair_multi_omp.cpp | 247 ++++++++++++++++++ src/OPENMP/npair_multi_omp.h | 75 ++++++ ..._ghost_omp.cpp => npair_nsq_ghost_omp.cpp} | 59 ++++- ...toff_ghost_omp.h => npair_nsq_ghost_omp.h} | 18 +- ...i_old_newton_omp.cpp => npair_nsq_omp.cpp} | 176 +++++++------ src/OPENMP/npair_nsq_omp.h | 66 +++++ ...newton_omp.cpp => npair_respa_bin_omp.cpp} | 134 +++++----- ...bin_newton_omp.h => npair_respa_bin_omp.h} | 22 +- ...ewtoff_omp.cpp => npair_respa_nsq_omp.cpp} | 48 +++- ...nsq_newton_omp.h => npair_respa_nsq_omp.h} | 18 +- src/npair_bin_ghost.cpp | 1 - src/npair_multi.cpp | 2 +- src/npair_multi_old.cpp | 1 - src/npair_nsq.h | 1 - src/npair_nsq_ghost.cpp | 2 +- src/npair_respa_bin.cpp | 2 +- 98 files changed, 1801 insertions(+), 7211 deletions(-) create mode 100644 src/OPENMP/npair_bin_atomonly_omp.cpp create mode 100644 src/OPENMP/npair_bin_atomonly_omp.h rename src/OPENMP/{npair_full_bin_ghost_omp.cpp => npair_bin_ghost_omp.cpp} (75%) rename src/OPENMP/{npair_full_bin_ghost_omp.h => npair_bin_ghost_omp.h} (67%) create mode 100644 src/OPENMP/npair_bin_omp.cpp create mode 100644 src/OPENMP/npair_bin_omp.h delete mode 100644 src/OPENMP/npair_full_bin_atomonly_omp.cpp delete mode 100644 src/OPENMP/npair_full_bin_atomonly_omp.h delete mode 100644 src/OPENMP/npair_full_bin_omp.cpp delete mode 100644 src/OPENMP/npair_full_bin_omp.h delete mode 100644 src/OPENMP/npair_full_multi_old_omp.cpp delete mode 100644 src/OPENMP/npair_full_multi_old_omp.h delete mode 100644 src/OPENMP/npair_full_multi_omp.cpp delete mode 100644 src/OPENMP/npair_full_multi_omp.h delete mode 100644 src/OPENMP/npair_full_nsq_ghost_omp.h delete mode 100644 src/OPENMP/npair_full_nsq_omp.cpp delete mode 100644 src/OPENMP/npair_full_nsq_omp.h delete mode 100644 src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_atomonly_newton_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newtoff_ghost_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newton_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_multi_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_multi_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_newton_omp.h delete mode 100644 src/OPENMP/npair_half_multi_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_multi_old_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_old_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_multi_old_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_old_newton_omp.h delete mode 100644 src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_old_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp delete mode 100644 src/OPENMP/npair_half_nsq_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_nsq_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_nsq_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_nsq_newton_omp.h delete mode 100644 src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_respa_bin_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_respa_bin_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_respa_nsq_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_respa_nsq_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_bin_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newton_omp.h delete mode 100644 src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_newton_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_old_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_old_newton_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_nsq_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_nsq_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_nsq_newton_omp.h delete mode 100644 src/OPENMP/npair_halffull_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_halffull_newtoff_omp.h delete mode 100644 src/OPENMP/npair_halffull_newtoff_trim_omp.h delete mode 100644 src/OPENMP/npair_halffull_newton_omp.cpp delete mode 100644 src/OPENMP/npair_halffull_newton_omp.h delete mode 100644 src/OPENMP/npair_halffull_newton_trim_omp.cpp delete mode 100644 src/OPENMP/npair_halffull_newton_trim_omp.h rename src/OPENMP/{npair_halffull_newtoff_trim_omp.cpp => npair_halffull_omp.cpp} (59%) create mode 100644 src/OPENMP/npair_halffull_omp.h create mode 100644 src/OPENMP/npair_multi_old_omp.cpp create mode 100644 src/OPENMP/npair_multi_old_omp.h create mode 100644 src/OPENMP/npair_multi_omp.cpp create mode 100644 src/OPENMP/npair_multi_omp.h rename src/OPENMP/{npair_full_nsq_ghost_omp.cpp => npair_nsq_ghost_omp.cpp} (71%) rename src/OPENMP/{npair_half_nsq_newtoff_ghost_omp.h => npair_nsq_ghost_omp.h} (64%) rename src/OPENMP/{npair_half_size_multi_old_newton_omp.cpp => npair_nsq_omp.cpp} (51%) create mode 100644 src/OPENMP/npair_nsq_omp.h rename src/OPENMP/{npair_half_respa_bin_newton_omp.cpp => npair_respa_bin_omp.cpp} (67%) rename src/OPENMP/{npair_half_respa_bin_newton_omp.h => npair_respa_bin_omp.h} (55%) rename src/OPENMP/{npair_half_respa_nsq_newtoff_omp.cpp => npair_respa_nsq_omp.cpp} (81%) rename src/OPENMP/{npair_half_respa_nsq_newton_omp.h => npair_respa_nsq_omp.h} (63%) diff --git a/src/OPENMP/npair_bin_atomonly_omp.cpp b/src/OPENMP/npair_bin_atomonly_omp.cpp new file mode 100644 index 0000000000..2fe3baa014 --- /dev/null +++ b/src/OPENMP/npair_bin_atomonly_omp.cpp @@ -0,0 +1,195 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_bin_atomonly_omp.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" +#include "npair_omp.h" + +#include "omp_compat.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinAtomonlyOmp::NPairBinAtomonlyOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairBinAtomonlyOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i,j,jh,k,n,itype,jtype,ibin,bin_start; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *molecule = atom->molecule; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over owned atoms, storing neighbors + + for (i = ifrom; i < ito; i++) { + + n = 0; + neighptr = ipage.vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + // loop over all atoms in surrounding bins in stencil including self + // skip i = j + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBinAtomonlyOmp<0,1,0,0>; +template class NPairBinAtomonlyOmp<1,0,0,0>; +template class NPairBinAtomonlyOmp<1,1,0,0>; +template class NPairBinAtomonlyOmp<1,1,1,0>; +template class NPairBinAtomonlyOmp<0,1,0,1>; +template class NPairBinAtomonlyOmp<1,0,0,1>; +template class NPairBinAtomonlyOmp<1,1,0,1>; +template class NPairBinAtomonlyOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_bin_atomonly_omp.h b/src/OPENMP/npair_bin_atomonly_omp.h new file mode 100644 index 0000000000..c488486898 --- /dev/null +++ b/src/OPENMP/npair_bin_atomonly_omp.h @@ -0,0 +1,78 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairBinAtomonlyOmp<0, 1, 0, 0> NPairFullBinAtomonlyOmp; +NPairStyle(full/bin/atomonly/omp, + NPairFullBinAtomonlyOmp, + NP_FULL | NP_BIN | NP_OMP | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 0, 0, 0> NPairHalfBinNewtoffAtomonlyOmp; +NPairStyle(half/bin/newtoff/atomonly/omp, + NPairHalfBinNewtoffAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 1, 0, 0> NPairHalfBinNewtonAtomonlyOmp; +NPairStyle(half/bin/newton/atomonly/omp, + NPairHalfBinNewtonAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonlyOmp<1, 1, 1, 0> NPairHalfBinNewtonTriAtomonlyOmp; +NPairStyle(half/bin/newton/tri/atomonly/omp, + NPairHalfBinNewtonTriAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinAtomonlyOmp<0, 1, 0, 1> NPairFullSizeBinAtomonlyOmp; +NPairStyle(full/size/bin/atomonly/omp, + NPairFullSizeBinAtomonlyOmp, + NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 0, 0, 1> NPairHalfSizeBinNewtoffAtomonlyOmp; +NPairStyle(half/size/bin/newtoff/atomonly/omp, + NPairHalfSizeBinNewtoffAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 1, 0, 1> NPairHalfSizeBinNewtonAtomonlyOmp; +NPairStyle(half/size/bin/newton/atomonly/omp, + NPairHalfSizeBinNewtonAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonlyOmp<1, 1, 1, 1> NPairHalfSizeBinNewtonTriAtomonlyOmp; +NPairStyle(half/size/bin/newton/tri/atomonly/omp, + NPairHalfSizeBinNewtonTriAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); +// clang-format on +#else + + +#ifndef LMP_NPAIR_BIN_ATOMONLY_OMP_H +#define LMP_NPAIR_BIN_ATOMONLY_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairBinAtomonlyOmp : public NPair { + public: + NPairBinAtomonlyOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_full_bin_ghost_omp.cpp b/src/OPENMP/npair_bin_ghost_omp.cpp similarity index 75% rename from src/OPENMP/npair_full_bin_ghost_omp.cpp rename to src/OPENMP/npair_bin_ghost_omp.cpp index 5723a418f5..8f3105dc75 100644 --- a/src/OPENMP/npair_full_bin_ghost_omp.cpp +++ b/src/OPENMP/npair_bin_ghost_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_full_bin_ghost_omp.h" +#include "npair_bin_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -27,15 +27,25 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairFullBinGhostOmp::NPairFullBinGhostOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBinGhostOmp::NPairBinGhostOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j + Full: + binned neighbor list construction for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + owned and ghost atoms check own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ -void NPairFullBinGhostOmp::build(NeighList *list) +template +void NPairBinGhostOmp::build(NeighList *list) { const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; @@ -48,7 +58,7 @@ void NPairFullBinGhostOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nall); - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; + int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int xbin,ybin,zbin,xbin2,ybin2,zbin2; @@ -93,14 +103,24 @@ void NPairFullBinGhostOmp::build(NeighList *list) // loop over all atoms in surrounding bins in stencil including self // when i is a ghost atom, must check if stencil bin is out of bounds - // skip i = j // no molecular test when i = ghost atom if (i < nlocal) { ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; + if (HALF) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + // stores ghost/ghost pairs only once + if (j <= i) continue; + } else { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -138,7 +158,11 @@ void NPairFullBinGhostOmp::build(NeighList *list) ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; + if (HALF) { + if (j <= i) continue; + } else { + if (i == j) continue; + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -164,3 +188,8 @@ void NPairFullBinGhostOmp::build(NeighList *list) list->inum = nlocal; list->gnum = nall - nlocal; } + +namespace LAMMPS_NS { +template class NPairBinGhostOmp<0>; +template class NPairBinGhostOmp<1>; +} diff --git a/src/OPENMP/npair_full_bin_ghost_omp.h b/src/OPENMP/npair_bin_ghost_omp.h similarity index 67% rename from src/OPENMP/npair_full_bin_ghost_omp.h rename to src/OPENMP/npair_bin_ghost_omp.h index 6de134dcf8..df18886e91 100644 --- a/src/OPENMP/npair_full_bin_ghost_omp.h +++ b/src/OPENMP/npair_bin_ghost_omp.h @@ -13,23 +13,29 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairBinGhostOmp<0> NPairFullBinGhostOmp; NPairStyle(full/bin/ghost/omp, NPairFullBinGhostOmp, - NP_FULL | NP_BIN | NP_GHOST | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); + NP_FULL | NP_BIN | NP_GHOST | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinGhostOmp<1> NPairHalfBinNewtoffGhostOmp; +NPairStyle(half/bin/newtoff/ghost/omp, + NPairHalfBinNewtoffGhostOmp, + NP_HALF | NP_BIN | NP_GHOST | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_GHOST_OMP_H -#define LMP_NPAIR_FULL_BIN_GHOST_OMP_H +#ifndef LMP_NPAIR_BIN_GHOST_OMP_H +#define LMP_NPAIR_BIN_GHOST_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairFullBinGhostOmp : public NPair { +template +class NPairBinGhostOmp : public NPair { public: - NPairFullBinGhostOmp(class LAMMPS *); + NPairBinGhostOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/OPENMP/npair_bin_omp.cpp b/src/OPENMP/npair_bin_omp.cpp new file mode 100644 index 0000000000..7029f71df7 --- /dev/null +++ b/src/OPENMP/npair_bin_omp.cpp @@ -0,0 +1,237 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "omp_compat.h" +#include "npair_bin_omp.h" +#include "npair_omp.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinOmp::NPairBinOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairBinOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int molecular = atom->molecular; + const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i,j,jh,k,n,itype,jtype,ibin,bin_start,which,imol,iatom; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over owned atoms, storing neighbors + + for (i = ifrom; i < ito; i++) { + + n = 0; + neighptr = ipage.vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + // loop over all atoms in surrounding bins in stencil including self + // skip i = j + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBinOmp<0,1,0,0>; +template class NPairBinOmp<1,0,0,0>; +template class NPairBinOmp<1,1,0,0>; +template class NPairBinOmp<1,1,1,0>; +template class NPairBinOmp<0,1,0,1>; +template class NPairBinOmp<1,0,0,1>; +template class NPairBinOmp<1,1,0,1>; +template class NPairBinOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_bin_omp.h b/src/OPENMP/npair_bin_omp.h new file mode 100644 index 0000000000..595b789d92 --- /dev/null +++ b/src/OPENMP/npair_bin_omp.h @@ -0,0 +1,77 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairBinOmp<0, 1, 0, 0> NPairFullBinOmp; +NPairStyle(full/bin/omp, + NPairFullBinOmp, + NP_FULL | NP_BIN | NP_OMP | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 0, 0, 0> NPairHalfBinNewtoffOmp; +NPairStyle(half/bin/newtoff/omp, + NPairHalfBinNewtoffOmp, + NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 1, 0, 0> NPairHalfBinNewtonOmp; +NPairStyle(half/bin/newton/omp, + NPairHalfBinNewtonOmp, + NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinOmp<1, 1, 1, 0> NPairHalfBinNewtonTriOmp; +NPairStyle(half/bin/newton/tri/omp, + NPairHalfBinNewtonTriOmp, + NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinOmp<0, 1, 0, 1> NPairFullSizeBinOmp; +NPairStyle(full/size/bin/omp, + NPairFullSizeBinOmp, + NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 0, 0, 1> NPairHalfSizeBinNewtoffOmp; +NPairStyle(half/size/bin/newtoff/omp, + NPairHalfSizeBinNewtoffOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 1, 0, 1> NPairHalfSizeBinNewtonOmp; +NPairStyle(half/size/bin/newton/omp, + NPairHalfSizeBinNewtonOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinOmp<1, 1, 1, 1> NPairHalfSizeBinNewtonTriOmp; +NPairStyle(half/size/bin/newton/tri/omp, + NPairHalfSizeBinNewtonTriOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_BIN_OMP_H +#define LMP_NPAIR_BIN_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairBinOmp : public NPair { + public: + NPairBinOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_full_bin_atomonly_omp.cpp b/src/OPENMP/npair_full_bin_atomonly_omp.cpp deleted file mode 100644 index 0a37cca287..0000000000 --- a/src/OPENMP/npair_full_bin_atomonly_omp.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_bin_atomonly_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinAtomonlyOmp::NPairFullBinAtomonlyOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinAtomonlyOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_bin_atomonly_omp.h b/src/OPENMP/npair_full_bin_atomonly_omp.h deleted file mode 100644 index 50b1aa753c..0000000000 --- a/src/OPENMP/npair_full_bin_atomonly_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/atomonly/omp, - NPairFullBinAtomonlyOmp, - NP_FULL | NP_BIN | NP_ATOMONLY | NP_OMP | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_ATOMONLY_OMP_H -#define LMP_NPAIR_FULL_BIN_ATOMONLY_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullBinAtomonlyOmp : public NPair { - public: - NPairFullBinAtomonlyOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_bin_omp.cpp b/src/OPENMP/npair_full_bin_omp.cpp deleted file mode 100644 index 94668002a9..0000000000 --- a/src/OPENMP/npair_full_bin_omp.cpp +++ /dev/null @@ -1,135 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_full_bin_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinOmp::NPairFullBinOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_bin_omp.h b/src/OPENMP/npair_full_bin_omp.h deleted file mode 100644 index 333025a1fb..0000000000 --- a/src/OPENMP/npair_full_bin_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/omp, - NPairFullBinOmp, - NP_FULL | NP_BIN | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_OMP_H -#define LMP_NPAIR_FULL_BIN_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullBinOmp : public NPair { - public: - NPairFullBinOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_multi_old_omp.cpp b/src/OPENMP/npair_full_multi_old_omp.cpp deleted file mode 100644 index f0ed6360ab..0000000000 --- a/src/OPENMP/npair_full_multi_old_omp.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_multi_old_omp.h" -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMultiOldOmp::NPairFullMultiOldOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi-type stencil is itype dependent and is distance checked - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMultiOldOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i, j, k, n, itype, jtype, ibin, which, ns, imol, iatom; - tagint tagprev; - double xtmp, ytmp, ztmp, delx, dely, delz, rsq; - int *neighptr, *s; - double *cutsq, *distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil, including self - // skip if i,j neighbor cutoff is less than bin distance - // skip i = j - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin + s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (i == j) continue; - - if (exclude && exclusion(i, j, itype, jtype, mask, molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx * delx + dely * dely + delz * delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i], nspecial[i], tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], - tag[j] - tagprev); - else - which = 0; - if (which == 0) - neighptr[n++] = j; - else if (domain->minimum_image_check(delx, dely, delz)) - neighptr[n++] = j; - else if (which > 0) - neighptr[n++] = j ^ (which << SBBITS); - } else - neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_multi_old_omp.h b/src/OPENMP/npair_full_multi_old_omp.h deleted file mode 100644 index 5d9f4c2f88..0000000000 --- a/src/OPENMP/npair_full_multi_old_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/multi/old/omp, - NPairFullMultiOldOmp, - NP_FULL | NP_MULTI_OLD | NP_OMP | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_OLD_OMP_H -#define LMP_NPAIR_FULL_MULTI_OLD_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMultiOldOmp : public NPair { - public: - NPairFullMultiOldOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_multi_omp.cpp b/src/OPENMP/npair_full_multi_omp.cpp deleted file mode 100644 index 1e39838381..0000000000 --- a/src/OPENMP/npair_full_multi_omp.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_full_multi_omp.h" -#include "npair_omp.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMultiOmp::NPairFullMultiOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi stencil is icollection-jcollection dependent - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMultiOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (i == j) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_multi_omp.h b/src/OPENMP/npair_full_multi_omp.h deleted file mode 100644 index 0d71bf7bc6..0000000000 --- a/src/OPENMP/npair_full_multi_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/multi/omp, - NPairFullMultiOmp, - NP_FULL | NP_MULTI | NP_OMP | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_OMP_H -#define LMP_NPAIR_FULL_MULTI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMultiOmp : public NPair { - public: - NPairFullMultiOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_nsq_ghost_omp.h b/src/OPENMP/npair_full_nsq_ghost_omp.h deleted file mode 100644 index 448354d4ba..0000000000 --- a/src/OPENMP/npair_full_nsq_ghost_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/nsq/ghost/omp, - NPairFullNsqGhostOmp, - NP_FULL | NP_NSQ | NP_GHOST | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_GHOST_OMP_H -#define LMP_NPAIR_FULL_NSQ_GHOST_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsqGhostOmp : public NPair { - public: - NPairFullNsqGhostOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_nsq_omp.cpp b/src/OPENMP/npair_full_nsq_omp.cpp deleted file mode 100644 index 6349906771..0000000000 --- a/src/OPENMP/npair_full_nsq_omp.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_full_nsq_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullNsqOmp::NPairFullNsqOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 search for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullNsqOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int nall = atom->nlocal + atom->nghost; - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms, owned and ghost - // skip i = j - - for (j = 0; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (i == j) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_nsq_omp.h b/src/OPENMP/npair_full_nsq_omp.h deleted file mode 100644 index 53e913a18c..0000000000 --- a/src/OPENMP/npair_full_nsq_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/nsq/omp, - NPairFullNsqOmp, - NP_FULL | NP_NSQ | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_OMP_H -#define LMP_NPAIR_FULL_NSQ_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsqOmp : public NPair { - public: - NPairFullNsqOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp b/src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp deleted file mode 100644 index 1bc1199628..0000000000 --- a/src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_atomonly_newton_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinAtomonlyNewtonOmp::NPairHalfBinAtomonlyNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinAtomonlyNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_atomonly_newton_omp.h b/src/OPENMP/npair_half_bin_atomonly_newton_omp.h deleted file mode 100644 index dcec3aeee2..0000000000 --- a/src/OPENMP/npair_half_bin_atomonly_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/atomonly/newton/omp, - NPairHalfBinAtomonlyNewtonOmp, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_OMP_H -#define LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinAtomonlyNewtonOmp : public NPair { - public: - NPairHalfBinAtomonlyNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp b/src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp deleted file mode 100644 index 2255033204..0000000000 --- a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp +++ /dev/null @@ -1,174 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newtoff_ghost_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoffGhostOmp::NPairHalfBinNewtoffGhostOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - owned and ghost atoms check own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoffGhostOmp::build(NeighList *list) -{ - const int nlocal = atom->nlocal; - const int nall = nlocal + atom->nghost; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nall); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - int xbin,ybin,zbin,xbin2,ybin2,zbin2; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // when i is a ghost atom, must check if stencil bin is out of bounds - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - } else { - ibin = coord2bin(x[i],xbin,ybin,zbin); - for (k = 0; k < nstencil; k++) { - xbin2 = xbin + stencilxyz[k][0]; - ybin2 = ybin + stencilxyz[k][1]; - zbin2 = zbin + stencilxyz[k][2]; - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = nall - atom->nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.h b/src/OPENMP/npair_half_bin_newtoff_ghost_omp.h deleted file mode 100644 index 0258320f88..0000000000 --- a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newtoff/ghost/omp, - NPairHalfBinNewtoffGhostOmp, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_GHOST | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoffGhostOmp : public NPair { - public: - NPairHalfBinNewtoffGhostOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newtoff_omp.cpp b/src/OPENMP/npair_half_bin_newtoff_omp.cpp deleted file mode 100644 index 36997d9bcb..0000000000 --- a/src/OPENMP/npair_half_bin_newtoff_omp.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newtoff_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoffOmp::NPairHalfBinNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newtoff_omp.h b/src/OPENMP/npair_half_bin_newtoff_omp.h deleted file mode 100644 index e5d3034667..0000000000 --- a/src/OPENMP/npair_half_bin_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newtoff/omp, - NPairHalfBinNewtoffOmp, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoffOmp : public NPair { - public: - NPairHalfBinNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newton_omp.cpp b/src/OPENMP/npair_half_bin_newton_omp.cpp deleted file mode 100644 index 1663a2f14c..0000000000 --- a/src/OPENMP/npair_half_bin_newton_omp.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newton_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonOmp::NPairHalfBinNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newton_omp.h b/src/OPENMP/npair_half_bin_newton_omp.h deleted file mode 100644 index 68064cdf45..0000000000 --- a/src/OPENMP/npair_half_bin_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/omp, - NPairHalfBinNewtonOmp, - NP_HALF | NP_BIN | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonOmp : public NPair { - public: - NPairHalfBinNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_bin_newton_tri_omp.cpp deleted file mode 100644 index e754456ef1..0000000000 --- a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp +++ /dev/null @@ -1,145 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newton_tri_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonTriOmp::NPairHalfBinNewtonTriOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newton_tri_omp.h b/src/OPENMP/npair_half_bin_newton_tri_omp.h deleted file mode 100644 index 90d5af5db1..0000000000 --- a/src/OPENMP/npair_half_bin_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/tri/omp, - NPairHalfBinNewtonTriOmp, - NP_HALF | NP_BIN | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonTriOmp : public NPair { - public: - NPairHalfBinNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_newtoff_omp.cpp b/src/OPENMP/npair_half_multi_newtoff_omp.cpp deleted file mode 100644 index 1b65653f76..0000000000 --- a/src/OPENMP/npair_half_multi_newtoff_omp.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_newtoff_omp.h" -#include "npair_omp.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtoffOmp::NPairHalfMultiNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_newtoff_omp.h b/src/OPENMP/npair_half_multi_newtoff_omp.h deleted file mode 100644 index 658f41f926..0000000000 --- a/src/OPENMP/npair_half_multi_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newtoff/omp, - NPairHalfMultiNewtoffOmp, - NP_HALF | NP_MULTI | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_MULTI_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtoffOmp : public NPair { - public: - NPairHalfMultiNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_newton_omp.cpp b/src/OPENMP/npair_half_multi_newton_omp.cpp deleted file mode 100644 index 8add1d3703..0000000000 --- a/src/OPENMP/npair_half_multi_newton_omp.cpp +++ /dev/null @@ -1,205 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_newton_omp.h" -#include "npair_omp.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtonOmp::NPairHalfMultiNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if (icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if ((icollection != jcollection) && (j < i)) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_newton_omp.h b/src/OPENMP/npair_half_multi_newton_omp.h deleted file mode 100644 index 44bee84653..0000000000 --- a/src/OPENMP/npair_half_multi_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newton/omp, - NPairHalfMultiNewtonOmp, - NP_HALF | NP_MULTI | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_OMP_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtonOmp : public NPair { - public: - NPairHalfMultiNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_newton_tri_omp.cpp deleted file mode 100644 index a152d011a7..0000000000 --- a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_newton_tri_omp.h" -#include "npair_omp.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtonTriOmp::NPairHalfMultiNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,jbin,icollection,jcollection,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_newton_tri_omp.h b/src/OPENMP/npair_half_multi_newton_tri_omp.h deleted file mode 100644 index 21731f4f0b..0000000000 --- a/src/OPENMP/npair_half_multi_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newton/tri/omp, - NPairHalfMultiNewtonTriOmp, - NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtonTriOmp : public NPair { - public: - NPairHalfMultiNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_old_newtoff_omp.cpp b/src/OPENMP/npair_half_multi_old_newtoff_omp.cpp deleted file mode 100644 index ac5e9dae04..0000000000 --- a/src/OPENMP/npair_half_multi_old_newtoff_omp.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_old_newtoff_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtoffOmp::NPairHalfMultiOldNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_old_newtoff_omp.h b/src/OPENMP/npair_half_multi_old_newtoff_omp.h deleted file mode 100644 index 26484d6c5b..0000000000 --- a/src/OPENMP/npair_half_multi_old_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newtoff/omp, - NPairHalfMultiOldNewtoffOmp, - NP_HALF | NP_MULTI_OLD | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtoffOmp : public NPair { - public: - NPairHalfMultiOldNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_old_newton_omp.cpp b/src/OPENMP/npair_half_multi_old_newton_omp.cpp deleted file mode 100644 index baa9dd0724..0000000000 --- a/src/OPENMP/npair_half_multi_old_newton_omp.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_old_newton_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtonOmp::NPairHalfMultiOldNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - // loop over all atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_old_newton_omp.h b/src/OPENMP/npair_half_multi_old_newton_omp.h deleted file mode 100644 index 8182b49bd7..0000000000 --- a/src/OPENMP/npair_half_multi_old_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newton/omp, - NPairHalfMultiOldNewtonOmp, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_OMP_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtonOmp : public NPair { - public: - NPairHalfMultiOldNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp deleted file mode 100644 index e4895ff1a9..0000000000 --- a/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp +++ /dev/null @@ -1,155 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_old_newton_tri_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtonTriOmp::NPairHalfMultiOldNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_old_newton_tri_omp.h b/src/OPENMP/npair_half_multi_old_newton_tri_omp.h deleted file mode 100644 index 5efb007dc1..0000000000 --- a/src/OPENMP/npair_half_multi_old_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newton/tri/omp, - NPairHalfMultiOldNewtonTriOmp, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtonTriOmp : public NPair { - public: - NPairHalfMultiOldNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp b/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp deleted file mode 100644 index 388e51e1af..0000000000 --- a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_nsq_newtoff_ghost_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoffGhostOmp::NPairHalfNsqNewtoffGhostOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoffGhostOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int nall = nlocal + atom->nghost; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nall); - - int i,j,n,itype,jtype,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - } else { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = atom->nlocal; - list->gnum = nall - atom->nlocal; -} diff --git a/src/OPENMP/npair_half_nsq_newtoff_omp.cpp b/src/OPENMP/npair_half_nsq_newtoff_omp.cpp deleted file mode 100644 index 002ea37e6b..0000000000 --- a/src/OPENMP/npair_half_nsq_newtoff_omp.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_nsq_newtoff_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoffOmp::NPairHalfNsqNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int nall = atom->nlocal + atom->nghost; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - // only store pair if i < j - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_nsq_newtoff_omp.h b/src/OPENMP/npair_half_nsq_newtoff_omp.h deleted file mode 100644 index 47a03750f7..0000000000 --- a/src/OPENMP/npair_half_nsq_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newtoff/omp, - NPairHalfNsqNewtoffOmp, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtoffOmp : public NPair { - public: - NPairHalfNsqNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_nsq_newton_omp.cpp b/src/OPENMP/npair_half_nsq_newton_omp.cpp deleted file mode 100644 index cb08cb7f7a..0000000000 --- a/src/OPENMP/npair_half_nsq_newton_omp.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_nsq_newton_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtonOmp::NPairHalfNsqNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - every pair stored exactly once by some processor - decision on ghost atoms based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,itag,jtag,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int nall = atom->nlocal + atom->nghost; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itag = tag[i]; - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - // itag = jtag is possible for long cutoffs that include images of self - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_nsq_newton_omp.h b/src/OPENMP/npair_half_nsq_newton_omp.h deleted file mode 100644 index 00e975d389..0000000000 --- a/src/OPENMP/npair_half_nsq_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newton/omp, - NPairHalfNsqNewtonOmp, - NP_HALF | NP_NSQ | NP_NEWTON | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTON_OMP_H -#define LMP_NPAIR_HALF_NSQ_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtonOmp : public NPair { - public: - NPairHalfNsqNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp b/src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp deleted file mode 100644 index c6be04419d..0000000000 --- a/src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp +++ /dev/null @@ -1,203 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_respa_bin_newtoff_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtoffOmp::NPairHalfRespaBinNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; - - const int respamiddle = list->respamiddle; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - } - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - MyPage &ipage_inner = list->ipage_inner[tid]; - ipage.reset(); - ipage_inner.reset(); - - MyPage *ipage_middle; - if (respamiddle) { - ipage_middle = list->ipage_middle + tid; - ipage_middle->reset(); - } - - int which = 0; - int minchange = 0; - - for (i = ifrom; i < ito; i++) { - - n = n_inner = 0; - neighptr = ipage.vget(); - neighptr_inner = ipage_inner.vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[i] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage.vgot(n_inner); - if (ipage_inner.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[i] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->inum_inner = nlocal; - if (respamiddle) list->inum_middle = nlocal; -} diff --git a/src/OPENMP/npair_half_respa_bin_newtoff_omp.h b/src/OPENMP/npair_half_respa_bin_newtoff_omp.h deleted file mode 100644 index 8ad6209d21..0000000000 --- a/src/OPENMP/npair_half_respa_bin_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newtoff/omp, - NPairHalfRespaBinNewtoffOmp, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtoffOmp : public NPair { - public: - NPairHalfRespaBinNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp deleted file mode 100644 index c998f71290..0000000000 --- a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp +++ /dev/null @@ -1,210 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_respa_bin_newton_tri_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtonTriOmp::NPairHalfRespaBinNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; - - const int respamiddle = list->respamiddle; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - } - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - MyPage &ipage_inner = list->ipage_inner[tid]; - ipage.reset(); - ipage_inner.reset(); - - MyPage *ipage_middle; - if (respamiddle) { - ipage_middle = list->ipage_middle + tid; - ipage_middle->reset(); - } - - int which = 0; - int minchange = 0; - - for (i = ifrom; i < ito; i++) { - - n = n_inner = 0; - neighptr = ipage.vget(); - neighptr_inner = ipage_inner.vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[i] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner.vgot(n_inner); - if (ipage_inner.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[i] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->inum_inner = nlocal; - if (respamiddle) list->inum_middle = nlocal; -} diff --git a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.h b/src/OPENMP/npair_half_respa_bin_newton_tri_omp.h deleted file mode 100644 index df45372960..0000000000 --- a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newton/tri/omp, - NPairHalfRespaBinNewtonTriOmp, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtonTriOmp : public NPair { - public: - NPairHalfRespaBinNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.h b/src/OPENMP/npair_half_respa_nsq_newtoff_omp.h deleted file mode 100644 index abd28fd51b..0000000000 --- a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/nsq/newtoff/omp, - NPairHalfRespaNsqNewtoffOmp, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaNsqNewtoffOmp : public NPair { - public: - NPairHalfRespaNsqNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp b/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp deleted file mode 100644 index 6604861f74..0000000000 --- a/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp +++ /dev/null @@ -1,216 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_respa_nsq_newton_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaNsqNewtonOmp::NPairHalfRespaNsqNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; - - const int respamiddle = list->respamiddle; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,itag,jtag,n_inner,n_middle,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int nall = atom->nlocal + atom->nghost; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - } - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - MyPage &ipage_inner = list->ipage_inner[tid]; - ipage.reset(); - ipage_inner.reset(); - - MyPage *ipage_middle; - if (respamiddle) { - ipage_middle = list->ipage_middle + tid; - ipage_middle->reset(); - } - - int which = 0; - int minchange = 0; - - for (i = ifrom; i < ito; i++) { - - n = n_inner = 0; - neighptr = ipage.vget(); - neighptr_inner = ipage_inner.vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itag = tag[i]; - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[i] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage.vgot(n_inner); - if (ipage_inner.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[i] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->inum_inner = nlocal; - if (respamiddle) list->inum_middle = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newtoff_omp.cpp b/src/OPENMP/npair_half_size_bin_newtoff_omp.cpp deleted file mode 100644 index c205b67539..0000000000 --- a/src/OPENMP/npair_half_size_bin_newtoff_omp.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtoffOmp::NPairHalfSizeBinNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newtoff_omp.h b/src/OPENMP/npair_half_size_bin_newtoff_omp.h deleted file mode 100644 index a91836b152..0000000000 --- a/src/OPENMP/npair_half_size_bin_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newtoff/omp, - NPairHalfSizeBinNewtoffOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtoffOmp : public NPair { - public: - NPairHalfSizeBinNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_bin_newton_omp.cpp b/src/OPENMP/npair_half_size_bin_newton_omp.cpp deleted file mode 100644 index 628057d41d..0000000000 --- a/src/OPENMP/npair_half_size_bin_newton_omp.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newton_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtonOmp::NPairHalfSizeBinNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newton_omp.h b/src/OPENMP/npair_half_size_bin_newton_omp.h deleted file mode 100644 index efc554bb3c..0000000000 --- a/src/OPENMP/npair_half_size_bin_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newton/omp, - NPairHalfSizeBinNewtonOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtonOmp : public NPair { - public: - NPairHalfSizeBinNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp deleted file mode 100644 index c320296442..0000000000 --- a/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newton_tri_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtonTriOmp::NPairHalfSizeBinNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newton_tri_omp.h b/src/OPENMP/npair_half_size_bin_newton_tri_omp.h deleted file mode 100644 index 65b46395ca..0000000000 --- a/src/OPENMP/npair_half_size_bin_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newton/tri/omp, - NPairHalfSizeBinNewtonTriOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtonTriOmp : public NPair { - public: - NPairHalfSizeBinNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_newtoff_omp.cpp b/src/OPENMP/npair_half_size_multi_newtoff_omp.cpp deleted file mode 100644 index 73564a150c..0000000000 --- a/src/OPENMP/npair_half_size_multi_newtoff_omp.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtoffOmp::NPairHalfSizeMultiNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >=0; j = bins[j]) { - if (j <= i) continue; - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_newtoff_omp.h b/src/OPENMP/npair_half_size_multi_newtoff_omp.h deleted file mode 100644 index 2e58d9ea38..0000000000 --- a/src/OPENMP/npair_half_size_multi_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newtoff/omp, - NPairHalfSizeMultiNewtoffOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtoffOmp : public NPair { - public: - NPairHalfSizeMultiNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_newton_omp.cpp b/src/OPENMP/npair_half_size_multi_newton_omp.cpp deleted file mode 100644 index 0ed843ea0b..0000000000 --- a/src/OPENMP/npair_half_size_multi_newton_omp.cpp +++ /dev/null @@ -1,225 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newton_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtonOmp::NPairHalfSizeMultiNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if(icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if(icollection != jcollection && j < i) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - if (history && rsq < radsum*radsum) - j = j ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_newton_omp.h b/src/OPENMP/npair_half_size_multi_newton_omp.h deleted file mode 100644 index 99f9174913..0000000000 --- a/src/OPENMP/npair_half_size_multi_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newton/omp, - NPairHalfSizeMultiNewtonOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtonOmp : public NPair { - public: - NPairHalfSizeMultiNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp deleted file mode 100644 index 9a0ead482b..0000000000 --- a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newton_tri_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtonTriOmp::NPairHalfSizeMultiNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_newton_tri_omp.h b/src/OPENMP/npair_half_size_multi_newton_tri_omp.h deleted file mode 100644 index d4f6eacc27..0000000000 --- a/src/OPENMP/npair_half_size_multi_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newton/tri/omp, - NPairHalfSizeMultiNewtonTriOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtonTriOmp : public NPair { - public: - NPairHalfSizeMultiNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp b/src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp deleted file mode 100644 index c368e71095..0000000000 --- a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtoffOmp::NPairHalfSizeMultiOldNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.h b/src/OPENMP/npair_half_size_multi_old_newtoff_omp.h deleted file mode 100644 index 05eb0a5269..0000000000 --- a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newtoff/omp, - NPairHalfSizeMultiOldNewtoffOmp, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtoffOmp : public NPair { - public: - NPairHalfSizeMultiOldNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_old_newton_omp.h b/src/OPENMP/npair_half_size_multi_old_newton_omp.h deleted file mode 100644 index 70ae082dbb..0000000000 --- a/src/OPENMP/npair_half_size_multi_old_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newton/omp, - NPairHalfSizeMultiOldNewtonOmp, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtonOmp : public NPair { - public: - NPairHalfSizeMultiOldNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp deleted file mode 100644 index c74b191f66..0000000000 --- a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newton_tri_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtonTriOmp::NPairHalfSizeMultiOldNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h b/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h deleted file mode 100644 index 3c1765b668..0000000000 --- a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newton/tri/omp, - NPairHalfSizeMultiOldNewtonTriOmp, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtonTriOmp : public NPair { - public: - NPairHalfSizeMultiOldNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp b/src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp deleted file mode 100644 index 020551bd8e..0000000000 --- a/src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_nsq_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewtoffOmp::NPairHalfSizeNsqNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - shear history must be accounted for when a neighbor pair is added - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,n,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int nall = atom->nlocal + atom->nghost; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_nsq_newtoff_omp.h b/src/OPENMP/npair_half_size_nsq_newtoff_omp.h deleted file mode 100644 index 93f038eed4..0000000000 --- a/src/OPENMP/npair_half_size_nsq_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/nsq/newtoff/omp, - NPairHalfSizeNsqNewtoffOmp, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewtoffOmp : public NPair { - public: - NPairHalfSizeNsqNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_nsq_newton_omp.cpp b/src/OPENMP/npair_half_size_nsq_newton_omp.cpp deleted file mode 100644 index 35dc42ec5b..0000000000 --- a/src/OPENMP/npair_half_size_nsq_newton_omp.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_nsq_newton_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewtonOmp::NPairHalfSizeNsqNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - shear history must be accounted for when a neighbor pair is added - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,n,itag,jtag,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - tagint *tag = atom->tag; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int nall = atom->nlocal + atom->nghost; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itag = tag[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_nsq_newton_omp.h b/src/OPENMP/npair_half_size_nsq_newton_omp.h deleted file mode 100644 index 9a7e912007..0000000000 --- a/src/OPENMP/npair_half_size_nsq_newton_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/nsq/newton/omp, - NPairHalfSizeNsqNewtonOmp, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewtonOmp : public NPair { - public: - NPairHalfSizeNsqNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newtoff_omp.cpp b/src/OPENMP/npair_halffull_newtoff_omp.cpp deleted file mode 100644 index 379ae149f8..0000000000 --- a/src/OPENMP/npair_halffull_newtoff_omp.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newtoff_omp.h" - -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtoffOmp::NPairHalffullNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewtoffOmp::build(NeighList *list) -{ - const int inum_full = list->listfull->inum; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(inum_full); - - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over atoms in full list - - for (ii = ifrom; ii < ito; ii++) { - - n = 0; - neighptr = ipage.vget(); - - // loop over parent full list - - i = ilist_full[ii]; - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j > i) neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = inum_full; -} diff --git a/src/OPENMP/npair_halffull_newtoff_omp.h b/src/OPENMP/npair_halffull_newtoff_omp.h deleted file mode 100644 index f0ff24dcf9..0000000000 --- a/src/OPENMP/npair_halffull_newtoff_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/omp, - NPairHalffullNewtoffOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI |NP_OMP); - -NPairStyle(halffull/newtoff/skip/omp, - NPairHalffullNewtoffOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTOFF_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtoffOmp : public NPair { - public: - NPairHalffullNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newtoff_trim_omp.h b/src/OPENMP/npair_halffull_newtoff_trim_omp.h deleted file mode 100644 index 19e1c55eeb..0000000000 --- a/src/OPENMP/npair_halffull_newtoff_trim_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/trim/omp, - NPairHalffullNewtoffTrimOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(halffull/newtoff/skip/trim/omp, - NPairHalffullNewtoffTrimOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTOFF_TRIM_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTOFF_TRIM_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtoffTrimOmp : public NPair { - public: - NPairHalffullNewtoffTrimOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newton_omp.cpp b/src/OPENMP/npair_halffull_newton_omp.cpp deleted file mode 100644 index abd5f7eacb..0000000000 --- a/src/OPENMP/npair_halffull_newton_omp.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonOmp::NPairHalffullNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - if j is ghost, only store if j coords are "above and to the right" of i - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewtonOmp::build(NeighList *list) -{ - const int inum_full = list->listfull->inum; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(inum_full); - - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - double xtmp,ytmp,ztmp; - - double **x = atom->x; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over parent full list - - for (ii = ifrom; ii < ito; ii++) { - - n = 0; - neighptr = ipage.vget(); - - i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over full neighbor list - - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j < nlocal) { - if (i > j) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = inum_full; -} diff --git a/src/OPENMP/npair_halffull_newton_omp.h b/src/OPENMP/npair_halffull_newton_omp.h deleted file mode 100644 index 3ce9fd9ebe..0000000000 --- a/src/OPENMP/npair_halffull_newton_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/omp, - NPairHalffullNewtonOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI| NP_OMP); - -NPairStyle(halffull/newton/skip/omp, - NPairHalffullNewtonOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtonOmp : public NPair { - public: - NPairHalffullNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newton_trim_omp.cpp b/src/OPENMP/npair_halffull_newton_trim_omp.cpp deleted file mode 100644 index 1446175013..0000000000 --- a/src/OPENMP/npair_halffull_newton_trim_omp.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_trim_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonTrimOmp::NPairHalffullNewtonTrimOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list and trim to shorter cutoff - pair stored once if i,j are both owned and i < j - if j is ghost, only store if j coords are "above and to the right" of i - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewtonTrimOmp::build(NeighList *list) -{ - const int inum_full = list->listfull->inum; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(inum_full); - - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - double xtmp,ytmp,ztmp; - double delx,dely,delz,rsq; - - double **x = atom->x; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - double cutsq_custom = cutoff_custom * cutoff_custom; - - // loop over parent full list - - for (ii = ifrom; ii < ito; ii++) { - - n = 0; - neighptr = ipage.vget(); - - i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over full neighbor list - - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j < nlocal) { - if (i > j) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - // trim to shorter cutoff - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx * delx + dely * dely + delz * delz; - - if (rsq > cutsq_custom) continue; - - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = inum_full; -} diff --git a/src/OPENMP/npair_halffull_newton_trim_omp.h b/src/OPENMP/npair_halffull_newton_trim_omp.h deleted file mode 100644 index 4cb84f1b3a..0000000000 --- a/src/OPENMP/npair_halffull_newton_trim_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/trim/omp, - NPairHalffullNewtonTrimOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI| NP_TRIM | NP_OMP); - -NPairStyle(halffull/newton/skip/trim/omp, - NPairHalffullNewtonTrimOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_TRIM_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTON_TRIM_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtonTrimOmp : public NPair { - public: - NPairHalffullNewtonTrimOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newtoff_trim_omp.cpp b/src/OPENMP/npair_halffull_omp.cpp similarity index 59% rename from src/OPENMP/npair_halffull_newtoff_trim_omp.cpp rename to src/OPENMP/npair_halffull_omp.cpp index d35b3b2ee8..559d8910b1 100644 --- a/src/OPENMP/npair_halffull_newtoff_trim_omp.cpp +++ b/src/OPENMP/npair_halffull_omp.cpp @@ -12,7 +12,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "npair_halffull_newtoff_trim_omp.h" +#include "npair_halffull_omp.h" #include "atom.h" #include "error.h" @@ -26,16 +26,24 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalffullNewtoffTrimOmp::NPairHalffullNewtoffTrimOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairHalffullOmp::NPairHalffullOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - build half list from full list and trim to shorter cutoff + build half list from full list pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) works if full list is a skip list + + Newtoff: + pair stored by me if j is ghost (also stored by proc owning j) + works for owned (non-ghost) list, also for ghost list + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly + Newton: + if j is ghost, only store if j coords are "above and to the right" of i ------------------------------------------------------------------------- */ -void NPairHalffullNewtoffTrimOmp::build(NeighList *list) +template +void NPairHalffullOmp::build(NeighList *list) { const int inum_full = list->listfull->inum; @@ -52,6 +60,7 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) double delx,dely,delz,rsq; double **x = atom->x; + int nlocal = atom->nlocal; int *ilist = list->ilist; int *numneigh = list->numneigh; @@ -76,10 +85,6 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) // loop over parent full list i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - jlist = firstneigh_full[i]; jnum = numneigh_full[i]; @@ -87,16 +92,39 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) joriginal = jlist[jj]; j = joriginal & NEIGHMASK; - // trim to shorter cutoff + if (NEWTON) { + if (j < nlocal) { + if (i > j) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx * delx + dely * dely + delz * delz; + if (TRIM) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; - if (rsq > cutsq_custom) continue; + if (rsq > cutsq_custom) continue; + } + neighptr[n++] = joriginal; + } else { + if (j > i) { + if (TRIM) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; - if (j > i) neighptr[n++] = joriginal; + if (rsq > cutsq_custom) continue; + } + neighptr[n++] = joriginal; + } + } } ilist[ii] = i; @@ -109,3 +137,10 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) NPAIR_OMP_CLOSE; list->inum = inum_full; } + +namespace LAMMPS_NS { +template class NPairHalffullOmp<0,0>; +template class NPairHalffullOmp<1,0>; +template class NPairHalffullOmp<0,1>; +template class NPairHalffullOmp<1,1>; +} diff --git a/src/OPENMP/npair_halffull_omp.h b/src/OPENMP/npair_halffull_omp.h new file mode 100644 index 0000000000..fca7fe37e8 --- /dev/null +++ b/src/OPENMP/npair_halffull_omp.h @@ -0,0 +1,107 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_OMP); + +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/skip/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); + +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/ghost/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_OMP); + +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/skip/ghost/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_OMP); + +typedef NPairHalffullOmp<1, 0> NPairHalffullOmpNewtonOmp; +NPairStyle(halffull/newton/omp, + NPairHalffullOmpNewtonOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_OMP); + +typedef NPairHalffullOmp<1, 0> NPairHalffullOmpNewtonOmp; +NPairStyle(halffull/newton/skip/omp, + NPairHalffullOmpNewtonOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/skip/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/ghost/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/skip/ghost/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<1, 1> NPairHalffullOmpNewtonTrimOmp; +NPairStyle(halffull/newton/trim/omp, + NPairHalffullOmpNewtonTrimOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<1, 1> NPairHalffullOmpNewtonTrimOmp; +NPairStyle(halffull/newton/skip/trim/omp, + NPairHalffullOmpNewtonTrimOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); +// clang-format on +#else + +#ifndef LMP_NPAIR_HALFFULL_OMP_H +#define LMP_NPAIR_HALFFULL_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairHalffullOmp : public NPair { + public: + NPairHalffullOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_multi_old_omp.cpp b/src/OPENMP/npair_multi_old_omp.cpp new file mode 100644 index 0000000000..1c2e86df80 --- /dev/null +++ b/src/OPENMP/npair_multi_old_omp.cpp @@ -0,0 +1,243 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_multi_old_omp.h" +#include "atom.h" +#include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" +#include "npair_omp.h" +#include "omp_compat.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairMultiOldOmp::NPairMultiOldOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi/old-type stencil is itype dependent and is distance checked + Full: + binned neighbor list construction for all neighbors + multi-type stencil is itype dependent and is distance checked + every neighbor pair appears in list of both atoms i and j + Half + newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + multi-type stencil is itype dependent and is distance checked + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + multi-type stencil is itype dependent and is distance checked + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMultiOldOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int molecular = atom->molecular; + const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i, j, jh, k, n, itype, jtype, ibin, bin_start, which, ns, imol, iatom; + tagint tagprev; + double xtmp, ytmp, ztmp, delx, dely, delz, rsq; + double radsum,cut,cutsq; + int *neighptr, *s; + double *cutnsq, *distsq; + + // loop over each atom, storing neighbors + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + for (i = ifrom; i < ito; i++) { + + n = 0; + neighptr = ipage.vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + ibin = atom2bin[i]; + s = stencil_multi_old[itype]; + distsq = distsq_multi_old[itype]; + cutnsq = cutneighsq[itype]; + ns = nstencil_multi_old[itype]; + for (k = 0; k < ns; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (cutnsq[jtype] < distsq[k]) continue; + + if (exclude && exclusion(i, j, itype, jtype, mask, molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMultiOldOmp<0,1,0,0>; +template class NPairMultiOldOmp<1,0,0,0>; +template class NPairMultiOldOmp<1,1,0,0>; +template class NPairMultiOldOmp<1,1,1,0>; +template class NPairMultiOldOmp<0,1,0,1>; +template class NPairMultiOldOmp<1,0,0,1>; +template class NPairMultiOldOmp<1,1,0,1>; +template class NPairMultiOldOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_multi_old_omp.h b/src/OPENMP/npair_multi_old_omp.h new file mode 100644 index 0000000000..4251c6ed48 --- /dev/null +++ b/src/OPENMP/npair_multi_old_omp.h @@ -0,0 +1,77 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairMultiOldOmp<0, 1, 0, 0> NPairFullMultiOldOmp; +NPairStyle(full/multi/old/omp, + NPairFullMultiOldOmp, + NP_FULL | NP_MULTI_OLD | NP_OMP | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 0, 0, 0> NPairHalfMultiOldNewtoffOmp; +NPairStyle(half/multi/old/newtoff/omp, + NPairHalfMultiOldNewtoffOmp, + NP_HALF | NP_MULTI_OLD | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 1, 0, 0> NPairHalfMultiOldNewtonOmp; +NPairStyle(half/multi/old/newton/omp, + NPairHalfMultiOldNewtonOmp, + NP_HALF | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOldOmp<1, 1, 1, 0> NPairHalfMultiOldNewtonTriOmp; +NPairStyle(half/multi/old/newton/tri/omp, + NPairHalfMultiOldNewtonTriOmp, + NP_HALF | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_TRI); + +typedef NPairMultiOldOmp<0, 1, 0, 1> NPairFullSizeMultiOldOmp; +NPairStyle(full/size/multi/old/omp, + NPairFullSizeMultiOldOmp, + NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_OMP | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 0, 0, 1> NPairHalfSizeMultiOldNewtoffOmp; +NPairStyle(half/size/multi/old/newtoff/omp, + NPairHalfSizeMultiOldNewtoffOmp, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 1, 0, 1> NPairHalfSizeMultiOldNewtonOmp; +NPairStyle(half/size/multi/old/newton/omp, + NPairHalfSizeMultiOldNewtonOmp, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOldOmp<1, 1, 1, 1> NPairHalfSizeMultiOldNewtonTriOmp; +NPairStyle(half/size/multi/old/newton/tri/omp, + NPairHalfSizeMultiOldNewtonTriOmp, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_OLD_OMP_H +#define LMP_NPAIR_MULTI_OLD_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMultiOldOmp : public NPair { + public: + NPairMultiOldOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp new file mode 100644 index 0000000000..bbdce96ffc --- /dev/null +++ b/src/OPENMP/npair_multi_omp.cpp @@ -0,0 +1,247 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "omp_compat.h" +#include "npair_multi_omp.h" +#include "npair_omp.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairMultiOmp::NPairMultiOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi stencil is icollection-jcollection dependent + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMultiOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int molecular = atom->molecular; + const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i,j,jh,js,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr,*s; + + // loop over each atom, storing neighbors + + int *collection = neighbor->collection; + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + for (i = ifrom; i < ito; i++) { + + n = 0; + neighptr = ipage.vget(); + + itype = type[i]; + icollection = collection[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + + ibin = atom2bin[i]; + + // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { + + // if same collection use own bin + if (icollection == jcollection) jbin = ibin; + else jbin = coord2bin(x[i], jcollection); + + // loop over all atoms in surrounding bins in stencil including self + // skip i = j + // use full stencil for all collection combinations + + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; + + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMultiOmp<0,1,0,0>; +template class NPairMultiOmp<1,0,0,0>; +template class NPairMultiOmp<1,1,0,0>; +template class NPairMultiOmp<1,1,1,0>; +template class NPairMultiOmp<0,1,0,1>; +template class NPairMultiOmp<1,0,0,1>; +template class NPairMultiOmp<1,1,0,1>; +template class NPairMultiOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_multi_omp.h b/src/OPENMP/npair_multi_omp.h new file mode 100644 index 0000000000..dd85ca8a8e --- /dev/null +++ b/src/OPENMP/npair_multi_omp.h @@ -0,0 +1,75 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairMultiOmp<0, 1, 0, 0> NPairFullMultiOmp; +NPairStyle(full/multi/omp, + NPairFullMultiOmp, + NP_FULL | NP_MULTI | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 0, 0, 0> NPairHalfMultiNewtoffOmp; +NPairStyle(half/multi/newtoff/omp, + NPairHalfMultiNewtoffOmp, + NP_HALF | NP_MULTI | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 1, 0, 0> NPairHalfMultiNewtonOmp; +NPairStyle(half/multi/newton/omp, + NPairHalfMultiNewtonOmp, + NP_HALF | NP_MULTI | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOmp<1, 1, 1, 0> NPairHalfMultiNewtonTriOmp; +NPairStyle(half/multi/newton/tri/omp, + NPairHalfMultiNewtonTriOmp, + NP_HALF | NP_MULTI | NP_OMP | NP_NEWTON | NP_TRI); + +typedef NPairMultiOmp<0, 1, 0, 1> NPairFullSizeMultiOmp; +NPairStyle(full/size/multi/omp, + NPairFullSizeMultiOmp, + NP_FULL | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 0, 0, 1> NPairHalfSizeMultiNewtoffOmp; +NPairStyle(half/size/multi/newtoff/omp, + NPairHalfSizeMultiNewtoffOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 1, 0, 1> NPairHalfSizeMultiNewtonOmp; +NPairStyle(half/size/multi/newton/omp, + NPairHalfSizeMultiNewtonOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOmp<1, 1, 1, 1> NPairHalfSizeMultiNewtonTriOmp; +NPairStyle(half/size/multi/newton/tri/omp, + NPairHalfSizeMultiNewtonTriOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_OMP_H +#define LMP_NPAIR_MULTI_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMultiOmp : public NPair { + public: + NPairMultiOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_full_nsq_ghost_omp.cpp b/src/OPENMP/npair_nsq_ghost_omp.cpp similarity index 71% rename from src/OPENMP/npair_full_nsq_ghost_omp.cpp rename to src/OPENMP/npair_nsq_ghost_omp.cpp index 05f402a99d..e1e82fb3ff 100644 --- a/src/OPENMP/npair_full_nsq_ghost_omp.cpp +++ b/src/OPENMP/npair_nsq_ghost_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_full_nsq_ghost_omp.h" +#include "npair_nsq_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -27,15 +27,24 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairFullNsqGhostOmp::NPairFullNsqGhostOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairNsqGhostOmp::NPairNsqGhostOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - N^2 search for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j + Full: + N^2 search for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ -void NPairFullNsqGhostOmp::build(NeighList *list) +template +void NPairNsqGhostOmp::build(NeighList *list) { const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; @@ -48,7 +57,7 @@ void NPairFullNsqGhostOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nall); - int i,j,n,itype,jtype,which,imol,iatom; + int i,j,jstart,n,itype,jtype,which,imol,iatom; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; @@ -91,12 +100,24 @@ void NPairFullNsqGhostOmp::build(NeighList *list) } // loop over all atoms, owned and ghost - // skip i = j + // Full: + // skip i = j + // Half: + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs with owned atom only, on both procs + // stores ghost/ghost pairs only once // no molecular test when i = ghost atom + if (HALF) jstart = i + 1; + else jstart = 0; + if (i < nlocal) { - for (j = 0; j < nall; j++) { - if (i == j) continue; + for (j = jstart; j < nall; j++) { + if (!HALF) { + if (i == j) continue; + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -121,8 +142,11 @@ void NPairFullNsqGhostOmp::build(NeighList *list) } } } else { - for (j = 0; j < nall; j++) { - if (i == j) continue; + for (j = jstart; j < nall; j++) { + if (!HALF) { + if (i == j) continue; + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -131,7 +155,11 @@ void NPairFullNsqGhostOmp::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + if (HALF) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + } } } @@ -146,3 +174,8 @@ void NPairFullNsqGhostOmp::build(NeighList *list) list->inum = nlocal; list->gnum = nall - nlocal; } + +namespace LAMMPS_NS { +template class NPairNsqGhostOmp<0>; +template class NPairNsqGhostOmp<1>; +} diff --git a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.h b/src/OPENMP/npair_nsq_ghost_omp.h similarity index 64% rename from src/OPENMP/npair_half_nsq_newtoff_ghost_omp.h rename to src/OPENMP/npair_nsq_ghost_omp.h index 4df15104c3..1d33758bac 100644 --- a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.h +++ b/src/OPENMP/npair_nsq_ghost_omp.h @@ -13,23 +13,29 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairNsqGhostOmp<0> NPairFullNsqGhostOmp; +NPairStyle(full/nsq/ghost/omp, + NPairFullNsqGhostOmp, + NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_OMP | NP_ORTHO | NP_TRI); + +typedef NPairNsqGhostOmp<1> NPairHalfNsqNewtoffGhostOmp; NPairStyle(half/nsq/newtoff/ghost/omp, NPairHalfNsqNewtoffGhostOmp, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_OMP | - NP_ORTHO | NP_TRI); + NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_OMP | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_OMP_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_OMP_H +#ifndef LMP_NPAIR_NSQ_GHOST_OMP_H +#define LMP_NPAIR_NSQ_GHOST_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairHalfNsqNewtoffGhostOmp : public NPair { +template +class NPairNsqGhostOmp : public NPair { public: - NPairHalfNsqNewtoffGhostOmp(class LAMMPS *); + NPairNsqGhostOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/OPENMP/npair_half_size_multi_old_newton_omp.cpp b/src/OPENMP/npair_nsq_omp.cpp similarity index 51% rename from src/OPENMP/npair_half_size_multi_old_newton_omp.cpp rename to src/OPENMP/npair_nsq_omp.cpp index 187efe04d1..232fee2d42 100644 --- a/src/OPENMP/npair_half_size_multi_old_newton_omp.cpp +++ b/src/OPENMP/npair_nsq_omp.cpp @@ -12,40 +12,48 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "npair_half_size_multi_old_newton_omp.h" - +#include "omp_compat.h" +#include "npair_nsq_omp.h" +#include "npair_omp.h" +#include "neigh_list.h" +#include "neighbor.h" #include "atom.h" #include "atom_vec.h" -#include "domain.h" -#include "error.h" +#include "group.h" #include "molecule.h" +#include "domain.h" #include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" +#include "error.h" -#include "omp_compat.h" using namespace LAMMPS_NS; +using namespace NeighConst; /* ---------------------------------------------------------------------- */ -NPairHalfSizeMultiOldNewtonOmp::NPairHalfSizeMultiOldNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} +template +NPairNsqOmp::NPairNsqOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor + Full: + N^2 search for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + every pair stored exactly once by some processor + decision on ghost atoms based on itag,jtag tests ------------------------------------------------------------------------- */ -void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) +template +void NPairNsqOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -53,12 +61,11 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; + int i,j,jh,jstart,n,itype,jtype,which,imol,iatom; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; + double radsum,cut,cutsq; + int *neighptr; double **x = atom->x; double *radius = atom->radius; @@ -69,10 +76,14 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) tagint **special = atom->special; int **nspecial = atom->nspecial; + int nall = atom->nlocal + atom->nghost; int *molindex = atom->molindex; int *molatom = atom->molatom; Molecule **onemols = atom->avec->onemols; + int history = list->history; + int mask_history = 1 << HISTBITS; + int *ilist = list->ilist; int *numneigh = list->numneigh; int **firstneigh = list->firstneigh; @@ -81,6 +92,8 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) MyPage &ipage = list->ipage[tid]; ipage.reset(); + // loop over owned atoms, storing neighbors + for (i = ifrom; i < ito; i++) { n = 0; @@ -90,87 +103,66 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; - radi = radius[i]; if (moltemplate) { imol = molindex[i]; iatom = molatom[i]; tagprev = tag[i] - iatom - 1; } - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i + // Full: loop over all atoms, owned and ghost, skip i = j + // Half: loop over remaining atoms, owned and ghost + // Newtoff: only store pair if i < j + // Newton: itag = jtag is possible for long cutoffs that include images of self - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + if (!HALF) jstart = 0; + else jstart = i + 1; + + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; + + if (!HALF) { + // Full neighbor list + if (i == j) continue; + } else if (NEWTON) { + // Half neighbor list, newton on + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } } } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { + if (rsq <= cutsq) { jh = j; - if (history && rsq < radsum*radsum) + if (history && rsq < radsum * radsum) jh = jh ^ mask_history; if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); @@ -181,6 +173,22 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); } else neighptr[n++] = jh; } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } } } @@ -193,4 +201,14 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) } NPAIR_OMP_CLOSE; list->inum = nlocal; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairNsqOmp<0,1,0>; +template class NPairNsqOmp<1,0,0>; +template class NPairNsqOmp<1,1,0>; +template class NPairNsqOmp<0,1,1>; +template class NPairNsqOmp<1,0,1>; +template class NPairNsqOmp<1,1,1>; } diff --git a/src/OPENMP/npair_nsq_omp.h b/src/OPENMP/npair_nsq_omp.h new file mode 100644 index 0000000000..150ac143ad --- /dev/null +++ b/src/OPENMP/npair_nsq_omp.h @@ -0,0 +1,66 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off + +typedef NPairNsqOmp<0, 1, 0> NPairFullNsqOmp; +NPairStyle(full/nsq/omp, + NPairFullNsqOmp, + NP_FULL | NP_NSQ | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 0, 0> NPairHalfNsqNewtoffOmp; +NPairStyle(half/nsq/newtoff/omp, + NPairHalfNsqNewtoffOmp, + NP_HALF | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 1, 0> NPairHalfNsqNewtonOmp; +NPairStyle(half/nsq/newton/omp, + NPairHalfNsqNewtonOmp, + NP_HALF | NP_NSQ | NP_OMP | NP_NEWTON | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<0, 1, 1> NPairFullSizeNsqOmp; +NPairStyle(full/size/nsq/omp, + NPairFullSizeNsqOmp, + NP_FULL | NP_SIZE | NP_NSQ | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 0, 1> NPairHalfSizeNsqNewtoffOmp; +NPairStyle(half/size/nsq/newtoff/omp, + NPairHalfSizeNsqNewtoffOmp, + NP_HALF | NP_SIZE | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 1, 1> NPairHalfSizeNsqNewtonOmp; +NPairStyle(half/size/nsq/newton/omp, + NPairHalfSizeNsqNewtonOmp, + NP_HALF | NP_SIZE | NP_NSQ | NP_OMP | NP_NEWTON | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_NSQ_OMP_H +#define LMP_NPAIR_NSQ_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairNsqOmp : public NPair { + public: + NPairNsqOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_half_respa_bin_newton_omp.cpp b/src/OPENMP/npair_respa_bin_omp.cpp similarity index 67% rename from src/OPENMP/npair_half_respa_bin_newton_omp.cpp rename to src/OPENMP/npair_respa_bin_omp.cpp index 51fc7a2ed8..877f368083 100644 --- a/src/OPENMP/npair_half_respa_bin_newton_omp.cpp +++ b/src/OPENMP/npair_respa_bin_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_half_respa_bin_newton_omp.h" +#include "npair_respa_bin_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -27,17 +27,25 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfRespaBinNewtonOmp::NPairHalfRespaBinNewtonOmp(LAMMPS *lmp) : +template +NPairRespaBinOmp::NPairRespaBinOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multiple respa lists - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor + Newtoff + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and surrounding bins in non-Newton stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Newton + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -void NPairHalfRespaBinNewtonOmp::build(NeighList *list) +template +void NPairRespaBinOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; @@ -52,7 +60,7 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; + int i,j,k,n,itype,jtype,ibin,bin_start,n_inner,n_middle,imol,iatom; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; @@ -115,76 +123,68 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; + ibin = atom2bin[i]; if (moltemplate) { imol = molindex[i]; iatom = molatom[i]; tagprev = tag[i] - iatom - 1; } - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (rsq <= cutneighsq[itype][jtype]) { if (molecular != Atom::ATOMIC) { @@ -247,3 +247,9 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) list->inum_inner = nlocal; if (respamiddle) list->inum_middle = nlocal; } + +namespace LAMMPS_NS { +template class NPairRespaBinOmp<0,0>; +template class NPairRespaBinOmp<1,0>; +template class NPairRespaBinOmp<1,1>; +} diff --git a/src/OPENMP/npair_half_respa_bin_newton_omp.h b/src/OPENMP/npair_respa_bin_omp.h similarity index 55% rename from src/OPENMP/npair_half_respa_bin_newton_omp.h rename to src/OPENMP/npair_respa_bin_omp.h index 695d0ce627..23daacbb8f 100644 --- a/src/OPENMP/npair_half_respa_bin_newton_omp.h +++ b/src/OPENMP/npair_respa_bin_omp.h @@ -13,22 +13,34 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairRespaBinOmp<0, 0> NPairHalfRespaBinNewtoffOmp; +NPairStyle(half/respa/bin/newtoff, + NPairHalfRespaBinNewtoffOmp, + NP_HALF | NP_RESPA | NP_BIN | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaBinOmp<1, 0> NPairHalfRespaBinNewtonOmp; NPairStyle(half/respa/bin/newton/omp, NPairHalfRespaBinNewtonOmp, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_OMP | NP_ORTHO); + NP_HALF | NP_RESPA | NP_BIN | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairRespaBinOmp<1, 1> NPairHalfRespaBinNewtonTriOmp; +NPairStyle(half/respa/bin/newton/tri/omp, + NPairHalfRespaBinNewtonTriOmp, + NP_HALF | NP_RESPA | NP_BIN | NP_OMP | NP_NEWTON | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_OMP_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_OMP_H +#ifndef LMP_NPAIR_RESPA_BIN_OMP_H +#define LMP_NPAIR_RESPA_BIN_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairHalfRespaBinNewtonOmp : public NPair { +template +class NPairRespaBinOmp : public NPair { public: - NPairHalfRespaBinNewtonOmp(class LAMMPS *); + NPairRespaBinOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.cpp b/src/OPENMP/npair_respa_nsq_omp.cpp similarity index 81% rename from src/OPENMP/npair_half_respa_nsq_newtoff_omp.cpp rename to src/OPENMP/npair_respa_nsq_omp.cpp index 1167a7601b..7464f70570 100644 --- a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.cpp +++ b/src/OPENMP/npair_respa_nsq_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_half_respa_nsq_newtoff_omp.h" +#include "npair_respa_nsq_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -28,17 +28,25 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfRespaNsqNewtoffOmp::NPairHalfRespaNsqNewtoffOmp(LAMMPS *lmp) : +template +NPairRespaNsqOmp::NPairRespaNsqOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multiple respa lists - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) + Newtoff + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + pair added if j is ghost (also stored by proc owning j) + Newton + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + if j is ghost only me or other proc adds pair + decision based on itag,jtag tests ------------------------------------------------------------------------- */ -void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) +template +void NPairRespaNsqOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; @@ -55,7 +63,7 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,n,itype,jtype,n_inner,n_middle,imol,iatom; - tagint tagprev; + tagint itag, jtag, tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; @@ -116,6 +124,7 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) } itype = type[i]; + itag = tag[i]; xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; @@ -127,8 +136,26 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) // loop over remaining atoms, owned and ghost - for (j = i+1; j < nall; j++) { + for (j = i + 1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; + + if (NEWTON) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag + jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -195,3 +222,8 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) list->inum_inner = nlocal; if (respamiddle) list->inum_middle = nlocal; } + +namespace LAMMPS_NS { +template class NPairRespaNsqOmp<0>; +template class NPairRespaNsqOmp<1>; +} diff --git a/src/OPENMP/npair_half_respa_nsq_newton_omp.h b/src/OPENMP/npair_respa_nsq_omp.h similarity index 63% rename from src/OPENMP/npair_half_respa_nsq_newton_omp.h rename to src/OPENMP/npair_respa_nsq_omp.h index d949ef7e93..66b0f634cd 100644 --- a/src/OPENMP/npair_half_respa_nsq_newton_omp.h +++ b/src/OPENMP/npair_respa_nsq_omp.h @@ -13,23 +13,29 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairRespaNsqOmp<0> NPairHalfRespaNsqNewtoffOmp; +NPairStyle(half/respa/nsq/newtoff/omp, + NPairHalfRespaNsqNewtoff, + NP_HALF | NP_RESPA | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaNsqOmp<1> NPairHalfRespaNsqNewtonOmp; NPairStyle(half/respa/nsq/newton/omp, NPairHalfRespaNsqNewtonOmp, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_OMP | - NP_ORTHO | NP_TRI); + NP_HALF | NP_RESPA | NP_NSQ | NP_OMP | NP_NEWTON | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_OMP_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_OMP_H +#ifndef LMP_NPAIR_RESPA_NSQ_OMP_H +#define LMP_NPAIR_RESPA_NSQ_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairHalfRespaNsqNewtonOmp : public NPair { +template +class NPairRespaNsqOmp : public NPair { public: - NPairHalfRespaNsqNewtonOmp(class LAMMPS *); + NPairRespaNsqOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp index 4cf30f10f9..45e2cd0358 100644 --- a/src/npair_bin_ghost.cpp +++ b/src/npair_bin_ghost.cpp @@ -44,7 +44,6 @@ NPairBinGhost::NPairBinGhost(LAMMPS *lmp) : NPair(lmp) {} pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ - template void NPairBinGhost::build(NeighList *list) { diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index ab182f39c4..ba703691cd 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -105,7 +105,7 @@ void NPairMulti::build(NeighList *list) // if same collection use own bin if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); + else jbin = coord2bin(x[i], jcollection); s = stencil_multi[icollection][jcollection]; ns = nstencil_multi[icollection][jcollection]; diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index 3c61d4ba29..967a366cf4 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -159,7 +159,6 @@ void NPairMultiOld::build(NeighList *list) jtype = type[j]; if (cutnsq[jtype] < distsq[k]) continue; - if (i == j) continue; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_nsq.h b/src/npair_nsq.h index 749ea3a78c..df6e332865 100644 --- a/src/npair_nsq.h +++ b/src/npair_nsq.h @@ -42,7 +42,6 @@ typedef NPairNsq<1, 1, 1> NPairHalfSizeNsqNewton; NPairStyle(half/size/nsq/newton, NPairHalfSizeNsqNewton, NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); - // clang-format on #else diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp index 5e4185f9d6..47009deff7 100644 --- a/src/npair_nsq_ghost.cpp +++ b/src/npair_nsq_ghost.cpp @@ -44,7 +44,6 @@ NPairNsqGhost::NPairNsqGhost(LAMMPS *lmp) : NPair(lmp) {} pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ - template void NPairNsqGhost::build(NeighList *list) { @@ -159,6 +158,7 @@ void NPairNsqGhost::build(NeighList *list) if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; } else { if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + } } } diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp index a3bcbf5124..7710a9d8ab 100644 --- a/src/npair_respa_bin.cpp +++ b/src/npair_respa_bin.cpp @@ -167,7 +167,7 @@ void NPairRespaBin::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (rsq <= cutneighsq[itype][jtype]) { if (molecular != Atom::ATOMIC) { From b3e6a0bfa3c471e93bb4e047a5678a9c793e21ee Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 12 Nov 2022 20:44:45 -0700 Subject: [PATCH 0026/1002] Fixing mistake in multi stencil --- src/npair_multi.cpp | 2 +- src/nstencil_multi.cpp | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index ba703691cd..9f719f403a 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -160,7 +160,7 @@ void NPairMulti::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (SIZE) { radsum = radius[i] + radius[j]; diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp index 76329db12d..6e9fefea1e 100644 --- a/src/nstencil_multi.cpp +++ b/src/nstencil_multi.cpp @@ -68,12 +68,6 @@ void NStencilMulti::create() int n = ncollections; double cutsq; - // For half stencils, only the upper plane is needed - int sy_min = sy; - int sz_min = sz; - if (HALF && (!DIM_3D)) sy_min = 0; - if (HALF && DIM_3D) sz_min = 0; - for (icollection = 0; icollection < n; icollection++) { for (jcollection = 0; jcollection < n; jcollection++) { if (flag_skip_multi[icollection][jcollection]) { @@ -101,15 +95,25 @@ void NStencilMulti::create() // as the old npair classes used to separately parse the central bin first if (half_flag && (!TRI)) stencil[nstencil++] = 0; + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF) { + if (half_flag && (!DIM_3D)) sy_min = 0; + if (half_flag && DIM_3D) sz_min = 0; + } + for (k = -sz_min; k <= sz; k++) { for (j = -sy_min; j <= sy; j++) { for (i = -sx; i <= sx; i++) { // Now only include "upper right" bins for half and ortho stencils - if (half_flag && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; - if (half_flag && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (HALF) { + if (half_flag && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (half_flag && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + } if (bin_distance_multi(i,j,k,bin_collection) < cutsq) stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; From f3d5941301a4b5db55b04fbd263194147f854fc6 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 14 Nov 2022 20:48:02 -0700 Subject: [PATCH 0027/1002] Updating logic for multi --- src/OPENMP/npair_multi_omp.cpp | 55 +++++++++++++++++++++------------- src/npair.cpp | 2 ++ src/npair.h | 1 + src/npair_multi.cpp | 48 +++++++++++++++++++---------- src/nstencil_multi.cpp | 19 ++++++------ 5 files changed, 80 insertions(+), 45 deletions(-) diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index bbdce96ffc..e5db08e157 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -118,15 +118,16 @@ void NPairMultiOmp::build(NeighList *list) if (icollection == jcollection) jbin = ibin; else jbin = coord2bin(x[i], jcollection); - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - // use full stencil for all collection combinations - s = stencil_multi[icollection][jcollection]; ns = nstencil_multi[icollection][jcollection]; for (k = 0; k < ns; k++) { js = binhead_multi[jcollection][jbin + s[k]]; + + // own-bin for half stencil + if (HALF) + if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; + for (j = js; j >= 0; j = bins[j]) { if (!HALF) { // Full neighbor list @@ -144,40 +145,52 @@ void NPairMultiOmp::build(NeighList *list) // below = lower z or (equal z and lower y) or (equal zy and lower x) // (equal zyx and j <= i) // latter excludes self-self interaction but allows superposed atoms - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + // if same size (same collection), use half stencil + if (flag_half_multi[icollection][jcollection]) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } } } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // if same size: uses half stencil so includes a check of the central bin + if (flag_half_multi[icollection][jcollection]){ + if (s[k] == 0) { + // if same collection, + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the right" of i - if (stencil[k] == 0) { - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the "right" of i - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + // if different collections, + // if j is owned atom, store it if j > i + // if j is ghost, only store if j coords are "above and to the right" of i + + if ((icollection != jcollection) && (j < i)) continue; + + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } } } } } jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (SIZE) { radsum = radius[i] + radius[j]; cut = radsum + skin; diff --git a/src/npair.cpp b/src/npair.cpp index c1615411c0..6fddcfef54 100644 --- a/src/npair.cpp +++ b/src/npair.cpp @@ -174,6 +174,8 @@ void NPair::copy_stencil_info() nstencil_multi = ns->nstencil_multi; stencil_multi = ns->stencil_multi; + + flag_half_multi = ns->flag_half_multi; } /* ---------------------------------------------------------------------- diff --git a/src/npair.h b/src/npair.h index 3eeb1d48f4..661196e586 100644 --- a/src/npair.h +++ b/src/npair.h @@ -96,6 +96,7 @@ class NPair : protected Pointers { int *nstencil_multi_old; int **stencil_multi_old; double **distsq_multi_old; + bool **flag_half_multi; int **nstencil_multi; int ***stencil_multi; diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 9f719f403a..76f6d90f6e 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -112,6 +112,11 @@ void NPairMulti::build(NeighList *list) for (k = 0; k < ns; k++) { js = binhead_multi[jcollection][jbin + s[k]]; + + // own-bin for half stencil + if (HALF) + if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; + for (j = js; j >= 0; j = bins[j]) { if (!HALF) { // Full neighbor list @@ -129,26 +134,39 @@ void NPairMulti::build(NeighList *list) // below = lower z or (equal z and lower y) or (equal zy and lower x) // (equal zyx and j <= i) // latter excludes self-self interaction but allows superposed atoms - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + // if same size (same collection), use half stencil + if (flag_half_multi[icollection][jcollection]) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } } } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // if same size: uses half stencil so includes a check of the central bin + if (flag_half_multi[icollection][jcollection]) { + if (s[k] == 0) { + // if same collection, + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the right" of i - if (stencil[k] == 0) { - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the "right" of i - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + // if different collections, + // if j is owned atom, store it if j > i + // if j is ghost, only store if j coords are "above and to the right" of i + + if ((icollection != jcollection) && (j < i)) continue; + + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } } } } diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp index 6e9fefea1e..202dace29d 100644 --- a/src/nstencil_multi.cpp +++ b/src/nstencil_multi.cpp @@ -87,13 +87,13 @@ void NStencilMulti::create() bin_collection = bin_collection_multi[icollection][jcollection]; cutsq = cutcollectionsq[icollection][jcollection]; - half_flag = flag_half_multi[icollection][jcollection]; // Half and ortho stencils include central bin first // This preserves the historical order of the neighbor list // as the old npair classes used to separately parse the central bin first - if (half_flag && (!TRI)) stencil[nstencil++] = 0; + if (HALF && (!TRI)) + if (half_flag) stencil_multi[icollection][jcollection][ns++] = 0; // For half stencils, only the upper plane is needed int sy_min = sy; @@ -106,15 +106,16 @@ void NStencilMulti::create() for (k = -sz_min; k <= sz; k++) { for (j = -sy_min; j <= sy; j++) { for (i = -sx; i <= sx; i++) { - // Now only include "upper right" bins for half and ortho stencils - if (HALF) { - if (half_flag && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; - if (half_flag && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (HALF && (!TRI)) { + if (half_flag) { + if (DIM_3D) { + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + } else { + if (! (j > 0 || (j == 0 && i > 0))) continue; + } + } } - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; } From 8f81cd80b65ff594e0bfaf7fecd1c687b05a650a Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 22 Nov 2022 21:31:31 -0700 Subject: [PATCH 0028/1002] Fixing a few errors in npair/stencil classes --- src/npair_bin_ghost.cpp | 2 +- src/npair_multi.cpp | 2 +- src/nstencil_ghost_bin.cpp | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp index 45e2cd0358..f3b96492dc 100644 --- a/src/npair_bin_ghost.cpp +++ b/src/npair_bin_ghost.cpp @@ -149,7 +149,7 @@ void NPairBinGhost::build(NeighList *list) if (xbin2 < 0 || xbin2 >= mbinx || ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + for (j = binhead[ibin + stencil[k]]; j >= 0; j = bins[j]) { if (HALF) { if (j <= i) continue; } else { diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 76f6d90f6e..c05aa7fc5c 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -114,7 +114,7 @@ void NPairMulti::build(NeighList *list) js = binhead_multi[jcollection][jbin + s[k]]; // own-bin for half stencil - if (HALF) + if (HALF && !TRI) if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { diff --git a/src/nstencil_ghost_bin.cpp b/src/nstencil_ghost_bin.cpp index d5c7c1a463..b83a0ffd46 100644 --- a/src/nstencil_ghost_bin.cpp +++ b/src/nstencil_ghost_bin.cpp @@ -18,7 +18,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ template -NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) {} +NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) +{ + xyzflag = 1; +} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -52,11 +55,12 @@ void NStencilGhostBin::create() if (HALF && DIM_3D && (!TRI)) if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[nstencil][0] = i; stencilxyz[nstencil][1] = j; stencilxyz[nstencil][2] = k; stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; + } } } } From 58f9553bf10520f3641d6e2a196e1aa92c6889a5 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Wed, 23 Nov 2022 08:52:21 -0700 Subject: [PATCH 0029/1002] Copying fixes to omp --- src/OPENMP/npair_bin_ghost_omp.cpp | 2 +- src/OPENMP/npair_multi_omp.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OPENMP/npair_bin_ghost_omp.cpp b/src/OPENMP/npair_bin_ghost_omp.cpp index 8f3105dc75..dbdabbe869 100644 --- a/src/OPENMP/npair_bin_ghost_omp.cpp +++ b/src/OPENMP/npair_bin_ghost_omp.cpp @@ -108,7 +108,7 @@ void NPairBinGhostOmp::build(NeighList *list) if (i < nlocal) { ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + for (j = binhead[ibin + stencil[k]]; j >= 0; j = bins[j]) { if (HALF) { // Half neighbor list, newton off // only store pair if i < j diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index e5db08e157..5e29b174f9 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -125,7 +125,7 @@ void NPairMultiOmp::build(NeighList *list) js = binhead_multi[jcollection][jbin + s[k]]; // own-bin for half stencil - if (HALF) + if (HALF && !TRI) if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { From c4676aabfdda3781ec8b246866327a39ed9a7527 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Wed, 23 Nov 2022 09:58:46 -0700 Subject: [PATCH 0030/1002] Adding missing variables from omp npair halffull --- src/OPENMP/npair_bin_atomonly_omp.cpp | 8 ++------ src/OPENMP/npair_halffull_omp.cpp | 4 ++++ src/npair_bin_atomonly.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/OPENMP/npair_bin_atomonly_omp.cpp b/src/OPENMP/npair_bin_atomonly_omp.cpp index 2fe3baa014..2e948bf2b9 100644 --- a/src/OPENMP/npair_bin_atomonly_omp.cpp +++ b/src/OPENMP/npair_bin_atomonly_omp.cpp @@ -80,7 +80,6 @@ void NPairBinAtomonlyOmp::build(NeighList *list) // loop over owned atoms, storing neighbors for (i = ifrom; i < ito; i++) { - n = 0; neighptr = ipage.vget(); @@ -89,13 +88,10 @@ void NPairBinAtomonlyOmp::build(NeighList *list) ytmp = x[i][1]; ztmp = x[i][2]; - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin+stencil[k]]; + bin_start = binhead[ibin + stencil[k]]; if (stencil[k] == 0) { if (HALF && NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal @@ -131,7 +127,7 @@ void NPairBinAtomonlyOmp::build(NeighList *list) } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // store every pair for every bin in stencil, except for i's bin if (stencil[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list diff --git a/src/OPENMP/npair_halffull_omp.cpp b/src/OPENMP/npair_halffull_omp.cpp index 559d8910b1..d23325630a 100644 --- a/src/OPENMP/npair_halffull_omp.cpp +++ b/src/OPENMP/npair_halffull_omp.cpp @@ -85,6 +85,10 @@ void NPairHalffullOmp::build(NeighList *list) // loop over parent full list i = ilist_full[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh_full[i]; jnum = numneigh_full[i]; diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index 100b521b92..5e3be0e8b0 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -82,7 +82,7 @@ void NPairBinAtomonly::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin+stencil[k]]; + bin_start = binhead[ibin + stencil[k]]; if (stencil[k] == 0) { if (HALF && NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal @@ -118,7 +118,7 @@ void NPairBinAtomonly::build(NeighList *list) } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // store every pair for every bin in stencil, except for i's bin if (stencil[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list From 781eb934c17935af8e381418bdcaa30612b7290b Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 27 Mar 2023 16:37:11 -0600 Subject: [PATCH 0031/1002] Adding mass to python numpy unittest of KE --- unittest/python/python-numpy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/unittest/python/python-numpy.py b/unittest/python/python-numpy.py index f8e65bcd85..839e5d03af 100644 --- a/unittest/python/python-numpy.py +++ b/unittest/python/python-numpy.py @@ -108,6 +108,7 @@ class PythonNumpy(unittest.TestCase): self.lmp.command("create_box 1 box") self.lmp.command("create_atoms 1 single 1.0 1.0 1.0") self.lmp.command("create_atoms 1 single 1.0 1.0 1.5") + self.lmp.command("mass 1 1.0") self.lmp.command("compute ke all ke/atom") natoms = self.lmp.get_natoms() self.assertEqual(natoms,2) From b456beb62fdda6cd70f1886523835cf80c5c9a01 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 28 Mar 2023 13:55:12 -0600 Subject: [PATCH 0032/1002] Reorganizing intel npair to work with cmake, adding intel stencil --- ...st_intel.cpp => npair_bin_ghost_intel.cpp} | 2 +- ..._ghost_intel.h => npair_bin_ghost_intel.h} | 4 +- src/INTEL/npair_bin_intel.cpp | 298 ++++++++++++++++++ ...n_newton_tri_intel.h => npair_bin_intel.h} | 31 +- src/INTEL/npair_full_bin_intel.cpp | 134 -------- src/INTEL/npair_full_bin_intel.h | 44 --- src/INTEL/npair_half_bin_newton_intel.cpp | 108 ------- src/INTEL/npair_half_bin_newton_intel.h | 43 --- src/INTEL/npair_half_bin_newton_tri_intel.cpp | 108 ------- ...rim_intel.cpp => npair_halffull_intel.cpp} | 202 +++++++++++- src/INTEL/npair_halffull_intel.h | 128 ++++++++ src/INTEL/npair_halffull_newtoff_intel.h | 44 --- src/INTEL/npair_halffull_newtoff_trim_intel.h | 44 --- src/INTEL/npair_halffull_newton_intel.cpp | 226 ------------- src/INTEL/npair_halffull_newton_intel.h | 61 ---- src/INTEL/npair_halffull_newton_trim_intel.h | 61 ---- src/INTEL/nstencil_bin_intel.cpp | 70 ++++ src/INTEL/nstencil_bin_intel.h | 65 ++++ src/neighbor.cpp | 1 + src/neighbor.h | 5 +- 20 files changed, 797 insertions(+), 882 deletions(-) rename src/INTEL/{npair_full_bin_ghost_intel.cpp => npair_bin_ghost_intel.cpp} (99%) rename src/INTEL/{npair_full_bin_ghost_intel.h => npair_bin_ghost_intel.h} (95%) create mode 100644 src/INTEL/npair_bin_intel.cpp rename src/INTEL/{npair_half_bin_newton_tri_intel.h => npair_bin_intel.h} (59%) delete mode 100644 src/INTEL/npair_full_bin_intel.cpp delete mode 100644 src/INTEL/npair_full_bin_intel.h delete mode 100644 src/INTEL/npair_half_bin_newton_intel.cpp delete mode 100644 src/INTEL/npair_half_bin_newton_intel.h delete mode 100644 src/INTEL/npair_half_bin_newton_tri_intel.cpp rename src/INTEL/{npair_halffull_newton_trim_intel.cpp => npair_halffull_intel.cpp} (56%) create mode 100644 src/INTEL/npair_halffull_intel.h delete mode 100644 src/INTEL/npair_halffull_newtoff_intel.h delete mode 100644 src/INTEL/npair_halffull_newtoff_trim_intel.h delete mode 100644 src/INTEL/npair_halffull_newton_intel.cpp delete mode 100644 src/INTEL/npair_halffull_newton_intel.h delete mode 100644 src/INTEL/npair_halffull_newton_trim_intel.h create mode 100644 src/INTEL/nstencil_bin_intel.cpp create mode 100644 src/INTEL/nstencil_bin_intel.h diff --git a/src/INTEL/npair_full_bin_ghost_intel.cpp b/src/INTEL/npair_bin_ghost_intel.cpp similarity index 99% rename from src/INTEL/npair_full_bin_ghost_intel.cpp rename to src/INTEL/npair_bin_ghost_intel.cpp index b7b9ee4aea..47c3b5bd20 100644 --- a/src/INTEL/npair_full_bin_ghost_intel.cpp +++ b/src/INTEL/npair_bin_ghost_intel.cpp @@ -16,7 +16,7 @@ Contributing authors: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ -#include "npair_full_bin_ghost_intel.h" +#include "npair_bin_ghost_intel.h" #include "atom.h" #include "comm.h" diff --git a/src/INTEL/npair_full_bin_ghost_intel.h b/src/INTEL/npair_bin_ghost_intel.h similarity index 95% rename from src/INTEL/npair_full_bin_ghost_intel.h rename to src/INTEL/npair_bin_ghost_intel.h index 4ae5ddad5f..eada3237bc 100644 --- a/src/INTEL/npair_full_bin_ghost_intel.h +++ b/src/INTEL/npair_bin_ghost_intel.h @@ -25,8 +25,8 @@ NPairStyle(full/bin/ghost/intel, // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_GHOST_INTEL_H -#define LMP_NPAIR_FULL_BIN_GHOST_INTEL_H +#ifndef LMP_NPAIR_BIN_GHOST_INTEL_H +#define LMP_NPAIR_BIN_GHOST_INTEL_H #include "npair_intel.h" diff --git a/src/INTEL/npair_bin_intel.cpp b/src/INTEL/npair_bin_intel.cpp new file mode 100644 index 0000000000..f4942022ec --- /dev/null +++ b/src/INTEL/npair_bin_intel.cpp @@ -0,0 +1,298 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: W. Michael Brown (Intel) +------------------------------------------------------------------------- */ + +#include "npair_bin_intel.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "neigh_list.h" +#include "neighbor.h" + +using namespace LAMMPS_NS; + + +/* ---------------------------------------------------------------------- */ + +NPairHalfBinNewtonIntel::NPairHalfBinNewtonIntel(LAMMPS *lmp) : + NPairIntel(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +void NPairHalfBinNewtonIntel::build(NeighList *list) +{ + if (nstencil / 2 > INTEL_MAX_STENCIL_CHECK) + error->all(FLERR, "Too many neighbor bins for INTEL package."); + + #ifdef _LMP_INTEL_OFFLOAD + if (exclude) + error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); + #endif + + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + hbni(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + hbni(list, _fix->get_double_buffers()); + else + hbni(list, _fix->get_single_buffers()); + + _fix->stop_watch(TIME_HOST_NEIGHBOR); +} + +template +void NPairHalfBinNewtonIntel:: +hbni(NeighList *list, IntelBuffers *buffers) { + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + list->inum = nlocal; + + int host_start = _fix->host_start_neighbor(); + const int off_end = _fix->offload_end_neighbor(); + + #ifdef _LMP_INTEL_OFFLOAD + if (off_end) grow_stencil(); + if (_fix->full_host_list()) host_start = 0; + int offload_noghost = _fix->offload_noghost(); + #endif + + buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); + + int need_ic = 0; + if (atom->molecular != Atom::ATOMIC) + dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, + neighbor->cutneighmax); + + #ifdef _LMP_INTEL_OFFLOAD + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + #else + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + #endif +} + + +/* ---------------------------------------------------------------------- */ + +NPairHalfBinNewtonTriIntel::NPairHalfBinNewtonTriIntel(LAMMPS *lmp) : + NPairIntel(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction with Newton's 3rd law for triclinic + each owned atom i checks its own bin and other bins in triclinic stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +void NPairHalfBinNewtonTriIntel::build(NeighList *list) +{ + if (nstencil > INTEL_MAX_STENCIL) + error->all(FLERR, "Too many neighbor bins for INTEL package."); + + #ifdef _LMP_INTEL_OFFLOAD + if (exclude) + error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); + #endif + + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + hbnti(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + hbnti(list, _fix->get_double_buffers()); + else + hbnti(list, _fix->get_single_buffers()); + + _fix->stop_watch(TIME_HOST_NEIGHBOR); +} + +template +void NPairHalfBinNewtonTriIntel:: +hbnti(NeighList *list, IntelBuffers *buffers) { + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + list->inum = nlocal; + + int host_start = _fix->host_start_neighbor(); + const int off_end = _fix->offload_end_neighbor(); + + #ifdef _LMP_INTEL_OFFLOAD + if (off_end) grow_stencil(); + if (_fix->full_host_list()) host_start = 0; + int offload_noghost = _fix->offload_noghost(); + #endif + + buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); + + int need_ic = 0; + if (atom->molecular != Atom::ATOMIC) + dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, + neighbor->cutneighmax); + + #ifdef _LMP_INTEL_OFFLOAD + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + #else + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + #endif +} + +/* ---------------------------------------------------------------------- */ + +NPairFullBinIntel::NPairFullBinIntel(LAMMPS *lmp) : NPairIntel(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j +------------------------------------------------------------------------- */ + +void NPairFullBinIntel::build(NeighList *list) +{ + if (nstencil > INTEL_MAX_STENCIL_CHECK) + error->all(FLERR, "Too many neighbor bins for INTEL package."); + + #ifdef _LMP_INTEL_OFFLOAD + if (exclude) + error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); + #endif + + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + fbi(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + fbi(list, _fix->get_double_buffers()); + else + fbi(list, _fix->get_single_buffers()); + + _fix->stop_watch(TIME_HOST_NEIGHBOR); +} + +template +void NPairFullBinIntel:: +fbi(NeighList *list, IntelBuffers *buffers) { + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + list->inum = nlocal; + list->gnum = 0; + + int host_start = _fix->host_start_neighbor();; + const int off_end = _fix->offload_end_neighbor(); + + #ifdef _LMP_INTEL_OFFLOAD + if (off_end) grow_stencil(); + if (_fix->full_host_list()) host_start = 0; + int offload_noghost = _fix->offload_noghost(); + #endif + + buffers->grow_list(list, atom->nlocal, comm->nthreads, + _fix->three_body_neighbor(), off_end, + _fix->nbor_pack_width()); + + int need_ic = 0; + if (atom->molecular != Atom::ATOMIC) + dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, + neighbor->cutneighmax); + + #ifdef _LMP_INTEL_OFFLOAD + if (_fix->three_body_neighbor()) { + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + } else { + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + } + #else + if (_fix->three_body_neighbor()) { + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + } else { + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + } + #endif +} diff --git a/src/INTEL/npair_half_bin_newton_tri_intel.h b/src/INTEL/npair_bin_intel.h similarity index 59% rename from src/INTEL/npair_half_bin_newton_tri_intel.h rename to src/INTEL/npair_bin_intel.h index 8ef65c12e5..fd18f20be5 100644 --- a/src/INTEL/npair_half_bin_newton_tri_intel.h +++ b/src/INTEL/npair_bin_intel.h @@ -14,20 +14,38 @@ #ifdef NPAIR_CLASS // clang-format off +NPairStyle(half/bin/newton/intel, + NPairHalfBinNewtonIntel, + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_INTEL); + NPairStyle(half/bin/newton/tri/intel, NPairHalfBinNewtonTriIntel, NP_HALF | NP_BIN | NP_NEWTON | NP_TRI | NP_INTEL); + +NPairStyle(full/bin/intel, + NPairFullBinIntel, + NP_FULL | NP_BIN | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | + NP_INTEL); // clang-format on #else -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_INTEL_TRI_H -#define LMP_NPAIR_HALF_BIN_NEWTON_INTEL_TRI_H +#ifndef LMP_NPAIR_BIN_INTEL_H +#define LMP_NPAIR_BIN_INTEL_H #include "fix_intel.h" #include "npair_intel.h" namespace LAMMPS_NS { +class NPairHalfBinNewtonIntel : public NPairIntel { + public: + NPairHalfBinNewtonIntel(class LAMMPS *); + void build(class NeighList *) override; + + private: + template void hbni(NeighList *, IntelBuffers *); +}; + class NPairHalfBinNewtonTriIntel : public NPairIntel { public: NPairHalfBinNewtonTriIntel(class LAMMPS *); @@ -37,6 +55,15 @@ class NPairHalfBinNewtonTriIntel : public NPairIntel { template void hbnti(NeighList *, IntelBuffers *); }; +class NPairFullBinIntel : public NPairIntel { + public: + NPairFullBinIntel(class LAMMPS *); + void build(class NeighList *) override; + + private: + template void fbi(NeighList *, IntelBuffers *); +}; + } // namespace LAMMPS_NS #endif diff --git a/src/INTEL/npair_full_bin_intel.cpp b/src/INTEL/npair_full_bin_intel.cpp deleted file mode 100644 index 2f8af4c8af..0000000000 --- a/src/INTEL/npair_full_bin_intel.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_full_bin_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "neigh_list.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinIntel::NPairFullBinIntel(LAMMPS *lmp) : NPairIntel(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinIntel::build(NeighList *list) -{ - if (nstencil > INTEL_MAX_STENCIL_CHECK) - error->all(FLERR, "Too many neighbor bins for INTEL package."); - - #ifdef _LMP_INTEL_OFFLOAD - if (exclude) - error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); - #endif - - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - fbi(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - fbi(list, _fix->get_double_buffers()); - else - fbi(list, _fix->get_single_buffers()); - - _fix->stop_watch(TIME_HOST_NEIGHBOR); -} - -template -void NPairFullBinIntel:: -fbi(NeighList *list, IntelBuffers *buffers) { - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - list->inum = nlocal; - list->gnum = 0; - - int host_start = _fix->host_start_neighbor();; - const int off_end = _fix->offload_end_neighbor(); - - #ifdef _LMP_INTEL_OFFLOAD - if (off_end) grow_stencil(); - if (_fix->full_host_list()) host_start = 0; - int offload_noghost = _fix->offload_noghost(); - #endif - - buffers->grow_list(list, atom->nlocal, comm->nthreads, - _fix->three_body_neighbor(), off_end, - _fix->nbor_pack_width()); - - int need_ic = 0; - if (atom->molecular != Atom::ATOMIC) - dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, - neighbor->cutneighmax); - - #ifdef _LMP_INTEL_OFFLOAD - if (_fix->three_body_neighbor()) { - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - } else { - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - } - #else - if (_fix->three_body_neighbor()) { - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - } else { - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - } - #endif -} diff --git a/src/INTEL/npair_full_bin_intel.h b/src/INTEL/npair_full_bin_intel.h deleted file mode 100644 index 58ff21d22c..0000000000 --- a/src/INTEL/npair_full_bin_intel.h +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/intel, - NPairFullBinIntel, - NP_FULL | NP_BIN | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | - NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_INTEL_H -#define LMP_NPAIR_FULL_BIN_INTEL_H - -#include "fix_intel.h" -#include "npair_intel.h" - -namespace LAMMPS_NS { - -class NPairFullBinIntel : public NPairIntel { - public: - NPairFullBinIntel(class LAMMPS *); - void build(class NeighList *) override; - - private: - template void fbi(NeighList *, IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/npair_half_bin_newton_intel.cpp b/src/INTEL/npair_half_bin_newton_intel.cpp deleted file mode 100644 index 24e8b01572..0000000000 --- a/src/INTEL/npair_half_bin_newton_intel.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newton_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "neigh_list.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonIntel::NPairHalfBinNewtonIntel(LAMMPS *lmp) : - NPairIntel(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonIntel::build(NeighList *list) -{ - if (nstencil / 2 > INTEL_MAX_STENCIL_CHECK) - error->all(FLERR, "Too many neighbor bins for INTEL package."); - - #ifdef _LMP_INTEL_OFFLOAD - if (exclude) - error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); - #endif - - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - hbni(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - hbni(list, _fix->get_double_buffers()); - else - hbni(list, _fix->get_single_buffers()); - - _fix->stop_watch(TIME_HOST_NEIGHBOR); -} - -template -void NPairHalfBinNewtonIntel:: -hbni(NeighList *list, IntelBuffers *buffers) { - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - list->inum = nlocal; - - int host_start = _fix->host_start_neighbor(); - const int off_end = _fix->offload_end_neighbor(); - - #ifdef _LMP_INTEL_OFFLOAD - if (off_end) grow_stencil(); - if (_fix->full_host_list()) host_start = 0; - int offload_noghost = _fix->offload_noghost(); - #endif - - buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); - - int need_ic = 0; - if (atom->molecular != Atom::ATOMIC) - dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, - neighbor->cutneighmax); - - #ifdef _LMP_INTEL_OFFLOAD - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - #else - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - #endif -} diff --git a/src/INTEL/npair_half_bin_newton_intel.h b/src/INTEL/npair_half_bin_newton_intel.h deleted file mode 100644 index 092d4f2101..0000000000 --- a/src/INTEL/npair_half_bin_newton_intel.h +++ /dev/null @@ -1,43 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/intel, - NPairHalfBinNewtonIntel, - NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_INTEL_H -#define LMP_NPAIR_HALF_BIN_NEWTON_INTEL_H - -#include "fix_intel.h" -#include "npair_intel.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonIntel : public NPairIntel { - public: - NPairHalfBinNewtonIntel(class LAMMPS *); - void build(class NeighList *) override; - - private: - template void hbni(NeighList *, IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/npair_half_bin_newton_tri_intel.cpp b/src/INTEL/npair_half_bin_newton_tri_intel.cpp deleted file mode 100644 index a903ef8e9a..0000000000 --- a/src/INTEL/npair_half_bin_newton_tri_intel.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newton_tri_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "neigh_list.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonTriIntel::NPairHalfBinNewtonTriIntel(LAMMPS *lmp) : - NPairIntel(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonTriIntel::build(NeighList *list) -{ - if (nstencil > INTEL_MAX_STENCIL) - error->all(FLERR, "Too many neighbor bins for INTEL package."); - - #ifdef _LMP_INTEL_OFFLOAD - if (exclude) - error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); - #endif - - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - hbnti(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - hbnti(list, _fix->get_double_buffers()); - else - hbnti(list, _fix->get_single_buffers()); - - _fix->stop_watch(TIME_HOST_NEIGHBOR); -} - -template -void NPairHalfBinNewtonTriIntel:: -hbnti(NeighList *list, IntelBuffers *buffers) { - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - list->inum = nlocal; - - int host_start = _fix->host_start_neighbor(); - const int off_end = _fix->offload_end_neighbor(); - - #ifdef _LMP_INTEL_OFFLOAD - if (off_end) grow_stencil(); - if (_fix->full_host_list()) host_start = 0; - int offload_noghost = _fix->offload_noghost(); - #endif - - buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); - - int need_ic = 0; - if (atom->molecular != Atom::ATOMIC) - dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, - neighbor->cutneighmax); - - #ifdef _LMP_INTEL_OFFLOAD - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - #else - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - #endif -} diff --git a/src/INTEL/npair_halffull_newton_trim_intel.cpp b/src/INTEL/npair_halffull_intel.cpp similarity index 56% rename from src/INTEL/npair_halffull_newton_trim_intel.cpp rename to src/INTEL/npair_halffull_intel.cpp index e38375f750..42ecb716f5 100644 --- a/src/INTEL/npair_halffull_newton_trim_intel.cpp +++ b/src/INTEL/npair_halffull_intel.cpp @@ -13,10 +13,10 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) + Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ -#include "npair_halffull_newton_trim_intel.h" +#include "npair_halffull_intel.h" #include "atom.h" #include "comm.h" @@ -29,6 +29,204 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ +NPairHalffullNewtonIntel::NPairHalffullNewtonIntel(LAMMPS *lmp) : NPair(lmp) { + _fix = static_cast(modify->get_fix_by_id("package_intel")); + if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); +} + +/* ---------------------------------------------------------------------- + build half list from full list + pair stored once if i,j are both owned and i < j + if j is ghost, only store if j coords are "above and to the right" of i + works if full list is a skip list +------------------------------------------------------------------------- */ + +template +void NPairHalffullNewtonIntel::build_t(NeighList *list, + IntelBuffers *buffers) +{ + const int inum_full = list->listfull->inum; + const int nlocal = atom->nlocal; + const int e_nall = nlocal + atom->nghost; + const ATOM_T * _noalias const x = buffers->get_x(); + int * _noalias const ilist = list->ilist; + int * _noalias const numneigh = list->numneigh; + int ** _noalias const firstneigh = list->firstneigh; + const int * _noalias const ilist_full = list->listfull->ilist; + const int * _noalias const numneigh_full = list->listfull->numneigh; + const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT + + #if defined(_OPENMP) + #pragma omp parallel + #endif + { + int tid, ifrom, ito; + IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, comm->nthreads); + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over parent full list + for (int ii = ifrom; ii < ito; ii++) { + int n = 0; + int *neighptr = ipage.vget(); + + const int i = ilist_full[ii]; + const flt_t xtmp = x[i].x; + const flt_t ytmp = x[i].y; + const flt_t ztmp = x[i].z; + + // loop over full neighbor list + + const int * _noalias const jlist = firstneigh_full[i]; + const int jnum = numneigh_full[i]; + + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + int addme = 1; + if (j < nlocal) { + if (i > j) addme = 0; + } else { + if (x[j].z < ztmp) addme = 0; + if (x[j].z == ztmp) { + if (x[j].y < ytmp) addme = 0; + if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; + } + } + if (addme) + neighptr[n++] = joriginal; + } + + ilist[ii] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + + int pad_end = n; + IP_PRE_neighbor_pad(pad_end, 0); + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ + avg=INTEL_COMPILE_WIDTH/2 + #endif + for ( ; n < pad_end; n++) + neighptr[n] = e_nall; + + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + } + list->inum = inum_full; +} + +/* ---------------------------------------------------------------------- + build half list from full 3-body list + half list is already stored as first part of 3-body list +------------------------------------------------------------------------- */ + +template +void NPairHalffullNewtonIntel::build_t3(NeighList *list, int *numhalf) +{ + const int inum_full = list->listfull->inum; + const int e_nall = atom->nlocal + atom->nghost; + int * _noalias const ilist = list->ilist; + int * _noalias const numneigh = list->numneigh; + int ** _noalias const firstneigh = list->firstneigh; + const int * _noalias const ilist_full = list->listfull->ilist; + const int * _noalias const numneigh_full = numhalf; + const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT + + int packthreads = 1; + if (comm->nthreads > INTEL_HTHREADS) packthreads = comm->nthreads; + + #if defined(_OPENMP) + #pragma omp parallel if (packthreads > 1) + #endif + { + int tid, ifrom, ito; + IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, packthreads); + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over parent full list + for (int ii = ifrom; ii < ito; ii++) { + int n = 0; + int *neighptr = ipage.vget(); + + const int i = ilist_full[ii]; + + // loop over full neighbor list + + const int * _noalias const jlist = firstneigh_full[i]; + const int jnum = numneigh_full[ii]; + + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + neighptr[n++] = joriginal; + } + + ilist[ii] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + + int pad_end = n; + IP_PRE_neighbor_pad(pad_end, 0); + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ + avg=INTEL_COMPILE_WIDTH/2 + #endif + for ( ; n < pad_end; n++) + neighptr[n] = e_nall; + + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + } + list->inum = inum_full; +} + +/* ---------------------------------------------------------------------- */ + +void NPairHalffullNewtonIntel::build(NeighList *list) +{ + if (_fix->three_body_neighbor() == 0) { + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + build_t(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + build_t(list, _fix->get_double_buffers()); + else + build_t(list, _fix->get_single_buffers()); + } else { + int *nhalf, *cnum; + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) { + _fix->get_mixed_buffers()->get_list_data3(list->listfull, nhalf, cnum); + build_t3(list, nhalf); + } else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) { + _fix->get_double_buffers()->get_list_data3(list->listfull, nhalf, cnum); + build_t3(list, nhalf); + } else { + _fix->get_single_buffers()->get_list_data3(list->listfull, nhalf, cnum); + build_t3(list, nhalf); + } + } +} + +/* ---------------------------------------------------------------------- */ + NPairHalffullNewtonTrimIntel::NPairHalffullNewtonTrimIntel(LAMMPS *lmp) : NPair(lmp) { _fix = static_cast(modify->get_fix_by_id("package_intel")); if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); diff --git a/src/INTEL/npair_halffull_intel.h b/src/INTEL/npair_halffull_intel.h new file mode 100644 index 0000000000..08c9312fff --- /dev/null +++ b/src/INTEL/npair_halffull_intel.h @@ -0,0 +1,128 @@ +// clang-format off +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: W. Michael Brown (Intel) +------------------------------------------------------------------------- */ + +// For Newton off, only used for hybrid to generate list for non-intel style. +// Use standard routines. + +#ifdef NPAIR_CLASS +// clang-format off +NPairStyle(halffull/newton/intel, + NPairHalffullNewtonIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI| NP_INTEL); + +NPairStyle(halffull/newton/skip/intel, + NPairHalffullNewtonIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); + +NPairStyle(halffull/newtoff/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); + +NPairStyle(halffull/newtoff/ghost/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/ghost/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_INTEL); + + +NPairStyle(halffull/newton/trim/intel, + NPairHalffullNewtonTrimIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI| NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newton/skip/trim/intel, + NPairHalffullNewtonTrimIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/ghost/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/ghost/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM | NP_INTEL); +// clang-format on +#else + +#ifndef LMP_NPAIR_HALFFULL_INTEL_H +#define LMP_NPAIR_HALFFULL_INTEL_H + +#include "fix_intel.h" +#include "npair.h" + +#if defined(_OPENMP) +#include +#endif + +namespace LAMMPS_NS { + +class NPairHalffullNewtonIntel : public NPair { + public: + NPairHalffullNewtonIntel(class LAMMPS *); + void build(class NeighList *) override; + + protected: + FixIntel *_fix; + + template void build_t(NeighList *, IntelBuffers *); + + template void build_t3(NeighList *, int *); +}; + +class NPairHalffullNewtonTrimIntel : public NPair { + public: + NPairHalffullNewtonTrimIntel(class LAMMPS *); + void build(class NeighList *) override; + + protected: + FixIntel *_fix; + + template void build_t(NeighList *, IntelBuffers *); + + template void build_t3(NeighList *, int *, IntelBuffers *); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/INTEL/npair_halffull_newtoff_intel.h b/src/INTEL/npair_halffull_newtoff_intel.h deleted file mode 100644 index f77ddb74d6..0000000000 --- a/src/INTEL/npair_halffull_newtoff_intel.h +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -// Only used for hybrid to generate list for non-intel style. Use -// standard routines. - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); - -NPairStyle(halffull/newtoff/ghost/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_GHOST | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/ghost/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_INTEL); -// clang-format on -#endif diff --git a/src/INTEL/npair_halffull_newtoff_trim_intel.h b/src/INTEL/npair_halffull_newtoff_trim_intel.h deleted file mode 100644 index d8594ce3b8..0000000000 --- a/src/INTEL/npair_halffull_newtoff_trim_intel.h +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) -------------------------------------------------------------------------- */ - -// Only used for hybrid to generate list for non-intel style. Use -// standard routines. - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newtoff/ghost/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/ghost/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM | NP_INTEL); -// clang-format on -#endif diff --git a/src/INTEL/npair_halffull_newton_intel.cpp b/src/INTEL/npair_halffull_newton_intel.cpp deleted file mode 100644 index cd05d5f97a..0000000000 --- a/src/INTEL/npair_halffull_newton_intel.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "modify.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonIntel::NPairHalffullNewtonIntel(LAMMPS *lmp) : NPair(lmp) { - _fix = static_cast(modify->get_fix_by_id("package_intel")); - if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); -} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - if j is ghost, only store if j coords are "above and to the right" of i - works if full list is a skip list -------------------------------------------------------------------------- */ - -template -void NPairHalffullNewtonIntel::build_t(NeighList *list, - IntelBuffers *buffers) -{ - const int inum_full = list->listfull->inum; - const int nlocal = atom->nlocal; - const int e_nall = nlocal + atom->nghost; - const ATOM_T * _noalias const x = buffers->get_x(); - int * _noalias const ilist = list->ilist; - int * _noalias const numneigh = list->numneigh; - int ** _noalias const firstneigh = list->firstneigh; - const int * _noalias const ilist_full = list->listfull->ilist; - const int * _noalias const numneigh_full = list->listfull->numneigh; - const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT - - #if defined(_OPENMP) - #pragma omp parallel - #endif - { - int tid, ifrom, ito; - IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, comm->nthreads); - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over parent full list - for (int ii = ifrom; ii < ito; ii++) { - int n = 0; - int *neighptr = ipage.vget(); - - const int i = ilist_full[ii]; - const flt_t xtmp = x[i].x; - const flt_t ytmp = x[i].y; - const flt_t ztmp = x[i].z; - - // loop over full neighbor list - - const int * _noalias const jlist = firstneigh_full[i]; - const int jnum = numneigh_full[i]; - - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - int addme = 1; - if (j < nlocal) { - if (i > j) addme = 0; - } else { - if (x[j].z < ztmp) addme = 0; - if (x[j].z == ztmp) { - if (x[j].y < ytmp) addme = 0; - if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; - } - } - if (addme) - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - - int pad_end = n; - IP_PRE_neighbor_pad(pad_end, 0); - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ - avg=INTEL_COMPILE_WIDTH/2 - #endif - for ( ; n < pad_end; n++) - neighptr[n] = e_nall; - - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - list->inum = inum_full; -} - -/* ---------------------------------------------------------------------- - build half list from full 3-body list - half list is already stored as first part of 3-body list -------------------------------------------------------------------------- */ - -template -void NPairHalffullNewtonIntel::build_t3(NeighList *list, int *numhalf) -{ - const int inum_full = list->listfull->inum; - const int e_nall = atom->nlocal + atom->nghost; - int * _noalias const ilist = list->ilist; - int * _noalias const numneigh = list->numneigh; - int ** _noalias const firstneigh = list->firstneigh; - const int * _noalias const ilist_full = list->listfull->ilist; - const int * _noalias const numneigh_full = numhalf; - const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT - - int packthreads = 1; - if (comm->nthreads > INTEL_HTHREADS) packthreads = comm->nthreads; - - #if defined(_OPENMP) - #pragma omp parallel if (packthreads > 1) - #endif - { - int tid, ifrom, ito; - IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, packthreads); - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over parent full list - for (int ii = ifrom; ii < ito; ii++) { - int n = 0; - int *neighptr = ipage.vget(); - - const int i = ilist_full[ii]; - - // loop over full neighbor list - - const int * _noalias const jlist = firstneigh_full[i]; - const int jnum = numneigh_full[ii]; - - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - - int pad_end = n; - IP_PRE_neighbor_pad(pad_end, 0); - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ - avg=INTEL_COMPILE_WIDTH/2 - #endif - for ( ; n < pad_end; n++) - neighptr[n] = e_nall; - - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - list->inum = inum_full; -} - -/* ---------------------------------------------------------------------- */ - -void NPairHalffullNewtonIntel::build(NeighList *list) -{ - if (_fix->three_body_neighbor() == 0) { - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - build_t(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - build_t(list, _fix->get_double_buffers()); - else - build_t(list, _fix->get_single_buffers()); - } else { - int *nhalf, *cnum; - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) { - _fix->get_mixed_buffers()->get_list_data3(list->listfull, nhalf, cnum); - build_t3(list, nhalf); - } else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - _fix->get_double_buffers()->get_list_data3(list->listfull, nhalf, cnum); - build_t3(list, nhalf); - } else { - _fix->get_single_buffers()->get_list_data3(list->listfull, nhalf, cnum); - build_t3(list, nhalf); - } - } -} diff --git a/src/INTEL/npair_halffull_newton_intel.h b/src/INTEL/npair_halffull_newton_intel.h deleted file mode 100644 index 149983d08e..0000000000 --- a/src/INTEL/npair_halffull_newton_intel.h +++ /dev/null @@ -1,61 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/intel, - NPairHalffullNewtonIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI| NP_INTEL); - -NPairStyle(halffull/newton/skip/intel, - NPairHalffullNewtonIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_INTEL_H -#define LMP_NPAIR_HALFFULL_NEWTON_INTEL_H - -#include "fix_intel.h" -#include "npair.h" - -#if defined(_OPENMP) -#include -#endif - -namespace LAMMPS_NS { - -class NPairHalffullNewtonIntel : public NPair { - public: - NPairHalffullNewtonIntel(class LAMMPS *); - void build(class NeighList *) override; - - protected: - FixIntel *_fix; - - template void build_t(NeighList *, IntelBuffers *); - - template void build_t3(NeighList *, int *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/npair_halffull_newton_trim_intel.h b/src/INTEL/npair_halffull_newton_trim_intel.h deleted file mode 100644 index 0ca551d682..0000000000 --- a/src/INTEL/npair_halffull_newton_trim_intel.h +++ /dev/null @@ -1,61 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/trim/intel, - NPairHalffullNewtonTrimIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI| NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newton/skip/trim/intel, - NPairHalffullNewtonTrimIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_TRIM_INTEL_H -#define LMP_NPAIR_HALFFULL_NEWTON_TRIM_INTEL_H - -#include "fix_intel.h" -#include "npair.h" - -#if defined(_OPENMP) -#include -#endif - -namespace LAMMPS_NS { - -class NPairHalffullNewtonTrimIntel : public NPair { - public: - NPairHalffullNewtonTrimIntel(class LAMMPS *); - void build(class NeighList *) override; - - protected: - FixIntel *_fix; - - template void build_t(NeighList *, IntelBuffers *); - - template void build_t3(NeighList *, int *, IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/nstencil_bin_intel.cpp b/src/INTEL/nstencil_bin_intel.cpp new file mode 100644 index 0000000000..36a79e2997 --- /dev/null +++ b/src/INTEL/nstencil_bin_intel.cpp @@ -0,0 +1,70 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "nstencil_bin_intel.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilBinIntel::NStencilBinIntel(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilBinIntel::create() +{ + int i, j, k; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + nstencil = 0; + + // For Intel, half and ortho stencils do not include central bin + // as, historically, this was never included in a stencil. + // Non-Intel npair classes were updated to account for this change, + // but the Intel npair classes have not yet been updated + // if (HALF && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance(i,j,k) < cutneighmaxsq) + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilBinIntel<0,0,0>; +template class NStencilBinIntel<0,1,0>; +template class NStencilBinIntel<1,0,0>; +template class NStencilBinIntel<1,0,1>; +template class NStencilBinIntel<1,1,0>; +template class NStencilBinIntel<1,1,1>; +} diff --git a/src/INTEL/nstencil_bin_intel.h b/src/INTEL/nstencil_bin_intel.h new file mode 100644 index 0000000000..e377db5fe5 --- /dev/null +++ b/src/INTEL/nstencil_bin_intel.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilBinIntel<0, 0, 0> NStencilFullBin2dIntel; +NStencilStyle(full/bin/2d/intel, + NStencilFullBin2dIntel, + NS_FULL | NS_BIN | NS_2D | NS_ORTHO | NS_TRI | NS_INTEL); + +typedef NStencilBinIntel<0, 1, 0> NStencilFullBin3dIntel; +NStencilStyle(full/bin/3d/intel, + NStencilFullBin3dIntel, + NS_FULL | NS_BIN | NS_3D | NS_ORTHO | NS_TRI | NS_INTEL); + +typedef NStencilBinIntel<1, 0, 0> NStencilHalfBin2dIntel; +NStencilStyle(half/bin/2d/intel, + NStencilHalfBin2dIntel, + NS_HALF | NS_BIN | NS_2D | NS_ORTHO | NS_INTEL); + +typedef NStencilBinIntel<1, 0, 1> NStencilHalfBin2dTriIntel; +NStencilStyle(half/bin/2d/tri/intel, + NStencilHalfBin2dTriIntel, + NS_HALF | NS_BIN | NS_2D | NS_TRI | NS_INTEL); + +typedef NStencilBinIntel<1, 1, 0> NStencilHalfBin3dIntel; +NStencilStyle(half/bin/3d/intel, + NStencilHalfBin3dIntel, + NS_HALF | NS_BIN | NS_3D | NS_ORTHO | NS_INTEL); + +typedef NStencilBinIntel<1, 1, 1> NStencilHalfBin3dTriIntel; +NStencilStyle(half/bin/3d/tri/intel, + NStencilHalfBin3dTriIntel, + NS_HALF | NS_BIN | NS_3D | NS_TRI | NS_INTEL); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_BIN_INTEL_H +#define LMP_NSTENCIL_BIN_INTEL_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilBinIntel : public NStencil { + public: + NStencilBinIntel(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 006101da64..52979ed83e 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1991,6 +1991,7 @@ int Neighbor::choose_stencil(NeighRequest *rq) // require match of these request flags and mask bits // (!A != !B) is effectively a logical xor + if (!rq->intel != !(mask & NS_INTEL)) continue; if (!rq->ghost != !(mask & NS_GHOST)) continue; if (!rq->ssa != !(mask & NS_SSA)) continue; diff --git a/src/neighbor.h b/src/neighbor.h index 9c51361aa8..fe2aea0779 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -302,8 +302,9 @@ namespace NeighConst { NS_ORTHO = 1 << 6, NS_TRI = 1 << 7, NS_GHOST = 1 << 8, - NS_SSA = 1 << 9, - NS_MULTI_OLD = 1 << 10 + NS_INTEL = 1 << 9, + NS_SSA = 1 << 10, + NS_MULTI_OLD = 1 << 11 }; enum { From 8d523c0604d799ca88f02b0921191e14a21c1052 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Mon, 3 Apr 2023 17:21:11 -0600 Subject: [PATCH 0033/1002] enable fix rigid to support 2d enforcement internally --- src/RIGID/fix_rigid.cpp | 314 +++++++++++++++-------------- src/RIGID/fix_rigid.h | 2 +- src/RIGID/fix_rigid_small.cpp | 368 ++++++++++++++++++---------------- src/RIGID/fix_rigid_small.h | 3 +- src/fix.cpp | 1 - src/fix.h | 2 - src/fix_enforce2d.cpp | 36 +--- src/fix_enforce2d.h | 4 - 8 files changed, 361 insertions(+), 369 deletions(-) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index df49d84439..0d6cbe86ee 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -68,7 +68,6 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : thermo_virial = 1; create_attribute = 1; dof_flag = 1; - enforce2d_flag = 1; centroidstressflag = CENTROID_NOTAVAIL; MPI_Comm_rank(world,&me); @@ -77,6 +76,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : // perform initial allocation of atom-based arrays // register with Atom class + dimension = domain->dimension; extended = orientflag = dorientflag = 0; body = nullptr; xcmimage = nullptr; @@ -301,7 +301,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : for (i = 0; i < nbody; i++) { fflag[i][0] = fflag[i][1] = fflag[i][2] = 1.0; tflag[i][0] = tflag[i][1] = tflag[i][2] = 1.0; - if (domain->dimension == 2) fflag[i][2] = tflag[i][0] = tflag[i][1] = 0.0; + if (dimension == 2) fflag[i][2] = tflag[i][0] = tflag[i][1] = 0.0; } // number of linear rigid bodies is counted later @@ -328,7 +328,6 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : pcouple = NONE; pstyle = ANISO; - dimension = domain->dimension; for (i = 0; i < 3; i++) { p_start[i] = p_stop[i] = p_period[i] = 0.0; @@ -353,7 +352,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; else error->all(FLERR,"Illegal fix rigid command"); - if (domain->dimension == 2 && zflag == 1.0) + if (dimension == 2 && zflag == 1.0) error->all(FLERR,"Fix rigid z force cannot be on for 2d simulation"); int count = 0; @@ -384,7 +383,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; else error->all(FLERR,"Illegal fix rigid command"); - if (domain->dimension == 2 && (xflag == 1.0 || yflag == 1.0)) + if (dimension == 2 && (xflag == 1.0 || yflag == 1.0)) error->all(FLERR,"Fix rigid xy torque cannot be on for 2d simulation"); int count = 0; @@ -434,7 +433,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : utils::numeric(FLERR,arg[iarg+3],false,lmp); p_flag[0] = p_flag[1] = p_flag[2] = 1; if (dimension == 2) { - p_start[2] = p_stop[2] = p_period[2] = 0.0; + p_start[2] = p_stop[2] = p_period[2] = 0.0; p_flag[2] = 0; } iarg += 4; @@ -450,7 +449,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : p_flag[0] = p_flag[1] = p_flag[2] = 1; if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; - p_flag[2] = 0; + p_flag[2] = 0; } iarg += 4; @@ -856,6 +855,10 @@ void FixRigid::setup(int vflag) torque[ibody][2] = all[ibody][2]; } + // enforce 2d body forces and torques + + if (dimension == 2) enforce2d(); + // zero langextra in case Langevin thermostat not used // no point to calling post_force() here since langextra // is only added to fcm/torque in final_integrate() @@ -936,6 +939,131 @@ void FixRigid::initial_integrate(int vflag) set_xv(); } +/* ---------------------------------------------------------------------- + remap xcm of each rigid body back into periodic simulation box + done during pre_neighbor so will be after call to pbc() + and after fix_deform::pre_exchange() may have flipped box + use domain->remap() in case xcm is far away from box + due to first-time definition of rigid body in setup_bodies_static() + or due to box flip + also adjust imagebody = rigid body image flags, due to xcm remap + also reset body xcmimage flags of all atoms in bodies + xcmimage flags are relative to xcm so that body can be unwrapped + if don't do this, would need xcm to move with true image flags + then a body could end up very far away from box + set_xv() will then compute huge displacements every step to + reset coords of all body atoms to be back inside the box, + ditto for triclinic box flip, which causes numeric problems +------------------------------------------------------------------------- */ + +void FixRigid::pre_neighbor() +{ + for (int ibody = 0; ibody < nbody; ibody++) + domain->remap(xcm[ibody],imagebody[ibody]); + image_shift(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigid::post_force(int /*vflag*/) +{ + if (langflag) apply_langevin_thermostat(); + if (earlyflag) compute_forces_and_torques(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigid::final_integrate() +{ + int ibody; + double dtfm; + + // compute forces and torques (after all post_force contributions) + // if 2d model, enforce2d() on body forces/torques + + if (!earlyflag) compute_forces_and_torques(); + if (dimension == 2) enforce2d(); + + // update vcm and angmom + // fflag,tflag = 0 for some dimensions in 2d + + for (ibody = 0; ibody < nbody; ibody++) { + + // update vcm by 1/2 step + + dtfm = dtf / masstotal[ibody]; + vcm[ibody][0] += dtfm * fcm[ibody][0] * fflag[ibody][0]; + vcm[ibody][1] += dtfm * fcm[ibody][1] * fflag[ibody][1]; + vcm[ibody][2] += dtfm * fcm[ibody][2] * fflag[ibody][2]; + + // update angular momentum by 1/2 step + + angmom[ibody][0] += dtf * torque[ibody][0] * tflag[ibody][0]; + angmom[ibody][1] += dtf * torque[ibody][1] * tflag[ibody][1]; + angmom[ibody][2] += dtf * torque[ibody][2] * tflag[ibody][2]; + + MathExtra::angmom_to_omega(angmom[ibody],ex_space[ibody],ey_space[ibody], + ez_space[ibody],inertia[ibody],omega[ibody]); + } + + // set velocity/rotation of atoms in rigid bodies + // virial is already setup from initial_integrate + + set_v(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigid::initial_integrate_respa(int vflag, int ilevel, int /*iloop*/) +{ + dtv = step_respa[ilevel]; + dtf = 0.5 * step_respa[ilevel] * force->ftm2v; + dtq = 0.5 * step_respa[ilevel]; + + if (ilevel == 0) initial_integrate(vflag); + else final_integrate(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigid::final_integrate_respa(int ilevel, int /*iloop*/) +{ + dtf = 0.5 * step_respa[ilevel] * force->ftm2v; + final_integrate(); +} + +/* ---------------------------------------------------------------------- + reset body xcmimage flags of atoms in bodies + xcmimage flags are relative to xcm so that body can be unwrapped + xcmimage = true image flag - imagebody flag +------------------------------------------------------------------------- */ + +void FixRigid::image_shift() +{ + int ibody; + imageint tdim,bdim,xdim[3]; + + imageint *image = atom->image; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (body[i] < 0) continue; + ibody = body[i]; + + tdim = image[i] & IMGMASK; + bdim = imagebody[ibody] & IMGMASK; + xdim[0] = IMGMAX + tdim - bdim; + tdim = (image[i] >> IMGBITS) & IMGMASK; + bdim = (imagebody[ibody] >> IMGBITS) & IMGMASK; + xdim[1] = IMGMAX + tdim - bdim; + tdim = image[i] >> IMG2BITS; + bdim = imagebody[ibody] >> IMG2BITS; + xdim[2] = IMGMAX + tdim - bdim; + + xcmimage[i] = (xdim[2] << IMG2BITS) | (xdim[1] << IMGBITS) | xdim[0]; + } +} + /* ---------------------------------------------------------------------- apply Langevin thermostat to all 6 DOF of rigid bodies computed by proc 0, broadcast to other procs @@ -991,31 +1119,6 @@ void FixRigid::apply_langevin_thermostat() MPI_Bcast(&langextra[0][0],6*nbody,MPI_DOUBLE,0,world); } -/* ---------------------------------------------------------------------- - called from FixEnforce2d post_force() for 2d problems - zero all body values that should be zero for 2d model -------------------------------------------------------------------------- */ - -void FixRigid::enforce2d() -{ - for (int ibody = 0; ibody < nbody; ibody++) { - xcm[ibody][2] = 0.0; - vcm[ibody][2] = 0.0; - fcm[ibody][2] = 0.0; - torque[ibody][0] = 0.0; - torque[ibody][1] = 0.0; - angmom[ibody][0] = 0.0; - angmom[ibody][1] = 0.0; - omega[ibody][0] = 0.0; - omega[ibody][1] = 0.0; - if (langflag && langextra) { - langextra[ibody][2] = 0.0; - langextra[ibody][3] = 0.0; - langextra[ibody][4] = 0.0; - } - } -} - /* ---------------------------------------------------------------------- */ void FixRigid::compute_forces_and_torques() @@ -1093,124 +1196,28 @@ void FixRigid::compute_forces_and_torques() } } -/* ---------------------------------------------------------------------- */ - -void FixRigid::post_force(int /*vflag*/) -{ - if (langflag) apply_langevin_thermostat(); - if (earlyflag) compute_forces_and_torques(); -} - -/* ---------------------------------------------------------------------- */ - -void FixRigid::final_integrate() -{ - int ibody; - double dtfm; - - if (!earlyflag) compute_forces_and_torques(); - - // update vcm and angmom - // fflag,tflag = 0 for some dimensions in 2d - - for (ibody = 0; ibody < nbody; ibody++) { - - // update vcm by 1/2 step - - dtfm = dtf / masstotal[ibody]; - vcm[ibody][0] += dtfm * fcm[ibody][0] * fflag[ibody][0]; - vcm[ibody][1] += dtfm * fcm[ibody][1] * fflag[ibody][1]; - vcm[ibody][2] += dtfm * fcm[ibody][2] * fflag[ibody][2]; - - // update angular momentum by 1/2 step - - angmom[ibody][0] += dtf * torque[ibody][0] * tflag[ibody][0]; - angmom[ibody][1] += dtf * torque[ibody][1] * tflag[ibody][1]; - angmom[ibody][2] += dtf * torque[ibody][2] * tflag[ibody][2]; - - MathExtra::angmom_to_omega(angmom[ibody],ex_space[ibody],ey_space[ibody], - ez_space[ibody],inertia[ibody],omega[ibody]); - } - - // set velocity/rotation of atoms in rigid bodies - // virial is already setup from initial_integrate - - set_v(); -} - -/* ---------------------------------------------------------------------- */ - -void FixRigid::initial_integrate_respa(int vflag, int ilevel, int /*iloop*/) -{ - dtv = step_respa[ilevel]; - dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - dtq = 0.5 * step_respa[ilevel]; - - if (ilevel == 0) initial_integrate(vflag); - else final_integrate(); -} - -/* ---------------------------------------------------------------------- */ - -void FixRigid::final_integrate_respa(int ilevel, int /*iloop*/) -{ - dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - final_integrate(); -} - /* ---------------------------------------------------------------------- - remap xcm of each rigid body back into periodic simulation box - done during pre_neighbor so will be after call to pbc() - and after fix_deform::pre_exchange() may have flipped box - use domain->remap() in case xcm is far away from box - due to first-time definition of rigid body in setup_bodies_static() - or due to box flip - also adjust imagebody = rigid body image flags, due to xcm remap - also reset body xcmimage flags of all atoms in bodies - xcmimage flags are relative to xcm so that body can be unwrapped - if don't do this, would need xcm to move with true image flags - then a body could end up very far away from box - set_xv() will then compute huge displacements every step to - reset coords of all body atoms to be back inside the box, - ditto for triclinic box flip, which causes numeric problems + called from FixEnforce2d post_force() for 2d problems + zero all body values that should be zero for 2d model ------------------------------------------------------------------------- */ -void FixRigid::pre_neighbor() +void FixRigid::enforce2d() { - for (int ibody = 0; ibody < nbody; ibody++) - domain->remap(xcm[ibody],imagebody[ibody]); - image_shift(); -} - -/* ---------------------------------------------------------------------- - reset body xcmimage flags of atoms in bodies - xcmimage flags are relative to xcm so that body can be unwrapped - xcmimage = true image flag - imagebody flag -------------------------------------------------------------------------- */ - -void FixRigid::image_shift() -{ - int ibody; - imageint tdim,bdim,xdim[3]; - - imageint *image = atom->image; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - if (body[i] < 0) continue; - ibody = body[i]; - - tdim = image[i] & IMGMASK; - bdim = imagebody[ibody] & IMGMASK; - xdim[0] = IMGMAX + tdim - bdim; - tdim = (image[i] >> IMGBITS) & IMGMASK; - bdim = (imagebody[ibody] >> IMGBITS) & IMGMASK; - xdim[1] = IMGMAX + tdim - bdim; - tdim = image[i] >> IMG2BITS; - bdim = imagebody[ibody] >> IMG2BITS; - xdim[2] = IMGMAX + tdim - bdim; - - xcmimage[i] = (xdim[2] << IMG2BITS) | (xdim[1] << IMGBITS) | xdim[0]; + for (int ibody = 0; ibody < nbody; ibody++) { + xcm[ibody][2] = 0.0; + vcm[ibody][2] = 0.0; + fcm[ibody][2] = 0.0; + torque[ibody][0] = 0.0; + torque[ibody][1] = 0.0; + angmom[ibody][0] = 0.0; + angmom[ibody][1] = 0.0; + omega[ibody][0] = 0.0; + omega[ibody][1] = 0.0; + if (langflag && langextra) { + langextra[ibody][2] = 0.0; + langextra[ibody][3] = 0.0; + langextra[ibody][4] = 0.0; + } } } @@ -1280,7 +1287,7 @@ int FixRigid::dof(int tgroup) int n = 0; nlinear = 0; - if (domain->dimension == 3) { + if (dimension == 3) { for (int ibody = 0; ibody < nbody; ibody++) if (nall[ibody]+mall[ibody] == nrigid[ibody]) { n += 3*nall[ibody] + 6*mall[ibody] - 6; @@ -1290,7 +1297,7 @@ int FixRigid::dof(int tgroup) nlinear++; } } - } else if (domain->dimension == 2) { + } else if (dimension == 2) { for (int ibody = 0; ibody < nbody; ibody++) if (nall[ibody]+mall[ibody] == nrigid[ibody]) n += 2*nall[ibody] + 3*mall[ibody] - 3; @@ -1382,6 +1389,7 @@ void FixRigid::set_xv() // x = displacement from center-of-mass, based on body orientation // v = vcm + omega around center-of-mass + // enforce 2d x and v MathExtra::matvec(ex_space[ibody],ey_space[ibody], ez_space[ibody],displace[i],x[i]); @@ -1390,6 +1398,11 @@ void FixRigid::set_xv() v[i][1] = omega[ibody][2]*x[i][0] - omega[ibody][0]*x[i][2] + vcm[ibody][1]; v[i][2] = omega[ibody][0]*x[i][1] - omega[ibody][1]*x[i][0] + vcm[ibody][2]; + if (dimension == 2) { + x[i][2] = 0.0; + v[i][2] = 0.0; + } + // add center of mass to displacement // map back into periodic box via xbox,ybox,zbox // for triclinic, add in box tilt factors as well @@ -1541,10 +1554,15 @@ void FixRigid::set_v() v2 = v[i][2]; } + // compute new v + // enforce 2d v + v[i][0] = omega[ibody][1]*delta[2] - omega[ibody][2]*delta[1] + vcm[ibody][0]; v[i][1] = omega[ibody][2]*delta[0] - omega[ibody][0]*delta[2] + vcm[ibody][1]; v[i][2] = omega[ibody][0]*delta[1] - omega[ibody][1]*delta[0] + vcm[ibody][2]; + if (dimension == 2) v[i][2] = 0.0; + // virial = unwrapped coords dotted into body constraint force // body constraint force = implied force due to v change minus f external // assume f does not include forces internal to body diff --git a/src/RIGID/fix_rigid.h b/src/RIGID/fix_rigid.h index 1e94adec09..df0bcbda0c 100644 --- a/src/RIGID/fix_rigid.h +++ b/src/RIGID/fix_rigid.h @@ -50,7 +50,6 @@ class FixRigid : public Fix { void pre_neighbor() override; int dof(int) override; void deform(int) override; - void enforce2d() override; void reset_dt() override; void zero_momentum() override; void zero_rotation() override; @@ -147,6 +146,7 @@ class FixRigid : public Fix { void setup_bodies_dynamic(); void apply_langevin_thermostat(); void compute_forces_and_torques(); + void enforce2d(); void readfile(int, double *, double **, double **, double **, imageint *, int *); }; diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 089c644f1e..4f678cb14c 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -72,7 +72,6 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : thermo_virial = 1; create_attribute = 1; dof_flag = 1; - enforce2d_flag = 1; stores_ids = 1; centroidstressflag = CENTROID_AVAIL; @@ -82,6 +81,7 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : // perform initial allocation of atom-based arrays // register with Atom class + dimension = domain->dimension; extended = orientflag = dorientflag = customflag = 0; bodyown = nullptr; bodytag = nullptr; @@ -258,8 +258,8 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); p_flag[0] = p_flag[1] = p_flag[2] = 1; - if (domain->dimension == 2) { - p_start[2] = p_stop[2] = p_period[2] = 0.0; + if (dimension == 2) { + p_start[2] = p_stop[2] = p_period[2] = 0.0; p_flag[2] = 0; } iarg += 4; @@ -273,9 +273,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); p_flag[0] = p_flag[1] = p_flag[2] = 1; - if (domain->dimension == 2) { + if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; - p_flag[2] = 0; + p_flag[2] = 0; } iarg += 4; @@ -383,7 +383,7 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : for (i = 0; i < 3; i++) if (p_flag[i]) pstat_flag = 1; - if (pcouple == XYZ || (domain->dimension == 2 && pcouple == XY)) pstyle = ISO; + if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO; else pstyle = ANISO; // create rigid bodies based on molecule or custom ID @@ -690,6 +690,10 @@ void FixRigidSmall::setup(int vflag) } } + // enforce 2d body forces and torques + + if (dimension == 2) enforce2d(); + // reverse communicate fcm, torque of all bodies commflag = FORCE_TORQUE; @@ -780,6 +784,151 @@ void FixRigidSmall::initial_integrate(int vflag) set_xv(); } +/* ---------------------------------------------------------------------- + remap xcm of each rigid body back into periodic simulation box + done during pre_neighbor so will be after call to pbc() + and after fix_deform::pre_exchange() may have flipped box + use domain->remap() in case xcm is far away from box + due to first-time definition of rigid body in setup_bodies_static() + or due to box flip + also adjust imagebody = rigid body image flags, due to xcm remap + then communicate bodies so other procs will know of changes to body xcm + then adjust xcmimage flags of all atoms in bodies via image_shift() + for two effects + (1) change in true image flags due to pbc() call during exchange + (2) change in imagebody due to xcm remap + xcmimage flags are always -1,0,-1 so that body can be unwrapped + around in-box xcm and stay close to simulation box + if just inferred unwrapped from atom image flags, + then a body could end up very far away + when unwrapped by true image flags + then set_xv() will compute huge displacements every step to reset coords of + all the body atoms to be back inside the box, ditto for triclinic box flip + note: so just want to avoid that numeric problem? +------------------------------------------------------------------------- */ + +void FixRigidSmall::pre_neighbor() +{ + for (int ibody = 0; ibody < nlocal_body; ibody++) { + Body *b = &body[ibody]; + domain->remap(b->xcm,b->image); + } + + nghost_body = 0; + commflag = FULL_BODY; + comm->forward_comm(this); + reset_atom2body(); + //check(4); + + image_shift(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigidSmall::post_force(int /*vflag*/) +{ + if (langflag) apply_langevin_thermostat(); + if (earlyflag) compute_forces_and_torques(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigidSmall::final_integrate() +{ + double dtfm; + + //check(3); + + // compute forces and torques (after all post_force contributions) + // if 2d model, enforce2d() on body forces/torques + + if (!earlyflag) compute_forces_and_torques(); + if (dimension == 2) enforce2d(); + + // update vcm and angmom, recompute omega + + for (int ibody = 0; ibody < nlocal_body; ibody++) { + Body *b = &body[ibody]; + + // update vcm by 1/2 step + + dtfm = dtf / b->mass; + b->vcm[0] += dtfm * b->fcm[0]; + b->vcm[1] += dtfm * b->fcm[1]; + b->vcm[2] += dtfm * b->fcm[2]; + + // update angular momentum by 1/2 step + + b->angmom[0] += dtf * b->torque[0]; + b->angmom[1] += dtf * b->torque[1]; + b->angmom[2] += dtf * b->torque[2]; + + MathExtra::angmom_to_omega(b->angmom,b->ex_space,b->ey_space, + b->ez_space,b->inertia,b->omega); + } + + // forward communicate updated info of all bodies + + commflag = FINAL; + comm->forward_comm(this,10); + + // set velocity/rotation of atoms in rigid bodies + // virial is already setup from initial_integrate + + set_v(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigidSmall::initial_integrate_respa(int vflag, int ilevel, int /*iloop*/) +{ + dtv = step_respa[ilevel]; + dtf = 0.5 * step_respa[ilevel] * force->ftm2v; + dtq = 0.5 * step_respa[ilevel]; + + if (ilevel == 0) initial_integrate(vflag); + else final_integrate(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigidSmall::final_integrate_respa(int ilevel, int /*iloop*/) +{ + dtf = 0.5 * step_respa[ilevel] * force->ftm2v; + final_integrate(); +} + +/* ---------------------------------------------------------------------- + reset body xcmimage flags of atoms in bodies + xcmimage flags are relative to xcm so that body can be unwrapped + xcmimage = true image flag - imagebody flag +------------------------------------------------------------------------- */ + +void FixRigidSmall::image_shift() +{ + imageint tdim,bdim,xdim[3]; + + imageint *image = atom->image; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (atom2body[i] < 0) continue; + Body *b = &body[atom2body[i]]; + + tdim = image[i] & IMGMASK; + bdim = b->image & IMGMASK; + xdim[0] = IMGMAX + tdim - bdim; + tdim = (image[i] >> IMGBITS) & IMGMASK; + bdim = (b->image >> IMGBITS) & IMGMASK; + xdim[1] = IMGMAX + tdim - bdim; + tdim = image[i] >> IMG2BITS; + bdim = b->image >> IMG2BITS; + xdim[2] = IMGMAX + tdim - bdim; + + xcmimage[i] = (xdim[2] << IMG2BITS) | (xdim[1] << IMGBITS) | xdim[0]; + } +} + /* ---------------------------------------------------------------------- apply Langevin thermostat to all 6 DOF of rigid bodies I own unlike fix langevin, this stores extra force in extra arrays, @@ -845,52 +994,9 @@ void FixRigidSmall::apply_langevin_thermostat() // convert langevin torques from body frame back to space frame MathExtra::matvec(ex_space,ey_space,ez_space,tbody,&langextra[ibody][3]); - - // enforce 2d motion - - if (domain->dimension == 2) - langextra[ibody][2] = langextra[ibody][3] = langextra[ibody][4] = 0.0; } } -/* ---------------------------------------------------------------------- - called from FixEnforce post_force() for 2d problems - zero all body values that should be zero for 2d model -------------------------------------------------------------------------- */ - -void FixRigidSmall::enforce2d() -{ - Body *b; - - for (int ibody = 0; ibody < nlocal_body; ibody++) { - b = &body[ibody]; - b->xcm[2] = 0.0; - b->vcm[2] = 0.0; - b->fcm[2] = 0.0; - b->xgc[2] = 0.0; - b->torque[0] = 0.0; - b->torque[1] = 0.0; - b->angmom[0] = 0.0; - b->angmom[1] = 0.0; - b->omega[0] = 0.0; - b->omega[1] = 0.0; - if (langflag && langextra) { - langextra[ibody][2] = 0.0; - langextra[ibody][3] = 0.0; - langextra[ibody][4] = 0.0; - } - } -} - -/* ---------------------------------------------------------------------- */ - -void FixRigidSmall::post_force(int /*vflag*/) -{ - if (langflag) apply_langevin_thermostat(); - if (earlyflag) compute_forces_and_torques(); -} - - /* ---------------------------------------------------------------------- */ void FixRigidSmall::compute_forces_and_torques() @@ -988,136 +1094,32 @@ void FixRigidSmall::compute_forces_and_torques() } } -/* ---------------------------------------------------------------------- */ - -void FixRigidSmall::final_integrate() -{ - double dtfm; - - //check(3); - - if (!earlyflag) compute_forces_and_torques(); - - // update vcm and angmom, recompute omega - - for (int ibody = 0; ibody < nlocal_body; ibody++) { - Body *b = &body[ibody]; - - // update vcm by 1/2 step - - dtfm = dtf / b->mass; - b->vcm[0] += dtfm * b->fcm[0]; - b->vcm[1] += dtfm * b->fcm[1]; - b->vcm[2] += dtfm * b->fcm[2]; - - // update angular momentum by 1/2 step - - b->angmom[0] += dtf * b->torque[0]; - b->angmom[1] += dtf * b->torque[1]; - b->angmom[2] += dtf * b->torque[2]; - - MathExtra::angmom_to_omega(b->angmom,b->ex_space,b->ey_space, - b->ez_space,b->inertia,b->omega); - } - - // forward communicate updated info of all bodies - - commflag = FINAL; - comm->forward_comm(this,10); - - // set velocity/rotation of atoms in rigid bodies - // virial is already setup from initial_integrate - - set_v(); -} - -/* ---------------------------------------------------------------------- */ - -void FixRigidSmall::initial_integrate_respa(int vflag, int ilevel, int /*iloop*/) -{ - dtv = step_respa[ilevel]; - dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - dtq = 0.5 * step_respa[ilevel]; - - if (ilevel == 0) initial_integrate(vflag); - else final_integrate(); -} - -/* ---------------------------------------------------------------------- */ - -void FixRigidSmall::final_integrate_respa(int ilevel, int /*iloop*/) -{ - dtf = 0.5 * step_respa[ilevel] * force->ftm2v; - final_integrate(); -} - /* ---------------------------------------------------------------------- - remap xcm of each rigid body back into periodic simulation box - done during pre_neighbor so will be after call to pbc() - and after fix_deform::pre_exchange() may have flipped box - use domain->remap() in case xcm is far away from box - due to first-time definition of rigid body in setup_bodies_static() - or due to box flip - also adjust imagebody = rigid body image flags, due to xcm remap - then communicate bodies so other procs will know of changes to body xcm - then adjust xcmimage flags of all atoms in bodies via image_shift() - for two effects - (1) change in true image flags due to pbc() call during exchange - (2) change in imagebody due to xcm remap - xcmimage flags are always -1,0,-1 so that body can be unwrapped - around in-box xcm and stay close to simulation box - if just inferred unwrapped from atom image flags, - then a body could end up very far away - when unwrapped by true image flags - then set_xv() will compute huge displacements every step to reset coords of - all the body atoms to be back inside the box, ditto for triclinic box flip - note: so just want to avoid that numeric problem? + called from FixEnforce post_force() for 2d problems + zero all body values that should be zero for 2d model ------------------------------------------------------------------------- */ -void FixRigidSmall::pre_neighbor() +void FixRigidSmall::enforce2d() { + Body *b; + for (int ibody = 0; ibody < nlocal_body; ibody++) { - Body *b = &body[ibody]; - domain->remap(b->xcm,b->image); - } - - nghost_body = 0; - commflag = FULL_BODY; - comm->forward_comm(this); - reset_atom2body(); - //check(4); - - image_shift(); -} - -/* ---------------------------------------------------------------------- - reset body xcmimage flags of atoms in bodies - xcmimage flags are relative to xcm so that body can be unwrapped - xcmimage = true image flag - imagebody flag -------------------------------------------------------------------------- */ - -void FixRigidSmall::image_shift() -{ - imageint tdim,bdim,xdim[3]; - - imageint *image = atom->image; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - if (atom2body[i] < 0) continue; - Body *b = &body[atom2body[i]]; - - tdim = image[i] & IMGMASK; - bdim = b->image & IMGMASK; - xdim[0] = IMGMAX + tdim - bdim; - tdim = (image[i] >> IMGBITS) & IMGMASK; - bdim = (b->image >> IMGBITS) & IMGMASK; - xdim[1] = IMGMAX + tdim - bdim; - tdim = image[i] >> IMG2BITS; - bdim = b->image >> IMG2BITS; - xdim[2] = IMGMAX + tdim - bdim; - - xcmimage[i] = (xdim[2] << IMG2BITS) | (xdim[1] << IMGBITS) | xdim[0]; + b = &body[ibody]; + b->xcm[2] = 0.0; + b->vcm[2] = 0.0; + b->fcm[2] = 0.0; + b->xgc[2] = 0.0; + b->torque[0] = 0.0; + b->torque[1] = 0.0; + b->angmom[0] = 0.0; + b->angmom[1] = 0.0; + b->omega[0] = 0.0; + b->omega[1] = 0.0; + if (langflag && langextra) { + langextra[ibody][2] = 0.0; + langextra[ibody][3] = 0.0; + langextra[ibody][4] = 0.0; + } } } @@ -1200,7 +1202,7 @@ int FixRigidSmall::dof(int tgroup) int n = 0; nlinear = 0; - if (domain->dimension == 3) { + if (dimension == 3) { for (int ibody = 0; ibody < nlocal_body; ibody++) { if (counts[ibody][0]+counts[ibody][1] == counts[ibody][2]) { n += 3*counts[ibody][0] + 6*counts[ibody][1] - 6; @@ -1211,7 +1213,7 @@ int FixRigidSmall::dof(int tgroup) } } } - } else if (domain->dimension == 2) { + } else if (dimension == 2) { for (int ibody = 0; ibody < nlocal_body; ibody++) if (counts[ibody][0]+counts[ibody][1] == counts[ibody][2]) n += 2*counts[ibody][0] + 3*counts[ibody][1] - 3; @@ -1297,13 +1299,19 @@ void FixRigidSmall::set_xv() // x = displacement from center-of-mass, based on body orientation // v = vcm + omega around center-of-mass - + // enforce 2d x and v + MathExtra::matvec(b->ex_space,b->ey_space,b->ez_space,displace[i],x[i]); v[i][0] = b->omega[1]*x[i][2] - b->omega[2]*x[i][1] + b->vcm[0]; v[i][1] = b->omega[2]*x[i][0] - b->omega[0]*x[i][2] + b->vcm[1]; v[i][2] = b->omega[0]*x[i][1] - b->omega[1]*x[i][0] + b->vcm[2]; + if (dimension == 2) { + x[i][2] = 0.0; + v[i][2] = 0.0; + } + // add center of mass to displacement // map back into periodic box via xbox,ybox,zbox // for triclinic, add in box tilt factors as well @@ -1345,6 +1353,7 @@ void FixRigidSmall::set_xv() } // update the position of geometric center + for (int ibody = 0; ibody < nlocal_body + nghost_body; ibody++) { Body *b = &body[ibody]; MathExtra::matvec(b->ex_space,b->ey_space,b->ez_space, @@ -1462,10 +1471,15 @@ void FixRigidSmall::set_v() v2 = v[i][2]; } + // compute new v + // enforce 2d v + v[i][0] = b->omega[1]*delta[2] - b->omega[2]*delta[1] + b->vcm[0]; v[i][1] = b->omega[2]*delta[0] - b->omega[0]*delta[2] + b->vcm[1]; v[i][2] = b->omega[0]*delta[1] - b->omega[1]*delta[0] + b->vcm[2]; + if (dimension == 2) v[i][2] = 0.0; + // virial = unwrapped coords dotted into body constraint force // body constraint force = implied force due to v change minus f external // assume f does not include forces internal to body diff --git a/src/RIGID/fix_rigid_small.h b/src/RIGID/fix_rigid_small.h index b473026fdb..144b2aad70 100644 --- a/src/RIGID/fix_rigid_small.h +++ b/src/RIGID/fix_rigid_small.h @@ -56,7 +56,6 @@ class FixRigidSmall : public Fix { void pre_neighbor() override; int dof(int) override; void deform(int) override; - void enforce2d() override; void reset_dt() override; void zero_momentum() override; void zero_rotation() override; @@ -72,6 +71,7 @@ class FixRigidSmall : public Fix { double dtv, dtf, dtq; double *step_respa; int triclinic; + int dimension; char *inpfile; // file to read rigid body attributes from int setupflag; // 1 if body properties are setup, else 0 @@ -203,6 +203,7 @@ class FixRigidSmall : public Fix { void setup_bodies_dynamic(); void apply_langevin_thermostat(); void compute_forces_and_torques(); + void enforce2d(); void readfile(int, double **, int *); void grow_body(); void reset_atom2body(); diff --git a/src/fix.cpp b/src/fix.cpp index 9b50d872ea..372134f8eb 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -72,7 +72,6 @@ Fix::Fix(LAMMPS *lmp, int /*narg*/, char **arg) : dynamic = 0; dof_flag = 0; special_alter_flag = 0; - enforce2d_flag = 0; respa_level_support = 0; respa_level = -1; maxexchange = 0; diff --git a/src/fix.h b/src/fix.h index ea82c1677b..958ae05d95 100644 --- a/src/fix.h +++ b/src/fix.h @@ -72,7 +72,6 @@ class Fix : protected Pointers { int dynamic_group_allow; // 1 if can be used with dynamic group, else 0 int dof_flag; // 1 if has dof() method (not min_dof()) int special_alter_flag; // 1 if has special_alter() meth for spec lists - int enforce2d_flag; // 1 if has enforce2d method int respa_level_support; // 1 if fix supports fix_modify respa int respa_level; // which respa level to apply fix (1-Nrespa) int maxexchange; // max # of per-atom values for Comm::exchange() @@ -236,7 +235,6 @@ class Fix : protected Pointers { virtual void deform(int) {} virtual void reset_target(double) {} virtual void reset_dt() {} - virtual void enforce2d() {} virtual void read_data_header(char *) {} virtual void read_data_section(char *, int, char *, tagint) {} diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp index c6816c2355..c13e2147a3 100644 --- a/src/fix_enforce2d.cpp +++ b/src/fix_enforce2d.cpp @@ -27,12 +27,9 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ FixEnforce2D::FixEnforce2D(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), - flist(nullptr) + Fix(lmp, narg, arg) { if (narg != 3) error->all(FLERR,"Illegal fix enforce2d command"); - - nfixlist = 0; } /* ---------------------------------------------------------------------- */ @@ -40,8 +37,6 @@ FixEnforce2D::FixEnforce2D(LAMMPS *lmp, int narg, char **arg) : FixEnforce2D::~FixEnforce2D() { if (copymode) return; - - delete [] flist; } /* ---------------------------------------------------------------------- */ @@ -61,29 +56,6 @@ void FixEnforce2D::init() { if (domain->dimension == 3) error->all(FLERR,"Cannot use fix enforce2d with 3d simulation"); - - // list of fixes with enforce2d methods - - nfixlist = 0; - for (int i = 0; i < modify->nfix; i++) - if (modify->fix[i]->enforce2d_flag) nfixlist++; - - if (nfixlist) { - int myindex = -1; - delete [] flist; - flist = new Fix*[nfixlist]; - nfixlist = 0; - for (int i = 0; i < modify->nfix; i++) { - if (modify->fix[i]->enforce2d_flag) { - if (myindex < 0) - flist[nfixlist++] = modify->fix[i]; - else - error->all(FLERR,"Fix enforce2d must be defined after fix {}", - modify->fix[i]->style); - } - if (modify->fix[i] == this) myindex = i; - } - } } /* ---------------------------------------------------------------------- */ @@ -153,12 +125,6 @@ void FixEnforce2D::post_force(int /*vflag*/) torque[i][1] = 0.0; } } - - // invoke other fixes that enforce 2d - // fix rigid variants - - for (int m = 0; m < nfixlist; m++) - flist[m]->enforce2d(); } /* ---------------------------------------------------------------------- */ diff --git a/src/fix_enforce2d.h b/src/fix_enforce2d.h index 4572785158..95429ba7dc 100644 --- a/src/fix_enforce2d.h +++ b/src/fix_enforce2d.h @@ -35,10 +35,6 @@ class FixEnforce2D : public Fix { void post_force(int) override; void post_force_respa(int, int, int) override; void min_post_force(int) override; - - protected: - int nfixlist; - class Fix **flist; }; } // namespace LAMMPS_NS From ac465baf80b388c8ad6837e89128857e542bbf94 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Apr 2023 22:29:50 -0400 Subject: [PATCH 0034/1002] fix compilation issue with KOKKOS --- src/KOKKOS/fix_enforce2d_kokkos.cpp | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp index 11402e4568..24cf307827 100644 --- a/src/KOKKOS/fix_enforce2d_kokkos.cpp +++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp @@ -17,15 +17,14 @@ ------------------------------------------------------------------------- */ #include "fix_enforce2d_kokkos.h" + #include "atom_masks.h" #include "atom_kokkos.h" #include "comm.h" #include "error.h" - using namespace LAMMPS_NS; - template FixEnforce2DKokkos::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char **arg) : FixEnforce2D(lmp, narg, arg) @@ -34,21 +33,16 @@ FixEnforce2DKokkos::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char * atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = V_MASK | F_MASK | OMEGA_MASK | MASK_MASK - | TORQUE_MASK | ANGMOM_MASK; - - datamask_modify = V_MASK | F_MASK | OMEGA_MASK - | TORQUE_MASK | ANGMOM_MASK; + datamask_read = V_MASK | F_MASK | OMEGA_MASK | MASK_MASK | TORQUE_MASK | ANGMOM_MASK; + datamask_modify = V_MASK | F_MASK | OMEGA_MASK | TORQUE_MASK | ANGMOM_MASK; } - template void FixEnforce2DKokkos::setup(int vflag) { post_force(vflag); } - template void FixEnforce2DKokkos::post_force(int /*vflag*/) { @@ -66,7 +60,6 @@ void FixEnforce2DKokkos::post_force(int /*vflag*/) if (atomKK->torque_flag) torque = atomKK->k_torque.view(); - mask = atomKK->k_mask.view(); int nlocal = atomKK->nlocal; @@ -125,13 +118,6 @@ void FixEnforce2DKokkos::post_force(int /*vflag*/) copymode = 0; atomKK->modified(execution_space,datamask_modify); - - for (int m = 0; m < nfixlist; m++) { - atomKK->sync(flist[m]->execution_space,flist[m]->datamask_read); - flist[m]->enforce2d(); - atomKK->modified(flist[m]->execution_space,flist[m]->datamask_modify); - } - } From d2565bb1e2fcc2b210c09a0ff55a742dd6e2b635 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Apr 2023 22:30:30 -0400 Subject: [PATCH 0035/1002] port changes to OPENMP --- src/OPENMP/fix_rigid_nh_omp.cpp | 65 ++++++++++++++------ src/OPENMP/fix_rigid_nh_omp.h | 4 +- src/OPENMP/fix_rigid_omp.cpp | 80 ++++++++++++++++-------- src/OPENMP/fix_rigid_omp.h | 4 +- src/OPENMP/fix_rigid_small_omp.cpp | 98 ++++++++++++++++++++---------- src/OPENMP/fix_rigid_small_omp.h | 4 +- 6 files changed, 175 insertions(+), 80 deletions(-) diff --git a/src/OPENMP/fix_rigid_nh_omp.cpp b/src/OPENMP/fix_rigid_nh_omp.cpp index 2f1b81fd5b..78dcd96f22 100644 --- a/src/OPENMP/fix_rigid_nh_omp.cpp +++ b/src/OPENMP/fix_rigid_nh_omp.cpp @@ -211,16 +211,31 @@ void FixRigidNHOMP::initial_integrate(int vflag) // set coords/orient and velocity/rotation of atoms in rigid bodies // from quarternion and omega - if (triclinic) - if (evflag) - set_xv_thr<1,1>(); - else - set_xv_thr<1,0>(); - else - if (evflag) - set_xv_thr<0,1>(); - else - set_xv_thr<0,0>(); + if (dimension == 2) { + if (triclinic) { + if (evflag) + set_xv_thr<1,1,2>(); + else + set_xv_thr<1,0,2>(); + } else { + if (evflag) + set_xv_thr<0,1,2>(); + else + set_xv_thr<0,0,2>(); + } + } else { + if (triclinic) { + if (evflag) + set_xv_thr<1,1,3>(); + else + set_xv_thr<1,0,3>(); + } else { + if (evflag) + set_xv_thr<0,1,3>(); + else + set_xv_thr<0,0,3>(); + } + } // remap simulation box by full step // redo KSpace coeffs since volume has changed @@ -503,13 +518,23 @@ void FixRigidNHOMP::final_integrate() // virial is already setup from initial_integrate // triclinic only matters for virial calculation. - if (evflag) - if (triclinic) - set_v_thr<1,1>(); + if (dimension == 2) { + if (evflag) + if (triclinic) + set_v_thr<1,1,2>(); + else + set_v_thr<0,1,2>(); else - set_v_thr<0,1>(); - else - set_v_thr<0,0>(); + set_v_thr<0,0,2>(); + } else { + if (evflag) + if (triclinic) + set_v_thr<1,1,3>(); + else + set_v_thr<0,1,3>(); + else + set_v_thr<0,0,3>(); + } // compute current temperature if (tcomputeflag) t_current = temperature->compute_scalar(); @@ -603,7 +628,7 @@ void FixRigidNHOMP::remap() NOTE: this needs to be kept in sync with FixRigidOMP ------------------------------------------------------------------------- */ -template +template void FixRigidNHOMP::set_xv_thr() { auto * _noalias const x = (dbl3_t *) atom->x[0]; @@ -665,6 +690,8 @@ void FixRigidNHOMP::set_xv_thr() v[i].y = omegai.z*x[i].x - omegai.x*x[i].z + vcmi.y; v[i].z = omegai.x*x[i].y - omegai.y*x[i].x + vcmi.z; + if (DIMENSION == 2) x[i].z = v[i].z = 0.0; + // add center of mass to displacement // map back into periodic box via xbox,ybox,zbox // for triclinic, add in box tilt factors as well @@ -803,7 +830,7 @@ void FixRigidNHOMP::set_xv_thr() NOTE: this needs to be kept in sync with FixRigidOMP ------------------------------------------------------------------------- */ -template +template void FixRigidNHOMP::set_v_thr() { auto * _noalias const x = (dbl3_t *) atom->x[0]; @@ -852,6 +879,8 @@ void FixRigidNHOMP::set_v_thr() v[i].y = omegai.z*delta[0] - omegai.x*delta[2] + vcmi.y; v[i].z = omegai.x*delta[1] - omegai.y*delta[0] + vcmi.z; + if (DIMENSION == 2) v[i].z = 0.0; + // virial = unwrapped coords dotted into body constraint force // body constraint force = implied force due to v change minus f external // assume f does not include forces internal to body diff --git a/src/OPENMP/fix_rigid_nh_omp.h b/src/OPENMP/fix_rigid_nh_omp.h index 6b70841058..dcd893b161 100644 --- a/src/OPENMP/fix_rigid_nh_omp.h +++ b/src/OPENMP/fix_rigid_nh_omp.h @@ -30,8 +30,8 @@ class FixRigidNHOMP : public FixRigidNH { virtual void compute_forces_and_torques(); private: // copied from FixRigidOMP - template void set_xv_thr(); - template void set_v_thr(); + template void set_xv_thr(); + template void set_v_thr(); }; } // namespace LAMMPS_NS diff --git a/src/OPENMP/fix_rigid_omp.cpp b/src/OPENMP/fix_rigid_omp.cpp index de381415a0..e2c6e653bc 100644 --- a/src/OPENMP/fix_rigid_omp.cpp +++ b/src/OPENMP/fix_rigid_omp.cpp @@ -16,33 +16,35 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "fix_rigid_omp.h" -#include -#include #include "atom.h" #include "atom_vec_ellipsoid.h" #include "atom_vec_line.h" #include "atom_vec_tri.h" #include "comm.h" -#include "error.h" #include "domain.h" +#include "error.h" +#include "math_const.h" +#include "math_extra.h" +#include "rigid_const.h" + +#include +#include #if defined(_OPENMP) #include #endif - -#include "math_extra.h" -#include "math_const.h" -#include "rigid_const.h" +#include "omp_compat.h" using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; using namespace RigidConst; -typedef struct { double x,y,z; } dbl3_t; +typedef struct { + double x, y, z; +} dbl3_t; /* ---------------------------------------------------------------------- */ @@ -92,16 +94,32 @@ void FixRigidOMP::initial_integrate(int vflag) // set coords/orient and velocity/rotation of atoms in rigid bodies // from quarternion and omega - if (triclinic) - if (evflag) - set_xv_thr<1,1>(); - else - set_xv_thr<1,0>(); - else - if (evflag) - set_xv_thr<0,1>(); - else - set_xv_thr<0,0>(); + if (dimension == 2) { + if (triclinic) { + if (evflag) + set_xv_thr<1,1,2>(); + else + set_xv_thr<1,0,2>(); + } else { + if (evflag) + set_xv_thr<0,1,2>(); + else + set_xv_thr<0,0,2>(); + } + } else { + + if (triclinic) { + if (evflag) + set_xv_thr<1,1,3>(); + else + set_xv_thr<1,0,3>(); + } else { + if (evflag) + set_xv_thr<0,1,3>(); + else + set_xv_thr<0,0,3>(); + } + } } /* ---------------------------------------------------------------------- */ @@ -306,13 +324,23 @@ void FixRigidOMP::final_integrate() // virial is already setup from initial_integrate // triclinic only matters for virial calculation. + if (dimension == 2) { if (evflag) if (triclinic) - set_v_thr<1,1>(); + set_v_thr<1,1,2>(); else - set_v_thr<0,1>(); + set_v_thr<0,1,2>(); else - set_v_thr<0,0>(); + set_v_thr<0,0,2>(); + } else { + if (evflag) + if (triclinic) + set_v_thr<1,1,3>(); + else + set_v_thr<0,1,3>(); + else + set_v_thr<0,0,3>(); + } } /* ---------------------------------------------------------------------- @@ -323,7 +351,7 @@ void FixRigidOMP::final_integrate() NOTE: this needs to be kept in sync with FixRigidNHOMP ------------------------------------------------------------------------- */ -template +template void FixRigidOMP::set_xv_thr() { auto * _noalias const x = (dbl3_t *) atom->x[0]; @@ -385,6 +413,8 @@ void FixRigidOMP::set_xv_thr() v[i].y = omegai.z*x[i].x - omegai.x*x[i].z + vcmi.y; v[i].z = omegai.x*x[i].y - omegai.y*x[i].x + vcmi.z; + if (DIMENSION == 2) x[i].z = v[i].z = 0.0; + // add center of mass to displacement // map back into periodic box via xbox,ybox,zbox // for triclinic, add in box tilt factors as well @@ -523,7 +553,7 @@ void FixRigidOMP::set_xv_thr() NOTE: this needs to be kept in sync with FixRigidNHOMP ------------------------------------------------------------------------- */ -template +template void FixRigidOMP::set_v_thr() { auto * _noalias const x = (dbl3_t *) atom->x[0]; @@ -572,6 +602,8 @@ void FixRigidOMP::set_v_thr() v[i].y = omegai.z*delta[0] - omegai.x*delta[2] + vcmi.y; v[i].z = omegai.x*delta[1] - omegai.y*delta[0] + vcmi.z; + if (DIMENSION == 2) v[i].z = 0.0; + // virial = unwrapped coords dotted into body constraint force // body constraint force = implied force due to v change minus f external // assume f does not include forces internal to body diff --git a/src/OPENMP/fix_rigid_omp.h b/src/OPENMP/fix_rigid_omp.h index 679dff7508..618ce5ddf7 100644 --- a/src/OPENMP/fix_rigid_omp.h +++ b/src/OPENMP/fix_rigid_omp.h @@ -35,8 +35,8 @@ class FixRigidOMP : public FixRigid { virtual void compute_forces_and_torques(); private: - template void set_xv_thr(); - template void set_v_thr(); + template void set_xv_thr(); + template void set_v_thr(); }; } // namespace LAMMPS_NS diff --git a/src/OPENMP/fix_rigid_small_omp.cpp b/src/OPENMP/fix_rigid_small_omp.cpp index e11b98b7e1..0eda964368 100644 --- a/src/OPENMP/fix_rigid_small_omp.cpp +++ b/src/OPENMP/fix_rigid_small_omp.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -16,31 +15,36 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "fix_rigid_small_omp.h" -#include + #include "atom.h" #include "atom_vec_ellipsoid.h" #include "atom_vec_line.h" #include "atom_vec_tri.h" #include "comm.h" #include "domain.h" +#include "math_const.h" +#include "math_extra.h" +#include "rigid_const.h" + +#include + +#include "omp_compat.h" #if defined(_OPENMP) #include #endif -#include "math_extra.h" -#include "math_const.h" -#include "rigid_const.h" - using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; using namespace RigidConst; -typedef struct { double x,y,z; } dbl3_t; +typedef struct { + double x, y, z; +} dbl3_t; +// clang-format off /* ---------------------------------------------------------------------- */ void FixRigidSmallOMP::initial_integrate(int vflag) @@ -94,16 +98,32 @@ void FixRigidSmallOMP::initial_integrate(int vflag) // set coords/orient and velocity/rotation of atoms in rigid bodies - if (triclinic) - if (evflag) - set_xv_thr<1,1>(); - else - set_xv_thr<1,0>(); - else - if (evflag) - set_xv_thr<0,1>(); - else - set_xv_thr<0,0>(); + if (dimension == 2) { + if (triclinic) { + if (evflag) + set_xv_thr<1,1,2>(); + else + set_xv_thr<1,0,2>(); + } else { + + if (evflag) + set_xv_thr<0,1,2>(); + else + set_xv_thr<0,0,2>(); + } + } else { + if (triclinic) { + if (evflag) + set_xv_thr<1,1,3>(); + else + set_xv_thr<1,0,3>(); + } else { + if (evflag) + set_xv_thr<0,1,3>(); + else + set_xv_thr<0,0,3>(); + } + } } /* ---------------------------------------------------------------------- */ @@ -218,6 +238,7 @@ void FixRigidSmallOMP::compute_forces_and_torques() void FixRigidSmallOMP::final_integrate() { if (!earlyflag) compute_forces_and_torques(); + if (dimension == 2) enforce2d(); // update vcm and angmom, recompute omega @@ -253,24 +274,34 @@ void FixRigidSmallOMP::final_integrate() // virial is already setup from initial_integrate // triclinic only matters for virial calculation. - if (evflag) - if (triclinic) - set_v_thr<1,1>(); + if (dimension == 2) { + if (evflag) { + if (triclinic) + set_v_thr<1,1,2>(); + else + set_v_thr<0,1,2>(); + } else { + set_v_thr<0,0,2>(); + } + } else { + if (evflag) + if (triclinic) + set_v_thr<1,1,3>(); + else + set_v_thr<0,1,3>(); else - set_v_thr<0,1>(); - else - set_v_thr<0,0>(); + set_v_thr<0,0,3>(); + } } - /* ---------------------------------------------------------------------- set space-frame coords and velocity of each atom in each rigid body set orientation and rotation of extended particles x = Q displace + Xcm, mapped back to periodic box v = Vcm + (W cross (x - Xcm)) -------------------------------------------------------------------------- */ + ------------------------------------------------------------------------- */ -template +template void FixRigidSmallOMP::set_xv_thr() { auto * _noalias const x = (dbl3_t *) atom->x[0]; @@ -329,6 +360,8 @@ void FixRigidSmallOMP::set_xv_thr() v[i].y = b.omega[2]*x[i].x - b.omega[0]*x[i].z + b.vcm[1]; v[i].z = b.omega[0]*x[i].y - b.omega[1]*x[i].x + b.vcm[2]; + if (DIMENSION == 2) x[i].z = v[i].z = 0.0; + // add center of mass to displacement // map back into periodic box via xbox,ybox,zbox // for triclinic, add in box tilt factors as well @@ -463,9 +496,9 @@ void FixRigidSmallOMP::set_xv_thr() set space-frame velocity of each atom in a rigid body set omega and angmom of extended particles v = Vcm + (W cross (x - Xcm)) -------------------------------------------------------------------------- */ + ------------------------------------------------------------------------- */ -template +template void FixRigidSmallOMP::set_v_thr() { auto * _noalias const x = (dbl3_t *) atom->x[0]; @@ -512,6 +545,8 @@ void FixRigidSmallOMP::set_v_thr() v[i].y = b.omega[2]*delta[0] - b.omega[0]*delta[2] + b.vcm[1]; v[i].z = b.omega[0]*delta[1] - b.omega[1]*delta[0] + b.vcm[2]; + if (DIMENSION == 2) v[i].z = 0.0; + // virial = unwrapped coords dotted into body constraint force // body constraint force = implied force due to v change minus f external // assume f does not include forces internal to body @@ -564,8 +599,8 @@ void FixRigidSmallOMP::set_v_thr() } } // end of parallel for - // second part of thread safe virial accumulation - // add global virial component after it was reduced across all threads + // second part of thread safe virial accumulation + // add global virial component after it was reduced across all threads if (EVFLAG) { if (vflag_global) { virial[0] += v0; @@ -624,4 +659,3 @@ void FixRigidSmallOMP::set_v_thr() } } } - diff --git a/src/OPENMP/fix_rigid_small_omp.h b/src/OPENMP/fix_rigid_small_omp.h index 3d8bca1a6d..1accb8a470 100644 --- a/src/OPENMP/fix_rigid_small_omp.h +++ b/src/OPENMP/fix_rigid_small_omp.h @@ -39,8 +39,8 @@ class FixRigidSmallOMP : public FixRigidSmall { virtual void compute_forces_and_torques(); private: - template void set_xv_thr(); - template void set_v_thr(); + template void set_xv_thr(); + template void set_v_thr(); }; } // namespace LAMMPS_NS From 56f760d0d8f7e4d41af2bc83b10314b37e3e7f36 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Apr 2023 22:30:39 -0400 Subject: [PATCH 0036/1002] whitespace --- src/RIGID/fix_rigid.cpp | 6 +++--- src/RIGID/fix_rigid_small.cpp | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 0d6cbe86ee..11e5b5acf6 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -856,7 +856,7 @@ void FixRigid::setup(int vflag) } // enforce 2d body forces and torques - + if (dimension == 2) enforce2d(); // zero langextra in case Langevin thermostat not used @@ -980,10 +980,10 @@ void FixRigid::final_integrate() // compute forces and torques (after all post_force contributions) // if 2d model, enforce2d() on body forces/torques - + if (!earlyflag) compute_forces_and_torques(); if (dimension == 2) enforce2d(); - + // update vcm and angmom // fflag,tflag = 0 for some dimensions in 2d diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 4f678cb14c..ccaae258fe 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -691,7 +691,7 @@ void FixRigidSmall::setup(int vflag) } // enforce 2d body forces and torques - + if (dimension == 2) enforce2d(); // reverse communicate fcm, torque of all bodies @@ -841,7 +841,7 @@ void FixRigidSmall::final_integrate() // compute forces and torques (after all post_force contributions) // if 2d model, enforce2d() on body forces/torques - + if (!earlyflag) compute_forces_and_torques(); if (dimension == 2) enforce2d(); @@ -1300,7 +1300,7 @@ void FixRigidSmall::set_xv() // x = displacement from center-of-mass, based on body orientation // v = vcm + omega around center-of-mass // enforce 2d x and v - + MathExtra::matvec(b->ex_space,b->ey_space,b->ez_space,displace[i],x[i]); v[i][0] = b->omega[1]*x[i][2] - b->omega[2]*x[i][1] + b->vcm[0]; @@ -1311,7 +1311,7 @@ void FixRigidSmall::set_xv() x[i][2] = 0.0; v[i][2] = 0.0; } - + // add center of mass to displacement // map back into periodic box via xbox,ybox,zbox // for triclinic, add in box tilt factors as well @@ -1353,7 +1353,7 @@ void FixRigidSmall::set_xv() } // update the position of geometric center - + for (int ibody = 0; ibody < nlocal_body + nghost_body; ibody++) { Body *b = &body[ibody]; MathExtra::matvec(b->ex_space,b->ey_space,b->ez_space, @@ -1473,13 +1473,13 @@ void FixRigidSmall::set_v() // compute new v // enforce 2d v - + v[i][0] = b->omega[1]*delta[2] - b->omega[2]*delta[1] + b->vcm[0]; v[i][1] = b->omega[2]*delta[0] - b->omega[0]*delta[2] + b->vcm[1]; v[i][2] = b->omega[0]*delta[1] - b->omega[1]*delta[0] + b->vcm[2]; if (dimension == 2) v[i][2] = 0.0; - + // virial = unwrapped coords dotted into body constraint force // body constraint force = implied force due to v change minus f external // assume f does not include forces internal to body From 6e09037aa38ba8f27bbc1f82e43bf73193367bde Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 4 Apr 2023 05:20:53 -0400 Subject: [PATCH 0037/1002] incremental improvements --- src/OPENMP/fix_rigid_omp.cpp | 15 ++++++++------- src/RIGID/fix_rigid.cpp | 3 +-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/OPENMP/fix_rigid_omp.cpp b/src/OPENMP/fix_rigid_omp.cpp index e2c6e653bc..0e27578b81 100644 --- a/src/OPENMP/fix_rigid_omp.cpp +++ b/src/OPENMP/fix_rigid_omp.cpp @@ -170,7 +170,7 @@ void FixRigidOMP::compute_forces_and_torques() } else if (rstyle == GROUP) { - // we likely have only a rather number of groups so we loops + // we likely have only a rather number of groups so we loop // over bodies and thread over all atoms for each of them. for (int ib = 0; ib < nbody; ++ib) { @@ -268,12 +268,12 @@ void FixRigidOMP::compute_forces_and_torques() #pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nbody; ibody++) { - fcm[ibody][0] = all[ibody][0] + langextra[ibody][0]; - fcm[ibody][1] = all[ibody][1] + langextra[ibody][1]; - fcm[ibody][2] = all[ibody][2] + langextra[ibody][2]; - torque[ibody][0] = all[ibody][3] + langextra[ibody][3]; - torque[ibody][1] = all[ibody][4] + langextra[ibody][4]; - torque[ibody][2] = all[ibody][5] + langextra[ibody][5]; + fcm[ibody][0] = all[ibody][0] + fflag[ibody][0]*langextra[ibody][0]; + fcm[ibody][1] = all[ibody][1] + fflag[ibody][1]*langextra[ibody][1]; + fcm[ibody][2] = all[ibody][2] + fflag[ibody][2]*langextra[ibody][2]; + torque[ibody][0] = all[ibody][3] + tflag[ibody][0]*langextra[ibody][3]; + torque[ibody][1] = all[ibody][4] + tflag[ibody][1]*langextra[ibody][4]; + torque[ibody][2] = all[ibody][5] + tflag[ibody][2]*langextra[ibody][5]; } // add gravity force to COM of each body @@ -295,6 +295,7 @@ void FixRigidOMP::compute_forces_and_torques() void FixRigidOMP::final_integrate() { if (!earlyflag) compute_forces_and_torques(); + if (dimension == 2) enforce2d(); // update vcm and angmom diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 11e5b5acf6..fe15946ca8 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -503,8 +503,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : id_dilate = utils::strdup(arg[iarg+1]); int idilate = group->find(id_dilate); if (idilate == -1) - error->all(FLERR, - "Fix rigid npt/nph dilate group ID does not exist"); + error->all(FLERR, "Fix rigid npt/nph dilate group ID {} does not exist", id_dilate); } iarg += 2; From 777ba98764ea99527b54069e8c7d3a9584017615 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 4 Apr 2023 08:56:07 -0400 Subject: [PATCH 0038/1002] cosmetic --- src/OPENMP/fix_rigid_omp.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/OPENMP/fix_rigid_omp.cpp b/src/OPENMP/fix_rigid_omp.cpp index 0e27578b81..3287d569e2 100644 --- a/src/OPENMP/fix_rigid_omp.cpp +++ b/src/OPENMP/fix_rigid_omp.cpp @@ -79,13 +79,11 @@ void FixRigidOMP::initial_integrate(int vflag) // returns new normalized quaternion, also updated omega at 1/2 step // update ex,ey,ez to reflect new quaternion - MathExtra::angmom_to_omega(angmom[ibody],ex_space[ibody],ey_space[ibody], - ez_space[ibody],inertia[ibody],omega[ibody]); - MathExtra::richardson(quat[ibody],angmom[ibody],omega[ibody], - inertia[ibody],dtq); - MathExtra::q_to_exyz(quat[ibody], - ex_space[ibody],ey_space[ibody],ez_space[ibody]); - } // end of omp parallel for + MathExtra::angmom_to_omega(angmom[ibody], ex_space[ibody], ey_space[ibody], ez_space[ibody], + inertia[ibody], omega[ibody]); + MathExtra::richardson(quat[ibody], angmom[ibody], omega[ibody], inertia[ibody], dtq); + MathExtra::q_to_exyz(quat[ibody], ex_space[ibody], ey_space[ibody], ez_space[ibody]); + } // end of omp parallel for // virial setup before call to set_xv From fed3c02d0191078c5c75923973415f3f36454d08 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 4 Apr 2023 08:56:30 -0400 Subject: [PATCH 0039/1002] improve error messages and partially apply clang-format --- src/RIGID/fix_rigid.cpp | 467 +++++++++++++++++++++------------------- 1 file changed, 246 insertions(+), 221 deletions(-) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index fe15946ca8..9264b0f3fb 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -47,18 +46,16 @@ using namespace RigidConst; /* ---------------------------------------------------------------------- */ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), step_respa(nullptr), - inpfile(nullptr), nrigid(nullptr), mol2body(nullptr), body2mol(nullptr), - body(nullptr), displace(nullptr), masstotal(nullptr), xcm(nullptr), - vcm(nullptr), fcm(nullptr), inertia(nullptr), ex_space(nullptr), - ey_space(nullptr), ez_space(nullptr), angmom(nullptr), omega(nullptr), - torque(nullptr), quat(nullptr), imagebody(nullptr), fflag(nullptr), - tflag(nullptr), langextra(nullptr), sum(nullptr), all(nullptr), - remapflag(nullptr), xcmimage(nullptr), eflags(nullptr), orient(nullptr), - dorient(nullptr), id_dilate(nullptr), id_gravity(nullptr), random(nullptr), - avec_ellipsoid(nullptr), avec_line(nullptr), avec_tri(nullptr) + Fix(lmp, narg, arg), step_respa(nullptr), inpfile(nullptr), nrigid(nullptr), mol2body(nullptr), + body2mol(nullptr), body(nullptr), displace(nullptr), masstotal(nullptr), xcm(nullptr), + vcm(nullptr), fcm(nullptr), inertia(nullptr), ex_space(nullptr), ey_space(nullptr), + ez_space(nullptr), angmom(nullptr), omega(nullptr), torque(nullptr), quat(nullptr), + imagebody(nullptr), fflag(nullptr), tflag(nullptr), langextra(nullptr), sum(nullptr), + all(nullptr), remapflag(nullptr), xcmimage(nullptr), eflags(nullptr), orient(nullptr), + dorient(nullptr), id_dilate(nullptr), id_gravity(nullptr), random(nullptr), + avec_ellipsoid(nullptr), avec_line(nullptr), avec_tri(nullptr) { - int i,ibody; + int i, ibody; scalar_flag = 1; extscalar = 0; @@ -70,8 +67,8 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : dof_flag = 1; centroidstressflag = CENTROID_NOTAVAIL; - MPI_Comm_rank(world,&me); - MPI_Comm_size(world,&nprocs); + MPI_Comm_rank(world, &me); + MPI_Comm_size(world, &nprocs); // perform initial allocation of atom-based arrays // register with Atom class @@ -90,7 +87,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : // parse args for rigid body specification // set nbody and body[i] for each atom - if (narg < 4) error->all(FLERR,"Illegal fix rigid command"); + if (narg < 4) utils::missing_cmd_args(FLERR, std::string("fix ") + style, error); int iarg; mol2body = nullptr; @@ -100,7 +97,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : // nbody = 1 // all atoms in fix group are part of body - if (strcmp(arg[3],"single") == 0) { + if (strcmp(arg[3], "single") == 0) { rstyle = SINGLE; iarg = 4; nbody = 1; @@ -113,67 +110,68 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : if (mask[i] & groupbit) body[i] = 0; } - // each molecule in fix group is a rigid body - // maxmol = largest molecule ID - // ncount = # of atoms in each molecule (have to sum across procs) - // nbody = # of non-zero ncount values - // use nall as incremented ptr to set body[] values for each atom + // each molecule in fix group is a rigid body + // maxmol = largest molecule ID + // ncount = # of atoms in each molecule (have to sum across procs) + // nbody = # of non-zero ncount values + // use nall as incremented ptr to set body[] values for each atom - } else if (strcmp(arg[3],"molecule") == 0 || strcmp(arg[3],"custom") == 0) { + } else if ((strcmp(arg[3], "molecule") == 0) || (strcmp(arg[3], "custom") == 0)) { rstyle = MOLECULE; tagint *molecule; int *mask = atom->mask; int nlocal = atom->nlocal; - int custom_flag = strcmp(arg[3],"custom") == 0; + int custom_flag = strcmp(arg[3], "custom") == 0; if (custom_flag) { - if (narg < 5) error->all(FLERR,"Illegal fix rigid command"); + if (narg < 5) utils::missing_cmd_args(FLERR, fmt::format("fix {} custom"), error); // determine whether atom-style variable or atom property is used - if (utils::strmatch(arg[4],"^i_")) { - int is_double,cols; - int custom_index = atom->find_custom(arg[4]+2,is_double,cols); + if (utils::strmatch(arg[4], "^i_")) { + int is_double, cols; + int custom_index = atom->find_custom(arg[4] + 2, is_double, cols); if (custom_index == -1) - error->all(FLERR,"Fix rigid custom requires previously defined property/atom"); + error->all(FLERR, "Fix {} custom requires previously defined property/atom", style); else if (is_double) - error->all(FLERR,"Fix rigid custom requires integer-valued property/atom vector"); + error->all(FLERR, "Fix {} custom requires integer-valued property/atom vector", style); int minval = INT_MAX; int *value = atom->ivector[custom_index]; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) minval = MIN(minval,value[i]); + if (mask[i] & groupbit) minval = MIN(minval, value[i]); int vmin = minval; - MPI_Allreduce(&vmin,&minval,1,MPI_INT,MPI_MIN,world); + MPI_Allreduce(&vmin, &minval, 1, MPI_INT, MPI_MIN, world); molecule = new tagint[nlocal]; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) - molecule[i] = (tagint)(value[i] - minval + 1); + molecule[i] = (tagint) (value[i] - minval + 1); else molecule[i] = 0; - } else if (utils::strmatch(arg[4],"^v_")) { - int ivariable = input->variable->find(arg[4]+2); + } else if (utils::strmatch(arg[4], "^v_")) { + int ivariable = input->variable->find(arg[4] + 2); if (ivariable < 0) - error->all(FLERR,"Variable {} for fix rigid/small custom does not exist", arg[4]+2); + error->all(FLERR, "Variable {} for fix {} custom does not exist", arg[4] + 2, style); if (input->variable->atomstyle(ivariable) == 0) - error->all(FLERR,"Fix rigid custom variable {} is not atom-style variable", arg[4]+2); + error->all(FLERR, "Fix {} custom variable {} is not atom-style variable", style, + arg[4] + 2); auto value = new double[nlocal]; - input->variable->compute_atom(ivariable,0,value,1,0); + input->variable->compute_atom(ivariable, 0, value, 1, 0); int minval = INT_MAX; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) minval = MIN(minval,(int)value[i]); + if (mask[i] & groupbit) minval = MIN(minval, (int) value[i]); int vmin = minval; - MPI_Allreduce(&vmin,&minval,1,MPI_INT,MPI_MIN,world); + MPI_Allreduce(&vmin, &minval, 1, MPI_INT, MPI_MIN, world); molecule = new tagint[nlocal]; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) - molecule[i] = (tagint)((tagint)value[i] - minval + 1); + if (mask[i] & groupbit) molecule[i] = (tagint) ((tagint) value[i] - minval + 1); delete[] value; - } else error->all(FLERR,"Unsupported fix rigid custom property"); + } else + error->all(FLERR, "Unsupported fix {} custom property: {}", style, arg[4]); } else { if (atom->molecule_flag == 0) - error->all(FLERR,"Fix rigid molecule requires atom attribute molecule"); + error->all(FLERR, "Fix {} molecule requires atom attribute molecule", style); molecule = atom->molecule; } @@ -181,30 +179,31 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : tagint maxmol_tag = -1; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) maxmol_tag = MAX(maxmol_tag,molecule[i]); + if (mask[i] & groupbit) maxmol_tag = MAX(maxmol_tag, molecule[i]); tagint itmp; - MPI_Allreduce(&maxmol_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); - if (itmp+1 > MAXSMALLINT) - error->all(FLERR,"Too many molecules for fix rigid"); + MPI_Allreduce(&maxmol_tag, &itmp, 1, MPI_LMP_TAGINT, MPI_MAX, world); + if (itmp + 1 > MAXSMALLINT) error->all(FLERR, "Too many molecules for fix {}", style); maxmol = (int) itmp; int *ncount; - memory->create(ncount,maxmol+1,"rigid:ncount"); + memory->create(ncount, maxmol + 1, "rigid:ncount"); for (i = 0; i <= maxmol; i++) ncount[i] = 0; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) ncount[molecule[i]]++; - memory->create(mol2body,maxmol+1,"rigid:mol2body"); - MPI_Allreduce(ncount,mol2body,maxmol+1,MPI_INT,MPI_SUM,world); + memory->create(mol2body, maxmol + 1, "rigid:mol2body"); + MPI_Allreduce(ncount, mol2body, maxmol + 1, MPI_INT, MPI_SUM, world); nbody = 0; for (i = 0; i <= maxmol; i++) - if (mol2body[i]) mol2body[i] = nbody++; - else mol2body[i] = -1; + if (mol2body[i]) + mol2body[i] = nbody++; + else + mol2body[i] = -1; - memory->create(body2mol,nbody,"rigid:body2mol"); + memory->create(body2mol, nbody, "rigid:body2mol"); nbody = 0; for (i = 0; i <= maxmol; i++) @@ -218,24 +217,24 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : memory->destroy(ncount); if (custom_flag) delete[] molecule; - // each listed group is a rigid body - // check if all listed groups exist - // an atom must belong to fix group and listed group to be in rigid body - // error if atom belongs to more than 1 rigid body + // each listed group is a rigid body + // check if all listed groups exist + // an atom must belong to fix group and listed group to be in rigid body + // error if atom belongs to more than 1 rigid body - } else if (strcmp(arg[3],"group") == 0) { - if (narg < 5) error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[3], "group") == 0) { + if (narg < 5) utils::missing_cmd_args(FLERR, fmt::format("fix {} group"), error); rstyle = GROUP; - nbody = utils::inumeric(FLERR,arg[4],false,lmp); - if (nbody <= 0) error->all(FLERR,"Illegal fix rigid command"); - if (narg < 5+nbody) error->all(FLERR,"Illegal fix rigid command"); - iarg = 5+nbody; + nbody = utils::inumeric(FLERR, arg[4], false, lmp); + if (nbody <= 0) error->all(FLERR, "Illegal fix {} number of groups {}", style, nbody); + if (narg < 5 + nbody) utils::missing_cmd_args(FLERR, fmt::format("fix {} group"), error); + iarg = 5 + nbody; int *igroups = new int[nbody]; for (ibody = 0; ibody < nbody; ibody++) { - igroups[ibody] = group->find(arg[5+ibody]); + igroups[ibody] = group->find(arg[5 + ibody]); if (igroups[ibody] == -1) - error->all(FLERR,"Could not find fix rigid group ID"); + error->all(FLERR, "Could not find fix {} group ID {}", style, arg[5 + ibody]); } int *mask = atom->mask; @@ -253,41 +252,41 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : } int flagall; - MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall) - error->all(FLERR,"One or more atoms belong to multiple rigid bodies"); + MPI_Allreduce(&flag, &flagall, 1, MPI_INT, MPI_SUM, world); + if (flagall) error->all(FLERR, "One or more atoms belong to multiple rigid bodies"); delete[] igroups; - } else error->all(FLERR,"Illegal fix rigid command"); + } else + error->all(FLERR, "Unknown fix {} mode {}", style, arg[3]); // error check on nbody - if (nbody == 0) error->all(FLERR,"No rigid bodies defined"); + if (nbody == 0) error->all(FLERR, "No rigid bodies defined"); // create all nbody-length arrays - memory->create(nrigid,nbody,"rigid:nrigid"); - memory->create(masstotal,nbody,"rigid:masstotal"); - memory->create(xcm,nbody,3,"rigid:xcm"); - memory->create(vcm,nbody,3,"rigid:vcm"); - memory->create(fcm,nbody,3,"rigid:fcm"); - memory->create(inertia,nbody,3,"rigid:inertia"); - memory->create(ex_space,nbody,3,"rigid:ex_space"); - memory->create(ey_space,nbody,3,"rigid:ey_space"); - memory->create(ez_space,nbody,3,"rigid:ez_space"); - memory->create(angmom,nbody,3,"rigid:angmom"); - memory->create(omega,nbody,3,"rigid:omega"); - memory->create(torque,nbody,3,"rigid:torque"); - memory->create(quat,nbody,4,"rigid:quat"); - memory->create(imagebody,nbody,"rigid:imagebody"); - memory->create(fflag,nbody,3,"rigid:fflag"); - memory->create(tflag,nbody,3,"rigid:tflag"); - memory->create(langextra,nbody,6,"rigid:langextra"); + memory->create(nrigid, nbody, "rigid:nrigid"); + memory->create(masstotal, nbody, "rigid:masstotal"); + memory->create(xcm, nbody, 3, "rigid:xcm"); + memory->create(vcm, nbody, 3, "rigid:vcm"); + memory->create(fcm, nbody, 3, "rigid:fcm"); + memory->create(inertia, nbody, 3, "rigid:inertia"); + memory->create(ex_space, nbody, 3, "rigid:ex_space"); + memory->create(ey_space, nbody, 3, "rigid:ey_space"); + memory->create(ez_space, nbody, 3, "rigid:ez_space"); + memory->create(angmom, nbody, 3, "rigid:angmom"); + memory->create(omega, nbody, 3, "rigid:omega"); + memory->create(torque, nbody, 3, "rigid:torque"); + memory->create(quat, nbody, 4, "rigid:quat"); + memory->create(imagebody, nbody, "rigid:imagebody"); + memory->create(fflag, nbody, 3, "rigid:fflag"); + memory->create(tflag, nbody, 3, "rigid:tflag"); + memory->create(langextra, nbody, 6, "rigid:langextra"); - memory->create(sum,nbody,6,"rigid:sum"); - memory->create(all,nbody,6,"rigid:all"); - memory->create(remapflag,nbody,4,"rigid:remapflag"); + memory->create(sum, nbody, 6, "rigid:sum"); + memory->create(all, nbody, 6, "rigid:all"); + memory->create(remapflag, nbody, 4, "rigid:remapflag"); // initialize force/torque flags to default = 1.0 // for 2d: fz, tx, ty = 0.0 @@ -335,102 +334,117 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : } while (iarg < narg) { - if (strcmp(arg[iarg],"force") == 0) { - if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command"); + if (strcmp(arg[iarg], "force") == 0) { + if (iarg + 5 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} force", style), error); - int mlo,mhi; - utils::bounds(FLERR,arg[iarg+1],1,nbody,mlo,mhi,error); + int mlo, mhi; + utils::bounds(FLERR, arg[iarg + 1], 1, nbody, mlo, mhi, error); - double xflag,yflag,zflag; - if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0; - else if (strcmp(arg[iarg+2],"on") == 0) xflag = 1.0; - else error->all(FLERR,"Illegal fix rigid command"); - if (strcmp(arg[iarg+3],"off") == 0) yflag = 0.0; - else if (strcmp(arg[iarg+3],"on") == 0) yflag = 1.0; - else error->all(FLERR,"Illegal fix rigid command"); - if (strcmp(arg[iarg+4],"off") == 0) zflag = 0.0; - else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; - else error->all(FLERR,"Illegal fix rigid command"); + double xflag, yflag, zflag; + if (strcmp(arg[iarg + 2], "off") == 0) + xflag = 0.0; + else if (strcmp(arg[iarg + 2], "on") == 0) + xflag = 1.0; + else + error->all(FLERR, "Illegal fix {} command", style); + if (strcmp(arg[iarg + 3], "off") == 0) + yflag = 0.0; + else if (strcmp(arg[iarg + 3], "on") == 0) + yflag = 1.0; + else + error->all(FLERR, "Illegal fix {} command", style); + if (strcmp(arg[iarg + 4], "off") == 0) + zflag = 0.0; + else if (strcmp(arg[iarg + 4], "on") == 0) + zflag = 1.0; + else + error->all(FLERR, "Illegal fix {} command", style); - if (dimension == 2 && zflag == 1.0) - error->all(FLERR,"Fix rigid z force cannot be on for 2d simulation"); + if ((dimension == 2) && (zflag == 1.0)) + error->all(FLERR, "Fix rigid z force cannot be on for 2d simulation"); int count = 0; for (int m = mlo; m <= mhi; m++) { - fflag[m-1][0] = xflag; - fflag[m-1][1] = yflag; - fflag[m-1][2] = zflag; + fflag[m - 1][0] = xflag; + fflag[m - 1][1] = yflag; + fflag[m - 1][2] = zflag; count++; } - if (count == 0) error->all(FLERR,"Illegal fix rigid command"); + if (count == 0) error->all(FLERR, "Illegal fix {} command", style); iarg += 5; - } else if (strcmp(arg[iarg],"torque") == 0) { - if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "torque") == 0) { + if (iarg + 5 > narg) error->all(FLERR, "Illegal fix {} command", style); - int mlo,mhi; - utils::bounds(FLERR,arg[iarg+1],1,nbody,mlo,mhi,error); + int mlo, mhi; + utils::bounds(FLERR, arg[iarg + 1], 1, nbody, mlo, mhi, error); - double xflag,yflag,zflag; - if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0; - else if (strcmp(arg[iarg+2],"on") == 0) xflag = 1.0; - else error->all(FLERR,"Illegal fix rigid command"); - if (strcmp(arg[iarg+3],"off") == 0) yflag = 0.0; - else if (strcmp(arg[iarg+3],"on") == 0) yflag = 1.0; - else error->all(FLERR,"Illegal fix rigid command"); - if (strcmp(arg[iarg+4],"off") == 0) zflag = 0.0; - else if (strcmp(arg[iarg+4],"on") == 0) zflag = 1.0; - else error->all(FLERR,"Illegal fix rigid command"); + double xflag, yflag, zflag; + if (strcmp(arg[iarg + 2], "off") == 0) + xflag = 0.0; + else if (strcmp(arg[iarg + 2], "on") == 0) + xflag = 1.0; + else + error->all(FLERR, "Illegal fix {} command", style); + if (strcmp(arg[iarg + 3], "off") == 0) + yflag = 0.0; + else if (strcmp(arg[iarg + 3], "on") == 0) + yflag = 1.0; + else + error->all(FLERR, "Illegal fix {} command", style); + if (strcmp(arg[iarg + 4], "off") == 0) + zflag = 0.0; + else if (strcmp(arg[iarg + 4], "on") == 0) + zflag = 1.0; + else + error->all(FLERR, "Illegal fix {} command", style); if (dimension == 2 && (xflag == 1.0 || yflag == 1.0)) - error->all(FLERR,"Fix rigid xy torque cannot be on for 2d simulation"); + error->all(FLERR, "Fix rigid xy torque cannot be on for 2d simulation"); int count = 0; for (int m = mlo; m <= mhi; m++) { - tflag[m-1][0] = xflag; - tflag[m-1][1] = yflag; - tflag[m-1][2] = zflag; + tflag[m - 1][0] = xflag; + tflag[m - 1][1] = yflag; + tflag[m - 1][2] = zflag; count++; } - if (count == 0) error->all(FLERR,"Illegal fix rigid command"); + if (count == 0) error->all(FLERR, "Illegal fix {} command", style); iarg += 5; - } else if (strcmp(arg[iarg],"langevin") == 0) { - if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (strcmp(style,"rigid") != 0 && strcmp(style,"rigid/nve") != 0 && - strcmp(style,"rigid/omp") != 0 && strcmp(style,"rigid/nve/omp") != 0) - error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "langevin") == 0) { + if (iarg + 5 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (strcmp(style, "rigid") != 0 && strcmp(style, "rigid/nve") != 0 && + strcmp(style, "rigid/omp") != 0 && strcmp(style, "rigid/nve/omp") != 0) + error->all(FLERR, "Illegal fix {} command", style); langflag = 1; - t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); - t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); - t_period = utils::numeric(FLERR,arg[iarg+3],false,lmp); - seed = utils::inumeric(FLERR,arg[iarg+4],false,lmp); - if (t_period <= 0.0) - error->all(FLERR,"Fix rigid langevin period must be > 0.0"); - if (seed <= 0) error->all(FLERR,"Illegal fix rigid command"); + t_start = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + t_stop = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + t_period = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + seed = utils::inumeric(FLERR, arg[iarg + 4], false, lmp); + if (t_period <= 0.0) error->all(FLERR, "Fix rigid langevin period must be > 0.0"); + if (seed <= 0) error->all(FLERR, "Illegal fix {} command", style); iarg += 5; - } else if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/n.t")) - error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "temp") == 0) { + if (iarg + 4 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (!utils::strmatch(style, "^rigid/n.t")) error->all(FLERR, "Illegal fix {} command", style); tstat_flag = 1; - t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); - t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); - t_period = utils::numeric(FLERR,arg[iarg+3],false,lmp); + t_start = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + t_stop = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + t_period = utils::numeric(FLERR, arg[iarg + 3], false, lmp); iarg += 4; - } else if (strcmp(arg[iarg],"iso") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/np.")) - error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "iso") == 0) { + if (iarg + 4 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (!utils::strmatch(style, "^rigid/np.")) error->all(FLERR, "Illegal fix {} command", style); pcouple = XYZ; - p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); - p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); - p_period[0] = p_period[1] = p_period[2] = - utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR, arg[iarg + 3], false, lmp); p_flag[0] = p_flag[1] = p_flag[2] = 1; if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; @@ -438,14 +452,12 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : } iarg += 4; - } else if (strcmp(arg[iarg],"aniso") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/np.")) - error->all(FLERR,"Illegal fix rigid command"); - p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); - p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); - p_period[0] = p_period[1] = p_period[2] = - utils::numeric(FLERR,arg[iarg+3],false,lmp); + } else if (strcmp(arg[iarg], "aniso") == 0) { + if (iarg + 4 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (!utils::strmatch(style, "^rigid/np.")) error->all(FLERR, "Illegal fix {} command", style); + p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR, arg[iarg + 3], false, lmp); p_flag[0] = p_flag[1] = p_flag[2] = 1; if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; @@ -453,98 +465,111 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : } iarg += 4; - } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/np.")) - error->all(FLERR,"Illegal fix rigid command"); - p_start[0] = utils::numeric(FLERR,arg[iarg+1],false,lmp); - p_stop[0] = utils::numeric(FLERR,arg[iarg+2],false,lmp); - p_period[0] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + } else if (strcmp(arg[iarg], "x") == 0) { + if (iarg + 4 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (!utils::strmatch(style, "^rigid/np.")) error->all(FLERR, "Illegal fix {} command", style); + p_start[0] = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + p_stop[0] = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + p_period[0] = utils::numeric(FLERR, arg[iarg + 3], false, lmp); p_flag[0] = 1; iarg += 4; - } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/np.")) - error->all(FLERR,"Illegal fix rigid command"); - p_start[1] = utils::numeric(FLERR,arg[iarg+1],false,lmp); - p_stop[1] = utils::numeric(FLERR,arg[iarg+2],false,lmp); - p_period[1] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + } else if (strcmp(arg[iarg], "y") == 0) { + if (iarg + 4 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (!utils::strmatch(style, "^rigid/np.")) error->all(FLERR, "Illegal fix {} command", style); + p_start[1] = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + p_stop[1] = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + p_period[1] = utils::numeric(FLERR, arg[iarg + 3], false, lmp); p_flag[1] = 1; iarg += 4; - } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/np.")) - error->all(FLERR,"Illegal fix rigid command"); - p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); - p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); - p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + } else if (strcmp(arg[iarg], "z") == 0) { + if (iarg + 4 > narg) error->all(FLERR, "Illegal fix {} command", style); + if (!utils::strmatch(style, "^rigid/np.")) error->all(FLERR, "Illegal fix {} command", style); + p_start[2] = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + p_stop[2] = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + p_period[2] = utils::numeric(FLERR, arg[iarg + 3], false, lmp); p_flag[2] = 1; iarg += 4; - } else if (strcmp(arg[iarg],"couple") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; - else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; - else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; - else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; - else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; - else error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "couple") == 0) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} couple", style), error); + if (strcmp(arg[iarg + 1], "xyz") == 0) + pcouple = XYZ; + else if (strcmp(arg[iarg + 1], "xy") == 0) + pcouple = XY; + else if (strcmp(arg[iarg + 1], "yz") == 0) + pcouple = YZ; + else if (strcmp(arg[iarg + 1], "xz") == 0) + pcouple = XZ; + else if (strcmp(arg[iarg + 1], "none") == 0) + pcouple = NONE; + else + error->all(FLERR, "Unknown fix {} couple option ", style, arg[iarg + 1]); iarg += 2; - } else if (strcmp(arg[iarg],"dilate") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal fix rigid npt/nph command"); - if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; + } else if (strcmp(arg[iarg], "dilate") == 0) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} dilate", style), error); + if (strcmp(arg[iarg + 1], "all") == 0) + allremap = 1; else { allremap = 0; delete[] id_dilate; - id_dilate = utils::strdup(arg[iarg+1]); + id_dilate = utils::strdup(arg[iarg + 1]); int idilate = group->find(id_dilate); if (idilate == -1) - error->all(FLERR, "Fix rigid npt/nph dilate group ID {} does not exist", id_dilate); + error->all(FLERR, "Fix {} dilate group ID {} does not exist", style, id_dilate); } iarg += 2; - } else if (strcmp(arg[iarg],"tparam") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/n.t")) - error->all(FLERR,"Illegal fix rigid command"); - t_chain = utils::inumeric(FLERR,arg[iarg+1],false,lmp); - t_iter = utils::inumeric(FLERR,arg[iarg+2],false,lmp); - t_order = utils::inumeric(FLERR,arg[iarg+3],false,lmp); + } else if (strcmp(arg[iarg], "tparam") == 0) { + if (iarg + 4 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} tparam", style), error); + if (!utils::strmatch(style, "^rigid/n.t")) + error->all(FLERR, "Illegal fix {} command option tparam", style); + t_chain = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + t_iter = utils::inumeric(FLERR, arg[iarg + 2], false, lmp); + t_order = utils::inumeric(FLERR, arg[iarg + 3], false, lmp); iarg += 4; - } else if (strcmp(arg[iarg],"pchain") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); - if (!utils::strmatch(style,"^rigid/np.")) - error->all(FLERR,"Illegal fix rigid command"); - p_chain = utils::inumeric(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "pchain") == 0) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} pchain", style), error); + if (!utils::strmatch(style, "^rigid/np.")) + error->all(FLERR, "Illegal fix {} command option pchain", style); + p_chain = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"infile") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "infile") == 0) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} infile", style), error); delete[] inpfile; - inpfile = utils::strdup(arg[iarg+1]); + inpfile = utils::strdup(arg[iarg + 1]); restart_file = 1; reinitflag = 0; iarg += 2; - } else if (strcmp(arg[iarg],"reinit") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); - reinitflag = utils::logical(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "reinit") == 0) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} reinit", style), error); + reinitflag = utils::logical(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"gravity") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); + } else if (strcmp(arg[iarg], "gravity") == 0) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} gravity", style), error); delete[] id_gravity; - id_gravity = utils::strdup(arg[iarg+1]); + id_gravity = utils::strdup(arg[iarg + 1]); iarg += 2; - } else error->all(FLERR,"Illegal fix rigid command"); + } else + error->all(FLERR, "Illegal fix {} command", style); } + // clang-format off + // set pstat_flag pstat_flag = 0; From 3ed6612f0828b795dc8b70e4649b7f4164d5d91b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 14 Apr 2023 23:20:22 -0400 Subject: [PATCH 0040/1002] correct comment --- src/OPENMP/fix_rigid_omp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OPENMP/fix_rigid_omp.cpp b/src/OPENMP/fix_rigid_omp.cpp index 3287d569e2..c9cfee07c6 100644 --- a/src/OPENMP/fix_rigid_omp.cpp +++ b/src/OPENMP/fix_rigid_omp.cpp @@ -168,7 +168,7 @@ void FixRigidOMP::compute_forces_and_torques() } else if (rstyle == GROUP) { - // we likely have only a rather number of groups so we loop + // we likely have a rather small number of groups so we loop // over bodies and thread over all atoms for each of them. for (int ib = 0; ib < nbody; ++ib) { From bee5afcd0832cba5468696c8a8a5fa5cc7c4ba1f Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 21 Apr 2023 00:22:36 -0500 Subject: [PATCH 0041/1002] Added yukawa/colloid/kk --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/pair_yukawa_colloid_kokkos.cpp | 271 ++++++++++++++++++++++ src/KOKKOS/pair_yukawa_colloid_kokkos.h | 121 ++++++++++ 3 files changed, 394 insertions(+) create mode 100644 src/KOKKOS/pair_yukawa_colloid_kokkos.cpp create mode 100644 src/KOKKOS/pair_yukawa_colloid_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index ede766cbf8..766daaff19 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -361,6 +361,8 @@ action pair_vashishta_kokkos.cpp pair_vashishta.cpp action pair_vashishta_kokkos.h pair_vashishta.h action pair_yukawa_kokkos.cpp action pair_yukawa_kokkos.h +action pair_yukawa_colloid_kokkos.cpp pair_yukawa_colloid.cpp +action pair_yukawa_colloid_kokkos.h pair_yukawa_colloid.h action pair_zbl_kokkos.cpp action pair_zbl_kokkos.h action pppm_kokkos.cpp pppm.cpp diff --git a/src/KOKKOS/pair_yukawa_colloid_kokkos.cpp b/src/KOKKOS/pair_yukawa_colloid_kokkos.cpp new file mode 100644 index 0000000000..ca491a3800 --- /dev/null +++ b/src/KOKKOS/pair_yukawa_colloid_kokkos.cpp @@ -0,0 +1,271 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Trung Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_yukawa_colloid_kokkos.h" + +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "error.h" +#include "force.h" +#include "kokkos.h" +#include "memory_kokkos.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "respa.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +PairYukawaColloidKokkos::PairYukawaColloidKokkos(LAMMPS *lmp) : PairYukawaColloid(lmp) +{ + respa_enable = 0; + + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | RADIUS_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +PairYukawaColloidKokkos::~PairYukawaColloidKokkos() +{ + if (copymode) return; + + if (allocated) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + } +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairYukawaColloidKokkos::allocate() +{ + PairYukawaColloid::allocate(); + + int n = atom->ntypes; + memory->destroy(cutsq); + memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + k_params = Kokkos::DualView( + "PairYukawaColloid::params",n+1,n+1); + + params = k_params.template view(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +template +void PairYukawaColloidKokkos::init_style() +{ + PairYukawaColloid::init_style(); + + // error if rRESPA with inner levels + + if (update->whichflag == 1 && utils::strmatch(update->integrate_style,"^respa")) { + int respa = 0; + if (((Respa *) update->integrate)->level_inner >= 0) respa = 1; + if (((Respa *) update->integrate)->level_middle >= 0) respa = 2; + if (respa) + error->all(FLERR,"Cannot use Kokkos pair style with rRESPA inner/middle"); + } + + // adjust neighbor list request for KOKKOS + + neighflag = lmp->kokkos->neighflag; + auto request = neighbor->find_request(this); + request->set_kokkos_host(std::is_same::value && + !std::is_same::value); + request->set_kokkos_device(std::is_same::value); + if (neighflag == FULL) request->enable_full(); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ +// Rewrite this. +template +double PairYukawaColloidKokkos::init_one(int i, int j) +{ + double cutone = PairYukawaColloid::init_one(i,j); + + k_params.h_view(i,j).a = a[i][j]; + k_params.h_view(i,j).offset = offset[i][j]; + k_params.h_view(i,j).cutsq = cutone*cutone; + k_params.h_view(j,i) = k_params.h_view(i,j); + + if (i(); + k_params.template modify(); + + return cutone; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairYukawaColloidKokkos::compute(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + + ev_init(eflag,vflag,0); + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.view(); + } + if (vflag_atom) { + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom"); + d_vatom = k_vatom.view(); + } + + atomKK->sync(execution_space,datamask_read); + k_cutsq.template sync(); + k_params.template sync(); + if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); + else atomKK->modified(execution_space,F_MASK); + + x = atomKK->k_x.view(); + c_x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + radius = atomKK->k_radius.view(); + nlocal = atom->nlocal; + nall = atom->nlocal + atom->nghost; + newton_pair = force->newton_pair; + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + + // loop over neighbors of my atoms + + EV_FLOAT ev = pair_compute,void >( + this,(NeighListKokkos*)list); + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } +} + + + +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairYukawaColloidKokkos:: +compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype) const { + (void) i; + (void) j; + const F_FLOAT radi = radius[i]; + const F_FLOAT radj = radius[j]; + const F_FLOAT rr = sqrt(rsq); + // Fetch the params either off the stack or from some mapped memory? + const F_FLOAT aa = STACKPARAMS ? m_params[itype][jtype].a + : params(itype,jtype).a; + + // U = a * exp(-kappa*r-(radi+radj)) / kappa + // f = a * exp(-kappa*r) + // f/r = a * exp(-kappa*r) / r + const F_FLOAT rinv = 1.0 / rr; + const F_FLOAT rinv2 = rinv*rinv; + const F_FLOAT screening = exp(-kappa*(rr-(radi+radj))); + const F_FLOAT forceyukawa = aa * screening; + const F_FLOAT fpair = forceyukawa * rinv; + + return fpair; +} + +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairYukawaColloidKokkos:: +compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype) const { + (void) i; + (void) j; + const F_FLOAT radi = radius[i]; + const F_FLOAT radj = radius[j]; + const F_FLOAT rr = sqrt(rsq); + const F_FLOAT aa = STACKPARAMS ? m_params[itype][jtype].a + : params(itype,jtype).a; + const F_FLOAT offset = STACKPARAMS ? m_params[itype][jtype].offset + : params(itype,jtype).offset; + + // U = a * exp(-kappa*r) / kappa + const F_FLOAT rinv = 1.0 / rr; + const F_FLOAT screening = exp(-kappa*(rr-(radi+radj))); + + return aa / kappa * screening - offset; +} + + +namespace LAMMPS_NS { +template class PairYukawaColloidKokkos; +#ifdef LMP_KOKKOS_GPU +template class PairYukawaColloidKokkos; +#endif +} diff --git a/src/KOKKOS/pair_yukawa_colloid_kokkos.h b/src/KOKKOS/pair_yukawa_colloid_kokkos.h new file mode 100644 index 0000000000..060b621a8a --- /dev/null +++ b/src/KOKKOS/pair_yukawa_colloid_kokkos.h @@ -0,0 +1,121 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(yukawa/colloid/kk,PairYukawaColloidKokkos); +PairStyle(yukawa/colloid/kk/device,PairYukawaColloidKokkos); +PairStyle(yukawa/colloid/kk/host,PairYukawaColloidKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_PAIR_YUKAWA_COLLOID_KOKKOS_H +#define LMP_PAIR_YUKAWA_COLLOID_KOKKOS_H + +#include "pair_kokkos.h" +#include "pair_yukawa_colloid.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +template +class PairYukawaColloidKokkos : public PairYukawaColloid { + public: + enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF}; + enum {COUL_FLAG=0}; + typedef DeviceType device_type; + typedef ArrayTypes AT; + + PairYukawaColloidKokkos(class LAMMPS *); + ~PairYukawaColloidKokkos() override; + + void compute(int, int) override; + void init_style() override; + double init_one(int,int) override; + + struct params_yukawa { + KOKKOS_INLINE_FUNCTION + params_yukawa() { cutsq=0, a = 0; offset = 0; } + KOKKOS_INLINE_FUNCTION + params_yukawa(int /*i*/) { cutsq=0, a = 0; offset = 0; } + F_FLOAT cutsq, a, offset; + }; + + + protected: + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_ecoul(const F_FLOAT& /*rsq*/, const int& /*i*/, const int& /*j*/, + const int& /*itype*/, const int& /*jtype*/) const { return 0; } + + + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const_um params; + params_yukawa m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + typename AT::t_x_array_randomread x; + typename AT::t_x_array c_x; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread type; + typename AT::t_float_1d_randomread radius; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; + + int newton_pair; + double special_lj[4]; + + typename AT::tdual_ffloat_2d k_cutsq; + typename AT::t_ffloat_2d d_cutsq; + + + int neighflag; + int nlocal,nall,eflag,vflag; + + void allocate() override; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend EV_FLOAT pair_compute_neighlist( + PairYukawaColloidKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist( + PairYukawaColloidKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist( + PairYukawaColloidKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute( + PairYukawaColloidKokkos*,NeighListKokkos*); + friend void pair_virial_fdotr_compute(PairYukawaColloidKokkos*); + +}; + +} + +#endif +#endif + From 859012b192a4931d2d372dcfbe7799e887b2e0c3 Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Wed, 17 May 2023 17:13:07 +0200 Subject: [PATCH 0042/1002] Initial commit of an early version of anisotropic Langevin barostat. --- src/fix_press_langevin.cpp | 614 +++++++++++++++++++++++++++++++++++++ src/fix_press_langevin.h | 71 +++++ 2 files changed, 685 insertions(+) create mode 100644 src/fix_press_langevin.cpp create mode 100644 src/fix_press_langevin.h diff --git a/src/fix_press_langevin.cpp b/src/fix_press_langevin.cpp new file mode 100644 index 0000000000..246d2f08f1 --- /dev/null +++ b/src/fix_press_langevin.cpp @@ -0,0 +1,614 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Germain Clavier (TUe) +------------------------------------------------------------------------- */ + +#include "fix_press_langevin.h" + +#include "atom.h" +#include "comm.h" +#include "compute.h" +#include "domain.h" +#include "error.h" +#include "fix_deform.h" +#include "force.h" +#include "group.h" +#include "kspace.h" +#include "modify.h" +#include "random_mars.h" +#include "update.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +enum{NONE,XYZ,XY,YZ,XZ}; +enum{ISO,ANISO}; + +/* ---------------------------------------------------------------------- */ + +FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + id_press(nullptr), pflag(0), random(nullptr) +{ + if (narg < 5) error->all(FLERR,"Illegal fix press/langevin command"); + + // Langevin barostat applied every step + // For details on the equations of motion see: + // Grønbech-Jensen & Farago J. Chem. Phys. 141 194108 (2014) + + nevery = 1; + + // default values + + pcouple = NONE; + allremap = 1; + + // Alpha friction coefficient + p_fric = 1e-4; + // Target temperature + t_start = t_stop = t_target = 0.0; + + for (int i = 0; i < 3; i++) { + // Pressure and pistons mass Q + p_start[i] = p_stop[i] = p_period[i] = 0.0; + p_flag[i] = 0; + + // Pistons coordinates derivative V + p_deriv[i] = 0.0; + + // a and b values for each piston + gjfa[i] = 0.0; + gjfb[i] = 0.0; + + // Random value for each piston + fran[i] = 0.0; + } + + // process keywords + + dimension = domain->dimension; + + int iarg = 3; + + while (iarg < narg) { + if (strcmp(arg[iarg],"iso") == 0) { + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + pcouple = XYZ; + p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[0] = p_flag[1] = p_flag[2] = 1; + if (dimension == 2) { + p_start[2] = p_stop[2] = p_period[2] = 0.0; + p_flag[2] = 0; + } + iarg += 4; + } else if (strcmp(arg[iarg],"aniso") == 0) { + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + pcouple = NONE; + p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[0] = p_flag[1] = p_flag[2] = 1; + if (dimension == 2) { + p_start[2] = p_stop[2] = p_period[2] = 0.0; + p_flag[2] = 0; + } + iarg += 4; + + } else if (strcmp(arg[iarg],"x") == 0) { + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + p_start[0] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[0] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[0] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[0] = 1; + iarg += 4; + } else if (strcmp(arg[iarg],"y") == 0) { + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + p_start[1] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[1] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[1] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[1] = 1; + iarg += 4; + } else if (strcmp(arg[iarg],"z") == 0) { + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[2] = 1; + iarg += 4; + if (dimension == 2) + error->all(FLERR,"Invalid fix press/langevin for a 2d simulation"); + + } else if (strcmp(arg[iarg],"couple") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; + else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; + else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; + else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; + else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; + else error->all(FLERR,"Illegal fix press/langevin command"); + iarg += 2; + + } else if (strcmp(arg[iarg],"friction") == 0) { + if (iarg+3 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + p_fric = utils::numeric(FLERR,arg[iarg+1],false,lmp); + seed = utils::numeric(FLERR,arg[iarg+2],false,lmp); + if (p_fric <= 0.0) + error->all(FLERR,"Illegal fix press/langevin command"); + if (seed <= 0.0) + error->all(FLERR,"Illegal fix press/langevin command"); + iarg += 3; + } else if (strcmp(arg[iarg],"dilate") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; + else if (strcmp(arg[iarg+1],"partial") == 0) allremap = 0; + else error->all(FLERR,"Illegal fix press/langevin command"); + iarg += 2; + } else if (strcmp(arg[iarg], "temp") == 0) { + if (iarg+3 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); + t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); + iarg += 3; + } + + else error->all(FLERR,"Illegal fix press/langevin command"); + } + + if (allremap == 0) restart_pbc = 1; + + random = new RanMars(lmp, seed + comm->me); + + // error checks + + if (dimension == 2 && p_flag[2]) + error->all(FLERR,"Invalid fix press/langevin for a 2d simulation"); + if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) + error->all(FLERR,"Invalid fix press/langevin for a 2d simulation"); + + if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + + if (p_flag[0] && domain->xperiodic == 0) + error->all(FLERR, + "Cannot use fix press/langevin on a non-periodic dimension"); + if (p_flag[1] && domain->yperiodic == 0) + error->all(FLERR, + "Cannot use fix press/langevin on a non-periodic dimension"); + if (p_flag[2] && domain->zperiodic == 0) + error->all(FLERR, + "Cannot use fix press/langevin on a non-periodic dimension"); + + if (pcouple == XYZ && dimension == 3 && + (p_start[0] != p_start[1] || p_start[0] != p_start[2] || + p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || + p_period[0] != p_period[1] || p_period[0] != p_period[2])) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == XYZ && dimension == 2 && + (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || + p_period[0] != p_period[1])) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == XY && + (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || + p_period[0] != p_period[1])) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == YZ && + (p_start[1] != p_start[2] || p_stop[1] != p_stop[2] || + p_period[1] != p_period[2])) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + if (pcouple == XZ && + (p_start[0] != p_start[2] || p_stop[0] != p_stop[2] || + p_period[0] != p_period[2])) + error->all(FLERR,"Invalid fix press/langevin pressure settings"); + + if (t_start < 0.0) + error->all(FLERR,"Fix press/langevin temperature parameters must be >= 0.0"); + if (t_stop < 0.0) + error->all(FLERR,"Fix press/langevin temperature parameters must be >= 0.0"); + + if ((p_flag[0] && p_period[0] <= 0.0) || + (p_flag[1] && p_period[1] <= 0.0) || + (p_flag[2] && p_period[2] <= 0.0)) + error->all(FLERR,"Fix press/langevin damping parameters must be > 0.0"); + + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + + // pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof + // else pstyle = ANISO -> 3 dof + + if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO; + else pstyle = ANISO; + + // C1 + // Langevin GJF dynamics does NOT need a temperature compute + // This is stated explicitely in their paper. + // The temperature used for the pressure is NkT/V on purpose. + + // id = fix-ID + temp + // compute group = all since pressure is always global (group all) + // and thus its KE/temperature contribution should use group all + + // id_temp = utils::strdup(std::string(id) + "_temp"); + // modify->add_compute(fmt::format("{} all temp",id_temp)); + // tflag = 1; + + // C2 + // Following C1, the compute must use the virial pressure + // Kinetic contribution will be added by the fix style + // create a new compute pressure style + // id = fix-ID + press, compute group = all + // pass id_temp as 4th arg to pressure constructor + + id_press = utils::strdup(std::string(id) + "_press"); + modify->add_compute(fmt::format("{} all pressure NULL virial",id_press, id_temp)); + pflag = 1; + + for (int i = 0; i < 3; i++) { + gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); + gjfb[i] = 1./(1.0 + update->dt / 2.0 / p_period[i]); + } + + nrigid = 0; + rfix = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +FixPressLangevin::~FixPressLangevin() +{ + delete random; + delete[] rfix; + + // delete temperature and pressure if fix created them + + if (pflag) modify->delete_compute(id_press); + delete[] id_press; +} + +/* ---------------------------------------------------------------------- */ + +int FixPressLangevin::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= POST_FORCE; + mask |= END_OF_STEP; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::init() +{ + if (domain->triclinic) + error->all(FLERR,"Cannot use fix press/langevin with triclinic box"); + + // ensure no conflict with fix deform + + for (const auto &ifix : modify->get_fix_list()) + if (strcmp(ifix->style, "^deform") == 0) { + int *dimflag = static_cast(ifix)->dimflag; + if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || + (p_flag[2] && dimflag[2])) + error->all(FLERR,"Cannot use fix press/langevin and " + "fix deform on same component of stress tensor"); + } + + // set pressure ptr + + pressure = modify->get_compute_by_id(id_press); + if (!pressure) + error->all(FLERR, "Pressure compute ID {} for fix press/langevin does not exist", id_press); + + // Kspace setting + + if (force->kspace) kspace_flag = 1; + else kspace_flag = 0; + + // detect if any rigid fixes exist so rigid bodies move when box is remapped + // rfix[] = indices to each fix rigid + + delete[] rfix; + nrigid = 0; + rfix = nullptr; + + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->rigid_flag) nrigid++; + if (nrigid > 0) { + rfix = new int[nrigid]; + nrigid = 0; + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->rigid_flag) rfix[nrigid++] = i; + } +} + +/* ---------------------------------------------------------------------- + compute T,P before integrator starts +------------------------------------------------------------------------- */ + +void FixPressLangevin::setup(int /*vflag*/) +{ + // trigger virial computation on next timestep + + pressure->addstep(update->ntimestep+1); +} + +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::initial_integrate(int /* vflag */) +{ + // compute new V + + double dt; + double dl; + double displacement; + double delta = update->ntimestep - update->beginstep; + + // Compute new random term on pistons dynamics + if (delta != 0.0) delta /= update->endstep - update->beginstep; + t_target = t_start + delta * (t_stop-t_start); + couple_beta(t_target); + + dt = update->dt; + + for (int i = 0; i < 3; i++) { + if (p_flag[i]) { + // See equation 13 + displacement = dt*p_deriv[i]*gjfb[i]; + displacement += 0.5*dt*dt*f_piston[i]*gjfb[i]/p_period[i]; + displacement += 0.5*dt*fran[i]*gjfb[i]/p_period[i]; + dl = domain->boxhi[i] - domain->boxlo[i]; + dilation[i] = (dl + displacement)/dl; + } + } + + // remap simulation box and atoms + // redo KSpace coeffs since volume has changed + + remap(); + if (kspace_flag) force->kspace->setup(); + +} + +/* ---------------------------------------------------------------------- */ +void FixPressLangevin::post_force(int /*vflag*/) +{ + // compute new forces on pistons after internal virial computation + + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + + // Compute current pressure tensor and add kinetic term + if (pstyle == ISO) { + pressure->compute_scalar(); + } else { + pressure->compute_vector(); + } + + couple_pressure(); + couple_kinetic(t_target); + + for (int i = 0; i < 3; i++) { + if (p_flag[i]) { + f_old_piston[i] = f_piston[i]; + p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]); + f_piston[i] = p_current[i] - p_target[i]; + } + } + + // trigger virial computation on next timestep + + pressure->addstep(update->ntimestep+1); +} + +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::end_of_step() +{ + // compute pistons velocity + + double dt; + dt = update->dt; + + for (int i = 0; i < 3; i++) { + if (p_flag[i]) { + p_deriv[i] *= gjfa[i]; + p_deriv[i] += 0.5*dt*(gjfa[i]*f_old_piston[i]+f_piston[i])/p_period[i]; + p_deriv[i] += fran[i]*gjfb[i]/p_period[i]; + } + } + +} + +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::couple_pressure() +{ + double *tensor = pressure->vector; + + if (pstyle == ISO) + p_current[0] = p_current[1] = p_current[2] = pressure->scalar; + else if (pcouple == XYZ) { + double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]); + p_current[0] = p_current[1] = p_current[2] = ave; + } else if (pcouple == XY) { + double ave = 0.5 * (tensor[0] + tensor[1]); + p_current[0] = p_current[1] = ave; + p_current[2] = tensor[2]; + } else if (pcouple == YZ) { + double ave = 0.5 * (tensor[1] + tensor[2]); + p_current[1] = p_current[2] = ave; + p_current[0] = tensor[0]; + } else if (pcouple == XZ) { + double ave = 0.5 * (tensor[0] + tensor[2]); + p_current[0] = p_current[2] = ave; + p_current[1] = tensor[1]; + } else { + p_current[0] = tensor[0]; + p_current[1] = tensor[1]; + p_current[2] = tensor[2]; + } +} +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::couple_kinetic(double t_target) +{ + double Pk, volume; + + // Kinetic part + if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd; + else volume = domain->xprd * domain->yprd; + + Pk = atom->natoms*force->boltz*t_target/volume; + + p_current[0] += Pk; + p_current[1] += Pk; + if (dimension == 3) p_current[2] += Pk; +} + +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::couple_beta(double t_target) +{ + double gamma; + int me = comm->me; + + gamma = sqrt(2.0*force->boltz*update->dt*p_fric*t_target); + + fran[0] = fran[1] = fran[2] = 0.0; + if (me == 0) { + if (pstyle == ISO) + fran[0] = fran[1] = fran[2] = gamma*random->gaussian(); + else if (pcouple == XYZ) { + fran[0] = fran[1] = fran[2] = gamma*random->gaussian(); + } else if (pcouple == XY) { + fran[0] = fran[1] = gamma*random->gaussian(); + fran[2] = gamma*random->gaussian(); + } else if (pcouple == YZ) { + fran[1] = fran[2] = gamma*random->gaussian(); + fran[0] = gamma*random->gaussian(); + } else if (pcouple == XZ) { + fran[0] = fran[2] = gamma*random->gaussian(); + fran[1] = gamma*random->gaussian(); + } else { + fran[0] = gamma*random->gaussian(); + fran[1] = gamma*random->gaussian(); + fran[2] = gamma*random->gaussian(); + } + } + MPI_Bcast(&fran, 3, MPI_DOUBLE, 0, world); +} + +/* ---------------------------------------------------------------------- + change box size + remap all atoms or fix group atoms depending on allremap flag + if rigid bodies exist, scale rigid body centers-of-mass +------------------------------------------------------------------------- */ + +void FixPressLangevin::remap() +{ + int i; + double oldlo,oldhi,ctr; + + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + // convert pertinent atoms and rigid bodies to lamda coords + + if (allremap) domain->x2lamda(nlocal); + else { + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + domain->x2lamda(x[i],x[i]); + } + + if (nrigid) + for (i = 0; i < nrigid; i++) + modify->fix[rfix[i]]->deform(0); + + // reset global and local box to new size/shape + + for (i = 0; i < 3; i++) { + if (p_flag[i]) { + oldlo = domain->boxlo[i]; + oldhi = domain->boxhi[i]; + ctr = 0.5 * (oldlo + oldhi); + domain->boxlo[i] = (oldlo-ctr)*dilation[i] + ctr; + domain->boxhi[i] = (oldhi-ctr)*dilation[i] + ctr; + } + } + + domain->set_global_box(); + domain->set_local_box(); + + // convert pertinent atoms and rigid bodies back to box coords + + if (allremap) domain->lamda2x(nlocal); + else { + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + domain->lamda2x(x[i],x[i]); + } + + if (nrigid) + for (i = 0; i < nrigid; i++) + modify->fix[rfix[i]]->deform(1); +} + +/* ---------------------------------------------------------------------- */ + +int FixPressLangevin::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0],"press") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + if (pflag) { + modify->delete_compute(id_press); + pflag = 0; + } + delete[] id_press; + id_press = utils::strdup(arg[1]); + + pressure = modify->get_compute_by_id(arg[1]); + if (pressure) error->all(FLERR,"Could not find fix_modify pressure compute ID: {}", arg[1]); + if (pressure->pressflag == 0) + error->all(FLERR,"Fix_modify pressure compute {} does not compute pressure", arg[1]); + return 2; + } + return 0; +} diff --git a/src/fix_press_langevin.h b/src/fix_press_langevin.h new file mode 100644 index 0000000000..a0ea8bbd5a --- /dev/null +++ b/src/fix_press_langevin.h @@ -0,0 +1,71 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(press/langevin,FixPressLangevin); +// clang-format on +#else + +#ifndef LMP_FIX_PRESS_LANGEVIN_H +#define LMP_FIX_PRESS_LANGEVIN_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixPressLangevin : public Fix { + public: + FixPressLangevin(class LAMMPS *, int, char **); + ~FixPressLangevin() override; + int setmask() override; + void init() override; + void setup(int) override; + void initial_integrate(int) override; + void post_force(int) override; + void end_of_step() override; + int modify_param(int, char **) override; + + protected: + int dimension, which; + + int pstyle, pcouple, allremap; + int p_flag[3]; // 1 if control P on this dim, 0 if not + double t_start, t_stop, t_target; + double p_fric; + double p_start[3], p_stop[3], p_current[3]; + double p_period[3], p_target[3]; + double p_deriv[3], dilation[3]; + double f_piston[3], f_old_piston[3]; + double gjfa[3], gjfb[3], fran[3]; + int kspace_flag; // 1 if KSpace invoked, 0 if not + int nrigid; // number of rigid fixes + int *rfix; // indices of rigid fixes + + char *id_temp, *id_press; + class Compute *temperature, *pressure; + int pflag; + + class RanMars *random; + int seed; + + void couple_pressure(); + void couple_kinetic(double ); + void couple_beta(double ); + void remap(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif From 1c33aec5dc64d0da59368d42a81b71679ca011cc Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Wed, 17 May 2023 18:28:49 +0200 Subject: [PATCH 0043/1002] Wrote the documentation for fix_press_langevin --- doc/src/Commands_fix.rst | 1 + doc/src/fix.rst | 1 + doc/src/fix_press_langevin.rst | 230 +++++++++++++++++++++++++++++++++ 3 files changed, 232 insertions(+) create mode 100644 doc/src/fix_press_langevin.rst diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index c74b1fd037..f7b85a5d12 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -181,6 +181,7 @@ OPT. * :doc:`pour ` * :doc:`precession/spin ` * :doc:`press/berendsen ` + * :doc:`press/langevin ` * :doc:`print ` * :doc:`propel/self ` * :doc:`property/atom (k) ` diff --git a/doc/src/fix.rst b/doc/src/fix.rst index 8cee9dd687..c4abbd6c21 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -333,6 +333,7 @@ accelerated styles exist. * :doc:`pour ` - pour new atoms/molecules into a granular simulation domain * :doc:`precession/spin ` - apply a precession torque to each magnetic spin * :doc:`press/berendsen ` - pressure control by Berendsen barostat +* :doc:`press/langevin ` - pressure control by Langevin barostat * :doc:`print ` - print text and variables during a simulation * :doc:`propel/self ` - model self-propelled particles * :doc:`property/atom ` - add customized per-atom values diff --git a/doc/src/fix_press_langevin.rst b/doc/src/fix_press_langevin.rst new file mode 100644 index 0000000000..cb46d2b7d9 --- /dev/null +++ b/doc/src/fix_press_langevin.rst @@ -0,0 +1,230 @@ +.. index:: fix press/langevin + +fix press/langevin command +=========================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID press/langevin keyword value ... + +* ID, group-ID are documented in :doc:`fix ` command +* press/langevin = style name of this fix command + + .. parsed-literal:: + + one or more keyword value pairs may be appended + keyword = *iso* or *aniso* or *x* or *y* or *z* or *couple* or *dilate* or *modulus* or *temp* + *iso* or *aniso* values = Pstart Pstop Pdamp + Pstart,Pstop = scalar external pressure at start/end of run (pressure units) + Pdamp = pressure damping parameter + *x* or *y* or *z* values = Pstart Pstop Pdamp + Pstart,Pstop = external stress tensor component at start/end of run (pressure units) + Pdamp = stress damping parameter + *couple* = *none* or *xyz* or *xy* or *yz* or *xz* + *friction* value = Friction to apply to the barostat + *temp* values = Tstart, Tstop + Tstart, Tstop = target temperature used for the barostat at start/end of run + *dilate* value = *all* or *partial* + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all press/langevin iso 0.0 0.0 1000.0 temp 300 300 + fix 2 all press/langevin aniso 0.0 0.0 1000.0 temp 100 300 dilate partial + +Description +""""""""""" + +Reset the pressure of the system by using a Langevin stochastic barostat +:ref:`(Grønbech) `, which rescales the system volume and +(optionally) the atoms coordinates within the simulation box every +timestep. + +The Langevin barostat couple each direction *L* with a pseudo-particle that obeys +the Langevin equation such as: + +.. math:: + + f_P = & \frac{N k_B T_{target}}{V} + \frac{1}{V d}\sum_{i=1}^{N} \vec r_i \cdot \vec f_i - P_{target} \\ + Q\ddot{L} + \alpha{}\dot{L} = & f_P + \beta(t)\\ + L^{n+1} = & L^{n} + bdt\dot{L}^{n} \frac{bdt^{2}}{2Q} \\ + \dot{L}^{n+1} = & \alpha\dot{L}^{n} + \frac{dt}{2Q}\left(a f^{n}_{P} + f^{n+1}_{P}\right) + \frac{b}{Q}\beta^{n+1} \\ + a = & \frac{1-\frac{\alpha{}dt}{2Q}}{1+\frac{\alpha{}dt}{2Q}} \\ + b = & \frac{1}{1+\frac{\alpha{}dt}{2Q}} \\ + \left< \beta(t)\beta(t') \right> = & 2\alpha k_B Tdt + +Where :math:`dt` is the timestep :math:`\dot{L}` and :math:`\ddot{L}` the first +and second derivatives of the coupled direction with regard to time, +:math:`\alpha` is a friction coefficient, :math:`\beta` is a random gaussian +variable and :math:`Q` the effective mass of the coupled pseudoparticle. The +two first terms on the righthand side of the first equation are the virial +expression of the canonical pressure. It is to be noted that the temperature +used to compute the pressure is not the velocity of the atom but the canonical +target temperature directly. This temperature is specified using the *temp* +keyword parameter and should be close to the current target temperature of the +system. + +Regardless of what atoms are in the fix group, a global pressure is +computed for all atoms. Similarly, when the size of the simulation +box is changed, all atoms are re-scaled to new positions, unless the +keyword *dilate* is specified with a value of *partial*, in which case +only the atoms in the fix group are re-scaled. The latter can be +useful for leaving the coordinates of atoms in a solid substrate +unchanged and controlling the pressure of a surrounding fluid. + +.. note:: + + Unlike the :doc:`fix npt ` or :doc:`fix nph ` commands which + perform Nose/Hoover barostatting AND time integration, this fix does NOT + perform time integration of the atoms but only of the barostat coupled + coordinate. It then only modifies the box size and atom coordinates to + effect barostatting. Thus you must use a separate time integration fix, + like :doc:`fix nve ` or :doc:`fix nvt ` to actually update + the positions and velocities of atoms. This fix can be used in conjunction + with thermostatting fixes to control the temperature, such as :doc:`fix nvt + ` or :doc:`fix langevin ` or :doc:`fix temp/berendsen + `. + +See the :doc:`Howto barostat ` page for a +discussion of different ways to perform barostatting. + +---------- + +The barostat is specified using one or more of the *iso*, *aniso*, +*x*, *y*, *z*, and *couple* keywords. These keywords give you the +ability to specify the 3 diagonal components of an external stress +tensor, and to couple various of these components together so that the +dimensions they represent are varied together during a +constant-pressure simulation. Unlike the :doc:`fix npt ` and +:doc:`fix nph ` commands, this fix cannot be used with triclinic +(non-orthogonal) simulation boxes to control all 6 components of the +general pressure tensor. + +The target pressures for each of the 3 diagonal components of the +stress tensor can be specified independently via the *x*, *y*, *z*, +keywords, which correspond to the 3 simulation box dimensions. For +each component, the external pressure or tensor component at each +timestep is a ramped value during the run from *Pstart* to *Pstop*\ . +If a target pressure is specified for a component, then the +corresponding box dimension will change during a simulation. For +example, if the *y* keyword is used, the y-box length will change. A +box dimension will not change if that component is not specified, +although you have the option to change that dimension via the :doc:`fix deform ` command. + +For all barostat keywords, the *Pdamp* parameter determines the "mass" of the +pseudo particle acting as a barostat. The relation is such that :math:`P_{damp} += \frac{1}{Q}` where Q is the mass. + +---------- + +The *couple* keyword allows two or three of the diagonal components of +the pressure tensor to be "coupled" together. The value specified +with the keyword determines which are coupled. For example, *xz* +means the *Pxx* and *Pzz* components of the stress tensor are coupled. +*Xyz* means all 3 diagonal components are coupled. Coupling means two +things: the instantaneous stress will be computed as an average of the +corresponding diagonal components, and the coupled box dimensions will +be changed together in lockstep, meaning coupled dimensions will be +dilated or contracted by the same percentage every timestep. The +*Pstart*, *Pstop*, *Pdamp* parameters for any coupled dimensions must +be identical. *Couple xyz* can be used for a 2d simulation; the *z* +dimension is simply ignored. + +---------- + +The *iso* and *aniso* keywords are simply shortcuts that are +equivalent to specifying several other keywords together. + +The keyword *iso* means couple all 3 diagonal components together when +pressure is computed (hydrostatic pressure), and dilate/contract the +dimensions together. Using "iso Pstart Pstop Pdamp" is the same as +specifying these 4 keywords: + +.. parsed-literal:: + + x Pstart Pstop Pdamp + y Pstart Pstop Pdamp + z Pstart Pstop Pdamp + couple xyz + +The keyword *aniso* means *x*, *y*, and *z* dimensions are controlled +independently using the *Pxx*, *Pyy*, and *Pzz* components of the +stress tensor as the driving forces, and the specified scalar external +pressure. Using "aniso Pstart Pstop Pdamp" is the same as specifying +these 4 keywords: + +.. parsed-literal:: + + x Pstart Pstop Pdamp + y Pstart Pstop Pdamp + z Pstart Pstop Pdamp + couple none + +---------- + +This fix computes pressure each timestep. To do +this, the fix creates its own computes of style "pressure", +as if this command had been issued: + +.. code-block:: LAMMPS + + compute fix-ID_press group-ID pressure fix-ID_NULL virial + +See the :doc:`compute pressure ` command for details. Note +that the IDs of the new compute is the fix-ID + underscore + "press" and the +group for the new computes is the same as the fix group. + +Note that this is NOT the compute used by thermodynamic output (see +the :doc:`thermo_style ` command) with ID = *thermo_press*. +This means you can change the attributes of this fix's pressure via the +:doc:`compute_modify ` command or print this temperature +or pressure during thermodynamic output via the :doc:`thermo_style custom ` command using the appropriate compute-ID. +It also means that changing attributes of *thermo_temp* or +*thermo_press* will have no effect on this fix. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +No information about this fix is written to :doc:`binary restart files `. + +The :doc:`fix_modify ` *press* option is +supported by this fix. You can use it to assign a +:doc:`compute ` you have defined to this fix which will be used +in its pressure calculations. + +No global or per-atom quantities are stored by this fix for access by +various :doc:`output commands `. + +This fix can ramp its target pressure over multiple runs, using the +*start* and *stop* keywords of the :doc:`run ` command. See the +:doc:`run ` command for details of how to do this. + +This fix is not invoked during :doc:`energy minimization `. + +Restrictions +"""""""""""" + +Any dimension being adjusted by this fix must be periodic. + +Related commands +"""""""""""""""" + +:doc:`fix nve `, :doc:`fix nph `, :doc:`fix npt `, :doc:`fix langevin `, +:doc:`fix_modify ` + +Default +""""""" + +The keyword defaults are dilate = all, friction = 0.0001 in units of +pressure for whatever :doc:`units ` are defined. + +---------- + +.. _Grønbech: + +**(Grønbech)** Grønbech-Jensen, Farago, J Chem Phys, 141, 194108 (2014). From ab925000fe4a0da5dffcd14b1be897c20a039c75 Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Fri, 19 May 2023 16:34:42 +0200 Subject: [PATCH 0044/1002] Added triclinic and relative remap functions to press/langevin files --- src/fix_press_langevin.cpp | 235 +++++++++++++++++++++++++++++++++---- src/fix_press_langevin.h | 18 ++- 2 files changed, 224 insertions(+), 29 deletions(-) diff --git a/src/fix_press_langevin.cpp b/src/fix_press_langevin.cpp index 246d2f08f1..0848cc9ab6 100644 --- a/src/fix_press_langevin.cpp +++ b/src/fix_press_langevin.cpp @@ -26,6 +26,7 @@ #include "fix_deform.h" #include "force.h" #include "group.h" +#include "irregular.h" #include "kspace.h" #include "modify.h" #include "random_mars.h" @@ -37,14 +38,17 @@ using namespace LAMMPS_NS; using namespace FixConst; +#define DELTAFLIP 0.1 +#define TILTMAX 1.5 + enum{NONE,XYZ,XY,YZ,XZ}; -enum{ISO,ANISO}; +enum{ISO,ANISO,TRICLINIC}; /* ---------------------------------------------------------------------- */ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), - id_press(nullptr), pflag(0), random(nullptr) + id_press(nullptr), pflag(0), random(nullptr), irregular(nullptr) { if (narg < 5) error->all(FLERR,"Illegal fix press/langevin command"); @@ -58,13 +62,15 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : pcouple = NONE; allremap = 1; + pre_exchange_flag = 0; + flipflag = 1; // Alpha friction coefficient p_fric = 1e-4; // Target temperature t_start = t_stop = t_target = 0.0; - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 6; i++) { // Pressure and pistons mass Q p_start[i] = p_stop[i] = p_period[i] = 0.0; p_flag[i] = 0; @@ -113,7 +119,28 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : p_flag[2] = 0; } iarg += 4; - + } else if (strcmp(arg[iarg],"tri") == 0) { + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix press/langevin command"); + pcouple = NONE; + p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[0] = p_flag[1] = p_flag[2] = 1; + p_start[3] = p_start[4] = p_start[5] = 0.0; + p_stop[3] = p_stop[4] = p_stop[5] = 0.0; + p_period[3] = p_period[4] = p_period[5] = + utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[3] = p_flag[4] = p_flag[5] = 1; + if (dimension == 2) { + p_start[2] = p_stop[2] = p_period[2] = 0.0; + p_flag[2] = 0; + p_start[3] = p_stop[3] = p_period[3] = 0.0; + p_flag[3] = 0; + p_start[4] = p_stop[4] = p_period[4] = 0.0; + p_flag[4] = 0; + } + iarg += 4; } else if (strcmp(arg[iarg],"x") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/langevin command"); @@ -140,6 +167,37 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : iarg += 4; if (dimension == 2) error->all(FLERR,"Invalid fix press/langevin for a 2d simulation"); + } else if (strcmp(arg[iarg],"xy") == 0) { + if (iarg+4 > narg) utils::missing_cmd_args(FLERR, fmt::format("fix {} yz", style), error); + p_start[3] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[3] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[3] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[3] = 1; + iarg += 4; + if (dimension == 2) error->all(FLERR,"Invalid fix {} command for a 2d simulation", style); + + } else if (strcmp(arg[iarg],"xz") == 0) { + if (iarg+4 > narg) utils::missing_cmd_args(FLERR, fmt::format("fix {} xz", style), error); + p_start[4] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[4] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[4] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[4] = 1; + iarg += 4; + if (dimension == 2) error->all(FLERR,"Invalid fix {} command for a 2d simulation", style); + + } else if (strcmp(arg[iarg],"yz") == 0) { + if (iarg+4 > narg) utils::missing_cmd_args(FLERR, fmt::format("fix {} xy", style), error); + p_start[5] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[5] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[5] = utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_flag[5] = 1; + iarg += 4; + if (dimension == 2) error->all(FLERR,"Invalid fix {} command for a 2d simulation", style); + + } else if (strcmp(arg[iarg],"flip") == 0) { + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, fmt::format("fix {} flip", style), error); + flipflag = utils::logical(FLERR,arg[iarg+1],false,lmp); + iarg += 2; } else if (strcmp(arg[iarg],"couple") == 0) { if (iarg+2 > narg) @@ -212,6 +270,17 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR, "Cannot use fix press/langevin on a non-periodic dimension"); + // require periodicity in 2nd dim of off-diagonal tilt component + + if (p_flag[3] && domain->zperiodic == 0) + error->all(FLERR, "Cannot use fix {} on a 2nd non-periodic dimension", style); + if (p_flag[4] && domain->zperiodic == 0) + error->all(FLERR, "Cannot use fix {} on a 2nd non-periodic dimension", style); + if (p_flag[5] && domain->yperiodic == 0) + error->all(FLERR, "Cannot use fix {} on a 2nd non-periodic dimension", style); + if (!domain->triclinic && (p_flag[3] || p_flag[4] || p_flag[5])) + error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in fix {} with non-triclinic box", style); + if (pcouple == XYZ && dimension == 3 && (p_start[0] != p_start[1] || p_start[0] != p_start[2] || p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || @@ -234,26 +303,35 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : p_period[0] != p_period[2])) error->all(FLERR,"Invalid fix press/langevin pressure settings"); - if (t_start < 0.0) - error->all(FLERR,"Fix press/langevin temperature parameters must be >= 0.0"); - if (t_stop < 0.0) + if (t_start < 0.0 || t_stop < 0.0) error->all(FLERR,"Fix press/langevin temperature parameters must be >= 0.0"); if ((p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || - (p_flag[2] && p_period[2] <= 0.0)) + (p_flag[2] && p_period[2] <= 0.0) || + (p_flag[3] && p_period[3] <= 0.0) || + (p_flag[4] && p_period[4] <= 0.0) || + (p_flag[5] && p_period[5] <= 0.0)) error->all(FLERR,"Fix press/langevin damping parameters must be > 0.0"); - if (p_flag[0]) box_change |= BOX_CHANGE_X; - if (p_flag[1]) box_change |= BOX_CHANGE_Y; - if (p_flag[2]) box_change |= BOX_CHANGE_Z; - // pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof // else pstyle = ANISO -> 3 dof - if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO; + if (p_flag[3] || p_flag[4] || p_flag[5]) pstyle = TRICLINIC; + else if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO; else pstyle = ANISO; + // pre_exchange only required if flips can occur due to shape changes + + if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5])) + pre_exchange_flag = pre_exchange_migrate = 1; + if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 || + domain->xy != 0.0)) + pre_exchange_flag = pre_exchange_migrate = 1; + + if (pre_exchange_flag) irregular = new Irregular(lmp); + else irregular = nullptr; + // C1 // Langevin GJF dynamics does NOT need a temperature compute // This is stated explicitely in their paper. @@ -278,7 +356,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : modify->add_compute(fmt::format("{} all pressure NULL virial",id_press, id_temp)); pflag = 1; - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 6; i++) { gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); gjfb[i] = 1./(1.0 + update->dt / 2.0 / p_period[i]); } @@ -293,6 +371,8 @@ FixPressLangevin::~FixPressLangevin() { delete random; delete[] rfix; + delete irregular; + // delete temperature and pressure if fix created them @@ -308,6 +388,7 @@ int FixPressLangevin::setmask() mask |= INITIAL_INTEGRATE; mask |= POST_FORCE; mask |= END_OF_STEP; + if (pre_exchange_flag) mask |= PRE_EXCHANGE; return mask; } @@ -315,16 +396,14 @@ int FixPressLangevin::setmask() void FixPressLangevin::init() { - if (domain->triclinic) - error->all(FLERR,"Cannot use fix press/langevin with triclinic box"); - // ensure no conflict with fix deform for (const auto &ifix : modify->get_fix_list()) if (strcmp(ifix->style, "^deform") == 0) { int *dimflag = static_cast(ifix)->dimflag; if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || - (p_flag[2] && dimflag[2])) + (p_flag[2] && dimflag[2]) || (p_flag[3] && dimflag[3]) || + (p_flag[4] && dimflag[4]) || (p_flag[5] && dimflag[5])) error->all(FLERR,"Cannot use fix press/langevin and " "fix deform on same component of stress tensor"); } @@ -386,14 +465,15 @@ void FixPressLangevin::initial_integrate(int /* vflag */) dt = update->dt; - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 6; i++) { if (p_flag[i]) { // See equation 13 displacement = dt*p_deriv[i]*gjfb[i]; displacement += 0.5*dt*dt*f_piston[i]*gjfb[i]/p_period[i]; displacement += 0.5*dt*fran[i]*gjfb[i]/p_period[i]; dl = domain->boxhi[i] - domain->boxlo[i]; - dilation[i] = (dl + displacement)/dl; + if (i < 3) dilation[i] = (dl + displacement)/dl; + else dilation[i] = displacement; } } @@ -423,7 +503,7 @@ void FixPressLangevin::post_force(int /*vflag*/) couple_pressure(); couple_kinetic(t_target); - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 6; i++) { if (p_flag[i]) { f_old_piston[i] = f_piston[i]; p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]); @@ -445,7 +525,7 @@ void FixPressLangevin::end_of_step() double dt; dt = update->dt; - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 6; i++) { if (p_flag[i]) { p_deriv[i] *= gjfa[i]; p_deriv[i] += 0.5*dt*(gjfa[i]*f_old_piston[i]+f_piston[i])/p_period[i]; @@ -483,6 +563,9 @@ void FixPressLangevin::couple_pressure() p_current[1] = tensor[1]; p_current[2] = tensor[2]; } + p_current[3] = tensor[3]; + p_current[4] = tensor[4]; + p_current[5] = tensor[5]; } /* ---------------------------------------------------------------------- */ @@ -511,6 +594,7 @@ void FixPressLangevin::couple_beta(double t_target) gamma = sqrt(2.0*force->boltz*update->dt*p_fric*t_target); fran[0] = fran[1] = fran[2] = 0.0; + fran[3] = fran[4] = fran[5] = 0.0; if (me == 0) { if (pstyle == ISO) fran[0] = fran[1] = fran[2] = gamma*random->gaussian(); @@ -530,8 +614,11 @@ void FixPressLangevin::couple_beta(double t_target) fran[1] = gamma*random->gaussian(); fran[2] = gamma*random->gaussian(); } + fran[3] = gamma*random->gaussian(); + fran[4] = gamma*random->gaussian(); + fran[5] = gamma*random->gaussian(); } - MPI_Bcast(&fran, 3, MPI_DOUBLE, 0, world); + MPI_Bcast(&fran, 6, MPI_DOUBLE, 0, world); } /* ---------------------------------------------------------------------- @@ -574,6 +661,19 @@ void FixPressLangevin::remap() } } + if (p_flag[3]) domain->xy += dilation[3]; + if (p_flag[4]) domain->xz += dilation[4]; + if (p_flag[5]) domain->yz += dilation[5]; + + if (domain->yz < -TILTMAX*domain->yprd || + domain->yz > TILTMAX*domain->yprd || + domain->xz < -TILTMAX*domain->xprd || + domain->xz > TILTMAX*domain->xprd || + domain->xy < -TILTMAX*domain->xprd || + domain->xy > TILTMAX*domain->xprd) + error->all(FLERR,"Fix {} has tilted box too far in one step - " + "periodic cell is too far from equilibrium state", style); + domain->set_global_box(); domain->set_local_box(); @@ -591,6 +691,85 @@ void FixPressLangevin::remap() modify->fix[rfix[i]]->deform(1); } +/* ---------------------------------------------------------------------- + if any tilt ratios exceed limits, set flip = 1 and compute new tilt values + do not flip in x or y if non-periodic (can tilt but not flip) + this is b/c the box length would be changed (dramatically) by flip + if yz tilt exceeded, adjust C vector by one B vector + if xz tilt exceeded, adjust C vector by one A vector + if xy tilt exceeded, adjust B vector by one A vector + check yz first since it may change xz, then xz check comes after + if any flip occurs, create new box in domain + image_flip() adjusts image flags due to box shape change induced by flip + remap() puts atoms outside the new box back into the new box + perform irregular on atoms in lamda coords to migrate atoms to new procs + important that image_flip comes before remap, since remap may change + image flags to new values, making eqs in doc of Domain:image_flip incorrect +------------------------------------------------------------------------- */ + +void FixPressLangevin::pre_exchange() +{ + double xprd = domain->xprd; + double yprd = domain->yprd; + + // flip is only triggered when tilt exceeds 0.5 by DELTAFLIP + // this avoids immediate re-flipping due to tilt oscillations + + double xtiltmax = (0.5+DELTAFLIP)*xprd; + double ytiltmax = (0.5+DELTAFLIP)*yprd; + + int flipxy,flipxz,flipyz; + flipxy = flipxz = flipyz = 0; + + if (domain->yperiodic) { + if (domain->yz < -ytiltmax) { + domain->yz += yprd; + domain->xz += domain->xy; + flipyz = 1; + } else if (domain->yz >= ytiltmax) { + domain->yz -= yprd; + domain->xz -= domain->xy; + flipyz = -1; + } + } + + if (domain->xperiodic) { + if (domain->xz < -xtiltmax) { + domain->xz += xprd; + flipxz = 1; + } else if (domain->xz >= xtiltmax) { + domain->xz -= xprd; + flipxz = -1; + } + if (domain->xy < -xtiltmax) { + domain->xy += xprd; + flipxy = 1; + } else if (domain->xy >= xtiltmax) { + domain->xy -= xprd; + flipxy = -1; + } + } + + int flip = 0; + if (flipxy || flipxz || flipyz) flip = 1; + + if (flip) { + domain->set_global_box(); + domain->set_local_box(); + + domain->image_flip(flipxy,flipxz,flipyz); + + double **x = atom->x; + imageint *image = atom->image; + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]); + + domain->x2lamda(atom->nlocal); + irregular->migrate_atoms(); + domain->lamda2x(atom->nlocal); + } +} + /* ---------------------------------------------------------------------- */ int FixPressLangevin::modify_param(int narg, char **arg) @@ -612,3 +791,13 @@ int FixPressLangevin::modify_param(int narg, char **arg) } return 0; } + +/* ---------------------------------------------------------------------- */ + +void FixPressLangevin::reset_dt() +{ + for (int i=0; i<6; i++) { + gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); + gjfb[i] = sqrt(1.0 + update->dt / 2.0 / p_period[i]); + } +} diff --git a/src/fix_press_langevin.h b/src/fix_press_langevin.h index a0ea8bbd5a..b5a62d2646 100644 --- a/src/fix_press_langevin.h +++ b/src/fix_press_langevin.h @@ -31,23 +31,25 @@ class FixPressLangevin : public Fix { int setmask() override; void init() override; void setup(int) override; + void pre_exchange() override; void initial_integrate(int) override; void post_force(int) override; void end_of_step() override; + void reset_dt() override; int modify_param(int, char **) override; protected: int dimension, which; int pstyle, pcouple, allremap; - int p_flag[3]; // 1 if control P on this dim, 0 if not + int p_flag[6]; // 1 if control P on this dim, 0 if not double t_start, t_stop, t_target; double p_fric; - double p_start[3], p_stop[3], p_current[3]; - double p_period[3], p_target[3]; - double p_deriv[3], dilation[3]; - double f_piston[3], f_old_piston[3]; - double gjfa[3], gjfb[3], fran[3]; + double p_start[6], p_stop[6], p_current[6]; + double p_period[6], p_target[6]; + double p_deriv[6], dilation[6]; + double f_piston[6], f_old_piston[6]; + double gjfa[6], gjfb[6], fran[6]; int kspace_flag; // 1 if KSpace invoked, 0 if not int nrigid; // number of rigid fixes int *rfix; // indices of rigid fixes @@ -56,6 +58,10 @@ class FixPressLangevin : public Fix { class Compute *temperature, *pressure; int pflag; + int flipflag; + int pre_exchange_flag; // set if pre_exchange needed for box flips + class Irregular *irregular; // for migrating atoms after box flips + class RanMars *random; int seed; From 93402f61d82f99453317464491b5a3e058bcd30c Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Sat, 20 May 2023 08:58:52 +0200 Subject: [PATCH 0045/1002] Updated the documentation to include triclinic commands and other info. --- doc/src/fix_press_langevin.rst | 77 +++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/doc/src/fix_press_langevin.rst b/doc/src/fix_press_langevin.rst index cb46d2b7d9..9401e035a3 100644 --- a/doc/src/fix_press_langevin.rst +++ b/doc/src/fix_press_langevin.rst @@ -16,15 +16,15 @@ Syntax .. parsed-literal:: one or more keyword value pairs may be appended - keyword = *iso* or *aniso* or *x* or *y* or *z* or *couple* or *dilate* or *modulus* or *temp* - *iso* or *aniso* values = Pstart Pstop Pdamp + keyword = *iso* or *aniso* or *tri* *x* or *y* or *z* or *xy* or *xz* or *yz* or *couple* or *dilate* or *modulus* or *temp* + *iso* or *aniso* or *tri* values = Pstart Pstop Pdamp Pstart,Pstop = scalar external pressure at start/end of run (pressure units) Pdamp = pressure damping parameter - *x* or *y* or *z* values = Pstart Pstop Pdamp + *x* or *y* or *z* or *xy* or *xz* or *yz* values = Pstart Pstop Pdamp Pstart,Pstop = external stress tensor component at start/end of run (pressure units) Pdamp = stress damping parameter *couple* = *none* or *xyz* or *xy* or *yz* or *xz* - *friction* value = Friction to apply to the barostat + *friction* value = Alpha friction value to apply to the barostat *temp* values = Tstart, Tstop Tstart, Tstop = target temperature used for the barostat at start/end of run *dilate* value = *all* or *partial* @@ -95,26 +95,23 @@ discussion of different ways to perform barostatting. ---------- -The barostat is specified using one or more of the *iso*, *aniso*, -*x*, *y*, *z*, and *couple* keywords. These keywords give you the -ability to specify the 3 diagonal components of an external stress -tensor, and to couple various of these components together so that the -dimensions they represent are varied together during a -constant-pressure simulation. Unlike the :doc:`fix npt ` and -:doc:`fix nph ` commands, this fix cannot be used with triclinic -(non-orthogonal) simulation boxes to control all 6 components of the -general pressure tensor. +The barostat is specified using one or more of the *iso*, *aniso*, *tri* *x*, +*y*, *z*, *xy*, *xz*, *yz*, and *couple* keywords. These keywords give you the +ability to specify the 3 diagonal components of an external stress tensor, and +to couple various of these components together so that the dimensions they +represent are varied together during a constant-pressure simulation. -The target pressures for each of the 3 diagonal components of the -stress tensor can be specified independently via the *x*, *y*, *z*, -keywords, which correspond to the 3 simulation box dimensions. For -each component, the external pressure or tensor component at each -timestep is a ramped value during the run from *Pstart* to *Pstop*\ . -If a target pressure is specified for a component, then the -corresponding box dimension will change during a simulation. For -example, if the *y* keyword is used, the y-box length will change. A -box dimension will not change if that component is not specified, -although you have the option to change that dimension via the :doc:`fix deform ` command. +The target pressures for each of the 6 diagonal components of the stress tensor +can be specified independently via the *x*, *y*, *z*, keywords, which +correspond to the 3 simulation box dimensions, and the *xy*, *xz and *yz* +keywords which corresponds to the 3 simulqtion box tilt factors. For each +component, the external pressure or tensor component at each timestep is a +ramped value during the run from *Pstart* to *Pstop*\ . If a target pressure is +specified for a component, then the corresponding box dimension will change +during a simulation. For example, if the *y* keyword is used, the y-box length +will change. A box dimension will not change if that component is not +specified, although you have the option to change that dimension via the +:doc:`fix deform ` command. For all barostat keywords, the *Pdamp* parameter determines the "mass" of the pseudo particle acting as a barostat. The relation is such that :math:`P_{damp} @@ -137,7 +134,7 @@ dimension is simply ignored. ---------- -The *iso* and *aniso* keywords are simply shortcuts that are +The *iso*, *aniso* and *tri* keywords are simply shortcuts that are equivalent to specifying several other keywords together. The keyword *iso* means couple all 3 diagonal components together when @@ -165,6 +162,24 @@ these 4 keywords: z Pstart Pstop Pdamp couple none +The keyword *tri* is the same as *aniso* but also adds the control on the +shear pressure coupled with the tilt factors. + +.. parsed-literal:: + + x Pstart Pstop Pdamp + y Pstart Pstop Pdamp + z Pstart Pstop Pdamp + xy Pstart Pstop Pdamp + xz Pstart Pstop Pdamp + yz Pstart Pstop Pdamp + couple none + +---------- + +The *friction* keyword sets the friction parameter :math:`\alpha` in the +equations of movement of the barostat. All the barostat use the same value. + ---------- This fix computes pressure each timestep. To do @@ -173,7 +188,10 @@ as if this command had been issued: .. code-block:: LAMMPS - compute fix-ID_press group-ID pressure fix-ID_NULL virial + compute fix-ID_press group-ID pressure NULL virial + +The kinetic contribution to the pressure is taken as the ensemble value +:math:`\frac{Nk_bT}{V}` and computed by the fix itself. See the :doc:`compute pressure ` command for details. Note that the IDs of the new compute is the fix-ID + underscore + "press" and the @@ -200,9 +218,12 @@ in its pressure calculations. No global or per-atom quantities are stored by this fix for access by various :doc:`output commands `. -This fix can ramp its target pressure over multiple runs, using the -*start* and *stop* keywords of the :doc:`run ` command. See the -:doc:`run ` command for details of how to do this. +This fix can ramp its target pressure and temperature over multiple runs, using +the *start* and *stop* keywords of the :doc:`run ` command. See the +:doc:`run ` command for details of how to do this. It is recommended that +the ramped temperature is the same as the effective temperature of the +thermalised system. That is, if the system's temperature is ramped by other +commands, it is recommended to do the same with this pressure control. This fix is not invoked during :doc:`energy minimization `. From 68ec36b0068015f037ef9fcd0fcf1649bae1e31c Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Sat, 20 May 2023 09:16:30 +0200 Subject: [PATCH 0046/1002] Added the flip keyword to the documentation of fix_press_langevin. --- doc/src/fix_press_langevin.rst | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/src/fix_press_langevin.rst b/doc/src/fix_press_langevin.rst index 9401e035a3..01d66d08c6 100644 --- a/doc/src/fix_press_langevin.rst +++ b/doc/src/fix_press_langevin.rst @@ -16,13 +16,14 @@ Syntax .. parsed-literal:: one or more keyword value pairs may be appended - keyword = *iso* or *aniso* or *tri* *x* or *y* or *z* or *xy* or *xz* or *yz* or *couple* or *dilate* or *modulus* or *temp* + keyword = *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *xz* or *yz* or *couple* or *dilate* or *modulus* or *temp* or *flip* *iso* or *aniso* or *tri* values = Pstart Pstop Pdamp Pstart,Pstop = scalar external pressure at start/end of run (pressure units) Pdamp = pressure damping parameter *x* or *y* or *z* or *xy* or *xz* or *yz* values = Pstart Pstop Pdamp Pstart,Pstop = external stress tensor component at start/end of run (pressure units) Pdamp = stress damping parameter + *flip* value = *yes* or *no* = allow or disallow box flips when it becomes highly skewed *couple* = *none* or *xyz* or *xy* or *yz* or *xz* *friction* value = Alpha friction value to apply to the barostat *temp* values = Tstart, Tstop @@ -177,6 +178,20 @@ shear pressure coupled with the tilt factors. ---------- +The *flip* keyword allows the tilt factors for a triclinic box to +exceed half the distance of the parallel box length, as discussed +below. If the *flip* value is set to *yes*, the bound is enforced by +flipping the box when it is exceeded. If the *flip* value is set to +*no*, the tilt will continue to change without flipping. Note that if +applied stress induces large deformations (e.g. in a liquid), this +means the box shape can tilt dramatically and LAMMPS will run less +efficiently, due to the large volume of communication needed to +acquire ghost atoms around a processor's irregular-shaped subdomain. +For extreme values of tilt, LAMMPS may also lose atoms and generate an +error. + +---------- + The *friction* keyword sets the friction parameter :math:`\alpha` in the equations of movement of the barostat. All the barostat use the same value. From 74d89c4c9b417c7923af279e5bb09270ac993fbb Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Wed, 24 May 2023 11:07:03 -0600 Subject: [PATCH 0047/1002] init --- doc/src/compute_local_composition_atom.rst | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 doc/src/compute_local_composition_atom.rst diff --git a/doc/src/compute_local_composition_atom.rst b/doc/src/compute_local_composition_atom.rst new file mode 100644 index 0000000000..270783d749 --- /dev/null +++ b/doc/src/compute_local_composition_atom.rst @@ -0,0 +1,116 @@ +.. index:: compute ave/sphere/atom +.. index:: compute local_composition/atom/kk + +compute local_composition/atom command +================================ + +Accelerator Variants: *local_composition/atom/kk* + +Syntax +"""""" + +.. code-block:: LAMMPS + + compute ID group-ID local_composition/atom keyword values ... + +* ID, group-ID are documented in :doc:`compute ` command +* local_composition/atom = style name of this compute command +* one or more keyword/value pairs may be appended + + .. parsed-literal:: + + keyword = *cutoff* + *cutoff* value = distance cutoff + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all local_composition/atom + + compute 1 all local_composition/atom cutoff 9.0 + comm_modify cutoff 9.0 + +.. + ****** UNDER CONSTRUCTION ****** + Description + """"""""""" + + .. versionadded:: 24May2023 + + Define a computation that calculates the local composition for each atom based on its neighbors inside a spherical + cutoff. If an atom has :math:`M` neighbors, then its local mass density is + calculated as the sum of its mass and its :math:`M` neighbor masses, divided + by the volume of the cutoff sphere (or circle in 2d). The local + temperature of the atom is calculated as the temperature of the + collection of :math:`M+1` atoms, after subtracting the center-of-mass velocity + of the :math:`M+1` atoms from each of the :math:`M+1` atom's velocities. This + is effectively the thermal velocity of the neighborhood of the central + atom, similar to :doc:`compute temp/com `. + + The optional keyword *cutoff* defines the distance cutoff used when + searching for neighbors. The default value is the cutoff specified by + the pair style. If no pair style is defined, then a cutoff must be + defined using this keyword. If the specified cutoff is larger than + that of the pair_style plus neighbor skin (or no pair style is + defined), the *comm_modify cutoff* option must also be set to match + that of the *cutoff* keyword. + + The neighbor list needed to compute this quantity is constructed each + time the calculation is performed (i.e. each time a snapshot of atoms + is dumped). Thus it can be inefficient to compute/dump this quantity + too frequently. + + .. note:: + + If you have a bonded system, then the settings of + :doc:`special_bonds ` command can remove pairwise + interactions between atoms in the same bond, angle, or dihedral. + This is the default setting for the :doc:`special_bonds + ` command, and means those pairwise interactions do + not appear in the neighbor list. Because this compute uses the + neighbor list, it also means those pairs will not be included in + the order parameter. This difficulty can be circumvented by + writing a dump file, and using the :doc:`rerun ` command to + compute the order parameter for snapshots in the dump file. The + rerun script can use a :doc:`special_bonds ` command + that includes all pairs in the neighbor list. + + ---------- + + + .. include:: accel_styles.rst + + + ---------- + + Output info + """"""""""" + + This compute calculates a per-atom array with two columns: mass + density in density :doc:`units ` and temperature in temperature + :doc:`units `. + + These values can be accessed by any command that uses per-atom values + from a compute as input. See the :doc:`Howto output ` + doc page for an overview of LAMMPS output options. + + Restrictions + """""""""""" + + This compute is part of the EXTRA-COMPUTE package. It is only enabled + if LAMMPS was built with that package. See the :doc:`Build package + ` page for more info. + + Related commands + """""""""""""""" + + :doc:`comm_modify ` + + Default + """"""" + + The option defaults are *cutoff* = pair style cutoff. + +.. \ No newline at end of file From d9937fc2c635f993acbb9c68cbd811c7fbab1577 Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Wed, 24 May 2023 13:16:08 -0600 Subject: [PATCH 0048/1002] add base tested code --- .../compute_local_composition_atom.cpp | 255 ++++++++++++++++++ .../compute_local_composition_atom.h | 48 ++++ 2 files changed, 303 insertions(+) create mode 100644 src/EXTRA-COMPUTE/compute_local_composition_atom.cpp create mode 100644 src/EXTRA-COMPUTE/compute_local_composition_atom.h diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp b/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp new file mode 100644 index 0000000000..157b31b33d --- /dev/null +++ b/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp @@ -0,0 +1,255 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include "compute_local_composition_atom.h" + +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "math_const.h" +#include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +ComputeLocalCompositionAtom::ComputeLocalCompositionAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), result(nullptr) +{ + if (narg < 3 || narg > 5) error->all(FLERR, "Illegal compute local_composition/atom command"); + + // get nelements and ntypes + + int ntypes = atom->ntypes; + + // memory->create(map, ntypes + 1, "compute_sna_grid:map"); + // nelements = utils::inumeric(FLERR, 0, false, lmp); // !!!!!!!! what is 2nd arg in inumeric? + // for (int i = 0; i < ntypes; i++) { + // int jelem = utils::inumeric(FLERR, i, false, lmp); + // if (jelem < 0 || jelem >= nelements) error->all(FLERR, "Illegal compute {} command", style); + // map[i + 1] = jelem; + // printf("mapp[x] %d jelem %d \n", map[i + 1], jelem); + // } + + // printf("ntypes %d \n", ntypes); + // printf("elements %d \n", nelements); + + // process optional args + + cutoff = 0.0; + + int iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg], "cutoff") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal compute local_composition/atom command"); + cutoff = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + if (cutoff <= 0.0) error->all(FLERR, "Illegal compute local_composition/atom command"); + iarg += 2; + } else + error->all(FLERR, "Illegal compute local_composition/atom command"); + } + + peratom_flag = 1; + + size_peratom_cols = 1 + ntypes; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputeLocalCompositionAtom::~ComputeLocalCompositionAtom() +{ + if (copymode) return; + + memory->destroy(result); + // memory->destroy(map); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeLocalCompositionAtom::init() +{ + if (!force->pair && cutoff == 0.0) + error->all(FLERR, + "Compute local_composition/atom requires a cutoff be specified " + "or a pair style be defined"); + + double skin = neighbor->skin; + if (cutoff != 0.0) { + double cutghost; // as computed by Neighbor and Comm + if (force->pair) + cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); + else + cutghost = comm->cutghostuser; + + if (cutoff > cutghost) + error->all(FLERR, + "Compute local_composition/atom cutoff exceeds ghost atom range - " + "use comm_modify cutoff command"); + } + + int cutflag = 1; + if (force->pair) { + if (cutoff == 0.0) { cutoff = force->pair->cutforce; } + if (cutoff <= force->pair->cutforce + skin) cutflag = 0; + } + + cutsq = cutoff * cutoff; + if (domain->dimension == 3) + volume = 4.0 / 3.0 * MY_PI * cutsq * cutoff; + else + volume = MY_PI * cutsq; + + // need an occasional full neighbor list + + auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); + if (cutflag) req->set_cutoff(cutoff); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeLocalCompositionAtom::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeLocalCompositionAtom::compute_peratom() +{ + int i, j, ii, jj, inum, jnum; + double xtmp, ytmp, ztmp, delx, dely, delz, rsq; + int *ilist, *jlist, *numneigh, **firstneigh; + int count; + + invoked_peratom = update->ntimestep; + + // grow result array if necessary + + if (atom->nmax > nmax) { + memory->destroy(result); + nmax = atom->nmax; + + // TODO what is the LAMMPSIAN, idiomatic way to get correct num cols assigned here for memory? + // TODO is there any reason not to use size_peratom_cols? + + // orig from compute_ave_sphere_atom: + // memory->create(result, nmax, 2, "local_composition/atom:result"); + memory->create(result, nmax, size_peratom_cols, "local_composition/atom:result"); + array_atom = result; + } + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // compute properties for each atom in group + // use full neighbor list to count atoms less than cutoff + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + + int typeone_i, typeone_j; + + // TODO what is LAMMPSian way to get ntypes info here + // TODO continue to implement map (nelements instead of ntypes) + + int ntypes = atom->ntypes; + + // TODO what is LAMMPSian/c++ way to init and populate array + + double lcomp[ntypes]; + for (int i = 0; i < ntypes; i++) { + lcomp[i] = 0; + } + + // get per-atom local compositions + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + + if (mask[i] & groupbit) { + + typeone_i = type[i]; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // i atom contribution + + count = 1; + + typeone_i = type[i]; + lcomp[typeone_i - 1]++; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + typeone_j = type[j]; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + if (rsq < cutsq) { + count++; + lcomp[typeone_j-1]++; + } + } + + // total count of atoms found in sampled radius range + + result[i][0] = count; + + // local composition fractions per element + for (int n = 0; n < ntypes; n++) { + result[i][n + 1] = lcomp[n] / count; + } + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeLocalCompositionAtom::memory_usage() +{ + double bytes = (double) 2 * nmax * sizeof(double); + return bytes; +} diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.h b/src/EXTRA-COMPUTE/compute_local_composition_atom.h new file mode 100644 index 0000000000..fb8c8b6c49 --- /dev/null +++ b/src/EXTRA-COMPUTE/compute_local_composition_atom.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(local_composition/atom,ComputeLocalCompositionAtom); +// clang-format on +#else + +#ifndef LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_H +#define LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeLocalCompositionAtom : public Compute { + public: + ComputeLocalCompositionAtom(class LAMMPS *, int, char **); + ~ComputeLocalCompositionAtom() override; + void init() override; + void init_list(int, class NeighList *) override; + void compute_peratom() override; + double memory_usage() override; + + protected: + int nmax; + double cutoff, cutsq, volume, nelements; + int *map; // map types to [0,nelements), taken from example in compute_snap + class NeighList *list; + + double **result; +}; + +} // namespace LAMMPS_NS + +#endif +#endif From a0a0812ebfb996c7f71ec34c5b3e6b6fd384f3b5 Mon Sep 17 00:00:00 2001 From: Aidan Thompson Date: Wed, 24 May 2023 14:33:34 -0600 Subject: [PATCH 0049/1002] Added link to fix press/berendsen and fixed minor typos --- doc/src/fix_press_langevin.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/fix_press_langevin.rst b/doc/src/fix_press_langevin.rst index 01d66d08c6..f7f0f04e9f 100644 --- a/doc/src/fix_press_langevin.rst +++ b/doc/src/fix_press_langevin.rst @@ -104,8 +104,8 @@ represent are varied together during a constant-pressure simulation. The target pressures for each of the 6 diagonal components of the stress tensor can be specified independently via the *x*, *y*, *z*, keywords, which -correspond to the 3 simulation box dimensions, and the *xy*, *xz and *yz* -keywords which corresponds to the 3 simulqtion box tilt factors. For each +correspond to the 3 simulation box dimensions, and the *xy*, *xz* and *yz* +keywords which corresponds to the 3 simulation box tilt factors. For each component, the external pressure or tensor component at each timestep is a ramped value during the run from *Pstart* to *Pstop*\ . If a target pressure is specified for a component, then the corresponding box dimension will change @@ -250,6 +250,7 @@ Any dimension being adjusted by this fix must be periodic. Related commands """""""""""""""" +:doc:`fix press/berendsen `, :doc:`fix nve `, :doc:`fix nph `, :doc:`fix npt `, :doc:`fix langevin `, :doc:`fix_modify ` From 40056e29a47a617a3da1a1b3b4627ef0f4f7ffd2 Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Thu, 25 May 2023 11:58:02 -0600 Subject: [PATCH 0050/1002] move reset of lcomp array to correct scope --- .../compute_local_composition_atom.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp b/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp index 157b31b33d..5aeb04c33e 100644 --- a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp @@ -154,12 +154,6 @@ void ComputeLocalCompositionAtom::compute_peratom() if (atom->nmax > nmax) { memory->destroy(result); nmax = atom->nmax; - - // TODO what is the LAMMPSIAN, idiomatic way to get correct num cols assigned here for memory? - // TODO is there any reason not to use size_peratom_cols? - - // orig from compute_ave_sphere_atom: - // memory->create(result, nmax, 2, "local_composition/atom:result"); memory->create(result, nmax, size_peratom_cols, "local_composition/atom:result"); array_atom = result; } @@ -182,21 +176,20 @@ void ComputeLocalCompositionAtom::compute_peratom() int typeone_i, typeone_j; - // TODO what is LAMMPSian way to get ntypes info here // TODO continue to implement map (nelements instead of ntypes) int ntypes = atom->ntypes; - - // TODO what is LAMMPSian/c++ way to init and populate array double lcomp[ntypes]; - for (int i = 0; i < ntypes; i++) { - lcomp[i] = 0; - } // get per-atom local compositions for (ii = 0; ii < inum; ii++) { + + for (int i = 0; i < ntypes; i++) { + lcomp[i] = 0; + } + i = ilist[ii]; if (mask[i] & groupbit) { From 1124f7eb93ca7544aaaacb99cdb808e99956c5d7 Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Wed, 31 May 2023 13:32:37 -0600 Subject: [PATCH 0051/1002] adjust to one-liner --- src/EXTRA-COMPUTE/compute_local_composition_atom.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp b/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp index 5aeb04c33e..ba3e40d8c8 100644 --- a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp @@ -186,16 +186,12 @@ void ComputeLocalCompositionAtom::compute_peratom() for (ii = 0; ii < inum; ii++) { - for (int i = 0; i < ntypes; i++) { - lcomp[i] = 0; - } + for (int i = 0; i < ntypes; i++) lcomp[i] = 0; i = ilist[ii]; if (mask[i] & groupbit) { - typeone_i = type[i]; - xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; From 90e84a6ff8d5f0d3644a3b4d1c490f3cf043137b Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Wed, 31 May 2023 13:32:52 -0600 Subject: [PATCH 0052/1002] set up basic KOKKOS file (untested) --- src/KOKKOS/compute_local_composition_atom.cpp | 188 ++++++++++++++++++ src/KOKKOS/compute_local_composition_atom.h | 69 +++++++ 2 files changed, 257 insertions(+) create mode 100644 src/KOKKOS/compute_local_composition_atom.cpp create mode 100644 src/KOKKOS/compute_local_composition_atom.h diff --git a/src/KOKKOS/compute_local_composition_atom.cpp b/src/KOKKOS/compute_local_composition_atom.cpp new file mode 100644 index 0000000000..1c52d6c948 --- /dev/null +++ b/src/KOKKOS/compute_local_composition_atom.cpp @@ -0,0 +1,188 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU Gdirectoryeneral Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include "compute_local_composition_kokkos.h" + +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "memory_kokkos.h" +#include "modify.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor_kokkos.h" +#include "pair.h" +#include "update.h" + +#include +#include + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +ComputeLocalCompositionKokkos::ComputeLocalCompositionKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeLocalComposition(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +ComputeLocalCompositionKokkos::~ComputeLocalCompositionKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_result,result); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeLocalCompositionKokkos::init() +{ + ComputeLocalComposition::init(); + + // adjust neighbor list request for KOKKOS + + auto request = neighbor->find_request(this); + request->set_kokkos_host(std::is_same::value && + !std::is_same::value); + request->set_kokkos_device(std::is_same::value); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeLocalCompositionKokkos::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow result array if necessary + + if (atom->nmax > nmax) { + memoryKK->destroy_kokkos(k_result,result); + nmax = atom->nmax; + memoryKK->create_kokkos(k_result,result,nmax,2,"local_composition/atom:result"); + d_result = k_result.view(); + array_atom = result; + } + + // // need velocities of ghost atoms + + // atomKK->sync(Host,V_MASK); + // comm->forward_comm(this); + // atomKK->modified(Host,V_MASK); + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + int inum = list->inum; + + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + // compute properties for each atom in group + // use full neighbor list to count atoms less than cutoff + + atomKK->sync(execution_space,X_MASK|V_MASK|RMASS_MASK|TYPE_MASK|MASK_MASK); + x = atomKK->k_x.view(); + type = atomKK->k_type.view(); + ntypes = atomKK->k_ntypes.view(); + mask = atomKK->k_mask.view(); + + Kokkos::deep_copy(d_result,0.0); + + copymode = 1; + typename Kokkos::RangePolicy policy(0,inum); + Kokkos::parallel_for("ComputeLocalComposition",policy,*this); + copymode = 0; + + k_result.modify(); + k_result.sync_host(); +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeLocalCompositionKokkos::operator()(TagComputeLocalComposition, const int &ii) const +{ + double typeone_i, typeone_j; + + // TODO continue to implement map (nelements instead of ntypes) + + double lcomp[ntypes]; + + // get per-atom local compositions + + for (ii = 0; ii < inum; ii++) { + + for (int i = 0; i < ntypes; i++) lcomp[i] = 0; + + const int i = d_ilist[ii]; + + if (mask[i] & groupbit) { + + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int jnum = d_numneigh[i]; + + // i atom contribution + + int count = 1; + + typeone_i = type[i]; + + for (int jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + + typeone_j = type[j]; + + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + count++; + lcomp[typeone_j]++; + } + } + for (int n = 0 n < 4; n++) { + d_result(i,n+1) = lcomp[n] / density; + } + } + } +} + +namespace LAMMPS_NS { +template class ComputeLocalCompositionKokkos; +#ifdef LMP_KOKKOS_GPU +template class ComputeLocalCompositionKokkos; +#endif +} diff --git a/src/KOKKOS/compute_local_composition_atom.h b/src/KOKKOS/compute_local_composition_atom.h new file mode 100644 index 0000000000..fb0c914b36 --- /dev/null +++ b/src/KOKKOS/compute_local_composition_atom.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(local_composition/atom/kk,ComputeLocalCompositionAtomKokkos); +ComputeStyle(local_composition/atom/kk/device,ComputeLocalCompositionAtomKokkos); +ComputeStyle(local_composition/atom/kk/host,ComputeLocalCompositionAtomKokkos); +// clang-format on + +#else + +#ifndef LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_KOKKOS_H +#define LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_KOKKOS_H + +#include "compute_local_composition_atom.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +// clang-format off +struct TagComputeLocalCompositionAtom {}; +// clang-format on + +template class ComputeLocalCompositionAtomKokkos : public ComputeLocalCompositionAtom { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + + ComputeLocalCompositionAtomKokkos(class LAMMPS *, int, char **); + ~ComputeLocalCompositionAtomKokkos() override; + void init() override; + void compute_peratom() override; + + KOKKOS_INLINE_FUNCTION + void operator()(TagComputeLocalCompositionAtom, const int &) const; + + private: + double adof, mvv2e, mv2d, boltz; + + typename AT::t_x_array x; + typename AT::t_v_array v; + typename ArrayTypes::t_float_1d rmass; + typename ArrayTypes::t_float_1d mass; + typename ArrayTypes::t_int_1d type; + typename ArrayTypes::t_int_1d mask; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d d_ilist; + typename AT::t_int_1d d_numneigh; + + DAT::tdual_float_2d k_result; + typename AT::t_float_2d d_result; +}; + +} // namespace LAMMPS_NS + +#endif +#endif From 4ebc8afd1ea44386be4608bd3357d7f3d974a88d Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Thu, 1 Jun 2023 03:20:43 -0600 Subject: [PATCH 0053/1002] update documentation --- doc/src/compute_local_composition_atom.rst | 130 +++++++++++---------- 1 file changed, 68 insertions(+), 62 deletions(-) diff --git a/doc/src/compute_local_composition_atom.rst b/doc/src/compute_local_composition_atom.rst index 270783d749..2b8fb7f080 100644 --- a/doc/src/compute_local_composition_atom.rst +++ b/doc/src/compute_local_composition_atom.rst @@ -32,85 +32,91 @@ Examples compute 1 all local_composition/atom cutoff 9.0 comm_modify cutoff 9.0 -.. - ****** UNDER CONSTRUCTION ****** - Description - """"""""""" - .. versionadded:: 24May2023 +Description +""""""""""" - Define a computation that calculates the local composition for each atom based on its neighbors inside a spherical - cutoff. If an atom has :math:`M` neighbors, then its local mass density is - calculated as the sum of its mass and its :math:`M` neighbor masses, divided - by the volume of the cutoff sphere (or circle in 2d). The local - temperature of the atom is calculated as the temperature of the - collection of :math:`M+1` atoms, after subtracting the center-of-mass velocity - of the :math:`M+1` atoms from each of the :math:`M+1` atom's velocities. This - is effectively the thermal velocity of the neighborhood of the central - atom, similar to :doc:`compute temp/com `. +.. versionadded:: 24May2023 - The optional keyword *cutoff* defines the distance cutoff used when - searching for neighbors. The default value is the cutoff specified by - the pair style. If no pair style is defined, then a cutoff must be - defined using this keyword. If the specified cutoff is larger than - that of the pair_style plus neighbor skin (or no pair style is - defined), the *comm_modify cutoff* option must also be set to match - that of the *cutoff* keyword. +Define a computation that calculates the local composition of atom types for a +central atom based on its neighbors inside a spherical cutoff. For a simulation with +:math:`N` atom types and an atom with :math:`M` neighbors within the cutoff, the +fraction of each atom type is counted and divided by the total number of atoms in the +sphere, including the central atom (:math:`M+1`). The sum of all fractions will +always add to one. - The neighbor list needed to compute this quantity is constructed each - time the calculation is performed (i.e. each time a snapshot of atoms - is dumped). Thus it can be inefficient to compute/dump this quantity - too frequently. +.. note:: - .. note:: + This compute uses the number of atom types, not chemical species, assigned in + :doc:`pair_coeff ` command. If an interatomic potential has two + species (i.e., Cu and Ni) assigned to four different atom types in + :doc:`pair_coeff ` (i.e., 'Cu Cu Ni Ni'), the local composition will + output four fractional values. In those cases, the user may desire an extra + calculation step to consolidate per-type fractions into per-species fractions. + This calculation can be conducted within LAMMPS using another compute such as + :doc:`compute reduce `, an atom-style :doc:`variable`, or as a + post-processing step. - If you have a bonded system, then the settings of - :doc:`special_bonds ` command can remove pairwise - interactions between atoms in the same bond, angle, or dihedral. - This is the default setting for the :doc:`special_bonds - ` command, and means those pairwise interactions do - not appear in the neighbor list. Because this compute uses the - neighbor list, it also means those pairs will not be included in - the order parameter. This difficulty can be circumvented by - writing a dump file, and using the :doc:`rerun ` command to - compute the order parameter for snapshots in the dump file. The - rerun script can use a :doc:`special_bonds ` command - that includes all pairs in the neighbor list. +---------- - ---------- +The optional keyword *cutoff* defines the distance cutoff used when +searching for neighbors. The default value is the cutoff specified by +the pair style. If no pair style is defined, then a cutoff must be +defined using this keyword. If the specified cutoff is larger than +that of the pair_style plus neighbor skin (or no pair style is +defined), the *comm_modify cutoff* option must also be set to match +that of the *cutoff* keyword. + +The neighbor list needed to compute this quantity is constructed each +time the calculation is performed (i.e. each time a snapshot of atoms +is dumped). Thus it can be inefficient to compute/dump this quantity +too frequently. + +.. note:: + + If you have a bonded system, then the settings of + :doc:`special_bonds ` command can remove pairwise + interactions between atoms in the same bond, angle, or dihedral. + This is the default setting for the :doc:`special_bonds + ` command, and means those pairwise interactions do + not appear in the neighbor list. Because this compute uses the + neighbor list, it also means those pairs will not be included in + the order parameter. This difficulty can be circumvented by + writing a dump file, and using the :doc:`rerun ` command to + compute the order parameter for snapshots in the dump file. The + rerun script can use a :doc:`special_bonds ` command + that includes all pairs in the neighbor list. + +---------- - .. include:: accel_styles.rst +.. include:: accel_styles.rst - ---------- +---------- - Output info - """"""""""" +Output info +""""""""""" - This compute calculates a per-atom array with two columns: mass - density in density :doc:`units ` and temperature in temperature - :doc:`units `. +This compute calculates a per-atom array with :math:`1 + N` columns, where :math:`N` is the number of atom types. The first column is a count of the number of atoms used to calcuate composition (including the central atom), and each subsequent column indicates the fraction of that atom type detected within the cutoff range. - These values can be accessed by any command that uses per-atom values - from a compute as input. See the :doc:`Howto output ` - doc page for an overview of LAMMPS output options. +These values can be accessed by any command that uses per-atom values +from a compute as input. See the :doc:`Howto output ` +doc page for an overview of LAMMPS output options. - Restrictions - """""""""""" +Restrictions +"""""""""""" - This compute is part of the EXTRA-COMPUTE package. It is only enabled - if LAMMPS was built with that package. See the :doc:`Build package - ` page for more info. +This compute is part of the EXTRA-COMPUTE package. It is only enabled +if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. - Related commands - """""""""""""""" +Related commands +"""""""""""""""" - :doc:`comm_modify ` +:doc:`comm_modify ` - Default - """"""" +Default +""""""" - The option defaults are *cutoff* = pair style cutoff. - -.. \ No newline at end of file +The option defaults are *cutoff* = pair style cutoff. From 9a389fbac6d0e3b0e1d08297da0090bdcbf9c3df Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Thu, 1 Jun 2023 03:25:17 -0600 Subject: [PATCH 0054/1002] fix typo --- doc/src/compute_local_composition_atom.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/compute_local_composition_atom.rst b/doc/src/compute_local_composition_atom.rst index 2b8fb7f080..96e422122b 100644 --- a/doc/src/compute_local_composition_atom.rst +++ b/doc/src/compute_local_composition_atom.rst @@ -48,9 +48,9 @@ always add to one. .. note:: This compute uses the number of atom types, not chemical species, assigned in - :doc:`pair_coeff ` command. If an interatomic potential has two + :doc:`pair_coeff ` command. If an interatomic potential has two species (i.e., Cu and Ni) assigned to four different atom types in - :doc:`pair_coeff ` (i.e., 'Cu Cu Ni Ni'), the local composition will + :doc:`pair_coeff ` (i.e., 'Cu Cu Ni Ni'), the compute will output four fractional values. In those cases, the user may desire an extra calculation step to consolidate per-type fractions into per-species fractions. This calculation can be conducted within LAMMPS using another compute such as From 2c22bb49b4401dd38bbc13f6c8b9843520ef829b Mon Sep 17 00:00:00 2001 From: Aidan Thompson Date: Thu, 1 Jun 2023 12:32:02 -0600 Subject: [PATCH 0055/1002] Added some comments to data members --- src/EXTRA-COMPUTE/compute_local_composition_atom.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.h b/src/EXTRA-COMPUTE/compute_local_composition_atom.h index fb8c8b6c49..64498b6640 100644 --- a/src/EXTRA-COMPUTE/compute_local_composition_atom.h +++ b/src/EXTRA-COMPUTE/compute_local_composition_atom.h @@ -35,11 +35,14 @@ class ComputeLocalCompositionAtom : public Compute { protected: int nmax; - double cutoff, cutsq, volume, nelements; - int *map; // map types to [0,nelements), taken from example in compute_snap - class NeighList *list; + double cutoff; // global cutoff distance + double cutsq; // cutoff**2 + double volume; // local volume + double nelements; // number of elements + int *map; // map types to [0,nelements) + class NeighList *list; // neighbor list - double **result; + double **result; // peratom array of local compositions }; } // namespace LAMMPS_NS From 710597a353b906d4e460c3558ddb2bd9a9cbfc60 Mon Sep 17 00:00:00 2001 From: Aidan Thompson Date: Thu, 1 Jun 2023 17:43:51 -0600 Subject: [PATCH 0056/1002] Made some coding style changes --- doc/src/Commands_compute.rst | 1 + doc/src/compute.rst | 1 + ...n_atom.rst => compute_local_comp_atom.rst} | 39 ++++------ doc/utils/sphinx-config/false_positives.txt | 2 + ...n_atom.cpp => compute_local_comp_atom.cpp} | 73 +++++++------------ ...ition_atom.h => compute_local_comp_atom.h} | 15 ++-- ...cpp => compute_local_comp_atom_kokkos.cpp} | 44 +++++------ ...tom.h => compute_local_comp_atom_kokkos.h} | 25 +++---- 8 files changed, 81 insertions(+), 119 deletions(-) rename doc/src/{compute_local_composition_atom.rst => compute_local_comp_atom.rst} (72%) rename src/EXTRA-COMPUTE/{compute_local_composition_atom.cpp => compute_local_comp_atom.cpp} (71%) rename src/EXTRA-COMPUTE/{compute_local_composition_atom.h => compute_local_comp_atom.h} (71%) rename src/KOKKOS/{compute_local_composition_atom.cpp => compute_local_comp_atom_kokkos.cpp} (77%) rename src/KOKKOS/{compute_local_composition_atom.h => compute_local_comp_atom_kokkos.h} (60%) diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 755000c976..a2d0fd3823 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -91,6 +91,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`ke/atom/eff ` * :doc:`ke/eff ` * :doc:`ke/rigid ` + * :doc:`local/comp/atom ` * :doc:`mliap ` * :doc:`momentum ` * :doc:`msd ` diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 950487cb72..2862e94b02 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -245,6 +245,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`ke/atom/eff ` - per-atom translational and radial kinetic energy in the electron force field model * :doc:`ke/eff ` - kinetic energy of a group of nuclei and electrons in the electron force field model * :doc:`ke/rigid ` - translational kinetic energy of rigid bodies +* :doc:`local/comp/atom ` - local composition for each atom * :doc:`mliap ` - gradients of energy and forces with respect to model parameters and related quantities for training machine learning interatomic potentials * :doc:`momentum ` - translational momentum * :doc:`msd ` - mean-squared displacement of group of atoms diff --git a/doc/src/compute_local_composition_atom.rst b/doc/src/compute_local_comp_atom.rst similarity index 72% rename from doc/src/compute_local_composition_atom.rst rename to doc/src/compute_local_comp_atom.rst index 96e422122b..ad9331895e 100644 --- a/doc/src/compute_local_composition_atom.rst +++ b/doc/src/compute_local_comp_atom.rst @@ -1,20 +1,17 @@ -.. index:: compute ave/sphere/atom -.. index:: compute local_composition/atom/kk +.. index:: compute local/comp/atom -compute local_composition/atom command -================================ - -Accelerator Variants: *local_composition/atom/kk* +compute local/comp/atom command +====================================== Syntax """""" .. code-block:: LAMMPS - compute ID group-ID local_composition/atom keyword values ... + compute ID group-ID local/comp/atom keyword values ... * ID, group-ID are documented in :doc:`compute ` command -* local_composition/atom = style name of this compute command +* local/comp/atom = style name of this compute command * one or more keyword/value pairs may be appended .. parsed-literal:: @@ -27,9 +24,9 @@ Examples .. code-block:: LAMMPS - compute 1 all local_composition/atom + compute 1 all local/comp/atom - compute 1 all local_composition/atom cutoff 9.0 + compute 1 all local/comp/atom cutoff 9.0 comm_modify cutoff 9.0 @@ -38,12 +35,11 @@ Description .. versionadded:: 24May2023 -Define a computation that calculates the local composition of atom types for a -central atom based on its neighbors inside a spherical cutoff. For a simulation with -:math:`N` atom types and an atom with :math:`M` neighbors within the cutoff, the -fraction of each atom type is counted and divided by the total number of atoms in the -sphere, including the central atom (:math:`M+1`). The sum of all fractions will -always add to one. +Define a computation that calculates a local composition vector for each +atom. For a central atom with :math:`M` neighbors within the neighbor cutoff sphere, +composition is defined as the number of atoms of a given type +(including the central atom) divided by (:math:`M+1`). For a given central atom, +the sum of all compositions equals one. .. note:: @@ -89,16 +85,13 @@ too frequently. ---------- - -.. include:: accel_styles.rst - - ----------- - Output info """"""""""" -This compute calculates a per-atom array with :math:`1 + N` columns, where :math:`N` is the number of atom types. The first column is a count of the number of atoms used to calcuate composition (including the central atom), and each subsequent column indicates the fraction of that atom type detected within the cutoff range. +This compute calculates a per-atom array with :math:`1 + N` columns, where :math:`N` +is the number of atom types. The first column is a count of the number of atoms +used to calculate composition (including the central atom), and each subsequent +column indicates the fraction of that atom type within the cutoff sphere. These values can be accessed by any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index d2d15633af..6c53226332 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -3611,6 +3611,7 @@ Tk Tkin tloop tlsph +tm tmax Tmax tmd @@ -3736,6 +3737,7 @@ Umin un unary uncomment +uncommented uncompress uncompute underprediction diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp similarity index 71% rename from src/EXTRA-COMPUTE/compute_local_composition_atom.cpp rename to src/EXTRA-COMPUTE/compute_local_comp_atom.cpp index ba3e40d8c8..50ad3ce72c 100644 --- a/src/EXTRA-COMPUTE/compute_local_composition_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp @@ -15,7 +15,7 @@ Contributing author: Stan Moore (SNL) ------------------------------------------------------------------------- */ -#include "compute_local_composition_atom.h" +#include "compute_local_comp_atom.h" #include "atom.h" #include "comm.h" @@ -37,40 +37,24 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -ComputeLocalCompositionAtom::ComputeLocalCompositionAtom(LAMMPS *lmp, int narg, char **arg) : +ComputeLocalCompAtom::ComputeLocalCompAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), result(nullptr) { - if (narg < 3 || narg > 5) error->all(FLERR, "Illegal compute local_composition/atom command"); - - // get nelements and ntypes + if (narg < 3 || narg > 5) error->all(FLERR, "Illegal compute local/comp/atom command"); int ntypes = atom->ntypes; - // memory->create(map, ntypes + 1, "compute_sna_grid:map"); - // nelements = utils::inumeric(FLERR, 0, false, lmp); // !!!!!!!! what is 2nd arg in inumeric? - // for (int i = 0; i < ntypes; i++) { - // int jelem = utils::inumeric(FLERR, i, false, lmp); - // if (jelem < 0 || jelem >= nelements) error->all(FLERR, "Illegal compute {} command", style); - // map[i + 1] = jelem; - // printf("mapp[x] %d jelem %d \n", map[i + 1], jelem); - // } - - // printf("ntypes %d \n", ntypes); - // printf("elements %d \n", nelements); - - // process optional args - cutoff = 0.0; int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg], "cutoff") == 0) { - if (iarg + 2 > narg) error->all(FLERR, "Illegal compute local_composition/atom command"); + if (iarg + 2 > narg) error->all(FLERR, "Illegal compute local/comp/atom command"); cutoff = utils::numeric(FLERR, arg[iarg + 1], false, lmp); - if (cutoff <= 0.0) error->all(FLERR, "Illegal compute local_composition/atom command"); + if (cutoff <= 0.0) error->all(FLERR, "Illegal compute local/comp/atom command"); iarg += 2; } else - error->all(FLERR, "Illegal compute local_composition/atom command"); + error->all(FLERR, "Illegal compute local/comp/atom command"); } peratom_flag = 1; @@ -82,21 +66,20 @@ ComputeLocalCompositionAtom::ComputeLocalCompositionAtom(LAMMPS *lmp, int narg, /* ---------------------------------------------------------------------- */ -ComputeLocalCompositionAtom::~ComputeLocalCompositionAtom() +ComputeLocalCompAtom::~ComputeLocalCompAtom() { if (copymode) return; memory->destroy(result); - // memory->destroy(map); } /* ---------------------------------------------------------------------- */ -void ComputeLocalCompositionAtom::init() +void ComputeLocalCompAtom::init() { if (!force->pair && cutoff == 0.0) error->all(FLERR, - "Compute local_composition/atom requires a cutoff be specified " + "Compute local/comp/atom requires a cutoff be specified " "or a pair style be defined"); double skin = neighbor->skin; @@ -109,7 +92,7 @@ void ComputeLocalCompositionAtom::init() if (cutoff > cutghost) error->all(FLERR, - "Compute local_composition/atom cutoff exceeds ghost atom range - " + "Compute local/comp/atom cutoff exceeds ghost atom range - " "use comm_modify cutoff command"); } @@ -120,10 +103,6 @@ void ComputeLocalCompositionAtom::init() } cutsq = cutoff * cutoff; - if (domain->dimension == 3) - volume = 4.0 / 3.0 * MY_PI * cutsq * cutoff; - else - volume = MY_PI * cutsq; // need an occasional full neighbor list @@ -133,19 +112,19 @@ void ComputeLocalCompositionAtom::init() /* ---------------------------------------------------------------------- */ -void ComputeLocalCompositionAtom::init_list(int /*id*/, NeighList *ptr) +void ComputeLocalCompAtom::init_list(int /*id*/, NeighList *ptr) { list = ptr; } /* ---------------------------------------------------------------------- */ -void ComputeLocalCompositionAtom::compute_peratom() +void ComputeLocalCompAtom::compute_peratom() { int i, j, ii, jj, inum, jnum; double xtmp, ytmp, ztmp, delx, dely, delz, rsq; int *ilist, *jlist, *numneigh, **firstneigh; - int count; + int count, itype, jtype; invoked_peratom = update->ntimestep; @@ -154,7 +133,7 @@ void ComputeLocalCompositionAtom::compute_peratom() if (atom->nmax > nmax) { memory->destroy(result); nmax = atom->nmax; - memory->create(result, nmax, size_peratom_cols, "local_composition/atom:result"); + memory->create(result, nmax, size_peratom_cols, "local/comp/atom:result"); array_atom = result; } @@ -176,11 +155,9 @@ void ComputeLocalCompositionAtom::compute_peratom() int typeone_i, typeone_j; - // TODO continue to implement map (nelements instead of ntypes) - int ntypes = atom->ntypes; - double lcomp[ntypes]; + int lcomp[ntypes]; // get per-atom local compositions @@ -202,14 +179,14 @@ void ComputeLocalCompositionAtom::compute_peratom() count = 1; - typeone_i = type[i]; - lcomp[typeone_i - 1]++; + itype = type[i]; + lcomp[itype-1]++; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; j &= NEIGHMASK; - typeone_j = type[j]; + jtype = type[j]; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; @@ -217,7 +194,7 @@ void ComputeLocalCompositionAtom::compute_peratom() rsq = delx * delx + dely * dely + delz * delz; if (rsq < cutsq) { count++; - lcomp[typeone_j-1]++; + lcomp[jtype-1]++; } } @@ -225,10 +202,12 @@ void ComputeLocalCompositionAtom::compute_peratom() result[i][0] = count; - // local composition fractions per element - for (int n = 0; n < ntypes; n++) { - result[i][n + 1] = lcomp[n] / count; - } + // local comp fractions per element + + double lfac = 1.0 / count; + for (int n = 0; n < ntypes; n++) + result[i][n+1] = lcomp[n] * lfac; + } } } @@ -237,7 +216,7 @@ void ComputeLocalCompositionAtom::compute_peratom() memory usage of local atom-based array ------------------------------------------------------------------------- */ -double ComputeLocalCompositionAtom::memory_usage() +double ComputeLocalCompAtom::memory_usage() { double bytes = (double) 2 * nmax * sizeof(double); return bytes; diff --git a/src/EXTRA-COMPUTE/compute_local_composition_atom.h b/src/EXTRA-COMPUTE/compute_local_comp_atom.h similarity index 71% rename from src/EXTRA-COMPUTE/compute_local_composition_atom.h rename to src/EXTRA-COMPUTE/compute_local_comp_atom.h index 64498b6640..22e40edab9 100644 --- a/src/EXTRA-COMPUTE/compute_local_composition_atom.h +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.h @@ -13,21 +13,21 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(local_composition/atom,ComputeLocalCompositionAtom); +ComputeStyle(local/comp/atom,ComputeLocalCompAtom); // clang-format on #else -#ifndef LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_H -#define LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_H +#ifndef LMP_COMPUTE_LOCAL_COMP_ATOM_H +#define LMP_COMPUTE_LOCAL_COMP_ATOM_H #include "compute.h" namespace LAMMPS_NS { -class ComputeLocalCompositionAtom : public Compute { +class ComputeLocalCompAtom : public Compute { public: - ComputeLocalCompositionAtom(class LAMMPS *, int, char **); - ~ComputeLocalCompositionAtom() override; + ComputeLocalCompAtom(class LAMMPS *, int, char **); + ~ComputeLocalCompAtom() override; void init() override; void init_list(int, class NeighList *) override; void compute_peratom() override; @@ -37,9 +37,6 @@ class ComputeLocalCompositionAtom : public Compute { int nmax; double cutoff; // global cutoff distance double cutsq; // cutoff**2 - double volume; // local volume - double nelements; // number of elements - int *map; // map types to [0,nelements) class NeighList *list; // neighbor list double **result; // peratom array of local compositions diff --git a/src/KOKKOS/compute_local_composition_atom.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp similarity index 77% rename from src/KOKKOS/compute_local_composition_atom.cpp rename to src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 1c52d6c948..7ee63eafea 100644 --- a/src/KOKKOS/compute_local_composition_atom.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -12,10 +12,10 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) + Contributing author: Stan Moore (SNL), Megan McCarthy (SNL) ------------------------------------------------------------------------- */ -#include "compute_local_composition_kokkos.h" +#include "compute_local_comp_atom_kokkos.h" #include "atom_kokkos.h" #include "atom_masks.h" @@ -39,8 +39,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ template -ComputeLocalCompositionKokkos::ComputeLocalCompositionKokkos(LAMMPS *lmp, int narg, char **arg) : - ComputeLocalComposition(lmp, narg, arg) +ComputeLocalCompAtomKokkos::ComputeLocalCompAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeLocalCompAtom(lmp, narg, arg) { kokkosable = 1; atomKK = (AtomKokkos *) atom; @@ -52,7 +52,7 @@ ComputeLocalCompositionKokkos::ComputeLocalCompositionKokkos(LAMMPS /* ---------------------------------------------------------------------- */ template -ComputeLocalCompositionKokkos::~ComputeLocalCompositionKokkos() +ComputeLocalCompAtomKokkos::~ComputeLocalCompAtomKokkos() { if (copymode) return; @@ -62,9 +62,9 @@ ComputeLocalCompositionKokkos::~ComputeLocalCompositionKokkos() /* ---------------------------------------------------------------------- */ template -void ComputeLocalCompositionKokkos::init() +void ComputeLocalCompAtomKokkos::init() { - ComputeLocalComposition::init(); + ComputeLocalCompAtom::init(); // adjust neighbor list request for KOKKOS @@ -77,7 +77,7 @@ void ComputeLocalCompositionKokkos::init() /* ---------------------------------------------------------------------- */ template -void ComputeLocalCompositionKokkos::compute_peratom() +void ComputeLocalCompAtomKokkos::compute_peratom() { invoked_peratom = update->ntimestep; @@ -86,17 +86,11 @@ void ComputeLocalCompositionKokkos::compute_peratom() if (atom->nmax > nmax) { memoryKK->destroy_kokkos(k_result,result); nmax = atom->nmax; - memoryKK->create_kokkos(k_result,result,nmax,2,"local_composition/atom:result"); + memoryKK->create_kokkos(k_result,result,nmax,2,"local/comp/atom:result"); d_result = k_result.view(); array_atom = result; } - // // need velocities of ghost atoms - - // atomKK->sync(Host,V_MASK); - // comm->forward_comm(this); - // atomKK->modified(Host,V_MASK); - // invoke full neighbor list (will copy or build if necessary) neighbor->build_one(list); @@ -119,8 +113,8 @@ void ComputeLocalCompositionKokkos::compute_peratom() Kokkos::deep_copy(d_result,0.0); copymode = 1; - typename Kokkos::RangePolicy policy(0,inum); - Kokkos::parallel_for("ComputeLocalComposition",policy,*this); + typename Kokkos::RangePolicy policy(0,inum); + Kokkos::parallel_for("ComputeLocalComp",policy,*this); copymode = 0; k_result.modify(); @@ -129,13 +123,11 @@ void ComputeLocalCompositionKokkos::compute_peratom() template KOKKOS_INLINE_FUNCTION -void ComputeLocalCompositionKokkos::operator()(TagComputeLocalComposition, const int &ii) const +void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalComp, const int &ii) const { double typeone_i, typeone_j; - // TODO continue to implement map (nelements instead of ntypes) - - double lcomp[ntypes]; + int lcomp[ntypes]; // get per-atom local compositions @@ -156,13 +148,13 @@ void ComputeLocalCompositionKokkos::operator()(TagComputeLocalCompos int count = 1; - typeone_i = type[i]; + itype = type[i]; for (int jj = 0; jj < jnum; jj++) { int j = d_neighbors(i,jj); j &= NEIGHMASK; - typeone_j = type[j]; + jtype = type[j]; const F_FLOAT delx = x(j,0) - xtmp; const F_FLOAT dely = x(j,1) - ytmp; @@ -170,7 +162,7 @@ void ComputeLocalCompositionKokkos::operator()(TagComputeLocalCompos const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; if (rsq < cutsq) { count++; - lcomp[typeone_j]++; + lcomp[jtype]++; } } for (int n = 0 n < 4; n++) { @@ -181,8 +173,8 @@ void ComputeLocalCompositionKokkos::operator()(TagComputeLocalCompos } namespace LAMMPS_NS { -template class ComputeLocalCompositionKokkos; +template class ComputeLocalCompAtomKokkos; #ifdef LMP_KOKKOS_GPU -template class ComputeLocalCompositionKokkos; +template class ComputeLocalCompAtomKokkos; #endif } diff --git a/src/KOKKOS/compute_local_composition_atom.h b/src/KOKKOS/compute_local_comp_atom_kokkos.h similarity index 60% rename from src/KOKKOS/compute_local_composition_atom.h rename to src/KOKKOS/compute_local_comp_atom_kokkos.h index fb0c914b36..5f9baa2af0 100644 --- a/src/KOKKOS/compute_local_composition_atom.h +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.h @@ -13,45 +13,42 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(local_composition/atom/kk,ComputeLocalCompositionAtomKokkos); -ComputeStyle(local_composition/atom/kk/device,ComputeLocalCompositionAtomKokkos); -ComputeStyle(local_composition/atom/kk/host,ComputeLocalCompositionAtomKokkos); +ComputeStyle(local/comp/atom/kk,ComputeLocalCompAtomKokkos); +ComputeStyle(local/comp/atom/kk/device,ComputeLocalCompAtomKokkos); +ComputeStyle(local/comp/atom/kk/host,ComputeLocalCompAtomKokkos); // clang-format on #else -#ifndef LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_KOKKOS_H -#define LMP_COMPUTE_LOCAL_COMPOSITION_ATOM_KOKKOS_H +#ifndef LMP_COMPUTE_LOCAL_COMP_ATOM_KOKKOS_H +#define LMP_COMPUTE_LOCAL_COMP_ATOM_KOKKOS_H -#include "compute_local_composition_atom.h" +#include "compute_local_comp_atom.h" #include "kokkos_type.h" namespace LAMMPS_NS { // clang-format off -struct TagComputeLocalCompositionAtom {}; +struct TagComputeLocalCompAtom {}; // clang-format on -template class ComputeLocalCompositionAtomKokkos : public ComputeLocalCompositionAtom { +template class ComputeLocalCompAtomKokkos : public ComputeLocalCompAtom { public: typedef DeviceType device_type; typedef ArrayTypes AT; - ComputeLocalCompositionAtomKokkos(class LAMMPS *, int, char **); - ~ComputeLocalCompositionAtomKokkos() override; + ComputeLocalCompAtomKokkos(class LAMMPS *, int, char **); + ~ComputeLocalCompAtomKokkos() override; void init() override; void compute_peratom() override; KOKKOS_INLINE_FUNCTION - void operator()(TagComputeLocalCompositionAtom, const int &) const; + void operator()(TagComputeLocalCompAtom, const int &) const; private: - double adof, mvv2e, mv2d, boltz; typename AT::t_x_array x; typename AT::t_v_array v; - typename ArrayTypes::t_float_1d rmass; - typename ArrayTypes::t_float_1d mass; typename ArrayTypes::t_int_1d type; typename ArrayTypes::t_int_1d mask; From 0d875d4f8f60c4e33b132105e6b9e2acfe7d91ac Mon Sep 17 00:00:00 2001 From: Aidan Thompson Date: Thu, 1 Jun 2023 18:51:31 -0600 Subject: [PATCH 0057/1002] Fixed up kokkos version --- src/KOKKOS/compute_local_comp_atom_kokkos.cpp | 33 ++++++++++++------- src/KOKKOS/compute_local_comp_atom_kokkos.h | 1 - 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 7ee63eafea..5dbe436e29 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -83,10 +83,11 @@ void ComputeLocalCompAtomKokkos::compute_peratom() // grow result array if necessary + int size_peratom_cols = 1 + atom->ntypes; if (atom->nmax > nmax) { memoryKK->destroy_kokkos(k_result,result); nmax = atom->nmax; - memoryKK->create_kokkos(k_result,result,nmax,2,"local/comp/atom:result"); + memoryKK->create_kokkos(k_result,result,nmax,size_peratom_cols,"local/comp/atom:result"); d_result = k_result.view(); array_atom = result; } @@ -107,13 +108,12 @@ void ComputeLocalCompAtomKokkos::compute_peratom() atomKK->sync(execution_space,X_MASK|V_MASK|RMASS_MASK|TYPE_MASK|MASK_MASK); x = atomKK->k_x.view(); type = atomKK->k_type.view(); - ntypes = atomKK->k_ntypes.view(); mask = atomKK->k_mask.view(); Kokkos::deep_copy(d_result,0.0); copymode = 1; - typename Kokkos::RangePolicy policy(0,inum); + typename Kokkos::RangePolicy policy(0,inum); Kokkos::parallel_for("ComputeLocalComp",policy,*this); copymode = 0; @@ -123,15 +123,17 @@ void ComputeLocalCompAtomKokkos::compute_peratom() template KOKKOS_INLINE_FUNCTION -void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalComp, const int &ii) const +void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, const int &ii) const { double typeone_i, typeone_j; + int ntypes = atom->ntypes; int lcomp[ntypes]; // get per-atom local compositions - for (ii = 0; ii < inum; ii++) { + int inum = list->inum; + for (int ii = 0; ii < inum; ii++) { for (int i = 0; i < ntypes; i++) lcomp[i] = 0; @@ -148,13 +150,14 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalComp, con int count = 1; - itype = type[i]; + int itype = type[i]; + lcomp[itype-1]++; for (int jj = 0; jj < jnum; jj++) { int j = d_neighbors(i,jj); j &= NEIGHMASK; - jtype = type[j]; + int jtype = type[j]; const F_FLOAT delx = x(j,0) - xtmp; const F_FLOAT dely = x(j,1) - ytmp; @@ -162,12 +165,20 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalComp, con const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; if (rsq < cutsq) { count++; - lcomp[jtype]++; + lcomp[jtype-1]++; } } - for (int n = 0 n < 4; n++) { - d_result(i,n+1) = lcomp[n] / density; - } + + // total count of atoms found in sampled radius range + + d_result(i,0) = count; + + // local comp fractions per element + + double lfac = 1.0 / count; + for (int n = 0; n < ntypes; n++) + d_result(i,n+1) = lcomp[n] * lfac; + } } } diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.h b/src/KOKKOS/compute_local_comp_atom_kokkos.h index 5f9baa2af0..2f1c6ea3d4 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.h +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.h @@ -48,7 +48,6 @@ template class ComputeLocalCompAtomKokkos : public ComputeLoc private: typename AT::t_x_array x; - typename AT::t_v_array v; typename ArrayTypes::t_int_1d type; typename ArrayTypes::t_int_1d mask; From a4e7966da5021e2e6f9ef79b17a2c1c88f8e747e Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Tue, 6 Jun 2023 09:11:27 +0200 Subject: [PATCH 0058/1002] Fixed some error messages for consistency. Seed did not need comm->me addition. --- src/fix_press_langevin.cpp | 84 +++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/src/fix_press_langevin.cpp b/src/fix_press_langevin.cpp index 0848cc9ab6..cfec66f8d3 100644 --- a/src/fix_press_langevin.cpp +++ b/src/fix_press_langevin.cpp @@ -65,16 +65,19 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : pre_exchange_flag = 0; flipflag = 1; - // Alpha friction coefficient - p_fric = 1e-4; + // Piston mass + p_mass = 1e-3; + // Target temperature t_start = t_stop = t_target = 0.0; for (int i = 0; i < 6; i++) { - // Pressure and pistons mass Q + // Pressure and pistons period tau_p p_start[i] = p_stop[i] = p_period[i] = 0.0; p_flag[i] = 0; + p_fric[i] = 0.; + // Pistons coordinates derivative V p_deriv[i] = 0.0; @@ -210,16 +213,13 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : else error->all(FLERR,"Illegal fix press/langevin command"); iarg += 2; - } else if (strcmp(arg[iarg],"friction") == 0) { - if (iarg+3 > narg) + } else if (strcmp(arg[iarg],"mass") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix press/langevin command"); - p_fric = utils::numeric(FLERR,arg[iarg+1],false,lmp); - seed = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (p_fric <= 0.0) + p_mass = utils::numeric(FLERR,arg[iarg+1],false,lmp); + if (p_mass <= 0.0) error->all(FLERR,"Illegal fix press/langevin command"); - if (seed <= 0.0) - error->all(FLERR,"Illegal fix press/langevin command"); - iarg += 3; + iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix press/langevin command"); @@ -228,11 +228,14 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : else error->all(FLERR,"Illegal fix press/langevin command"); iarg += 2; } else if (strcmp(arg[iarg], "temp") == 0) { - if (iarg+3 > narg) + if (iarg+4 > narg) error->all(FLERR,"Illegal fix press/langevin command"); t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); - iarg += 3; + seed = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (seed <= 0.0) + error->all(FLERR,"Illegal fix press/langevin command"); + iarg += 4; } else error->all(FLERR,"Illegal fix press/langevin command"); @@ -240,7 +243,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : if (allremap == 0) restart_pbc = 1; - random = new RanMars(lmp, seed + comm->me); + random = new RanMars(lmp, seed); // error checks @@ -356,9 +359,13 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : modify->add_compute(fmt::format("{} all pressure NULL virial",id_press, id_temp)); pflag = 1; + // p_fric is alpha coeff from GJF + // with alpha = Q/p_period + // similar to fix_langevin formalism for (int i = 0; i < 6; i++) { - gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); - gjfb[i] = 1./(1.0 + update->dt / 2.0 / p_period[i]); + p_fric[i] = p_mass/p_period[i]; + gjfa[i] = (1.0 - p_fric[i] * update->dt / 2.0 / p_mass) / (1.0 + p_fric[i] * update->dt / 2.0 / p_mass); + gjfb[i] = 1./(1.0 + p_fric[i] * update->dt / 2.0 / p_mass); } nrigid = 0; @@ -469,8 +476,8 @@ void FixPressLangevin::initial_integrate(int /* vflag */) if (p_flag[i]) { // See equation 13 displacement = dt*p_deriv[i]*gjfb[i]; - displacement += 0.5*dt*dt*f_piston[i]*gjfb[i]/p_period[i]; - displacement += 0.5*dt*fran[i]*gjfb[i]/p_period[i]; + displacement += 0.5*dt*dt*f_piston[i]*gjfb[i]/p_mass; + displacement += 0.5*dt*fran[i]*gjfb[i]/p_mass; dl = domain->boxhi[i] - domain->boxlo[i]; if (i < 3) dilation[i] = (dl + displacement)/dl; else dilation[i] = displacement; @@ -528,8 +535,8 @@ void FixPressLangevin::end_of_step() for (int i = 0; i < 6; i++) { if (p_flag[i]) { p_deriv[i] *= gjfa[i]; - p_deriv[i] += 0.5*dt*(gjfa[i]*f_old_piston[i]+f_piston[i])/p_period[i]; - p_deriv[i] += fran[i]*gjfb[i]/p_period[i]; + p_deriv[i] += 0.5*dt*(gjfa[i]*f_old_piston[i]+f_piston[i])/p_mass; + p_deriv[i] += fran[i]*gjfb[i]/p_mass; } } @@ -588,35 +595,36 @@ void FixPressLangevin::couple_kinetic(double t_target) void FixPressLangevin::couple_beta(double t_target) { - double gamma; + double gamma[6]; int me = comm->me; - gamma = sqrt(2.0*force->boltz*update->dt*p_fric*t_target); + for (int i=0; i<6; i++) + gamma[i] = sqrt(2.0*force->boltz*update->dt*p_fric[i]*t_target); fran[0] = fran[1] = fran[2] = 0.0; fran[3] = fran[4] = fran[5] = 0.0; if (me == 0) { if (pstyle == ISO) - fran[0] = fran[1] = fran[2] = gamma*random->gaussian(); + fran[0] = fran[1] = fran[2] = gamma[0]*random->gaussian(); else if (pcouple == XYZ) { - fran[0] = fran[1] = fran[2] = gamma*random->gaussian(); + fran[0] = fran[1] = fran[2] = gamma[0]*random->gaussian(); } else if (pcouple == XY) { - fran[0] = fran[1] = gamma*random->gaussian(); - fran[2] = gamma*random->gaussian(); + fran[0] = fran[1] = gamma[0]*random->gaussian(); + fran[2] = gamma[2]*random->gaussian(); } else if (pcouple == YZ) { - fran[1] = fran[2] = gamma*random->gaussian(); - fran[0] = gamma*random->gaussian(); + fran[1] = fran[2] = gamma[1]*random->gaussian(); + fran[0] = gamma[0]*random->gaussian(); } else if (pcouple == XZ) { - fran[0] = fran[2] = gamma*random->gaussian(); - fran[1] = gamma*random->gaussian(); + fran[0] = fran[2] = gamma[0]*random->gaussian(); + fran[1] = gamma[1]*random->gaussian(); } else { - fran[0] = gamma*random->gaussian(); - fran[1] = gamma*random->gaussian(); - fran[2] = gamma*random->gaussian(); + fran[0] = gamma[0]*random->gaussian(); + fran[1] = gamma[1]*random->gaussian(); + fran[2] = gamma[2]*random->gaussian(); } - fran[3] = gamma*random->gaussian(); - fran[4] = gamma*random->gaussian(); - fran[5] = gamma*random->gaussian(); + fran[3] = gamma[3]*random->gaussian(); + fran[4] = gamma[4]*random->gaussian(); + fran[5] = gamma[5]*random->gaussian(); } MPI_Bcast(&fran, 6, MPI_DOUBLE, 0, world); } @@ -797,7 +805,7 @@ int FixPressLangevin::modify_param(int narg, char **arg) void FixPressLangevin::reset_dt() { for (int i=0; i<6; i++) { - gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); - gjfb[i] = sqrt(1.0 + update->dt / 2.0 / p_period[i]); + gjfa[i] = (1.0 - p_fric[i] * update->dt / 2.0 / p_mass) / (1.0 + p_fric[i] * update->dt / 2.0 / p_mass); + gjfb[i] = sqrt(1.0 + p_fric[i] * update->dt / 2.0 / p_mass); } } From 9a585f820488f5724ebe28ce4e53331293026076 Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Tue, 6 Jun 2023 09:14:23 +0200 Subject: [PATCH 0059/1002] Change variables names in header for consistency with GJF paper. --- src/fix_press_langevin.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/fix_press_langevin.h b/src/fix_press_langevin.h index b5a62d2646..d6ea9df714 100644 --- a/src/fix_press_langevin.h +++ b/src/fix_press_langevin.h @@ -44,9 +44,9 @@ class FixPressLangevin : public Fix { int pstyle, pcouple, allremap; int p_flag[6]; // 1 if control P on this dim, 0 if not double t_start, t_stop, t_target; - double p_fric; - double p_start[6], p_stop[6], p_current[6]; - double p_period[6], p_target[6]; + double p_mass; + double p_start[6], p_stop[6], p_period[6]; + double p_fric[6], p_target[6], p_current[6]; double p_deriv[6], dilation[6]; double f_piston[6], f_old_piston[6]; double gjfa[6], gjfb[6], fran[6]; From 0c2cd80028a309e34dfbd26debd8e2386a6e6330 Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Tue, 6 Jun 2023 09:37:34 +0200 Subject: [PATCH 0060/1002] Edited the documentation of fix_press_langevin to take changes into account. --- doc/src/fix_press_langevin.rst | 67 ++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/doc/src/fix_press_langevin.rst b/doc/src/fix_press_langevin.rst index 01d66d08c6..550decdf8b 100644 --- a/doc/src/fix_press_langevin.rst +++ b/doc/src/fix_press_langevin.rst @@ -22,12 +22,13 @@ Syntax Pdamp = pressure damping parameter *x* or *y* or *z* or *xy* or *xz* or *yz* values = Pstart Pstop Pdamp Pstart,Pstop = external stress tensor component at start/end of run (pressure units) - Pdamp = stress damping parameter + Pdamp = pressure damping parameter *flip* value = *yes* or *no* = allow or disallow box flips when it becomes highly skewed *couple* = *none* or *xyz* or *xy* or *yz* or *xz* - *friction* value = Alpha friction value to apply to the barostat - *temp* values = Tstart, Tstop + *mass* value = Mass of the barostat fictious particle + *temp* values = Tstart, Tstop, seed Tstart, Tstop = target temperature used for the barostat at start/end of run + seed = seed of the random number generator *dilate* value = *all* or *partial* Examples @@ -35,8 +36,8 @@ Examples .. code-block:: LAMMPS - fix 1 all press/langevin iso 0.0 0.0 1000.0 temp 300 300 - fix 2 all press/langevin aniso 0.0 0.0 1000.0 temp 100 300 dilate partial + fix 1 all press/langevin iso 0.0 0.0 1000.0 temp 300 300 487374 + fix 2 all press/langevin aniso 0.0 0.0 1000.0 temp 100 300 238 dilate partial Description """"""""""" @@ -114,9 +115,28 @@ will change. A box dimension will not change if that component is not specified, although you have the option to change that dimension via the :doc:`fix deform ` command. -For all barostat keywords, the *Pdamp* parameter determines the "mass" of the -pseudo particle acting as a barostat. The relation is such that :math:`P_{damp} -= \frac{1}{Q}` where Q is the mass. +For all barostat keywords, the *Pdamp* parameter determines the "friction +parameter" :math:`\alpha` of the pseudo particle acting as a barostat. The +relation is such that :math:`\alpha = \frac{Q}{P_{damp}}` where Q is the mass. + +.. note:: + + As for Berendsen barostat, a Langevin barostat will not work well for + arbitrary values of *Pdamp*\ . If *Pdamp* is too small, the pressure and + volume can fluctuate wildly; if it is too large, the pressure will take a + very long time to equilibrate. A good choice for many models is a *Pdamp* + of around 1000 timesteps. However, note that *Pdamp* is specified in time + units, and that timesteps are NOT the same as time units for most + :doc:`units ` settings. + +---------- + +The *temp* keyword sets the temperature to use in the equation of motion of the +barostat. This value is used to compute the value of the force :math:`f_P` in +the equation of motion. It is important to note that this value is not the +instantaneous temperature but a target temperature that ramps from *Tstart* to +*Tstop*. Also the required argument *seed* also sets the seed for the random +number generator used in the generation of the random forces. ---------- @@ -192,12 +212,20 @@ error. ---------- -The *friction* keyword sets the friction parameter :math:`\alpha` in the +The *mass* keyword sets the mass parameter :math:`Q` in the equations of movement of the barostat. All the barostat use the same value. +.. note:: + + The same recommandation with regard to the bulk modulus of a berendsen + barostat applies to a Langevin barostat mass. It is however important to + note that not only the absolute value used for the mass is important, but + also its ratio with Pdamp values which defines the friction coeffiction + value. + ---------- -This fix computes pressure each timestep. To do +This fix computes pressure each timestep. To do this, the fix creates its own computes of style "pressure", as if this command had been issued: @@ -212,13 +240,14 @@ See the :doc:`compute pressure ` command for details. Note that the IDs of the new compute is the fix-ID + underscore + "press" and the group for the new computes is the same as the fix group. -Note that this is NOT the compute used by thermodynamic output (see -the :doc:`thermo_style ` command) with ID = *thermo_press*. -This means you can change the attributes of this fix's pressure via the -:doc:`compute_modify ` command or print this temperature -or pressure during thermodynamic output via the :doc:`thermo_style custom ` command using the appropriate compute-ID. -It also means that changing attributes of *thermo_temp* or -*thermo_press* will have no effect on this fix. +Note that this is NOT the compute used by thermodynamic output (see the +:doc:`thermo_style ` command) with ID = *thermo_press*. This +means you can change the attributes of this fix's pressure via the +:doc:`compute_modify ` command or print this temperature or +pressure during thermodynamic output via the :doc:`thermo_style custom +` command using the appropriate compute-ID. It also means that +changing attributes of *thermo_temp* or *thermo_press* will have no effect on +this fix. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -256,8 +285,8 @@ Related commands Default """"""" -The keyword defaults are dilate = all, friction = 0.0001 in units of -pressure for whatever :doc:`units ` are defined. +The keyword defaults are dilate = all and mass = 0.001 in units of mass for +whatever :doc:`units ` defined. ---------- From bb1ff49af62dbebd74802a77fe170411032ff978 Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Wed, 7 Jun 2023 14:03:40 +0200 Subject: [PATCH 0061/1002] Corrected bug from f_piston not initialised. Removed superfluous temp compute id variable name --- src/fix_press_langevin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fix_press_langevin.cpp b/src/fix_press_langevin.cpp index cfec66f8d3..ec8f034181 100644 --- a/src/fix_press_langevin.cpp +++ b/src/fix_press_langevin.cpp @@ -87,6 +87,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : // Random value for each piston fran[i] = 0.0; + f_piston[i] = 0.0; } // process keywords @@ -356,7 +357,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : // pass id_temp as 4th arg to pressure constructor id_press = utils::strdup(std::string(id) + "_press"); - modify->add_compute(fmt::format("{} all pressure NULL virial",id_press, id_temp)); + modify->add_compute(fmt::format("{} all pressure NULL virial", id_press)); pflag = 1; // p_fric is alpha coeff from GJF From 9eb32fc6b09f6ab5ae0c53edc837dff8101fc5a2 Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Sat, 10 Jun 2023 07:54:40 -0600 Subject: [PATCH 0062/1002] fix memory allocation runtime error --- src/EXTRA-COMPUTE/compute_local_comp_atom.cpp | 18 ++-- src/EXTRA-COMPUTE/compute_local_comp_atom.h | 4 +- src/KOKKOS/compute_local_comp_atom_kokkos.cpp | 97 +++++++++++-------- src/KOKKOS/compute_local_comp_atom_kokkos.h | 2 + 4 files changed, 69 insertions(+), 52 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp index 50ad3ce72c..bb3f068bd7 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp @@ -42,8 +42,6 @@ ComputeLocalCompAtom::ComputeLocalCompAtom(LAMMPS *lmp, int narg, char **arg) : { if (narg < 3 || narg > 5) error->all(FLERR, "Illegal compute local/comp/atom command"); - int ntypes = atom->ntypes; - cutoff = 0.0; int iarg = 3; @@ -59,6 +57,7 @@ ComputeLocalCompAtom::ComputeLocalCompAtom(LAMMPS *lmp, int narg, char **arg) : peratom_flag = 1; + ntypes = atom->ntypes; size_peratom_cols = 1 + ntypes; nmax = 0; @@ -71,6 +70,7 @@ ComputeLocalCompAtom::~ComputeLocalCompAtom() if (copymode) return; memory->destroy(result); + memory->destroy(lcomp); } /* ---------------------------------------------------------------------- */ @@ -108,6 +108,7 @@ void ComputeLocalCompAtom::init() auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); if (cutflag) req->set_cutoff(cutoff); + } /* ---------------------------------------------------------------------- */ @@ -125,6 +126,9 @@ void ComputeLocalCompAtom::compute_peratom() double xtmp, ytmp, ztmp, delx, dely, delz, rsq; int *ilist, *jlist, *numneigh, **firstneigh; int count, itype, jtype; + // int lcomp[ntypes]; + + memory->create(lcomp, ntypes, "local/comp/atom:lcomp"); invoked_peratom = update->ntimestep; @@ -153,20 +157,14 @@ void ComputeLocalCompAtom::compute_peratom() int *type = atom->type; int *mask = atom->mask; - int typeone_i, typeone_j; - - int ntypes = atom->ntypes; - - int lcomp[ntypes]; - // get per-atom local compositions for (ii = 0; ii < inum; ii++) { - for (int i = 0; i < ntypes; i++) lcomp[i] = 0; - i = ilist[ii]; + for (int m = 0; m < ntypes; m++) lcomp[m] = 0.0; + if (mask[i] & groupbit) { xtmp = x[i][0]; diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.h b/src/EXTRA-COMPUTE/compute_local_comp_atom.h index 22e40edab9..8ec5cb685f 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.h +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.h @@ -34,11 +34,13 @@ class ComputeLocalCompAtom : public Compute { double memory_usage() override; protected: - int nmax; + int nmax, ntypes; double cutoff; // global cutoff distance double cutsq; // cutoff**2 class NeighList *list; // neighbor list + int *lcomp; // peratom array to track local compositions + double **result; // peratom array of local compositions }; diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 5dbe436e29..426ad28e0c 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL), Megan McCarthy (SNL) + Contributing authors: Stan Moore (SNL), Megan McCarthy (SNL) ------------------------------------------------------------------------- */ #include "compute_local_comp_atom_kokkos.h" @@ -42,11 +42,13 @@ template ComputeLocalCompAtomKokkos::ComputeLocalCompAtomKokkos(LAMMPS *lmp, int narg, char **arg) : ComputeLocalCompAtom(lmp, narg, arg) { + kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; + } /* ---------------------------------------------------------------------- */ @@ -57,6 +59,7 @@ ComputeLocalCompAtomKokkos::~ComputeLocalCompAtomKokkos() if (copymode) return; memoryKK->destroy_kokkos(k_result,result); + memoryKK->destroy_kokkos(k_lcomp,lcomp); } /* ---------------------------------------------------------------------- */ @@ -79,6 +82,7 @@ void ComputeLocalCompAtomKokkos::init() template void ComputeLocalCompAtomKokkos::compute_peratom() { + invoked_peratom = update->ntimestep; // grow result array if necessary @@ -90,8 +94,16 @@ void ComputeLocalCompAtomKokkos::compute_peratom() memoryKK->create_kokkos(k_result,result,nmax,size_peratom_cols,"local/comp/atom:result"); d_result = k_result.view(); array_atom = result; + + memoryKK->destroy_kokkos(k_lcomp,lcomp); + nmax = atom->nmax; + memoryKK->create_kokkos(k_lcomp,lcomp,nmax,"local/comp/atom:result"); + d_lcomp = k_lcomp.view(); } + memoryKK->create_kokkos(k_lcomp,lcomp,size_peratom_cols,"local/comp/atom:lcomp"); + d_lcomp = k_lcomp.view(); + // invoke full neighbor list (will copy or build if necessary) neighbor->build_one(list); @@ -105,12 +117,14 @@ void ComputeLocalCompAtomKokkos::compute_peratom() // compute properties for each atom in group // use full neighbor list to count atoms less than cutoff - atomKK->sync(execution_space,X_MASK|V_MASK|RMASS_MASK|TYPE_MASK|MASK_MASK); + atomKK->sync(execution_space,X_MASK|TYPE_MASK|MASK_MASK); x = atomKK->k_x.view(); type = atomKK->k_type.view(); mask = atomKK->k_mask.view(); - + ntypes = atom->ntypes; + Kokkos::deep_copy(d_result,0.0); + Kokkos::deep_copy(d_lcomp,0.0); copymode = 1; typename Kokkos::RangePolicy policy(0,inum); @@ -119,66 +133,67 @@ void ComputeLocalCompAtomKokkos::compute_peratom() k_result.modify(); k_result.sync_host(); + + k_lcomp.modify(); + k_lcomp.sync_host(); } template KOKKOS_INLINE_FUNCTION void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, const int &ii) const { - double typeone_i, typeone_j; - int ntypes = atom->ntypes; - int lcomp[ntypes]; + const int i = d_ilist[ii]; - // get per-atom local compositions + // initialize / reset lcomp - int inum = list->inum; - for (int ii = 0; ii < inum; ii++) { + for (int m = 0; m < ntypes; m++) d_lcomp(m) = 0; + // for (int m = 0; m < ntypes; m++) d_result(i,m) = 0; - for (int i = 0; i < ntypes; i++) lcomp[i] = 0; + if (mask[i] & groupbit) { - const int i = d_ilist[ii]; + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int jnum = d_numneigh[i]; - if (mask[i] & groupbit) { + // i atom contribution - const X_FLOAT xtmp = x(i,0); - const X_FLOAT ytmp = x(i,1); - const X_FLOAT ztmp = x(i,2); - const int jnum = d_numneigh[i]; + int count = 1; + int itype = type[i]; + d_lcomp(itype-1)++; + // d_result(i,itype-1)++; - // i atom contribution + for (int jj = 0; jj < jnum; jj++) { - int count = 1; + int j = d_neighbors(i,jj); + j &= NEIGHMASK; - int itype = type[i]; - lcomp[itype-1]++; + int jtype = type[j]; - for (int jj = 0; jj < jnum; jj++) { - int j = d_neighbors(i,jj); - j &= NEIGHMASK; - - int jtype = type[j]; - - const F_FLOAT delx = x(j,0) - xtmp; - const F_FLOAT dely = x(j,1) - ytmp; - const F_FLOAT delz = x(j,2) - ztmp; - const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; - if (rsq < cutsq) { - count++; - lcomp[jtype-1]++; - } + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + count++; + d_lcomp(jtype-1)++; + // d_result(i,jtype-1)++; } - // total count of atoms found in sampled radius range + // total count of atoms found in sampled radius range - d_result(i,0) = count; + d_result(i,0) = count; - // local comp fractions per element + // local comp fractions per + + double lfac = 1.0 / count; + + for (int n = 0; n < ntypes; n++) { + d_result(i,n+1) = d_lcomp(n+1) * lfac; + // d_result(i,n+1) = d_result(i,n+1) * lfac; + } - double lfac = 1.0 / count; - for (int n = 0; n < ntypes; n++) - d_result(i,n+1) = lcomp[n] * lfac; - } } } diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.h b/src/KOKKOS/compute_local_comp_atom_kokkos.h index 2f1c6ea3d4..8b8a74b1af 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.h +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.h @@ -55,7 +55,9 @@ template class ComputeLocalCompAtomKokkos : public ComputeLoc typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; + DAT::tdual_int_1d k_lcomp; DAT::tdual_float_2d k_result; + typename AT::t_int_1d d_lcomp; typename AT::t_float_2d d_result; }; From 38fd78b867ecc683531e155c9d5d7e1fa006f1c4 Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Sat, 10 Jun 2023 09:11:09 -0600 Subject: [PATCH 0063/1002] factor out variable lcomp --- src/KOKKOS/compute_local_comp_atom_kokkos.cpp | 46 +++++++++---------- src/KOKKOS/compute_local_comp_atom_kokkos.h | 4 +- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 426ad28e0c..20caa00df0 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -59,7 +59,7 @@ ComputeLocalCompAtomKokkos::~ComputeLocalCompAtomKokkos() if (copymode) return; memoryKK->destroy_kokkos(k_result,result); - memoryKK->destroy_kokkos(k_lcomp,lcomp); + // memoryKK->destroy_kokkos(k_lcomp,lcomp); } /* ---------------------------------------------------------------------- */ @@ -94,15 +94,10 @@ void ComputeLocalCompAtomKokkos::compute_peratom() memoryKK->create_kokkos(k_result,result,nmax,size_peratom_cols,"local/comp/atom:result"); d_result = k_result.view(); array_atom = result; - - memoryKK->destroy_kokkos(k_lcomp,lcomp); - nmax = atom->nmax; - memoryKK->create_kokkos(k_lcomp,lcomp,nmax,"local/comp/atom:result"); - d_lcomp = k_lcomp.view(); } - memoryKK->create_kokkos(k_lcomp,lcomp,size_peratom_cols,"local/comp/atom:lcomp"); - d_lcomp = k_lcomp.view(); + // memoryKK->create_kokkos(k_lcomp,lcomp,size_peratom_cols,"local/comp/atom:lcomp"); + // d_lcomp = k_lcomp.view(); // invoke full neighbor list (will copy or build if necessary) @@ -122,9 +117,8 @@ void ComputeLocalCompAtomKokkos::compute_peratom() type = atomKK->k_type.view(); mask = atomKK->k_mask.view(); ntypes = atom->ntypes; - + Kokkos::deep_copy(d_result,0.0); - Kokkos::deep_copy(d_lcomp,0.0); copymode = 1; typename Kokkos::RangePolicy policy(0,inum); @@ -134,8 +128,6 @@ void ComputeLocalCompAtomKokkos::compute_peratom() k_result.modify(); k_result.sync_host(); - k_lcomp.modify(); - k_lcomp.sync_host(); } template @@ -145,13 +137,13 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, const int i = d_ilist[ii]; - // initialize / reset lcomp - - for (int m = 0; m < ntypes; m++) d_lcomp(m) = 0; - // for (int m = 0; m < ntypes; m++) d_result(i,m) = 0; - if (mask[i] & groupbit) { + // initialize / reset lcomp + + // for (int m = 0; m < ntypes; m++) d_lcomp(m) = 0; + // for (int m = 0; m < size_peratom_cols; m++) d_result(i,m) = 0.0; + const X_FLOAT xtmp = x(i,0); const X_FLOAT ytmp = x(i,1); const X_FLOAT ztmp = x(i,2); @@ -161,8 +153,10 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, int count = 1; int itype = type[i]; - d_lcomp(itype-1)++; - // d_result(i,itype-1)++; + + // d_lcomp(itype-1)++; + // d_result(i,itype-1) = d_result(i,itype-1) + 1; + d_result(i,itype)++; for (int jj = 0; jj < jnum; jj++) { @@ -177,8 +171,9 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; if (rsq < cutsq) { count++; - d_lcomp(jtype-1)++; - // d_result(i,jtype-1)++; + // d_lcomp(jtype-1)++; + // d_result(i,jtype) = d_result(i,jtype) + 1; + d_result(i,jtype)++; } // total count of atoms found in sampled radius range @@ -189,10 +184,11 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, double lfac = 1.0 / count; - for (int n = 0; n < ntypes; n++) { - d_result(i,n+1) = d_lcomp(n+1) * lfac; - // d_result(i,n+1) = d_result(i,n+1) * lfac; - } + // for (int n = 1; n < size_peratom_cols; n++) { + // // d_result(i,n+1) = d_lcomp(n+1) * lfac; + // d_result(i,n) = d_result(i,n) * lfac; + // // d_result(i,n+1) = 123.0; + // } } } diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.h b/src/KOKKOS/compute_local_comp_atom_kokkos.h index 8b8a74b1af..bf0f69de55 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.h +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.h @@ -55,9 +55,9 @@ template class ComputeLocalCompAtomKokkos : public ComputeLoc typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; - DAT::tdual_int_1d k_lcomp; +// DAT::tdual_int_1d k_lcomp; DAT::tdual_float_2d k_result; - typename AT::t_int_1d d_lcomp; +// typename AT::t_int_1d d_lcomp; typename AT::t_float_2d d_result; }; From 85765a2bf3242a2f6deb14a2d8c7084ec13076b4 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 12 Jun 2023 12:45:52 +0300 Subject: [PATCH 0064/1002] Include born_matrix() definition in bond_gaussian.h --- src/EXTRA-MOLECULE/bond_gaussian.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/bond_gaussian.h b/src/EXTRA-MOLECULE/bond_gaussian.h index 7af6f1f4d9..e466df47d4 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.h +++ b/src/EXTRA-MOLECULE/bond_gaussian.h @@ -35,6 +35,7 @@ class BondGaussian : public Bond { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, double, int, int, double &) override; + void born_matrix(int, double, int, int, double &, double &) override; protected: int *nterms; From a05fcc326efd1f7ebef08516ddf15b262c155215 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 12 Jun 2023 12:47:21 +0300 Subject: [PATCH 0065/1002] Implement born_matrix() in bond_gaussian.cpp --- src/EXTRA-MOLECULE/bond_gaussian.cpp | 45 +++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/bond_gaussian.cpp b/src/EXTRA-MOLECULE/bond_gaussian.cpp index baca0b6e1a..816ab51516 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.cpp +++ b/src/EXTRA-MOLECULE/bond_gaussian.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ #include "bond_gaussian.h" - +#include #include "atom.h" #include "comm.h" #include "error.h" @@ -35,6 +35,7 @@ BondGaussian::BondGaussian(LAMMPS *lmp) : Bond(lmp), nterms(nullptr), bond_temperature(nullptr), alpha(nullptr), width(nullptr), r0(nullptr) { + born_matrix_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -294,3 +295,45 @@ double BondGaussian::single(int type, double rsq, int /*i*/, int /*j*/, double & return -(force->boltz * bond_temperature[type]) * log(sum_g_i); } + +/* ---------------------------------------------------------------------- */ + +void BondGaussian::born_matrix(int type, double rsq, int /*i*/, int /*j*/, double &du, double &du2) +{ + double r = sqrt(rsq); + + // first derivative of energy with respect to distance + double sum_g_i = 0.0; + double sum_numerator = 0.0; + for (int i = 0; i < nterms[type]; i++) { + double dr = r - r0[type][i]; + double prefactor = (alpha[type][i] / (width[type][i] * sqrt(MY_PI2))); + double exponent = -2 * dr * dr / (width[type][i] * width[type][i]); + double g_i = prefactor * exp(exponent); + sum_g_i += g_i; + sum_numerator += g_i * dr / (width[type][i] * width[type][i]); + } + + if (sum_g_i < SMALL) sum_g_i = SMALL; + du = 4.0 * (force->boltz * bond_temperature[type]) * (sum_numerator / sum_g_i); + + // second derivative of energy with respect to distance + sum_g_i = 0.0; + double sum_dg_i = 0.0; + double sum_d2g_i = 0.0; + for (int i = 0; i < nterms[type]; i++) { + double dr = r - r0[type][i]; + double prefactor = (alpha[type][i] / (width[type][i] * sqrt(MY_PI2))); + double exponent = -2 * dr * dr / (width[type][i] * width[type][i]); + double g_i = prefactor * exp(exponent); + sum_g_i += g_i; + sum_dg_i -= 4.0 * g_i * dr / pow(width[type][i], 2); + sum_d2g_i += 4.0 * g_i * (4.0 * pow(r0[type][i], 2) - 8.0 * r0[type][i] * r - pow(width[type][i], 2) + 4.0 * r * r) / pow(width[type][i], 4) ; + } + + if (sum_g_i < SMALL) sum_g_i = SMALL; + double numerator = sum_d2g_i*sum_g_i - sum_dg_i*sum_dg_i; + double denominator = sum_g_i * sum_g_i; + + du2 = - (force->boltz * bond_temperature[type]) * numerator / denominator; +} From 25f5e74e9a7b240fe123f59c7749714d7304af46 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 15:51:59 -0600 Subject: [PATCH 0066/1002] updating args and D2min calculation in nonaffine fix --- doc/src/compute.rst | 1 + doc/src/compute_contact_atom.rst | 10 +- doc/src/compute_rattlers.rst | 74 +++ doc/src/fix.rst | 1 + doc/src/fix_nonaffine_displacement.rst | 140 +++++ src/GRANULAR/compute_contact_atom.cpp | 52 +- src/GRANULAR/compute_contact_atom.h | 4 + src/compute_rattlers.cpp | 308 ++++++++++ src/compute_rattlers.h | 52 ++ src/fix_nonaffine_displacement.cpp | 740 +++++++++++++++++++++++++ src/fix_nonaffine_displacement.h | 70 +++ 11 files changed, 1430 insertions(+), 22 deletions(-) create mode 100644 doc/src/compute_rattlers.rst create mode 100644 doc/src/fix_nonaffine_displacement.rst create mode 100755 src/compute_rattlers.cpp create mode 100755 src/compute_rattlers.h create mode 100755 src/fix_nonaffine_displacement.cpp create mode 100755 src/fix_nonaffine_displacement.h diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 6fdedbbb95..0f6bfa75d9 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -254,6 +254,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`property/chunk ` - extract various per-chunk attributes * :doc:`property/local ` - convert local attributes to localvectors/arrays * :doc:`ptm/atom ` - determines the local lattice structure based on the Polyhedral Template Matching method +* :doc:`rattlers ` - identify undercoordinated rattler atoms * :doc:`rdf ` - radial distribution function g(r) histogram of group of atoms * :doc:`reduce ` - combine per-atom quantities into a single global value * :doc:`reduce/chunk ` - reduce per-atom quantities within each chunk diff --git a/doc/src/compute_contact_atom.rst b/doc/src/compute_contact_atom.rst index 20dcbfae29..c26f2b4252 100644 --- a/doc/src/compute_contact_atom.rst +++ b/doc/src/compute_contact_atom.rst @@ -8,10 +8,11 @@ Syntax .. parsed-literal:: - compute ID group-ID contact/atom + compute ID group-ID contact/atom group2-ID * ID, group-ID are documented in :doc:`compute ` command * contact/atom = style name of this compute command +* group2-ID = optional argument select group-ID to restrict which atoms to consider for contacts (see below) Examples """""""" @@ -19,6 +20,7 @@ Examples .. code-block:: LAMMPS compute 1 all contact/atom + compute 1 all contact/atom mygroup Description """"""""""" @@ -34,6 +36,9 @@ sum of the radii of the two particles. The value of the contact number will be 0.0 for atoms not in the specified compute group. +The optional *group2-ID* argument allows to specify from which group atoms +contribute to the coordination number. Default setting is group 'all'. + Output info """"""""""" @@ -63,4 +68,7 @@ Related commands Default """"""" +*group2-ID* = all + + none diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst new file mode 100644 index 0000000000..c26f2b4252 --- /dev/null +++ b/doc/src/compute_rattlers.rst @@ -0,0 +1,74 @@ +.. index:: compute contact/atom + +compute contact/atom command +============================ + +Syntax +"""""" + +.. parsed-literal:: + + compute ID group-ID contact/atom group2-ID + +* ID, group-ID are documented in :doc:`compute ` command +* contact/atom = style name of this compute command +* group2-ID = optional argument select group-ID to restrict which atoms to consider for contacts (see below) + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all contact/atom + compute 1 all contact/atom mygroup + +Description +""""""""""" + +Define a computation that calculates the number of contacts +for each atom in a group. + +The contact number is defined for finite-size spherical particles as +the number of neighbor atoms which overlap the central particle, +meaning that their distance of separation is less than or equal to the +sum of the radii of the two particles. + +The value of the contact number will be 0.0 for atoms not in the +specified compute group. + +The optional *group2-ID* argument allows to specify from which group atoms +contribute to the coordination number. Default setting is group 'all'. + +Output info +""""""""""" + +This compute calculates a per-atom vector, whose values can be +accessed by any command that uses per-atom values from a compute as +input. See the :doc:`Howto output ` page for an +overview of LAMMPS output options. + +The per-atom vector values will be a number >= 0.0, as explained +above. + +Restrictions +"""""""""""" + +This compute is part of the GRANULAR package. It is only enabled if +LAMMPS was built with that package. See the +:doc:`Build package ` page for more info. + +This compute requires that atoms store a radius as defined by the +:doc:`atom_style sphere ` command. + +Related commands +"""""""""""""""" + +:doc:`compute coord/atom ` + +Default +""""""" + +*group2-ID* = all + + +none diff --git a/doc/src/fix.rst b/doc/src/fix.rst index b0ec47fbe6..b07aa2770e 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -259,6 +259,7 @@ accelerated styles exist. * :doc:`mvv/tdpd ` - constant temperature DPD using the modified velocity-Verlet algorithm * :doc:`neb ` - nudged elastic band (NEB) spring forces * :doc:`neb/spin ` - nudged elastic band (NEB) spring forces for spins +* :doc:`nonaffine/displacement ` - calculate nonaffined displacement of atoms * :doc:`nph ` - constant NPH time integration via Nose/Hoover * :doc:`nph/asphere ` - NPH for aspherical particles * :doc:`nph/body ` - NPH for body particles diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst new file mode 100644 index 0000000000..7b0f7669ed --- /dev/null +++ b/doc/src/fix_nonaffine_displacement.rst @@ -0,0 +1,140 @@ +.. index:: fix gravity +.. index:: fix gravity/omp +.. index:: fix gravity/kk + +fix gravity command +=================== + +Accelerator Variants: *gravity/omp*, *gravity/kk* + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group gravity magnitude style args + +* ID, group are documented in :doc:`fix ` command +* gravity = style name of this fix command +* magnitude = size of acceleration (force/mass units) +* magnitude can be a variable (see below) +* style = *chute* or *spherical* or *gradient* or *vector* + + .. parsed-literal:: + + *chute* args = angle + angle = angle in +x away from -z or -y axis in 3d/2d (in degrees) + angle can be a variable (see below) + *spherical* args = phi theta + phi = azimuthal angle from +x axis (in degrees) + theta = angle from +z or +y axis in 3d/2d (in degrees) + phi or theta can be a variable (see below) + *vector* args = x y z + x y z = vector direction to apply the acceleration + x or y or z can be a variable (see below) + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all gravity 1.0 chute 24.0 + fix 1 all gravity v_increase chute 24.0 + fix 1 all gravity 1.0 spherical 0.0 -180.0 + fix 1 all gravity 10.0 spherical v_phi v_theta + fix 1 all gravity 100.0 vector 1 1 0 + +Description +""""""""""" + +Impose an additional acceleration on each particle in the group. This +fix is typically used with granular systems to include a "gravity" +term acting on the macroscopic particles. More generally, it can +represent any kind of driving field, e.g. a pressure gradient inducing +a Poiseuille flow in a fluid. Note that this fix operates differently +than the :doc:`fix addforce ` command. The addforce fix +adds the same force to each atom, independent of its mass. This +command imparts the same acceleration to each atom (force/mass). + +The *magnitude* of the acceleration is specified in force/mass units. +For granular systems (LJ units) this is typically 1.0. See the +:doc:`units ` command for details. + +Style *chute* is typically used for simulations of chute flow where +the specified *angle* is the chute angle, with flow occurring in the +x +direction. For 3d systems, the tilt is away from the z axis; for 2d +systems, the tilt is away from the y axis. + +Style *spherical* allows an arbitrary 3d direction to be specified for +the acceleration vector. *Phi* and *theta* are defined in the usual +spherical coordinates. Thus for acceleration acting in the -z +direction, *theta* would be 180.0 (or -180.0). *Theta* = 90.0 and +*phi* = -90.0 would mean acceleration acts in the -y direction. For +2d systems, *phi* is ignored and *theta* is an angle in the xy plane +where *theta* = 0.0 is the y-axis. + +Style *vector* imposes an acceleration in the vector direction given +by (x,y,z). Only the direction of the vector is important; it's +length is ignored. For 2d systems, the *z* component is ignored. + +Any of the quantities *magnitude*, *angle*, *phi*, *theta*, *x*, *y*, +*z* which define the gravitational magnitude and direction, can be +specified as an equal-style :doc:`variable `. If the value is +a variable, it should be specified as v_name, where name is the +variable name. In this case, the variable will be evaluated each +timestep, and its value used to determine the quantity. You should +insure that the variable calculates a result in the appropriate units, +e.g. force/mass or degrees. + +Equal-style variables can specify formulas with various mathematical +functions, and include :doc:`thermo_style ` command +keywords for the simulation box parameters and timestep and elapsed +time. Thus it is easy to specify a time-dependent gravitational +field. + +---------- + +.. include:: accel_styles.rst + +---------- + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +No information about this fix is written to :doc:`binary restart files `. + +The :doc:`fix_modify ` *energy* option is supported by +this fix to add the gravitational potential energy of the system to +the global potential energy of the system as part of +:doc:`thermodynamic output `. The default setting for +this fix is :doc:`fix_modify energy no `. + +The :doc:`fix_modify ` *respa* option is supported by this +fix. This allows to set at which level of the :doc:`r-RESPA +` integrator the fix is adding its forces. Default is the +outermost level. + +This fix computes a global scalar which can be accessed by various +:doc:`output commands `. This scalar is the +gravitational potential energy of the particles in the defined field, +namely mass \* (g dot x) for each particles, where x and mass are the +particles position and mass, and g is the gravitational field. The +scalar value calculated by this fix is "extensive". + +No parameter of this fix can be used with the *start/stop* keywords of +the :doc:`run ` command. This fix is not invoked during +:doc:`energy minimization `. + +Restrictions +"""""""""""" + none + +Related commands +"""""""""""""""" + +:doc:`atom_style sphere `, :doc:`fix addforce ` + +Default +""""""" + +none diff --git a/src/GRANULAR/compute_contact_atom.cpp b/src/GRANULAR/compute_contact_atom.cpp index 5a07d14eb8..26018f7bfb 100644 --- a/src/GRANULAR/compute_contact_atom.cpp +++ b/src/GRANULAR/compute_contact_atom.cpp @@ -18,6 +18,7 @@ #include "comm.h" #include "error.h" #include "force.h" +#include "group.h" #include "memory.h" #include "modify.h" #include "neigh_list.h" @@ -34,7 +35,16 @@ ComputeContactAtom::ComputeContactAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), contact(nullptr) { - if (narg != 3) error->all(FLERR,"Illegal compute contact/atom command"); + if (narg != 3 && narg != 4) error->all(FLERR,"Illegal compute contact/atom command"); + + jgroup = group->find("all"); + jgroupbit = group->bitmask[jgroup]; + if (narg == 4) { + group2 = utils::strdup(arg[3]); + jgroup = group->find(group2); + if (jgroup == -1) error->all(FLERR, "Compute contact/atom group2 ID does not exist"); + jgroupbit = group->bitmask[jgroup]; + } peratom_flag = 1; size_peratom_cols = 0; @@ -120,28 +130,28 @@ void ComputeContactAtom::compute_peratom() for (ii = 0; ii < inum; ii++) { i = ilist[ii]; - if (mask[i] & groupbit) { - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - radsumsq = radsum*radsum; - if (rsq <= radsumsq) { - contact[i] += 1.0; - contact[j] += 1.0; - } + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + radsum = radi + radius[j]; + radsumsq = radsum * radsum; + if (rsq <= radsumsq) { + // Only tally for atoms in compute group (groupbit) if neighbor is in group2 (jgroupbit) + if ((mask[i] & groupbit) && (mask[j] & jgroupbit)) contact[i] += 1.0; + if ((mask[j] & groupbit) && (mask[i] & jgroupbit)) contact[j] += 1.0; } } } diff --git a/src/GRANULAR/compute_contact_atom.h b/src/GRANULAR/compute_contact_atom.h index f01815e666..5262c1b29b 100644 --- a/src/GRANULAR/compute_contact_atom.h +++ b/src/GRANULAR/compute_contact_atom.h @@ -37,6 +37,10 @@ class ComputeContactAtom : public Compute { private: int nmax; + + char *group2; + int jgroup, jgroupbit; + class NeighList *list; double *contact; }; diff --git a/src/compute_rattlers.cpp b/src/compute_rattlers.cpp new file mode 100755 index 0000000000..5a6d2b022d --- /dev/null +++ b/src/compute_rattlers.cpp @@ -0,0 +1,308 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "compute_rattlers.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "update.h" +#include "utils.h" + +#include +#include + +using namespace LAMMPS_NS; + +enum { TYPE, RADIUS }; + +/* ---------------------------------------------------------------------- */ + +ComputeRattlers::ComputeRattlers(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), ncontacts(nullptr), rattler(nullptr) +{ + if (narg != 6) error->all(FLERR, "Illegal compute fabric command"); + + if (strcmp(arg[3], "type") == 0) + cutstyle = TYPE; + else if (strcmp(arg[3], "radius") == 0) + cutstyle = RADIUS; + else + error->all(FLERR, "Illegal compute fabric command"); + + if (cutstyle == RADIUS && !atom->radius_flag) + error->all(FLERR, "Compute fabric radius style requires atom attribute radius"); + + ncontacts_rattler = utils::inumeric(FLERR, arg[4], false, lmp); + max_tries = utils::inumeric(FLERR, arg[5], false, lmp); + + nmax = 0; + invoked_peratom = -1; + + scalar_flag = 1; + extscalar = 1; + peratom_flag = 1; + size_peratom_cols = 0; + comm_forward = 1; + comm_reverse = 1; +} + +/* ---------------------------------------------------------------------- */ + +ComputeRattlers::~ComputeRattlers() +{ + memory->destroy(ncontacts); + memory->destroy(rattler); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::init() +{ + if (force->pair == nullptr) error->all(FLERR, "No pair style is defined for compute rattlers"); + + // Cannot calculate distance from radii for JKR/DMT + if (force->pair->beyond_contact) + error->all(FLERR, "Compute rattlers does not currently support pair styles that extend beyond contact"); + + // need an occasional half neighbor list + // set size to same value as request made by force->pair + // this should enable it to always be a copy list (e.g. for granular pstyle) + + auto pairrequest = neighbor->find_request(force->pair); + if (pairrequest && pairrequest->get_size()) + neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); + else + neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::compute_peratom() +{ + if (invoked_peratom == update->ntimestep) return; + invoked_peratom = update->ntimestep; + + int i, j, ii, jj, inum, jnum, itype, jtype, tmp_flag; + tagint itag, jtag; + double xtmp, ytmp, ztmp, delx, dely, delz; + double r, rinv, rsq, radsum; + + if (nmax < atom->nmax) { + nmax = atom->nmax; + memory->destroy(ncontacts); + memory->destroy(rattler); + memory->create(ncontacts, nmax, "rattlers:ncontacts"); + memory->create(rattler, nmax, "rattlers:rattler"); + vector_atom = rattler; + } + + for (i = 0; i < nmax; i++) rattler[i] = 0; + + int *ilist, *jlist, *numneigh, **firstneigh; + + double **x = atom->x; + double *radius = atom->radius; + tagint *tag = atom->tag; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + // invoke half neighbor list (will copy or build if necessary) + neighbor->build_one(list); + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + Pair *pair = force->pair; + double **cutsq = force->pair->cutsq; + + int change_flag = 1; + int ntry = 0; + while (ntry < max_tries) { + // Quit when answer stops evolving + if (change_flag == 0) break; + change_flag = 0; + + for (i = 0; i < nmax; i++) ncontacts[i] = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + if (rattler[i] == 1) continue; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itag = tag[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbit)) continue; + if (rattler[j] == 1) continue; + + // itag = jtag is possible for long cutoffs that include images of self + + if (newton_pair == 0 && j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag + jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag + jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + + jtype = type[j]; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (cutstyle == TYPE) { + if (rsq >= cutsq[itype][jtype]) continue; + } else { + radsum = radius[i] + radius[j]; + if (rsq >= radsum * radsum) continue; + } + ncontacts[i] += 1; + if (newton_pair || j < nlocal) + ncontacts[j] += 1; + } + } + + // add contributions from ghosts + if (force->newton_pair) comm->reverse_comm(this); + + // Set flags for rattlers + for (i = 0; i < atom->nlocal; i++) { + if (ncontacts[i] < ncontacts_rattler && rattler[i] == 0) { + rattler[i] = 1; + change_flag = 1; + } + } + + comm->forward_comm(this); + + MPI_Allreduce(&change_flag, &tmp_flag, 1, MPI_INT, MPI_MAX, world); + change_flag = tmp_flag; + + ntry += 1; + } + + if (change_flag == 1) + error->warning(FLERR, "Rattler calculation failed to converge within max tries"); +} + +/* ---------------------------------------------------------------------- */ + +double ComputeRattlers::compute_scalar() { + if (invoked_peratom != update->ntimestep) + compute_peratom(); + + invoked_scalar = update->ntimestep; + + double total_rattlers = 0; + for (int i = 0; i < atom->nlocal; i++) { + if (rattler[i] == 1) { + total_rattlers += 1; + } + } + + //Total across processors + MPI_Allreduce(&total_rattlers, &scalar, 1, MPI_DOUBLE, MPI_SUM, world); + return scalar; +} + +/* ---------------------------------------------------------------------- */ + +int ComputeRattlers::pack_reverse_comm(int n, int first, double *buf) +{ + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = ubuf(ncontacts[i]).d; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + ncontacts[j] += (int) ubuf(buf[m++]).i; + } +} + +/* ---------------------------------------------------------------------- */ + +int ComputeRattlers::pack_forward_comm(int n, int *list, double *buf, + int /*pbc_flag*/, int * /*pbc*/) +{ + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rattler[j]; + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rattler[i] = buf[m++]; + } +} diff --git a/src/compute_rattlers.h b/src/compute_rattlers.h new file mode 100755 index 0000000000..08f8d7e71d --- /dev/null +++ b/src/compute_rattlers.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(rattlers,ComputeRattlers); +// clang-format on +#else + +#ifndef LMP_COMPUTE_RATTLERS_H +#define LMP_COMPUTE_RATTLERS_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeRattlers : public Compute { + public: + ComputeRattlers(class LAMMPS *, int, char **); + ~ComputeRattlers() override; + void init() override; + void init_list(int, class NeighList *) override; + void compute_peratom() override; + double compute_scalar() override; + int pack_forward_comm(int, int *, double *, int, int *) override; + void unpack_forward_comm(int, int, double *) override; + int pack_reverse_comm(int, int, double *) override; + void unpack_reverse_comm(int, int *, double *) override; + + private: + int pstyle, cutstyle; + int ncontacts_rattler, max_tries, nmax, invoked_peratom; + int *ncontacts; + double *rattler; + class NeighList *list; + +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp new file mode 100755 index 0000000000..15c678f83d --- /dev/null +++ b/src/fix_nonaffine_displacement.cpp @@ -0,0 +1,740 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_nonaffine_displacement.h" + +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "group.h" +#include "math_extra.h" +#include "memory.h" +#include "modify.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathExtra; + +enum { TYPE, RADIUS, CUSTOM }; +enum { INTEGRATED, D2MIN }; +enum { FIXED, OFFSET, UPDATE }; + +static const char cite_nonaffine_d2min[] = + "@article{PhysRevE.57.7192,\n" + " title = {Dynamics of viscoplastic deformation in amorphous solids},\n" + " author = {Falk, M. L. and Langer, J. S.},\n" + " journal = {Phys. Rev. E},\n" + " volume = {57},\n" + " issue = {6},\n" + " pages = {7192--7205},\n" + " numpages = {0},\n" + " year = {1998},\n" + " month = {Jun},\n" + " publisher = {American Physical Society},\n" + " doi = {10.1103/PhysRevE.57.7192},\n" + "url = {https://link.aps.org/doi/10.1103/PhysRevE.57.7192}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm (nullptr) +{ + if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + + int iarg = 3; + if (strcmp(arg[iarg], "integrated") == 0) { + nad_style = INTEGRATED; + nevery = 1; + iarg += 1; + } else if (strcmp(arg[iarg], "d2min") == 0) { + if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + + nad_style = D2MIN; + nevery = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); + + if (strcmp(arg[iarg + 2], "type") == 0) { + cut_style = TYPE; + } else if (strcmp(arg[iarg + 2], "radius") == 0) { + cut_style = RADIUS; + } else if (strcmp(arg[iarg + 2], "custom") == 0) { + if (iarg + 3 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + cut_style = CUSTOM; + cutoff_custom = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + cutsq_custom = cutoff_custom * cutoff_custom; + if (cutoff_custom <= 0) + error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 3]); + iarg += 1; + } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 2]); + iarg += 3; + } + + if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + if (strcmp(arg[iarg], "fixed") == 0) { + reference_style = FIXED; + reference_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (update_timestep < 0) + error->all(FLERR, "Illegal reference timestep {} in fix nonaffine/displacement", arg[iarg + 1]); + } else if (strcmp(arg[iarg], "update") == 0) { + reference_style = UPDATE; + update_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (update_timestep < 0) + error->all(FLERR, "Illegal update timestep {} in fix nonaffine/displacement", arg[iarg + 1]); + } else if (strcmp(arg[iarg], "offset") == 0) { + reference_style = OFFSET; + offset_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (offset_timestep < 0) + error->all(FLERR, "Illegal offset timestep {} in fix nonaffine/displacement", arg[iarg + 1]); + } else error->all(FLERR,"Illegal reference style {} in fix nonaffine/displacement", arg[iarg]); + + if (cut_style == RADIUS && (!atom->radius_flag)) + error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); + + peratom_flag = 1; + peratom_freq = nevery; + nmax = -1; + reference_saved = 0; + restart_global = 1; + + size_peratom_cols = 3; + comm_reverse = 0; + comm_forward = 0; + if (nad_style == D2MIN) { + comm_reverse = 18; + comm_forward = 9; + } + + if (nad_style == D2MIN && lmp->citeme) lmp->citeme->add(cite_nonaffine_d2min); +} + +/* ---------------------------------------------------------------------- */ + +FixNonaffineDisplacement::~FixNonaffineDisplacement() +{ + if (new_fix_id && modify->nfix) modify->delete_fix(new_fix_id); + delete[] new_fix_id; + + if (nad_style == D2MIN) { + memory->destroy(X); + memory->destroy(Y); + memory->destroy(F); + memory->destroy(norm); + memory->destroy(array_atom); + } +} + +/* ---------------------------------------------------------------------- */ + +int FixNonaffineDisplacement::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::post_constructor() +{ + // Create persistent peratom storage for either an integrated velocity or reference position + // Ghost atoms need reference coordinates for D2min + std::string ghost_status = "no"; + if (nad_style == D2MIN) ghost_status = "yes"; + + new_fix_id = utils::strdup(id + std::string("_FIX_PA")); + modify->add_fix(fmt::format("{} {} property/atom d2_nad 3 ghost {}", new_fix_id, group->names[igroup], ghost_status)); + int tmp1, tmp2; + nad_index = atom->find_custom("nad",tmp1,tmp2); + + if (nad_style == INTEGRATED) { + double **nad = atom->darray[nad_index]; + array_atom = nad; + } + + if (nad_style == D2MIN) { + grow_arrays(atom->nmax); + for (int i = 0; i < atom->nlocal; i++) + for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::init() +{ + dtv = update->dt; + + if (!reference_saved && (reference_style == FIXED) && (update->ntimestep > reference_timestep)) + error->all(FLERR, "Initial timestep exceeds that of the reference state in fix nonaffine/displacement"); + + if (nad_style == D2MIN) { + if (!force->pair && (cut_style == TYPE)) + error->all(FLERR,"Fix nonaffine/displacement D2Min option requires a pair style be defined " + "or cutoff specified"); + + if (cut_style == CUSTOM) { + double skin = neighbor->skin; + mycutneigh = cutoff_custom + skin; + + double cutghost; // as computed by Neighbor and Comm + if (force->pair) + cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); + else + cutghost = comm->cutghostuser; + + if (mycutneigh > cutghost) + error->all(FLERR,"Fix nonaffine/displacement D2Min option cutoff exceeds ghost atom range - use comm_modify cutoff command"); + } + + // need an occasional half neighbor list + + if (cut_style == RADIUS) { + auto req = neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); + } else { + auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); + if (cut_style == CUSTOM) req->set_cutoff(mycutneigh); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::setup(int vflag) +{ + post_force(0); // Save state if needed before starting the 1st timestep +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::post_force(int /*vflag*/) +{ + if (reference_style == FIXED) + if (update->ntimestep == reference_timestep) + save_reference_state(); + + if (reference_style == UPDATE) + if ((update->ntimestep % update_timestep) == 0) + save_reference_state(); + + if (reference_style == OFFSET) + if (((update->ntimestep - offset_timestep) % nevery) == 0) + save_reference_state(); + + if (update->setupflag) return; + + if (reference_style == FIXED && (update->ntimestep < reference_timestep)) return; + + if (nad_style == INTEGRATED) { + integrate_velocity(); + } else { + if ((update->ntimestep % nevery) == 0) calculate_D2Min(); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::write_restart(FILE *fp) +{ + if (comm->me == 0) { + int size = sizeof(int); + fwrite(&size, sizeof(int), 1, fp); + fwrite(&reference_saved, sizeof(int), 1, fp); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::restart(char *buf) +{ + reference_saved = (int) ubuf(buf[0]).i; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::integrate_velocity() +{ + int i,n; + dtv = update->dt; + + double **v = atom->v; + + int *mask = atom->mask; + int nlocal = atom->nlocal; + double **nad = atom->darray[nad_index]; + + for (int m = 0; m < 3; m++) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + nad[i][m] += dtv * v[i][m]; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::save_reference_state() +{ + int i, n; + double **x = atom->x; + + int *mask = atom->mask; + int nlocal = atom->nlocal; + double **nad = atom->darray[nad_index]; + + if (nad_style == D2MIN) { + for (int m = 0; m < 3; m++) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) nad[i][m] = x[i][m]; + } + } + } else { + for (int m = 0; m < 3; m++) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) nad[i][m] = 0.0; + } + } + } + + if (nad_style == D2MIN) { + xprd0 = domain->xprd; + yprd0 = domain->yprd; + zprd0 = domain->zprd; + xprd0_half = domain->xprd_half; + yprd0_half = domain->yprd_half; + zprd0_half = domain->zprd_half; + xy0 = domain->xy; + xz0 = domain->xz; + yz0 = domain->yz; + } + + reference_saved = 1; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::calculate_D2Min() +{ + if (!reference_saved) { + error->warning(FLERR, "Calculating D2Min without a saved reference state"); + return; + } + + // invoke half neighbor list (will copy or build if necessary) + neighbor->build_one(list); + + if (atom->nmax > nmax) + grow_arrays(atom->nmax); + + int i, j, k, l, ii, jj, inum, jnum, itype, jtype; + double evol, j2, edev; + double r[3], r0[3], rsq, rsq0, radsum, temp[3]; + double X_tmp[3][3], Y_tmp[3][3], F_tmp[3][3], E[3][3]; + double Y_inv[3][3] = {0.0}; // Zero for 2d since not all entries used + int *ilist, *jlist, *numneigh, **firstneigh; + + double **x = atom->x; + double **x0 = atom->darray[nad_index]; + double *radius = atom->radius; + tagint *tag = atom->tag; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + Pair *pair = force->pair; + double **cutsq; + if (pair) cutsq = force->pair->cutsq; + + for (i = 0; i < nmax; i++) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[i][k][l] = 0.0; + Y[i][k][l] = 0.0; + } + } + norm[i] = 0; + array_atom[i][0] = 0; + } + + // First loop through neighbors + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbit)) continue; + + jtype = type[j]; + r[0] = x[i][0] - x[j][0]; + r[1] = x[i][1] - x[j][1]; + r[2] = x[i][2] - x[j][2]; + rsq = lensq3(r); + + // Only include contributions from atoms that are CURRENTLY neighbors + if (cut_style == TYPE) { + if (rsq > cutsq[itype][jtype]) continue; + } else if (cut_style == CUSTOM) { + if (rsq > cutsq_custom) continue; + } else { + radsum = radius[i] + radius[j]; + if (rsq > radsum * radsum) continue; + } + + r0[0] = x0[i][0] - x0[j][0]; + r0[1] = x0[i][1] - x0[j][1]; + r0[2] = x0[i][2] - x0[j][2]; + minimum_image0(r0); + + // Using notation from Falk & Langer 1998 + outer3(r, r0, X_tmp); + outer3(r0, r0, Y_tmp); + + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[i][k][l] += X_tmp[k][l]; + Y[i][k][l] += Y_tmp[k][l]; + } + } + + if (newton_pair || j < nlocal) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[j][k][l] += X_tmp[k][l]; + Y[j][k][l] += Y_tmp[k][l]; + } + } + } + } + } + + comm_flag = 0; + if (newton_pair) comm->reverse_comm(this); + + // Calculate contributions to strain tensor + double denom; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++) { + Y_tmp[j][k] = Y[i][j][k]; + X_tmp[j][k] = X[i][j][k]; + } + } + + if (domain->dimension == 3) { + invert3(Y_tmp, Y_inv); + } else { + denom = Y_tmp[0][0] * Y_tmp[1][1] - Y_tmp[0][1] * Y_tmp[1][0]; + if (denom != 0.0) denom = 1.0 / denom; + Y_inv[0][0] = Y_tmp[1][1] * denom; + Y_inv[0][1] = -Y_tmp[0][1] * denom; + Y_inv[1][0] = -Y_tmp[1][0] * denom; + Y_inv[1][1] = Y_tmp[0][0] * denom; + } + + times3(X_tmp, Y_inv, F_tmp); + + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++) { + F[i][j][k] = F_tmp[j][k]; + } + } + } + + comm->forward_comm(this); + + // Second loop through neighbors + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbit)) continue; + + jtype = type[j]; + r[0] = x[i][0] - x[j][0]; + r[1] = x[i][1] - x[j][1]; + r[2] = x[i][2] - x[j][2]; + rsq = lensq3(r); + + // Only include contributions from atoms that are CURRENTLY neighbors + if (cut_style == TYPE) { + if (rsq >= cutsq[itype][jtype]) continue; + } else if (cut_style == CUSTOM) { + if (rsq >= cutsq_custom) continue; + } else { + radsum = radius[i] + radius[j]; + if (rsq >= radsum * radsum) continue; + } + + r0[0] = x0[i][0] - x0[j][0]; + r0[1] = x0[i][1] - x0[j][1]; + r0[2] = x0[i][2] - x0[j][2]; + minimum_image0(r0); + + // E * r0 + for (k = 0; k < 3; k++) { + temp[k] = 0.0; + for (l = 0; l < 3; l++) + temp[k] += F[i][k][l] * r0[l]; + } + + sub3(r, temp, temp); + array_atom[i][0] += lensq3(temp); + norm[i] += 1; + + if (newton_pair || j < nlocal) { + for (k = 0; k < 3; k++) { + temp[k] = 0.0; + for (l = 0; l < 3; l++) + temp[k] += F[j][k][l] * r0[l]; + } + + sub3(r, temp, temp); + array_atom[j][0] += lensq3(temp); + norm[j] += 1; + } + } + } + + comm_flag = 1; + if (newton_pair) comm->reverse_comm(this, 2); + + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + if (norm[i] != 0) + array_atom[i][0] /= norm[i]; + else + array_atom[i][0] = 0.0; + + for (j = 0; j < 3; j++) + for (k = 0; k < 3; k++) + F_tmp[j][k] = F[i][j][k]; + + transpose_times3(F_tmp, F_tmp, E); + for (j = 0; j < 3; j++) E[j][j] -= 1.0; + + evol = (E[0][0] + E[1][1] + E[2][2]) / domain->dimension; + + // Calculate deviatoric strain + for (j = 0; j < 3; j++) E[j][j] -= evol; + j2 = 0.0; + for (j = 0; j < 3; j++) + for (k = 0; k < 3; k++) + j2 += E[j][k] * E[j][k]; + + edev = sqrt(0.5 * j2); + + array_atom[i][1] = evol; + array_atom[i][2] = edev; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixNonaffineDisplacement::pack_reverse_comm(int n, int first, double *buf) +{ + int i, m, last, k, l; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (comm_flag == 0) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + buf[m++] = X[i][k][l]; + buf[m++] = Y[i][k][l]; + } + } + } else { + buf[m++] = array_atom[i][0]; + buf[m++] = ubuf(norm[i]).d; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i, j, m, k, l; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + if (comm_flag == 0) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[j][k][l] += buf[m++]; + Y[j][k][l] += buf[m++]; + } + } + } else { + array_atom[j][0] += buf[m++]; + norm[j] += (int) ubuf(buf[m++]).i; + } + } +} + +/* ---------------------------------------------------------------------- */ + +int FixNonaffineDisplacement::pack_forward_comm(int n, int *list, double *buf, + int /*pbc_flag*/, int * /*pbc*/) +{ + int i, j, m, k, l; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l ++) { + buf[m++] = F[j][k][l]; + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m, last, k, l; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l ++) { + F[i][k][l] = buf[m++]; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::minimum_image0(double *delta) +{ + if (domain->triclinic == 0) { + if (domain->xperiodic) { + while (fabs(delta[0]) > xprd0_half) { + if (delta[0] < 0.0) delta[0] += xprd0; + else delta[0] -= xprd0; + } + } + if (domain->yperiodic) { + while (fabs(delta[1]) > yprd0_half) { + if (delta[1] < 0.0) delta[1] += yprd0; + else delta[1] -= yprd0; + } + } + if (domain->zperiodic) { + while (fabs(delta[2]) > zprd0_half) { + if (delta[2] < 0.0) delta[2] += zprd0; + else delta[2] -= zprd0; + } + } + + } else { + if (domain->zperiodic) { + while (fabs(delta[2]) > zprd0_half) { + if (delta[2] < 0.0) { + delta[2] += zprd0; + delta[1] += yz0; + delta[0] += xz0; + } else { + delta[2] -= zprd0; + delta[1] -= yz0; + delta[0] -= xz0; + } + } + } + if (domain->yperiodic) { + while (fabs(delta[1]) > yprd0_half) { + if (delta[1] < 0.0) { + delta[1] += yprd0; + delta[0] += xy0; + } else { + delta[1] -= yprd0; + delta[0] -= xy0; + } + } + } + if (domain->xperiodic) { + while (fabs(delta[0]) > xprd0_half) { + if (delta[0] < 0.0) delta[0] += xprd0; + else delta[0] -= xprd0; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::grow_arrays(int nmax_new) +{ + nmax = nmax_new; + memory->destroy(array_atom); + memory->destroy(X); + memory->destroy(Y); + memory->destroy(F); + memory->destroy(norm); + memory->create(array_atom, nmax, 3, "fix_nonaffine_displacement:array_atom"); + memory->create(X, nmax, 3, 3, "fix_nonaffine_displacement:X"); + memory->create(Y, nmax, 3, 3, "fix_nonaffine_displacement:Y"); + memory->create(F, nmax, 3, 3, "fix_nonaffine_displacement:F"); + memory->create(norm, nmax, "fix_nonaffine_displacement:norm"); +} diff --git a/src/fix_nonaffine_displacement.h b/src/fix_nonaffine_displacement.h new file mode 100755 index 0000000000..9a914cf5df --- /dev/null +++ b/src/fix_nonaffine_displacement.h @@ -0,0 +1,70 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(nonaffine/displacement,FixNonaffineDisplacement) +// clang-format on +#else + +#ifndef LMP_FIX_NONAFFINE_DISPLACEMENT_H +#define LMP_FIX_NONAFFINE_DISPLACEMENT_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixNonaffineDisplacement : public Fix { + public: + FixNonaffineDisplacement(class LAMMPS *, int, char **); + ~FixNonaffineDisplacement() override; + int setmask() override; + void post_constructor() override; + void init() override; + void init_list(int, class NeighList *) override; + void setup(int); + void post_force(int) override; + void write_restart(FILE *fp) override; + void restart(char *buf) override; + int pack_forward_comm(int, int *, double *, int, int *) override; + void unpack_forward_comm(int, int, double *) override; + int pack_reverse_comm(int, int, double *) override; + void unpack_reverse_comm(int, int *, double *) override; + + private: + double dtv; + char *new_fix_id; + int nad_index, nmax, comm_flag; + int nad_style, cut_style; + int reference_style, offset_timestep, reference_timestep, update_timestep; + int reference_saved; + double cutoff_custom, cutsq_custom, mycutneigh; + double xprd0, yprd0, zprd0, xprd0_half, yprd0_half, zprd0_half, xy0, xz0, yz0; + + double ***X, ***Y, ***F; + int *norm; + + class NeighList *list; // half neighbor list + + + void integrate_velocity(); + void calculate_D2Min(); + void save_reference_state(); + void minimum_image0(double *); + void grow_arrays(int); +}; + +} // namespace LAMMPS_NS + +#endif +#endif From 2fbaeb4fc7033484f5498c541e3c41430b9873a8 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 16:03:30 -0600 Subject: [PATCH 0067/1002] Fixing merge conflict --- doc/src/compute_contact_atom.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/src/compute_contact_atom.rst b/doc/src/compute_contact_atom.rst index 8e94460877..384ede290f 100644 --- a/doc/src/compute_contact_atom.rst +++ b/doc/src/compute_contact_atom.rst @@ -50,9 +50,6 @@ overview of LAMMPS output options. The per-atom vector values will be a number :math:`\ge 0.0`, as explained above. -The optional *group2-ID* argument allows to specify from which group atoms -contribute to the coordination number. Default setting is group 'all.' - Restrictions """""""""""" From 7012e6ddd466684806832b5f2bbbd253d491048b Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 19:06:14 -0600 Subject: [PATCH 0068/1002] Debugging and cleaning up D2min calculation --- src/fix_nonaffine_displacement.cpp | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp index 15c678f83d..e5c5eba4e2 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/fix_nonaffine_displacement.cpp @@ -105,7 +105,7 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * } else if (strcmp(arg[iarg], "offset") == 0) { reference_style = OFFSET; offset_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (offset_timestep < 0) + if ((offset_timestep <= 0) || (offset_timestep > nevery)) error->all(FLERR, "Illegal offset timestep {} in fix nonaffine/displacement", arg[iarg + 1]); } else error->all(FLERR,"Illegal reference style {} in fix nonaffine/displacement", arg[iarg]); @@ -237,6 +237,14 @@ void FixNonaffineDisplacement::setup(int vflag) void FixNonaffineDisplacement::post_force(int /*vflag*/) { + if (reference_saved && !update->setupflag) { + if (nad_style == INTEGRATED) { + integrate_velocity(); + } else { + if ((update->ntimestep % nevery) == 0) calculate_D2Min(); + } + } + if (reference_style == FIXED) if (update->ntimestep == reference_timestep) save_reference_state(); @@ -246,18 +254,8 @@ void FixNonaffineDisplacement::post_force(int /*vflag*/) save_reference_state(); if (reference_style == OFFSET) - if (((update->ntimestep - offset_timestep) % nevery) == 0) + if (((update->ntimestep + offset_timestep) % nevery) == 0) save_reference_state(); - - if (update->setupflag) return; - - if (reference_style == FIXED && (update->ntimestep < reference_timestep)) return; - - if (nad_style == INTEGRATED) { - integrate_velocity(); - } else { - if ((update->ntimestep % nevery) == 0) calculate_D2Min(); - } } /* ---------------------------------------------------------------------- */ @@ -309,17 +307,18 @@ void FixNonaffineDisplacement::save_reference_state() int *mask = atom->mask; int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; double **nad = atom->darray[nad_index]; if (nad_style == D2MIN) { for (int m = 0; m < 3; m++) { - for (int i = 0; i < nlocal; i++) { + for (int i = 0; i < nall; i++) { if (mask[i] & groupbit) nad[i][m] = x[i][m]; } } } else { for (int m = 0; m < 3; m++) { - for (int i = 0; i < nlocal; i++) { + for (int i = 0; i < nall; i++) { if (mask[i] & groupbit) nad[i][m] = 0.0; } } @@ -370,6 +369,7 @@ void FixNonaffineDisplacement::calculate_D2Min() int *mask = atom->mask; int nlocal = atom->nlocal; int newton_pair = force->newton_pair; + int dim = domain->dimension; inum = list->inum; ilist = list->ilist; @@ -450,7 +450,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } comm_flag = 0; - if (newton_pair) comm->reverse_comm(this); + if (newton_pair) comm->reverse_comm(this, 18); // Calculate contributions to strain tensor double denom; @@ -463,7 +463,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } } - if (domain->dimension == 3) { + if (dim == 3) { invert3(Y_tmp, Y_inv); } else { denom = Y_tmp[0][0] * Y_tmp[1][1] - Y_tmp[0][1] * Y_tmp[1][0]; @@ -562,12 +562,12 @@ void FixNonaffineDisplacement::calculate_D2Min() F_tmp[j][k] = F[i][j][k]; transpose_times3(F_tmp, F_tmp, E); - for (j = 0; j < 3; j++) E[j][j] -= 1.0; + for (j = 0; j < dim; j++) E[j][j] -= 1.0; - evol = (E[0][0] + E[1][1] + E[2][2]) / domain->dimension; + evol = (E[0][0] + E[1][1] + E[2][2]) / dim; // Calculate deviatoric strain - for (j = 0; j < 3; j++) E[j][j] -= evol; + for (j = 0; j < dim; j++) E[j][j] -= evol; j2 = 0.0; for (j = 0; j < 3; j++) for (k = 0; k < 3; k++) From a1513a7d3b04c760fff222a275c7e18d09afd540 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 23:06:50 -0600 Subject: [PATCH 0069/1002] rattler documentation --- doc/src/compute_contact_atom.rst | 3 -- doc/src/compute_rattlers.rst | 65 +++++++++++++------------- doc/src/fix_nonaffine_displacement.rst | 10 ++-- 3 files changed, 36 insertions(+), 42 deletions(-) diff --git a/doc/src/compute_contact_atom.rst b/doc/src/compute_contact_atom.rst index 384ede290f..b7ed062ff6 100644 --- a/doc/src/compute_contact_atom.rst +++ b/doc/src/compute_contact_atom.rst @@ -69,6 +69,3 @@ Default """"""" *group2-ID* = all - - -none diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index c26f2b4252..a4ae2d3d16 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -1,6 +1,6 @@ -.. index:: compute contact/atom +.. index:: compute rattlers -compute contact/atom command +compute rattlers command ============================ Syntax @@ -8,67 +8,68 @@ Syntax .. parsed-literal:: - compute ID group-ID contact/atom group2-ID + compute ID group-ID rattlers cutoff zmin ntries * ID, group-ID are documented in :doc:`compute ` command -* contact/atom = style name of this compute command -* group2-ID = optional argument select group-ID to restrict which atoms to consider for contacts (see below) +* rattlers = style name of this compute command +* cutoff = *type* or *radius* + + .. parsed-literal:: + + *type* = cutoffs determined based on atom types + *radius* = cutoffs determined based on atom diameters (atom style sphere) + +* zmin = minimum coordination for a non-rattler particle +* ntries = maximum number of interations to remove rattlers Examples """""""" .. code-block:: LAMMPS - compute 1 all contact/atom - compute 1 all contact/atom mygroup + compute 1 all rattlers type 4 10 Description """"""""""" -Define a computation that calculates the number of contacts -for each atom in a group. - -The contact number is defined for finite-size spherical particles as -the number of neighbor atoms which overlap the central particle, -meaning that their distance of separation is less than or equal to the -sum of the radii of the two particles. - -The value of the contact number will be 0.0 for atoms not in the -specified compute group. - -The optional *group2-ID* argument allows to specify from which group atoms -contribute to the coordination number. Default setting is group 'all'. +Define a compute that identifies rattlers in a system. Rattlers are +identified using an interative approach. The coordination number of +all atoms is first calculated. The *type* and *radius* settings are +used to select whether interactions cutoffs are determined by atom +types or by the sum of atomic radii (atom style sphere), respectively. +Rattlers are then identified as particles with a coordination number +less than *zmin* and are removed from consideration. A coordination +number is then recalaculated, excluding previously identified rattlers, +to identify new rattlers. This process is looped, up to a maximum +of *ntries*, until no new rattlers are identified and the remaining +atoms form a stable network of contacts. Output info """"""""""" -This compute calculates a per-atom vector, whose values can be -accessed by any command that uses per-atom values from a compute as -input. See the :doc:`Howto output ` page for an +This compute calculates a per-atom vector and a global scalar. The vector +designates which atoms are rattlers, indicated by a value 1. Non-rattlers +have a value of 0. The global scalar returns the total number of rattlers +in the system. See the :doc:`Howto output ` page for an overview of LAMMPS output options. -The per-atom vector values will be a number >= 0.0, as explained -above. - Restrictions """""""""""" -This compute is part of the GRANULAR package. It is only enabled if +This compute is part of the EXTRA-COMPUTE package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -This compute requires that atoms store a radius as defined by the -:doc:`atom_style sphere ` command. +The *radius* cutoff option requires that atoms store a radius as defined by the +:doc:`atom_style sphere ` or similar commands. Related commands """""""""""""""" :doc:`compute coord/atom ` +:doc:`compute contact/atom ` Default """"""" -*group2-ID* = all - - none diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 7b0f7669ed..51084c9501 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -1,18 +1,14 @@ -.. index:: fix gravity -.. index:: fix gravity/omp -.. index:: fix gravity/kk +.. index:: fix nonaffine/displacement -fix gravity command +fix nonaffine/displacement command =================== -Accelerator Variants: *gravity/omp*, *gravity/kk* - Syntax """""" .. parsed-literal:: - fix ID group gravity magnitude style args + fix ID group nonaffine/displacement style args reference/style args * ID, group are documented in :doc:`fix ` command * gravity = style name of this fix command From ca636ffa7d44de7f218c2c439ed3133c861aaccc Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 16 Jun 2023 16:28:48 -0600 Subject: [PATCH 0070/1002] Adding d2min doc --- doc/src/fix_nonaffine_displacement.rst | 149 +++++++++++-------------- src/GRANULAR/compute_fabric.cpp | 4 + src/compute_rattlers.cpp | 4 + src/fix_nonaffine_displacement.cpp | 29 ++--- 4 files changed, 91 insertions(+), 95 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 51084c9501..fc3a51b1b6 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -8,129 +8,114 @@ Syntax .. parsed-literal:: - fix ID group nonaffine/displacement style args reference/style args + fix ID group nonaffine/displacement style args reference/style nstep * ID, group are documented in :doc:`fix ` command -* gravity = style name of this fix command -* magnitude = size of acceleration (force/mass units) -* magnitude can be a variable (see below) -* style = *chute* or *spherical* or *gradient* or *vector* +* nonaffine/displacement = style name of this fix command +* nevery = calculate nonaffine displacement every this many timesteps +* style = *d2min* or *integrated* .. parsed-literal:: - *chute* args = angle - angle = angle in +x away from -z or -y axis in 3d/2d (in degrees) - angle can be a variable (see below) - *spherical* args = phi theta - phi = azimuthal angle from +x axis (in degrees) - theta = angle from +z or +y axis in 3d/2d (in degrees) - phi or theta can be a variable (see below) - *vector* args = x y z - x y z = vector direction to apply the acceleration - x or y or z can be a variable (see below) + *d2min* args = cutoff args + cutoff = *type* or *radius* or *custom* + *type* args = none, cutoffs determined by atom types + *radius* args = none, cutoffs determined based on atom diameters (atom style sphere) + *custom* args = *rmax*, cutoff set by a constant numeric value *rmax* + *integrated* args = none + +* reference/style = *fixed* or *update* or *offset* + + .. parsed-literal:: + + *fixed* = use a fixed reference frame at *nstep* + *update* = update the reference frame every *nstep* timesteps + *offset* = update the reference frame *nstep* timesteps before calculating the non/affine displacement Examples """""""" .. code-block:: LAMMPS - fix 1 all gravity 1.0 chute 24.0 - fix 1 all gravity v_increase chute 24.0 - fix 1 all gravity 1.0 spherical 0.0 -180.0 - fix 1 all gravity 10.0 spherical v_phi v_theta - fix 1 all gravity 100.0 vector 1 1 0 + fix 1 all nonaffine/displacement 100 integrated update 100 + fix 1 all nonaffine/displacement 1000 d2min type fixed 0 + fix 1 all nonaffine/displacement 1000 d2min custom 2.0 offset 100 Description """"""""""" -Impose an additional acceleration on each particle in the group. This -fix is typically used with granular systems to include a "gravity" -term acting on the macroscopic particles. More generally, it can -represent any kind of driving field, e.g. a pressure gradient inducing -a Poiseuille flow in a fluid. Note that this fix operates differently -than the :doc:`fix addforce ` command. The addforce fix -adds the same force to each atom, independent of its mass. This -command imparts the same acceleration to each atom (force/mass). +This fix computes different metrics of the nonaffine displacement of +particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}` +nonaffine displacement by Falk and Langer in :ref:`(Falk) `. +For each atom, the fix computes the two tensors -The *magnitude* of the acceleration is specified in force/mass units. -For granular systems (LJ units) this is typically 1.0. See the -:doc:`units ` command for details. +.. math:: -Style *chute* is typically used for simulations of chute flow where -the specified *angle* is the chute angle, with flow occurring in the +x -direction. For 3d systems, the tilt is away from the z axis; for 2d -systems, the tilt is away from the y axis. + X = \sum_{\mathrm{neighbors}} \vec{r} \left(\vec{r}_{0} \right)^T -Style *spherical* allows an arbitrary 3d direction to be specified for -the acceleration vector. *Phi* and *theta* are defined in the usual -spherical coordinates. Thus for acceleration acting in the -z -direction, *theta* would be 180.0 (or -180.0). *Theta* = 90.0 and -*phi* = -90.0 would mean acceleration acts in the -y direction. For -2d systems, *phi* is ignored and *theta* is an angle in the xy plane -where *theta* = 0.0 is the y-axis. +and -Style *vector* imposes an acceleration in the vector direction given -by (x,y,z). Only the direction of the vector is important; it's -length is ignored. For 2d systems, the *z* component is ignored. +.. math:: -Any of the quantities *magnitude*, *angle*, *phi*, *theta*, *x*, *y*, -*z* which define the gravitational magnitude and direction, can be -specified as an equal-style :doc:`variable `. If the value is -a variable, it should be specified as v_name, where name is the -variable name. In this case, the variable will be evaluated each -timestep, and its value used to determine the quantity. You should -insure that the variable calculates a result in the appropriate units, -e.g. force/mass or degrees. + Y = \sum_{\mathrm{neighbors}} \vec{r}_0 \left(\vec{r}_{0} \right)^T -Equal-style variables can specify formulas with various mathematical -functions, and include :doc:`thermo_style ` command -keywords for the simulation box parameters and timestep and elapsed -time. Thus it is easy to specify a time-dependent gravitational -field. +where the neighbors include all other atoms within the distance criterion +set by the cutoff option, discussed below, :math:`\vec{r}` is the current +displacement between particles, and :math:`\vec{r}_0` is the reference +displacement. A deformation gradient tensor is then calculated as +:math:`F = X Y^{-1}` from which ----------- +.. math:: -.. include:: accel_styles.rst + D^2_\mathrm{min} = \sum_{\mathrm{neighbors}} \left| \vec{r} - F \vec{r}_0 \right|^2 + +and a strain tensor is calculated :math:`E = F F^{T} - I` where :math:`I` +is the identity tensor. + +The *integrated* style simply integrates the velocity of particles +every timestep to calculate a displacement. This style only works if +used in conjunction with another fix that deforms the box and displaces +atom positions such as :doc:`the remap x option of fix deform `, +:doc:`fix press/berendsen `, or :doc:`fix nh `. ---------- Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -No information about this fix is written to :doc:`binary restart files `. +The reference state is saved to :doc:`binary restart files `. -The :doc:`fix_modify ` *energy* option is supported by -this fix to add the gravitational potential energy of the system to -the global potential energy of the system as part of -:doc:`thermodynamic output `. The default setting for -this fix is :doc:`fix_modify energy no `. +None of the :doc:`fix_modify ` options are relevant to this +fix. -The :doc:`fix_modify ` *respa* option is supported by this -fix. This allows to set at which level of the :doc:`r-RESPA -` integrator the fix is adding its forces. Default is the -outermost level. +This fix computes a peratom array with 3 columns, which can be accessed +by indices 1-3 using any command that uses per-atom values from a fix +as input. -This fix computes a global scalar which can be accessed by various -:doc:`output commands `. This scalar is the -gravitational potential energy of the particles in the defined field, -namely mass \* (g dot x) for each particles, where x and mass are the -particles position and mass, and g is the gravitational field. The -scalar value calculated by this fix is "extensive". - -No parameter of this fix can be used with the *start/stop* keywords of -the :doc:`run ` command. This fix is not invoked during -:doc:`energy minimization `. +For the *integrated* style, the three columns are the nonaffine +displacements in the x, y, and z directions. For the *d2min* style, +the three columns are the calculated :math:`D^2_\mathrm{min}`, the +volumetric strain, and the deviatoric strain. Restrictions """""""""""" - none + +This compute is part of the EXTRA-FIX package. It is only enabled if +LAMMPS was built with that package. See the +:doc:`Build package ` page for more info. Related commands """""""""""""""" -:doc:`atom_style sphere `, :doc:`fix addforce ` +none Default """"""" none + +---------- + +.. _nh-Martyna: + +**(Martyna)** Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994). \ No newline at end of file diff --git a/src/GRANULAR/compute_fabric.cpp b/src/GRANULAR/compute_fabric.cpp index fb95a8b446..adaf242c92 100644 --- a/src/GRANULAR/compute_fabric.cpp +++ b/src/GRANULAR/compute_fabric.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) +------------------------------------------------------------------------- */ + #include "compute_fabric.h" #include "atom.h" diff --git a/src/compute_rattlers.cpp b/src/compute_rattlers.cpp index 5a6d2b022d..e7e99a7471 100755 --- a/src/compute_rattlers.cpp +++ b/src/compute_rattlers.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) +------------------------------------------------------------------------- */ + #include "compute_rattlers.h" #include "atom.h" diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp index e5c5eba4e2..425800fb45 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/fix_nonaffine_displacement.cpp @@ -12,6 +12,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) +------------------------------------------------------------------------- */ + #include "fix_nonaffine_displacement.h" #include "atom.h" @@ -63,31 +67,30 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * { if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); - int iarg = 3; + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); + + int iarg = 4; if (strcmp(arg[iarg], "integrated") == 0) { nad_style = INTEGRATED; nevery = 1; iarg += 1; } else if (strcmp(arg[iarg], "d2min") == 0) { - if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); - + if (iarg + 1 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); nad_style = D2MIN; - nevery = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); - - if (strcmp(arg[iarg + 2], "type") == 0) { + if (strcmp(arg[iarg + 1], "type") == 0) { cut_style = TYPE; - } else if (strcmp(arg[iarg + 2], "radius") == 0) { + } else if (strcmp(arg[iarg + 1], "radius") == 0) { cut_style = RADIUS; - } else if (strcmp(arg[iarg + 2], "custom") == 0) { - if (iarg + 3 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + } else if (strcmp(arg[iarg + 1], "custom") == 0) { + if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); cut_style = CUSTOM; - cutoff_custom = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + cutoff_custom = utils::numeric(FLERR, arg[iarg + 2], false, lmp); cutsq_custom = cutoff_custom * cutoff_custom; if (cutoff_custom <= 0) - error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 3]); + error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 2]); iarg += 1; - } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 2]); + } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 1]); iarg += 3; } From 2a432bdaf1957df008e548f18744c787ee8ffe71 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 16 Jun 2023 16:32:15 -0600 Subject: [PATCH 0071/1002] Clarifying output as sqrt --- doc/src/fix_nonaffine_displacement.rst | 4 ++-- src/fix_nonaffine_displacement.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index fc3a51b1b6..892a33bb64 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -21,7 +21,7 @@ Syntax cutoff = *type* or *radius* or *custom* *type* args = none, cutoffs determined by atom types *radius* args = none, cutoffs determined based on atom diameters (atom style sphere) - *custom* args = *rmax*, cutoff set by a constant numeric value *rmax* + *custom* args = *rmax*, cutoff set by a constant numeric value *rmax* (distance units) *integrated* args = none * reference/style = *fixed* or *update* or *offset* @@ -94,7 +94,7 @@ as input. For the *integrated* style, the three columns are the nonaffine displacements in the x, y, and z directions. For the *d2min* style, -the three columns are the calculated :math:`D^2_\mathrm{min}`, the +the three columns are the calculated :math:`\sqrt{D^2_\mathrm{min}}`, the volumetric strain, and the deviatoric strain. Restrictions diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp index 425800fb45..24f7b2e70b 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/fix_nonaffine_displacement.cpp @@ -559,6 +559,7 @@ void FixNonaffineDisplacement::calculate_D2Min() array_atom[i][0] /= norm[i]; else array_atom[i][0] = 0.0; + array_atom[i][0] = sqrt(array_atom[i][0]); for (j = 0; j < 3; j++) for (k = 0; k < 3; k++) From af76ffdfdacf2faaf4b6740c1e57993e28ad54e7 Mon Sep 17 00:00:00 2001 From: Vladislav Galigerov Date: Sun, 18 Jun 2023 17:08:49 +0300 Subject: [PATCH 0072/1002] ROCM aware OpenMPI support --- src/KOKKOS/kokkos.cpp | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index 91ea6d37ac..7f3f9f0d10 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -43,8 +43,7 @@ #define GPU_AWARE_UNKNOWN static int have_gpu_aware = -1; -// TODO HIP: implement HIP-aware MPI support (UCX) detection -#if defined(KOKKOS_ENABLE_HIP) || defined(KOKKOS_ENABLE_SYCL) || defined(KOKKOS_ENABLE_OPENMPTARGET) +#if defined(KOKKOS_ENABLE_SYCL) || defined(KOKKOS_ENABLE_OPENMPTARGET) GPU_AWARE_UNKNOWN #elif defined(KOKKOS_ENABLE_CUDA) @@ -71,7 +70,28 @@ GPU_AWARE_UNKNOWN GPU_AWARE_UNKNOWN #endif // OPEN_MPI -#endif // KOKKOS_ENABLE_CUDA +#elif defined(KOKKOS_ENABLE_HIP) + +// OpenMPI supports detecting HIP-aware MPI as of version 5.0.0 +#if (OPEN_MPI) +#if (OMPI_MAJOR_VERSION >= 5) +#include +#if defined(OMPI_HAVE_MPI_EXT_ROCM) && OMPI_HAVE_MPI_EXT_ROCM +// May have rocm enabled: below we will check dynamically with MPIX_Query_rocm_support() +static int have_gpu_aware = 1; +#elif defined(OMPI_HAVE_MPI_EXT_ROCM) && !OMPI_HAVE_MPI_EXT_ROCM +static int have_gpu_aware = 0; +#else +GPU_AWARE_UNKNOWN +#endif // defined(OMPI_HAVE_MPI_EXT_ROCM) +#else // old OpenMPI +GPU_AWARE_UNKNOWN +#endif // (OMPI_MAJOR_VERSION >=5) +#else // unknown MPI library +GPU_AWARE_UNKNOWN +#endif // OPEN_MPI + +#endif // KOKKOS_ENABLE_CUDA & KOKKOS_ENABLE_HIP #endif // LMP_ENABLE_DEVICE @@ -236,8 +256,20 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) binsize = 0.0; #ifdef KOKKOS_ENABLE_CUDA - // TODO HIP: implement HIP-aware MPI testing gpu_aware_flag = 1; +#elif defined(KOKKOS_ENABLE_HIP) && defined(OMPI_HAVE_MPI_EXT_ROCM) && OMPI_HAVE_MPI_EXT_ROCM + if(have_gpu_aware == 1) + { + gpu_aware_flag = MPIX_Query_rocm_support(); + if(gpu_aware_flag && me == 0) + { + error->warning(FLERR,"ROCm-aware OpenMPI is supported and enabled (debug msg, remove it later)"); + } + } + else + { + gpu_aware_flag = 0; + } #else gpu_aware_flag = 0; #endif From 42c843ff4f783069d409404be42fa89c43f60ccc Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:24:24 +0300 Subject: [PATCH 0073/1002] remove iostream from bond_gaussian.cpp --- src/EXTRA-MOLECULE/bond_gaussian.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/bond_gaussian.cpp b/src/EXTRA-MOLECULE/bond_gaussian.cpp index 816ab51516..9a8546e278 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.cpp +++ b/src/EXTRA-MOLECULE/bond_gaussian.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ #include "bond_gaussian.h" -#include + #include "atom.h" #include "comm.h" #include "error.h" From 4e17cc551e93faf1433bb002bfbde9838684c2eb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:25:35 +0300 Subject: [PATCH 0074/1002] inlcude born_matrix() definition in in angle_quartic.h --- src/EXTRA-MOLECULE/angle_quartic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/angle_quartic.h b/src/EXTRA-MOLECULE/angle_quartic.h index 3f0396f27b..7de51b24d1 100644 --- a/src/EXTRA-MOLECULE/angle_quartic.h +++ b/src/EXTRA-MOLECULE/angle_quartic.h @@ -35,6 +35,7 @@ class AngleQuartic : public Angle { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; protected: double *k2, *k3, *k4, *theta0; From eb8512ba2a988b9baea384fe96aa935c28e6005a Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:26:48 +0300 Subject: [PATCH 0075/1002] implementation of born_matrix() for angle_quartic.cpp --- src/EXTRA-MOLECULE/angle_quartic.cpp | 41 +++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/angle_quartic.cpp b/src/EXTRA-MOLECULE/angle_quartic.cpp index f28e209a77..eaccdbe608 100644 --- a/src/EXTRA-MOLECULE/angle_quartic.cpp +++ b/src/EXTRA-MOLECULE/angle_quartic.cpp @@ -37,7 +37,10 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -AngleQuartic::AngleQuartic(LAMMPS *lmp) : Angle(lmp) {} +AngleQuartic::AngleQuartic(LAMMPS *lmp) : Angle(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -286,3 +289,39 @@ double AngleQuartic::single(int type, int i1, int i2, int i3) double dtheta4 = dtheta3 * dtheta; return k2[type] * dtheta2 + k3[type] * dtheta3 + k4[type] * dtheta4; } + +/* ---------------------------------------------------------------------- */ + +void AngleQuartic::born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1,dely1,delz1); + double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2,dely2,delz2); + double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + + double c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + double theta = acos(c); + + double s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + + double dtheta = theta - theta0[type]; + double dtheta2 = dtheta * dtheta; + double dtheta3 = dtheta2 * dtheta; + + du = -(2.0 * k2[type] * dtheta + 3.0 * k3[type] * dtheta2 + 4.0 * k4[type] * dtheta3) / s; + du2 = (2.0 * k2[type] + 6.0 * k3[type] * dtheta + 12.0 * k4[type] * dtheta2) / (s*s) - + (2.0 * k2[type] * dtheta + 3.0 * k3[type] * dtheta2 + 4.0 * k4[type] * dtheta3) * c / (s*s*s); +} From 365f4bc55945506de57e44dc0c6ec7102fa2d000 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:44:28 +0300 Subject: [PATCH 0076/1002] non-zero born_matrix_enable flag in angle_fourier.cpp --- src/EXTRA-MOLECULE/angle_fourier.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/angle_fourier.cpp b/src/EXTRA-MOLECULE/angle_fourier.cpp index 549da0c196..c7eb3d4fe4 100644 --- a/src/EXTRA-MOLECULE/angle_fourier.cpp +++ b/src/EXTRA-MOLECULE/angle_fourier.cpp @@ -39,6 +39,7 @@ using namespace MathConst; AngleFourier::AngleFourier(LAMMPS *lmp) : Angle(lmp) { + born_matrix_enable = 1; k = nullptr; C0 = nullptr; C1 = nullptr; From 2f227614615219d13538481646563c2a8111f251 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 16:38:34 +0300 Subject: [PATCH 0077/1002] born_matrix() method in bond_mm3.h --- src/YAFF/bond_mm3.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/YAFF/bond_mm3.h b/src/YAFF/bond_mm3.h index 302c4052d0..ea89ac826d 100644 --- a/src/YAFF/bond_mm3.h +++ b/src/YAFF/bond_mm3.h @@ -35,6 +35,7 @@ class BondMM3 : public Bond { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, double, int, int, double &) override; + void born_matrix(int, double, int, int, double &, double &) override; protected: double *r0, *k2; From bfc969d5c5ee4da4e9062bffe7f96d55ffb318ab Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 16:39:49 +0300 Subject: [PATCH 0078/1002] implementation of born_matrix in bond_mm3.cpp --- src/YAFF/bond_mm3.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/YAFF/bond_mm3.cpp b/src/YAFF/bond_mm3.cpp index a5ef6fb8bc..31ce2dad3e 100644 --- a/src/YAFF/bond_mm3.cpp +++ b/src/YAFF/bond_mm3.cpp @@ -31,7 +31,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -BondMM3::BondMM3(LAMMPS *lmp) : Bond(lmp) {} +BondMM3::BondMM3(LAMMPS *lmp) : Bond(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -219,3 +222,19 @@ double BondMM3::single(int type, double rsq, else fforce = 0.0; return k2[type]*dr2*(1.0+K3*dr+K4*dr2); } + +/* ---------------------------------------------------------------------- */ + +void BondMM3::born_matrix(int type, double rsq, int /*i*/, int /*j*/, double &du, double &du2) +{ + double r = sqrt(rsq); + double dr = r - r0[type]; + double dr2 = dr * dr; + double dr3 = dr2 * dr; + + double K3 = -2.55 * k2[type] /force->angstrom; + double K4 = 7.0 * k2[type] * 2.55 * 2.55 / (12.0 * force->angstrom * force->angstrom); + + du = 2.0 * k2[type] * dr + 3.0 * K3 * dr2 + 4.0 * K4 * dr3; + du2 = 2.0 * k2[type] + 6.0 * K3 * dr + 12.0 * K4 * dr2; +} From 6c9d42b7c363a66fa56739f7d3ba3dbc5a1952c2 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:38:50 +0300 Subject: [PATCH 0079/1002] Include born_matrix() definition in bond_harmonic_shift_cut.h --- src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h index 752ac010d9..09d6ab5330 100644 --- a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h +++ b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h @@ -35,6 +35,7 @@ class BondHarmonicShiftCut : public Bond { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, double, int, int, double &) override; + void born_matrix(int, double, int, int, double &, double &) override; protected: double *k, *r0, *r1; From f6b259b1866d9d5316d6464eae7d551fea9fc760 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:40:11 +0300 Subject: [PATCH 0080/1002] Implementing born_matrix in bond_harmonic_shift_cut.cpp --- .../bond_harmonic_shift_cut.cpp | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp index fedcb95ee8..ebcfdb0258 100644 --- a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp +++ b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp @@ -31,7 +31,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -BondHarmonicShiftCut::BondHarmonicShiftCut(LAMMPS *lmp) : Bond(lmp) {} +BondHarmonicShiftCut::BondHarmonicShiftCut(LAMMPS *lmp) : Bond(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -219,3 +222,19 @@ double BondHarmonicShiftCut::single(int type, double rsq, int /*i*/, int /*j*/, fforce = -2.0*k[type]*dr/r; return k[type]*(dr*dr - dr2*dr2); } + +/* ---------------------------------------------------------------------- */ + +void BondHarmonicShiftCut::born_matrix(int type, double rsq, int /*i*/, int /*j*/, double &du, double &du2) +{ + du = 0.0; + du2 = 0.0; + + double r = sqrt(rsq); + if (r>r1[type]) return; + + double dr = r - r0[type]; + + du2 = 2 * k[type]; + if (r > 0.0) du = du2 * dr; +} From ad3752431fe9711ef40f2d53cd28d7ab83153b73 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:42:01 +0300 Subject: [PATCH 0081/1002] Regular pointer for coord and coordp in compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index 2b0ffef0f8..1b5b3a911f 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -49,7 +49,7 @@ class ComputeStressMopProfile : public Compute { int originflag; double origin, delta, offset, invdelta; int nbins; - double **coord, **coordp; + double *coord, *coordp; double **values_local, **values_global; double **bond_local, **bond_global; double **local_contribution; From dc1eb43cf2f15c61c0b44bb872407c4b5091e135 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:47:34 +0300 Subject: [PATCH 0082/1002] Cleaning coord and coordp vectors in compute_stress_mop_profile.cpp --- .../compute_stress_mop_profile.cpp | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 1f1dc30733..3a85869f3c 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -258,7 +258,7 @@ void ComputeStressMopProfile::compute_array() MPI_Allreduce(&bond_local[0][0],&bond_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); for (int ibin=0; ibin ((hi-lo) * invdelta + 1.5); //allocate bin arrays - memory->create(coord,nbins,1,"stress/mop/profile:coord"); - memory->create(coordp,nbins,1,"stress/mop/profile:coordp"); + memory->create(coord,nbins,"stress/mop/profile:coord"); + memory->create(coordp,nbins,"stress/mop/profile:coordp"); memory->create(values_local,nbins,nvalues,"stress/mop/profile:values_local"); memory->create(values_global,nbins,nvalues,"stress/mop/profile:values_global"); memory->create(bond_local,nbins,nvalues,"stress/mop/profile:bond_local"); @@ -652,11 +652,11 @@ void ComputeStressMopProfile::setup_bins() // set bin coordinates for (i = 0; i < nbins; i++) { - coord[i][0] = offset + i*delta; - if (coord[i][0] < (domain->boxlo[dir]+domain->prd_half[dir])) { - coordp[i][0] = coord[i][0] + domain->prd[dir]; + coord[i] = offset + i*delta; + if (coord[i] < (domain->boxlo[dir]+domain->prd_half[dir])) { + coordp[i] = coord[i] + domain->prd[dir]; } else { - coordp[i][0] = coord[i][0] - domain->prd[dir]; + coordp[i] = coord[i] - domain->prd[dir]; } } } From 2631a159affeedef3dd2eeaaa1c3ca0529396b97 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 15:41:09 +0300 Subject: [PATCH 0083/1002] define born_matrix in angle_mm3.h --- src/YAFF/angle_mm3.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/YAFF/angle_mm3.h b/src/YAFF/angle_mm3.h index 95009a9cf6..22f5bd746c 100644 --- a/src/YAFF/angle_mm3.h +++ b/src/YAFF/angle_mm3.h @@ -35,6 +35,7 @@ class AngleMM3 : public Angle { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; protected: double *theta0, *k2; From bb2d691e7863e5b4746da6fd8f6a951581cbde51 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 15:42:47 +0300 Subject: [PATCH 0084/1002] implement born_matrix in angle_mm3.cpp --- src/YAFF/angle_mm3.cpp | 45 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/YAFF/angle_mm3.cpp b/src/YAFF/angle_mm3.cpp index c75a0d8308..af199f6fe9 100644 --- a/src/YAFF/angle_mm3.cpp +++ b/src/YAFF/angle_mm3.cpp @@ -36,7 +36,10 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -AngleMM3::AngleMM3(LAMMPS *lmp) : Angle(lmp) {} +AngleMM3::AngleMM3(LAMMPS *lmp) : Angle(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -284,3 +287,43 @@ double AngleMM3::single(int type, int i1, int i2, int i3) return energy; } + +/* ---------------------------------------------------------------------- */ + +void AngleMM3::born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1,dely1,delz1); + double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2,dely2,delz2); + double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + + double c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + double theta = acos(c); + + double s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + s = 1.0/s; + + double dtheta = theta - theta0[type]; + double dtheta2 = dtheta*dtheta; + double dtheta3 = dtheta2*dtheta; + double dtheta4 = dtheta3*dtheta; + double dtheta5 = dtheta4*dtheta; + double df = 2.0 * dtheta - 2.406423 * dtheta2 + 0.735348 * dtheta3 - 0.65832 * dtheta4 + 1.42254 * dtheta5; + double d2f = 2.0 - 4.812846 * dtheta + 2.206044 * dtheta2 - 2.63328 * dtheta3 + 7.1127 * dtheta4; + + du = -k2[type] * df / s; + du2 = k2[type] * (d2f - df * c / s) / (s * s) ; +} From 345a834c7e0693770e37a13005118ad29e19ff7b Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 16:20:57 +0300 Subject: [PATCH 0085/1002] Include definition of born_matrix() in angle_cosine_periodic.h --- src/EXTRA-MOLECULE/angle_cosine_periodic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/angle_cosine_periodic.h b/src/EXTRA-MOLECULE/angle_cosine_periodic.h index 4e584b4543..f04ed04784 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_periodic.h +++ b/src/EXTRA-MOLECULE/angle_cosine_periodic.h @@ -35,6 +35,7 @@ class AngleCosinePeriodic : public Angle { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; protected: double *k; From 7f3a930d8923a13fb14c02e85d56edb703b1c2cd Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 16:21:57 +0300 Subject: [PATCH 0086/1002] Implement born_matrix() in angle_cosine_periodic.cpp --- src/EXTRA-MOLECULE/angle_cosine_periodic.cpp | 40 +++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp b/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp index 15d0575f6d..34a8e9d8e5 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp @@ -38,7 +38,10 @@ using namespace MathSpecial; /* ---------------------------------------------------------------------- */ -AngleCosinePeriodic::AngleCosinePeriodic(LAMMPS *lmp) : Angle(lmp) {} +AngleCosinePeriodic::AngleCosinePeriodic(LAMMPS *lmp) : Angle(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -298,3 +301,38 @@ double AngleCosinePeriodic::single(int type, int i1, int i2, int i3) c = cos(acos(c)*multiplicity[type]); return 2.0*k[type]*(1.0-b[type]*powsign(multiplicity[type])*c); } + +/* ---------------------------------------------------------------------- */ + +void AngleCosinePeriodic::born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1,dely1,delz1); + double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2,dely2,delz2); + double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + + double c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + double theta = acos(c); + + double s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + s = 1.0/s; + + double m_angle = multiplicity[type] * theta; + double prefactor = -2.0 * k[type] * b[type] * powsign(multiplicity[type]) * multiplicity[type]; + + du = prefactor * sin(m_angle) / s; + du2 = prefactor * (c * sin(m_angle) - s * cos(m_angle) * multiplicity[type]) / (s * s * s); +} From fb31ffe17cbff6854bc60870a8be54258df7ed07 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 21 Jun 2023 10:56:53 +0300 Subject: [PATCH 0087/1002] Definition of born_matrix() in dihedral_helix.h --- src/EXTRA-MOLECULE/dihedral_helix.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/dihedral_helix.h b/src/EXTRA-MOLECULE/dihedral_helix.h index 436895c5c3..172a8c3469 100644 --- a/src/EXTRA-MOLECULE/dihedral_helix.h +++ b/src/EXTRA-MOLECULE/dihedral_helix.h @@ -33,6 +33,7 @@ class DihedralHelix : public Dihedral { void write_restart(FILE *) override; void read_restart(FILE *) override; void write_data(FILE *) override; + void born_matrix(int, int, int, int, int, double &, double &) override; protected: double *aphi, *bphi, *cphi; From 7ab9da0212f1f3601f7238fe2997f9313d8cc923 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 21 Jun 2023 10:59:13 +0300 Subject: [PATCH 0088/1002] Implementation of born_matrix in dihedral_helix.cpp --- src/EXTRA-MOLECULE/dihedral_helix.cpp | 106 ++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/src/EXTRA-MOLECULE/dihedral_helix.cpp b/src/EXTRA-MOLECULE/dihedral_helix.cpp index 059bef74a4..1d99de6ba9 100644 --- a/src/EXTRA-MOLECULE/dihedral_helix.cpp +++ b/src/EXTRA-MOLECULE/dihedral_helix.cpp @@ -41,6 +41,7 @@ using namespace MathConst; DihedralHelix::DihedralHelix(LAMMPS *lmp) : Dihedral(lmp) { writedata = 1; + born_matrix_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -324,3 +325,108 @@ void DihedralHelix::write_data(FILE *fp) for (int i = 1; i <= atom->ndihedraltypes; i++) fprintf(fp,"%d %g %g %g\n",i,aphi[i],bphi[i],cphi[i]); } + +/* ----------------------------------------------------------------------*/ + +void DihedralHelix::born_matrix(int nd, int i1, int i2, int i3, int i4, + double &du, double &du2) +{ + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double sb1,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s12,c; + double cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + + int **dihedrallist = neighbor->dihedrallist; + double **x = atom->x; + + int type = dihedrallist[nd][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + cx = vb1y*vb2z - vb1z*vb2y; + cy = vb1z*vb2x - vb1x*vb2z; + cz = vb1x*vb2y - vb1y*vb2x; + cmag = sqrt(cx*cx + cy*cy + cz*cz); + dx = (cx*vb3x + cy*vb3y + cz*vb3z)/cmag/b3mag; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) problem(FLERR, i1, i2, i3, i4); + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + phi = acos(c); + if (dx > 0.0) phi *= -1.0; + si = sin(phi); + if (fabs(si) < SMALLER) si = SMALLER; + siinv = 1.0/si; + + du = -aphi[type] + 3.0*bphi[type]*sin(3.0*phi)*siinv + + cphi[type]*sin(phi + MY_PI4)*siinv; + du2 = -(9.0*bphi[type]*cos(3.0*phi) + cphi[type]*cos(phi + MY_PI4))*siinv*siinv + + (3.0*bphi[type]*sin(3.0*phi) + cphi[type]*sin(phi + MY_PI4))*c*siinv*siinv*siinv; +} From ae96c9bd47e52d3c3066b40914b8e27ab6b042eb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 22 Jun 2023 16:58:00 +0300 Subject: [PATCH 0089/1002] Define born_matrix() in dihedral_quadratic.h --- src/EXTRA-MOLECULE/dihedral_quadratic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/dihedral_quadratic.h b/src/EXTRA-MOLECULE/dihedral_quadratic.h index 90d8c3be6e..89f6fa3b25 100644 --- a/src/EXTRA-MOLECULE/dihedral_quadratic.h +++ b/src/EXTRA-MOLECULE/dihedral_quadratic.h @@ -33,6 +33,7 @@ class DihedralQuadratic : public Dihedral { void write_restart(FILE *) override; void read_restart(FILE *) override; void write_data(FILE *) override; + void born_matrix(int, int, int, int, int, double &, double &) override; protected: double *k, *phi0; From 8e1711c8031699756ba3b5d84fa4582ad161a357 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 22 Jun 2023 17:00:10 +0300 Subject: [PATCH 0090/1002] Implement born_matrix in dihedral_quadratic.cpp --- src/EXTRA-MOLECULE/dihedral_quadratic.cpp | 110 ++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/src/EXTRA-MOLECULE/dihedral_quadratic.cpp b/src/EXTRA-MOLECULE/dihedral_quadratic.cpp index cbe9e3e3a2..f576e6efdd 100644 --- a/src/EXTRA-MOLECULE/dihedral_quadratic.cpp +++ b/src/EXTRA-MOLECULE/dihedral_quadratic.cpp @@ -41,6 +41,7 @@ using namespace MathConst; DihedralQuadratic::DihedralQuadratic(LAMMPS *lmp) : Dihedral(lmp) { writedata = 1; + born_matrix_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -327,3 +328,112 @@ void DihedralQuadratic::write_data(FILE *fp) for (int i = 1; i <= atom->ndihedraltypes; i++) fprintf(fp,"%d %g %g \n",i,k[i],phi0[i]*180.0/MY_PI); } + +/* ----------------------------------------------------------------------*/ + +void DihedralQuadratic::born_matrix(int nd, int i1, int i2, int i3, int i4, + double &du, double &du2) +{ + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double sb1,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s12,c; + double s1,s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + + int **dihedrallist = neighbor->dihedrallist; + double **x = atom->x; + + int type = dihedrallist[nd][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // 3rd bond + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + cx = vb1y*vb2z - vb1z*vb2y; + cy = vb1z*vb2x - vb1x*vb2z; + cz = vb1x*vb2y - vb1y*vb2x; + cmag = sqrt(cx*cx + cy*cy + cz*cz); + dx = (cx*vb3x + cy*vb3y + cz*vb3z)/cmag/b3mag; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) + problem(FLERR, i1, i2, i3, i4); + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + phi = acos(c); + if (dx > 0.0) phi *= -1.0; + si = sin(phi); + if (fabs(si) < SMALLER) si = SMALLER; + siinv = 1.0/si; + + double dphi = phi-phi0[type]; + if (dphi > MY_PI) dphi -= 2*MY_PI; + else if (dphi < -MY_PI) dphi += 2*MY_PI; + + du = - 2.0 * k[type] * dphi * siinv; + du2 = 2.0 * k[type] * siinv * siinv * ( 1.0 - dphi * c * siinv) ; +} From 6e32d2932275271ced51152b3c849318c8956601 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 29 Jun 2023 08:53:50 +0300 Subject: [PATCH 0091/1002] clean up of originflag variable in compute_stress_mop_profile.cpp --- .../compute_stress_mop_profile.cpp | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 3a85869f3c..d37a941fde 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -38,7 +38,6 @@ using namespace LAMMPS_NS; enum { X, Y, Z }; -enum { LOWER, CENTER, UPPER, COORD }; enum { TOTAL, CONF, KIN, PAIR, BOND }; // clang-format off @@ -63,11 +62,15 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a // bin parameters - if (strcmp(arg[4],"lower") == 0) originflag = LOWER; - else if (strcmp(arg[4],"center") == 0) originflag = CENTER; - else if (strcmp(arg[4],"upper") == 0) originflag = UPPER; - else originflag = COORD; - if (originflag == COORD) origin = utils::numeric(FLERR,arg[4],false,lmp); + if (strcmp(arg[4],"lower") == 0) { + origin = domain->boxlo[dir]; + } else if (strcmp(arg[4],"center") == 0) { + origin = 0.5 * (domain->boxlo[dir] + domain->boxhi[dir]); + } else if (strcmp(arg[4],"upper") == 0) { + origin = domain->boxhi[dir]; + } else { + origin = utils::numeric(FLERR,arg[4],false,lmp); + } delta = utils::numeric(FLERR,arg[5],false,lmp); invdelta = 1.0/delta; @@ -620,23 +623,14 @@ void ComputeStressMopProfile::setup_bins() boxlo = domain->boxlo; boxhi = domain->boxhi; - if (originflag == LOWER) origin = boxlo[dir]; - else if (originflag == UPPER) origin = boxhi[dir]; - else if (originflag == CENTER) - origin = 0.5 * (boxlo[dir] + boxhi[dir]); + if ((origin > domain->boxhi[dir]) || (origin < domain->boxlo[dir])) + error->all(FLERR,"Origin of bins for compute stress/mop/profile is out of bounds" ); - if (origin < boxlo[dir]) { - error->all(FLERR,"Origin of bins for compute stress/mop/profile is out of bounds" ); - } else { - n = static_cast ((origin - boxlo[dir]) * invdelta); - lo = origin - n*delta; - } - if (origin < boxhi[dir]) { - n = static_cast ((boxhi[dir] - origin) * invdelta); - hi = origin + n*delta; - } else { - error->all(FLERR,"Origin of bins for compute stress/mop/profile is out of bounds" ); - } + n = static_cast ((origin - boxlo[dir]) * invdelta); + lo = origin - n*delta; + + n = static_cast ((boxhi[dir] - origin) * invdelta); + hi = origin + n*delta; offset = lo; nbins = static_cast ((hi-lo) * invdelta + 1.5); From 484e7ad0e3c295514f063e1e7933f3683e93f383 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 29 Jun 2023 08:54:30 +0300 Subject: [PATCH 0092/1002] clean up of originflag from compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index 1b5b3a911f..5890505d71 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -46,7 +46,6 @@ class ComputeStressMopProfile : public Compute { int bondflag; - int originflag; double origin, delta, offset, invdelta; int nbins; double *coord, *coordp; From 378ef4b23e26f570a8257206943e8df820e9e2da Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Jun 2023 22:59:41 -0400 Subject: [PATCH 0093/1002] require CMake version 3.16 --- cmake/CMakeLists.jpeg | 5 +++-- cmake/CMakeLists.png | 4 ++-- cmake/CMakeLists.txt | 3 ++- cmake/CMakeLists.zlib | 5 +++-- examples/COUPLE/plugin/CMakeLists.txt | 5 ++--- examples/COUPLE/simple/CMakeLists.txt | 4 +++- examples/PACKAGES/pace/plugin/CMakeLists.txt | 5 ++--- examples/kim/plugin/CMakeLists.txt | 3 +-- examples/plugins/CMakeLists.txt | 5 ++--- tools/phonon/CMakeLists.spglib | 4 ++-- tools/phonon/CMakeLists.txt | 3 ++- tools/phonon/tricubic/CMakeLists.txt | 3 ++- tools/swig/CMakeLists.txt | 4 ++-- unittest/CMakeLists.txt | 5 ++--- unittest/c-library/CMakeLists.txt | 1 + unittest/commands/CMakeLists.txt | 1 + unittest/cplusplus/CMakeLists.txt | 1 + unittest/force-styles/CMakeLists.libyaml | 2 +- unittest/force-styles/CMakeLists.txt | 1 + unittest/formats/CMakeLists.txt | 1 + unittest/fortran/CMakeLists.txt | 2 ++ unittest/python/CMakeLists.txt | 9 +++++---- unittest/tools/CMakeLists.txt | 1 + unittest/utils/CMakeLists.txt | 1 + 24 files changed, 45 insertions(+), 33 deletions(-) diff --git a/cmake/CMakeLists.jpeg b/cmake/CMakeLists.jpeg index f0bd85a90d..74231eea04 100644 --- a/cmake/CMakeLists.jpeg +++ b/cmake/CMakeLists.jpeg @@ -1,4 +1,5 @@ -cmake_minimum_required(VERSION 3.10) +# -*- CMake -*- configuration for file for building libjpeg-turbo +cmake_minimum_required(VERSION 3.16) # When using CMake 3.4 and later, don't export symbols from executables unless # the CMAKE_ENABLE_EXPORTS variable is set. if(POLICY CMP0065) @@ -612,4 +613,4 @@ else() set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}") set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c) set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c) -endif() \ No newline at end of file +endif() diff --git a/cmake/CMakeLists.png b/cmake/CMakeLists.png index 2521ab41be..0632044396 100644 --- a/cmake/CMakeLists.png +++ b/cmake/CMakeLists.png @@ -1,4 +1,4 @@ -# CMakeLists.txt +# -*- CMake -*- configuration for file for building libpng # Copyright (C) 2018 Cosmin Truta # Copyright (C) 2007,2009-2018 Glenn Randers-Pehrson @@ -18,7 +18,7 @@ # For conditions of distribution and use, see the disclaimer # and license in png.h -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) cmake_policy(VERSION 3.1) # When using CMake 3.4 and later, don't export symbols from executables unless # the CMAKE_ENABLE_EXPORTS variable is set. diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 88b7ec422e..24b08ae667 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1,8 +1,9 @@ +# -*- CMake -*- master configuration file for building LAMMPS ######################################## # CMake build system # This file is part of LAMMPS # Created by Christoph Junghans and Richard Berger -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) ######################################## # set policy to silence warnings about ignoring _ROOT but use it if(POLICY CMP0074) diff --git a/cmake/CMakeLists.zlib b/cmake/CMakeLists.zlib index a33f14ce64..8496c6d7be 100644 --- a/cmake/CMakeLists.zlib +++ b/cmake/CMakeLists.zlib @@ -1,4 +1,5 @@ -cmake_minimum_required(VERSION 3.10) +# -*- CMake -*- configuration for file for building libz +cmake_minimum_required(VERSION 3.16) # When using CMake 3.4 and later, don't export symbols from executables unless # the CMAKE_ENABLE_EXPORTS variable is set. if(POLICY CMP0065) @@ -192,4 +193,4 @@ add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZL if(UNIX) # On unix-like platforms the library is almost always called libz set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z) -endif() \ No newline at end of file +endif() diff --git a/examples/COUPLE/plugin/CMakeLists.txt b/examples/COUPLE/plugin/CMakeLists.txt index f4064d3f65..0e0371d47b 100644 --- a/examples/COUPLE/plugin/CMakeLists.txt +++ b/examples/COUPLE/plugin/CMakeLists.txt @@ -1,9 +1,8 @@ -########################################## -# CMake build system for coupling to the LAMMPS library +# -*- CMake -*- file for example programs that use the LAMMPS library # where the library is loaded dynamically at runtime. ########################################## -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) # enforce out-of-source build if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index 14c253e5a1..9e5bb1057d 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -1,4 +1,6 @@ -cmake_minimum_required(VERSION 3.10) +# -*- CMake -*- file for simple examples using the LAMMPS library interface + +cmake_minimum_required(VERSION 3.16) # enforce out-of-source build if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) diff --git a/examples/PACKAGES/pace/plugin/CMakeLists.txt b/examples/PACKAGES/pace/plugin/CMakeLists.txt index 25fa877ffc..0701a754c4 100644 --- a/examples/PACKAGES/pace/plugin/CMakeLists.txt +++ b/examples/PACKAGES/pace/plugin/CMakeLists.txt @@ -1,10 +1,9 @@ -########################################## -# CMake build system for plugin examples. +# -*- CMake -*- build system for plugin examples. # The is meant to be used as a template for plugins that are # distributed independent from the LAMMPS package. ########################################## -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) project(paceplugin VERSION 1.0 LANGUAGES CXX) diff --git a/examples/kim/plugin/CMakeLists.txt b/examples/kim/plugin/CMakeLists.txt index 78d117469d..367c0b5b78 100644 --- a/examples/kim/plugin/CMakeLists.txt +++ b/examples/kim/plugin/CMakeLists.txt @@ -1,5 +1,4 @@ -########################################## -# CMake build system for plugin examples. +# -*- CMake -*- file for building plugins. # The is meant to be used as a template for plugins that are # distributed independent from the LAMMPS package. ########################################## diff --git a/examples/plugins/CMakeLists.txt b/examples/plugins/CMakeLists.txt index 688835de56..a9c8f41f74 100644 --- a/examples/plugins/CMakeLists.txt +++ b/examples/plugins/CMakeLists.txt @@ -1,10 +1,9 @@ -########################################## -# CMake build system for plugin examples. +# -*- CMake -*- file for plugin examples. # The is meant to be used as a template for plugins that are # distributed independent from the LAMMPS package. ########################################## -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) # enforce out-of-source build if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) diff --git a/tools/phonon/CMakeLists.spglib b/tools/phonon/CMakeLists.spglib index 566e58a2b6..65299a18e2 100644 --- a/tools/phonon/CMakeLists.spglib +++ b/tools/phonon/CMakeLists.spglib @@ -1,4 +1,5 @@ -cmake_minimum_required(VERSION 3.10) +# -*- CMake -*- file for building spglib for phana +cmake_minimum_required(VERSION 3.16) project(spglib C) set(CMAKE_MACOSX_RPATH 1) set(CMAKE_C_FLAGS_RELEASE "-Wall -O2") @@ -10,7 +11,6 @@ message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") set(CMAKE_POSITION_INDEPENDENT_CODE ON) - # Version numbers file(READ ${PROJECT_SOURCE_DIR}/src/version.h version_file) string(REGEX MATCH "SPGLIB_MAJOR_VERSION ([0-9]+)" spglib_major_version ${version_file}) diff --git a/tools/phonon/CMakeLists.txt b/tools/phonon/CMakeLists.txt index 60da1cc79f..f3b9e53201 100644 --- a/tools/phonon/CMakeLists.txt +++ b/tools/phonon/CMakeLists.txt @@ -1,7 +1,8 @@ +# -*- CMake -*- configuration for building the PHONON package analysis tool: phana # Support Linux from Ubuntu 20.04LTS onward, CentOS 7.x (with EPEL), # macOS, MSVC 2019 (=Version 16) -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) # set timestamp of downloaded files to that of archive if(POLICY CMP0135) diff --git a/tools/phonon/tricubic/CMakeLists.txt b/tools/phonon/tricubic/CMakeLists.txt index 190c6ceb80..f3a229c410 100644 --- a/tools/phonon/tricubic/CMakeLists.txt +++ b/tools/phonon/tricubic/CMakeLists.txt @@ -1,7 +1,8 @@ +# -*- CMake -*- configuration for building the tricubic library # Support Linux from Ubuntu 20.04LTS onward, CentOS 7.x (with EPEL), # macOS, MSVC 2019 (=Version 16) -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) # set up project project(tricubic VERSION 1.1 DESCRIPTION "Tricubic library" LANGUAGES CXX) diff --git a/tools/swig/CMakeLists.txt b/tools/swig/CMakeLists.txt index 966837dc2f..162d2702c4 100644 --- a/tools/swig/CMakeLists.txt +++ b/tools/swig/CMakeLists.txt @@ -1,7 +1,7 @@ -# CMake configuration for generating script language interfaces with SWIG +# -*- CMake -*- configuration for generating LAMMPS script language wrappers with SWIG # set minimum CMake version required and switch to new policies for SWIG -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required(VERSION 3.16) if(POLICY CMP0078) cmake_policy(SET CMP0078 NEW) endif() diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index f7be54f9ae..cad6c3213c 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -1,10 +1,9 @@ -######################################## -# CMake build for automated testing +# -*- CMake -*- build file for automated testing # This file is part of LAMMPS # Created by Axel Kohlmeyer and Richard Berger ######################################## -# download and build googletest framework +# download and build googletest framework # cannot compile googletest anymore with the default GCC on RHEL 7.x if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0)) message(FATAL_ERROR "Need GNU C++ compiler version 6.x or later for unit testing") diff --git a/unittest/c-library/CMakeLists.txt b/unittest/c-library/CMakeLists.txt index 3e5b7a8cc0..8dcb9d5c5b 100644 --- a/unittest/c-library/CMakeLists.txt +++ b/unittest/c-library/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for testing the c-library interface add_executable(test_library_open test_library_open.cpp test_main.cpp) target_link_libraries(test_library_open PRIVATE lammps GTest::GMock) diff --git a/unittest/commands/CMakeLists.txt b/unittest/commands/CMakeLists.txt index aa1bd22fa4..f6a73b56b3 100644 --- a/unittest/commands/CMakeLists.txt +++ b/unittest/commands/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for testing LAMMPS commands add_executable(test_simple_commands test_simple_commands.cpp) diff --git a/unittest/cplusplus/CMakeLists.txt b/unittest/cplusplus/CMakeLists.txt index 9199e20792..445e0fffeb 100644 --- a/unittest/cplusplus/CMakeLists.txt +++ b/unittest/cplusplus/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for testing the direct calls to individual C++ classes add_executable(test_lammps_class test_lammps_class.cpp) target_link_libraries(test_lammps_class PRIVATE lammps GTest::GMockMain) diff --git a/unittest/force-styles/CMakeLists.libyaml b/unittest/force-styles/CMakeLists.libyaml index 51e8589f7b..8d4760f18c 100644 --- a/unittest/force-styles/CMakeLists.libyaml +++ b/unittest/force-styles/CMakeLists.libyaml @@ -1,6 +1,6 @@ # Custom minimal -*- CMake -*- file for libyaml -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) project(libyaml VERSION 0.2.5 DESCRIPTION "LibYAML a YAML parser and emitter library" LANGUAGES C diff --git a/unittest/force-styles/CMakeLists.txt b/unittest/force-styles/CMakeLists.txt index dfffdfea0c..5742bb6436 100644 --- a/unittest/force-styles/CMakeLists.txt +++ b/unittest/force-styles/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for tests of classes computing or modifying forces find_package(YAML) if(NOT YAML_FOUND) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 5b5dd056c9..93ea2f3b32 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for tests of file reading or writing classes and functions in LAMMPS add_executable(test_atom_styles test_atom_styles.cpp) target_link_libraries(test_atom_styles PRIVATE lammps GTest::GMock) diff --git a/unittest/fortran/CMakeLists.txt b/unittest/fortran/CMakeLists.txt index 6d6fe4cd54..de6b6cf7a8 100644 --- a/unittest/fortran/CMakeLists.txt +++ b/unittest/fortran/CMakeLists.txt @@ -1,3 +1,5 @@ +# -*- CMake -*- file for testing the Fortran interface to LAMMPS + include(CheckGeneratorSupport) if(NOT CMAKE_GENERATOR_SUPPORT_FORTRAN) message(STATUS "Skipping Tests for the LAMMPS Fortran Module: no Fortran support in build tool") diff --git a/unittest/python/CMakeLists.txt b/unittest/python/CMakeLists.txt index fbd7ca0672..fd18d7463d 100644 --- a/unittest/python/CMakeLists.txt +++ b/unittest/python/CMakeLists.txt @@ -1,7 +1,8 @@ -# Test calling Python from LAMMPS (and importing the LAMMPS module -# inside those functions). This can do an "anonymous" import of symbols -# from the executable, so the shared library is not needed. The -# availability of the PYTHON package is tested for inside the tester. +# -*- CMake -*- file for tests calling Python from LAMMPS (and importing +# the LAMMPS module inside those functions). This can do an "anonymous" +# import of symbols from the executable, so the shared library is not +# needed. The availability of the PYTHON package is tested for inside +# the tester. set(TEST_INPUT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/unittest/tools/CMakeLists.txt b/unittest/tools/CMakeLists.txt index 4e0180311e..15576c60c1 100644 --- a/unittest/tools/CMakeLists.txt +++ b/unittest/tools/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for tests of utily functions and classes in LAMMPS # we use python 3's subprocess module to run the tools and check the output if(CMAKE_VERSION VERSION_LESS 3.12) diff --git a/unittest/utils/CMakeLists.txt b/unittest/utils/CMakeLists.txt index 8c1a5a3f6a..c277a0353b 100644 --- a/unittest/utils/CMakeLists.txt +++ b/unittest/utils/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- file for tests of utily functions and classes in LAMMPS add_executable(test_tokenizer test_tokenizer.cpp) target_link_libraries(test_tokenizer PRIVATE lammps GTest::GMockMain) From 71b48253e871caa753aaadb63566d552759565da Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Jun 2023 23:15:37 -0400 Subject: [PATCH 0094/1002] remove special case CMake code for versions before 3.16 --- cmake/CMakeLists.txt | 41 +++++++--------------------- cmake/Modules/CodingStandard.cmake | 18 ++++-------- cmake/Modules/Documentation.cmake | 24 ++++++---------- cmake/Modules/FindCythonize.cmake | 10 +------ cmake/Modules/Packages/KIM.cmake | 7 +---- cmake/Modules/Packages/MDI.cmake | 34 ++++------------------- cmake/Modules/Packages/ML-IAP.cmake | 21 +++----------- cmake/Modules/Packages/PYTHON.cmake | 34 ++++++----------------- cmake/Modules/Testing.cmake | 26 ++++-------------- examples/kim/plugin/CMakeLists.txt | 9 ++---- unittest/CMakeLists.txt | 6 +--- unittest/force-styles/CMakeLists.txt | 17 ++---------- unittest/python/CMakeLists.txt | 10 +------ unittest/tools/CMakeLists.txt | 10 ++----- 14 files changed, 57 insertions(+), 210 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 24b08ae667..3393a56682 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -22,13 +22,8 @@ endif() if(POLICY CMP0135) cmake_policy(SET CMP0135 OLD) endif() -######################################## -# Use CONFIGURE_DEPENDS as option for file(GLOB...) when available -if(CMAKE_VERSION VERSION_LESS 3.12) - unset(CONFIGURE_DEPENDS) -else() - set(CONFIGURE_DEPENDS CONFIGURE_DEPENDS) -endif() + +set(CONFIGURE_DEPENDS CONFIGURE_DEPENDS) ######################################## project(lammps CXX) @@ -466,12 +461,7 @@ option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) find_package(JPEG REQUIRED) target_compile_definitions(lammps PRIVATE -DLAMMPS_JPEG) - if(CMAKE_VERSION VERSION_LESS 3.12) - target_include_directories(lammps PRIVATE ${JPEG_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${JPEG_LIBRARIES}) - else() - target_link_libraries(lammps PRIVATE JPEG::JPEG) - endif() + target_link_libraries(lammps PRIVATE JPEG::JPEG) endif() find_package(PNG QUIET) @@ -819,20 +809,11 @@ install( # This is primarily for people that only want to use the Python wrapper. ############################################################################### if(BUILD_SHARED_LIBS) - if(CMAKE_VERSION VERSION_LESS 3.12) - # adjust so we find Python 3 versions before Python 2 on old systems with old CMake - set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6) - find_package(PythonInterp) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() - else() - # backward compatibility - if(PYTHON_EXECUTABLE) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() - find_package(Python COMPONENTS Interpreter) + # backward compatibility + if(PYTHON_EXECUTABLE) + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) endif() + find_package(Python COMPONENTS Interpreter) if(BUILD_IS_MULTI_CONFIG) set(MY_BUILD_DIR ${CMAKE_BINARY_DIR}/$) else() @@ -941,11 +922,9 @@ if(_index GREATER -1) endif() message(STATUS "<<< Linker flags: >>>") message(STATUS "Executable name: ${LAMMPS_BINARY}") -if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) - get_target_property(OPTIONS lammps LINK_OPTIONS) - if(OPTIONS) - message(STATUS "Linker options: ${OPTIONS}") - endif() +get_target_property(OPTIONS lammps LINK_OPTIONS) +if(OPTIONS) + message(STATUS "Linker options: ${OPTIONS}") endif() if(CMAKE_EXE_LINKER_FLAGS) message(STATUS "Executable linker flags: ${CMAKE_EXE_LINKER_FLAGS}") diff --git a/cmake/Modules/CodingStandard.cmake b/cmake/Modules/CodingStandard.cmake index 4efd373d22..94639c7771 100644 --- a/cmake/Modules/CodingStandard.cmake +++ b/cmake/Modules/CodingStandard.cmake @@ -1,19 +1,11 @@ -if(CMAKE_VERSION VERSION_LESS 3.12) - find_package(PythonInterp 3.5 QUIET) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) - set(Python3_VERSION ${PYTHON_VERSION_STRING}) - endif() -else() - # use default (or custom) Python executable, if version is sufficient - if(Python_VERSION VERSION_GREATER_EQUAL 3.5) - set(Python3_EXECUTABLE ${Python_EXECUTABLE}) - endif() - find_package(Python3 COMPONENTS Interpreter QUIET) +# use default (or custom) Python executable, if version is sufficient +if(Python_VERSION VERSION_GREATER_EQUAL 3.6) + set(Python3_EXECUTABLE ${Python_EXECUTABLE}) endif() +find_package(Python3 COMPONENTS Interpreter) if(Python3_EXECUTABLE) - if(Python3_VERSION VERSION_GREATER_EQUAL 3.5) + if(Python3_VERSION VERSION_GREATER_EQUAL 3.6) add_custom_target( check-whitespace ${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py . diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index 0b01407cd9..df9bf2b449 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -5,25 +5,19 @@ option(BUILD_DOC "Build LAMMPS HTML documentation" OFF) if(BUILD_DOC) # Current Sphinx versions require at least Python 3.8 - if(CMAKE_VERSION VERSION_LESS 3.12) - find_package(PythonInterp 3.8 REQUIRED) - set(VIRTUALENV ${PYTHON_EXECUTABLE} -m venv) - else() - # use default (or custom) Python executable, if version is sufficient - if(Python_VERSION VERSION_GREATER_EQUAL 3.8) - set(Python3_EXECUTABLE ${Python_EXECUTABLE}) - endif() - find_package(Python3 REQUIRED COMPONENTS Interpreter) - if(Python3_VERSION VERSION_LESS 3.8) - message(FATAL_ERROR "Python 3.8 and up is required to build the HTML documentation") - endif() - set(VIRTUALENV ${Python3_EXECUTABLE} -m venv) + # use default (or custom) Python executable, if version is sufficient + if(Python_VERSION VERSION_GREATER_EQUAL 3.8) + set(Python3_EXECUTABLE ${Python_EXECUTABLE}) endif() + find_package(Python3 REQUIRED COMPONENTS Interpreter) + if(Python3_VERSION VERSION_LESS 3.8) + message(FATAL_ERROR "Python 3.8 and up is required to build the HTML documentation") + endif() + set(VIRTUALENV ${Python3_EXECUTABLE} -m venv) + find_package(Doxygen 1.8.10 REQUIRED) - file(GLOB DOC_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_DOC_DIR}/src/[^.]*.rst) - add_custom_command( OUTPUT docenv COMMAND ${VIRTUALENV} docenv diff --git a/cmake/Modules/FindCythonize.cmake b/cmake/Modules/FindCythonize.cmake index 97f0304279..fe436aef28 100644 --- a/cmake/Modules/FindCythonize.cmake +++ b/cmake/Modules/FindCythonize.cmake @@ -7,15 +7,7 @@ # adapted from https://github.com/cmarshall108/cython-cmake-example/blob/master/cmake/FindCython.cmake #============================================================================= -if(CMAKE_VERSION VERSION_LESS 3.12) - set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6) - find_package(PythonInterp 3.6 QUIET) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() -else() - find_package(Python 3.6 COMPONENTS Interpreter QUIET) -endif() +find_package(Python 3.6 COMPONENTS Interpreter QUIET) # Use the Cython executable that lives next to the Python executable # if it is a local installation. diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 995d2d9490..d724ec18fc 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,12 +1,7 @@ set(KIM-API_MIN_VERSION 2.1.3) find_package(CURL) if(CURL_FOUND) - if(CMAKE_VERSION VERSION_LESS 3.12) - target_include_directories(lammps PRIVATE ${CURL_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${CURL_LIBRARIES}) - else() - target_link_libraries(lammps PRIVATE CURL::libcurl) - endif() + target_link_libraries(lammps PRIVATE CURL::libcurl) target_compile_definitions(lammps PRIVATE -DLMP_KIM_CURL) set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.") mark_as_advanced(LMP_DEBUG_CURL) diff --git a/cmake/Modules/Packages/MDI.cmake b/cmake/Modules/Packages/MDI.cmake index dc3af94a0a..447b941d99 100644 --- a/cmake/Modules/Packages/MDI.cmake +++ b/cmake/Modules/Packages/MDI.cmake @@ -26,29 +26,9 @@ if(DOWNLOAD_MDI) # detect if we have python development support and thus can enable python plugins set(MDI_USE_PYTHON_PLUGINS OFF) - if(CMAKE_VERSION VERSION_LESS 3.12) - if(NOT PYTHON_VERSION_STRING) - set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6) - # search for interpreter first, so we have a consistent library - find_package(PythonInterp) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() - endif() - # search for the library matching the selected interpreter - set(Python_ADDITIONAL_VERSIONS ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) - find_package(PythonLibs QUIET) # Deprecated since version 3.12 - if(PYTHONLIBS_FOUND) - if(NOT (PYTHON_VERSION_STRING STREQUAL PYTHONLIBS_VERSION_STRING)) - message(FATAL_ERROR "Python Library version ${PYTHONLIBS_VERSION_STRING} does not match Interpreter version ${PYTHON_VERSION_STRING}") - endif() - set(MDI_USE_PYTHON_PLUGINS ON) - endif() - else() - find_package(Python QUIET COMPONENTS Development) - if(Python_Development_FOUND) - set(MDI_USE_PYTHON_PLUGINS ON) - endif() + find_package(Python QUIET COMPONENTS Development) + if(Python_Development_FOUND) + set(MDI_USE_PYTHON_PLUGINS ON) endif() # python plugins are not supported and thus must be always off on Windows if(CMAKE_SYSTEM_NAME STREQUAL "Windows") @@ -102,13 +82,9 @@ if(DOWNLOAD_MDI) # if compiling with python plugins we need # to add python libraries as dependency. if(MDI_USE_PYTHON_PLUGINS) - if(CMAKE_VERSION VERSION_LESS 3.12) - list(APPEND MDI_DEP_LIBS ${PYTHON_LIBRARIES}) - else() - list(APPEND MDI_DEP_LIBS Python::Python) - endif() - + list(APPEND MDI_DEP_LIBS Python::Python) endif() + # need to add support for dlopen/dlsym, except when compiling for Windows. if(NOT (CMAKE_SYSTEM_NAME STREQUAL "Windows")) list(APPEND MDI_DEP_LIBS "${CMAKE_DL_LIBS}") diff --git a/cmake/Modules/Packages/ML-IAP.cmake b/cmake/Modules/Packages/ML-IAP.cmake index f8439be538..2e9a02977d 100644 --- a/cmake/Modules/Packages/ML-IAP.cmake +++ b/cmake/Modules/Packages/ML-IAP.cmake @@ -2,12 +2,7 @@ set(MLIAP_ENABLE_PYTHON_DEFAULT OFF) if(PKG_PYTHON) find_package(Cythonize QUIET) - if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14) - find_package(Python COMPONENTS NumPy QUIET) - else() - # assume we have NumPy - set(Python_NumPy_FOUND ON) - endif() + find_package(Python COMPONENTS NumPy QUIET) if(Cythonize_FOUND AND Python_NumPy_FOUND) set(MLIAP_ENABLE_PYTHON_DEFAULT ON) endif() @@ -17,20 +12,12 @@ option(MLIAP_ENABLE_PYTHON "Build ML-IAP package with Python support" ${MLIAP_EN if(MLIAP_ENABLE_PYTHON) find_package(Cythonize REQUIRED) - if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14) - find_package(Python COMPONENTS NumPy REQUIRED) - endif() + find_package(Python COMPONENTS NumPy REQUIRED) if(NOT PKG_PYTHON) message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP") endif() - if(CMAKE_VERSION VERSION_LESS 3.12) - if(PYTHONLIBS_VERSION_STRING VERSION_LESS 3.6) - message(FATAL_ERROR "Python support in ML-IAP requires Python 3.6 or later") - endif() - else() - if(Python_VERSION VERSION_LESS 3.6) - message(FATAL_ERROR "Python support in ML-IAP requires Python 3.6 or later") - endif() + if(Python_VERSION VERSION_LESS 3.6) + message(FATAL_ERROR "Python support in ML-IAP requires Python 3.6 or later") endif() set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython) diff --git a/cmake/Modules/Packages/PYTHON.cmake b/cmake/Modules/Packages/PYTHON.cmake index 4a2925fe31..59260e39d5 100644 --- a/cmake/Modules/Packages/PYTHON.cmake +++ b/cmake/Modules/Packages/PYTHON.cmake @@ -1,29 +1,11 @@ -if(CMAKE_VERSION VERSION_LESS 3.12) - if(NOT PYTHON_VERSION_STRING) - set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6) - # search for interpreter first, so we have a consistent library - find_package(PythonInterp) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() + +if(NOT Python_INTERPRETER) + # backward compatibility + if(PYTHON_EXECUTABLE) + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) endif() - # search for the library matching the selected interpreter - set(Python_ADDITIONAL_VERSIONS ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) - find_package(PythonLibs REQUIRED) # Deprecated since version 3.12 - if(NOT (PYTHON_VERSION_STRING STREQUAL PYTHONLIBS_VERSION_STRING)) - message(FATAL_ERROR "Python Library version ${PYTHONLIBS_VERSION_STRING} does not match Interpreter version ${PYTHON_VERSION_STRING}") - endif() - target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARIES}) -else() - if(NOT Python_INTERPRETER) - # backward compatibility - if(PYTHON_EXECUTABLE) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() - find_package(Python COMPONENTS Interpreter) - endif() - find_package(Python REQUIRED COMPONENTS Interpreter Development) - target_link_libraries(lammps PRIVATE Python::Python) + find_package(Python COMPONENTS Interpreter) endif() +find_package(Python REQUIRED COMPONENTS Interpreter Development) +target_link_libraries(lammps PRIVATE Python::Python) target_compile_definitions(lammps PRIVATE -DLMP_PYTHON) diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index 5345211178..5bb8b512d3 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -19,7 +19,7 @@ if(ENABLE_TESTING) # we need to build and link a LOT of tester executables, so it is worth checking if # a faster linker is available. requires GNU or Clang compiler, newer CMake. # also only verified with Fedora Linux > 30 and Ubuntu 18.04 or 22.04+(Ubuntu 20.04 fails) - if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) + if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))) if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND ((CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04) OR (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04))) @@ -66,16 +66,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF) mark_as_advanced(ENABLE_COVERAGE) if(ENABLE_COVERAGE) - if(CMAKE_VERSION VERSION_LESS 3.13) - if(CMAKE_CXX_FLAGS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} --coverage") - endif() - else() - target_compile_options(lammps PUBLIC --coverage) - target_link_options(lammps PUBLIC --coverage) - endif() + target_compile_options(lammps PUBLIC --coverage) + target_link_options(lammps PUBLIC --coverage) endif() endif() @@ -118,16 +110,8 @@ validate_option(ENABLE_SANITIZER ENABLE_SANITIZER_VALUES) string(TOLOWER ${ENABLE_SANITIZER} ENABLE_SANITIZER) if(NOT ENABLE_SANITIZER STREQUAL "none") if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")) - if(CMAKE_VERSION VERSION_LESS 3.13) - if(CMAKE_CXX_FLAGS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} -fsanitize=${ENABLE_SANITIZER}") - endif() - else() - target_compile_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) - target_link_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) - endif() + target_compile_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) + target_link_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) else() message(WARNING "ENABLE_SANITIZER option not supported by ${CMAKE_CXX_COMPILER_ID} compilers. Ignoring.") set(ENABLE_SANITIZER "none") diff --git a/examples/kim/plugin/CMakeLists.txt b/examples/kim/plugin/CMakeLists.txt index 367c0b5b78..999214f9b8 100644 --- a/examples/kim/plugin/CMakeLists.txt +++ b/examples/kim/plugin/CMakeLists.txt @@ -3,7 +3,7 @@ # distributed independent from the LAMMPS package. ########################################## -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) project(kimplugin VERSION 1.0 LANGUAGES CXX) @@ -30,12 +30,7 @@ target_link_libraries(kimplugin PRIVATE KIM-API::kim-api) # need libcurl find_package(CURL) if(CURL_FOUND) - if(CMAKE_VERSION VERSION_LESS 3.12) - target_include_directories(kimplugin PRIVATE ${CURL_INCLUDE_DIRS}) - target_link_libraries(kimplugin PRIVATE ${CURL_LIBRARIES}) - else() - target_link_libraries(kimplugin PRIVATE CURL::libcurl) - endif() + target_link_libraries(kimplugin PRIVATE CURL::libcurl) target_compile_definitions(kimplugin PRIVATE -DLMP_KIM_CURL) set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.") mark_as_advanced(LMP_DEBUG_CURL) diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index cad6c3213c..ba80e654bb 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -35,11 +35,7 @@ endforeach() # must repeat handling coverage for older CMake if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND ENABLE_COVERAGE) - if(CMAKE_VERSION VERSION_LESS 3.13) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} --coverage") - endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} --coverage") endif() ######################################## diff --git a/unittest/force-styles/CMakeLists.txt b/unittest/force-styles/CMakeLists.txt index 5742bb6436..21a1bd3eda 100644 --- a/unittest/force-styles/CMakeLists.txt +++ b/unittest/force-styles/CMakeLists.txt @@ -20,16 +20,7 @@ function(extract_tags out yaml_file) set(${out} "${TAGS}" PARENT_SCOPE) endfunction() -if(CMAKE_VERSION VERSION_LESS 3.12) - # adjust so we find Python 3 versions before Python 2 on old systems with old CMake - set(Python_ADDITIONAL_VERSIONS 3.8 3.7 3.6 3.5) - find_package(PythonInterp) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() -else() - find_package(Python COMPONENTS Interpreter) -endif() +find_package(Python COMPONENTS Interpreter) if(Python_EXECUTABLE) add_custom_target(check-tests ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/check_tests.py @@ -54,10 +45,8 @@ target_link_libraries(style_tests PUBLIC GTest::GMock Yaml::Yaml lammps) # propagate sanitizer options to test tools if(ENABLE_SANITIZER AND (NOT (ENABLE_SANITIZER STREQUAL "none"))) - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) - target_compile_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) - target_link_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) - endif() + target_compile_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) + target_link_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) endif() # unit test for error stats class diff --git a/unittest/python/CMakeLists.txt b/unittest/python/CMakeLists.txt index fd18d7463d..ed56841733 100644 --- a/unittest/python/CMakeLists.txt +++ b/unittest/python/CMakeLists.txt @@ -12,20 +12,12 @@ if(NOT BUILD_SHARED_LIBS) return() endif() -if(CMAKE_VERSION VERSION_LESS 3.12) - find_package(PythonInterp 3.6) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() -else() - find_package(Python COMPONENTS Interpreter Development) -endif() +find_package(Python 3.6 COMPONENTS Interpreter Development) if(PKG_PYTHON) add_executable(test_python_package test_python_package.cpp) target_link_libraries(test_python_package PRIVATE lammps GTest::GMock) target_compile_definitions(test_python_package PRIVATE -DTEST_INPUT_FOLDER=${TEST_INPUT_FOLDER}) - # this requires CMake 3.12. don't care to add backward compatibility for this. if(Python_Development_FOUND) target_compile_definitions(test_python_package PRIVATE -DTEST_HAVE_PYTHON_DEVELOPMENT=1) target_link_libraries(test_python_package PRIVATE Python::Python) diff --git a/unittest/tools/CMakeLists.txt b/unittest/tools/CMakeLists.txt index 15576c60c1..7a496722d2 100644 --- a/unittest/tools/CMakeLists.txt +++ b/unittest/tools/CMakeLists.txt @@ -1,14 +1,8 @@ # -*- CMake -*- file for tests of utily functions and classes in LAMMPS # we use python 3's subprocess module to run the tools and check the output -if(CMAKE_VERSION VERSION_LESS 3.12) - find_package(PythonInterp 3.5) # Deprecated since version 3.12 - if(PYTHONINTERP_FOUND) - set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) - endif() -else() - find_package(Python 3.5 COMPONENTS Interpreter) -endif() +find_package(Python 3.6 COMPONENTS Interpreter) + get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(BUILD_IS_MULTI_CONFIG) set(LAMMPS_SHELL_EXE_DIR ${CMAKE_BINARY_DIR}/$) From b50fc0be7899538b35006b0fbfa3da49ae0c9f5c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Jun 2023 23:19:53 -0400 Subject: [PATCH 0095/1002] remove obsolete CONFIGURE_DEPENDS backward compatibility hack --- cmake/CMakeLists.txt | 17 ++++++++--------- cmake/Modules/Documentation.cmake | 4 ++-- cmake/Modules/LAMMPSInterfacePlugin.cmake | 2 +- cmake/Modules/LAMMPSUtils.cmake | 6 +++--- cmake/Modules/Packages/COLVARS.cmake | 2 +- cmake/Modules/Packages/GPU.cmake | 14 +++++++------- cmake/Modules/Packages/KOKKOS.cmake | 2 +- cmake/Modules/Packages/LEPTON.cmake | 4 ++-- cmake/Modules/Packages/ML-IAP.cmake | 2 +- cmake/Modules/StyleHeaderUtils.cmake | 4 ++-- cmake/Modules/Testing.cmake | 2 +- cmake/Modules/Tools.cmake | 2 +- unittest/force-styles/CMakeLists.txt | 18 +++++++++--------- 13 files changed, 39 insertions(+), 40 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 3393a56682..6e4ae62ee2 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -23,7 +23,6 @@ if(POLICY CMP0135) cmake_policy(SET CMP0135 OLD) endif() -set(CONFIGURE_DEPENDS CONFIGURE_DEPENDS) ######################################## project(lammps CXX) @@ -198,8 +197,8 @@ else() endif() include(GNUInstallDirs) -file(GLOB ALL_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) -file(GLOB MAIN_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_SOURCE_DIR}/main.cpp) +file(GLOB ALL_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) +file(GLOB MAIN_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/main.cpp) list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES}) add_library(lammps ${ALL_SOURCES}) @@ -443,7 +442,7 @@ if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTROD find_package(BLAS) endif() if(NOT LAPACK_FOUND OR NOT BLAS_FOUND OR USE_INTERNAL_LINALG) - file(GLOB LINALG_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.cpp) + file(GLOB LINALG_SOURCES CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.cpp) add_library(linalg STATIC ${LINALG_SOURCES}) set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_MACHINE}) set(BLAS_LIBRARIES "$") @@ -573,8 +572,8 @@ endforeach() foreach(PKG ${STANDARD_PACKAGES}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) - file(GLOB ${PKG}_SOURCES ${CONFIGURE_DEPENDS} ${${PKG}_SOURCES_DIR}/[^.]*.cpp) - file(GLOB ${PKG}_HEADERS ${CONFIGURE_DEPENDS} ${${PKG}_SOURCES_DIR}/[^.]*.h) + file(GLOB ${PKG}_SOURCES CONFIGURE_DEPENDS ${${PKG}_SOURCES_DIR}/[^.]*.cpp) + file(GLOB ${PKG}_HEADERS CONFIGURE_DEPENDS ${${PKG}_SOURCES_DIR}/[^.]*.h) # check for package files in src directory due to old make system DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${${PKG}_SOURCES} ${${PKG}_HEADERS}) @@ -601,8 +600,8 @@ endforeach() foreach(PKG ${SUFFIX_PACKAGES}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) - file(GLOB ${PKG}_SOURCES ${CONFIGURE_DEPENDS} ${${PKG}_SOURCES_DIR}/[^.]*.cpp) - file(GLOB ${PKG}_HEADERS ${CONFIGURE_DEPENDS} ${${PKG}_SOURCES_DIR}/[^.]*.h) + file(GLOB ${PKG}_SOURCES CONFIGURE_DEPENDS ${${PKG}_SOURCES_DIR}/[^.]*.cpp) + file(GLOB ${PKG}_HEADERS CONFIGURE_DEPENDS ${${PKG}_SOURCES_DIR}/[^.]*.h) # check for package files in src directory due to old make system DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${${PKG}_SOURCES} ${${PKG}_HEADERS}) @@ -616,7 +615,7 @@ endforeach() foreach(PKG_LIB POEMS ATC AWPMD H5MD) if(PKG_${PKG_LIB}) string(TOLOWER "${PKG_LIB}" PKG_LIB) - file(GLOB_RECURSE ${PKG_LIB}_SOURCES ${CONFIGURE_DEPENDS} + file(GLOB_RECURSE ${PKG_LIB}_SOURCES CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE}) diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index df9bf2b449..400109067f 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -16,7 +16,7 @@ if(BUILD_DOC) set(VIRTUALENV ${Python3_EXECUTABLE} -m venv) find_package(Doxygen 1.8.10 REQUIRED) - file(GLOB DOC_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_DOC_DIR}/src/[^.]*.rst) + file(GLOB DOC_SOURCES CONFIGURE_DEPENDS ${LAMMPS_DOC_DIR}/src/[^.]*.rst) add_custom_command( OUTPUT docenv @@ -74,7 +74,7 @@ if(BUILD_DOC) message(STATUS "Using already downloaded archive ${CMAKE_BINARY_DIR}/libpace.tar.gz") endif() execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - file(GLOB MATHJAX_VERSION_DIR ${CONFIGURE_DEPENDS} ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*) + file(GLOB MATHJAX_VERSION_DIR CONFIGURE_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*) execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${DOC_BUILD_STATIC_DIR}/mathjax) endif() diff --git a/cmake/Modules/LAMMPSInterfacePlugin.cmake b/cmake/Modules/LAMMPSInterfacePlugin.cmake index c1cc613496..d064020098 100644 --- a/cmake/Modules/LAMMPSInterfacePlugin.cmake +++ b/cmake/Modules/LAMMPSInterfacePlugin.cmake @@ -65,7 +65,7 @@ endfunction(validate_option) # helper function for getting the most recently modified file or folder from a glob pattern function(get_newest_file path variable) - file(GLOB _dirs ${CONFIGURE_DEPENDS} ${path}) + file(GLOB _dirs CONFIGURE_DEPENDS ${path}) set(_besttime 2000-01-01T00:00:00) set(_bestfile "") foreach(_dir ${_dirs}) diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index 1ceec7e06e..bb5ea07609 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -41,7 +41,7 @@ endfunction() # helper function for getting the most recently modified file or folder from a glob pattern function(get_newest_file path variable) - file(GLOB _dirs ${CONFIGURE_DEPENDS} ${path}) + file(GLOB _dirs CONFIGURE_DEPENDS ${path}) set(_besttime 2000-01-01T00:00:00) set(_bestfile "") foreach(_dir ${_dirs}) @@ -80,8 +80,8 @@ endfunction() function(check_for_autogen_files source_dir) message(STATUS "Running check for auto-generated files from make-based build system") - file(GLOB SRC_AUTOGEN_FILES ${CONFIGURE_DEPENDS} ${source_dir}/style_*.h) - file(GLOB SRC_AUTOGEN_PACKAGES ${CONFIGURE_DEPENDS} ${source_dir}/packages_*.h) + file(GLOB SRC_AUTOGEN_FILES CONFIGURE_DEPENDS ${source_dir}/style_*.h) + file(GLOB SRC_AUTOGEN_PACKAGES CONFIGURE_DEPENDS ${source_dir}/packages_*.h) list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h) list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/mliap_model_python_couple.h ${source_dir}/mliap_model_python_couple.cpp) foreach(_SRC ${SRC_AUTOGEN_FILES}) diff --git a/cmake/Modules/Packages/COLVARS.cmake b/cmake/Modules/Packages/COLVARS.cmake index 325e0e205e..745c1de026 100644 --- a/cmake/Modules/Packages/COLVARS.cmake +++ b/cmake/Modules/Packages/COLVARS.cmake @@ -1,6 +1,6 @@ set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars) -file(GLOB COLVARS_SOURCES ${CONFIGURE_DEPENDS} ${COLVARS_SOURCE_DIR}/[^.]*.cpp) +file(GLOB COLVARS_SOURCES CONFIGURE_DEPENDS ${COLVARS_SOURCE_DIR}/[^.]*.cpp) option(COLVARS_DEBUG "Enable debugging messages for Colvars (quite verbose)" OFF) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 4a70eb7a1e..221013580f 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -39,7 +39,7 @@ if (PKG_AMOEBA) ${GPU_SOURCES_DIR}/amoeba_convolution_gpu.cpp) endif() -file(GLOB GPU_LIB_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) +file(GLOB GPU_LIB_SOURCES CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) if(GPU_API STREQUAL "CUDA") @@ -68,7 +68,7 @@ if(GPU_API STREQUAL "CUDA") set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") # ensure that no *cubin.h files exist from a compile in the lib/gpu folder - file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h) + file(GLOB GPU_LIB_OLD_CUBIN_HEADERS CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h) if(GPU_LIB_OLD_CUBIN_HEADERS) message(FATAL_ERROR "########################################################################\n" "Found file(s) generated by the make-based build system in lib/gpu\n" @@ -78,15 +78,15 @@ if(GPU_API STREQUAL "CUDA") "########################################################################") endif() - file(GLOB GPU_LIB_CU ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) + file(GLOB GPU_LIB_CU CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu) if(CUDPP_OPT) cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) - file(GLOB GPU_LIB_CUDPP_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) - file(GLOB GPU_LIB_CUDPP_CU ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) + file(GLOB GPU_LIB_CUDPP_SOURCES CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) + file(GLOB GPU_LIB_CUDPP_CU CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) endif() # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice @@ -201,7 +201,7 @@ elseif(GPU_API STREQUAL "OPENCL") include(OpenCLUtils) set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) - file(GLOB GPU_LIB_CU ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) + file(GLOB GPU_LIB_CU CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu @@ -331,7 +331,7 @@ elseif(GPU_API STREQUAL "HIP") endif() endif() - file(GLOB GPU_LIB_CU ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) + file(GLOB GPU_LIB_CU CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) set(GPU_LIB_CU_HIP "") diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 8b695667ae..d30b0000f3 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -155,7 +155,7 @@ if(PKG_ML-IAP) # Add KOKKOS version of ML-IAP Python coupling if non-KOKKOS version is included if(MLIAP_ENABLE_PYTHON AND Cythonize_EXECUTABLE) - file(GLOB MLIAP_KOKKOS_CYTHON_SRC ${CONFIGURE_DEPENDS} ${LAMMPS_SOURCE_DIR}/KOKKOS/*.pyx) + file(GLOB MLIAP_KOKKOS_CYTHON_SRC CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/KOKKOS/*.pyx) foreach(MLIAP_CYTHON_FILE ${MLIAP_KOKKOS_CYTHON_SRC}) get_filename_component(MLIAP_CYTHON_BASE ${MLIAP_CYTHON_FILE} NAME_WE) add_custom_command(OUTPUT ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.h diff --git a/cmake/Modules/Packages/LEPTON.cmake b/cmake/Modules/Packages/LEPTON.cmake index 33e14d092c..b1944c2400 100644 --- a/cmake/Modules/Packages/LEPTON.cmake +++ b/cmake/Modules/Packages/LEPTON.cmake @@ -4,7 +4,7 @@ if(LEPTON_SOURCE_DIR) endif() set(LEPTON_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/lepton) -file(GLOB LEPTON_SOURCES ${CONFIGURE_DEPENDS} ${LEPTON_SOURCE_DIR}/src/[^.]*.cpp) +file(GLOB LEPTON_SOURCES CONFIGURE_DEPENDS ${LEPTON_SOURCE_DIR}/src/[^.]*.cpp) if((CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "amd64") OR (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64") OR @@ -15,7 +15,7 @@ else() endif() if(LEPTON_ENABLE_JIT) - file(GLOB ASMJIT_SOURCES ${CONFIGURE_DEPENDS} ${LEPTON_SOURCE_DIR}/asmjit/*/[^.]*.cpp) + file(GLOB ASMJIT_SOURCES CONFIGURE_DEPENDS ${LEPTON_SOURCE_DIR}/asmjit/*/[^.]*.cpp) endif() add_library(lepton STATIC ${LEPTON_SOURCES} ${ASMJIT_SOURCES}) diff --git a/cmake/Modules/Packages/ML-IAP.cmake b/cmake/Modules/Packages/ML-IAP.cmake index 2e9a02977d..d6059c44b8 100644 --- a/cmake/Modules/Packages/ML-IAP.cmake +++ b/cmake/Modules/Packages/ML-IAP.cmake @@ -21,7 +21,7 @@ if(MLIAP_ENABLE_PYTHON) endif() set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython) - file(GLOB MLIAP_CYTHON_SRC ${CONFIGURE_DEPENDS} ${LAMMPS_SOURCE_DIR}/ML-IAP/*.pyx) + file(GLOB MLIAP_CYTHON_SRC CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/ML-IAP/*.pyx) file(MAKE_DIRECTORY ${MLIAP_BINARY_DIR}) foreach(MLIAP_CYTHON_FILE ${MLIAP_CYTHON_SRC}) get_filename_component(MLIAP_CYTHON_BASE ${MLIAP_CYTHON_FILE} NAME_WE) diff --git a/cmake/Modules/StyleHeaderUtils.cmake b/cmake/Modules/StyleHeaderUtils.cmake index 2a0a91e843..d4644bd042 100644 --- a/cmake/Modules/StyleHeaderUtils.cmake +++ b/cmake/Modules/StyleHeaderUtils.cmake @@ -1,5 +1,5 @@ function(FindStyleHeaders path style_class file_pattern headers) - file(GLOB files ${CONFIGURE_DEPENDS} "${path}/${file_pattern}*.h") + file(GLOB files CONFIGURE_DEPENDS "${path}/${file_pattern}*.h") get_property(hlist GLOBAL PROPERTY ${headers}) foreach(file_name ${files}) @@ -187,7 +187,7 @@ endfunction(DetectBuildSystemConflict) function(FindPackagesHeaders path style_class file_pattern headers) - file(GLOB files ${CONFIGURE_DEPENDS} "${path}/${file_pattern}*.h") + file(GLOB files CONFIGURE_DEPENDS "${path}/${file_pattern}*.h") get_property(plist GLOBAL PROPERTY ${headers}) foreach(file_name ${files}) diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index 5bb8b512d3..ff595d3c8f 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -6,7 +6,7 @@ if(ENABLE_TESTING) find_program(VALGRIND_BINARY NAMES valgrind) # generate custom suppression file file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/lammps.supp "\n") - file(GLOB VALGRIND_SUPPRESSION_FILES ${CONFIGURE_DEPENDS} ${LAMMPS_TOOLS_DIR}/valgrind/[^.]*.supp) + file(GLOB VALGRIND_SUPPRESSION_FILES CONFIGURE_DEPENDS ${LAMMPS_TOOLS_DIR}/valgrind/[^.]*.supp) foreach(SUPP ${VALGRIND_SUPPRESSION_FILES}) file(READ ${SUPP} SUPPRESSIONS) file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/lammps.supp "${SUPPRESSIONS}") diff --git a/cmake/Modules/Tools.cmake b/cmake/Modules/Tools.cmake index 285c5f2405..c9fd7aab60 100644 --- a/cmake/Modules/Tools.cmake +++ b/cmake/Modules/Tools.cmake @@ -26,7 +26,7 @@ if(BUILD_TOOLS) enable_language(C) get_filename_component(MSI2LMP_SOURCE_DIR ${LAMMPS_TOOLS_DIR}/msi2lmp/src ABSOLUTE) - file(GLOB MSI2LMP_SOURCES ${CONFIGURE_DEPENDS} ${MSI2LMP_SOURCE_DIR}/[^.]*.c) + file(GLOB MSI2LMP_SOURCES CONFIGURE_DEPENDS ${MSI2LMP_SOURCE_DIR}/[^.]*.c) add_executable(msi2lmp ${MSI2LMP_SOURCES}) if(STANDARD_MATH_LIB) target_link_libraries(msi2lmp PRIVATE ${STANDARD_MATH_LIB}) diff --git a/unittest/force-styles/CMakeLists.txt b/unittest/force-styles/CMakeLists.txt index 21a1bd3eda..efc75f512d 100644 --- a/unittest/force-styles/CMakeLists.txt +++ b/unittest/force-styles/CMakeLists.txt @@ -87,7 +87,7 @@ else() endif() # tests for molecular systems and related pair styles -file(GLOB MOL_PAIR_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/mol-pair-*.yaml) +file(GLOB MOL_PAIR_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/mol-pair-*.yaml) # cannot test MSM with single precision data if(FFT_SINGLE) list(FILTER MOL_PAIR_TESTS EXCLUDE REGEX "msm") @@ -105,7 +105,7 @@ foreach(TEST ${MOL_PAIR_TESTS}) endforeach() # tests for metal-like atomic systems and related pair styles -file(GLOB ATOMIC_PAIR_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/atomic-pair-*.yaml) +file(GLOB ATOMIC_PAIR_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/atomic-pair-*.yaml) foreach(TEST ${ATOMIC_PAIR_TESTS}) string(REGEX REPLACE "^.*atomic-pair-(.*)\.yaml" "AtomicPairStyle:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) @@ -119,7 +119,7 @@ foreach(TEST ${ATOMIC_PAIR_TESTS}) endforeach() # tests for Si-like manybody systems and related pair styles -file(GLOB MANYBODY_PAIR_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/manybody-pair-*.yaml) +file(GLOB MANYBODY_PAIR_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/manybody-pair-*.yaml) foreach(TEST ${MANYBODY_PAIR_TESTS}) string(REGEX REPLACE "^.*manybody-pair-(.*)\.yaml" "ManybodyPairStyle:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) @@ -136,7 +136,7 @@ endforeach() add_executable(test_bond_style test_bond_style.cpp) target_link_libraries(test_bond_style PRIVATE lammps style_tests) -file(GLOB BOND_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/bond-*.yaml) +file(GLOB BOND_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/bond-*.yaml) foreach(TEST ${BOND_TESTS}) string(REGEX REPLACE "^.*bond-(.*)\.yaml" "BondStyle:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) @@ -153,7 +153,7 @@ endforeach() add_executable(test_angle_style test_angle_style.cpp) target_link_libraries(test_angle_style PRIVATE lammps style_tests) -file(GLOB ANGLE_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/angle-*.yaml) +file(GLOB ANGLE_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/angle-*.yaml) foreach(TEST ${ANGLE_TESTS}) string(REGEX REPLACE "^.*angle-(.*)\.yaml" "AngleStyle:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) @@ -167,7 +167,7 @@ foreach(TEST ${ANGLE_TESTS}) endforeach() # kspace style tester, currently uses the pair style tool -file(GLOB KSPACE_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/kspace-*.yaml) +file(GLOB KSPACE_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/kspace-*.yaml) # cannot test MSM with single precision data if(FFT_SINGLE) list(FILTER KSPACE_TESTS EXCLUDE REGEX "msm") @@ -192,7 +192,7 @@ endif() target_link_libraries(test_fix_timestep PRIVATE lammps style_tests) # tests for timestep related fixes (time integration, thermostat, force manipulation, constraints/restraints) -file(GLOB FIX_TIMESTEP_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/fix-timestep-*.yaml) +file(GLOB FIX_TIMESTEP_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/fix-timestep-*.yaml) foreach(TEST ${FIX_TIMESTEP_TESTS}) string(REGEX REPLACE "^.*fix-timestep-(.*)\.yaml" "FixTimestep:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) @@ -213,7 +213,7 @@ endforeach() add_executable(test_dihedral_style test_dihedral_style.cpp) target_link_libraries(test_dihedral_style PRIVATE lammps style_tests) -file(GLOB DIHEDRAL_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/dihedral-*.yaml) +file(GLOB DIHEDRAL_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/dihedral-*.yaml) foreach(TEST ${DIHEDRAL_TESTS}) string(REGEX REPLACE "^.*dihedral-(.*)\.yaml" "DihedralStyle:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) @@ -230,7 +230,7 @@ endforeach() add_executable(test_improper_style test_improper_style.cpp) target_link_libraries(test_improper_style PRIVATE lammps style_tests) -file(GLOB IMPROPER_TESTS LIST_DIRECTORIES false ${CONFIGURE_DEPENDS} ${TEST_INPUT_FOLDER}/improper-*.yaml) +file(GLOB IMPROPER_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/improper-*.yaml) foreach(TEST ${IMPROPER_TESTS}) string(REGEX REPLACE "^.*improper-(.*)\.yaml" "ImproperStyle:\\1" TNAME ${TEST}) extract_tags(TEST_TAGS ${TEST}) From 4a46083e88500ceac47f7954b4cfb1c904a04b74 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Jun 2023 23:29:17 -0400 Subject: [PATCH 0096/1002] add git commit descriptor to LAMMPS version output --- cmake/CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 6e4ae62ee2..aaf15166fc 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -871,8 +871,15 @@ else() endif() include(FeatureSummary) feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND) +if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git) + execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified --always + OUTPUT_VARIABLE GIT_DESCRIBE + ERROR_QUIET + WORKING_DIRECTORY ${LAMMPS_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() message(STATUS "<<< Build configuration >>> - LAMMPS Version: ${PROJECT_VERSION} + LAMMPS Version: ${PROJECT_VERSION} ${GIT_DESCRIBE} Operating System: ${CMAKE_SYSTEM_NAME} ${CMAKE_LINUX_DISTRO} ${CMAKE_DISTRO_VERSION} CMake Version: ${CMAKE_VERSION} Build type: ${LAMMPS_BUILD_TYPE} From ef40448df6367df46b37b4f98fbd74115eb540e6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 1 Jul 2023 03:01:37 -0400 Subject: [PATCH 0097/1002] update docs for CMake 3.16 requirement --- doc/src/Build_cmake.rst | 16 ++++++------ doc/src/Howto_cmake.rst | 28 +++++++++++++-------- doc/src/Intro_portability.rst | 10 ++++---- doc/utils/sphinx-config/false_positives.txt | 1 + 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 9be2c33165..6c46f6d672 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -16,8 +16,7 @@ environments is on a :doc:`separate page `. .. note:: - LAMMPS currently requires that CMake version 3.10 or later is available; - version 3.12 or later is preferred. + LAMMPS currently requires that CMake version 3.16 or later is available. .. warning:: @@ -34,19 +33,18 @@ Advantages of using CMake ^^^^^^^^^^^^^^^^^^^^^^^^^ CMake is an alternative to compiling LAMMPS in the traditional way -through :doc:`(manually customized) makefiles ` and a recent -addition to LAMMPS thanks to the efforts of Christoph Junghans (LANL) -and Richard Berger (Temple U). Using CMake has multiple advantages that -are specifically helpful for people with limited experience in compiling -software or for people that want to modify or extend LAMMPS. +through :doc:`(manually customized) makefiles `. Using +CMake has multiple advantages that are specifically helpful for +people with limited experience in compiling software or for people +that want to modify or extend LAMMPS. - CMake can detect available hardware, tools, features, and libraries and adapt the LAMMPS default build configuration accordingly. - CMake can generate files for different build tools and integrated development environments (IDE). - CMake supports customization of settings with a command line, text - mode, or graphical user interface. No knowledge of file formats or - complex command line syntax is required. + mode, or graphical user interface. No manual editing of files, + knowledge of file formats or complex command line syntax is required. - All enabled components are compiled in a single build operation. - Automated dependency tracking for all files and configuration options. - Support for true out-of-source compilation. Multiple configurations diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index c997aa52bf..3794f8ec84 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -3,9 +3,9 @@ Using CMake with LAMMPS tutorial The support for building LAMMPS with CMake is a recent addition to LAMMPS thanks to the efforts of Christoph Junghans (LANL) and Richard -Berger (Temple U). One of the key strengths of CMake is that it is not -tied to a specific platform or build system and thus generate the files -necessary to build and develop for different build systems and on +Berger (LANL). One of the key strengths of CMake is that it is not +tied to a specific platform or build system and thus it generates the +files necessary to build and develop for different build systems and on different platforms. Note, that this applies to the build system itself not the LAMMPS code. In other words, without additional porting effort, it is not possible - for example - to compile LAMMPS with Visual C++ on @@ -14,7 +14,7 @@ necessary to program LAMMPS as a project in integrated development environments (IDE) like Eclipse, Visual Studio, QtCreator, Xcode, CodeBlocks, Kate and others. -A second important feature of CMake is, that it can detect and validate +A second important feature of CMake is that it can detect and validate available libraries, optimal settings, available support tools and so on, so that by default LAMMPS will take advantage of available tools without requiring to provide the details about how to enable/integrate @@ -32,8 +32,7 @@ program ``cmake`` (or ``cmake3``), a text mode interactive user interface (TUI) program ``ccmake`` (or ``ccmake3``), or a graphical user interface (GUI) program ``cmake-gui``. All of them are portable software available on all supported platforms and can be used -interchangeably. The minimum supported CMake version is 3.10 (3.12 or -later is recommended). +interchangeably. The minimum required CMake version is 3.16. All details about features and settings for CMake are in the `CMake online documentation `_. We focus @@ -43,11 +42,20 @@ Prerequisites ------------- This tutorial assumes that you are operating in a command-line environment -using a shell like Bash. +using a shell like Bash or Zsh. -- Linux: any Terminal window will work -- macOS: launch the Terminal application. -- Windows 10: install and run the :doc:`Windows Subsystem for Linux ` +- Linux: any Terminal window will work or text console +- macOS: launch the Terminal application +- Windows 10 or 11: install and run the :doc:`Windows Subsystem for Linux ` +- other Unix-like operating systems like FreeBSD + +.. note:: + + It is also possible to use CMake on Windows 10 or 11 through either the Microsoft + Visual Studio IDE with the bundled CMake or from the Windows command prompt using + a separately installed CMake package, both using the native Microsoft Visual C++ + compilers and (optionally) the Microsoft MPI SDK. This tutorial, however, only + covers unix-like command line interfaces. We also assume that you have downloaded and unpacked a recent LAMMPS source code package or used Git to create a clone of the LAMMPS sources on your compilation machine. diff --git a/doc/src/Intro_portability.rst b/doc/src/Intro_portability.rst index 239eacd1b7..d233d2a9ae 100644 --- a/doc/src/Intro_portability.rst +++ b/doc/src/Intro_portability.rst @@ -13,7 +13,7 @@ Programming language standards Most of the C++ code currently requires a compiler compatible with the C++11 standard, the KOKKOS package currently requires C++14. Most of -the Python code is written to be compatible with Python 3.5 or later or +the Python code is written to be compatible with Python 3.6 or later or Python 2.7. Some Python scripts *require* Python 3 and a few others still need to be ported from Python 2 to Python 3. @@ -25,7 +25,7 @@ LAMMPS can be compiled from source code using a (traditional) build system based on shell scripts, a few shell utilities (grep, sed, cat, tr) and the GNU make program. This requires running within a Bourne shell (``/bin/sh``). Alternatively, a build system with different back ends -can be created using CMake. CMake must be at least version 3.10. +can be created using CMake. CMake must be at least version 3.16. Operating systems ^^^^^^^^^^^^^^^^^ @@ -62,9 +62,9 @@ regularly tested. Portability compliance ^^^^^^^^^^^^^^^^^^^^^^ -Only a subset of the LAMMPS source code is fully compliant to all of the -above mentioned standards. This is rather typical for projects like -LAMMPS that largely depend on contributions from the user community. +Only a subset of the LAMMPS source code is *fully* compliant to *all* +of the above mentioned standards. This is rather typical for projects +like LAMMPS that largely depend on contributions from the user community. Not all contributors are trained as programmers and not all of them have access to multiple platforms for testing. As part of the continuous integration process, however, all contributions are automatically tested diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 5791288a06..4859f0e4bb 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -4089,6 +4089,7 @@ zmq zN zs zsc +Zsh zst Zstandard zstd From 005c15c07b3d4dd445ba276e8f3615852fdb7e71 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 13:26:47 +0300 Subject: [PATCH 0098/1002] compute kinetic contribution without assuming orthogonal geometry --- src/EXTRA-COMPUTE/compute_stress_mop.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index 98e3bf7043..18e6ec6115 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -422,6 +422,11 @@ void ComputeStressMop::compute_pairs() xi[1] = atom->x[i][1]; xi[2] = atom->x[i][2]; + // minimum image of xi with respect to the plane + xi[dir] -= pos; + domain->minimum_image(xi[0], xi[1], xi[2]); + xi[dir] += pos; + //velocities at t vi[0] = atom->v[i][0]; vi[1] = atom->v[i][1]; @@ -447,10 +452,8 @@ void ComputeStressMop::compute_pairs() // at each timestep, must check atoms going through the // image of the plane that is closest to the box - double pos_temp = pos+copysign(1.0,domain->prd_half[dir]-pos)*domain->prd[dir]; - if (fabs(xi[dir]-pos)= 0)) { // sgn = copysign(1.0,vi[dir]-vcm[dir]); sgn = copysign(1.0,vi[dir]); From 94fa2f51c9189874ab84661519f0047cd1f0c9db Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 13:38:56 +0300 Subject: [PATCH 0099/1002] compute kinetic contribution without assuming orthogonal geometry --- .../compute_stress_mop_profile.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index d37a941fde..c8793586ea 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -453,7 +453,22 @@ void ComputeStressMopProfile::compute_pairs() pos = coord[ibin]; pos1 = coordp[ibin]; - if (((xi[dir]-pos)*(xj[dir]-pos)*(xi[dir]-pos1)*(xj[dir]-pos1)<0)) { + // minimum image of xi with respect to the plane + xi[dir] -= pos; + domain->minimum_image(xi[0], xi[1], xi[2]); + xi[dir] += pos; + + // minimum image of xj with respect to xi + xj[0] -= xi[0]; + xj[1] -= xi[1]; + xj[2] -= xi[2]; + domain->minimum_image(xi[0], xi[1], xi[2]); + xj[0] += xi[0]; + xj[1] += xi[1]; + xj[2] += xi[2]; + + double tau = (xi[dir] - pos) / (xi[dir] - xj[dir]); + if ((tau <= 1) && (tau >= 0)) { sgn = copysign(1.0,vi[dir]); From 79ed2d9e8bb1bd5fefbf6fcd24eff5fd2d452381 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:35:25 +0300 Subject: [PATCH 0100/1002] Definition of compute_angle and related variables in compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index 5890505d71..c7214c055c 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -39,18 +39,20 @@ class ComputeStressMopProfile : public Compute { private: void compute_pairs(); void compute_bonds(); + void compute_angles(); void setup_bins(); int nvalues, dir; int *which; - int bondflag; + int bondflag, angleflag; double origin, delta, offset, invdelta; int nbins; double *coord, *coordp; double **values_local, **values_global; double **bond_local, **bond_global; + double **angle_local, **angle_global; double **local_contribution; double dt, nktv2p, ftm2v; From 9aa9bdd3ba4bd6f59cbe2723bedc46936cf77b62 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:45:53 +0300 Subject: [PATCH 0101/1002] Implementation of compute_angles in compute_stress_mop_profile.cpp and related adjustments to flags/memory allocations --- .../compute_stress_mop_profile.cpp | 227 +++++++++++++++++- 1 file changed, 221 insertions(+), 6 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index c8793586ea..dabbbc4781 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -13,7 +13,7 @@ /*------------------------------------------------------------------------ Contributing Authors : Romain Vermorel (LFCR), Laurent Joly (ULyon) - Support for bonds added by : Evangelos Voyiatzis (NovaMechanics) + Support for bonds and angles added by : Evangelos Voyiatzis (NovaMechanics) --------------------------------------------------------------------------*/ #include "compute_stress_mop_profile.h" @@ -38,7 +38,7 @@ using namespace LAMMPS_NS; enum { X, Y, Z }; -enum { TOTAL, CONF, KIN, PAIR, BOND }; +enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE }; // clang-format off /* ---------------------------------------------------------------------- */ @@ -107,6 +107,11 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a which[nvalues] = BOND; nvalues++; } + } else if (strcmp(arg[iarg],"angle") == 0) { + for (i=0; i<3; i++) { + which[nvalues] = ANGLE; + nvalues++; + } } else error->all(FLERR, "Illegal compute stress/mop/profile command"); //break; iarg++; @@ -131,6 +136,8 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a values_local = values_global = array = nullptr; bond_local = nullptr; bond_global = nullptr; + angle_local = nullptr; + angle_global = nullptr; local_contribution = nullptr; // bin setup @@ -159,6 +166,8 @@ ComputeStressMopProfile::~ComputeStressMopProfile() memory->destroy(values_global); memory->destroy(bond_local); memory->destroy(bond_global); + memory->destroy(angle_local); + memory->destroy(angle_global); memory->destroy(local_contribution); memory->destroy(array); } @@ -206,9 +215,14 @@ void ComputeStressMopProfile::init() if (force->bond) bondflag = 1; - if (force->angle) - if ((strcmp(force->angle_style, "zero") != 0) && (strcmp(force->angle_style, "none") != 0)) - error->all(FLERR,"compute stress/mop/profile does not account for angle potentials"); + if (force->angle) { + if (force->angle->born_matrix_enable == 0) { + if ((strcmp(force->angle_style, "zero") != 0) && (strcmp(force->angle_style, "none") != 0)) + error->all(FLERR,"compute stress/mop/profile does not account for angle potentials"); + } else { + angleflag = 1; + } + } if (force->dihedral) if ((strcmp(force->dihedral_style, "zero") != 0) && (strcmp(force->dihedral_style, "none") != 0)) error->all(FLERR,"compute stress/mop/profile does not account for dihedral potentials"); @@ -260,13 +274,27 @@ void ComputeStressMopProfile::compute_array() // sum bond contribution over all procs MPI_Allreduce(&bond_local[0][0],&bond_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); + if (angleflag) { + //Compute angle contribution on separate procs + compute_angles(); + } else { + for (int m = 0; m < nbins; m++) { + for (int i = 0; i < nvalues; i++) { + angle_local[m][i] = 0.0; + } + } + } + + // sum angle contribution over all procs + MPI_Allreduce(&angle_local[0][0],&angle_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); + for (int ibin=0; ibinx; + tagint *tag = atom->tag; + int *num_angle = atom->num_angle; + tagint **angle_atom1 = atom->angle_atom1; + tagint **angle_atom2 = atom->angle_atom2; + tagint **angle_atom3 = atom->angle_atom3; + int **angle_type = atom->angle_type; + int *mask = atom->mask; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int nlocal = atom->nlocal; + int molecular = atom->molecular; + + // loop over all atoms and their angles + Angle *angle = force->angle; + + double duang, du2ang; + double dx[3] = {0.0, 0.0, 0.0}; + double dx_left[3] = {0.0, 0.0, 0.0}; + double dx_right[3] = {0.0, 0.0, 0.0}; + double x_angle_left[3] = {0.0, 0.0, 0.0}; + double x_angle_middle[3] = {0.0, 0.0, 0.0}; + double x_angle_right[3] = {0.0, 0.0, 0.0}; + double dcos_theta[3] = {0.0, 0.0, 0.0}; + + // initialization + for (int m = 0; m < nbins; m++) { + for (int i = 0; i < nvalues; i++) { + angle_local[m][i] = 0.0; + } + local_contribution[m][0] = 0.0; + local_contribution[m][1] = 0.0; + local_contribution[m][2] = 0.0; + } + + + for (atom2 = 0; atom2 < nlocal; atom2++) { + if (!(mask[atom2] & groupbit)) continue; + + if (molecular == 1) + na = num_angle[atom2]; + else { + if (molindex[atom2] < 0) continue; + imol = molindex[atom2]; + iatom = molatom[atom2]; + na = onemols[imol]->num_angle[iatom]; + } + + for (int i = 0; i < na; i++) { + if (molecular == 1) { + if (tag[atom2] != angle_atom2[atom2][i]) continue; + atype = angle_type[atom2][i]; + atom1 = atom->map(angle_atom1[atom2][i]); + atom3 = atom->map(angle_atom3[atom2][i]); + } else { + if (tag[atom2] != onemols[imol]->angle_atom2[atom2][i]) continue; + atype = onemols[imol]->angle_type[atom2][i]; + tagprev = tag[atom2] - iatom - 1; + atom1 = atom->map(onemols[imol]->angle_atom1[atom2][i] + tagprev); + atom3 = atom->map(onemols[imol]->angle_atom3[atom2][i] + tagprev); + } + + if (atom1 < 0 || !(mask[atom1] & groupbit)) continue; + if (atom3 < 0 || !(mask[atom3] & groupbit)) continue; + if (atype <= 0) continue; + + for (int ibin = 0; ibinminimum_image(dx[0], dx[1], dx[2]); + x_angle_left[0] = dx[0]; + x_angle_left[1] = dx[1]; + x_angle_left[2] = dx[2]; + x_angle_left[dir] += pos; + + // minimum image of atom2 with respect to atom1 + dx_left[0] = x[atom2][0] - x_angle_left[0]; + dx_left[1] = x[atom2][1] - x_angle_left[1]; + dx_left[2] = x[atom2][2] - x_angle_left[2]; + domain->minimum_image(dx_left[0], dx_left[1], dx_left[2]); + x_angle_middle[0] = x_angle_left[0] + dx_left[0]; + x_angle_middle[1] = x_angle_left[1] + dx_left[1]; + x_angle_middle[2] = x_angle_left[2] + dx_left[2]; + + // minimum image of atom3 with respect to atom2 + dx_right[0] = x[atom3][0] - x_angle_middle[0]; + dx_right[1] = x[atom3][1] - x_angle_middle[1]; + dx_right[2] = x[atom3][2] - x_angle_middle[2]; + domain->minimum_image(dx_right[0], dx_right[1], dx_right[2]); + x_angle_right[0] = x_angle_middle[0] + dx_right[0]; + x_angle_right[1] = x_angle_middle[1] + dx_right[1]; + x_angle_right[2] = x_angle_middle[2] + dx_right[2]; + + // check if any bond vector crosses the plane of interest + double tau_right = (x_angle_right[dir] - pos) / (x_angle_right[dir] - x_angle_middle[dir]); + double tau_left = (x_angle_middle[dir] - pos) / (x_angle_middle[dir] - x_angle_left[dir]); + bool right_cross = ((tau_right >=0) && (tau_right <= 1)); + bool left_cross = ((tau_left >=0) && (tau_left <= 1)); + + // no bonds crossing the plane + if (!right_cross && !left_cross) continue; + + // compute the cos(theta) of the angle + r1 = sqrt(dx_left[0]*dx_left[0] + dx_left[1]*dx_left[1] + dx_left[2]*dx_left[2]); + r2 = sqrt(dx_right[0]*dx_right[0] + dx_right[1]*dx_right[1] + dx_right[2]*dx_right[2]); + cos_theta = -(dx_right[0]*dx_left[0] + dx_right[1]*dx_left[1] + dx_right[2]*dx_left[2])/(r1*r2); + + if (cos_theta > 1.0) cos_theta = 1.0; + if (cos_theta < -1.0) cos_theta = -1.0; + + // The method returns derivative with regards to cos(theta) + angle->born_matrix(atype, atom1, atom2, atom3, duang, du2ang); + // only right bond crossing the plane + if (right_cross && !left_cross) + { + double sgn = copysign(1.0, x_angle_right[dir] - pos); + dcos_theta[0] = sgn*(dx_right[0]*cos_theta/r2 + dx_left[0]/r1)/r2; + dcos_theta[1] = sgn*(dx_right[1]*cos_theta/r2 + dx_left[1]/r1)/r2; + dcos_theta[2] = sgn*(dx_right[2]*cos_theta/r2 + dx_left[2]/r1)/r2; + } + + // only left bond crossing the plane + if (!right_cross && left_cross) + { + double sgn = copysign(1.0, x_angle_left[dir] - pos); + dcos_theta[0] = -sgn*(dx_left[0]*cos_theta/r1 + dx_right[0]/r2)/r1; + dcos_theta[1] = -sgn*(dx_left[1]*cos_theta/r1 + dx_right[1]/r2)/r1; + dcos_theta[2] = -sgn*(dx_left[2]*cos_theta/r1 + dx_right[2]/r2)/r1; + } + + // both bonds crossing the plane + if (right_cross && left_cross) + { + // due to right bond + double sgn = copysign(1.0, x_angle_middle[dir] - pos); + dcos_theta[0] = -sgn*(dx_right[0]*cos_theta/r2 + dx_left[0]/r1)/r2; + dcos_theta[1] = -sgn*(dx_right[1]*cos_theta/r2 + dx_left[1]/r1)/r2; + dcos_theta[2] = -sgn*(dx_right[2]*cos_theta/r2 + dx_left[2]/r1)/r2; + + // due to left bond + dcos_theta[0] += sgn*(dx_left[0]*cos_theta/r1 + dx_right[0]/r2)/r1; + dcos_theta[1] += sgn*(dx_left[1]*cos_theta/r1 + dx_right[1]/r2)/r1; + dcos_theta[2] += sgn*(dx_left[2]*cos_theta/r1 + dx_right[2]/r2)/r1; + } + + // final contribution of the given angle term + local_contribution[ibin][0] += duang*dcos_theta[0]/area*nktv2p; + local_contribution[ibin][1] += duang*dcos_theta[1]/area*nktv2p; + local_contribution[ibin][2] += duang*dcos_theta[2]/area*nktv2p; + } + } + } + + // loop over the keywords and if necessary add the angle contribution + int m = 0; + while (m < nvalues) { + if (which[m] == CONF || which[m] == TOTAL || which[m] == ANGLE) { + for (int ibin = 0; ibin < nbins; ibin++) { + angle_local[ibin][m] = local_contribution[ibin][0]; + angle_local[ibin][m+1] = local_contribution[ibin][1]; + angle_local[ibin][m+2] = local_contribution[ibin][2]; + } + } + m += 3; + } +} + /* ---------------------------------------------------------------------- setup 1d bins and their extent and coordinates called at init() @@ -657,6 +870,8 @@ void ComputeStressMopProfile::setup_bins() memory->create(values_global,nbins,nvalues,"stress/mop/profile:values_global"); memory->create(bond_local,nbins,nvalues,"stress/mop/profile:bond_local"); memory->create(bond_global,nbins,nvalues,"stress/mop/profile:bond_global"); + memory->create(angle_local,nbins,nvalues,"stress/mop/profile:angle_local"); + memory->create(angle_global,nbins,nvalues,"stress/mop/profile:angle_global"); memory->create(local_contribution,nbins,3,"stress/mop/profile:local_contribution"); // set bin coordinates From 78f4e4f1a15061991a7a0073566df2ed43712715 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:51:41 +0300 Subject: [PATCH 0102/1002] Update compute_stress_mop.rst --- doc/src/compute_stress_mop.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/src/compute_stress_mop.rst b/doc/src/compute_stress_mop.rst index 21c2963545..70986862fe 100644 --- a/doc/src/compute_stress_mop.rst +++ b/doc/src/compute_stress_mop.rst @@ -74,9 +74,7 @@ Between one and six keywords can be used to indicate which contributions to the stress must be computed: total stress (total), kinetic stress (kin), configurational stress (conf), stress due to bond stretching (bond), stress due to angle bending (angle) and/or due to pairwise -non-bonded interactions (pair). The angle keyword is currently -available only for the *stress/mop* command and **not** the -*stress/mop/profile* command. +non-bonded interactions (pair). NOTE 1: The configurational stress is computed considering all pairs of atoms where at least one atom belongs to group group-ID. @@ -136,7 +134,7 @@ requires the class method ``Pair::single()`` to be implemented, which is not possible for manybody potentials. In particular, compute *stress/mop/profile* does not work with more than two-body pair interactions, long range (kspace) interactions and -angle/dihedral/improper intramolecular interactions. Similarly, compute +dihedral/improper intramolecular interactions. Similarly, compute *stress/mop* does not work with more than two-body pair interactions, long range (kspace) interactions and dihedral/improper intramolecular interactions but works with all bond interactions with the class method From 9fde61fc4e358e44854cf73f8d5cb230b3bf7e7c Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:59:02 +0300 Subject: [PATCH 0103/1002] Update compute_stress_mop_profile.cpp --- src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index dabbbc4781..2dee2bf60f 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -18,6 +18,7 @@ #include "compute_stress_mop_profile.h" +#include "angle.h" #include "atom.h" #include "atom_vec.h" #include "bond.h" From 108c5fc41675e1a5fb92d8c38df350807a9a4f60 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 5 Jul 2023 14:59:35 -0400 Subject: [PATCH 0104/1002] improve error messages --- src/RIGID/fix_rigid_nh_small.cpp | 90 +++++++------------- src/RIGID/fix_rigid_small.cpp | 140 +++++++++++++++---------------- 2 files changed, 100 insertions(+), 130 deletions(-) diff --git a/src/RIGID/fix_rigid_nh_small.cpp b/src/RIGID/fix_rigid_nh_small.cpp index 95f4c8d693..7780a15011 100644 --- a/src/RIGID/fix_rigid_nh_small.cpp +++ b/src/RIGID/fix_rigid_nh_small.cpp @@ -57,71 +57,52 @@ FixRigidNHSmall::FixRigidNHSmall(LAMMPS *lmp, int narg, char **arg) : // error checks - if ((p_flag[0] == 1 && p_period[0] <= 0.0) || - (p_flag[1] == 1 && p_period[1] <= 0.0) || - (p_flag[2] == 1 && p_period[2] <= 0.0)) - error->all(FLERR,"Fix rigid/small npt/nph period must be > 0.0"); - - if (dimension == 2 && p_flag[2]) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "for a 2d simulation"); + error->all(FLERR,"Invalid fix {} command for a 2d simulation", style); if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "for a 2d simulation"); + error->all(FLERR,"Invalid fix {} command for a 2d simulation", style); if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "pressure settings"); + error->all(FLERR,"Invalid fix {} command pressure settings", style); if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "pressure settings"); + error->all(FLERR,"Invalid fix {} command pressure settings", style); if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "pressure settings"); + error->all(FLERR,"Invalid fix {} command pressure settings", style); if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "pressure settings"); + error->all(FLERR,"Invalid fix {} command pressure settings", style); if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) - error->all(FLERR,"Invalid fix rigid/small npt/nph command " - "pressure settings"); + error->all(FLERR,"Invalid fix {} command pressure settings", style); // require periodicity in tensile dimension if (p_flag[0] && domain->xperiodic == 0) - error->all(FLERR, - "Cannot use fix rigid/small npt/nph on a " - "non-periodic dimension"); + error->all(FLERR, "Cannot use fix {} on a non-periodic dimension", style); if (p_flag[1] && domain->yperiodic == 0) - error->all(FLERR, - "Cannot use fix rigid/small npt/nph on a " - "non-periodic dimension"); + error->all(FLERR, "Cannot use fix {} on a non-periodic dimension", style); if (p_flag[2] && domain->zperiodic == 0) - error->all(FLERR, - "Cannot use fix rigid/small npt/nph on a " - "non-periodic dimension"); + error->all(FLERR, "Cannot use fix {} on a non-periodic dimension", style); if (pcouple == XYZ && dimension == 3 && (p_start[0] != p_start[1] || p_start[0] != p_start[2] || p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || p_period[0] != p_period[1] || p_period[0] != p_period[2])) - error->all(FLERR,"Invalid fix rigid/small npt/nph command pressure settings"); + error->all(FLERR, "Invalid fix {} command pressure settings", style); if (pcouple == XYZ && dimension == 2 && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all(FLERR,"Invalid fix rigid/small npt/nph command pressure settings"); + error->all(FLERR, "Invalid fix {} command pressure settings", style); if (pcouple == XY && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) - error->all(FLERR,"Invalid fix rigid/small npt/nph command pressure settings"); + error->all(FLERR, "Invalid fix {} command pressure settings", style); if (pcouple == YZ && (p_start[1] != p_start[2] || p_stop[1] != p_stop[2] || p_period[1] != p_period[2])) - error->all(FLERR,"Invalid fix rigid/small npt/nph command pressure settings"); + error->all(FLERR, "Invalid fix {} command pressure settings", style); if (pcouple == XZ && (p_start[0] != p_start[2] || p_stop[0] != p_stop[2] || p_period[0] != p_period[2])) - error->all(FLERR,"Invalid fix rigid/small npt/nph command pressure settings"); + error->all(FLERR, "Invalid fix {} command pressure settings", style); if (p_flag[0]) box_change |= BOX_CHANGE_X; if (p_flag[1]) box_change |= BOX_CHANGE_Y; @@ -131,8 +112,7 @@ FixRigidNHSmall::FixRigidNHSmall(LAMMPS *lmp, int narg, char **arg) : (p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || (p_flag[2] && p_period[2] <= 0.0)) - error->all(FLERR,"Fix rigid/small nvt/npt/nph damping parameters " - "must be > 0.0"); + error->all(FLERR,"Fix {} damping parameters must be > 0.0", style); // memory allocation and initialization @@ -215,8 +195,7 @@ void FixRigidNHSmall::init() if (allremap == 0) { int idilate = group->find(id_dilate); - if (idilate == -1) - error->all(FLERR,"Fix rigid npt/nph dilate group ID does not exist"); + if (idilate == -1) error->all(FLERR,"Fix {} dilate group ID does not exist", style); dilate_group_bit = group->bitmask[idilate]; } @@ -255,7 +234,7 @@ void FixRigidNHSmall::init() if (tcomputeflag) { icompute = modify->find_compute(id_temp); if (icompute < 0) - error->all(FLERR,"Temperature ID for fix rigid nvt/npt/nph does not exist"); + error->all(FLERR,"Temperature ID {} for fix {} does not exist", id_temp, style); temperature = modify->compute[icompute]; } @@ -270,8 +249,8 @@ void FixRigidNHSmall::init() int *dimflag = (dynamic_cast(modify->fix[i]))->dimflag; if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || (p_flag[2] && dimflag[2])) - error->all(FLERR,"Cannot use fix rigid npt/nph and fix deform on " - "same component of stress tensor"); + error->all(FLERR, "Cannot use fix {} and fix deform on the same stress tensor component", + style); } // set frequency @@ -293,7 +272,7 @@ void FixRigidNHSmall::init() icompute = modify->find_compute(id_press); if (icompute < 0) - error->all(FLERR,"Pressure ID for fix rigid npt/nph does not exist"); + error->all(FLERR,"Pressure ID {} for fix {} does not exist", id_press, style); pressure = modify->compute[icompute]; // detect if any rigid fixes exist so rigid bodies move on remap @@ -1315,27 +1294,23 @@ int FixRigidNHSmall::modify_param(int narg, char **arg) modify->delete_compute(id_temp); tcomputeflag = 0; } - delete [] id_temp; + delete[] id_temp; id_temp = utils::strdup(arg[1]); - int icompute = modify->find_compute(arg[1]); - if (icompute < 0) - error->all(FLERR,"Could not find fix_modify temperature ID"); - temperature = modify->compute[icompute]; + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) error->all(FLERR,"Could not find fix_modify temperature ID {}", id_temp); if (temperature->tempflag == 0) - error->all(FLERR, - "Fix_modify temperature ID does not compute temperature"); + error->all(FLERR, "Fix_modify temperature ID {} does not compute temperature", id_temp); if (temperature->igroup != 0 && comm->me == 0) error->warning(FLERR,"Temperature for fix modify is not for group all"); // reset id_temp of pressure to new temperature ID if (pstat_flag) { - icompute = modify->find_compute(id_press); - if (icompute < 0) - error->all(FLERR,"Pressure ID for fix modify does not exist"); - modify->compute[icompute]->reset_extra_compute_fix(id_temp); + auto icompute = modify->get_compute_by_id(id_press); + if (!icompute) error->all(FLERR,"Pressure ID {} for fix modify does not exist", id_press); + icompute->reset_extra_compute_fix(id_temp); } return 2; @@ -1347,15 +1322,14 @@ int FixRigidNHSmall::modify_param(int narg, char **arg) modify->delete_compute(id_press); pcomputeflag = 0; } - delete [] id_press; + delete[] id_press; id_press = utils::strdup(arg[1]); - int icompute = modify->find_compute(arg[1]); - if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); - pressure = modify->compute[icompute]; + pressure = modify->get_compute_by_id(id_press); + if (!pressure) error->all(FLERR,"Could not find fix_modify pressure ID {}", id_press); if (pressure->pressflag == 0) - error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); + error->all(FLERR,"Fix_modify pressure ID {} does not compute pressure", id_press); return 2; } diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index bf2eb69355..d8e6358ddb 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -100,10 +100,10 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : tagint *bodyID = nullptr; int nlocal = atom->nlocal; - if (narg < 4) error->all(FLERR,"Illegal fix rigid/small command"); + if (narg < 4) utils::missing_cmd_args(FLERR, fmt::format("fix {}", style), error); if (strcmp(arg[3],"molecule") == 0) { if (atom->molecule_flag == 0) - error->all(FLERR,"Fix rigid/small requires atom attribute molecule"); + error->all(FLERR,"Fix {} requires atom attribute molecule", style); bodyID = atom->molecule; } else if (strcmp(arg[3],"custom") == 0) { @@ -117,9 +117,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : int is_double,cols; int custom_index = atom->find_custom(arg[4]+2,is_double,cols); if (custom_index == -1) - error->all(FLERR,"Fix rigid/small custom requires previously defined property/atom"); + error->all(FLERR,"Fix {} custom requires previously defined property/atom", style); else if (is_double || cols) - error->all(FLERR,"Fix rigid/small custom requires integer-valued property/atom vector"); + error->all(FLERR,"Fix {} custom requires integer-valued property/atom vector", style); int minval = INT_MAX; int *value = atom->ivector[custom_index]; for (i = 0; i < nlocal; i++) @@ -135,10 +135,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : } else if (utils::strmatch(arg[4],"^v_")) { int ivariable = input->variable->find(arg[4]+2); if (ivariable < 0) - error->all(FLERR,"Variable {} for fix rigid/small custom does not exist", arg[4]+2); + error->all(FLERR,"Variable {} for fix {} custom does not exist", arg[4]+2, style); if (input->variable->atomstyle(ivariable) == 0) - error->all(FLERR,"Fix rigid/small custom variable {} is not atom-style variable", - arg[4]+2); + error->all(FLERR,"Fix {} custom variable {} is not atom-style variable", style, arg[4]+2); auto value = new double[nlocal]; input->variable->compute_atom(ivariable,0,value,1,0); int minval = INT_MAX; @@ -152,11 +151,11 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : bodyID[i] = (tagint)((tagint)value[i] - minval + 1); else bodyID[0] = 0; delete[] value; - } else error->all(FLERR,"Unsupported fix rigid custom property"); - } else error->all(FLERR,"Illegal fix rigid/small command"); + } else error->all(FLERR,"Unsupported fix {} custom property", style, arg[4]); + } else error->all(FLERR,"Unknown fix {} keyword {}", style, arg[3]); if (atom->map_style == Atom::MAP_NONE) - error->all(FLERR,"Fix rigid/small requires an atom map, see atom_modify"); + error->all(FLERR,"Fix {} requires an atom map, see atom_modify", style); // maxmol = largest bodyID # @@ -201,23 +200,21 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"langevin") == 0) { - if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid/small command"); - if ((strcmp(style,"rigid/small") != 0) && - (strcmp(style,"rigid/nve/small") != 0) && - (strcmp(style,"rigid/nph/small") != 0)) - error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+5 > narg) error->all(FLERR,"Illegal fix {} command", style); + if (utils::strmatch(style, "^rigid/n.t/small")) + error->all(FLERR,"Illegal fix {} command", style); langflag = 1; t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); t_period = utils::numeric(FLERR,arg[iarg+3],false,lmp); seed = utils::inumeric(FLERR,arg[iarg+4],false,lmp); if (t_period <= 0.0) - error->all(FLERR,"Fix rigid/small langevin period must be > 0.0"); - if (seed <= 0) error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Fix {} langevin period must be > 0.0", style); + if (seed <= 0) error->all(FLERR,"Illegal fix {} command", style); iarg += 5; } else if (strcmp(arg[iarg],"infile") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix {} infile command", style); delete[] inpfile; inpfile = utils::strdup(arg[iarg+1]); restart_file = 1; @@ -225,23 +222,24 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"reinit") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix {} reinit command", style); reinitflag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"mol") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix {} mol command", style); int imol = atom->find_molecule(arg[iarg+1]); - if (imol == -1) error->all(FLERR,"Molecule template ID for fix rigid/small does not exist"); + if (imol == -1) + error->all(FLERR,"Molecule template ID {} for fix {} does not exist", arg[iarg+1], style); onemols = &atom->molecules[imol]; nmol = onemols[0]->nset; restart_file = 1; iarg += 2; } else if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR, "Illegal fix {} temp command", style); if (!utils::strmatch(style,"^rigid/n.t/small")) - error->all(FLERR,"Illegal fix rigid command"); + error->all(FLERR, "Illegal fix {} temp", style); tstat_flag = 1; t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); @@ -249,9 +247,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"iso") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR, "Illegal fix {} iso command", style); if (!utils::strmatch(style,"^rigid/np./small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} iso command", style); pcouple = XYZ; p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); @@ -266,9 +264,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"aniso") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix {} ansio command", style); if (!utils::strmatch(style,"^rigid/np./small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} aniso command", style); p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); p_period[0] = p_period[1] = p_period[2] = @@ -281,9 +279,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"x") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix {} x command", style); if (!utils::strmatch(style,"^rigid/np./small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} x command", style); p_start[0] = utils::numeric(FLERR,arg[iarg+1],false,lmp); p_stop[0] = utils::numeric(FLERR,arg[iarg+2],false,lmp); p_period[0] = utils::numeric(FLERR,arg[iarg+3],false,lmp); @@ -291,9 +289,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"y") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix {} y command", style); if (!utils::strmatch(style,"^rigid/np./small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} y command", style); p_start[1] = utils::numeric(FLERR,arg[iarg+1],false,lmp); p_stop[1] = utils::numeric(FLERR,arg[iarg+2],false,lmp); p_period[1] = utils::numeric(FLERR,arg[iarg+3],false,lmp); @@ -301,9 +299,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"z") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix {} z command", style); if (!utils::strmatch(style,"^rigid/np./small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} z command", style); p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); @@ -311,18 +309,18 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : iarg += 4; } else if (strcmp(arg[iarg],"couple") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix {} couple command", style); if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; - else error->all(FLERR,"Illegal fix rigid/small command"); + else error->all(FLERR,"Illegal fix {} couple command", style); iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { if (iarg+2 > narg) - error->all(FLERR,"Illegal fix rigid/small nvt/npt/nph command"); + error->all(FLERR,"Illegal fix {} dilate command", style); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; else { allremap = 0; @@ -330,34 +328,33 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : id_dilate = utils::strdup(arg[iarg+1]); int idilate = group->find(id_dilate); if (idilate == -1) - error->all(FLERR,"Fix rigid/small nvt/npt/nph dilate group ID " - "does not exist"); + error->all(FLERR,"Fix {} dilate group ID {} does not exist", style, id_dilate); } iarg += 2; } else if (strcmp(arg[iarg],"tparam") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+4 > narg) error->all(FLERR,"Illegal fix {} tparam command", style); if (!utils::strmatch(style,"^rigid/n.t/small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} tparam command", style); t_chain = utils::inumeric(FLERR,arg[iarg+1],false,lmp); t_iter = utils::inumeric(FLERR,arg[iarg+2],false,lmp); t_order = utils::inumeric(FLERR,arg[iarg+3],false,lmp); iarg += 4; } else if (strcmp(arg[iarg],"pchain") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix {} pchain command", style); if (!utils::strmatch(style,"^rigid/np./small")) - error->all(FLERR,"Illegal fix rigid/small command"); + error->all(FLERR,"Illegal fix {} pchain command", style); p_chain = utils::inumeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"gravity") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal fix {} gravity command", style); delete[] id_gravity; id_gravity = utils::strdup(arg[iarg+1]); iarg += 2; - } else error->all(FLERR,"Illegal fix rigid/small command"); + } else error->all(FLERR,"Unknown fix {} keyword {}", style, arg[iarg]); } // error check and further setup for Molecule template @@ -365,9 +362,9 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : if (onemols) { for (i = 0; i < nmol; i++) { if (onemols[i]->xflag == 0) - error->all(FLERR,"Fix rigid/small molecule must have coordinates"); + error->all(FLERR,"Fix {} molecule must have coordinates", style); if (onemols[i]->typeflag == 0) - error->all(FLERR,"Fix rigid/small molecule must have atom types"); + error->all(FLERR,"Fix {} molecule must have atom types", style); // fix rigid/small uses center, masstotal, COM, inertia of molecule @@ -532,15 +529,15 @@ void FixRigidSmall::init() int count = 0; for (auto &ifix : modify->get_fix_list()) if (ifix->rigid_flag) count++; - if (count > 1 && me == 0) error->warning(FLERR,"More than one fix rigid"); + if (count > 1 && me == 0) error->warning(FLERR, "More than one fix rigid command"); if (earlyflag) { bool rflag = false; for (auto &ifix : modify->get_fix_list()) { if (ifix->rigid_flag) rflag = true; if ((comm->me == 0) && rflag && (ifix->setmask() & POST_FORCE) && !ifix->rigid_flag) - error->warning(FLERR,"Fix {} with ID {} alters forces after fix rigid/small", - ifix->style, ifix->id); + error->warning(FLERR,"Fix {} with ID {} alters forces after fix {}", + ifix->style, ifix->id, style); } } @@ -569,9 +566,9 @@ void FixRigidSmall::init() if (id_gravity) { auto ifix = modify->get_fix_by_id(id_gravity); - if (!ifix) error->all(FLERR,"Fix rigid/small cannot find fix gravity ID {}", id_gravity); + if (!ifix) error->all(FLERR,"Fix {} cannot find fix gravity ID {}", style, id_gravity); if (!utils::strmatch(ifix->style,"^gravity")) - error->all(FLERR,"Fix rigid/small gravity fix ID {} is not a gravity fix style", id_gravity); + error->all(FLERR,"Fix {} gravity fix ID {} is not a gravity fix style", style, id_gravity); int tmp; gvec = (double *) ifix->extract("gvec", tmp); } @@ -630,7 +627,7 @@ void FixRigidSmall::setup(int vflag) double cutghost = MAX(neighbor->cutneighmax,comm->cutghostuser); if (maxextent > cutghost) - error->all(FLERR,"Rigid body extent > ghost cutoff - use comm_modify cutoff"); + error->all(FLERR,"Rigid body extent {} > ghost atom cutoff - use comm_modify cutoff", maxextent); //check(1); @@ -2123,8 +2120,7 @@ void FixRigidSmall::setup_bodies_static() inertia = body[ibody].inertia; ierror = MathEigen::jacobi3(tensor,inertia,evectors); - if (ierror) error->all(FLERR, - "Insufficient Jacobi rotations for rigid body"); + if (ierror) error->all(FLERR, "Insufficient Jacobi rotations for rigid body"); ex = body[ibody].ex_space; ex[0] = evectors[0][0]; @@ -2320,30 +2316,30 @@ void FixRigidSmall::setup_bodies_static() if (inertia[0] == 0.0) { if (fabs(itensor[ibody][0]) > TOLERANCE) - error->all(FLERR,"Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix {}: Bad principal moments", style); } else { if (fabs((itensor[ibody][0]-inertia[0])/inertia[0]) > - TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); + TOLERANCE) error->all(FLERR,"Fix {}: Bad principal moments", style); } if (inertia[1] == 0.0) { if (fabs(itensor[ibody][1]) > TOLERANCE) - error->all(FLERR,"Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix {}: Bad principal moments", style); } else { if (fabs((itensor[ibody][1]-inertia[1])/inertia[1]) > - TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); + TOLERANCE) error->all(FLERR,"Fix {}: Bad principal moments", style); } if (inertia[2] == 0.0) { if (fabs(itensor[ibody][2]) > TOLERANCE) - error->all(FLERR,"Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix {}: Bad principal moments", style); } else { if (fabs((itensor[ibody][2]-inertia[2])/inertia[2]) > - TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); + TOLERANCE) error->all(FLERR,"Fix {}: Bad principal moments", style); } norm = (inertia[0] + inertia[1] + inertia[2]) / 3.0; if (fabs(itensor[ibody][3]/norm) > TOLERANCE || fabs(itensor[ibody][4]/norm) > TOLERANCE || fabs(itensor[ibody][5]/norm) > TOLERANCE) - error->all(FLERR,"Fix rigid: Bad principal moments"); + error->all(FLERR,"Fix {}: Bad principal moments", style); } // clean up @@ -2492,10 +2488,10 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) if (me == 0) { fp = fopen(inpfile,"r"); if (fp == nullptr) - error->one(FLERR,"Cannot open fix rigid/small file {}: {}", inpfile, utils::getsyserror()); + error->one(FLERR,"Cannot open fix {} file {}: {}", style, inpfile, utils::getsyserror()); while (true) { eof = fgets(line,MAXLINE,fp); - if (eof == nullptr) error->one(FLERR,"Unexpected end of fix rigid/small file"); + if (eof == nullptr) error->one(FLERR,"Unexpected end of fix {} file", style); start = &line[strspn(line," \t\n\v\f\r")]; if (*start != '\0' && *start != '#') break; } @@ -2510,14 +2506,14 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) // generation when no infile was previously used. if (nlines == 0) return; - else if (nlines < 0) error->all(FLERR,"Fix rigid infile has incorrect format"); + else if (nlines < 0) error->all(FLERR,"Fix {} infile has incorrect format", style); auto buffer = new char[CHUNK*MAXLINE]; int nread = 0; while (nread < nlines) { nchunk = MIN(nlines-nread,CHUNK); eofflag = utils::read_lines_from_file(fp,nchunk,MAXLINE,buffer,me,world); - if (eofflag) error->all(FLERR,"Unexpected end of fix rigid/small file"); + if (eofflag) error->all(FLERR,"Unexpected end of fix {} file", style); buf = buffer; next = strchr(buf,'\n'); @@ -2526,7 +2522,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) *next = '\n'; if (nwords != ATTRIBUTE_PERBODY) - error->all(FLERR,"Incorrect rigid body format in fix rigid/small file"); + error->all(FLERR,"Incorrect rigid body format in fix {} file", style); // loop over lines of rigid body attributes // tokenize the line into values @@ -2543,7 +2539,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) tagint id = values.next_tagint(); if (id <= 0 || id > maxmol) - error->all(FLERR,"Invalid rigid body molecude ID {} in fix rigid/small file", id); + error->all(FLERR,"Invalid rigid body molecude ID {} in fix {} file", id, style); if (hash.find(id) == hash.end()) { buf = next + 1; @@ -2580,7 +2576,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) array[m][3] = values.next_double(); } } catch (TokenizerException &e) { - error->all(FLERR, "Invalid fix rigid/small infile: {}", e.what()); + error->all(FLERR, "Invalid fix {} infile: {}", style, e.what()); } buf = next + 1; } @@ -2611,7 +2607,8 @@ void FixRigidSmall::write_restart_file(const char *file) auto outfile = std::string(file) + ".rigid"; fp = fopen(outfile.c_str(),"w"); if (fp == nullptr) - error->one(FLERR,"Cannot open fix rigid restart file {}: {}",outfile,utils::getsyserror()); + error->one(FLERR, "Cannot open fix {} restart file {}: {}", + style, outfile, utils::getsyserror()); fmt::print(fp,"# fix rigid mass, COM, inertia tensor info for " "{} bodies on timestep {}\n\n",nbody,update->ntimestep); @@ -3382,9 +3379,8 @@ void FixRigidSmall::reset_atom2body() if (bodytag[i]) { iowner = atom->map(bodytag[i]); if (iowner == -1) - error->one(FLERR,"Rigid body atoms {} {} missing on " - "proc {} at step {}",atom->tag[i], - bodytag[i],comm->me,update->ntimestep); + error->one(FLERR, "Rigid body atoms {} {} missing on proc {} at step {}", + atom->tag[i], bodytag[i], comm->me, update->ntimestep); atom2body[i] = bodyown[iowner]; } From bacfcd205093c626a30f43e157704118d001f945 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 7 Jul 2023 07:36:05 -0700 Subject: [PATCH 0105/1002] change triclinic logic to not depend on exact I,J atom coords --- src/npair_half_bin_newton_tri.cpp | 39 ++++++++++++++++++++++++++++--- src/npair_half_nsq_newton.cpp | 14 ++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 88ef993a41..227a25c321 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -16,6 +16,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "force.h" #include "molecule.h" #include "domain.h" #include "my_page.h" @@ -36,10 +37,12 @@ NPairHalfBinNewtonTri::NPairHalfBinNewtonTri(LAMMPS *lmp) : NPair(lmp) {} void NPairHalfBinNewtonTri::build(NeighList *list) { int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - + + double angstrom = force->angstrom; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -68,6 +71,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) n = 0; neighptr = ipage->vget(); + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -87,6 +91,34 @@ void NPairHalfBinNewtonTri::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + + if (fabs(x[j][2]-ztmp) > angstrom) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > angstrom) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + + /* + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + */ + } + } + + /* if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; @@ -95,7 +127,8 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] == xtmp && j <= i) continue; } } - + */ + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp index e5f3138f0a..20ffbf6977 100644 --- a/src/npair_half_nsq_newton.cpp +++ b/src/npair_half_nsq_newton.cpp @@ -16,6 +16,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "force.h" #include "group.h" #include "molecule.h" #include "domain.h" @@ -41,6 +42,9 @@ void NPairHalfNsqNewton::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; + double angstrom = force->angstrom; + int triclinic = domain->triclinic; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -96,7 +100,15 @@ void NPairHalfNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; - } else { + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > angstrom) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > angstrom) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; From 129264aa148bb2b10ce0d6dbfda866443f58d749 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 7 Jul 2023 08:42:46 -0700 Subject: [PATCH 0106/1002] debugging --- src/npair_half_bin_newton_tri.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 227a25c321..00b5722673 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -92,6 +92,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + /* if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { @@ -108,17 +109,15 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] < xtmp) continue; } - /* if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; if (x[j][1] == ytmp && x[j][0] < xtmp) continue; } - */ } } - - /* + */ + if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; @@ -127,7 +126,6 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] == xtmp && j <= i) continue; } } - */ jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; From 42f2a4b5b0e8021b01b1655b2c555cd392539c18 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 7 Jul 2023 08:58:14 -0700 Subject: [PATCH 0107/1002] exclude self interactions and double counting of own/own --- src/npair_half_bin_newton_tri.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 00b5722673..4cd12b2e7c 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -92,7 +92,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - /* + if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { @@ -109,15 +109,15 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] < xtmp) continue; } - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } + //if (x[j][2] < ztmp) continue; + //if (x[j][2] == ztmp) { + // if (x[j][1] < ytmp) continue; + // if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + // } } } - */ - + + /* if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; @@ -126,6 +126,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] == xtmp && j <= i) continue; } } + */ jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -136,6 +137,8 @@ void NPairHalfBinNewtonTri::build(NeighList *list) rsq = delx*delx + dely*dely + delz*delz; if (rsq <= cutneighsq[itype][jtype]) { + //printf("NEIGH i,j %d %d ijtag %d %d dist %g\n", + // i,j,tag[i],tag[j],sqrt(rsq)); if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); From abadf9412afb695eabeb996d507e6533ec686d07 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Sat, 8 Jul 2023 10:26:34 -0700 Subject: [PATCH 0108/1002] check old results --- src/npair_half_bin_newton_tri.cpp | 7 ++++--- src/npair_half_nsq_newton.cpp | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 4cd12b2e7c..61d67fed2a 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -92,6 +92,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + /* if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; @@ -116,8 +117,9 @@ void NPairHalfBinNewtonTri::build(NeighList *list) // } } } - - /* + */ + + if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; @@ -126,7 +128,6 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] == xtmp && j <= i) continue; } } - */ jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp index 20ffbf6977..995c9cfbed 100644 --- a/src/npair_half_nsq_newton.cpp +++ b/src/npair_half_nsq_newton.cpp @@ -100,7 +100,8 @@ void NPairHalfNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; - } else if (triclinic) { + /* + } else if (triclinic) { if (fabs(x[j][2]-ztmp) > angstrom) { if (x[j][2] < ztmp) continue; } else if (fabs(x[j][1]-ytmp) > angstrom) { @@ -108,6 +109,7 @@ void NPairHalfNsqNewton::build(NeighList *list) } else { if (x[j][0] < xtmp) continue; } + */ } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { From ce1a084a0efba244310fd4d8448b726210030f8d Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Sat, 8 Jul 2023 18:31:55 -0700 Subject: [PATCH 0109/1002] expand stencil for triclinic neighbor build --- src/npair_half_bin_newton_tri.cpp | 15 ++++++--------- src/npair_half_nsq_newton.cpp | 10 ++++------ src/npair_halffull_newton.cpp | 15 +++++++++++++++ src/nstencil_half_bin_3d_tri.cpp | 3 ++- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 61d67fed2a..17504ac3af 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -41,7 +41,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - double angstrom = force->angstrom; + double delta = 0.01 * force->angstrom; double **x = atom->x; int *type = atom->type; @@ -92,7 +92,6 @@ void NPairHalfBinNewtonTri::build(NeighList *list) for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - /* if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; @@ -101,15 +100,13 @@ void NPairHalfBinNewtonTri::build(NeighList *list) } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; } else { - - if (fabs(x[j][2]-ztmp) > angstrom) { + if (fabs(x[j][2]-ztmp) > delta) { if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > angstrom) { + } else if (fabs(x[j][1]-ytmp) > delta) { if (x[j][1] < ytmp) continue; } else { if (x[j][0] < xtmp) continue; } - //if (x[j][2] < ztmp) continue; //if (x[j][2] == ztmp) { // if (x[j][1] < ytmp) continue; @@ -117,9 +114,8 @@ void NPairHalfBinNewtonTri::build(NeighList *list) // } } } - */ - - + + /* if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; @@ -128,6 +124,7 @@ void NPairHalfBinNewtonTri::build(NeighList *list) if (x[j][0] == xtmp && j <= i) continue; } } + */ jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp index 995c9cfbed..be06393f58 100644 --- a/src/npair_half_nsq_newton.cpp +++ b/src/npair_half_nsq_newton.cpp @@ -42,7 +42,7 @@ void NPairHalfNsqNewton::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - double angstrom = force->angstrom; + double delta = 0.01 * force->angstrom; int triclinic = domain->triclinic; double **x = atom->x; @@ -100,16 +100,14 @@ void NPairHalfNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; - /* - } else if (triclinic) { - if (fabs(x[j][2]-ztmp) > angstrom) { + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > angstrom) { + } else if (fabs(x[j][1]-ytmp) > delta) { if (x[j][1] < ytmp) continue; } else { if (x[j][0] < xtmp) continue; } - */ } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { diff --git a/src/npair_halffull_newton.cpp b/src/npair_halffull_newton.cpp index 407a71e614..d1e894943c 100644 --- a/src/npair_halffull_newton.cpp +++ b/src/npair_halffull_newton.cpp @@ -14,7 +14,9 @@ #include "npair_halffull_newton.h" #include "atom.h" +#include "domain.h" #include "error.h" +#include "force.h" #include "my_page.h" #include "neigh_list.h" @@ -37,6 +39,9 @@ void NPairHalffullNewton::build(NeighList *list) int *neighptr, *jlist; double xtmp, ytmp, ztmp; + double delta = 0.01 * force->angstrom; + int triclinic = domain->triclinic; + double **x = atom->x; int nlocal = atom->nlocal; @@ -72,8 +77,17 @@ void NPairHalffullNewton::build(NeighList *list) for (jj = 0; jj < jnum; jj++) { joriginal = jlist[jj]; j = joriginal & NEIGHMASK; + if (j < nlocal) { if (i > j) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { @@ -81,6 +95,7 @@ void NPairHalffullNewton::build(NeighList *list) if (x[j][1] == ytmp && x[j][0] < xtmp) continue; } } + neighptr[n++] = joriginal; } diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_half_bin_3d_tri.cpp index d066a24ee6..f94bfc5e63 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_half_bin_3d_tri.cpp @@ -29,7 +29,8 @@ void NStencilHalfBin3dTri::create() nstencil = 0; - for (k = 0; k <= sz; k++) + //for (k = 0; k <= sz; k++) + for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (bin_distance(i, j, k) < cutneighmaxsq) From e3349581c757ad49a187bc86dd429abb4420dd1f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 9 Jul 2023 15:14:36 -0400 Subject: [PATCH 0110/1002] fix whitespace and remove debug code --- src/npair_half_bin_newton_tri.cpp | 56 +++++++++++-------------------- src/npair_half_nsq_newton.cpp | 24 ++++++------- src/npair_halffull_newton.cpp | 22 ++++++------ src/nstencil_half_bin_3d_tri.cpp | 1 - 4 files changed, 42 insertions(+), 61 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 17504ac3af..2917055214 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -40,9 +40,9 @@ void NPairHalfBinNewtonTri::build(NeighList *list) tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - - double delta = 0.01 * force->angstrom; - + + const double delta = 0.01 * force->angstrom; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -92,40 +92,24 @@ void NPairHalfBinNewtonTri::build(NeighList *list) for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - //if (x[j][2] < ztmp) continue; - //if (x[j][2] == ztmp) { - // if (x[j][1] < ytmp) continue; - // if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - // } - } - } - - /* - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } - */ - + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -135,8 +119,6 @@ void NPairHalfBinNewtonTri::build(NeighList *list) rsq = delx*delx + dely*dely + delz*delz; if (rsq <= cutneighsq[itype][jtype]) { - //printf("NEIGH i,j %d %d ijtag %d %d dist %g\n", - // i,j,tag[i],tag[j],sqrt(rsq)); if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp index be06393f58..295b7de18c 100644 --- a/src/npair_half_nsq_newton.cpp +++ b/src/npair_half_nsq_newton.cpp @@ -42,9 +42,9 @@ void NPairHalfNsqNewton::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - double delta = 0.01 * force->angstrom; - int triclinic = domain->triclinic; - + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -100,15 +100,15 @@ void NPairHalfNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; - } else if (triclinic) { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } else { + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { if (x[j][1] < ytmp) continue; diff --git a/src/npair_halffull_newton.cpp b/src/npair_halffull_newton.cpp index d1e894943c..0192ed5729 100644 --- a/src/npair_halffull_newton.cpp +++ b/src/npair_halffull_newton.cpp @@ -39,8 +39,8 @@ void NPairHalffullNewton::build(NeighList *list) int *neighptr, *jlist; double xtmp, ytmp, ztmp; - double delta = 0.01 * force->angstrom; - int triclinic = domain->triclinic; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; double **x = atom->x; int nlocal = atom->nlocal; @@ -77,17 +77,17 @@ void NPairHalffullNewton::build(NeighList *list) for (jj = 0; jj < jnum; jj++) { joriginal = jlist[jj]; j = joriginal & NEIGHMASK; - + if (j < nlocal) { if (i > j) continue; } else if (triclinic) { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { @@ -95,7 +95,7 @@ void NPairHalffullNewton::build(NeighList *list) if (x[j][1] == ytmp && x[j][0] < xtmp) continue; } } - + neighptr[n++] = joriginal; } diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_half_bin_3d_tri.cpp index f94bfc5e63..5887e389fb 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_half_bin_3d_tri.cpp @@ -29,7 +29,6 @@ void NStencilHalfBin3dTri::create() nstencil = 0; - //for (k = 0; k <= sz; k++) for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) From 9db5d4523282972f30dd6cb172fddcbb12921c1d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 9 Jul 2023 15:29:18 -0400 Subject: [PATCH 0111/1002] port neighbor list build changes to corresponding OPENMP package files --- src/OPENMP/npair_half_bin_newton_tri_omp.cpp | 29 ++++++++++++++------ src/OPENMP/npair_half_nsq_newton_omp.cpp | 24 ++++++++++++---- src/OPENMP/npair_halffull_newton_omp.cpp | 13 +++++++++ src/npair_half_nsq_newton.cpp | 7 +++-- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_bin_newton_tri_omp.cpp index e754456ef1..3ad07acd56 100644 --- a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_bin_newton_tri_omp.cpp @@ -18,6 +18,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "force.h" #include "molecule.h" #include "domain.h" #include "my_page.h" @@ -40,6 +41,7 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -48,7 +50,7 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; @@ -79,6 +81,7 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) n = 0; neighptr = ipage.vget(); + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -98,12 +101,22 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } @@ -119,7 +132,7 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_nsq_newton_omp.cpp b/src/OPENMP/npair_half_nsq_newton_omp.cpp index cb08cb7f7a..726814c6f0 100644 --- a/src/OPENMP/npair_half_nsq_newton_omp.cpp +++ b/src/OPENMP/npair_half_nsq_newton_omp.cpp @@ -15,14 +15,16 @@ #include "omp_compat.h" #include "npair_half_nsq_newton_omp.h" #include "npair_omp.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "force.h" #include "group.h" #include "molecule.h" -#include "domain.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -42,6 +44,8 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -49,8 +53,8 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,n,itype,jtype,itag,jtag,which,imol,iatom; - tagint tagprev; + int i,j,n,itype,jtype,which,imol,iatom; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; @@ -106,6 +110,14 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { @@ -127,7 +139,7 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_halffull_newton_omp.cpp b/src/OPENMP/npair_halffull_newton_omp.cpp index abd5f7eacb..e833ab3095 100644 --- a/src/OPENMP/npair_halffull_newton_omp.cpp +++ b/src/OPENMP/npair_halffull_newton_omp.cpp @@ -15,7 +15,9 @@ #include "npair_halffull_newton_omp.h" #include "atom.h" +#include "domain.h" #include "error.h" +#include "force.h" #include "my_page.h" #include "neigh_list.h" #include "npair_omp.h" @@ -38,6 +40,8 @@ NPairHalffullNewtonOmp::NPairHalffullNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} void NPairHalffullNewtonOmp::build(NeighList *list) { const int inum_full = list->listfull->inum; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -83,8 +87,17 @@ void NPairHalffullNewtonOmp::build(NeighList *list) for (jj = 0; jj < jnum; jj++) { joriginal = jlist[jj]; j = joriginal & NEIGHMASK; + if (j < nlocal) { if (i > j) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp index 295b7de18c..023ece69c9 100644 --- a/src/npair_half_nsq_newton.cpp +++ b/src/npair_half_nsq_newton.cpp @@ -13,15 +13,16 @@ ------------------------------------------------------------------------- */ #include "npair_half_nsq_newton.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" +#include "domain.h" +#include "error.h" #include "force.h" #include "group.h" #include "molecule.h" -#include "domain.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; From 07f42930ff711b09bf46f9641ae964617edf3cad Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Mon, 10 Jul 2023 12:53:02 -0700 Subject: [PATCH 0112/1002] clean up code and comments --- src/compute_property_local.cpp | 3 ++- src/npair_half_bin_newton_tri.cpp | 29 ++++++----------------------- src/npair_half_nsq_newton.cpp | 5 +++++ src/npair_halffull_newton.cpp | 5 +++++ src/nstencil_half_bin_2d_tri.cpp | 12 ++++++++++-- src/nstencil_half_bin_3d_tri.cpp | 8 +++++++- 6 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/compute_property_local.cpp b/src/compute_property_local.cpp index d0523a1bec..92036c4bd2 100644 --- a/src/compute_property_local.cpp +++ b/src/compute_property_local.cpp @@ -405,7 +405,8 @@ int ComputePropertyLocal::count_pairs(int allflag, int forceflag) if (!(mask[j] & groupbit)) continue; // itag = jtag is possible for long cutoffs that include images of self - + // do not need triclinic logic here b/c neighbor list itself is correct + if (newton_pair == 0 && j >= nlocal) { jtag = tag[j]; if (itag > jtag) { diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 17504ac3af..71a15df59e 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -83,11 +83,12 @@ void NPairHalfBinNewtonTri::build(NeighList *list) } // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon + ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { @@ -107,25 +108,9 @@ void NPairHalfBinNewtonTri::build(NeighList *list) } else { if (x[j][0] < xtmp) continue; } - //if (x[j][2] < ztmp) continue; - //if (x[j][2] == ztmp) { - // if (x[j][1] < ytmp) continue; - // if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - // } } } - /* - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - */ - jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -135,8 +120,6 @@ void NPairHalfBinNewtonTri::build(NeighList *list) rsq = delx*delx + dely*dely + delz*delz; if (rsq <= cutneighsq[itype][jtype]) { - //printf("NEIGH i,j %d %d ijtag %d %d dist %g\n", - // i,j,tag[i],tag[j],sqrt(rsq)); if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp index be06393f58..0174a78900 100644 --- a/src/npair_half_nsq_newton.cpp +++ b/src/npair_half_nsq_newton.cpp @@ -89,7 +89,12 @@ void NPairHalfNsqNewton::build(NeighList *list) } // loop over remaining atoms, owned and ghost + // use itag/jtap comparision to eliminate half the interactions // itag = jtag is possible for long cutoffs that include images of self + // for triclinic, must use delta to eliminate half the I/J interactions + // cannot use direct I/J coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon for (j = i+1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; diff --git a/src/npair_halffull_newton.cpp b/src/npair_halffull_newton.cpp index d1e894943c..af15b27eac 100644 --- a/src/npair_halffull_newton.cpp +++ b/src/npair_halffull_newton.cpp @@ -70,6 +70,11 @@ void NPairHalffullNewton::build(NeighList *list) ztmp = x[i][2]; // loop over full neighbor list + // use i < j < nlocal to eliminate half the local/local interactions + // for triclinic, must use delta to eliminate half the local/ghost interactions + // cannot use direct I/J coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon jlist = firstneigh_full[i]; jnum = numneigh_full[i]; diff --git a/src/nstencil_half_bin_2d_tri.cpp b/src/nstencil_half_bin_2d_tri.cpp index 06831730fd..920918fe09 100644 --- a/src/nstencil_half_bin_2d_tri.cpp +++ b/src/nstencil_half_bin_2d_tri.cpp @@ -27,9 +27,17 @@ void NStencilHalfBin2dTri::create() { int i, j; + // for triclinic, need to use full stencil in all dims + // not a half stencil in y + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift both coords by epsilon + // thus for an I/J owned/ghost pair, the xy coords + // and bin assignments can be different on I proc vs J proc + nstencil = 0; - for (j = 0; j <= sy; j++) + for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i, j, 0) < cutneighmaxsq) stencil[nstencil++] = j * mbinx + i; + if (bin_distance(i, j, 0) < cutneighmaxsq) + stencil[nstencil++] = j * mbinx + i; } diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_half_bin_3d_tri.cpp index f94bfc5e63..d146b92cd1 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_half_bin_3d_tri.cpp @@ -27,9 +27,15 @@ void NStencilHalfBin3dTri::create() { int i, j, k; + // for triclinic, need to use full stencil in all dims + // not a half stencil in z + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon + // thus for an I/J owned/ghost pair, the xyz coords + // and bin assignments can be different on I proc vs J proc + nstencil = 0; - //for (k = 0; k <= sz; k++) for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) From fbbf44fb8e2948fea648f048f4ab1cb088cd93bc Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Mon, 10 Jul 2023 18:25:29 -0700 Subject: [PATCH 0113/1002] same changes to other NPair and NStencil methods --- src/npair_half_bin_newton_tri.cpp | 4 +- src/npair_half_multi_newton_tri.cpp | 119 +++++++++++-------- src/npair_half_multi_old_newton_tri.cpp | 44 ++++--- src/npair_half_respa_bin_newton_tri.cpp | 45 ++++--- src/npair_half_respa_nsq_newton.cpp | 24 +++- src/npair_half_respa_nsq_newton.h | 2 +- src/npair_half_size_bin_newton_tri.cpp | 41 +++++-- src/npair_half_size_multi_newton_tri.cpp | 107 ++++++++++------- src/npair_half_size_multi_old_newton_tri.cpp | 45 ++++--- src/npair_half_size_nsq_newton.cpp | 22 +++- src/npair_halffull_newton_trim.cpp | 19 +++ src/nstencil_half_multi_2d_tri.cpp | 2 +- src/nstencil_half_multi_3d_tri.cpp | 2 +- src/nstencil_half_multi_old_2d_tri.cpp | 2 +- src/nstencil_half_multi_old_3d_tri.cpp | 2 +- 15 files changed, 313 insertions(+), 167 deletions(-) diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index f6cbf1b1af..9c0688af68 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -16,11 +16,11 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "domain.h" +#include "error.h" #include "force.h" #include "molecule.h" -#include "domain.h" #include "my_page.h" -#include "error.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp index 9bebfe71e2..316acb5049 100644 --- a/src/npair_half_multi_newton_tri.cpp +++ b/src/npair_half_multi_newton_tri.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neighbor.h" @@ -39,11 +40,13 @@ NPairHalfMultiNewtonTri::NPairHalfMultiNewtonTri(LAMMPS *lmp) : NPair(lmp) {} void NPairHalfMultiNewtonTri::build(NeighList *list) { int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*s; int js; + const double delta = 0.01 * force->angstrom; + int *collection = neighbor->collection; double **x = atom->x; int *type = atom->type; @@ -72,6 +75,8 @@ void NPairHalfMultiNewtonTri::build(NeighList *list) for (i = 0; i < nlocal; i++) { n = 0; neighptr = ipage->vget(); + + itag = tag[i]; itype = type[i]; icollection = collection[i]; xtmp = x[i][0]; @@ -86,65 +91,79 @@ void NPairHalfMultiNewtonTri::build(NeighList *list) ibin = atom2bin[i]; // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { // if same collection use own bin + if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); + else jbin = coord2bin(x[i], jcollection); // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic: + // stencil is empty if i larger than j + // stencil is full if i smaller than j + // stencil is full if i same size as j + // for i smaller than j: + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon + + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + + // if same size (same collection), exclude half of interactions + + if (cutcollectionsq[icollection][icollection] == + cutcollectionsq[jcollection][jcollection]) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } + } - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - // if same size (same collection), use half stencil - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } } ilist[inum++] = i; diff --git a/src/npair_half_multi_old_newton_tri.cpp b/src/npair_half_multi_old_newton_tri.cpp index fbb9a8e504..9dcbcff9f4 100644 --- a/src/npair_half_multi_old_newton_tri.cpp +++ b/src/npair_half_multi_old_newton_tri.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neigh_list.h" @@ -38,11 +39,13 @@ NPairHalfMultiOldNewtonTri::NPairHalfMultiOldNewtonTri(LAMMPS *lmp) : NPair(lmp) void NPairHalfMultiOldNewtonTri::build(NeighList *list) { int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*s; double *cutsq,*distsq; + const double delta = 0.01 * force->angstrom; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -71,6 +74,7 @@ void NPairHalfMultiOldNewtonTri::build(NeighList *list) n = 0; neighptr = ipage->vget(); + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -81,13 +85,12 @@ void NPairHalfMultiOldNewtonTri::build(NeighList *list) tagprev = tag[i] - iatom - 1; } - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // loop over all atoms in bins in stencil + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; s = stencil_multi_old[itype]; @@ -98,14 +101,23 @@ void NPairHalfMultiOldNewtonTri::build(NeighList *list) for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } + + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_respa_bin_newton_tri.cpp b/src/npair_half_respa_bin_newton_tri.cpp index b2749bd7a7..05b839869a 100644 --- a/src/npair_half_respa_bin_newton_tri.cpp +++ b/src/npair_half_respa_bin_newton_tri.cpp @@ -16,10 +16,11 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" -#include "molecule.h" #include "domain.h" -#include "my_page.h" #include "error.h" +#include "force.h" +#include "molecule.h" +#include "my_page.h" using namespace LAMMPS_NS; @@ -38,10 +39,12 @@ NPairHalfRespaBinNewtonTri::NPairHalfRespaBinNewtonTri(LAMMPS *lmp) : void NPairHalfRespaBinNewtonTri::build(NeighList *list) { int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; + const double delta = 0.01 * force->angstrom; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -94,6 +97,7 @@ void NPairHalfRespaBinNewtonTri::build(NeighList *list) neighptr_middle = ipage_middle->vget(); } + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -105,22 +109,33 @@ void NPairHalfRespaBinNewtonTri::build(NeighList *list) } // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_respa_nsq_newton.cpp b/src/npair_half_respa_nsq_newton.cpp index 77d6af141f..d0292eec92 100644 --- a/src/npair_half_respa_nsq_newton.cpp +++ b/src/npair_half_respa_nsq_newton.cpp @@ -16,9 +16,10 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "domain.h" +#include "force.h" #include "group.h" #include "molecule.h" -#include "domain.h" #include "my_page.h" #include "error.h" @@ -38,12 +39,15 @@ NPairHalfRespaNsqNewton::NPairHalfRespaNsqNewton(LAMMPS *lmp) : NPair(lmp) {} void NPairHalfRespaNsqNewton::build(NeighList *list) { - int i,j,n,itype,jtype,itag,jtag,n_inner,n_middle,bitmask; + int i,j,n,itype,jtype,n_inner,n_middle,bitmask; int imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; + double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -112,6 +116,12 @@ void NPairHalfRespaNsqNewton::build(NeighList *list) } // loop over remaining atoms, owned and ghost + // use itag/jtap comparision to eliminate half the interactions + // itag = jtag is possible for long cutoffs that include images of self + // for triclinic, must use delta to eliminate half the I/J interactions + // cannot use I/J exact coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon for (j = i+1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; @@ -122,6 +132,14 @@ void NPairHalfRespaNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { diff --git a/src/npair_half_respa_nsq_newton.h b/src/npair_half_respa_nsq_newton.h index e5233f5e9d..4a5ae23aef 100644 --- a/src/npair_half_respa_nsq_newton.h +++ b/src/npair_half_respa_nsq_newton.h @@ -15,7 +15,7 @@ // clang-format off NPairStyle(half/respa/nsq/newton, NPairHalfRespaNsqNewton, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); // clang-format on #else diff --git a/src/npair_half_size_bin_newton_tri.cpp b/src/npair_half_size_bin_newton_tri.cpp index 47bb9d01e1..e6a236eecb 100644 --- a/src/npair_half_size_bin_newton_tri.cpp +++ b/src/npair_half_size_bin_newton_tri.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neigh_list.h" @@ -39,11 +40,13 @@ NPairHalfSizeBinNewtonTri::NPairHalfSizeBinNewtonTri(LAMMPS *lmp) : void NPairHalfSizeBinNewtonTri::build(NeighList *list) { int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutsq; int *neighptr; + const double delta = 0.01 * force->angstrom; + double **x = atom->x; double *radius = atom->radius; int *type = atom->type; @@ -76,6 +79,7 @@ void NPairHalfSizeBinNewtonTri::build(NeighList *list) n = 0; neighptr = ipage->vget(); + itag = tag[i]; xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; @@ -87,22 +91,33 @@ void NPairHalfSizeBinNewtonTri::build(NeighList *list) } // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp index 5d8a0f05ef..a363ae6e1e 100644 --- a/src/npair_half_size_multi_newton_tri.cpp +++ b/src/npair_half_size_multi_newton_tri.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neighbor.h" @@ -41,11 +42,13 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) { int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns,js; int which,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutdistsq; int *neighptr,*s; + const double delta = 0.01 * force->angstrom; + int *collection = neighbor->collection; double **x = atom->x; double *radius = atom->radius; @@ -78,6 +81,8 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) for (i = 0; i < nlocal; i++) { n = 0; neighptr = ipage->vget(); + + itag = tag[i]; itype = type[i]; icollection = collection[i]; xtmp = x[i][0]; @@ -93,11 +98,13 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) ibin = atom2bin[i]; // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { // if same collection use own bin + if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); + else jbin = coord2bin(x[i], jcollection); // loop over all atoms in bins in stencil // stencil is empty if i larger than j @@ -108,56 +115,66 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) // (equal zyx and j <= i) // latter excludes self-self interaction but allows superposed atoms - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { - // if same size (same collection), use half stencil - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } + // if same size (same collection), exclude half of interactions + + if (cutcollectionsq[icollection][icollection] == + cutcollectionsq[jcollection][jcollection]) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + radsum = radi + radius[j]; + cutdistsq = (radsum+skin) * (radsum+skin); + + if (rsq <= cutdistsq) { + jh = j; + if (history && rsq < radsum*radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } + } } ilist[inum++] = i; diff --git a/src/npair_half_size_multi_old_newton_tri.cpp b/src/npair_half_size_multi_old_newton_tri.cpp index ea3f271956..974500d6b8 100644 --- a/src/npair_half_size_multi_old_newton_tri.cpp +++ b/src/npair_half_size_multi_old_newton_tri.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neigh_list.h" @@ -38,12 +39,14 @@ NPairHalfSizeMultiOldNewtonTri::NPairHalfSizeMultiOldNewtonTri(LAMMPS *lmp) : NP void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) { int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutdistsq; int *neighptr,*s; double *cutsq,*distsq; + const double delta = 0.01 * force->angstrom; + double **x = atom->x; double *radius = atom->radius; int *type = atom->type; @@ -76,6 +79,7 @@ void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) n = 0; neighptr = ipage->vget(); + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -87,13 +91,12 @@ void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) tagprev = tag[i] - iatom - 1; } - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // loop over all atoms in bins in stencil + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; s = stencil_multi_old[itype]; @@ -104,14 +107,24 @@ void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_size_nsq_newton.cpp b/src/npair_half_size_nsq_newton.cpp index 8b596e6968..abd2a4faff 100644 --- a/src/npair_half_size_nsq_newton.cpp +++ b/src/npair_half_size_nsq_newton.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "group.h" #include "my_page.h" @@ -39,12 +40,15 @@ NPairHalfSizeNsqNewton::NPairHalfSizeNsqNewton(LAMMPS *lmp) : NPair(lmp) {} void NPairHalfSizeNsqNewton::build(NeighList *list) { - int i,j,jh,n,itag,jtag,bitmask,which,imol,iatom,moltemplate; - tagint tagprev; + int i,j,jh,n,bitmask,which,imol,iatom,moltemplate; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutsq; int *neighptr; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; + double **x = atom->x; double *radius = atom->radius; tagint *tag = atom->tag; @@ -93,6 +97,12 @@ void NPairHalfSizeNsqNewton::build(NeighList *list) } // loop over remaining atoms, owned and ghost + // use itag/jtap comparision to eliminate half the interactions + // itag = jtag is possible for long cutoffs that include images of self + // for triclinic, must use delta to eliminate half the I/J interactions + // cannot use I/J exact coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon for (j = i+1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; @@ -103,6 +113,14 @@ void NPairHalfSizeNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { diff --git a/src/npair_halffull_newton_trim.cpp b/src/npair_halffull_newton_trim.cpp index b7bb72c990..7d420f88af 100644 --- a/src/npair_halffull_newton_trim.cpp +++ b/src/npair_halffull_newton_trim.cpp @@ -14,7 +14,9 @@ #include "npair_halffull_newton_trim.h" #include "atom.h" +#include "domain.h" #include "error.h" +#include "force.h" #include "my_page.h" #include "neigh_list.h" @@ -38,6 +40,9 @@ void NPairHalffullNewtonTrim::build(NeighList *list) double xtmp, ytmp, ztmp; double delx, dely, delz, rsq; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; + double **x = atom->x; int nlocal = atom->nlocal; @@ -68,6 +73,11 @@ void NPairHalffullNewtonTrim::build(NeighList *list) ztmp = x[i][2]; // loop over full neighbor list + // use i < j < nlocal to eliminate half the local/local interactions + // for triclinic, must use delta to eliminate half the local/ghost interactions + // cannot use I/J exact coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon jlist = firstneigh_full[i]; jnum = numneigh_full[i]; @@ -75,8 +85,17 @@ void NPairHalffullNewtonTrim::build(NeighList *list) for (jj = 0; jj < jnum; jj++) { joriginal = jlist[jj]; j = joriginal & NEIGHMASK; + if (j < nlocal) { if (i > j) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { diff --git a/src/nstencil_half_multi_2d_tri.cpp b/src/nstencil_half_multi_2d_tri.cpp index bf39c04099..85bbe94c86 100644 --- a/src/nstencil_half_multi_2d_tri.cpp +++ b/src/nstencil_half_multi_2d_tri.cpp @@ -80,7 +80,7 @@ void NStencilHalfMulti2dTri::create() cutsq = cutcollectionsq[icollection][jcollection]; if (flag_half_multi[icollection][jcollection]) { - for (j = 0; j <= sy; j++) + for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (bin_distance_multi(i, j, 0, bin_collection) < cutsq) stencil_multi[icollection][jcollection][ns++] = j * mbinx + i; diff --git a/src/nstencil_half_multi_3d_tri.cpp b/src/nstencil_half_multi_3d_tri.cpp index f2d4d051ad..9761e15854 100644 --- a/src/nstencil_half_multi_3d_tri.cpp +++ b/src/nstencil_half_multi_3d_tri.cpp @@ -81,7 +81,7 @@ void NStencilHalfMulti3dTri::create() cutsq = cutcollectionsq[icollection][jcollection]; if (flag_half_multi[icollection][jcollection]) { - for (k = 0; k <= sz; k++) + for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (bin_distance_multi(i, j, k, bin_collection) < cutsq) diff --git a/src/nstencil_half_multi_old_2d_tri.cpp b/src/nstencil_half_multi_old_2d_tri.cpp index 1438aef843..0aeb65bebd 100644 --- a/src/nstencil_half_multi_old_2d_tri.cpp +++ b/src/nstencil_half_multi_old_2d_tri.cpp @@ -37,7 +37,7 @@ void NStencilHalfMultiOld2dTri::create() s = stencil_multi_old[itype]; distsq = distsq_multi_old[itype]; n = 0; - for (j = 0; j <= sy; j++) + for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) { rsq = bin_distance(i, j, 0); if (rsq < typesq) { diff --git a/src/nstencil_half_multi_old_3d_tri.cpp b/src/nstencil_half_multi_old_3d_tri.cpp index 836eee6039..3717b7836b 100644 --- a/src/nstencil_half_multi_old_3d_tri.cpp +++ b/src/nstencil_half_multi_old_3d_tri.cpp @@ -37,7 +37,7 @@ void NStencilHalfMultiOld3dTri::create() s = stencil_multi_old[itype]; distsq = distsq_multi_old[itype]; n = 0; - for (k = 0; k <= sz; k++) + for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) { rsq = bin_distance(i, j, k); From 6bd965f0df72b23b1a4819f9382eefc642619e72 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 10 Jul 2023 22:35:36 -0400 Subject: [PATCH 0114/1002] fix whitespace (again) --- src/compute_property_local.cpp | 2 +- src/npair_half_bin_newton_tri.cpp | 36 +++---- src/npair_half_multi_newton_tri.cpp | 98 +++++++++--------- src/npair_half_multi_old_newton_tri.cpp | 32 +++--- src/npair_half_respa_bin_newton_tri.cpp | 36 +++---- src/npair_half_size_bin_newton_tri.cpp | 34 +++---- src/npair_half_size_multi_newton_tri.cpp | 100 +++++++++---------- src/npair_half_size_multi_old_newton_tri.cpp | 34 +++---- src/npair_halffull_newton_trim.cpp | 2 +- src/nstencil_half_bin_3d_tri.cpp | 2 +- 10 files changed, 188 insertions(+), 188 deletions(-) diff --git a/src/compute_property_local.cpp b/src/compute_property_local.cpp index 92036c4bd2..87517a3e05 100644 --- a/src/compute_property_local.cpp +++ b/src/compute_property_local.cpp @@ -406,7 +406,7 @@ int ComputePropertyLocal::count_pairs(int allflag, int forceflag) // itag = jtag is possible for long cutoffs that include images of self // do not need triclinic logic here b/c neighbor list itself is correct - + if (newton_pair == 0 && j >= nlocal) { jtag = tag[j]; if (itag > jtag) { diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 9c0688af68..453d10096e 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -88,28 +88,28 @@ void NPairHalfBinNewtonTri::build(NeighList *list) // cannot use I/J exact coord comparision // b/c transforming orthog -> lambda -> orthog for ghost atoms // with an added PBC offset can shift all 3 coords by epsilon - + ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp index 316acb5049..1d75d6a3ef 100644 --- a/src/npair_half_multi_newton_tri.cpp +++ b/src/npair_half_multi_newton_tri.cpp @@ -91,11 +91,11 @@ void NPairHalfMultiNewtonTri::build(NeighList *list) ibin = atom2bin[i]; // loop through stencils for all collections - + for (jcollection = 0; jcollection < ncollections; jcollection++) { // if same collection use own bin - + if (icollection == jcollection) jbin = ibin; else jbin = coord2bin(x[i], jcollection); @@ -109,60 +109,60 @@ void NPairHalfMultiNewtonTri::build(NeighList *list) // cannot use I/J exact coord comparision // b/c transforming orthog -> lambda -> orthog for ghost atoms // with an added PBC offset can shift all 3 coords by epsilon - + s = stencil_multi[icollection][jcollection]; ns = nstencil_multi[icollection][jcollection]; for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), exclude half of interactions - - if (cutcollectionsq[icollection][icollection] == - cutcollectionsq[jcollection][jcollection]) { - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } - } + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + // if same size (same collection), exclude half of interactions - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + if (cutcollectionsq[icollection][icollection] == + cutcollectionsq[jcollection][jcollection]) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } + } - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } } } diff --git a/src/npair_half_multi_old_newton_tri.cpp b/src/npair_half_multi_old_newton_tri.cpp index 9dcbcff9f4..72d46d042f 100644 --- a/src/npair_half_multi_old_newton_tri.cpp +++ b/src/npair_half_multi_old_newton_tri.cpp @@ -102,22 +102,22 @@ void NPairHalfMultiOldNewtonTri::build(NeighList *list) jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_respa_bin_newton_tri.cpp b/src/npair_half_respa_bin_newton_tri.cpp index 05b839869a..eac67b8bd5 100644 --- a/src/npair_half_respa_bin_newton_tri.cpp +++ b/src/npair_half_respa_bin_newton_tri.cpp @@ -118,24 +118,24 @@ void NPairHalfRespaBinNewtonTri::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_size_bin_newton_tri.cpp b/src/npair_half_size_bin_newton_tri.cpp index e6a236eecb..0d1a0a7329 100644 --- a/src/npair_half_size_bin_newton_tri.cpp +++ b/src/npair_half_size_bin_newton_tri.cpp @@ -101,23 +101,23 @@ void NPairHalfSizeBinNewtonTri::build(NeighList *list) for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,type[i],type[j],mask,molecule)) continue; diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp index a363ae6e1e..f597789dee 100644 --- a/src/npair_half_size_multi_newton_tri.cpp +++ b/src/npair_half_size_multi_newton_tri.cpp @@ -98,11 +98,11 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) ibin = atom2bin[i]; // loop through stencils for all collections - + for (jcollection = 0; jcollection < ncollections; jcollection++) { // if same collection use own bin - + if (icollection == jcollection) jbin = ibin; else jbin = coord2bin(x[i], jcollection); @@ -119,61 +119,61 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) ns = nstencil_multi[icollection][jcollection]; for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + + // if same size (same collection), exclude half of interactions - // if same size (same collection), exclude half of interactions - if (cutcollectionsq[icollection][icollection] == - cutcollectionsq[jcollection][jcollection]) { - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + cutcollectionsq[jcollection][jcollection]) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + radsum = radi + radius[j]; + cutdistsq = (radsum+skin) * (radsum+skin); + + if (rsq <= cutdistsq) { + jh = j; + if (history && rsq < radsum*radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } } } diff --git a/src/npair_half_size_multi_old_newton_tri.cpp b/src/npair_half_size_multi_old_newton_tri.cpp index 974500d6b8..848a19aa39 100644 --- a/src/npair_half_size_multi_old_newton_tri.cpp +++ b/src/npair_half_size_multi_old_newton_tri.cpp @@ -108,23 +108,23 @@ void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_halffull_newton_trim.cpp b/src/npair_halffull_newton_trim.cpp index 7d420f88af..e758c04284 100644 --- a/src/npair_halffull_newton_trim.cpp +++ b/src/npair_halffull_newton_trim.cpp @@ -85,7 +85,7 @@ void NPairHalffullNewtonTrim::build(NeighList *list) for (jj = 0; jj < jnum; jj++) { joriginal = jlist[jj]; j = joriginal & NEIGHMASK; - + if (j < nlocal) { if (i > j) continue; } else if (triclinic) { diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_half_bin_3d_tri.cpp index d146b92cd1..72bef7fb76 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_half_bin_3d_tri.cpp @@ -33,7 +33,7 @@ void NStencilHalfBin3dTri::create() // with an added PBC offset can shift all 3 coords by epsilon // thus for an I/J owned/ghost pair, the xyz coords // and bin assignments can be different on I proc vs J proc - + nstencil = 0; for (k = -sz; k <= sz; k++) From 2eeea4332076c4a11193bd6c4a71d29ab649778c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 11 Jul 2023 01:09:44 -0400 Subject: [PATCH 0115/1002] port neighbor list changes to OPENMP package --- src/OPENMP/npair_half_bin_newton_tri_omp.cpp | 20 +-- .../npair_half_multi_newton_tri_omp.cpp | 118 ++++++++++-------- .../npair_half_multi_old_newton_tri_omp.cpp | 50 +++++--- src/OPENMP/npair_half_nsq_newton_omp.cpp | 7 +- .../npair_half_respa_bin_newton_tri_omp.cpp | 47 ++++--- .../npair_half_respa_nsq_newton_omp.cpp | 35 ++++-- .../npair_half_size_bin_newton_tri_omp.cpp | 40 +++--- .../npair_half_size_multi_newton_tri_omp.cpp | 43 ++++--- ...air_half_size_multi_old_newton_tri_omp.cpp | 42 ++++--- src/OPENMP/npair_half_size_nsq_newton_omp.cpp | 27 +++- src/npair_half_bin_newton_tri.cpp | 3 +- src/npair_half_multi_newton_tri.cpp | 4 +- src/npair_half_respa_bin_newton_tri.cpp | 3 +- src/npair_half_respa_nsq_newton.cpp | 7 +- src/npair_half_size_nsq_newton.cpp | 2 +- 15 files changed, 278 insertions(+), 170 deletions(-) diff --git a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_bin_newton_tri_omp.cpp index 3ad07acd56..47524474ed 100644 --- a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_bin_newton_tri_omp.cpp @@ -12,17 +12,18 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "npair_half_bin_newton_tri_omp.h" #include "npair_omp.h" -#include "neigh_list.h" +#include "omp_compat.h" + #include "atom.h" #include "atom_vec.h" +#include "domain.h" +#include "error.h" #include "force.h" #include "molecule.h" -#include "domain.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -54,8 +55,6 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - // loop over each atom, storing neighbors - double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -93,10 +92,11 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) } // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { diff --git a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_newton_tri_omp.cpp index a152d011a7..b18cba0261 100644 --- a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_multi_newton_tri_omp.cpp @@ -12,17 +12,19 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "npair_half_multi_newton_tri_omp.h" -#include "npair_omp.h" -#include "neighbor.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" -#include "molecule.h" #include "domain.h" -#include "my_page.h" #include "error.h" +#include "force.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "npair_omp.h" +#include "omp_compat.h" using namespace LAMMPS_NS; @@ -43,6 +45,7 @@ void NPairHalfMultiNewtonTriOmp::build(NeighList *list) const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -51,13 +54,11 @@ void NPairHalfMultiNewtonTriOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,k,n,itype,jtype,ibin,jbin,icollection,jcollection,which,ns,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*s; int js; - // loop over each atom, storing neighbors - int *collection = neighbor->collection; double **x = atom->x; int *type = atom->type; @@ -84,6 +85,7 @@ void NPairHalfMultiNewtonTriOmp::build(NeighList *list) n = 0; neighptr = ipage.vget(); + itag = tag[i]; itype = type[i]; icollection = collection[i]; xtmp = x[i][0]; @@ -98,65 +100,79 @@ void NPairHalfMultiNewtonTriOmp::build(NeighList *list) ibin = atom2bin[i]; // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { // if same collection use own bin + if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); + else jbin = coord2bin(x[i], jcollection); // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic: + // stencil is empty if i larger than j + // stencil is full if i smaller than j + // stencil is full if i same size as j + // for i smaller than j: + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { - // if same size (same collection), use half stencil - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + // if same size (same collection), exclude half of interactions + + if (cutcollectionsq[icollection][icollection] == + cutcollectionsq[jcollection][jcollection]) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } } jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; } + } + } } ilist[i] = i; diff --git a/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp index e4895ff1a9..38f645abad 100644 --- a/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp @@ -15,13 +15,15 @@ #include "omp_compat.h" #include "npair_half_multi_old_newton_tri_omp.h" #include "npair_omp.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" -#include "molecule.h" #include "domain.h" -#include "my_page.h" #include "error.h" +#include "force.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -42,6 +44,7 @@ void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -50,13 +53,11 @@ void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*s; double *cutsq,*distsq; - // loop over each atom, storing neighbors - double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -82,6 +83,7 @@ void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) n = 0; neighptr = ipage.vget(); + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -92,13 +94,12 @@ void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) tagprev = tag[i] - iatom - 1; } - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // loop over all atoms in bins in stencil + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; s = stencil_multi_old[itype]; @@ -109,12 +110,21 @@ void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } @@ -129,7 +139,7 @@ void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_nsq_newton_omp.cpp b/src/OPENMP/npair_half_nsq_newton_omp.cpp index 726814c6f0..42cf63278a 100644 --- a/src/OPENMP/npair_half_nsq_newton_omp.cpp +++ b/src/OPENMP/npair_half_nsq_newton_omp.cpp @@ -58,8 +58,6 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; - // loop over each atom, storing neighbors - double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -99,7 +97,12 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) } // loop over remaining atoms, owned and ghost + // use itag/jtap comparision to eliminate half the interactions // itag = jtag is possible for long cutoffs that include images of self + // for triclinic, must use delta to eliminate half the I/J interactions + // cannot use I/J exact coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon for (j = i+1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; diff --git a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp index c998f71290..78b3abdd66 100644 --- a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp @@ -15,13 +15,15 @@ #include "omp_compat.h" #include "npair_half_respa_bin_newton_tri_omp.h" #include "npair_omp.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" -#include "molecule.h" #include "domain.h" -#include "my_page.h" #include "error.h" +#include "force.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -42,6 +44,7 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; @@ -53,12 +56,10 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; - // loop over each atom, storing neighbors - double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -111,6 +112,7 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) neighptr_middle = ipage_middle->vget(); } + itag = tag[i]; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; @@ -122,20 +124,31 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) } // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } @@ -151,7 +164,7 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp b/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp index 6604861f74..a9745edc64 100644 --- a/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp +++ b/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp @@ -15,21 +15,22 @@ #include "omp_compat.h" #include "npair_half_respa_nsq_newton_omp.h" #include "npair_omp.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "force.h" #include "group.h" #include "molecule.h" -#include "domain.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfRespaNsqNewtonOmp::NPairHalfRespaNsqNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} +NPairHalfRespaNsqNewtonOmp::NPairHalfRespaNsqNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multiple respa lists @@ -45,6 +46,8 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; NPAIR_OMP_INIT; @@ -55,13 +58,11 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,n,itype,jtype,itag,jtag,n_inner,n_middle,imol,iatom; - tagint tagprev; + int i,j,n,itype,jtype,n_inner,n_middle,imol,iatom; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; - // loop over each atom, storing neighbors - double **x = atom->x; int *type = atom->type; int *mask = atom->mask; @@ -128,6 +129,12 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) } // loop over remaining atoms, owned and ghost + // use itag/jtap comparision to eliminate half the interactions + // itag = jtag is possible for long cutoffs that include images of self + // for triclinic, must use delta to eliminate half the I/J interactions + // cannot use I/J exact coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon for (j = i+1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; @@ -138,6 +145,14 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { @@ -159,7 +174,7 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp index c320296442..7fcf07e9c8 100644 --- a/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neigh_list.h" @@ -46,6 +47,7 @@ void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; const int history = list->history; const int mask_history = 1 << HISTBITS; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -54,13 +56,11 @@ void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutsq; int *neighptr; - // loop over each atom, storing neighbors - double **x = atom->x; double *radius = atom->radius; int *type = atom->type; @@ -87,6 +87,7 @@ void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) n = 0; neighptr = ipage.vget(); + itag = tag[i]; xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; @@ -98,20 +99,31 @@ void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) } // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } @@ -132,7 +144,7 @@ void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp index 9a0ead482b..916b7bfbc3 100644 --- a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neighbor.h" @@ -48,6 +49,7 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; const int history = list->history; const int mask_history = 1 << HISTBITS; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -55,15 +57,12 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; + int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns,js; int which,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutdistsq; int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors int *collection = neighbor->collection; double **x = atom->x; @@ -92,6 +91,7 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) n = 0; neighptr = ipage.vget(); + itag = tag[i]; itype = type[i]; icollection = collection[i]; xtmp = x[i][0]; @@ -107,12 +107,13 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) ibin = atom2bin[i]; // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); + if (icollection == jcollection) jbin = ibin; + else jbin = coord2bin(x[i], jcollection); // loop over all atoms in bins in stencil // stencil is empty if i larger than j @@ -130,14 +131,24 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) js = binhead_multi[jcollection][jbin + s[k]]; for (j = js; j >= 0; j = bins[j]) { - // if same size (same collection), use half stencil - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + // if same size (same collection), exclude half of interactions + + if (cutcollectionsq[icollection][icollection] == + cutcollectionsq[jcollection][jcollection]) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } } @@ -160,7 +171,7 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp index c74b191f66..7faa210107 100644 --- a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "my_page.h" #include "neigh_list.h" @@ -32,7 +33,6 @@ NPairHalfSizeMultiOldNewtonTriOmp::NPairHalfSizeMultiOldNewtonTriOmp(LAMMPS *lmp NPair(lmp) {} /* ---------------------------------------------------------------------- - size particles binned neighbor list construction with Newton's 3rd law for triclinic each owned atom i checks its own bin and other bins in triclinic stencil multi-type stencil is itype dependent and is distance checked @@ -46,6 +46,7 @@ void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; const int history = list->history; const int mask_history = 1 << HISTBITS; + const double delta = 0.01 * force->angstrom; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -54,7 +55,7 @@ void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutdistsq; int *neighptr,*s; @@ -97,13 +98,12 @@ void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) tagprev = tag[i] - iatom - 1; } - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms + // loop over all atoms in bins in stencil + // for triclinic, bin stencil is full in all 3 dims + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon ibin = atom2bin[i]; s = stencil_multi_old[itype]; @@ -114,12 +114,22 @@ void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } } @@ -140,7 +150,7 @@ void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/OPENMP/npair_half_size_nsq_newton_omp.cpp b/src/OPENMP/npair_half_size_nsq_newton_omp.cpp index 35dc42ec5b..0628478c0b 100644 --- a/src/OPENMP/npair_half_size_nsq_newton_omp.cpp +++ b/src/OPENMP/npair_half_size_nsq_newton_omp.cpp @@ -18,6 +18,7 @@ #include "atom_vec.h" #include "domain.h" #include "error.h" +#include "force.h" #include "molecule.h" #include "group.h" #include "my_page.h" @@ -30,13 +31,11 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfSizeNsqNewtonOmp::NPairHalfSizeNsqNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} +NPairHalfSizeNsqNewtonOmp::NPairHalfSizeNsqNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- size particles N^2 / 2 search for neighbor pairs with full Newton's 3rd law - shear history must be accounted for when a neighbor pair is added pair added to list if atoms i and j are both owned and i < j if j is ghost only me or other proc adds pair decision based on itag,jtag tests @@ -50,6 +49,8 @@ void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; const int history = list->history; const int mask_history = 1 << HISTBITS; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; NPAIR_OMP_INIT; @@ -58,8 +59,8 @@ void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,jh,n,itag,jtag,which,imol,iatom; - tagint tagprev; + int i,j,jh,n,which,imol,iatom; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radi,radsum,cutsq; int *neighptr; @@ -104,6 +105,12 @@ void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) } // loop over remaining atoms, owned and ghost + // use itag/jtap comparision to eliminate half the interactions + // itag = jtag is possible for long cutoffs that include images of self + // for triclinic, must use delta to eliminate half the I/J interactions + // cannot use I/J exact coord comparision as for orthog + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon for (j = i+1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; @@ -114,6 +121,14 @@ void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; + } else if (triclinic) { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } } else { if (x[j][2] < ztmp) continue; if (x[j][2] == ztmp) { @@ -140,7 +155,7 @@ void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp index 453d10096e..d261363b0e 100644 --- a/src/npair_half_bin_newton_tri.cpp +++ b/src/npair_half_bin_newton_tri.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "npair_half_bin_newton_tri.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" #include "domain.h" @@ -21,6 +21,7 @@ #include "force.h" #include "molecule.h" #include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp index 1d75d6a3ef..2b753af499 100644 --- a/src/npair_half_multi_newton_tri.cpp +++ b/src/npair_half_multi_newton_tri.cpp @@ -21,8 +21,8 @@ #include "force.h" #include "molecule.h" #include "my_page.h" -#include "neighbor.h" #include "neigh_list.h" +#include "neighbor.h" using namespace LAMMPS_NS; @@ -39,7 +39,7 @@ NPairHalfMultiNewtonTri::NPairHalfMultiNewtonTri(LAMMPS *lmp) : NPair(lmp) {} void NPairHalfMultiNewtonTri::build(NeighList *list) { - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; + int i,j,k,n,itype,jtype,ibin,jbin,icollection,jcollection,which,ns,imol,iatom,moltemplate; tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*s; diff --git a/src/npair_half_respa_bin_newton_tri.cpp b/src/npair_half_respa_bin_newton_tri.cpp index eac67b8bd5..4cd4ead0fa 100644 --- a/src/npair_half_respa_bin_newton_tri.cpp +++ b/src/npair_half_respa_bin_newton_tri.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "npair_half_respa_bin_newton_tri.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" #include "domain.h" @@ -21,6 +21,7 @@ #include "force.h" #include "molecule.h" #include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_respa_nsq_newton.cpp b/src/npair_half_respa_nsq_newton.cpp index d0292eec92..ae56d62fb5 100644 --- a/src/npair_half_respa_nsq_newton.cpp +++ b/src/npair_half_respa_nsq_newton.cpp @@ -13,15 +13,16 @@ ------------------------------------------------------------------------- */ #include "npair_half_respa_nsq_newton.h" -#include "neigh_list.h" + #include "atom.h" #include "atom_vec.h" #include "domain.h" +#include "error.h" #include "force.h" #include "group.h" #include "molecule.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; @@ -132,7 +133,7 @@ void NPairHalfRespaNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; - } else if (triclinic) { + } else if (triclinic) { if (fabs(x[j][2]-ztmp) > delta) { if (x[j][2] < ztmp) continue; } else if (fabs(x[j][1]-ytmp) > delta) { diff --git a/src/npair_half_size_nsq_newton.cpp b/src/npair_half_size_nsq_newton.cpp index abd2a4faff..ce0c7f9562 100644 --- a/src/npair_half_size_nsq_newton.cpp +++ b/src/npair_half_size_nsq_newton.cpp @@ -113,7 +113,7 @@ void NPairHalfSizeNsqNewton::build(NeighList *list) if ((itag+jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; - } else if (triclinic) { + } else if (triclinic) { if (fabs(x[j][2]-ztmp) > delta) { if (x[j][2] < ztmp) continue; } else if (fabs(x[j][1]-ytmp) > delta) { From bb6e4d844088cea152ebd0cf5007a6ba5c2cbfe2 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 11 Jul 2023 14:30:14 -0700 Subject: [PATCH 0116/1002] add forgotten line to multi and mutli/old --- src/npair_half_multi_newton_tri.cpp | 1 + src/npair_half_multi_old_newton_tri.cpp | 1 + src/npair_half_size_multi_newton_tri.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp index 316acb5049..2595c3ce21 100644 --- a/src/npair_half_multi_newton_tri.cpp +++ b/src/npair_half_multi_newton_tri.cpp @@ -121,6 +121,7 @@ void NPairHalfMultiNewtonTri::build(NeighList *list) if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]) { + if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { diff --git a/src/npair_half_multi_old_newton_tri.cpp b/src/npair_half_multi_old_newton_tri.cpp index 9dcbcff9f4..8700db3b32 100644 --- a/src/npair_half_multi_old_newton_tri.cpp +++ b/src/npair_half_multi_old_newton_tri.cpp @@ -102,6 +102,7 @@ void NPairHalfMultiOldNewtonTri::build(NeighList *list) jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; + if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp index a363ae6e1e..4ff50870b6 100644 --- a/src/npair_half_size_multi_newton_tri.cpp +++ b/src/npair_half_size_multi_newton_tri.cpp @@ -126,6 +126,7 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]) { + if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { From 2a7ac115d8563dab636f10ba516c461ba23f0694 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 11 Jul 2023 18:25:29 -0400 Subject: [PATCH 0117/1002] fix whitespace (one more time) --- src/npair_half_multi_newton_tri.cpp | 50 ++++++++++++------------ src/npair_half_multi_old_newton_tri.cpp | 34 ++++++++-------- src/npair_half_size_multi_newton_tri.cpp | 36 ++++++++--------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp index 1c95e73151..24300f6929 100644 --- a/src/npair_half_multi_newton_tri.cpp +++ b/src/npair_half_multi_newton_tri.cpp @@ -114,31 +114,31 @@ void NPairHalfMultiNewtonTri::build(NeighList *list) ns = nstencil_multi[icollection][jcollection]; for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), exclude half of interactions - - if (cutcollectionsq[icollection][icollection] == - cutcollectionsq[jcollection][jcollection]) { - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } - } + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + + // if same size (same collection), exclude half of interactions + + if (cutcollectionsq[icollection][icollection] == + cutcollectionsq[jcollection][jcollection]) { + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_multi_old_newton_tri.cpp b/src/npair_half_multi_old_newton_tri.cpp index 8700db3b32..ce3149ebf5 100644 --- a/src/npair_half_multi_old_newton_tri.cpp +++ b/src/npair_half_multi_old_newton_tri.cpp @@ -102,23 +102,23 @@ void NPairHalfMultiOldNewtonTri::build(NeighList *list) jtype = type[j]; if (cutsq[jtype] < distsq[k]) continue; - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp index c521034406..aa0d8e3f42 100644 --- a/src/npair_half_size_multi_newton_tri.cpp +++ b/src/npair_half_size_multi_newton_tri.cpp @@ -125,24 +125,24 @@ void NPairHalfSizeMultiNewtonTri::build(NeighList *list) // if same size (same collection), exclude half of interactions if (cutcollectionsq[icollection][icollection] == - cutcollectionsq[jcollection][jcollection]) { - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2]-ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } + cutcollectionsq[jcollection][jcollection]) { + if (j <= i) continue; + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (fabs(x[j][2]-ztmp) > delta) { + if (x[j][2] < ztmp) continue; + } else if (fabs(x[j][1]-ytmp) > delta) { + if (x[j][1] < ytmp) continue; + } else { + if (x[j][0] < xtmp) continue; + } + } + } } jtype = type[j]; From 89fb236144902530091f279d012b90f907b93b50 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 11 Jul 2023 18:35:16 -0400 Subject: [PATCH 0118/1002] port bugfix for colloid test failure --- src/OPENMP/npair_half_multi_newton_tri_omp.cpp | 1 + src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_newton_tri_omp.cpp index b18cba0261..e26bea990f 100644 --- a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_multi_newton_tri_omp.cpp @@ -130,6 +130,7 @@ void NPairHalfMultiNewtonTriOmp::build(NeighList *list) if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]) { + if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { diff --git a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp index 916b7bfbc3..4765c918b7 100644 --- a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp +++ b/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp @@ -135,6 +135,7 @@ void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]) { + if (j <= i) continue; if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { From 3fc809a1b9782430a4e41b8ca1d8a3c224762ef6 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 11 Jul 2023 18:45:45 -0700 Subject: [PATCH 0119/1002] add check for atom IDs when triclinic --- src/neighbor.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index df1547e5eb..c6eea7e2f1 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -313,7 +313,10 @@ void Neighbor::init() triclinic = domain->triclinic; newton_pair = force->newton_pair; - // error check + // error checks + + if (triclinic && atom->tag_enable == 0) + error->all(FLERR, "Cannot build triclinic neighbor lists unless atoms have IDs"); if (delay > 0 && (delay % every) != 0) error->all(FLERR,"Neighbor delay must be 0 or multiple of every setting"); From a91b3dab963d0044885298955cc2edf8e6556ead Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 11 Jul 2023 18:50:23 -0700 Subject: [PATCH 0120/1002] doc atom ID requirement for triclinic --- doc/src/Howto_triclinic.rst | 3 ++- doc/src/atom_modify.rst | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/src/Howto_triclinic.rst b/doc/src/Howto_triclinic.rst index 0efadbcc8c..2983d013c6 100644 --- a/doc/src/Howto_triclinic.rst +++ b/doc/src/Howto_triclinic.rst @@ -12,7 +12,8 @@ is created, e.g. by the :doc:`create_box ` or :doc:`read_data ` or :doc:`read_restart ` commands. Additionally, LAMMPS defines box size parameters lx,ly,lz where lx = xhi-xlo, and similarly in the y and z dimensions. The 6 -parameters, as well as lx,ly,lz, can be output via the :doc:`thermo_style custom ` command. +parameters, as well as lx,ly,lz, can be output via the +:doc:`thermo_style custom ` command. LAMMPS also allows simulations to be performed in triclinic (non-orthogonal) simulation boxes shaped as a parallelepiped with diff --git a/doc/src/atom_modify.rst b/doc/src/atom_modify.rst index 1e5a3d49ff..21590e6680 100644 --- a/doc/src/atom_modify.rst +++ b/doc/src/atom_modify.rst @@ -65,6 +65,11 @@ switch. This is described on the :doc:`Build_settings ` doc page. If atom IDs are not used, they must be specified as 0 for all atoms, e.g. in a data or restart file. +.. note:: + + If a :doc:`triclinic simulation box ` is used, + atom IDs are required, due to how neighbor lists are built. + The *map* keyword determines how atoms with specific IDs are found when required. An example are the bond (angle, etc) methods which need to find the local index of an atom with a specific global ID From 7fa1f4b3b4e5d8b908526a4246ce540413e93272 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 15 Jul 2023 22:10:19 -0600 Subject: [PATCH 0121/1002] Various clean ups, moving files --- src/{ => EXTRA-COMPUTE}/compute_rattlers.cpp | 8 +-- src/{ => EXTRA-COMPUTE}/compute_rattlers.h | 0 .../fix_nonaffine_displacement.cpp | 51 ++++++++++--------- .../fix_nonaffine_displacement.h | 0 4 files changed, 30 insertions(+), 29 deletions(-) rename src/{ => EXTRA-COMPUTE}/compute_rattlers.cpp (98%) rename src/{ => EXTRA-COMPUTE}/compute_rattlers.h (100%) rename src/{ => EXTRA-FIX}/fix_nonaffine_displacement.cpp (94%) rename src/{ => EXTRA-FIX}/fix_nonaffine_displacement.h (100%) diff --git a/src/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers.cpp similarity index 98% rename from src/compute_rattlers.cpp rename to src/EXTRA-COMPUTE/compute_rattlers.cpp index e7e99a7471..5613afb707 100755 --- a/src/compute_rattlers.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers.cpp @@ -113,7 +113,7 @@ void ComputeRattlers::compute_peratom() int i, j, ii, jj, inum, jnum, itype, jtype, tmp_flag; tagint itag, jtag; double xtmp, ytmp, ztmp, delx, dely, delz; - double r, rinv, rsq, radsum; + double rsq, radsum; if (nmax < atom->nmax) { nmax = atom->nmax; @@ -150,8 +150,6 @@ void ComputeRattlers::compute_peratom() int change_flag = 1; int ntry = 0; while (ntry < max_tries) { - // Quit when answer stops evolving - if (change_flag == 0) break; change_flag = 0; for (i = 0; i < nmax; i++) ncontacts[i] = 0; @@ -227,6 +225,7 @@ void ComputeRattlers::compute_peratom() MPI_Allreduce(&change_flag, &tmp_flag, 1, MPI_INT, MPI_MAX, world); change_flag = tmp_flag; + if (change_flag == 0) break; ntry += 1; } @@ -237,7 +236,8 @@ void ComputeRattlers::compute_peratom() /* ---------------------------------------------------------------------- */ -double ComputeRattlers::compute_scalar() { +double ComputeRattlers::compute_scalar() +{ if (invoked_peratom != update->ntimestep) compute_peratom(); diff --git a/src/compute_rattlers.h b/src/EXTRA-COMPUTE/compute_rattlers.h similarity index 100% rename from src/compute_rattlers.h rename to src/EXTRA-COMPUTE/compute_rattlers.h diff --git a/src/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp similarity index 94% rename from src/fix_nonaffine_displacement.cpp rename to src/EXTRA-FIX/fix_nonaffine_displacement.cpp index 24f7b2e70b..f18fdd2c4a 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -63,7 +63,7 @@ static const char cite_nonaffine_d2min[] = /* ---------------------------------------------------------------------- */ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm (nullptr) + Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm(nullptr) { if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); @@ -91,8 +91,8 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 2]); iarg += 1; } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 1]); - iarg += 3; - } + iarg += 2; + } else error->all(FLERR,"Illegal nonaffine displacement style {} in fix nonaffine/displacement", arg[iarg]); if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); if (strcmp(arg[iarg], "fixed") == 0) { @@ -112,8 +112,9 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * error->all(FLERR, "Illegal offset timestep {} in fix nonaffine/displacement", arg[iarg + 1]); } else error->all(FLERR,"Illegal reference style {} in fix nonaffine/displacement", arg[iarg]); - if (cut_style == RADIUS && (!atom->radius_flag)) - error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); + if (nad_style == D2MIN) + if (cut_style == RADIUS && (!atom->radius_flag)) + error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); peratom_flag = 1; peratom_freq = nevery; @@ -169,7 +170,7 @@ void FixNonaffineDisplacement::post_constructor() new_fix_id = utils::strdup(id + std::string("_FIX_PA")); modify->add_fix(fmt::format("{} {} property/atom d2_nad 3 ghost {}", new_fix_id, group->names[igroup], ghost_status)); int tmp1, tmp2; - nad_index = atom->find_custom("nad",tmp1,tmp2); + nad_index = atom->find_custom("nad", tmp1, tmp2); if (nad_style == INTEGRATED) { double **nad = atom->darray[nad_index]; @@ -189,35 +190,35 @@ void FixNonaffineDisplacement::init() { dtv = update->dt; - if (!reference_saved && (reference_style == FIXED) && (update->ntimestep > reference_timestep)) + if ((!reference_saved) && (reference_style == FIXED) && (update->ntimestep > reference_timestep)) error->all(FLERR, "Initial timestep exceeds that of the reference state in fix nonaffine/displacement"); if (nad_style == D2MIN) { - if (!force->pair && (cut_style == TYPE)) + if ((!force->pair) && (cut_style == TYPE)) error->all(FLERR,"Fix nonaffine/displacement D2Min option requires a pair style be defined " "or cutoff specified"); - if (cut_style == CUSTOM) { - double skin = neighbor->skin; - mycutneigh = cutoff_custom + skin; - - double cutghost; // as computed by Neighbor and Comm - if (force->pair) - cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); - else - cutghost = comm->cutghostuser; - - if (mycutneigh > cutghost) - error->all(FLERR,"Fix nonaffine/displacement D2Min option cutoff exceeds ghost atom range - use comm_modify cutoff command"); - } - // need an occasional half neighbor list if (cut_style == RADIUS) { auto req = neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); } else { auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); - if (cut_style == CUSTOM) req->set_cutoff(mycutneigh); + if (cut_style == CUSTOM) { + double skin = neighbor->skin; + mycutneigh = cutoff_custom + skin; + + double cutghost; // as computed by Neighbor and Comm + if (force->pair) + cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); + else + cutghost = comm->cutghostuser; + + if (mycutneigh > cutghost) + error->all(FLERR,"Fix nonaffine/displacement D2Min option cutoff exceeds ghost atom range - use comm_modify cutoff command"); + + req->set_cutoff(mycutneigh); + } } } } @@ -240,7 +241,7 @@ void FixNonaffineDisplacement::setup(int vflag) void FixNonaffineDisplacement::post_force(int /*vflag*/) { - if (reference_saved && !update->setupflag) { + if (reference_saved && (!update->setupflag)) { if (nad_style == INTEGRATED) { integrate_velocity(); } else { @@ -422,7 +423,7 @@ void FixNonaffineDisplacement::calculate_D2Min() if (rsq > cutsq_custom) continue; } else { radsum = radius[i] + radius[j]; - if (rsq > radsum * radsum) continue; + if (rsq > (radsum * radsum)) continue; } r0[0] = x0[i][0] - x0[j][0]; diff --git a/src/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h similarity index 100% rename from src/fix_nonaffine_displacement.h rename to src/EXTRA-FIX/fix_nonaffine_displacement.h From a80739c537f9711c88900bae784ab1ad8e01b8fc Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 15 Jul 2023 22:12:10 -0600 Subject: [PATCH 0122/1002] Doc and gitignore updates --- doc/src/compute_rattlers.rst | 10 +++++----- doc/src/fix_nonaffine_displacement.rst | 2 +- src/.gitignore | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index a4ae2d3d16..a0f0d1b54a 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -20,7 +20,7 @@ Syntax *radius* = cutoffs determined based on atom diameters (atom style sphere) * zmin = minimum coordination for a non-rattler particle -* ntries = maximum number of interations to remove rattlers +* ntries = maximum number of iterations to remove rattlers Examples """""""" @@ -35,12 +35,12 @@ Description Define a compute that identifies rattlers in a system. Rattlers are identified using an interative approach. The coordination number of all atoms is first calculated. The *type* and *radius* settings are -used to select whether interactions cutoffs are determined by atom +used to select whether interaction cutoffs are determined by atom types or by the sum of atomic radii (atom style sphere), respectively. Rattlers are then identified as particles with a coordination number -less than *zmin* and are removed from consideration. A coordination -number is then recalaculated, excluding previously identified rattlers, -to identify new rattlers. This process is looped, up to a maximum +less than *zmin* and are removed from consideration. Atomic coordination +numbers are then recalculated, excluding previously identified rattlers, +to identify a new set of rattlers. This process is iterated, up to a maximum of *ntries*, until no new rattlers are identified and the remaining atoms form a stable network of contacts. diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 892a33bb64..466a7b1ab0 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -30,7 +30,7 @@ Syntax *fixed* = use a fixed reference frame at *nstep* *update* = update the reference frame every *nstep* timesteps - *offset* = update the reference frame *nstep* timesteps before calculating the non/affine displacement + *offset* = update the reference frame *nstep* timesteps before calculating the nonaffine displacement Examples """""""" diff --git a/src/.gitignore b/src/.gitignore index 2cb2fd315b..006b468c08 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -598,6 +598,8 @@ /compute_pressure_grem.h /compute_ptm_atom.cpp /compute_ptm_atom.h +/compute_rattlers.cpp +/compute_rattlers.h /compute_rigid_local.cpp /compute_rigid_local.h /compute_smd_triangle_vertices.cpp @@ -889,6 +891,8 @@ /fix_nvt_sllod_eff.h /fix_nve_tri.cpp /fix_nve_tri.h +/fix_nonaffine_displacement.cpp +/fix_nonaffine_displacement.h /fix_oneway.cpp /fix_oneway.h /fix_orient_bcc.cpp From f4000efd8a43e8131a3669e445da62699e253c6e Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 17 Jul 2023 11:52:06 -0600 Subject: [PATCH 0123/1002] Adding reference section to doc pages, update misc error messages --- doc/src/fix_nonaffine_displacement.rst | 12 +++++++++++- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 8 +++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 466a7b1ab0..99d98b451b 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -70,7 +70,9 @@ displacement. A deformation gradient tensor is then calculated as D^2_\mathrm{min} = \sum_{\mathrm{neighbors}} \left| \vec{r} - F \vec{r}_0 \right|^2 and a strain tensor is calculated :math:`E = F F^{T} - I` where :math:`I` -is the identity tensor. +is the identity tensor. This calculation is only performed on timesteps that +are a multiple of *nevery* (including timestep zero). Data accessed before +this occurs will simply be zeroed. The *integrated* style simply integrates the velocity of particles every timestep to calculate a displacement. This style only works if @@ -78,6 +80,14 @@ used in conjunction with another fix that deforms the box and displaces atom positions such as :doc:`the remap x option of fix deform `, :doc:`fix press/berendsen `, or :doc:`fix nh `. +Both of these methods require defining a reference state. With the *fixed* reference +style, the user picks a specific timestep *nstep* from which particle positions are saved. +If peratom data is accessed from this compute prior to this timestep, it will simply be +zeroed. The *update* reference style implies the reference state will be updated every +*nstep* timesteps. The *offset* reference only applies to the *d2min* metric and will +update the reference state *nstep* timesteps before a multiple of *nevery* timesteps. + + ---------- Restart, fix_modify, output, run start/stop, minimize info diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index f18fdd2c4a..bb5c2ca0c3 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -116,6 +116,9 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * if (cut_style == RADIUS && (!atom->radius_flag)) error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); + if (nad_style == INTEGRATED && reference_style == OFFSET) + error->all(FLERR, "Fix nonaffine/displacement cannot use the integrated style with an offset reference state"); + peratom_flag = 1; peratom_freq = nevery; nmax = -1; @@ -347,11 +350,6 @@ void FixNonaffineDisplacement::save_reference_state() void FixNonaffineDisplacement::calculate_D2Min() { - if (!reference_saved) { - error->warning(FLERR, "Calculating D2Min without a saved reference state"); - return; - } - // invoke half neighbor list (will copy or build if necessary) neighbor->build_one(list); From 1ffb2289be15a40757f39855f9d8a0301bbcb04b Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 17 Jul 2023 11:59:50 -0600 Subject: [PATCH 0124/1002] explicitly zeroing arrays --- doc/src/fix_nonaffine_displacement.rst | 2 +- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 99d98b451b..85f51b2419 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -81,7 +81,7 @@ atom positions such as :doc:`the remap x option of fix deform `, :doc:`fix press/berendsen `, or :doc:`fix nh `. Both of these methods require defining a reference state. With the *fixed* reference -style, the user picks a specific timestep *nstep* from which particle positions are saved. +style, the user picks a specific timestep *nstep* at which particle positions are saved. If peratom data is accessed from this compute prior to this timestep, it will simply be zeroed. The *update* reference style implies the reference state will be updated every *nstep* timesteps. The *offset* reference only applies to the *d2min* metric and will diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index bb5c2ca0c3..5572aab1bf 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -180,11 +180,11 @@ void FixNonaffineDisplacement::post_constructor() array_atom = nad; } - if (nad_style == D2MIN) { + if (nad_style == D2MIN) grow_arrays(atom->nmax); - for (int i = 0; i < atom->nlocal; i++) - for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; - } + + for (int i = 0; i < atom->nlocal; i++) + for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; } /* ---------------------------------------------------------------------- */ From 2d897ac8f3eda1352210721c83d3640e3dff3686 Mon Sep 17 00:00:00 2001 From: Joel Thomas Clemmer Date: Mon, 17 Jul 2023 14:22:22 -0600 Subject: [PATCH 0125/1002] Fixing doc build errors --- doc/src/Commands_compute.rst | 1 + doc/src/Commands_fix.rst | 1 + doc/src/compute_rattlers.rst | 2 +- doc/src/fix_nonaffine_displacement.rst | 8 ++++---- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 755000c976..712391c574 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -114,6 +114,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`property/grid ` * :doc:`property/local ` * :doc:`ptm/atom ` + * :doc:`rattlers ` * :doc:`rdf ` * :doc:`reduce ` * :doc:`reduce/chunk ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 6fe321e3c9..3ab4533c80 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -123,6 +123,7 @@ OPT. * :doc:`mvv/tdpd ` * :doc:`neb ` * :doc:`neb/spin ` + * :doc:`nonaffine/displacement ` * :doc:`nph (ko) ` * :doc:`nph/asphere (o) ` * :doc:`nph/body ` diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index a0f0d1b54a..f873a65dbf 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -1,7 +1,7 @@ .. index:: compute rattlers compute rattlers command -============================ +======================== Syntax """""" diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 85f51b2419..7764b64066 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -1,7 +1,7 @@ .. index:: fix nonaffine/displacement fix nonaffine/displacement command -=================== +================================== Syntax """""" @@ -77,7 +77,7 @@ this occurs will simply be zeroed. The *integrated* style simply integrates the velocity of particles every timestep to calculate a displacement. This style only works if used in conjunction with another fix that deforms the box and displaces -atom positions such as :doc:`the remap x option of fix deform `, +atom positions such as :doc:`fix deform ` with remap x, :doc:`fix press/berendsen `, or :doc:`fix nh `. Both of these methods require defining a reference state. With the *fixed* reference @@ -126,6 +126,6 @@ none ---------- -.. _nh-Martyna: +.. _d2min-Falk: -**(Martyna)** Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994). \ No newline at end of file +**(Falk)** Falk and Langer PRE, 57, 7192 (1998). \ No newline at end of file From e9223fc5af8bb9b0b5dd8fc945c40dfa73417f5c Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 17 Jul 2023 14:34:46 -0600 Subject: [PATCH 0126/1002] Fixing LAMMPS headers --- src/EXTRA-COMPUTE/compute_rattlers.cpp | 3 ++- src/EXTRA-COMPUTE/compute_rattlers.h | 2 +- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 4 ++-- src/EXTRA-FIX/fix_nonaffine_displacement.h | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers.cpp index 5613afb707..5de246f990 100755 --- a/src/EXTRA-COMPUTE/compute_rattlers.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers.cpp @@ -1,7 +1,8 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/EXTRA-COMPUTE/compute_rattlers.h b/src/EXTRA-COMPUTE/compute_rattlers.h index 08f8d7e71d..5ed0cd5882 100755 --- a/src/EXTRA-COMPUTE/compute_rattlers.h +++ b/src/EXTRA-COMPUTE/compute_rattlers.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index 5572aab1bf..704ac93382 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -1,8 +1,8 @@ // clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h index 9a914cf5df..5bbc335892 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.h +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains From f62a4c537258e6eab4c20df0237b607378963d37 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 17 Jul 2023 16:49:26 -0500 Subject: [PATCH 0127/1002] Working on fix efield/kk --- src/KOKKOS/fix_efield_kokkos.cpp | 87 ++++++++++++++++++++++++++++++++ src/KOKKOS/fix_efield_kokkos.h | 52 +++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 src/KOKKOS/fix_efield_kokkos.cpp create mode 100644 src/KOKKOS/fix_efield_kokkos.h diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp new file mode 100644 index 0000000000..697116402d --- /dev/null +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -0,0 +1,87 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_efield_kokkos.h" + +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "atom_vec.h" +#include "input.h" +#include "modify.h" +#include "update.h" +#include "variable.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +FixEfieldKokkos::FixEfieldKokkos(LAMMPS *lmp, int narg, char **arg) : + FixEfield(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *)atom; + execution_space = ExecutionSpaceFromDevice::space; + + datamask_read = X_MASK | Q_MASK | F_MASK | RMASS_MASK | MASK_MASK | TYPE_MASK; + datamask_modify = F_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEfieldKokkos::post_force(int /*vflag*/) +{ + // update efield due to variables + + update_efield_variables(); + + atomKK->sync(execution_space,datamask_read); + atomKK->modified(execution_space,datamask_modify); + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + q = atomKK->k_q.view(); + type = atomKK->k_type.view(); + mask = atomKK->k_mask.view(); + int nlocal = atomKK->nlocal; + if (igroup == atomKK->firstgroup) nlocal = atomKK->nfirst; + + copymode = 1; + + eflag = 0; + + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal), *this); + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void FixEfieldKokkos::operator()(const int i) const +{ + if (mask[i] & groupbit) { + double qi = q[i]; + f(i,0) += qi*ex; + f(i,1) += qi*ey; + f(i,2) += qi*ez; + } +} + +namespace LAMMPS_NS { +template class FixEfieldKokkos; +#ifdef LMP_KOKKOS_GPU +template class FixEfieldKokkos; +#endif +} diff --git a/src/KOKKOS/fix_efield_kokkos.h b/src/KOKKOS/fix_efield_kokkos.h new file mode 100644 index 0000000000..e5171ce6f5 --- /dev/null +++ b/src/KOKKOS/fix_efield_kokkos.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(efield/kk,FixFixEfieldKokkos); +FixStyle(efield/kk/device,FixFixEfieldKokkos); +FixStyle(efield/kk/host,FixFixEfieldKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_FIX_EFIELD_KOKKOS_H +#define LMP_FIX_EFIELD_KOKKOS_H + +#include "fix_efield.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixEfieldKokkos : public FixEfield { + public: + FixEfieldKokkos(class LAMMPS *, int, char **); + + void post_force(int) override; + + KOKKOS_INLINE_FUNCTION + void operator()(const int, double &) const; + + private: + typename ArrayTypes::t_x_array x; + typename ArrayTypes::t_f_array f; + typename ArrayTypes::t_int_1d type; + typename ArrayTypes::t_int_1d mask; + typename ArrayTypes::t_float_1d_randomread q; +}; + +} // namespace LAMMPS_NS + +#endif // LMP_FIX_EFIELD_KOKKOS_H +#endif // FIX_CLASS From a48f4597a2753e2d7d668f438f21692a3f2e1d0e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 22 Jul 2023 00:08:17 -0400 Subject: [PATCH 0128/1002] add optional nmax keyword to fix vector to allow using it as a sliding window --- doc/src/fix_vector.rst | 41 +++++++++++++++++++++++++---------------- src/fix_vector.cpp | 36 +++++++++++++++++++++++++++--------- src/fix_vector.h | 3 +++ 3 files changed, 55 insertions(+), 25 deletions(-) diff --git a/doc/src/fix_vector.rst b/doc/src/fix_vector.rst index 95ec350e12..a310f9f868 100644 --- a/doc/src/fix_vector.rst +++ b/doc/src/fix_vector.rst @@ -8,11 +8,12 @@ Syntax .. code-block:: LAMMPS - fix ID group-ID vector Nevery value1 value2 ... + fix ID group-ID vector Nevery [nmax ] value1 value2 ... * ID, group-ID are documented in :doc:`fix ` command * vector = style name of this fix command * Nevery = use input values every this many timesteps +* nmax = set maximal length of vector to (optional) * one or more input values can be listed * value = c_ID, c_ID[N], f_ID, f_ID[N], v_name @@ -32,6 +33,7 @@ Examples fix 1 all vector 100 c_myTemp fix 1 all vector 5 c_myTemp v_integral + fix 1 all vector 50 nmax 200 c_myTemp Description """"""""""" @@ -43,6 +45,10 @@ values, they are stored as rows in a global array, whose number of rows is growing. The resulting vector or array can be used by other :doc:`output commands `. +The optional *nmax* keyword can be used to restrict the length of the +vector to the given *length* value. Once the vector is filled, the +oldest entries will be discarded when new entries are added. + One way to to use this command is to accumulate a vector that is time-integrated using the :doc:`variable trap() ` function. For example the velocity auto-correlation function (VACF) can be @@ -94,11 +100,12 @@ calculated by the compute is used. Note that there is a :doc:`compute reduce ` command which can sum per-atom quantities into a global scalar or vector which -can thus be accessed by fix vector. Or it can be a compute defined -not in your input script, but by :doc:`thermodynamic output ` or other fixes such as :doc:`fix nvt ` -or :doc:`fix temp/rescale `. See the doc pages for -these commands which give the IDs of these computes. Users can also -write code for their own compute styles and :doc:`add them to LAMMPS `. +can thus be accessed by fix vector. Or it can be a compute defined not +in your input script, but by :doc:`thermodynamic output ` +or other fixes such as :doc:`fix nvt ` or :doc:`fix temp/rescale +`. See the doc pages for these commands which give +the IDs of these computes. Users can also write code for their own +compute styles and :doc:`add them to LAMMPS `. If a value begins with "f\_", a fix ID must follow which has been previously defined in the input script. If no bracketed term is @@ -108,7 +115,8 @@ calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with *Nevery*, else an error will result. -Users can also write code for their own fix styles and :doc:`add them to LAMMPS `. +Users can also write code for their own fix styles and :doc:`add them to +LAMMPS `. If a value begins with "v\_", a variable name must follow which has been previously defined in the input script. An equal-style or @@ -126,8 +134,9 @@ quantities to be stored by fix vector. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -No information about this fix is written to :doc:`binary restart files `. None of the :doc:`fix_modify ` options -are relevant to this fix. +No information about this fix is written to :doc:`binary restart files +`. None of the :doc:`fix_modify ` options are +relevant to this fix. This fix produces a global vector or global array which can be accessed by various :doc:`output commands `. The values @@ -144,15 +153,15 @@ the vector are "intensive" or "extensive". If the fix produces an array, then all elements in the array must be the same, either "intensive" or "extensive". If a compute or fix provides the value stored, then the compute or fix determines whether the value is -intensive or extensive; see the page for that compute or fix for -further info. Values produced by a variable are treated as intensive. +intensive or extensive; see the page for that compute or fix for further +info. Values produced by a variable are treated as intensive. This fix can allocate storage for stored values accumulated over -multiple runs, using the *start* and *stop* keywords of the -:doc:`run ` command. See the :doc:`run ` command for details of -how to do this. If using the :doc:`run pre no ` command option, -this is required to allow the fix to allocate sufficient storage for -stored values. +multiple runs, using the *start* and *stop* keywords of the :doc:`run +` command. See the :doc:`run ` command for details of how to +do this. If using the :doc:`run pre no ` command option, this is +required to allow the fix to allocate sufficient storage for stored +values. This fix is not invoked during :doc:`energy minimization `. diff --git a/src/fix_vector.cpp b/src/fix_vector.cpp index 6d561a58df..fde24b716c 100644 --- a/src/fix_vector.cpp +++ b/src/fix_vector.cpp @@ -35,10 +35,20 @@ FixVector::FixVector(LAMMPS *lmp, int narg, char **arg) : nevery = utils::inumeric(FLERR, arg[3], false, lmp); if (nevery <= 0) error->all(FLERR, "Invalid fix vector every argument: {}", nevery); + nmaxval = MAXSMALLINT; + nindex = 0; + + int iarg = 4; + if (strcmp(arg[iarg], "nmax") == 0) { + nmaxval = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (nmaxval < 1) error->all(FLERR, "Invalid nmax value"); + iarg += 2; + } + // parse values values.clear(); - for (int iarg = 4; iarg < narg; iarg++) { + while (iarg < narg) { ArgInfo argi(arg[iarg]); value_t val; @@ -51,6 +61,7 @@ FixVector::FixVector(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR, "Invalid fix vector argument: {}", arg[iarg]); values.push_back(val); + ++iarg; } // setup and error check @@ -132,7 +143,7 @@ FixVector::FixVector(LAMMPS *lmp, int narg, char **arg) : vector = nullptr; array = nullptr; - ncount = ncountmax = 0; + ncount = ncountmax = nindex = 0; if (values.size() == 1) size_vector = 0; else @@ -199,6 +210,7 @@ void FixVector::init() bigint finalstep = update->endstep / nevery * nevery; if (finalstep > update->endstep) finalstep -= nevery; ncountmax = (finalstep - initialstep) / nevery + 1; + if (ncountmax > nmaxval) ncountmax = nmaxval; if (values.size() == 1) memory->grow(vector, ncountmax, "vector:vector"); else @@ -221,16 +233,18 @@ void FixVector::end_of_step() // skip if not step which requires doing something if (update->ntimestep != nextstep) return; - if (ncount == ncountmax) error->all(FLERR, "Overflow of allocated fix vector storage"); + + // wrap around when vector/array is full + nindex = ncount % ncountmax; // accumulate results of computes,fixes,variables to local copy // compute/fix/variable may invoke computes so wrap with clear/add double *result; if (values.size() == 1) - result = &vector[ncount]; + result = &vector[nindex]; else - result = array[ncount]; + result = array[nindex]; modify->clearstep_compute(); @@ -290,9 +304,9 @@ void FixVector::end_of_step() ncount++; if (values.size() == 1) - size_vector++; + size_vector = MIN(size_vector + 1, ncountmax); else - size_array_rows++; + size_array_rows = MIN(size_array_rows + 1, ncountmax); } /* ---------------------------------------------------------------------- @@ -301,7 +315,9 @@ void FixVector::end_of_step() double FixVector::compute_vector(int i) { - return vector[i]; + int idx = i; + if (ncount >= ncountmax) idx = (i + ncount) % ncountmax; + return vector[idx]; } /* ---------------------------------------------------------------------- @@ -310,5 +326,7 @@ double FixVector::compute_vector(int i) double FixVector::compute_array(int i, int j) { - return array[i][j]; + int idx = i; + if (ncount >= ncountmax) idx = (i + ncount) % ncountmax; + return array[idx][j]; } diff --git a/src/fix_vector.h b/src/fix_vector.h index 5d29492aa8..7f5394702c 100644 --- a/src/fix_vector.h +++ b/src/fix_vector.h @@ -52,6 +52,9 @@ class FixVector : public Fix { int ncount; // # of values currently in growing vector or array int ncountmax; // max # of values vector/array can hold + int nmaxval; // maximum allowed number of values + int nindex; // start index of data, may wrap around + double *vector; double **array; }; From 2273c5c4754e22536e70f8216469582594e9f4cc Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Thu, 27 Jul 2023 03:28:46 -0600 Subject: [PATCH 0129/1002] fix memory and output bugs --- src/EXTRA-COMPUTE/compute_local_comp_atom.cpp | 14 +++---- src/EXTRA-COMPUTE/compute_local_comp_atom.h | 2 +- src/KOKKOS/compute_local_comp_atom_kokkos.cpp | 38 +++++++++---------- src/KOKKOS/compute_local_comp_atom_kokkos.h | 3 -- 4 files changed, 26 insertions(+), 31 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp index bb3f068bd7..dbd1d04cb2 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp @@ -70,7 +70,7 @@ ComputeLocalCompAtom::~ComputeLocalCompAtom() if (copymode) return; memory->destroy(result); - memory->destroy(lcomp); + } /* ---------------------------------------------------------------------- */ @@ -128,7 +128,7 @@ void ComputeLocalCompAtom::compute_peratom() int count, itype, jtype; // int lcomp[ntypes]; - memory->create(lcomp, ntypes, "local/comp/atom:lcomp"); + // memory->create(lcomp, ntypes, "local/comp/atom:lcomp"); invoked_peratom = update->ntimestep; @@ -163,7 +163,7 @@ void ComputeLocalCompAtom::compute_peratom() i = ilist[ii]; - for (int m = 0; m < ntypes; m++) lcomp[m] = 0.0; + // for (int m = 0; m < ntypes; m++) lcomp[m] = 0.0; if (mask[i] & groupbit) { @@ -178,7 +178,7 @@ void ComputeLocalCompAtom::compute_peratom() count = 1; itype = type[i]; - lcomp[itype-1]++; + result[i][itype]++; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -192,7 +192,7 @@ void ComputeLocalCompAtom::compute_peratom() rsq = delx * delx + dely * dely + delz * delz; if (rsq < cutsq) { count++; - lcomp[jtype-1]++; + result[i][jtype]++; } } @@ -203,8 +203,8 @@ void ComputeLocalCompAtom::compute_peratom() // local comp fractions per element double lfac = 1.0 / count; - for (int n = 0; n < ntypes; n++) - result[i][n+1] = lcomp[n] * lfac; + for (int n = 1; n < size_peratom_cols; n++) + result[i][n+1] *= lfac; } } diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.h b/src/EXTRA-COMPUTE/compute_local_comp_atom.h index 8ec5cb685f..21362dc933 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.h +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.h @@ -39,7 +39,7 @@ class ComputeLocalCompAtom : public Compute { double cutsq; // cutoff**2 class NeighList *list; // neighbor list - int *lcomp; // peratom array to track local compositions +// int *lcomp; // peratom array to track local compositions double **result; // peratom array of local compositions }; diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 20caa00df0..59f3a50d3a 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -58,8 +58,9 @@ ComputeLocalCompAtomKokkos::~ComputeLocalCompAtomKokkos() { if (copymode) return; - memoryKK->destroy_kokkos(k_result,result); // memoryKK->destroy_kokkos(k_lcomp,lcomp); + memoryKK->destroy_kokkos(k_result,result); + } /* ---------------------------------------------------------------------- */ @@ -109,6 +110,7 @@ void ComputeLocalCompAtomKokkos::compute_peratom() d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; + // compute properties for each atom in group // use full neighbor list to count atoms less than cutoff @@ -126,8 +128,15 @@ void ComputeLocalCompAtomKokkos::compute_peratom() copymode = 0; k_result.modify(); + + // printf("k_result pre-sync: %g ", k_result.view()(0,0)); + // printf("k_result pre-sync: %g \n\n", k_result.view()(0,1)); + k_result.sync_host(); + // printf("k_result post-sync: %g ", k_result.view()(0,0)); + // printf("k_result post-sync: %g \n\n", k_result.view()(0,1)); + } template @@ -139,11 +148,6 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, if (mask[i] & groupbit) { - // initialize / reset lcomp - - // for (int m = 0; m < ntypes; m++) d_lcomp(m) = 0; - // for (int m = 0; m < size_peratom_cols; m++) d_result(i,m) = 0.0; - const X_FLOAT xtmp = x(i,0); const X_FLOAT ytmp = x(i,1); const X_FLOAT ztmp = x(i,2); @@ -151,11 +155,8 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, // i atom contribution - int count = 1; + int count = 1.0; int itype = type[i]; - - // d_lcomp(itype-1)++; - // d_result(i,itype-1) = d_result(i,itype-1) + 1; d_result(i,itype)++; for (int jj = 0; jj < jnum; jj++) { @@ -171,25 +172,22 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; if (rsq < cutsq) { count++; - // d_lcomp(jtype-1)++; - // d_result(i,jtype) = d_result(i,jtype) + 1; - d_result(i,jtype)++; + d_result(i,jtype) += 1.0; } + } // total count of atoms found in sampled radius range d_result(i,0) = count; - // local comp fractions per + // local comp fractions per atom type double lfac = 1.0 / count; - // for (int n = 1; n < size_peratom_cols; n++) { - // // d_result(i,n+1) = d_lcomp(n+1) * lfac; - // d_result(i,n) = d_result(i,n) * lfac; - // // d_result(i,n+1) = 123.0; - // } - + for (int n = 1; n < size_peratom_cols; n++) { + // double item = d_result(i,n); + d_result(i,n) *= lfac; + // d_result(i,n) = 123.0; } } } diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.h b/src/KOKKOS/compute_local_comp_atom_kokkos.h index bf0f69de55..5fb52474b2 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.h +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.h @@ -54,10 +54,7 @@ template class ComputeLocalCompAtomKokkos : public ComputeLoc typename AT::t_neighbors_2d d_neighbors; typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; - -// DAT::tdual_int_1d k_lcomp; DAT::tdual_float_2d k_result; -// typename AT::t_int_1d d_lcomp; typename AT::t_float_2d d_result; }; From 3657ed6beb12b1f060b1d5517a5a7dcf04ad64bd Mon Sep 17 00:00:00 2001 From: "Megan J. McCarthy" Date: Thu, 27 Jul 2023 03:35:46 -0600 Subject: [PATCH 0130/1002] clean up comments --- src/EXTRA-COMPUTE/compute_local_comp_atom.cpp | 7 +------ src/EXTRA-COMPUTE/compute_local_comp_atom.h | 3 --- src/KOKKOS/compute_local_comp_atom_kokkos.cpp | 16 +--------------- 3 files changed, 2 insertions(+), 24 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp index dbd1d04cb2..02c1444fbf 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) + Contributing authors: Megan McCarthy (SNL), Stan Moore (SNL) ------------------------------------------------------------------------- */ #include "compute_local_comp_atom.h" @@ -126,9 +126,6 @@ void ComputeLocalCompAtom::compute_peratom() double xtmp, ytmp, ztmp, delx, dely, delz, rsq; int *ilist, *jlist, *numneigh, **firstneigh; int count, itype, jtype; - // int lcomp[ntypes]; - - // memory->create(lcomp, ntypes, "local/comp/atom:lcomp"); invoked_peratom = update->ntimestep; @@ -163,8 +160,6 @@ void ComputeLocalCompAtom::compute_peratom() i = ilist[ii]; - // for (int m = 0; m < ntypes; m++) lcomp[m] = 0.0; - if (mask[i] & groupbit) { xtmp = x[i][0]; diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.h b/src/EXTRA-COMPUTE/compute_local_comp_atom.h index 21362dc933..76d92de08d 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.h +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.h @@ -38,9 +38,6 @@ class ComputeLocalCompAtom : public Compute { double cutoff; // global cutoff distance double cutsq; // cutoff**2 class NeighList *list; // neighbor list - -// int *lcomp; // peratom array to track local compositions - double **result; // peratom array of local compositions }; diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 59f3a50d3a..9360cbd82a 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing authors: Stan Moore (SNL), Megan McCarthy (SNL) + Contributing authors: Megan McCarthy (SNL), Stan Moore (SNL) ------------------------------------------------------------------------- */ #include "compute_local_comp_atom_kokkos.h" @@ -58,7 +58,6 @@ ComputeLocalCompAtomKokkos::~ComputeLocalCompAtomKokkos() { if (copymode) return; - // memoryKK->destroy_kokkos(k_lcomp,lcomp); memoryKK->destroy_kokkos(k_result,result); } @@ -97,9 +96,6 @@ void ComputeLocalCompAtomKokkos::compute_peratom() array_atom = result; } - // memoryKK->create_kokkos(k_lcomp,lcomp,size_peratom_cols,"local/comp/atom:lcomp"); - // d_lcomp = k_lcomp.view(); - // invoke full neighbor list (will copy or build if necessary) neighbor->build_one(list); @@ -110,7 +106,6 @@ void ComputeLocalCompAtomKokkos::compute_peratom() d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - // compute properties for each atom in group // use full neighbor list to count atoms less than cutoff @@ -128,15 +123,8 @@ void ComputeLocalCompAtomKokkos::compute_peratom() copymode = 0; k_result.modify(); - - // printf("k_result pre-sync: %g ", k_result.view()(0,0)); - // printf("k_result pre-sync: %g \n\n", k_result.view()(0,1)); - k_result.sync_host(); - // printf("k_result post-sync: %g ", k_result.view()(0,0)); - // printf("k_result post-sync: %g \n\n", k_result.view()(0,1)); - } template @@ -185,9 +173,7 @@ void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, double lfac = 1.0 / count; for (int n = 1; n < size_peratom_cols; n++) { - // double item = d_result(i,n); d_result(i,n) *= lfac; - // d_result(i,n) = 123.0; } } } From 6a991ff0a094a089a50b5f3723a7b1e8c1bbf990 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 1 Aug 2023 10:53:20 -0500 Subject: [PATCH 0131/1002] Updated fix efield/kk, needs work on unwrap --- src/KOKKOS/fix_efield_kokkos.cpp | 173 ++++++++++++++++++++++++++----- src/KOKKOS/fix_efield_kokkos.h | 67 +++++++++--- src/fix_efield.cpp | 2 + 3 files changed, 197 insertions(+), 45 deletions(-) diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp index 697116402d..fc84967e02 100644 --- a/src/KOKKOS/fix_efield_kokkos.cpp +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -15,14 +15,23 @@ #include "fix_efield_kokkos.h" #include "atom_kokkos.h" -#include "atom_masks.h" -#include "atom_vec.h" -#include "input.h" -#include "modify.h" #include "update.h" +#include "modify.h" +#include "domain.h" +#include "region.h" +#include "input.h" #include "variable.h" +#include "memory_kokkos.h" +#include "error.h" +#include "atom_masks.h" +#include "kokkos_base.h" + +#include using namespace LAMMPS_NS; +using namespace FixConst; + +enum{NONE,CONSTANT,EQUAL,ATOM}; /* ---------------------------------------------------------------------- */ @@ -31,11 +40,36 @@ FixEfieldKokkos::FixEfieldKokkos(LAMMPS *lmp, int narg, char **arg) FixEfield(lmp, narg, arg) { kokkosable = 1; - atomKK = (AtomKokkos *)atom; + atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; - datamask_read = X_MASK | Q_MASK | F_MASK | RMASS_MASK | MASK_MASK | TYPE_MASK; - datamask_modify = F_MASK; + memory->destroy(efield); + memoryKK->create_kokkos(k_efield,efield,maxatom,4,"efield:efield"); + d_efield = k_efield.view(); +} + +/* ---------------------------------------------------------------------- */ + +template +FixEfieldKokkos::~FixEfieldKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_efield,efield); + efield = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEfieldKokkos::init() +{ + FixEfield::init(); + + if (utils::strmatch(update->integrate_style,"^respa")) + error->all(FLERR,"Cannot (yet) use respa with Kokkos"); } /* ---------------------------------------------------------------------- */ @@ -43,39 +77,121 @@ FixEfieldKokkos::FixEfieldKokkos(LAMMPS *lmp, int narg, char **arg) template void FixEfieldKokkos::post_force(int /*vflag*/) { - // update efield due to variables + atomKK->sync(execution_space, F_MASK | Q_MASK | MASK_MASK); - update_efield_variables(); - - atomKK->sync(execution_space,datamask_read); - atomKK->modified(execution_space,datamask_modify); - - x = atomKK->k_x.view(); f = atomKK->k_f.view(); q = atomKK->k_q.view(); - type = atomKK->k_type.view(); mask = atomKK->k_mask.view(); - int nlocal = atomKK->nlocal; - if (igroup == atomKK->firstgroup) nlocal = atomKK->nfirst; - copymode = 1; + int nlocal = atom->nlocal; - eflag = 0; + // update region if necessary - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal), *this); - - copymode = 0; + if (region) { + if (!utils::strmatch(region->style, "^block")) + error->all(FLERR,"Cannot (yet) use {}-style region with fix efield/kk",region->style); + region->prematch(); + DAT::tdual_int_1d k_match = DAT::tdual_int_1d("efield:k_match",nlocal); + KokkosBase* regionKKBase = dynamic_cast(region); + regionKKBase->match_all_kokkos(groupbit,k_match); + k_match.template sync(); + d_match = k_match.template view(); + } + + // reallocate sforce array if necessary + + if (varflag == ATOM && atom->nmax > maxatom) { + maxatom = atom->nmax; + memoryKK->destroy_kokkos(k_efield,efield); + memoryKK->create_kokkos(k_efield,efield,maxatom,4,"efield:efield"); + d_efield = k_efield.view(); + } + + fsum[0] = fsum[1] = fsum[2] = fsum[3] = 0.0; + double_4 fsum_kk; + force_flag = 0; + + if (varflag == CONSTANT) { + copymode = 1; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); + copymode = 0; + + // variable force, wrap with clear/add + + } else { + + atomKK->sync(Host,ALL_MASK); // this can be removed when variable class is ported to Kokkos + + modify->clearstep_compute(); + + if (xstyle == EQUAL) ex = input->variable->compute_equal(xvar); + else if (xstyle == ATOM) + input->variable->compute_atom(xvar,igroup,&efield[0][0],4,0); + if (ystyle == EQUAL) ey = input->variable->compute_equal(yvar); + else if (ystyle == ATOM) + input->variable->compute_atom(yvar,igroup,&efield[0][1],4,0); + if (zstyle == EQUAL) ez = input->variable->compute_equal(zvar); + else if (zstyle == ATOM) + input->variable->compute_atom(zvar,igroup,&efield[0][2],4,0); + + modify->addstep_compute(update->ntimestep + 1); + + if (varflag == ATOM) { // this can be removed when variable class is ported to Kokkos + k_efield.modify(); + k_efield.sync(); + } + + copymode = 1; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); + copymode = 0; + } + + atomKK->modified(execution_space, F_MASK); + + fsum[0] = fsum_kk.d0; + fsum[1] = fsum_kk.d1; + fsum[2] = fsum_kk.d2; + fsum[3] = fsum_kk.d3; } template KOKKOS_INLINE_FUNCTION -void FixEfieldKokkos::operator()(const int i) const -{ +void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, double_4& fsum_kk) const { if (mask[i] & groupbit) { - double qi = q[i]; - f(i,0) += qi*ex; - f(i,1) += qi*ey; - f(i,2) += qi*ez; + if (region && !d_match[i]) return; + const F_FLOAT qtmp = q[i]; + const F_FLOAT fx = qtmp * ex; + const F_FLOAT fy = qtmp * ey; + const F_FLOAT fz = qtmp * ez; + f(i,0) += fx; + f(i,1) += fy; + f(i,2) += fz; + //fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; + fsum_kk.d1 += fx; + fsum_kk.d2 += fy; + fsum_kk.d3 += fz; + } +} + +template +KOKKOS_INLINE_FUNCTION +void FixEfieldKokkos::operator()(TagFixEfieldNonConstant, const int &i, double_4& fsum_kk) const { + if (mask[i] & groupbit) { + if (region && !d_match[i]) return; + const F_FLOAT qtmp = q[i]; + const F_FLOAT fx = qtmp * ex; + const F_FLOAT fy = qtmp * ey; + const F_FLOAT fz = qtmp * ez; + if (xstyle == ATOM) f(i,0) += d_efield(i,0); + else if (xstyle) f(i,0) += fx; + if (ystyle == ATOM) f(i,1) = d_efield(i,1); + else if (ystyle) f(i,1) += fy; + if (zstyle == ATOM) f(i,2) = d_efield(i,2); + else if (zstyle) f(i,2) += fz; + //fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; + fsum_kk.d1 += fx; + fsum_kk.d2 += fy; + fsum_kk.d3 += fz; } } @@ -85,3 +201,4 @@ template class FixEfieldKokkos; template class FixEfieldKokkos; #endif } + diff --git a/src/KOKKOS/fix_efield_kokkos.h b/src/KOKKOS/fix_efield_kokkos.h index e5171ce6f5..8d8d2ee97a 100644 --- a/src/KOKKOS/fix_efield_kokkos.h +++ b/src/KOKKOS/fix_efield_kokkos.h @@ -13,9 +13,9 @@ #ifdef FIX_CLASS // clang-format off -FixStyle(efield/kk,FixFixEfieldKokkos); -FixStyle(efield/kk/device,FixFixEfieldKokkos); -FixStyle(efield/kk/host,FixFixEfieldKokkos); +FixStyle(efield/kk,FixEfieldKokkos); +FixStyle(efield/kk/device,FixEfieldKokkos); +FixStyle(efield/kk/host,FixEfieldKokkos); // clang-format on #else @@ -28,25 +28,58 @@ FixStyle(efield/kk/host,FixFixEfieldKokkos); namespace LAMMPS_NS { +struct e_double_4 { + double d0, d1, d2, d3; + KOKKOS_INLINE_FUNCTION + e_double_4() { + d0 = d1 = d2 = d3 = 0.0; + } + KOKKOS_INLINE_FUNCTION + e_double_4& operator+=(const e_double_4 &rhs) { + d0 += rhs.d0; + d1 += rhs.d1; + d2 += rhs.d2; + d3 += rhs.d3; + return *this; + } +}; +typedef e_double_4 double_4; + +struct TagFixEfieldConstant{}; + +struct TagFixEfieldNonConstant{}; + template class FixEfieldKokkos : public FixEfield { - public: - FixEfieldKokkos(class LAMMPS *, int, char **); + public: + typedef DeviceType device_type; + typedef double_4 value_type; + typedef ArrayTypes AT; - void post_force(int) override; + FixEfieldKokkos(class LAMMPS *, int, char **); + ~FixEfieldKokkos() override; + void init() override; + void post_force(int) override; - KOKKOS_INLINE_FUNCTION - void operator()(const int, double &) const; + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEfieldConstant, const int&, double_4&) const; - private: - typename ArrayTypes::t_x_array x; - typename ArrayTypes::t_f_array f; - typename ArrayTypes::t_int_1d type; - typename ArrayTypes::t_int_1d mask; - typename ArrayTypes::t_float_1d_randomread q; + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEfieldNonConstant, const int&, double_4&) const; + + private: + DAT::tdual_ffloat_2d k_efield; + typename AT::t_ffloat_2d_randomread d_efield; + typename AT::t_int_1d d_match; + + typename AT::t_x_array_randomread x; + typename AT::t_float_1d_randomread q; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread mask; }; -} // namespace LAMMPS_NS +} + +#endif +#endif -#endif // LMP_FIX_EFIELD_KOKKOS_H -#endif // FIX_CLASS diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp index d01a498d39..23277f8af3 100644 --- a/src/fix_efield.cpp +++ b/src/fix_efield.cpp @@ -129,6 +129,8 @@ FixEfield::FixEfield(LAMMPS *lmp, int narg, char **arg) : FixEfield::~FixEfield() { + if (copymode) return; + delete[] xstr; delete[] ystr; delete[] zstr; From 34c398dd372a5eae6ecb53a4fa10a2bf2e0cdad0 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 2 Aug 2023 06:59:24 -0500 Subject: [PATCH 0132/1002] Tried two ways of doing parallel reduce for fsum --- src/KOKKOS/fix_efield_kokkos.cpp | 75 +++++++++++++++++++++++++++++--- src/KOKKOS/fix_efield_kokkos.h | 1 + 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp index fc84967e02..d4ef6dc3f2 100644 --- a/src/KOKKOS/fix_efield_kokkos.cpp +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -17,7 +17,7 @@ #include "atom_kokkos.h" #include "update.h" #include "modify.h" -#include "domain.h" +#include "domain_kokkos.h" #include "region.h" #include "input.h" #include "variable.h" @@ -77,10 +77,11 @@ void FixEfieldKokkos::init() template void FixEfieldKokkos::post_force(int /*vflag*/) { - atomKK->sync(execution_space, F_MASK | Q_MASK | MASK_MASK); + atomKK->sync(execution_space, F_MASK | Q_MASK | IMAGE_MASK | MASK_MASK); f = atomKK->k_f.view(); q = atomKK->k_q.view(); + image = atomKK->k_image.view(); mask = atomKK->k_mask.view(); int nlocal = atom->nlocal; @@ -113,7 +114,50 @@ void FixEfieldKokkos::post_force(int /*vflag*/) if (varflag == CONSTANT) { copymode = 1; - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); + //Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); + + { + // local variables for lambda capture + auto prd = Few(domain->prd); + auto h = Few(domain->h); + auto triclinic = domain->triclinic; + auto l_ex = ex; + auto l_ey = ey; + auto l_ez = ez; + + auto l_x = x; + auto l_q = q; + auto l_f = f; + auto l_mask = mask; + auto l_image = image; + auto l_groupbit = groupbit; + + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal), + LAMMPS_LAMBDA(int i, double_4& fsum_kk) { + if (l_mask[i] & l_groupbit) { + + Few x_i; + x_i[0] = l_x(i,0); + x_i[1] = l_x(i,1); + x_i[2] = l_x(i,2); + auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,l_image(i)); + auto qtmp = l_q(i); + auto fx = qtmp * l_ex; + auto fy = qtmp * l_ey; + auto fz = qtmp * l_ez; + l_f(i,0) += fx; + l_f(i,1) += fy; + l_f(i,2) += fz; + + fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; + fsum_kk.d1 += fx; + fsum_kk.d2 += fy; + fsum_kk.d3 += fz; + } + }, fsum_kk); + + } + copymode = 0; // variable force, wrap with clear/add @@ -159,6 +203,14 @@ KOKKOS_INLINE_FUNCTION void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, double_4& fsum_kk) const { if (mask[i] & groupbit) { if (region && !d_match[i]) return; + auto prd = Few(domain->prd); + auto h = Few(domain->h); + auto triclinic = domain->triclinic; + Few x_i; + x_i[0] = x(i,0); + x_i[1] = x(i,1); + x_i[2] = x(i,2); + auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i)); const F_FLOAT qtmp = q[i]; const F_FLOAT fx = qtmp * ex; const F_FLOAT fy = qtmp * ey; @@ -166,7 +218,8 @@ void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, f(i,0) += fx; f(i,1) += fy; f(i,2) += fz; - //fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; + + fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; fsum_kk.d1 += fx; fsum_kk.d2 += fy; fsum_kk.d3 += fz; @@ -176,19 +229,27 @@ void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, template KOKKOS_INLINE_FUNCTION void FixEfieldKokkos::operator()(TagFixEfieldNonConstant, const int &i, double_4& fsum_kk) const { + auto prd = Few(domain->prd); + auto h = Few(domain->h); + auto triclinic = domain->triclinic; if (mask[i] & groupbit) { if (region && !d_match[i]) return; + Few x_i; + x_i[0] = x(i,0); + x_i[1] = x(i,1); + x_i[2] = x(i,2); + auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i)); const F_FLOAT qtmp = q[i]; const F_FLOAT fx = qtmp * ex; const F_FLOAT fy = qtmp * ey; const F_FLOAT fz = qtmp * ez; if (xstyle == ATOM) f(i,0) += d_efield(i,0); else if (xstyle) f(i,0) += fx; - if (ystyle == ATOM) f(i,1) = d_efield(i,1); + if (ystyle == ATOM) f(i,1) += d_efield(i,1); else if (ystyle) f(i,1) += fy; - if (zstyle == ATOM) f(i,2) = d_efield(i,2); + if (zstyle == ATOM) f(i,2) += d_efield(i,2); else if (zstyle) f(i,2) += fz; - //fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; + fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; fsum_kk.d1 += fx; fsum_kk.d2 += fy; fsum_kk.d3 += fz; diff --git a/src/KOKKOS/fix_efield_kokkos.h b/src/KOKKOS/fix_efield_kokkos.h index 8d8d2ee97a..d159473d1d 100644 --- a/src/KOKKOS/fix_efield_kokkos.h +++ b/src/KOKKOS/fix_efield_kokkos.h @@ -75,6 +75,7 @@ class FixEfieldKokkos : public FixEfield { typename AT::t_x_array_randomread x; typename AT::t_float_1d_randomread q; typename AT::t_f_array f; + typename AT::t_imageint_1d_randomread image; typename AT::t_int_1d_randomread mask; }; From 3e7f1ac83a3af6a4c45e7500a239fc6754f5dfd8 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 2 Aug 2023 16:27:19 -0600 Subject: [PATCH 0133/1002] add proc option to compute property/grid --- src/compute_property_grid.cpp | 34 ++++++++++++++++++++++++++++++++++ src/compute_property_grid.h | 1 + 2 files changed, 35 insertions(+) diff --git a/src/compute_property_grid.cpp b/src/compute_property_grid.cpp index 2b8df955ef..58fe20bd86 100644 --- a/src/compute_property_grid.cpp +++ b/src/compute_property_grid.cpp @@ -13,6 +13,7 @@ #include "compute_property_grid.h" +#include "comm.h" #include "domain.h" #include "error.h" #include "grid2d.h" @@ -59,6 +60,8 @@ ComputePropertyGrid::ComputePropertyGrid(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg], "id") == 0) { pack_choice[jarg] = &ComputePropertyGrid::pack_id; + } else if (strcmp(arg[iarg], "proc") == 0) { + pack_choice[jarg] = &ComputePropertyGrid::pack_proc; } else if (strcmp(arg[iarg], "ix") == 0) { pack_choice[jarg] = &ComputePropertyGrid::pack_indices<0>; @@ -321,6 +324,37 @@ void ComputePropertyGrid::pack_id(int n) } } +/* ---------------------------------------------------------------------- + grid point owning processor +------------------------------------------------------------------------- */ + +void ComputePropertyGrid::pack_proc(int n) +{ + int me = comm->me; + + if (dimension == 2) { + if (nvalues == 1) { + for (int iy = nylo_in; iy <= nyhi_in; iy++) + for (int ix = nxlo_in; ix <= nxhi_in; ix++) vec2d[iy][ix] = me; + } else { + for (int iy = nylo_in; iy <= nyhi_in; iy++) + for (int ix = nxlo_in; ix <= nxhi_in; ix++) array2d[iy][ix][n] = me; + } + } else if (dimension == 3) { + if (nvalues == 1) { + for (int iz = nzlo_in; iz <= nzhi_in; iz++) + for (int iy = nylo_in; iy <= nyhi_in; iy++) + for (int ix = nxlo_in; ix <= nxhi_in; ix++) + vec3d[iz][iy][ix] = me; + } else { + for (int iz = nzlo_in; iz <= nzhi_in; iz++) + for (int iy = nylo_in; iy <= nyhi_in; iy++) + for (int ix = nxlo_in; ix <= nxhi_in; ix++) + array3d[iz][iy][ix][n] = me; + } + } +} + /* ---------------------------------------------------------------------- grid indices via templating ------------------------------------------------------------------------- */ diff --git a/src/compute_property_grid.h b/src/compute_property_grid.h index 8a0ef63090..37badeb2eb 100644 --- a/src/compute_property_grid.h +++ b/src/compute_property_grid.h @@ -65,6 +65,7 @@ class ComputePropertyGrid : public Compute { FnPtrPack *pack_choice; // ptrs to pack functions void pack_id(int); + void pack_proc(int); template void pack_indices(int); template void pack_coords(int); }; From 9617c8e3d2866b75096deba5ca07affd2883649f Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 2 Aug 2023 16:30:26 -0600 Subject: [PATCH 0134/1002] also update doc page --- doc/src/compute_property_grid.rst | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/doc/src/compute_property_grid.rst b/doc/src/compute_property_grid.rst index 44389320d6..b14e315de3 100644 --- a/doc/src/compute_property_grid.rst +++ b/doc/src/compute_property_grid.rst @@ -19,6 +19,7 @@ Syntax attributes = id, ix, iy, iz, x, y, z, xs, ys, zs, xc, yc, zc, xsc, ysc, zsc id = ID of grid cell, x fastest, y next, z slowest + proc = processor ID (0 to Nprocs-1) which owns the grid cell ix,iy,iz = grid indices in each dimension (1 to N inclusive) x,y,z = coords of lower left corner of grid cell xs,ys,zs = scaled coords of lower left corner of grid cell (0.0 to 1.0) @@ -30,8 +31,8 @@ Examples .. code-block:: LAMMPS - compute 1 all property/grid id ix iy iz - compute 1 all property/grid id xc yc zc + compute 1 all property/grid 10 10 20 id ix iy iz + compute 1 all property/grid 100 100 1 id xc yc zc Description """"""""""" @@ -53,13 +54,18 @@ to output per-grid values from other computes of fixes, the grid size specified for this command must be consistent with the grid sizes used by the other commands. -The *id* attribute stores the grid ID for each grid cell. For a -global grid of size Nx by Ny by Nz (in 3d simulations) the grid IDs -range from 1 to Nx*Ny*Nz. They are ordered with the X index of the 3d -grid varying fastest, then Y, then Z slowest. For 2d grids (in 2d +The *id* attribute is the grid ID for each grid cell. For a global +grid of size Nx by Ny by Nz (in 3d simulations) the grid IDs range +from 1 to Nx*Ny*Nz. They are ordered with the X index of the 3d grid +varying fastest, then Y, then Z slowest. For 2d grids (in 2d simulations), the grid IDs range from 1 to Nx*Ny, with X varying fastest and Y slowest. +The *proc* attribute is the ID of the processor which owns the grid +cell. Processor IDs range from 0 to Nprocs - 1, where Nprocs is the +number of processors the simulation is running on. Each grid cell is +owned by a single processor. + The *ix*, *iy*, *iz* attributes are the indices of a grid cell in each dimension. They range from 1 to Nx inclusive in the X dimension, and similar for Y and Z. From a6d178194e5a8055b5c7ca22cd656a5ffcd778c7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 10:59:31 -0400 Subject: [PATCH 0135/1002] use consistent names and capitalization in comments --- src/ASPHERE/pair_ylz.cpp | 2 +- src/ASPHERE/pair_ylz.h | 2 +- src/GPU/amoeba_convolution_gpu.cpp | 2 +- src/GPU/amoeba_convolution_gpu.h | 2 +- src/GPU/pair_amoeba_gpu.cpp | 2 +- src/GPU/pair_amoeba_gpu.h | 2 +- src/GPU/pair_hippo_gpu.cpp | 2 +- src/GPU/pair_hippo_gpu.h | 2 +- src/KOKKOS/grid3d_kokkos.cpp | 2 +- src/KOKKOS/mliap_data_kokkos.cpp | 2 +- src/KOKKOS/mliap_data_kokkos.h | 2 +- src/KOKKOS/mliap_descriptor_kokkos.h | 2 +- src/KOKKOS/mliap_descriptor_so3_kokkos.cpp | 2 +- src/KOKKOS/mliap_descriptor_so3_kokkos.h | 2 +- src/KOKKOS/mliap_model_kokkos.h | 2 +- src/KOKKOS/mliap_model_linear_kokkos.cpp | 2 +- src/KOKKOS/mliap_model_linear_kokkos.h | 2 +- src/KOKKOS/mliap_model_python_kokkos.cpp | 2 +- src/KOKKOS/mliap_model_python_kokkos.h | 2 +- src/KOKKOS/mliap_so3_kokkos.cpp | 2 +- src/KOKKOS/mliap_so3_kokkos.h | 2 +- src/KOKKOS/pair_mliap_kokkos.cpp | 2 +- src/KOKKOS/pair_mliap_kokkos.h | 2 +- src/compute_property_grid.cpp | 2 +- src/compute_property_grid.h | 2 +- src/dump_grid.cpp | 2 +- src/dump_grid.h | 2 +- src/dump_grid_vtk.cpp | 2 +- src/dump_grid_vtk.h | 2 +- src/fix_ave_grid.cpp | 2 +- src/fix_ave_grid.h | 2 +- src/grid2d.cpp | 2 +- src/grid2d.h | 2 +- src/grid3d.cpp | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/ASPHERE/pair_ylz.cpp b/src/ASPHERE/pair_ylz.cpp index a1b4ce703a..0d0c8b9ee0 100644 --- a/src/ASPHERE/pair_ylz.cpp +++ b/src/ASPHERE/pair_ylz.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/ASPHERE/pair_ylz.h b/src/ASPHERE/pair_ylz.h index af5a09cc24..117f9bae62 100644 --- a/src/ASPHERE/pair_ylz.h +++ b/src/ASPHERE/pair_ylz.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/amoeba_convolution_gpu.cpp b/src/GPU/amoeba_convolution_gpu.cpp index 908c9e409c..c9a809e3c3 100644 --- a/src/GPU/amoeba_convolution_gpu.cpp +++ b/src/GPU/amoeba_convolution_gpu.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/amoeba_convolution_gpu.h b/src/GPU/amoeba_convolution_gpu.h index 4286f2155f..418f756128 100644 --- a/src/GPU/amoeba_convolution_gpu.h +++ b/src/GPU/amoeba_convolution_gpu.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_amoeba_gpu.cpp b/src/GPU/pair_amoeba_gpu.cpp index 8b3cf2cfea..1621e1f5b6 100644 --- a/src/GPU/pair_amoeba_gpu.cpp +++ b/src/GPU/pair_amoeba_gpu.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_amoeba_gpu.h b/src/GPU/pair_amoeba_gpu.h index 75f0d26336..c90339585b 100644 --- a/src/GPU/pair_amoeba_gpu.h +++ b/src/GPU/pair_amoeba_gpu.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_hippo_gpu.cpp b/src/GPU/pair_hippo_gpu.cpp index 256b4088d8..59a95619d7 100644 --- a/src/GPU/pair_hippo_gpu.cpp +++ b/src/GPU/pair_hippo_gpu.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_hippo_gpu.h b/src/GPU/pair_hippo_gpu.h index 50f362bafc..5f36d6e71f 100644 --- a/src/GPU/pair_hippo_gpu.h +++ b/src/GPU/pair_hippo_gpu.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/grid3d_kokkos.cpp b/src/KOKKOS/grid3d_kokkos.cpp index 01aee810be..9a82e0157d 100644 --- a/src/KOKKOS/grid3d_kokkos.cpp +++ b/src/KOKKOS/grid3d_kokkos.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_data_kokkos.cpp b/src/KOKKOS/mliap_data_kokkos.cpp index a2a8743c66..d0da48a282 100644 --- a/src/KOKKOS/mliap_data_kokkos.cpp +++ b/src/KOKKOS/mliap_data_kokkos.cpp @@ -2,7 +2,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_data_kokkos.h b/src/KOKKOS/mliap_data_kokkos.h index f641085c6a..de05545f67 100644 --- a/src/KOKKOS/mliap_data_kokkos.h +++ b/src/KOKKOS/mliap_data_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_descriptor_kokkos.h b/src/KOKKOS/mliap_descriptor_kokkos.h index cb02a81648..075f0e9fed 100644 --- a/src/KOKKOS/mliap_descriptor_kokkos.h +++ b/src/KOKKOS/mliap_descriptor_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp b/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp index de6404b691..ff9e5d2aa6 100644 --- a/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp +++ b/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_descriptor_so3_kokkos.h b/src/KOKKOS/mliap_descriptor_so3_kokkos.h index 2d15924fe8..6676b60004 100644 --- a/src/KOKKOS/mliap_descriptor_so3_kokkos.h +++ b/src/KOKKOS/mliap_descriptor_so3_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_model_kokkos.h b/src/KOKKOS/mliap_model_kokkos.h index 792bad4e48..72077f5988 100644 --- a/src/KOKKOS/mliap_model_kokkos.h +++ b/src/KOKKOS/mliap_model_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_model_linear_kokkos.cpp b/src/KOKKOS/mliap_model_linear_kokkos.cpp index 14166ab3cd..b294dad294 100644 --- a/src/KOKKOS/mliap_model_linear_kokkos.cpp +++ b/src/KOKKOS/mliap_model_linear_kokkos.cpp @@ -2,7 +2,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_model_linear_kokkos.h b/src/KOKKOS/mliap_model_linear_kokkos.h index 829e3c4039..dde97aa87e 100644 --- a/src/KOKKOS/mliap_model_linear_kokkos.h +++ b/src/KOKKOS/mliap_model_linear_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_model_python_kokkos.cpp b/src/KOKKOS/mliap_model_python_kokkos.cpp index 6bfc58057c..7d5e0abe91 100644 --- a/src/KOKKOS/mliap_model_python_kokkos.cpp +++ b/src/KOKKOS/mliap_model_python_kokkos.cpp @@ -2,7 +2,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_model_python_kokkos.h b/src/KOKKOS/mliap_model_python_kokkos.h index a223cafd9d..4f56ecb0ab 100644 --- a/src/KOKKOS/mliap_model_python_kokkos.h +++ b/src/KOKKOS/mliap_model_python_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_so3_kokkos.cpp b/src/KOKKOS/mliap_so3_kokkos.cpp index bfdf4af0aa..1fb5ffb52e 100644 --- a/src/KOKKOS/mliap_so3_kokkos.cpp +++ b/src/KOKKOS/mliap_so3_kokkos.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/mliap_so3_kokkos.h b/src/KOKKOS/mliap_so3_kokkos.h index 164fb3b24d..2c8d663132 100644 --- a/src/KOKKOS/mliap_so3_kokkos.h +++ b/src/KOKKOS/mliap_so3_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/pair_mliap_kokkos.cpp b/src/KOKKOS/pair_mliap_kokkos.cpp index d19d81e314..a1e3228011 100644 --- a/src/KOKKOS/pair_mliap_kokkos.cpp +++ b/src/KOKKOS/pair_mliap_kokkos.cpp @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/KOKKOS/pair_mliap_kokkos.h b/src/KOKKOS/pair_mliap_kokkos.h index 1acac6bf24..55fde19c14 100644 --- a/src/KOKKOS/pair_mliap_kokkos.h +++ b/src/KOKKOS/pair_mliap_kokkos.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/compute_property_grid.cpp b/src/compute_property_grid.cpp index 2b8df955ef..99bdc0d3c4 100644 --- a/src/compute_property_grid.cpp +++ b/src/compute_property_grid.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/compute_property_grid.h b/src/compute_property_grid.h index 8a0ef63090..f27096042d 100644 --- a/src/compute_property_grid.h +++ b/src/compute_property_grid.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/dump_grid.cpp b/src/dump_grid.cpp index 3c10aa9083..8e3a2977cf 100644 --- a/src/dump_grid.cpp +++ b/src/dump_grid.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/dump_grid.h b/src/dump_grid.h index 019553264c..cd5eee0b9e 100644 --- a/src/dump_grid.h +++ b/src/dump_grid.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/dump_grid_vtk.cpp b/src/dump_grid_vtk.cpp index 8c74024485..eff3c55cf7 100644 --- a/src/dump_grid_vtk.cpp +++ b/src/dump_grid_vtk.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/dump_grid_vtk.h b/src/dump_grid_vtk.h index 4f4da3fd4e..31d49b04ff 100644 --- a/src/dump_grid_vtk.h +++ b/src/dump_grid_vtk.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/fix_ave_grid.cpp b/src/fix_ave_grid.cpp index 039c656fab..8b391a08b5 100644 --- a/src/fix_ave_grid.cpp +++ b/src/fix_ave_grid.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/fix_ave_grid.h b/src/fix_ave_grid.h index 326adb9f0b..39a38089e8 100644 --- a/src/fix_ave_grid.h +++ b/src/fix_ave_grid.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/grid2d.cpp b/src/grid2d.cpp index 013d4b398b..74fd105ec0 100644 --- a/src/grid2d.cpp +++ b/src/grid2d.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/grid2d.h b/src/grid2d.h index 6c1cca5f9d..43316baad8 100644 --- a/src/grid2d.h +++ b/src/grid2d.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/grid3d.cpp b/src/grid3d.cpp index 16c8d9cded..c6cff3f317 100644 --- a/src/grid3d.cpp +++ b/src/grid3d.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - LAMMPS Development team: developers@lammps.org + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains From cc9dee5ecdc0f3c56bacf7b2df87b624bddf7869 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 11:00:05 -0400 Subject: [PATCH 0136/1002] use references instead of copies when looping over list of selected fixes --- src/EXTRA-COMPUTE/compute_stress_cartesian.cpp | 2 +- src/GRANULAR/fix_damping_cundall.cpp | 2 +- src/INTEL/fix_nvt_sllod_intel.cpp | 2 +- src/KOKKOS/fix_nvt_sllod_kokkos.cpp | 2 +- src/OPENMP/fix_nvt_sllod_omp.cpp | 2 +- src/REPLICA/fix_alchemy.cpp | 2 +- src/fix_deform.cpp | 2 +- src/fix_nvt_sllod.cpp | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp b/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp index 0380acbb82..e1bc6bcd91 100644 --- a/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp @@ -136,7 +136,7 @@ ComputeStressCartesian::ComputeStressCartesian(LAMMPS *lmp, int narg, char **arg // check for variable box dimension int box_incompatible = 0; - for (auto ifix : modify->get_fix_list()) { + for (auto &ifix : modify->get_fix_list()) { if (((dir1 == 0) && (ifix->box_change & Fix::BOX_CHANGE_X)) || ((dir1 == 1) && (ifix->box_change & Fix::BOX_CHANGE_Y)) || ((dir1 == 2) && (ifix->box_change & Fix::BOX_CHANGE_Z))) diff --git a/src/GRANULAR/fix_damping_cundall.cpp b/src/GRANULAR/fix_damping_cundall.cpp index f5ef24c3cc..cf17e91050 100644 --- a/src/GRANULAR/fix_damping_cundall.cpp +++ b/src/GRANULAR/fix_damping_cundall.cpp @@ -120,7 +120,7 @@ void FixDampingCundall::init() } bool fflag = false; - for (auto ifix : modify->get_fix_list()) { + for (auto &ifix : modify->get_fix_list()) { if (fflag && (comm->me == 0) && (ifix->setmask() & POST_FORCE)) error->warning(FLERR, "Fix {} alters forces after fix damping/cundall", ifix->id); if (ifix == this) fflag = true; diff --git a/src/INTEL/fix_nvt_sllod_intel.cpp b/src/INTEL/fix_nvt_sllod_intel.cpp index eb04d65a83..404a3aff33 100644 --- a/src/INTEL/fix_nvt_sllod_intel.cpp +++ b/src/INTEL/fix_nvt_sllod_intel.cpp @@ -83,7 +83,7 @@ void FixNVTSllodIntel::init() auto deform = modify->get_fix_by_style("^deform"); if (deform.size() < 1) error->all(FLERR,"Using fix nvt/sllod/intel with no fix deform defined"); - for (auto ifix : deform) { + for (auto &ifix : deform) { auto f = dynamic_cast(ifix); if (f && (f->remapflag != Domain::V_REMAP)) error->all(FLERR,"Using fix nvt/sllod/intel with inconsistent fix deform remap option"); diff --git a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp index 69ffdcd684..bd65a6965e 100644 --- a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp +++ b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp @@ -91,7 +91,7 @@ void FixNVTSllodKokkos::init() if (deform.size() < 1) this->error->all(FLERR,"Using fix nvt/sllod/kk with no fix deform defined"); - for (auto ifix : deform) { + for (auto &ifix : deform) { auto f = dynamic_cast(ifix); if (f && (f->remapflag != Domain::V_REMAP)) this->error->all(FLERR,"Using fix ntv/sllod/kk with inconsistent fix deform remap option"); diff --git a/src/OPENMP/fix_nvt_sllod_omp.cpp b/src/OPENMP/fix_nvt_sllod_omp.cpp index 5e880da7a3..700b264b9f 100644 --- a/src/OPENMP/fix_nvt_sllod_omp.cpp +++ b/src/OPENMP/fix_nvt_sllod_omp.cpp @@ -90,7 +90,7 @@ void FixNVTSllodOMP::init() auto deform = modify->get_fix_by_style("^deform"); if (deform.size() < 1) error->all(FLERR,"Using fix nvt/sllod/omp with no fix deform defined"); - for (auto ifix : deform) { + for (auto &ifix : deform) { auto f = dynamic_cast(ifix); if (f && (f->remapflag != Domain::V_REMAP)) error->all(FLERR,"Using fix nvt/sllod/omp with inconsistent fix deform remap option"); diff --git a/src/REPLICA/fix_alchemy.cpp b/src/REPLICA/fix_alchemy.cpp index 4b29da5250..2fe4417161 100644 --- a/src/REPLICA/fix_alchemy.cpp +++ b/src/REPLICA/fix_alchemy.cpp @@ -196,7 +196,7 @@ void FixAlchemy::init() synchronize_box(domain, samerank); sync_box = 0; - for (auto ifix : modify->get_fix_list()) + for (const auto &ifix : modify->get_fix_list()) if (ifix->box_change) sync_box = 1; } diff --git a/src/fix_deform.cpp b/src/fix_deform.cpp index 1243fef79a..02aaae5940 100644 --- a/src/fix_deform.cpp +++ b/src/fix_deform.cpp @@ -609,7 +609,7 @@ void FixDeform::init() rfix.clear(); - for (auto ifix : modify->get_fix_list()) + for (auto &ifix : modify->get_fix_list()) if (ifix->rigid_flag) rfix.push_back(ifix); } diff --git a/src/fix_nvt_sllod.cpp b/src/fix_nvt_sllod.cpp index 7e3e8788fe..306d56388b 100644 --- a/src/fix_nvt_sllod.cpp +++ b/src/fix_nvt_sllod.cpp @@ -85,7 +85,7 @@ void FixNVTSllod::init() auto deform = modify->get_fix_by_style("^deform"); if (deform.size() < 1) error->all(FLERR,"Using fix {} with no fix deform defined", style); - for (auto ifix : deform) { + for (auto &ifix : deform) { auto f = dynamic_cast(ifix); if (f && (f->remapflag != Domain::V_REMAP)) error->all(FLERR,"Using fix {} with inconsistent fix deform remap option", style); From 3f5898a241a9d9622e932a371be31391dd81705e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 14:28:23 -0400 Subject: [PATCH 0137/1002] flag development branch --- src/version.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/version.h b/src/version.h index 15d6002fd4..572a274053 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1,2 @@ #define LAMMPS_VERSION "2 Aug 2023" +#define LAMMPS_UPDATE "Development" From cefb38a0006dd5d5e21b925b93521904634febb0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 14:30:21 -0400 Subject: [PATCH 0138/1002] update package list for Windows with MSVC --- cmake/presets/windows.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/presets/windows.cmake b/cmake/presets/windows.cmake index aa9a4656af..9655134e7f 100644 --- a/cmake/presets/windows.cmake +++ b/cmake/presets/windows.cmake @@ -32,6 +32,7 @@ set(WIN_PACKAGES INTERLAYER KSPACE LEPTON + MACHDYN MANIFOLD MANYBODY MC @@ -45,6 +46,7 @@ set(WIN_PACKAGES MOLECULE MOLFILE OPENMP + OPT ORIENT PERI PHONON From fbf0bad3b5970be328e5b72362cba1ddace05136 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 14:30:32 -0400 Subject: [PATCH 0139/1002] correct sort order --- cmake/presets/most.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/presets/most.cmake b/cmake/presets/most.cmake index 00c74c81b8..2356e24764 100644 --- a/cmake/presets/most.cmake +++ b/cmake/presets/most.cmake @@ -24,8 +24,8 @@ set(ALL_PACKAGES DPD-REACT DPD-SMOOTH DRUDE - ELECTRODE EFF + ELECTRODE EXTRA-COMPUTE EXTRA-DUMP EXTRA-FIX From 0446bdfc00ef910762654212cb755fc11cc0aedd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 21:56:04 -0400 Subject: [PATCH 0140/1002] work around C++17 issue in AWPMD package --- lib/awpmd/ivutils/include/wavepacket.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/awpmd/ivutils/include/wavepacket.h b/lib/awpmd/ivutils/include/wavepacket.h index 5a787f0809..24e849c880 100644 --- a/lib/awpmd/ivutils/include/wavepacket.h +++ b/lib/awpmd/ivutils/include/wavepacket.h @@ -23,7 +23,7 @@ class WavePacket; ///\en Template for v=der operation in \ref Wavepacket::int2phys_der() template -struct eq_second : public binary_function { +struct eq_second { Type operator()(const Type& /* _Left */, const Type& _Right) const{ return _Right; } @@ -31,7 +31,7 @@ struct eq_second : public binary_function { ///\en Template for v=-der operation in \ref Wavepacket::int2phys_der() template -struct eq_minus_second : public binary_function { +struct eq_minus_second { Type operator()(const Type& /* _Left */, const Type& _Right) const{ return -_Right; } From 7498739f980d0391ca8ac135ad8571803282063b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 21:56:35 -0400 Subject: [PATCH 0141/1002] work around build issue with cross-compiler --- tools/phonon/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/phonon/CMakeLists.txt b/tools/phonon/CMakeLists.txt index f3c3b8386c..00f3ee55d1 100644 --- a/tools/phonon/CMakeLists.txt +++ b/tools/phonon/CMakeLists.txt @@ -1,7 +1,7 @@ # Support Linux from Ubuntu 20.04LTS onward, CentOS 7.x (with EPEL), # macOS, MSVC 2019 (=Version 16) -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) # set timestamp of downloaded files to that of archive if(POLICY CMP0135) @@ -100,7 +100,7 @@ if(USE_SPGLIB) -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} UPDATE_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.spglib ${CMAKE_CURRENT_BINARY_DIR}/spglib_build_ext/src/spglib_build/CMakeLists.txt - INSTALL_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/spglib_build_ext/src/spglib_build-build --target install + INSTALL_COMMAND ${CMAKE_COMMAND} --install ${CMAKE_CURRENT_BINARY_DIR}/spglib_build_ext/src/spglib_build-build --prefix ${CMAKE_CURRENT_BINARY_DIR}/spglib_build_ext BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/spglib_build_ext/lib/${CMAKE_STATIC_LIBRARY_PREFIX}symspg${CMAKE_STATIC_LIBRARY_SUFFIX}" ) From 4e08e6cb4ca487639bd1a38caae181bfe57e0291 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 21:57:33 -0400 Subject: [PATCH 0142/1002] add support to build LAMMPS GUI zip package with cross compiler --- cmake/packaging/build_windows_cross_zip.sh | 31 +++++++++++++++------- tools/lammps-gui/CMakeLists.txt | 9 +++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/cmake/packaging/build_windows_cross_zip.sh b/cmake/packaging/build_windows_cross_zip.sh index 5659b84f74..ca2516249e 100755 --- a/cmake/packaging/build_windows_cross_zip.sh +++ b/cmake/packaging/build_windows_cross_zip.sh @@ -1,26 +1,37 @@ #!/bin/bash -vx APP_NAME=lammps-gui -DESTDIR=${PWD}/../LAMMPS_GUI +DESTDIR=${PWD}/LAMMPS_GUI +SYSROOT="$1" echo "Delete old files, if they exist" -rm -rvf ${DESTDIR} LAMMPS-Win10-amd64.zip +rm -rvf ${DESTDIR}/LAMMPS_GUI ${DESTDIR}/LAMMPS-Win10-amd64.zip echo "Create staging area for deployment and populate" DESTDIR=${DESTDIR} cmake --install . --prefix "/" -echo "Add required dependencies for Qt" -for dll in Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll +echo "Copying required DLL files" +for dll in $(objdump -p *.exe *.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) do \ - cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/${dll} ${DESTDIR}/bin/ + doskip=0 + for skip in ADVAPI32 CFGMGR32 KERNEL32 msvcrt ole32 PSAPI WSOCK32 liblammps + do \ + test ${dll} = ${skip}.dll && doskip=1 + done + test ${doskip} -eq 1 && continue + test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin done -for dir in styles platforms imageformats + +echo "Copy required Qt plugins" +mkdir -p ${DESTDIR}/qt5plugins +for plugin in imageformats platforms styles do \ - mkdir -p ${DESTDIR}/${dir} - cp -r /usr/x86_64-w64-mingw32/sys-root/mingw/lib/qt5/plugins/${dir}/*.dll ${DESTDIR}/${dir} + cp -r ${SYSROOT}/lib/qt5/plugins/${plugin} ${DESTDIR}/qt5plugins/ done -pushd .. +cat > ${DESTDIR}/bin/qt.conf < TYPE BIN) + add_custom_target(zip + COMMAND sh -vx ${LAMMPS_DIR}/cmake/packaging/build_windows_cross_zip.sh ${CMAKE_INSTALL_PREFIX} + DEPENDS lmp lammps-gui + COMMENT "Create zip file with windows binaries" + BYPRODUCT LAMMPS-Win10-amd64.zip + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") install(TARGETS lammps-gui DESTINATION ${CMAKE_INSTALL_BINDIR}) install(CODE [[ From a10aab440fc097bd926d2fae04c23d1894466823 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 22:09:36 -0400 Subject: [PATCH 0143/1002] report LAMMPS GUI build choices in CMake config summary --- cmake/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index dfa5277715..18ad8255ef 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1022,6 +1022,14 @@ endif() if(BUILD_LAMMPS_SHELL) message(STATUS "<<< Building LAMMPS Shell >>>") endif() +if(BUILD_LAMMPS_GUI) + message(STATUS "<<< Building LAMMPS GUI >>>") + if(LAMMPS_GUI_USE_PLUGIN) + message(STATUS "Loading LAMMPS library as plugin at run time") + else() + message(STATUS "Linking LAMMPS library at compile time") + endif() +endif() if(ENABLE_TESTING) message(STATUS "<<< Building Unit Tests >>>") if(ENABLE_COVERAGE) From cf6866d5e6d9362dc38a279fe196306c015113cf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Aug 2023 22:42:50 -0400 Subject: [PATCH 0144/1002] improve message in about LAMMPS dialog --- tools/lammps-gui/lammpsgui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 3902e89abb..58dff4f49c 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -539,13 +539,13 @@ void LammpsGui::about() { std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; if (lammps.has_plugin()) { - version += " - LAMMPS linked dynamically"; + version += " - LAMMPS library loaded as plugin"; if (!plugin_path.empty()) { version += " from file "; version += plugin_path; } } else { - version += " - LAMMPS linked statically"; + version += " - LAMMPS library linked to executable"; } std::string info = "LAMMPS is currently running. LAMMPS config info not available."; From 2ea1c78376239406ec79412a8c10a314abfba52b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 02:24:52 -0400 Subject: [PATCH 0145/1002] cosmetic --- cmake/packaging/build_windows_cross_zip.sh | 2 +- src/fix_efield.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/packaging/build_windows_cross_zip.sh b/cmake/packaging/build_windows_cross_zip.sh index ca2516249e..f557351fbe 100755 --- a/cmake/packaging/build_windows_cross_zip.sh +++ b/cmake/packaging/build_windows_cross_zip.sh @@ -21,7 +21,7 @@ do \ test ${doskip} -eq 1 && continue test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin done - + echo "Copy required Qt plugins" mkdir -p ${DESTDIR}/qt5plugins for plugin in imageformats platforms styles diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp index d01a498d39..9132904b80 100644 --- a/src/fix_efield.cpp +++ b/src/fix_efield.cpp @@ -89,7 +89,7 @@ FixEfield::FixEfield(LAMMPS *lmp, int narg, char **arg) : if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, std::string("fix ") + style + " region", error); region = domain->get_region_by_id(arg[iarg + 1]); - if (!region) error->all(FLERR, "Region {} for fix efield does not exist", arg[iarg + 1]); + if (!region) error->all(FLERR, "Region {} for fix {} does not exist", arg[iarg + 1], style); idregion = utils::strdup(arg[iarg + 1]); iarg += 2; } else if (strcmp(arg[iarg], "energy") == 0) { From 8eb7f56491003aec136e2152608f0f34c054e93d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 04:17:01 -0400 Subject: [PATCH 0146/1002] be more thorough and complete about including all required dll files --- cmake/packaging/build_windows_cross_zip.sh | 35 +++++++++++++++++++--- tools/lammps-gui/CMakeLists.txt | 2 ++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/cmake/packaging/build_windows_cross_zip.sh b/cmake/packaging/build_windows_cross_zip.sh index f557351fbe..d02b9cf761 100755 --- a/cmake/packaging/build_windows_cross_zip.sh +++ b/cmake/packaging/build_windows_cross_zip.sh @@ -1,4 +1,4 @@ -#!/bin/bash -vx +#!/bin/bash APP_NAME=lammps-gui DESTDIR=${PWD}/LAMMPS_GUI @@ -10,11 +10,15 @@ rm -rvf ${DESTDIR}/LAMMPS_GUI ${DESTDIR}/LAMMPS-Win10-amd64.zip echo "Create staging area for deployment and populate" DESTDIR=${DESTDIR} cmake --install . --prefix "/" +# no static libs needed +rm -rvf ${DESTDIR}/lib +# but the LAMMPS lib + echo "Copying required DLL files" for dll in $(objdump -p *.exe *.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) do \ doskip=0 - for skip in ADVAPI32 CFGMGR32 KERNEL32 msvcrt ole32 PSAPI WSOCK32 liblammps + for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32 do \ test ${dll} = ${skip}.dll && doskip=1 done @@ -29,9 +33,32 @@ do \ cp -r ${SYSROOT}/lib/qt5/plugins/${plugin} ${DESTDIR}/qt5plugins/ done +echo "Check dependencies of DLL files" +for dll in $(objdump -p ${DESTDIR}/bin/*.dll ${DESTDIR}/qt5plugins/*/*.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) +do \ + doskip=0 + for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32 + do \ + test ${dll} = ${skip}.dll && doskip=1 + done + test ${doskip} -eq 1 && continue + test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin +done + +for dll in $(objdump -p ${DESTDIR}/bin/*.dll ${DESTDIR}/qt5plugins/*/*.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) +do \ + doskip=0 + for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32 + do \ + test ${dll} = ${skip}.dll && doskip=1 + done + test ${doskip} -eq 1 && continue + test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin +done + cat > ${DESTDIR}/bin/qt.conf < TYPE BIN) install(FILES $ TYPE BIN) + install(FILES $ TYPE BIN) add_custom_target(zip COMMAND sh -vx ${LAMMPS_DIR}/cmake/packaging/build_windows_cross_zip.sh ${CMAKE_INSTALL_PREFIX} DEPENDS lmp lammps-gui From e958cc0ef1c160ee884f58fb7beaa59ddd4cf669 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 08:01:57 -0400 Subject: [PATCH 0147/1002] silence warning about a setting that was added to silence warnings --- cmake/CMakeLists.txt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 6fe43ee5a7..2ba2991c63 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -13,11 +13,6 @@ endif() if(POLICY CMP0075) cmake_policy(SET CMP0075 NEW) endif() -# set policy to silence warnings about missing executable permissions in -# pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW -if(POLICY CMP0109) - cmake_policy(SET CMP0109 OLD) -endif() # set policy to silence warnings about timestamps of downloaded files. review occasionally if it may be set to NEW if(POLICY CMP0135) cmake_policy(SET CMP0135 OLD) From 1a5b9475931863f4d7b7ad88da80892b37f34304 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 08:02:06 -0400 Subject: [PATCH 0148/1002] flag if we are cross-compiling --- cmake/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 2ba2991c63..5d3322a1ae 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -877,6 +877,9 @@ message(STATUS "<<< Build configuration >>> Build type: ${LAMMPS_BUILD_TYPE} Install path: ${CMAKE_INSTALL_PREFIX} Generator: ${CMAKE_GENERATOR} using ${CMAKE_MAKE_PROGRAM}") +if(CMAKE_CROSSCOMPILING) + message(STATUS "Cross compiling on ${CMAKE_HOST_SYSTEM}") +endif() ############################################################################### # Print package summary ############################################################################### From bc6fcdc61a550b645b25f12138a3bb4022153c9a Mon Sep 17 00:00:00 2001 From: "W. Michael Brown" Date: Fri, 4 Aug 2023 08:49:27 -0700 Subject: [PATCH 0149/1002] Applying triclinic neighbor fixes to intel package. --- src/INTEL/fix_intel.cpp | 2 + src/INTEL/npair_halffull_newton_intel.cpp | 66 ++++++++++---- .../npair_halffull_newton_trim_intel.cpp | 87 ++++++++++++++----- src/INTEL/npair_intel.cpp | 40 +++++++-- 4 files changed, 144 insertions(+), 51 deletions(-) diff --git a/src/INTEL/fix_intel.cpp b/src/INTEL/fix_intel.cpp index 4c46608677..8396904ffd 100644 --- a/src/INTEL/fix_intel.cpp +++ b/src/INTEL/fix_intel.cpp @@ -20,6 +20,7 @@ #include "fix_intel.h" #include "comm.h" +#include "domain.h" #include "error.h" #include "force.h" #include "neighbor.h" @@ -470,6 +471,7 @@ void FixIntel::pair_init_check(const bool cdmessage) int need_tag = 0; if (atom->molecular != Atom::ATOMIC || three_body_neighbor()) need_tag = 1; + if (domain->triclinic && force->newton_pair) need_tag = 1; // Clear buffers used for pair style char kmode[80]; diff --git a/src/INTEL/npair_halffull_newton_intel.cpp b/src/INTEL/npair_halffull_newton_intel.cpp index cd05d5f97a..adcf2527ab 100644 --- a/src/INTEL/npair_halffull_newton_intel.cpp +++ b/src/INTEL/npair_halffull_newton_intel.cpp @@ -20,7 +20,9 @@ #include "atom.h" #include "comm.h" +#include "domain.h" #include "error.h" +#include "force.h" #include "modify.h" #include "my_page.h" #include "neigh_list.h" @@ -56,6 +58,9 @@ void NPairHalffullNewtonIntel::build_t(NeighList *list, const int * _noalias const numneigh_full = list->listfull->numneigh; const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; + #if defined(_OPENMP) #pragma omp parallel #endif @@ -82,25 +87,50 @@ void NPairHalffullNewtonIntel::build_t(NeighList *list, const int * _noalias const jlist = firstneigh_full[i]; const int jnum = numneigh_full[i]; - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - int addme = 1; - if (j < nlocal) { - if (i > j) addme = 0; - } else { - if (x[j].z < ztmp) addme = 0; - if (x[j].z == ztmp) { - if (x[j].y < ytmp) addme = 0; - if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; + if (!triclinic) { + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + int addme = 1; + if (j < nlocal) { + if (i > j) addme = 0; + } else { + if (x[j].z < ztmp) addme = 0; + if (x[j].z == ztmp) { + if (x[j].y < ytmp) addme = 0; + if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; + } } + if (addme) + neighptr[n++] = joriginal; + } + } else { + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + int addme = 1; + if (j < nlocal) { + if (i > j) addme = 0; + } else { + if (fabs(x[j].z-ztmp) > delta) { + if (x[j].z < ztmp) addme = 0; + } else if (fabs(x[j].y-ytmp) > delta) { + if (x[j].y < ytmp) addme = 0; + } else { + if (x[j].x < xtmp) addme = 0; + } + } + if (addme) + neighptr[n++] = joriginal; } - if (addme) - neighptr[n++] = joriginal; } ilist[ii] = i; @@ -203,7 +233,7 @@ void NPairHalffullNewtonIntel::build_t3(NeighList *list, int *numhalf) void NPairHalffullNewtonIntel::build(NeighList *list) { - if (_fix->three_body_neighbor() == 0) { + if (_fix->three_body_neighbor() == 0 || domain->triclinic) { if (_fix->precision() == FixIntel::PREC_MODE_MIXED) build_t(list, _fix->get_mixed_buffers()); else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) diff --git a/src/INTEL/npair_halffull_newton_trim_intel.cpp b/src/INTEL/npair_halffull_newton_trim_intel.cpp index e38375f750..34b9b20e9c 100644 --- a/src/INTEL/npair_halffull_newton_trim_intel.cpp +++ b/src/INTEL/npair_halffull_newton_trim_intel.cpp @@ -20,7 +20,9 @@ #include "atom.h" #include "comm.h" +#include "domain.h" #include "error.h" +#include "force.h" #include "modify.h" #include "my_page.h" #include "neigh_list.h" @@ -57,6 +59,8 @@ void NPairHalffullNewtonTrimIntel::build_t(NeighList *list, const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT const flt_t cutsq_custom = cutoff_custom * cutoff_custom; + const double delta = 0.01 * force->angstrom; + const int triclinic = domain->triclinic; #if defined(_OPENMP) #pragma omp parallel @@ -84,35 +88,70 @@ void NPairHalffullNewtonTrimIntel::build_t(NeighList *list, const int * _noalias const jlist = firstneigh_full[i]; const int jnum = numneigh_full[i]; - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - int addme = 1; - if (j < nlocal) { - if (i > j) addme = 0; - } else { - if (x[j].z < ztmp) addme = 0; - if (x[j].z == ztmp) { - if (x[j].y < ytmp) addme = 0; - if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; + if (!triclinic) { + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + int addme = 1; + if (j < nlocal) { + if (i > j) addme = 0; + } else { + if (x[j].z < ztmp) addme = 0; + if (x[j].z == ztmp) { + if (x[j].y < ytmp) addme = 0; + if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; + } } + + // trim to shorter cutoff + + const flt_t delx = xtmp - x[j].x; + const flt_t dely = ytmp - x[j].y; + const flt_t delz = ztmp - x[j].z; + const flt_t rsq = delx * delx + dely * dely + delz * delz; + + if (rsq > cutsq_custom) addme = 0; + + if (addme) + neighptr[n++] = joriginal; } + } else { + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + int addme = 1; + if (j < nlocal) { + if (i > j) addme = 0; + } else { + if (fabs(x[j].z-ztmp) > delta) { + if (x[j].z < ztmp) addme = 0; + } else if (fabs(x[j].y-ytmp) > delta) { + if (x[j].y < ytmp) addme = 0; + } else { + if (x[j].x < xtmp) addme = 0; + } + } - // trim to shorter cutoff + // trim to shorter cutoff - const flt_t delx = xtmp - x[j].x; - const flt_t dely = ytmp - x[j].y; - const flt_t delz = ztmp - x[j].z; - const flt_t rsq = delx * delx + dely * dely + delz * delz; + const flt_t delx = xtmp - x[j].x; + const flt_t dely = ytmp - x[j].y; + const flt_t delz = ztmp - x[j].z; + const flt_t rsq = delx * delx + dely * dely + delz * delz; - if (rsq > cutsq_custom) addme = 0; + if (rsq > cutsq_custom) addme = 0; - if (addme) - neighptr[n++] = joriginal; + if (addme) + neighptr[n++] = joriginal; + } } ilist[ii] = i; @@ -235,7 +274,7 @@ void NPairHalffullNewtonTrimIntel::build_t3(NeighList *list, int *numhalf, void NPairHalffullNewtonTrimIntel::build(NeighList *list) { - if (_fix->three_body_neighbor() == 0) { + if (_fix->three_body_neighbor() == 0 || domain->triclinic) { if (_fix->precision() == FixIntel::PREC_MODE_MIXED) build_t(list, _fix->get_mixed_buffers()); else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) diff --git a/src/INTEL/npair_intel.cpp b/src/INTEL/npair_intel.cpp index 600109d7ae..dcfb66e05f 100644 --- a/src/INTEL/npair_intel.cpp +++ b/src/INTEL/npair_intel.cpp @@ -204,6 +204,8 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, } const int special_bound = sb; + const double delta = 0.01 * force->angstrom; + #ifdef _LMP_INTEL_OFFLOAD const int * _noalias const binhead = this->binhead; const int * _noalias const bins = this->bins; @@ -229,7 +231,7 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, in(ncache_stride,maxnbors,nthreads,maxspecial,nstencil,e_nall,offload) \ in(offload_end,separate_buffers,astart,aend,nlocal,molecular) \ in(ntypes,xperiodic,yperiodic,zperiodic,xprd_half,yprd_half,zprd_half) \ - in(pack_width,special_bound) \ + in(pack_width,special_bound,delta) \ out(overflow:length(5) alloc_if(0) free_if(0)) \ out(timer_compute:length(1) alloc_if(0) free_if(0)) \ signal(tag) @@ -331,7 +333,7 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, const flt_t ztmp = x[i].z; const int itype = x[i].w; tagint itag; - if (THREE) itag = tag[i]; + if (THREE || (TRI && !FULL)) itag = tag[i]; const int ioffset = ntypes * itype; const int ibin = atombin[i]; @@ -365,7 +367,7 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, ty[u] = x[j].y; tz[u] = x[j].z; tjtype[u] = x[j].w; - if (THREE) ttag[u] = tag[j]; + if (THREE || (TRI && !FULL)) ttag[u] = tag[j]; } if (FULL == 0 && TRI != 1) { @@ -486,12 +488,32 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, // Triclinic if (TRI) { - if (tz[u] < ztmp) addme = 0; - if (tz[u] == ztmp) { - if (ty[u] < ytmp) addme = 0; - if (ty[u] == ytmp) { - if (tx[u] < xtmp) addme = 0; - if (tx[u] == xtmp && j <= i) addme = 0; + if (FULL) { + if (tz[u] < ztmp) addme = 0; + if (tz[u] == ztmp) { + if (ty[u] < ytmp) addme = 0; + if (ty[u] == ytmp) { + if (tx[u] < xtmp) addme = 0; + if (tx[u] == xtmp && j <= i) addme = 0; + } + } + } else { + if (j <= i) addme = 0; + if (j >= nlocal) { + const tagint jtag = ttag[u]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) addme = 0; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) addme = 0; + } else { + if (fabs(tz[u]-ztmp) > delta) { + if (tz[u] < ztmp) addme = 0; + } else if (fabs(ty[u]-ytmp) > delta) { + if (ty[u] < ytmp) addme = 0; + } else { + if (tx[u] < xtmp) addme = 0; + } + } } } } From a6767c85b01e6afd0ef71736ffc1d9aa14dd4ea2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 12:11:59 -0400 Subject: [PATCH 0150/1002] apply clang-format --- src/fix_update_special_bonds.cpp | 2 +- src/force.cpp | 10 +++++----- src/pair_buck_coul_cut.cpp | 6 +++--- src/pair_coul_cut.cpp | 4 ++-- src/pair_lj_cut_coul_cut.cpp | 4 ++-- src/read_data.cpp | 2 +- src/reset_atoms_id.cpp | 3 ++- src/thermo.cpp | 21 +++++++++++++-------- src/update.cpp | 4 ++-- 9 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/fix_update_special_bonds.cpp b/src/fix_update_special_bonds.cpp index dd12265e5d..159b2a1170 100644 --- a/src/fix_update_special_bonds.cpp +++ b/src/fix_update_special_bonds.cpp @@ -258,6 +258,6 @@ void FixUpdateSpecialBonds::write_restart(FILE *fp) pre_exchange(); if (comm->me == 0) { int size = 0; - fwrite(&size,sizeof(int),1,fp); + fwrite(&size, sizeof(int), 1, fp); } } diff --git a/src/force.cpp b/src/force.cpp index 347b3087cf..a135be8d69 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -346,7 +346,7 @@ Bond *Force::new_bond(const std::string &style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + "/" + lmp->non_pair_suffix(); if (bond_map->find(estyle) != bond_map->end()) { BondCreator &bond_creator = (*bond_map)[estyle]; @@ -414,7 +414,7 @@ Angle *Force::new_angle(const std::string &style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + "/" + lmp->non_pair_suffix(); if (angle_map->find(estyle) != angle_map->end()) { AngleCreator &angle_creator = (*angle_map)[estyle]; @@ -482,7 +482,7 @@ Dihedral *Force::new_dihedral(const std::string &style, int trysuffix, int &sfla { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + "/" + lmp->non_pair_suffix(); if (dihedral_map->find(estyle) != dihedral_map->end()) { DihedralCreator &dihedral_creator = (*dihedral_map)[estyle]; @@ -550,7 +550,7 @@ Improper *Force::new_improper(const std::string &style, int trysuffix, int &sfla { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + "/" + lmp->non_pair_suffix(); if (improper_map->find(estyle) != improper_map->end()) { ImproperCreator &improper_creator = (*improper_map)[estyle]; @@ -618,7 +618,7 @@ KSpace *Force::new_kspace(const std::string &style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + "/" + lmp->non_pair_suffix(); if (kspace_map->find(estyle) != kspace_map->end()) { KSpaceCreator &kspace_creator = (*kspace_map)[estyle]; diff --git a/src/pair_buck_coul_cut.cpp b/src/pair_buck_coul_cut.cpp index 369b77474f..933493eab6 100644 --- a/src/pair_buck_coul_cut.cpp +++ b/src/pair_buck_coul_cut.cpp @@ -477,8 +477,8 @@ double PairBuckCoulCut::single(int i, int j, int itype, int jtype, double rsq, d /* ---------------------------------------------------------------------- */ void PairBuckCoulCut::born_matrix(int i, int j, int itype, int jtype, double rsq, - double factor_coul, double factor_lj, double &dupair, - double &du2pair) + double factor_coul, double factor_lj, double &dupair, + double &du2pair) { double rinv, r2inv, r3inv, r6inv, r7inv, r8inv, r, rexp; double du_lj, du2_lj, du_coul, du2_coul; @@ -487,7 +487,7 @@ void PairBuckCoulCut::born_matrix(int i, int j, int itype, int jtype, double rsq double qqrd2e = force->qqrd2e; r = sqrt(rsq); - rexp = exp(-r*rhoinv[itype][jtype]); + rexp = exp(-r * rhoinv[itype][jtype]); r2inv = 1.0 / rsq; rinv = sqrt(r2inv); diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp index f0a749baa8..806d7a1066 100644 --- a/src/pair_coul_cut.cpp +++ b/src/pair_coul_cut.cpp @@ -331,8 +331,8 @@ double PairCoulCut::single(int i, int j, int /*itype*/, int /*jtype*/, double rs /* ---------------------------------------------------------------------- */ void PairCoulCut::born_matrix(int i, int j, int /*itype*/, int /*jtype*/, double rsq, - double factor_coul, double /*factor_lj*/, double &dupair, - double &du2pair) + double factor_coul, double /*factor_lj*/, double &dupair, + double &du2pair) { double rinv, r2inv, r3inv; double du_coul, du2_coul; diff --git a/src/pair_lj_cut_coul_cut.cpp b/src/pair_lj_cut_coul_cut.cpp index e62e08ea4b..8e4e98a1ba 100644 --- a/src/pair_lj_cut_coul_cut.cpp +++ b/src/pair_lj_cut_coul_cut.cpp @@ -462,8 +462,8 @@ double PairLJCutCoulCut::single(int i, int j, int itype, int jtype, double rsq, /* ---------------------------------------------------------------------- */ void PairLJCutCoulCut::born_matrix(int i, int j, int itype, int jtype, double rsq, - double factor_coul, double factor_lj, double &dupair, - double &du2pair) + double factor_coul, double factor_lj, double &dupair, + double &du2pair) { double rinv, r2inv, r3inv, r6inv; double du_lj, du2_lj, du_coul, du2_coul; diff --git a/src/read_data.cpp b/src/read_data.cpp index e3087ae215..4b4602f1fc 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -2021,7 +2021,7 @@ void ReadData::pairIJcoeffs() if (eof) error->all(FLERR, "Unexpected end of data file"); if (tlabelflag && !lmap->is_complete(Atom::ATOM)) - error->all(FLERR,"Label map is incomplete: all types must be assigned a unique type label"); + error->all(FLERR, "Label map is incomplete: all types must be assigned a unique type label"); char *original = buf; for (i = 0; i < ntypes; i++) diff --git a/src/reset_atoms_id.cpp b/src/reset_atoms_id.cpp index 9e8ba3630d..a6382e6aee 100644 --- a/src/reset_atoms_id.cpp +++ b/src/reset_atoms_id.cpp @@ -43,7 +43,8 @@ static int compare_coords(const int, const int, void *); /* ---------------------------------------------------------------------- */ -ResetAtomsID::ResetAtomsID(LAMMPS *lmp) : Command(lmp) { +ResetAtomsID::ResetAtomsID(LAMMPS *lmp) : Command(lmp) +{ binlo = binhi = -1; } diff --git a/src/thermo.cpp b/src/thermo.cpp index 88ceb27f87..9f21146588 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -691,11 +691,12 @@ void Thermo::modify_params(int narg, char **arg) utils::bounds(FLERR, arg[iarg + 1], 1, nfield_initial, nlo, nhi, error); int icol = -1; for (int i = nlo - 1; i < nhi; i++) { - if (i < 0) icol = nfield_initial + i + 1; // doesn't happen currently - else icol = i; + if (i < 0) + icol = nfield_initial + i + 1; // doesn't happen currently + else + icol = i; if (icol < 0 || (icol >= nfield_initial)) - error->all(FLERR, "Invalid thermo_modify format argument: {}", - arg[iarg + 1]); + error->all(FLERR, "Invalid thermo_modify format argument: {}", arg[iarg + 1]); format_column_user[icol] = arg[iarg + 2]; } } else { @@ -1135,7 +1136,8 @@ void Thermo::check_temp(const std::string &keyword) error->all(FLERR, "Thermo keyword {} in variable requires thermo to use/init temperature", keyword); if (!temperature->is_initialized()) - error->all(FLERR,"Thermo keyword {} cannot be invoked before initialization by a run",keyword); + error->all(FLERR, "Thermo keyword {} cannot be invoked before initialization by a run", + keyword); if (!(temperature->invoked_flag & Compute::INVOKED_SCALAR)) { temperature->compute_scalar(); temperature->invoked_flag |= Compute::INVOKED_SCALAR; @@ -1154,7 +1156,8 @@ void Thermo::check_pe(const std::string &keyword) error->all(FLERR, "Thermo keyword {} in variable requires thermo to use/init potential energy", keyword); if (!pe->is_initialized()) - error->all(FLERR,"Thermo keyword {} cannot be invoked before initialization by a run",keyword); + error->all(FLERR, "Thermo keyword {} cannot be invoked before initialization by a run", + keyword); if (!(pe->invoked_flag & Compute::INVOKED_SCALAR)) { pe->compute_scalar(); pe->invoked_flag |= Compute::INVOKED_SCALAR; @@ -1170,7 +1173,8 @@ void Thermo::check_press_scalar(const std::string &keyword) if (!pressure) error->all(FLERR, "Thermo keyword {} in variable requires thermo to use/init press", keyword); if (!pressure->is_initialized()) - error->all(FLERR,"Thermo keyword {} cannot be invoked before initialization by a run",keyword); + error->all(FLERR, "Thermo keyword {} cannot be invoked before initialization by a run", + keyword); if (!(pressure->invoked_flag & Compute::INVOKED_SCALAR)) { pressure->compute_scalar(); pressure->invoked_flag |= Compute::INVOKED_SCALAR; @@ -1186,7 +1190,8 @@ void Thermo::check_press_vector(const std::string &keyword) if (!pressure) error->all(FLERR, "Thermo keyword {} in variable requires thermo to use/init press", keyword); if (!pressure->is_initialized()) - error->all(FLERR,"Thermo keyword {} cannot be invoked before initialization by a run",keyword); + error->all(FLERR, "Thermo keyword {} cannot be invoked before initialization by a run", + keyword); if (!(pressure->invoked_flag & Compute::INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= Compute::INVOKED_VECTOR; diff --git a/src/update.cpp b/src/update.cpp index e6b97e5731..1074d8dcf6 100644 --- a/src/update.cpp +++ b/src/update.cpp @@ -362,7 +362,7 @@ void Update::new_integrate(char *style, int narg, char **arg, int trysuffix, int { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + std::string("/") + lmp->non_pair_suffix(); if (integrate_map->find(estyle) != integrate_map->end()) { IntegrateCreator &integrate_creator = (*integrate_map)[estyle]; @@ -428,7 +428,7 @@ void Update::new_minimize(char *style, int /* narg */, char ** /* arg */, int tr { if (trysuffix && lmp->suffix_enable) { if (lmp->non_pair_suffix()) { - sflag = 1 + 2*lmp->pair_only_flag; + sflag = 1 + 2 * lmp->pair_only_flag; std::string estyle = style + std::string("/") + lmp->non_pair_suffix(); if (minimize_map->find(estyle) != minimize_map->end()) { MinimizeCreator &minimize_creator = (*minimize_map)[estyle]; From cf5cd9f977ee529058c7bea565bbe242ffff6c3f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 13:21:59 -0400 Subject: [PATCH 0151/1002] update docs --- doc/src/fix_vector.rst | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/src/fix_vector.rst b/doc/src/fix_vector.rst index a310f9f868..2021f650e4 100644 --- a/doc/src/fix_vector.rst +++ b/doc/src/fix_vector.rst @@ -50,9 +50,9 @@ vector to the given *length* value. Once the vector is filled, the oldest entries will be discarded when new entries are added. One way to to use this command is to accumulate a vector that is -time-integrated using the :doc:`variable trap() ` function. -For example the velocity auto-correlation function (VACF) can be -time-integrated, to yield a diffusion coefficient, as follows: +numerically integrated using the :doc:`variable trap() ` +function. For example, the velocity auto-correlation function (VACF) +can be integrated, to yield a diffusion coefficient, as follows: .. code-block:: LAMMPS @@ -174,7 +174,10 @@ Related commands :doc:`compute `, :doc:`variable ` -Default -""""""" +Defaults +"""""""" -none +The default value of *nmax* is deduced from the number of steps +in a run (or multiple runs when using the *start* and *stop* +keywords of the :doc:`run command `) divided by the choice +of *Nevery* plus 1. From 5d3839db9f01fe8ab9fb834234ec0ec2765f6e67 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 13:27:01 -0400 Subject: [PATCH 0152/1002] clean up all created files --- unittest/formats/test_file_operations.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index f1a6ce42f5..70781509a0 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -611,6 +611,10 @@ TEST_F(FileOperationsTest, read_data_fix) EXPECT_EQ(lmp->atom->tag[GETIDX(8)], 8); EXPECT_EQ(lmp->atom->tag[GETIDX(9)], 9); EXPECT_EQ(lmp->atom->tag[GETIDX(10)], 10); + + // clean up + delete_file("test_mol_id_merge.data"); + delete_file("test_mol_id.data"); } int main(int argc, char **argv) From 4c68e3f5f379c5d93d67db6237477ab5162b6074 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Fri, 4 Aug 2023 13:29:22 -0600 Subject: [PATCH 0153/1002] Small tweaks --- src/.gitignore | 2 ++ src/EXTRA-COMPUTE/compute_local_comp_atom.cpp | 4 +--- src/KOKKOS/Install.sh | 2 ++ src/KOKKOS/compute_local_comp_atom_kokkos.cpp | 8 +------- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/.gitignore b/src/.gitignore index 6e2a8b92c9..115291c39a 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -580,6 +580,8 @@ /compute_ke_eff.h /compute_ke_rigid.cpp /compute_ke_rigid.h +/compute_local_comp_atom.cpp +/compute_local_comp_atom.h /compute_meso_e_atom.cpp /compute_meso_e_atom.h /compute_meso_rho_atom.cpp diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp index 02c1444fbf..02ab91d969 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing authors: Megan McCarthy (SNL), Stan Moore (SNL) + Contributing author: Megan McCarthy (SNL) ------------------------------------------------------------------------- */ #include "compute_local_comp_atom.h" @@ -70,7 +70,6 @@ ComputeLocalCompAtom::~ComputeLocalCompAtom() if (copymode) return; memory->destroy(result); - } /* ---------------------------------------------------------------------- */ @@ -108,7 +107,6 @@ void ComputeLocalCompAtom::init() auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); if (cutflag) req->set_cutoff(cutoff); - } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index ede766cbf8..a842a169c0 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -96,6 +96,8 @@ action compute_coord_atom_kokkos.cpp action compute_coord_atom_kokkos.h action compute_erotate_sphere_kokkos.cpp action compute_erotate_sphere_kokkos.h +action compute_local_comp_atom_kokkos.cpp compute_local_comp_atom.cpp +action compute_local_comp_atom_kokkos.h compute_local_comp_atom.h action compute_orientorder_atom_kokkos.cpp action compute_orientorder_atom_kokkos.h action compute_temp_deform_kokkos.cpp diff --git a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp index 9360cbd82a..356efea2f1 100644 --- a/src/KOKKOS/compute_local_comp_atom_kokkos.cpp +++ b/src/KOKKOS/compute_local_comp_atom_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing authors: Megan McCarthy (SNL), Stan Moore (SNL) + Contributing author: Megan McCarthy (SNL) ------------------------------------------------------------------------- */ #include "compute_local_comp_atom_kokkos.h" @@ -42,13 +42,11 @@ template ComputeLocalCompAtomKokkos::ComputeLocalCompAtomKokkos(LAMMPS *lmp, int narg, char **arg) : ComputeLocalCompAtom(lmp, narg, arg) { - kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; - } /* ---------------------------------------------------------------------- */ @@ -59,7 +57,6 @@ ComputeLocalCompAtomKokkos::~ComputeLocalCompAtomKokkos() if (copymode) return; memoryKK->destroy_kokkos(k_result,result); - } /* ---------------------------------------------------------------------- */ @@ -82,7 +79,6 @@ void ComputeLocalCompAtomKokkos::init() template void ComputeLocalCompAtomKokkos::compute_peratom() { - invoked_peratom = update->ntimestep; // grow result array if necessary @@ -124,14 +120,12 @@ void ComputeLocalCompAtomKokkos::compute_peratom() k_result.modify(); k_result.sync_host(); - } template KOKKOS_INLINE_FUNCTION void ComputeLocalCompAtomKokkos::operator()(TagComputeLocalCompAtom, const int &ii) const { - const int i = d_ilist[ii]; if (mask[i] & groupbit) { From 95bc42242405e80ff43bfbc404fb6b26ad4d93c4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 16:38:18 -0400 Subject: [PATCH 0154/1002] fix duplicate implicit reference --- doc/src/Speed_kokkos.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index c5682773b3..1cae518f96 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -18,7 +18,7 @@ package was developed primarily by Christian Trott (Sandia) and Stan Moore (Sandia) with contributions of various styles by others, including Sikandar Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez (Sandia). For more information on developing using Kokkos abstractions -see the Kokkos `Wiki `_. +see the `Kokkos Wiki `_. Kokkos currently provides support for 4 modes of execution (per MPI task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP @@ -32,8 +32,9 @@ produce an executable compatible with a specific hardware. Kokkos requires using a compiler that supports the c++17 standard. For some compilers, it may be necessary to add a flag to enable c++17 support. For example, the GNU compiler uses the -std=c++17 flag. For a list of - compilers that have been tested with the Kokkos library, see the Kokkos - `Wiki `_. + compilers that have been tested with the Kokkos library, see the + `requirements document of the Kokkos Wiki + `_. .. admonition:: NVIDIA CUDA support :class: note From 41e71f2e41192dc08128ffeb8f705dfb6ce521d0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 16:44:10 -0400 Subject: [PATCH 0155/1002] update fix vector docs --- doc/src/fix_vector.rst | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/doc/src/fix_vector.rst b/doc/src/fix_vector.rst index 2021f650e4..40da988b1d 100644 --- a/doc/src/fix_vector.rst +++ b/doc/src/fix_vector.rst @@ -8,12 +8,11 @@ Syntax .. code-block:: LAMMPS - fix ID group-ID vector Nevery [nmax ] value1 value2 ... + fix ID group-ID vector Nevery value1 value2 ... keyword args ... * ID, group-ID are documented in :doc:`fix ` command * vector = style name of this fix command * Nevery = use input values every this many timesteps -* nmax = set maximal length of vector to (optional) * one or more input values can be listed * value = c_ID, c_ID[N], f_ID, f_ID[N], v_name @@ -26,6 +25,13 @@ Syntax v_name = value calculated by an equal-style variable with name v_name[I] = Ith component of vector-style variable with name +* zero or more keyword/args pairs may be appended +* keyword = *nmax* + + .. parsed-literal:: + + *nmax* length = set maximal length of vector to + Examples """""""" @@ -33,16 +39,16 @@ Examples fix 1 all vector 100 c_myTemp fix 1 all vector 5 c_myTemp v_integral - fix 1 all vector 50 nmax 200 c_myTemp + fix 1 all vector 50 c_myTemp nmax 200 Description """"""""""" -Use one or more global values as inputs every few timesteps, and -simply store them. For a single specified value, the values are +Use one or more global values as inputs every few timesteps, and simply +store them as a sequence. For a single specified value, the values are stored as a global vector of growing length. For multiple specified -values, they are stored as rows in a global array, whose number of -rows is growing. The resulting vector or array can be used by other +values, they are stored as rows in a global array, whose number of rows +is growing. The resulting vector or array can be used by other :doc:`output commands `. The optional *nmax* keyword can be used to restrict the length of the @@ -83,6 +89,15 @@ The *Nevery* argument specifies on what timesteps the input values will be used in order to be stored. Only timesteps that are a multiple of *Nevery*, including timestep 0, will contribute values. +.. note:: + :class: warning + + If *Nevery* is a small number and the simulation runs for many + steps, the accumulated vector or array can become very large and + thus consume a lot of memory. The implementation limit is about + 2 billion entries. Using the *nmax* keyword mentioned above can + avoid that by limiting the size of the vector. + Note that if you perform multiple runs, using the "pre no" option of the :doc:`run ` command to avoid initialization on subsequent runs, then you need to use the *stop* keyword with the first :doc:`run ` From 7adb2d7bcf4a8b6958cd68d62c2918e9d576effc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 17:13:53 -0400 Subject: [PATCH 0156/1002] fix syntax issues --- doc/src/fix_vector.rst | 2 +- src/fix_vector.cpp | 3 ++- src/fix_vector.h | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/doc/src/fix_vector.rst b/doc/src/fix_vector.rst index 40da988b1d..12a2419638 100644 --- a/doc/src/fix_vector.rst +++ b/doc/src/fix_vector.rst @@ -193,6 +193,6 @@ Defaults """""""" The default value of *nmax* is deduced from the number of steps -in a run (or multiple runs when using the *start* and *stop* +in a run (or multiple runs when using the *start* and *stop* keywords of the :doc:`run command `) divided by the choice of *Nevery* plus 1. diff --git a/src/fix_vector.cpp b/src/fix_vector.cpp index fde24b716c..4983239de9 100644 --- a/src/fix_vector.cpp +++ b/src/fix_vector.cpp @@ -57,9 +57,10 @@ FixVector::FixVector(LAMMPS *lmp, int narg, char **arg) : val.id = argi.get_name(); val.val.c = nullptr; - if ((val.which == ArgInfo::UNKNOWN) || (val.which == ArgInfo::NONE) || (argi.get_dim() > 1)) + if ((val.which == ArgInfo::UNKNOWN) || (argi.get_dim() > 1)) error->all(FLERR, "Invalid fix vector argument: {}", arg[iarg]); + if (val.which == ArgInfo::NONE) break; values.push_back(val); ++iarg; } diff --git a/src/fix_vector.h b/src/fix_vector.h index 7f5394702c..275ccbb4c1 100644 --- a/src/fix_vector.h +++ b/src/fix_vector.h @@ -50,10 +50,10 @@ class FixVector : public Fix { bigint nextstep, initialstep; - int ncount; // # of values currently in growing vector or array - int ncountmax; // max # of values vector/array can hold - int nmaxval; // maximum allowed number of values - int nindex; // start index of data, may wrap around + bigint ncount; // # of values processed and stored into growing vector or array + bigint ncountmax; // max # of values vector/array can hold + bigint nmaxval; // maximum allowed number of values + bigint nindex; // start index of data, may wrap around double *vector; double **array; From 5e9658aff6ff76fe55886dac158cd0801dd6cdb0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 21:06:47 -0400 Subject: [PATCH 0157/1002] fix whitespace and minor documentation integration issues --- doc/src/Commands_compute.rst | 2 +- doc/src/compute_local_comp_atom.rst | 25 +++++++++++-------- src/EXTRA-COMPUTE/compute_local_comp_atom.cpp | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 73f7373f8c..19e56fcc83 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -91,7 +91,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`ke/atom/eff ` * :doc:`ke/eff ` * :doc:`ke/rigid ` - * :doc:`local/comp/atom ` + * :doc:`local/comp/atom (k) ` * :doc:`mliap ` * :doc:`momentum ` * :doc:`msd ` diff --git a/doc/src/compute_local_comp_atom.rst b/doc/src/compute_local_comp_atom.rst index ad9331895e..2d0dd8c6f2 100644 --- a/doc/src/compute_local_comp_atom.rst +++ b/doc/src/compute_local_comp_atom.rst @@ -1,7 +1,10 @@ .. index:: compute local/comp/atom +.. index:: compute local/comp/atom/kk compute local/comp/atom command -====================================== +=============================== + +Accelerator Variants: *local/comp/atom/kk* Syntax """""" @@ -33,7 +36,7 @@ Examples Description """"""""""" -.. versionadded:: 24May2023 +.. versionadded:: TBD Define a computation that calculates a local composition vector for each atom. For a central atom with :math:`M` neighbors within the neighbor cutoff sphere, @@ -43,14 +46,14 @@ the sum of all compositions equals one. .. note:: - This compute uses the number of atom types, not chemical species, assigned in - :doc:`pair_coeff ` command. If an interatomic potential has two - species (i.e., Cu and Ni) assigned to four different atom types in - :doc:`pair_coeff ` (i.e., 'Cu Cu Ni Ni'), the compute will - output four fractional values. In those cases, the user may desire an extra - calculation step to consolidate per-type fractions into per-species fractions. - This calculation can be conducted within LAMMPS using another compute such as - :doc:`compute reduce `, an atom-style :doc:`variable`, or as a + This compute uses the number of atom types, not chemical species, assigned in + :doc:`pair_coeff ` command. If an interatomic potential has two + species (i.e., Cu and Ni) assigned to four different atom types in + :doc:`pair_coeff ` (i.e., 'Cu Cu Ni Ni'), the compute will + output four fractional values. In those cases, the user may desire an extra + calculation step to consolidate per-type fractions into per-species fractions. + This calculation can be conducted within LAMMPS using another compute such as + :doc:`compute reduce `, an atom-style :doc:`variable`, or as a post-processing step. ---------- @@ -91,7 +94,7 @@ Output info This compute calculates a per-atom array with :math:`1 + N` columns, where :math:`N` is the number of atom types. The first column is a count of the number of atoms used to calculate composition (including the central atom), and each subsequent -column indicates the fraction of that atom type within the cutoff sphere. +column indicates the fraction of that atom type within the cutoff sphere. These values can be accessed by any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` diff --git a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp index 02ab91d969..77c4993996 100644 --- a/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_local_comp_atom.cpp @@ -198,7 +198,7 @@ void ComputeLocalCompAtom::compute_peratom() double lfac = 1.0 / count; for (int n = 1; n < size_peratom_cols; n++) result[i][n+1] *= lfac; - + } } } From db0c892d24becfacae63cb677507021cf405b15d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 21:37:12 -0400 Subject: [PATCH 0158/1002] correct parsing of arguments with nmax appended at the end --- src/fix_vector.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/fix_vector.cpp b/src/fix_vector.cpp index 4983239de9..e18b53f615 100644 --- a/src/fix_vector.cpp +++ b/src/fix_vector.cpp @@ -38,16 +38,11 @@ FixVector::FixVector(LAMMPS *lmp, int narg, char **arg) : nmaxval = MAXSMALLINT; nindex = 0; - int iarg = 4; - if (strcmp(arg[iarg], "nmax") == 0) { - nmaxval = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (nmaxval < 1) error->all(FLERR, "Invalid nmax value"); - iarg += 2; - } - // parse values + int iarg = 4; values.clear(); + while (iarg < narg) { ArgInfo argi(arg[iarg]); @@ -61,10 +56,23 @@ FixVector::FixVector(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR, "Invalid fix vector argument: {}", arg[iarg]); if (val.which == ArgInfo::NONE) break; + values.push_back(val); ++iarg; } + while (iarg < narg) { + + if (strcmp(arg[iarg], "nmax") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix vector nmax", error); + nmaxval = utils::bnumeric(FLERR, arg[iarg + 1], false, lmp); + if (nmaxval < 1) error->all(FLERR, "Invalid nmax value"); + iarg += 2; + } else { + error->all(FLERR, "Unknown fix vector keyword: {}", arg[iarg]); + } + } + // setup and error check // for fix inputs, check that fix frequency is acceptable // this fix produces either a global vector or array From 7d359403ac18e88b84d27608ea8f3ec67002f71d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 21:37:20 -0400 Subject: [PATCH 0159/1002] clarify docs --- doc/src/fix_vector.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/fix_vector.rst b/doc/src/fix_vector.rst index 12a2419638..ee925b39b0 100644 --- a/doc/src/fix_vector.rst +++ b/doc/src/fix_vector.rst @@ -52,8 +52,8 @@ is growing. The resulting vector or array can be used by other :doc:`output commands `. The optional *nmax* keyword can be used to restrict the length of the -vector to the given *length* value. Once the vector is filled, the -oldest entries will be discarded when new entries are added. +vector to the given *length* value. Once the restricted vector is +filled, the oldest entry will be discarded when a entry is added. One way to to use this command is to accumulate a vector that is numerically integrated using the :doc:`variable trap() ` From 003a207038b419fa6fa1654be45010d6b8884298 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 22:24:48 -0400 Subject: [PATCH 0160/1002] possible workaround for unit test failure taken from: https://github.com/open-mpi/ompi/issues/9656 --- unittest/formats/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 5b5dd056c9..9934c87ab1 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -40,6 +40,8 @@ set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${ add_executable(test_file_operations test_file_operations.cpp) target_link_libraries(test_file_operations PRIVATE lammps GTest::GMock) add_test(NAME FileOperations COMMAND test_file_operations) +# try to mitigate possible OpenMPI bug +set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "OMPI_MCA_sharedfp=\"^sm\"") add_executable(test_dump_atom test_dump_atom.cpp) target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock) From dbab5b69312a2d789f37973ce21873cc2e2757e4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 22:24:48 -0400 Subject: [PATCH 0161/1002] possible workaround for unit test failure taken from: https://github.com/open-mpi/ompi/issues/9656 --- unittest/formats/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 93ea2f3b32..58c797b6e6 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -41,6 +41,8 @@ set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${ add_executable(test_file_operations test_file_operations.cpp) target_link_libraries(test_file_operations PRIVATE lammps GTest::GMock) add_test(NAME FileOperations COMMAND test_file_operations) +# try to mitigate possible OpenMPI bug +set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "OMPI_MCA_sharedfp=\"^sm\"") add_executable(test_dump_atom test_dump_atom.cpp) target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock) From dc8f17e8e6d75e795e93fd2b2d85e93324f6ec12 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 6 Aug 2023 00:04:46 -0500 Subject: [PATCH 0162/1002] Fixed bugs with missing x array, removed the () operator overloads because they require access to domain within the kernels --- src/KOKKOS/fix_efield_kokkos.cpp | 63 +++++++++++++++++++++++++++----- src/KOKKOS/fix_efield_kokkos.h | 4 +- 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp index d4ef6dc3f2..ecf4418cf6 100644 --- a/src/KOKKOS/fix_efield_kokkos.cpp +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -77,8 +77,9 @@ void FixEfieldKokkos::init() template void FixEfieldKokkos::post_force(int /*vflag*/) { - atomKK->sync(execution_space, F_MASK | Q_MASK | IMAGE_MASK | MASK_MASK); + atomKK->sync(execution_space, X_MASK | F_MASK | Q_MASK | IMAGE_MASK | MASK_MASK); + x = atomKK->k_f.view(); f = atomKK->k_f.view(); q = atomKK->k_q.view(); image = atomKK->k_image.view(); @@ -132,10 +133,8 @@ void FixEfieldKokkos::post_force(int /*vflag*/) auto l_image = image; auto l_groupbit = groupbit; - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal), - LAMMPS_LAMBDA(int i, double_4& fsum_kk) { + Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(const int& i, double_4& fsum_kk) { if (l_mask[i] & l_groupbit) { - Few x_i; x_i[0] = l_x(i,0); x_i[1] = l_x(i,1); @@ -148,14 +147,12 @@ void FixEfieldKokkos::post_force(int /*vflag*/) l_f(i,0) += fx; l_f(i,1) += fy; l_f(i,2) += fz; - fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; fsum_kk.d1 += fx; fsum_kk.d2 += fy; fsum_kk.d3 += fz; } - }, fsum_kk); - + },fsum_kk); } copymode = 0; @@ -186,7 +183,53 @@ void FixEfieldKokkos::post_force(int /*vflag*/) } copymode = 1; - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); + //Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); + + { + // local variables for lambda capture + auto prd = Few(domain->prd); + auto h = Few(domain->h); + auto triclinic = domain->triclinic; + auto l_ex = ex; + auto l_ey = ey; + auto l_ez = ez; + auto l_d_efield = d_efield; + + auto l_x = x; + auto l_q = q; + auto l_f = f; + auto l_mask = mask; + auto l_image = image; + auto l_groupbit = groupbit; + auto l_xstyle = xstyle; + auto l_ystyle = ystyle; + auto l_zstyle = zstyle; + + Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(const int& i, double_4& fsum_kk) { + if (l_mask[i] & l_groupbit) { + Few x_i; + x_i[0] = l_x(i,0); + x_i[1] = l_x(i,1); + x_i[2] = l_x(i,2); + auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,l_image(i)); + auto qtmp = l_q(i); + auto fx = qtmp * l_ex; + auto fy = qtmp * l_ey; + auto fz = qtmp * l_ez; + if (l_xstyle == ATOM) l_f(i,0) += l_d_efield(i,0); + else if (l_xstyle) l_f(i,0) += fx; + if (l_ystyle == ATOM) l_f(i,1) += l_d_efield(i,1); + else if (l_ystyle) l_f(i,1) += fy; + if (l_zstyle == ATOM) l_f(i,2) += l_d_efield(i,2); + else if (l_zstyle) l_f(i,2) += fz; + fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; + fsum_kk.d1 += fx; + fsum_kk.d2 += fy; + fsum_kk.d3 += fz; + } + },fsum_kk); + } + copymode = 0; } @@ -197,7 +240,7 @@ void FixEfieldKokkos::post_force(int /*vflag*/) fsum[2] = fsum_kk.d2; fsum[3] = fsum_kk.d3; } - +/* template KOKKOS_INLINE_FUNCTION void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, double_4& fsum_kk) const { @@ -255,7 +298,7 @@ void FixEfieldKokkos::operator()(TagFixEfieldNonConstant, const int fsum_kk.d3 += fz; } } - +*/ namespace LAMMPS_NS { template class FixEfieldKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/fix_efield_kokkos.h b/src/KOKKOS/fix_efield_kokkos.h index d159473d1d..2739d03ffc 100644 --- a/src/KOKKOS/fix_efield_kokkos.h +++ b/src/KOKKOS/fix_efield_kokkos.h @@ -60,13 +60,13 @@ class FixEfieldKokkos : public FixEfield { ~FixEfieldKokkos() override; void init() override; void post_force(int) override; - +/* KOKKOS_INLINE_FUNCTION void operator()(TagFixEfieldConstant, const int&, double_4&) const; KOKKOS_INLINE_FUNCTION void operator()(TagFixEfieldNonConstant, const int&, double_4&) const; - +*/ private: DAT::tdual_ffloat_2d k_efield; typename AT::t_ffloat_2d_randomread d_efield; From 2987f38257e93ec8530c76c70e74b6455ee1cd7f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 22:24:48 -0400 Subject: [PATCH 0163/1002] possible workaround for unit test failure taken from: https://github.com/open-mpi/ompi/issues/9656 --- unittest/formats/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 93ea2f3b32..58c797b6e6 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -41,6 +41,8 @@ set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${ add_executable(test_file_operations test_file_operations.cpp) target_link_libraries(test_file_operations PRIVATE lammps GTest::GMock) add_test(NAME FileOperations COMMAND test_file_operations) +# try to mitigate possible OpenMPI bug +set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "OMPI_MCA_sharedfp=\"^sm\"") add_executable(test_dump_atom test_dump_atom.cpp) target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock) From a1bfbf4872c964b0d4d0aa3ce12bccbd415265b0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 18:33:03 -0400 Subject: [PATCH 0164/1002] disable MPI-IO based restart writing (for now) --- unittest/formats/test_file_operations.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index 70781509a0..c2116b408b 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -324,7 +324,7 @@ TEST_F(FileOperationsTest, write_restart) command("write_restart multi-%.restart"); command("write_restart multi2-%.restart fileper 2"); command("write_restart multi3-%.restart nfile 1"); - if (Info::has_package("MPIIO")) command("write_restart test.restart.mpiio"); + // if (Info::has_package("MPIIO")) command("write_restart test.restart.mpiio"); END_HIDE_OUTPUT(); ASSERT_FILE_EXISTS("noinit.restart"); From 5a6b2ec59c8cc249e74c49bf025f4a5360a370cf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 20:48:03 -0400 Subject: [PATCH 0165/1002] disable *all* MPI-IO related testing --- unittest/formats/test_file_operations.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index c2116b408b..c05a71a494 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -336,18 +336,19 @@ TEST_F(FileOperationsTest, write_restart) ASSERT_FILE_EXISTS("multi2-0.restart"); ASSERT_FILE_EXISTS("multi3-base.restart"); ASSERT_FILE_EXISTS("multi3-0.restart"); +#if 0 if (Info::has_package("MPIIO")) { ASSERT_FILE_EXISTS("test.restart.mpiio"); } if (!Info::has_package("MPIIO")) { - TEST_FAILURE(".*ERROR: Writing to MPI-IO filename when MPIIO package is not inst.*", - command("write_restart test.restart.mpiio");); + TEST_FAILURE(".*ERROR: Writing to MPI-IO filename when MPIIO package is not inst.*", + command("write_restart test.restart.mpiio");); } else { - TEST_FAILURE(".*ERROR: Restart file MPI-IO output not allowed with % in filename.*", + TEST_FAILURE(".*ERROR: Restart file MPI-IO output not allowed with % in filename.*", command("write_restart test.restart-%.mpiio");); } - +#endif TEST_FAILURE(".*ERROR: Illegal write_restart command.*", command("write_restart");); TEST_FAILURE(".*ERROR: Unknown write_restart keyword: xxxx.*", command("write_restart test.restart xxxx");); @@ -401,7 +402,7 @@ TEST_F(FileOperationsTest, write_restart) delete_file("multi3-base.restart"); delete_file("multi3-0.restart"); delete_file("triclinic.restart"); - if (Info::has_package("MPIIO")) delete_file("test.restart.mpiio"); + //if (Info::has_package("MPIIO")) delete_file("test.restart.mpiio"); } TEST_F(FileOperationsTest, write_data) From 4a8275446439aaaa0e859fbbe7fc53de9ac6c4b4 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 7 Aug 2023 00:30:32 -0500 Subject: [PATCH 0166/1002] Fixed an obvious bug with x --- src/KOKKOS/fix_efield_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp index ecf4418cf6..1f29d1f809 100644 --- a/src/KOKKOS/fix_efield_kokkos.cpp +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -79,7 +79,7 @@ void FixEfieldKokkos::post_force(int /*vflag*/) { atomKK->sync(execution_space, X_MASK | F_MASK | Q_MASK | IMAGE_MASK | MASK_MASK); - x = atomKK->k_f.view(); + x = atomKK->k_x.view(); f = atomKK->k_f.view(); q = atomKK->k_q.view(); image = atomKK->k_image.view(); From 7c17ea632c6fda6c367002b44c028a778624aee7 Mon Sep 17 00:00:00 2001 From: Germain Clavier Date: Mon, 7 Aug 2023 12:09:44 +0200 Subject: [PATCH 0167/1002] Reverted changes to tau as a time constant. To be checked. --- src/fix_press_langevin.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/fix_press_langevin.cpp b/src/fix_press_langevin.cpp index ec8f034181..2fad9e300f 100644 --- a/src/fix_press_langevin.cpp +++ b/src/fix_press_langevin.cpp @@ -75,6 +75,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : // Pressure and pistons period tau_p p_start[i] = p_stop[i] = p_period[i] = 0.0; p_flag[i] = 0; + // p_mass[i] = 1e-3; p_fric[i] = 0.; @@ -88,6 +89,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : // Random value for each piston fran[i] = 0.0; f_piston[i] = 0.0; + dilation[i] = 0.0; } // process keywords @@ -364,9 +366,9 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) : // with alpha = Q/p_period // similar to fix_langevin formalism for (int i = 0; i < 6; i++) { - p_fric[i] = p_mass/p_period[i]; - gjfa[i] = (1.0 - p_fric[i] * update->dt / 2.0 / p_mass) / (1.0 + p_fric[i] * update->dt / 2.0 / p_mass); - gjfb[i] = 1./(1.0 + p_fric[i] * update->dt / 2.0 / p_mass); + // p_mass[i] = p_period[i]; // force->boltz*t_start*(atom->natoms + 1)*p_period[i]*p_period[i]; + gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); + gjfb[i] = 1./(1.0 + update->dt / 2.0 / p_period[i]); } nrigid = 0; @@ -469,6 +471,8 @@ void FixPressLangevin::initial_integrate(int /* vflag */) // Compute new random term on pistons dynamics if (delta != 0.0) delta /= update->endstep - update->beginstep; t_target = t_start + delta * (t_stop-t_start); + // for (int i = 0; i < 6; i++) + // p_mass[i] = force->boltz*t_target*(atom->natoms + 1)*p_period[i]*p_period[i]; couple_beta(t_target); dt = update->dt; @@ -600,7 +604,7 @@ void FixPressLangevin::couple_beta(double t_target) int me = comm->me; for (int i=0; i<6; i++) - gamma[i] = sqrt(2.0*force->boltz*update->dt*p_fric[i]*t_target); + gamma[i] = sqrt(2.0*p_mass*force->boltz*update->dt/p_period[i]*t_target); fran[0] = fran[1] = fran[2] = 0.0; fran[3] = fran[4] = fran[5] = 0.0; @@ -806,7 +810,7 @@ int FixPressLangevin::modify_param(int narg, char **arg) void FixPressLangevin::reset_dt() { for (int i=0; i<6; i++) { - gjfa[i] = (1.0 - p_fric[i] * update->dt / 2.0 / p_mass) / (1.0 + p_fric[i] * update->dt / 2.0 / p_mass); - gjfb[i] = sqrt(1.0 + p_fric[i] * update->dt / 2.0 / p_mass); + gjfa[i] = (1.0 - update->dt / 2.0 / p_period[i]) / (1.0 + update->dt / 2.0 / p_period[i]); + gjfb[i] = sqrt(1.0 + update->dt / 2.0 / p_period[i]); } } From 4ca32f0ceccedc2bee1c657038a72e0802c58605 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 7 Aug 2023 15:24:16 -0500 Subject: [PATCH 0168/1002] Added comments to the use of operators overloaded when accessing unwrap on the GPU (serial works fine) --- src/KOKKOS/fix_efield_kokkos.cpp | 14 +++++++++----- src/KOKKOS/fix_efield_kokkos.h | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp index 1f29d1f809..bbf106f515 100644 --- a/src/KOKKOS/fix_efield_kokkos.cpp +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -115,6 +115,8 @@ void FixEfieldKokkos::post_force(int /*vflag*/) if (varflag == CONSTANT) { copymode = 1; + + // It would be more concise to use the operators below, but there is still an issue with unwrap (TODO below) //Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); { @@ -183,8 +185,8 @@ void FixEfieldKokkos::post_force(int /*vflag*/) } copymode = 1; + // It would be more concise to use the operators below, but there is still an issue with unwrap (TODO below) //Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,fsum_kk); - { // local variables for lambda capture auto prd = Few(domain->prd); @@ -240,12 +242,13 @@ void FixEfieldKokkos::post_force(int /*vflag*/) fsum[2] = fsum_kk.d2; fsum[3] = fsum_kk.d3; } -/* + template KOKKOS_INLINE_FUNCTION void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, double_4& fsum_kk) const { if (mask[i] & groupbit) { if (region && !d_match[i]) return; + auto prd = Few(domain->prd); auto h = Few(domain->h); auto triclinic = domain->triclinic; @@ -254,14 +257,14 @@ void FixEfieldKokkos::operator()(TagFixEfieldConstant, const int &i, x_i[1] = x(i,1); x_i[2] = x(i,2); auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i)); - const F_FLOAT qtmp = q[i]; + const F_FLOAT qtmp = q(i); const F_FLOAT fx = qtmp * ex; const F_FLOAT fy = qtmp * ey; const F_FLOAT fz = qtmp * ez; f(i,0) += fx; f(i,1) += fy; f(i,2) += fz; - + // TODO: access to unwrap below crashes fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; fsum_kk.d1 += fx; fsum_kk.d2 += fy; @@ -292,13 +295,14 @@ void FixEfieldKokkos::operator()(TagFixEfieldNonConstant, const int else if (ystyle) f(i,1) += fy; if (zstyle == ATOM) f(i,2) += d_efield(i,2); else if (zstyle) f(i,2) += fz; + // TODO: access to unwrap below crashes fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2]; fsum_kk.d1 += fx; fsum_kk.d2 += fy; fsum_kk.d3 += fz; } } -*/ + namespace LAMMPS_NS { template class FixEfieldKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/fix_efield_kokkos.h b/src/KOKKOS/fix_efield_kokkos.h index 2739d03ffc..d159473d1d 100644 --- a/src/KOKKOS/fix_efield_kokkos.h +++ b/src/KOKKOS/fix_efield_kokkos.h @@ -60,13 +60,13 @@ class FixEfieldKokkos : public FixEfield { ~FixEfieldKokkos() override; void init() override; void post_force(int) override; -/* + KOKKOS_INLINE_FUNCTION void operator()(TagFixEfieldConstant, const int&, double_4&) const; KOKKOS_INLINE_FUNCTION void operator()(TagFixEfieldNonConstant, const int&, double_4&) const; -*/ + private: DAT::tdual_ffloat_2d k_efield; typename AT::t_ffloat_2d_randomread d_efield; From 9b0fe3eedadeaf837c42a8a8435b0dd0fc530c67 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 16:38:51 -0400 Subject: [PATCH 0169/1002] improve LAMMPS GUI docs, add info about using the Linux-2-Windows cross-compiler --- doc/src/Tools.rst | 108 ++++++++++++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 42 deletions(-) diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index b20b722bfd..b300a376fd 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -752,63 +752,66 @@ Prerequisites and portability LAMMPS GUI is programmed in C++ based on the C++11 standard and using the `Qt GUI framework `_. Currently, Qt version 5.12 or later is required; Qt 5.15LTS is -recommended Qt 6.x not (yet) supported. Furthermore, CMake version 3.16 -is required and LAMMPS must be configured with ``-D -LAMMPS_EXCETIONS=on`` and ``-D BUILD_MPI=off``. It has been successfully +recommended; Qt 6.x not (yet) supported. Furthermore, CMake version 3.16 +is required and LAMMPS must be configured with ``-D BUILD_MPI=off`` and +``-D BUILD_LAMMPS_GUI=on``. The LAMMPS GUI has been successfully compiled and tested on: - Ubuntu Linux 20.04LTS x86_64 using GCC 9, Qt version 5.12 - Fedora Linux 38 x86\_64 using GCC 13 and Clang 16, Qt version 5.15LTS - Apple macOS 12 (Monterey) and macOS 13 (Ventura) with Xcode on arm64 and x86\_64, Qt version 5.15LTS - Windows 10 and 11 x86_64 with Visual Studio 2022 and Visual C++ 14.36, Qt version 5.15LTS +- Windows 10 and 11 x86_64 with MinGW / GCC 10.0 cross-compiler on Fedora 37, Qt version 5.15LTS Pre-compiled executables ^^^^^^^^^^^^^^^^^^^^^^^^ Pre-compiled LAMMPS executables including the GUI are currently -available from https://download.lammps.org/static. You can unpack the -archive (or mount the macOS disk image) and run the GUI directly in -place. The folder may also be moved around and added to the ``PATH`` -environment variable so the executables will be found automatically. The -LAMMPS GUI executable is called ``lammps-gui`` and takes no arguments or -will interpret the first argument as filename to load. +available from https://download.lammps.org/static or +https://github.com/lammps/lammps/releases. You can unpack the archive +(or mount the macOS disk image) and run the GUI directly in place. The +folder may also be moved around and added to the ``PATH`` environment +variable so the executables will be found automatically. The LAMMPS GUI +executable is called ``lammps-gui`` and either takes no arguments or +attempts to load the first argument as LAMMPS input file. Compilation ^^^^^^^^^^^ The source for the LAMMPS GUI is included with the LAMMPS source code -distribution in the folder `tools/lammps-gui` and thus it can be can be -built as part of a regular LAMMPS compilation. -:doc:`Using CMake ` is required. -To enable its compilation the CMake variable ``-D BUILD_LAMMPS_GUI=on`` -must be set when creating the CMake configuration. All other settings -(compiler, flags, compile type) for LAMMPS GUI are then inherited from -the regular LAMMPS build. If the Qt library is packaged for Linux -distributions, then its location is typically auto-detected since the -required CMake configuration files are stored in a location where CMake -can find them without additional help. Otherwise, the location of the -Qt library installation must be indicated by setting -``-D Qt5_DIR=/path/to/qt5/lib/cmake/Qt5``, which is a path to a folder inside +distribution in the folder ``tools/lammps-gui`` and thus it can be can +be built as part of a regular LAMMPS compilation. :doc:`Using CMake +` is required. To enable its compilation use the CMake +variables ``-D BUILD_LAMMPS_GUI=on`` ``-D BUILD_MPI=off`` must be set +when creating the CMake configuration. All other settings (compiler, +flags, compile type) for LAMMPS GUI are then inherited from the regular +LAMMPS build. If the Qt library is packaged for Linux distributions, +then its location is typically auto-detected since the required CMake +configuration files are stored in a location where CMake can find them +without additional help. Otherwise, the location of the Qt library +installation must be indicated by setting ``-D +Qt5_DIR=/path/to/qt5/lib/cmake/Qt5``, which is a path to a folder inside the Qt installation that contains the file ``Qt5Config.cmake``. -It is also possible to build the LAMMPS GUI as a standalone executable +It is possible to build the LAMMPS GUI as a standalone compilation (e.g. when LAMMPS has been compiled with traditional make), then the CMake configuration needs to be told where to find the LAMMPS headers -and the LAMMPS library, via `-D LAMMPS_SOURCE_DIR=/path/to/lammps/src`. +and the LAMMPS library, via ``-D LAMMPS_SOURCE_DIR=/path/to/lammps/src``. CMake will try to guess a build folder with the LAMMPS library from that -path, but it can also be set with `-D LAMMPS_LIB_DIR=/path/to/lammps/lib`. +path, but it can also be set with ``-D LAMMPS_LIB_DIR=/path/to/lammps/lib``. Rather than linking to the LAMMPS library during compilation, it is also possible to compile the GUI with a plugin loader library that will load the LAMMPS library dynamically at runtime during the start of the GUI -from a shared library; e.g. `liblammps.so` or `liblammps.dylib` or -`liblammps.dll` (depending on the operating system). This has the +from a shared library; e.g. ``liblammps.so`` or ``liblammps.dylib`` or +``liblammps.dll`` (depending on the operating system). This has the advantage that the LAMMPS library can be updated LAMMPS without having to recompile the GUI. The ABI of the LAMMPS C-library interface is very stable and generally backward compatible. This feature is enabled by -setting ``-D LAMMPS_GUI_USE_PLUGIN=on`` and then -``-D LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader``. Typically, this -would be the ``examples/COUPLE/plugin`` folder of the LAMMPS distribution. +setting ``-D LAMMPS_GUI_USE_PLUGIN=on`` and then ``-D +LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader``. Typically, this +would be the ``examples/COUPLE/plugin`` folder of the LAMMPS +distribution. Platform notes ^^^^^^^^^^^^^^ @@ -818,7 +821,7 @@ macOS When building on macOS, the build procedure will try to manufacture a drag-n-drop installer, LAMMPS-macOS-multiarch.dmg, when using the 'dmg' -target (i.e. `cmake --build --target dmg` or `make dmg`. +target (i.e. ``cmake --build --target dmg`` or ``make dmg``. To build multi-arch executables that will run on both, arm64 and x86_64 architectures natively, it is necessary to set the CMake variable ``-D @@ -831,18 +834,39 @@ version. Windows """"""" -On Windows currently only compilation from within Visual Studio 2022 is -supported and tested. Using CMake and Ninja as build system is -required. Qt needs to be installed, tested was a package downloaded from -https://www.qt.io, into the ``C:\\Qt`` folder. There is a custom -`x64-GUI-MSVC` build configuration provided that will activate building -the `lammps-gui.exe` executable in addition to LAMMPS. When requesting -an installation from the `Build` menu, it will create a compressed zip -file with the executables and required dependent .dll files. This zip -file can be uncompressed and ``lammps-gui.exe`` run directly from there. -The uncompressed folder can be added to the ``PATH`` environment and -LAMMPS and LAMMPS GUI can be launched from anywhere from the command -line. +On Windows either native compilation from within Visual Studio 2022 with +Visual C++ is supported and tested, or compilation with the MinGW / GCC +cross-compiler environment on Fedora Linux. + +**Visual Studio** + +Using CMake and Ninja as build system are required. Qt needs to be +installed, tested was a binary package downloaded from +https://www.qt.io, which installs into the ``C:\\Qt`` folder by default. +There is a custom `x64-GUI-MSVC` build configuration provided in the +``CMakeSettings.json`` file that Visual Studio uses to store different +compilation settings for project. Choosing this configuration will +activate building the `lammps-gui.exe` executable in addition to LAMMPS +through importing package selection from the ``windows.cmake`` preset +file and enabling building the LAMMPS GUI and disable building with MPI. +When requesting an installation from the `Build` menu in Visual Studio, +it will create a compressed ``LAMMPS-Win10-amd64.zip`` zip file with the +executables and required dependent .dll files. This zip file can be +uncompressed and ``lammps-gui.exe`` run directly from there. The +uncompressed folder can be added to the ``PATH`` environment and LAMMPS +and LAMMPS GUI can be launched from anywhere from the command line. + +**MinGW64 Cross-compiler** + +The standard CMake build procedure can be applied and the +``mingw-cross.cmake`` preset used. By using ``mingw64-cmake`` the CMake +command will automatically include a suitable CMake toolset file (the +regular cmake command can be used after that). After building the +libraries and executables, you can build the target 'zip' +(i.e. ``cmake --build --target zip`` or ``make zip`` +to stage all installable files into a LAMMPS_GUI folder and then +run a script to copy all required dependencies, some other files, +and create a zip file from it. Linux """"" From ea15cec4bf03a3d2a7e47a1f4d3e77cf60785c5a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 23:14:35 -0400 Subject: [PATCH 0170/1002] remember the size of the main window --- tools/lammps-gui/lammpsgui.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 58dff4f49c..b50762c874 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -191,6 +191,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : } else { setWindowTitle(QString("LAMMPS-GUI - *unknown*")); } + + resize(settings.value("mainx", 500).toInt(), settings.value("mainy", 320).toInt()); } LammpsGui::~LammpsGui() @@ -330,6 +332,12 @@ void LammpsGui::quit() break; } } + + // store some global settings + QSettings settings; + settings.setValue("mainx", width()); + settings.setValue("mainy", height()); + settings.sync(); QCoreApplication::quit(); } From d414dd52d55da15ae36d4144879327ab60927f33 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 10:33:51 -0400 Subject: [PATCH 0171/1002] subclass QPlainTextEdit for logwindows, so we can store its size on close also some more settings tweaks (e.g. do not store window size when maximized) and add setting to replace log windows instead or creating new ones. --- tools/lammps-gui/CMakeLists.txt | 2 ++ tools/lammps-gui/lammpsgui.cpp | 45 +++++++++++++++++++++----------- tools/lammps-gui/logwindow.cpp | 37 ++++++++++++++++++++++++++ tools/lammps-gui/logwindow.h | 32 +++++++++++++++++++++++ tools/lammps-gui/preferences.cpp | 18 ++++++++----- 5 files changed, 113 insertions(+), 21 deletions(-) create mode 100644 tools/lammps-gui/logwindow.cpp create mode 100644 tools/lammps-gui/logwindow.h diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 3e5e05ec4f..81c4c35975 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -79,6 +79,8 @@ set(PROJECT_SOURCES lammpswrapper.cpp lammpswrapper.h linenumberarea.h + logwindow.cpp + logwindow.h preferences.cpp preferences.h stdcapture.cpp diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index b50762c874..fc5a9c5d50 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -16,6 +16,7 @@ #include "highlighter.h" #include "imageviewer.h" #include "lammpsrunner.h" +#include "logwindow.h" #include "preferences.h" #include "stdcapture.h" #include "ui_lammpsgui.h" @@ -81,8 +82,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // restorge and initialize settings QSettings settings; - // check and initialize nthreads setting. Default is to use max, - // but not override OMP_NUM_THREADS and preferences setting. + // check and initialize nthreads setting. Default is to use max if there + // is no preference but do not override OMP_NUM_THREADS #if defined(_OPENMP) // use maximum number of available threads unless OMP_NUM_THREADS was set int nthreads = settings.value("nthreads", omp_get_max_threads()).toInt(); @@ -155,11 +156,11 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : status->setFixedWidth(300); ui->statusbar->addWidget(status); dirstatus = new QLabel(QString(" Directory: ") + current_dir); - dirstatus->setMinimumWidth(500); + dirstatus->setMinimumWidth(400); ui->statusbar->addWidget(dirstatus); progress = new QProgressBar(); progress->setRange(0, 1000); - progress->setMinimumWidth(500); + progress->setMinimumWidth(400); progress->hide(); dirstatus->show(); ui->statusbar->addWidget(progress); @@ -191,8 +192,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : } else { setWindowTitle(QString("LAMMPS-GUI - *unknown*")); } - - resize(settings.value("mainx", 500).toInt(), settings.value("mainy", 320).toInt()); + resize(settings.value("mainx", "500").toInt(), settings.value("mainy", "320").toInt()); } LammpsGui::~LammpsGui() @@ -335,8 +335,10 @@ void LammpsGui::quit() // store some global settings QSettings settings; - settings.setValue("mainx", width()); - settings.setValue("mainy", height()); + if (!isMaximized()) { + settings.setValue("mainx", width()); + settings.setValue("mainy", height()); + } settings.sync(); QCoreApplication::quit(); } @@ -412,7 +414,7 @@ void LammpsGui::modified() void LammpsGui::run_done() { - logupdater->stop(); + if (logupdater) logupdater->stop(); delete logupdater; logupdater = nullptr; progress->setValue(1000); @@ -444,12 +446,23 @@ void LammpsGui::run_done() void LammpsGui::run_buffer() { + if (lammps.is_running()) { + QMessageBox::warning(this, "LAMMPS GUI Error", + "Must stop current run before starting a new run"); + return; + } QSettings settings; progress->setValue(0); dirstatus->hide(); progress->show(); int nthreads = settings.value("nthreads", 1).toInt(); - status->setText(QString("Running LAMMPS with %1 thread(s)...").arg(nthreads)); + int accel = settings.value("accelerator", AcceleratorTab::None).toInt(); + if ((accel != AcceleratorTab::OpenMP) && (accel != AcceleratorTab::Intel) && + (accel != AcceleratorTab::Kokkos)) nthreads = 1; + if (nthreads > 1) + status->setText(QString("Running LAMMPS with %1 thread(s)...").arg(nthreads)); + else + status->setText(QString("Running LAMMPS ...")); status->repaint(); start_lammps(); if (!lammps.is_open()) return; @@ -466,7 +479,9 @@ void LammpsGui::run_buffer() connect(runner, &LammpsRunner::finished, runner, &QObject::deleteLater); runner->start(); - logwindow = new QPlainTextEdit(); + // if configured, delete old log window before opening new one + if (settings.value("logreplace", false).toBool()) delete logwindow; + logwindow = new LogWindow(); logwindow->setReadOnly(true); logwindow->setCenterOnScroll(true); logwindow->moveCursor(QTextCursor::End); @@ -480,17 +495,17 @@ void LammpsGui::run_buffer() #endif text_font.setStyleHint(QFont::TypeWriter); logwindow->document()->setDefaultFont(text_font); - logwindow->setLineWrapMode(QPlainTextEdit::NoWrap); - logwindow->setMinimumSize(600, 400); + logwindow->setLineWrapMode(LogWindow::NoWrap); + logwindow->setMinimumSize(400, 300); QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), logwindow); - QObject::connect(shortcut, &QShortcut::activated, logwindow, &QPlainTextEdit::close); + QObject::connect(shortcut, &QShortcut::activated, logwindow, &LogWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), logwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); logwindow->show(); logupdater = new QTimer(this); connect(logupdater, &QTimer::timeout, this, &LammpsGui::logupdate); - logupdater->start(1000); + logupdater->start(500); } void LammpsGui::view_image() diff --git a/tools/lammps-gui/logwindow.cpp b/tools/lammps-gui/logwindow.cpp new file mode 100644 index 0000000000..3304802d62 --- /dev/null +++ b/tools/lammps-gui/logwindow.cpp @@ -0,0 +1,37 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "logwindow.h" +#include +#include + +LogWindow::LogWindow(QWidget *parent) : QPlainTextEdit(parent) +{ + QSettings settings; + resize(settings.value("logx", 500).toInt(), settings.value("logy", 320).toInt()); +} + +void LogWindow::closeEvent(QCloseEvent *event) +{ + fprintf(stderr, "log closing\n"); + QSettings settings; + if (!isMaximized()) { + settings.setValue("logx", width()); + settings.setValue("logy", height()); + } + QPlainTextEdit::closeEvent(event); +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/logwindow.h b/tools/lammps-gui/logwindow.h new file mode 100644 index 0000000000..8807ef5cee --- /dev/null +++ b/tools/lammps-gui/logwindow.h @@ -0,0 +1,32 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef LOGWINDOW_H +#define LOGWINDOW_H + +#include + +class LogWindow : public QPlainTextEdit { + Q_OBJECT + +public: + LogWindow(QWidget *parent = nullptr); + +protected: + void closeEvent(QCloseEvent *event) override; +}; + +#endif +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 628a50a11a..8bce28bbbe 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -110,10 +110,11 @@ void Preferences::accept() // general settings QCheckBox *box = tabWidget->findChild("echo"); - if (box) settings->setValue("echo", box->isChecked() ? "1" : "0"); + if (box) settings->setValue("echo", box->isChecked()); box = tabWidget->findChild("cite"); - if (box) settings->setValue("cite", box->isChecked() ? "1" : "0"); - + if (box) settings->setValue("cite", box->isChecked()); + box = tabWidget->findChild("logreplace"); + if (box) settings->setValue("logreplace", box->isChecked()); QDialog::accept(); } @@ -123,11 +124,15 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa auto *layout = new QVBoxLayout; auto *echo = new QCheckBox("Echo input to log"); - echo->setCheckState(settings->value("echo", "0").toInt() ? Qt::Checked : Qt::Unchecked); echo->setObjectName("echo"); - auto *cite = new QCheckBox("Include Citations"); - cite->setCheckState(settings->value("cite", "0").toInt() ? Qt::Checked : Qt::Unchecked); + echo->setCheckState(settings->value("echo", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *cite = new QCheckBox("Include citation details"); cite->setObjectName("cite"); + cite->setCheckState(settings->value("cite", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *logr = new QCheckBox("Replace log window on new run"); + logr->setObjectName("logreplace"); + logr->setCheckState(settings->value("logreplace", false).toBool() ? Qt::Checked + : Qt::Unchecked); #if !defined(__APPLE__) auto *tmplabel = new QLabel("Scratch Folder:"); auto *tmpedit = new QLineEdit(settings->value("tempdir", ".").toString()); @@ -153,6 +158,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa #endif layout->addWidget(echo); layout->addWidget(cite); + layout->addWidget(logr); #if !defined(__APPLE__) layout->addLayout(tmplayout); #endif From fe7681d0b3abb9292a47a4ff626d72541d9106a8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 14:27:26 -0400 Subject: [PATCH 0172/1002] add chart viewer window to show graphs of ongoing runs from thermo data --- tools/lammps-gui/CMakeLists.txt | 12 ++--- tools/lammps-gui/chartviewer.cpp | 85 ++++++++++++++++++++++++++++++ tools/lammps-gui/chartviewer.h | 43 +++++++++++++++ tools/lammps-gui/lammpsgui.cpp | 68 ++++++++++++++++++++++-- tools/lammps-gui/lammpsgui.h | 2 + tools/lammps-gui/lammpswrapper.cpp | 13 +++++ tools/lammps-gui/lammpswrapper.h | 1 + tools/lammps-gui/logwindow.cpp | 2 - 8 files changed, 213 insertions(+), 13 deletions(-) create mode 100644 tools/lammps-gui/chartviewer.cpp create mode 100644 tools/lammps-gui/chartviewer.h diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 81c4c35975..19c56c97bd 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.0.0 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.0 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) @@ -13,10 +13,6 @@ option(LAMMPS_GUI_USE_PLUGIN "Load LAMMPS library dynamically at runtime" OFF) mark_as_advanced(LAMMPS_GUI_USE_PLUGIN) # checks -if(BUILD_MPI) - message(FATAL_ERROR "Must disable BUILD_MPI for building the LAMMPS GUI") -endif() - # when this file is included as subdirectory in the LAMMPS build, many settings are directly imported if(LAMMPS_DIR) set(LAMMPS_HEADER_DIR ${LAMMPS_SOURCE_DIR}) @@ -62,7 +58,7 @@ if(LAMMPS_GUI_USE_PLUGIN) endif() # we require Qt 5 and at least version 5.12 at that. -find_package(Qt5 5.12 REQUIRED COMPONENTS Widgets) +find_package(Qt5 5.12 REQUIRED COMPONENTS Widgets Charts) set(PROJECT_SOURCES main.cpp @@ -72,6 +68,8 @@ set(PROJECT_SOURCES highlighter.h imageviewer.cpp imageviewer.h + chartviewer.cpp + chartviewer.h lammpsgui.cpp lammpsgui.h lammpsgui.ui @@ -109,7 +107,7 @@ else() endif() target_include_directories(lammps-gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_definitions(lammps-gui PRIVATE LAMMPS_GUI_VERSION="${PROJECT_VERSION}") -target_link_libraries(lammps-gui PRIVATE Qt5::Widgets) +target_link_libraries(lammps-gui PRIVATE Qt5::Widgets Qt5::Charts) if(BUILD_OMP) find_package(OpenMP COMPONENTS CXX REQUIRED) target_link_libraries(lammps-gui PRIVATE OpenMP::OpenMP_CXX) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp new file mode 100644 index 0000000000..676a658f95 --- /dev/null +++ b/tools/lammps-gui/chartviewer.cpp @@ -0,0 +1,85 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "chartviewer.h" + +#include +#include + +using namespace QtCharts; + +ChartViewer::ChartViewer(QWidget *parent) : + QChartView(parent), last_step(-1), chart(new QChart), series(new QLineSeries), + xaxis(new QValueAxis), yaxis(new QValueAxis) +{ + chart->legend()->hide(); + chart->addAxis(xaxis,Qt::AlignBottom); + chart->addAxis(yaxis,Qt::AlignLeft); + chart->addSeries(series); + series->attachAxis(xaxis); + series->attachAxis(yaxis); + xaxis->setTitleText("Time step"); + xaxis->setTickCount(5); + yaxis->setTickCount(5); + xaxis->setMinorTickCount(5); + yaxis->setMinorTickCount(5); + + setRenderHint(QPainter::Antialiasing); + setChart(chart); + setRubberBand(QChartView::RectangleRubberBand); + + QSettings settings; + resize(settings.value("chartx", 500).toInt(), settings.value("charty", 320).toInt()); +} + +void ChartViewer::add_column(const QString &title) +{ + yaxis->setTitleText(title); + series->setName(title); +} + +void ChartViewer::add_data(int step, int column, double data) +{ + if (last_step < step) { + last_step = step; + series->append(step, data); + auto points = series->pointsVector(); + + qreal xmin = 1.0e100; + qreal xmax = -1.0e100; + qreal ymin = 1.0e100; + qreal ymax = -1.0e100; + for (auto &p : points) { + xmin = qMin(xmin, p.x()); + xmax = qMax(xmax, p.x()); + ymin = qMin(ymin, p.y()); + ymax = qMax(ymax, p.y()); + } + xaxis->setRange(xmin, xmax); + yaxis->setRange(ymin, ymax); + } +} + +void ChartViewer::closeEvent(QCloseEvent *event) +{ + QSettings settings; + if (!isMaximized()) { + settings.setValue("chartx", width()); + settings.setValue("charty", height()); + } + QChartView::closeEvent(event); +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/chartviewer.h b/tools/lammps-gui/chartviewer.h new file mode 100644 index 0000000000..2ee95788fc --- /dev/null +++ b/tools/lammps-gui/chartviewer.h @@ -0,0 +1,43 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef CHARTVIEWER_H +#define CHARTVIEWER_H + +#include + +class ChartViewer : public QtCharts::QChartView { + Q_OBJECT + +public: + ChartViewer(QWidget *parent = nullptr); + bool has_columns() const { return last_step >= 0; } + void add_column(const QString &title); + void add_data(int step, int column, double data); + int get_last_step() const; + +protected: + void closeEvent(QCloseEvent *event) override; + +private: + int last_step; + QtCharts::QChart *chart; + QtCharts::QLineSeries *series; + QtCharts::QValueAxis *xaxis; + QtCharts::QValueAxis *yaxis; +}; +#endif + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index fc5a9c5d50..964215ac1c 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -13,6 +13,7 @@ #include "lammpsgui.h" +#include "chartviewer.h" #include "highlighter.h" #include "imageviewer.h" #include "lammpsrunner.h" @@ -64,8 +65,8 @@ static char *mystrdup(const std::string &text) LammpsGui::LammpsGui(QWidget *parent, const char *filename) : QMainWindow(parent), ui(new Ui::LammpsGui), highlighter(nullptr), capturer(nullptr), - status(nullptr), logwindow(nullptr), imagewindow(nullptr), logupdater(nullptr), - dirstatus(nullptr), progress(nullptr), prefdialog(nullptr) + status(nullptr), logwindow(nullptr), imagewindow(nullptr), chartwindow(nullptr), + logupdater(nullptr), dirstatus(nullptr), progress(nullptr), prefdialog(nullptr) { ui->setupUi(this); this->setCentralWidget(ui->textEdit); @@ -203,6 +204,7 @@ LammpsGui::~LammpsGui() delete status; delete logwindow; delete imagewindow; + delete chartwindow; delete dirstatus; } @@ -384,6 +386,7 @@ void LammpsGui::logupdate() double t_elapsed, t_remain, t_total; int completed = 1000; + // estimate completion percentage if (lammps.is_running()) { t_elapsed = lammps.get_thermo("cpu"); t_remain = lammps.get_thermo("cpuremain"); @@ -400,6 +403,28 @@ void LammpsGui::logupdate() logwindow->textCursor().deleteChar(); } } + + // extract chache thermo data + if (chartwindow) { + void *ptr = lammps.last_thermo("step", 0); + if (ptr) { + int step = 0; + if (lammps.extract_setting("bigint") == 4) + step = *(int *)ptr; + else + step = (int)*(int64_t *)ptr; + int ncols = *(int *)lammps.last_thermo("num", 0); + if (!chartwindow->has_columns()) { + // for (int i = 0; i < ncols; ++i) { + chartwindow->add_column((const char *)lammps.last_thermo("keyword", 1)); + // } + } + + // for (int i = 0; i < ncols; ++i) { + chartwindow->add_data(step, 0, *(double *)lammps.last_thermo("data", 1)); + // } + } + } } void LammpsGui::modified() @@ -424,6 +449,27 @@ void LammpsGui::run_done() logwindow->insertPlainText(log.c_str()); logwindow->moveCursor(QTextCursor::End); + if (chartwindow) { + void *ptr = lammps.last_thermo("step", 0); + if (ptr) { + int step = 0; + if (lammps.extract_setting("bigint") == 4) + step = *(int *)ptr; + else + step = (int)*(int64_t *)ptr; + int ncols = *(int *)lammps.last_thermo("num", 0); + if (!chartwindow->has_columns()) { + // for (int i = 0; i < ncols; ++i) { + chartwindow->add_column((const char *)lammps.last_thermo("keyword", 1)); + // } + } + + // for (int i = 0; i < ncols; ++i) { + chartwindow->add_data(step, 0, *(double *)lammps.last_thermo("data", 1)); + // } + } + } + bool success = true; constexpr int BUFLEN = 1024; char errorbuf[BUFLEN]; @@ -458,7 +504,8 @@ void LammpsGui::run_buffer() int nthreads = settings.value("nthreads", 1).toInt(); int accel = settings.value("accelerator", AcceleratorTab::None).toInt(); if ((accel != AcceleratorTab::OpenMP) && (accel != AcceleratorTab::Intel) && - (accel != AcceleratorTab::Kokkos)) nthreads = 1; + (accel != AcceleratorTab::Kokkos)) + nthreads = 1; if (nthreads > 1) status->setText(QString("Running LAMMPS with %1 thread(s)...").arg(nthreads)); else @@ -503,9 +550,22 @@ void LammpsGui::run_buffer() QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); logwindow->show(); + // if configured, delete old log window before opening new one + if (settings.value("chartreplace", false).toBool()) delete chartwindow; + chartwindow = new ChartViewer(); + chartwindow->setWindowTitle("LAMMPS-GUI - Thermo charts from running LAMMPS on buffer - " + + current_file); + chartwindow->setWindowIcon(QIcon(":/lammps-icon-128x128.png")); + chartwindow->setMinimumSize(400, 300); + shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), chartwindow); + QObject::connect(shortcut, &QShortcut::activated, chartwindow, &ChartViewer::close); + shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), chartwindow); + QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); + chartwindow->show(); + logupdater = new QTimer(this); connect(logupdater, &QTimer::timeout, this, &LammpsGui::logupdate); - logupdater->start(500); + logupdater->start(200); } void LammpsGui::view_image() diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 78e518609e..158e4e86ac 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -39,6 +39,7 @@ class Highlighter; class StdCapture; class Preferences; class ImageViewer; +class ChartViewer; class LammpsGui : public QMainWindow { Q_OBJECT @@ -85,6 +86,7 @@ private: QLabel *status; QPlainTextEdit *logwindow; ImageViewer *imagewindow; + ChartViewer *chartwindow; QTimer *logupdater; QLabel *dirstatus; QProgressBar *progress; diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 3292217d77..7d5b54a634 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -58,6 +58,19 @@ double LammpsWrapper::get_thermo(const char *keyword) return val; } +void *LammpsWrapper::last_thermo(const char *keyword, int index) +{ + void *ptr = nullptr; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + ptr = ((liblammpsplugin_t *)plugin_handle)->last_thermo(lammps_handle, keyword, index); +#else + ptr = lammps_last_thermo(lammps_handle, keyword, index); +#endif + } + return ptr; +} + bool LammpsWrapper::is_running() { int val = 0; diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index db8a0ba3d6..9aa75b2b54 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -30,6 +30,7 @@ public: int extract_setting(const char *keyword); double get_thermo(const char *keyword); + void *last_thermo(const char *keyword, int idx); bool is_open() const { return lammps_handle != nullptr; } bool is_running(); bool has_error() const; diff --git a/tools/lammps-gui/logwindow.cpp b/tools/lammps-gui/logwindow.cpp index 3304802d62..7091b34f43 100644 --- a/tools/lammps-gui/logwindow.cpp +++ b/tools/lammps-gui/logwindow.cpp @@ -13,7 +13,6 @@ #include "logwindow.h" #include -#include LogWindow::LogWindow(QWidget *parent) : QPlainTextEdit(parent) { @@ -23,7 +22,6 @@ LogWindow::LogWindow(QWidget *parent) : QPlainTextEdit(parent) void LogWindow::closeEvent(QCloseEvent *event) { - fprintf(stderr, "log closing\n"); QSettings settings; if (!isMaximized()) { settings.setValue("logx", width()); From 53eaca030bf671366c81f1a1c000caab2be83832 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 18:31:43 -0400 Subject: [PATCH 0173/1002] complete chart view window with option to select chart from thermo columns --- tools/lammps-gui/chartviewer.cpp | 108 ++++++++++++++++++++++++------- tools/lammps-gui/chartviewer.h | 52 +++++++++++++-- tools/lammps-gui/lammpsgui.cpp | 55 ++++++++++------ tools/lammps-gui/lammpsgui.h | 4 +- 4 files changed, 169 insertions(+), 50 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 676a658f95..23928d8aeb 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -13,18 +13,95 @@ #include "chartviewer.h" +#include #include #include +#include using namespace QtCharts; -ChartViewer::ChartViewer(QWidget *parent) : - QChartView(parent), last_step(-1), chart(new QChart), series(new QLineSeries), +ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : + QWidget(parent), menu(new QMenuBar), file(new QMenu("&File")), active_chart(-1), + filename(_filename) +{ + auto *top = new QHBoxLayout; + menu->addMenu(file); + menu->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + + columns = new QComboBox; + top->addWidget(menu); + top->addWidget(columns); + saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); + closeAct = file->addAction("&Close", this, &QWidget::close); + auto *layout = new QVBoxLayout; + layout->addLayout(top); + setLayout(layout); + + connect(columns, SIGNAL(currentIndexChanged(int)), this, SLOT(change_chart(int))); + QSettings settings; + resize(settings.value("chartx", 500).toInt(), settings.value("charty", 320).toInt()); +} + +void ChartWindow::add_chart(const QString &title, int index) +{ + auto *chart = new ChartViewer(title, index); + layout()->addWidget(chart); + columns->addItem(title, index); + columns->show(); + // hide all but the first chart added + if (charts.size() > 0) chart->hide(); + charts.append(chart); + active_chart = 0; +} + +void ChartWindow::add_data(int step, double data, int index) +{ + for (auto &c : charts) + if (c->get_index() == index) c->add_data(step, data); +} + +void ChartWindow::saveAs() +{ + if (charts.empty() || (active_chart < 0)) return; + QString defaultname = filename + "." + columns->currentText() + ".png"; + if (filename.isEmpty()) defaultname = columns->currentText() + ".png"; + QString fileName = QFileDialog::getSaveFileName(this, "Save Chart as Image", defaultname, + "Image Files (*.jpg *.png *.bmp *.ppm)"); + if (!fileName.isEmpty()) { + charts[active_chart]->grab().save(fileName); + } +} + +void ChartWindow::change_chart(int index) +{ + int choice = columns->currentData().toInt(); + for (auto &c : charts) { + if (choice == c->get_index()) + c->show(); + else + c->hide(); + } +} + +void ChartWindow::closeEvent(QCloseEvent *event) +{ + QSettings settings; + if (!isMaximized()) { + settings.setValue("chartx", width()); + settings.setValue("charty", height()); + } + QWidget::closeEvent(event); +} + +/* -------------------------------------------------------------------- */ + +ChartViewer::ChartViewer(const QString &title, int _index, QWidget *parent) : + QChartView(parent), last_step(-1), index(_index), chart(new QChart), series(new QLineSeries), xaxis(new QValueAxis), yaxis(new QValueAxis) { chart->legend()->hide(); - chart->addAxis(xaxis,Qt::AlignBottom); - chart->addAxis(yaxis,Qt::AlignLeft); + chart->addAxis(xaxis, Qt::AlignBottom); + chart->addAxis(yaxis, Qt::AlignLeft); chart->addSeries(series); series->attachAxis(xaxis); series->attachAxis(yaxis); @@ -33,22 +110,17 @@ ChartViewer::ChartViewer(QWidget *parent) : yaxis->setTickCount(5); xaxis->setMinorTickCount(5); yaxis->setMinorTickCount(5); + yaxis->setTitleText(title); + series->setName(title); setRenderHint(QPainter::Antialiasing); setChart(chart); setRubberBand(QChartView::RectangleRubberBand); - - QSettings settings; - resize(settings.value("chartx", 500).toInt(), settings.value("charty", 320).toInt()); } -void ChartViewer::add_column(const QString &title) -{ - yaxis->setTitleText(title); - series->setName(title); -} +/* -------------------------------------------------------------------- */ -void ChartViewer::add_data(int step, int column, double data) +void ChartViewer::add_data(int step, double data) { if (last_step < step) { last_step = step; @@ -70,16 +142,6 @@ void ChartViewer::add_data(int step, int column, double data) } } -void ChartViewer::closeEvent(QCloseEvent *event) -{ - QSettings settings; - if (!isMaximized()) { - settings.setValue("chartx", width()); - settings.setValue("charty", height()); - } - QChartView::closeEvent(event); -} - // Local Variables: // c-basic-offset: 4 // End: diff --git a/tools/lammps-gui/chartviewer.h b/tools/lammps-gui/chartviewer.h index 2ee95788fc..196faa4f95 100644 --- a/tools/lammps-gui/chartviewer.h +++ b/tools/lammps-gui/chartviewer.h @@ -14,23 +14,61 @@ #ifndef CHARTVIEWER_H #define CHARTVIEWER_H +#include +#include +#include #include -class ChartViewer : public QtCharts::QChartView { +class QAction; +class QMenuBar; +class QMenu; +class QComboBox; +class ChartViewer; + +class ChartWindow : public QWidget { Q_OBJECT public: - ChartViewer(QWidget *parent = nullptr); - bool has_columns() const { return last_step >= 0; } - void add_column(const QString &title); - void add_data(int step, int column, double data); - int get_last_step() const; + ChartWindow(const QString &filename, QWidget *parent = nullptr); + + bool has_charts() const { return !charts.isEmpty(); } + void add_chart(const QString &title, int index); + void add_data(int step, double data, int index); + +private slots: + void saveAs(); + void change_chart(int index); + + // void normalSize(); protected: void closeEvent(QCloseEvent *event) override; private: - int last_step; + QMenuBar *menu; + QMenu *file; + QComboBox *columns; + QAction *saveAsAct; + QAction *closeAct; + + QString filename; + int active_chart; + QList charts; +}; + +/* -------------------------------------------------------------------- */ + +class ChartViewer : public QtCharts::QChartView { + Q_OBJECT + +public: + explicit ChartViewer(const QString &title, int index, QWidget *parent = nullptr); + + void add_data(int step, double data); + int get_index() const { return index; }; + +private: + int last_step, index; QtCharts::QChart *chart; QtCharts::QLineSeries *series; QtCharts::QValueAxis *xaxis; diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 964215ac1c..199c114eb5 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -414,15 +414,26 @@ void LammpsGui::logupdate() else step = (int)*(int64_t *)ptr; int ncols = *(int *)lammps.last_thermo("num", 0); - if (!chartwindow->has_columns()) { - // for (int i = 0; i < ncols; ++i) { - chartwindow->add_column((const char *)lammps.last_thermo("keyword", 1)); - // } + if (!chartwindow->has_charts()) { + for (int i = 0; i < ncols; ++i) { + QString label = (const char *)lammps.last_thermo("keyword", i); + // no need to store the timestep column + if (label == "Step") continue; + chartwindow->add_chart(label, i); + } } - // for (int i = 0; i < ncols; ++i) { - chartwindow->add_data(step, 0, *(double *)lammps.last_thermo("data", 1)); - // } + for (int i = 0; i < ncols; ++i) { + int datatype = *(int *)lammps.last_thermo("type", i); + double data; + if (datatype == 0) // int + data = *(int *)lammps.last_thermo("data", i); + else if (datatype == 2) // double + data = *(double *)lammps.last_thermo("data", i); + else if (datatype == 4) // bigint + data = (double)*(int64_t *)lammps.last_thermo("data", i); + chartwindow->add_data(step, data, i); + } } } } @@ -458,18 +469,26 @@ void LammpsGui::run_done() else step = (int)*(int64_t *)ptr; int ncols = *(int *)lammps.last_thermo("num", 0); - if (!chartwindow->has_columns()) { - // for (int i = 0; i < ncols; ++i) { - chartwindow->add_column((const char *)lammps.last_thermo("keyword", 1)); - // } + for (int i = 0; i < ncols; ++i) { + if (!chartwindow->has_charts()) { + QString label = (const char *)lammps.last_thermo("keyword", i); + // no need to store the timestep column + if (label == "Step") continue; + chartwindow->add_chart(label, i); + } + int datatype = *(int *)lammps.last_thermo("type", i); + double data; + if (datatype == 0) // int + data = *(int *)lammps.last_thermo("data", i); + else if (datatype == 2) // double + data = *(double *)lammps.last_thermo("data", i); + else if (datatype == 4) // bigint + data = (double)*(int64_t *)lammps.last_thermo("data", i); + chartwindow->add_data(step, data, i); } - - // for (int i = 0; i < ncols; ++i) { - chartwindow->add_data(step, 0, *(double *)lammps.last_thermo("data", 1)); - // } } } - + bool success = true; constexpr int BUFLEN = 1024; char errorbuf[BUFLEN]; @@ -552,13 +571,13 @@ void LammpsGui::run_buffer() // if configured, delete old log window before opening new one if (settings.value("chartreplace", false).toBool()) delete chartwindow; - chartwindow = new ChartViewer(); + chartwindow = new ChartWindow(current_file); chartwindow->setWindowTitle("LAMMPS-GUI - Thermo charts from running LAMMPS on buffer - " + current_file); chartwindow->setWindowIcon(QIcon(":/lammps-icon-128x128.png")); chartwindow->setMinimumSize(400, 300); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), chartwindow); - QObject::connect(shortcut, &QShortcut::activated, chartwindow, &ChartViewer::close); + QObject::connect(shortcut, &QShortcut::activated, chartwindow, &ChartWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), chartwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); chartwindow->show(); diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 158e4e86ac..a36dca2757 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -39,7 +39,7 @@ class Highlighter; class StdCapture; class Preferences; class ImageViewer; -class ChartViewer; +class ChartWindow; class LammpsGui : public QMainWindow { Q_OBJECT @@ -86,7 +86,7 @@ private: QLabel *status; QPlainTextEdit *logwindow; ImageViewer *imagewindow; - ChartViewer *chartwindow; + ChartWindow *chartwindow; QTimer *logupdater; QLabel *dirstatus; QProgressBar *progress; From 890765f2e646fc87f4a1db2b2eb05e7ff6ba8cc5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 18:46:17 -0400 Subject: [PATCH 0174/1002] add preference option to replace chart window --- tools/lammps-gui/lammpsgui.cpp | 2 +- tools/lammps-gui/preferences.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 199c114eb5..d3cfd82271 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -584,7 +584,7 @@ void LammpsGui::run_buffer() logupdater = new QTimer(this); connect(logupdater, &QTimer::timeout, this, &LammpsGui::logupdate); - logupdater->start(200); + logupdater->start(250); } void LammpsGui::view_image() diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 8bce28bbbe..ca476d1b10 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -115,6 +115,8 @@ void Preferences::accept() if (box) settings->setValue("cite", box->isChecked()); box = tabWidget->findChild("logreplace"); if (box) settings->setValue("logreplace", box->isChecked()); + box = tabWidget->findChild("chartreplace"); + if (box) settings->setValue("chartreplace", box->isChecked()); QDialog::accept(); } @@ -133,6 +135,10 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa logr->setObjectName("logreplace"); logr->setCheckState(settings->value("logreplace", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *pltr = new QCheckBox("Replace chart window on new run"); + pltr->setObjectName("chartreplace"); + pltr->setCheckState(settings->value("chartreplace", false).toBool() ? Qt::Checked + : Qt::Unchecked); #if !defined(__APPLE__) auto *tmplabel = new QLabel("Scratch Folder:"); auto *tmpedit = new QLineEdit(settings->value("tempdir", ".").toString()); @@ -159,6 +165,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa layout->addWidget(echo); layout->addWidget(cite); layout->addWidget(logr); + layout->addWidget(pltr); #if !defined(__APPLE__) layout->addLayout(tmplayout); #endif From bf79b91db0e672c542649bbdbb0863370e2f1777 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 19:08:23 -0400 Subject: [PATCH 0175/1002] update TODO list --- tools/lammps-gui/TODO.md | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index af53fb3cf9..c69da42d13 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -10,7 +10,6 @@ LAMMPS-GUI TODO list: # Long term ideas - write a "wizard" dialog that can be used for beginners to create an input file template for a few typical use scenarios -- use the "lammps_get_last_thermo" function to get access to thermodynamic data during a run and add plot/graph dialog that can plot one or more of those graphs while the simulation is still running - possibly also implement a callback interface, so that external programs can be called after thermo data is updated. - support single stepping, i.e. process input line by line (need to detect continuation chars!) with highlighting active line(s) - have command text input file in/above status bar where individual commands can be tested. have insert button to copy line into file at the current point From 1b0967477b4685a285413d4248e02714c2639faf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 20:03:10 -0400 Subject: [PATCH 0176/1002] add support to export collected Thermo data to gnuplot .dat and excel .csv --- tools/lammps-gui/chartviewer.cpp | 71 ++++++++++++++++++++++++++++++++ tools/lammps-gui/chartviewer.h | 11 ++++- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 23928d8aeb..c87fdd6cfc 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -32,6 +32,9 @@ ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : top->addWidget(menu); top->addWidget(columns); saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); + exportCsvAct = file->addAction("&Export data to CSV...", this, &ChartWindow::exportCsv); + exportDatAct = file->addAction("Export data to &Gnuplot...", this, &ChartWindow::exportDat); + file->addSeparator(); closeAct = file->addAction("&Close", this, &QWidget::close); auto *layout = new QVBoxLayout; layout->addLayout(top); @@ -72,6 +75,74 @@ void ChartWindow::saveAs() } } +void ChartWindow::exportDat() +{ + if (charts.empty() || (active_chart < 0)) return; + QString defaultname = filename + ".dat"; + if (filename.isEmpty()) defaultname = "lammpsdata.dat"; + QString fileName = QFileDialog::getSaveFileName(this, "Save Chart as Gnuplot data", defaultname, + "Image Files (*.dat)"); + if (!fileName.isEmpty()) { + QFile file(fileName); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + + file.write("# Thermodynamic data from "); + file.write(filename.toLocal8Bit()); + file.write("\n# Columns:"); + for (auto &c : charts) { + file.write(" "); + file.write(c->get_title()); + } + file.write("\n"); + + int lines = charts[0]->get_count(); + for (int i = 0; i < lines; ++i) { + // timestep + file.write(QString::number(charts[0]->get_step(i)).toLocal8Bit()); + for (auto &c : charts) { + file.write(" "); + file.write(QString::number(c->get_data(i)).toLocal8Bit()); + } + file.write("\n"); + } + file.close(); + } + } +} + +void ChartWindow::exportCsv() +{ + if (charts.empty() || (active_chart < 0)) return; + QString defaultname = filename + ".csv"; + if (filename.isEmpty()) defaultname = "lammpsdata.csv"; + QString fileName = QFileDialog::getSaveFileName(this, "Save Chart as CSV data", defaultname, + "Image Files (*.csv)"); + if (!fileName.isEmpty()) { + QFile file(fileName); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + + file.write("Step"); + for (auto &c : charts) { + file.write(","); + file.write(c->get_title()); + } + file.write("\n"); + + int lines = charts[0]->get_count(); + for (int i = 0; i < lines; ++i) { + // timestep + file.write(QString::number(charts[0]->get_step(i)).toLocal8Bit()); + for (auto &c : charts) { + file.write(","); + file.write(QString::number(c->get_data(i)).toLocal8Bit()); + } + file.write("\n"); + } + file.close(); + } + } +} + void ChartWindow::change_chart(int index) { int choice = columns->currentData().toInt(); diff --git a/tools/lammps-gui/chartviewer.h b/tools/lammps-gui/chartviewer.h index 196faa4f95..e440330b2b 100644 --- a/tools/lammps-gui/chartviewer.h +++ b/tools/lammps-gui/chartviewer.h @@ -37,9 +37,10 @@ public: private slots: void saveAs(); - void change_chart(int index); + void exportDat(); + void exportCsv(); - // void normalSize(); + void change_chart(int index); protected: void closeEvent(QCloseEvent *event) override; @@ -49,6 +50,8 @@ private: QMenu *file; QComboBox *columns; QAction *saveAsAct; + QAction *exportCsvAct; + QAction *exportDatAct; QAction *closeAct; QString filename; @@ -66,6 +69,10 @@ public: void add_data(int step, double data); int get_index() const { return index; }; + int get_count() const { return series->count(); } + const char *get_title() const { return series->name().toLocal8Bit(); } + double get_step(int index) const { return series->at(index).x(); } + double get_data(int index) const { return series->at(index).y(); } private: int last_step, index; From d33d59ec41e520428380ca543083eea95a2ec56f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 20:35:54 -0400 Subject: [PATCH 0177/1002] update docs --- doc/src/Tools.rst | 42 +++++++------ tools/lammps-gui/README.md | 122 ++++++++++++++++++++++++++----------- 2 files changed, 112 insertions(+), 52 deletions(-) diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index b300a376fd..5a104ca919 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -648,29 +648,35 @@ Overview LAMMPS GUI is essentially a small graphical text editor that is linked to the :ref:`LAMMPS C-library interface ` and thus can run LAMMPS directly using the contents of the editor's text buffer as input. + This is similar to what people usually would do using a text editor to -edit the input and then a command line terminal window to run the input -commands. The main benefit is that this integrates very well with -graphical desktop environments and that it is easier to use for -beginners in running computations and thus very suitable for tutorials -on LAMMPS. A small difference is that for the LAMMPS GUI it is not -require to first commit its buffer of the text editor to a file. +edit the input and then open a command line terminal window to run the +necessary commands. The main benefit of a GUI is that this integrates +very well with graphical desktop environments and many basic tasks can +be done directly from within the GUI without switching to a text +console. This makes it easier for beginners to get started running +computations and thus very suitable for tutorials on LAMMPS. + + Features ^^^^^^^^ -The main window of the LAMMPS GUI is a generic text editor window with -line numbers and syntax highlighting set up for LAMMPS input files. It -can be used to edit any kind of text file, though. The output of a run -is captured and displayed in a separate dialog window and *not* sent to -the console or a log file (unless the :doc:`log command ` is used -in the input. The log window is regularly updated during the run and a -progress bar for the run command shown at the bottom of the main window. -Starting a new run will open another log windows. The state of LAMMPS -will be reset between two runs. After the simulation is finished, an -image of the simulated system can be created and shown in an image -viewer window. Ongoing runs can be stopped at the next iteration via -triggering a timeout. +The main window of the LAMMPS GUI is a text editor window with line +numbers and syntax highlighting set up for LAMMPS input files. When +starting a run the output to the console is captured and displayed in a +log window. Also, generated thermodynamic data is collected and shown +in chart window. An ongoing run can be stopped at the next iteration +and after a run is completed, a snapshot image can be generated and +displayed in an image viewer window. The log and the chart window +are window regularly updated during the run and a progress bar for +the run command estimating the remaining time on the current run +command is shown at the bottom of the main window. The collected +thermodynamic data can be exported to text files or snapshot images +of the charts can be exported. Also the snapshot image can be exported. +A number of settings (e.g. whether a new run should use a new or replace +the existing log or chart window) or which accelerator to use, can +be updated from a preferences dialog. When opening a file, the editor will determine the directory where the file resides and switch its current working directory to the folder of diff --git a/tools/lammps-gui/README.md b/tools/lammps-gui/README.md index 2af9ee6faa..c5ea0fd5dd 100644 --- a/tools/lammps-gui/README.md +++ b/tools/lammps-gui/README.md @@ -4,37 +4,39 @@ LAMMPS GUI LAMMPS GUI is essentially a small graphical text editor that is linked to the LAMMPS library and thus can run LAMMPS using the contents of the -text buffer as input. This is similar to what people usually would do -using a text editor to edit the input and then a command line terminal -window to run the input commands. The main benefit is that this -integrates very well with graphical desktop environments and that it is -easier to use for beginners in running computations and thus very -suitable for tutorials on LAMMPS. +text buffer as input. + +This is similar to what people usually would do using a text editor to +edit the input and then open a command line terminal window to run the +necessary commands. The main benefit of a GUI is that this integrates +very well with graphical desktop environments and many basic tasks can +be done directly from within the GUI without switching to a text +console. This makes it easier for beginners to get started running +computations and thus very suitable for tutorials on LAMMPS. # Features -The main window of the LAMMPS GUI is a text editor window with syntax -highlighting set up for LAMMPS input files. It can be used to edit any -kind of text file, but then trying to run those files will cause errors. -The output of a run is captured and displayed in a separate window -dialog. The log window is updated during the run and a progress bar for -each run command shown in the main window. Starting a new run will open -another log windows. After the simulation is finished, an image of the -simulated system can be created and shown in another window. Ongoing -runs can be stopped at the next iteration via triggering a timeout. +The main window of the LAMMPS GUI is a text editor window with line +numbers syntax and highlighting set up for LAMMPS input files. When +starting a run the output to the console is captured and displayed in a +log window. Also, generated thermodynamic data is collected and shown +in chart window. An ongoing run can be stopped at the next iteration +and after a run is completed, a snapshot image can be generated and +displayed in an image viewer window. -When opening a file, the editor will determine the directory where the -file resides and switch its current working directory to that folder. -Many LAMMPS inputs contain commands that read other files, typically -from the folder with the input file. The GUI will show the current -working directory. The editor window can also receive (entire) files -via drag-n-drop from a file manager GUI or a desktop environment. +When opening a file, the editor will switch to the directory where the +file was found. The current working directory is shown in the status +bar at the bottom of the window. The editor window can also receive +(entire) files via drag-n-drop from a file manager GUI or a desktop +environment. Almost all commands are accessible via hotkeys. Which those hotkeys are, is shown next to the entries in the menu. Log and image viewer windows -can be closed with CTRL-W (or Command-W on macOS). The "About LAMMPS" -dialog will show the LAMMPS version and the features included into the -LAMMPS library linked to the LAMMPS GUI. +can be closed with CTRL-W (or Command-W on macOS). +A number of settings can be adjusted via a Preferences dialog. + +The "About LAMMPS" dialog will show the LAMMPS version and the features +included into the LAMMPS library linked to the LAMMPS GUI. Due to its nature as a graphical application, it is not possible to use the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading is @@ -49,6 +51,7 @@ compilers. It has been successfully compiled and tested on: - Fedora Linux 38 x86\_64 using GCC 13 and Clang 16 - Apple macOS 12 (Monterey) and macOS 13 (Ventura) with Xcode on arm64 and x86\_64 - Windows 10 and 11 x86_64 with Visual Studio 2022 and Visual C++ 14.36 +- Windows 10 and 11 x86_64 with a MinGW GCC cross-compiler on Linux # Compilation @@ -80,9 +83,9 @@ library; e.g. `liblammps.so` or `liblammps.dylib` or `liblammps.dll` depending on the operating system. This has the advantage that the LAMMPS library can be updated LAMMPS without having to recompile the GUI. The ABI of the LAMMPS C-library interface is very stable and -generally backward compatible. This feature is enabled by setting -`-D LAMMPS_GUI_USE_PLUGIN=on` and then -`-D LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader`. Typically, this +generally backward compatible. This feature is enabled by setting `-D +LAMMPS_GUI_USE_PLUGIN=on` and then `-D +LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader`. Typically, this would be the `examples/COUPLE/plugin` folder of the LAMMPS distribution. # Platform notes @@ -90,15 +93,66 @@ would be the `examples/COUPLE/plugin` folder of the LAMMPS distribution. ## macOS When building on macOS, the build procedure will try to manufacture a -drag-n-drop installer, LAMMPS-macOS-multiarch.dmg. To build multi-arch -executables that will run on both, arm64 and x86_64 architectures -natively, it is necessary to set the CMake variable -`-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64`. To achieve wide compatibility -with different macOS versions, you can also set -`-D CMAKE_OSX_DEPLOYMENT_TARGET=11.0` which will set compatibility to macOS +drag-n-drop installer, LAMMPS-macOS-multiarch.dmg, when using the 'dmg' +target (i.e. `cmake --build --target dmg` or `make dmg`. + +To build multi-arch executables that will run on both, arm64 and x86_64 +architectures natively, it is necessary to set the CMake variable `-D +CMAKE_OSX_ARCHITECTURES=arm64;x86_64`. To achieve wide compatibility +with different macOS versions, you can also set `-D +CMAKE_OSX_DEPLOYMENT_TARGET=11.0` which will set compatibility to macOS 11 (Big Sur) and later, even if you are compiling on a more recent macOS version. + +## Windows + +On Windows either native compilation from within Visual Studio 2022 with +Visual C++ is supported and tested, or compilation with the MinGW / GCC +cross-compiler environment on Fedora Linux. + +### Visual Studio + +Using CMake and Ninja as build system are required. Qt needs to be +installed, tested was a binary package downloaded from +https://www.qt.io, which installs into the `C:\\Qt` folder by default. +There is a custom `x64-GUI-MSVC` build configuration provided in the +`CMakeSettings.json` file that Visual Studio uses to store different +compilation settings for project. Choosing this configuration will +activate building the `lammps-gui.exe` executable in addition to LAMMPS +through importing package selection from the `windows.cmake` preset +file and enabling building the LAMMPS GUI and disable building with MPI. +When requesting an installation from the `Build` menu in Visual Studio, +it will create a compressed `LAMMPS-Win10-amd64.zip` zip file with the +executables and required dependent .dll files. This zip file can be +uncompressed and `lammps-gui.exe` run directly from there. The +uncompressed folder can be added to the `PATH` environment and LAMMPS +and LAMMPS GUI can be launched from anywhere from the command line. + +### MinGW64 Cross-compiler + +The standard CMake build procedure can be applied and the +`mingw-cross.cmake` preset used. By using `mingw64-cmake` the CMake +command will automatically include a suitable CMake toolset file (the +regular cmake command can be used after that). After building the +libraries and executables, you can build the target 'zip' +(i.e. `cmake --build --target zip` or `make zip` +to stage all installable files into a LAMMPS_GUI folder and then +run a script to copy all required dependencies, some other files, +and create a zip file from it. + +Linux +""""" + +Version 5.12 or later of the Qt library and CMake version 3.16 are +required and those are provided by, e.g., Ubuntu 20.04LTS. Thus older +Linux distributions are not likely to be supported, while more recent +ones will work, even for pre-compiled executables (see above). After +compiling with `cmake --build `, use +`cmake --build --target tgz` or `make tgz` to build +a `LAMMPS-Linux-amd64.tar.gz` file with the executables and their +support libraries. + -------- -updated by Axel Kohlmeyer, 08/1023 +updated by Axel Kohlmeyer, 2023-08-05 From b81aaebd8710226f33cef3f486144cd5e7bdaa3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Aug 2023 19:46:00 -0400 Subject: [PATCH 0178/1002] update TODO list --- tools/lammps-gui/TODO.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index c69da42d13..3bf9d68046 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,6 +2,8 @@ LAMMPS-GUI TODO list: # Short term goals +- use qgetenv, qputenv for portability +- update enabled/disabled status for accelerators during startup and fall back to None if needed. - add CTRL-q hotkey to log windows so you can exit the entire application (add do you really want to? dialog to this) - add "syntax check" with enabled "-skiprun" flag - add multi-tab settings dialog where certain properties can be set through customizing the LAMMPS command line From 6dcfe130a4a2333e959249ed5f8b5c931b06cf8f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Aug 2023 19:46:26 -0400 Subject: [PATCH 0179/1002] tweaks to syntax highlighting --- tools/lammps-gui/highlighter.cpp | 44 +++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index 3e75cb56d4..84b9b0035f 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -18,18 +18,23 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) HighlightingRule rule; outputFormat.setForeground(Qt::darkYellow); + outputFormat.setFontWeight(QFont::Bold); readFormat.setForeground(Qt::magenta); + readFormat.setFontWeight(QFont::Bold); latticeFormat.setForeground(Qt::darkGreen); + latticeFormat.setFontWeight(QFont::Bold); particleFormat.setForeground(Qt::darkRed); + particleFormat.setFontWeight(QFont::Bold); setupFormat.setForeground(Qt::darkCyan); - runFormat.setForeground(Qt::green); + setupFormat.setFontWeight(QFont::Bold); + runFormat.setForeground(Qt::darkBlue); runFormat.setFontWeight(QFont::Bold); defineFormat.setForeground(Qt::darkMagenta); defineFormat.setFontWeight(QFont::Bold); numberFormat.setForeground(Qt::blue); commentFormat.setForeground(Qt::red); - stringFormat.setForeground(Qt::cyan); + stringFormat.setForeground(Qt::darkGreen); stringFormat.setFontWeight(QFont::Normal); const QString output_keywords[] = { @@ -202,11 +207,44 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) void Highlighter::highlightBlock(const QString &text) { + auto style = QRegularExpression("^(fix|compute|dump|set)\\s+(\\w+)\\s+(\\S+)\\s+(\\S+)").match(text); + auto force = QRegularExpression("^(atom_style|pair_style|bond_style|angle_style|dihedral_style|improper_style|kspace_style)\\s+(\\S+)").match(text); + auto defs = QRegularExpression("^(group|variable)\\s+(\\S+)\\s+(\\S+)").match(text); + auto undo = QRegularExpression("^(unfix|uncompute|undump)\\s+(\\w+)").match(text); + bool do_style = true; + bool do_force = true; + bool do_defs = true; + bool do_undo = true; for (const HighlightingRule &rule : qAsConst(highlightingRules)) { QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text); while (matchIterator.hasNext()) { QRegularExpressionMatch match = matchIterator.next(); - setFormat(match.capturedStart(), match.capturedLength(), rule.format); + // special treatment for fix/compute/dump styles etc. + if (style.hasMatch() && do_style) { + setFormat(style.capturedStart(1), style.capturedLength(1), defineFormat); + setFormat(style.capturedStart(2), style.capturedLength(2), numberFormat); + setFormat(style.capturedStart(3), style.capturedLength(3), stringFormat); + setFormat(style.capturedStart(4), style.capturedLength(4), runFormat); + do_style = false; + // special treatment for force styles styles + } else if (force.hasMatch() && do_force) { + setFormat(force.capturedStart(1), force.capturedLength(1), particleFormat); + setFormat(force.capturedStart(2), force.capturedLength(2), runFormat); + do_force = false; + // special treatment for undo commands + } else if (undo.hasMatch() && do_undo) { + setFormat(undo.capturedStart(1), undo.capturedLength(1), defineFormat); + setFormat(undo.capturedStart(2), undo.capturedLength(2), stringFormat); + do_undo = false; + // special treatment for some definitions + } else if (defs.hasMatch() && do_defs) { + setFormat(defs.capturedStart(1), defs.capturedLength(1), particleFormat); + setFormat(defs.capturedStart(2), defs.capturedLength(2), stringFormat); + setFormat(defs.capturedStart(3), defs.capturedLength(3), runFormat); + do_defs = false; + } else { + setFormat(match.capturedStart(), match.capturedLength(), rule.format); + } } } } From f3451461038ef4f2a3b84ac53340cc3f11c2a8e4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Aug 2023 20:34:03 -0400 Subject: [PATCH 0180/1002] Simplify QtCreator file, update TODO once more, tag patch level --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/TODO.md | 7 ++++++- tools/lammps-gui/lammpsgui.ui | 25 ++++++++++--------------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 19c56c97bd..e177aed9fb 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.0 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.1 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 3bf9d68046..bb8c469542 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -4,6 +4,9 @@ LAMMPS-GUI TODO list: - use qgetenv, qputenv for portability - update enabled/disabled status for accelerators during startup and fall back to None if needed. +- rewrite syntax highlighting to be line oriented instead of word oriented. + handle first part of line based on regular expressions, then advance and only highlight strings and numbers. + handle "&" continuation and multiline strings with """ like C style comments in Qt docs example - add CTRL-q hotkey to log windows so you can exit the entire application (add do you really want to? dialog to this) - add "syntax check" with enabled "-skiprun" flag - add multi-tab settings dialog where certain properties can be set through customizing the LAMMPS command line @@ -11,8 +14,10 @@ LAMMPS-GUI TODO list: - add list of 5(?) most recently opened/saved files to file dialog (and also write to settings state on exit) (note: must store full path!) # Long term ideas +- rewrite entire application to either use QtCreator for everything or just build the App and its layout manually +- also a rewrite should establish consistent naming conventions. now we have a mix of LAMMPS style, Qt style, and others. +- add option to attach a debugger to the running program (highly non-portable, need customization support in preferences) - write a "wizard" dialog that can be used for beginners to create an input file template for a few typical use scenarios -- possibly also implement a callback interface, so that external programs can be called after thermo data is updated. - support single stepping, i.e. process input line by line (need to detect continuation chars!) with highlighting active line(s) - have command text input file in/above status bar where individual commands can be tested. have insert button to copy line into file at the current point - support text completion as done with lammps-shell diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index cc8f6fad50..14f354b3c0 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -13,19 +13,13 @@ LammpsGui - - - - - - true - - - true - - - - + + + true + + + true + @@ -33,7 +27,7 @@ 0 0 600 - 23 + 24 @@ -345,7 +339,8 @@ - + + .. Reset to &Defaults From d7b53877121ebe23bbb44756b57533797873f832 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 7 Aug 2023 13:39:02 -0400 Subject: [PATCH 0181/1002] enforce C locale, so that numbers are created and parsed correctly in the GUI text editor --- cmake/packaging/linux_wrapper.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/packaging/linux_wrapper.sh b/cmake/packaging/linux_wrapper.sh index b3aee1cb4f..a679030188 100755 --- a/cmake/packaging/linux_wrapper.sh +++ b/cmake/packaging/linux_wrapper.sh @@ -1,6 +1,9 @@ #!/bin/sh # wrapper for bundled executables +# reset locale to avoid problems with decimal numbers +export LC_ALL=C + BASEDIR=$(dirname "$0") EXENAME=$(basename "$0") From 77808cd178797a7db972b78bf623b099d2c0bec5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 7 Aug 2023 14:33:48 -0400 Subject: [PATCH 0182/1002] add option to set visibility of log and chart windows from menu and in preferences --- tools/lammps-gui/lammpsgui.cpp | 44 +++++++++++++++++++++++++++++--- tools/lammps-gui/lammpsgui.h | 2 ++ tools/lammps-gui/lammpsgui.ui | 26 ++++++++++++++++++- tools/lammps-gui/preferences.cpp | 12 +++++++++ 4 files changed, 79 insertions(+), 5 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index d3cfd82271..de5beca6f2 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -143,7 +143,9 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); connect(ui->actionPreferences, &QAction::triggered, this, &LammpsGui::preferences); - connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); + connect(ui->actionView_Log_Window, &QAction::triggered, this, &LammpsGui::view_log); + connect(ui->actionView_Graph_Window, &QAction::triggered, this, &LammpsGui::view_chart); + connect(ui->textEdit->document(), &QTextDocument::modificationChanged, this, &LammpsGui::modified); @@ -404,7 +406,7 @@ void LammpsGui::logupdate() } } - // extract chache thermo data + // extract cached thermo data if (chartwindow) { void *ptr = lammps.last_thermo("step", 0); if (ptr) { @@ -567,7 +569,10 @@ void LammpsGui::run_buffer() QObject::connect(shortcut, &QShortcut::activated, logwindow, &LogWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), logwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); - logwindow->show(); + if (settings.value("viewlog",true).toBool()) + logwindow->show(); + else + logwindow->hide(); // if configured, delete old log window before opening new one if (settings.value("chartreplace", false).toBool()) delete chartwindow; @@ -580,7 +585,10 @@ void LammpsGui::run_buffer() QObject::connect(shortcut, &QShortcut::activated, chartwindow, &ChartWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), chartwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); - chartwindow->show(); + if (settings.value("viewchart",true).toBool()) + chartwindow->show(); + else + chartwindow->hide(); logupdater = new QTimer(this); connect(logupdater, &QTimer::timeout, this, &LammpsGui::logupdate); @@ -637,6 +645,34 @@ void LammpsGui::clear() ui->textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); } +void LammpsGui::view_chart() +{ + QSettings settings; + if (chartwindow) { + if (chartwindow->isVisible()) { + chartwindow->hide(); + settings.setValue("viewchart", false); + } else { + chartwindow->show(); + settings.setValue("viewchart", true); + } + } +} + +void LammpsGui::view_log() +{ + QSettings settings; + if (logwindow) { + if (logwindow->isVisible()) { + logwindow->hide(); + settings.setValue("viewlog", false); + } else { + logwindow->show(); + settings.setValue("viewlog", true); + } + } +} + void LammpsGui::about() { std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index a36dca2757..8a365adfcb 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -71,6 +71,8 @@ private slots: void run_buffer(); void stop_run(); void view_image(); + void view_chart(); + void view_log(); void about(); void help(); void manual(); diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 14f354b3c0..cab83abcf6 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -27,7 +27,7 @@ 0 0 600 - 24 + 23 @@ -73,9 +73,17 @@ + + + &View + + + + + @@ -346,6 +354,22 @@ Reset to &Defaults + + + + + + &Log Window + + + + + + + + &Chart Window + + diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index ca476d1b10..eb7745dc45 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -117,6 +117,10 @@ void Preferences::accept() if (box) settings->setValue("logreplace", box->isChecked()); box = tabWidget->findChild("chartreplace"); if (box) settings->setValue("chartreplace", box->isChecked()); + box = tabWidget->findChild("viewlog"); + if (box) settings->setValue("viewlog", box->isChecked()); + box = tabWidget->findChild("viewchart"); + if (box) settings->setValue("viewchart", box->isChecked()); QDialog::accept(); } @@ -131,6 +135,12 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa auto *cite = new QCheckBox("Include citation details"); cite->setObjectName("cite"); cite->setCheckState(settings->value("cite", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *logv = new QCheckBox("Show log window by default"); + logv->setObjectName("viewlog"); + logv->setCheckState(settings->value("viewlog", true).toBool() ? Qt::Checked : Qt::Unchecked); + auto *pltv = new QCheckBox("Show chart window by default"); + pltv->setObjectName("viewchart"); + pltv->setCheckState(settings->value("viewchart", true).toBool() ? Qt::Checked : Qt::Unchecked); auto *logr = new QCheckBox("Replace log window on new run"); logr->setObjectName("logreplace"); logr->setCheckState(settings->value("logreplace", false).toBool() ? Qt::Checked @@ -164,6 +174,8 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa #endif layout->addWidget(echo); layout->addWidget(cite); + layout->addWidget(logv); + layout->addWidget(pltv); layout->addWidget(logr); layout->addWidget(pltr); #if !defined(__APPLE__) From 65d5d6508aa7ee055bfa3a18b55f818cd674ae35 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 7 Aug 2023 14:38:08 -0400 Subject: [PATCH 0183/1002] force C locale from within the LAMMPS GUI app --- tools/lammps-gui/lammpsgui.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index de5beca6f2..ce3843b5a8 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -68,6 +69,9 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : status(nullptr), logwindow(nullptr), imagewindow(nullptr), chartwindow(nullptr), logupdater(nullptr), dirstatus(nullptr), progress(nullptr), prefdialog(nullptr) { + // enforce using the plain ASCII C locale within the GUI. + QLocale::setDefault(QLocale("C")); + ui->setupUi(this); this->setCentralWidget(ui->textEdit); highlighter = new Highlighter(ui->textEdit->document()); @@ -569,7 +573,7 @@ void LammpsGui::run_buffer() QObject::connect(shortcut, &QShortcut::activated, logwindow, &LogWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), logwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); - if (settings.value("viewlog",true).toBool()) + if (settings.value("viewlog", true).toBool()) logwindow->show(); else logwindow->hide(); @@ -585,7 +589,7 @@ void LammpsGui::run_buffer() QObject::connect(shortcut, &QShortcut::activated, chartwindow, &ChartWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), chartwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); - if (settings.value("viewchart",true).toBool()) + if (settings.value("viewchart", true).toBool()) chartwindow->show(); else chartwindow->hide(); From 407bcf30a0f562b4bc657aa1c1c6afe6bf2a8300 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 7 Aug 2023 16:37:09 -0400 Subject: [PATCH 0184/1002] step patch level for lammps-gui --- tools/lammps-gui/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index e177aed9fb..121e33d765 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.1 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.2 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) From 54c62c86a7ba1ac11d5bffe3b4a2ce19b0cb2ad3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 7 Aug 2023 22:53:49 -0400 Subject: [PATCH 0185/1002] fall back to "none" accelerator, if one was selected, but is no longer available --- tools/lammps-gui/TODO.md | 1 - tools/lammps-gui/lammpsgui.cpp | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index bb8c469542..abb0292387 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -3,7 +3,6 @@ LAMMPS-GUI TODO list: # Short term goals - use qgetenv, qputenv for portability -- update enabled/disabled status for accelerators during startup and fall back to None if needed. - rewrite syntax highlighting to be line oriented instead of word oriented. handle first part of line based on regular expressions, then advance and only highlight strings and numbers. handle "&" continuation and multiline strings with """ like C style comments in Qt docs example diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index ce3843b5a8..33771819aa 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -87,6 +87,25 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // restorge and initialize settings QSettings settings; + // switch configured accelerator back to "none" if needed. + int accel = settings.value("accelerator", AcceleratorTab::None).toInt(); + if (accel == AcceleratorTab::Opt) { + if (!lammps.config_has_package("OPT")) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::OpenMP) { + if (!lammps.config_has_package("OPENMP")) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::Intel) { + if (!lammps.config_has_package("INTEL")) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::Gpu) { + if (!lammps.config_has_package("GPU") || !lammps.has_gpu_device()) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::Kokkos) { + if (!lammps.config_has_package("KOKKOS")) + settings.setValue("accelerator", AcceleratorTab::None); + } + // check and initialize nthreads setting. Default is to use max if there // is no preference but do not override OMP_NUM_THREADS #if defined(_OPENMP) From 4397e13aaf3a5f29a1ed66dd8566b55bd71d852f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 06:53:06 -0400 Subject: [PATCH 0186/1002] simplify font selection and prepare for making it a preference --- tools/lammps-gui/DejaVuSansMono.ttf | Bin 343140 -> 0 bytes tools/lammps-gui/lammpsgui.cpp | 15 ++++++--------- tools/lammps-gui/lammpsgui.qrc | 1 - 3 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 tools/lammps-gui/DejaVuSansMono.ttf diff --git a/tools/lammps-gui/DejaVuSansMono.ttf b/tools/lammps-gui/DejaVuSansMono.ttf deleted file mode 100644 index d126ad605b72b5c8ccfdf4cdc8a7c5304bcf5d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343140 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¥<2kA+A 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

*z7(*)1;63^Yyp0jtR`&301_AYw=8^?Wf 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

;d<1Y;^BJHqz()YrcmQK+VAH2P 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 $i}Y`x{!@e;(o3= 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 U7rbQX3IBiow)`JIl}B#*A8`KU0{{R3 diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 33771819aa..e3ea8056f9 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -140,12 +140,12 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : lammps_args.push_back(mystrdup("none")); setWindowIcon(QIcon(":/lammps-icon-128x128.png")); -#if (__APPLE__) - QFont text_font("Menlo"); -#else - QFont text_font(":/Monospace.ttf"); -#endif - text_font.setStyleHint(QFont::TypeWriter); + + QFont all_font("Arial", -1); + all_font.setStyleHint(QFont::SansSerif, QFont::PreferOutline); + QApplication::setFont(all_font); + QFont text_font("Monospace"); + text_font.setStyleHint(QFont::Monospace, QFont::PreferOutline); ui->textEdit->document()->setDefaultFont(text_font); ui->textEdit->setMinimumSize(600, 400); @@ -729,9 +729,6 @@ void LammpsGui::about() msg.setIconPixmap(QPixmap(":/lammps-icon-128x128.png").scaled(64, 64)); msg.setStandardButtons(QMessageBox::Ok); QFont font; - font.setFixedPitch(true); - font.setStyleHint(QFont::TypeWriter); - font.setFamily("Arial"); font.setPointSize(8); msg.setFont(font); msg.exec(); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 391ebcc5d1..830a060510 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -1,6 +1,5 @@ - DejaVuSansMono.ttf lammps-icon-128x128.png From 7b1c00137ab479e0dcb4f4cdc68f4802415ab02c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 20:06:05 -0400 Subject: [PATCH 0187/1002] add preference option to select default and text font --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/highlighter.cpp | 10 +++--- tools/lammps-gui/lammpsgui.cpp | 7 ++++- tools/lammps-gui/lammpsgui.h | 7 ++++- tools/lammps-gui/preferences.cpp | 54 ++++++++++++++++++++++++++++++++ tools/lammps-gui/preferences.h | 4 +++ 6 files changed, 76 insertions(+), 8 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 121e33d765..38cff1df87 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.2 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.3 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index 84b9b0035f..c2afb28342 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -213,8 +213,8 @@ void Highlighter::highlightBlock(const QString &text) auto undo = QRegularExpression("^(unfix|uncompute|undump)\\s+(\\w+)").match(text); bool do_style = true; bool do_force = true; - bool do_defs = true; - bool do_undo = true; + bool do_defs = true; + bool do_undo = true; for (const HighlightingRule &rule : qAsConst(highlightingRules)) { QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text); while (matchIterator.hasNext()) { @@ -226,17 +226,17 @@ void Highlighter::highlightBlock(const QString &text) setFormat(style.capturedStart(3), style.capturedLength(3), stringFormat); setFormat(style.capturedStart(4), style.capturedLength(4), runFormat); do_style = false; - // special treatment for force styles styles + // special treatment for force styles styles } else if (force.hasMatch() && do_force) { setFormat(force.capturedStart(1), force.capturedLength(1), particleFormat); setFormat(force.capturedStart(2), force.capturedLength(2), runFormat); do_force = false; - // special treatment for undo commands + // special treatment for undo commands } else if (undo.hasMatch() && do_undo) { setFormat(undo.capturedStart(1), undo.capturedLength(1), defineFormat); setFormat(undo.capturedStart(2), undo.capturedLength(2), stringFormat); do_undo = false; - // special treatment for some definitions + // special treatment for some definitions } else if (defs.hasMatch() && do_defs) { setFormat(defs.capturedStart(1), defs.capturedLength(1), particleFormat); setFormat(defs.capturedStart(2), defs.capturedLength(2), stringFormat); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index e3ea8056f9..cf67916e0c 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -143,9 +143,14 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : QFont all_font("Arial", -1); all_font.setStyleHint(QFont::SansSerif, QFont::PreferOutline); + all_font.fromString(settings.value("allfont", all_font.toString()).toString()); + settings.setValue("allfont", all_font.toString()); QApplication::setFont(all_font); - QFont text_font("Monospace"); + + QFont text_font("Monospace", -1); text_font.setStyleHint(QFont::Monospace, QFont::PreferOutline); + text_font.fromString(settings.value("textfont", text_font.toString()).toString()); + settings.setValue("textfont", text_font.toString()); ui->textEdit->document()->setDefaultFont(text_font); ui->textEdit->setMinimumSize(600, 400); diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 8a365adfcb..45f840fab3 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -24,6 +24,8 @@ // forward declarations +class GeneralTab; + QT_BEGIN_NAMESPACE namespace Ui { class LammpsGui; @@ -45,6 +47,7 @@ class LammpsGui : public QMainWindow { Q_OBJECT friend class CodeEditor; + friend class GeneralTab; public: LammpsGui(QWidget *parent = nullptr, const char *filename = nullptr); @@ -81,8 +84,10 @@ private slots: void preferences(); void defaults(); -private: +protected: Ui::LammpsGui *ui; + +private: Highlighter *highlighter; StdCapture *capturer; QLabel *status; diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index eb7745dc45..f50a4be2c0 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -13,14 +13,18 @@ #include "preferences.h" +#include "lammpsgui.h" #include "lammpswrapper.h" +#include "ui_lammpsgui.h" +#include #include #include #include #include #include #include +#include #include #include #include @@ -121,6 +125,7 @@ void Preferences::accept() if (box) settings->setValue("viewlog", box->isChecked()); box = tabWidget->findChild("viewchart"); if (box) settings->setValue("viewchart", box->isChecked()); + QDialog::accept(); } @@ -158,6 +163,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa tmplayout->addWidget(tmplabel); tmplayout->addWidget(tmpedit); tmplayout->addWidget(tmpbrowse); + connect(tmpbrowse, &QPushButton::released, this, &GeneralTab::newtmpfolder); #endif #if defined(LAMMPS_GUI_USE_PLUGIN) @@ -172,6 +178,15 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath); #endif + + auto *fontlayout = new QHBoxLayout; + auto *getallfont = new QPushButton("Select Default Font..."); + auto *gettextfont = new QPushButton("Select Text Font..."); + fontlayout->addWidget(getallfont); + fontlayout->addWidget(gettextfont); + connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont); + connect(gettextfont, &QPushButton::released, this, &GeneralTab::newtextfont); + layout->addWidget(echo); layout->addWidget(cite); layout->addWidget(logv); @@ -185,10 +200,49 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa layout->addWidget(pluginlabel); layout->addLayout(pluginlayout); #endif + layout->addLayout(fontlayout); layout->addStretch(1); setLayout(layout); } +void GeneralTab::updatefonts(const QFont &all, const QFont &text) +{ + LammpsGui *main; + for (QWidget *widget : QApplication::topLevelWidgets()) + if (widget->objectName() == "LammpsGui") main = dynamic_cast(widget); + + QApplication::setFont(all); + main->ui->textEdit->document()->setDefaultFont(text); +} + +void GeneralTab::newallfont() +{ + QSettings settings; + QFont all, text; + all.fromString(settings.value("allfont", "").toString()); + text.fromString(settings.value("textfont", "").toString()); + + bool ok = false; + QFont font = QFontDialog::getFont(&ok, all, this, QString("Select Default Font")); + if (ok) updatefonts(font, text); + + settings.setValue("allfont", font.toString()); +} + +void GeneralTab::newtextfont() +{ + QSettings settings; + QFont all, text; + all.fromString(settings.value("allfont", "").toString()); + text.fromString(settings.value("textfont", "").toString()); + + bool ok = false; + QFont font = QFontDialog::getFont(&ok, text, this, QString("Select Text Font")); + if (ok) updatefonts(all, font); + + settings.setValue("textfont", font.toString()); +} + void GeneralTab::newtmpfolder() { QLineEdit *field = findChild("tmpedit"); diff --git a/tools/lammps-gui/preferences.h b/tools/lammps-gui/preferences.h index 46a512772a..fe487c8a7f 100644 --- a/tools/lammps-gui/preferences.h +++ b/tools/lammps-gui/preferences.h @@ -17,6 +17,7 @@ #include class QDialogButtonBox; +class QFont; class QSettings; class QTabWidget; class LammpsWrapper; @@ -49,8 +50,11 @@ public: private slots: void pluginpath(); void newtmpfolder(); + void newallfont(); + void newtextfont(); private: + void updatefonts(const QFont &all, const QFont &text); QSettings *settings; LammpsWrapper *lammps; }; From b7fad288c7d6a6fb73f0ed510fd933454286a150 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 20:30:05 -0400 Subject: [PATCH 0188/1002] fix ability to select a temporary directory (for image files) --- tools/lammps-gui/lammpsgui.cpp | 8 +++++++- tools/lammps-gui/preferences.cpp | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index cf67916e0c..19dcc8b108 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -132,7 +132,13 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : #else if (!tmpdir) tmpdir = "/tmp"; #endif - settings.setValue("tempdir", QString(tmpdir)); + + QFileInfo newtmp(settings.value("tempdir", QString(tmpdir)).toString()); + if (newtmp.isDir() && newtmp.isWritable()) { + settings.setValue("tempdir", newtmp.filePath()); + } else { + settings.setValue("tempdir", QString(tmpdir)); + } lammps_args.clear(); lammps_args.push_back(mystrdup("LAMMPS-GUI")); diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index f50a4be2c0..a7ee670694 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -98,6 +98,11 @@ void Preferences::accept() if (field) if (field->hasAcceptableInput()) settings->setValue("nthreads", field->text()); + // store temp dir + field = tabWidget->findChild("tmpedit"); + if (field) + if (field->hasAcceptableInput()) settings->setValue("tempdir", field->text()); + // store image width, height, and zoom settings->beginGroup("snapshot"); @@ -248,7 +253,11 @@ void GeneralTab::newtmpfolder() QLineEdit *field = findChild("tmpedit"); QString tmpdir = QFileDialog::getExistingDirectory(this, "Find Folder for Temporary Files", field->text()); - if (!tmpdir.isEmpty()) field->setText(tmpdir); + + if (!tmpdir.isEmpty()) { + QFileInfo newtmp(tmpdir); + if (newtmp.isDir() && newtmp.isWritable()) field->setText(tmpdir); + } } void GeneralTab::pluginpath() From 46dd9c854655e55a52fbfad79239647b9ae672e3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 20:56:36 -0400 Subject: [PATCH 0189/1002] make font size in "About" dialog 3/4 the default size. --- tools/lammps-gui/lammpsgui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 19dcc8b108..270499cbbd 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -740,7 +740,7 @@ void LammpsGui::about() msg.setIconPixmap(QPixmap(":/lammps-icon-128x128.png").scaled(64, 64)); msg.setStandardButtons(QMessageBox::Ok); QFont font; - font.setPointSize(8); + font.setPointSizeF(font.pointSizeF()*0.75); msg.setFont(font); msg.exec(); } From a3f742a405dbdebc0c275c5fd6726a37d1943dd8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 21:29:47 -0400 Subject: [PATCH 0190/1002] add info about accelerator support and communication --- tools/lammps-gui/lammpsgui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 270499cbbd..cd285fc72a 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -725,7 +725,7 @@ void LammpsGui::about() if (!lammps.is_running()) { start_lammps(); capturer->BeginCapture(); - lammps.command("info config"); + lammps.command("info accel config commu"); capturer->EndCapture(); info = capturer->GetCapture(); auto start = info.find("LAMMPS version:"); From a4ab3935b4c033658d62c502c07f0ff2f35f586c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 22:00:32 -0400 Subject: [PATCH 0191/1002] more "About" dialog box tweaks --- tools/lammps-gui/lammpsgui.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index cd285fc72a..be42d60572 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -725,7 +725,7 @@ void LammpsGui::about() if (!lammps.is_running()) { start_lammps(); capturer->BeginCapture(); - lammps.command("info accel config commu"); + lammps.command("info accel config"); capturer->EndCapture(); info = capturer->GetCapture(); auto start = info.find("LAMMPS version:"); @@ -738,10 +738,15 @@ void LammpsGui::about() msg.setText(version.c_str()); msg.setInformativeText(info.c_str()); msg.setIconPixmap(QPixmap(":/lammps-icon-128x128.png").scaled(64, 64)); - msg.setStandardButtons(QMessageBox::Ok); + msg.setStandardButtons(QMessageBox::Close); QFont font; - font.setPointSizeF(font.pointSizeF()*0.75); + font.setPointSizeF(font.pointSizeF() * 0.75); msg.setFont(font); + + auto *minwidth = new QSpacerItem(700, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + QGridLayout *layout = (QGridLayout *)msg.layout(); + layout->addItem(minwidth, layout->rowCount(), 0, 1, layout->columnCount()); + msg.exec(); } From ab4ae4f17742529e6d49a13f95e824706728e3d4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Aug 2023 22:00:49 -0400 Subject: [PATCH 0192/1002] recover lost "reset to defaults" action --- tools/lammps-gui/lammpsgui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index be42d60572..237a318cc0 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -177,6 +177,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); connect(ui->actionPreferences, &QAction::triggered, this, &LammpsGui::preferences); + connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); connect(ui->actionView_Log_Window, &QAction::triggered, this, &LammpsGui::view_log); connect(ui->actionView_Graph_Window, &QAction::triggered, this, &LammpsGui::view_chart); From 2f6dbfd239335d654fa4b04d3444869518734902 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 22:24:48 -0400 Subject: [PATCH 0193/1002] possible workaround for unit test failure taken from: https://github.com/open-mpi/ompi/issues/9656 --- unittest/formats/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 5b5dd056c9..9934c87ab1 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -40,6 +40,8 @@ set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${ add_executable(test_file_operations test_file_operations.cpp) target_link_libraries(test_file_operations PRIVATE lammps GTest::GMock) add_test(NAME FileOperations COMMAND test_file_operations) +# try to mitigate possible OpenMPI bug +set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "OMPI_MCA_sharedfp=\"^sm\"") add_executable(test_dump_atom test_dump_atom.cpp) target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock) From a56ac771323d0aaff17e2fef18d9ad9394a5b231 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 22:52:37 -0400 Subject: [PATCH 0194/1002] indexing bugfix for compute global/atom --- src/compute_global_atom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compute_global_atom.cpp b/src/compute_global_atom.cpp index c2880763a3..f968d0c014 100644 --- a/src/compute_global_atom.cpp +++ b/src/compute_global_atom.cpp @@ -438,8 +438,8 @@ void ComputeGlobalAtom::compute_peratom() } } } + ++m; } - ++m; } /* ---------------------------------------------------------------------- From 5d1c75e660f05779249769b8af6a08b536aff87b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 18:33:03 -0400 Subject: [PATCH 0195/1002] disable MPI-IO based restart writing (for now) --- unittest/formats/test_file_operations.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index f1a6ce42f5..7fd36b623c 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -324,7 +324,7 @@ TEST_F(FileOperationsTest, write_restart) command("write_restart multi-%.restart"); command("write_restart multi2-%.restart fileper 2"); command("write_restart multi3-%.restart nfile 1"); - if (Info::has_package("MPIIO")) command("write_restart test.restart.mpiio"); + // if (Info::has_package("MPIIO")) command("write_restart test.restart.mpiio"); END_HIDE_OUTPUT(); ASSERT_FILE_EXISTS("noinit.restart"); From bddb19fda138b2221c23fe8ba17d1d6bc24f5c49 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Aug 2023 20:48:03 -0400 Subject: [PATCH 0196/1002] disable *all* MPI-IO related testing --- unittest/formats/test_file_operations.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index 7fd36b623c..c2d2652b53 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -336,18 +336,19 @@ TEST_F(FileOperationsTest, write_restart) ASSERT_FILE_EXISTS("multi2-0.restart"); ASSERT_FILE_EXISTS("multi3-base.restart"); ASSERT_FILE_EXISTS("multi3-0.restart"); +#if 0 if (Info::has_package("MPIIO")) { ASSERT_FILE_EXISTS("test.restart.mpiio"); } if (!Info::has_package("MPIIO")) { - TEST_FAILURE(".*ERROR: Writing to MPI-IO filename when MPIIO package is not inst.*", - command("write_restart test.restart.mpiio");); + TEST_FAILURE(".*ERROR: Writing to MPI-IO filename when MPIIO package is not inst.*", + command("write_restart test.restart.mpiio");); } else { - TEST_FAILURE(".*ERROR: Restart file MPI-IO output not allowed with % in filename.*", + TEST_FAILURE(".*ERROR: Restart file MPI-IO output not allowed with % in filename.*", command("write_restart test.restart-%.mpiio");); } - +#endif TEST_FAILURE(".*ERROR: Illegal write_restart command.*", command("write_restart");); TEST_FAILURE(".*ERROR: Unknown write_restart keyword: xxxx.*", command("write_restart test.restart xxxx");); @@ -401,7 +402,7 @@ TEST_F(FileOperationsTest, write_restart) delete_file("multi3-base.restart"); delete_file("multi3-0.restart"); delete_file("triclinic.restart"); - if (Info::has_package("MPIIO")) delete_file("test.restart.mpiio"); + //if (Info::has_package("MPIIO")) delete_file("test.restart.mpiio"); } TEST_F(FileOperationsTest, write_data) From 2f415c8b62f86e8aecc76a874e0ee02664cbd630 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 9 Aug 2023 09:42:01 -0400 Subject: [PATCH 0197/1002] bugfix for pair style dpd/gpu from Trung --- lib/gpu/lal_dpd.cu | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/gpu/lal_dpd.cu b/lib/gpu/lal_dpd.cu index e9d3279378..c6fd4f0e46 100644 --- a/lib/gpu/lal_dpd.cu +++ b/lib/gpu/lal_dpd.cu @@ -301,9 +301,10 @@ __kernel void k_dpd_fast(const __global numtyp4 *restrict x_, __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; __local numtyp sp_sqrt[4]; - if (tid<4) + if (tid<4) { sp_lj[tid]=sp_lj_in[tid]; sp_sqrt[tid]=sp_sqrt_in[tid]; + } if (tid Date: Wed, 9 Aug 2023 20:26:18 -0400 Subject: [PATCH 0198/1002] small tweak --- tools/lammps-gui/lammpsrunner.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsrunner.h b/tools/lammps-gui/lammpsrunner.h index a8cd6a1502..3816010868 100644 --- a/tools/lammps-gui/lammpsrunner.h +++ b/tools/lammps-gui/lammpsrunner.h @@ -27,7 +27,6 @@ public: // execute LAMMPS in runner thread void run() override { - lammps->command("clear"); lammps->commands_string(input); delete[] input; emit resultReady(); @@ -38,6 +37,7 @@ public: { lammps = _lammps; input = _input; + lammps->command("clear"); } signals: From f1ba4227dce874a31250f7d807857ea560a9895d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 9 Aug 2023 20:26:26 -0400 Subject: [PATCH 0199/1002] update TODO list --- tools/lammps-gui/TODO.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index abb0292387..23728c60d9 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -11,6 +11,9 @@ LAMMPS-GUI TODO list: - add multi-tab settings dialog where certain properties can be set through customizing the LAMMPS command line + select Font - add list of 5(?) most recently opened/saved files to file dialog (and also write to settings state on exit) (note: must store full path!) +- need to handle "label" and "jump" commands from within +- switch processing of input to line based commands +- switch input file editor to read-only while loop is running # Long term ideas - rewrite entire application to either use QtCreator for everything or just build the App and its layout manually From cb4eee809d69210897a16c83dc0ecdf92e27c7cd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 9 Aug 2023 22:22:17 -0400 Subject: [PATCH 0200/1002] add support to store the 5 most recent files and add them to the file menu --- tools/lammps-gui/TODO.md | 7 +-- tools/lammps-gui/lammpsgui.cpp | 83 +++++++++++++++++++++++++++++++-- tools/lammps-gui/lammpsgui.h | 5 +- tools/lammps-gui/lammpsgui.ui | 40 ++++++++++++++-- tools/lammps-gui/lammpsrunner.h | 2 +- 5 files changed, 123 insertions(+), 14 deletions(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 23728c60d9..8b08708ffc 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -8,11 +8,8 @@ LAMMPS-GUI TODO list: handle "&" continuation and multiline strings with """ like C style comments in Qt docs example - add CTRL-q hotkey to log windows so you can exit the entire application (add do you really want to? dialog to this) - add "syntax check" with enabled "-skiprun" flag -- add multi-tab settings dialog where certain properties can be set through customizing the LAMMPS command line - + select Font -- add list of 5(?) most recently opened/saved files to file dialog (and also write to settings state on exit) (note: must store full path!) -- need to handle "label" and "jump" commands from within -- switch processing of input to line based commands +- need to handle "label" and "jump" commands from within ? +- switch processing of input to line based commands or? - switch input file editor to read-only while loop is running # Long term ideas diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 237a318cc0..f69d164454 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -55,6 +55,7 @@ #endif static const QString blank(" "); +static constexpr int MAXRECENT = 5; // duplicate string static char *mystrdup(const std::string &text) @@ -72,19 +73,21 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // enforce using the plain ASCII C locale within the GUI. QLocale::setDefault(QLocale("C")); + // register QList + qRegisterMetaTypeStreamOperators>("QList"); + ui->setupUi(this); this->setCentralWidget(ui->textEdit); highlighter = new Highlighter(ui->textEdit->document()); capturer = new StdCapture; current_file.clear(); current_dir = QDir(".").absolutePath(); - recent_files.clear(); QCoreApplication::setOrganizationName("The LAMMPS Developers"); QCoreApplication::setOrganizationDomain("lammps.org"); QCoreApplication::setApplicationName("LAMMPS GUI"); - // restorge and initialize settings + // restore and initialize settings QSettings settings; // switch configured accelerator back to "none" if needed. @@ -160,6 +163,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : ui->textEdit->document()->setDefaultFont(text_font); ui->textEdit->setMinimumSize(600, 400); + update_recents(); + connect(ui->actionNew, &QAction::triggered, this, &LammpsGui::new_document); connect(ui->actionOpen, &QAction::triggered, this, &LammpsGui::open); connect(ui->actionSave, &QAction::triggered, this, &LammpsGui::save); @@ -180,6 +185,11 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); connect(ui->actionView_Log_Window, &QAction::triggered, this, &LammpsGui::view_log); connect(ui->actionView_Graph_Window, &QAction::triggered, this, &LammpsGui::view_chart); + connect(ui->action_1, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_2, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_3, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_4, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_5, &QAction::triggered, this, &LammpsGui::open_recent); connect(ui->textEdit->document(), &QTextDocument::modificationChanged, this, &LammpsGui::modified); @@ -260,6 +270,66 @@ void LammpsGui::open() open_file(fileName); } +void LammpsGui::open_recent() +{ + QAction *act = qobject_cast(sender()); + if (act) open_file(act->data().toString()); +} + +void LammpsGui::update_recents(const QString &filename) +{ + QSettings settings; + recent = settings.value("recent").value>(); + + for (int i = 0; i < recent.size(); ++i) { + QFileInfo fi(recent[i]); + if (!fi.isReadable()) { + recent.removeAt(i); + i = 0; + } + } + + if (!filename.isEmpty() && !recent.contains(filename)) recent.prepend(filename); + if (recent.size() > 5) recent.removeLast(); + settings.setValue("recent", QVariant::fromValue(recent)); + + ui->action_1->setVisible(false); + if ((recent.size() > 0) && !recent[0].isEmpty()) { + QFileInfo fi(recent[0]); + ui->action_1->setText(QString("1. ") + fi.fileName()); + ui->action_1->setData(recent[0]); + ui->action_1->setVisible(true); + } + ui->action_2->setVisible(false); + if ((recent.size() > 1) && !recent[1].isEmpty()) { + QFileInfo fi(recent[1]); + ui->action_2->setText(QString("2. ") + fi.fileName()); + ui->action_2->setData(recent[1]); + ui->action_2->setVisible(true); + } + ui->action_3->setVisible(false); + if ((recent.size() > 2) && !recent[2].isEmpty()) { + QFileInfo fi(recent[2]); + ui->action_3->setText(QString("3. ") + fi.fileName()); + ui->action_3->setData(recent[2]); + ui->action_3->setVisible(true); + } + ui->action_4->setVisible(false); + if ((recent.size() > 3) && !recent[3].isEmpty()) { + QFileInfo fi(recent[3]); + ui->action_4->setText(QString("4. ") + fi.fileName()); + ui->action_4->setData(recent[0]); + ui->action_4->setVisible(true); + } + ui->action_5->setVisible(false); + if ((recent.size() > 4) && !recent[4].isEmpty()) { + QFileInfo fi(recent[4]); + ui->action_5->setText(QString("5. ") + fi.fileName()); + ui->action_5->setData(recent[0]); + ui->action_5->setVisible(true); + } +} + // open file and switch CWD to path of file void LammpsGui::open_file(const QString &fileName) { @@ -291,6 +361,8 @@ void LammpsGui::open_file(const QString &fileName) current_dir = path.absolutePath(); QFile file(path.absoluteFilePath()); + update_recents(path.absoluteFilePath()); + QDir::setCurrent(current_dir); if (!file.open(QIODevice::ReadOnly | QFile::Text)) { QMessageBox::warning(this, "Warning", @@ -310,16 +382,19 @@ void LammpsGui::open_file(const QString &fileName) void LammpsGui::write_file(const QString &fileName) { - QFile file(fileName); - QFileInfo path(file); + QFileInfo path(fileName); current_file = path.fileName(); current_dir = path.absolutePath(); + QFile file(path.absoluteFilePath()); if (!file.open(QIODevice::WriteOnly | QFile::Text)) { QMessageBox::warning(this, "Warning", "Cannot save file: " + file.errorString()); return; } setWindowTitle(QString("LAMMPS-GUI - " + current_file)); + + update_recents(path.absoluteFilePath()); + QTextStream out(&file); QString text = ui->textEdit->toPlainText(); out << text; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 45f840fab3..d539b51529 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -56,12 +56,14 @@ public: protected: void open_file(const QString &filename); void write_file(const QString &filename); + void update_recents(const QString &filename = ""); void start_lammps(); void run_done(); private slots: void new_document(); void open(); + void open_recent(); void save(); void save_as(); void quit(); @@ -101,10 +103,11 @@ private: QString current_file; QString current_dir; + QList recent; + LammpsWrapper lammps; std::string plugin_path; bool is_running; - QList recent_files; std::vector lammps_args; }; #endif // LAMMPSGUI_H diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index cab83abcf6..3031b31d23 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -27,7 +27,7 @@ 0 0 600 - 23 + 24 @@ -35,8 +35,15 @@ &File + + + + + + + @@ -356,7 +363,8 @@ - + + .. &Log Window @@ -364,12 +372,38 @@ - + + .. &Chart Window + + + &1. + + + + + &2. + + + + + &3. + + + + + &4. + + + + + &5. + + diff --git a/tools/lammps-gui/lammpsrunner.h b/tools/lammps-gui/lammpsrunner.h index 3816010868..72ad52986e 100644 --- a/tools/lammps-gui/lammpsrunner.h +++ b/tools/lammps-gui/lammpsrunner.h @@ -32,7 +32,7 @@ public: emit resultReady(); } - // transfer info to worker thread + // transfer info to worker thread and reset LAMMPS instance void setup_run(LammpsWrapper *_lammps, const char *_input) { lammps = _lammps; From 2b7873a5bd732ca47d385ca797200847a3062f8f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 9 Aug 2023 22:55:31 -0400 Subject: [PATCH 0201/1002] fix typos --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/lammpsgui.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 38cff1df87..8830e5b152 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.3 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.4 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index f69d164454..b32a6d4f3b 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -318,14 +318,14 @@ void LammpsGui::update_recents(const QString &filename) if ((recent.size() > 3) && !recent[3].isEmpty()) { QFileInfo fi(recent[3]); ui->action_4->setText(QString("4. ") + fi.fileName()); - ui->action_4->setData(recent[0]); + ui->action_4->setData(recent[3]); ui->action_4->setVisible(true); } ui->action_5->setVisible(false); if ((recent.size() > 4) && !recent[4].isEmpty()) { QFileInfo fi(recent[4]); ui->action_5->setText(QString("5. ") + fi.fileName()); - ui->action_5->setData(recent[0]); + ui->action_5->setData(recent[4]); ui->action_5->setVisible(true); } } From 6ff85cab7f3bc8cec12470fadd675945561a0c39 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 10 Aug 2023 00:34:52 -0500 Subject: [PATCH 0202/1002] Adding fix spring/self/kk, needed to add maxatom to fix spring/self, may need resize xoriginal as well --- src/fix_spring_self.cpp | 1 + src/fix_spring_self.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fix_spring_self.cpp b/src/fix_spring_self.cpp index 550b3afc4d..31f54caef2 100644 --- a/src/fix_spring_self.cpp +++ b/src/fix_spring_self.cpp @@ -73,6 +73,7 @@ FixSpringSelf::FixSpringSelf(LAMMPS *lmp, int narg, char **arg) : // register with Atom class xoriginal = nullptr; + maxatom = atom->nmax; FixSpringSelf::grow_arrays(atom->nmax); atom->add_callback(Atom::GROW); atom->add_callback(Atom::RESTART); diff --git a/src/fix_spring_self.h b/src/fix_spring_self.h index 59dba78e43..24a03aa92e 100644 --- a/src/fix_spring_self.h +++ b/src/fix_spring_self.h @@ -47,11 +47,12 @@ class FixSpringSelf : public Fix { int size_restart(int) override; int maxsize_restart() override; - private: + protected: double k, espring; double **xoriginal; // original coords of atoms int xflag, yflag, zflag; int ilevel_respa; + int maxatom; }; } // namespace LAMMPS_NS From 4bb3ecd09c1a88768e556be76f8707a685c33680 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 10 Aug 2023 00:36:33 -0500 Subject: [PATCH 0203/1002] Added the fix spring/self/kk source files --- src/KOKKOS/fix_spring_self_kokkos.cpp | 152 ++++++++++++++++++++++++++ src/KOKKOS/fix_spring_self_kokkos.h | 57 ++++++++++ 2 files changed, 209 insertions(+) create mode 100644 src/KOKKOS/fix_spring_self_kokkos.cpp create mode 100644 src/KOKKOS/fix_spring_self_kokkos.h diff --git a/src/KOKKOS/fix_spring_self_kokkos.cpp b/src/KOKKOS/fix_spring_self_kokkos.cpp new file mode 100644 index 0000000000..fe6d3a3d50 --- /dev/null +++ b/src/KOKKOS/fix_spring_self_kokkos.cpp @@ -0,0 +1,152 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_spring_self_kokkos.h" + +#include "atom_kokkos.h" +#include "update.h" +#include "modify.h" +#include "domain_kokkos.h" +#include "region.h" +#include "input.h" +#include "variable.h" +#include "memory_kokkos.h" +#include "error.h" +#include "atom_masks.h" +#include "kokkos_base.h" + +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +template +FixSpringSelfKokkos::FixSpringSelfKokkos(LAMMPS *lmp, int narg, char **arg) : + FixSpringSelf(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + maxatom = atom->nmax; + memory->destroy(xoriginal); + memoryKK->create_kokkos(k_xoriginal,xoriginal,maxatom,3,"spring/self:xoriginal"); + d_xoriginal = k_xoriginal.view(); +} + +/* ---------------------------------------------------------------------- */ + +template +FixSpringSelfKokkos::~FixSpringSelfKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_xoriginal,xoriginal); + xoriginal = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixSpringSelfKokkos::init() +{ + FixSpringSelf::init(); + + if (utils::strmatch(update->integrate_style,"^respa")) + error->all(FLERR,"Cannot (yet) use respa with Kokkos"); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixSpringSelfKokkos::post_force(int /*vflag*/) +{ + atomKK->sync(execution_space, X_MASK | F_MASK | MASK_MASK); + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + image = atomKK->k_image.view(); + mask = atomKK->k_mask.view(); + + int nlocal = atom->nlocal; + + // reallocate xoriginal array if necessary + + if (atom->nmax > maxatom) { + maxatom = atom->nmax; + memoryKK->destroy_kokkos(k_xoriginal,xoriginal); + memoryKK->create_kokkos(k_xoriginal,xoriginal,maxatom,3,"fix_spring/self:xoriginal"); + d_xoriginal = k_xoriginal.view(); + } + + double espring_kk; + + + copymode = 1; + //Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this, espring_kk); + { + // local variables for lambda capture + auto prd = Few(domain->prd); + auto h = Few(domain->h); + auto triclinic = domain->triclinic; + auto l_xflag = xflag; + auto l_yflag = yflag; + auto l_zflag = zflag; + auto l_k = k; + auto l_x = x; + auto l_xoriginal = d_xoriginal; + auto l_f = f; + auto l_mask = mask; + auto l_image = image; + auto l_groupbit = groupbit; + + Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(const int& i, double& espring_kk) { + if (l_mask[i] & l_groupbit) { + Few x_i; + x_i[0] = l_x(i,0); + x_i[1] = l_x(i,1); + x_i[2] = l_x(i,2); + auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,l_image(i)); + auto dx = unwrap[0] - l_xoriginal(i, 0); + auto dy = unwrap[1] - l_xoriginal(i, 1); + auto dz = unwrap[2] - l_xoriginal(i, 2); + if (!l_xflag) dx = 0.0; + if (!l_yflag) dy = 0.0; + if (!l_zflag) dz = 0.0; + l_f(i,0) -= l_k*dx; + l_f(i,1) -= l_k*dy; + l_f(i,2) -= l_k*dz; + espring_kk += l_k * (dx*dx + dy*dy + dz*dz); + } + },espring_kk); + } + + copymode = 0; + + atomKK->modified(execution_space, F_MASK); + + espring = 0.5*espring_kk; +} + +namespace LAMMPS_NS { +template class FixSpringSelfKokkos; +#ifdef LMP_KOKKOS_GPU +template class FixSpringSelfKokkos; +#endif +} + diff --git a/src/KOKKOS/fix_spring_self_kokkos.h b/src/KOKKOS/fix_spring_self_kokkos.h new file mode 100644 index 0000000000..58dcbc525e --- /dev/null +++ b/src/KOKKOS/fix_spring_self_kokkos.h @@ -0,0 +1,57 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(spring/self/kk,FixSpringSelfKokkos); +FixStyle(spring/self/kk/device,FixSpringSelfKokkos); +FixStyle(spring/self/kk/host,FixSpringSelfKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_FIX_SPRING_SELF_KOKKOS_H +#define LMP_FIX_SPRING_SELF_KOKKOS_H + +#include "fix_spring_self.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixSpringSelfKokkos : public FixSpringSelf { + public: + typedef DeviceType device_type; + typedef double value_type; + typedef ArrayTypes AT; + + FixSpringSelfKokkos(class LAMMPS *, int, char **); + ~FixSpringSelfKokkos() override; + void init() override; + void post_force(int) override; + + private: + DAT::tdual_ffloat_2d k_xoriginal; + typename AT::t_ffloat_2d_randomread d_xoriginal; + + typename AT::t_x_array_randomread x; + typename AT::t_f_array f; + typename AT::t_imageint_1d_randomread image; + typename AT::t_int_1d_randomread mask; +}; + +} + +#endif +#endif + From 54edfd16042a9c4781dd8c0dd51d9ede1a908407 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 06:14:41 -0400 Subject: [PATCH 0204/1002] update TODO, remove useless file --- tools/lammps-gui/CMakeLists.txt.user | 322 --------------------------- tools/lammps-gui/TODO.md | 2 + 2 files changed, 2 insertions(+), 322 deletions(-) delete mode 100644 tools/lammps-gui/CMakeLists.txt.user diff --git a/tools/lammps-gui/CMakeLists.txt.user b/tools/lammps-gui/CMakeLists.txt.user deleted file mode 100644 index eaa7cf2ae6..0000000000 --- a/tools/lammps-gui/CMakeLists.txt.user +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - EnvironmentId - {ed0d4570-2589-4771-8b12-00999b3e43be} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - false - true - false - 0 - true - true - 0 - 8 - true - false - 1 - true - true - true - *.md, *.MD, Makefile - false - true - - - - ProjectExplorer.Project.PluginSettings - - - true - false - true - true - true - true - - - 0 - true - - true - Builtin.BuildSystem - - true - true - Builtin.DefaultTidyAndClazy - 2 - - - - true - - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - Desktop - {287695d9-d112-4f65-92b5-675d1d6bc655} - 0 - 0 - 0 - - Debug - -DCMAKE_GENERATOR:STRING=Ninja --DCMAKE_BUILD_TYPE:STRING=Debug --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} - /home/akohlmey/compile/lammps/tools/build-lammps-gui-Desktop-Debug - - - - all - - true - Build - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - clean - - true - Build - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Debug - CMakeProjectManager.CMakeBuildConfiguration - - - Release - -DCMAKE_GENERATOR:STRING=Ninja --DCMAKE_BUILD_TYPE:STRING=Release --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} - /home/akohlmey/compile/lammps/tools/build-lammps-gui-Desktop-Release - - - - all - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - clean - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release - CMakeProjectManager.CMakeBuildConfiguration - - - RelWithDebInfo - -DCMAKE_GENERATOR:STRING=Ninja --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} - /home/akohlmey/compile/lammps/tools/build-lammps-gui-Desktop-RelWithDebInfo - - - - all - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - clean - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release with Debug Information - CMakeProjectManager.CMakeBuildConfiguration - - - MinSizeRel - -DCMAKE_GENERATOR:STRING=Ninja --DCMAKE_BUILD_TYPE:STRING=MinSizeRel --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} - /home/akohlmey/compile/lammps/tools/build-lammps-gui-Desktop-MinSizeRel - - - - all - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - clean - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Minimum Size Release - CMakeProjectManager.CMakeBuildConfiguration - - 4 - - - 0 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - - false - ProjectExplorer.DefaultDeployConfiguration - - 1 - - true - true - true - - 2 - - lammps-gui - CMakeProjectManager.CMakeRunConfiguration.lammps-gui - lammps-gui - false - true - true - false - true - /home/akohlmey/compile/lammps/tools/build-lammps-gui-Desktop-Debug - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 22 - - - Version - 22 - - diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 8b08708ffc..106a1fadc7 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -11,9 +11,11 @@ LAMMPS-GUI TODO list: - need to handle "label" and "jump" commands from within ? - switch processing of input to line based commands or? - switch input file editor to read-only while loop is running +- add Variables menu entry where command line variables can be set # Long term ideas - rewrite entire application to either use QtCreator for everything or just build the App and its layout manually +- port to Qt6 - also a rewrite should establish consistent naming conventions. now we have a mix of LAMMPS style, Qt style, and others. - add option to attach a debugger to the running program (highly non-portable, need customization support in preferences) - write a "wizard" dialog that can be used for beginners to create an input file template for a few typical use scenarios From 506383ab7ec2866c34ded72e142eec7a9c9a91ab Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 06:35:34 -0400 Subject: [PATCH 0205/1002] more ideas --- tools/lammps-gui/TODO.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 106a1fadc7..5bb8d18cd2 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -12,8 +12,12 @@ LAMMPS-GUI TODO list: - switch processing of input to line based commands or? - switch input file editor to read-only while loop is running - add Variables menu entry where command line variables can be set +- embed all icons/graphics # Long term ideas +- add feature to LAMMPS (to the LAMMPS class) to store current file name and line number, update while reading/parsing + use in error messages + add API to library interface to query this info and use it for highlighting in text editor - rewrite entire application to either use QtCreator for everything or just build the App and its layout manually - port to Qt6 - also a rewrite should establish consistent naming conventions. now we have a mix of LAMMPS style, Qt style, and others. From cb2627220ef9a62f293495ed9b9a4cec18c54e46 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 13:29:27 -0400 Subject: [PATCH 0206/1002] add a few more ideas --- tools/lammps-gui/TODO.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 5bb8d18cd2..62e0598ebf 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,7 +2,11 @@ LAMMPS-GUI TODO list: # Short term goals +- add option to image viewer to select a group and rerender, similar for the two rotate options with +/- buttons and +/- zoom buttons. + add checkbutton for HQ rendering (i.e. SSAO) + also move the image setting preferences there and remove scrollwheel zoom support. - use qgetenv, qputenv for portability +- write LAMMPS GUI Howto showing/explaining options -> simplify docs and readme - rewrite syntax highlighting to be line oriented instead of word oriented. handle first part of line based on regular expressions, then advance and only highlight strings and numbers. handle "&" continuation and multiline strings with """ like C style comments in Qt docs example From 4fb51358877dad41c15c8cd11e3570a678074acd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 19:57:54 -0400 Subject: [PATCH 0207/1002] remove scrollwheel support, add prototype buttons --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/TODO.md | 1 + tools/lammps-gui/imageviewer.cpp | 57 ++++++++++++++------------------ tools/lammps-gui/imageviewer.h | 13 +++++--- tools/lammps-gui/lammpsgui.cpp | 8 ++--- 5 files changed, 37 insertions(+), 44 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 8830e5b152..45ef858b3c 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.4 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.5 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 62e0598ebf..53f020a401 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -6,6 +6,7 @@ LAMMPS-GUI TODO list: add checkbutton for HQ rendering (i.e. SSAO) also move the image setting preferences there and remove scrollwheel zoom support. - use qgetenv, qputenv for portability +- use QFile/QDir/QFileInto for portable file and directory operations. - write LAMMPS GUI Howto showing/explaining options -> simplify docs and readme - rewrite syntax highlighting to be line oriented instead of word oriented. handle first part of line based on regular expressions, then advance and only highlight strings and numbers. diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index ec2f6cfbc4..a8879095ee 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include "imageviewer.h" +#include "lammpswrapper.h" #include #include @@ -25,15 +26,18 @@ #include #include #include +#include #include #include #include #include #include #include +#include -ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : - QDialog(parent), imageLabel(new QLabel), scrollArea(new QScrollArea), menuBar(new QMenuBar) +ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) : + QDialog(parent), imageLabel(new QLabel), scrollArea(new QScrollArea), menuBar(new QMenuBar), + lammps(_lammps), group("all") { imageLabel->setBackgroundRole(QPalette::Base); imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); @@ -42,8 +46,6 @@ ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageLabel); - scrollArea->setMouseTracking(true); - scrollArea->installEventFilter(this); scrollArea->setVisible(false); buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); @@ -52,7 +54,17 @@ ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(menuBar); + QHBoxLayout *menuLayout = new QHBoxLayout; + menuLayout->addWidget(menuBar); + menuLayout->addWidget(new QPushButton("Zoom Out")); + menuLayout->addWidget(new QPushButton("Zoom In")); + menuLayout->addWidget(new QPushButton("Rotate Left")); + menuLayout->addWidget(new QPushButton("Rotate Right")); + menuLayout->addWidget(new QPushButton("Rotate Up")); + menuLayout->addWidget(new QPushButton("Rotate Down")); + menuLayout->addWidget(new QComboBox); + + mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).completeBaseName()); @@ -90,12 +102,12 @@ void ImageViewer::copy() {} void ImageViewer::zoomIn() { - scaleImage(1.1); + scaleImage(1.25); } void ImageViewer::zoomOut() { - scaleImage(0.9); + scaleImage(0.8); } void ImageViewer::normalSize() @@ -133,16 +145,16 @@ void ImageViewer::createActions() QMenu *viewMenu = menuBar->addMenu(tr("&View")); - zoomInAct = viewMenu->addAction(tr("Zoom &In (10%)"), this, &ImageViewer::zoomIn); + zoomInAct = viewMenu->addAction(tr("Image Zoom &In (25%)"), this, &ImageViewer::zoomIn); zoomInAct->setShortcut(QKeySequence::ZoomIn); zoomInAct->setEnabled(false); - zoomOutAct = viewMenu->addAction(tr("Zoom &Out (10%)"), this, &ImageViewer::zoomOut); + zoomOutAct = viewMenu->addAction(tr("Image Zoom &Out (25%)"), this, &ImageViewer::zoomOut); zoomOutAct->setShortcut(QKeySequence::ZoomOut); zoomOutAct->setEnabled(false); - normalSizeAct = viewMenu->addAction(tr("&Normal Size"), this, &ImageViewer::normalSize); - normalSizeAct->setShortcut(tr("Ctrl+S")); + normalSizeAct = viewMenu->addAction(tr("&Reset Image Size"), this, &ImageViewer::normalSize); + normalSizeAct->setShortcut(tr("Ctrl+0")); normalSizeAct->setEnabled(false); viewMenu->addSeparator(); @@ -150,7 +162,7 @@ void ImageViewer::createActions() fitToWindowAct = viewMenu->addAction(tr("&Fit to Window"), this, &ImageViewer::fitToWindow); fitToWindowAct->setEnabled(false); fitToWindowAct->setCheckable(true); - fitToWindowAct->setShortcut(tr("Ctrl+F")); + fitToWindowAct->setShortcut(tr("Ctrl+=")); } void ImageViewer::updateActions() @@ -183,27 +195,6 @@ void ImageViewer::adjustScrollBar(QScrollBar *scrollBar, double factor) int(factor * scrollBar->value() + ((factor - 1) * scrollBar->pageStep() / 2))); } -bool ImageViewer::eventFilter(QObject *, QEvent *event) -{ - if (event->type() == QEvent::Wheel) { - wheelEvent((QWheelEvent *)event); - return true; - } - return false; -} - -void ImageViewer::wheelEvent(QWheelEvent *event) -{ - QPoint num = event->angleDelta(); - if (!num.isNull()) { - if (num.y() > 0) - zoomIn(); - else - zoomOut(); - } - event->accept(); -} - // Local Variables: // c-basic-offset: 4 // End: diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index edd66c9e73..630d72944c 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -14,8 +14,10 @@ #ifndef IMAGEVIEWER_H #define IMAGEVIEWER_H +#include #include #include +#include class QAction; class QMenuBar; @@ -25,13 +27,15 @@ class QObject; class QScrollArea; class QScrollBar; class QStatusBar; -class QWheelEvent; +class LammpsWrapper; +class QComboBox; class ImageViewer : public QDialog { Q_OBJECT public: - explicit ImageViewer(const QString &fileName, QWidget *parent = nullptr); + explicit ImageViewer(const QString &fileName, LammpsWrapper *_lammps, + QWidget *parent = nullptr); private slots: void saveAs(); @@ -47,8 +51,6 @@ private: void saveFile(const QString &fileName); void scaleImage(double factor); void adjustScrollBar(QScrollBar *scrollBar, double factor); - bool eventFilter(QObject *object, QEvent *event); - void wheelEvent(QWheelEvent *event); private: QImage image; @@ -64,6 +66,9 @@ private: QAction *zoomOutAct; QAction *normalSizeAct; QAction *fitToWindowAct; + + LammpsWrapper *lammps; + QString group; }; #endif diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index b32a6d4f3b..e62438e665 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -736,12 +736,8 @@ void LammpsGui::view_image() settings.endGroup(); lammps.command(dumpcmd.toLocal8Bit()); - imagewindow = new ImageViewer(dumpfile); -#if defined(_WIN32) - _unlink(dumpfile.toLocal8Bit()); -#else - unlink(dumpfile.toLocal8Bit()); -#endif + imagewindow = new ImageViewer(dumpfile, &lammps); + QFile::remove(dumpfile); } else { QMessageBox::warning(this, "ImageViewer Error", "Cannot create snapshot image while LAMMPS is running"); From 55d0b84428de3eafdfa87d5636ea8acadf0e6f27 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 21:16:17 -0400 Subject: [PATCH 0208/1002] add support for Image rendering with up to 4x4 antialiasing and SSAO mode --- tools/lammps-gui/imageviewer.cpp | 12 ++++++++++-- tools/lammps-gui/lammpsgui.cpp | 8 ++++++-- tools/lammps-gui/preferences.cpp | 32 ++++++++++++++++++++++++++------ 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index a8879095ee..6551d3e1d7 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -63,7 +64,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(new QPushButton("Rotate Up")); menuLayout->addWidget(new QPushButton("Rotate Down")); menuLayout->addWidget(new QComboBox); - + mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); @@ -74,12 +75,19 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QImageReader reader(fileName); reader.setAutoTransform(true); const QImage newImage = reader.read(); + if (newImage.isNull()) { QMessageBox::warning(this, QGuiApplication::applicationDisplayName(), tr("Cannot load %1: %2").arg(fileName, reader.errorString())); return; } - image = newImage; + QSettings settings; + settings.beginGroup("snapshot"); + int xsize = settings.value("xsize", 800).toInt(); + int ysize = settings.value("ysize", 600).toInt(); + settings.endGroup(); + // scale back to achieve antialiasing + image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imageLabel->setPixmap(QPixmap::fromImage(image)); scaleFactor = 1.0; resize(image.width() + 20, image.height() + 50); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index e62438e665..1fe7f7c3e1 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -728,11 +728,15 @@ void LammpsGui::view_image() dumpcmd += dumpfile; settings.beginGroup("snapshot"); + int aa = settings.value("antialias", 0).toInt() + 1; + int xsize = settings.value("xsize", 800).toInt() * aa; + int ysize = settings.value("ysize", 800).toInt() * aa; + dumpcmd += blank + settings.value("color", "type").toString(); dumpcmd += blank + settings.value("diameter", "type").toString(); - dumpcmd += QString(" size ") + settings.value("xsize", "800").toString(); - dumpcmd += blank + settings.value("ysize", "600").toString(); + dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); dumpcmd += QString(" zoom ") + settings.value("zoom", "1.0").toString(); + if (settings.value("ssao",false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); settings.endGroup(); lammps.command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index a7ee670694..423328a837 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -103,7 +104,7 @@ void Preferences::accept() if (field) if (field->hasAcceptableInput()) settings->setValue("tempdir", field->text()); - // store image width, height, and zoom + // store image width, height, zoom, and rendering settings settings->beginGroup("snapshot"); field = tabWidget->findChild("xsize"); @@ -115,10 +116,14 @@ void Preferences::accept() field = tabWidget->findChild("zoom"); if (field) if (field->hasAcceptableInput()) settings->setValue("zoom", field->text()); + QComboBox *combo = tabWidget->findChild("anti"); + if (combo) settings->setValue("antialias", combo->currentIndex()); + QCheckBox *box = tabWidget->findChild("ssao"); + if (box) settings->setValue("ssao", box->isChecked()); settings->endGroup(); // general settings - QCheckBox *box = tabWidget->findChild("echo"); + box = tabWidget->findChild("echo"); if (box) settings->setValue("echo", box->isChecked()); box = tabWidget->findChild("cite"); if (box) settings->setValue("cite", box->isChecked()); @@ -130,7 +135,6 @@ void Preferences::accept() if (box) settings->setValue("viewlog", box->isChecked()); box = tabWidget->findChild("viewchart"); if (box) settings->setValue("viewchart", box->isChecked()); - QDialog::accept(); } @@ -376,10 +380,22 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *xsize = new QLabel("Image width:"); auto *ysize = new QLabel("Image height:"); auto *zoom = new QLabel("Zoom factor:"); + auto *anti = new QLabel("Antialias:"); + auto *ssao = new QLabel("HQ Image mode:"); settings->beginGroup("snapshot"); auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); auto *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); + auto *aval = new QComboBox; + auto *sval = new QCheckBox; + sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); + sval->setObjectName("ssao"); + aval->addItem("1x", 1); + aval->addItem("2x", 2); + aval->addItem("3x", 3); + aval->addItem("4x", 4); + aval->setCurrentIndex(settings->value("antialias", "0").toInt()); + aval->setObjectName("anti"); settings->endGroup(); auto *intval = new QIntValidator(100, 100000, this); @@ -393,12 +409,16 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(xsize, 0, 0, Qt::AlignTop); grid->addWidget(ysize, 1, 0, Qt::AlignTop); grid->addWidget(zoom, 2, 0, Qt::AlignTop); + grid->addWidget(anti, 3, 0, Qt::AlignTop); + grid->addWidget(ssao, 4, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 3, 2); + grid->addWidget(aval, 3, 1, Qt::AlignTop); + grid->addWidget(sval, 4, 1, Qt::AlignVCenter); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 5, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 5, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 5, 2); setLayout(grid); } From 7c03921669574d9ec3387e6ebdfa9776696f8948 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 21:36:09 -0400 Subject: [PATCH 0209/1002] only close LAMMPS instance if preferences for command line flags have changed --- tools/lammps-gui/lammpsgui.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 1fe7f7c3e1..77a39ba531 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -736,7 +736,7 @@ void LammpsGui::view_image() dumpcmd += blank + settings.value("diameter", "type").toString(); dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); dumpcmd += QString(" zoom ") + settings.value("zoom", "1.0").toString(); - if (settings.value("ssao",false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); + if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); settings.endGroup(); lammps.command(dumpcmd.toLocal8Bit()); @@ -882,11 +882,21 @@ void LammpsGui::defaults() void LammpsGui::preferences() { + QSettings settings; + int oldthreads = settings.value("nthreads", 1).toInt(); + int oldaccel = settings.value("accelerator", AcceleratorTab::None).toInt(); + int oldecho = settings.value("echo", 0).toInt(); + int oldcite = settings.value("cite", 0).toInt(); Preferences prefs(&lammps); if (prefs.exec() == QDialog::Accepted) { - // must delete LAMMPS instance after setting may be changed so we can apply different - // suffixes - lammps.close(); + // must delete LAMMPS instance after preferences have changed that require + // using different command line flags when creating the LAMMPS instance like + // suffixes or package commands + if ((oldaccel != settings.value("accelerator", AcceleratorTab::None).toInt()) || + (oldthreads != settings.value("nthreads", 1).toInt()) || + (oldecho != settings.value("echo", 0).toInt()) || + (oldcite != settings.value("cite", 0).toInt())) + lammps.close(); } } From 4afd5f9661ab38249bb09e9b90357254d272c2b0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 21:46:05 -0400 Subject: [PATCH 0210/1002] update status message while rendering snapshot image --- tools/lammps-gui/lammpsgui.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 77a39ba531..72f332c1d3 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -739,7 +739,12 @@ void LammpsGui::view_image() if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); settings.endGroup(); + dirstatus->setText(" Rendering Snapshot Image... "); + status->repaint(); lammps.command(dumpcmd.toLocal8Bit()); + dirstatus->setText(QString(" Directory: ") + current_dir); + status->repaint(); + imagewindow = new ImageViewer(dumpfile, &lammps); QFile::remove(dumpfile); } else { @@ -887,6 +892,7 @@ void LammpsGui::preferences() int oldaccel = settings.value("accelerator", AcceleratorTab::None).toInt(); int oldecho = settings.value("echo", 0).toInt(); int oldcite = settings.value("cite", 0).toInt(); + Preferences prefs(&lammps); if (prefs.exec() == QDialog::Accepted) { // must delete LAMMPS instance after preferences have changed that require From 2e0e3d9204ec96c0522e55940ec0dba18e59864c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 10 Aug 2023 23:27:04 -0400 Subject: [PATCH 0211/1002] add support for near-interactive image processing --- tools/lammps-gui/TODO.md | 3 - tools/lammps-gui/imageviewer.cpp | 162 ++++++++++++++++++++++++----- tools/lammps-gui/imageviewer.h | 12 +++ tools/lammps-gui/lammpsgui.cpp | 34 +----- tools/lammps-gui/lammpswrapper.cpp | 27 +++++ tools/lammps-gui/lammpswrapper.h | 3 + 6 files changed, 181 insertions(+), 60 deletions(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 53f020a401..c54550fbfd 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,9 +2,6 @@ LAMMPS-GUI TODO list: # Short term goals -- add option to image viewer to select a group and rerender, similar for the two rotate options with +/- buttons and +/- zoom buttons. - add checkbutton for HQ rendering (i.e. SSAO) - also move the image setting preferences there and remove scrollwheel zoom support. - use qgetenv, qputenv for portability - use QFile/QDir/QFileInto for portable file and directory operations. - write LAMMPS GUI Howto showing/explaining options -> simplify docs and readme diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 6551d3e1d7..74bd1dfad4 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -36,9 +36,11 @@ #include #include +static const QString blank(" "); + ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) : QDialog(parent), imageLabel(new QLabel), scrollArea(new QScrollArea), menuBar(new QMenuBar), - lammps(_lammps), group("all") + lammps(_lammps), group("all"), filename(fileName) { imageLabel->setBackgroundRole(QPalette::Base); imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); @@ -55,40 +57,56 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); QVBoxLayout *mainLayout = new QVBoxLayout; + + auto *zoomin = new QPushButton("Zoom In"); + auto *zoomout = new QPushButton("Zoom Out"); + auto *rotleft = new QPushButton("Rotate Left"); + auto *rotright = new QPushButton("Rotate Right"); + auto *rotup = new QPushButton("Rotate Up"); + auto *rotdown = new QPushButton("Rotate Down"); + auto *combo = new QComboBox; + combo->setObjectName("group"); + int ngroup = lammps->id_count("group"); + char gname[64]; + for (int i = 0; i < ngroup; ++i) { + lammps->id_name("group", i, gname, 64); + combo->addItem(gname); + } + QHBoxLayout *menuLayout = new QHBoxLayout; menuLayout->addWidget(menuBar); - menuLayout->addWidget(new QPushButton("Zoom Out")); - menuLayout->addWidget(new QPushButton("Zoom In")); - menuLayout->addWidget(new QPushButton("Rotate Left")); - menuLayout->addWidget(new QPushButton("Rotate Right")); - menuLayout->addWidget(new QPushButton("Rotate Up")); - menuLayout->addWidget(new QPushButton("Rotate Down")); - menuLayout->addWidget(new QComboBox); + menuLayout->addWidget(zoomin); + menuLayout->addWidget(zoomout); + menuLayout->addWidget(rotleft); + menuLayout->addWidget(rotright); + menuLayout->addWidget(rotup); + menuLayout->addWidget(rotdown); + menuLayout->addWidget(new QLabel(" Group: ")); + menuLayout->addWidget(combo); + + connect(zoomin, &QPushButton::released, this, &ImageViewer::do_zoom_in); + connect(zoomout, &QPushButton::released, this, &ImageViewer::do_zoom_out); + connect(rotleft, &QPushButton::released, this, &ImageViewer::do_rot_left); + connect(rotright, &QPushButton::released, this, &ImageViewer::do_rot_right); + connect(rotup, &QPushButton::released, this, &ImageViewer::do_rot_up); + connect(rotdown, &QPushButton::released, this, &ImageViewer::do_rot_down); + connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(change_group(int))); mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).completeBaseName()); - createActions(); - - QImageReader reader(fileName); - reader.setAutoTransform(true); - const QImage newImage = reader.read(); - - if (newImage.isNull()) { - QMessageBox::warning(this, QGuiApplication::applicationDisplayName(), - tr("Cannot load %1: %2").arg(fileName, reader.errorString())); - return; - } QSettings settings; settings.beginGroup("snapshot"); - int xsize = settings.value("xsize", 800).toInt(); - int ysize = settings.value("ysize", 600).toInt(); + zoom = settings.value("zoom", 1.0).toDouble(); + hrot = settings.value("hrot", 60).toInt(); + vrot = settings.value("vrot", 30).toInt(); settings.endGroup(); - // scale back to achieve antialiasing - image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - imageLabel->setPixmap(QPixmap::fromImage(image)); + + createActions(); + createImage(); + scaleFactor = 1.0; resize(image.width() + 20, image.height() + 50); @@ -99,6 +117,102 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge setLayout(mainLayout); } +void ImageViewer::do_zoom_in() +{ + zoom = zoom * 1.1; + if (zoom > 5.0) zoom = 5.0; + createImage(); +} + +void ImageViewer::do_zoom_out() +{ + zoom = zoom / 1.1; + if (zoom < 0.5) zoom = 0.5; + createImage(); +} + +void ImageViewer::do_rot_right() +{ + vrot -= 15; + if (vrot < 0) vrot += 360; + createImage(); +} + +void ImageViewer::do_rot_left() +{ + vrot += 15; + if (vrot > 360) vrot -= 360; + createImage(); +} + +void ImageViewer::do_rot_down() +{ + hrot -= 15; + if (hrot < 0) hrot += 360; + createImage(); +} + +void ImageViewer::do_rot_up() +{ + hrot += 15; + if (hrot > 360) hrot -= 360; + createImage(); +} + +void ImageViewer::change_group(int idx) +{ + QComboBox *box = findChild("group"); + if (box) group = box->currentText(); + createImage(); +} + +void ImageViewer::createImage() +{ + QSettings settings; + QString dumpcmd = QString("write_dump ") + group + " image "; + QDir dumpdir = settings.value("tempdir").toString(); + QFile dumpfile(dumpdir.absoluteFilePath(filename + ".ppm")); + dumpcmd += dumpfile.fileName(); + + settings.beginGroup("snapshot"); + int aa = settings.value("antialias", 0).toInt() + 1; + int xsize = settings.value("xsize", 800).toInt() * aa; + int ysize = settings.value("ysize", 600).toInt() * aa; + + dumpcmd += blank + settings.value("color", "type").toString(); + dumpcmd += blank + settings.value("diameter", "type").toString(); + dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); + dumpcmd += QString(" zoom ") + QString::number(zoom); + lammps->command(dumpcmd.toLocal8Bit()); + if (lammps->extract_setting("dimension") == 3) { + dumpcmd += QString(" view ") + QString::number(hrot) + blank + QString::number(vrot); + } + if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); + settings.endGroup(); + + lammps->command(dumpcmd.toLocal8Bit()); + + QImageReader reader(dumpfile.fileName()); + reader.setAutoTransform(true); + const QImage newImage = reader.read(); + + if (newImage.isNull()) { + QMessageBox::warning( + this, QGuiApplication::applicationDisplayName(), + tr("Cannot load %1: %2").arg(dumpfile.fileName(), reader.errorString())); + return; + } + dumpfile.remove(); + + settings.beginGroup("snapshot"); + xsize = settings.value("xsize", 800).toInt(); + ysize = settings.value("ysize", 600).toInt(); + settings.endGroup(); + // scale back to achieve antialiasing + image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + imageLabel->setPixmap(QPixmap::fromImage(image)); +} + void ImageViewer::saveAs() { QString fileName = QFileDialog::getSaveFileName(this, "Save Image File As", QString(), diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 630d72944c..9aee1cf957 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -45,8 +45,17 @@ private slots: void normalSize(); void fitToWindow(); + void do_zoom_in(); + void do_zoom_out(); + void do_rot_left(); + void do_rot_right(); + void do_rot_up(); + void do_rot_down(); + void change_group(int); + private: void createActions(); + void createImage(); void updateActions(); void saveFile(const QString &fileName); void scaleImage(double factor); @@ -69,6 +78,9 @@ private: LammpsWrapper *lammps; QString group; + QString filename; + int hrot, vrot; + double zoom; }; #endif diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 72f332c1d3..5546173a44 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -230,7 +230,6 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // none of the plugin paths could load, remove key settings.remove("plugin_path"); QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); - // QCoreApplication::quit(); exit(1); } #endif @@ -715,38 +714,7 @@ void LammpsGui::view_image() "Cannot create snapshot image without a system box"); return; } - - QSettings settings; - QString dumpcmd = "write_dump all image "; - QString dumpfile = settings.value("tempdir").toString(); -#if defined(_WIN32) - dumpfile += '\\'; -#else - dumpfile += '/'; -#endif - dumpfile += current_file + ".ppm"; - dumpcmd += dumpfile; - - settings.beginGroup("snapshot"); - int aa = settings.value("antialias", 0).toInt() + 1; - int xsize = settings.value("xsize", 800).toInt() * aa; - int ysize = settings.value("ysize", 800).toInt() * aa; - - dumpcmd += blank + settings.value("color", "type").toString(); - dumpcmd += blank + settings.value("diameter", "type").toString(); - dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); - dumpcmd += QString(" zoom ") + settings.value("zoom", "1.0").toString(); - if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); - settings.endGroup(); - - dirstatus->setText(" Rendering Snapshot Image... "); - status->repaint(); - lammps.command(dumpcmd.toLocal8Bit()); - dirstatus->setText(QString(" Directory: ") + current_dir); - status->repaint(); - - imagewindow = new ImageViewer(dumpfile, &lammps); - QFile::remove(dumpfile); + imagewindow = new ImageViewer(current_file, &lammps); } else { QMessageBox::warning(this, "ImageViewer Error", "Cannot create snapshot image while LAMMPS is running"); diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 7d5b54a634..de66f82f6e 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -45,6 +45,33 @@ int LammpsWrapper::extract_setting(const char *keyword) return val; } +int LammpsWrapper::id_count(const char *keyword) +{ + int val = 0; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->id_count(lammps_handle, keyword); +#else + val = lammps_id_count(lammps_handle, keyword); +#endif + } + return val; +} + +int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int buflen) +{ + int val = 0; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = + ((liblammpsplugin_t *)plugin_handle)->id_name(lammps_handle, keyword, idx, buf, buflen); +#else + val = lammps_id_name(lammps_handle, keyword, idx, buf, buflen); +#endif + } + return val; +} + double LammpsWrapper::get_thermo(const char *keyword) { double val = 0.0; diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index 9aa75b2b54..064e784981 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -29,6 +29,9 @@ public: void force_timeout(); int extract_setting(const char *keyword); + int id_count(const char *idtype); + int id_name(const char *idtype, int idx, char *buf, int buflen); + double get_thermo(const char *keyword); void *last_thermo(const char *keyword, int idx); bool is_open() const { return lammps_handle != nullptr; } From 93e67c93884db7c00d2884aefe31a92fa085127d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 11 Aug 2023 02:40:08 -0400 Subject: [PATCH 0212/1002] add pixmaps to image viewer buttons --- tools/lammps-gui/gtk-go-down.png | Bin 0 -> 2388 bytes tools/lammps-gui/gtk-go-up.png | Bin 0 -> 2401 bytes tools/lammps-gui/gtk-zoom-fit.png | Bin 0 -> 1405 bytes tools/lammps-gui/gtk-zoom-in.png | Bin 0 -> 1224 bytes tools/lammps-gui/gtk-zoom-out.png | Bin 0 -> 1172 bytes tools/lammps-gui/imageviewer.cpp | 27 +++++++++++++---------- tools/lammps-gui/lammpsgui.qrc | 21 ++++++++++++++++++ tools/lammps-gui/object-rotate-left.png | Bin 0 -> 2235 bytes tools/lammps-gui/object-rotate-right.png | Bin 0 -> 2332 bytes 9 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 tools/lammps-gui/gtk-go-down.png create mode 100644 tools/lammps-gui/gtk-go-up.png create mode 100644 tools/lammps-gui/gtk-zoom-fit.png create mode 100644 tools/lammps-gui/gtk-zoom-in.png create mode 100644 tools/lammps-gui/gtk-zoom-out.png create mode 100644 tools/lammps-gui/object-rotate-left.png create mode 100644 tools/lammps-gui/object-rotate-right.png diff --git a/tools/lammps-gui/gtk-go-down.png b/tools/lammps-gui/gtk-go-down.png new file mode 100644 index 0000000000000000000000000000000000000000..c073ec5ebdb17144fd90691748f2c78cff935ae8 GIT binary patch literal 2388 zcmV-a39I&rP)!u;3(Pg|aQ0o(WSrRC-2HrG7QP4mK6&^8bGZAJL}q) zo}O+*GZu;V87MC=x0#kwIbp&}$qCaEoiQ<^asR#_^>_ZOJb2)*Wr=ffG$o?Gg>+Ni zJ7N69+~n&G~OYt$-eX={;HRYg~KH~fA-y1N4)4A9oz8Z@a{5Y1>& z7qAo8zCf`1R#QtuP|;+7v0%bLV^d>LR^+-du5tUK887PBDA0422Gj?82}rhSn6V&e zpcX9{8#Dgd{~h?D%TK99xZ*AM+NR%)-D?5ahGE1qgfy6@SnNpF zCN)3&<+kl#MjE5*daTRo3Y$teoDS%k9x;{hdcB;Yb?-4vnrcxx&7{;}TKM4b!NdO? zk$|Fh9+){ZY0s=#ZrE*hXqp!L)y*55j(ky2t|@eDPEL+*@F>#I)YLdVX7uPmsYE~y zfDnXDB}A{t+f=4x`I6;}mM&Qao*xgN--nWt^A+#@ZuiG_!u{c+k3Lcdj*Ga3j-NiZ zbk;2Q?^BXzLsb;`{XXcrh6VE%Vny1@bTEdLpP$bU9A{Fq;AYKNVN;3P+M1wY7=uy? zQ51PL2x-Um>_r zmV+=19l>A#et!q1PL0E=Rci#zl%>49V7JyUl@LXdXY5qk@td8(tFw~e_jjPHs}q{0p{uJCvK&Ols?{*4F+2eaRCPL? zP*nw#(uY;ob@+Vkh>wlO+STg?R)v(8_edf)H`nmBJy_h<)_UM-<(1oIrDevI%F5fm zj*bJtE~VcUDvBZx#*}uv?Gch*b;IXthpy}W;spZT;Q8?|40ByL&WOJQM~)W!Wy{8` zZxaUS?Cc!$Im_BGal%B@-~Jy?ojFm(Ldkgl{oF8TB76}=k*CCvJUe#@?xbY2wYS1F z%|U->v)NHscMG3>_Q}~VjvU)O@bic(pc`g&b?r?!oi13G)o)gMRzgE-TMH7VzkE!)3;|G1&Tn^c!_vOPjlk{d0pErVvBQVPqmz_JX=%1WV|^uuu96;WV}YwY2g z>Kj)p|8*H0$Ay*9G!4xyO-M{g#G6~*ny(r1C9l^z=wJ_oH>fJ*J zym?-p4MLi~;5A|1+v zv~4qDfgTBwS9H6y^k++iMGF^0Rw7GGo-`F*-CYNnvC!)QhEh4(UR8<|4L=U_J7cO4J>C-1i z3=c%%nb_m;@D`!cy0zK;KGFxoO()lAW9GQ9#0mp8Fp#ohRwp7 zHEW^iT387}2sk^3k_+c?^3;i^h6kefRw64ai)U<*-q`Y{uwnfM=(^rdf)E0`-H!7m z=W*g>QB>f8D8E+8%F5!wP-*Kg-V!#f&xB$0NDx9`v)OUJn+_(wF#b;6Y_hYr!|NWmG_4V~E03LuI zss;esD?kY8?bD&i3`u|x!i0fm0I&d@A$SJ>4uGS+zTOrH1Vl>d$JI4AXI59={PrJT zUJ+YcTWukD6@V6MbpQ$gGbBQKTS5r6df&}NVjJSU-3vT$=1B;;x7z!(?4(JP#=W*^ z{s-5tUO(8}-0TlQ>LK{vwzpd7vl5~H6IWqahq%w)?<>-`vUs#IeT5$a;n7T+7_k5Q zN(}WZMCBF=i2?l&GzRpo0euVTA$_XYKmCK_M=sC3!2bdAdn;EWi0>l+0000 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/gtk-go-up.png b/tools/lammps-gui/gtk-go-up.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ff52aeec5e9f756b520f2efa54c4aff670b5b6 GIT binary patch literal 2401 zcmV-n37+VA_s;CH4;-AuFOUNcMFb2f8T{Z82npSmqNtFRLewNm<2p)|NJ(o)LXE#z z`-N{^3)&B@YJ^m!iIhz%r6D#0V*;2Mfnkj%f7i-XHEc8;@3VbNo&g2V(r6{1i_pWh@1nY#7p0=kO~Wm zq3aq73yLAFt&|L=Dj_+PQwWmFGMW;>oTKRFd)2K;;W?8(WQ z$XNs?#IGF_&pC%}+Y`0qF%tZ)+)9J*OFR$S5NB$PEbolG)>Si2?Sw%pWWuIwlO69sLsj#33x~@+; zv?(WqWc)wp9J;P!$pcI9lP8~&I5m}~rkO`##sIP$@)=B3Dy8*OVL>reRRv=VobyRe z2*KdsH4s8Fe$N<#s;XGJqzq5*+%4&5QVBE#W&|-K09g+CbW>2OD%MLyg+)jvlUa9O z5CmNKydSN{K4Sg-y$}Q;Yb27%B+8aPh@b6#Mj}bB1On5Cm^OechkTkzmFmh3Qc+>? zl;ZpQd(qP!j##?AGThx6iJbp*N{D3-F2m2Cc}}vpt^@-0(}I{5Ku8YxR2@on|yL{Y?r&wA1GX-`CVSpK@& zn^mQ$smW(DO<7;PQL3z{8h>6)o`(>E`SbH|`5%|@r{+IIzy*IW7|dFo?ihhkDC8q5 zQ#Mp>l1hq8FftO$xbuJwQ5@U(a8Ed*tG9{=fV#T6s45u#_D@bl&V|oH6e$2ZV2avStD`h6cVk!ZmQlam6R+(JRZxK^8g?SBKrFK5bg;_OpRx) z=Z$rZQD(q@>eR`|+0L^Ngt6aKna)H!9>dCqR^io`UzMmzTKDeV>zollDD>{;C8cGL zmy|3ZMQ{cRt&Mb31zPaN#YCDuYLHjMIB ztMP*;wpHilxqmey0FxX0RPgeDv>l6_ zK7AU3AZCQHEEAfh;qk58U@~h>rn$2ICT0wh*E=6KZd?cF{Fd(sA#gYx=7#z&Sf?XncQTW1|HC!C)|2UtjM(cKoQqIFlaR@>s@p zB$*tA+wB5ld}$_~StDRs=22Bm!r^dC+IdlQptr9V;Vk04_qookT(R=47hkL`+xO;g z#222gDSL3)^0!1MITr{7CN?b?3`P@F_qQHxjhy)S1Vqs>DH67AqqnaYmc{1H5Ws4= zbonCk@)p41oCj{(03mQVoapO2k8t<72<7Uev~kUMHmq2_qI}2pCtV)57pkhl?RH_u z_8qPzOO~!;)NDwBOh`O`^^~vXbH2W zv#aAkM`ycjW2`Cr=K6KCooqu_Pgj>fbbno4Yce<8iE6 zy~a&BYHlCW+}s=mqy8gDK0JBg-~oJo@iQ=H;lhP}9Q^$OeDTG z>#yqoetqy@@V#)j>$i;Cy3P2%8Rr*t)jY7TvC+sh&M=KqkH?E-GBJ_QhG8I)NWks! zK-2ZoOyioHo1*}pc=p-7n=fC!ywA3|M2LOVCTJOrt1a1dPWfW%jW_B$0BoGb1Sfs4nE%gJwU48r6FhGI9+Dz_&8b8YZa zo_oRmTrQW>_d+QP1OlRJCK@PcjbZ4eq9_a)mUVc6_x_3JK(1^~0RETu-Rt#C76=4H zP}V>|Y7EmT6$Cn9GIn^L;Qs$lp+F!Y5`mv9FJE2$#MW)D{QP`e8@z_Lw&U8ROBX+P zIy~!h36b*@VlW$4u3T0A)Xtx}yxy@^!sGT}*UqP1OUst68c7T_Og+o=Z4Sls5Rnk#7#O&$K&zTzVgd=9w;p>tE{YW<>lpJXlMv$ z&vt582fq5^?LYtJ*<>=A1YiKr0hj#hc^Tl&1?%edhKQ0%!Cb7zargf4d8~ z8JTq82|>8I(=1JFx^n>bRKjNkFa;RWK#=x#%Iw=d+rXI8yIT9ZX6{?IdmiAwTu!vT TFz7Of00000NkvXXu0mjfC!2U4 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/gtk-zoom-fit.png b/tools/lammps-gui/gtk-zoom-fit.png new file mode 100644 index 0000000000000000000000000000000000000000..35994e8bc76a0c7032bb4432a2986729c1f69c19 GIT binary patch literal 1405 zcmaKsdsNbA7{|G&p+!Womlz8lWUh1T?RN?#Dm-r*nGF=Xsy=exL6-&wI}Mo|hXL z@h#HM*$x7MAn{?iD6slk5&;L-#8F!jSm4>gcoG7E7*P;jfm_?mu$XMnK4eK~uvaw; z6rJdy$LK_WN@tR@C=e!->64m~o}En2r1$_?wCdRaXV7G4F_BW~rzntE05~m$M(+ky zPm3DFpr-&?kb~rOMv@DWPD#z6WMN&x$(evl2>BHGG&$pB79|x;GB!XUFssOLQYedM znfv~b%jKYBP{jW%54`{TLZ88xxHF>X}ukT);_6~`xvyGNY zZSN4%QYZ`-UDjz)P9(%0kB=pij(o??k$1MqAGWb_8L}>ktg9_9{y4X+v~Qrd|3z;B zC;u!buSwXb(N2?-63EF3S#%(WmCep$=5yEuoV;^IXNyY;zdv8dEi2((IDes>TYmXM z#m|?js;}~HUb|6qy{7hhZGBDMt(pdYT?7ADK~uvWAz#=mxO=auMI;opw%ixDh@~Ql z^ntuf+S%RS*)8h=>5)I|k@pYu^}l#NG&DFo@^WN!cyw%Je0+3#Voaf!P$(yqN`+FT zRH+n`lgh~{)zs9a`t{W7*J_Ps8a%C5tI>k-uXbieJENP?S?cG(e6HRa{wR)p;D0L39KJu|! zHEMJ$PZ!R}t>W=04K;y#9IMvpX32gD`<2|h!&8;Cl9ChexwEUSeeJxzFEdNAcp?RO znJ+bq5BwyIiHTuXRRPCyjEC0zV2#-Qh}tawBWf?#MR`jlrq66@E&(0|h5?st6@Zb+ww^K$!b(D3I1KPm$r{db`ImSA68A`%6Z zHbR*wpcn-;SaS>GpWs;pJv=R1Rs#33=eO@-$iYO;;)H?qMmYgSdTk@ZoF3CdaRgtBcvhW=olWum%@`Y|nynorP1;1^1X52TrOUT#HK zZaw>IhdSS7fOGp$3--XiT0kdMn57#J@G_=LDtRDkTo5BBfhk6!^+SqTXVtm1INUHi7Dr>7Vh8yFbr?LDw- z-@)DKnQ5gJCHoG7*fH@@(Q#41A%T@uW&02A-hX&^MRn=EL%a4J+8rAg-Pzr7>B@!6 zS1;5z)YdiBtX;R}<*OH=;lYv7;R(rciAnK^$?+LksriLDWfjG>^;Pu^H7#w8Ep1Jm zJ?-7S9sLt~CQa#|JZ-{^*;8lEnKpO9tObkbELu8$`N}2BS1n$>Zsod-t2S(2yLHFL ztvfdD+OvJv-fjC2?Kya4@4+Mc4gt~8{fCe4zkKD=_3PJe-M)GI&aFFlZ{NFj=idFh z4-X>9fBpc`pTB?q{`>du|NsBztuFEagV?1c$S;_Ik%^gwm5rT)lZ%^&mtR0oNLWNv zOk6@zR!&h#Ra-|_&)mY&#=*ta&%e8W<;t~Nw{G3F`__vWFJ8WU`4wm((30PxOyLTk z#Nz4V7~*mK?G)c^;XskL`PJ`JE?w)&@S4`N;6m3VdqoYsH|P5Izwi@py3lJKyF=h; z6UVN}Nl~1Axs!H&ml5|&%S(HAWACqZMMlqOe&6%_9M7NY`xS-7tEK-=%rtq?e)(mh z)Qx>*mG#lLx9iON`y(i1>FV`w_~!3W$bGta{olnb8@7Lr==D8O@cQ$$9lSBMPh2iP z`gJ^i^|m!kW@gW0XLHWBy>-C1=Id`(hVQGb_WxbR8{t%YzWu=E727!3LnGt2O?(l> z6KZb}{voM&3K$E?%zB8+HHMxp07aApD9$FyZae`Xr%I_zb6pKf;|itX{5(qp$+ v6c#CVWXxUoXx3TL7NLC2NuJyO=lgTe~DWM4f!EHXq literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/gtk-zoom-out.png b/tools/lammps-gui/gtk-zoom-out.png new file mode 100644 index 0000000000000000000000000000000000000000..72e6eb43c6884e051ef8858bf5e0f08189458983 GIT binary patch literal 1172 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s%*9TgAsieWw;%dH0CG7CJR*yM z%CCbkqm#z$3ZS55iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vqAVndW zB{``KQTh3~dl*Btfud?4QODAfjQk=7uf*)qB!%FT)XcopA{_;v#DaVU=fs@E+{C<; zqSQ>0kdMn57#L3k_=LDtRDkTo5BBfh4^*)6$VU9iFl8kqB!Gglva*;`aFJd6wx_43 z?B2IEEi>83*ucO@Z|{L!`ws3-&rI8UU}t(pYH3BuzJnll$j-u3Pi+)r-WW_{8M+vWnu``l|Yd znwGZ4mbRwOp7!qEj{b=~lcw}fo;G2|?5Q*7Oq;u4)}p2Jm#ReC5*h>(_4GzIpr3tvh#b-@A9`-u=4|AKriX=>C%@ zkDfez{OtMD=g*%3t$y|D(?(|zkdDp?c4Y7K=l3lkMBQzeE<3L$IqWXfBpLT`}eQkzkmPv z14MuR{{8#!-@pI=|Nq(W?-npjy-I@of*BZ@m|0la*f}`4xOsSa`2_@pghfQf#3dwU zEamTas2HRYj0*pk=FBbZ=P-b!64tEAXJkexaO^nuFjSC>_pY5&aGyP6gtH0 z6jFSX%AUn>`)+!7M=<+q$>DkV=VtD<=Kk|KzoV=BnoH?iFSea8)5NU|wp#5rR(v?^ z=EcvUW>L33PCnbp{Ms^PX=!|QK*QOewTg>7HWWtJ^E6JiJ-vwg?CaeNbtM_M{!%cL zjQ1C0^4;-5M|<^h#e@fsFPnQcak&3g;$k?r*dcMX;Q^ubAsqT)MGnq|``xrStsBlW z{h!7hk;FN#%=@47`y|djMzg03hj}da3Ozo3{D&fUUuY6r&5Q^8Srhu}=NzzPj^I9i z%3<9;cKrjwA(f_#Y=N1aIgc6wwQJc|OwEzm5aqO6nB7XB>q7SVBYG~sj5L^8zO0{K z^=qzi?`J(mqmm|uO~setObjectName("group"); int ngroup = lammps->id_count("group"); @@ -131,31 +131,31 @@ void ImageViewer::do_zoom_out() createImage(); } -void ImageViewer::do_rot_right() +void ImageViewer::do_rot_left() { vrot -= 15; - if (vrot < 0) vrot += 360; + if (vrot < -180) vrot += 360; createImage(); } -void ImageViewer::do_rot_left() +void ImageViewer::do_rot_right() { vrot += 15; - if (vrot > 360) vrot -= 360; + if (vrot > 180) vrot -= 360; createImage(); } void ImageViewer::do_rot_down() { hrot -= 15; - if (hrot < 0) hrot += 360; + if (hrot < -0) hrot += 180; createImage(); } void ImageViewer::do_rot_up() { hrot += 15; - if (hrot > 360) hrot -= 360; + if (hrot > 180) hrot -= 180; createImage(); } @@ -269,14 +269,17 @@ void ImageViewer::createActions() zoomInAct = viewMenu->addAction(tr("Image Zoom &In (25%)"), this, &ImageViewer::zoomIn); zoomInAct->setShortcut(QKeySequence::ZoomIn); + zoomInAct->setIcon(QIcon(":/gtk-zoom-in.png")); zoomInAct->setEnabled(false); zoomOutAct = viewMenu->addAction(tr("Image Zoom &Out (25%)"), this, &ImageViewer::zoomOut); zoomOutAct->setShortcut(QKeySequence::ZoomOut); + zoomInAct->setIcon(QIcon(":/gtk-zoom-out.png")); zoomOutAct->setEnabled(false); normalSizeAct = viewMenu->addAction(tr("&Reset Image Size"), this, &ImageViewer::normalSize); normalSizeAct->setShortcut(tr("Ctrl+0")); + zoomInAct->setIcon(QIcon(":/gtk-zoom-fit.png")); normalSizeAct->setEnabled(false); viewMenu->addSeparator(); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 830a060510..6d5abb1d3f 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -2,4 +2,25 @@ lammps-icon-128x128.png + + gtk-zoom-in.png + + + gtk-zoom-out.png + + + gtk-zoom-fit.png + + + object-rotate-right.png + + + object-rotate-left.png + + + gtk-go-up.png + + + gtk-go-down.png + diff --git a/tools/lammps-gui/object-rotate-left.png b/tools/lammps-gui/object-rotate-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a754bf560ad29386d0cc80fe33f0f429a2c495bf GIT binary patch literal 2235 zcmV;s2t@aZP)@lR!Wol@?IIBDM}Gj{ycsM>}deQw*IDbv>4DFYp=w4)MJOA5(s&k5J-p-2xiIKecbcwAA1)!$wF~=L-EY~_T0H= z_T1m+e1E^+J$q(FRrxkI&y9FU$u`NuVS~aP;C6)DQ8FW!&M2J%UX)f5S`}K2dkuJv zaj%6|aYEN!4&DI+IR3BC=g+up#m`6^n~R-33_C3YD=96?w-k{6w*@eO zC86FH2wITVIWP(w+al{k~$9PT;D}3j!z_;k_b& zpyJ>`Km>RO1mbc;La7Co0W5b+!6+C5 zNnMEpDEqP8W-ITF+w|Pr%w-RvT`iak72j|cK~ymUsDcQpU|C^-1k@0)ERqO7OLAfW zj&72%SQJfp__gez`9Hw4R6(F8#@WIiZ^m;%2Y0+$@$59DeXyV70{$P`p{T+`6z}*^u0on9obD?!0A#or2g&U?+o} zbk+E`5Ku)e5RFj80x%>QJCp-H6Cc3w4Kl*#K2>{W?0GH;{gw1z7wU?dblLzB?B0Q@$;&0e=X(++fC+M1(yZX@Zp;;k*E z{-3V|{hh6Q1a_%Kd54$J?|oO}jkVYn_;jPpO&vAy=fiTBW6pluKXfb)lAcN9M}MXH zlRc%5quZA3)>Dao=fn(PV8`T*&sfslg!=l2j${m@<-`XxeZ0Ha>S5)QceH~6XjV+I zf4>Y8Px9UAlkUK|P>u$Dz0L9v@byst{vQJv9#}j;&d01kcRF{Cp0_Ghf<4gF+Gpu4 zBy|Xlg@3~D>wan3ZmnbhTWleutQwxT9BpfYV4v7e$)LNXkuORPH2PE7!2q{d0j8&o zoP@SDpnZ~8AKV}gv7GxZv6tkQhy@=VyZ$4BP1yWzVe3Zf24^;cl(zdna!n}Sph)}8fC|+CV&$N z^3+pmZeDk%^dRqz$-8sGn8gKTOqfk)!zt>Dc75`%0(sT; z@kAoF)BVb5;d;3nY^t}F{|K_W$Lg$tU$jK>iED_AP``G z?wUsy%-Z}U8HDB;tX}3m@SHVz*22e}6z&}u1q?4vSi077>WgqH{t>$MWi8YdGHS^a zs4@Ac-g!L~Lf6QFyfqKykDj*@f6+70bNR|Vwh1udy9G3t7vBfGop1mHzVxvhU2z zCzEGnFPJ!W66V~0AWFHE!6VVm3sE#ph2U5H@7u{(V;4|YT~BRg?SX>5de?ve;FdtY zpZ!y&P0pVNrbH3!-5Oy-wsJYaXRa1VvqHO;e?%!F}%lR-s5O4q!E5Oxu zqvFB{AUmt*Z1=NvomRZ1ww*gIe-V1&M05x{85uc;nvx32j#r#|yN0!UPSfc=E9|^O zf|@6sNFowm6(?f#?XVhqPSfEttly|*f5*0Srq5e|ww&w@VJ9P*v#CB-#>t~)<-4m` zzxNCs?i^vqO~iBJ3ZK3TgaI_lwFhAD8QOgg8@Exq3$b%%ESitDoC4zqD;demrRqp2 zCytbszgfY?eT}q7%pDGwaPLISPuu|RDyW+ekx6E|eG=f=*NE3KZ2pNJ`x_p6*39qR zfnKgfhGtWF_!uSsK34IUayIX8!W$9ifj*AMz4BMh0XLk8c#soe9w2Fd6PJKZTeNr= zSTkoXT}tJ_gB(9tT=`}>o80k0gyX?T#}iTiulXj9@?z^-r3M2-=8Pcg(RsW!c0$(F zb7z}Bd-XUEpSVOb&<1o4q~q5G5CtX-k`cC?;bc9O$1h(m+8{&A}0DWQf|Ma&P`L_Sv=D%MQI*JM>$xi?P002ov JPDHLkV1nhFGnD`U literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/object-rotate-right.png b/tools/lammps-gui/object-rotate-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2103228dd9ec7dd0a2c0de1ef1fa5cb29bcd680a GIT binary patch literal 2332 zcmV+%3FG#OP)=nvrC6u|<*s+AT>fr14wvpQj5RosvpJV#S;WoF zWNvY0b6IqA8`ao;PieXYat3V4$5 zdnfNC=X^is`}5vbi3p$Pp~}8Ny3fWE!4eY-ap#7KZ*Z=#6z&{_CEzm@8H1a+A14rw z0ml>^!emF$R;eC$0O{^dXVN4KkG62c!oWg{h2a9ga1jfX56%GqXgh!t7{EExOQ5rc zF%?&Te;Ze=f9zI6c%%A0bw%<3V#5wc0Rk>W zBn%RA=T6ua9Rw!|`58n`ccM=;FtubO*KGQ8QOM!#_cy3n$pZ)kz&;BR2f|_30y-20 z3P*tgE>t8mHVO2hyQ-K{xQg8S|B{R1AISjlFb(kgNHGi|hT}46*M$uPltO7hDFlh7 zOo%TZN@UX}qg-)jEXAMHrQ zLA>b+wZiGCC4F`wc)VZQ|5cTFSpfiiafj50gJ+-UeC=--lV`cH5MLvLy%6drtMKL& z(zyAu0|4*`_{FgU|LzF&_CV^SL|5wT#Fw`m(R}%`1h{RtoYnAbUwbVoWg_B)hKL?G z#>A`{Xd&;i1OQMDd;8lPAtfVP&CiJh`!PK!h$4GzmG~lzu+ZAy)r^{u>AFq)2=roF z1|nkvxF{BQXCWv3J*_BjW@57!8o)#&F!{0t*s?{mV@D9f7_sfv_8G=nPcMoK5$*ky zGTd7qK0G$a z)ic}n?fA-`yVO3z!`O8w?&RaTic(-#@&SZk=2Zpg z15XTf5&v=Q*B>SOrk{d1pW;F`3vT}oR~FrZ{raO2=pDM;@&*|=uU-}0J@F>@KMN7`vV+*;XZuxjHjPMvevb4p(jKvem7;WsO=X8S11FU(z(o1cR| z`u@lb+^9F7iZSy#nj2ebs%<*d9Ax!Fdk2-5n8YB)3=pTh5hn`Z$BXe5W%J6sMR^P7 z&d)`69XvmGGQAktOKGZa;&4@CRmCYvAKy=JobozOL`3950Sv&5))OP%65r0pxAF_@ zE?6?ZaBg89y8FXVhcLYu(~CG#-AF@aUG;xjxc%9NAWhS$0?q0^GR*yqV7c8K~9`_fRys1oCG!q728q9ym=)h)W7*A zAMC5B-&V_p=(-)Jc>Jx)@cch+uh-)W+wd%v0Zd+$MfT<;JUwep_O+cKbshP`2W&cY zk}lvh;6Go*$Mx?6qtuGbm=suKf47hyJX6i@YERJ>RlFY<7|m5K3BU*-9w0R;X7r{* zQHgvO#V;zrD6L0)Ci~2aUlM@fFp`AB)#v@+ZT<)Uy8{ai_mjo|0000 Date: Fri, 11 Aug 2023 03:25:58 -0400 Subject: [PATCH 0213/1002] more image window tweaks - add image windows to View menu - add setting to replace old image view instead of creating a new one - add setting to turn on/off box - add setting to turn on/off axes --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/imageviewer.cpp | 28 +++++++++++++++++++--------- tools/lammps-gui/imageviewer.h | 3 ++- tools/lammps-gui/lammpsgui.cpp | 19 +++++++++++++++++-- tools/lammps-gui/lammpsgui.h | 1 + tools/lammps-gui/lammpsgui.ui | 9 +++++++++ tools/lammps-gui/preferences.cpp | 29 ++++++++++++++++++++++++++--- 7 files changed, 75 insertions(+), 16 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 45ef858b3c..d936bf82d9 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.5 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.6 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index d492b86bb2..526f9c41d0 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -58,12 +58,12 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QVBoxLayout *mainLayout = new QVBoxLayout; - auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), "Zoom In"); - auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"),"Zoom Out"); - auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), "Rotate Left"); - auto *rotright = new QPushButton(QIcon(":/object-rotate-right.png"), "Rotate Right"); - auto *rotup = new QPushButton(QIcon(":/gtk-go-up.png"),"Rotate Up"); - auto *rotdown = new QPushButton(QIcon(":/gtk-go-down.png"),"Rotate Down"); + auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); + auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); + auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); + auto *rotright = new QPushButton(QIcon(":/object-rotate-right.png"), ""); + auto *rotup = new QPushButton(QIcon(":/gtk-go-up.png"), ""); + auto *rotdown = new QPushButton(QIcon(":/gtk-go-down.png"), ""); auto *combo = new QComboBox; combo->setObjectName("group"); int ngroup = lammps->id_count("group"); @@ -148,14 +148,14 @@ void ImageViewer::do_rot_right() void ImageViewer::do_rot_down() { hrot -= 15; - if (hrot < -0) hrot += 180; + if (hrot < 0) hrot += 360; createImage(); } void ImageViewer::do_rot_up() { hrot += 15; - if (hrot > 180) hrot -= 180; + if (hrot > 360) hrot -= 360; createImage(); } @@ -178,6 +178,7 @@ void ImageViewer::createImage() int aa = settings.value("antialias", 0).toInt() + 1; int xsize = settings.value("xsize", 800).toInt() * aa; int ysize = settings.value("ysize", 600).toInt() * aa; + int hhrot = (hrot > 180) ? 360 - hrot : hrot; dumpcmd += blank + settings.value("color", "type").toString(); dumpcmd += blank + settings.value("diameter", "type").toString(); @@ -185,9 +186,18 @@ void ImageViewer::createImage() dumpcmd += QString(" zoom ") + QString::number(zoom); lammps->command(dumpcmd.toLocal8Bit()); if (lammps->extract_setting("dimension") == 3) { - dumpcmd += QString(" view ") + QString::number(hrot) + blank + QString::number(vrot); + dumpcmd += QString(" view ") + QString::number(hhrot) + blank + QString::number(vrot); } if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); + if (settings.value("box", true).toBool()) + dumpcmd += QString(" box yes 0.02"); + else + dumpcmd += QString(" box no 0.0"); + if (settings.value("axes", true).toBool()) + dumpcmd += QString(" axes yes 0.2 0.02"); + else + dumpcmd += QString(" axes no 0.0 0.0"); + settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 9aee1cf957..3e038f0231 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -53,9 +53,10 @@ private slots: void do_rot_down(); void change_group(int); +public: + void createImage(); private: void createActions(); - void createImage(); void updateActions(); void saveFile(const QString &fileName); void scaleImage(double factor); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 5546173a44..5ef4fc8f88 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -177,7 +177,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionRedo, &QAction::triggered, this, &LammpsGui::redo); connect(ui->actionRun_Buffer, &QAction::triggered, this, &LammpsGui::run_buffer); connect(ui->actionStop_LAMMPS, &QAction::triggered, this, &LammpsGui::stop_run); - connect(ui->actionImage, &QAction::triggered, this, &LammpsGui::view_image); + connect(ui->actionImage, &QAction::triggered, this, &LammpsGui::render_image); connect(ui->actionAbout_LAMMPS_GUI, &QAction::triggered, this, &LammpsGui::about); connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); @@ -185,6 +185,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); connect(ui->actionView_Log_Window, &QAction::triggered, this, &LammpsGui::view_log); connect(ui->actionView_Graph_Window, &QAction::triggered, this, &LammpsGui::view_chart); + connect(ui->actionView_Image_Window, &QAction::triggered, this, &LammpsGui::view_image); connect(ui->action_1, &QAction::triggered, this, &LammpsGui::open_recent); connect(ui->action_2, &QAction::triggered, this, &LammpsGui::open_recent); connect(ui->action_3, &QAction::triggered, this, &LammpsGui::open_recent); @@ -704,7 +705,7 @@ void LammpsGui::run_buffer() logupdater->start(250); } -void LammpsGui::view_image() +void LammpsGui::render_image() { // LAMMPS is not re-entrant, so we can only query LAMMPS when it is not running if (!lammps.is_running()) { @@ -714,6 +715,8 @@ void LammpsGui::view_image() "Cannot create snapshot image without a system box"); return; } + // if configured, delete old image window before opening new one + if (QSettings().value("imagereplace", false).toBool()) delete imagewindow; imagewindow = new ImageViewer(current_file, &lammps); } else { QMessageBox::warning(this, "ImageViewer Error", @@ -756,6 +759,17 @@ void LammpsGui::view_log() } } +void LammpsGui::view_image() +{ + if (imagewindow) { + if (imagewindow->isVisible()) { + imagewindow->hide(); + } else { + imagewindow->show(); + } + } +} + void LammpsGui::about() { std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; @@ -871,6 +885,7 @@ void LammpsGui::preferences() (oldecho != settings.value("echo", 0).toInt()) || (oldcite != settings.value("cite", 0).toInt())) lammps.close(); + if (imagewindow) imagewindow->createImage(); } } diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index d539b51529..f2a0fbbbc2 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -75,6 +75,7 @@ private slots: void clear(); void run_buffer(); void stop_run(); + void render_image(); void view_image(); void view_chart(); void view_log(); diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 3031b31d23..69fa4946b4 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -86,6 +86,7 @@ + @@ -404,6 +405,14 @@ &5. + + + + + + &Image Window + + diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 423328a837..fb83a8b3f9 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -120,6 +120,10 @@ void Preferences::accept() if (combo) settings->setValue("antialias", combo->currentIndex()); QCheckBox *box = tabWidget->findChild("ssao"); if (box) settings->setValue("ssao", box->isChecked()); + box = tabWidget->findChild("box"); + if (box) settings->setValue("box", box->isChecked()); + box = tabWidget->findChild("axes"); + if (box) settings->setValue("axes", box->isChecked()); settings->endGroup(); // general settings @@ -131,6 +135,8 @@ void Preferences::accept() if (box) settings->setValue("logreplace", box->isChecked()); box = tabWidget->findChild("chartreplace"); if (box) settings->setValue("chartreplace", box->isChecked()); + box = tabWidget->findChild("imagereplace"); + if (box) settings->setValue("imagereplace", box->isChecked()); box = tabWidget->findChild("viewlog"); if (box) settings->setValue("viewlog", box->isChecked()); box = tabWidget->findChild("viewchart"); @@ -159,6 +165,10 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa logr->setObjectName("logreplace"); logr->setCheckState(settings->value("logreplace", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *imgr = new QCheckBox("Replace image window on new render"); + imgr->setObjectName("imagereplace"); + imgr->setCheckState(settings->value("imagereplace", false).toBool() ? Qt::Checked + : Qt::Unchecked); auto *pltr = new QCheckBox("Replace chart window on new run"); pltr->setObjectName("chartreplace"); pltr->setCheckState(settings->value("chartreplace", false).toBool() ? Qt::Checked @@ -202,6 +212,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa layout->addWidget(pltv); layout->addWidget(logr); layout->addWidget(pltr); + layout->addWidget(imgr); #if !defined(__APPLE__) layout->addLayout(tmplayout); #endif @@ -382,12 +393,16 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *zoom = new QLabel("Zoom factor:"); auto *anti = new QLabel("Antialias:"); auto *ssao = new QLabel("HQ Image mode:"); + auto *bbox = new QLabel("Show Box:"); + auto *axes = new QLabel("Show Axes:"); settings->beginGroup("snapshot"); auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); auto *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); auto *aval = new QComboBox; auto *sval = new QCheckBox; + auto *bval = new QCheckBox; + auto *eval = new QCheckBox; sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); sval->setObjectName("ssao"); aval->addItem("1x", 1); @@ -396,6 +411,10 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : aval->addItem("4x", 4); aval->setCurrentIndex(settings->value("antialias", "0").toInt()); aval->setObjectName("anti"); + bval->setCheckState(settings->value("box", true).toBool() ? Qt::Checked : Qt::Unchecked); + bval->setObjectName("box"); + eval->setCheckState(settings->value("axes", false).toBool() ? Qt::Checked : Qt::Unchecked); + eval->setObjectName("axes"); settings->endGroup(); auto *intval = new QIntValidator(100, 100000, this); @@ -411,14 +430,18 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(zoom, 2, 0, Qt::AlignTop); grid->addWidget(anti, 3, 0, Qt::AlignTop); grid->addWidget(ssao, 4, 0, Qt::AlignTop); + grid->addWidget(bbox, 5, 0, Qt::AlignTop); + grid->addWidget(axes, 6, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); grid->addWidget(aval, 3, 1, Qt::AlignTop); grid->addWidget(sval, 4, 1, Qt::AlignVCenter); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 5, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 5, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 5, 2); + grid->addWidget(bval, 5, 1, Qt::AlignVCenter); + grid->addWidget(eval, 6, 1, Qt::AlignVCenter); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 7, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 7, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 7, 2); setLayout(grid); } From 2cf73ff427810a1136422460370732348721e0d7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 11 Aug 2023 06:44:03 -0400 Subject: [PATCH 0214/1002] use platform abstractions from Qt library --- tools/lammps-gui/TODO.md | 2 -- tools/lammps-gui/imageviewer.cpp | 2 +- tools/lammps-gui/imageviewer.h | 1 + tools/lammps-gui/lammpsgui.cpp | 39 ++++---------------------------- tools/lammps-gui/preferences.cpp | 31 ------------------------- tools/lammps-gui/preferences.h | 1 - 6 files changed, 6 insertions(+), 70 deletions(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index c54550fbfd..7af492888e 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,8 +2,6 @@ LAMMPS-GUI TODO list: # Short term goals -- use qgetenv, qputenv for portability -- use QFile/QDir/QFileInto for portable file and directory operations. - write LAMMPS GUI Howto showing/explaining options -> simplify docs and readme - rewrite syntax highlighting to be line oriented instead of word oriented. handle first part of line based on regular expressions, then advance and only highlight strings and numbers. diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 526f9c41d0..bef2589a2a 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -170,7 +170,7 @@ void ImageViewer::createImage() { QSettings settings; QString dumpcmd = QString("write_dump ") + group + " image "; - QDir dumpdir = settings.value("tempdir").toString(); + QDir dumpdir(QDir::tempPath()); QFile dumpfile(dumpdir.absoluteFilePath(filename + ".ppm")); dumpcmd += dumpfile.fileName(); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 3e038f0231..5319ffc6b2 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -55,6 +55,7 @@ private slots: public: void createImage(); + private: void createActions(); void updateActions(); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 5ef4fc8f88..76f1d9f753 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -48,12 +48,6 @@ #include #endif -#if defined(_WIN32) -#include -#else -#include -#endif - static const QString blank(" "); static constexpr int MAXRECENT = 5; @@ -114,35 +108,14 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : #if defined(_OPENMP) // use maximum number of available threads unless OMP_NUM_THREADS was set int nthreads = settings.value("nthreads", omp_get_max_threads()).toInt(); -#if _WIN32 - if (!getenv("OMP_NUM_THREADS")) { - _putenv_s("OMP_NUM_THREADS", std::to_string(nthreads).c_str()); + if (!qEnvironmentVariableIsSet("OMP_NUM_THREADS")) { + qputenv("OMP_NUM_THREADS", std::to_string(nthreads).c_str()); } -#else - setenv("OMP_NUM_THREADS", std::to_string(nthreads).c_str(), 0); -#endif #else int nthreads = settings.value("nthreads", 1).toInt(); #endif settings.setValue("nthreads", QString::number(nthreads)); - const char *tmpdir = getenv("TMPDIR"); - if (!tmpdir) tmpdir = getenv("TMP"); - if (!tmpdir) tmpdir = getenv("TEMPDIR"); - if (!tmpdir) tmpdir = getenv("TEMP"); -#if _WIN32 - if (!tmpdir) tmpdir = "C:\\Windows\\Temp"; -#else - if (!tmpdir) tmpdir = "/tmp"; -#endif - - QFileInfo newtmp(settings.value("tempdir", QString(tmpdir)).toString()); - if (newtmp.isDir() && newtmp.isWritable()) { - settings.setValue("tempdir", newtmp.filePath()); - } else { - settings.setValue("tempdir", QString(tmpdir)); - } - lammps_args.clear(); lammps_args.push_back(mystrdup("LAMMPS-GUI")); lammps_args.push_back(mystrdup("-log")); @@ -666,12 +639,8 @@ void LammpsGui::run_buffer() logwindow->setWindowTitle("LAMMPS-GUI - Output from running LAMMPS on buffer - " + current_file); logwindow->setWindowIcon(QIcon(":/lammps-icon-128x128.png")); -#if (__APPLE__) - QFont text_font("Menlo"); -#else - QFont text_font(":/Monospace.ttf"); -#endif - text_font.setStyleHint(QFont::TypeWriter); + QFont text_font; + text_font.fromString(settings.value("textfont", text_font.toString()).toString()); logwindow->document()->setDefaultFont(text_font); logwindow->setLineWrapMode(LogWindow::NoWrap); logwindow->setMinimumSize(400, 300); diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index fb83a8b3f9..0cd8b19a3a 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -99,11 +99,6 @@ void Preferences::accept() if (field) if (field->hasAcceptableInput()) settings->setValue("nthreads", field->text()); - // store temp dir - field = tabWidget->findChild("tmpedit"); - if (field) - if (field->hasAcceptableInput()) settings->setValue("tempdir", field->text()); - // store image width, height, zoom, and rendering settings settings->beginGroup("snapshot"); @@ -173,17 +168,6 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa pltr->setObjectName("chartreplace"); pltr->setCheckState(settings->value("chartreplace", false).toBool() ? Qt::Checked : Qt::Unchecked); -#if !defined(__APPLE__) - auto *tmplabel = new QLabel("Scratch Folder:"); - auto *tmpedit = new QLineEdit(settings->value("tempdir", ".").toString()); - auto *tmpbrowse = new QPushButton("Browse..."); - auto *tmplayout = new QHBoxLayout; - tmpedit->setObjectName("tmpedit"); - tmplayout->addWidget(tmplabel); - tmplayout->addWidget(tmpedit); - tmplayout->addWidget(tmpbrowse); - connect(tmpbrowse, &QPushButton::released, this, &GeneralTab::newtmpfolder); -#endif #if defined(LAMMPS_GUI_USE_PLUGIN) auto *pluginlabel = new QLabel("Path to LAMMPS Shared Library File:"); @@ -213,9 +197,6 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa layout->addWidget(logr); layout->addWidget(pltr); layout->addWidget(imgr); -#if !defined(__APPLE__) - layout->addLayout(tmplayout); -#endif #if defined(LAMMPS_GUI_USE_PLUGIN) layout->addWidget(pluginlabel); layout->addLayout(pluginlayout); @@ -263,18 +244,6 @@ void GeneralTab::newtextfont() settings.setValue("textfont", font.toString()); } -void GeneralTab::newtmpfolder() -{ - QLineEdit *field = findChild("tmpedit"); - QString tmpdir = - QFileDialog::getExistingDirectory(this, "Find Folder for Temporary Files", field->text()); - - if (!tmpdir.isEmpty()) { - QFileInfo newtmp(tmpdir); - if (newtmp.isDir() && newtmp.isWritable()) field->setText(tmpdir); - } -} - void GeneralTab::pluginpath() { QLineEdit *field = findChild("pluginedit"); diff --git a/tools/lammps-gui/preferences.h b/tools/lammps-gui/preferences.h index fe487c8a7f..b5529b0c46 100644 --- a/tools/lammps-gui/preferences.h +++ b/tools/lammps-gui/preferences.h @@ -49,7 +49,6 @@ public: private slots: void pluginpath(); - void newtmpfolder(); void newallfont(); void newtextfont(); From a24eccf95d0abd036823ff5bbe45839ca9d8a907 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 11 Aug 2023 09:43:28 -0500 Subject: [PATCH 0215/1002] Removed maxatom from fix spring/self, need to work on exchange for xoriginal on spring/self/kk --- src/KOKKOS/fix_spring_self_kokkos.cpp | 12 +----------- src/fix_spring_self.cpp | 3 ++- src/fix_spring_self.h | 1 - 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/fix_spring_self_kokkos.cpp b/src/KOKKOS/fix_spring_self_kokkos.cpp index fe6d3a3d50..5031c0641b 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.cpp +++ b/src/KOKKOS/fix_spring_self_kokkos.cpp @@ -43,9 +43,8 @@ FixSpringSelfKokkos::FixSpringSelfKokkos(LAMMPS *lmp, int narg, char datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; - maxatom = atom->nmax; memory->destroy(xoriginal); - memoryKK->create_kokkos(k_xoriginal,xoriginal,maxatom,3,"spring/self:xoriginal"); + memoryKK->create_kokkos(k_xoriginal,xoriginal,atom->nmax,3,"spring/self:xoriginal"); d_xoriginal = k_xoriginal.view(); } @@ -85,15 +84,6 @@ void FixSpringSelfKokkos::post_force(int /*vflag*/) int nlocal = atom->nlocal; - // reallocate xoriginal array if necessary - - if (atom->nmax > maxatom) { - maxatom = atom->nmax; - memoryKK->destroy_kokkos(k_xoriginal,xoriginal); - memoryKK->create_kokkos(k_xoriginal,xoriginal,maxatom,3,"fix_spring/self:xoriginal"); - d_xoriginal = k_xoriginal.view(); - } - double espring_kk; diff --git a/src/fix_spring_self.cpp b/src/fix_spring_self.cpp index 31f54caef2..df00a2ba8c 100644 --- a/src/fix_spring_self.cpp +++ b/src/fix_spring_self.cpp @@ -73,7 +73,6 @@ FixSpringSelf::FixSpringSelf(LAMMPS *lmp, int narg, char **arg) : // register with Atom class xoriginal = nullptr; - maxatom = atom->nmax; FixSpringSelf::grow_arrays(atom->nmax); atom->add_callback(Atom::GROW); atom->add_callback(Atom::RESTART); @@ -97,6 +96,8 @@ FixSpringSelf::FixSpringSelf(LAMMPS *lmp, int narg, char **arg) : FixSpringSelf::~FixSpringSelf() { + if (copymode) return; + // unregister callbacks to this fix from Atom class atom->delete_callback(id,Atom::GROW); diff --git a/src/fix_spring_self.h b/src/fix_spring_self.h index 24a03aa92e..f13f2be918 100644 --- a/src/fix_spring_self.h +++ b/src/fix_spring_self.h @@ -52,7 +52,6 @@ class FixSpringSelf : public Fix { double **xoriginal; // original coords of atoms int xflag, yflag, zflag; int ilevel_respa; - int maxatom; }; } // namespace LAMMPS_NS From 45b980194100b31f2fd393899f88a2eebe6d5357 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 11 Aug 2023 21:59:51 -0400 Subject: [PATCH 0216/1002] add parser that collects info about possible variables to be set from the command line --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/TODO.md | 1 - tools/lammps-gui/lammpsgui.cpp | 56 +++++++++++++++++++++++++++++++++ tools/lammps-gui/lammpsgui.h | 3 ++ tools/lammps-gui/lammpsgui.ui | 17 ++++++++-- 5 files changed, 74 insertions(+), 5 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index d936bf82d9..fbc55689c0 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.6 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.7 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 7af492888e..7e634b2234 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -11,7 +11,6 @@ LAMMPS-GUI TODO list: - need to handle "label" and "jump" commands from within ? - switch processing of input to line based commands or? - switch input file editor to read-only while loop is running -- add Variables menu entry where command line variables can be set - embed all icons/graphics # Long term ideas diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 76f1d9f753..01c1fdb600 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -303,6 +303,60 @@ void LammpsGui::update_recents(const QString &filename) } } +void LammpsGui::update_variables() +{ + const auto doc = ui->textEdit->toPlainText().split('\n'); + QStringList known; + QRegularExpression indexvar("^\\s*variable\\s+(\\w+)\\s+index\\s+(.*)"); + QRegularExpression anyvar("^\\s*variable\\s+(\\w+)\\s+(\\w+)\\s+(.*)"); + QRegularExpression usevar("(\\$(\\w)|\\${(\\w+)})"); + QRegularExpression refvar("v_(\\w+)"); + + // forget previously listed variables + variables.clear(); + + for (const auto &line : doc) { + + // first find variable definitions. + // index variables are special since they can be overridden from the command line + auto index = indexvar.match(line); + auto any = anyvar.match(line); + + if (index.hasMatch()) { + if (index.lastCapturedIndex() >= 2) { + auto name = index.captured(1); + if (!known.contains(name)) { + variables.append(qMakePair(name, index.captured(2))); + known.append(name); + } + } + } else if (any.hasMatch()) { + if (any.lastCapturedIndex() >= 3) { + auto name = any.captured(1); + if (!known.contains(name)) known.append(name); + } + } + + // now split line into words and search for use of undefined variables + auto words = line.split(' '); + for (const auto &word : words) { + auto use = usevar.match(word); + auto ref = refvar.match(word); + if (use.hasMatch()) { + auto name = use.captured(use.lastCapturedIndex()); + if (!known.contains(name)) { + known.append(name); + variables.append(qMakePair(name, QString())); + } + } + if (ref.hasMatch()) { + auto name = ref.captured(use.lastCapturedIndex()); + if (!known.contains(name)) known.append(name); + } + } + } +} + // open file and switch CWD to path of file void LammpsGui::open_file(const QString &fileName) { @@ -351,6 +405,8 @@ void LammpsGui::open_file(const QString &fileName) ui->textEdit->document()->setModified(false); file.close(); dirstatus->setText(QString(" Directory: ") + current_dir); + + update_variables(); } void LammpsGui::write_file(const QString &fileName) diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index f2a0fbbbc2..fe78becbe9 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -57,6 +58,7 @@ protected: void open_file(const QString &filename); void write_file(const QString &filename); void update_recents(const QString &filename = ""); + void update_variables(); void start_lammps(); void run_done(); @@ -105,6 +107,7 @@ private: QString current_file; QString current_dir; QList recent; + QList> variables; LammpsWrapper lammps; std::string plugin_path; diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 69fa4946b4..3617017804 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -70,6 +70,8 @@ + + @@ -296,10 +298,10 @@ .. - &View Snapshot + View &Image - View Snapshot of current LAMMPS state + View Snapshot image of current LAMMPS state Ctrl+I @@ -407,12 +409,21 @@ - + + .. &Image Window + + + + + + Set &Variables + + From 9110c23fcbb48d1c438354becdca2a63dd38ef00 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 00:09:30 -0400 Subject: [PATCH 0217/1002] add set variables dialog --- tools/lammps-gui/CMakeLists.txt | 2 ++ tools/lammps-gui/lammpsgui.cpp | 9 +++++ tools/lammps-gui/lammpsgui.h | 1 + tools/lammps-gui/setvariables.cpp | 55 +++++++++++++++++++++++++++++++ tools/lammps-gui/setvariables.h | 37 +++++++++++++++++++++ 5 files changed, 104 insertions(+) create mode 100644 tools/lammps-gui/setvariables.cpp create mode 100644 tools/lammps-gui/setvariables.h diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index fbc55689c0..863d7e424d 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -81,6 +81,8 @@ set(PROJECT_SOURCES logwindow.h preferences.cpp preferences.h + setvariables.cpp + setvariables.h stdcapture.cpp ${PLUGIN_LOADER_SRC} ) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 01c1fdb600..65a73bde33 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -19,6 +19,7 @@ #include "lammpsrunner.h" #include "logwindow.h" #include "preferences.h" +#include "setvariables.h" #include "stdcapture.h" #include "ui_lammpsgui.h" @@ -150,6 +151,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionRedo, &QAction::triggered, this, &LammpsGui::redo); connect(ui->actionRun_Buffer, &QAction::triggered, this, &LammpsGui::run_buffer); connect(ui->actionStop_LAMMPS, &QAction::triggered, this, &LammpsGui::stop_run); + connect(ui->actionSet_Variables, &QAction::triggered, this, &LammpsGui::edit_variables); connect(ui->actionImage, &QAction::triggered, this, &LammpsGui::render_image); connect(ui->actionAbout_LAMMPS_GUI, &QAction::triggered, this, &LammpsGui::about); connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); @@ -892,6 +894,13 @@ void LammpsGui::defaults() settings.sync(); } +void LammpsGui::edit_variables() +{ + QList> newvars = variables; + SetVariables vars(newvars); + if (vars.exec() == QDialog::Accepted) variables = newvars; +} + void LammpsGui::preferences() { QSettings settings; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index fe78becbe9..147b2c68a4 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -77,6 +77,7 @@ private slots: void clear(); void run_buffer(); void stop_run(); + void edit_variables(); void render_image(); void view_image(); void view_chart(); diff --git a/tools/lammps-gui/setvariables.cpp b/tools/lammps-gui/setvariables.cpp new file mode 100644 index 0000000000..8393dff60e --- /dev/null +++ b/tools/lammps-gui/setvariables.cpp @@ -0,0 +1,55 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "setvariables.h" + +#include +#include +#include +#include +#include + +SetVariables::SetVariables(QList> &vars, QWidget *parent) : QDialog(parent) +{ + auto *layout = new QGridLayout; + auto *top = new QLabel("Set Variables:"); + layout->addWidget(top, 0, 0, 1, 2, Qt::AlignHCenter); + + auto *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + connect(buttonBox, &QDialogButtonBox::accepted, this, &SetVariables::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + + int i = 1; + for (const auto &v : vars) { + auto *name = new QLineEdit(v.first); + auto *val = new QLineEdit(v.second); + name->setObjectName("varname"); + val->setObjectName("varval"); + layout->addWidget(name, i, 0); + layout->addWidget(val, i, 1); + ++i; + } + layout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding), i, 0); + layout->addWidget(buttonBox, i + 1, 0, 1, 2); + setLayout(layout); + setWindowTitle("LAMMPS-GUI - Set Variables"); + resize(500, 400); +} + +void SetVariables::accept() +{ + // store all data in settings class + // and then confirm accepting + + QDialog::accept(); +} diff --git a/tools/lammps-gui/setvariables.h b/tools/lammps-gui/setvariables.h new file mode 100644 index 0000000000..810111f844 --- /dev/null +++ b/tools/lammps-gui/setvariables.h @@ -0,0 +1,37 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef SET_VARIABLES_H +#define SET_VARIABLES_H + +#include +#include +#include +#include + +class SetVariables : public QDialog { + Q_OBJECT + +public: + explicit SetVariables(QList> &vars, QWidget *parent = nullptr); + ~SetVariables() = default; + +private slots: + void accept() override; +}; + +#endif + +// Local Variables: +// c-basic-offset: 4 +// End: From ca9924035bbb90c5d6c9cf41db40a6a10f293ec5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 12 Aug 2023 01:19:43 -0500 Subject: [PATCH 0218/1002] Working on pack/unpack exchange for xoriginal --- src/KOKKOS/fix_spring_self_kokkos.cpp | 143 ++++++++++++++++++++++++++ src/KOKKOS/fix_spring_self_kokkos.h | 53 +++++++++- 2 files changed, 193 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/fix_spring_self_kokkos.cpp b/src/KOKKOS/fix_spring_self_kokkos.cpp index 5031c0641b..4e89ede2ba 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.cpp +++ b/src/KOKKOS/fix_spring_self_kokkos.cpp @@ -133,6 +133,149 @@ void FixSpringSelfKokkos::post_force(int /*vflag*/) espring = 0.5*espring_kk; } +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixSpringSelfKokkos::pack_exchange_item(const int &mysend, int &offset, const bool &final) const +{ + const int i = d_exchange_sendlist(mysend); + + d_buf[mysend] = nsend + offset; + int m = nsend + offset; + d_buf[m++] = d_xoriginal(i,0); + d_buf[m++] = d_xoriginal(i,1); + d_buf[m++] = d_xoriginal(i,2); + if (mysend == nsend-1) d_count() = m; + offset = m - nsend; + + const int j = d_copylist(mysend); + if (j > -1) { + d_xoriginal(i,0) = d_xoriginal(j,0); + d_xoriginal(i,1) = d_xoriginal(j,1); + d_xoriginal(i,2) = d_xoriginal(j,2); + } +} + +/* ---------------------------------------------------------------------- */ + +template +int FixSpringSelfKokkos::pack_exchange_kokkos( + const int &nsend, DAT::tdual_xfloat_2d &k_buf, + DAT::tdual_int_1d k_exchange_sendlist, DAT::tdual_int_1d k_copylist, + ExecutionSpace space) +{ + + k_buf.sync(); + k_copylist.sync(); + k_exchange_sendlist.sync(); + + d_buf = typename ArrayTypes::t_xfloat_1d_um( + k_buf.template view().data(), + k_buf.extent(0)*k_buf.extent(1)); + d_copylist = k_copylist.view(); + d_exchange_sendlist = k_exchange_sendlist.view(); + this->nsend = nsend; + + + k_xoriginal.template sync(); + + Kokkos::deep_copy(d_count,0); + + copymode = 1; + + FixSpringSelfKokkosPackExchangeFunctor pack_exchange_functor(this); + Kokkos::parallel_scan(nsend,pack_exchange_functor); + + copymode = 0; + + k_buf.modify(); + + if (space == Host) k_buf.sync(); + else k_buf.sync(); + + k_xoriginal.template modify(); + + Kokkos::deep_copy(h_count,d_count); + + return h_count(); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixSpringSelfKokkos::operator()(TagFixSpringSelfUnpackExchange, const int &i) const +{ + int index = d_indices(i); + + if (index > -1) { + int m = d_buf[i]; + + d_xoriginal(index,0) = static_cast (d_buf[m++]); + d_xoriginal(index,1) = static_cast (d_buf[m++]); + d_xoriginal(index,2) = static_cast (d_buf[m++]); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixSpringSelfKokkos::unpack_exchange_kokkos( + DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &k_indices, int nrecv, + ExecutionSpace /*space*/) +{ + k_buf.sync(); + k_indices.sync(); + + d_buf = typename ArrayTypes::t_xfloat_1d_um( + k_buf.template view().data(), + k_buf.extent(0)*k_buf.extent(1)); + d_indices = k_indices.view(); + + k_xoriginal.template sync(); + + copymode = 1; + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nrecv),*this); + + copymode = 0; + + k_xoriginal.template modify(); +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for exchange with another proc +------------------------------------------------------------------------- */ + +template +int FixSpringSelfKokkos::pack_exchange(int i, double *buf) +{ + k_xoriginal.sync_host(); + + int m = FixSpringSelf::pack_exchange(i,buf); + + k_xoriginal.modify_host(); + + return m; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based arrays from exchange with another proc +------------------------------------------------------------------------- */ + +template +int FixSpringSelfKokkos::unpack_exchange(int nlocal, double *buf) +{ + k_xoriginal.sync_host(); + + int m = FixSpringSelf::unpack_exchange(nlocal,buf); + + k_xoriginal.modify_host(); + + return m; +} + namespace LAMMPS_NS { template class FixSpringSelfKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/fix_spring_self_kokkos.h b/src/KOKKOS/fix_spring_self_kokkos.h index 58dcbc525e..b69d4edb4a 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.h +++ b/src/KOKKOS/fix_spring_self_kokkos.h @@ -25,11 +25,14 @@ FixStyle(spring/self/kk/host,FixSpringSelfKokkos); #include "fix_spring_self.h" #include "kokkos_type.h" +#include "kokkos_base.h" namespace LAMMPS_NS { +struct TagFixSpringSelfUnpackExchange{}; + template -class FixSpringSelfKokkos : public FixSpringSelf { +class FixSpringSelfKokkos : public FixSpringSelf, public KokkosBase { public: typedef DeviceType device_type; typedef double value_type; @@ -40,14 +43,58 @@ class FixSpringSelfKokkos : public FixSpringSelf { void init() override; void post_force(int) override; - private: + KOKKOS_INLINE_FUNCTION + void pack_exchange_item(const int&, int &, const bool &) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixSpringSelfUnpackExchange, const int&) const; + + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space) override; + + void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, + DAT::tdual_int_1d &indices,int nrecv, + ExecutionSpace space) override; + + + int pack_exchange(int, double *) override; + int unpack_exchange(int, double *) override; + + protected: DAT::tdual_ffloat_2d k_xoriginal; - typename AT::t_ffloat_2d_randomread d_xoriginal; + typename AT::t_ffloat_2d d_xoriginal; typename AT::t_x_array_randomread x; typename AT::t_f_array f; typename AT::t_imageint_1d_randomread image; typename AT::t_int_1d_randomread mask; + + int nsend; + + typename AT::t_int_2d d_sendlist; + typename AT::t_xfloat_1d_um d_buf; + + typename AT::t_int_1d d_exchange_sendlist; + typename AT::t_int_1d d_copylist; + typename AT::t_int_1d d_indices; + + typename AT::t_int_scalar d_count; + HAT::t_int_scalar h_count; + +}; + +template +struct FixSpringSelfKokkosPackExchangeFunctor { + typedef DeviceType device_type; + typedef int value_type; + FixSpringSelfKokkos c; + FixSpringSelfKokkosPackExchangeFunctor(FixSpringSelfKokkos* c_ptr):c(*c_ptr) {}; + KOKKOS_INLINE_FUNCTION + void operator()(const int &i, int &offset, const bool &final) const { + c.pack_exchange_item(i, offset, final); + } }; } From 62b431880183ff85e251c6e8ce1c82f94e1a802c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 10:08:02 -0400 Subject: [PATCH 0219/1002] complete implementation of variable setting dialog --- tools/lammps-gui/lammpsgui.cpp | 27 +++++++-- tools/lammps-gui/lammpsgui.qrc | 3 + tools/lammps-gui/lammpsgui.ui | 6 +- tools/lammps-gui/setvariables.cpp | 97 ++++++++++++++++++++++++++----- tools/lammps-gui/setvariables.h | 6 ++ 5 files changed, 118 insertions(+), 21 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 65a73bde33..ebcbfe9d14 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -271,35 +271,35 @@ void LammpsGui::update_recents(const QString &filename) ui->action_1->setVisible(false); if ((recent.size() > 0) && !recent[0].isEmpty()) { QFileInfo fi(recent[0]); - ui->action_1->setText(QString("1. ") + fi.fileName()); + ui->action_1->setText(QString("&1. ") + fi.fileName()); ui->action_1->setData(recent[0]); ui->action_1->setVisible(true); } ui->action_2->setVisible(false); if ((recent.size() > 1) && !recent[1].isEmpty()) { QFileInfo fi(recent[1]); - ui->action_2->setText(QString("2. ") + fi.fileName()); + ui->action_2->setText(QString("&2. ") + fi.fileName()); ui->action_2->setData(recent[1]); ui->action_2->setVisible(true); } ui->action_3->setVisible(false); if ((recent.size() > 2) && !recent[2].isEmpty()) { QFileInfo fi(recent[2]); - ui->action_3->setText(QString("3. ") + fi.fileName()); + ui->action_3->setText(QString("&3. ") + fi.fileName()); ui->action_3->setData(recent[2]); ui->action_3->setVisible(true); } ui->action_4->setVisible(false); if ((recent.size() > 3) && !recent[3].isEmpty()) { QFileInfo fi(recent[3]); - ui->action_4->setText(QString("4. ") + fi.fileName()); + ui->action_4->setText(QString("&4. ") + fi.fileName()); ui->action_4->setData(recent[3]); ui->action_4->setVisible(true); } ui->action_5->setVisible(false); if ((recent.size() > 4) && !recent[4].isEmpty()) { QFileInfo fi(recent[4]); - ui->action_5->setText(QString("5. ") + fi.fileName()); + ui->action_5->setText(QString("&5. ") + fi.fileName()); ui->action_5->setData(recent[4]); ui->action_5->setVisible(true); } @@ -898,7 +898,10 @@ void LammpsGui::edit_variables() { QList> newvars = variables; SetVariables vars(newvars); - if (vars.exec() == QDialog::Accepted) variables = newvars; + if (vars.exec() == QDialog::Accepted) { + variables = newvars; + lammps.close(); + } } void LammpsGui::preferences() @@ -968,6 +971,18 @@ void LammpsGui::start_lammps() lammps_args.push_back(mystrdup("screen")); } + // add variables, if defined + for (auto &var : variables) { + QString name = var.first; + QString value = var.second; + if (!name.isEmpty() && !value.isEmpty()) { + lammps_args.push_back(mystrdup("-var")); + lammps_args.push_back(mystrdup(name.toStdString())); + for (const auto &v : value.split(' ')) + lammps_args.push_back(mystrdup(v.toStdString())); + } + } + char **args = lammps_args.data(); int narg = lammps_args.size(); lammps.open(narg, args); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 6d5abb1d3f..40b8bd9978 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -11,6 +11,9 @@ gtk-zoom-fit.png + + edit-delete.png + object-rotate-right.png diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 3617017804..4032a44c31 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -418,11 +418,15 @@ - + + .. Set &Variables + + Ctrl+Shift+V + diff --git a/tools/lammps-gui/setvariables.cpp b/tools/lammps-gui/setvariables.cpp index 8393dff60e..4729ca077b 100644 --- a/tools/lammps-gui/setvariables.cpp +++ b/tools/lammps-gui/setvariables.cpp @@ -15,32 +15,45 @@ #include #include +#include #include #include +#include #include -SetVariables::SetVariables(QList> &vars, QWidget *parent) : QDialog(parent) +SetVariables::SetVariables(QList> &_vars, QWidget *parent) : + QDialog(parent), vars(_vars), layout(new QVBoxLayout) { - auto *layout = new QGridLayout; - auto *top = new QLabel("Set Variables:"); - layout->addWidget(top, 0, 0, 1, 2, Qt::AlignHCenter); - - auto *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); - connect(buttonBox, &QDialogButtonBox::accepted, this, &SetVariables::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + auto *top = new QLabel("Set Variables:"); + layout->addWidget(top, 0, Qt::AlignHCenter); int i = 1; for (const auto &v : vars) { + auto *row = new QHBoxLayout; auto *name = new QLineEdit(v.first); auto *val = new QLineEdit(v.second); + auto *del = new QPushButton(QIcon(":/edit-delete.png"), ""); name->setObjectName("varname"); val->setObjectName("varval"); - layout->addWidget(name, i, 0); - layout->addWidget(val, i, 1); + del->setObjectName(QString::number(i)); + connect(del, &QPushButton::released, this, &SetVariables::del_row); + row->addWidget(name); + row->addWidget(val); + row->addWidget(del); + layout->addLayout(row); ++i; } - layout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding), i, 0); - layout->addWidget(buttonBox, i + 1, 0, 1, 2); + layout->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding)); + + auto *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + auto *add = new QPushButton("&Add Row"); + add->setObjectName("add_row"); + buttonBox->addButton(add, QDialogButtonBox::ActionRole); + connect(add, &QPushButton::released, this, &SetVariables::add_row); + connect(buttonBox, &QDialogButtonBox::accepted, this, &SetVariables::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + + layout->addWidget(buttonBox); setLayout(layout); setWindowTitle("LAMMPS-GUI - Set Variables"); resize(500, 400); @@ -48,8 +61,64 @@ SetVariables::SetVariables(QList> &vars, QWidget *parent void SetVariables::accept() { - // store all data in settings class - // and then confirm accepting + // store all data in variables class and then confirm accepting + vars.clear(); + int nrows = layout->count() - 2; + for (int i = 1; i < nrows; ++i) { + auto *row = layout->itemAt(i)->layout(); + auto *var = dynamic_cast(row->itemAt(0)->widget()); + auto *val = dynamic_cast(row->itemAt(1)->widget()); + if (var && val) vars.append(qMakePair(var->text(), val->text())); + } QDialog::accept(); } + +void SetVariables::add_row() +{ + int nrows = layout->count(); + auto *row = new QHBoxLayout; + auto *name = new QLineEdit(QString()); + auto *val = new QLineEdit(QString()); + auto *del = new QPushButton(QIcon(":/edit-delete.png"), ""); + name->setObjectName("varname"); + val->setObjectName("varval"); + del->setObjectName(QString::number(nrows - 2)); + connect(del, &QPushButton::released, this, &SetVariables::del_row); + row->addWidget(name); + row->addWidget(val); + row->addWidget(del); + layout->insertLayout(nrows - 2, row); +} + +void SetVariables::del_row() +{ + int nrows = layout->count(); + auto *who = sender(); + if (who) { + // figure out which row was deleted and delete its layout and widgets + int delrow = who->objectName().toInt(); + auto *row = layout->takeAt(delrow); + while (row->layout()->count() > 0) { + auto *item = row->layout()->takeAt(0); + row->layout()->removeItem(item); + if (item) { + delete item->widget(); + delete item; + } + } + layout->removeItem(row); + delete row->layout(); + + // renumber the delete pushbutton names + for (int i = delrow; i < nrows - 3; ++i) { + auto *row = layout->itemAt(i)->layout(); + auto *widget = row->itemAt(2)->widget(); + widget->setObjectName(QString::number(i)); + } + } +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/setvariables.h b/tools/lammps-gui/setvariables.h index 810111f844..1d1ca30bf2 100644 --- a/tools/lammps-gui/setvariables.h +++ b/tools/lammps-gui/setvariables.h @@ -28,6 +28,12 @@ public: private slots: void accept() override; + void add_row(); + void del_row(); + +private: + QList> &vars; + class QVBoxLayout *layout; }; #endif From f104d75626fb1d2d8a2af9b88c93b5e58b411107 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 10:17:10 -0400 Subject: [PATCH 0220/1002] add missing icon --- tools/lammps-gui/edit-delete.png | Bin 0 -> 3145 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tools/lammps-gui/edit-delete.png diff --git a/tools/lammps-gui/edit-delete.png b/tools/lammps-gui/edit-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fcfdcf10f248aaf5b83d2fcf25af79d6ec6d8f GIT binary patch literal 3145 zcmV-P47T%$P)4h9c_2`7WoBh^Wo~0-b1m?* zJpcdz7IZ~ebU}4=Xm4@=L2hJnWnpt5PHAj&b8l`d@8qKZ0013yMObuGZ*_8GWdLY& zbZ|N^FL!r$E@5tDa%Ew2ZZ30Wq3e3h000Y6NklC<8OOH}vN3T9NyxRi zHzA~n97Yg1G=PG|yBvxoA__)=)M;sL#u=xzHEBi#+j@|I;#iMC&?v1Ukn(EiVDpI1yz=Ug2OmAnPok-egV?Ay1KZQC}o-*XSy?!1$1x7|jaWn~^?aj~l-KVRRW zQq{I0#&d!)Em`llgDi^{xzQ7L zO-|05|C|At?0bg%{2F6PiOY8P-DKUoiEJBhCF>8DL*(UTR^^c;H=T`z zPd%$wQ}6EG=N$m1Cd!Xq*II+t}+KPKw>;&9Bag{7h= z4D;r>Te7no#?uoK4Pb)R7)ncB){PsxP0Oy6Gl5tx~zZ%*e>}Y(~M~noTa8uu*L&5~-;9TY_uAr_JE9g{4hW(3k zEU{q?U?NqU7cO*n-Es>Vv$FgK>`y*uXc2Z9WQ5ej&`;;w=1|QFu+96=hz2^#cvC_;q)z5$t__kG}_4G?5pd0lvp&eC6-2tQcc} zbJ%KY{do;AV<{`66KQGsaT)kJBcretv%mA!TS=dhK^?$=E_HS2LmK$w%P;u_g)$LN zJoEa2{UHswEM_ubvEbaS!Mt=Soyf>=9iKkEFrtC4l*%go{P`Z!)mM{VsT4uXn8*VI zE)m@Ac8{6^eB86QK7@%g0b~En81Y;uFotgqa1PF8S+~|}02&Nfk?>p?{46=SDzbsh z%){*1fVEhko-P7d|M2?&1EYH(yoq}M(#hxN7C+MZJ_FYJdXbwobnu**Kc7BJNjV(R zz$vA&sq?z)NIzo+>DU11egCf_=tNEM=TO%oiD!C0`kTnj8nBfi(}D%`X>xK?L<1+4 zN)xX>I;_X-X=$VbeP5m=m&+N!gjY`}`&Xd&Acwe5|YAJw|Y_ zAubbGC$QCh;yIW7*oPvw(16C&Uw%3FK;%i>l$v^&yGx6=CUsJh2w>UyB!c#ez@d!r zv9A8PkU~QlGc>!YD}IM1YnF+Rn*&S2M&SH$o-Y~1&DuEGS?RpzQ<)oHgorl z67G#{C)2Nf>CfAWRZs^5@5jgM$Gsc95G)uuDd~ zW)2*DT?pCt;`8E~S5SDk%&V`xEb4GwpJ;|-+tjVpiiYEyoLh~j@TvTK&$|l6__xy^ z;N<~JmQ#nNs~KzYX$}T-TdaLV0 z4XkVU-BTm68Ehmq==r1Z@veqTE?ILyUu?avP}F>qk>S*0KD1z8?g!o5zGXA@G=Cjr zWc>8BV#iszRmAeg#hS0iLkkV(d?z-x=AwMH_}t(WZxy#dSq)nL9fiWZPcE-Rt~}&a zg6Tj3gCHxeeJcQ!8LIoW?8rfL+EprYWPjLeCXk*s1K*fWIsXd+re^B za-jys3?YyY7J{3>Ca@!C(xhEgQ>J{jKPJZcwnB0Clf1m)7EDMU-^vL_^r6Ov#&-+J0FUQ`XpN>djhe349dX|z&wz9K|?5b5`zSg0y4o&ums%1y#cm? zU(A{`>Dld3QH@W@<=TBQG2Q#4qg`)CM-RUNUc>nda(VZz=xELM$&)`s*{4zGXW)LY z9;^Zjq()LojTV32lQ>L|_=Z)2lptLiT9<)E0E?CE7O)Q73GM2o9n^j5I#uC1XjFkYuUH0!fzcB}zi4N@BTTCd(%9 j!`^rQYVe(bi^#tL=KjLd9M)lb00000NkvXXu0mjfN+tnj literal 0 HcmV?d00001 From 45290b52963021d0f08cd4a701a900a4c17a245b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 11:52:22 -0400 Subject: [PATCH 0221/1002] update fmtlib to version 10.1 --- src/fmt/core.h | 8 +++++--- src/fmt/format.h | 5 +++-- src/fmt/std.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/fmt/core.h b/src/fmt/core.h index 70a4af11a3..23c9171fc8 100644 --- a/src/fmt/core.h +++ b/src/fmt/core.h @@ -13,11 +13,12 @@ #include // std::strlen #include #include +#include // std::addressof #include #include // The fmt library version in the form major * 10000 + minor * 100 + patch. -#define FMT_VERSION 100001 +#define FMT_VERSION 100100 #if defined(__clang__) && !defined(__ibmxl__) # define FMT_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__) @@ -1290,9 +1291,9 @@ template class value { FMT_INLINE value(const named_arg_info* args, size_t size) : named_args{args, size} {} - template FMT_CONSTEXPR FMT_INLINE value(T& val) { + template FMT_CONSTEXPR20 FMT_INLINE value(T& val) { using value_type = remove_const_t; - custom.value = const_cast(&val); + custom.value = const_cast(std::addressof(val)); // Get the formatter type through the context to allow different contexts // have different extension points, e.g. `formatter` for `format` and // `printf_formatter` for `printf`. @@ -1669,6 +1670,7 @@ template class basic_format_arg { ``vis(value)`` will be called with the value of type ``double``. \endrst */ +// DEPRECATED! FMT_EXPORT template FMT_CONSTEXPR FMT_INLINE auto visit_format_arg( diff --git a/src/fmt/format.h b/src/fmt/format.h index dfd5d78abc..e5bd8b110e 100644 --- a/src/fmt/format.h +++ b/src/fmt/format.h @@ -920,7 +920,7 @@ class basic_memory_buffer final : public detail::buffer { private: T store_[SIZE]; - // Don't inherit from Allocator avoid generating type_info for it. + // Don't inherit from Allocator to avoid generating type_info for it. FMT_NO_UNIQUE_ADDRESS Allocator alloc_; // Deallocate memory allocated by the buffer. @@ -3178,7 +3178,8 @@ FMT_CONSTEXPR20 inline void format_dragon(basic_fp value, } if (buf[0] == overflow) { buf[0] = '1'; - ++exp10; + if ((flags & dragon::fixed) != 0) buf.push_back('0'); + else ++exp10; } return; } diff --git a/src/fmt/std.h b/src/fmt/std.h index a71a59db9a..b0e78e10dd 100644 --- a/src/fmt/std.h +++ b/src/fmt/std.h @@ -8,6 +8,7 @@ #ifndef FMT_STD_H_ #define FMT_STD_H_ +#include #include #include #include @@ -15,6 +16,7 @@ #include #include #include +#include #include "format.h" #include "ostream.h" @@ -389,6 +391,50 @@ struct formatter< #endif } }; + +namespace detail { + +template +struct has_flip : std::false_type {}; + +template +struct has_flip().flip())>> + : std::true_type {}; + +template struct is_bit_reference_like { + static constexpr const bool value = + std::is_convertible::value && + std::is_nothrow_assignable::value && has_flip::value; +}; + +#ifdef _LIBCPP_VERSION + +// Workaround for libc++ incompatibility with C++ standard. +// According to the Standard, `bitset::operator[] const` returns bool. +template +struct is_bit_reference_like> { + static constexpr const bool value = true; +}; + +#endif + +} // namespace detail + +// We can't use std::vector::reference and +// std::bitset::reference because the compiler can't deduce Allocator and N +// in partial specialization. +FMT_EXPORT +template +struct formatter::value>> + : formatter { + template + FMT_CONSTEXPR auto format(const BitRef& v, FormatContext& ctx) const + -> decltype(ctx.out()) { + return formatter::format(v, ctx); + } +}; + FMT_END_NAMESPACE #endif // FMT_STD_H_ From dd18de164a8329b6cd73f0c823e0b3941538330d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 12:41:44 -0400 Subject: [PATCH 0222/1002] avoid legacy compilation failures on recent ubuntu machines that only have python3-config --- lib/python/Makefile.lammps | 15 +++++++++++---- tools/singularity/ubuntu20.04.def | 1 + tools/singularity/ubuntu20.04_amd_rocm.def | 1 + tools/singularity/ubuntu20.04_gpu.def | 1 + tools/singularity/ubuntu20.04_intel_opencl.def | 1 + tools/singularity/ubuntu20.04_nvidia.def | 1 + tools/singularity/ubuntu20.04_oneapi.def | 1 + tools/singularity/ubuntu22.04.def | 1 + 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/python/Makefile.lammps b/lib/python/Makefile.lammps index e4afa70456..bfde590a39 100644 --- a/lib/python/Makefile.lammps +++ b/lib/python/Makefile.lammps @@ -1,7 +1,14 @@ # Settings that the LAMMPS build will import when this package library is used # See the README file for more explanation - -python_SYSINC = $(shell which python-config > /dev/null 2>&1 && python-config --includes || :) -python_SYSLIB = $(shell which python-config > /dev/null 2>&1 && python-config --ldflags --embed > /dev/null 2>&1 && python-config --ldflags --embed || (which python-config > /dev/null 2>&1 && python-config --ldflags || :) ) -python_SYSPATH = +ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0) +PYTHON=python3 +PYTHONCONFIG = python3-config +else +PYTHONCONFIG = python-config PYTHON=python +endif + + +python_SYSINC = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --includes || :) +python_SYSLIB = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed || (which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags || :) ) +python_SYSPATH = diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def index d62b4c9f86..91efd1b5fd 100644 --- a/tools/singularity/ubuntu20.04.def +++ b/tools/singularity/ubuntu20.04.def @@ -54,6 +54,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ diff --git a/tools/singularity/ubuntu20.04_amd_rocm.def b/tools/singularity/ubuntu20.04_amd_rocm.def index 6792322af0..28f35ef406 100644 --- a/tools/singularity/ubuntu20.04_amd_rocm.def +++ b/tools/singularity/ubuntu20.04_amd_rocm.def @@ -83,6 +83,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_gpu.def b/tools/singularity/ubuntu20.04_gpu.def index b746f92086..0044970b04 100644 --- a/tools/singularity/ubuntu20.04_gpu.def +++ b/tools/singularity/ubuntu20.04_gpu.def @@ -88,6 +88,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_intel_opencl.def b/tools/singularity/ubuntu20.04_intel_opencl.def index c8680a16c7..42cc1ab6fa 100644 --- a/tools/singularity/ubuntu20.04_intel_opencl.def +++ b/tools/singularity/ubuntu20.04_intel_opencl.def @@ -53,6 +53,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_nvidia.def b/tools/singularity/ubuntu20.04_nvidia.def index 3affc30b8b..aacaeec7b5 100644 --- a/tools/singularity/ubuntu20.04_nvidia.def +++ b/tools/singularity/ubuntu20.04_nvidia.def @@ -56,6 +56,7 @@ From: nvidia/cuda:11.6.2-devel-ubuntu20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_oneapi.def b/tools/singularity/ubuntu20.04_oneapi.def index 70d69c7d80..36677ec867 100644 --- a/tools/singularity/ubuntu20.04_oneapi.def +++ b/tools/singularity/ubuntu20.04_oneapi.def @@ -52,6 +52,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ diff --git a/tools/singularity/ubuntu22.04.def b/tools/singularity/ubuntu22.04.def index ef43347982..e14d448ce8 100644 --- a/tools/singularity/ubuntu22.04.def +++ b/tools/singularity/ubuntu22.04.def @@ -54,6 +54,7 @@ From: ubuntu:22.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ From 5115df7a382c9d51efb8efb4b282236db9105a18 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 12:41:44 -0400 Subject: [PATCH 0223/1002] avoid legacy compilation failures on recent ubuntu machines that only have python3-config --- lib/python/Makefile.lammps | 15 +++++++++++---- tools/singularity/ubuntu20.04.def | 1 + tools/singularity/ubuntu20.04_amd_rocm.def | 1 + tools/singularity/ubuntu20.04_gpu.def | 1 + tools/singularity/ubuntu20.04_intel_opencl.def | 1 + tools/singularity/ubuntu20.04_nvidia.def | 1 + tools/singularity/ubuntu20.04_oneapi.def | 1 + tools/singularity/ubuntu22.04.def | 1 + 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/python/Makefile.lammps b/lib/python/Makefile.lammps index e4afa70456..bfde590a39 100644 --- a/lib/python/Makefile.lammps +++ b/lib/python/Makefile.lammps @@ -1,7 +1,14 @@ # Settings that the LAMMPS build will import when this package library is used # See the README file for more explanation - -python_SYSINC = $(shell which python-config > /dev/null 2>&1 && python-config --includes || :) -python_SYSLIB = $(shell which python-config > /dev/null 2>&1 && python-config --ldflags --embed > /dev/null 2>&1 && python-config --ldflags --embed || (which python-config > /dev/null 2>&1 && python-config --ldflags || :) ) -python_SYSPATH = +ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0) +PYTHON=python3 +PYTHONCONFIG = python3-config +else +PYTHONCONFIG = python-config PYTHON=python +endif + + +python_SYSINC = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --includes || :) +python_SYSLIB = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed || (which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags || :) ) +python_SYSPATH = diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def index d62b4c9f86..91efd1b5fd 100644 --- a/tools/singularity/ubuntu20.04.def +++ b/tools/singularity/ubuntu20.04.def @@ -54,6 +54,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ diff --git a/tools/singularity/ubuntu20.04_amd_rocm.def b/tools/singularity/ubuntu20.04_amd_rocm.def index 6792322af0..28f35ef406 100644 --- a/tools/singularity/ubuntu20.04_amd_rocm.def +++ b/tools/singularity/ubuntu20.04_amd_rocm.def @@ -83,6 +83,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_gpu.def b/tools/singularity/ubuntu20.04_gpu.def index b746f92086..0044970b04 100644 --- a/tools/singularity/ubuntu20.04_gpu.def +++ b/tools/singularity/ubuntu20.04_gpu.def @@ -88,6 +88,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_intel_opencl.def b/tools/singularity/ubuntu20.04_intel_opencl.def index c8680a16c7..42cc1ab6fa 100644 --- a/tools/singularity/ubuntu20.04_intel_opencl.def +++ b/tools/singularity/ubuntu20.04_intel_opencl.def @@ -53,6 +53,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_nvidia.def b/tools/singularity/ubuntu20.04_nvidia.def index 3affc30b8b..aacaeec7b5 100644 --- a/tools/singularity/ubuntu20.04_nvidia.def +++ b/tools/singularity/ubuntu20.04_nvidia.def @@ -56,6 +56,7 @@ From: nvidia/cuda:11.6.2-devel-ubuntu20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_oneapi.def b/tools/singularity/ubuntu20.04_oneapi.def index 70d69c7d80..36677ec867 100644 --- a/tools/singularity/ubuntu20.04_oneapi.def +++ b/tools/singularity/ubuntu20.04_oneapi.def @@ -52,6 +52,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ diff --git a/tools/singularity/ubuntu22.04.def b/tools/singularity/ubuntu22.04.def index ef43347982..e14d448ce8 100644 --- a/tools/singularity/ubuntu22.04.def +++ b/tools/singularity/ubuntu22.04.def @@ -54,6 +54,7 @@ From: ubuntu:22.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ From 3957b4b19471dc8355428b974b9996d37e1a995d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 12:41:44 -0400 Subject: [PATCH 0224/1002] avoid legacy compilation failures on recent ubuntu machines that only have python3-config --- lib/python/Makefile.lammps | 15 +++++++++++---- tools/singularity/ubuntu20.04.def | 1 + tools/singularity/ubuntu20.04_amd_rocm.def | 1 + tools/singularity/ubuntu20.04_gpu.def | 1 + tools/singularity/ubuntu20.04_intel_opencl.def | 1 + tools/singularity/ubuntu20.04_nvidia.def | 1 + tools/singularity/ubuntu20.04_oneapi.def | 1 + tools/singularity/ubuntu22.04.def | 1 + 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/python/Makefile.lammps b/lib/python/Makefile.lammps index e4afa70456..bfde590a39 100644 --- a/lib/python/Makefile.lammps +++ b/lib/python/Makefile.lammps @@ -1,7 +1,14 @@ # Settings that the LAMMPS build will import when this package library is used # See the README file for more explanation - -python_SYSINC = $(shell which python-config > /dev/null 2>&1 && python-config --includes || :) -python_SYSLIB = $(shell which python-config > /dev/null 2>&1 && python-config --ldflags --embed > /dev/null 2>&1 && python-config --ldflags --embed || (which python-config > /dev/null 2>&1 && python-config --ldflags || :) ) -python_SYSPATH = +ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0) +PYTHON=python3 +PYTHONCONFIG = python3-config +else +PYTHONCONFIG = python-config PYTHON=python +endif + + +python_SYSINC = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --includes || :) +python_SYSLIB = $(shell which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags --embed || (which $(PYTHONCONFIG) > /dev/null 2>&1 && $(PYTHONCONFIG) --ldflags || :) ) +python_SYSPATH = diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def index d62b4c9f86..91efd1b5fd 100644 --- a/tools/singularity/ubuntu20.04.def +++ b/tools/singularity/ubuntu20.04.def @@ -54,6 +54,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ diff --git a/tools/singularity/ubuntu20.04_amd_rocm.def b/tools/singularity/ubuntu20.04_amd_rocm.def index 6792322af0..28f35ef406 100644 --- a/tools/singularity/ubuntu20.04_amd_rocm.def +++ b/tools/singularity/ubuntu20.04_amd_rocm.def @@ -83,6 +83,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_gpu.def b/tools/singularity/ubuntu20.04_gpu.def index b746f92086..0044970b04 100644 --- a/tools/singularity/ubuntu20.04_gpu.def +++ b/tools/singularity/ubuntu20.04_gpu.def @@ -88,6 +88,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_intel_opencl.def b/tools/singularity/ubuntu20.04_intel_opencl.def index c8680a16c7..42cc1ab6fa 100644 --- a/tools/singularity/ubuntu20.04_intel_opencl.def +++ b/tools/singularity/ubuntu20.04_intel_opencl.def @@ -53,6 +53,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_nvidia.def b/tools/singularity/ubuntu20.04_nvidia.def index 3affc30b8b..aacaeec7b5 100644 --- a/tools/singularity/ubuntu20.04_nvidia.def +++ b/tools/singularity/ubuntu20.04_nvidia.def @@ -56,6 +56,7 @@ From: nvidia/cuda:11.6.2-devel-ubuntu20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ vim-nox \ diff --git a/tools/singularity/ubuntu20.04_oneapi.def b/tools/singularity/ubuntu20.04_oneapi.def index 70d69c7d80..36677ec867 100644 --- a/tools/singularity/ubuntu20.04_oneapi.def +++ b/tools/singularity/ubuntu20.04_oneapi.def @@ -52,6 +52,7 @@ From: ubuntu:20.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ diff --git a/tools/singularity/ubuntu22.04.def b/tools/singularity/ubuntu22.04.def index ef43347982..e14d448ce8 100644 --- a/tools/singularity/ubuntu22.04.def +++ b/tools/singularity/ubuntu22.04.def @@ -54,6 +54,7 @@ From: ubuntu:22.04 python3-setuptools \ python3-virtualenv \ python3-venv \ + python-is-python3 \ rsync \ ssh \ texlive \ From bbcfbe957bf0e81401cefb5ce3aa7cb773f98e91 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 17:22:34 -0400 Subject: [PATCH 0225/1002] implement context specific help either via right-click or CTRL-? --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/TODO.md | 1 - tools/lammps-gui/codeeditor.cpp | 123 ++- tools/lammps-gui/codeeditor.h | 18 + tools/lammps-gui/help_index.table | 1443 +++++++++++++++++++++++++ tools/lammps-gui/lammpsgui.qrc | 24 +- tools/lammps-gui/lammpsgui.ui | 17 +- tools/lammps-gui/system-help.png | Bin 0 -> 2567 bytes tools/lammps-gui/update-help-index.sh | 4 + 9 files changed, 1618 insertions(+), 14 deletions(-) create mode 100644 tools/lammps-gui/help_index.table create mode 100644 tools/lammps-gui/system-help.png create mode 100755 tools/lammps-gui/update-help-index.sh diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 863d7e424d..b7d7211c95 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.7 LANGUAGES CXX) +project(lammps-gui VERSION 1.1.8 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 7e634b2234..ad98b29c87 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -25,5 +25,4 @@ LAMMPS-GUI TODO list: - support single stepping, i.e. process input line by line (need to detect continuation chars!) with highlighting active line(s) - have command text input file in/above status bar where individual commands can be tested. have insert button to copy line into file at the current point - support text completion as done with lammps-shell -- have context menu for known commands to offer retrieving help by dispatching URL to webbrowser (process index from sphinx for that purpose) - add a "python" mode, where instead of launching LAMMPS, python is loaded that the LAMMPS python module is made available. diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index f0a375efc0..15dc022f87 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -15,19 +15,59 @@ #include "lammpsgui.h" #include "linenumberarea.h" +#include +#include #include #include +#include +#include +#include #include #include +#include #include +#include CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent) { - lineNumberArea = new LineNumberArea(this); + help_action = new QShortcut(QKeySequence::fromString("Ctrl+?"), parent); + connect(help_action, &QShortcut::activated, this, &CodeEditor::get_help); + // initialize help system + QFile help_index(":/help_index.table"); + if (help_index.open(QIODevice::ReadOnly | QIODevice::Text)) { + while (!help_index.atEnd()) { + auto line = QString(help_index.readLine()); + auto words = line.trimmed().split(' '); + if (words.size() > 2) { + if (words.at(1) == "pair_style") { + pair_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "bond_style") { + bond_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "angle_style") { + angle_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "dihedral_style") { + dihedral_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "improper_style") { + improper_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "fix") { + fix_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "compute") { + compute_map[words.at(2)] = words.at(0); + } + // ignoring: min_style, kspace_style, dump, fix_modify ATC + } else if (words.size() == 2) { + cmd_map[words.at(1)] = words.at(0); + } else { + fprintf(stderr, "unhandled: %s", line.toStdString().c_str()); + } + } + help_index.close(); + } + + lineNumberArea = new LineNumberArea(this); connect(this, &CodeEditor::blockCountChanged, this, &CodeEditor::updateLineNumberAreaWidth); connect(this, &CodeEditor::updateRequest, this, &CodeEditor::updateLineNumberArea); - updateLineNumberAreaWidth(0); } @@ -138,6 +178,85 @@ void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event) } } +void CodeEditor::contextMenuEvent(QContextMenuEvent *event) +{ + // reposition the cursor here? + QString page, help; + find_help(page, help); + + // print augmented context menu if an entry was found + auto *menu = createStandardContextMenu(); + if (!page.isEmpty()) { + menu->addSeparator(); + auto action = menu->addAction(QString("Look up help for '%1'").arg(help)); + action->setIcon(QIcon(":/system-help.png")); + action->setData(page); + connect(action, &QAction::triggered, this, &CodeEditor::open_help); + } + menu->exec(event->globalPos()); + delete menu; +} + +void CodeEditor::get_help() +{ + QString page, help; + find_help(page, help); + if (!page.isEmpty()) + QDesktopServices::openUrl(QUrl(QString("https://docs.lammps.org/%1").arg(page))); +} + +void CodeEditor::find_help(QString &page, QString &help) +{ + // process line of text where the cursor is + auto text = textCursor().block().text().replace('\t', ' ').trimmed(); + auto style = + QRegularExpression("^(pair|bond|angle|dihedral|improper)_style\\s+(\\S+)").match(text); + help.clear(); + page.clear(); + if (style.hasMatch()) { + if (style.captured(1) == "pair") { + page = pair_map.value(style.captured(2), QString()); + help = QString("pair_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "bond") { + page = bond_map.value(style.captured(2), QString()); + help = QString("bond_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "angle") { + page = angle_map.value(style.captured(2), QString()); + help = QString("angle_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "dihedral") { + page = dihedral_map.value(style.captured(2), QString()); + help = QString("dihedral_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "improper") { + page = improper_map.value(style.captured(2), QString()); + help = QString("improper_style %1").arg(style.captured(2)); + } + } + + style = QRegularExpression("^(fix|compute)\\s+\\w+\\s+\\w+\\s+(\\S+)").match(text); + if (style.hasMatch()) { + help = QString("%1 %2").arg(style.captured(1), style.captured(2)); + if (style.captured(1) == "fix") { + page = fix_map.value(style.captured(2), QString()); + } else if (style.captured(1) == "compute") { + page = compute_map.value(style.captured(2), QString()); + } + } + + // could not find a matching "style", now try the plain command + if (page.isEmpty() && !text.isEmpty()) { + auto cmd = text.split(' ').at(0); + help = cmd; + page = cmd_map.value(cmd, QString()); + } +} + +void CodeEditor::open_help() +{ + QAction *act = qobject_cast(sender()); + QDesktopServices::openUrl( + QUrl(QString("https://docs.lammps.org/%1").arg(act->data().toString()))); +} + // Local Variables: // c-basic-offset: 4 // End: diff --git a/tools/lammps-gui/codeeditor.h b/tools/lammps-gui/codeeditor.h index 49abf81553..57cdd8576b 100644 --- a/tools/lammps-gui/codeeditor.h +++ b/tools/lammps-gui/codeeditor.h @@ -14,7 +14,10 @@ #ifndef CODEEDITOR_H #define CODEEDITOR_H +#include #include +#include +#include class CodeEditor : public QPlainTextEdit { Q_OBJECT @@ -30,14 +33,29 @@ protected: void dragEnterEvent(QDragEnterEvent *event) override; bool canInsertFromMimeData(const QMimeData *source) const override; void dropEvent(QDropEvent *event) override; + void contextMenuEvent(QContextMenuEvent *event) override; private slots: void updateLineNumberAreaWidth(int newBlockCount); void highlightCurrentLine(); void updateLineNumberArea(const QRect &rect, int dy); + void get_help(); + void find_help(QString &page, QString &help); + void open_help(); private: QWidget *lineNumberArea; + QShortcut *help_action; + + QMap cmd_map; + QMap fix_map; + QMap compute_map; + QMap pair_map; + QMap bond_map; + QMap angle_map; + QMap dihedral_map; + QMap improper_map; + QMap dump_map; }; #endif diff --git a/tools/lammps-gui/help_index.table b/tools/lammps-gui/help_index.table new file mode 100644 index 0000000000..d32483760a --- /dev/null +++ b/tools/lammps-gui/help_index.table @@ -0,0 +1,1443 @@ +angle_amoeba.html angle_style amoeba +angle_charmm.html angle_style charmm +angle_charmm.html angle_style charmm/intel +angle_charmm.html angle_style charmm/kk +angle_charmm.html angle_style charmm/omp +angle_class2.html angle_style class2 +angle_class2.html angle_style class2/kk +angle_class2.html angle_style class2/omp +angle_class2.html angle_style class2/p6 +angle_coeff.html angle_coeff +angle_cosine_buck6d.html angle_style cosine/buck6d +angle_cosine_delta.html angle_style cosine/delta +angle_cosine_delta.html angle_style cosine/delta/omp +angle_cosine_periodic.html angle_style cosine/periodic +angle_cosine_periodic.html angle_style cosine/periodic/omp +angle_cosine.html angle_style cosine +angle_cosine.html angle_style cosine/kk +angle_cosine.html angle_style cosine/omp +angle_cosine_shift_exp.html angle_style cosine/shift/exp +angle_cosine_shift_exp.html angle_style cosine/shift/exp/omp +angle_cosine_shift.html angle_style cosine/shift +angle_cosine_shift.html angle_style cosine/shift/omp +angle_cosine_squared.html angle_style cosine/squared +angle_cosine_squared.html angle_style cosine/squared/omp +angle_cross.html angle_style cross +angle_dipole.html angle_style dipole +angle_dipole.html angle_style dipole/omp +angle_fourier.html angle_style fourier +angle_fourier.html angle_style fourier/omp +angle_fourier_simple.html angle_style fourier/simple +angle_fourier_simple.html angle_style fourier/simple/omp +angle_gaussian.html angle_style gaussian +angle_harmonic.html angle_style harmonic +angle_harmonic.html angle_style harmonic/intel +angle_harmonic.html angle_style harmonic/kk +angle_harmonic.html angle_style harmonic/omp +angle_hybrid.html angle_style hybrid +angle_lepton.html angle_style lepton +angle_lepton.html angle_style lepton/omp +angle_mesocnt.html angle_style mesocnt +angle_mm3.html angle_style mm3 +angle_none.html angle_style none +angle_quartic.html angle_style quartic +angle_quartic.html angle_style quartic/omp +angle_spica.html angle_style spica +angle_spica.html angle_style spica/omp +angle_style.html angle_style +angle_table.html angle_style table +angle_table.html angle_style table/omp +angle_write.html angle_write +angle_zero.html angle_style zero +atc_add_molecule.html fix_modify AtC add_molecule +atc_add_species.html fix_modify AtC add_species +atc_atom_element_map.html fix_modify AtC atom_element_map +atc_atomic_charge.html fix_modify AtC atomic_charge +atc_atom_weight.html fix_modify AtC atom_weight +atc_boundary_dynamics.html fix_modify AtC boundary_dynamics +atc_boundary_faceset.html fix_modify AtC boundary_faceset +atc_boundary_type.html fix_modify AtC boundary type +atc_consistent_fe_initialization.html fix_modify AtC consistent_fe_initialization +atc_control_localized_lambda.html fix_modify AtC control localized_lambda +atc_control_momentum.html fix_modify AtC control momentum +atc_control_thermal.html fix_modify AtC control thermal +atc_decomposition.html fix_modify AtC decomposition +atc_electron_integration.html fix_modify AtC extrinsic electron_integration +atc_equilibrium_start.html fix_modify AtC equilibrium_start +atc_extrinsic_exchange.html fix_modify AtC extrinsic exchange +atc_fe_md_boundary.html fix_modify AtC fe_md_boundary +atc_filter_scale.html fix_modify AtC filter scale +atc_filter_type.html fix_modify AtC filter type +atc_fix_flux.html fix_modify AtC fix_flux +atc_fix.html fix_modify AtC fix +atc_hardy_computes.html fix_modify AtC computes +atc_hardy_fields.html fix_modify AtC fields +atc_hardy_gradients.html fix_modify AtC gradients +atc_hardy_kernel.html fix_modify AtC kernel +atc_hardy_on_the_fly.html fix_modify AtC on_the_fly +atc_hardy_rates.html fix_modify AtC rates +atc_initial.html fix_modify AtC initial +atc_internal_element_set.html fix_modify AtC internal_element_set +atc_internal_quadrature.html fix_modify AtC internal_quadrature +atc_kernel_bandwidth.html fix_modify AtC kernel_bandwidth +atc_lumped_lambda_solve.html fix_modify AtC control lumped_lambda_solve +atc_mask_direction.html fix_modify AtC control mask_direction +atc_mass_matrix.html fix_modify AtC mass_matrix +atc_material.html fix_modify AtC material +atc_mesh_add_to_nodeset.html fix_modify AtC mesh add_to_nodeset +atc_mesh_create_elementset.html fix_modify AtC mesh create_elementset +atc_mesh_create_faceset_box.html fix_modify AtC mesh create_faceset box +atc_mesh_create_faceset_plane.html fix_modify AtC mesh create_faceset plane +atc_mesh_create_nodeset.html fix_modify AtC mesh create_nodeset +atc_mesh_create.html fix_modify AtC mesh create +atc_mesh_delete_elements.html fix_modify AtC mesh delete_elements +atc_mesh_nodeset_to_elementset.html fix_modify AtC mesh nodeset_to_elementset +atc_mesh_output.html fix_modify AtC mesh output +atc_mesh_quadrature.html fix_modify AtC mesh quadrature +atc_mesh_read.html fix_modify AtC mesh read +atc_mesh_write.html fix_modify AtC mesh write +atc_output_boundary_integral.html fix_modify AtC output boundary_integral +atc_output_contour_integral.html fix_modify AtC output contour_integral +atc_output_nodeset.html fix_modify AtC output nodeset +atc_output.html fix_modify AtC output +atc_output_volume_integral.html fix_modify AtC output volume_integral +atc_pair_interactions.html fix_modify AtC pair_interactions +atc_poisson_solver.html fix_modify AtC poisson_solver +atc_read_restart.html fix_modify AtC read_restart +atc_remove_molecule.html fix_modify AtC remove_molecule +atc_remove_source.html fix_modify AtC remove_source +atc_remove_species.html fix_modify AtC remove_species +atc_reset_atomic_reference.html fix_modify AtC reset_atomic_reference_positions +atc_reset_time.html fix_modify AtC reset_time +atc_sample_frequency.html fix_modify AtC sample_frequency +atc_set_reference_pe.html fix_modify AtC set reference_potential_energy +atc_source_integration.html fix_modify AtC source_integration +atc_source.html fix_modify AtC source +atc_temperature_definition.html fix_modify AtC temperature_definition +atc_time_filter.html fix_modify AtC filter +atc_time_integration.html fix_modify AtC time_integration +atc_track_displacement.html fix_modify AtC track_displacement +atc_unfix_flux.html fix_modify AtC unfix_flux +atc_unfix.html fix_modify AtC unfix +atc_write_atom_weights.html fix_modify AtC write_atom_weights +atc_write_restart.html fix_modify AtC write_restart +atom_modify.html atom_modify +atom_style.html atom_style +balance.html balance +bond_bpm_rotational.html bond_style bpm/rotational +bond_bpm_spring.html bond_style bpm/spring +bond_class2.html bond_style class2 +bond_class2.html bond_style class2/kk +bond_class2.html bond_style class2/omp +bond_coeff.html bond_coeff +bond_fene_expand.html bond_style fene/expand +bond_fene_expand.html bond_style fene/expand/omp +bond_fene.html bond_style fene +bond_fene.html bond_style fene/intel +bond_fene.html bond_style fene/kk +bond_fene.html bond_style fene/nm +bond_fene.html bond_style fene/omp +bond_gaussian.html bond_style gaussian +bond_gromos.html bond_style gromos +bond_gromos.html bond_style gromos/omp +bond_harmonic_restrain.html bond_style harmonic/restrain +bond_harmonic.html bond_style harmonic +bond_harmonic.html bond_style harmonic/intel +bond_harmonic.html bond_style harmonic/kk +bond_harmonic.html bond_style harmonic/omp +bond_harmonic_shift_cut.html bond_style harmonic/shift/cut +bond_harmonic_shift_cut.html bond_style harmonic/shift/cut/omp +bond_harmonic_shift.html bond_style harmonic/shift +bond_harmonic_shift.html bond_style harmonic/shift/omp +bond_hybrid.html bond_style hybrid +bond_lepton.html bond_style lepton +bond_lepton.html bond_style lepton/omp +bond_mesocnt.html bond_style mesocnt +bond_mm3.html bond_style mm3 +bond_morse.html bond_style morse +bond_morse.html bond_style morse/omp +bond_none.html bond_style none +bond_nonlinear.html bond_style nonlinear +bond_nonlinear.html bond_style nonlinear/omp +bond_oxdna.html bond_style oxdna2/fene +bond_oxdna.html bond_style oxdna/fene +bond_oxdna.html bond_style oxrna2/fene +bond_quartic.html bond_style quartic +bond_quartic.html bond_style quartic/omp +bond_special.html bond_style special +bond_style.html bond_style +bond_table.html bond_style table +bond_table.html bond_style table/omp +bond_write.html bond_write +bond_zero.html bond_style zero +boundary.html boundary +change_box.html change_box +clear.html clear +comm_modify.html comm_modify +comm_style.html comm_style +compute_ackland_atom.html compute ackland/atom +compute_adf.html compute adf +compute_angle_local.html compute angle/local +compute_angle.html compute angle +compute_angmom_chunk.html compute angmom/chunk +compute_ave_sphere_atom.html compute ave/sphere/atom +compute_ave_sphere_atom.html compute ave/sphere/atom/kk +compute_basal_atom.html compute basal/atom +compute_body_local.html compute body/local +compute_bond_local.html compute bond/local +compute_bond.html compute bond +compute_born_matrix.html compute born/matrix +compute_centro_atom.html compute centro/atom +compute_chunk_atom.html compute chunk/atom +compute_chunk_spread_atom.html compute chunk/spread/atom +compute_cluster_atom.html compute aggregate/atom +compute_cluster_atom.html compute cluster/atom +compute_cluster_atom.html compute fragment/atom +compute_cna_atom.html compute cna/atom +compute_cnp_atom.html compute cnp/atom +compute_com_chunk.html compute com/chunk +compute_com.html compute com +compute_contact_atom.html compute contact/atom +compute_coord_atom.html compute coord/atom +compute_coord_atom.html compute coord/atom/kk +compute_count_type.html compute count/type +compute_damage_atom.html compute damage/atom +compute_dihedral_local.html compute dihedral/local +compute_dihedral.html compute dihedral +compute_dilatation_atom.html compute dilatation/atom +compute_dipole_chunk.html compute dipole/chunk +compute_dipole_chunk.html compute dipole/tip4p/chunk +compute_dipole.html compute dipole +compute_dipole.html compute dipole/tip4p +compute_displace_atom.html compute displace/atom +compute_dpd_atom.html compute dpd/atom +compute_dpd.html compute dpd +compute_edpd_temp_atom.html compute edpd/temp/atom +compute_efield_atom.html compute efield/atom +compute_efield_wolf_atom.html compute efield/wolf/atom +compute_entropy_atom.html compute entropy/atom +compute_erotate_asphere.html compute erotate/asphere +compute_erotate_rigid.html compute erotate/rigid +compute_erotate_sphere_atom.html compute erotate/sphere/atom +compute_erotate_sphere.html compute erotate/sphere +compute_erotate_sphere.html compute erotate/sphere/kk +compute_event_displace.html compute event/displace +compute_fabric.html compute fabric +compute_fep.html compute fep +compute_fep_ta.html compute fep/ta +compute_global_atom.html compute global/atom +compute_group_group.html compute group/group +compute_gyration_chunk.html compute gyration/chunk +compute_gyration.html compute gyration +compute_gyration_shape_chunk.html compute gyration/shape/chunk +compute_gyration_shape.html compute gyration/shape +compute_heat_flux.html compute heat/flux +compute_hexorder_atom.html compute hexorder/atom +compute_hma.html compute hma +compute_improper_local.html compute improper/local +compute_improper.html compute improper +compute_inertia_chunk.html compute inertia/chunk +compute_ke_atom_eff.html compute ke/atom/eff +compute_ke_atom.html compute ke/atom +compute_ke_eff.html compute ke/eff +compute_ke_rigid.html compute ke/rigid +compute_ke.html compute ke +compute_local_comp_atom.html compute local/comp/atom +compute_local_comp_atom.html compute local/comp/atom/kk +compute_mliap.html compute mliap +compute_modify.html compute_modify +compute_momentum.html compute momentum +compute_msd_chunk.html compute msd/chunk +compute_msd_nongauss.html compute msd/nongauss +compute_msd.html compute msd +compute_nbond_atom.html compute nbond/atom +compute_omega_chunk.html compute omega/chunk +compute_orientorder_atom.html compute orientorder/atom +compute_orientorder_atom.html compute orientorder/atom/kk +compute_pair_local.html compute pair/local +compute_pair.html compute pair +compute_pe_atom.html compute pe/atom +compute_pe.html compute pe +compute_plasticity_atom.html compute plasticity/atom +compute_pressure_alchemy.html compute pressure/alchemy +compute_pressure.html compute pressure +compute_pressure_uef.html compute pressure/uef +compute_property_atom.html compute property/atom +compute_property_chunk.html compute property/chunk +compute_property_grid.html compute property/grid +compute_property_local.html compute property/local +compute_ptm_atom.html compute ptm/atom +compute_rdf.html compute rdf +compute_reduce_chunk.html compute reduce/chunk +compute_reduce.html compute reduce +compute_reduce.html compute reduce/region +compute_rigid_local.html compute rigid/local +compute.html compute +compute_saed.html compute saed +compute_slice.html compute slice +compute_smd_contact_radius.html compute smd/contact/radius +compute_smd_damage.html compute smd/damage +compute_smd_hourglass_error.html compute smd/hourglass/error +compute_smd_internal_energy.html compute smd/internal/energy +compute_smd_plastic_strain_rate.html compute smd/plastic/strain/rate +compute_smd_plastic_strain.html compute smd/plastic/strain +compute_smd_rho.html compute smd/rho +compute_smd_tlsph_defgrad.html compute smd/tlsph/defgrad +compute_smd_tlsph_dt.html compute smd/tlsph/dt +compute_smd_tlsph_num_neighs.html compute smd/tlsph/num/neighs +compute_smd_tlsph_shape.html compute smd/tlsph/shape +compute_smd_tlsph_strain_rate.html compute smd/tlsph/strain/rate +compute_smd_tlsph_strain.html compute smd/tlsph/strain +compute_smd_tlsph_stress.html compute smd/tlsph/stress +compute_smd_triangle_vertices.html compute smd/triangle/vertices +compute_smd_ulsph_effm.html compute smd/ulsph/effm +compute_smd_ulsph_num_neighs.html compute smd/ulsph/num/neighs +compute_smd_ulsph_strain_rate.html compute smd/ulsph/strain/rate +compute_smd_ulsph_strain.html compute smd/ulsph/strain +compute_smd_ulsph_stress.html compute smd/ulsph/stress +compute_smd_vol.html compute smd/vol +compute_sna_atom.html compute sna/atom +compute_sna_atom.html compute snad/atom +compute_sna_atom.html compute sna/grid +compute_sna_atom.html compute sna/grid/local +compute_sna_atom.html compute snap +compute_sna_atom.html compute snav/atom +compute_sph_e_atom.html compute sph/e/atom +compute_sph_rho_atom.html compute sph/rho/atom +compute_sph_t_atom.html compute sph/t/atom +compute_spin.html compute spin +compute_stress_atom.html compute centroid/stress/atom +compute_stress_atom.html compute stress/atom +compute_stress_cartesian.html compute stress/cartesian +compute_stress_curvilinear.html compute stress/cylinder +compute_stress_curvilinear.html compute stress/spherical +compute_stress_mop.html compute stress/mop +compute_stress_mop.html compute stress/mop/profile +compute_tally.html compute force/tally +compute_tally.html compute heat/flux/tally +compute_tally.html compute heat/flux/virial/tally +compute_tally.html compute pe/mol/tally +compute_tally.html compute pe/tally +compute_tally.html compute stress/tally +compute_tdpd_cc_atom.html compute tdpd/cc/atom +compute_temp_asphere.html compute temp/asphere +compute_temp_body.html compute temp/body +compute_temp_chunk.html compute temp/chunk +compute_temp_com.html compute temp/com +compute_temp_cs.html compute temp/cs +compute_temp_deform_eff.html compute temp/deform/eff +compute_temp_deform.html compute temp/deform +compute_temp_deform.html compute temp/deform/kk +compute_temp_drude.html compute temp/drude +compute_temp_eff.html compute temp/eff +compute_temp_partial.html compute temp/partial +compute_temp_profile.html compute temp/profile +compute_temp_ramp.html compute temp/ramp +compute_temp_region_eff.html compute temp/region/eff +compute_temp_region.html compute temp/region +compute_temp_rotate.html compute temp/rotate +compute_temp.html compute temp +compute_temp.html compute temp/kk +compute_temp_sphere.html compute temp/sphere +compute_temp_uef.html compute temp/uef +compute_ti.html compute ti +compute_torque_chunk.html compute torque/chunk +compute_vacf.html compute vacf +compute_vcm_chunk.html compute vcm/chunk +compute_viscosity_cos.html compute viscosity/cos +compute_voronoi_atom.html compute voronoi/atom +compute_xrd.html compute xrd +create_atoms.html create_atoms +create_bonds.html create_bonds +create_box.html create_box +delete_atoms.html delete_atoms +delete_bonds.html delete_bonds +dielectric.html dielectric +dihedral_charmm.html dihedral_style charmm +dihedral_charmm.html dihedral_style charmmfsw +dihedral_charmm.html dihedral_style charmm/intel +dihedral_charmm.html dihedral_style charmm/kk +dihedral_charmm.html dihedral_style charmm/omp +dihedral_class2.html dihedral_style class2 +dihedral_class2.html dihedral_style class2/kk +dihedral_class2.html dihedral_style class2/omp +dihedral_coeff.html dihedral_coeff +dihedral_cosine_shift_exp.html dihedral_style cosine/shift/exp +dihedral_cosine_shift_exp.html dihedral_style cosine/shift/exp/omp +dihedral_fourier.html dihedral_style fourier +dihedral_fourier.html dihedral_style fourier/intel +dihedral_fourier.html dihedral_style fourier/omp +dihedral_harmonic.html dihedral_style harmonic +dihedral_harmonic.html dihedral_style harmonic/intel +dihedral_harmonic.html dihedral_style harmonic/kk +dihedral_harmonic.html dihedral_style harmonic/omp +dihedral_helix.html dihedral_style helix +dihedral_helix.html dihedral_style helix/omp +dihedral_hybrid.html dihedral_style hybrid +dihedral_lepton.html dihedral_style lepton +dihedral_lepton.html dihedral_style lepton/omp +dihedral_multi_harmonic.html dihedral_style multi/harmonic +dihedral_multi_harmonic.html dihedral_style multi/harmonic/omp +dihedral_nharmonic.html dihedral_style nharmonic +dihedral_nharmonic.html dihedral_style nharmonic/omp +dihedral_none.html dihedral_style none +dihedral_opls.html dihedral_style opls +dihedral_opls.html dihedral_style opls/intel +dihedral_opls.html dihedral_style opls/kk +dihedral_opls.html dihedral_style opls/omp +dihedral_quadratic.html dihedral_style quadratic +dihedral_quadratic.html dihedral_style quadratic/omp +dihedral_spherical.html dihedral_style spherical +dihedral_style.html dihedral_style +dihedral_table.html dihedral_style table +dihedral_table.html dihedral_style table/cut +dihedral_table.html dihedral_style table/omp +dihedral_write.html dihedral_write +dihedral_zero.html dihedral_style zero +dimension.html dimension +displace_atoms.html displace_atoms +dump_adios.html dump atom/adios +dump_adios.html dump custom/adios +dump_cfg_uef.html dump cfg/uef +dump_h5md.html dump h5md +dump_image.html dump image +dump_image.html dump movie +dump_modify.html dump_modify +dump_molfile.html dump molfile +dump_netcdf.html dump netcdf +dump_netcdf.html dump netcdf/mpiio +dump.html dump +dump.html dump atom +dump.html dump atom/gz +dump.html dump atom/mpiio +dump.html dump atom/zstd +dump.html dump cfg +dump.html dump cfg/gz +dump.html dump cfg/mpiio +dump.html dump cfg/zstd +dump.html dump custom +dump.html dump custom/gz +dump.html dump custom/mpiio +dump.html dump custom/zstd +dump.html dump dcd +dump.html dump grid +dump.html dump grid/vtk +dump.html dump local +dump.html dump local/gz +dump.html dump local/zstd +dump.html dump xtc +dump.html dump xyz +dump.html dump xyz/gz +dump.html dump xyz/mpiio +dump.html dump xyz/zstd +dump.html dump yaml +dump_vtk.html dump vtk +dynamical_matrix.html dynamical_matrix +dynamical_matrix.html dynamical_matrix/kk +echo.html echo +fitpod_command.html fitpod +fix_accelerate_cos.html fix accelerate/cos +fix_acks2_reaxff.html fix acks2/reaxff +fix_acks2_reaxff.html fix acks2/reaxff/kk +fix_adapt_fep.html fix adapt/fep +fix_adapt.html fix adapt +fix_addforce.html fix addforce +fix_addtorque.html fix addtorque +fix_alchemy.html fix alchemy +fix_amoeba_bitorsion.html fix amoeba/bitorsion +fix_amoeba_pitorsion.html fix amoeba/pitorsion +fix_append_atoms.html fix append/atoms +fix_atc.html fix atc +fix_atom_swap.html fix atom/swap +fix_ave_atom.html fix ave/atom +fix_ave_chunk.html fix ave/chunk +fix_ave_correlate_long.html fix ave/correlate/long +fix_ave_correlate.html fix ave/correlate +fix_aveforce.html fix aveforce +fix_ave_grid.html fix ave/grid +fix_ave_histo.html fix ave/histo +fix_ave_histo.html fix ave/histo/weight +fix_ave_time.html fix ave/time +fix_balance.html fix balance +fix_bocs.html fix bocs +fix_bond_break.html fix bond/break +fix_bond_create.html fix bond/create +fix_bond_create.html fix bond/create/angle +fix_bond_react.html fix bond/react +fix_bond_swap.html fix bond/swap +fix_box_relax.html fix box/relax +fix_brownian.html fix brownian +fix_brownian.html fix brownian/asphere +fix_brownian.html fix brownian/sphere +fix_charge_regulation.html fix charge/regulation +fix_cmap.html fix cmap +fix_colvars.html fix colvars +fix_controller.html fix controller +fix_damping_cundall.html fix damping/cundall +fix_deform.html fix deform +fix_deform.html fix deform/kk +fix_deposit.html fix deposit +fix_dpd_energy.html fix dpd/energy +fix_dpd_energy.html fix dpd/energy/kk +fix_dpd_source.html fix edpd/source +fix_dpd_source.html fix tdpd/source +fix_drag.html fix drag +fix_drude.html fix drude +fix_drude_transform.html fix drude/transform/direct +fix_drude_transform.html fix drude/transform/inverse +fix_dt_reset.html fix dt/reset +fix_dt_reset.html fix dt/reset/kk +fix_efield.html fix efield +fix_efield.html fix efield/tip4p +fix_ehex.html fix ehex +fix_electrode.html fix electrode/conp +fix_electrode.html fix electrode/conp/intel +fix_electrode.html fix electrode/conq +fix_electrode.html fix electrode/conq/intel +fix_electrode.html fix electrode/thermo +fix_electrode.html fix electrode/thermo/intel +fix_electron_stopping.html fix electron/stopping +fix_electron_stopping.html fix electron/stopping/fit +fix_enforce2d.html fix enforce2d +fix_enforce2d.html fix enforce2d/kk +fix_eos_cv.html fix eos/cv +fix_eos_table.html fix eos/table +fix_eos_table_rx.html fix eos/table/rx +fix_eos_table_rx.html fix eos/table/rx/kk +fix_evaporate.html fix evaporate +fix_external.html fix external +fix_ffl.html fix ffl +fix_filter_corotate.html fix filter/corotate +fix_flow_gauss.html fix flow/gauss +fix_freeze.html fix freeze +fix_freeze.html fix freeze/kk +fix_gcmc.html fix gcmc +fix_gld.html fix gld +fix_gle.html fix gle +fix_gravity.html fix gravity +fix_gravity.html fix gravity/kk +fix_gravity.html fix gravity/omp +fix_grem.html fix grem +fix_halt.html fix halt +fix_heat_flow.html fix heat/flow +fix_heat.html fix heat +fix_hyper_global.html fix hyper/global +fix_hyper_local.html fix hyper/local +fix_imd.html fix imd +fix_indent.html fix indent +fix_ipi.html fix ipi +fix_langevin_drude.html fix langevin/drude +fix_langevin_eff.html fix langevin/eff +fix_langevin.html fix langevin +fix_langevin.html fix langevin/kk +fix_langevin_spin.html fix langevin/spin +fix_lb_fluid.html fix lb/fluid +fix_lb_momentum.html fix lb/momentum +fix_lb_viscous.html fix lb/viscous +fix_lineforce.html fix lineforce +fix_manifoldforce.html fix manifoldforce +fix_mdi_qmmm.html fix mdi/qmmm +fix_mdi_qm.html fix mdi/qm +fix_meso_move.html fix meso/move +fix_modify.html fix_modify +fix_mol_swap.html fix mol/swap +fix_momentum.html fix momentum +fix_momentum.html fix momentum/chunk +fix_momentum.html fix momentum/kk +fix_move.html fix move +fix_msst.html fix msst +fix_mvv_dpd.html fix mvv/dpd +fix_mvv_dpd.html fix mvv/edpd +fix_mvv_dpd.html fix mvv/tdpd +fix_neb.html fix neb +fix_neb_spin.html fix neb/spin +fix_nh_eff.html fix nph/eff +fix_nh_eff.html fix npt/eff +fix_nh_eff.html fix nvt/eff +fix_nh.html fix nph +fix_nh.html fix nph/kk +fix_nh.html fix nph/omp +fix_nh.html fix npt +fix_nh.html fix npt/gpu +fix_nh.html fix npt/intel +fix_nh.html fix npt/kk +fix_nh.html fix npt/omp +fix_nh.html fix nvt +fix_nh.html fix nvt/gpu +fix_nh.html fix nvt/intel +fix_nh.html fix nvt/kk +fix_nh.html fix nvt/omp +fix_nh_uef.html fix npt/uef +fix_nh_uef.html fix nvt/uef +fix_nph_asphere.html fix nph/asphere +fix_nph_asphere.html fix nph/asphere/omp +fix_nph_body.html fix nph/body +fix_nph_sphere.html fix nph/sphere +fix_nph_sphere.html fix nph/sphere/omp +fix_nphug.html fix nphug +fix_nphug.html fix nphug/omp +fix_npt_asphere.html fix npt/asphere +fix_npt_asphere.html fix npt/asphere/omp +fix_npt_body.html fix npt/body +fix_npt_cauchy.html fix npt/cauchy +fix_npt_sphere.html fix npt/sphere +fix_npt_sphere.html fix npt/sphere/omp +fix_numdiff.html fix numdiff +fix_numdiff_virial.html fix numdiff/virial +fix_nve_asphere_noforce.html fix nve/asphere/noforce +fix_nve_asphere.html fix nve/asphere +fix_nve_asphere.html fix nve/asphere/gpu +fix_nve_asphere.html fix nve/asphere/intel +fix_nve_awpmd.html fix nve/awpmd +fix_nve_body.html fix nve/body +fix_nve_bpm_sphere.html fix nve/bpm/sphere +fix_nve_dotc_langevin.html fix nve/dotc/langevin +fix_nve_dot.html fix nve/dot +fix_nve_eff.html fix nve/eff +fix_nve_limit.html fix nve/limit +fix_nve_line.html fix nve/line +fix_nve_manifold_rattle.html fix nve/manifold/rattle +fix_nve_noforce.html fix nve/noforce +fix_nve.html fix nve +fix_nve.html fix nve/gpu +fix_nve.html fix nve/intel +fix_nve.html fix nve/kk +fix_nve.html fix nve/omp +fix_nve_sphere.html fix nve/sphere +fix_nve_sphere.html fix nve/sphere/kk +fix_nve_sphere.html fix nve/sphere/omp +fix_nve_spin.html fix nve/spin +fix_nve_tri.html fix nve/tri +fix_nvk.html fix nvk +fix_nvt_asphere.html fix nvt/asphere +fix_nvt_asphere.html fix nvt/asphere/omp +fix_nvt_body.html fix nvt/body +fix_nvt_manifold_rattle.html fix nvt/manifold/rattle +fix_nvt_sllod_eff.html fix nvt/sllod/eff +fix_nvt_sllod.html fix nvt/sllod +fix_nvt_sllod.html fix nvt/sllod/intel +fix_nvt_sllod.html fix nvt/sllod/kk +fix_nvt_sllod.html fix nvt/sllod/omp +fix_nvt_sphere.html fix nvt/sphere +fix_nvt_sphere.html fix nvt/sphere/omp +fix_oneway.html fix oneway +fix_orient_eco.html fix orient/eco +fix_orient.html fix orient/bcc +fix_orient.html fix orient/fcc +fix_pafi.html fix pafi +fix_pair.html fix pair +fix_phonon.html fix phonon +fix_pimd.html fix pimd/langevin +fix_pimd.html fix pimd/nvt +fix_planeforce.html fix planeforce +fix_plumed.html fix plumed +fix_poems.html fix poems +fix_polarize.html fix polarize/bem/gmres +fix_polarize.html fix polarize/bem/icc +fix_polarize.html fix polarize/functional +fix_pour.html fix pour +fix_precession_spin.html fix precession/spin +fix_press_berendsen.html fix press/berendsen +fix_print.html fix print +fix_propel_self.html fix propel/self +fix_property_atom.html fix property/atom +fix_property_atom.html fix property/atom/kk +fix_python_invoke.html fix python/invoke +fix_python_move.html fix python/move +fix_qbmsst.html fix qbmsst +fix_qeq_comb.html fix qeq/comb +fix_qeq_comb.html fix qeq/comb/omp +fix_qeq_reaxff.html fix qeq/reaxff +fix_qeq_reaxff.html fix qeq/reaxff/kk +fix_qeq_reaxff.html fix qeq/reaxff/omp +fix_qeq.html fix qeq/dynamic +fix_qeq.html fix qeq/fire +fix_qeq.html fix qeq/point +fix_qeq.html fix qeq/shielded +fix_qeq.html fix qeq/slater +fix_qmmm.html fix qmmm +fix_qtb.html fix qtb +fix_reaxff_bonds.html fix reaxff/bonds +fix_reaxff_bonds.html fix reaxff/bonds/kk +fix_reaxff_species.html fix reaxff/species +fix_reaxff_species.html fix reaxff/species/kk +fix_recenter.html fix recenter +fix_restrain.html fix restrain +fix_rhok.html fix rhok +fix_rigid_meso.html fix rigid/meso +fix_rigid.html fix rigid +fix_rigid.html fix rigid/nph +fix_rigid.html fix rigid/nph/omp +fix_rigid.html fix rigid/nph/small +fix_rigid.html fix rigid/npt +fix_rigid.html fix rigid/npt/omp +fix_rigid.html fix rigid/npt/small +fix_rigid.html fix rigid/nve +fix_rigid.html fix rigid/nve/omp +fix_rigid.html fix rigid/nve/small +fix_rigid.html fix rigid/nvt +fix_rigid.html fix rigid/nvt/omp +fix_rigid.html fix rigid/nvt/small +fix_rigid.html fix rigid/omp +fix_rigid.html fix rigid/small +fix_rigid.html fix rigid/small/omp +fix.html fix +fix_rx.html fix rx +fix_rx.html fix rx/kk +fix_saed_vtk.html fix saed/vtk +fix_setforce.html fix setforce +fix_setforce.html fix setforce/kk +fix_setforce.html fix setforce/spin +fix_sgcmc.html fix sgcmc +fix_shake.html fix rattle +fix_shake.html fix shake +fix_shake.html fix shake/kk +fix_shardlow.html fix shardlow +fix_shardlow.html fix shardlow/kk +fix_smd_adjust_dt.html fix smd/adjust_dt +fix_smd_integrate_tlsph.html fix smd/integrate_tlsph +fix_smd_integrate_ulsph.html fix smd/integrate_ulsph +fix_smd_move_triangulated_surface.html fix smd/move_tri_surf +fix_smd.html fix smd +fix_smd_setvel.html fix smd/setvel +fix_smd_wall_surface.html fix smd/wall_surface +fix_sph.html fix sph +fix_sph_stationary.html fix sph/stationary +fix_spring_chunk.html fix spring/chunk +fix_spring_rg.html fix spring/rg +fix_spring.html fix spring +fix_spring_self.html fix spring/self +fix_srd.html fix srd +fix_store_force.html fix store/force +fix_store_state.html fix store/state +fix_temp_berendsen.html fix temp/berendsen +fix_temp_csvr.html fix temp/csld +fix_temp_csvr.html fix temp/csvr +fix_temp_rescale_eff.html fix temp/rescale/eff +fix_temp_rescale.html fix temp/rescale +fix_tfmc.html fix tfmc +fix_tgnh_drude.html fix tgnpt/drude +fix_tgnh_drude.html fix tgnvt/drude +fix_thermal_conductivity.html fix thermal/conductivity +fix_ti_spring.html fix ti/spring +fix_tmd.html fix tmd +fix_ttm.html fix ttm +fix_ttm.html fix ttm/grid +fix_ttm.html fix ttm/mod +fix_tune_kspace.html fix tune/kspace +fix_vector.html fix vector +fix_viscosity.html fix viscosity +fix_viscous.html fix viscous +fix_viscous.html fix viscous/kk +fix_viscous_sphere.html fix viscous/sphere +fix_wall_body_polygon.html fix wall/body/polygon +fix_wall_body_polyhedron.html fix wall/body/polyhedron +fix_wall_ees.html fix wall/ees +fix_wall_ees.html fix wall/region/ees +fix_wall_gran_region.html fix wall/gran/region +fix_wall_gran.html fix wall/gran +fix_wall_gran.html fix wall/gran/kk +fix_wall_piston.html fix wall/piston +fix_wall_reflect.html fix wall/reflect +fix_wall_reflect.html fix wall/reflect/kk +fix_wall_reflect_stochastic.html fix wall/reflect/stochastic +fix_wall_region.html fix wall/region +fix_wall.html fix wall/colloid +fix_wall.html fix wall/harmonic +fix_wall.html fix wall/lepton +fix_wall.html fix wall/lj1043 +fix_wall.html fix wall/lj126 +fix_wall.html fix wall/lj93 +fix_wall.html fix wall/lj93/kk +fix_wall.html fix wall/morse +fix_wall.html fix wall/table +fix_wall_srd.html fix wall/srd +fix_widom.html fix widom +group2ndx.html group2ndx +group2ndx.html ndx2group +group.html group +hyper.html hyper +if.html if +improper_amoeba.html improper_style amoeba +improper_class2.html improper_style class2 +improper_class2.html improper_style class2/kk +improper_class2.html improper_style class2/omp +improper_coeff.html improper_coeff +improper_cossq.html improper_style cossq +improper_cossq.html improper_style cossq/omp +improper_cvff.html improper_style cvff +improper_cvff.html improper_style cvff/intel +improper_cvff.html improper_style cvff/omp +improper_distance.html improper_style distance +improper_distharm.html improper_style distharm +improper_fourier.html improper_style fourier +improper_fourier.html improper_style fourier/omp +improper_harmonic.html improper_style harmonic +improper_harmonic.html improper_style harmonic/intel +improper_harmonic.html improper_style harmonic/kk +improper_harmonic.html improper_style harmonic/omp +improper_hybrid.html improper_style hybrid +improper_inversion_harmonic.html improper_style inversion/harmonic +improper_none.html improper_style none +improper_ring.html improper_style ring +improper_ring.html improper_style ring/omp +improper_sqdistharm.html improper_style sqdistharm +improper_style.html improper_style +improper_umbrella.html improper_style umbrella +improper_umbrella.html improper_style umbrella/omp +improper_zero.html improper_style zero +include.html include +info.html info +jump.html jump +kim_commands.html kim_commands +kspace_modify.html kspace_modify +kspace_style.html kspace_style ewald +kspace_style.html kspace_style ewald/dipole +kspace_style.html kspace_style ewald/dipole/spin +kspace_style.html kspace_style ewald/disp +kspace_style.html kspace_style ewald/disp/dipole +kspace_style.html kspace_style ewald/electrode +kspace_style.html kspace_style ewald/omp +kspace_style.html kspace_style msm +kspace_style.html kspace_style msm/cg +kspace_style.html kspace_style msm/cg/omp +kspace_style.html kspace_style msm/dielectric +kspace_style.html kspace_style msm/omp +kspace_style.html kspace_style pppm +kspace_style.html kspace_style pppm/cg +kspace_style.html kspace_style pppm/cg/omp +kspace_style.html kspace_style pppm/dielectric +kspace_style.html kspace_style pppm/dipole +kspace_style.html kspace_style pppm/dipole/spin +kspace_style.html kspace_style pppm/disp +kspace_style.html kspace_style pppm/disp/dielectric +kspace_style.html kspace_style pppm/disp/intel +kspace_style.html kspace_style pppm/disp/omp +kspace_style.html kspace_style pppm/disp/tip4p +kspace_style.html kspace_style pppm/disp/tip4p/omp +kspace_style.html kspace_style pppm/electrode +kspace_style.html kspace_style pppm/electrode/intel +kspace_style.html kspace_style pppm/gpu +kspace_style.html kspace_style pppm/intel +kspace_style.html kspace_style pppm/kk +kspace_style.html kspace_style pppm/omp +kspace_style.html kspace_style pppm/stagger +kspace_style.html kspace_style pppm/tip4p +kspace_style.html kspace_style pppm/tip4p/omp +kspace_style.html kspace_style scafacos +labelmap.html labelmap +label.html label +lattice.html lattice +log.html log +mass.html mass +mdi.html mdi +minimize.html minimize +minimize.html minimize/kk +min_modify.html min_modify +min_spin.html min_style spin +min_style.html min_style +molecule.html molecule +neb.html neb +neb_spin.html neb/spin +neighbor.html neighbor +neigh_modify.html neigh_modify +newton.html newton +next.html next +package.html package +pair_adp.html pair_style adp +pair_adp.html pair_style adp/kk +pair_adp.html pair_style adp/omp +pair_agni.html pair_style agni +pair_agni.html pair_style agni/omp +pair_aip_water_2dm.html pair_style aip/water/2dm +pair_aip_water_2dm.html pair_style aip/water/2dm/opt +pair_airebo.html pair_style airebo +pair_airebo.html pair_style airebo/intel +pair_airebo.html pair_style airebo/morse +pair_airebo.html pair_style airebo/morse/intel +pair_airebo.html pair_style airebo/morse/omp +pair_airebo.html pair_style airebo/omp +pair_airebo.html pair_style rebo +pair_airebo.html pair_style rebo/intel +pair_airebo.html pair_style rebo/omp +pair_amoeba.html pair_style amoeba +pair_amoeba.html pair_style amoeba/gpu +pair_amoeba.html pair_style hippo +pair_amoeba.html pair_style hippo/gpu +pair_atm.html pair_style atm +pair_awpmd.html pair_style awpmd/cut +pair_beck.html pair_style beck +pair_beck.html pair_style beck/gpu +pair_beck.html pair_style beck/omp +pair_body_nparticle.html pair_style body/nparticle +pair_body_rounded_polygon.html pair_style body/rounded/polygon +pair_body_rounded_polyhedron.html pair_style body/rounded/polyhedron +pair_bop.html pair_style bop +pair_born_gauss.html pair_style born/gauss +pair_born.html pair_style born +pair_born.html pair_style born/coul/dsf +pair_born.html pair_style born/coul/long +pair_born.html pair_style born/coul/long/gpu +pair_born.html pair_style born/coul/long/omp +pair_born.html pair_style born/coul/msm +pair_born.html pair_style born/coul/msm/omp +pair_born.html pair_style born/coul/wolf +pair_born.html pair_style born/coul/wolf/gpu +pair_born.html pair_style born/coul/wolf/omp +pair_born.html pair_style born/gpu +pair_born.html pair_style born/omp +pair_bpm_spring.html pair_style bpm/spring +pair_brownian.html pair_style brownian +pair_brownian.html pair_style brownian/omp +pair_brownian.html pair_style brownian/poly +pair_brownian.html pair_style brownian/poly/omp +pair_buck6d_coul_gauss.html pair_style buck6d/coul/gauss/dsf +pair_buck6d_coul_gauss.html pair_style buck6d/coul/gauss/long +pair_buck_long.html pair_style buck/long/coul/long +pair_buck_long.html pair_style buck/long/coul/long/omp +pair_buck.html pair_style buck +pair_buck.html pair_style buck/coul/cut +pair_buck.html pair_style buck/coul/cut/gpu +pair_buck.html pair_style buck/coul/cut/intel +pair_buck.html pair_style buck/coul/cut/kk +pair_buck.html pair_style buck/coul/cut/omp +pair_buck.html pair_style buck/coul/long +pair_buck.html pair_style buck/coul/long/gpu +pair_buck.html pair_style buck/coul/long/intel +pair_buck.html pair_style buck/coul/long/kk +pair_buck.html pair_style buck/coul/long/omp +pair_buck.html pair_style buck/coul/msm +pair_buck.html pair_style buck/coul/msm/omp +pair_buck.html pair_style buck/gpu +pair_buck.html pair_style buck/intel +pair_buck.html pair_style buck/kk +pair_buck.html pair_style buck/omp +pair_charmm.html pair_style lj/charmm/coul/charmm +pair_charmm.html pair_style lj/charmm/coul/charmm/gpu +pair_charmm.html pair_style lj/charmm/coul/charmm/implicit +pair_charmm.html pair_style lj/charmm/coul/charmm/implicit/kk +pair_charmm.html pair_style lj/charmm/coul/charmm/implicit/omp +pair_charmm.html pair_style lj/charmm/coul/charmm/intel +pair_charmm.html pair_style lj/charmm/coul/charmm/kk +pair_charmm.html pair_style lj/charmm/coul/charmm/omp +pair_charmm.html pair_style lj/charmm/coul/long +pair_charmm.html pair_style lj/charmm/coul/long/gpu +pair_charmm.html pair_style lj/charmm/coul/long/intel +pair_charmm.html pair_style lj/charmm/coul/long/kk +pair_charmm.html pair_style lj/charmm/coul/long/omp +pair_charmm.html pair_style lj/charmm/coul/long/opt +pair_charmm.html pair_style lj/charmm/coul/msm +pair_charmm.html pair_style lj/charmm/coul/msm/omp +pair_charmm.html pair_style lj/charmmfsw/coul/charmmfsh +pair_charmm.html pair_style lj/charmmfsw/coul/long +pair_class2.html pair_style lj/class2 +pair_class2.html pair_style lj/class2/coul/cut +pair_class2.html pair_style lj/class2/coul/cut/kk +pair_class2.html pair_style lj/class2/coul/cut/omp +pair_class2.html pair_style lj/class2/coul/long +pair_class2.html pair_style lj/class2/coul/long/gpu +pair_class2.html pair_style lj/class2/coul/long/kk +pair_class2.html pair_style lj/class2/coul/long/omp +pair_class2.html pair_style lj/class2/gpu +pair_class2.html pair_style lj/class2/kk +pair_class2.html pair_style lj/class2/omp +pair_coeff.html pair_coeff +pair_colloid.html pair_style colloid +pair_colloid.html pair_style colloid/gpu +pair_colloid.html pair_style colloid/omp +pair_comb.html pair_style comb +pair_comb.html pair_style comb3 +pair_comb.html pair_style comb/omp +pair_cosine_squared.html pair_style cosine/squared +pair_coul_diel.html pair_style coul/diel +pair_coul_diel.html pair_style coul/diel/omp +pair_coul.html pair_style coul/cut +pair_coul.html pair_style coul/cut/global +pair_coul.html pair_style coul/cut/global/omp +pair_coul.html pair_style coul/cut/gpu +pair_coul.html pair_style coul/cut/kk +pair_coul.html pair_style coul/cut/omp +pair_coul.html pair_style coul/debye +pair_coul.html pair_style coul/debye/gpu +pair_coul.html pair_style coul/debye/kk +pair_coul.html pair_style coul/debye/omp +pair_coul.html pair_style coul/dsf +pair_coul.html pair_style coul/dsf/gpu +pair_coul.html pair_style coul/dsf/kk +pair_coul.html pair_style coul/dsf/omp +pair_coul.html pair_style coul/exclude +pair_coul.html pair_style coul/long +pair_coul.html pair_style coul/long/gpu +pair_coul.html pair_style coul/long/kk +pair_coul.html pair_style coul/long/omp +pair_coul.html pair_style coul/msm +pair_coul.html pair_style coul/msm/omp +pair_coul.html pair_style coul/streitz +pair_coul.html pair_style coul/wolf +pair_coul.html pair_style coul/wolf/kk +pair_coul.html pair_style coul/wolf/omp +pair_coul.html pair_style tip4p/cut +pair_coul.html pair_style tip4p/cut/omp +pair_coul.html pair_style tip4p/long +pair_coul.html pair_style tip4p/long/omp +pair_coul_shield.html pair_style coul/shield +pair_coul_slater.html pair_style coul/slater +pair_coul_slater.html pair_style coul/slater/cut +pair_coul_slater.html pair_style coul/slater/long +pair_coul_tt.html pair_style coul/tt +pair_cs.html pair_style born/coul/dsf/cs +pair_cs.html pair_style born/coul/long/cs +pair_cs.html pair_style born/coul/long/cs/gpu +pair_cs.html pair_style born/coul/wolf/cs +pair_cs.html pair_style born/coul/wolf/cs/gpu +pair_cs.html pair_style buck/coul/long/cs +pair_cs.html pair_style coul/long/cs +pair_cs.html pair_style coul/long/cs/gpu +pair_cs.html pair_style coul/wolf/cs +pair_cs.html pair_style lj/class2/coul/long/cs +pair_cs.html pair_style lj/cut/coul/long/cs +pair_dielectric.html pair_style coul/cut/dielectric +pair_dielectric.html pair_style coul/long/dielectric +pair_dielectric.html pair_style lj/cut/coul/cut/dielectric +pair_dielectric.html pair_style lj/cut/coul/cut/dielectric/omp +pair_dielectric.html pair_style lj/cut/coul/debye/dielectric +pair_dielectric.html pair_style lj/cut/coul/debye/dielectric/omp +pair_dielectric.html pair_style lj/cut/coul/long/dielectric +pair_dielectric.html pair_style lj/cut/coul/long/dielectric/omp +pair_dielectric.html pair_style lj/cut/coul/msm/dielectric +pair_dielectric.html pair_style lj/long/coul/long/dielectric +pair_dipole.html pair_style lj/cut/dipole/cut +pair_dipole.html pair_style lj/cut/dipole/cut/gpu +pair_dipole.html pair_style lj/cut/dipole/cut/kk +pair_dipole.html pair_style lj/cut/dipole/cut/omp +pair_dipole.html pair_style lj/cut/dipole/long +pair_dipole.html pair_style lj/cut/dipole/long/gpu +pair_dipole.html pair_style lj/long/dipole/long +pair_dipole.html pair_style lj/sf/dipole/sf +pair_dipole.html pair_style lj/sf/dipole/sf/gpu +pair_dipole.html pair_style lj/sf/dipole/sf/omp +pair_dpd_ext.html pair_style dpd/ext +pair_dpd_ext.html pair_style dpd/ext/kk +pair_dpd_ext.html pair_style dpd/ext/omp +pair_dpd_ext.html pair_style dpd/ext/tstat +pair_dpd_ext.html pair_style dpd/ext/tstat/kk +pair_dpd_ext.html pair_style dpd/ext/tstat/omp +pair_dpd_fdt.html pair_style dpd/fdt +pair_dpd_fdt.html pair_style dpd/fdt/energy +pair_dpd_fdt.html pair_style dpd/fdt/energy/kk +pair_dpd.html pair_style dpd +pair_dpd.html pair_style dpd/gpu +pair_dpd.html pair_style dpd/intel +pair_dpd.html pair_style dpd/kk +pair_dpd.html pair_style dpd/omp +pair_dpd.html pair_style dpd/tstat +pair_dpd.html pair_style dpd/tstat/gpu +pair_dpd.html pair_style dpd/tstat/kk +pair_dpd.html pair_style dpd/tstat/omp +pair_drip.html pair_style drip +pair_dsmc.html pair_style dsmc +pair_e3b.html pair_style e3b +pair_eam.html pair_style eam +pair_eam.html pair_style eam/alloy +pair_eam.html pair_style eam/alloy/gpu +pair_eam.html pair_style eam/alloy/intel +pair_eam.html pair_style eam/alloy/kk +pair_eam.html pair_style eam/alloy/omp +pair_eam.html pair_style eam/alloy/opt +pair_eam.html pair_style eam/cd +pair_eam.html pair_style eam/cd/old +pair_eam.html pair_style eam/fs +pair_eam.html pair_style eam/fs/gpu +pair_eam.html pair_style eam/fs/intel +pair_eam.html pair_style eam/fs/kk +pair_eam.html pair_style eam/fs/omp +pair_eam.html pair_style eam/fs/opt +pair_eam.html pair_style eam/gpu +pair_eam.html pair_style eam/he +pair_eam.html pair_style eam/intel +pair_eam.html pair_style eam/kk +pair_eam.html pair_style eam/omp +pair_eam.html pair_style eam/opt +pair_edip.html pair_style edip +pair_edip.html pair_style edip/multi +pair_edip.html pair_style edip/omp +pair_eff.html pair_style eff/cut +pair_eim.html pair_style eim +pair_eim.html pair_style eim/omp +pair_exp6_rx.html pair_style exp6/rx +pair_exp6_rx.html pair_style exp6/rx/kk +pair_extep.html pair_style extep +pair_fep_soft.html pair_style coul/cut/soft +pair_fep_soft.html pair_style coul/cut/soft/omp +pair_fep_soft.html pair_style coul/long/soft +pair_fep_soft.html pair_style coul/long/soft/omp +pair_fep_soft.html pair_style lj/charmm/coul/long/soft +pair_fep_soft.html pair_style lj/charmm/coul/long/soft/omp +pair_fep_soft.html pair_style lj/class2/coul/cut/soft +pair_fep_soft.html pair_style lj/class2/coul/long/soft +pair_fep_soft.html pair_style lj/class2/soft +pair_fep_soft.html pair_style lj/cut/coul/cut/soft +pair_fep_soft.html pair_style lj/cut/coul/cut/soft/omp +pair_fep_soft.html pair_style lj/cut/coul/long/soft +pair_fep_soft.html pair_style lj/cut/coul/long/soft/omp +pair_fep_soft.html pair_style lj/cut/soft +pair_fep_soft.html pair_style lj/cut/soft/omp +pair_fep_soft.html pair_style lj/cut/tip4p/long/soft +pair_fep_soft.html pair_style lj/cut/tip4p/long/soft/omp +pair_fep_soft.html pair_style morse/soft +pair_fep_soft.html pair_style tip4p/long/soft +pair_fep_soft.html pair_style tip4p/long/soft/omp +pair_gauss.html pair_style gauss +pair_gauss.html pair_style gauss/cut +pair_gauss.html pair_style gauss/cut/omp +pair_gauss.html pair_style gauss/gpu +pair_gauss.html pair_style gauss/omp +pair_gayberne.html pair_style gayberne +pair_gayberne.html pair_style gayberne/gpu +pair_gayberne.html pair_style gayberne/intel +pair_gayberne.html pair_style gayberne/omp +pair_gran.html pair_style gran/hertz/history +pair_gran.html pair_style gran/hertz/history/omp +pair_gran.html pair_style gran/hooke +pair_gran.html pair_style gran/hooke/history +pair_gran.html pair_style gran/hooke/history/kk +pair_gran.html pair_style gran/hooke/history/omp +pair_gran.html pair_style gran/hooke/omp +pair_granular.html pair_style granular +pair_gromacs.html pair_style lj/gromacs +pair_gromacs.html pair_style lj/gromacs/coul/gromacs +pair_gromacs.html pair_style lj/gromacs/coul/gromacs/kk +pair_gromacs.html pair_style lj/gromacs/coul/gromacs/omp +pair_gromacs.html pair_style lj/gromacs/gpu +pair_gromacs.html pair_style lj/gromacs/kk +pair_gromacs.html pair_style lj/gromacs/omp +pair_gw.html pair_style gw +pair_gw.html pair_style gw/zbl +pair_harmonic_cut.html pair_style harmonic/cut +pair_harmonic_cut.html pair_style harmonic/cut/omp +pair_hbond_dreiding.html pair_style hbond/dreiding/lj +pair_hbond_dreiding.html pair_style hbond/dreiding/lj/omp +pair_hbond_dreiding.html pair_style hbond/dreiding/morse +pair_hbond_dreiding.html pair_style hbond/dreiding/morse/omp +pair_hdnnp.html pair_style hdnnp +pair_hybrid.html pair_style hybrid +pair_hybrid.html pair_style hybrid/kk +pair_hybrid.html pair_style hybrid/overlay +pair_hybrid.html pair_style hybrid/overlay/kk +pair_hybrid.html pair_style hybrid/scaled +pair_ilp_graphene_hbn.html pair_style ilp/graphene/hbn +pair_ilp_graphene_hbn.html pair_style ilp/graphene/hbn/opt +pair_ilp_tmd.html pair_style ilp/tmd +pair_ilp_tmd.html pair_style ilp/tmd/opt +pair_kim.html pair_style kim +pair_kolmogorov_crespi_full.html pair_style kolmogorov/crespi/full +pair_kolmogorov_crespi_z.html pair_style kolmogorov/crespi/z +pair_lcbop.html pair_style lcbop +pair_lebedeva_z.html pair_style lebedeva/z +pair_lepton.html pair_style lepton +pair_lepton.html pair_style lepton/coul +pair_lepton.html pair_style lepton/coul/omp +pair_lepton.html pair_style lepton/omp +pair_lepton.html pair_style lepton/sphere +pair_lepton.html pair_style lepton/sphere/omp +pair_line_lj.html pair_style line/lj +pair_list.html pair_style list +pair_lj96.html pair_style lj96/cut +pair_lj96.html pair_style lj96/cut/gpu +pair_lj96.html pair_style lj96/cut/omp +pair_lj_cubic.html pair_style lj/cubic +pair_lj_cubic.html pair_style lj/cubic/gpu +pair_lj_cubic.html pair_style lj/cubic/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/cut +pair_lj_cut_coul.html pair_style lj/cut/coul/cut/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/cut/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/cut/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/debye +pair_lj_cut_coul.html pair_style lj/cut/coul/debye/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/debye/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/debye/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/long +pair_lj_cut_coul.html pair_style lj/cut/coul/long/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/long/intel +pair_lj_cut_coul.html pair_style lj/cut/coul/long/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/long/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/long/opt +pair_lj_cut_coul.html pair_style lj/cut/coul/msm +pair_lj_cut_coul.html pair_style lj/cut/coul/msm/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/msm/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/wolf +pair_lj_cut_coul.html pair_style lj/cut/coul/wolf/omp +pair_lj_cut_sphere.html pair_style lj/cut/sphere +pair_lj_cut_sphere.html pair_style lj/cut/sphere/omp +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/cut +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/cut/omp +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long/gpu +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long/omp +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long/opt +pair_lj_expand.html pair_style lj/expand +pair_lj_expand.html pair_style lj/expand/coul/long +pair_lj_expand.html pair_style lj/expand/coul/long/gpu +pair_lj_expand.html pair_style lj/expand/coul/long/kk +pair_lj_expand.html pair_style lj/expand/gpu +pair_lj_expand.html pair_style lj/expand/kk +pair_lj_expand.html pair_style lj/expand/omp +pair_lj_expand_sphere.html pair_style lj/expand/sphere +pair_lj_expand_sphere.html pair_style lj/expand/sphere/omp +pair_lj_long.html pair_style lj/long/coul/long +pair_lj_long.html pair_style lj/long/coul/long/intel +pair_lj_long.html pair_style lj/long/coul/long/omp +pair_lj_long.html pair_style lj/long/coul/long/opt +pair_lj_long.html pair_style lj/long/tip4p/long +pair_lj_long.html pair_style lj/long/tip4p/long/omp +pair_lj_relres.html pair_style lj/relres +pair_lj_relres.html pair_style lj/relres/omp +pair_lj.html pair_style lj/cut +pair_lj.html pair_style lj/cut/gpu +pair_lj.html pair_style lj/cut/intel +pair_lj.html pair_style lj/cut/kk +pair_lj.html pair_style lj/cut/omp +pair_lj.html pair_style lj/cut/opt +pair_lj_smooth_linear.html pair_style lj/smooth/linear +pair_lj_smooth_linear.html pair_style lj/smooth/linear/omp +pair_lj_smooth.html pair_style lj/smooth +pair_lj_smooth.html pair_style lj/smooth/gpu +pair_lj_smooth.html pair_style lj/smooth/omp +pair_lj_switch3_coulgauss_long.html pair_style lj/switch3/coulgauss/long +pair_lj_switch3_coulgauss_long.html pair_style mm3/switch3/coulgauss/long +pair_local_density.html pair_style local/density +pair_lubricate.html pair_style lubricate +pair_lubricate.html pair_style lubricate/omp +pair_lubricate.html pair_style lubricate/poly +pair_lubricate.html pair_style lubricate/poly/omp +pair_lubricateU.html pair_style lubricateU +pair_lubricateU.html pair_style lubricateU/poly +pair_mdf.html pair_style buck/mdf +pair_mdf.html pair_style lennard/mdf +pair_mdf.html pair_style lj/mdf +pair_meam.html pair_style meam +pair_meam.html pair_style meam/kk +pair_meam.html pair_style meam/ms +pair_meam.html pair_style meam/ms/kk +pair_meam_spline.html pair_style meam/spline +pair_meam_spline.html pair_style meam/spline/omp +pair_meam_sw_spline.html pair_style meam/sw/spline +pair_mesocnt.html pair_style mesocnt +pair_mesocnt.html pair_style mesocnt/viscous +pair_mesodpd.html pair_style edpd +pair_mesodpd.html pair_style mdpd +pair_mesodpd.html pair_style mdpd/rhosum +pair_mesodpd.html pair_style tdpd +pair_mgpt.html pair_style mgpt +pair_mie.html pair_style mie/cut +pair_mie.html pair_style mie/cut/gpu +pair_mliap.html pair_style mliap +pair_mliap.html pair_style mliap/kk +pair_modify.html pair_modify +pair_momb.html pair_style momb +pair_morse.html pair_style morse +pair_morse.html pair_style morse/gpu +pair_morse.html pair_style morse/kk +pair_morse.html pair_style morse/omp +pair_morse.html pair_style morse/opt +pair_morse.html pair_style morse/smooth/linear +pair_morse.html pair_style morse/smooth/linear/omp +pair_multi_lucy.html pair_style multi/lucy +pair_multi_lucy_rx.html pair_style multi/lucy/rx +pair_multi_lucy_rx.html pair_style multi/lucy/rx/kk +pair_nb3b_harmonic.html pair_style nb3b/harmonic +pair_nm.html pair_style nm/cut +pair_nm.html pair_style nm/cut/coul/cut +pair_nm.html pair_style nm/cut/coul/cut/omp +pair_nm.html pair_style nm/cut/coul/long +pair_nm.html pair_style nm/cut/coul/long/omp +pair_nm.html pair_style nm/cut/omp +pair_nm.html pair_style nm/cut/split +pair_none.html pair_style none +pair_oxdna2.html pair_style oxdna2/coaxstk +pair_oxdna2.html pair_style oxdna2/dh +pair_oxdna2.html pair_style oxdna2/excv +pair_oxdna2.html pair_style oxdna2/hbond +pair_oxdna2.html pair_style oxdna2/stk +pair_oxdna2.html pair_style oxdna2/xstk +pair_oxdna.html pair_style oxdna/coaxstk +pair_oxdna.html pair_style oxdna/excv +pair_oxdna.html pair_style oxdna/hbond +pair_oxdna.html pair_style oxdna/stk +pair_oxdna.html pair_style oxdna/xstk +pair_oxrna2.html pair_style oxrna2/coaxstk +pair_oxrna2.html pair_style oxrna2/dh +pair_oxrna2.html pair_style oxrna2/excv +pair_oxrna2.html pair_style oxrna2/hbond +pair_oxrna2.html pair_style oxrna2/stk +pair_oxrna2.html pair_style oxrna2/xstk +pair_pace.html pair_style pace +pair_pace.html pair_style pace/extrapolation +pair_pace.html pair_style pace/extrapolation/kk +pair_pace.html pair_style pace/kk +pair_peri.html pair_style peri/eps +pair_peri.html pair_style peri/lps +pair_peri.html pair_style peri/lps/omp +pair_peri.html pair_style peri/pmb +pair_peri.html pair_style peri/pmb/omp +pair_peri.html pair_style peri/ves +pair_pod.html pair_style pod +pair_polymorphic.html pair_style polymorphic +pair_python.html pair_style python +pair_quip.html pair_style quip +pair_rann.html pair_style rann +pair_reaxff.html pair_style reaxff +pair_reaxff.html pair_style reaxff/kk +pair_reaxff.html pair_style reaxff/omp +pair_resquared.html pair_style resquared +pair_resquared.html pair_style resquared/gpu +pair_resquared.html pair_style resquared/omp +pair_saip_metal.html pair_style saip/metal +pair_saip_metal.html pair_style saip/metal/opt +pair_sdpd_taitwater_isothermal.html pair_style sdpd/taitwater/isothermal +pair_smatb.html pair_style smatb +pair_smatb.html pair_style smatb/single +pair_smd_hertz.html pair_style smd/hertz +pair_smd_tlsph.html pair_style smd/tlsph +pair_smd_triangulated_surface.html pair_style smd/tri_surface +pair_smd_ulsph.html pair_style smd/ulsph +pair_smtbq.html pair_style smtbq +pair_snap.html pair_style snap +pair_snap.html pair_style snap/kk +pair_soft.html pair_style soft +pair_soft.html pair_style soft/gpu +pair_soft.html pair_style soft/omp +pair_sph_heatconduction.html pair_style sph/heatconduction +pair_sph_idealgas.html pair_style sph/idealgas +pair_sph_lj.html pair_style sph/lj +pair_sph_rhosum.html pair_style sph/rhosum +pair_sph_taitwater_morris.html pair_style sph/taitwater/morris +pair_sph_taitwater.html pair_style sph/taitwater +pair_spica.html pair_style lj/spica +pair_spica.html pair_style lj/spica/coul/long +pair_spica.html pair_style lj/spica/coul/long/gpu +pair_spica.html pair_style lj/spica/coul/long/omp +pair_spica.html pair_style lj/spica/coul/msm +pair_spica.html pair_style lj/spica/coul/msm/omp +pair_spica.html pair_style lj/spica/gpu +pair_spica.html pair_style lj/spica/kk +pair_spica.html pair_style lj/spica/omp +pair_spin_dipole.html pair_style spin/dipole/cut +pair_spin_dipole.html pair_style spin/dipole/long +pair_spin_dmi.html pair_style spin/dmi +pair_spin_exchange.html pair_style spin/exchange +pair_spin_exchange.html pair_style spin/exchange/biquadratic +pair_spin_magelec.html pair_style spin/magelec +pair_spin_neel.html pair_style spin/neel +pair_srp.html pair_style srp +pair_srp.html pair_style srp/react +pair_style.html pair_style +pair_sw_angle_table.html pair_style sw/angle/table +pair_sw.html pair_style sw +pair_sw.html pair_style sw/gpu +pair_sw.html pair_style sw/intel +pair_sw.html pair_style sw/kk +pair_sw.html pair_style sw/mod +pair_sw.html pair_style sw/mod/omp +pair_sw.html pair_style sw/omp +pair_table.html pair_style table +pair_table.html pair_style table/gpu +pair_table.html pair_style table/kk +pair_table.html pair_style table/omp +pair_table_rx.html pair_style table/rx +pair_table_rx.html pair_style table/rx/kk +pair_tersoff_mod.html pair_style tersoff/mod +pair_tersoff_mod.html pair_style tersoff/mod/c +pair_tersoff_mod.html pair_style tersoff/mod/c/omp +pair_tersoff_mod.html pair_style tersoff/mod/gpu +pair_tersoff_mod.html pair_style tersoff/mod/kk +pair_tersoff_mod.html pair_style tersoff/mod/omp +pair_tersoff.html pair_style tersoff +pair_tersoff.html pair_style tersoff/gpu +pair_tersoff.html pair_style tersoff/intel +pair_tersoff.html pair_style tersoff/kk +pair_tersoff.html pair_style tersoff/omp +pair_tersoff.html pair_style tersoff/table +pair_tersoff.html pair_style tersoff/table/omp +pair_tersoff_zbl.html pair_style tersoff/zbl +pair_tersoff_zbl.html pair_style tersoff/zbl/gpu +pair_tersoff_zbl.html pair_style tersoff/zbl/kk +pair_tersoff_zbl.html pair_style tersoff/zbl/omp +pair_thole.html pair_style lj/cut/thole/long +pair_thole.html pair_style lj/cut/thole/long/omp +pair_thole.html pair_style thole +pair_threebody_table.html pair_style threebody/table +pair_tracker.html pair_style tracker +pair_tri_lj.html pair_style tri/lj +pair_ufm.html pair_style ufm +pair_ufm.html pair_style ufm/gpu +pair_ufm.html pair_style ufm/omp +pair_ufm.html pair_style ufm/opt +pair_vashishta.html pair_style vashishta +pair_vashishta.html pair_style vashishta/gpu +pair_vashishta.html pair_style vashishta/kk +pair_vashishta.html pair_style vashishta/omp +pair_vashishta.html pair_style vashishta/table +pair_vashishta.html pair_style vashishta/table/omp +pair_wf_cut.html pair_style wf/cut +pair_write.html pair_write +pair_ylz.html pair_style ylz +pair_yukawa_colloid.html pair_style yukawa/colloid +pair_yukawa_colloid.html pair_style yukawa/colloid/gpu +pair_yukawa_colloid.html pair_style yukawa/colloid/omp +pair_yukawa.html pair_style yukawa +pair_yukawa.html pair_style yukawa/gpu +pair_yukawa.html pair_style yukawa/kk +pair_yukawa.html pair_style yukawa/omp +pair_zbl.html pair_style zbl +pair_zbl.html pair_style zbl/gpu +pair_zbl.html pair_style zbl/kk +pair_zbl.html pair_style zbl/omp +pair_zero.html pair_style zero +partition.html partition +plugin.html plugin +prd.html prd +print.html print +processors.html processors +python.html python +quit.html quit +read_data.html read_data +read_dump.html read_dump +read_restart.html read_restart +region.html region +replicate.html replicate +rerun.html rerun +reset_atoms.html reset_atoms +reset_timestep.html reset_timestep +restart.html restart +run.html run +run_style.html run_style +set.html set +shell.html shell +special_bonds.html special_bonds +suffix.html suffix +tad.html tad +temper_grem.html temper/grem +temper_npt.html temper/npt +temper.html temper +thermo_modify.html thermo_modify +thermo.html thermo +thermo_style.html thermo_style +third_order.html third_order +third_order.html third_order/kk +timer.html timer +timestep.html timestep +uncompute.html uncompute +undump.html undump +unfix.html unfix +units.html units +variable.html variable +velocity.html velocity +write_coeff.html write_coeff +write_data.html write_data +write_dump.html write_dump +write_restart.html write_restart diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 40b8bd9978..caf65ffc78 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -1,29 +1,35 @@ - + lammps-icon-128x128.png - + + help_index.table + + + system-help.png + + gtk-zoom-in.png - + gtk-zoom-out.png - + gtk-zoom-fit.png - + edit-delete.png - + object-rotate-right.png - + object-rotate-left.png - + gtk-go-up.png - + gtk-go-down.png diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 4032a44c31..9603fece62 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -318,6 +318,9 @@ About LAMMPS-GUI + + Ctrl+Shift+A + @@ -331,7 +334,7 @@ Quick Help - Ctrl+Shift+/ + Ctrl+Shift+H @@ -354,6 +357,9 @@ LAMMPS &Manual + + Ctrl+Shift+M + @@ -372,6 +378,9 @@ &Log Window + + Ctrl+Shift+L + @@ -381,6 +390,9 @@ &Chart Window + + Ctrl+Shift+C + @@ -415,6 +427,9 @@ &Image Window + + Ctrl+Shift+I + diff --git a/tools/lammps-gui/system-help.png b/tools/lammps-gui/system-help.png new file mode 100644 index 0000000000000000000000000000000000000000..5242b608b6142987802bdd86ca2a244a65a7a785 GIT binary patch literal 2567 zcmV+i3i$PjP)X-3iMDE&80;V^it%I zQ&FJkEvNQS?>D z?fn1u@BfHUO7SE=0-o^ai6=nXX~7S#4|~Lb@>3>iFR|_<1NpIIMWKS==Wm^izp>L& z@+cj6{a*)8fJpCsW$?A=LGKAk7G3*ttD3Ik?fb8)Z=H(E9dm%+yelBT_wx9ggR<_& z*0KsEEvtEpk9Y+616p|$UPsk9`XrYxo5=7lPK1R#X(GUytF;9| zfXC~BN9)@g0V0tnU7{aS#)r^TK@;(2B=`?I-!Qcyil&=)YV+@Un-k#obfYIXxiq5~L?x6$YAc1lo<3-r#tX6Q;x$wtYdj~3F%AMh^G=*T2EnNIk+!YsQw)Be^XeXmw(Kf zZ*)X}&ak~6|1GBazJ<_e1mb83ve?DF$G#At^Pjo@XdHL2i8^DchGcOSDF)d>8s4q| zQpyra+7`C8Gzw~p>&s&y;FaND?JXA4L0ddLZBxw08&S}`5ddcQKg)+g@7#>mIG{I~ zzb1QVf?+`(6IXV_fgR(58gkZOVv=I@A0Gj`kpO8oH_$+^VY7t>XjOvE1r4Pw9jps) zFAD`i0;<~-mAsBhp>~GbPv8y+aQTR_wwTrp{P^1NxCF^f9DaY#`GDSt#%iKsiV~^y zwJOE>OchU$pTXhNr*UoO4@f>tz*Pz3nThAne`E+gPXGd=Y->A(jr20^F3cd$J$pEU zFQ54a=GJfHlbIO|eol5EVy_%vS47$b%K9W0$~Zo87QN8`{`BE*P%2l9H7cz@2yfw2 z?Ewn8q_NW{_QD(PL*;JKSd&a8jXj^g@Fj>ii-pBoh#r;OI6!sUxfP9o@hS>bmDFrLe zdTZ=cM_(|3F!7-94rz#$?-~%22hkns#`w??+|FM%l(+uGD|1L!S8?X#b68xvhYj&I zGWk_wPWChFv_ji#ijk>xYK6G+7z8vd5E_XGsW}3a3M#s~Es@HqF>GwcP;$qhqTFUx z_!yt#Yqr$2#&}nN7!I#>eNBn67ZIX1&9!mDBtjGbm zY{fzXo71U-MoUh}^9`JGt7uiXKFxuhTkzrRiSxMj@t;xH&Nt2&8W=&zvw@Z3gQl~4 z!{bK%NKvgKfZrEjXM6!4+`Q6W?6RtNyewXIB0_LX!kBNd99e5tX2n8047mB=eSGoU zB?Nqyc!VP%B&&;UB9Wyl7#|yN^!XmX_vV8um>fRdw%)*?#sQ!CUV=PQ2kN)a6R3LC zm^2a?dooia;owLVl`O&Sh3k0n{I?Bp;^T|U^G2>vU{;AIJsfyDK3~Mc&2?i9U(5IK zz16J1&WbpM(~W4<&v7zEiR`2U+-$fQ<*G(CNg|@f0RwTt0N#n~ckt4sS8#7}7JvEs zJ1o3*7o|&n%jJxGOVtD*4jvf9kbgCI4LY6@^ z5XSh(B>ZBZA&T2t5(NfDZ4Dz6gE;;4Id+|*5q|u;{Cg;R$)PyVh=p9H2ni;RbVol> zNN69V2R4TW1`f%sB^6T7ks0uSZN7B1ZGTE#`meUzY0lA7?jjl$90~z^i+1(R@-Nrd z*K)aX+Q?@`Qon%xd#`MJZ=jf>qqia;IhP_(NzEzg*>}hfH2wWwY>i}n#|F;3LY@d* zQWxW;%vfGVl@=Kk%$Uh6x4;HQ-w6B6dC_KLYV$%vr>u5ujzzm_o_k`Bc*%(Q9Lf}J zZz)MlleoqQcpefOlMY;bz3cnFi10j-Xp}VKJ7O!|(AH*C9iz?t(AFkxXDsV$1bQh& z-@g34!cW);cQh4Bn}y1W0AgAqPK4LA03NPHvKO)^U~uhmRe0-;M;AmErLg$0vWXl| zn@tXAt&Ys`J+X}l$+Q42v%g<&_H|R{t0t&U$UpK$w@E~E4!M7|b!syxdQG355hefs dZ help_index.table From e7b02e89fa53f0fe30b552bab5b2fd171f7a594e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 20:13:40 -0400 Subject: [PATCH 0226/1002] also linke the principal command when linking styles --- tools/lammps-gui/codeeditor.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index 15dc022f87..5333789180 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -54,8 +54,10 @@ CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent) fix_map[words.at(2)] = words.at(0); } else if (words.at(1) == "compute") { compute_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "kspace_style") { + cmd_map["kspace_style"] = "kspace_style.html"; } - // ignoring: min_style, kspace_style, dump, fix_modify ATC + // ignoring: dump, fix_modify ATC } else if (words.size() == 2) { cmd_map[words.at(1)] = words.at(0); } else { @@ -188,10 +190,21 @@ void CodeEditor::contextMenuEvent(QContextMenuEvent *event) auto *menu = createStandardContextMenu(); if (!page.isEmpty()) { menu->addSeparator(); - auto action = menu->addAction(QString("Look up help for '%1'").arg(help)); + auto action = menu->addAction(QString("View Documentation for '%1'").arg(help)); action->setIcon(QIcon(":/system-help.png")); action->setData(page); - connect(action, &QAction::triggered, this, &CodeEditor::open_help); + // if we link to help with specific styles (fix, compute, pair, bond, ...) + // also link to the docs for the primary command + auto words = help.split(' '); + if (words.size() > 1) { + help = words.at(0); + page = words.at(0); + page += ".html"; + auto action2 = menu->addAction(QString("View Documentation for '%1'").arg(help)); + action2->setIcon(QIcon(":/system-help.png")); + action2->setData(page); + connect(action2, &QAction::triggered, this, &CodeEditor::open_help); + } } menu->exec(event->globalPos()); delete menu; From c11d58f7b1e2a919a28ed4459110d442608cc952 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 21:07:12 -0400 Subject: [PATCH 0227/1002] Start working on a LAMMPS GUI howto Docs are now organized as follows: - README is minimal and points to other docs - The section in Tools.rst mostly explains compilation and installation - The Howto contains a tour of the GUI and explains intended functionality --- doc/src/Howto.rst | 1 + doc/src/Howto_lammps_gui.rst | 58 +++++++++++ doc/src/Tools.rst | 184 ++++++++++++----------------------- tools/lammps-gui/README.md | 156 ++--------------------------- 4 files changed, 128 insertions(+), 271 deletions(-) create mode 100644 doc/src/Howto_lammps_gui.rst diff --git a/doc/src/Howto.rst b/doc/src/Howto.rst index 4752cf6aea..b1f5da8abc 100644 --- a/doc/src/Howto.rst +++ b/doc/src/Howto.rst @@ -100,6 +100,7 @@ Tutorials howto Howto_cmake Howto_github + Howto_lammps_gui Howto_pylammps Howto_wsl diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst new file mode 100644 index 0000000000..c1447f6150 --- /dev/null +++ b/doc/src/Howto_lammps_gui.rst @@ -0,0 +1,58 @@ +Using the LAMMPS GUI +==================== + +Hotkeys +^^^^^^^ + +Almost all functionality is accessible from the menu or via hotkeys. +The following hotkeys are available (On macOS use the Command key +instead of Ctrl (aka Control)). + +.. list-table:: + :header-rows: 1 + :widths: auto + + * - Hotkey + - Function + - Hotkey + - Function + - Hotkey + - Function + - Hotkey + - Function + * - Ctrl+N + - New File + - Ctrl+Z + - Undo edit + - Ctrl+V + - Paste text + - Ctrl+Q + - Quit (Main Window only) + * - Ctrl+O + - Open File + - Ctrl+Shift+Z + - Redo edit + - Ctrl+Enter + - Run LAMMPS + - Ctrl+W + - Close (Log and Image Window only) + * - CTRL+S + - Save File + - Ctrl+C + - Copy text + - Ctrl+/ + - Stop Active Run + - Ctrl+P + - Preferences + * - Ctrl+Shift+S + - Save File As + - Ctrl+X + - Cut text + - Ctrl+I + - Create Snapshot Image + - Ctrl+Shift+/ + - Quick Help + +Further editing keybindings `are documented with the Qt documentation +`_. In +case of conflicts the list above takes precedence. diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index 5a104ca919..f22c36606b 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -645,112 +645,55 @@ LAMMPS GUI Overview ^^^^^^^^ -LAMMPS GUI is essentially a small graphical text editor that is linked +LAMMPS GUI is essentially a simple graphical text editor that is linked to the :ref:`LAMMPS C-library interface ` and thus can run LAMMPS directly using the contents of the editor's text buffer as input. This is similar to what people usually would do using a text editor to edit the input and then open a command line terminal window to run the -necessary commands. The main benefit of a GUI is that this integrates -very well with graphical desktop environments and many basic tasks can -be done directly from within the GUI without switching to a text -console. This makes it easier for beginners to get started running -computations and thus very suitable for tutorials on LAMMPS. +necessary commands. The main benefit of a GUI application is that this +integrates very well with graphical desktop environments and many basic +tasks can be done directly from within the GUI without switching to a +text console and requiring external programs or scripts to extract data +from the generated output. This makes it easier for beginners to get +started running simple LAMMPS simulation and thus very suitable for +tutorials on LAMMPS and then makes it easier to switch to a full featured +text editor and more sophisticated visualization and analysis tools. +All features have been extensively exposed to hotkeys, so that there +is appeal for experienced LAMMPS users, too, especially for prototyping +and testing simulations setups. All steps can be executed with a few +keystrokes. Features ^^^^^^^^ -The main window of the LAMMPS GUI is a text editor window with line -numbers and syntax highlighting set up for LAMMPS input files. When -starting a run the output to the console is captured and displayed in a -log window. Also, generated thermodynamic data is collected and shown -in chart window. An ongoing run can be stopped at the next iteration -and after a run is completed, a snapshot image can be generated and -displayed in an image viewer window. The log and the chart window -are window regularly updated during the run and a progress bar for -the run command estimating the remaining time on the current run -command is shown at the bottom of the main window. The collected -thermodynamic data can be exported to text files or snapshot images -of the charts can be exported. Also the snapshot image can be exported. -A number of settings (e.g. whether a new run should use a new or replace -the existing log or chart window) or which accelerator to use, can -be updated from a preferences dialog. +A detailed discussion and explanation of all features and functionality +are in the :doc:`Howto_lammps_gui` tutorial Howto page. -When opening a file, the editor will determine the directory where the -file resides and switch its current working directory to the folder of -that file. Many LAMMPS inputs contain commands that read other files, -typically from the folder of the input file. The GUI will always show -the current working directory in the bottom. The editor window can also -receive (entire) files via drag-n-drop from a file manager GUI or a -desktop environment. When exiting the GUI with a modified buffer, a -dialog asking to either cancel, ignore the modifications, or save the -file with show up. Same when attempting to load a new file into a -modified buffer. +Here are a few highlights of LAMMPS GUI -Hotkeys -^^^^^^^ - -Almost all functionality is accessible from the menu or via hotkeys. -The following hotkeys are available (On macOS use the Command key -instead of Ctrl (aka Control)). - -.. list-table:: - :header-rows: 1 - :widths: auto - - * - Hotkey - - Function - - Hotkey - - Function - - Hotkey - - Function - - Hotkey - - Function - * - Ctrl+N - - New File - - Ctrl+Z - - Undo edit - - Ctrl+V - - Paste text - - Ctrl+Q - - Quit (Main Window only) - * - Ctrl+O - - Open File - - Ctrl+Shift+Z - - Redo edit - - Ctrl+Enter - - Run LAMMPS - - Ctrl+W - - Close (Log and Image Window only) - * - CTRL+S - - Save File - - Ctrl+C - - Copy text - - Ctrl+/ - - Stop Active Run - - Ctrl+P - - Preferences - * - Ctrl+Shift+S - - Save File As - - Ctrl+X - - Cut text - - Ctrl+I - - Create Snapshot Image - - Ctrl+Shift+/ - - Quick Help - -Further editing keybindings `are documented with the Qt documentation -`_. In -case of conflicts the list above takes precedence. +- Text editor with syntax highlighting customized for LAMMPS +- Text editor will switch working directory to folder of file in buffer +- Text editor will remember up to 5 recent files +- Context specific LAMMPS command help via online documentation +- LAMMPS is running in a concurrent thread, so the GUI remains responsive +- Support for accelerator packages +- Progress bar indicates that LAMMPS is running +- LAMMPS can be started and stopped with a hotkey +- Screen output is captured in a Log Window +- Thermodynamic output is captured and displayed as line graph in a Chart Window +- Visualization of current state in Image Viewer (via :doc:`dump image `) +- Many customizable settings and preferences that are persistent +- Dialog to set variables from the LAMMPS command line Parallelization ^^^^^^^^^^^^^^^ Due to its nature as a graphical application, it is not possible to use -the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading is -available and enabled by default. +the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading and GPU +acceleration is available and enabled by default. Prerequisites and portability ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -758,26 +701,24 @@ Prerequisites and portability LAMMPS GUI is programmed in C++ based on the C++11 standard and using the `Qt GUI framework `_. Currently, Qt version 5.12 or later is required; Qt 5.15LTS is -recommended; Qt 6.x not (yet) supported. Furthermore, CMake version 3.16 -is required and LAMMPS must be configured with ``-D BUILD_MPI=off`` and -``-D BUILD_LAMMPS_GUI=on``. The LAMMPS GUI has been successfully -compiled and tested on: +recommended; Qt 6.x not (yet) supported. Building LAMMPS with CMake is +required. The LAMMPS GUI has been successfully compiled and tested on: - Ubuntu Linux 20.04LTS x86_64 using GCC 9, Qt version 5.12 - Fedora Linux 38 x86\_64 using GCC 13 and Clang 16, Qt version 5.15LTS - Apple macOS 12 (Monterey) and macOS 13 (Ventura) with Xcode on arm64 and x86\_64, Qt version 5.15LTS - Windows 10 and 11 x86_64 with Visual Studio 2022 and Visual C++ 14.36, Qt version 5.15LTS -- Windows 10 and 11 x86_64 with MinGW / GCC 10.0 cross-compiler on Fedora 37, Qt version 5.15LTS +- Windows 10 and 11 x86_64 with MinGW / GCC 10.0 cross-compiler on Fedora 38, Qt version 5.15LTS Pre-compiled executables ^^^^^^^^^^^^^^^^^^^^^^^^ Pre-compiled LAMMPS executables including the GUI are currently available from https://download.lammps.org/static or -https://github.com/lammps/lammps/releases. You can unpack the archive +https://github.com/lammps/lammps/releases. You can unpack the archives (or mount the macOS disk image) and run the GUI directly in place. The folder may also be moved around and added to the ``PATH`` environment -variable so the executables will be found automatically. The LAMMPS GUI +variable so the executables will be found automatically. The LAMMPS GUI executable is called ``lammps-gui`` and either takes no arguments or attempts to load the first argument as LAMMPS input file. @@ -787,24 +728,25 @@ Compilation The source for the LAMMPS GUI is included with the LAMMPS source code distribution in the folder ``tools/lammps-gui`` and thus it can be can be built as part of a regular LAMMPS compilation. :doc:`Using CMake -` is required. To enable its compilation use the CMake -variables ``-D BUILD_LAMMPS_GUI=on`` ``-D BUILD_MPI=off`` must be set -when creating the CMake configuration. All other settings (compiler, -flags, compile type) for LAMMPS GUI are then inherited from the regular -LAMMPS build. If the Qt library is packaged for Linux distributions, -then its location is typically auto-detected since the required CMake -configuration files are stored in a location where CMake can find them -without additional help. Otherwise, the location of the Qt library -installation must be indicated by setting ``-D -Qt5_DIR=/path/to/qt5/lib/cmake/Qt5``, which is a path to a folder inside -the Qt installation that contains the file ``Qt5Config.cmake``. +` is required. To enable its compilation, the CMake +variable ``-D BUILD_LAMMPS_GUI=on`` must be set when creating the CMake +configuration. All other settings (compiler, flags, compile type) for +LAMMPS GUI are then inherited from the regular LAMMPS build. If the Qt +library is packaged for Linux distributions, then its location is +typically auto-detected since the required CMake configuration files are +stored in a location where CMake can find them without additional help. +Otherwise, the location of the Qt library installation must be indicated +by setting ``-D Qt5_DIR=/path/to/qt5/lib/cmake/Qt5``, which is a path to +a folder inside the Qt installation that contains the file +``Qt5Config.cmake``. -It is possible to build the LAMMPS GUI as a standalone compilation -(e.g. when LAMMPS has been compiled with traditional make), then the -CMake configuration needs to be told where to find the LAMMPS headers -and the LAMMPS library, via ``-D LAMMPS_SOURCE_DIR=/path/to/lammps/src``. -CMake will try to guess a build folder with the LAMMPS library from that -path, but it can also be set with ``-D LAMMPS_LIB_DIR=/path/to/lammps/lib``. +It should be possible to build the LAMMPS GUI as a standalone +compilation (e.g. when LAMMPS has been compiled with traditional make), +then the CMake configuration needs to be told where to find the LAMMPS +headers and the LAMMPS library, via ``-D +LAMMPS_SOURCE_DIR=/path/to/lammps/src``. CMake will try to guess a +build folder with the LAMMPS library from that path, but it can also be +set with ``-D LAMMPS_LIB_DIR=/path/to/lammps/lib``. Rather than linking to the LAMMPS library during compilation, it is also possible to compile the GUI with a plugin loader library that will load @@ -846,7 +788,7 @@ cross-compiler environment on Fedora Linux. **Visual Studio** -Using CMake and Ninja as build system are required. Qt needs to be +Using CMake and Ninja as build system are required. Qt needs to be installed, tested was a binary package downloaded from https://www.qt.io, which installs into the ``C:\\Qt`` folder by default. There is a custom `x64-GUI-MSVC` build configuration provided in the @@ -854,7 +796,7 @@ There is a custom `x64-GUI-MSVC` build configuration provided in the compilation settings for project. Choosing this configuration will activate building the `lammps-gui.exe` executable in addition to LAMMPS through importing package selection from the ``windows.cmake`` preset -file and enabling building the LAMMPS GUI and disable building with MPI. +file and enabling building the LAMMPS GUI and disabling building with MPI. When requesting an installation from the `Build` menu in Visual Studio, it will create a compressed ``LAMMPS-Win10-amd64.zip`` zip file with the executables and required dependent .dll files. This zip file can be @@ -877,13 +819,13 @@ and create a zip file from it. Linux """"" -Version 5.12 or later of the Qt library and CMake version 3.16 are -required and those are provided by, e.g., Ubuntu 20.04LTS. Thus older -Linux distributions are not likely to be supported, while more recent -ones will work, even for pre-compiled executables (see above). After -compiling with ``cmake --build ``, use -``cmake --build --target tgz`` or ``make tgz`` to build -a ``LAMMPS-Linux-amd64.tar.gz`` file with the executables and their +Version 5.12 or later of the Qt library is required. Those are provided +by, e.g., Ubuntu 20.04LTS. Thus older Linux distributions are not +likely to be supported, while more recent ones will work, even for +pre-compiled executables (see above). After compiling with +``cmake --build ``, use ``cmake --build --target tgz`` or ``make tgz`` to build a +``LAMMPS-Linux-amd64.tar.gz`` file with the executables and their support libraries. ---------- diff --git a/tools/lammps-gui/README.md b/tools/lammps-gui/README.md index c5ea0fd5dd..d495121bce 100644 --- a/tools/lammps-gui/README.md +++ b/tools/lammps-gui/README.md @@ -1,158 +1,14 @@ LAMMPS GUI -# Overview - LAMMPS GUI is essentially a small graphical text editor that is linked to the LAMMPS library and thus can run LAMMPS using the contents of the -text buffer as input. +text buffer as input directly without requiring an additional LAMMPS +executable. It can also capture and show the screen output, a line graph +of thermodynamic data and snapshot images in separate windows. -This is similar to what people usually would do using a text editor to -edit the input and then open a command line terminal window to run the -necessary commands. The main benefit of a GUI is that this integrates -very well with graphical desktop environments and many basic tasks can -be done directly from within the GUI without switching to a text -console. This makes it easier for beginners to get started running -computations and thus very suitable for tutorials on LAMMPS. - -# Features - -The main window of the LAMMPS GUI is a text editor window with line -numbers syntax and highlighting set up for LAMMPS input files. When -starting a run the output to the console is captured and displayed in a -log window. Also, generated thermodynamic data is collected and shown -in chart window. An ongoing run can be stopped at the next iteration -and after a run is completed, a snapshot image can be generated and -displayed in an image viewer window. - -When opening a file, the editor will switch to the directory where the -file was found. The current working directory is shown in the status -bar at the bottom of the window. The editor window can also receive -(entire) files via drag-n-drop from a file manager GUI or a desktop -environment. - -Almost all commands are accessible via hotkeys. Which those hotkeys are, -is shown next to the entries in the menu. Log and image viewer windows -can be closed with CTRL-W (or Command-W on macOS). -A number of settings can be adjusted via a Preferences dialog. - -The "About LAMMPS" dialog will show the LAMMPS version and the features -included into the LAMMPS library linked to the LAMMPS GUI. - -Due to its nature as a graphical application, it is not possible to use -the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading is -available. - -# Prerequisites and portability - -LAMMPS GUI is programmed using the Qt cross-platform GUI toolkit, -currently using Qt version 5.15LTS for better compatibility with older -compilers. It has been successfully compiled and tested on: - -- Fedora Linux 38 x86\_64 using GCC 13 and Clang 16 -- Apple macOS 12 (Monterey) and macOS 13 (Ventura) with Xcode on arm64 and x86\_64 -- Windows 10 and 11 x86_64 with Visual Studio 2022 and Visual C++ 14.36 -- Windows 10 and 11 x86_64 with a MinGW GCC cross-compiler on Linux - -# Compilation - -The source for the LAMMPS GUI is included with the LAMMPS source code -distribution in the folder `tools/lammps-gui` and thus it can be can be -built as part of a regular LAMMPS compilation. Using CMake is required. -To enable its compilation the CMake variable `-D BUILD_LAMMPS_GUI=on` -must be set when creating the CMake configuration. All other settings -(compiler, flags, compile type) for LAMMPS GUI are then inherited from -the regular LAMMPS build. If the Qt library is packaged for Linux -distributions, then its location is typically auto-detected since the -required CMake configuration files are stored in a location where CMake -can find them without additional help. Otherwise, the location of the -Qt library installation must be indicated by setting `-D -Qt5_DIR=/path/to/qt5/lib/cmake/Qt5`, which is a path to a folder inside -the Qt installation that contains the file `Qt5Config.cmake`. - -It is also possible to build the LAMMPS GUI as a standalone executable -(e.g. when LAMMPS has been compiled with traditional make), then the -CMake configuration needs to be told where to find the LAMMPS headers -and the LAMMPS library, via `-D LAMMPS_SOURCE_DIR=/path/to/lammps/src`. -CMake will try to guess a build folder with the LAMMPS library from that -path, but it can also be set with `-D LAMMPS_LIB_DIR=/path/to/lammps/lib`. - -Rather than linking to the LAMMPS library during compilation, it is also -possible to compile the GUI with a plugin loader library that will load -the LAMMPS library at runtime during startup of the GUI from a shared -library; e.g. `liblammps.so` or `liblammps.dylib` or `liblammps.dll` -depending on the operating system. This has the advantage that the -LAMMPS library can be updated LAMMPS without having to recompile the -GUI. The ABI of the LAMMPS C-library interface is very stable and -generally backward compatible. This feature is enabled by setting `-D -LAMMPS_GUI_USE_PLUGIN=on` and then `-D -LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader`. Typically, this -would be the `examples/COUPLE/plugin` folder of the LAMMPS distribution. - -# Platform notes - -## macOS - -When building on macOS, the build procedure will try to manufacture a -drag-n-drop installer, LAMMPS-macOS-multiarch.dmg, when using the 'dmg' -target (i.e. `cmake --build --target dmg` or `make dmg`. - -To build multi-arch executables that will run on both, arm64 and x86_64 -architectures natively, it is necessary to set the CMake variable `-D -CMAKE_OSX_ARCHITECTURES=arm64;x86_64`. To achieve wide compatibility -with different macOS versions, you can also set `-D -CMAKE_OSX_DEPLOYMENT_TARGET=11.0` which will set compatibility to macOS -11 (Big Sur) and later, even if you are compiling on a more recent macOS -version. - - -## Windows - -On Windows either native compilation from within Visual Studio 2022 with -Visual C++ is supported and tested, or compilation with the MinGW / GCC -cross-compiler environment on Fedora Linux. - -### Visual Studio - -Using CMake and Ninja as build system are required. Qt needs to be -installed, tested was a binary package downloaded from -https://www.qt.io, which installs into the `C:\\Qt` folder by default. -There is a custom `x64-GUI-MSVC` build configuration provided in the -`CMakeSettings.json` file that Visual Studio uses to store different -compilation settings for project. Choosing this configuration will -activate building the `lammps-gui.exe` executable in addition to LAMMPS -through importing package selection from the `windows.cmake` preset -file and enabling building the LAMMPS GUI and disable building with MPI. -When requesting an installation from the `Build` menu in Visual Studio, -it will create a compressed `LAMMPS-Win10-amd64.zip` zip file with the -executables and required dependent .dll files. This zip file can be -uncompressed and `lammps-gui.exe` run directly from there. The -uncompressed folder can be added to the `PATH` environment and LAMMPS -and LAMMPS GUI can be launched from anywhere from the command line. - -### MinGW64 Cross-compiler - -The standard CMake build procedure can be applied and the -`mingw-cross.cmake` preset used. By using `mingw64-cmake` the CMake -command will automatically include a suitable CMake toolset file (the -regular cmake command can be used after that). After building the -libraries and executables, you can build the target 'zip' -(i.e. `cmake --build --target zip` or `make zip` -to stage all installable files into a LAMMPS_GUI folder and then -run a script to copy all required dependencies, some other files, -and create a zip file from it. - -Linux -""""" - -Version 5.12 or later of the Qt library and CMake version 3.16 are -required and those are provided by, e.g., Ubuntu 20.04LTS. Thus older -Linux distributions are not likely to be supported, while more recent -ones will work, even for pre-compiled executables (see above). After -compiling with `cmake --build `, use -`cmake --build --target tgz` or `make tgz` to build -a `LAMMPS-Linux-amd64.tar.gz` file with the executables and their -support libraries. +Detailed documentation about installing and using LAMMPS GUI is in +the LAMMPS manual. -------- -updated by Axel Kohlmeyer, 2023-08-05 +updated by Axel Kohlmeyer, 2023-08-12 From 929ca8f0f1f52daf9bb82458f763e31cd30b8b3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 21:07:35 -0400 Subject: [PATCH 0228/1002] small clarification --- doc/src/Howto_cmake.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 8f9bcc0a38..42324cf2f1 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -1,10 +1,10 @@ -Using CMake with LAMMPS tutorial -================================ +Using CMake with LAMMPS +======================= The support for building LAMMPS with CMake is a recent addition to LAMMPS thanks to the efforts of Christoph Junghans (LANL) and Richard Berger (LANL). One of the key strengths of CMake is that it is not -tied to a specific platform or build system and thus it generates the +tied to a specific platform or build system. Instead it generates the files necessary to build and develop for different build systems and on different platforms. Note, that this applies to the build system itself not the LAMMPS code. In other words, without additional porting effort, @@ -32,7 +32,8 @@ program ``cmake`` (or ``cmake3``), a text mode interactive user interface (TUI) program ``ccmake`` (or ``ccmake3``), or a graphical user interface (GUI) program ``cmake-gui``. All of them are portable software available on all supported platforms and can be used -interchangeably. The minimum required CMake version is 3.16. +interchangeably. As of LAMMPS version 2 August 2023, the minimum +required CMake version is 3.16. All details about features and settings for CMake are in the `CMake online documentation `_. We focus From 1991d74623636cbf1b207629a9783b3ae5fdc1ae Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 12 Aug 2023 23:30:37 -0400 Subject: [PATCH 0229/1002] desktop integration for Linux, embedded icons on Windows --- tools/lammps-gui/CMakeLists.txt | 9 +++++++++ .../icons/hicolor/128x128/apps/lammps.png | Bin 0 -> 39487 bytes .../icons/hicolor/16x16/apps/lammps.png | Bin 0 -> 15340 bytes .../icons/hicolor/22x22/apps/lammps.png | Bin 0 -> 15821 bytes .../icons/hicolor/32x32/apps/lammps.png | Bin 0 -> 16813 bytes .../icons/hicolor/48x48/apps/lammps.png | Bin 0 -> 19588 bytes .../icons/hicolor/64x64/apps/lammps.png | Bin 0 -> 22655 bytes tools/lammps-gui/icons/lammps.ico | Bin 0 -> 209266 bytes tools/lammps-gui/icons/lmpfile.ico | Bin 0 -> 190289 bytes tools/lammps-gui/lammps-gui.desktop | 10 ++++++++++ tools/lammps-gui/lmpicons.rc | 2 ++ 11 files changed, 21 insertions(+) create mode 100644 tools/lammps-gui/icons/hicolor/128x128/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/16x16/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/22x22/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/32x32/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/48x48/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/64x64/apps/lammps.png create mode 100644 tools/lammps-gui/icons/lammps.ico create mode 100644 tools/lammps-gui/icons/lmpfile.ico create mode 100644 tools/lammps-gui/lammps-gui.desktop create mode 100644 tools/lammps-gui/lmpicons.rc diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index b7d7211c95..6f1985eeb9 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -57,6 +57,12 @@ if(LAMMPS_GUI_USE_PLUGIN) set(PLUGIN_LOADER_SRC ${LAMMPS_PLUGINLIB_DIR}/liblammpsplugin.c) endif() +# include resource compiler to embed icons into the executable on Windows +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + enable_language(RC) + set(ICON_RC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/lmpicons.rc) +endif() + # we require Qt 5 and at least version 5.12 at that. find_package(Qt5 5.12 REQUIRED COMPONENTS Widgets Charts) @@ -85,6 +91,7 @@ set(PROJECT_SOURCES setvariables.h stdcapture.cpp ${PLUGIN_LOADER_SRC} + ${ICON_RC_FILE} ) qt5_add_resources(PROJECT_SOURCES lammpsgui.qrc) @@ -184,6 +191,8 @@ elseif((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING) WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") install(TARGETS lammps-gui DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-gui.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications/) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons/hicolor DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/) install(CODE [[ file(GET_RUNTIME_DEPENDENCIES LIBRARIES $ diff --git a/tools/lammps-gui/icons/hicolor/128x128/apps/lammps.png b/tools/lammps-gui/icons/hicolor/128x128/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbeb479785b4d9e9d84627579e6cfcff036dee5 GIT binary patch literal 39487 zcmW(+1yqx58-7POLqL!mlSb)MYBU1Up-8v1pma>iQA&3s-2&318$`Ohq`T|i_n)0@ z=RCaIf#-R-ultHSL`_AW5RVEE006=_3Njj~cldu#95mFcvi?OX0D!zdN=vJKG&2JL z)+nDSF@+8oO_z~ot_C~#9%MB#>-Bpu`KNJqvMi|ra=kCy^=J6Wl+k1q@@+NC%RQzO zZC&qmv2`WEcfcp-&l;bjo;)Uy>2l?XXNOAX&idmG^%EnH^vdISH}5A8o6Qfq7? zY7Y90DB1oEDCy_F3M6}4frASr8&{Jg7d+SgsuCJRu+QRi7f@ydO^_v%T2RvD7D39C*LO?t@N4gZ7-M-|*DK zP1VZrG5zEDC3+OPbCp5K))MMCAZ7|0ZvnuQ8FfB^0C4l)IsF5GFWdmIV+;VV69It2 zDYZde6!ilvQzdyB;PJmlW^;ZFY6aIx;k^q0;FJFM1OdsZl&D4Q&u`w!Vz1*-pwTc{ zBW8L4z=YwAjHH(P?Ebx5wZ)V+3*K;jI}yvGi`fRdc3d{ohne`7EGr0}Zc*jPw-r3X zFluXpa$MqB88>N(B*ssD*&p2pg?IG7l>AI<+F4D|x+F(u2VSDoagfqxX~BW1 zvOMk$M;@ys4^jVqeD8DeC7m4S>9x)6p5wXh!`1c$m8re!oS)55Q$!~slM8DxIv5t4K3{R_GSrvAgBykM6~lx^ z$554jFvg3khInxA!Y?)Tp5ZBkYf=%6WwJp8_Y}NpXUg~UJoQVPy`lro48x;XMh@T&1D$jy-W=o-NgxdZs7OdgHqc4+S58>; zKOLc6Ly(06mmd~I4yV@RII#NdEcDn%zYSQHzl7M=Dmz?BTW+LbRXq1d08~I^Ge^a{ zNF&a=kixfqcxo<0k}n|aLF+DGlQkx)AGc3gV8GdUp2Ub}l?&q&D3sm&PzGu*MA+!( zcg%3SXMzq&V%`u!)} zwSfCYF_2V~O}?4rjy;$LL4y94i9o@C|36PHl53{OaXlWaQ<^mCyzdd|`DbMC@GTe! z9#J;guyOxBYLN0bmcduqEW~R`_Zq@-{o9jSv-E|32?JSJfU-d@Cd23~_|+!Esajna zyB_sr%?2DtxmfYJR7s5qbDoTK>pX~mYk&^`pkur?ShzKlu+~(b%cR!`cNM!kXtsr( z6vJQgQmLoUQ~8L48sLDnp5DFD*WZ?%Y$8 zZc$xk%}1C-tJz)M|4_p9{rkp*JG_^o$IdCvcpX3P2%Z$eo5wkp%|#SJ@u&XPQJ4C6 z9dhd}HLMVvADfBs2ENO8v{=CE0#6=!P}XG{BO5>vWu=lBukQ=)EVY$DgJ0$=dYm-# zGXY9_K~M6SjA%@E%6ECufO?OUuvt0ffET2la6}?sp0*K<$&NnjAw}=-^X~S57wFo7 zolxa=={%;Bfvxg-M?TPo{Plbihd8zG1cnF+PA3W5id5Zj^}myQkDF=tpmdR(s`Up5 zQW6#-41K;D^i9U9k9H^qn=ASo)Q7cb9x4TWbqj07w;H5%?x|W4TbnFT8&UiD<9bJl z&>Ao)10V{2=9&E1>3z*!bnmXyUmg^6C4$n{0YyeDo2m@eZ$_Xa3V>Xf=ApkqIE!;kO7ITqa*5_)l_%h>S!*s&2SHbeaX{{I5K7 zS*E$rE8JMBlSUhuq62=m`>c>VvwUmzyXevcGSAGxOPS~Vn$)c^DY^|ddnF1C(Y$U+ z@zWWKw;3;gi2?8;IvK9Nmgt%ktx-m381{LfCWZcS%hv-BTCeLkRO!)xPGLmZn5&2j zF{9N1$lXlHKT?56)cByns5jV1<;DmD3?r49N;a-Nf-#c63Bnd^A^^)euQ0gCTQjI0 zzVXb!ItFItre>F&BcISEfc0`s zJBbugwuT8uYW*~pSTcB!NQ&pg^1b5E;hMEeU$~GzpG-lZK~+36>@x1P6ApEY)ITT0Ijwo;o65-hfp%*eNmqms&r_Xbr(f95mpHFe{t^Ddp%Uyc* z`GKet`gvbI zja#ll_7x_1qwPXMkrrVdkATZPF^s3OnN@cq6ICq-C+I-IS)d>v^!t30GXsC#qJeF* zX3CJFP&O-8q~R@o@o7tZJ~29c^lfgwB+W?Z5g4!`mC(rW%=kT5;}C38LUti?S(<)- z{@FNreC@J~Av77Eh8(|rf>Q5%$!oV#u+wp`{CIw+7wGCG+3tfK0^XS~& z4qBGUg==A?W^b>agzj|7qY!9wuUv;(B63T56#&Jd!BgLZ%soz6;iP?uI*G40vS@T1 zid7$ePP!N0sQ0%1EV@w~DISMXb3XUS?vbEK;|Q z7}nnWBo%;Hez1u_-32kDZ?(PzJ&j7jY_0Q_7-I)`+>%~HUjeKOHp2bR)MToZ9Ex_pZ!hx=C?p#z0$*;J0g9O(XEoM74b>SBgD;0#<{c?>mTl~K~Se) z-7Lmj57+9fTh7kDqJWyL-W)`2Fw){x7*Cr6^`58^9S9QYD5)(?5IZWF8E6oH5%Om4 zrKGz@J;^|RZ0*Pd&eNYTCrJn*)dDkWw9P{D^TKt3BnSpJ$T@ofuxm+X#2f_LDD@en2cGeAXXR}UXP+Gb{s`^ z5qj@yTh`VwY8kHIr(Z`&5pwRVsSKNw747=MBy4IE)gL2TgdYNQwwZxYu&D_FgXJK4 zlzw3-Z_L(!%QY#W_!FiOp-9po!?C9;+a&n16ci;ZBLkMT{rmdqGu|3mo$4Jn8a!fI z-cDFbJ^mbe<{4Qw=o2JlGH8-98h;C+lky6vGNc4zlVk`ma2UrLxRYg_Hwj?2d|^eu z4p;!7+JQk1c#+#=5-BB20V}nNa|qvfhD>{TgGR{?w9d2W$%^5w>W`RFJt0??&eL8I zA2VJ!0RdQ_+Qp)z7+uPq^D_2_U?~?5E}UQ(m8-_iX)==13FjxqCt@vrNz{R>dekan zAg1l`_|9%&7>i$|K9Y8o;RK`qm^PM+Pc7_d!djeqU~3QfB_?yvFWDLCU8wpw2^;V= zhyeqMp3qkcDx$rkvYnB=_=HJwgZGt!ZVr{a#4;M-p49bi=d9-^ovHY>LAUKQ4Tl4K z!);xj03LDZnF;mYlLL~@_4kZyH7vR`pSvnY>N4h}Q(1^HN8SQdol){p;e{Q(ZH>~L zemi#?Ilxba%fMrNP-Oif6W14mNWQd*v51|O%g3e%q|nrFdudBy4~>WG4D842$Jev= zMq)f{Nbm}QHaegfm)(02;Wc0z3`&sb^CjWIs)i!x?Un5>@s3t!cT>nWiG)l8 z1oH}uxNdzJY`=PBPQs2JJ{i%dds4AFNiFjOJj99dr)Mc<(t9@y{`pl8hTgc(fx1P*7$Pke0hi2wC5(NgB7*5GH+-D54yuY&H5|kc$=e zu5x8VQI-1(DDlpJw37GjN|sZ?J+!y)qQ7#^=%jN?LgaDtu-tAsvq-x{=hK?pxxo_o z1#FI)9M*xe**v_`p$~CVcf}RhpP*tkt*hp7xgvZ9S=ADZJ*bw^q{|S zn<=POqSX(wp+7Gx4@R+lK9OlR&t4rskaXH_g)LeliCUsqmM~E5_s$Ip;&ujLjI`cm zRaYXM5&&gqO#;@)DG8xe`ILy)by@zw&0XP8%E&7%JjJ;mINSj>&Nuum$8Q@i_vRL? z|Acfx%6czy1Ik0pCC~0|*1gyxgtCh$wsRJ8mz1!L0C>Sobe-!r-YT5r`hDgzqll-Dmdg6ADkefG;d}%>O zr(G*nh1jVn=zzUH?W{7-d9w(ED25uUY)DL6Je zh#*@`Bc}skUskcHH4n!uQzl6z-(mi9(-mJdL|v5*0J$l%%4qHhkP_b|#Jj zT$^qOnd0$LvDVY0~5<#lc%f(X~ zPoWDom`n7o6-D{w~RyY*g{)y=o8(Z+ew=HOH#3*xAPrLAku zgplH*Uw)yFn*7P^yp55tXh(G*>J3@dBZ}|P;D0x;6Ll0npk3#lyn~So<@qur%5)oY z#{);@Y{8ZOm2UEVX`o}};&qCk+viOZ_hsD3x7+cfq>ArLL9J-xy%{H6BO~DJpc7Us z_|3YiOpPv^c0ab_^Dy+pQA@#XpY>JpM*{EG zvllElJwpcpxyfrk$mB%KFk1QYAl;NW~3r*DGFu(Z@9t&^#?G~1T z`#Y+bq?i{UblA^i2DcS{yz03KpMB0t)+d9v$vCW=s)Pv4T}RjHzH4(?MkfOzjQ&D6 zRp~2M;(!;+&GM0{g-X@`7Bo2}oF7iq0sZyc_Wm#cZDpLCiM)!@xv0^zv*?=s!Q{M1 zx9dag>h{=OE?2#nSAk)Vuv{)&AvAj&ukDqB=DYV%xlHb>xOz+2x-`#Q;P2!KPUg|A zfu3;&zhAv{Mz-C03HlF=*O*#gerEPAP#(JVX8frVqc{a2h2;)@j=uc)_szA>@Vr%v z+E3zy0`nJK!1BT~T^e=E0JU`tk}>C%P%_zzf`N=CcQoV>Q}{c9Hdo*!F9zV8uUw(N zo9BcT&2yQkGoA6~Cd1`g5&$Y@9W;tGs7ia&CM*?G-o&FI&4YZy&gy)E@q~IpN#6kI zynJ=H13&^Ij^?gOdV0E!{P`H3xx`Uv0IgkCF`iUF(6=;=uq=^j^+&s zX1|?PrK^uDK;`S2ZK18-k5f16EoE<;-p&zn&UIAp{6a@isRuBks>OGv`(g7AFA$^% zX=-{P#4O~UIq8{?>sD{aHD(h5x?$&dYS*d=f1|w&EJWUn3+Ag9ZE7P z<3|!_I$e{lQ}m|kG<@xkwe_E`TZ)P+4{L4JnKTpB=Oj!Pg+0xih-+ zxFB`>k)#cV z*&P_LD7_!FG!TqZ$a6n*J783=KkefJDhSKd6K`uEO_C_Y`$PG>WAQl(@w9ia6@?-e z@T_OJyxg$h;S1tCm$oJwuDQ&1+-5KHI_}Nx;c64%3!&_$HePO2oor$Y$+r^)H&j}r zf~mMALt{C`VULw9H%394ozuaMvFYXq^>>ApE=yHg=y`sX;@4vy;t)rWBnPYusvT9W zK#zVjXy9zs%N2id2|-rAIWD&A(`;YB ztaRr<5c;mI$W6XC4eOJ#lG&{|I?QKhU;SMBzYnvKQ{@2CaNHAoPQNGcUM^3!)VueQ ztIw|BVO%Cy-0J&8hr`fdJ^Ai;he=K7B|#(SA1f9%z5!=91MFo;g7cpm0`}~aax#A! z(ICH9Cb}J*uQdTYb(wWcE^bM9M;0ae1iOuasUiT7B&K%{rA!q(BUqGge^-ubO)K?aN z)U|v5a6kXdFA#)KBa7UM-jd?~h5H=Jhk)gLt)Ws@F)hc&$B$;r7QiqWOvM9d6QjL2 zMk;(|7jzxF-ZugMT4Je(3B%|0c!MQr!q8Dgk~NL|PsgDp77zFcs24B~N0hAGM-&uM zgy#rq7MOyudLtNYL7jXQfL;orV(Auo`X9`TQISj;UtCS>FZf+vQ*V`;hJCWWAHmFr zkS!OXqz7TbQS-MB@dRSI%CvccnyQQ+gc_q6SDV2Md`~g?awZGN5OA01JP4W$clRv- z$iVoyL0^TP_s!ik3S*~3*Oi+qA3(du;x6p^CwccT3}nI)sefU0T&eN=Ti5OqBy2Fe zJm2^vfd^P!PjtKN4M>Su0}$T)*{j<`9c{HzGAU0EuDG^Xfne6Bc zN$4jcPqBA~@g3hhT%S5NjX2EyjMX5PNL{?&sCv;@eE$3LOCMS;KJYTSLgK^vZTE-k z)W;uO-+61JQe>jm2{NaSeBVsR4;k)Oaea?Af=yuHFs0Rfy4f*CFpaX@Lw1I1RE7Mw%aks>I)4Z9i|q5z$@&|~m>z3pdN@|H3;9}rN$ z0v3m;MT*a5wzq{=(eJkH+{*`)h=ohfN}QU0@iv|7q$gJ7W9>PYB!^(|nknX_(<=+tM4V$s>+|SiPdNSTrf=OtF4eW; zY;fvGa9IN&^Oyx7?>9-@FK<>uBrm0Nlb%*)_uO=P-cHx10RSv-13G6F@Dd?s-dnBs z@NV`|E95$RhXd8*H`lDx+LmVgwVbr@N@o9u1Y=v4;qRqRjFx*a%1 z*rg~`b+0GBUnupq!IXp3vYE}+z@eg@bXY{>kpuf!1 zHiKAE^Yt-%2_Q&WOCHa;i{e{w8VQOJI|&P)1W$=wp)dLU9;ul0pIoLP_~yI}yboJC zH?Zs>65#pTow|m8LKE`u@S)6osfq~eq z7s_V>GKWekKY$3YWe-)p3X|GpB;HRzd@Dy|OoWRC7z4iP4nMe#-twcQy1<;cL zq%dc+Egv7xZ85647krT9wk=ipcB@PAuz=bFaK2VYph#R1_ZNdtTEddr8Hv}qifcoP z!?RAW3EI2_{)zu`zw_!Hme3V%MeTN2$6^}U8xW*qelpcJW0E>H8AeW>Q}ZM~)JbCa z0?j?|yIX#5#>+!FYQx3En^*R=cx1UVI_{Yjk5|a$zil3ezp`6hKm18uk*CiU{g!|n zw_7M;X67cC;-&}SlaYDCd^yOAn#H8Cfp#V3=S@Z#-YJCTs2+6mW$AO%_BU-};X)xRuzPJvjd+%{|3eK0F^Be!vG7rGZ z9&#S0NjwVWMvhR(bNwZ@tDD1W1ea*2gF6w-!(vf9ZDlAR+b(;3;Ex6&-K!p{0jN+o zrt`e%$E?E-_F9X+dx)>t;*=$4!92#h{%?A_q7=*>DGVzr@0TT5F@01gSaK~(%|XHn_x z$5U1R{q38K;Bw#!wprj&|j4kuLAEFS*Xlsc#UPWPC)3dD8_5Q6N8DD zCGql1(qCqrQmi5s7@iw95FNUpX~gEmihfXMhaLv~8vW#HkkI1|Y(Zt;w3BtQt8a?o zC(v=&=Ph;x+zygvP8Ir5b&_w_+BpfJBl0UBRTHeg&ZEkZk;K{ad&m;Kj$tPm!n{l& zX?7477QOW`>ZOtIEB#MFY3Xt#!k_%py`wEHorGmdzj{Ov!w#7SjK65d$1fM=n>YO< zgI}$ZjfHBE{w(sqLdbRUe3{PR{B^&^nM$prOJmX!SQJ9G^$eXI+%uk|VK^Uj^HoH} zm+qWVLw`N|U9d0#;%V3(&q~{W>l+JiEH)!ovw=Y+-~P-c<=#7fUdi{^lRu`T*=1O2&2@@)Fv@p7&VI>D6-;R;nkZ^0*Kz zH9#6TI*>^hFVP}Z``QoGICVGanG84YGiu4N!E(>w29& znoR^lkeI5yp6B^8+D1`qNd?6HT!Vi{*`~@^MpQrYWXbV~K?;mYHyJ#xq;QQ@HCYIB z88#|;>)1mgGW-;?aP!P->-YV8vz-L?A$s-Kt~0)Q+6nX;4Z#H{FIn*V`m>Yn?4x4H zWeQ&l|EtTdHoHC53n+87-5`Nphh1j86+JSJKgm%b<1Wr<@iJJbU`uQmRja573DBDM zc*!wrmc;vc5oSkpsno}yX1bD+-V^7G6~6{MlXIiDjyLsnpR6bsmP4N_7ncc#;3(>1 z;H}V&%s{<_w|)H!bB2O%)xp^tv!^UzLl7eIVd$TnZ2lraDEGBU5CDb??WFJa-aSC#)mxf3$` zt>&)r-+Mi;W8$zg6JXpmr!s{k_EHJOYM0+un3--aVH}6WCgBCVDz*4~+r2YGY~E20 zf(ugH)sga?J(LXp2sNJ_R2h6w)bbJ7>4PNl$T9sN?;J*NG2pCx2A*h7UN+t#j!@d) zr?t0ws&mGZlxexxvsRBjEvIe}!|f1AgWUGVP2Z>k+MaGvTk%Zs>vWX=_VoI%2qB^y zp~I?XMn^WY2KoMRhC;qsKvE1Hu9JGGQ5CNns|p2L5Mpzw14B?LXyo-V)}bQL}bZI)&b` z8PSmRHH&PY1R#Y4zd!nNdc$&$ebzTY()MUMac(l}089H-{O2QbBbsMR!_VPlQwM66 zDuv0D0%p(?&H>K?s#!b1Hs%C+!!`7>mPHliSR289*|*6l9i<;8PJZ2_w6M+E>lT~j zqjPYS1Q?uKM%04=TQfLhAS(As;4uCg3Sl>)O@2YRt^n0|R1G;SWg~rhb{Pe9T^p*U zE(V+%ZkQ_qfL`JBY^VnF07CwzEi6?1ZspZIY;MTJn-4A*9#Lp*AEu8`o3mFxkDFPh zhR$5GkGrg)=fxKBUdn3ZcvJdoq_dGSg%j%^f@>#OInx=0`N}y^SBH`$yWmeMLO55LAc6<77bsRV zOR1mn<8ogP1AUc59}E|0-Akl3w%dCOtIC@XKfaaIQV+RA=MZE)4?%;Bx^fiFV%~fe ztSXRmU(zE&10N3(wNW;{-L3)S1v^qeop8w*HBddg9_ydmbn_&)S1ziGR*$FB83TX9 z*3sw~FUu07cS3(7&>;ZJ)&NBiBK*i#9j7YR8vuk^-k>3181I>PXVC{kB(aXyMc#W- zY0DXgk+q}O%Xk5uxRDCo{Jm8corpeMVi_zbCXSJmAq~QeYW*6o2+@4{g`n`VGcX2}%hh=vi6DSateF&c%8;pZe1R?=k7G)03B_-bt@0jogR{LJQ zeE=g;^0wvM@en);hS!>FMu9q%1i24%=&a;Q@Xtqa5Km-8nS5D1PMme&=iTMXCIl$* z8=W(Y3ahQO8C*e;OshyQ;A=@)|6+3|LCX>T$obT6AzSrRujV7t4C}{>!wf@v>>AHK zTK2R!Iqw9C^!z1MG!~8Z6&5yt6i#Nj?5V->U}DGA;vOZYqsB&%!r5u-0r=g_=c~9P z2NFay1}rRgw)5$+x98r=XuNV%F5MdV1gS=UcPL z*CGx3CJ*P1L)2eDuWcmzKu}Mb+kzA%1q|IG)jMG<*b6`E?C3K~`H}fGD*>hTOT{Wp z+J&A`VtRkhn7VI1x^}bb35Ppsc>34x{#VC{AaUK)C?PX{-_F;hU?zLZCf=d zo{9FQrP`0t|PdAkhW zvzqvypn~CK;q9p95ybma>r1H}7-C9Tv2((bs1t~d6y6N$F!Q4;PnhpACAqVk+lp z*`QK6a)rqwU+ke!BX{C=#H-Z%N7M(YzTC6YpUyYB4|FW$b{jPQhzy9D4JuL!wmd}4 z+#ZTFe2Q@t%vwq)Wb^J3Y5(uPIvhn^001nBAzP=RF0@D~dTm}t_9WsOsKVtLEwZ#H zgbebUez(7BVnu%Zr(*DvUf-dk7!;vVS)(nJVv*iQ<>jH}F>)nt)Pp^Z+LSfQLtXV5 zQ7fqZURi;sSGqV}>+XF}Yz`SsMP3n1DHB(8>a>b+IM>tj zy{|JcIZ562fz3=DFdoDv3nB}u)nSOzU?WZ(?<=_)(TG`KI5 z?zbW#X$`gpVu%J4=hL0+z$941Xu$gcR{K@n6WfgeSY0PrV5bbay) z4x!w}mWgEKrG&L`-9LET*50X;^zgqp`E4w>BRa>mQWKHF9o8gKS*$yM!y?KvRDibC+oDt)4bF& zSeWw~_(Y^AZv2J(;&7O5NmEW+;o3)+hGW!`O&go_82MBsagK8-frU6CMZF9c4LJO6 z)#1f)j(_AkN10yi6%(9=j;#5us%q0*Zu(n#qlvAOW6 zvu^ZiadI9TC0o*W*G7v-`nHkFlgOmt0xT#kGHbQZdz0H+xKH*glD-KeG!i)9l!lvwtECCKCkE7?~>Rqy<1W? z&^qUC(3vA_FXZ@McgF@0tx?;S)_!a>*u^Db@GDYidG*ixKh|ZJ!x26ML^9sT9Qqu# zqhfx^DSR<8l)<)cFH6c!ti;zY_H!brCocBc2|krTTX$@Za~rpi&ch-*q~&hNqR$4l z3y1&3X6W^O0oa^VPw!*T%Z9s1g`%NgRH|KWLf5)#1j|LSUh)!uzp5oBpBThSeZb$Q z(h0vajS^#+*DV@J_3+bwG_)6bCsHiHa_?A@dJhx4;sp|o8wt7O!;@xZFEGaNOve)+ zW^7KsRnOR=$Qci{c!TprZOmei(jBeblr3M!{J@wP(tW4?7&H+g!XosL#i6kU#wal< zCCTg>=ltaZsdvlQ_iZIt+KSQ7dIH9j+T!?i+s^p`+KkRD}TKE}yUOE@*z}_6H#M;@~ufCkvBxVGh|e(n;;oxYJGqKl$uvI`qyY>W!l-}@6k{cVa<4^eZ|i^n74AQy1YUx$u6 zQGCM>j&E_dpr*<%z?=0?3TOV^a3guP{T}=;rvEup?_rG>uy;=a0WVHFzY>-ca&Vn3 z#8CXhW}bf5DFj$+RaR|{Sja=)yfN^B;A9RWEN3%h#p zJF^bYjM8_HkTVEMf0QYPUj2I=UDVXhzjU`rZ1U*gX{URH1P+?Lzc(f?5?uup?~Rv3wR71AF;6SP37ca@!`w-@QtPsZ^tnA&!kIh-C7%s* zgP7kXU@Z^}A^}Bl_xTcdy8?VIWp}$Wf$q-2BY( z;uApFRe6-mA6TV~MYH^Ks;*Y#f`ZIij(n9$oTj57PfIy+Od8>3mDG171+-Zo%z97AaViq``&4O3z>+?kk+v9tjeduwB8gXvSMA+%@VGN$eh2fL>rA zw#=!x1pjxTXaUk7xBO`?4zZzeE@w)XBErywPxc) zzLSKWn?|Z}==M^xg-hbL>OTTSNF7^K@k@&Srl(8dMiu}4)6TeF5w+KtBvD_vh{*fQ zwrYFO;RD1Q+a2n;a&)qB52CnZp~D%2F}GatEN-u<7c~oo-l#DejS=_Ks(dq|=X(3B z1);oecU4oA^c)8IVT_8^aNfqec|?t+1x$5sJ>y&nQ;!57^=s|Lf=y34!w3eB5>Z$G zynGKh?)|d(RXpE=5!vnTJ`3Oqad z6={Nsb&b*}f}Vm7vsmShLHoaHgkio2 z9tVfa7!|7`$AYJ>R&iW<$mL`4;v8a0bO(#qi3l4X*H2hL%359iWW zW6>PnpN9%+zI&oG&+KM5eQ*8dDlm?s*3vKM)vaG=gb+jKz@^v%hA1h$u|F-U5b3G% zehIZxjiLpP)Xz7Dw*Bnei|s3t?)vPmhD7Tf|6cngzE%|Qzj|%IDWjoF<95vew(8(O zaX-^NK`nAPR5jzs;ZekQ52?E_LM%lcoGlPPV)Bhxv+-rQdrG8f$(I*DM(4u#RF^8x!tlJP& zq{BR;WrLQfvF?>Lt6a?KH@cyEwd(%tiMs8*6AEAyRdb4L>;r%r2auq?Z{!_Rvu6W4 z)UKSP-`cK#e^Je`*9mb(0*d2M`N+K3ONXS7v$GaaA*$Y{HwTSB4yUt}#37+ae?$Ui z-jid1F}99D8_eJpIq8MZnof7_U-3|pHh%-=>F;1x1HL?>C+n}OwEX|wR5)vn-VS0K zw_!B~{L=%1ifrtB0xw@xuhgiYGX;dLM%2tucGsfWXjT3ekV&CvUrb!?ue<1n&iSD# z35m855jZonCM53Hd(Oe&LZgpO^|g2OT+ChRg!J6)RS0rwL-jvNBkZ9iQpDh#qRgUa zRiC`KO1804w|hZR!A`f}TE971Ft!XdS%cSZW5x|{_S#0?S`X8eX&H|(=L*EuCnZi@ z0U*jQZ1ZQz%CUa6!97+a=rA<}Ci+&bo5QK_1)gAf6pa&P2nGVxFhCzT1~Fr#wFO+M zjh!m}qNuJP>;6iqt=^B)v(+gV-Zb2LtaE8?hGAv4no`0mBDn%JbJ;CpJ1&gcu}hkJ zE$F1O(>Z9a^@VBM+?&?*f8l@-+#XwrcmRwa?jCjQ!@rCgd+-{D}u-3cZka(5hfS;dyXEX7o@K;UraHxiyRV+31 ztqIDiO4t}L6o}VCcR#U8nk`6P>=AuoOh&JE0#c3Wnp`Dsayws zkH*Fs$>J7#|4SoA`CJsmf7%DP>z1Y6Xl;uD#2wm5^d{k8fT%7)Ix0H%jbf3vw}NOf z?mK!=#7 zS+fe`WtS!@Gq_cgCW{fJRX0$L8gL-+%E0W4bLcwPonrPCE}0K67|{1$OdEH_g9UoE z+Uvex7rj|@6T4WGkgG*<*X^(i2<1}|Hk~M@P$H)Iw5$U(1 z8JGXP#l!hx|I@u!P15N>fr8>g$tZazn9UoFYv0y|hvJh?)?30oP&< zqA!gjJP_{+(U`xRe9Qxd_a}^2nTZ5JtH(=ERCR3%4mBI3HA;n9pmG_)kqj;= zcgLuFzo-ue;D433Ie5DpbBLFn(wAYbchU7pX595D2;`kq#kTEJvh-uutu{6ihmbcS>uMmhtTKWE1C) zUtG^t+zz8=OWj=VgQJqY7JkgTZmW}njMNJ1tTpVB+QwE}#E|59RMSi_9id;(c zHPZKMuAH;y{+5Uuy|(ANLk?sB)q>L|{`NS@1^Xu*%EbtEvz_L+P2y*b3&AdU_Z7F- z6G6o5eF3Oh!UXIUZN-V+aQoXzYKSy=7D!QPVCuxCaj|L4vzG1c%`60fM^)mtesO?h>5A-7UBWcL?rI za5+u#zTbD&{dMo1WHLKzdUkbnSM8^&c2#u-Thb2H#yvp+*9#0A4os+D-RB61bVF^& zJBalj>~G;$I^y+7KuOl*7Zrdor^naHIPM|2lLRoSk#w}1>m-f>)`ChJ7sJy}rsUBy zn-aBx5*|1wD-LGZw{N#5B)u!B#za~ekdQ96;!eU1*w-3QTN0YWC@~Pq%7P6++%S;t z*W6Mcd<(tgv(SohXg#Q8I-8iAd9 zbCBly^|>N#zZtTn{@Nj*-d9M9rpu(wO#&(~W_3<~c|d`~lsSEK1J<>i=medXY1+XaF$KwR4|`7Zo&jF)>r!B6riN}4P668 zTOFh|xp8`ZTELzMM08PID9AZec8~-pNBN@>txsxzuK^-g#kR35^3MUixALdkyg$6K z9_RK+?r&fh8b+WNz%Ywg=$TdrgIx&4Ifv6Po8ZmcCXyq!cINUCDL^*eE0n7Z_2|Lx z$NjuWs{A!4zVx-kS@o~YmZ1e_W1%H9Y073;ZGq6CnR!BMYKFAEu9UP@`oWPre(^jS zVYvg9xAd~f7(HQCIv`;heZHX(;Uyk4Dt-_ivC1tr%6BM zF64=j4>a@(hZ%;ZJ zGs=Es~|@;PI$5V8>`7~)(i-R+KY~qu?SABQ$v&m zK;#=K8r}}hBXFe)H*KzFq3Q{lCitc)ACAIrG2$OKXz&x}bQGiom&l8}BEPjo!<s#$GR(h4^lyX|;d>V3I(m1UG9a4S#~M*7{V<6?XM zr$XpH*DlhwoiaT=kQ+!r@#cLz?9ji9dwFn6wa22|dW}f3RUpHbFu9+{ojwd~EJVl&MkC-S9j~_k`yE{g6)(9i^Kv~A<7Ku8) zKlb%W&$nv>zbxN^&U)X0YS*_R#kGt@%y|?}fpRJsW$GEgT-CICN=Ete4*vq_qs@g` zhrX+^c1p|XVgo4|y_F~+^nzM%vSN2MZGKCMjA)DIm@B_)n~ zXn+A;;g#=wY;|0&=i!KP=#rks2Dl`4(=Dzm*pL{&E)}+|+5S&YACH&Qr|VBQ+lGXq zWx*n#zRs;YpWb1UrP&0g)%?r!_@R(RGP;20jhoizP=hC~^gRz^>o3>Yj!^Nf_?$^g_)iMDS;0I(K5p_+ZQYEi(`l51QF+i zs-@cE(!&w!bhjaf6GdsdIG`i|HyxnlpkP zPWP?im>a&WOfh-x$Jw>jl+>-%qY$8&ARj0}=t?OsH`Rdj?fZ`~Z_gB6V*7ln8*pv-cA~E=6yhhK6N> z8bJk6m85%~=SmfBo#omO*h=zP3*^$Lo0J49HqV_s%XYngPRpmuD>&>*IeoCy=!m>d zcz^~sq<44x-pmRogHzvH`4E7#5O1UFIUBDyWfWmd35L_ecrba`Fe)Od?(^puLFLb$ zz(E`FndYx~fObkA${=yV4^-oiqS5p8Jed9IyWF@^Eu(O#lM}hlhh;mdR?dTPq*2$_ zq4ASgg@wyFf*tcVS?9eL#)&77=*`w<+#EqOv|X9%u#b11(3!R($lkLj|1f4-`)^Yx>io_fU+muM9cncE?SF3)Kx1L z#b;uezt&qL0_7D;K=>7BL9l=m)KjOyQQ#|)HX4EsxNM+-_g*Y2ObVyIZSI#eh!fMOw!Vx2M|;&f5&~Qkz5d9PdQ%r z{Cry2?mV}z*D~4z?cDMc+0MtQ(jpE~l-hekY>X(wB&AlOTh}wA?ZFlfq|*RKAt+-( z3s%Ihnqwjo6NxANHD^FV$gj!Vy_~+-E&%$@Oh{>{<+}y=q(%`Q`?B3Fr}A?rAM&Yk zhr-dx^TB=W!Z7addJNG7gv#3-b+gQm9Zgm18lNpYX~CLl_&E%Yp9~8`%Klu7>~`oW zGUBvna5%TIM4^!r=)-)BeTCNl#fc(#7f;jT=`)0dA7b9_Y z-|cW~2-UTb!V7WUdLvvL+$*(@rCVjL*Vd(M}W#~Ow?AY9HYPL=6E4ftBSw7Zo-r}F(nrfjUR79ETOR#kdIECtRT`BzeEprcFdX#iRc9UV$` z82YIAKtZ}HhI|Svamqr1dtx$N5>Q0x4r%W#0~rI@hH`ERl`b%Db2v1~ye9FT+&;Jb zPn|gZDVVCFr#&r!Uf+0N210AB=aJ|~#sCbAg;rO0bBN)xRuqR2hafBEpyilE^$;*` z*#7m-QNI1K1(~h1^sHE=+MVq)9u`cZraBEe#BTOllDuRT;kv%UNnHpcF3*k_Xy_z{Flf>Dl<>$6C*ZH=?%(8c#rW8k1L8iV6; z23RNYFqqjN_lD@iulFh+q+_62qQFdG_ElW5ISA%ElO4u8apPSy%{->sqZR(C^Q_0v ze&2(Plk25!oK|6*6>wp}^o+)#<1{TcJ8Vh}d|&RkWb_448MuM71RS8CU|bWbp_kwG zEdY)NnI&w9+;+=odVk=2)A@>e&8w#E&QyRcfN~8D+U+;!-G{m`lgN+@s!6OxBHSw= zTCyzpa(BPj6D?jhXVsFhj1UvCOjAa%SPKo$ZD<=OlyW7cMr+R5*t+T=X|o|upu7Df zy`D)IMT3pU$2N3|2oo|KY;aWZyg>Q1c{LU3W3wUIpm&$DGhO0rub1!RsoR!Otg;0Z zgy#)pQOlCtZYXj-%1pkb+XG=Kpn^@!qV-*A>o1@y%bug^S0KfJPi^Z#vd;8Q)z#%R zZSCro&zE(fT_8CvfLnbwhefmO=W;r)lLT-dhY!nDe*t;F?y=Ft+XS}Eb9#jZg=%f( zKhfy0=NpyEN(a6|<#A|+yT8$b4S-1J>HhZSoMUbefXSK~@;l}p2Ayepc(^x}@M21M zP>}9#0w4+yNO*gEFJ0|A&yp-hH5T_~?|ZDQD{BT&zYE2gJelc|EmC%W0W&WwgT&H1$$-LtAObYEOg{Ti3xFIU0V4gp#r0r_OG{S1{=YKUr zkeb{hOKM&~^u-683-@>sp`UL_uQo)>Jkd#S?J2F+d@FDK zkYv@NttOMuPd#gC&M-C}T}^-sWkE}&a6umZYqsnlm|$cCdG>Hu86#n;zM1ynI>t%4 z__wx8s+|}4LwHB?@zDicuKA?9u{B2+nF)~k9c~@1*xxcGes7=2ulPB-#sI>v@mlXs z@r`8*Hp}c{prMwl%g{F5Ak+7>@hP~P^|^~JVgo{V*nqwKJ3pY}KUq2F<33n@kp~u{ zj7y?UV`ray3x}!mAz`t^#yM`XMw?3!VhYVK=t0EI#rEbqUt1sCvRC*@J%gf5M3)N; zVO|98e7l~WPm{jp@0aJb%M`pI>WrvmpO&^GR=r|jJbCi!Yed`Ch$MsZw>WnsFIChD zyW1x1ccwK~Nm0hsJavEWdkW+ZhUnBfn6jQqA1;!frm?=XRJz(ZoDD7%`H0r3I|x=9 zqEu-&h6LF-i|TqWWM85lj-9ZqRnj4?*$vlnpI-V)LI^#Lh z0LveYPxS4_C=%_(2f!g4ooCp>8Sj4>3f7>TQEWE!m%!a4)4-z&$(Q^^*feEzvDC1M zPa;gQ$%6~=i#s?4Z@FI1_ip%k)sqOc>>Ss=fv9GwGeV|(V6ObLpVTh}ug)a=f>`hm z4JruWuDn@Ba)KIW-{VObI^KWZV!2wJBkdOT<@XSpJt%}$XS4AghPhs3ZX&BgB1;@K zhhg_{KM&WC8J0r!h%??S8mt6Cg2`5!Wa+}0j7`A+Q`r=1COL_pc{V*Ob)vfz#m^uq zPBKd7#=W2m#orgZVu~OL_8b^h9Neioi85Ijnd;IlD2V{IKC?MX%`&4hPF6j+kDv1W zO<;R-KxO&PMX;dLUQg=qa!&l+Evveigi+4{r>eKI#u9g!4iOF!qdOsq)GzwNVjs%V z{DONSw)0zfLPR4#e_)J5%t4?Y7PApi3iL0e#ZpnYUHPgxW;_s(AfRDE7LfEqaRcMV zh2=1UFokho%;caL9Y#EL!z>f;o)2QcHk(<$`#EFhgX~9}3DI@KM2ntw=9;{ZbgM*kOrb6p zkGgjt{A)o$biu49I$B7@O}F1{?)L+f=RTZ|+PG`bAQ_yWF;ZjvXa^pyMy1&f(jSiR z)K_f@jGa@%;I(z$ThlV2e5d$DBHSQbC?9zhP5w=DCUWH`r- z9;xSBhmOYV25SV_pf{iLoD%v%`M=4-O{!j>GJ!siPOq;Fk_lyxs_zhg7pE6vy^!6C z26};PW@bXgY~h4mq1)7xijzfXCSGcq_`WCblBVbgK~+@Xf&;=*x<11D%_y!=W~8C^ z(H2bu?L0?bsuUu~xd*beqg;5Ncz(v(CfbH4^Pkv2A)kMG@0b8tl2?M{(=f~;SFMfD z2c(Mvz7q8|hq~Szyc+6fUDd&&O2V-N2efbQpTi9TzY(vhS*>EI+wPUZPEBPH*pZ^= zbC8xNefvTH3)Q?!d_SbopmD$@F+&jN!v?>^u@`xn>|P#C-$AdZT7>wkR2i& z6VN-0rsnH19%y%k#@H-AlNyy|o$*0M`V{l-Oc2EU#S;i>CG@4$u6*cqh#A4|ud|>Q zfZ346p~<5bj4Xz6|vzZk&H}?~KXpaj_+M8s*P@9bWFnO0>*z z7Oi%6cjkHMQ4@2h-|-g|x4b;xW(hur-S+^V7~*{GL~wvYeZ7s& zyt~$V8|}8NYtuT~Wc)S1?enu}1I)QqfIWdQTSQ?dFFzYsi}N;i=uNPDZQD?-qQ#Jc z0F3XsMnjl~lWvQ|zTRkY!@(!37?MvNnx7w%`N$CN*j~#6pLSW(3l_bcoOY6E|8S|} zR}^#TTXkoM*JnL?#T=7sLrV{gw|E&$zI^5dvOs$O%+>Dr6!JQl)!khz_7Kg4W}*Gy zzq_wlhOj~fLNkCM^FCT~K7xm{plNDTtVW+CfE~X{IWfRj+f}d2fU;*4>H!i!`m5Ky z-5o22QNun1HOhmo!3j%B3jW#fRx_v9{&2*|X@BCJoU*YJp;8Mf8~23%SX|Ee-YD-@ zOcb27L8u~L@@uSlRT4{5aoHIetGdS*(v+6|N@^GLeb#9B^1uY|k8sN12je_)@mo|b z=u)R1OC)>tkzmQD{YL*L>t$H(5{XMZL2FmkxWF=!Xvi9}Qv5p5ejMl9<c$Uf(!%l++^L zKEy!IwtaxO-Hn8wEvRDF;Rn93B~VdTH%B`&X)3di%L0pbQKCH;_858@r)32SwW=tc zUdz5JP9VEe-58|U*F$A@P?Bt8YHvM6sk1zlu`BDOx) zk-2;siCHM$^~is^reN>{ej#}wf9glIlLpOz{ggcxVP zWl@rVK+w3*6D}aw30&iDX6G>|&UjmRg~i|1jtHe4)&6Jr`Bd??T1)VvdRXXAC+@f! zxF!$A(L|m{RbEeF<{$NK0^Wm*NtbcOQOJ_==~fMKExr>e@H?D^QjN*V7})5e1FZrv zIhS$!8BDVZN>(ih_B=ML$t8&e9k=-J8tY4xGa$^hTi%u1PMaEMA~_X}zycno{TvJ) zRpbiziakesS_Ide=yM7=M*e#nXA~e$p98UOMe*%-D4+_|XIs z;}($7LuxJz12&fzj=mZyC}R#1qO45{7^s3sl)*?XrHC&WieC;?>E+ zOcxuQg(Dp(x{Gxe7?gZZ8f3o~y{s^s<#6=WYEPT)p2gy6%2i++_!tHs60s$Y=GSU~ z%mSLGPu?cW20@91`-u%3yK_^W%H)O^DY-L3Qln)f0#&3Yrur&SvhKTMJ)|HR=u3LI z&**RQD-FoFn8;mYUEH$N10PHhPUsKG-iU|r7QHHEe_Va&q4)2lnFKhBus%{Mm{)@ z!61RKI2Ok=*}t(!myn4*hG&fzNuG{ghP8mXomXxLB&dlz*K!hwv+jUE5<*>V4qXG6 z^bmqVN8!1P)^FwUL_t)sRR$L)d)!%j_wTraRze9UH~)m% zu|?C5Y7RDmg(i*_;yij*(Tb5=l2iJ_NpK=I4J39(JSwA|(300km~1^38=mHh*W-X{ zQzB`ZYS(S^$#NK_)>kYDPNq!}#X#u;-=DmICWVR1P@qNIV$KdBa66$(_#+Lf`S z8+C^3fUd{Y<~;%D@neNy?Ym)I;qAe0VE--cN)UzgZ}Y14et(7QuUO^6m^G7Ms3jBPW}0;+rdnL_=EYO@N&g@dHJeIthhRu%G;XX=+;vAXkjV(t zG6h>+O8W1?yq|}RMdp2(*SjY_m8V{bu&O|y)N$Y;aIy)%2YnJvPOZW|rT zNx_^__5|oNqm;?U&D%JnmJ1#|MR{%U38Z0Hl7%WZ3=k7J3$|X5PG(geN$7Tvm$$c$ z?5d=)rSO)|&lx;DOs>N*3;#0N7X^hJR+KlamXC7g7Y0;f2Xl_AH`4*^K1b(TkD3EL z$ZGj#0WnOS>L@z4&DY^H7gy56T3H?HUkdNw8$&5nQVWbTlfpW$mHf5UCj_Jft`>rR zC~HG&h4g~#V+44|ym$JvnDT)3Y%-e<@hLMvK0U9I-zSLHNf$0eQEf}5!3$4s*HN#MwcsNP_8bfSOJ?G_D>vLK*Cj3kf=)RcYBG7;?*2UWMkf z96i-A4F|r=m}m~hg`f?>UI+a8sI9IfS;drnk3-42l^>%LHt!R_@X+)!q!`+?)la$f zj=3L?{lSaLUWEu1wC93gO|fv0Ff{8(9GnCvH_dF5hQP6wZ&xr{eqqFlhz}kGSMU%; zeYrj8D+;5K(7cQ49#x2)nupAOVjbqpfioJX(ww4#c}*8=Qq~J5GDyTLj+G!jg`>;4 zuK8VI1Tsd}26h_lPWU{x#7b6Kxs)YN3BG^Jd1C&x|x(89#DE(Pf)-JD>{HT1gL zqV1gNSm|JzMVT3p<FKG5(zt1ihZH>$Q->4Np!+`k~Cs=IYV$wEU2D{!<}BedJXD zDLj;1&nhO^6iu(<>MAvDwb!QQcM}E4Czy08Mx#I#G-wC1Aow4a5ha-E1VqBQ)8;ee zmco%m=*UKa;QI2^t|pCI+aKT@Fl~gAco7zDbZqWeLS}mp>x4=XKF~vRCcYdJjaF$x z9FaqY)WrwKS$4lb8Aa7aRSioFrYK##ij!c-`g(V;#3S?&0y;0Elunr6Z^HDg8g+aI zlYvNSR2qH=#`^v-+ui7;iqf={bL z>oVkv^Mn5o>P@n=M2ZP4`y^^+C_G<7J>xmo#$=Zs{J^rAObA8}#1yU5IF4i=O#GY% zT`+wUYGBGkk7!OjH_jkX+yHDm^K@|J``C|DccYt$@i;(i2)EkDMsK)`FR|R65q~H2 z6LX{ukBP99r~vAZBPQ5OXx`R}JC*E!LP6ee`gM)Git$DB(jaf<)EBa~Igu z?-SaTg>p({AimpvdJ$00?OzlG*F&T9bJq#n-$NwV-?Q(Axyx>ZpN9nU8 zs%$T6A|LUha9UW>>u{}$$P?w1yvxZhVs}T9iJZwgW%BW<2hU;O_`)?W-a9gHAO@Xa zO9}$|TzQu?Tof++E-#FcOgeSF6DhL-kuE#ktv(-QQMN@3$vsT87>nOC>apX@z5ZtK z1?OUXKjCHO;zelh;`NCHYwqorUb}Z=P-ia?c5t?5@2Fg`K_Ipe6HRGTX=z#zJn%3D z;2|0i&>#q46c3aLLi}H2NC+qpPVtAl$KK@Wo2YxW@Kdr ze$ULx%*z7& zUt{e5>)auL_2czy_+NkfpYccFJYHY_&i7^hF-9WBvd9dg%lK))R0}P!MDwNOTA&bcmN85a94Y zz(D+c{bL3AKO_`13@jWx0wNM{Kpooam4bqVhJt~Ch6cX%2EGSDqr+glV-bPHR5FAk zbHHN#8uJ65{6ke2w(`Uo1)GthKLX-g99%qn%J)>%G_>p-oLt;IyrN>_5|UEVGAgQS z>Kd9_+Qy$vOwG(KES;QPzPP%%djtdq1%C?(4U3J7Pe@EkPD#zl&C4$+EGh<9*VNY4 zH#9ai|LpGR?du;H9GaY(o|&DSUszn<*xcIQ+1=YeIKQ~O`g47Adw2iJ*DIg@ef{I? z|G^hJz!xMmG!!)4D_;_P~Az5>K ze(1H&T+9WKHh11uuACD_7oVL|zG$HVG{B&KRyeKd%x|7#qM!4M+2*TG|Eebo6YBf~ z4*1Xfx&P+Zt(`nMmDn@7d!0YaC3jW({Y?bxo6>LG<@x?S%|0_C|CwL$Kl5wtC%JYr z_r{;}{8l-s^;{BLJr5R{`M!%iL-_W+>i^FF2II2K4P4PM=Ie&YGW(Naf`_~Jx}mHR9sC5laS zNq65B{(=hhhcG~Iy0XrqajqC{(50-l>W%aYRq=f1QattVH`7b?T4dC}(Iikzmkjb^ zg4MCHPqM4}iADVWs)QC;5s(OlB(vQwV$|)iUgN$GV$2d|?DD0YbQWKGoN^TfK z1dTIB>}gDDnx;&pDL#Tc0%8mh2sy+l^|~JTt|#aC+>^S!<@;8uf8c=LOzW|>nh-*= z_zPIk&OT8@U|X8(0OX`?txhtH#g%sKWC`_0mv_r^(Uu4CuhcgZXE_oN*k6gI63~@> zkZ@LLbxP#Ms?pN3n9Pf%0_~D+Y5aWBFXU?2@)>)ots7f4Ia^bytpB7)_M3W-W{$B8 zPXZJbTvg@*?bd}N?NSu@!Bu1V1!OUy>Yg^)Pg3K`%(#iRGK~N9Ygt)Gg0d-+;D@cH zoArqcg4U)&t4G{dS%Jve%tMOMPM+mA;$Cds(~j4V(F<$!iA@V5?F0udv!(oXk@i^j zpkiA>+#y2z-kJ`{2(;yUmGU~6C{|gG6;YPlBc6)1g zu1rBQA;-2Zcnklbj9auTXjMrFrJz+0nFt2S^Q5}Jf-EKiP5KfuuK8;4H0@*GQ02H%T|1dRz_fzQkD z)P!1vON@{rWwtZf#}rgLb2dM=R6|ON_<0nM(XE5m4^-1jexk-c)mAO$#ctcFlvFPf zN@E#Ye)XfBE(@G@&{W6wm&U!T>@F&C(x-4pbOiyu>`qam^7e|U@}p=(mUlTc-=cgF zm&b1ZB*3N$_8bmya=y6cN6i;8$lS2*D(-IVt0lZ{?pWo~AM1BPSpFdi`T}lFr8r|{CPWM-=yB^N_eafFYj4-w z%a#huZ+isk0Ga)rpD)EM!gRXB&HvG}B30#Ms57cQcxYXOJ69 zpsp{2m%nNgu4qf6t1n30vO4_Q^*BFj)uiqZ?-F%_Dy<)jbTREHgap)A)v}6-P2@5q zeFN}2%97&)V`^{hMeTn4z@{jdORQ3G&!^1*`LD<~@Db93yBzeK8eHY0gzkf5(w+IS zv%3l@`kLnf(~flOGl*d`x(2{ar2pc?P*FUqB?kVg3K7PE68qEm6L;y7w}?Ke8h9tJ zaP>A$Bm83}L_u8a=!8a-;LJ7lB|ir}xuaF$+Sj4t!GWzj6|51kR96nONeXr-kHF!+ z0Qqm5@m(v)<7XUz5^n98wcPnMp?PZp>aE>E}9= z=cT08?e^=*HSZS?)Z{g0)ux9B7!3Zc7QU^O%~A=QJySb;ieg!9F}Gi@x~=K#@&{XD zQ&BY{cIJMSfVF%2ryl#p+;8{lLQ3+il#gu9#pG}i_)=Y|pVf^V9R`ax>l!;!GN~`) z0C7$o+UcFyjs_8K5r*BqfDDzM|A@aXK>Zr5i}xAwSr|FA)R2X3YOzoRAh*&Ix~*7d zQK$WVWj%vZhgj|QjZ9YmZtZ)`O$V=jF5YBDJ=K_i#ni6_32Mpd>5i7p^^Mc-%|h8; zDP{H@^pp$|gLnpbD!w_>^35o{u02%?BlYct3WYz5!oonhE8U4GR>!P^uoCvpva2YcILVdI>&05&97}EXkOX+d&gSy$JTQ9}%!e4`!d5DiP6WpnxxvX!1G z%|Th8@m*`k5^qECY)gkwPgRh_?%R^-B<27sHr%t9SAL~xKIEUkb% zdnROQ?pL+4iWorP6<612C8RAMQX9b}>K2Q$+|wo_PLa)cT52Jro1|0Oq5?zY7>@4m z^Ml8B{tQdv0gClo@p=y5Yj3ho;*HZZ{;lRjQJGTj-y3Z+yCPpdM5&6Hjf@zrg1}B6 z0S5`zSV#%mGo1?FrlH@N&)E&$IM>4D57LTJm zy89QLT1aoHeF{2oM=nblInyhrDgHd99DGR6IT=?7Rw9E^pn!YoZrFm@YE}ujt$*y=4foGy-BrnfXp?;fRB3%ma zd}!EOnrVF52|^RfaCfdxdMjT>@fqX@zol{D4vUGd0D+(yzTIJFMaW@-!^bdIC?EQk zLmZ?QzBj3fYz-$fRNbx~fi^=qbD#G)v0}P-V~?I8qs(~BA&F&lqyXug8pWscFfkPN zqSBsN;Xw{oon?cuQLN7=0v?F(tDCD_+{sCyzDts|6HOGID*e-~*Gpcg5QOoU%(NCM zAc@sS6|quX>N|PO?Wz$q9NshhYB0g|iB&zDjK-;rqA7|d>61&sTj)l8|V2vgHV z1RjqjB;*x-A!;4jmZs=Sok0u$u-+{bDd`adESX0~Usi0U_iOhsxM#3Hv@2Uy6z@4f z53_QS7t*+-zwcG&xQ1d9O)Hvm!@5g3YPbJUYK}g-kq6eVO>A5SI&ckUT$H?}FRk~7 z?NsXF&rdXFmCZHpwxU7A@I2UOQ@P6WYVU9ceHMvA%QAOm3p!&Yin0+Wl=`PpN?#Ifxi?UMvYIC}x5+uY-oFHG=+V~(hH8_7J zm;mGB8x~Kg?^yT>M0P{v*rq?R8{5M;@su5X5zADx<*q%8wvP(4^5u!T)Wb99G_D%A zJ^6@6sA$pcL3_02g%}D@bkqabgk0w5-z1@lH^6HK^uSWpA=!ZbMBj;>qspZi$0v7`515~Pzn}k4q!UOp?@i5rrDwJko76T|ySN(z zyIa>4an6=}(*Rbyfar)cbX<771+g?|uprd!a-~19R7WMGn0Q3v(gONfnoF?85)2L2XL2P@o45JfoIa|G7zBT zf6-k07h`+a)|P9;0=J$aLjm<1YK{30r2fYkpwe;>9eiL~SljyYzTPu~Gs8Bf51`ZH zia&@D8IM0u)h@3_auM0sx^>Fe|`6lO_ZIRRov*p{EwNpN> z>6tjf#mFgkDIF@}pNYG&Ep>7iVqe~r0*E9agKajh9B)9m=1CNq|M`XnaD93-UtOQ8 zM5*V^>L(Og+ejDZkRy2o9)aT7dzY0-yI|PQ&o?46WLXMLl8LO1LK$CF^40lkN^p)& zn)%Qc7i?YX?P-hDKt{RK8`A5vL#!|&cEH6qv8_WnK6qUnn@U1|{4oVC3kPsn)|rqa zz&&UVy}Z~~;eirHj-FE+bxo~~6MZ^VJo_TSo_G`65#=ae^cJe>X~3nwtczMIYt9gR zyEz2!2ZB*elrFVZccWk#`t~j{%g(C;jdohx!l`7HAwS*cbHyFRfz^S-jQu#$mzlB) zp6vV)J54W@mimZZR|r>qu0D@v*yeFW%ZuCQ&12SLS+_L^gahw`_Q*47#vd4Kx>8zA zd~T0HHj8fZ3J}Xsw)#4F1XQk+C_WsKJtj4dQ8=6XFCfs>M&Wg|@>H(W@r)`&uMT(D zs8b?-t>e$qa$b+=2HwUfwoAm@yI*N36VC2t{dC-sLHUoL5OULo>3NSyUqDLwWG(+p zAt(Kca~1VCHBILS7sj6oEN31dc#^T!YFVprNsU<6MxKgkM`TX2OvpER225kK+?Inp zd(QXHh(%yP2)!|6AtK|Q0V(YL45OXj1Rw-p=|$4Z!35RRmAap>?(j5;>MZlVs?(He z>whF&=3VCf7xP?(II;R9PTLB4aeGHpB?F9oRoB$;t&WV+FM2l92kf`#NW`n{Dui&*|cq`;kOk{`JvgBvy-#j>41H~R@~5NBJpZTnwzDH|Fa~$icib& zaw6*GFcy{NvyXuGDl9Qqh`$H5P2IELTVcG117x!lna0QCfGR^+23Msj%&)bUt`b^51xR{F$ zqbt5~nr+8-26NH;{7b{g%B*S1qJE#yGK@|}*LuDazo+uA77=ewmdkzt2c`HyHC42B zZJ77@Z!h*^ZQMnfsWj+#-l21=Tte)t9`qjfFWP3xufR=~%8|tW!0T^DZZAgA1yzD|P5&O5Pnb&-?V(*E;Hey(&r_)00tZ*ZRDOu#3p& zWj)&vW7lGre1@xjx{~(#*72Iw73+T_`#nF9+>({t~EQV)w0Yo_`OV8u> z2{g#uX@=aEnpiyHcR^-dKKT$RYAz@?pMt`fJF)Ma%}2*qmQR}bD|(to`vb~db841q zj;T>;y-SkXZ?jz8pgHTeksR73_HPkSD;|j)HcKj4*Ha0Ym%bUT{!vl7MYl{`HO=zn zcSRb&F#P^ZU}6fIsKM;B3UC3Tv0`=^R6og&Y&;fU(AUVgqHe?IY0hkPMV2F z8Lo+C?7^Kf>&VOvdljzBt13Eh18Z~vik8^48p>3g3p-!Fym>RN7A21`0O^E1NhyD;V56%1+aEgtX|EkF= zuCejf)eVDLaQQz?aY?g*YhtB42a7*C8R*uC;~B|eYOQD`xEs+0eD{c+Y=7&#vs?(@ zE_*kBEN6YgYs0$&I6&fhEuj>E!lRgIu95e_+gf^t&xp~F8n}p}f77(G7&Z=5N@5vV zk+88%Q3|`k<-i=K$nsujFDP_LQ*1WIG6~%m0|2A?BoP+rfQKaCi$g~3^ER)NR}x@# zzOPkqEW=XLH3`B}5=NEIi!daL_ryIS*_ff{(^($8TPD|%GW8O{YQp9AZMh*mRMlG)d zOJ@_S`f?eK)9KHohRT7c0{dQo?lKu0X58|x@1xE~13{rYh0uv(&hBUc&=4Ba6|>(l zT~saIWpLD`hWspof-D)Nzs8Yuu%VNrCC0Oq1xS2VKbDiVic~+gvB4ZkxkpuSGEj@m zBsgeZN?apPC0y>8G(Ok%bbD-R`C_JzB;h8M;Ub7LOK~35nK2W)$ko^VD7ji>-T}RO zg3jlRbvB_+ztGyN!T&Z=u-n ztJ@?aSnFh+JTO=R6eu>L{%cQB0ZQ64G&}dEs0Xm8qfO>v1v zy-!flCAeLN>!N6SFA3WVZR_VI$-KJ(q)9DSXDSz*`f~9m<1f_A7sBb=X3l-#%k`uS z(ya2+)$hgho^-!|W7(!)CbV#}8Gi-$&&`Pz{I8qSgL~0q4pQWXEI#-y$q%C?A)G^( zK#hlsCaI)mR{=a&S#ig9B1^$=xHpRi3T|wp-K*_i~Xyy=k!5m-1%ri zY&0&DM#-e6Q8EV4-gB-~g0B1JbZ~N^8MKq zDY@a@yLiWG|9!OY4i)OGd`;!ddoG%>Vc-}h+otQAIzUs6?giv`-fL}AIc5Zky)dNHnY5y$KP{492%F{9SofC7ISY~?uD$+^?g3$(VDrct>`?2Di zqDo1wG@Al^czjYZt!!@4o9sMjZ!1~1{7~YUKykl4YU(_(KUGA%gc5bC#6Pm;P?~m14 zN32d*u$fPh0Mj&#R=1z4U5Y3{H-gaKV&b$Z1ARU{b0;XwDg`f=wI}^tri3#8Cwqtn zTw_I0Si+R+R>x4k-H!9@tYuXY0AX)aH|1M&(kzf2e+-c2`JZc(4y}kwkTy=ABreXf zQH;4k-KE}_T6KGC6f(3+vhy@W74&cPe5XoswSMR)$R!Q9o0D5FvsA#aHd}PL!W8rECVc+zy0lR(0+W$B+ z>QjbM1SYDWPilRAQ<(|l^9M157}X7y-m~T85!)r3`5$b}#3#1a2p}LAyh+mz(#}`I(@FXrhC*Q7xPrW^~Je zYlSK+U!(Y_;O&jWfCtq0WFhL{@sIJknJ32Ay&MM+BxMu_gsMG^@{G-9qo02+sY*^0 zfhZj^`m~ztVXxGDRmB908W2TO2BK&xJHK{%VmptDwmw}KinpJvqc5jtUWFsiDYHaz z8p*q1?e!!k!C#OwqBiO==i@6deo|*aLmivNeLz|e9unOKv`xJr! zeSm+jkZ;8!W~z+u=ik|lsVC~O8cgKru@*OH{TxjafMJ`_!=){7mFVh_To|$rcwa*K zylcn23DaNdi%e2QgOm&^Ci>QM18W)>+SU2z5S$1%Pa6_qG$ZhZ#{uIXGcN4f2I+Tp zvl3^O16A_l-T!Iq%EO`j+W&mp-wNM^uVqq^$RI`tX|atp#2{mcF&N7XGlOI+TBkvj zQ3}}^%Y^J(k+G{V$Wq8IOWB2fXY{_k-}k+Guj_YRb6xYt`P}E+=Xsv{x$n>CIp=vi zp%UwUtQMyM!%~#M%cmbiV|S?=&cpni(iyF3Z!Gt8E?Lil+D|n~pl9h!*F_*hn?aD7 zD@ieZ%tm>$oaxz9s0k^Cy_}K2u<+*R4pVO2tPJ-a-eekZrLSwkEFY@Gk_I;_^V3kV zX3{r&QS5tusvv&ixR*JR=-J};*PY7!GS3soEJ`2x&5vlj5`MFsZHO9Bi~m3^MSjV( zmT1hXg6A%%)dsp++^dx?LvNG^}cLN&prcN_Z& ztx!$V+~yGJYPAT3@jaJgs!XaevhCF$F4r<5#v0+5fB@3dry>e6VvGaLd+%08ET%0@ zu;Xpu4_&c>t#~`mc|oKS?io8gz`k#IWqS2ZEcBXD6p+w0R&PCqwp}P)ocAe)ofHc! zoH|>>3ye<|t>Z~mq@#vcA(ELdmlS2&+ zsWq;ir<;w-!i`US^`%+pv@sh(>P4XzXa&>$rRd?(S$j0dRE6dlf;+Xg^O~9!AoeTH zxw!h(N(i9R>C0Vuxj@A)eq+QrS6*s4L;+7F?uiw7BZ;z}7d6B>#>0k(ms7vchO`~D zw}NuL33by)+gcd7c&5vuN(_kFLGmeuc}S|H1b=#M3-igfBJ(z$D6ZXI-5oE`8F%3? zCXD&hI`HN_or*N4GZGAXos<&GZMumN(ZY$xFxo4nd_8@AUX<#Tb3e=2EO@^XWEI43 zJ^Kgkz0eNftf1-_r{aUVN^h#WmL&<`buP5ePoZVP2k(bN`u3oE{FG55>dL0GwqY1- zv|rQSjm`Kuu8U`WK%5st;d=%Pk>_{qw0^K%;H`oAp|Ip|?kIdm^xCUnKCv-(K-UhOXVqWS|8?=rm@w6EoJH6Kpw z_WQ#gCqkQp4zy)jUezOPLqj5U6{w-Hv(${`SB%`0a4LAtoiYD?qr40{Bm4uR5RPs? zkJ2*f$*xp{F4U6N@QLAjqwLy}D?0i1=t}ogs+b)g!z7MH`n$FdfirW!&XHnBMR=Xt z@V8K!qrb79l>gXtTS5~T(O$9{H7;0n=lIuA`$*lR`5dtgq0NY{0+SbW4x8IcKk-Bw zVPOvWHy)i`VZ2BPr^10BCEquyG-7K$jpk0p*o&a9s|+!Oqgp3oD7xVNi!5(6!X6s4 zvi1nu+IsV?%t~*H#_@3BH2!@g!V#f6my$mp?kwkNIMz%D0RijTl%9$Uq@5bqIMZIN zYUZ?;Q{#T56T!ZID^g`R*ljO*JzQ;-Fy;zH#*Dq2Jk_)n9IW1PQE+ppm%rSp zPkKrpJ=hwlVg|yRL+=Ds?{+$diq$&VzzRWph(#B;VWYm4&62| zkn^$|NZ)AEwm~78+Na4$1z`ed&BU0{;)05+TL}*d65h7aufvCZp06QY)|Yu3rpLbg zSHe47S_cwdCZFj(zxrXdKStU4F6mdkbH~#oq)gJ0Ca(aUDtzB}{(|je&X+4WyWTbS z2@hr3+DK~Fh6diJWNHoeIk{R6Q2cwKuV^SAEJAcQ&v0RMxisc1uTh@6^qqbZn}(@ z4Cp!5OCTQQ;4#m*^|!;5B0?yOKOiA%Dn>j#DRr~Qe7c`}N%{d{tY_9$>z<*S?BgcA zVqjO)=u+PDxV-g;nj_V5lYX0CtAYMgS^Fzuw+K}mAXKGR^sFNiyt^_nyo)y@be<1; z1aN3^)c45ZqLsdjDl4oKZ+6TSsTzr~{1M_IGX_3;r`=GHFulV@Df)>k*H@Th%SSug z6l?hSr2@`IHTzpu{PmZd)f*+%67N^zyMI7z(pC`ON0byzx8?m~2ZhT6L1?_qL?wQSb68v0vEZKT2b zCdPfwG8hd5Q<3?1TrYJC`AP&;McF%2n$|0(sB(PR2iLR9z6TsoakZh=Ui3;QdVWk zx})(=W3i!h?HeZNYmqFe&ktmKUvEg(7QAC8v-FcWNQ@M-aFfGHNg;13-#|^j$nrXC^|a_1>WU=`tl!tsV4WbNf$m|KDi*zjJm_xK7MEa z$MC=+TBKXlIT1AumCg|>*+zs&Lgf>4MMsg!nge%g-U341go%VlMvPyxWeV-Q-_&78 z`$zQcp0Y>rZe}WVwN1*Ozmdn2X%+)~=;r|>8x@VWF!+gM&*mfyJLi*BB0~BsMm-1D zxwEI0ZKXF63Da2DLz?Yiu^5+H&1}?K{J7-lJ~5r*Ya zfMIF{hDz}ro-8l42Kw~iShU=@pb>N5u`M?QEP_pZPOO=F1>G++)wFLXr_9J6t0AU4qQ%0Vgq-7l-K`Z|M;_h-}{f-LY@e_$@fnVvjiW^S6Pos|rhARIN$7u-0v zPlLmV!y#I_YWv$q$-~5~wjP7}Fl`P|BZZnBKH}p1Y5J8jBUERU`1PG~iL`!Jawrft zC@UXG{og)CZhEUMti~!nb&g=tlj3cy%KY4+ouh!CrC`Wxbt7&FD03KF-wW@4(lh<1 zk4GHfmqE1{5n|{&`s^miRs3leZDyvMT`V8I+7|P!#ci@p8}L6Z|6{AOGWy?aTkBkk zfU=?gQU_z46gSpcAg+0pq7oAKyc2z^tz56srK1SSZ5Xi0NygmKQ?(q7!CO6xOLCJY zID`hyBG-^s1?krNp4NFTBev1I#)>PA2kf>AM0LSj%8_q5 zqW%*ZdYJj2)Xd%O9u&r-!@K*6BrO}q`(}rG4d>!1(<|Fj6UvIs?mel8a2f`N-zBHr z@rZ1zixrqbI%iXfUXqi6`auT8o2vmgK@gj)X_SdnP4?GLR;*cOgW>0G1w4z#ZwA zxo?tJ!!A3;us$59f6YAM-@rJ|4$nmJy5`uruiUuKw!3)DgN5BOD>@x`m#0AH3XE2D zPg#oO z5V$UO2&9%pne;t-W}g&ir0C=ME>0rYNOBO$?mozQbt7JWxN5)~rN5{mq`woqEJ(Wl zv4doFPH$rh?}Oky1MT=@#y@*6T+8NFZ*qnDw~k4P#k87h5@nrnV`W|lz+5QU=3vwv z(D#WKRnc(eaq#Rd+9czDC=#&CR(AI$X_u3Az$I)|6yVAh9DUQXkDG_0g^o}|F14KHp(!jc*lF37NY8W+ zy3bn=KN-m@CWqF)PHiBmHS7Te9whObi9$zM6**4wn0q8pI>{ln+b<e)X^_vpgdcXSv8H;R0mUk%vRsu}Llznjv<#)zxtUex69naIh^YSD>e&`jnw~*?uFSBETSJi z=`C3JOR}PxB9V35h-0L-_{}9=;aIJMHrCerb&raI4kfY!Dr{^nI^nzCS<{yR3(FHY zr9|re%5w{mW}>e!UHj@yWTcwP-e5{sFKc*s)O$K$XCuP{tl&HPP{T{DYAs`L_{EM1 z23{PUr>CP7d&iK@#9}whGTRZ^fIBfx;$ZIg94Lw}sVUg?oC>wBi z%r)2?@Z66N<$Vr(VB3NiS<8~_U`NKPV2D`ox3%jb8Doj2cJ3Z-SjcIqBkUjd^jUF$ zI`9jnL2x4wO+D-|Scn|g(`~w-@#wEcP2i##&i$vG|Ft=1cXxIG03ZAX)&heXIXaTC zWQd%ytU=g(HE8Df)vW7o=Y%!D;+@FO5Jg2<8R}#9?wo&{Z?#+C9DX)$%-y{Yn*Ti; zQ-UMe$Bu}F{C(HZxbWBvKpp!v2-(@o-5zg;bNl`5j|eT80zC9LcnyNP2N6pm;Rtw$ z;wsj|0^o#ygZuk5;0lVy9P>22(^5=vA@b0cP_UkZPjhzW(f;*N>#9_9E1@k7` zk+&w!%}WskR!4qg_47JnUs1-mt5`RP{9sp$6~GFyu{aDy1w-)gCE}c%$q-{Ndp8{B zh$g|^4u>y{kV65O$iH9?SQ3Va^Vk}1>s;D<;oQj5IQ$XPC4{9AxCe~@!1)V6Z~)G*O;J~LH9!kQSL>o?j{240{{t(RJs1E0 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/hicolor/16x16/apps/lammps.png b/tools/lammps-gui/icons/hicolor/16x16/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..b48ea6d6a923e0923e1091336b0cbc7090d3a48b GIT binary patch literal 15340 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/hicolor/22x22/apps/lammps.png b/tools/lammps-gui/icons/hicolor/22x22/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..5f15c747d19b19ad371f6dc93b3485bd669a8f28 GIT binary patch literal 15821 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 GA^!_~ua8y$ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/hicolor/32x32/apps/lammps.png b/tools/lammps-gui/icons/hicolor/32x32/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..4609d8a4110f2ad3f1c393d152ba4442c08c8a5b GIT binary patch literal 16813 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 TysoVZS|Hl$SJbjqt_S`f-OBq} literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/lammps.ico b/tools/lammps-gui/icons/lammps.ico new file mode 100644 index 0000000000000000000000000000000000000000..cce156bf7998a0a15a1721b6499ef3143aebe878 GIT binary patch literal 209266 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 z

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 p8@2QC^gVyinlibZ`lc3qciy~ Date: Sat, 12 Aug 2023 23:33:06 -0400 Subject: [PATCH 0230/1002] more doc improvements --- doc/src/Howto_lammps_gui.rst | 27 ++++++++++++++++++++++++++- doc/src/Tools.rst | 24 +++++++++--------------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index c1447f6150..f4fb479aa2 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -1,8 +1,33 @@ Using the LAMMPS GUI ==================== +LAMMPS GUI is essentially a simple graphical text editor that is linked +to the :ref:`LAMMPS C-library interface ` and thus can run +LAMMPS directly using the contents of the editor's text buffer as input. + +This is similar to what people usually would do to run LAMMPS using a +regular text editor to edit the input and run the necessary command, +possibly including the text editor, from a command line terminal window. +That is quite effective when running LAMMPS on high-performance +computing facilities and when you are very proficient with using the +command line. The main benefit of a GUI application is that this +integrates very well with graphical desktop environments and many basic +tasks can be done directly from within the GUI without switching to a +text console and requiring external programs or scripts to extract data +from the generated output. This makes it easier for beginners to get +started running simple LAMMPS simulation and thus very suitable for +tutorials on LAMMPS and then makes it easier to switch to a full +featured text editor and more sophisticated visualization and analysis +tools. + +The following text provides a detailed tour of the features and +functionality of the LAMMPS GUI. + +Main window +----------- + Hotkeys -^^^^^^^ +------- Almost all functionality is accessible from the menu or via hotkeys. The following hotkeys are available (On macOS use the Command key diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index f22c36606b..03b6aa256e 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -649,22 +649,16 @@ LAMMPS GUI is essentially a simple graphical text editor that is linked to the :ref:`LAMMPS C-library interface ` and thus can run LAMMPS directly using the contents of the editor's text buffer as input. -This is similar to what people usually would do using a text editor to -edit the input and then open a command line terminal window to run the -necessary commands. The main benefit of a GUI application is that this -integrates very well with graphical desktop environments and many basic -tasks can be done directly from within the GUI without switching to a -text console and requiring external programs or scripts to extract data -from the generated output. This makes it easier for beginners to get -started running simple LAMMPS simulation and thus very suitable for -tutorials on LAMMPS and then makes it easier to switch to a full featured -text editor and more sophisticated visualization and analysis tools. - -All features have been extensively exposed to hotkeys, so that there -is appeal for experienced LAMMPS users, too, especially for prototyping -and testing simulations setups. All steps can be executed with a few -keystrokes. +This is similar to what people usually would do to run LAMMPS using a +regular text editor to edit the input and running the necessary +commands, possibly including the text editor, from a command line +terminal window. And this similarity is a design goal, making it easy +for beginners to start with LAMMPS, but also making it easy to +transition to use LAMMPS like most experienced users do. +All features have been extensively exposed to hotkeys, so that there is +also appeal for experienced LAMMPS users, too, especially for +prototyping and testing simulations setups. Features ^^^^^^^^ From 8076f77e1e5840212cdbbcb6576902f47324ac44 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 00:14:46 -0400 Subject: [PATCH 0231/1002] add missing connect() macro --- tools/lammps-gui/codeeditor.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index 5333789180..baa18c5e75 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -193,6 +193,7 @@ void CodeEditor::contextMenuEvent(QContextMenuEvent *event) auto action = menu->addAction(QString("View Documentation for '%1'").arg(help)); action->setIcon(QIcon(":/system-help.png")); action->setData(page); + connect(action, &QAction::triggered, this, &CodeEditor::open_help); // if we link to help with specific styles (fix, compute, pair, bond, ...) // also link to the docs for the primary command auto words = help.split(' '); From c1f9f9d1c65f016c70e221db4feb684c5bf6bef6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 00:15:09 -0400 Subject: [PATCH 0232/1002] we have accumulated enough changes to call this version 1.2 --- tools/lammps-gui/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 6f1985eeb9..de1d28e21d 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.1.8 LANGUAGES CXX) +project(lammps-gui VERSION 1.2.0 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) From 9f407cae1ec41c64cc2828938eb6e7b7adbdfce7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 02:57:02 -0400 Subject: [PATCH 0233/1002] more documentation and tutorial updates --- doc/src/Howto_lammps_gui.rst | 94 ++++++++++++++++++++ doc/src/JPG/lammps-gui-main.png | Bin 0 -> 91027 bytes doc/src/JPG/lammps-gui-variables.png | Bin 0 -> 15888 bytes doc/src/Tools.rst | 2 +- doc/utils/sphinx-config/false_positives.txt | 1 + tools/lammps-gui/lammpsgui.ui | 2 +- tools/lammps-gui/setvariables.cpp | 2 +- 7 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 doc/src/JPG/lammps-gui-main.png create mode 100644 doc/src/JPG/lammps-gui-variables.png diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index f4fb479aa2..c02a0331b0 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -26,6 +26,100 @@ functionality of the LAMMPS GUI. Main window ----------- +When LAMMPS GUI starts, it will show the main window with either an +empty buffer, or have a file loaded. In the latter case it may look like +the following: + +.. image:: JPG/lammps-gui-main.png + :align: center + :scale: 50% + +There is the menu bar at the top, then the main editor buffer with the +input file contents in the center with line numbers on the left and the +input colored according to some LAMMPS syntax rules. At the bottom is +the status bar, which shows the status of LAMMPS execution on the right +("Ready." when idle) and the current working directory on the left. +The size of the main window will be stored when exiting and restored +when starting again. The name of the current file in the buffer is +shown in the window title and the text `*modified*` is added in case +the buffer has modifications that are not yet saved to a file. + +Menu +---- + +The menu bar the entries ``File``, ``Edit``, ``Run``, ``View``, and ``About``. +Instead of using the mouse to click on them, the individual menus can also +be activated by hitting the `Alt` key together with the corresponding underlined +letter, that is `Alt-f` will activate the ``File`` menu. For the corresponding +activated sub-menus, also the underlined letter, together with the `Alt` key can +be used to select instead of the mouse. + +File +^^^^ + +The ``File`` menu offers the usual options: + +- ``New`` will clear the current buffer and reset the file name to ``*unknown*`` +- ``Open`` will open a dialog to select a new file +- ``Save`` will save the current file; if the file name is ``*unknown*`` + a dialog will open to select a new file name +- ``Save As`` will open a dialog to select and new file name and save + the buffer to it +- ``Quit`` will exit LAMMPS GUI. If there are unsaved changes, a dialog + will appear to either cancel the quit, save or don't save the file. + +In addition, up to 5 recent file names will be listed after the ``Open`` +entry that allows to re-open recent files. This list is stored when +quitting and recovered when starting again. + +Edit +^^^^ + +The ``Edit`` menu offers the usual editor functions like ``Undo``, +``Redo``, ``Cut``, ``Copy``, ``Paste``, but also offers to open the +``Preferences`` dialog and to delete all stored preferences so they +will be reset to their defaults. + +Run +^^^ + +The ``Run`` menu allows to start and stop a LAMMPS process. Rather than +calling the LAMMPS executable as a separate executable, the LAMMPS GUI +is linked to the LAMMPS library and thus can run LAMMPS internally +through the :ref:`LAMMPS C-library interface `. +Specifically, a LAMMPS instance will be created by calling +:cpp:func:`lammps_open_no_mpi` and then the buffer contents run by +calling :cpp:func:`lammps_commands_string`. Certain commands and +features are only available, after a LAMMPS instance is created. Its +presence is indicated by a small LAMMPS ``L`` logo in the status bar at +the bottom left of the main window. + +The LAMMPS calculation will be run in a concurrent thread so that the +GUI will stay responsive and will be updated during the run. This can +be used to tell the running LAMMPS instance to stop at the next +timestep. The ``Stop LAMMPS`` entry will do this by calling +:cpp:func:`lammps_force_timeout`, which is equivalent to a :doc:`timer +timeout 0 ` command. + +The ``Set Variables`` entry will open a dialog box where :doc:`index style variables ` +can be set. Those variables will be passed to the LAMMPS instance when +it is created and are thus set *before* a run is started. + +.. image:: JPG/lammps-gui-variables.png + :align: center + :scale: 75% + +The ``Set Variables`` dialog will be pre-populated with entries that are +set as index variables in the input and any variables that are used but +not defined as far as the built-in parser can detect them. New rows for +additional variables can be added through the ``Add Row`` button and +existing rows deleted by clicking on the ``X`` icons on the right. + +The ``View Image`` entry will send a :doc:`dump image ` +command to the LAMMPS instance, read the resulting file and show it in +an ``Image Viewer``. Window. + + Hotkeys ------- diff --git a/doc/src/JPG/lammps-gui-main.png b/doc/src/JPG/lammps-gui-main.png new file mode 100644 index 0000000000000000000000000000000000000000..67a85b0d07a21345c2c4226c1fb0cd24e8ce07ea GIT binary patch literal 91027 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 NkPwv>sTR@?{9m6^&Y%DQ literal 0 HcmV?d00001 diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index 03b6aa256e..de1d0d71fd 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -679,7 +679,7 @@ Here are a few highlights of LAMMPS GUI - Screen output is captured in a Log Window - Thermodynamic output is captured and displayed as line graph in a Chart Window - Visualization of current state in Image Viewer (via :doc:`dump image `) -- Many customizable settings and preferences that are persistent +- Many adjustable settings and preferences that are persistent - Dialog to set variables from the LAMMPS command line Parallelization diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 1643b51fec..f7dcb6c524 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -3638,6 +3638,7 @@ tokyo tol tomic toolchain +toolset topologies Toporov Torder diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 9603fece62..a062309fc4 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -437,7 +437,7 @@ .. - Set &Variables + Set &Variables... Ctrl+Shift+V diff --git a/tools/lammps-gui/setvariables.cpp b/tools/lammps-gui/setvariables.cpp index 4729ca077b..1e9b28ec6a 100644 --- a/tools/lammps-gui/setvariables.cpp +++ b/tools/lammps-gui/setvariables.cpp @@ -56,7 +56,7 @@ SetVariables::SetVariables(QList> &_vars, QWidget *paren layout->addWidget(buttonBox); setLayout(layout); setWindowTitle("LAMMPS-GUI - Set Variables"); - resize(500, 400); + resize(300, 200); } void SetVariables::accept() From 7e3c04aa517160f54d35a005bebbefca312ac8f1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 02:57:47 -0400 Subject: [PATCH 0234/1002] add a small LAMMPS icon to the status bar indicating whether an active LAMMPS instance exists --- tools/lammps-gui/lammpsgui.cpp | 13 ++++++++++++- tools/lammps-gui/lammpsgui.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index ebcbfe9d14..1c72d0d1eb 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -63,7 +63,8 @@ static char *mystrdup(const std::string &text) LammpsGui::LammpsGui(QWidget *parent, const char *filename) : QMainWindow(parent), ui(new Ui::LammpsGui), highlighter(nullptr), capturer(nullptr), status(nullptr), logwindow(nullptr), imagewindow(nullptr), chartwindow(nullptr), - logupdater(nullptr), dirstatus(nullptr), progress(nullptr), prefdialog(nullptr) + logupdater(nullptr), dirstatus(nullptr), progress(nullptr), prefdialog(nullptr), + lammpsstatus(nullptr) { // enforce using the plain ASCII C locale within the GUI. QLocale::setDefault(QLocale("C")); @@ -176,6 +177,11 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : ui->actionPaste->setEnabled(false); #endif + lammpsstatus = new QLabel(QString()); + auto pix = QPixmap(":/lammps-icon-128x128.png"); + lammpsstatus->setPixmap(pix.scaled(22,22,Qt::KeepAspectRatio)); + ui->statusbar->addWidget(lammpsstatus); + lammpsstatus->hide(); status = new QLabel("Ready."); status->setFixedWidth(300); ui->statusbar->addWidget(status); @@ -236,6 +242,7 @@ void LammpsGui::new_document() ui->textEdit->document()->setPlainText(QString()); lammps.close(); + lammpsstatus->hide(); setWindowTitle(QString("LAMMPS-GUI - *unknown*")); } @@ -453,6 +460,7 @@ void LammpsGui::save_as() void LammpsGui::quit() { lammps.close(); + lammpsstatus->hide(); lammps.finalize(); if (ui->textEdit->document()->isModified()) { @@ -901,6 +909,7 @@ void LammpsGui::edit_variables() if (vars.exec() == QDialog::Accepted) { variables = newvars; lammps.close(); + lammpsstatus->hide(); } } @@ -922,6 +931,7 @@ void LammpsGui::preferences() (oldecho != settings.value("echo", 0).toInt()) || (oldcite != settings.value("cite", 0).toInt())) lammps.close(); + lammpsstatus->hide(); if (imagewindow) imagewindow->createImage(); } } @@ -986,6 +996,7 @@ void LammpsGui::start_lammps() char **args = lammps_args.data(); int narg = lammps_args.size(); lammps.open(narg, args); + lammpsstatus->show(); // delete additional arguments again (3 were there initially while (lammps_args.size() > initial_narg) { diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 147b2c68a4..f77ebcbbb9 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -104,6 +104,7 @@ private: QLabel *dirstatus; QProgressBar *progress; Preferences *prefdialog; + QLabel *lammpsstatus; QString current_file; QString current_dir; From d650bc61c57731dd21296703933de9b855ae1b7d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 09:47:24 -0400 Subject: [PATCH 0235/1002] include images of the preferences dialog tabs and discuss preferences --- doc/src/Howto_lammps_gui.rst | 92 ++++++++++++++++++++++- doc/src/JPG/lammps-gui-prefs-accel.png | Bin 0 -> 32774 bytes doc/src/JPG/lammps-gui-prefs-general.png | Bin 0 -> 53214 bytes doc/src/JPG/lammps-gui-prefs-image.png | Bin 0 -> 37740 bytes 4 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 doc/src/JPG/lammps-gui-prefs-accel.png create mode 100644 doc/src/JPG/lammps-gui-prefs-general.png create mode 100644 doc/src/JPG/lammps-gui-prefs-image.png diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index c02a0331b0..658dcf58cc 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -116,8 +116,96 @@ additional variables can be added through the ``Add Row`` button and existing rows deleted by clicking on the ``X`` icons on the right. The ``View Image`` entry will send a :doc:`dump image ` -command to the LAMMPS instance, read the resulting file and show it in -an ``Image Viewer``. Window. +command to the LAMMPS instance, read the resulting file, and show it in +an ``Image Viewer`` window. + +View +^^^^ + +The ``View`` menu offers to show or hide the three optional windows +with log output, graphs, or images. The default settings for those +can be changed in the ``Preferences dialog``. + +About +^^^^^ + +The ``About`` menu finally offers a couple of dialog windows and an +option to launch the LAMMPS online documentation in a web browser. The +``About LAMMPS GUI`` entry displays a dialog with a summary of the +configuration settings of the LAMMPS library in use and the version +number of LAMMPS GUI itself. The ``Quick Help`` displays a dialog with +a minimal description of LAMMPS GUI. And ``LAMMPS Manual`` will open +the main page of this LAMMPS documentation at https://docs.lammps.org/. + +Preferences +----------- + +The ``Preferences`` dialog allows to customize some of the behavior +and looks of the LAMMPS GUI application. The settings are grouped +and each group is displayed within a tab. + +.. |guiprefs1| image:: JPG/lammps-gui-prefs-general.png + :width: 32% + +.. |guiprefs2| image:: JPG/lammps-gui-prefs-accel.png + :width: 32% + +.. |guiprefs3| image:: JPG/lammps-gui-prefs-image.png + :width: 32% + +|guiprefs1| |guiprefs2| |guiprefs3| + +General Settings: +^^^^^^^^^^^^^^^^^ + +- *Echo input to log:* when checked, all input commands, including + variable expansions, will be echoed to the log window. This is + equivalent to using `-echo screen` at the command line. There is no + log *file* produced since it always uses `-log none`. +- *Include citation details:* when checked full citation info will be + included to the log window. This is equivalent to using `-cite + screen` on the command line. +- *Show log window by default:* when checked, the screen output of a + LAMMPS run will be collected in a log window during the run +- *Show chart window by default:* when checked, the thermodynamic + output of a LAMMPS run will be collected and displayed in a chart + window as line graphs. +- *Replace log window on new run:* when checked, an existing log + window will be replaced on a new LAMMPS run, otherwise each run will + create a new log window. +- *Replace chart window on new run:* when checked, an existing chart + window will be replaced on a new LAMMPS run, otherwise each run will + create a new chart window. +- *Replace image window on new render:* when checked, an existing + chart window will be replaced when a new snapshot image is requested, + otherwise each command will create a new image window. +- *Select Default Font:* Opens a font selection dialog where the type + and size for the default font (used for everthing but the editor and + log) of the application can be set. +- *Select Text Font:* Opens a font selection dialog where the type and + size for the text editor and log font of the application can be set. + +Accelerators: +^^^^^^^^^^^^^ + +This tab enables to select accelerator settings and is equivalent to +using the `-suffix` and `-package` flags on the command line. Only +settings supported by the LAMMPS library and local hardware are +available. The `Number of threads` field allows to set the maximum +number of threads for the accelerator packages that use threads. + +Snapshot Image: +^^^^^^^^^^^^^^^ + +This tab allows to set some defaults for the snapshot images displayed +in the ``Image Viewer`` window, like its dimensions and the zoom factor +applied. The *Antialias* switch requests to render images at an up to 4 +times larger image size and then uses a bicubic scaling algorithm to +rescale them back to the requested size. This produces higher quality +images with smoother edges at the expense of requiring more CPU time to +render the image. The *HQ Image mode* option turns on using a screen +space ambient occlusion mode when rendering images. This is more time +consuming, but produces a more 'spatial' representation of the system. Hotkeys diff --git a/doc/src/JPG/lammps-gui-prefs-accel.png b/doc/src/JPG/lammps-gui-prefs-accel.png new file mode 100644 index 0000000000000000000000000000000000000000..30368fe3e2413c3127f66e16d4aefcbc56ab86fe GIT binary patch literal 32774 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 C@Gy@6 literal 0 HcmV?d00001 diff --git a/doc/src/JPG/lammps-gui-prefs-general.png b/doc/src/JPG/lammps-gui-prefs-general.png new file mode 100644 index 0000000000000000000000000000000000000000..3951a030221db93a1640b188be159bdeafb8fb21 GIT binary patch literal 53214 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�@XK>bHa1J#Sh zuX?&kFh90v18(jE&b-HLz}F+{}|uXPFo7Se59Go zSzca-s`=Z1gw|3)QcbckQINR~wr4k@E02~z?m`qAh5}d$zpZ+QxSq`0?IYOVB_3?X z$A4JwWZMz0wu!q?^!M~k%T7#OORc}(P#OI6KEqY4I>are_C7os5!E3*2HSH#>A|_B zf^%K+XPB;up8t{SdY!{cTB1TgPMNHox8s(>+~;#$`%elKtiKLqUHFqu7|{&ArQ9+J>QXsXK5Y}z3r|Ad|JY`< z2+dy%IjE2i+fYbV+&zzJSPK45&6ZMgSONJ@j3>A89m#jDC%PLR6b&h{r%Opk4?F5ZpSM#M(ic`K4@sw*%XmeXdG5bQjI*$VDOnxj+f_(C- ztPK8V079t8XEF=PqzO5wKlNIqbm%0{jw|0|gp!~dtl6B3C?fO$o&jttc?XM;&ew0M z-3s1SxNeX8t*sj@&QzUFhzla%j!T)sQ;gb$p$|@Xn*%nq!qD~5>UW`*R#xEQ)?)qD zH&0BT#ZF)E=lljbsVA)Kr|o;^51uw3kau%UozaOi&sA2&HY@sMAv3(M#mwX}R7>2K zrKy;(&PMvqEbb`>8xlZxqjSKMLGFuthucP~JAdM76*@al&-qGwa(zv5&;WaQ;T_|7 zrH|k$ReI;si<8{pq`$t$g*T*|Ls!kt$#J{y+|x?m4MzHAolOU5*KXC9w@N#`a-th* z!%l4N-IK>It+4$fdjuQ~vuk=>DG!hc2LhP4WNcofE(rgf`+|#fOH0 z2}dW=mI#8dZ46?8Ii0^585!y6S`B@OACN!YJU*B!AUUc57;tSzEO@?I@nMUObp^uk zH`xa?fk<@>{12x@96`74S}=T&1I)FzUC0 zj@z`%7bo5B#J_G@8y(flyy$ z;=hX1akM&PQU>#xYUQG0J#=lxVrDNf(>P3+L9uDpyx*9rR94MUMBtjFW!Xju!=%F1 z?B=}=MpL+PLgjMp7!X)A7#3ajMO|tKH`;1CV$ueGgF}&jh178a2eN*@oj@46r0wjW z)2MuUnt6ZkU;1lOS6h3w_SiUS`JDRwinZ_(#F`W>fVZ6fmba=`a5Vh}A4$xGa$ zQ&9lqPHiUp+W!{t3xUzwk}6g&gEj~n4uvrzU?5}@(w%ba_-aQopy_>xj~<12uj^*; z&=X=_*x2D+-4gvL=Eecze_zD&?;v1sF(A-XS65e9Sh&4kRaKRqp1!;^>Z_22I=6XH zF;o>?-c7YJmKenNHMwQLZN&^7P_r6rq8u>n5K4}-tvU4b;Tzqh=#0leL3Qg~K$e~M=E#;z z-C`Gn!fGwB|8A;F=lnlSb=-;uUV-xT%n+@M|0aGA2)f6SnSvMr29j1312qrJcT50E zK~SPk!*X=(;(*pPbS7;>$YG^cgT$|qpu#UA|8bwWhU!*xwCl3g>ZFsjD8?e?#80rm zqzakG*0l-L05z^t&he?BMbv4()1e1$(n5ZOM-mR^V30pX&b39KD2Z>J@A+sOyuIPvX^N(o-4J)W~=L~VQxV8YM#wDSB6a;0?+k6szx z{}+328Qe(lylKkJ%#35k@tB$I@tB$I@tD~jGc%2unVFfHnVFfHLH6nQ-`%+TuzMS~ zpHHDsbf~-3rBtb_`pGvlozgfIJuZi`HXUuJp-;4aV-<+Gx};kk9L+vOKR#_bTz}~8 zrcTm@>+OD|?{>ghd#^8V>wKK4ZT9{t`q&5EdhazmrY`Pq%eAXTc6lESh<+AgHZQ#^ zV{EBb-s40xsxMh3E@t2V{pHxKdv!m?Ht5I`&C^W5abwnli==Ko*D%Fqd$~2N&o?vf z`W5(e{`|y=)7{2s`I)Xg9Gos|Avis5XP)9>J9ABM5&J(2-+NKz8LxbON!S6Hr@C&- zfVjfd)w{NP%JcUr*?vaWrV1_U#WVPxObp@pM=DHl+trhY^7g6G)!-^=Uhk^L>~k}b zO4Bkhd$n^PKo${|?&^`Y;?7J5M1(tI1t&51Zu_A}vNxb`+7=wMIuQ>bEHTsL?Ngzm zQRu~1_xMOdGTR3S;Ug-I?`sz9L`m~^hz;dFW*qs}+k+juEmCVLK~47uw5}4D>%(TG zg{78GBs(H}`_`9MwY_A7k|>x^#`C+~^tN84tpi=@>fiuWD@O4rA5xx6%mE|ukpNR2 z^|hJ5z1@u_Om`Mj$Q^N3HQw>7xUvt=DxZtd?{{t1;mIgoq;1U?9jaUD{B6zFE|9{(C;&0p*xj6sQlq`6g}69liI*IcYmLAcwatJhdsE(!E&ZE~zw>w2 z0Kic-En6qClX81Z&Lv3$YI;6%B7G){=~2w6au$+050ULyx6d&9h{;&zahJCC|DYKb z&+Q}^)y9srDa`zc2uQ8u)$>a_$N2(pf%JfC+NIZxyi!ZH(f}}stW1v!`-16@cBoQC z_V?F#*_VM-3!#j~HX~*Zm4vb!{}K%|a*dkhm6`}F z?TXqVT=t}u{Mw^Pe3=BAr!AV_`5H9{9AZ%71tXhVmmNNYhh~zB6t_q3yYU;BR}%tk zyw5G1?Jh3pBk(D|7_eiN$)4M^-L~58JiQ*?`D5eT7jYoWI-J)=#AQvWU|WWV)%4{x z?cG0dnHd3K2%BeF51L==RhsGUs5Nc%^Y7ire06wcFaTDn zEk&8mf4DuG*Se z$;ilb-JKEF?)Y8}3sO7R3uhFT7PiWTBXwil*4cWD(m7`Ptp@;Bt0m4=F#XYTFyHn0 zHN1EP>>imT_!B1oy70{{h{XbSj#iDdZ3?a7vITO&aC=f{oid{uwHpLZd~{9SUSEPk zvhl$Huy9D1Xf@8YHc6eFw-2m< zm*dA;4)nkY=T|b0thf6rSJdIdRE1iodItY!t%T{vxVqbG5!1`biGp zasnDc;9yXXDoRBQxfis~O3U!hVCK z8*)}jlK0D+2)zcjF}9?hsRusq7=0=+q>kdZM37TWpsBa_Uew z*glOf3PR^XnQA$ByP7f<0KCEF`!o`w@Asy@a4Y{b3e_d9#GmtD7JIoR;T3(Ej}ew@ zD;E<2viyz4$L|68)z@Zb%HQ4-6I1AXh%f{TmOeHv+2$X!xzcDz)Y(xFnK+kzqwItU<$tp2LgJ=RZ{(s=||lv>wV>>h&8zdw~mfCe&*Fn z)kPWm)#w+E0aVna8`|hBBgNdf#bVg}DyeV_$K1&i3iMPj$DGoF^xOXE&7X~JE;!jB z8QHXi1d&|w{k1UDXxToP42n2`yZ1MA@R$C%4^WvKCqPksSkVUfs*@Z9w~6Q`#s`+Y z^{JaX0J<2{<$q#)8_@H*d#Q~TjfYMYL$0z(?(6SpbjsVGPinBxG+4GMqeD%<^AXoo zq-}z;h*HtqSD};rDh~_EqpO2YextYC$63B8abHKa<9!-FP4(l@rU0M;VinmtO?aFw zqYiCsVOEYZP8~_m9h1lBG(cs#&E2Zx=61hRwU*nrOs{06k}EBCF=y1*OahC}I-W zI&UyHc&LBA9EZGIX*qtt>?lYpHD;|B-rPu{5WBj%0_+@J5D@r_D+?=)Pv-`jb|zaa z%HIC|HybEj`UH8O zT{8Z!r|K`9kF{|=z1F8&psN782OZVt5H0x7Ty3dE5OaY$)!N({`k}b|U~6|$0Gi(j z*b2Kv>gew3;>CG$X|&we*&?aHQCMerHA6fCCh_!Y{tis$rE*yi7VKh^4Uxq7o}7ll zlPF8W9&D zbIRJh_*t}WSyz_}b6uUN`NUpls$y-SLjp$vxYtcKx;@9L?4KyZqNA@1L&wR;a*4+} z+uZ^~Bm;wj-CmpMJf|wU%H#_^r4nhU`ZTOD+}An?P} z5!3mc$pnTVPB<&RCJ~c&W-Bpk5wM<yMD*S4UjqYjte#Jjb-XVN?0<<{t@^~695_h2 z=}cm`N2P?j!`Kony*#~`f&z7;WbYo#;CnhXfhW{;j?_^&+KiFhA(QCIi|C0(;Gc&6j_~SyND9Mjaj6NY=HN;ToPSS6F+7d zFDx7MLpo)@`8R_GB~b=&n?DwA=*R12th1ndiGc3xdCnK5g*xXNI`{nM}#yczG} z`Lf)}KHX#(bMteWYnhS52p_>oPksb)9VE;%+)G$z{cYc{RhemxLWTyA+Q29RJ1)f@ z$!v-Ra9P@B&fuCXY{;r(1v90uwrZ63YD@g7OB)e2#!WED^_rEb*a26JZ`tw>mWypN zPuL=sW{(r6yLka<0QzR8w!NAn@9uvlx_Z;>I`cj^Qdy5s26TN%5cC07oIkE^n+mmm zl~ZK8Um&7bC3-dH7fJ@CEHI(J3k{d80T>=v$C!*Lwi;{?l}|(s&&tsk0@dVMxWBYm z85-QNfvY9I({ldXum*ks_g;%5j~lEBXP4Rk{#>ir3JAvFIEEKyy;V>VADYPEHhQYi zY@IHwL${IRayR`Fy>d++svQK>-S?21j6al%g=p{G!N!--*Fgg|r)& zc8BA$86%@Ep$KG5=chiuzW#c9EXOdN(%X+2=of}<&-mexD2nZuj0>3av%_=E34<*{ z+(HW+SI~y_zy@rgi#hDT;)feneP2$87aNWFsgM~|k2)xe<_THl=sKJqh5E$pN0gig z9pTQcu4*%WtK;X4?$oP-v(th|Os+EeTC9nz6XOSw7Ga=rLM{XulFZj8UHA2^yI81# zka0j^D;2j|D1nfl@*5&6zIM{~9=4V3-){z?GamR0Y)y2+&p&+Fn#d!r4{ z`++PA1U0}9De?yGjTBWD6jw|b$}P>#qxrc%vmmdCS!i!|R!kE<$Mxe;8B^Sx@c*UR z>&Ny69uW}`B$Pqt1c}z{?Coh=650_3gb!N*;B28ffKK`Fuy*)3sM=*}RVDIMv>Fan z9?#WIPl<5Xk$loq#U`b@^c{WSjiLj_Ql+>|zaGp!5oVb1x8DLjXJ0qFqM-33vvKkE zcpijPh2M5J*4uADN1qK3>1iB~*}Y_9ePsKGE?IE70hoS9Xe5`dgNF4Uls6|N=qlgrXw75w_*P8>TPWNGy2=vZ z<0n-c1R~vwf-zs86g+`PFex6)Kp?od){7-XbHh3gog5JEyW|^jS$WSYu&R1 z;cBVZ2J=cJ z^+Af@CqlATCH?>qPt+3co}dRnb8;x7iV4W7GmZY!YAZAX8ZJ48Xism<&WCw4=(c(e z#;}hAO}F(HFFlSA11zj{jt<{;&+huLio_WGVh!c|8YNLm8()^OWw$faU~hsfiFI96W+QTKmE7DjhF68DjJ@5Hn-P1jen5!x$XXK4 zmZLc++0Ja6Yq&prK6EGA<~{i_^JCV({hy!N&s}WxNydt4?Pt9v-?pO0=uquqRS%s_ z-X0UX-=gr%8XfaQvsW53Bd)&o(iQ$hCsIrWO4`1qJ-YopXeQC+^}23H2DDJm-ftH3 zKI8sr^-PjUez#on@1SSRT9D~xaJKzkGvtqlB+0+Y9%^{!t=Z5L;Niahiq;sy$IHiA z^fb-~5-lXFr}m0au2`^B z{({WGksd51!Y5$WDHH?~MbDS)(Vi-uW{3i8mCDzS-S|MIM}>s`K^e()qNl5FMt%WA zzyYmt8w$a@r|(piM!b)Wya(r>KgY8>ak)~dv(^S*^o#@RHVa5_uj}Vh5n0;GHdpk7 z$FU3>u@F575;fPlZ!e4;ub&iIv(!r?>;En|jTgkT-H)F*|8a2w{eZ#7=?gIZ#R6wb zj=Q!+^%qlmidJn~)~yC#nFO4ncML5mw;j&+s|4=SuP+v6Bei2T1WXeCQeXuFVXLUw zRmX<})RGEvCcJ|POO>m&W9|{A58IFZOusx%8a%fw0DxDwftMa_*?;~v3q0QTJZd`I zBpJFANk6(|dO~3~ADxG}g7mr8kMq_;?@%emB4O;t1wcMQ+ z*31NGsj=g093nKQlsWJ^9_&GyjGsQCJZ<4Un4Xs&3k>KpZhQ@LOiT-Ltf&qh^Cfxd+_%NCwl^lBiT%_xm{l2$$#C^8EJHO}tpjET=R{~US;@f)l z1A>E`hdr|g%pl1I4!Ge=`@hjI8Kb5xc09IXyL;L)E0d{=*womp_hh9wulFZ=i%f3E z;Do+ZHdFZI%dO7#d{Lw;p#G}QbyH!8+?~tJZ29JwG1ajB#x+}T4KzE&_E^GtNXN(@ zF^S_(oj!Y=YQ0X#wZz}s#?@;suVfH9+#Ry5W8>oy`z_C!8`UTRdR|^3GAKuL&mEra z1U=i@OOAvt=Pw*!{TGq$r3|0yfAVaiH=l{Sx}5gplML0e-AZ(_DEH}j8`C)pymoiW zRZ72`P7y}!H`#2C0X)d-A`r8`N1#bDQU9UIZo1|zsWer7?9EtxCFqBZ+LTele!bTs z@2>&LM~}Ix5^g`*F2$VqlipJ%>^C}kwt!U3*aS$35r~nX;p`oV4GvaNPU|IdRbFL!aCoYj1+g2omITM@8^8hy#wIZ(I+{ zeni#ZeN_33yAuvO;q&C{r%Q|-GM=ZSe7L#jI_gG^A8^^+r{79yB!fLCGV@e6Ncb)RF5dTyEJLQnMVJXtIBDS6T1uB`pOL zCKpm=Ikqpc8X#}|QehH&{*h_u^pmeeyV(YdMZ@dGeK%Nnq08(2=daB&H}9hfJglpV zuR$PZXBn{I<6Mz(X7JeurkqKSprbYp79gkVv(hs-AnkxTM-fA8Zu56;Zt7v+aDA+9 z>1pZdZMA-j@k|RnIIJW4x+-%9PFvdgw(QV^hL>HwG$7x+WzetE8{ zWV1RydU2SQwbb})O3z0sFb}M%Il<#c9Fh4tXkld6)HZ+};>I&8hL zh6P}lYbe{{^|<2C`p%PjJe8x3A09u?4XAz2F1jy}of@rX4ZyBy8XE?2B9XlHPJ5?A zWyTy;qxA?@dw{2>S6}r8WHy<{`_5TsgMEJ+pA_3qH$tcz!`$Tm6oC5=Z%}eJ@u0rn z=mF3e(N~O6m7Lbr4V4}&uV`_PTn!0$e#SmLyN>^dUx|_O-(_lRnR!|qr5{`DwK_bP z3du}2N2NNn76%PfxI6bRlIUdRh#H-fi{_QomDwe`4YFHXIZM!yWUtlT1AAweU4Ar_ z#sT4f{z~kQ3L{an^uBsZJ$;iWlud{(#}9Q#Ca`2hjLFDVsQkE$>?i)@eE|1|aDG#* zqC{m0Ck2v<0CtSaCWJx~4|JG}!7?-W>m0m0CZ}5y#Y|)W5RIb~-C$$xFkxN-gY_#(7+rrs!8Inz=#7!#aJXg-fcj;{2kNk2ltN#L+Q^Yw$>+||Ra%~aVvr0lvGF#- z(pja`8m5Kleg9!XD7_NR7uI*ABu$TvsGWV-p}85t%5mzU6(y{7{P0woR1B10tMRT= zl0qLgl7z`xUl$yJ7v|!i4u{0>=aeKz3a0$yB?TO`YMT(3SPbM5X=lrA^)iMDMacY~ z9FS%Jxi%C&f$2Nlira5byK1Zd6AuN#_5Do;UQoMS0x4jvs)_2ii%T=sx`~e`NXcct zR^7$;6OXdo65bdD;)}XQ!Up_hz5oIc;JSzCSN$@zx!iz|pK)c68%#kVg6=mx{rwQW z>FwGYC*0PI){HXAR83H}bE?XV#me(W#*xZlilul47M1$?i?fW)N7%l(k!`oVXK7<> zg1%C{QUE~55BAyt1%!+LZk{rHTm*3JiVWVleC4mjMJ+ingX=XOqxXZ-h5|e`LSM=C zf8+&#sIgr59^YSI{?3q&0v7Xj@^B=~@BZODxV5OBGztYDO|WzY4~Z5cG2tHB}X zS3?>ACuj6FHN(Qv+})kE>dSztmuj|@S2Tzc`5P`*GR~CFavTbUv=NUr{MyP0BKMoc zFDX)aT#KBqe>w0logm}^NJaC$@{u+E$W>Y}RoOjyLrCGw$!!^}88yP$Gvf30?tj~! zu!AGs{E61CVDB@U`Ay(zl0!dg%)1@fJF`1oOM&TvL;oAcCXHRS-9*wh+P$oC(PHj( zlUIDB$?qd#JKO5&&7&Z{t9A1|h5z7Ex;rTf`Z0u=kXO^)n-GW9Np`0uTiN}LYsvE1 z*mlLW&p(&q58C`oOX8@{^Z60CdH+$~aoV_;EX$U6S4Y--wlXyR74sqa@kC~W>~BTw zRGptB@-o%IF597UgnWCar*J(Y>I##kt7+^$jW^b+Z=8(Ciw|WUQEPYSZ4>oIhs{UX zDJ!(W)1M{IFxhRvQxwUvDI?-jNBio740pVEv?rYQMGlqG)zgJBHRH9?S;VqnEu7^f zKr!d5fm?FwnML)-u!U!h)IElrG~)H&2X}|}&0Q$OeZ$ppdMPZOj@P?JS>?=!=f{jJ z&Oom@DYpf}tGk9mqodq#QFD>PlIarvLT`IVsk_YcRM?yQF*g`=9zsngXkT@tQTgF$ zXi7QjC61~5LEUIkU7{~U+l2*@)>=!V`hLB2K94TzrMq5%Dl zgi-E}Gn>#KF4}&6zUkPs%4oXX=;WaKCscrxK$fKiU13}ghgQ8#8;=io#s*GPzcpHH zexqjjFPik~jJl`}S0^xV34rxY)W*@Z*HG@(m#Al|KE|&)6?CPXegkL0G933y6mBBG ze|BA;V=P*XmE(5~hG`nhO0hYeC8cVN7!a7LE#m-yGJDmHuY_`5YQJK>DWtrW!T+V| z7b!RWoVGZmDS|umsQ6{?KO3YbU!&@XW2LpiZhatrtf{Ka5m`YX9O= zrQ2S%x-%3>aJ}8lY(Fd^Au%;I1%<756eBUi^CiiS)k8*G2D_7VkId&cEX#cW=@eLF zTu&_o1OoNDy`AZuyCPg7Q^c#=ciM?Z!dbl^Tp-oQ+m{! zaVxpLl%Pn&I(Xd^~?=Jkoxz_2S6VPoWH$Z0ZX%qegYK2n7mq4c7#KrM_Gk=qrzym`2R-06uFJ#z-9^2 z-Ea|R6d-|01ERjXpg#Bei&Ky>+0TIE9}lSfDS>+P%Ts}Zfk}Q5P$i!tctpTv`uHgQ zvb=qM_IW&8T&>rC;$8bBDkZ`EeDrMN^kKb$@sY@LasX!8_|y*P_jy)0bvv73imP%R zN&&InzT2*briGV6+j*sUK;Ly;?2Yzd4=Z*#M@Fo%CGzo zh)C#I^%=Z4f`*WT8FC;M(nYg?JBjqd6!+o)u`k;@Yp<0cFbg<^@|RTm@VpX-e4I!S z^ZNe`yE2&XVyjkGRuU2t4h{~O6}iO|qf=8;!@|Py^NnIHPjd?CNFM{9ls!KeNC*h% zlgG6ias-)#Rk;)u6saV`@ zw~^0G^{YYEM2Eexp)f{%N^i&HTK4x6=4R)Cv*&8PX>RAXjQ2#z09I)2@|(2S#*pGd zsa{+b#J>&SFDeU&c({4~X${~uGSn_rP@AehUb-L0x^1^AuSXK-MYY^DmIsmwV!Mjt zsg^Z-3covCU;;>k9tbHf$Fx7nU*Q9qC=a||7Qf|35&Jw|ByvNz$=(k{5m|D48WQ|P z_$+Y(GdhcUAmYgz{>Oc|QG4-2%*NmjNT)NBMNa@ueJGX$E!CSso6UZ?;oa9%WV{ZQ z4H%RO)j_D%qk6g00c@apva8+gW${Obp}K2nlHl6gHV0&0i5MA}#%aG>RIO8%afg~~j^Gt?#s*lL6^|?Gnp?dn9 zx*DDV>;3OE5t)nD6MwGux98HSgzd4m=ovwmY7`yygECmWDb*%=7OKbq;@U;4v3dNQ z7Hsnt+k=X)5JsF0=xBsAHOW=txf!d7{xWHbi;$ra{!It+U48#{FbO~`Ldw{nSUS8W zrWABwWAB>CqdM9suU#yuL#S?#3KZbfk4T+7grj_wd>k^42}*=K&{cz_ydy!7m@3ZM z=4p5aLRq_c83FfxzE(r%^^b%l7ZKOIjxTaI|X%6H-C( z$6rNgwFLN;pdBbGbU<1{8G8Bp?dctWZhK6OD<|JzKoInDfv6t7C@=Gon!lx<=HYQe z*Qoe!c>!V2UC~p2o0bnHtJfz==HMs&}R%XM0XUG~7LiyDlbFhEefx+|XFY}^3;ffy!D~?K5kaOVL%l>~ z@BN$NQxucz;8-st8fec;%hZ^Cc(k)P8~BHRb;&YTd%U+18**i0YooMxc%^cTC)$=z zV8lV;ib+YY_@R96`mNTo?2=A72FkPLVgLFPA9`hiz=rqw`3Xr-Y(kw$pZDllH2_Co zmHUrLy*NbWXUg^j@9PJ+h}6y5Nvj{VvYzo%{f6hC{>i;EU>n_3j_S2}5tw9(M7Y8M zqDWFqVSbt(7pL^FP%^60#tRvpXj%!;A_>#ihxYoAXr)PHIordAn0lP|{nlc#7d}v4 zj%D=x+BiTC6GuCjn4TvNV^|D=A-FSg!n^XD?&{h$`Ob=>v*LEXhw~Pq;7tkWyS5NW zi!bSKR2@zSpddQnYn%3=mK!6azYA<`Ma29S8CmUSimD+=bM{)iTQY)Py~t3hzP@bK zg;PwZ6UW*}9+}&gI&(4OG+fTc$@g|h-hK@l>4TNVKv&BC_FDv&Ommva+2(7Xyz(_k zvY!z-XgW!jXw4XW)Kx?Urk2lGExI?L$}Q}(<;wMHLvPw3d&{R_1CcxsmC0CZdUs#% zVR;M9sE+e3#3ew|1%mD3ReO7yP-z0i6&|WTm)GlA5X`I*U7Eu zWz3 z4noK?)>(E?|syP3w9)U+*~$Sam^YuHsm72@h% z_Ulnaq!7_AB3n>#XIGyzVxA*`?PXBN#GPrVQ{Qu34h=iMCCY+Mxq!P;nJ|2%uVxQj z>E3vzVZM0Q@%wHskTDaBnFIBTicCovRU6C@mTWMZM5#>?czgPaoawV__TFs~Qe{%v zIcweh`c(vp&%+BU0RYGu?Uj98o>IlgvWUjQ3Gq zNqCr*L9f|$ZRc&je)#IY4!JM2SC`q&3%`*0b835Fx|&>#crm{8px4=J|LTAeAIR69zQd(XW92OCTlXshUqiyS4)rB>^ zr8U5emu$C0h{+dF{U!%53(=0gQ|Te@YE0GPiwXmVaojb1p=V)39Hkj*HC8#hPwb!Z z*9W)P2Gy}NFM)jOm7%1TtLBf>dF2f=zLcLd-XAB6W+~cXX^Nfq(VfkW7Ta2jy&{l8 z`j)qASUAK;*twZ-^~fixVYRGGm%=I-qiIIv|O;nm(a*- zNytC3=F0riI>pVi)P}F}bdH>uaTzPCTvZ1+=E*>&-NWMiEX0%r9eH<^R`F>nO~E_L zy|YU-P>HkhMyzggjE~JSe)+5}``GcvcuZ-&-t=EnKTIL=9Fo*YiSz1Y?S->m&e!5Q zqg9hz8Xi*WmydN0D5y<6=qoQAp4w_kt%)2cY)HuhQMJ>{TFWhPLtXt{PQMey`;!4f zKHdYG#6-_SJLUc%wF$m$yyBFLk|$m8{O&a0WDY=iuY`wckYV#)_;*$x8;!rv{2j-H z)7|`<$Mc#85=t@(f0Y0=C{2p5yavKYlha&HMkIwyhS^ok5CLVXFH7*(l})pPQV4gH>xg8`iL<#`E&~miC;nQ-hBu$b0+{z>86C;;3=Wu--0{zP-pPl^0&l>OkS`Ql zMfK=#m-lkr$I^8smx~VDy_2@bv<~nr;Nvm!1(4XAked5k5EXW&U8Y{@pf)96QBUKN zPM}GtSqx1^$*NjZJsIv8+ypsS`J>bwFDpzwXp$3H$^=KsQjWjll1dts(!nFD!m*;y$&EQUPF5%S$ve>EmnA|YMw=O z$V&6Ps2fy{m)--$~bz}hI51y#*>Twr`Mj)kgLz%?ajk} zL)_O5{n}mUIv4cedL7OcyheW0m^3w+vi=h|8H!E4h1L2@8MwlJH@U&>m1a#YHnvV~ z9PVMcO1BAHJB75;6x+-YPcWGEqvpCmXGn0BjHRA@V18(j9t0~bh1t`PA#ZkXQw71_ zoOSV(I=dix0HCyGs+xnwTc2K|;hl}V)0Rpy@J?*(As zv;JXXNY^N8Yr4xP&h8sB?x7EqZ<^HBuvPY*_Q67@I&ANOp6q736^At+I3VTjpELo^ z^)F;N#SljPM`*yGt!{_4CdG13ikcY)vtI1jXVPo35~!S+6cwVX?H1<8*s8vHWc{el zY|D)M1j7LJP2DvScf+`gyMGDY@4&fIpiz)^vM)eHs#@5~#`p)GqZ=uL%~$UDk>!3CRi?)ro-aqRF0u{O5g? ztA}{qvV@H%Uh0=TQQ%+{Gfh&+>wV&1Vg)4dVo<(5cubvK((d+3OQW-j_ZwZ7&-48j z`RX4$YHlGC+4gKMBtJcCn(9ApEtpI`K`FG>{-hAO);&Z~ z8!<}$z+0gg?-q~t)$3@w={2o(pUX9+U@OZg;PAvWf@%63imf;bVLM~VYVGM>( zE!+~BrqJ%{1nYHa(#Lp$|1u>71jqtI9~ibbd4|Qm2B-&1s&x|e5nv#SeX-(;NAiwn z_m+nkPXF?xow7S?+4O>g!YMG#W)B6IE3Mb1T7NqIiu>qq+ZGqkH)9h}=^+2A; z=qNIZ*ufa;9+bhnj+d=$*o0=#+%C(kj6vPgljY-e{W^K|uypDoPZ%fBaJgtG)ejg- zgd-DMz|B(;3H1YLKYjeL$$Ag#E&j!pw_mnUN9ffCOlb>5H3C&p)Z?*FdSCTLAa@($ zU3M#fdaRgu_ZnJ+Q4)3)wWCkIIwah%1^li&8NzscH?WP_90G|WK@xbC=zMjz9mJ$vQA42S$G~k^G|(xj{(mZ zGZ~(b&ii8QKvYR;%Xqc&w-3U#l3FWUJ64?9KqS)9^Qt}a)|#t}s^mVnn=K&``d1T=QP7Kzy5K8?^v4{RU7WwwHAP0`Z` z-o`Z-V82hGi?IkSnubU@y`S$N{W~n7a(XlkY@69pv3Gr=H5hFCcz{ZX<=|~l@HaNc zqkpUQCWivaV?STC0@zHa{$8%BPD1zg_Ii7J^G*9?0c2#6H`I4h3E^|%0FPocH$g?8Yyr3RVrAFd?rNb`kP*tx#a(j3Faj5X^OoA_-zVr;Da~QIT*C zuEU|vqo2ZGlz_DX4-gthq3HKUt^toq2N7_=66dP3x5MP03V`II6t~89`rM3=1^3$- z2*U`1xmm_<_%;Ulo4ezv7o1&VVM>rHf0eNTcNEbF$VUpU>boa_4WE@2qt zs?q#Gb9Ay1v!4iVt;*ztg*VEMOd_?#0&S-TO$0qD9s`m4-A+gu4e@^4!7Wjg$4~xN zU+FoEG_79}T$}8|L2qOlD>N=Yp3;Lj00voRRv{GMsuz1Rao-PIms04H74Cqb3QN*H zKuy)o&aPaoa$%VQ?Km0DgB8g1Dm40P>O$0`Vg~3hVBlfHGM3^K{VZcK2O{b@%VCsp(Fsiba z;(?%ZM8PMha>Y`q@-YIi3RgT4W%}ObdW(_i@juX6$O8J3`t75%Td&i-*>*cBEX?is zYSXkjBX4YS;6IN7(2gMWSh}I`p2!G2v$tnB+-`OAXeub-hD^WLr-JNcX^B1|MZ7yQW|Js zCPK}Es2rsP(lRGNOUucC^pA-)z(dVJ|rTJNLiLJ8VKypS#gCN&P zWor5rFoZg-?be~yp;d^+s==dJ+p*aP`Qm)5(G+b}|CYgU_yxE=z1=~dF#2t=+@!(M z=!)YJM|jcZOG_K@uatMr^ipWz5~e#{&tq^RIVrU_K;2hO%*31q`og13}?=r~9Xg1SySa$szA~ zG0ACOiLE}!NS_eGHj^8FNd&ssfB(5ZTU=jTdt0bDH8xb#*Z&&Y$!$X+X=is_Cm~G8 z$VjNBlwRe`)6K8tOxCiI(Z5&e0FJJDqj`G}g?J#v@YCPxe#_po!@e3B*9i73tEi~p zZ+E%jlZTD{X?(p^SoSGh-_jwACGCT9Z^^Se1wVdiPQM@IGbE1KxdluBg=+RZFMBK7 zpby7FXpZbT{_GIoeQK}mZDM$^#Bt9&xv~Kb=n=KYx#JRojm3amtV3{I27oJ4jO6FI!Y#q~z0pyZ@*Oni zxIznKh2n!*Z8?A>&-;pU*wgB9}UNWmISPTp5{h@MHe7T_rIRp`zHNMIB6_B_OgH4f{(X?%NLtUM~?84;WfLMqzcNB#uN8kM#xL=|QKD%AacDj1; zbe5WIb%gi2^-Rv@5t;Pp z<8Us(o8Z2k{N8%`DL7rNsMB?HT`Mq3^Qp7+*$N_<)qeZtl3s4p=g6Ssxk$#NA*DNF)`fN>ukJ}mQ@U`@eji-R<%!E_4|DgG(^jwB z<5`V#^tme_e$4Ug7^nKZJ=~+Y@$+eon`jVVJ;~y<`!C!56T|6ux6HBP*u0|%Y%Kr! z_ln~;vFl3eBzE?cYo{b~R-A*rxMrt5>&sW?}SMt|FTZmW;Vd!XwJZt8U-0eco^pS)3vE7xD>P=1po~ z3@-T!fjt>ZUj1b)={3Q-iz)&kpF2AlA=!cOjl;CPdLK-XW@gJ@qhBq{|Fk)snJE6( zz`a$L#(gLsmye83KdZZf;q+uyRLkkF4Dh9>u66aK76OMUHP;w6tV!xoo=N?4Ui!P9 zAe`4jmn1KzbZ*(3$1=8AIw4Br?(2n=oA_AlX{U)~%GcdMGwum47weoI7*PNI=@jEoCvgd}dL861}(`+SF<{@7EKYv-wsw4f@jxzInVdht8JI z)(}QAZfkb`q9S1RG)QN%saDDYD^c1k_~{him!8T0_cf#xA@NaA)^iw*Yl(%ngO`G= zEG?byr)x67L?ft{l&#mw+OVfVCWA-=!m^Iqp~tk)f999;@L!$|QAW7Xi1|8`_k7g~ zG}Ay;1UeGWgGMkZOp*mk1?}5(j^6Fcwflop0-RPILFw25jE>QRUm)Ms%9={!+!&K? zzYypxndH-yk?ElUn28#6bP)iV-4!)6nUL%2X$dt175j2LvFcT|X?z6LK*lLbbvlFz{TK z=A1h}dsWBaMOjZwRh2$f0Jv}1|CCCWbp#>`$&VZ)euMPQI4&e*m;nwYMk z;UC)()-62Z0@Zx9)hX*~yf#brZ1+*)Qt1Qy=~d5xtUq&KFhBQGPcVVDk38YLA$tlm zkv7Yd&xS`wTef&p=8o#^%!hDO@bKw zq3Q>pO`Q6AHSz~=jx4U()_#p=#Xa)xv?wU}`YH(*kv^6MonrMputS^@?t@KDX2L90 z1sT`M<0J2G`g35AdzWmAAK`F*ZdW?>s|OaJ-NO4z&2vf8Jk}=`&1L9c%GGS2dSgOs zSW~I!_zi_HU$$CKU;D9h!5A)1H8S657xDV6P7iuT=0T-hI*MYC3!0y>yh2OhO1DiW9T@?V2=8K!{aC-`WYsra8!`IS8gX2&P%Tm@Hh?*eIjO z+Dg34Tio{Q4H`Vc+oQwd`%k4Zsp?;rH0xI6{n5iG`}npgP=q0*$H?i&qElkGjv)No zoW%-0`NZm{4$+-bvxvnxx)~ug=nQgH+U=+!UD_^L&$}v1>>Zho0R&HuA zF){7bp-Xr~c!r%#gKhtNCKTQSlz-2JLgy`;Gwf`_Bf>j%>|$bKs+vuA8uMV@`z&b(zYVdj$2gpiu9-C{3>WnP)Bh+A`hTIYzW--BUOuB|5N zw@Chctr}9#(K8NSe1CIk2QFs8^R3+{Y>d6(GKmnz=dA_aM<$fe0Uq|(6 zP_5VR17=4Y8QCmt|3K-f(eb~vo!Vx=;nX(seqUlB$P1R_#N}Q|FlqhzjWODX=L{w! zqukLFdWR21QMn2v1rrm~j_o@iIeN(5&E4-!z6qT8__*+h@Q&>}EAzhUDt#b$Wrt~Q zjV5nDIAz97F(;MQXm2;N>px>0o9KfO5;&=Uw}%3+?=G4cWXgK4{NI9xJ_+wf&AGft zHxr^pkeKIINCcIk)s;Y-5b}Mu+BehBwfTKV&9!j}rgiK8xOlq1Jt1UVd#k$}&iky{ zRr}XlX(I8<2GeKk>#46NAcR2Dj<9tKr#Ur=PkD1^S^G_)P;eaAv#0-u)c03zoKf)d zkpUA;Ow9xWhGp5rmx&TBiA16$5sQT)QEn*%V9$y!bKIMb-+hSv;g(1y&8q5Fx$V3) zflWJA6)3|XtQ90(cp}b?YIO5T*QRWmvT~DclQZ_+I+Zn4C59St!ooH2XWtlZ~P z8CSmDQxsKkoH=vG&(DwN`2x$|zD+)KBseQ8OLd_{qSd8SS5s57;%Xzn3m*66kP_5n z;ULU+&X~v}nuERot|DjwaSGg%qlp;L9AXCbMW~W<_sVf8tXR}3bh0WC2u_?h(W+Ie0?V8Jbm07~ZVE-g9w?EV z<34`;n30holSy~%+!PswQmJRpq$3Qy>)T=;=wcwG|4*_;J%lj+mfO zC>Vxeg{(*@5{g7Zp^#-+hGB9muVr5BznZz8BqrAopoRb-Q2pn~2=EgDDCgB$00KJU zLs3+&a?b+iN=Zp6aTlLb|7W2-^_M$BmStI%6^q3>y1GSfpjvbM%cLT=DQ^4Ei_Y~^ z6h-Cv#IJArub^M#Kv7hlPe1GbPxwM-{r@5Kte>K&Y{tgMJkK)>Q}{~nw?rTi@H}s9 zY+QJiOHDI5&kGnv{!RCQP#}==yi3iJFE$h`_$8vDDC+AnG&H<>_imj!b;|df-TxIl z&)>a!*U-?g@T$7iOje$_IkBx1%QEHrmYe?ohA4Ql^5hMt8by4;oO(3%Q`9%e*4Fmn z!-vt)(IsB0{ZBJCHa0Xgw6(P@ylPzQx~os!p0)2v%+ut5Kd^sIgPLZ}HB83%)-7v6 zn))f~+hk{F_q9X#$|kg__q9W)xab!-P!vUJ9GdzmilQ_QP5l%_Q5uJ)eu|)x|E>rCpx5_*6#~@zm5_L5qxTbxiLi_? z08~aGKmUY%Z+~?ZRd-afF?MwMX>SCmtA24dvUf1EvHrrwz|6o*&%(sQ%EZpX8N{kS z3jkjLiSNS7t|`Zo{#qIwbn0ZrijBq zzFid!A%uk${a{8j`4qV1+$PANlZ0UIxZ1a8=e#>SoXF}imdelSktrV%h>Yzk^yLEr z_$#ey37xD%>>IsyLq=tGc7A?-TG}e*WXONLH=^?6^iJ$IDa!;q*Z_QcXCU&TNB!9{ zq&g&IFkdy|KN+V82qZB%*GE z)o4B;z(8dRP@O&YY(B#US`GuF`_YQZ57nF==o=s(jY%0l^ zXzDVpvfr=?RS&h%FhZCww80qC4DG)@{rUuQ+!>6=gH484MGAqJtUV@Zu?W!b+0R%xT}V_p%Ty%=l+sFmkRkS zDKQi;u0a$(Il0ckWc8)W6t2uT@JGLtggDY2e8yV8&dPWmMNm-^-ru8_pX7G+qoU2j zBPJbCGAp83&fPbk5z?cOwA*|`OC6eKvP#cQu5-I9Auy*{9*AGuHnEXwCC0n)nX}_2&eG+aAtk8lmW@e4#7Eqc8M7@pLXv|ET^(O14)y zsNj)Ub;!=DJfqB8rWyIlv!SWX06p$r7LyeBJ*=5S{EMePjqS^gjHl(W%9{{zdEIWD z>WtJ}LVTqi0H9^K;@&Oh=AvMfr=UQ87ZrsZYC!c%{*@VwRh!iuA+Jqo^2>7gyw}YWXGWzOvHJ~Qe)tZ~; zN7PkuV0OS=IiX+YoSBTCRb>Z))x(u15CSL&`{Av$@AvycI*dU;DKtjk3)!E7*1EJtxkEFu*^Vv6bu zMmG3_aMJ;Px`n1Xk&0c#Y@b&kEiTjgcVwawR7ka`M9;p2r)uszBWP>60`V60*7UST z1K17vmO14VdqPsSVQ%1NbB(CVe2wM{628x2xvdxd_#s*e^vvnyF6?L)L&$trt$7I0 zD3!`Q200Z;2Et^AEs+56;X!yko6?26f4`x6zNu{LMUxj>!W{dHeSDx3vP*5|tz%N5 zUY4uiaNRO)k8Ryc^U#rBXwW}h?jMs>nPF!$&3HZjX=p9L_lUl6X)4jV5-(>k$$}g5 z4VpjA>9d;V(nldr+x6u6xj~L->onO+y^~d)f=rD>Px?kGom{`n$Le4Oi2kflyv5#z zXfaJ&8AcT+x_(-#_=r3e#<+YoU1|y&eKG)StFY0^d3}1>x6=&zR^}@Y5YmSyCdUf} z69iFs{?NWbzXn-Yn-LN}T^9Msqgtq}KWfCq4$(R(sI<496=pPUsaTf$g>5&RnLK!e z;Hbvof5zWaoV_VN=jJ248dm!#aWU~ov8!-VxL$yhjN2B@a5iqi@F&YO98E2+H`Z9< ziz-G^%#MXnTpBK6Y<^PiWP9W++Xs6*1UJm`wVj8BO0x%G`bI`GsR-i)wwg_E5PDFs z#S?`Fe=eGhf;(_xOd?K{%y^I+m`W0LpI#ZN*WIpSBd^fcc&NU=-;+RZbX40g*A$T1 zYa84FDFQB00RW0&O@sY|rlW$kDCJe@riMLMF^J;m!9wFS6@G*#39A2Zs|z<3OEQRx zeLP8g2&*j?q6Jk@q@haD>UuM=1cjw-Aeqq-($g%PEs^3#-AFj<3#Q21<+SD%yHV1U&>=q#kG50zr~wr# zQlr+)FsQid^ zy|l)t!i+-w#r=mT3|g(SH5yq06%Gb+YKXm`odfMt5bVRJkk}Q^52-`nR+ejP^FyWm zGOpA^Xikl);9?6~a8?r( zS@d2Z1d=hQ4#goL$oTK&lrr5bSfelP-;afBu)jT)zS*h z_1X`9DwX0E3F^kC$Lf}WGlQ&+I%C765J%LGR$D6>(CHcu{veut!V*#{{XWHs3+P&G ziyCe999?74Z54M26Gj^_A+sMKEK|X`NmN-wS^9%Uv zXOrA~tO|fY8xMkS2NLT4nSuC)K9@!YgU@N_m2YpA8WUOun$Sv1gf;FCM45^Z(Ac{? z**Nv|16{Kq0@5KUK#O%o>KE zrC~9Av#<|m6$`O{L88Sjv(%QXshx3j1B5^t4}mUH>s#Aj zjh5bc@)VXTPSx5OP4z3$^|KNZ8jwVd2b;9-yCzgbEtYFx4c?t5!k))NL*Af4M-v-4 zqsJ<+kjdF$%UhqrixceCE{7<#Xu-o_Nm3=tq6nhQwx^X5NA8DeH%8jO4+-YT)0X@_ zZm_5)bj7CyK~Z^ZT$r%K{*17i$(OamBh*gxnj}gxNNPpBpUn;n?4LMkxtGdHtR}|k zDXxFS#h|u&XPXrV)x;6yMhgD}H_Fg^eg4h|iu~Z**Xm}V`c>k$I~q_UE>-_H(uefq zwPx268ka_7N|FHOA^M$Ei(j5bug7w=czK(ED1Rq-Xs%3BLdT1L{43Lgom|&&*vyx4 zKR&56o%Wg9;zkYCxbigoh1v1H%(L=BBX6>n(%*lC+()Mxefcn`uy~fNrRj3}qwK#C-FOQT0h||79R?^?(+X^y_P%aYk=T{u~!0|IrR@xD;(&1w;P09}*y3 z$(ireUP-qmHA3z;c&j#Zvh>H`lVWwW5~h9yiYaDUE2K$`RF@n~hDYFduWpfB zSi1srsR~cI4stQA_RMg%hSu7+u2mXI|2W$k{JHl}2YX;lNT z$j;iv5>bQsy}A|82=V2{-sMqIQOI8} zkW|46b_a{J*f?!T!Zi3|qN_GynwCijU!|5$(rjByh(c%%F{X!Z`$2SW6(t4Mm?N|L zaEJkKFgrSJLSLAe*_s`m7`mv)CMA7r^E~MV((|~j%NVx%9uZ;QU+nq6)Z2Fd!i%^)wywVKBS6xVW&;%fhcaXehY2xOjLLdwX}4XfHLC@aNJaBfnsUIyg8SY2$w* z%*y-kXRNRPZMV2gK8cNzGWh;wEYWx*X{Et#OUdE_aIS(ah8*xgOW z!V)#CrjyBL=IF>aRF$rY4YlF#diGfW0)cc#JX7l71Z7eE`ToDGxK^?d{xS`!djD& zkn`u~+YHB}JmJp#jMuYo9MDxl;$ywZ+GN6&~XN(4uTPY9##V3p(rm z5u%ceB18|FVV(rrV_*1@DGFN`)w+e<>ss;Nh9d>n-1H5*G*IDDIG@c@7Pf2C%Iti+ zp*gk;4%hF_!a5fH4L==t%ti~@mv#Qi_uKHVg%@4+zTIg2C_r*^_;}Uh;w>OhHuD@u zO36K(I^}qrCVWbrPvO0-)%I<*)swfw+H<>Q4>N{(wfBYJ)q*h{*E*DvxAeJiq9u6iXCyLP4)|zjgxYj?faY5)t z#c5i-Y)aD4s;_4b7~*U0;1V8If2TTlEEC=xK${2?s5vDcO#BpdAE9quX0=Aw6QY#{uD}cXxYXXRjKdNYuU!dY8xhAE7szwe(aMRt%jx4 zaKjm*L8{*QXW3yEXQZxypk@0jcGXzJtx(ggeK=E&VWZ5c3!MNBM z1?7)@SSbd`qm>~IS-NQg4b^9s!l3tYVg-F%Ov$k##o{N#hz6@rh6Xhb=>KQz(E_ol((CAJo*0?Il;@u9_*A%0~!xLTe=>VF7 za&;fs>lvH)l+V{XE^aIGv#M>*kcuh7vDEliz;lWvNC?d=AxzHXFvfV z1(EBdYGkmHX|R2u5EHRqB0-#-7PK>PZBN84#ELcKdf=4?jL1M=8PFW41~$i}!wK37 z3Fr@|!?5I`qCeLL&7dczhahr!k^M1wX#?-R@~oTAh5|BLXDmI^eA^#00@m4SvxRaW zFh>;J3?upBlA#tqXy-@aE4t&R1Z8khxgsd2$$JVREf`b`WK6d^LFa;+4V=SK0j6>i zA2>i8ew-o@Rn^vp>WdH3E+!SIK{f+LVBXv4_vlnkd!0NC5Lo_duEcdSXG;PL{9#lw zZbZ>^*saeXY>l@`yqNFvYQlD0!$W9A^i9zkdVM&khu_%!l-S=vW4@gA8sy~+n(on2 zLx1CQ84*;fr*Fi^%{M6860~d0zcB^-LfZwbb=t_L{mU^-+Ba{0%)_tWI{X~dNDKHz zeLr4eHkk2ea?-geKoqR8OLA6t5bj6Rta{5Ix$Cl`MjF9y!+|*FHTE%5&I)Q?T=h7b zt?FeHlE%v(bI-I^G3ze*T&;-;mhf|VOf6>=#9sy(`?0=hr{A*KE+wUOccZw(k4wCz zY~r{<>*<2I9=7V$pjE2vZ^EuOfBdbpP4+>nVel=2+sH7Du@>n>X-*Z0CFnSTXm&y_1%z(`88>_V5uv0UXC$*y)VBnucLsj&>X0iiPeFWNMki`Xx_lH%xR8{#Q;z4WjcF7?y~O5kJA2q}#{IA~$-IV=XsWq0<*9 z4>-3G%geU2)VcDrMb?MsV{=Y?{hmXH5O{5j-XGL@3B{*@#ey6bxzEA{zv?L|t@alU zijMMNPg$X{U8^Axpp>Nt*PZ1fT!~FYSr5iDH=YSMu&eZAYr2h$#Ra1;gs6JVQb1>= z!I1F{x3*>_gPI}P1rMAaEBF$p7koc zOQ2?0imNBS*o^SgV~r)R=J#%{^f+tFb`NvW_!pgsZsvK;lAe3gEA6~`Z!pBIW?W}b zP1IuH3_$KwU-&Clt|^L5*mPd*GMpiIb2Rv#d#n8suNM90>3(axHjkMLQC-=5MiZ@= zruQH&=fk1PQlG~>m(c?S%icCUeNZ4OJOvwoVY{CVo526J{c^^5_nU9{jkn@#^}1c; z4bbc6=7-mLld*{1NE8cytsisZU9z4}TaE_-`qYnlKROC-^ut8v+*`SvUHUJa*HUG@ z96z;J)*iV(n(x~9>^k#)@p-CVjn}@TU&)>h$SX9vg6`T4T-5cl9odshUzn@bU4@Oj z+su-SP{EgWnb&Ty@Y*?b&mPfnXJGu@X2xum(BUEyi0a52pu_RxEQDzwov}}P08w&b z{y{nF5vaRLb;kE|{`ikKVXAeCrSo2I#6Q&f@`b_}?dO*Z8xfDITYd*bBuVwhc?;2R z=N%_NLP>$ZOT5*rhNaI-+GfPMK-)xLdQdtjqh_+V@`32yPj5yLn-!~L}6^(#PKJZ%v$UlOh37`Um)}T~oZGMlP^euc+ae zx^et=ci&Nxc2jGat9bp)FE(ad8?4&4V%*> zYBIIE-VBGMg+m21x_RNBE#qGZ?=>+(u3VqlgRe|#UvIT261iM1!A=%qWnr~q#Mj{X zht!q!jMq2=&N>$at=W)2D{$fp_m;>b0@-sO#i+_1yQ7V8x6UTS%`lOS@@GdrJ$Dh| zL#d4PHQa9IvYW_=9t(osG^EP(p2iZnhLVVi!by?&m1gK~30q;>IkhKeNqkK5n<2L; zIyx$x>AZt~pJWOVhnQrHN1m#a7a6UWU)mg{6e{Y8dZ6wt<}&;Ej*xkS=$tp-kCX+0 z&DP=d_0}z!nQ>)Q8a4_%r7{%(T}7eRm;*tt>F);SS?>&aIc200`Mi^)usyqC}lG9?&T*@GqOOesmQNH-wYbt^yBqG30Y&(|`gdgJuT@YeN$YsaB zHhyuQHM_{BZc)m8u|~2TUNw7wU}o|3YpuB_<9mgInYXQrmt|~pxK0EhSoPT~Y`?u7Wca}cm}h}!EfHP0|CWAjo8+cBmHn68;5t?+t2FmE zA(sx-TFplAk;nYu7FA5F9N;2Ia?jdyc8H5c0)*HcuNhY!y(}(c^r!SXXc~)-xiLB5 zY*j_gs^1`Q+e&4k?Tf8(-++7L5h2EWqdxR>!bg7(h=;)#YGF)73p5MleW!fN?P%D- zZt8G0jjf`%eq+9@jj*M@^X#!2nGA+UB|eLXjMv64?wLXFVIZE@v&8LdVIJ*@)aG^P@}jOVCjYo`8wn2 z>hy9PYY=qm`(>W04myhHkoeZ{;rbS%>o!2xYd&JqEQ^O#IaFMDV7#0>p+v(r6XH=# zQ5<@*TaE0(J#P+usMJm*N~pXV{}uRI#HzX*i*86_RL0GM2HN&bgAc4z-(vN1*g^ht z%K+T&;C1cOKe~9%A|o8K4WP!C;q({sD>`;tgnPhX0pncySO|>tKw^JRz%X$$GI2`> z*-avc(K><2TVy<4Ja54Ot2ilO3Pq@iP_}~fl35TZXCPwq3-0f<+kqPk;7u|iJGvMK zs}@6&h?T@tISaY{l63hW49~L&T1)At;%W-A0-Fk)k@u1We$7u ztn;y)Aw-dGbWHbW85Ww9vU1k$8&5v6@_6B#-!_9~Eea``N-$2Rw5xvoJmdGAUG1*j z?Jcy`MkfU~ach`Qz3&~1@H7zJL*!R$uDYQG|MK0Wsy*ov9iIL(Iy?E_T!53{1xL7C zwX0Kem}sx<{hl;v_mE3DDAQc{E92R|aDv1sX9VDF+%?nm>t1@IH6;Uj0s*S14$ z#ZR~&U-Eo)R%lYAbXAi!lj9%`uY;pDEBJM`PYz~ z_qJ5)Cm^E~l3gSwb*7DHejYNl_?3rU4x~3BUeDGt{>LXJlOolEUW+U5sS|Yc_71sY z^fmd4)X6cNVq!=+nHjf0C^HQ<4n+^X&7tNKR8&H_$G>rMS79amJw{qBxV;V^b_h$j zv>DQz%<}0Z2L2rs*oDTfgNz#kui_KP_xckHRi#4lQKv@q>M_akSMOG>K?Zgu-_2 zvqJeOgl*hUj0z6r9P#wT$JNbqOogT>-fsmAG+TjTb~LZw##Q~CKB9SfEEf8N}ra=JqV{2upHf2w`B z2{i+Q_+&^mRP__%999c7-KULfR6gCV4?tW8{9d}?d8yB^9+I~A#yJ6@&>GB56kqB` z)u@3nB* zX78hf|2FV?CXnY!pJh+bEX&K(boh5O7^PRwu2-sST$;JP9XrmcJ@V9ck8=SMN>QGm zezorh)98=d9#cSjB7Fc^!J6_GI2&= z31z46pFVpF3?YGfYQ5V0HY@*@h$pyv?*%yQQ3H|0_@8kXiif_(8TFV@*r&K3XxCv-?HaUF8Zq`RTI$Mvkn9vA4bmnGGYwdXop8~v6(}c&;IGu6ifWC`gfLB< z%tp$b<+RuW&ef%j=30=^k^RKgj3Ric*6Wt~g4sf+DdK`+Im z+iccFKQU^fxpR;9Z{cLcaMrz(hDNjInSx*EV~YvdmATe2aZ5cc zZxQ~2Q4o>-6ay&3)O@H>YLfRVA^u2i>?oRw`Gm(12DrOPlKK%IdoQE*y)1S$<==Lb z##(lgnnaK+&XwY+yQL<2&lP*f`A$>YQFPhF&+~l{&|r=QDI9q4X2oD;cT23q8`eou z{F)4}mCsyWx1*cJ=XHu2I@-lbYQv1!wCHluUjTXL_o(@*UrXmYAXj~h@E4!DExXB$ zecDpMVPPI|a!HV7;z$u4{bcK*>sF8k;rgSwuouJ|{d33o+FdE?q}EEc%jO!i;hf2C zYT5^;wvlmb+9??dPC_;!Au$(xr}{rfd1Fy4Z^WOQ_+PeNvfUXLs>_oKPXzVHl`5|u zATJmnk1!ZH_}8ZMJ>tF4i9%On*(}}*NJ<|)_B|*r&H}th-_XnoX4`pak71JSTB>?a zcsL^*(wN;g~?ID3|XNE5)6_I~o(QJ;{bFtC0NViq1y}FVcvfEFkt)ci3j0vnV{gt>UJ(?UA z9Hm~th0Rz(3yWQoi-)6^|85hzqM2at9m-+pArtK1YO@S{yi(^r_G2eXTjaQ-Tt&!G>so-)pz*pWU?EM&ad*K z*I1(6kMEh(pz_@@Yr|ZV6$8YWMSuCRgf$vtLTfuht##!Edaj}+4&p|rdE@h9)yC^% zBjA&|qYb@xYGWxjxVT1OQN=Ou;w1=VD3cHX;Xfr{g~iS_0i5ZT3GZ3AGttG=6=G-P zd*_Qf;-&Dlnu~y!DkBMiDvn*Nx%`2S{%jUqO!r8@^e&7jToX_|2H!;Np!G5T%@-5j zsyq&(c$&3JhX)9x5a4}j+>`RSKA-`8pL`=?O(!5jpY`+H-32XH$c_D6-%GfZT5Ri} za{?~9G553~-@iLgYjz)N1OlLA#4d+8N1XyHVrt!FNX|jy;t_(beSrsRi!RpA`90>r z99plqtWMTKmz*z8eOyOZc?1niXAi$Q(teiaA=Uca)=p%arXl!Z!9U5B@oiT0StT^+ z90fBBSt{nidb3XDqwVcmeDCff5vb5%Ow2) zgrfbep0LJrcfE}^*;AYQnBn4#KaV;m?gKy!5==`w_09Fj9n2VlZxgf6>OT=yHKJ-9 z*K|^~=8D5ruc0q<#*ctdvhX;v^2W&GQlIx-jz~-V(_$Hlj3uk(%OX*-Gv^BA=u39e z;**vbg1a9>n}&IJ->Qh<=-O(_)xyvs?B>|uuPld`$=DkfJ{r)PdwDpU(9-BDxBs#aCEHch z$DZSVGZ5JK^yW2gH@8(|Or#X&(y(%XFoFrCUSl;-k~=agjmq{xP(ooY&ck}CE~h#9 z^+R|{lzM}l0|#B(>gi1G4${mkwjB9&;*p(m9&4?FbVB>-;q<8-6GEq7FmY=Vg45K#BTp?02NNLwt-x?+Z7wDow6^eBW+&Cz!%1K7=B7Rovj{q@ z_h;Y!BAh2c^V>VuS??lCv}f*<8GGpI`nsN)np$91p3TD^u)&g3{XxOB-;YG+RhSgt zl}>~M*#IvrG>;>_haFebE)z^fNac?w|EwTkc&-fMM%F?r;SOY8RznJ)8czjJiW1qX z!C{#W266;SW4Rbr>|}sY1#y=l-5#PZeNzcVY*DeJ|Qqz@h+PPdR_dKhfhX#2fuXx`79u?{g8nI z@xp292Q+3G6##W-bd$QDd!iAb~!YeEGJ=PVTe8=#wDNf5)tqeC4eUnrPk|ULh zLg=^nEMpJV*6uB+_pL|estsxATY`BtR+RBv*fImDZtR0zih)f@K{A2b^xx??(ZI%Y01%Y?$^m65}zr;Xfu{a@IQo z86IFf%RGzLf@-pU_VmTyb;V#|(1j3B&yQ`}xO;9)_ujCgh`bKF@NWop3FDIe?C?CN z6nY3Y9PpeW*|xcQuaui_Jz^q>j?}v$rW3G$-)Zv%wT>^~NnC$MqW{%AJ9%VfVL4rf zC=nNZI7DOtJ0Z(N3u0bE4D|GDZw~kFO?ZzY?)Zl_lU01u1-#4^Lf^R!0%$};PH&`+ z>8zA;X`X8|hA-dV2@hbx|Cr@4ooeuQFECJk=QG0Eg8y;;oj%OT{r~CS7E5ju>g?=f zVP#cPQWC8F8sIK0CnqN+);BRx>8=2k`RVu3+av-qvH?zSPtT4L?Y9CkeSQ7Tt}c8| z>*qpDl4rF-;yFeixE@x7#~G=un}B1Yd8qRi8mcH=*ivNcXqO^BAQ{^GDI!B>WMFvs z`u6s9TJyspHX$LQpkSL^DeQ)zbW8VRMA-%5s-C)6jkb^FqxI6{DlH9N(iy+a-LXy} z_NAD7H%&Beo;7&V=|XJcl>dueS~(2ML;!lGuJ)S}cR1#>Sl5mCYCkGO>9w?CKLn^!?U62@jHV+A)?6sL^1k3iWu=SfQu+ElgUBdJeEx2> z(a`uH4OHIMVEngIWQQv^Hfc3pFZ)Ixd4CMsF7PdS9)MetnW(X$v9FVk@AtThA$t^c z0eqs=i4GnQ;bmo8rMqD)T9utES0@91MAMWX^nYSgQinNQirEL6eDQ1-m=CS@TJKH63b5{c!%GWWe{HMPZZ6EK|J zTu6i_g%O!mt^3d~E4_HD>=Ns`nHH=@Hr5+ky;r4ysLzora5+Yy_9QKE1JqQy8PDmR zWm&(4zC7<0y3D;HTxVwBBkRhTI?c^(HoqAPcKi(|az4*t(*F!mz+x4DIo#UqeHL$aaL10C)He?;K5p+!QwTCcp7jDc^gmJSC{QBzJhswaN`{Bg9)cKW6#fh?{| zB{iQCtk&j|X31|Fuu-zsqFoK`LsO+R1)Q??o*W$L|BGzXl8;_-)&d2>EQxni~ObpVy>yXm_9Dg;$ zZ?a_ndRUq*VCZhQ_4LMPtM$|Q@k~N0g}bf69{nt7H~9+!mtAuWly-ZuNMFX+xijJq z<37(Z?HNzLC_=tILe{5h|NR6&Df)cG;^=DY@yU&}wI<-cc(iCzUY@@%S)^jDo z*mGjIGpP@coX50RlIj~VZ8l;U<~FbFm7+nHogAJptc@InJbqK8w z&MFOiSiLSA%7Cx_Qou)kSx(8Pm%!J=J*|?r(`g4I@8g-nkoN$G-Pz}wJU2Sno&ZkZ zP}t+NF?}aWtOIc7&uo_yMf%W$U5Nb$qVq&oL;Djs%3KV? zRexNI_#&b-sGQnpu6kjKAdG~FKZjYK$Y&Y?mm8{>Cj=9f9+iT&dM_Xeqvc4 zSj$;W=leUG4M(7tR;Nh2h)br$VW5J}w`QExD)>wd-^c#huMF;yO@=zWh}cL25Fhxr zkQlRXR!U1JOKCh1{Y}5MR$DWLbW|n6X_`7;sPFbvaQj?0cr7$6eAeFdAaBgUbi5;-KYDR4XJ? zGVx~03Xtu{nKhc2l_IA}?(MFp+M)#FwWMKdMXSGxZ zyFSrN%Cz1nPW35?)6A?`M>8S2h!)$#Ki2m>O5;eV>ZgWXk$wZ6^p-VNc}#An@o3|l zXmoeAZ^buLz9FwmDF5>N^G~?&jMD^v3)Mpx+7eS#$gS%WLckkUdgzf4xx&;(329hZ z-w*QIZ+kBCd=>UUud~c1)GJIfv?QUPKVu9G@v)ZU;1Z`trq@^3!Gyoc7nb~erhuMO z*$WyW&uZfd_D7;sk5_eoh{&pbOr7BqQVY-H`JiMHhh>^pd(IE-8Hat)m%E+ZfH_fk z5o)}Q7<|YK32ct9=1GZy+OhhCbN5i(smv^|X#)R1_zdCl>m8&Fh+^q+e`l0OxgTcz zg$mSGlo$P|CQtEBZhUrm(DsH*Rqb#d9E8Msh`n#A^qn47^Uo`+^fRz-e@J#N?DDlk zH&_U!^g)Hi{(AHl6a7w2L_H&u_%} ztf!u1jMbF_HD)KzRI2VTn}POz-T+~f`_v+R-5Zm_tL>lT(FlvyH&|4H7*PT=nc{>T zxZ_AcZ74Hm%q};3+nEl~4=25N^j~hR8EX1eGw0*TP55^ww=J%2q(=vDaG*&4p`U{U z*V`3}aao3RS0nVt2u5O-td+_q0F~CDghR#r;~K z!`A1$y3@-lt0ogGxjVb%&(kHb7fpDzHb+=dGg^9rJrnXU?b@jZHfo%LrfJA-gGJG_4RGJvYxVK!~YL^}y}SbSh3h8VB!LnkOh z8Fb%j%5|tX##3!l+W!X~x03sQX-4pMO3mTV=e={iR8X5VaqTQP=~hv6Nj@c3QByr7 zaTxOeDR7x4M4;^PJsBh_j32vdCx+)5AJcixrr` zt}8s$jFUl*-iUEacZ>Eo(L{n>beRz94}CVK9@kUEz9WofkAhKZu$yDK(U(WlHTKto zj+oM9;y1FEY!Aqcm3@)ZuAE0jv9a&WhZ+SB%Zzm^;s93Eox!4<^>{Q3+aAYZ{BNk% z3pVx{9q|i9r~Q|+IY!OHPVnw*$Bq1^Ffo22qmLIIFI1dFEwx4JKZ3`R>r3-L!CIuH!5f}|AOz1^mqT`4)-E7^phB9dZq|M*S*kx|vOK|O7`36R!?>yts4W*}iy!FLiZ38L!zOW}e zYwsjljNF<>uO+ZQ8!f+$1XcG)rr*yd*kmkvn@mE+Du)k(=xdN;U#m6Dx*!^ial`8~ zWMjGOT-^eE{IdnyW9BL2q3Mr+W>TT5>i@*?SLiY@0s+1iF2{2|4(xY~r1K29EOd4u z1OmRtp@g2a@aWM5lhx2E>-IB`i*-f0o!ik?ne3+m&G|8b5(-%w8|`b53mg0+_Z3BFDc4Ri%GiZB)K@PS;D6!-Mw18*!x)c%D{=CBbhwE4djp+8FdV zDtvkUpQVTgUF3neihR|`rJPkV49GpmR51Pv+CWtn>Hj+?`b|niPVP*pSm+)n@(+b4 zLidf2+5Y}M3_QG#IX%M7kUu=SqvPNk7q_3hLqB3V<9pq`@BG~MJ)57No<7V)d=tLD zzIJqUBzVv8-|@s7)4KvcHtXg4ca`rj#zMS3`2F0<^Z&uR{!eveMMcH%u(W-{l~f?X zDVZnNf3^e!1~Q{;ZEjw^qmOA)W@hG%jg4&##?0C2h@*Hx|4m$&m&4o(&GrzI7C={P z9CbB2?kn77@Q3U2AJX<90#@5pf$tqWWUQ=HOG{7hbms!_yRpyD&jPhr@5bJIIudN` zb#e9oc{5>uBK}8?sECv7+P&Xnrm^wvQNCqjCPc=9*fA9o`quNpfD`$>`8(I{jou=A-zNLkUrXa@IhJ+jb096P|6eb6IsOB$}xQ&o~ z-goAK3on;n21vh1xDf$q7P7wf9Az8kcY1w+$)Q)W%T>}Xr`SMAhBoKrxW0_ zzdSp!qv6lh=l`gu=j`BwZ70*=X*+L1o(tTBYU$+|>wRTY%)fH?ZEd_8JjGQ)+wBLa zbiwy7kEU%}i(ge%> zWRsplhZRaVs?bcy{{k|1DsQCY!N08OT-h^cbikokuhB0stUTfKdUZ3r*O8_XYrgz{ zNKEAZWB;|lf#2DGxf=(;Xq+~wN6x(--K)z9LO?k*y1N|2GkeS|J|h`De+8HGb^Rmr zQ&1L2eADK3ztJ$!6tdIPM6q{DA2otMWkAziiD_PCvy;hx!l0$o_+&n?(&`cAk46Xp zqP@RbvwtjG^{wGA&ab^y%q=)WJDc#`!k#OJX9xbI-HpGPYV|oTv*VgRwrsB-qdZ$^ zJ1ffScHHQT81C1|ba^JS0pAbzakRZuee_j3PlUn>d*z(ET9p8(dBVmXpZ_oR-a06b z|I7RBf#4o21Pc%#K(G+p9RdUh?j$&a26sqsmjDSK+y{3UBuH>~cOTpax%2()?z3BW z_qp=-y;EH^)zv-S)t~O3exLVwozscM6NOZ^1_T~>nzqNQ?>Zf}O-sbJ3L0L)ir!@o zdAMJC?fjkoF7smeZfSs9@T6d!`QQF|zI(bo5aB1;H(WAietxMvuh>03_xS9n4(1io zQ9L`VV>H!w^TCqB-#fr_B{kW{%~^lj*(%`jZ$kBol)~)5BLUz_-SV2pksrF~RL8ml zSr*ur%qQh-dm2HmCpIs5%BcDC>pX(x`lQ^d4da_XVK2+%Yv_4{+Qty6pyS7nb<>rV zqUWzr#R6AuqwwBo+88t~EAaJ3JDD}gHW`H2>h;?!gs;fhHBpJ0bOc@+c6vnd^}1r8 z6D}l?ppTu3)b|{aY8{u`Sua6P1ukEqw)4?p`X@7RPsbvy?tS^`@Fmx4Tvw$vPM#fdt#=&?@;{QI*;hV9yFf$%xS4=HDKN@t_004@1v8YUjBxIGX zH^G4)g-+n7tei^S&wb1SY2@D`JBZS@HI_uN;Q&M&`3e)zZK68YTk#)ygp{Nm{Bl6M z0oJx_6Dcgv0~aC|C4QXL&n_Th{F_d3AOX~H^(uVpOs38qN&W@EnibK!`t7MpI*&P6 zG=`MRW+tDfUxA!p-jgQ`uhrn~Xl-qtrmEDRk6JgcA>V9`*s?A&T;UF`rAs%1*&{j7 zyHtk`3Aeb8MwKvQzSzt4D~Xj*>0Vscy&NS_wJz@0ud`<}NlR+J=SA7OIVA{tYCj@o z?M|bSKJLqYxO3)iRf0M9*=gd7?VD-UK{o&03lGumn!QosfWw60#M*&WS z45H`fWn1Ix6prPdr6%2et#T1sWq7{W%ps>3w(!Wo>?Q5dfS$&moTGUyYRFHQM>QJV#MeUMwA6qZdw6RcrM_ zn8EZ==d9Y^gj~?%?e|K;uGxM8iKNO1S_ye(8Yx#|=Dg#t!>|~=qSsu`5y#gL`E{%k^N3C?Zyixq`baD8lY7e+Ce_mD$msdX4Mxy__R7Bt?sp{Z zAs&1^nsvrfG3ycs3-!B(rueF`U)pT8&$ej1-!!3ae$2 zxf?FF1VxiCh8|J&&D?GdnJxtEE8Dx^BI2@ANYNF87Q@g0t4X4mG)`bF^O|0xQ-Mx3 z8^maU%I4Z6v(&HQuZ2%dRDRs$0=ZYiMM9a+14MMQoc+w4y4=^vv~M5zOmyfAaB&KA z<67V}4NQLfIpA=3T`xkfxn`Eg<3aSbI@)#9{Kt)LJSyfkp&*|MT3h?fayvpE8)hDD zdy`_@S?ATdZiQ~Gg1_;Pvz#qY$VbzeM@Z+lLWZ@vR-`;~kdbeE=Vtmhc1Af`^=uC_ zT<6`()kuJ1fp|f$?&J0wKB3u$gIxIp9;2jIFNPrhk?@GxBtj=_y0t*F(&CCFLJ1-z z&N23i0PBu2`)5kO$M3qB;{>IKMBf(Id>_RXi;2eBkACVk3H~U!vx`fLI;_n*=h9cK zLE}O?=*OScs!@Gwv0&qRVdJr6TMd5FfPz*rrhtaj!h6sAOqvnKddutfT8-?3&(x{5 z1WGC7$u@X7xEe+$U=n^iFnS8o=o;P0YPQd1y}-rLsiotRZ=3Y~PptG_50HO5QgIvb ztetuxnHthqQF(n%?d#oEaC?>6qPU3z0IF!{-MGTaVB%gPhLrl+Sr={dvoQTyO=0%$&SZjE1bPp1M(|D^)P1O>vG%k!o8wm z%zkZ+&#a7rZ&D;4{f;@i>(``=ZVw2+Ar_9*nnOYyl6i7N#Bl>r?m$-8t1n?*f4tpD zEExi+zT0vM)8@NR5{en5cxUf)gEzJ<99~8R#V*d`1s8zh{hDi-qDn4>*ZtJ?*|$`T z02W`S*3*|R*jKqnu5ZR|)BV=#J6Vv9usteM1r12u`d3v_@w`Br#0%Ib^Ao&&x(dn< zbVF{s-QbwXt>29*0)snMTMz>c&pR@geb>gBn)N-M&AGU?@2ixm z#YGExwu89Arz$0V!PF%^SOcyiWiyY?zU$D~(?CuI;=1=@pwx&9sbrIc917_Ozfz z?d0|VQr&&7f%wdabC<;m&fetwSuh7vyb_V=W4>bt~jsXM@7|_E&3(6=m<7Z|J#T~!d~5J1Uw)Q zuEU2vCW%J{ zy*ux5s?z}uvDJN$$bP;H`eRqJB%WO{o07_A{ENYqSJf`$@dn_ZDdm8uCD2s`h#ms*vz_1EVbDnJsaz0BgpU8- zWemj6ljQO)&bqm|LF6LGH;0SE8QkI_vWVUP>Fuq43%0P(n!};N{E?QH78@&8?f#ck zP4Qxf66H*UnOHopS^`%K^@{AZ>MEJ|Y)v+vf&6lt&%xT7>Rj2Y@Vt@|ugCk_emj)g zXr|Y9Aq&I(a;zfr?Ri$aFKs-vE63PBF3rvCP4drrxMVc!L}VLzV@i;6>~Af-L&pckoQhCQwmmA-iV9qEPq*TsP!|L1pmHJfaLR3v#J z0G<4s79&(83EN6Yy@e*~`yuFA(kkyWZMpIQAB^9^?&kF5G)gT`XF>y?HQ;XuH?Z4r zR@+5_--FU#Ac0Q~NJWn&<<>h2#V097f#i&bU6>LRtY<4D@DE7B0uW<+&1q~DpoJ_U zD~7m>6+@LJCsC{5eO|bi(Z)vNUqKRXC)oWvfzKu68b94^4(IxC6&(614&d2-(H0Y>+U8oU(Z( z-J}Eli-KDDys3+Y$wuj03FMbe?{fIhjzR98Fb(?$!|Uks^og4Dk&FZ2Pe||OG%WFj zqe4f))yjbQGN|u3Nhjp{A6`KH|nsOAYuimXlg1Na(XW z+z?6*Cj~pN7U~U#O^w%e-6_7Lnr`~M8_<(1>DQ>|)-@hQk83NE?bkI`4QfbRF@stW zq$W%?TI^B_L|9X`Ex$S(7p07LzgT!=yQTGCl--&4Vn?sQExlA$JZ=hPLyN3`6w+T9 zt6R>D0BUY5B9@wrK!+*2uv!he%WLu|x{=nqhu|HfY@Z2Pq&`CQZ%&*}dqsk3_LK7t z=wij?N2(B3tENk0PrE19zv(4T!k&9~R60&K6N$4IgeJajc8fC(oo@!HNEvu!>^^nZ z#^QfkBjRsNP||yEb5oY$Q$BdjN&z%^T+JFe>i9|Dk3)Zx{(Q< z+P#Td$O)%z31i6E;Br9oqZv;(753Y@qYt;pr%mDKdX9$nesOceY#F zD=1b%sDL}$lIzu^1pwH&a#K?uLVmY%!R;&A*-&p>($8Crg5P(@hbtSH`Z<}z=+!H& zx1kBJgHz+<$F_IM7xEs3wSu%P^)P6N%C82YGhNI zY%B50S!#=!>DDLh;!iu*(2p;+rfjcle=pacb_d~qS|;LNO(3Rz?|${WuKMxJ?Jdc7 z_IG*n`$(6xA!S8O?s4>qkm5Xp!<<5g#I&YYq6TDHDOns=9l+b(-->&cvifjT6z=7@ zoAEt6CNFPl81QOkS0}h37!_KP|K@4mmJ_ixAe;x1pYM;1nW`lzc{3)HI8t-qA1dsl zcfet$CHTT~sy;yhhYH|mSAmg?{2AOj86X~$l8`e~QG|%{dYom2=_vI;GFJ_0T>=Gq z;@y53S9c6#zGeUG%`nc>ZSTlB&WZdQJAP$A6$A()s|FsY0x z*E1yJrQD$-^2$D+H%1-if0h)yUm0CqW^7vR7H>^y{zU=$B;4L2(>-HEL9FQVWl+g< zN7+AY#VDtDU?f3C6LV)_7$w=Eb8TsQ<`fAmfod+F? z`#L&v$HCl-TnsL5^;S6dMlY)B7rir*I(*r9_9c_;r7bLyB=g>AjGBkLTn(&e3;(Rp z8_u zQ-!whFw1yAZFi^@m~VGsZ;S29r^=Y=e3a{zo1MQ`ImsHNiC;^T9oL$Dq70Xs)Y(|I z-ZMP|Zb}<0X)*~F8tfg>Bk(`5_4~D3%n%)DjTGKvheqMrf{b8Y|*9c83GUeE@ z9B!4~!ice*-VCGQ=pVrMPyRK3k;51=yj;1skrFtf;F{LBDFw+7mH<|NNlcL{b|j;V zBNux5%|a?L)IT&=^g~cIj5vw`PiLD7*LzVaF4xIa;)g#bt40S+thknS)|Wh*8(V|K z)=&z5Zu9Lc`gDjzabb}&28QA6OEF1VmR48L(sm%XErW^v%uq0%kSyiuG2Cs=g$Y@PFWKWu!%H7FK707FyuRM zX6T3;vhk$>^RxB|&OUJj*7F9e&njfflIR#1rEFfh>F!^hl4U;1Lr>;4`Es~{+tsf~ z0u8!zz;_$yF*QItF*4%CoZZn#S*Q@xzxAO$s2rC5H^pC5VEKXN(f%A?y}h$H@MQZ=3y8yxGY73%m6T$qp%}l6!ZqwY^Z=N5gWw z4wuQ_O_oipvhB&sJNXID_)1g+UF}$)5lFPDA*8TQ43j;?;3GG>%{EUAi?LwuCetHz6h1eOYw4cUR7b9DtcS|^E|5P=m2hm*t zH<1%92wy@jFZ>$PgPY_K(heb64`xz+efHeL?7D)zZSkH;B1^ zN#`-_%;KJ&9tIkkwfoz1D=VwSC6a9XySuxlrY0U9dg?b)eNcp6N12~XS`>q1a4{~zu=i4|+$EC%VUm0&b5u>CeA@NO}*>3-xa`kOt5`1h)Px$|9OllF zyKH+=+4;3yFQ+86hTx}Kz{s&MtW5M3=lWGLPhGg2g2G1V^DK}sA`qB8u;7X(p$Hu; zo{5=jTX5O+UR@DFlj51q-?^AjVDe?VJq)Xb z1Ip-32}oWKzdHg(q^6ychDAJ&x)%h0Q)~9c$GJTNOx@z#(BmD%umOF~tFEZjPs?UI z8G)P6{SAc6ud2QDE6A{Pkj`-FU@vAFsi}vhSauqWr0BXLM`m_D(TGH~;LGKJti&(1 z`WEnbY8RIgL7jIA5$S`C@oG7B(zq;{ponLQsC-J}QbT;d5>Wr?3LAPl8QI^k2 zr2ef=m)*+Idbt!m&4)VcZbxirPFbvDgN_N*xgHlZR=Z zG(1xc?0>wLZu1Hce~io>?TS-|U&2a;v%t{DfM&dap&t;>&XcQFU*5y(fL1iYVfyJiQ!^DiV=l7HLiwQ*>Q~TrXFh6^+I|kkuU1+TW1J`fU5w#Tj+_m6Ba-%$+F3_t@YX$UijHeepccQcAM6qKb zJO0tGw-dq#mJvX1Yr>C8QE+1N5uUR_<-uBxRuuiGA$2R}0UB=Evm%`|vq{Lt!@;td z$#IGRCqZb?liIOG>1~lvI!}%HpYF94UXV+3tXq-DTK@r?IOAM)?r(U(XsEc`H@r$C)7C@6Tax2NIlB}c6JI5uMb`bdCc&TB1D zS}EdKAAh=s(XtnJ#&@EB{%4#YT5QrA-}r*h;Gc0&!DE-*a$BH1vGi*0PJcTgGH1iZ zTkB_pV(<&j?>#@8(<^2P5~olBQ-r~NwDRyEu3=o#t*F~-?Kxs@3qPK(GVKO86DWk# z79PqlaeK5;^MB2?{Jb-q&U7u`$nr!cg7`;@apLy8sbNuF&hd(Q*nzeBea(xs4f;>L z_D0ukxW14P8_UO>^^m zC%>mbuqx^>GSCuZ$*wf&_&85

uszb^9!QDS_U;6(ad7J_CPd3)xUL9tHcZU%~wT+h_nET7VpQ0 zgYv&|V3TCKLSDPh_V28%WVUcj8>ZXWU@&+eM%euueyOD-ttR=hIcZ1^70{$r5Q!(f zLiaD+t67}fk;5OE3#De3 z?Y9>WwA4T?76PmbL85MXNPJ{WOPm`LO%J8~4-|aSTw2|Mc@Y+f^2@o6l*$sPJnr;+ z!HXb&Z+e8aY43g#IYW&S)P^3d=X>x+_VSy&p-HRazQ}xr(i1JZD$<3hC$W0=4D2op zJaZ&{)_)s8o2792{A?)OQ1tc#LY&|a!OPEfuNB(jzfh0Lq0?-VOSL{Shk8C}P(Aqm z)ym$5SUbD8=p>oF2sRsNqh!7{JardJGIMd+UI+)(+@`(~U;d1q8ennO-5eSgh9K(iZMa!kSrH5ly9g%DW^;b* zt`Wa`_k>`5vSAdft~)!kmF9sVS9F@??ivQLYI@BZ^jLXv(Ri`Lj%Z&PMrmudgzCm| z*htZ$OAX`VT%T@N$TjOtFb2-AIAS|hgSOPHpOh>k+eUjH82*YLBG^T1G`m$>S$SC3%Y+z zPp0ZZ1`;na5tUwzK`YPd9qLyoACi95@+YI5GKJ3jdm+oeb)TZK!9ai2jJ#)iqV&q) zp2Oi!Yrtz%eFpbnd;ySjhE8{@Ki^A5?$9(Eh2TRPsUxguGcgJrHu7(Gt9pqd*z}E< z4){F5o9|}p@ddtFAel;flcl}LCNU0QG>%XTcufTa;&ha#nX-S9%WiKAY)9pI;|q{f zEyOOPDPu`6inV6lARe{|#S4-0kwCxIVrIO9P|o@7iXRtGa4qcngsKap>dEr+EUrB) z6sM!z`?7D4|2^NV!MJKAIf5TeHW3nx-8D@~$d2skcjcenVaTq-tbe`?j5gv`8$tAT zyV^UAEqb(I*BtP+P*G#gTk#jTf>NL;+r9ssVlnh4vIG#WU_>b4WGI_aDy{55^*nKjmJ6h-OG!7SL{+6W(Q#6?M=4~ms z9+%JzhaGIE&oHgNdxnZ|frpkkEo{}l(ZArETZUa9@C_w70l>Ofs^5IW`@`^E$CjZDyEP?A3pF>6Ddd;m1EJR|1G-&7~ z&ddQ)M+En9%5~TpJ9!b{TK0HsPR}!LzPiwTYcGZ0AeoH!OCNG;24( zo0f%A>fR%=(*@SCX*EL(G`E?@mC)0YEpCe_kzK!>2nTqX3@N+F?WIhKv~oFY8PRWK z2bYZN%v_waT+om1w`3vFzKZJ7V@ zuV-9etYLft`!z>2bD0;PVUb#sAVYe4m|tT#&1KMa%Asc8a155L!K=8PckJbm3f+81S|3S zeB`%#!HI7S%H5x*x}1;C*L#9Kenh8{`l#Ca_#;#TWd3vf$t$&}^8h(*x%ZStt+Z**mJ6M6j+_9+qYmRZ9WXsk}J+O`P9_Miu zPR?Y%b2$7;BcssNTJhznbTry*X=oOBZ?<@sc)p|oy0P2cP;t|tEYk<-N2v9PFU@cF zJm?S$uys~#ysBK<=MA`cl3FhMfm0ZmD(%SZEmDg5!b;(B2gT!398NK)%@*hC1zBda z&*tj)ved_D!jxW=iz*dlV8!L(P$D0OA;94f4Bt*?rK1MeTqL>K(8Q>WS|@9zJtjvoU+XHU{Q;F>l07CG^J0Tq4| ze4E|KqoDa(b$%*e9~mp#3LePkw-TSZN|i2(LBNd|4vwm4G*SE9?rX1*yR$_!73J@h z#r6cQ8y#Y+AJ*x5gAr|c?llZj^@b9m>!t~q?-53T8nqIEdeIx{B zozGPx9vqqZg}acV;nGulV%ElN20oP&-QK=4nHz$NU#nJ$vmC7S0c%BjFa7cd@Wc#a z{nGuJY~!~0Hro!D%*Kf)ICCC<*_-u{qC1qdhTQ+kFVcAq1iz$SZVSq=#spS9f`71^ zAs7VB24;q2g%V9qFHAgUQM)kdqz#~@@5eL`t7`_>8q?5Jert$h3|`T%LiZ#omd5Cn z&>K|7$7?A`akhf{%Gv#=?%|K;5`D=q}!+$Xkzuw|+E}Mf8OX6(UZ* zPd2rYX&+_1o@V}WjUz3j6<+@uc|VvAI+?o6g?+*rIDdBraX8VCjx5etN&nE4ya zo^Lo8>%dN$M&w_a$ogU|r(yKI7?w~TVh{^0{SS~uWGPAXUlVVw?rN?sDYSuXT4{c< zjUZw%1}?$~f08O+EI)E@BD_x6h2eQ0B*xwpT?5;0zz%zvDqo3J&z9jfrWk8sf8 zGPr&73)>yd`|{pTBDAVFZI@TgqQ@Q^`$N^w+2V=wq2>6{Fb~E@Qh}beUV^8e7YjU% zF+PnH-IL{fC}pN?I#N3R;EaGRz-J!VRyS*i)_ zE&GQDa53P%(&zRx1&iEE^l7bk$1BDD>F+=wqdIa{m+WeXG<@IQWjA$WY`y8hJ7SWP zR3PS@IZysuzKWH>ra`mhhQ3wNRZ<0m%YlZs)6G=DmLC!XAhCPqtZ-V>e1@zI}GhbMsr9#jv@I4R0uD{Idw_ z@!!L)XqzNzHsl628Pt$@?^!IB{lt(r7*%}tDknVba#=|4SqeQrVAD~(B-U5-_(O~6 zlaK606B&MQRq?EWL7W+j98`MC_cNpi>E{{9ALY2uK^c<(v4%B?&1HBu3dUj($D1S5 z?w+1DANUoa#VInP$kPjccI%4Z8}w;tXbcVWT$CeJ2z){-Z?Q<;Y`(LP7?1yyEbf*V zAB2kCB84AwdOcUSH=D)QRdBie9(-!s>(kN*f^}_Ag~L8TZn81(7*Ha-+wzrY zfX3_!AkC*^)SRpO2%aRzIQ&K?o64#iQUUwSHHJyLNGIW-cD*%ilUzIGX{Rr zxe9QcfKV2Q8b_q5Q~$eG|F5@F0UyzCOYOh($f1F8o+t|nL?{;f;Lf)XF=@(Qh?VDf2_67<{~REic!9zI)$oG%Qy~74C!bU8zY3E{d z|DljbOh}mU>(}j^wXUvibaXWFD3wGXublW8yRVmZ=c9&T&bo8e*P5D1wNxI@6`y_; z)@x~i-NtP;nBXzMN=JfNqnm;f_-H3mX}ivM5(!Xsi7C)kJ4)(|7zJBCoybmod_wT~ zjEn^%ni1jQcQ%v~avFKDzHa@$a9Eq{jMTx5esIc&i7^k*b^hj%LRf#?v z6bV1HYwP!6`sVbTz+L)j)L`kmo6%F8(B+clHT8@sLy)iU1}yE0QONTm)J*60px=&; zCifjv?hMo$-k9e3k<-t0GQkZ(iBeg{(C8&UBl}{+;Z5Nm4r7?)b38*AbUi@&xUfB6 z>^UCL8N50L0_2~yf3Gm}MUj8epdUKF#s0yhBVT;;)=`0^5&iOV%Znu4`pT)mQz1Hd z`Pjrjn~OC5MFph21oWFO3lkW3?~BhGN4e#_jH7|!-?-3NqVKWxJ^wx4sz3Y*CE>4W ztLLTX`Sws(2%d(zh|i9)MCfxBImnZET^&klZm%%=+sYZSKix$+GM+?493F1pG(GCh zxqb<@`4$A$8UUJYvS0zWMs3vvtVfn0I`hRKMK& z6!MvC`)dAlPLrEp5$)&OsJq*NMz?ZBd!9yBb_CDC$h+@iCgZfZgzT{XvoLcl>ta{T zqim8T75)-e#8n+IhGh%4UV8c5dK9U{uZ|QH6%QBc*|$V!q-e(MC#?R|{&9of>xR-X ztUrjZjstbS0Ra?~Lm?_IJ6);!ALK~|ko3#NS@TbpGG`jV+_iGesbNc%tAF>NT!dO2 zOQdEktc8P@KF!6pmFZe5q>Ip2a_?ci5kuP;%} zwVJ^T?uxYW?3VbS8g-i)?!0WL>OS_nV7KT+~dh07q>bP2HJTv1!? zx&C#gucSI8qmksbW6C=Z>CY&XG-@>{XK|0Dzs7avyW2u1Cy846;?IDX=?sEoHV`@% zo*TlMadm8bL4eW6rr$7HRa-F6m=7LyCVFeltUak-afLRvB|YRJ9E_dTKxVTXp~&Q) z-CJD5wCYc)^XYc|+ws(K_^;O(yem7+EjiGpraQ!&8WC?{+!_2u2Rn(wK4NovU6FRi3RNG;4ZF%YZ+k#N%MbF%i(8ZZ(tdmbV4 z*SaQo%F=JUo**bW3(D^6>l;PRYY6rAfi1Td{gcBgzR!8O#R|~MK|xDadR8U!<7?5> zF*WJ5weD5j|EO9sjz79hNHf-#Y1X?|O=}hX?*GYOC*)@dcK(!~T(AHI>kc0rz;EX@ zC0JPxg6krSPmcy@f{vP<_yZxfwx4ZLSCt0qPD`@$%MI@aibZ=Mt#PiGBj2pQtS&(X zHMcfS-C4BCe?aruL}_vh&!B@~%iIiJ(~ZEq@3rF;OD)3g2t{vI)cYt>y;D>Cgm{6T z{esu7Kcye)G4;fl#n~&l*Lr>nXSyXW%A!U9$y5+SbUDim%*B@Xqe#=n;d+(b5Ymt* z>mj(v&pISN)ar|^2CxWEE38iDh5638?o(-qDAuA3e@}Y$mU`WmZla>r&xiHvMkeDz z%(9xnGr5e9lp;z63x}r}41lX!D!0e%U|F)D*wkCQYuG6~`3iUVZgQ=S+s@98P9~Di z?U=&l7K26_VbGrYw<-w6Sh~0Bsf5bNrD+~dV6#$IKHM+Uhz^5GZ~!4SgrH?|#}w!a zDQ0)i2U-Rv^QndTov)&|sAgV!8&+)$(ldH;a})Km)Y)+v!@t&=9WS3rYt_4UO-sXZ z4?f-Tk_OPL`=r8KH`XZq_2WL&dHC&^3G-st#zIzVY6>9vzcxnTid^N(6A(48@u1p- zmmqW;KEjKdgCa?~Et7k2Ql$04kKN{V^#Uu&>!p(V-CQ@=S5dQYB7A(6Ii**D-cCRF zCJKhqICC8MmESUXedn?mMu48)uF$u!o$Jv=Fn&v}3gS-xzfhN9I)VD4Lp;B5Ot~pf` z@junY#>S2qo~aXHU>S`VRfws&9dClng?=XT2=@GVqS@NwRtPL&!pqO=E+MAYl;)W< z>HqK0wj`EUL`xnJ;*Fs5kb63F#6hd z^pTXgIVv!=KR4F!>Fj9d>pp+?{hX?@?|_-CxJ`-tvEle7K@S%NCNn4YEIjtlcP+|J z60x{c?<%I)Kgj+SH0~~d*mKayE1O?N;?GgpNV8pUBgVBWtn#q;D#!wwaj(fvEp~Oj zXJuuf90ik1#)Q1ZU^W15TZPT~1fTgDpua={{>1+A_rYl6e1*>Ue>@Ld3H+#cE1A$?4#j=Iq2Mss)om@ltl}TIUwaJ*w~JxL*s&@WUmopWMcTVQ ziaqvz*Gq2VJTf1m;w7wd?i)9c$|Rg{&2Lur0ca+kW~|MYyL85)lSh^^z7CmPC4f`S zL9u2cb~7g3uFX*-1$3+}+YgyPJ#5 zH3*@DUtgO5TsS>tU?`<{^X3ZcWPpF-M%@Z;)V#>Sev*zj9_uvZB?Q!0m7#dURXTAK z=H*EqUB7yCV88ffb(C!23aKiWG5)6_TUPJEFC5Nlnx~8PX(}{Wu2l-?=lIOyX~$zY zUlf9ve}x(5i%d1Fs4Md<IVzkoK@GfUiN-QiLs%wuz2?VnYwq+vGwnF8gvAEN9K;6dV4fwkbp1@ z`Ir@_2mOg(EjfLH{R4vYUHk_UUuA|%dQmk=ruLugFS9V}Nt@*$O1#E&nqDX15-va; zL@Avng+PE_NDm!oftvQR^ekNDEoP*Oz@v%sV6WOOCBw?KL3|Gs%FmCx%4>w4pnr1< zr*l(Mz9AG7)#}(h*ZMdaG?RdYYT4<^!9ciGIyE1tLcCtB#^$J~CyS4V!y)-Y`E+g* z^zV$RlRMfGvLNz85&T+F1NCWQ2<;7b&E-DBhF1 z;^1)J3Vfe>ETnDmxQ8oK(lflTUGT)Vn$ydV@F97XL1QCk6-?raF3K_`Ab`f0vHerB zb&;^{V|De9h)QXMqM|1o2~U!HmudA=5ZUr*&hxUc``^S^siWig7=CvvzIoms!-f}Q zR^fhO52mk!sG_|W_eS{C^aeURdG&aYXE_J#d#pL8fUA2%Kem@gpyNS%x~2zT%vB5* zYfz+)n3xi|#Vy0M7>n3KJYJR>PX3a8l>M-k_ucZMEm-pUaRjdWK*ycx3ZI{lMyDYz z|CeABUy;F*dGan@fOvt1?mw~B&OdB)>M9K^PdCY@h7J+N!SRdDf!W9guQ0s3i=Q~{ z6H8XkO}m?QQ~T2&r|+1tjkjmd?thn!$^T*zTKaIv$j6~#ZA>}}&G;C{SWQjfdT=`P z=f^oV4fZoUfyTq{uh(q6yA5^)uRig$zqv{ZPG3 z5Eg`NU6>z}>(EaK1u)-@kWHAQ9S`_@oW}9p||m8%3C8 zD9F{%3A@3U-(-iy;4X`1{mqzIKZd?#^;%e#M0>4pbRDzzrny-?sls8Pq8w7Idwp?^ zVytRlxxU-<^}$e!m-qHXbali)6Sv^|gW3v6o}mr9jm&C!m!aq#$&e3VOKEMb-EfGB z`E7G=a&5x7X^0ADbyl4mW>>G15Hcin+@<^SUb8ESHMRcMw(k{>huQM2Bh-2C78(}= zdd8^7v+qM|B~7l=DKS?T#GdRDE02wx;_?i?9)7*lMh|(9FVRx(&`w?+m=h>F{cF~9vX7w%U)-C-z2WzOoD3Lcg1}NhValpyE20!IwT5DLey4vcEqPE9~{yfql9TPH6o?34P zoK~_Yl*Jze_+9|BZjj~dgyq(O2chSPlf>~q5vsR`zB;dhx+$5Kokq=#Spq?HPa9f7 z@iZU8%bBU!PN)XICjj{VAAyX+47X3Wo4*A2K^R)$bwK6!Rpv=WA+T3b`Bzko;eS#;x*4>FENR^FNEh7AA5J0C-*{FD0)2e^DRxUtGEWsMh-5Yoo=`boyK`Q2u7S2b#cTG5#1iUx^k+>vmIt2Mo_<}w!A#EurqFp=U>fcMXG%A zYKm!x?%?B1)%7wS^Y;a1hyuc*Z&g)Qy0zBbj{0W2QfvQEzMY*SY|wKdlZ8Ileh1X; zOG|!^)lI*p@a)W3<~PE^24tU<%O}Olz<7pLrB!JGV7$lkED}WNqejA+lpooTwbvZj z=O}ur7lheTYldzZE}ugf_b!obFv%bmWV9 zVxRL(&05C^6(I^A3GhNo{75V`m4P_W;v%V&yu3UrbPQL!wNhWk zJt-#(P3FYp^Jm`}n%xBIotOO_jCiS6K8+hCoxQg_3}|=aB}DmB^x-IFj&lAbzp~+< zlDXQ>Wi0==x-KC!ydx3YY3NEID|FXFhvZEo3oeD8^V4{UvfHD#Wp87HRDd?^yLW@9 z)@3jrUxpPM{}!;X=RjB%lPKDvSMl!>#ueJ@<6$ex;1aLWl=`r>)3%Btqv?YJ(LLJS zeFX&tVF!-c#-M7?@rQ=rUAoidOT+!ewM9kEm5y{uL$d+jrxK0@>m5Y!pQj}y>Dnk9 z54HWKOo?o3%pJaRE1?cUqRu#SYJ6DXd2)iWf4m*3{?OJFr@t8g*lXJWNlZ;`ws6BA zsG{iI+6ps*4!^leNM^ZJ(MW2Vf%=>~)+fzi4C=GUn>qFU#r6RCtyzxl*gx{=0p039STX?!Y`AvuA_PpBU?~|*rUA2&R7l)Stg4R4D zx4B*t?rBZmYEhWrsYL-QV(BIB0DLh^G{ds{DEb)yx04~(FyxTzW*h%K^SHbjqBQg^ zijX9FDsYdtg}{MC0A;LB27k{m-b>gBFhC4Te3JF>@W|=Csn$0vp`NdxNKR!O_D$Ex zmRNg)*ky=X`xU#jcboYf>~R3?b=7=Rg6&YBtHKT^WXPRFcP#6C@nM6J*QIdrxcyVP z(SDI5u_$TSzpg9G3&f4NytufIxT0hYmaM(o{*M4A4B7KUBH`G49LuWlc;Z6GS`HmH4YkuMNL?N<$Wr*`*r^7le2(LQyhnlkb_ImrO)(enrOoYA z`Yrig)n+h&wIkQda?*V|YHwVT_2e0AWqe`e(x3G_W&!|mQi29-TYVwW;>?$!aWA@ca?$)~=;UWRetT_j9QWjEjN90kC%unYpT1b@@a4rS z6NmKrg=2F#j=RC}{=R&E)a5Q#$AUd#5A3QnYT$@f94Fy8?rz93w=q{D23#~haVd6W zg!{C(*quu`j=Ohcnakkghdcb!@cdbBLv;7k_J5A@=Qvs6TPS_R;}ckpW7#kH$<56h zF=CLHw{yn(S2c|EM~wDcuy~rPHdNGvMSrAH`9~+0{qo_3dvCjUa8~(fSN%Nd@zivW zU%0`t`7LE-Z;t-*)6C08i}r5pP)qP-EiCp!13rY1vPmTp9>btuXqlDeV`Z|BD?fkr zCR@fes-suN4s&dqkGpzmkjbs;%rQXP$Y0{;`!4O#V|}x_3=sFuAZBql3pD_c_H8zP zz|!pWRCPV0`K$ICx9@snl%)`m*jcze+qphfv>y0v#cq*v*W)w)-`<@^MRlD40RP@H z8=%180!F0hAfiRYwTfF@5En!YS`+JXB4W@Y5fl~ms5xj8+Y?+`tyYo~JyB0=>k^HS z8kO1!E+>kj1vf^Bhy?`{M&`}TySINl8O9lwFh&XR{m%OX?z{KCZyubF%e`;z3~a{$ zXjENNmam^Za&}6#i+6tqUaVuIexuPCvv6)`#IQ%@g#ggGtGaVnwSBekj$c@{Vw2Q= zL2;RhLT_)i{pH+v@bpsOEh@7Fb9w9gv1xb4kMWw@%Rs5hzUQWL?0*JK{Rp*AbtXQu z$;2=WFpPAX5JE&z8v9!}l)k7YDgaQ3&l*Ue8hJ_R(HUD0-7hE!Hk;d(ilu}?$#atj zrIb=l4^Lm^i`L%lWrRXmmC;FU{w`Y=z1o+jlmhSoXEu)H0Vpy5>&pE(2}50klhXB~ z1{>BBnsw>MxURwVy`lyX3J#2jm&Qehj1Mk+bgzLr7tZ7)#;+eZXo%Fmo~QsoE>_if zIVI5>Sm&BSKm7iyPX6n5p57dBX-CY!xPw-U9FC&+mM(-)4f{mN@_eNrs5p)Rpi%`X z^^2kbfaQ5hL+J~5PcMdZF1~xEu7oQBumDWf-YwHobR$yFhfnct@51D2&z+ArFD)Sh zfD6ymwxtvR%!CNlrg8)A=*(G8DFFaLFqkU@dVYIm^q!kiIiUcuAYG~4dcvovx1b62 zrH43K__0XWK%MMMdCQip85T0a(z&`zH((Scx@(lqu&r$>ds6(!V@iPK$Fb_G9kT;F zzH8XMFeNIZ@0N}uS2ZcZIyf}!$GLulT0ezCsng~6-}i-%=c@$4Bu)1ljb@Wc%KJr5 zP6G~psng{vl}byi4$fTH{u9m~I|}AUHXRn6NG>~(2mpUMex+MT$f5b&=5=5qmC(N| zx6xoYg@RGI87qovi)bm3LQW}Xl(OYPBq>L9O-(pB$mh((3(s^!wuTLY~h9kd8v058C@Ty8+W!ckZXR_RSnzeqg5IWc2mTBi@~moYN&f`IA^msn4Luo0j^|8!~>suz9vQvIcn;yUW=C$AiO6jb)!@~>iJungBZr=UJ4}{A9(W+85A%4TyaT6_X ziFoNo&Fc5o%w2QVW}R5{o63LA6~2wt{dvNQ&^cc}4c)NollE+Fu(T$wkdAD^&Yion zRbQ{0PpRJFXemD7gAlT?NeXJU$COD^Pn5#IWKsk+qic-2P(*JtZnb2MPeRkv*dGrZf|MAM%Jt?JelYDdk zdUnkA1O9)?sg%hd_FK97a8x@NmQo6eiInSQpXM4!eA2_6O}%fTD4I;BsHoY`o>pAE zc3LFnMbRIsJvy)~!*N{k!(xR}p-?Clayc)PSz5IRIP_`6x{x7D4<6@M<;aYJ!E;!r z2^+RA84~WvN?}mW7ZeeM$}LgF4()h(`JUyedo+Vj_lyj0YN!&1aU}IK$;qqNu32OG zUND**yF5bZm*e#5(_vv@gbg$aHJRp!~27!VP z2Lb#`W5!|vS5454g+Ve<0_2O3XNJLYC^SPAg^@Kom6Z_4GC`;uRMMMW0dAO~P=wAb z1j}kWBmlQX$Tx$Wfj}8_u6cUplmNaQ^s*bQvMigPo<45eIGgez8;_h_6Df+ecc4*b zlc~D8TCdj|jl%vf(@vc{vNbhL<>bV&tV|~3d6`@xSE*D^PRsd*AsHgw{PX;DR8IA%4@MXbQ4glc6OWnSx+>wE)^4byx zAdrJVuC}3s0q|$Rzb0i`nup0>`nG|vtxq}da3{<2PA)DAl}Z%FrEy7%V&X+nWEh6y zITq^!u{R6eEC2=TKSyo=VKM-4aJ3cySe)=d2w6Bh z3v5wdUf$>>UZww^MZ>Az;Rrd7<2X((mpeH-*IB{3XWhfnI_uO||L28s{Rkmc>lL?e zYbkIe2ZT_qS0DAa2(M|>--6(%A0hODySqCfgkc!_mEP8bWm!UqySuynsbHTDWs`kNa}C4Pk5DV5(P-}6xpVdE)kc?UTQqlfcUMKy&AEDOC&(E*9Luh94p}%hK z5PrFEBL{>KYI894BZN?!gQ*`OgxVZT{Rkn{=3wea2%$CyQ$IoowK)y*9bLI|NZWb@`f{2w)Fw4A9K`(ywB00(qQ cO+^Ri2n`J=C}qEgg#Z8m07*qoM6N<$f@@fh Date: Sun, 13 Aug 2023 17:13:19 -0400 Subject: [PATCH 0236/1002] more howto documentation updates --- doc/src/Howto_lammps_gui.rst | 25 +++++++++++++++++++++++++ doc/src/JPG/lammps-gui-chart.png | Bin 0 -> 74760 bytes doc/src/JPG/lammps-gui-image.png | Bin 0 -> 116597 bytes doc/src/JPG/lammps-gui-log.png | Bin 0 -> 189210 bytes doc/src/JPG/lammps-gui-popup-help.png | Bin 0 -> 121506 bytes doc/src/JPG/lammps-gui-running.png | Bin 0 -> 107209 bytes tools/lammps-gui/codeeditor.cpp | 5 +++++ tools/lammps-gui/lammpsgui.qrc | 3 +++ 8 files changed, 33 insertions(+) create mode 100644 doc/src/JPG/lammps-gui-chart.png create mode 100644 doc/src/JPG/lammps-gui-image.png create mode 100644 doc/src/JPG/lammps-gui-log.png create mode 100644 doc/src/JPG/lammps-gui-popup-help.png create mode 100644 doc/src/JPG/lammps-gui-running.png diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 658dcf58cc..465f6e5864 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -44,6 +44,31 @@ when starting again. The name of the current file in the buffer is shown in the window title and the text `*modified*` is added in case the buffer has modifications that are not yet saved to a file. +Editor Functions +^^^^^^^^^^^^^^^^ + +The editor has the usual functionality that similar programs have: text +selection via mouse or with cursor moves while holding the Shift key, +Cut, Copy, Paste, Undo, Redo. All of these editing functions are available +via hotkeys. When trying to exit the editor with a modified buffer, a +dialog will pop up asking whether to cancel the quit, or don't save or +save the buffer's contents to a file. + +Context Specific Help +^^^^^^^^^^^^^^^^^^^^^ + +.. image:: JPG/lammps-gui-popup-help.png + :align: center + :scale: 50% + +A unique feature of the LAMMPS GUI is the option to look up the +documentation for the command in the current line. This can be achieved +by either clicking the right mouse button or by using the `Ctrl-?` +hotkey. When clicking the mouse there are additional entries in the +context menu that will open the corresponding documentation page in the +online LAMMPS documentation. When using the hotkey, the first of those +entries will be chosen directly. + Menu ---- diff --git a/doc/src/JPG/lammps-gui-chart.png b/doc/src/JPG/lammps-gui-chart.png new file mode 100644 index 0000000000000000000000000000000000000000..447e7096258abc4de0803edd83abe5ba5d871f37 GIT binary patch literal 74760 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 literal 0 HcmV?d00001 diff --git a/doc/src/JPG/lammps-gui-log.png b/doc/src/JPG/lammps-gui-log.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9b9533f0c606224f19ce14006626abe4afd173 GIT binary patch literal 189210 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 z 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 SlXwa!#Ng@b=d#Wzp$Pzk&hY90 literal 0 HcmV?d00001 diff --git a/doc/src/JPG/lammps-gui-popup-help.png b/doc/src/JPG/lammps-gui-popup-help.png new file mode 100644 index 0000000000000000000000000000000000000000..0d692f17957ee7817920b9b9f363109ecdbc4594 GIT binary patch literal 121506 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%0DavxrtWt%mLX7X+7C{9L9h1)^?2Yx zwn;&fL$ia2p8;b6kb2Mz;3XIIkShjYYm^aK9&%&Fg4Tnh3Q%iNpsxgfI2js)(p?Vf zzymSP`~tws493(UU1>H7qra>ryd@5;r<|fGVV1U0|Ne^cuEnAy`7|X9U@G)&$w(p6 zVZfkU>y6j#t+LGXC7>mOi(}hU)k~+nQ$76#og5qr?+nnq@F6MPQh z17>ST1}XycTh?;bi6p))`v24d5JPYrEFIpZwn&PDN@6(QGiz39vY6jKzI}Of#c}@s zIlli}#X9ZbR1^2W>L)JpR4}Csd;|4+5nM0wA*G{{2YA6v-*-p^mEK?rzf$<%6+pt; z@`2`%izMc&GwPJ;x>fm)r0en}A>-BSC@x)-JXznD1D_H{%MVn0?%x{X>g->)(c-?MRh#GG+76lZtv6x72fpsSb9hbQw@dW@%Ck z)j3AY?=H1f`~i8?_r0Cf+HUNmq_gP4sh9Tasb_w+(Borrg<=nh!JkSc$PHlHPek<& z^GcH!+X-&G#?6ob<^#<)p-%YbsNL6r#1xbV%RV&a#5x7wvq2L3EM+4Po$hV*2{NC@ zE@j$p{al|Dx8c*Ni-p+*`Mwc(p)KTH;4L+x^$M#?!k$C$A`L zrFJ74iMNL26(S@dg1UZKVSzHLYF~?Ggr*BJvlSF9WPXmvX@&hiti5G$99`2TSYigt zVzj_wW@cvDvY0GpW@ct)w3sYrvScwcOBORTPCtI$FJix)-HDlv?da$q6&<%Kvo7U1 zC-deT)09*iSCsUH4t}alIq5j#-hX)m>Fwh2;OIJY_Iru$v#%dL$Di>zhMv9o_piA^ z;#Z$h#+ug^Iml2tv5zQiTYO=`O&FuU-Rqax1jud8HF5d|fQJVF08?Lp#q7A>5wa`h zue;n+0Hi!~=_VJRg(<^Bt%tAz+x znkpuuC&;jCYp0F*7^=5Ndy~pCs&`^7=xA~G{`vH!G876BlUItRMfL6brEhDWTttu8 z!2dK-olu=(Z{GP0#xA6grLRL3%%3O6QfjfWWu_uJj^}Lo5m&S8&|&+y%SrBl1NjW2 zfvEDcapxzW-iyK01%!C@bidJLJN%gq=SwM|)JF#{i&y9Nfr-n+b1$3{aAn!zx0>Cn zpP|)BJ8kmmc>EayMww7e{y) zf!NA=$=o%{J_g%XPeCG%1bm(fijWKNE&Fo<^S++h8Z;YT0Q>8&H&Qxj5(5P*uC&t!pN)Gs0f!%X%=b2X1YG8FO$6eP zT-Qr!S_i{;+W|!lg!$*s)+!k_HT>D0&e;0*WkJC;{2SntEb}wU$`qN43m)EI_$jwP zpyG*Zt$SE(w!#%_9^PlaO9o+c#lP9d9;=CGau)i~wXAy6V_g=Q&ct!Bn@N!noj#c@ zw9~-Xe4O$4@HzQsTvPn`kB%;EKw7q~@5yo#0}56f`qPvHQ=tKJZcN{FpKRuai|70w zw&{-NCzNOG?p_F(d>XeruL)wlta`1Y@E>&$;3B;;-?^gi4hH#PJ8Sj~yF31@DGc~e zTU`D2mRhsB;5{<KSeRc)Q*O-$hMkE#=XuOz&(w~KmF9-lHe_siO`^QJF zgy}h=wNM`ftlg@~9y7nA!YV(iDIq=~$X@uC`D3ez&@R9P-Yh`!#nz zJS==Go@Pc~J<4sygs8 zEwAAGC*Cowk+S_$^EROl*0^zVNM`b_=kESSg~rasoN$QK2=#)`$Bl9Idr@0efO$Gh z5*1PiwYtr?`eP|~yPbB>LfiSR>6|Oq0`eo@3`MzsgH)DY_H%X^D-*1swFVeK0RIJ- z8y!&eO$<(~8eRlMbrE4EjfOQ(<)|pMA11u$CWadts5w!qNy;U7_M%r3B-HB`H_7^k2%fKL{e3r|~K9PCrqAFFE&eI{Bj4(-DA zq4-$exzN}Bgz{D7CdihMF)n0?Vv!uBrYCZ~RhfQ(^wKzUzLi1XBfK-~4|E_DGz^?s z5v9g`M#4|9*XHl5ULJG zopc8`D)uN1V5)p`88g!<;q0tXeEfm;?uvFlo$UQHgHdHQb(cgm^7Ky2FDp4v~Bs69oM zJS+ScA7Ro*aw)NYI^ovt+$b6If%)fZMuA6=1{?5Y{btu9{dRhh^~w)>b6riZ;{CpU zXkbQ*QXb>t%79&HA-wTsD?5D#nO!}F`OU|M(qJ0e=);l3pKcytHq8ahcit$H4mUi! zdd~V)_U2-0JP$<$MGCH5mfM@n;Q2tnCpw$$EdKk#z%e>IDvGcCc}(Pk^VzEmO2o$* zVAx^n2e%pWZ;<$=e2!QeZwbs6dwcb;34%@kTN<3sHCb3$XFNWj^KGKtDLfC%_bW$p zxnBpU3qcCKG^KN8p7MGBD$#9Pv|iM&`yMeCOean{!2ATwj@Nkbj8dXrk*l1uO9j|K zhqo>&o{ApMR$e=iPBMXaCt>BDfHy1Ke!FMW07VBEwky@1XM~AFKF!~$fZnQto137q z2z3!Rixe`igeJ3>pFJm|QS-r#`WP`c^+zWO^KpLpfb9}R_vZi^uNMGsaq%eqmWV?2 zIxGw$v9m)}@0>ddLGA=BabpeTj<{L*A_$;;g#atNnZ?;ZC_Ix*<@tD&+_mIr<SEhD-8WsfOCXc5-IG!n$nV-3nH`2GXl+QMoVFR>lQOsXdG1AGCvXE=6|(AK$mg&9 zsP8StccOQU1sQLj284X3-&k#1&83`WeDI1<$PL_4xyv$#h z(4qK_wa1PUtLZ4PN(ZOq(~_R%4hpnS4F-}E8EY-4%D7*bl@TiXG9g^l;_$Pwz_7b8 zp+}c6w8J}1wH(Sj%PS@Ne2)SO_)Z}S-lOIpCxQl>M?uL%=7-9|OCUnP-BDB&v_w82 zdNIX?8kR~;+y7fx*m!WRxAVnDqWcTlAu5eh;Qit)Q* z)5_g9%mQ&l1X6gghH3$r)i0z8ViLr|uA=3{g_G6JY4D$9gLshz*E)D(yNNZv-4ab{ zhpLR}$ou{^xHvE{@Zss{YFQB-0}bs;ygFNf+Plf~@%k{#QjFtnL0eqpj+3Dtt^26d zU>eC1CRd{8u(bWB@pl)yN-WPaHbY%=O0?leQfb3{nVzbtXKJeMR6n~@T86v2ODJM2 zn++vDG!OcRqIJaDJYO(az@o?D_|a>r8DUdrqjbtwA*#-~oWX7$%AMn4LkLWsHB;wY z$>;Bufvv+@O75XCHbX|0wcbT`$22WM>RJOi>MR@G8sOubi6Otqp6_S@L;E`?v?J>@ zk$o|F0ROn(f^=$B(Gca#F?xOwKaL-Wej-}^7>NB(qn}_aL4TVbOR{tDB6h)BZZb6@ z{(C)i0Y0r*@SoKTQi!(>^G3AHpnHFQSyV8`)YQXHj*i&|l>fO)c|H_h+%5(;x4tcv-i*+p&?Y?Z^)=exeblE=Ri%jF zy4|UP`*F_LOzYh0jD_-$QIBEO#OxIZ#OS{!`nz(m34~Q7-tc{~oH@~OQyWlNe4E)4N*kJ>V*J-%pjGoEjLj1( zZ#8=_yMB5=sA4ltWst9W@E>P_226?yOTyq*ecxtb?{NIMz2E(GdG9*kRc=p8t6wnUXZAA8FVK^R#b9$4RkB ze}a=*-1<)~!A-o_s_1S#3rPRHua5Lsj@nEY#>^?rJ7XFciOFf$>||Fl9=C>EAO z93;O}8uIUzcaQYk;NN~(YDtyK!yC>iSuu(yfAd~BrUQ(!+engt$oL@VN0tv{ba7H zLYnE-4lYmc8S-DBO2Bw~fB&h?Yt?vFIY3x`Y8kj;-Wtx6F7>9VhqAhGEX}m{9u;Eq zecrgLs>HRHOM}#btBFVsxT2=q1_Wm@XJxo*WU`RhiAW?Ax3H$YXXrhmu8b55h4rAs zp?|*~oklW2CNq%zGFAlV?dE+xC&N^PV7;iwfkFmVk`ukXjVT9^QGwBs4+;nwg+OgE zgAnS3W<Q<{E(QN%==+afT{9>{7<|KPjIh3k zqok2$$3@CRt*G8klA8%lozMQ3!7=Vae>#-UbOyDU$PR{9+@8VPkX)*Z@jv_b5da6l z31!1uOI03b5-~_v4Pqb|tLJVYmCOt;mJ0zL>AzNP-HMcv4Y;zW7+ZyVk z^+pz4V`1@RWFN7|S<)TbAglW-t5I>oGd`45^eIgJbS%L^CFvZ9t{fZ-3Blvnf-B&c z<4eIpQ*g+D$_?$0Zh>uqE!b%$OdcU$0rD^La;N_PN3df6`WvtXkdf%u&WpF+}~V3BmYKQDjGxZ zAPZx{y>KnmT8qrrDSW|`>ueCk{}Pga)8m7qP?xbA&gA}S&qTNdV=70#+h&oeO$q}v zWYS9>`QjwrIaBqQ99DjD$l_cut{T@<3w=JhcjVgTy7-Oi>dWrWj98EOtBNhya8~bQ zH@UB>FMH4=LP?wnB{I0H3zO^Q%}gBi8@L**mk?ZDJDe?Qv%lF&;G%j7X%9IBA~p}K z78ny?`yWi?+*Zd88WicHA^~cY6A-?XKw^EK)eQ* z#|x{OWgc`zBmabe`H;!l?3i+H1WTsC}C9#eLs$02@}e8+-1kNr@NWgtZcy zQsf7Bg_Z4*%nOAwKvdkM{!|O22{?g?Hs(5ZCkZAY=dmpcE26>D=1Rj<`wzYy_KeGw zi-ZS3=S*Bzbfm##pg4h1;(|L&LbC~P<&HyZf@@$2mmfLo(B#R212r^)0b>E&Fo}>P zFsCUU!N(rfT2dw{m8W?UV8YU0?XF@25hxt+N_qn50=ZEV0bv@&m~*Al&WLU}OTxwJ zLi!$Fp%BEBKt<|Xdb*CNu{oZW&Eo!>RoBVMqC zb(c=;=rp2XW8`+~TVsR*xa8}#^uf+0b!XWoPEHF6Jg^?wtbo_Rb;=r{YW#evYr}tH z01WRO53EXD=eE8RSiD02h`QsxY%xhlk&oa@(oyQhQJb{x&9Y2B2^PYl%j>)$^CduH zRChS@+xpdQ+cW;?TAR;8N1UB%Yp3>lpFSB2{c2uiRuiJo z+rn5-%}YYf?jWj=)SBXlEni!B(WzSsdlQ5rE`g8!VcyS`;S*jRTK_f{7VGHp+r>W$ zwHmv|tfL-PQV|)|eS=7-6?%T?_HxS_Art9o0v*cwusnbj_ zlM?!7`sCy1Jp9KOxQFXruOVKDn}7TurjptxJNIL=pH_57iXi<(e0(f4b6yfR?DMaOrOcM!<$`iHQzU@q_mqT^2jCL%;I5vVb(s zbAL_mAwC0Zv1Y>``w^d)&;0LrD%6$oB*i{xc=U&($zrEGs(Bii%pL^esVYw9 zRny$g4tAd12;9q*nS87U$2HVqhe;%(9enI}owesaa5Q#dWvn!GT|Kot*qrN@WQkhq zdeDW;Jf7CcvvENCIJnMoz(KY9#<$G4xAIgMQ4rE;%-{h&hTfAN0w#$wU;4+RMkJry ztnQ8u1o*j_AnG~)C*(3`_i5w#c&}9LcY7sYR0cZ_*_obgSB=Y8b>g|<3NtRNO6sW2Dr`9rZ@4QK7D| zgcr`xY8PU;vXetlnhO43S)E1BBO;1FkBRdJhOj^ax{%UXSz5p+5@eBdP?`X$DBW1Q z6-`%3=C0k=y^K%GE2VY~o7b=CM~c+z3>7xz&Qb5~9lQ|}E$vUoET!?i0vRY4jVqom z*2=#+m#_pfeeAV13Xa`2`Oqe(6Iv+!RI<7yJlsvWeuRO?0xb4E@!xf1T=rrQa+uKDBuac5?Lpx7G- zkLGrZV2FlTJb(xRnxk?k=bhm`x>z9~F?`^5Mu^nnxV{SPX==K1-va@w=s}tDxTodT z!=@w6n^h@yZfsxndWKdc3aBY2&dqcTmJj#l@chJ z5Za}~YsKc*URhU}JADyKm1Ba&2w@GUPi@Nk&-p_9vw;-zyF2fJOEpCoLcOffGu=b- zhUB$K28am(v#&{6HO><8`xo>9ndRHchWoNF{CU12&!r+LMUm~O0=8~_=-d2jKq7ge z!cw9VGUVIFqD&3MURK&5b9|6bN?&$_cmK#Lpwr;~Ep@Tq`^-ZQzst~su01JVyzSC! zf~>uP&Ano<^R`F%?B3}+8v>Hr6vuPuekj*E8^d#Y4#~`1tXuQz2ac;0k8ORYbnZh< zSp3C+#Kwa~44b9AV;I+c7+RdX4t?hjuHC}nA;p);1oZEaEL4CY7VG685<3FuDya

`)eMYBL)q~5sCIp|cMk}~J{jb*J^UV4(A!Pl2xhbFrZBbo zkqYt$>%)Ll9>2Cl>~cZQF;`o5A(d)8%DKhd2*aB^xv5umnBOhIkK_Y{KfHP*C`0qSdG4&QLN#<-O8H4@cOlC<=(cC7j zBhQs(%h$Gfb+tfuzpu4OK~f@>yo3qPDTx6+I8@;`Iv%`ff+%dj`OC7OI1SbHCjx3H znndMS)YA=HIx+g?wi1gm&T3E=bV2|c?7P<5_!z}S9Qj;`u zyr1FPGx+Gj_qG{S@f#xD(G4%f^=#a4W%sTB-VVr^rtRiiHRTWX~>%xZ9 zawmz~dr-v?Te#PxwmB?h{Rbl9TO)yw=?I&>Lsk$`l-Nr95>0$JGR6tf!=!G=;Us@9 z@hnd-4)CpMMQg!U$<0fPTTVp<{{$nC9~1--Lt8X9Su#CSj1jW*!HI|-D6e%^HY{Ng zD6ph|yF^tSG_>sor212#80n%zKyYM{F?pQ6HkIJ5W4zfk1n$AUnU~UU6W+3Sk1APl zK5roiN*X0F%C6SKO-+ZdGCeHv?UPu5ExxbxE#geZ7+sE)X!CW&_bH|jX=H1Dcj`zk zx8Gk}hkTys2avvNq;$qI+UD?n);~-d^m>-5tDWU#IA&{aNcevG<@P0*e)KCaIBM-c zyVxe~Kv_P?j{HV#wwF^>Kk~ujor<7MKi2D%O+4XB9pKYY^`UX){=k-^2soMoiVo?7 zLe@*>jsK+uxNYoS)5T|?+6u~?#H~l3RTuo;Qg$Y4jWXiiX`{%7EXwDdr|&kqe)R(z zr9@3<230k)?P)=6;Emspz``q*m4YOJ>1_H)rf+u9$cA{*Q#H@;PQ{<|6P3cNqa~8* zPHmll=R1llEtYJhi@6LR#@8$Lv2Q1O-)=30uJh%2gTVpRFM_v567IwZxgzCd;RKaX zA?eQGmnn?iSe?9)48eZj)UT5?VCQt*r}y=qUbAfAzQZK4M@ZL*H>e~x=)l2Hy0f0u zSd~Vo-SwnIphcVD)MNsC!xln#G0xZ#ZeA^{m8>llW+US4u3{Zs)W2^I*(3uSkFj;n z({4F|&Ry$+;1Eu)`v}d<`MhTjwgz}}>!q?im4dpfa~m2L@A2Zwhi?Uc*u-HQ3UZh{ zn5KFqctVh+c$fZ2maQiy;8gVF2uP#^>Xgw7vAN1|cL<GJ%l4L`=oIIK9Vw)ZhjK zMoi{hU8Of)v4)LUTo^h!RPL2hvT+12%dr%1Q~}Zr7-g+Jt4&V(#exs;?nFVRAcm~a6t&O8pe9Ryv8|n z9YtO`v-xqHQWUVN(?GDK#gc{w7$nw3C@Y82B-LXlsZE772Rm}m}#o| zEQPW<`!2EXr*ITR4xy+WVxpAgNyCo80^oY@oD11%7G&AiXrNfQ1C#SgQ30TD6Ko<2 z(pG95m$7mYda6sC@>yW8doDfRZs@8WWYA{rs@SxrhquIqfzSaOXkF-BD+>Y$7#Lu{ zhZn&OJjMBWHk%Sy_iA9cK3`n|>weU3QcCVNlE~s&tWUxKON9_r61@$MmlOmq65kre zB)#WACoKJ@5EASH(C0w2Hc?+R-(dZ)nyP}TQv)0?g9i~)%FdRcRefnvCSOb25a92K z?>R2mFqb`rE?H}qinqZg3k34f;&g9c2~v>#(7Ky!BDRQO{Yy$8kBL#dY*q_hvoZw6 z^v`X^xjHWP@#53l*uSKM{)Wjd^cYBl*@4gR5O)*X-x#y|;w!-}e?lI1By<;|x$7z!YC9ooXLE5l#eTx|Wp+l%F=5TTZ%QuPcK?~l|WWg!n@ z*@{J4n^10TGFt7pe521%(A~y|==y9rH?nOuwmsXjJ@5sVYsuPcOD)p6zmRB%ys(_r+%LWZGBYo{}b z^qQ0nS?eUk@`kU1++5MvVR3*(`LmgJzt8!4_P!TIlH7>1=;A2w5s;_<5?4szTP;rX z+OQD}p$a0>JMu~egku|Ej7rFST#NT6hFlN^7qi=aVNfn5E_eRvV!Por< z31#*_S<2KKC zct#Q5|A`);oDj5wJ@Nqb$ofix7M&5l>k4|KmxIUsGFWbJo$J`|afX*R_sQ}4@J}am z-*$WVx?q1e;Y)-jwj)rf2w8x9h!q3j<*wf8U5lmBd+Ui90WmiLdCv>MQYb^dmS z@v5$ilVwk6WP2n`SU~XJvPvZ@B@UPha{pf1ulYkZHo8%EE^_~vaX-n?n~Rfn({?9| zR|+U>_)eaHDxVe>es=0NV<_S-I(`Iee1isR za;~_8K(9g}s`KaB&Q%;&vAiLlbcmp28yD`=Bf{88Hq}+iQv9y=Ir>qdw!DU`0@$Vj z(X|enOWn66BD#{!vC5n8Fa5nsUi|n621*L~*WxtpD@ol!GDQ5a@}X2^Kj;uG*Bvkq z!@+#LuTaH40I-pt>_S9gd<&5qwibDGy>L63dAA2(zzg28_`pYg#gGdtZ;O!FL6nPU zJ=0Tyk)5Gt0KSWGXe^4Xfhw`h0Zc$aa36ti#8X7+aF;Hg_3XOQljbe0ADrIA^n8M4 zQO*WF4tk2rx9MMmD%;RaFoIw(^R1B$*|?3QS1C6n%Ni3#hHYLlR)}UmEF6=|zyZq&-62s#21me#)NA^0V9itaPAN*}dY07;tzAsyq~5aei0~d@p06Eb~sY;<)IdSCVUdThFpKux3LblG|+C7e-=yE^KEzQx5Bz^i@O|& z*-@{u>!%;ZsdJ?H5?rZtJYFG^GnQ3`e5=Wrpmoftza-b27V+Y zqcLhR07!i3Lua0&tg!KqY5=}K1B8^_V2#4ObHpW|_oNBk%$05RC{y7-6&%0m@A?U2 zKAM|~hh&PPDgik#ot#!9)2BqI7+jE}F+2=q=gqsk%-<#v%hDNtx@H!Z`&qI{t26p4 z10TglDy~)Kkz-b<6R&~EWFZ(Z0HYb+x66)k)@2k)QC7TXztZsAeuwk?t%A=4uZNA~ z20N1TJUWDnGUb+@RId!I+^;X=+x2Jwba<`=aoBGwHb>tkLJFKAe3EadUoSq8#EFq0 zSm1WXpj@SZ({9oPIz_$nL)mJ98Nhpqa+Zt2#eC2gEs5*S4?#8mqzr`xO%IM=u5H{E6Lp8KWUI);~#&2)_NjS<8vxt=&&VmkN9IR<}&~QpA zl$mhKT$1Xh{IxHqn88C#qekS}!D_>38@Iv3_`W|3*H>!mw#45yVV5kJt|B)V3t;mZ>!F zaF%XLstzi!B32M_f#Y2yPo=2jF|v(92T=McVq9@GgMy~n1Xlu8K`=y&1*BW3-vtdz z!CPRl{lr>O+VE?llRoAkLQGUrGPJsyp&Cg{iI|w!=B7+XWv^{_L^DxzzC4etcAw-F z#mkh7{~ouNfvrBp{tcESVXp!I`LNqRHlpdgQE?PT5rFrsdkO1 zbqg@oWGPubQuC#}v&5)QLm$igT-XU%)un^Tm(X`*nfSpy6cdi5W&yHsR9?1EH~N7# z2rVs+Vj>;`qS47MtSn)O|BW9PXO=v*-ox?6-vjqWLvVc2pnESh7^5Aj?ldv&3SWh? z^|=%fmopJJnC;3=|4JhCtNT0CJ#$N^tBi&h*{fVHZ3ObxRgoFT2sr(9He0MRTTCE< z85sx-{w|z{^@s!7$d}EXH5t?^qB*;ylKV@e3*%~7p(KPOfZQoIWnKTLPnR&U=cqihQqu6c=8?Sq) zB}AgRUyM5P0zTO8PCka!HH39dF%Q)SW@VO`LiWJoZw{wjlfO)Ly}2>kP-;Vb<*KfO z%E+*StDW!@i& z^X>%OcU%GD;o~43I?CIenzvwB-di}$$BkdbTiqW#DXRn6{U(d=>_+lhp{lTDEnt^b z1;XOw{GZr!A?$!eVqfrIXSwFQH32ey)Zmc>n-7tH>J%mX<)E<{ol%>GSvJyTf~X@^ z_e|}T{wH>Cuci|pJp@c}^7s0HxAO%)fQQtjm_&oiY09PS(!Cqd7&wXG+W4Duhynbc z7nIhnv2hosI(6M5c5=R^S!)H|e!S7zgO-G1K;iZqe`Jy+k7o>lG3^p77r}R;E4ALx z{$$9}?Ssi|`epiuPZ^CciB!Hn*08L-Sicn~8STetSy#7}B^SJ6!wlrSgC<8`ubr@R_lgjihpNIS5s~x(wa8?k!P22?#&%x36%R+CBp26EcJtg z=jDETYFm|V+QN13I3TKxe%RyMpI(v^m+AQg{W(h9#tUAo|F=+q@Gp3`EbGJ;6rx*` zgGiQhblJxD7i?c)HvOGgLqmawhU)g$>XR0?xUPPmNspAd12@GzLIQRk=0<$~MrGre zKD#bfzGaCv?`5|0aN(1_8y(TG&z3utKUmDp8K8a9X6QlmwyPMJa0-~@jh5_TD#QV4 z4J*^f{d#vTqlpRG9^8Xro<%)a^_U@%8urPma#c(Y?Y#7Fk6v@v*@)q0tdI672oPh!% z`FwpJn-SDrmGyp$@Nt`+)4NGwTuGvfrw5~tuar_X4Em+xF`=t?*z;ALkV*9%Vi1}C zBaSAr^g+k_=wdxVSsqOW;pzV#V%-4(y^Ucem}(Qi4mfWi6dgf=U{5>zZgC<`$Zo3_ z(V9k?)Mg7!Q`fM`8cn^O*0dA~#LkYS1(q&b_5#Ws$C+O8ziJiN(t6ggo!upviB;T( z`R@Mxj@Ia-h2PnijD_5CxWK1fYZBjsh(Ek28E9pkg9sHTZ%@Ymk7xW{Ob3a(z6*41w3a zVZ5^ZJ?w6wNXGT^h4x(kpr!TmpZ~RitHF_zhx^98RoJH+j{uj!*qW;JF~33?Dwk3h zuKQP+d5UsMJa+ib<8F`}{K^1^n19)Bo*6vA84aVTQU0XsQ3E}pcezY zf|p`pawvgLH_+(Ll%UIN~w2_ut zVw5INshhz)#jH}iZaOBx?$(OPrzaO8hri=m7dWCP;)*Glu~1$@JYyQR7EuzpS(f~?*2BWE@%S8aA0!& zWJ~T=YRBKmtruPPLf5fyXy7e}f8(8=d7ywYCBUJC2U5JiwV0b{2T*?cMO9X*zuVcf z<)o?!9jB4qT3!vsoD`eS4>l}>-wy@+`KW4}+fMjTzCN!EtMW(*eSkww4hXf~6nTMi*N+|OtACmoDW#=Yq$>LQh zj4)O-EzWD*f1I^9tyKibZ=XqE`m@_*uoL+%9Gs!$1bxQ1Ip<5xvOjP!J>;4cr`J7W zWS^cEI662dws(^l+NyqIA%)h=QvWb>6ARMt{vQAqA6eTdyFHH3$5I>CLgB=rovO3N zxd!y?PW5`_kpC%E5NrJNP+2uZ9o&l)Bc-%g>iH`|bIqzZ z<Tg}- z7!ff7DlrKv7^*p~(E(o^m7{uopFWbw?i&rdrGRk8*~e|M+f zi3N3W&4!85aM^zyy-l!_&yLE0#VCW>BQrzq`5&cGA#XoJMxS0APP;6O)oH)m+$FGe zbgX@@WEdY(5*qH-0z&d3fYEeY0iAt*mD87viLV9z5F$Ow0FJf`cchPRsp>h@qj?Dc z1g9H6@?QLY^hmj)rLl*#y?1bJwc~McH=b;ko#XtB0+7d4M;1`A8E99Z5VH(zy zIU;U{<+7NBMETs&-Ra6ko6GrBfdsI%WiEGLL^-^=x;j2SJ~~?A$6g=%RXIA{=qoz3 zwGKH6HB03uUjF+FW>;=Jyqe>KkwAeC!nN?(7sdL^Nc(qO~Bd zu)t!>|9;afbU(oGuxc^bIjhK+crB4QD4OE0UGV*@FB8P}vbxTR$u@#8{d#8s_~$#V zi>MMmJg^%|&bgEkc#yXD+FckG_)%E+`1truS-IYPuIyX6iUQUqC%u4x05x@Zkr^oL zE=DjF1EU?tSX9?MQUnk+aDvJ6nq{r?N#({y7dY5#Oo;OVJOVq>Fev7D)`s|LhroVg zf|DClfIG1&;k36c#xfki$#87c=-=@J*I}I{@@GZZnqGTqa-Auzz=)oF%z}%x)#FPu z*v*ZsK>DPI#{C}j!>XE^T3|>>lf?o(=)=Kre+Ull*S)y7I6h9##KgqIv-0a#z8ehl zRQ2%WXK-BK@ZBDV&q>mnGGRq9Dd3}sP6%u>fv#0QmDkIhZXLb8ie#zfmQ;L^xKp0_ zs|Rhb{qGXwj4mK*W9oAj7cA9c*aa;OWhdqO`nt>6YFKEf=}KdzMrHDlAp!TSMrB=X zEi*MWH6NcgbrLz~IOhb>FX#`&#>&^UiWXUvmci8s1#|=`GgO3*-);*77aqlG0UI2N(QgZh7bwZY(&(Tkc*P^p(c^1nuJJh|S+s z18nd{S9b;(D>^=Lb?XiiveNG$BRO z(NNEY3y-Cr0zfA-178s42qGe$42c=MaF}0v#ipHDXFKKn5Pg`RotxBK!f#*da0f8y zg;+%6fBI{mMPU#hs9K3Z4^{wka5v6F6Zi3KoSs4XMtBJDz8vtSc|hAmZoDfAs|QQD zqX?1s=pDZxk8*hCpU>B8mBKH(dwYAkyP#i8Ow9DOw57$xzTdx{j%E)JTPtaQ;G|U= zwhdLW*Nkp2PC!ycF;S6rg1hn*#8pHEWcn=o; zq}5bZ%smVnotUthD@$r>a_PYN5v=SxjvQ=cg^0n6Etpf~^w|ir_HM71!oiX<-F%}w z3k(Y2W^LufOX0-1_60+NpFEzE7lZ&H>YEZ1HS6Q9^#GC9LK^+Q8v9E$b8EDr>y?0Q z7`fC(J1jV0eK>b3d15@m#C@WqnDRltq@a5joCG$rhf^gA>Uvi(8yc7bexh{q`%fY` zj_q&QDsDh#AStQZ{#M+WL4nAIlWh(u?^i-Tmwr%Sw<6Pkb763Q5JT> z)1s#&V3gNe7EFMmQV3w!Z$?MnY<2|6TmdVD@2WrTK=pFLLqqtGdGX51fls)s?lY!r zF)J2HsscRI7q_E9)cEcA;1Z11W1XtsDAC#LEe#2JdU~R;F7EGB6k}(x7m9#7Tst^m z8`s9-EFbWKe_HPE`*+fFVq*#0p(;~0H5=J6UH{^n^>eecBzsj1$Ls0ObPZ0^$jB9^ zAFT1Xa12*3V*eSmsF74!@d^~U>-NBuk^lkyxZY{&q06#EJo7mepono!=yKggTDVkk z4LJB|=6ICfSp)~L4avFna>3_#u)7`BFMd75fXeiPI%QuSG9I$VcAWCo`P}rS6Q96? zw}Ce0xQ8`U=&*N-rM`yp?&rENkMJ|u23 z56{nClXw5x-vP4!hc9vff4h_UsiH1K|FTfl6XTV1>cZq_g_L$5mh(X+i`G-d;fb_~ z@f~5+b!;Nm%3D;g4VNT*{T(2-g|@VQ1=(qNc+i1qwU)?}{SI8w-Du@*C`5V|-H4g{ z>YSu*#%FJE>c^kW|CS8f-GABeUs{0wdtz++QDqB){JEsRx=+!DsE*Fi8nVi&@-qsU zZy&NQMmnY)$~`en{p=5eiephAGJyrS=I9{Ab^2nmZcbD`;bsg2{PDpLjqA0Zb&cyx z<`N%`8ezL#aZxqZg_p^H~T&8I|L@t zHQ3T+@4b`s45~bLEO1Jrbd46H6u@v^P5E8n*-`8;s|YgrKVj~a%VLyMGBY)o*Qy;# zHG&Dts)+oEyLn5(<=!qL;l*>K$i11!+@u`ctFMfzxwG6Niyy?eeCNk&4^z$e#(=vq zuuq`;c2(GYxUU8(YpqT9DEnzNE&hwoSowleItk?FQFqI=w^TuyW}7#8Z2~jjQQa%{ z$Kv>6e0=ohU+|@`^m$1CwL86X=~&dhRFi)~A@`(n*`&_94pi=drFZ0u_xsbKeHFo# zN0EYx&t5!t5AQwSM>Bm?-_?5mbffmRl?bp9_FzCdVmCbsF7F=9F`ajEE%eBe!4`+F zBrHx$7j_@)qg$${ztt5g-l%D%%&t8znoYl1xJ|} z>D2#<$M2N^Um@YTwS5w%9&Xmf4>BpdQeBc30MfyM=yHvR)*p&s-L*;4dzDEIm_~lfn)c!37HSK zTE@kFgu;Zj@%iavbCrY&SZ`B=Sri`JN@yzQLZV`z-MCg%$Q?otmwSxeqH1sH#n4pni{Pp0#@Z@e{Ja&o$K}t zeMSA}WZ+k2!E{RKAV~_iAE=V&9VT^F#@;@bXzW8psHmXhhHpV28PBy9%aFt4Mdepd zk7Qn!Zb*iw!D*)iVP4=HYURVQ)Jdnpz4XcBg@%mr7X3seqP z6IJ1!r`@L*I8`n-4nj6wSx$ElsH_5(tHrumoz&^8pGm7Rqv7MsW{7Agy?$8gS{#;r zgA(9huQj}dxZdznp3^Kp?bL*p)T)2jznQ4x*VfcrLQ+YyRZWkYzq6qRR8DE?6Xo6S z-8b6a%;%P^Inwm|=KmJqe^KghO^UPt9eq;uqPKyeJ*UJ7pQhP0)}O(X*ggoPCXwTv z_lk~Cr}YX%)xt0AjDVq6Kfz}4{BFG!!|TMGh1O-n_pKU@Ax;#gglPpc{W=X48LXgu zZ($I(gDGf+h?65~dG!c4FqjKX!gcQ0oNoDUuQ&FxQi#BR0j0Qsti5swS@8?UcQO^~ z4Li_2RL-jjZBJf*O{i zHMlpC-#kirw=noil^{jiOabQ0KX&bav-f8YqWYMmJgju8*N_W;W4ONLP)@Yec}=*# z`Mpm6+GyYy9c9SJfMxDY?dhDiLhuox$s`3cGXEnQfO!`S*r%UuU z?(PyKA-Dv04-i~}yA#}98c2ZP1PdPA-MtCHHMmP~*WfZue)GLGZ@zi+?tjT*-PPyZ zI#s9k-c{vNr$NA_>mX{L#;R<+jJ&q=eMb;bhCEn&#Hw6V$FXO1KB-!Zk#bbJ{CnCr%)+Qg(#zG5k1~Y$s{jD?{`%APx zz#E6s9kMB0L+|5O{d;yy3)j!g=a)NZ0*1#2KZm>4p*x2$rW^-{aki}Z5c~IdFyuJv8UwMz;iL)f$Q9Zf9;buJ!8KBKmP_W zN{lW1>kCjK2MMB|XBLAuEbo&2zd1S2hf43;92Mx{kf`|YmuqS@n;Nc@1t)No`g=db zpKnMHVUmK1bOkd&gfuRb6^#un?bZH^Nelb3GI_RURU7&Asve!#Swk#G8NTZ~Z4ZLg zxlt;`M-^G_TQzCCrJih0SH#jWw$K3w<{rjEp27vkMk-x4CX%%LuUL-@?GQmzq$q(#yQ+B7<)VaYz*=? z)!d?sE9N4N3b?MD&d_i`XF?I`{w{?(O+xb(e&<0SqBFIDH*&KC(YZP%zM``yUSlQq zJUhjw%J^IG$Y;_2&?j;gI}(YuMiZD^&hyq1i>*lhpS7XRXv4>KvZmy0m5h-_n}?hK zjm#hy;N#x@t^3W=J5wQ!@tYx`XYGhC)u&IzHV#BC1B+K9*j|BWzoptAtUk6~d>?x0 zREKn{*5nv0Qyl5%JE@Pp-RcU%i(rq#TP<-|&uh(MLmILl_VF%r8p~N{(i_{+Xq{1L zQ7Ti!gjCYBlQ9x65+#@9mO?oJWFnw7TRYd0`O=Ch;4Ps&7P4p;EiZ`3ZIP+C%pcm_Lu5Mxr zl5t_V@nvI)9l6O(bB^P6`tu8#$_51o$A9}q)a$-#l?K*GX_uC)*(ybHbtNeoRJ?KD zMxa$da6#xKmHJ^Iy31$9`?AOL z>ub;y8j2X)-Q7h-Mi#3TV&F>;@_y#as!(y&z*~gZ+N)?#65Vsr!=NHW-l`JRtyPAX55ea#`lqtB`FJyR$Kz3JdaC5=H@AV0X7~Y3 z0J#(YvJ!oO4WIX$?H*0)=O?|@9&g<9%TsPh3k5VNRdi!AX?Xe=s%i0ENx^W5kj)G5 zM6EY@Wi%vDMTQu$`ER)15p~DjQ^@)rwAX%`298J#_eWQlVmefXPX4;6{(!b1cXRtY zRjkIr&K?r;y8IouP*w-Sb=S)W09I8rH1%d?ij4qT>EO3-KC4)PM5h|@ET(5KVDMP1 zUmxt-tD{v`4wRSMP7;&x&TRfMb4SInJY2F>|2I}tq_i3_j+oKlxv%&5JEAZuhWm2; z#V%&0;Qf=X3d_4$^sLf3Fo_VSg`|%Drip#ha76s)7M()dcdwN&ry;ckV_JwYg6&(r zzp8PyKXrZH0zNOr^c3hJ;*Q#hY#v8#%`?{K?nn=3cvuiKGBRFVTre^)Na`|%3|m}m z4#Zy{EnXi~b{cr^K_18Ka9YxUDtB2RsN=7e#)n3=BF(mBBs_dgPIE%Z7!Md)hYC6& z1Lh{FNKFCRgT+YSPa1~E`fm9t@OBttA1aQoq;fs~Y|Oj=mHHyP^;k`p=H^K{UZCVyQ^I-lpW(+qS3Xu?r|y^2Auy5O@h3j1B*=qqR25 z6eBNoBrdici9;awGbceL0YJO;N-+QqQotu5*RUOZOoQ%;9K~iXeh8Nv!if@zkYv8p zdxX^rmn{##W#fdP1CTp$e(Zu(%8$X*80woL=%jFBr)Os$K726NUffuN0yt-9XN!#v z6x3my!IdXAIpg!%23kGyHW}$;z?8;pLl+C*gf2Y@NJd)C?M(FInGyK(FldvSVE^hj z2{G&q-C@llR}n*Xf~u-EtD95IwTlsmj_4k1HC}sK*p3;6)vk{eTa%FrK=eIVxrMJXTukJmB%{Bw>Y-nfs;&5qM4yx0MAPz1r2M0%RP>?P6@DGkHvrD*u9INrbcSXV7KZWwq08S5A#za+`MI`84ah(36 z{1H2S#aH4!jlVS+8zmpn){d=KRn6(&TkVbe!1G>ysk4s`hk=gy(_M#qi5GgDy+o4k zD9(VQp2sRa1=r$_jn;)!#5}>f-ACQdA{=enUbo|~p#j@?_%j}i)D-j_!}x;@U(H3( zzT|MBz_Bs8JCuwr z@uWmGe>*$HQzYZBISSqg&1%oJ63)G(Sd4&9x4J%>mUBjRv%Tp)oGLbvAn)|3m20MA z!vn%M46U4O@D=^PF2Iske1OOH0IiAt1bA1xd{#QM)}yCd(a?fHYd2>bP@K1?r-vbN zKS|eKg&}dq?CMyN!gmO9 zqnW~Jg(U*jJnR-^fT%6wAXZ>Qg}+doxR3c=OE>je`)0<_O4Dl}eS^`TS_g10tC=3V$KGWXPT1`-&6XnZpZ@h*GLyLeB(2}JwLz) z18oRw{Ql{3Ooxq>iGnBz_BFOoCk&PsED&;!YoGUTgR`TYB#6s%rvmnwSIh5LVy~%M zJh&boV#s~?fv`u@F9i=dEWt=dGr6@AhmJ@3Dmaaz2XGi@Q%r{;20Tn|PFZm|$km|% zWeB3uX|F_$y$i&!@^LcGZ~JTbgv&n(SJdl*@Luu5|6nRb5*@EEj_)>mS229^zQF_O zy#2gpY9P9TEL~e3BVH?~Os>F8`lzktaUC+TxO{otOh2p+kT4*)S7u`Oc1JiV!o>Qh z>m0?$VF(bsZ9Sg3%A~9?$+j?_SJk)XYfk$T1Of*1oBeUo z(a|6e=tU|ZRsO#MdwI3FmI!&h((t0akRDz2RY!#S{w*O?sW(gj zQV`OQ{NDh?%ylW<|BJe+>wfMXL;VyIWYXi5B?MT@b|b>l{TijMORJx(Z@WqCp~6od ziPK9i8aiMmw0s(g$@OvW9qz2X!0B#U3e95e3PWAMeT3Dsdhx0sQ-mR}$;z)=dY>$$ z1}{bymg7E(05lYolFCZMX6O7+C~wo)nEda_$k6wFdD=!IyOE|!NUYlwGnk@?PcSsH z&n9L*PIKXzwcJ{Fv9*NsKCqiw1!){15k?vMc|{xAMayqlS=p7_2s}pQouQWv4qcWC z7C5@#qTikWv`&fdtj&FpC;it-9Cdy!xZl(ADn3B}S@+RRFy?)x?bX5-#)5Kv&Z-7~ zS&4_alP>*IH(+4PERwc;g?Dg>D7w`>%Af^bz{-zJPSm|8yC~~Z(Lk`sVy4WgRb{*r zNBx@U!{*@dxVC}2tcB0#hT5`j?+db!co?vwg#f0$Q=+u%ep;b(a^g{W$<5krFs(*} zQUI?{nmX3N+%b;327BPe3Gv(r5=HR9M-+#6%9cxTsH#QXUW(R5)v{VjNn_8u<$;r(Dn8)P>d8g2DlFgja z&Ah*88cCZ@IsMSLSDiq=T6vKZogI%e&I%tt|J>h0cP;9d2o7&~C}yU4cVKO|*4Cc} zK=kg{D=6X%m|w;A@-e`;>kwI&cIXp0t}ZTz3fr;Nz9N|svw{Pv$pNF!${0W-ERiOf zg3r7yo2>r(h@IzS$Bw_oY_hv3t=#1to-1KP4jv!c>RkIm_Q|0Is91QZB@V(QTew_x zj3Ajqwi74?{8O*PPEGw0%&Dpw0JLm~bh*N%3lOE4WByntZd^LzxWLHz%==EvO*wnM znkawkks!4S#S-eS2yRS`(#uvwC;qhh^Ia~lu@i?hA2lov4h}|>3%K8$8Y?L&$tmRp z2Y1tD&GJlmoH`Sh%QB=8Fds!#J*ua3kCv)k;(&Y*uG(kunR-K;>q48tz~S()yz(&( zmjo`Nks2%c$Wsw(fV6ua`tD20cuvcCMR`8pYFHSglo@c7kP&}z>=3}WMDSF3TZ@?I z^wDXhu|wJ*B3(9>7-T#5qkz-HxPKA{gtSu|5aduGH_gbjO6Xz z!={ed)7;8>)3hGZleJn)wg2VBOtzr-8|$%|g&+Sce3+Kw?C-`^MrM{dF1HfZkypaj zKD?f6jl?|S=c(F;>aMGjm1k5wBK#(s_~23gsJDM-mRO&3V^ywP{=7ldoS}NdvOOvB zI_crbt(3Y=)2CO4h`@{ZE!ZW!p`SlcZDQIeiLj9Hf!#h`Z=?mh2U-RaKRV;*e-DUV{c4q5fRlI&F!d%&wey)-UoeLF4RwB`JLR zi5JR@a z`icqXuXnFRZpYEWR6hO8^@c;1(`EnF)se0{;Y{#O?qmFY$wNlV*`0~xznuP^QKr}S z-cF`p!^wT6&(+{ou0HHNylKIH02py^kq`#SeO2F`7*uj(_ z94lY|icD>JR$D4|A$UmjuwVw<1-K$@&ugg?>hb>E9yDxaXUAmGkjX~t5v!f-IB}SS zGzbvaj@rj4zl*i@Q%r#FGeMv?hmPl5?P*fZ6jCsf5^{REI3F&w-boPv_<||tA>s%d zffldI1wFB^m<02Q$m~f2NpM@>k#>FLUw`&?-3q9>n+nDh=5^+RdIyF>$hd)=cu*biUl!KCh`X!iJrzFh-sc)&l7#c%3hL)&%?69+<9w z*39r*yyVuGML@7kE{=`UYJET^&gF4VaM4r!4aTws!nn+jy%8c?M$rTq(4!odOY+Z| z-_yX_KPUx#c}kca(iu>l!54Z#@u8S?{cK90d+Xn@4!)C7hOjpT{~I`>TRn2bvUsJB z7?RCV_;O&Kv$HAB$sDy8**;3=O?X5uHp4n*k;OqFD%iY$yRPr3FIJ0mE2NC&g|WnY z?ZG#x)OCsWE2b(s^#uaiY!h%0%R}ns0Vp#tG+a6u+If$bTd!m6VW5{o)ZcZVCZ!Z5 z`}x=hDOE8i#T)~T{O%2Ry0SixBh8TO&9TusMF@6w(W65yM;7ZjEHmB*vueOl0*6+L z9EHy@|FS0vdpxncX6k^EiON|*y^h@{`it$X4wi;wJ5T@n?fAbVqdK$OHukcoE!#AZ zt1Ho*FhL>U%{lkUbHHrJS^n|i$oVeg^o7B5?&6E-VX@a>2gzjL-W1Gc-nV_Spfw~} z5qTO~eK<1|E=F(J*(kCaD?1#t8=~-;bt*rhxt?PRHRc;=dj=WRBkvS#5hgB^4%KQ} zNRP#Q7dVNrM|s(we!563$>Sycv;6LF$p$SCDPFpF%UB8&{E zZ9}X|F;-EsbEI>GjRMvXBnAJ8nrLUz<0c;Z&kZDPhGFS0%^gq?D4rz*dQa51FM<@K?+1ekFcVFCr;LY|jWYwsN8;2jE0f>@l;1Ge0_Z|vow zXjhlhA1~GRi%yZ{sH59D>g&HXdKee_wyI?an%>OPr9TK>pC~09+3>iAq0maax9W*+kIsI-)yS>BR`0Go!F1 z-!?58?5OByvxXs^yC1dUY#v!-{R%I+1JS!hXT#$r!NNQrZ0w5A){KLr)u!7ni48iR zHW}~b{dvBVcgGwp>{tJleoi|s=b}=I*}n|-;n+Dple^KcGz<9XoV)+Eh{yX*^5QSs z-tULYaDI1gQXVy18#{VdSs0_DJFly@$YACi6P%5AV#BwqfrtT3&0g8hlW8D4V&y{V z$MY!Wt^kS89G%a%hkYK*C{K{B{Z7F5_*-+D@BllX{FX^2VToLH+4CEdF~5uGUsbO* zK%A*@g`qWTn`ie6uGs;my*6LcBTu)85*lAm{fOm62(Y|C18-zB?mXTTAIr24Eq81FgV~)sqMRbKwiShd z`p3OTZ00Oo{=cxQcW*pJ(x1YNxI0a+Z`Pb6gPI%Wcr?MU*d~MG9SR~IJVFT^93;(|Y?dzcC;eL+M7<0}-R;*0>p ze;`E(wdrv}u0omCUrXcBz`Y;#*O_3)m!0@=+`h&rAgRxBeD~gf1EQF>E6$w{4slO9 zxw|6NYfsl=@mSzv?_CP$e(r=P$l)A5<~Lpa#*;bHbv2oOD(lcw(UjPdV*W2JfYPZd z73Az4l1hOKZ^~ zLHBFb!=P)ZU55K#62Ix(95o7a{f>q1u48!ejaWo1!iV&%n(MD?*~j~?Ee#C~;o&HThK6a#va+%*t*vhS%dz-j-V#Rxcd1E= zG^HZ^Hc&ui7nyrXr<$K z-dTQWlBK~#QHfq)Umr%`tL_i=YV8>c zCi9w6f8e9=VOfy6(H(ai9yDP)<%-@7FBQyDTNO-fEwgn{??D`+5Ukemz3ZM|EDMt9 zb=TT2GlSV#oqQ)*%`_w>ElnZfuSXr{>Ftftq-$WXGCvQ!>)b+-XABi^^OK~8SO&yf zve-|LH~Q1wZbcEp4Ci(TZEwx_I*ep|MeU82*i9aNciz9K`QA3NdpkHH8fgp5yYEL&$Vz4If_vMQq+j25=#NEL>st;$YsaxZtM631 zu9zp#Sk7P2ivNyXelP!7+m`*SBhrjw=3H`tV>dzesa^F`gqoo*3WRT66<8Ru2v*r= z&=Gw0kjA^W!Smo8JWYJobW!iLCsI%gHC}RtRwcQ}iXZ69ebf{z1}W>X=+GMBj{={2 znNIsC6C`Z+TNCSUDzd}3ybKB_dwP3kpwINQ_G(F4neC@fUn3)@_FU0S1rCpjn1?Dk zc)#>2ggM8Ytx@aGJAp8aKm2xUGxhpF3WP0Vk(4E-m}fh#g)R)x|3@UOke8;{Y#OgaN2Iv>3PJHKBpBtTs^HW zV765|?++Q++Zu3T&hR}nkLjl?iP&a*Z(}&77eEduk$^iO@LDwl;QnvfmpP{$`NI8d zdHAWp5%Ftdtxfaqz^Ky#^#PpX2hCt@gLH$_p(d!J{vb7#;QS}aP-z(O!Nj+0}OoB)a2pff{HhxI9fwp-Q42h;;?~^HmypFlsDu33M#B8y_So3 zPH;MC{NuEirYafNqw0`;?Qgv*);=EonI9WNvZ?aaS!pWy$d}F+)%wCOHpXJ|8ZM62 zf6j}#5+59x(%??pu{@8m);Ya= ziFw?G^3VDT7sEP&&)i6mAO;%ZC!EbsYjtavv4vtJtI5l(^T{dA$2XlTp`p8i4o_vt zYD$F6S*Qk>qn4sk3<67aZhHkgYNd_#CDwKprs6>qEjFWnL=QNTF-Peco_+2;NWU9h zuhAZ7un7{U`#;1xx=nr18GzYxW4wdqZ~4IX9mP=1sqMf5q2i zD5&*j|8Hcdl;2`~v7B1jN#CmQ#%|ov(PHBvOBv#r^gV6p&m(rdM8bho($QVU+r=0nLg+0^1$-(uY}V;fz*$S8-57lJBm?Jb z9;=fa~J-BO7jR-CMKCZl1#cx zv!gIYCQU++==hrC6g5enPU{sh^=v%0U8pG@DeF^|?6$fhsw~&(d%zl{Tb`$#95(VC ztz-3W~LZLri#h&94L~Ep&8rB$ZoTR76Kj{j zZQ(V5kefo7ov`Tb_gckC*?HG&4T=((yhLBU1SuqH+|a0ZT9n^N8!FL|;?TVqo34{I zVC)xW5bMJ6Vb1U*lysX{j^Pl0LNrYc0vh^h?=^yJxlpmcJBv)^c>N=!!?|}+QfjKI zP&#E}-Pi}E7$9gT<@h)KF})bolT9@h@FFoo-f7ZmWu(Lme)ETnpqcvCEwGV1>I+n@ zUeRuB+r!=1YP;w`PGoU&0dslhr9I8q8#6q2{XAFR|E`FX(zR%+c0jLNDk0N#uppkJ=;)^(Nq! z?j4(matTOo4n!%ibQD>hS$=qUfF24TC^B<@4{K#*HP;ys;Oxu}?heI-3X8*X=#a#r zTH_>UU5n9lVsdh!A8=7hqFx4Sav!2yj5vvgUWWx$@K^r$=7yo@2&+|0hk_+~_WVCU_+ADOjvWgmH7QtTf8ef(ek$uw=U6I3}U%12yE#e1@Z!v{`i%!L5 zP%1AvsVF%<92#-YW*@`d-(V4M-2_=(N{M#4Co{GAc~Tzoo7M{(t!f0)4;F= z$Jhlb0TXnOlrRN<vMwFg`I`a<=TC|jmF)Q*L;g4IMUPK7i`lw3>dl>+>&_S$tw*FDMVk%F0@< zu?YPf>grsky=X(_XB&N$`mHmQlN?Z|W6Q0nskyl1&=!*(=o_XL3!h%@UAn9d$S8>j z$#Kxom@B{i=X@TdFsMrh)3S!rJ;%=9BR=1^{r#KK%Glwmbv_}NEW+V1MEuce0X-W# z7IM6hN&dD+>N`7?dyt9*3B1%~ZD%AO=>vTgiA=olFfbge03!22#i5*nq+?dYM&e9p zu`L9;edS^^m*5n|L19_4mXO01evSksrlOu3Vig7@e}if zZE}Jt+g$?MU|p)7-HtA`PxQyEN6ipPJ8l9*Mw{AmGo4beo%VOghQxSpy^dG2=oV+~ zcd_slBj4%}T&%FPj?)7*nNJT>K121%N@$ThW&!SzJg@Jhp4S@PMPDKO`2V8E7jzTn zZw@B;hMsi2@)m8emL+IZuJv~AAhQ6FVZQ-8?@&=W#PN=7Bg2UBez@J8=0&V8f7dGqmH zK@nm_%+nY&-nsYcuWHP^x;qU2ywj_TQAk{4ulAuk!2ZjAbeD%#QU;gJOqq7A?KV^x z(t3Z~D(y}EVj;2bNch6080N+FeSz3De+vQ1@V_Ds?H0xsd{aEWY#Z_LOo&J=4wVMq zbc;;8DJ%*V@k#e@+SBw0(F3yqWgDnrPwydKTa0dPB%ih#3_KNWN=@UcIM{-!eAL{w zI|gir6C*KqI)A;aS+8=y?Zu$>NCF<27oA= zrxx$7efQp&C|$H%D#pidSfABqo6yeln!Zqn&h@EdC5M};fgfvc+Xp;vk$Pya{q8#n zq1^c}yX8<3XTYiXZrTBieaUq?3gw(B2{3RJaq((?sm5OVl9V}?*Mn@KkH^R?2V*E{E1U3yH# zo%gl@vf3RF4kDd*d+BjO{W*`*3f?Mvg?iup6DL^OzU)L>KH-xgitZg75hp$|?TQ?k zk0c9a;&`k+0(eZon`QT{z|Q-rDGko2hp0vTi1UuSEIM(aqYyAwpE0AP$I94hWk0tQ zw_?ZJf0s7Xj00HX5apJOo0Zj6ZDgNCMBJrKAwptI)?Pkj(PQ;b^-5Cwhg#ncTXYZR zSu6ezU;&UUKM=j(<#yj4nBUmCcjBVxrUabF*oEwZfC1K%ZoKMc|JY_-?IFofR7TJ;?{!j|492NTHlh|k|rwXFFj zzJR8frfkQCW#K0;rfVvjTO)p19>V~AvlUefs`oF9ks?LDn_bv+HGX zR6EmN`(FTKdIa`~$@uZ&`VK#Sjbkd1NbH28I;!2F8zWvp=9Z9#SuC-~mQ4i_DHb zzy7z;ZOc7GUG!w0%h@$m%K!7)hYtTC|6qTSoUWE>J8HWw9NFn^4nL!#FuK?me}vH6)^f~ELq=fxE6UMw%8`7A-d zV8DZ8)-i{&(A0P|EtzciT-RWn-2J`_=c%wzq;AxzY#3G^h)mRm7G}Ck5!lXo z<@H;IyfHD~P9H4)#B50KcLdVHsM^+RV+s{ZlfBkS`~_>2@yN8kP@giESMNW4z1p^& z_*ys!uIZxk>>@%_Y0ho%=vIO``m4yH{m`?OTc>2?(KWGCxY+~R>t^KiJy<-pJFQEPybIGBjE{7v-1ki${_x2IW^IT(?6Q| zWJ?xHNCP$&e(JydaNB!B4z}? zz?}_gkm>u5B*nzw2l!;@bh}TX_9&RF9idjXI()uXR-bCN+nzYB3TXKvgGMesZGcOZ zxG|+$KFLd?zxXZ7Yq!2~M4)3MPkt@_#A{gFwmH#tr#>`m7NSgx`klZ}`xN|>tGIF7 z|7gUab$)+>~77Z1Zzr*6UsX)EFvJMQ=5amKoxR(uR`D+d;OWPnD& zWt6qRzQ{cR0j14)7&f-and4uL0=l5K>l8M&PFI*s{{FY1Q|FC8nE|x-dmasslfEYp zvZF(Y*GGcRj-8%WGE)b{m{E5PHfqUNi~S4#J@p2CrnSlGnDhAa7ysZ{v;TOaX}Nh= zth1%GiR2rWTt%^_r^m^hhv)p=L@uJ-!lkX2=S_}RlCI_oIb##~i1rh-cvSiq4*A9( zhGy&Zi;-GsU(A{xn^$${#M+@>mhr*;QgHXoODkfHXf4pEqBJ2A81p|+=-iuGr)&xLTK zOM4{(a8oH=5spca41spn_i+4hQ)$Ko*+%OufkDL6aa>YAen(=w0;b3~aY&n6B&Sl1 z@ThVsg~+jVBAZv+gpLR7#r$Rm&cT$^Yd;l46Os8rz$RLdH-$Rf(|s2rloDN|BYDAP zFaL3)D*gTa-vzyDcyU6E+1c4yQiRJ{H%jG_qnB`rAynX6r)3w{N&5D@)0(?|2=(Cc zr6z{s&YFFx?*XSDwmQW>7SzuF^amX9k?CVY1qXB=`aq4Y_$FuLLpE)e9HSrDA#&{E zC*`mlRqwcLR!X(bCI&XP?Qu7pCTpJ>sAT|EN>S^LJ336W|FEN3qq7zprj!a`LG+r> z7izk88e0WJ2BiDPG$)^4pD2*%4iqwUPh#pJew7p!_`82Cz4FRA0V=*WRq4&tJH!{6^yV1I7cQ%{q4l!3zL=(;2HUPoVDT@P2-EBy0Q*S{r8N}YxN z@0nLOadR3%%Fe*+kvg*%G|`K zQ#41C2hz2|!zjwuH1^t|k>j`pWlR9y+^xP(@lCXc#g-zusHKf=Jg02hCRI3{fXc!* zH5`!-x#KNc$&Q&(Zq`wq`LU@X2<;IX)Yv37S_sijZ&t3kUx5tD5eZ4r0u-??#N#@!bSkR=R7K+d~doNyf z9oV8taj=ThQ&e0u6|{6jBq|}z(rE#wNVBho=}JoNpuZkwd_>MfLhz6eh()k=!AN$k zt1Hpx!eB{VSkRHfq9=?$-w;S2G>H?@>{7|TP zYj0PB;RwII^Ys-O-c|U_sQr*;bNkPZ>&Bn+T^ORFqX1-bvNZcWEs+3F$2o(_E{#bT z>T(K!?h{gTY~(m@afa|g`+@ez59P_>!R?3ZM7`R857~<`!?r)$ z>D@_j>tAz_AS)~WMQ}5y_6XOK|1Tu#B$C|E6dO@&pP*O9ENFhNQgsE=Kb%>%TBEpqWpJw%yvwA%I2JQFOmaFo&AoRbw|ZMnYmI^ zQ_oZyI%pf1`sqb|fvN`0yGGaqo~(Rf1}{=|WS!GtbGx*z`tjiP-3-KN4#?8i5WWoN zmlt3Ky(%LETOCii?bW{uOgdcVZ?`%&d4mD82&94f$-V!`DJdx^zE?3drz&-IsV-EX z|7V=LWzP^)g+5`Q<3xv+O8={bOfJT_UH+Ev64wmp&KqSzfW%>}Wq%HcFY}cdZ~3Hx(L24;R(zVL#V~WSQyXFI)Agv7RJ@FKG>ntR#Bs6HlOM%DqAnn|7Kys2LTD(v#nfybcv^+X_bzsOA3fvxR!jVV@c+@6qc zi)0u$JrEZ5fWrJo>P6)BF-|+ENK0!h!wgKsdhb4l6^{f}+dcZj%J=p%)Q83h*1T}a692IjsYC4nOr^9;(NaRvLU&^lnX z+UVFEKwB2P!(Pe##P?!6Pmxfd`ZgX~=P?aXe!nddDi|gKCW_#}H(5#zeKesv(Vexo@<8z&i#CYrbdPOTgWHX58m`(Q6`6Sw;rQy!;K8b1&V0^8WwzzoeSy zn_d+JufcTPU3J=nZ{dDnu#Luk1_dnXkir6@7Cr-~j*(y_8DL>D_T_D6Q&QNHsf_2d zOpo4vU0V^yS?mt}tLD(A2@kaa4>gVTG{nFa_zx zD|l;kr_`s{zw=j-%wT^*+BnL>{{32N_MeUoYUtJ)Z7v5j!o_Lf^u8i(*C^7rMayK(x(bvKx|GqcQ4E(fpTqIb%cp z(Nc5kAGuH(*7p0@vS+Kxj`EAz^v`L>o!8Th8LuMa+Wg{`%m(XNuhVPv!;#r85v-+3 z$6#^3+ir2eBIs%ZND_J!aY#g=MWd=^`Ef~c$HGYwLF&`63rttSVW3??N8Fc9)w7i% z8l6$h`n$phiVy!UEx_M03+1ALB67pK{bJ<`OB8BEDtVpiuIeM9m`AJn9P3@lcF87imk<&N@C)`ylzuh-Wdr%fG9{I zn3fHj4VD-(1ctd`G=i%@L;;YMVVAt$Dm~Dh!b4yxAl(pf>?hnR%rKB37#G65#-6)Ubh- zGgy6+od){lHgk9er{^Vf&SEIeqhFQBk`ywxZLgHpb<=DGx*EYifG+@I84P=%k&(z6 z+(+md6)9oABNTxv1Lwg|Ei>^c(<%C?CM7u?Kx9Pjh+YME`0hmBYkOA9#VPWcy_j%|Zw8hx^^>NC{0`D2-nLILqK$FtQPR!c*VJAHsn^H=ol$4a>;$qqS z31^%AsbVO2Eh{f?radz-FknVveMf6X_7lpoe_a{57!ORXDd|1Uq*VP}6g-E{W|Uxb zSXOh6B|w=9k?AS|FxbxS?yQAQ7&*m02CBdUaA6r(QATD)A1ymzasS;0lr3>3!vPmR ztWe6)bh5VL<55BpAM<6dX^FQKOA7NyKoRUjIm;l399R>9tOD5{xY9%61aiDnAYeBw zkk9C1(Af3T{}cqUfg9Da=8@!K!a)eJFla_~C9a;IAlFbA82D^@($Ss6d&dh7u&i_> zL-e?ehM7pT(45k$nw>K#`${9FaPswQ!S`RA3i6Tfdhtxg`DwjdD?PE?3qE zldfZ61=p}Rzgw|q_4V!8dsw);pJ@3H9}cs*{kF7WUtvuuCs+N&7Wt9kaU(_q?OI1i zhh5&zRcm!?nVL9Im8!T1x_VEy(Z5T>6V_3YqROeI~MF5Z|$P;=D zGC|zj!*es2F@pP0a%0bxKXd1R=UmY69hmV1 zO+DF})E0Q{`IHN2ze0y(y;kh;Wsnhy{c7|Wp}@@-Ix~4U^Z+itmC%9e^V4tl-UNo7 zw%D76v1u@LG76Dn1Z93L49sux%@^bbs>OyCP%Tdoow%S2rwhMJTeid^*0jCtJx68C zZ+%1)>8_Q#9jLU2HC@EE69$E9BLvt0>$^5Duk?xaC!hn)7(D8 zGHa4Kyx6#OlxlHZK|z6Gr~e2|ba=S++c2}Ptph{kvI=(E#=37V7ap*X6ng#E5Z=L( zH*_#?UvMb`zDyQR|7$||Qg32O*a2I=LY?bAWKlXK&IL!Of}W(b6QQmv7-UGjxJ z%m?)36)HaR=9@2}xL@UDEa1IY!TZZPE{-)oOG&=1@-q)p%im<)Uroe__+orWmiR z$n|12LLfs}LEwjFh3bv(P9(uj=>dv2Mt##-*KsY*C{suMq= zXSPD0L!N+$C@jQpH6(0!YO1sJiK`pZlc4q0y3$1Zs(gsY=A*E_t(_S)c8Q#vEb9Rx zXLd%gIPG3if__*YH7eEgZ~p0-p)8qlG`Sf^7;u>l-))|I3q=$VNXN-<@I=Xq`m#4F z0WkzY{bxg2EDkj)GzehDZL?)mssU7qLAWBMwjQenZ0G+$*H?wbxdhw(gS$fr9^5s! z6Es+G65QS0-90!2cX!v|4#8c5I|TPTJA0ppYfn53GhcUgb$8XO)vM^bIoX`Dk*jmh zE+uB8a(>l8a)4S}f6)R-c!t-o(EyJSROm60m8Gm>F4R0E_!G8Ce7+!fU0UY%n*dBK zV8gkJCdF_THFE9}{3DCN4?!PT`ONVUuta zcrE?)ejBj&zqen=sb?jrW=BY79SX^gv<`Hl2kq&H$L-%_iuh;Dckl~=IjB6O@b5JW#(&USjmWgAO?+E4z@Iuw2zOx1z@~a zh+%PF#wpDZe&0=U@4l>!ot`N_8gEATQNKnPd-GgxZguPLG3;LdeC#i|(Msd@ijPDU zJo`qBi(4E+h^#>z)hOEf*kV6EX=wIAxG5S1+dm*wNU9sifXpa^GNFKkpIX~!^lvf( z!TWKSc*UxSOclf{6>J)c07BwZEgiYF86spKCB^@7ex;-@Ok`D} zlJ45K{OXg{AdMm7H~(0m{r36-N`xgQ1T?#{Z5!gjCDy3!QT%qWJfB zzR(3ovODg7u!o%)LkKuwhue+4Hg5}8V1PqG5%78S^pegmDLJ(1dQsgVf)5b?EF$^k z%a^5{|NWL=X;3QC!|$@TbuybVT9|BX-Lr-_iI3bUUM1pnqmc^FO~|%4 zd=`HVaYkR-zvkRH1OH#_A=}u1OqGwu`xlRaOj$;{dD`+rT>O8wSZ=XT7mmLqqZ__X zA~L`?YLqeCzX!zLPaav79a(u$EmhLV)WXTTaj>P5|7V%=X%Vy*Ls=tzPZ|IjeuW?? zL!kgreHr8Zh$ly8A6$PIP)auUJv=7f}ik$BeE~Fi7um*3BtuX zrlGzmz9|jP<%wTV{9yAQEwGFJuB5`82pYHd!_2NMM`@bjkw9(wOSQF?D$S8LIVGib zr{`D7_+dj<7Z(>GF){J*@DR*d)M|4^26OWm4a7yn-Go1cVgVo8#{%n=rBo`d`)1)y z^_B}G`;b)2oKO+Wa_mK*NkDOHS6~0G(2cFdhft)r`cf<^7`bb`A)lU~0kET^qbjtC zaz$VTjhQCVw3L*gU3(Lg{pRN8+1Xj}>)Tb+bylJR#g+`4cK|`mcUmWL=Ok99{;oV# z^F!~u?WC)zKMZP2bS$#gW+sQ5u9H;%Zn54|0oeI3r~$_dRqx)tqe~q5{ac@nt!^TN zcV&4Qf|{CIQc{wdkr7Mix)vQe zZjK3$2bTzRr$9~{ANBZG0bFR@q3zE2IaV~1 zGcOz_E~fO)pFdaolN#T?fdN-Ag$4!|mQBWrYq3&`7tE~z&oe)tJn^&B-q?FE^D(hB zX#X9&E=_P#%u2&mDwu5w77PcP!!_K@nnq}4;j?R}7F`a6WC-z$uB(rcRKd`QPk)c0 z0CCDH_P%tCv5I`1MD@Z{p+TAZF%ESdo)QsBj} zNbFx8>Q`*ZtuDs^su(*kT-Y)$KO!ILW6V;h*hX~yfRbAy3Ft1=ii%-ULw~b2&dG5r z%}yy>vNQq#DorFru^!E(tuPS9H0@qAoyFZe>c6SSqyW zd!mN1@g9WjcL?8t6t2&p&An62+7=TQc;ax!%$TQ+|0mmQN&q;38(|`MCI&TCZCQuqUgcfol7o z4k$^gQMa9)jI{hr=fkg%gSQA4$7v8k59lW^I7O3r`B;o{DbG+M8&EPDiE7mS>&Z19 zO!YiS2LUBI!mH0DW|{lY!o@zw*{`XRFNo{i9X~)-C6yl)cz~%||HfL%EgAP0foROR z6!y^3hH^ky^7TqC4MBS<3~%zV_sT!|-DkGX7`3J5@;HFP>;X|wqwQZGN;CZsx)V`# z_Ud}sntSn?aV^B6`dIO+llD+|>@d^34NHSJNr08?>eJ|08O3cQ0~Iu&j1Z~|?!9FY zvm#d0JVtt**;DGl@?>#BBUBV*>nPm!)w2Vs%;xtYa>d9~KT^9BMvNDP1LBxQBqrIV z5|XYyUrj@UlaUccFEcbWbY*2_2r4ln4b87fMr~zfENpCc&-)91e~23O@;URHyhe>r z8kuSZ##U=qAha4~!=EYc8>wc~(6OA)v0;mWp`m7yre3`zG~FM~K2acj!VQ~U8lKJ3 zdJ%W&)?DrhO!)WK`vFcF@}iBN%^OV*r-g0g7iUb>z!GzzZA%dh6Xe4t!qkuo{_1{{ zK%Bpw#XWr?iYH2-IT|!>2#m__-=LFYNFvec`u@+w5LwXr2m{cX7~KJO&}NIABl{xM zklVnt;VDiIj3-Pe4eoyM&DPI-VQSd806WVs#5r)DM7j`hu=fOTyCkg4jKOB&uc*Wx z-JhV)zi=aOskoX!QZj{nl~$tI>)-0&PpN?r9D@aQR`(wVu$aKQbIbt8CnugaM=C9v znX$2(M@J*fkrfqIuC82@R}#?#ai0qS3=E7ueLE*7rw|mvZ(Mu;oUZhAybW4vLqG+B z?`lu@Xv;6{O6Xq_we4RLg=J2VG*owSk|3y>V@YdP8_!zz&`M~&2;%;L6#`O&5;e6J z*UQgl_UHV0Vk9*WL8lqwBg zg~N$_dk31YvkNOtSB74_iC;3@cT5cpKf4J>ZRV52Jbk-4x#P-jh@h2w{FvMMLwr*7 zj|ykg*@`zw#qxYYI~LKk>W))`+})r1Fn-UMd-NH1_sRofr*aL8 zxod3;Cz7;HY!nV2?)Q!vNRogrQ^cFY)86P((})`{cj|%3T-}DNqy=R6kb@L{9%{?- zH>M-wx?AOu3j6itgmw>NcGzRLAePiQ4=lGA^%asOoG1)lYey}SXPeb3FR2oW3;O{jyS%t?)ZlNQ~tzDu&K}8^jy>GdF;g-%| z+}|O7ivQm3AUjT&L+52=&^MwPm3=_o=wgUC)5R12EVZ7bRwPhFj8?beMh$S>5meEb z-OG^Q{hZhklqti(#g20oJ8Sh$pDA&ZF<+G8e-lzHZ$>QYxV8A!aCU#VAG`ri>Lcjm z#_upWGSPo`wc|kMjmNl#%L+&=eX$@rmlza)b`0gP3_k^5MD}}7%^}- z(LrKe;^qhy9&8f`9D)Xs!Ob~e-QJNX_WUY)z;a@w`eYd{$0&r{Eux2Vj?(;N+R|NG zdQ`i^U8~tvxImGDoP1|*4+aWKT|)zsnwIu6IBKD$1~bA73JTWRT$*alpDn2Y<`HuS zZVwgM7j=@bmc`l(HC{TCnPo=fMEGqYtdx`_st7s*sGO16`T5D8Jt7D|Bs4CLZ%TJp zyo7#f>4AG(U|Dfo+K494O7py&a;4)^MQ=SWJ%8rzO*TX3Qof=op=Kc4PST3AC01aCkWJ>kfV^AbU z@ARK58zy}O!>*gG2b zRhJMu+Er6<6&;!nvh&X9UAkF@cBkCwE`0boKFQwuh#HibpcMU>NfNZ&&d-oOKsqCcz(V~5v%h*&} zAGjJdjB9g~$B;Vd&jV4XW-aHg>%$hbYOl+4KmEaoaO6i$Ow{Cn7A2v_?c)UvCw?c0 z>k9j0m7$96eJ~A3OZwC?o=U#c_40Qro5_xSizulAH5M>y4h}&p!O1H)$ZN7*gJaPS zuU%^8)D_X4CQlXXZP)LfR!?uht!7!21K1$gmhUD1329?GpHN8!*Z-7ez@1(jkUxVF zPd0Duhlz_Hj(K4WN2KsC%mk`vz-sv((5L)$LXJ~iN*10OVHT&lfl-^>>w_46@%RfsJ7uOg`(~+W(@d>D2)vv1Wu!Q91m=7j^@C^jo^ni z06703A|e8TKm#5%|7N+bwNEIdL6sQDBy%zKM!p~-$~Xwt&u4mP1T`}7Bz)cO>nUL{ z&{wYvvV=n^)PQN}2#Kk1etB!C1%~i?Mq#OQnxmDG01y_&4V0812+69@K(U7+q0J^f z05UsC$faxghjaIq5UR=gPb}A_Vpzrddr{MP%7#4)&_FlYHjIdP6K&P!f}@!td5aj) zfAhBFwSDDDqxWVK$&nT9Zq3$^Iv75&%zJy$ry4qvv2B9BCkgmuS240AUoj=;?~kNA zeO`AIwLpLfav&?5k*|Qz>}WuV})cU z(1oKZEJ=O`tlrLh_SM}KaD{~SbIc=K87^9o>wS}QCWvreZt%P4b2VyjMkG}USGa#x zcE_5o!TC=#-)&y=jY2W9Jgko3)$OpqqZWH%_-3lQ{k`c@WeMo6)0~&mvP1#G-smeb z_Niz(U^?FVbC>pIEiJFMw>fP-UlZJhN9^(=C8c1l>N&~W-M3$Lc=HITJ1GMCBlq$2 zQYTP|B#$!JHwjz-_X8hTS)8e2ED{=xh~trEQYgf^!`>!?sEN+_KnULm67`>jP!1#%5wa^VQ(& zWrZN?-#c@5qbP{PemHHU?_LqW!)WA2;LZCCDt}CMvF#~)^Dvo1rIPa@v`|p`Vv4=V zYWK@S-u*rNZ&5}x2eg)1!YTaUc+5#ad%odQ&y>Guw7#BaVj zPc5r%5Z`P37KwjTUM1n*>mWH&sy}n%;9IWNK=uZ&xs}C>kU=iklGI}@wi99M_}zJ+ z)u07!4OVTfj@h&S3*5Yw|8I!#Pq|#8^BZ}+rv-omi6=BN`R2LU+CakDp)8`eQ-`Y- z=0I~HLO@im64|Z|<1C3m2%_F#Q`S7hK#;e5bSg(H4QDYC>hb>K!*j_6Yc^(pydPV8427@@%*`jARk-N8 z+KyENp+W%Pe?lgpgh|5X&U#~RMYqt3On^K5JEg-b6eoek)wF!d1!ODxd)t{Aj0NwW zuY~F#t$f?;yp(^zTJ;7nFT+dW6QchF12X^FK(}pD54vnpb3AA*l0S7RRd_#gbMWYY zxBz<*TFx|Azk}G;_e4d9Ix#X~?MxTg`ovMXBX#|MDy+hh1^nJ zSeu1)`c)iEo-+#H89SH21ve`9fR$#y3BddlG;d(y;M~fq`MC$Ob5fCf5Jig|3x6qQ zC6u*L@{8eJ6d6{&z(h!g_jo4h~G?4y>aL{Yjq7{D0anp%@Uy-(kToS6 zjk`N@8AWpL+`LTb?1QF67u;yHAfi4bnYONq+JC+6t`u9CJUy=3>}y|AzOcjIT^jR} zZ4A%hf>#+QWj?K}(cDYV7|-MzRPC*mc0U=t99Z7r!ti){KS`CZiwB~61bUKN{go|3 zqO0Zg%Qv|R%$G+&qWLE8ZFUrN`qnyiWAYF*7x&)1l*sbWe!IU)I-c5;OrE{w3jR*A zRe}L3&hv6^jhIPW4NH5t;OV2L#+PK5!>EP%-5Xa`GAJJ>1h}R3`^1T=o4g zd$&?KjP-gr0Ys7ap%{G#;CvD*Qlpo>&1usCtOrZo&GoSu;~lE54)F!a_d*9L1eMJ? zA(@}ezS0n`%#|d2$T69SIY^O^l5{<+0f(9X%A|)k{*yexZ?aWeGdnBydC2j}nYAX81sV{5 z6oHnk+n%^W{8OpbrTJCGi1|?)EljkL3q*c>~!=e7Cyo<#s1(seB8w0i7X!dx#Ds9 zkONhf7V?#o1r_aDs9r|JES zYco+V?x@VLoic0dwWb%LZw(bRZZv!c6+_478E3nfm>&1*@bn|K6O2plG!2oc4oMRp zp0oz@U4x3FI@pQ8NuAN!$y780RuNU$zn`{nsINd4#EY78uk-5B^ zWlyVAZ;_5%K0C3=tBcMOJg_j?1IVJ10evQ&qve*if>PmR{?Q|Z2n42nZPW9;vweKq z1-AJlB2O0m{(%TJ<=wf@1z)`vy3@jJCYlbK+Vv7P7IT~w1o`ex8q=Pv4tLpp8hx6s zXn7Hw@aCZXJ-OfM*)aLMD~`%DX<~i<;{o#>Q^zC%xGb>7d8WGe7__n=rW5_n;wz@w zU@7{i4EL_f_uE{Z9DcVX660|9&c5kCmwL82gqzD>_T~UI|Xu9*p9&B!&8Xa97G-| zM%9qkf{g2<$G;WVZ69>vgaC_v*jA?%06{h(nr^7( zWoE$_N>4}Ep!`)uRmJ{C^saie!Pg{gsGQPV_o3`9Dmg-IsGl2E1`hikPg6&Jc?&f& zO{gCHt4jTb#uhp+_Hzrp>padpi?oJET8zrH5pXwaRl93H?%l3-+0?S0+~R+Acz*p8 z!uwi&ks<88v}*D?=v#a!{Pv|ctiSK63Ie>}ywE>43J|`Y*sxDar9aW*m4A^$?Jx9f zIjW#(D|)uIY^q;l_SM*7)3b9d50D5cY?(BVE3-PyNo#wrINQ5zjV$M)p!}^LezER# zk+F*@k@zi^+hC2(Lo`H<^QlNNEaI*EjW=KkHqq-Oh{c*GIl<fQ-Bmm zxBi6E#ayl?i3++uRn?=DKdtZ+wz)a(gUo>B5tTcF-}JPD_Qj@}AS^+rKY8Y0N~_*~ z_;uRhp<{CCe*G0FFZ3LqvqU*qw_40hmbfE)*r^C+nJ@g{4Njq%;2h1}n+JIp^T$p) z?TWKrtybf;6pfvA1Q*|RGxN68MN}0&lpZ^tFEsoVy$iMu=Lh+CYfln5Fr?;&M)++P<)>p_b1P%JrnO@tEmX-2#hh-y<2`k z`;%4`iql#*bpqo7(#1bh{N#d>wzi1@0s)Rxw;5|ba$fjpr)ZzklCV3hyc%bpUYL@^ zGbb5jBduSv!B?nHQwnkxU&Enu7k1nwK5GXo9 zPg$*^7tlI`Hj=Z1l0#sLRCM70C?prkQ1n0EOp`SVgvBjjyNrs=J$N(LjhDB@9-#lmPs^HHI38@ z`Tg+yf@*qGLDo<=@=UE5&FG8hKrF!a>C?HQN`@S)@BYL1Q`OtO$Lgey=8`kD6k1@# zFB-DU7yHw~j8|{MD($va&D&Yp0;()ahMid(c-765EE~b5;;vV#n*#X-lq-)Bt4qr! zPR_`yg@R}Oatuy`q+8dD?L{-WtS)RW*2^+sG;=`#Q^i-$x~m9*_(JZ^E3>MJ{tz9Q zKvb%e2dCa$C0<3!r7EciI#Wf0x6wygNJ<%x#~Nq-m`-$j&eh#(a9sLoOkBBIjzrkv zEnKa#c20oKydeE}nPc#QPC$k)nXPk1zT9`;m{%QvbJ!Z6%E}-&H&zQS;B>6-GXwy#j}x`r5k2XH@}+5U=$j{TdROoo zB&V~2hawc4dkX?yBFsT zy8^O&Ld+ZFe3?xY&%+F!K9_6050>hP(|7EU20&!*GGnS%IT|8vXQhjmAal?*dBbu@ zf$SD9OVfK^;uP=c*D0}m$mI3e4tB3a2<0M9TEm6(y57#&RZV;D>*ugQP6H463BI=% z-bbw!?JQo~JgZ;HVW+5rR&cL3H7s;=-%+97+BNYAbOr4lZt2-%MC< z_-|J^-{_;iY@hDJVs3QqwKraFD)U$Py5h*%OkW#I@?)Gi^y693ImE5XQI8gH=no`A zh%&G)ug;Iv7<~q|K=W4vxP0rB7q1LrjgesxzJ;Yo{y3r|r4d|779S>cx)CA%K_8ae z)50~g$p9xKMnHsIQ7LFKzj5;GRDy^#GF*G>2_tl4W=O&{DxB~DcAke5PX<`qnIu^X zTXBADc2|B?aDOZQ{i3W+lo)_Cd*G>~5C!dL1{H|g>XTK*ES=8Xl z{2S>XS4&MBPN2>>lK5iFfiwE_fO)foqxqj|jE}6dwiGrMRAZePqhA0PS;g=|Hx}>o z&+zr_u-Z#_?9a>4DbWqBz3J*}I*&xfJq#M&Y6F3#tH*XMj345&zlaoruH{LN zAw|J}3qWFTQ*;Z&EA&zh5?|jQV|ZO2Kq7rO4s>61l`!yVS!pUO`c;$!+RQB~t0f}VvUcVCj({tW6v@xR}GipWUh`&Rxyt=x$)I6)8SkOrKG6WKX-FD zIaes!k|^*ED6C6)RZdLUtL;{|Z*C3e^}G~)I?@xx=&E-#q-l}>5_5@5f4hp&+(Xlh z;tZQb;4dxy8=AHJp%sqdp#!f^o=cCiZB#P&OjYX;*)fEx9r<^Avs@b|gX^lQesIOQ?T$7`?C&PjwA7ff zX(r86RaSoNI<&D$;V+7WzE}&)Y6`Q++p@$d=h|`ZWNec`?3S}L;mV0SWW@U%y?$!~ zQ}+7jWKer$|~#LbI8S*D3B2lu>j zD^xo_1U|DWvCJ>f@dStV0b~4P*_@w_e*OCYFkQIxs++`mV9Rjc2+UllI~H>@w)44} zCa+l(1BamXQAm?pA>BV|LJnZ~CMQ^Cu^4Viy_L}n+hOnO;?_hZNOh?|%DB%2R(tBahV z+R@G5;BX6TLW+ZegBFQNJbrbt6SA`I2{iLD@dAjRy|)nr{-UsY{?!0W-q ztyxj98iu595DKBerD~vwxv?eMJ14TMBU2rP6z3Hn7mCHz2^_wnx(i=z2KkEaTCOXd zbsXt>q1benZRH7JB(e#ucIj+yZnO!E8~Bz6P`7D93TdRlL(LWL%?OVPrD?gDzAzmV zdPEZ6&pkdeoYt?ZZJo-WuFje~{@!DP{3mPuIWM!bY;?bs!K?kWNfwGf_L|Z8q~dT; zK3Hy^Hfp*ep2Cl5JP9=CV0poMqS4|+oImpvf)`H#ymzwQtv=7Ef3(t;26_Ew=QiMCCaAdGB6$n(~%#YvQ7 zR!7t1LTG0rfJ8Ih)eFll>dU1s{4-2PcDiu|Vxf6hY}s%z*Ovk{@sB-{?h-Mt z^=)h0yx`Hg0ig|`2~LnqNx6}&xdEzq>FC&US(lU^?PhmbN`hWaZk)a6`S**PgPfL&izbh}<62N)N?F(V^*bCN9w+(h zX(>p-MTh}-5}-`(-g~)SrEn{Y7%!j|rDlEtc3PRvIvBNjGAj2>3e3q1{ncHK0$OG> z^;xiEUc<$$lwr*swk%=IPOrh>VLMp$tQloA(r&jMSoskOx1`o{MS^nb9=tdNNMP-C}`>3SE!%^>ow2)o2dS1FaQRt$>vdA#B5J)IW_3ytv)(B1sUqe2eoFl2$49&AqPk9vRJX<;I&iJ& zX0zi~v?xP@Q~uF$V&9H%P!=J+OgW52ZT*?!uy(})w#ysbaCH?qkY@4D{ps~ZSD>>W z;wLppy6Gb9-0$(J*#eXFOiZ!0t|tQZs~7{q0Mx~y+aw%Bf>CwqAN+hiM4L;$>v{O+ zGk?1pTz!Z91OXx7w%Rm){GhfvmBKi3{eh&6{wj)c3N{p}w|vQa|9u9_+8VSlN#KFW z?XN>eW{%omP@@lvyY?WR0mq5*NqecXNzylU^8mq2Jnpl+51)Y-O<93Ro{L%Dbbgo& z^g2uZ5W8)TiIeGG@I&#;*g2Hqx663D?QwbN_M3E%*M53LI_r!1s4S%U^T)#os=<+! zhpvY4%IiJZsuD!!ar|8yQ1(V0F+(~XDqd!tXNRHTnwR~HYJ)@<=cf$3n2uB~o)fG7 z*|n8vJ-hwv*r?$9GddnHORj;R;%5%KLDun#*H+BRyAA@2+?nFFfqMZ?y|;)A_pfL` zhDb+wNag#hvl{EQhB9yF083I)6qi5J9zx&D)wA>3K8YT3#0is$L~!;}X%`BU-&B); z8L#udUCyqtGr8P8Q(EYuovz&+FB}!@zCqwf;>7+3Hk-DWN3qCL+KxwUpBV{j+jdTV zWh0Iy1xdJ}k(@ux{iD8?w%Nd`{dzLPbgMZ=Qf%Q(ZYXN~4*J=pQ{tJw`v(MXTz4{_rW0lbQjze2|!`XHDofZUu zxi2CQ*3|`eZxJIeBEg&p?DhBA2`PBpESPzuR{XL(V!YWJoS5=Ie)IH zbFM7v?JS%66Sz0d+1XiPp^L{^%r;l%J|+gn<1KvI#{I8aqnM*}J(f-RO`jO)u-BtI z>I!~yt%bpk)>Np^h(=OUm&KJ)#Lcts9rZ?cje{pGIC~C=B~4$W_r|(ghP6@A`H&d% zu?~KX8K4#lZBVxL3Ax6zhH!2~^0iv4y$DM*j4PjkW8=F3;1svsVsGMbqPydah&^X( zd<3ljCuw0FjCB+1svIDR(4E4vty=lm+T1KDC`AtLXikz8dcy<=7u5b>_Qr6FWh4H# z9Jw(IRPl**tHJR{B$$`TLjY-XZa$p9ixn)k=fiKCL)^G5MEw4gVLx`M3$& zIH@vi#gyBP;XXXsXKnq~DgWO(0TJu}iJ{|0N}(_Dln6YGGw)UuGgS>@b(Yp!YeN04 zwqe~=&43yFPW0Pqbz;)VDDECTM7^g;tnH@EA>=wq%@>non3-?ui+|+)4hGEomPHiK z|CE(eHo$tzAnWCzyS>bp{6Xod$tLgHzcot*)CO?LN_QoxNN#qgzcQv>!0RF1*b(hw z<2SfR-kT#fc%a203hL_WqhZvgQT0Eu1YsLr20U)?-&@`-MC5)8SSR~Cm&d`EIreW* zPV2V;??R$*#fgLeo#W&AeVOpije`j*d-w;hfaQFS|HekPRRt5bKqiR{SX(X5(L z_@7ORyYQa1!lO_xoNeMu|K(FF#DwF(%-jCIVrPJ)n$uzQk!$9||J2|Zz&4ehSEdA~ zkW;bM;|h!KRS+(2jEx|gL3?F@j zc%b@LUA5Ps;jm*-?vJr;JeEJ9xe4toB^hzJcrD(;+J6GFc@c%LggzHiAA$ZMGq)U% z@ly&3@-$2e9*NHlCrsC=B&vwtsmA-iU*Eu6yP4?A*tw04(XRtAdrz@TsP-JwJ|0GB zz4x(Z8Xwofn;USsUCNYK!?F-c2oz#0yS|)?#KYX|vgKAlwp@XHVfZ*j5Ih{3glUc{ zf&rrsqnkO|bHRN@$!MKU!s>AT^rmrbCTtdhn#j#aTWDHqjr*cYkYmQ^ltfi+sOBOb{`~h6LB4l&8v>5y zTelhMoMK?FlE=+FSgWc{v$;YzSM4<$x)zx9fd)|+txgshY`obYwvUr_hAvY$zn|X= z@yJGq-^M}pF&>W^OTw^^@T8=Vj&`~@0J5)pBg}o=H0HJvnNWxth}fz0%ZBy^G#nfZ z!}&?;o+^C{@9Mu-iLbfbihpyE8g&ybuJM&P?zQcuS7Ga7dDbW9c05Q>v%$yz>fknc z99#UeR+aeJCf?`e`Ut7ET0W+c;kF#7WtrFJxJo|n)aoEyIgX0u)r4700hJq1RA6}| zaO`*K$&oq52LKKbfg=G#(V(O!csnmry2cG;+2n{pitAX z4e8)d(xHTrXE{+5ggwwju=_gE+(1wwEcFs3$W^Ce*a+GDC{mov)&M~GvF*bl@<7e6 zoF^W(vPbEgD)w#n7iO19>6jq8On2j@oP<_m1)^2#`;xUb6!6Dx!XUn7WXaWDZueP1WR0rws00Q6zZa7j9pSd#$`>_}*G zEx*?0&n_rvB!>vMq|KJ0d?YAPaLs`cCY&b6z2P|M77`Ii(rEF6F&LBs=h+7_;0N((0L)AH4X zlP|b(2Y&JLEwqE=&&=d0^E9tXpac>#7;H8H37x>6+QkYC`XEeaEjGqr7b2VRy=zbjdH8HM7hCBpPFA3O(R^V&;5Ci6 zCq=0J7-2-*w31pYQ^nu?h=PQY}bT$2GO(%t>M3yo85Q>kTlTm`dKxh%* zN=v$f^lig*F+bP`an-+0{R%>A-(MK>t71FbHi}e1P_7-PWymiAu zk|5*)FT&n;h6X(=cm1=#uLCCj*XH+bO5d8m{Gy*RxUg%`7jChR5Zj<}6!7@XioT?% zsiIw9_z!l(?u9zFc0v0vZ{92y68ogLy3ENj z+lTwQYQ}!pEZF-sr(t4D0&=%Nm*qSiw)SM@F8ZNVWVLj`Z8UzE*Pww5-`H5R- zBY>yCOud zV(1BQ_I`gg!S)p4PzuJj!!*6#PvuwP-{~!^&-_@=+I`%+`}8um-~+_EGMac6WvPQE z@9s}$N}fP`+iaY_XRIE3=;WAQoxcoztvnaly*+E%BBYz3Z+Q~NPc`h?+q=o##{W$P z2F>}BA)S6Naq@Qk7PKp!dDFhka=oo!oXS5?nz%{zxkx|v#v|nTb$R;dH%wP`MSE-8 z_%g7m>Uj&E`%VV259jmc;VB3I@x$1#TATlPWyMh{s#*vv-|6GB@?ea>(L9~Yf~F8) zYpOMCI4A0rhF#b7mE|fPQ(9ck#r0OL)}2W~ew z`Qz{7J{oJA^QZe>Ubp5y`|X3}UT^xn-_u?;(+uwWVKkiY@B4)VU_hp4E6_sZNrtB> zcd8fHRHqwY8&+JHo|^nLIbC6y+y6SrEzjfmC;Y9s*{I{^yZ0TNkEkE@ZW8t(Iy3j` zuLt8Y?)_h=HgI1f@0N=+b(YvTu`EHpKkEIZO2ar&%fGSNFMnLn(Z0ZQGw3Z3kDwDc zy*p7(&RT~*QgYOHdkG^D@GP#}E53I)90B>U{n&7wHxR$hB~jKYSz8}_cfu&hiu|!z z0ESp>V1iJ|Yu|(Z$Jz5Ctk&b|qY=Ru=*^2@1No*bZMUt6NuqSlIj8Nbb<8R+eu$~2 zCvzol+!uGD`;SHPT|~Ir4yR94<&>F=?s&dl8!geFwA-GF#1&?H54XT_EfBVso7S&0 zH?G%k5IO}64CO6OWvsWx{r!b+P&rGChpB8uIwMAyd1OaT&y8mBLyY&sTf)GExt+|0 zM}J~Fi~CW6LyQ!s*0Jm3b&~f}@4(9!d$)8050!*Zrq?AikL__1G3RyX9ozRbFDo-t z^3RM{wuqOe<6p;!S2U3KriRslg(lD0n^Yxu=O?Qd^BE30%?ShOC&I^vD+K< zI2f#V)Ki=HMV-Re&7*kj`cev_cSo&dIc0S2-=T*j0KdCPmAFSNUV>?n2KWnu@55Gb0XPE!SUvDF_TQH4}tt zQF=J+Z8Lo;{@;rcAAAL8n?dfrPMtqh*qPl+#B zfqyipDr9CS4)Ql@i3qQ?_hHGaAk81aw)uyiu=dGH{zlc-)A5JL1X$P0JHeMnhnOK} zSPW5|V1~AXeG@0+uf)I{DWymh_c?*AmZ$#gxYhFcM39e?r{~QeaDNoOg_$d;#^AE( zvGg|E!ryy$lUiHJdP?rAjDvo(oU2drN_M*=O~ZCViixG?;=#3*xMb7yjZ3WI_}k_Z zn;ldCjb{^=fPK~$#Z9JQiS5`79mkpPmnRp=8#5Ql@vF#e2hI^87#jJ z6zHhocWkmiT&Ys;qWa~?v{2Ih< ztLg8nRKWCLTI8Kh$R(wwM$iWdE4VXhn5+vX)z$~$#&b?SP29!HuV%E|tvXD0@c!U# z8b85s8D^z+H*TI@Ju_%ZJwLu={qi8XQ{9`jU8Ms>l075@!YPj!TE<#FKi##hnhV(b zky^tM=0acZGSZ-A%w{sSqEOIEEl5r(ytfWN-Rt>O@icyxu#~ay|3U-Fm_m>y_{k1d z=^{Q(VqKsi)P5i72kYsLWW!aMTny=_0r3{tz>dy#ZBF0w{3#9e^d1(bd$ue= zeKEpc{XSNCXu(M#r0ApZY%a1BAjAd4Mb&VylEeOpl4-}nURs`Y4Db;eRe7_Zp5CV$ zN&-F#y*xZXAd$e}`Yw>p;X;rLe~0SdF?;7t9yxZM_&}Rg$I2baYV@UVE`izfA~`2b zk7zH=nO`oGucdPm35eav;_)fkSR8+JN@wAI-n(7wA=EqGcfA6QEzUNK6K3(Z$yf4m z4XhNYDJ#d0$+r-rZ*dx!>}1mT;%h7@zJpM2d5O$C4{eJe zOaK-Yoi%X0SB|^e570Cwx5}C_IS85moOx<6k~lZoO(Lyk^z!C^VFej3J+0%J$$-}5 zGonl|i8VtsuT)`m*=q7ucqq4w+)V-+%e?u29&@l-RQy<`+8tAM_J`B6N*nAc zd`${qhF6{~6F@?IC8H-b=_6P6n%6R#vll=5=rJL>k8g=0GB;37Z$v_xQ6zsDhYlby zj(TP38O|AJGuB|@S_my3&6@rC^FjobIkvcD z=Fz~#NxuLD<5aZYJ@sM|`U4gG-nJHY(JEYfh>x6+UfW8*YD+Msxlv0yTq~L1(R(NG9}d0gPKb43rF!kL}H1iiNS3 zIApW!Wp2$%wm>wGjn3}ukiwL0ICd;L0l{>k11cLkhOhs6Vr<###lfBRGC2_6;`L7c zxr3fbLUyvxdxMxNmS6deCCx$*VT`W+i{x!*%n|nvFU7s;L#W_uQ;HgkL%_{skbf`--nNh|Ifjo zRE8U{M{l<8TKD$I?>87yLGJq*ea+_bWVnI`AT)7XtkTQfo_YN0LBQoz)H6$C8lTJv zU)V4aSq~i=6$}6TR?iNJIQqu^4J|CeQ&OOHvq-p%SkwK>zWZ)lUkAv8(n_84`B~si zg(k#U_{UO0q*{!eVAq?(&!T}4RUJumYGKnCuF;K9eXmyp3Oz1142Ny5Z>{WS)CZN$ps+S_XH`ikUnpAH{XN$I*qwjhtI;$v_mdhlMdWBY!a;bWuP`^ zMyVcuu}$sfJ}0E?OuNm56egHscX~lg#i9S|?CfMH=K_UcFqD(el3)i>dg5M3d5tG@ z{5)&?_(`;{3o`$wywX$4@(>>pD@sp&SWx%KuU@7Z=vG-O{nKfOU-@)D88fe_z-5nZt zYuw!(8h3YXoCX?q@5bHT-Q6X;?>95anoKgem|SG7)H-+PsaoeL+g0`d)!v2xW(IGD zkWfpr9+j)~(i^>}jmsIw`sstB_`yR=hXTuBS!u3pPFyp`IKj%iq-}+GePdG#)<@M| z@Ni<UH-AW-#YLHDqHWp z={9B>ADqjNqvk(vxD*`sY?LN8UFRXm=Mur><~(d|;EgLPD7(L9r|K)dJf0ZZX(UF0 zw2s^@N>eFQ#R1STFs_$}7KO3^bd1;8wy}}c+j)~w`_4_Dh!E>c&wHVdB}}vz7}*?( zt!ZtwclSc2OSA?g_NK~Rxl#TQSe!aJR(;G4g|_)$hUTrz0f)up9&ZyIjNf z5GfM37Ra+l#1Lt2eVZZ6I?DNjYDOCh+uedUYwS$oOB7ez?sZmKzV(83ZHlb{N#_l4 z7lcubfUp40+xm4x-n&o#8AOr^g|c)A@M5jJ{0hps6EswlEK{QlBZZQT&WZ7oKq3Vq zPqP-u^RUGP%!on`r^V)Kb(iv6#{)l>3?&TTN`b4qUc3L0Y7H=1alip5-IC7meR{oP z&hc*W_DWNN4vE_PwF`lHvUg{xvp4Iq3CGZFa#sQ94C0dFQsrv zA}VA?NXrJq2uGs=+=Ah<=noV}eUpz#coI};xZu%_O2fo^H7-I{FngZjJ(YC5$|`U` zskl@1=e^x&8+XIYdb6R3mPIL=6iWWX^Qu)`Iie;RDoZ4{fFOyByjoe|UhsS(q~N-< z_%S}@Aa(L!F*gE)V){&o6~KEx6Y$K4)P_ zMR70pJpQ-hA$>%vYvW!qosp-zbz~WDvmrs@CwLSRH0RaKCE1D-OU|laLWzs9bM``l zDV{vj^mNo^+CnJ%1882en}ws*itxUSG!A6osUldXpD~x;d3H2kB_$%1RA`;&R3fcsk(!< zD-g#1V+@CLiN3&AKXnCv@aYAB6j=tyc!#$@1>*WuWo(O%1fQ-OHKtRDPNMFlh~+@? z!H^B81vUMt09{}jUvz9I8!{WA7<@B;6;kn`?2n57IH;&Us-zEcIWX1E5Bq0&$>3V3 zG=MdL6)aCEox}MG(zZw3N<%r%zZT|_ZlHGuy91~EZh>-vf(N9+)?nHdKMewOu{@Tn z1H~TY%N32dZQ)Sok5?;bhn zhRSg}ooy{5q~f*$I&{i0umkk3LUMLBVD9Ju=OGPF!v!t@#@)V4L`eySf7M#6xOfOP z4b2Um4tLYMEzvKBz=?NA;kw9J1_`m?P0NT#fw|R$BwxtBOIA5bGBRN)Z57g{C%8ng zV$?zip;?&kOxx3#DKtUbH_)9`TTL@(*{M6U9qm=%DsNMr=^wRA zv^sQXPZ^-dsoqL;mi&#&Nvy#3wt~NMG^_unh1y*^=J?9zyOfu#KGg*%`+MWz z)KhNrz##eTgE@Wc=8^{yX_a5?YrjA!4|U~C{7@cV#X~M{%V3O_hwwRv_OsBjvFAx2 z@yLf&h^ai?KBSg!byd#^B>F^Ek`%o%sUY5Pk}3lc=M!?H+I@DnEYrhAqyX)#%;6Z!MP0Qm5pxR|f#-M7AA-nu#pP*!x`PqX=^qM&0~k2I)IC$T$rHF`?oAyfY9e(gO@`CmqJxB0g2BgnPtwK zy>;ih7>@5hOfOR+m7<9fMeQyeN_3Os+4VD&2oc@z)AY=$D|9$S z0(483C+2U}V)HDlD?(uk$3b>t0IiQtnT2j>;+0Rz!wb?@8!?-i?Vk26%5xEz`*T4u zNyXXG*?YMOiPwkHxx_mFC~^t;4^2+j_&IqAP4i+>;L)G;_OY6%S+(KihLMagvU+0f zdc|anCD%|^Hq-8H%qDZEhO9$zpb)@!;mi(w(&u#JCFNcB``Gbx>}=lx0Ak{v>~?SC z13RjJ`tSsLIg@{)+8pfps)Uz*JBkM9J6fXS_lsba(iP7Z6$sli9iQF@IzbOul@&me zx9e&=#|W;MpZd^%?rG?A+Wf+^pttwkxL=pag%Am#^t-!^$=25Y%bmH{QYi5XQjGqC zyZg@?_hWFf*{5;lm>T_bsNqZUxf%hrKNes)pSL-BNkkTiYv;+pzFKVgnDrc@rrN70 z_NmUeuiT^rb1&Ybe0kPuIKINF+;}Rt*pMk_zuOmu#RixDeXF|VX*k#1&lsvAFPV-+fuS4%s#vYITPFoGd>@>NIg*i27k~LHZmTi?KOtZ%FhOa zxP44b(grYOwDV%W*1#x%OWQNj&2R|4giYo3fkuNkhy`p3MIfXRz)7R^S7MZa`kPhv zD2jWrsu;>9PrPha&lr}L4&igA^0+zL?suoEBOaie2ek$ zkD>0(Q{za=g~K_=yi^y;Ky{ZJo?KI~z>@+RpN4GLN`{;3?WP^(>05{8d8z_K?%_*3 zlK!rzhbzeB*w4NhR>i|JZCG;A>2#EW%cak!S6g`}g$wDlllHIm`#N8wF@eo%K`uSy zLC5-Bu5Xtzc8B@M_FjnIh-XU^D5L3nMxCbBy*}bc`8HAsxP;vO(92Hj#ErLxRSS= ziY&0`+M=Z4+w`C8Vcu-54g=Sx$Yq4S1v6=XyU(gvhXqgfvI-}4sPMjbU@0k-&SDrn zr;%Ht^{II`=-vcH$Ypx>^;7e}!OY02nrS>=axB>0XXW-$*V}B~cvw5)uxn$lermtQ zZ&T8+w?NJAJbBCCYPvAH&27f^H#s1NfS7iZ=$|3<^ZIzn+t|jRi$04$9cO%!J2$QN zM^YlW@mNYVy-WJ@PARvf<7lWew4)JJrTlH7u=WoKh%#cX$EEDDZGE+mh@$?yJpgcX zlFIt_>MM6tP|;>_qYSgxc9*DKgegJCw`|(KVQR)u*;vqVl)xq?eKvIwpwn@LGix%Y+lpy?7jhITQx&_4D$z_Pb<6&^oC;}orXt6uX~{}= zyqD?)XGmOC>UjcX0$as4+AA|l9f;$QS#_Z**7SjOoIwvuF1yW9P@`aVdFUB4Nt<%;6W+6^-Q{FMdlMPEoCZ3z}h1O*x#ypI?r z5Zq){T0vVTHYG)Ue~LWBR5}C~wUQQuijsy34H|rSSk7`%I{1*uQ|#~xZ>3~b7kAL7Ne%r5 z!T9^CdNAN$^b;R-_d6M7!m@| zaidJ1m(Gjoen=!RIOMW?eg1iYA8ID6CFuLHGs{nfAOl}YNWi0O^nkC+n!-y@`5G#kj=v)YK&9rEuK zj}dI=c!u*UjY2B48*}~EYbp1mJA^8%J`zPnqs6-%&E}o!2{e7%Nk3Cf6ZfEeD!%mgOd;GwTkuCU;dS zMxp+e!OhG>(~Wh->b+Jf^CebkA^<+nm(S_&v9_2JUU0{8rYFl+PoE3Jm*{s{7d(-T8=l z?Jjp?j@6Fgs?Y%B^39h3=5jS{ByWK@+&Qr(&Aq5PRejlF zS>EnK{66;gY7I$8v-^fWNSzMelBbcF#$w3e;COLyENJ;_+OJyXol5OBIXNRxQ2hII zx$&_|jZW{WwYHbaMjZM=Fj!7zIY%)}~(vGWIVpnGOd$h+-FllWnFT@1rlPm$XreN+ABC z0+2x$f)9s-tsw~z+7q@b!FfT)b+A=4zp6zk6*syrv3~t~I1w~j9i6*iDhe>PDZYRnNQefmX{Otw}<0(Ca#f zG}fOZsV)kKjg_bRRodMCH*`=kQML8Y4jCbB$$-%ByEEn!!E7*0$kc({0adHdkku5V z!th1Mov=ib;6|tfoTUc#GT;jI#ybK}@V#P(eL-mye2s7Zqz%_IV*}#K5jYLUlq*FOF#V% z1{$CNWh&A$&W?_?sb)=-=-OH@? zdJ2gbWBgpM3E?03L^WcFZ}h6L?hIHjyF@YtNP?kX_oK19PVR&H#Oz}DXeWJ=7^QEP z`k8`e5qPNS)Lt`?zyZiXRB427gvHnb@Iqnif#Z#XLEw1>(ZkGu0$Oi=KmVg^v)mvW(!b)r%jw(LL8Rgu#pxrwAOR>?M1=1g*(c?d;pEvt#4c}Q z48eB}+bh|za)sE30>1CUL(Fz|88cE&DLZzq@(7t7Q`WQkI?pAOqxDvTuO zhxYo*qW3f7TrACGdK$GdFkmWrS5P4d5>hI+3z#;~~K?U+YoEcWqks8b_= zRk@_`i1esm-;JmB;k)orN*`pr zd+l{6a#Gs~cP@%rrcZGkF0Y>SGl+KWFH#xT;EGuTSU(6~obV2@W_u)EbkBh6`dSf1 zGHHQ=O6w0cT*CE&9Ro2<=s-qR*3+VD^CJYQcOFEt?@tdi2BQzvzkRl^c1xSZ?K~8) zxqX#M(C|-c>^U0;2j>&e?DI6pV{T>6KijxKaU_SDQ@`WmB8rN#D@k%xIZ`prZgIEMw} zn_u~`t^7gr;V%Iu>?Nj7VZgus`S-GEe_s}@HduT6ccFpQRGZ~CFy1h@T4lYY@}<63 zF#m)Fbv|oucWm70kaj-&hNlIG>Sm9BYJ-TlnwMp-xU6AqOd=oP^yY&bYh{`H^Jw%{ zt*bZR{?_jMLgXiSqm+N7ZKmH|)zL%y_bn2elMql6xypyGd!cLu?`{pJ)rXmxCl3%i zAkfC-w8N~cTq(kcu0CX*v{sDGc6Sb_M&G#1yGdRbbQyK_8{@5#WB>BY=jO}xk`^LH>Dy^SeVj`1c5zfl;dEXERSm@c97uFuIc>Nnhu~L3; zIZFG3aJniRn&~dfwtVIhvlg@8_2QcUBHEkEJ9G4BSk9NXl?DeXDLI&kW>BK4Fvz&< z)Q*!yTL7_p6^6XndgIVU$4J78T$&p*Gv_w zMOO%SuK4NP4LnC=(*!=j>8nq+AsceVLf%hQ71rP85Gn+WzCQ})Kli;6r5xd_P4R#1nG5jovJFK0K`*gv${I1+TaEg zhRcKC6~5OS&cFM1ZIIxH6YAy~xN^EaSETu6U3hSwo_}E*^vrxU63C3ZPiYn`q5i0u zk4{)C{~Yw9+BXC3HrCzAg+b&*RMlp5wC#(l^cs5tJr5o%_jdc_}VN`_Zb#RQk5<8-WAV>Hgm2-vj%8QH%DeCkrxOHrZ(D{ zwDoeMnKc`L5!PdS7TTwEp}XA`+(yylF9EEf?lSgBtp17dqwH)7VjTuwzn{Sm@1>A9)0`IIdrL5x5V zjn6XvxPkpzXHvVcfCljar6)b6lebmLHT?^^38u~mPqGTd><^`Cw)HzoZi~{IG3-Fc z?a_LRIEoi|fHboFvh3~v9s4Ja(SDDub37^dKWT46kVW2DA~-Sh@e$1kEd<ty*+_#8=v-Q4c6q_D3K8w4kEboH=`<#P(?=K$0uS#3IM8frm5)vFF)_Swkv|@ zTS`D0qTm3}kvqa*JjsmzxmRV@#oxlr%E{6tIWtOWH@W+zRZj-E$EW#>hVoBJ`FQyp zveOXZ>Ks*^2^ZSrJ{#g%2Wq!HV*ZfczA1*Z3;p2bRRZtLGo?Hem`qz^-&a& zp)u_F@K*DP+rftsWy!EX+}HJ6bhg+8RqoQiL7Kn~-+wH$gyK@vO& zS^)d8j|JlnCB>U0?rZT>7RUQ`eX0*A!zv;-uM^#2ki87M{##RJ3M}%wYhHx%72}$9 z#S69Z9J|#sfv>vi+dQ#)wWeXjFi}qSx%d4ix9OQq?7!uA1%_9y2RX!Ihew9-I<$p$ z1x z0tc8&@6Hc}(U~$gIJn5(r|&%;8`(53!VHX$l7|5;P7~_BbQHB7iN2nRE!{(Qa^ISR z)ZHM4Ocy84`F2*~Wi%-gKAU*&q5y|tda&*yC%@1zC_OQq(6JU`6ch_?iGU8Zqm?Tp zx0NFl^MlT^mbIrMP}1$4^-fJy;(!qzD1QEseLdijGf~0Y>GFIHXi>1kYlTnl@;#az z5?nS|8ho!lZ6BfTeCJ)L08P71KjgB5!bZoGL6R7#UTZY%F9XrO(A!VDv*Q2g3U6P4 zp?RKI{kS)Bf+=!Zj?zKFwKKMX%QM%_>J}<$p`|mKn$NRe69Nf1C}r2j9(x;AZxbr> ztpV+=LW6aKf8IX5GY^-NF$ageBtZCkZU`+=*^rRYOZsmQ_X{`8k~DkkS6@$>@&>e2 zOvW%+h=|u1s(o7^Yn6I^DpgB~#9R$;ui*xMny-^bIC*^4=DR?7f=gGK-Smed1+&21QYsPa1~{>>OlN2auR~24iPulwkWXKSk10G z6Fe{Cz9r{7PUJQgeOB$i05%B$jw}F?4K@wvVEOB3UvqQD5K*f13z|TOEnn7UWVB{v zKmv?n$ie;xaK+HuW<)C8H>C|=*pq}r9w6f2@>bvOYfU`B&iIjj`@%+n16L%#=Awu* zp(xZP?FkJnQX-rKZ<^z`{Y_4=EN=3mQz9RPDjG>H;sOI?T)_^-mwr5XIXMxz%B_~d zf7@C=nqhTYVr4NZZ?;ZfOjX|?Vnd8Y(18mt{8eHImApf>^IpZ`gTV9(!E^lcaXC6Y zndVw3sbKMKeFK>KNY%`e zTh$AXw-t+1!cxC}YYQg$7}z1w(JtkggWdT?a#47fw_(!!;iM0gi9Xy0A3+ft^_3JE zdI9*TMc>PLiRy~5fbri@5I{M_*L_e+y&9%C(`;$9lQqAR^+wC(I^y zJPjH~I6MrkKy;Sxou5WmAaX|}aL&6rA8?4g{frksHE%T8`R7cAw~p$d%{>sH`a6HD zxu0aOfnF+$Kx`L+fobMZfIx043`4Zum3Fo3`#w!cz1CBvUE4HN1qPN@tYXN^jNbl+ zKo0A${YORG1aiA)ef`W=sIDt=ZA`95zUL{7UXI$NnUzu4<&KNVO%KPeV2 zxBMv^62U~gg3<-uyek^ZHsg!P!ZaheXZ6+7N&P#4CT|UjOeg%KR81=cJpeQe8)zmW z`}8#9*LcvvUkw&Huk)pu#^XFLSz&*b;PPI$_Jhy|YYk<;9rW`4n86m!P6r2hddmeVy!ySeqeb>M+aVidheguItGEFJE%gqEh^z1exh@F}I>!fa-P2Lw_pD)h8q61H59 zkp`U%S+1eW$!oCMEN!>fXr<~qyWbKS8U_vw2Ns?*?aEnxMzmRvD_c>}0aw2Jl7Q>8 z(*)n|e5&EW1&ez=jC4-Iy$~B%_xm$>i*>&K$q0rUpw%wnH8OOkp}wkYC|OCPPw%o( zoSA-#7_MQ36Y(dNOvp>)J?oAA5ue`4tiR`^MjonI3?I>)feI=EjbX0?3B>2baL z%+CS{Cioq{X8Rg(oH(73${=>N@HN^?EIxCsdjl-&E;ddBW)tU$G)OU5_eU5Q7^FAK z=MtiiV~aQ~X0Sw%%_t}+Rcl@rjlcXF{=ZHY;>7ab4lEt$oD^;h43oZ`r|2)r1fgz@s)pjN|U0vRR3bjB3j4H?eDCpPP#B3Dv23AYN zi?)}qL}H91Pzay`P0wI}Q`eAoYZ>SzUg^VZ(?yE1(E81{vO<1d>RD}?Ik7uLqO>c* zegi%D%_U~D}CfP;)(+TYRG%FOln&0#+<2Wn? zyLYdk)cvAbOy^Bl{o$|}aN7`$cS>*WRpq1cArJ;^YVH4BPgnP)=4$K|%6(a6cAl&u zI72*r_gKJQ8CEYBuVhR95ICE=uJ-?*U~%!1|I4vBu>T&5lN0p%-9|TtjB<4WSX|D` z`c|M372dG(y&%{LiVlbQY*?;Y0}*N^?e=K6$FP z4YBIVs<-~kH~!(n*Y%nQ3rH@E2vfHoe>xn_7aPSLwb=?9I>tI4-RKxpa{m0`SQ0ih zR`*J0kOYEOwat=dEUIUWVOrak>y4jA0d;K^nM=zB>hn1XpghTWweH9ejOR()8pp)h zwo#18|5v}InW@#%FDRJq@0ZVYU3!tv>x%Yn=0t; z1X3zx88DG}`q+t?*@GKt*jriFn-OLzRQNSxQq=C<@IJ(<`LIsMWvAZjL<)Ia&WDo= z6~Bv)iNC1Q!V`_9*@;*T29Bzs`n_UAwx7+Lice7h`OvGt^!8L2c zt@=g|-7m5KWe`|Pt)&YY5XXF1iQC|3v@ut<_Rx=jH!UraEg1pbv2dUlq~bD29iOH- z`vihp=2R<9M#oT}!wOs%vnU-f3aXWfvKMs=R*Kbd{l5o+#r$j1?TTCqC z^Z)($h)`N9vUjXO3Gr9fi@21`%X-m^!(W@msPhjb^U<$JaxCD`2}HrhH7crtWlq-? zFlA#@>QvvUKcT(D;sa68$9|n6m)Lj;h1?Tv>*;hWqygLJ*-3~^%XCK-PS-6YOV3Dx z?w>%nkp57q&%$A8DMz(3FCQO>^VvKbGqZ}OX1d+hbW4LPm|--U_dN%4hOW0a7d17w zy0Xq|*?vmlEem!?iG?r~6^it7!Pk~C{WN^WWFk7~0(s;}l+?!GIymUL5|=IrUD>uA z9-3o+T?7XpYnUKT+wskg_FTyFhH2XW=ls(cob~VeHitiCxqJKv_H%b2Ssf@30Y9@F zP5jeQfh0fMT30&SA_SzKI=T(NHbzpfp0b-VKHpOZ)r*DoNY@1!OvcWODnfX)zN(NA z@HWJZ%{=7;k2_V||I~b>MSr-?|M-|{!&ks{%(f0j+bD@FSgdkj{IMZ7@e2>aQEo`S zMIez>U^y+(wbKtR$fS%f32_~wE&>o=K0R&q8;)ToD%GIj8Ggs z2}fboD@SQQdAGBSNy@ah5_9E~X6f#)Y`yLek5fjNvJ==<3J(%bFvYS_SQuHa^)TtW+4OVhAPY-@Pp{7 zEMLnFrFzov_NhwQpts6-f;alU?0sTqyMiA}cNEP{4zXFpT(c7{^ymj^dLb#B4 zvxhM7@7WUDC%1@S<6$Wk6sd&|*iV0rsl1eqcMk`&VG%e;&7Rr}v5P%9GiNuk(I<=c z_f5-}c@6c{JZiqBPv;FXhimjQ!V9tD5NB}yIyqkY55)42o#;yvqwjaYo?#2;cb(g4 zq0Krl*-XUV@7Hto9?9U-gbjFmKAomtDNCmqXPRLFYrNdDGHCHlcG1sI;v$O7hojJn zkJf;!iOF}B(S$cU<S+cvbNJUu`xMQ z({)iY5NmcOfBRx{Alkiba~Vz}F>I7l&fS6~7LxPdNEX)#%8R2FZyPA2@6r+U);tZL z4n@vVKc;5CB}G=)YNn(rYTMz-$_XoJVtLGr<3axaW+Vm)_@$q(?2&Riy!2^1hDI~3je@n|jn zO0AQR#diIbZd_(Uj==}8`6V(a(N!Sr!h$pf_H`nwGeDHyTg7nx+1`-M3G)>RU zPya01OZKP_&reUt4-uu25riF<9tH;usC7(4gVruX<`b`m=JPdrN%H6BaM$go0nHQJ z`n<{lBGX|P)l#H>zgrm}z4r?x^TQ_0^ImIUi{-vR>-6FSd=~| zHAw#zp{m>X%|#U-^2dM30FdAAVP_*oHM))X4I7WYevFKq)?1E^)nwqJ1NLkA##%H1 z%%B?zuKxK4rB^4holf{UOco$dZ?VcRh2OFvLyj%g!pKi~+WuDF3W#f?hT#={fKiFGuWX^AbiNbl%O{2C6M*i7f<@S92TkQ_Ab6 z<=9$Vy!+g4+hrf8JC9ic*n2k23YspHf6A8G>I|h2F5d)k1s(co{@Jp;jvU9h@c-BI|2sYZ^N79p-SzkH zK{Q-kOB0hKqD62)>f~wG?5wQQy`{?i?PmnMPHz|Xkq_?wPK<7)=735dmDDD|`pXCA z4+aqmS(7>LVl*oP0Rnw;2VoL>2x_@e*m;{#=X?=<{fNchKBUvj^@wf^M3&fR~D zuCO>KrW^8gGo4$@i+UBdAs7qH;V-tKumKjJfwY8MI2t>BuWaQ!n?h|y`=q*|ZZ^T4 zNXP3h2uZL4R`q&S)=F(bQkqi-D_(EF?aO&|M&p@!`P2t_w3;$Vy^8bI!E#b#RUOa$ z(oK`azefKbO=<4a?nm+8p0tiA_fL=gR~7)n1{86rflbmk-Q{VsH+OJ@ulN^aocCGm zU#Qw&C2w1s=2@4gJC)gRu2xyh4;k~NSu?Q-k&!bm75i??WgV2?<48X#k>HZPH>@dh zHjHlMRrHx`;4n)dZ8)`D>9>RAze>@kR0NC86(1#9|KizFvGFHYJR{D(K6@!}_6tRC zFK;mr<^FMm{L(YS5zAfzIPi?LTtE@>dN@@s%(gO96L-M)i$fqV-YQEn0KgGwuU04J zB#gnd5O>h;(h5=fLw7-78uEuvHj2}ci6HDW*k)i1gn68eP<;q1G?5^;zc1u88nVAH z_%zB7IU9#jp2;DA(3k?5n~og|Y@hFtR1m%wxezRG$(yZ69fWBRk?6FX4GHR6NaI`K z%IeS!pu^|HaVDoMG32w=Li8Wajh5DrFd|D5W(cqSqDekOl>$v!(2JnwOxgtan>&r_ z1YXf;!LXtc1b2I9-o$YGqnT7jPuRrbJzCcnpe6+_Sq}xZK104|KcCgPrmH5(rnTIx zw+O&SkX6dgaU*m|m3j_W$<#Hq!|Uh1*Qk6obZ+1x(D5>F$pRD`Ja4b(!%-bPQrB4` zrs<1284R%NYj2!!TtCJGo=AtITnfuB>Udo5OKFFsJfFr#Mf+T=d3zc_!7->d$V9V; z$I+a)el!%tbWD5#{z`Dxe^olO-)OJx)ndYm^NYnZa4LAB2El}=s`kf7B&chvxtkGP zPMtK#_s=`?|NbSb>FTLiuPcN_fAPMGVnnRQTiM)$t@CA1^e zJjijwLtefcA&zw~t2FHwHgsp85-z#;4F!;GF$G;TK zv%v3U%3Ro26pTTN669A9OvXv-xRkWru?CB6WxId6dqN>w}aban_yzAR_`V2=S$}+d> zoR;JKqO}#t6Vn+?)F30U=9{G7i(FoHmXXat<>O)XI7b1a_52HM=s&{h^+mzo3c~d1 zMG`AQ(m^kCfHyfChU$|2*;e+7bOcRh=i#dG3ygqA;3bA`a| zgH+(PD-wqdh=usRB!K!h_gL12b~>Kx+Yt-Xlb_KV_diqj=e+wtrPYW4mHqKLnc#vY z14aAt>FOUAprQmwNvbgZNCJ{++Rqt9Cd9VyGh$*DY>DZu@7%DCK z4Aa{n*n4Ngd{!wA{jxmsP=Wzr^rK!BxlMH^L}o5ZiT)rUSZm8?p;5`4t=?Y%5&i}L z39xTe=qi{UQgpOnlPgAfY{4LJUki&RnA3@~TwL5047wj&I zu>Fd%>QSb;2dKC-cUak{kwR@?YnQiZNzQ-0GZu>(KJ}Nm8pnU;GRzdeG)&R2MN3mF zA9YuqAs5SMPCQm4I)t6Ah=8GHO>0OaZSwD5$bi0XlN6WS&tYN^duSjpy}W2yEcq+I zaILG4o;F0IO+KBZ4{ek;Z=4rX`XV$u`8WA%y0b__d1aU}AuP?0F=`7V)Aiwl_fRP9 zUVe$yms_1k_hVa!Ngr9#{MpW>c6xec0p5+YN9yUn79RuK%zVkHrYQ;++;$(%aGCuGbry-@5W{FS_t*|z}#bU=X zOrYb2vCLQ=Zr$yOV|LXeJc~csQzbhwPn$l~5LJvZYM}0 z8P;sFxoJ~6|CnzvYGX84oK9A)IVaB>PJ#8L2NOyf5 zv&fO+@*%RxaT9L;!dF;-XU7~J1y1!PP(d+y=tBwv=5AvU#@bV)Qq@lqPfb=Qi=OIb zRv2z}>zbtJ5gs&yV1mY-syjk2oS?~@u`J5x8`z3D zQFo#9uFO2;0MC`sPX#&TlKe+1aSW(5#+-~hh_g6J(+_pxc3@IY{n5^!D)}HsxBZ`>FGDLM=wcckr%dK7x;3WRZPm?L&y4&mtPwv(t$o zXW6vouJ|!jX8u}y(@7&PT;i>?jY(m@`+=tw>y`eSfsBOD+7C+=LrJwnq^+lBKIHj% z+;5khk~yiqRxs^Fm^vxR1dTeol?lF&k+o0oa=WFqGp>)MB?FU}??wE^HnW|LWp8et zf*~VG9?S27@o}eQ_|1XC8UJ}s=RGc~rZh3P81g{S6Y{bDnv0%R+rd|TbMmiDf8`5K z_dnRi6U0jIM1~6vSuX9v%KBp$8WbB z2Spuy!jCcQe78c$_yXua%0SBd5M4!Zl~b~QY`O0j;&P{S_n1al=w1?k*O{okilEy&GMxUYO~ht~;K$xLu59wd}1{Qfg^Z%S5cOzaGAO#nA}}|tysoK#T4(yd$3>eOyXWE9W;yAZ#7Pk zF9IfM?hP3;0~0^xRSUFSGcqX~r4-t|xVZ2(J@;19fV}#i2Z<>xpq}9IeG{wN-I-}> zh`?v>er(2W+pc|Fy5z@leNmmwPg}>FwQ8 zz@H^cEAP?2OSVrDenT%%2Me9YT3^IWHQ>ODxcvRTZ@%ss%*#?zALjNKl@J+?#Dz36 zS${@(1wNXqu}@%1j!$Uc%l-TB_R+9WQ^15;WAT&z$D1lE14>GFDcYdh#gcZo| zl7rT`TQ{_IZ$m_w{V^Mvny!s0cYDFSFDNQwKIB!&km8!4-n6+nWy>-@LU{MZm6ub} zv^PTO-l5dH`}HKQ@2lt!7+TynBsel;XmHRitDmD`tfgkPm!FYvx5Sj^GtkxU>!QwY zd~o5Ma9w##ly?xH19KsxWlbfd0Yt_U5J8EJQNMWX+HUzzb%DJc z?1o2^{OM||KiDoJ5l0?Vtw~U2GEV%q!h}fyJdP20t84!HW{*dcEg63-avSH3d;R`f zC^;eOvB!fXuS4{`orqs^k?mAqiEW+|-`--IS+!HiyUlX_Qq$cFVTy4;2?OCuv)qA5 zXy9)2V3V8tN4Cjoo?*7*P@r&(tac{MCuXE0^cp|&fWP)4oS>00suQ`qTI0OXd1zvgVIydXGvtAjc5Ae&Rw=q)ZW9=OUS_5?78e62iIez zM(cW}Kte(hxH{Y29M3a7sr|TRS~UK~jm!#Fq>kzh`6|AdF5-x#0|G85n2KLW$`8>= z;*JpM#~j;JEOMy(nmF>Ap&5U&7@2k8V^-roE$bJ-OrjJi>{Wy$gloSIG8emzAycO= zOO-b%NiUik=nJ8EjBZ`dc#U5{*;J3tf@?|^a1Ej8PYluLxKwndv%gN=uy7_-#(@Uv zQn9k9RFgrNYZKwu&bW`JJg7uI?sS54sFI-wEUJ*VQ=_GpnDk?slAiNT=6y^?{ge>U zX)RnDl&TPOLd19Z5L$jg3i0s3v{`P4X)%2Ht>bd$Jv(OXlj~rwg^76KnhN}6S5Me_QJ_O#WSgY*Vk_d~Sr>Bo%V zSs@gZi0rjvLVE^3VbcrcMme5;{GIr1CVRz3y`~tmtNi-a^VVB3QVysA+C**||Mf6k z`Xno4 z0o6zFW)9E!e6G&(A&&a%WP|bCF?MV%GdRn6B2D3eeS4y?7^x>cfN>Fq)gP{=H@1SXOOdbFd8#W9D~QhH}mzD!%(M-vKKeG z6SLX&qdXu-#0z>Ae9~6S<-kOh&Kh z=5MoQxB2yPg~syO_D)kgk@K4czFQ0@`?qiP@@U)p#4&|;lHAEEzgJJ|Qd=7cCsp9j zRr;S@Ma>N2Q}3@W0{9!Z#T%tynL2VFvAL%8IA@+e*D)XRZ<5s#|EbL%el&l=XvGay zrw6NteI_mU8|+HOD}ACnye;zR5!M(?gh7GYT9$^&6BARD=^0B0;vPm>K+84x-NdP{cm)=1yo$k^60wVt-o%?PMuK={-~Ifk z?6)fn6jO@LlrtWG>De#do$a%nx=RAM+FlWRgxe%CrRh#z$Ts*+H}F<**02kXvB;yJ$CD0f8X=;18LDpwZ4Y| z&ag8Zem~1>`3E%#54puM-wWNp@X<&eTWd=jx!zZc!6=l0DT+8eADm=bBr;X9OVit- zVPTt2`9{jwP~}3On$m^Vw`bb=Ct&5ez3F&5;w?9RHE#`L%??QU6By|*@W-eI<}MAG zKHOSE#@G*}!pt{xy~Hz|_-@$@^;X<*8+I7sxtZC-B+X5&=OV4rRfVKA6}#K!Y>Gt| z`y!9~dfpxP&(HZj?R9o)WaL7g%4i@x?nN(`*jeIN+{$33=j;Dc($AP@Y~ndOfbYL5 zckB-uw-;%!NbuDW>HtUVc;#HGBvsk0UjF;9(Itzod>gD~OEt#JD29gUrs2~SEN9`9 zr9qqJU`&zGPOXp;RVP~N_(=K)3;WCozWxm=?ontmETo=Y>TnF?-H3Zx`Hh>-)#LR6 zZhN=?qaz9df2oRf^KzqRPH-d&Gzbm_;S`%it3tQR&~ z_SFAac&}ZhY#5_KQJ^%C4C!+OHdj_OnLk`MqZNITs2Kozj>Q%2^kDSvD_et9ODVy{ zC>Nzs!`%B@w$@g0^C&MPN^v#(ska%3syA{ zsU-g|dwP`Nl6ZO#T)q;(+* z1aSKN#dwQ`m*cGMYlvPS=}hfH+2WOlo~IGU+%JsxC^+I=vFhyQ8=pPwxyIdotD0>Oyruijn4augJ zbI&l7bnn&o*ZgRMk1vyph2Te~q-M_B)eJBhKnCLp=WAs`%0L&dZ(MFSm1eu%K*0a& zQMpf3nQ*)PpZ5mg|1N zZu}8?&9~V-NGc)&R^CzO)x-6sJZU2nS|| zirqHZn&|5XC&lqx2-27PO`)ZweQ4v6eC?-RU4FOTx=kY|^n2z`k1#zTm6Q&M0O!7~tc%6qMNw1+WzuorAR7qo4TGBj0KV1Kh2J|Cl_;>J7hW*7(Fh1j+v1LA93G zYpwlB)YG8;lP2t#2*8160M{ju^C19k>`IrgaZW}#A-<^Xw52`>5UpypiU7KmuaW|S zM$Iu48RQ8x95@1!!AeRAnG6w{W;zZm8RUTY1-uS>f;84$$-{(W_aPT$nK(J`@Z{!% z41LcfcA&iBs^KQmzOo9jp+TIZh&HLtNYy*}T$yKl+ywD5!{ho}9TBA|Jw6pybM%9_ zE|L;Yn9s@bF=Sq2_cq*vJzieV(f`T=`aK)>Ms_ zJZ@X@6lA!1EEa*(R(p4_DbhWt98#=AuiZ~(2hBP7rjLTinT4XyZ|okJP+%GNYp8s* zUM22?b2(nSr^9z6BE{XvnEpKGX*9Rn!1Y=(9+61DGdjc)+O&@-}rS|t5v_*KklcW%dRA)AMX-$olCjrUqmv4{t@6C+I$vo!{3P? zx{ptPs#XpU2Vsk)wZlHtpZcive?vy$Yp&^XdKir=c+dGOZ$1%crAn~Y;YrGAGY<|P zoLf3sX<<&$_@3$H5sDr38>uje7a5WOSoO7QvgHz_+?g1PLk426URWP*<74fHmPJ?A z?ud#OnrS*1%x`|$_Vg%@nBz^31f3nuDEBPA&SIu2R?b@#J}`E~|Mc-?IMs(4?p@Ba zZ+PWqa&Rq7v~-|}@lD(Q)mOptcdjC>F4ffVesyV2X%%^W|1y*&o5JJ%0(sX~` z8@b5vWohY+Ot;xCUCDSP&U`7Wl7nl_)bQCiq#IH)> z7>!uMX?;}i?eKYGATS?} zBc2;=-6v*QBgq0Q>gPs0CaV0)U__H^Rr&zuD5I~F`AM}}NqQ*n(ZtBGU?7pL)07NS z&Z-qbX+dVnS7ll_=37(8Un-{^+#HhRf$eInZkt>XiWij_5~MB3>V0nTlZu)1K8^Ty zJPrP2g+D@;Xv|_$-_Yl^aHfi;i>771w6OVo&C{KESO*Kx&T4bufa4>u;F5$RL+DBK zFdA`lQI>`z$4IY)ALA@`WBM9nB?Q3suz*P*~4V?On zB9tI&?pS$wyo3|P!MMAboqi@k&^V)3N?11vd-kJ)qjr-ov$-VNMS|@s+X&nfd-&n! zOdr?$%JJhx3os!}8~$fDpZHk#_%>(7^4~eiw)e*;yh-1G-ee7%cV_gQEoR$kB+cSa zd=}&naPFlIsNC>GN!IvjQ*k9PGS}Fh7ZrvBZRMEd|$fBR_;Gy4(>F^){AK$oVI(*#34|v zC^Z{_eFK%o4NYefiGSu{p{TI{ini7BwU|?Cf{9FSE%$@v44ov&XQ<7Z8(Y_U_D^2! zZtt0al7*^u=3GzCn*%hb(g%gI@1Fe&KLVS#H$v+%T04?E{(hELN?vGd)X&nH>@8CY z*N@^CKP_O`-Jb4Z!3%)@cEk6 zQ_q;WCzru+_RG@51LPZ^`B!u4ch368?ymoSCS9 zul3#_)iRAt=W`MR4O~+_YiBA2{o%24r9=|wZjTC-FB?`n&G|lR5)v@E%Y$~K z#U+B7*9AdFsmO-* zE?U**_CG+@Ka)73ZeqF5|9gvFFjxY@^7gclCE~EemU(9!cV3Ccv^93w;)(&3u~8l= zDAcrr%xv)!ObqLA4(0ltrw#kE7Qy$3YN7x17h>xTc>zCB@3rd2HK50o-)zsZKdaHk zQACAvT~)Y3yDs08(f7K+=98F0j;LvN-?HMuo(s|NTq*1{@N-u%SOXQ1TUQ1A)r@Ig`I6ZY%E z7oXWL?FY#h9j7M_Da4bNbPm>L;UB*myWv+7Ye6Cb$@*L>%x3<=rNBL-{$kEZ&brzz1)`E?!J32 zHfZK-`&h`nXBvzCb>%p7ndxx>Y4kId@vRZzAJL$}nbWXSU<%4mUg_Ej^leIMUv90S z)=CcDyXzXvS1^@tA{K*)A#D>(0f63w$%y!U__$4n0fA zX9leJ&R=?&4KDUg@{{-;$4)X!HU>7lexxYCH(ASCu1K!!y4^v4gs|7{W(n{-*B7|} z+ro4US+P%3yq{+ak!xD;2;F)9x8;ss!Cw-dlY_Xk!~N7TuPEg2_rQ3^r5VjDYcCHH zHwLTRA@F!A~h^iq9w!2#yekLKy5o1Gy2V;8^myqq9XFvzRa6n?4!Oz~I#8$LJfRVbF)-Ic<}NOTa|>aA=WbhoeKQ5&%48 zNn!+uf<_8yciiHo=+Iz#n9poZLCB~~e#s5PRA9(=t0ljWpCE$5C0)oLv99Tn;L25N%lb~8Dow6y|997!qtE$;VJP)xuO?SM zBh)emsrWxaef~=ZTlb%556uRNmEs@k`F#L#M&Kp>N9kh! z*gR+!wuhWdi81=$&sXqyPSGdIZ=a)(b)0Cg#e9l`^9&?QCUN5X(}ayQ`Z)T*mcM$qy0aZOJJk?mKW~d;^6VSAUcBHTi8@=CR`MGPx-&Cf8!sEl?KHL z)3-f1{CDyjEBLp%L4$kqR`a;%--|diaO0jCalGFo5dU9oh$*!YuRoabn7BXDa;V|` z$+u`#PVmnR@Ggz}g#3^kY3;Ee?sIAD(>Df<4l0O{GJ`b#9z#%lfobn+HKw;;kGwq_ ztR(f9EyfBu$t1dIG{|8p*3kz^r{>&YZyHOUR+Kp>mq zSO_$eX|GI0EX6;n=iN*4TiHUK+Amr1Ps=Z#u-=6F-ToF*BgCun*he}WjQ{kmn<^PU z5#~k?CtFvGRZkair(7$~|DT?}|ETkxD8?A8T%GuTb!)1izQOrFoq))LG7rHeiyoE!NN+xhuJoAGIrA;vU#Ml?8rzr zY@ghl-?wi=L9hdQBG*?vI2)}$Qhroe7N*VAx#|yZ^@u68xbTK+vtqvb`197VB<*Om zJ}=K$Yb*)uCt=ly*P<27;a1>o1wwu7Er9kq2e!~@7zQHJSQ?%nOkk@FhU?j!YKR$$ zaZ!61NwHJDw;H_>07h@O_UxugPa8eL-sR{w!{nbms?BRWB1qzFl3A|~((hFf^(@x& z7u>tQInecW_BJiFx*)@o=GDZU>QCFkTg7ZIUQCWitBiw1qJ zp$=V2rXL0$4h0=bss-K?I}vs1b>UQ7v}>mGUvjnvBW+wr*t{hMVMyTH#`edw%W?=U z5)?jMvkxYI{^1nItF_PZGUXu>11`twQS)vb9({K|jdGXc%E(aeG~$p>B9Ya9I;oxaPNS~T0>>`F`EnW_rWKR zNxG_>uQY-U+U@I2NXZUl&^8ZZ(#6-TXhlodG7m=?Xjf>kXv3&^mL2{uLK$! zedF=2Gf9q5ulRe{0%BOTJ|uf$8!VGP6H?jenOe8gVVNwjz@Oruz-wTkII&F6e*8Tn zXWsl{D4AvPDNlq_eAsl@Ce|xR=#7a>dmlL$;U`9qK&aFcYqjjf)Rl=6@wA*nbC62a zr<~J*31O^j;j|4WI;@WOJj2ATC^dpR-*0#_qlbk0Rx!x$>H^@KI|uju0pawJ<(jYe zy)K2tn~EO+noTqc(TcL#Yr6O%WHl9R@Pzw*8*n=}(@Le`C|rx`5H2=c_ZX{b(04|` zp$kAyPrgfuix4E>B!S!IxvdY;KGA>c7rR{at=Trh^p??03x-%fHZwA_tL~_-oO0l^ zHpX2z`f!HXoqC=}(Q2yjhu&v`U79K4qePoNW-hw7{|G2qf0T%F$%}fUKXB2cr=5e$ zweFd!dgrx5vrAGW`Nw;uw_*_HWBkpp65w6u?{eFtthLWM=t0xYeyG)kciiR`u1WlJ zPXEY{a2WCpo^aIH>B0Uf&s`{*u4Pn;2$ChYiM$pDpoXq@3kt~)o3Q*2XNZWbpA~@W z$q8jYG?iwXp^LZck6q4lKz5LQBUn^`1)bVdT;>_yl~AO0|&>2b6_M>hcN;t-(t4_NFCgIFF3vs`S5Gju=Dfl2C6#usB9KMh9x_O^|B5^9SNevS>(Z>oXkBD1{P;k$uGX#NIL|_qnMMg9oJb0 z(e2UH`tf4KUF@O}aV9Pi%2TkI!ZVc{iQgK;6?xR|1jFtkhkFWApY?;Wr`aOQa8Q0) z_x;IzmA;n?sb1|ec9FebP}8NQt_hMiT-AqR+!WDmZ0`Nj^u4LzvC?79nUO#q3U4bC z_Rf~<_ShloGx&5EZw8AE%#A#!L19GRSV>1O8J}FD<%HA!+xV}S5;)`2_Ze){gkJjE zPx|JpM%m8a6p_F(XQJZ(Fh%0W-6l@7D9$p~%Zk<-)T~S-kSg*B*wH~br{a4&u)ThT!rY%db-HXSNB9HCT72vQjnThrA@8KhGH?8gnU(QIRp#1F zbQK@T^rDhmo)RQbRMK%iat+hDor!>28A|rbHI<+L^&B2`gZPWIIUxMZ#y-viMUy$% zz5b+gSal~s`?D&llkHjc&jCxQPY4q_W?u0_uH$*6t+wdjp{`S&3)@DFm~&2amHldz zd6OI=`gW2-w;O#Oz4%~)gbR)d!r3ic`w9s|cab@-zwG!?Z3UJbvF#+dui`d_3EA}p zG2Llt$$3)C1}PTBQ;TzJrbdXs=#=2|JOvb1p!~cWqe1WeBRMcT0G$6#9@Z=of;nFs zGFUgQz)#W>+#T47@myyu10*>Y830sp@{6qQBbGixxOGY3Y6r!=c5-mBPjF2_KpM6b zEwLw{OKmq9*ENcxROcL}8gTaNx&QO0W`m!f8_aP4ybPt;Ln3=%WmZ@1+N6A&HNFia z!JB|ZKZ5(;i-qQ(maMW-NJ)-Cm`!JdWew@{D}v!uqiu^pZZ4b=Xc}R$JxyL5a^w9^ zXz>|&}?o?cC{>H`0jo+y#ThMU;hH(iP(9MXV-YFpU%0;nYb42KfhWbqHV4xYEyn}qCF zAq}j{nMuy&2Hy+`f53#X%WCR$CVOp;@ep@#h_C6(?J+W-`*l3X;ezi56FtY9qLW%8#8 z840rw8m1?F8 zaiR7cJlx;T6_d2k+eNoC_MWb62@NPVqjuQ2UtB0o{n#DEfD3cPOu;R7YTN3-U6bd? z;C8I_JI{#`GZY9QV*c8Qzviol+7SKFX}Q#tW9=EJy!A5Zc*tV~V_*vs?iygadFhYZ za`Fs#?Jug^V_W_{!`O1adb8ndZXK4__7!9~}N34qZNF^Q<=204Wj8H&F{Y%nT&CB_IxMYO6 z@uR=eZ)ErJi&J8Yn!eZURu4iL2kc9_Z{MI%SQf;_p`W*7(tj!s69X!2YQM1nHWCv< zI6oY4VV?jQJ;BFQ)4s?06@03&8&sBk2x5DF6sdE%Fpt6P9ue!bDP3h<;C%-nFKGw2 z(Te)~OlX*dBy}u(TUS}MOC7DY(`@KIrX*j1x~?2QN=AvwQ=wU}60V<7A~%MRkuKKZ zJ~>t1V=T#Ia-`rHagG7ZHG9d^0yB3x!w(*RRgoCugm|QeT~JVC(h8yTk`OT!n=c-J zQ98+BzC(gkx9_BVjsb?dotTiA+3YxE?UJ1A2}p;*fu5?%Zcog5gay66tCZ;~&W z6~5XCAo`{j$c|I^C62Dku=h2%t_UaPH~GNZ-<=!r*tZ!S^`UWnx41jb4UBAyS-7MW zuaArhL`Oue<$4;(2n1O3H1CSpCwfYs5rHPEN?OXWe{pL)%6F35AH$l%^NhVk(0T1V zCphAJ9DdJ@$jFu3oS!5qph)MFlyfIU8%{1`!rEzY*@ z=A;*EMoPqW0g_a8k)8!gL0h3?qH^+RO+{9O+~2Fe>yQ${8cVaZYy1_fR9l&A=c$N+ zi!%un=bUXWHYp;y#}d4B5{Gp}W<}pD(=bt%1blB2vtrcw;RJQnfhBn7Jl3VFKpRVK z6I}%0V;e15+R*L9H4VTqy{r-Ft+Qla@#Nw^vORc5QfB@q-G%5!;?u4C+#_A;(V>~O zcD>H}pxTk!^4qq<`^sAo7CZL;>x*b3#DZ0NIrggEVI{f!IUn)%_}fvWE2$hujc~6W zdhGTD1lxFOscg?l1bNrJ}F=o|8%Gdw3$T(YG(ZAozJu0iDNkx}WBz#i-SIWE^;@*#2^Ci(RDh zzPZlnf3?r|9PIs!0s`#{ogd)a%PUW!)8Vp06hv3oVWT5bv&)x%iB=Ya5E_hZ!;WTZ zw}VGvDOJn-IgpjUBLjaG$#X(UNTHWFtrpAgzcQKg@T6sl=9!dW9ImORAF36*M9SLYsI^rd0SzK5l1m$Or}J?kF*eGVA*8X4P& z;I&RM*tXM=do5VgISI()l#eNNv(Lq+-V-duqC?j(y__R?BZ7&Bl{xqG7LNg>y7l{+ zX>-n}>MjP?_+N^ZyL<_7Z|Jy8!#~8R`q?O9>GyUumDe?ahlelTWl>A-90kuyw7E8{ zT(FvpqP`-MJ;sI*X9tWq+^Fc*1QZ4LfU^IL4e`omO4Fr|AP8P^#N2+DmcWmK=<24U z?cZAVi{%eHuw<#Trn->(gpwtB=UiGaPwz#H|4j`qv8fa>n@ey&7;wXd5ccB`ekXSA zSrS-AMWoGUTl?;fmE-(A_|cJ{wJO|dTF?;*M$|=CD5?YpzzdlAGK~vOVW)o|EL50& zErUo+fZR9$SeFb9l{qmz391y`r3TMn0APw&?THZtEW_kWjB`y1xdRD2 zpNjyka)#rJ*!a{z_Fs2{&ZByaT@PrO--PdP%l{L z_`j)*rcD0nZc~`aI2=mlq}4~@BDCXb%~wCF|CS?>O7mngS%#a4aiZa1@m@mC%$0j6 zJG3&F`VxMF=?uRs;t+pG?V?r3>^R;}`@vW`cv_FnN7DsE!W&A|wXF0{2YdNYNe!_C zVzr)PC($E8P=ewEH%@m13~*55X~Yh;&~!GFp*o+x2Gxcm>|DnYF)lDJb0jSDPZc?3 zBRc-`;;d0Nk)=$eW5ZANb>6GVM`RJ8_(0wS&TDI-!zZm83~IvjK#Sp1%ic6W`!;}Q zFv)-k>GGy%jAXzc?Emx9n;nJR9havqP%bn=*K)NLz|#LkRGkxK0LfFajj0<=+<$J1 z<&iBlMK{U1`0lPSMLI3QD_;x?B#nq=tf^ukEbI8{twLVgMi}Pq^x}1)$OXw=Q=ra` zt)~7yb5(V0OAyWG;JkGPAYqXj=wp5OlK-_G@c|VJLe~=-c9lotnVkvgLYs3swWJtU zX|J6M;FA^Tidd^5U8Zdzjtc%zt`mGF;X^b%L{_z5!fiRVlRRE*_3Wlm_`Upz@^)eia*AO^zSLGJv}^7ltzhFh z07H1z7e_e2Y%DaM5Hx>qYQx>(IJu{b%k?ox{&&fmh`en&y4C9O=55ITQ&LeE=%?=m|n zQlN4oQwajIdr59^QCZV)Vx)<*xY}COwq+ZCel<9c;uHr0(X-?C*31Qdo1cHb!O2mw ztWr(7nBDF$qpV>xvm^qvT1lCJ{v(&FM16{_?et?yD(V4eIqD$p?5}|2>H;oQQ_a(R zd$)v$Z^czU%?0-%2{jZ`**P212J&O_+3g@UJ-TH)6Eq`8XM}`LjaX> z!;a1ZTg_PO0J-j}#SKlT3|v41MwlS0Nw zzkU_P@>^Y<0{7rT^-K+v{pF#S2k^|=eMUy2=c!cQ5jcD=tuw8^%#>NC>h;Dvw98V? zXili=!C97VDsP?`GtDP`A|43pLp6G+=dJ)vKTgo@+?LzuK{s_kqr-(wNu{HwpDPoj zZ|EGM!w8LiL){1n;$$1@lMqXL-D9)cAnsbdmec3!Kcx&HKG7+19_9}Ap)95KvQUtl z>$zzPws-_#>(NeXD8?`xIbl};UsW%MR^%ZbF>Ys#LfgNA+qWanW@Pyj!B=~L)7 zD5xFve$cYry8I$G0I?~jBU?chom02&6#O0L(?XBlNkFU_Xfj*s$Cb;?Bfe}JcA%nv zuxlb-L+f+i$0cMIZJ0_>3ZepRhJCFA`lH$+8@WcL7I9WSMS<@2y0M(z7yMuv4yhGn zE&fWsAsOu#JQdDy-EeQ0;Nkc@sf6vbzhYnIjK#y-j%iTsbWlHGp#^h>?`aXeVdF%r zn^=EYATK*#?r>l;8MJD_B*;|S|3X``S+E?;L^`|4g9Lma(gGXd0Ytp9>;C2FE7GV( z%tnvQJdebM8Kry#Pa4UA%BdIR8n6XcK8V4gzFR`rD2QNFux+T&@3fj?jCmTl$D_p| zUcSleFSDs#ggn)!;|qhzSH8c0e!6p-jn1{+2uDosTOBG$V<1vdu_3H=5u5OnD#gwG zOMG|~%j0D_-B)$uku}BAl#DE}K1#-LrSGDATuybS@O*RPV@e4j727$Pu&XKLu+yM+^>c?G16$~b@J3R3=?Goh zS$N?=e5B3%yRNNdpdb>_gBdb&cVFJCFrAYnOn`W5yXl0FExV$m{afn|Xh z413;9$e1)FJd|5Mp7ZF){k|e2fElEswfe136Pd$FCw9nh@v_!wt8bw~^Y8B7S{g;1 z1SaUP%tM*q6is!jQW};-PnPZ}agdl+2hOO7<|`zImN@&!UanZLJWwzu_lw=+3y8Go z5;BhHTrWZk<_|{(qS}or3AKntc#3lsG>tx|j@plP8=4lgM3BMHa|IZ5SWJQmsM39P z>NK%ZC?Bj&`c6jaAXt^c2B+Nua>a$H1PGMB^bAf`RKjZ*_9-!OmKWj(@(7IKrTbAd z3K7F{duwbl{rVTVllkhWXa>(VB z=iV8%P9v7w0T=UNIG8i@(x0J(qzOeMJJZ^5Kmz`N`r2J`jJiUV<2&mB32SM6ud1qw zh+xBweh-Z{Um6)1@vvV>hI#Eai(;d!_fWHW$9G}O(uwHlX;OZ<{{YyAdm_qju?OgI zZ=&~;N_Q_MDgOeqeQ&m3&_9zsKf!(9>k)F^5UPUy7qNXc6ibbJr=)@e7c*bySk-fkv zKsjw@25EXoFU3$zQKoIMT{iB!6|@)F!*7rgfdK~alZzu&y(v||aUA%lR7>yEqV3=Y z?Z@d!!_ol;md`xsyqd4#pn z=hSh&LSQK!h!h}^Rfty7Jpy}Ou-F&r3zcfef7Ke)i|fh$8w;S)iX>evx(J_ajNGIq zuGjBEu9=o$U@mbY1_~kgw8+RBzNhJ zq|?P@w3iWty@N}XWynNF$IAMzuPL?=sjx5`2#*lqAfWm*0dX1?|IDwr7++Or7j{1q zYCm#7$|8`~JlYt&4y%X9NSc_zF?_s&b0otLBW4X<3zj_#y+L~mj+Y71a(I)EK9*&8 zJ-}$4&J3$(pxFV>BKm@>^%iqizoal?YgcL9O)^N3i|+AQO+kdHS^+$ZgJ&0Zfo=b~ ztfAVrsH3S0U(;_2@xGfqa=5hI#C#z8{qSO+1v11d7%3RzEY67e-kJ$CSJ8#oC=sn? z2r>DKAK14yp}Xog+R4Yg(LlHVzXNk^mKq@Pjj zPDAQa@hn2j853*YetuyrDxRqB^sJ-hVMo9`W*LBT)w{51>ho4G3~j|+JdA^HhT|Ag z`?#738hNlNy=nSP=12Wb-TyDa2hpEf`Cwn+6z1CtuAy2zr3ymtb_Hc{B-?$Yd_5Ff zl$=z?U7fd{9xnLYtM!TD-pEXUnO;lrKcjo=qHo7($e#aBYYpdoJ1u@EfCWeHtvbD` zW&h@Z0zEzc*)>o3AuDYyiiw#=(>|bTWQZoxil&(v z*tUfnepuii)MwWKdLvVC5C5&`MQsUNi68&^@!SF3h1+=5)o+84#yilo0eu=$RY12^vFGS$So`E}DU%C5?_$bVm^12DNp z9u{lzO8k=rxT~ zWnb&fXmL_1cyzfZ%`ucD<}@#E;m8pMj-_hlAp%sgO?tJF3?qN+h=6PljU+W=1z>7~ z0iF&*ON`nlR!NR7Q@*@p*_4Md z5XgP-`nAbjm6#BN`SW}kn(^wZwy|UhT{Cm9Hhet4up#34d%YM{`!5crEP`c}Hq6Hh zAR|sxc9_j|`NmUy|MiqKYI&me;~4+OQxbOg$k7=~C9=<=j@?Vts`#}V zNJGr#y?3CSta;;y?3q!5v=WB6hiuR^mP2Ti3!ZA_f)AS#Uph(nCj^M(&zXMm7g!E1 zEPsY%SE0I(O$k<${IqT^^7C2qqLb}VYC!`>FoKO*^)n! z4^af&&^L zVKD~S@WS+I3c4ljK}IQa+`qVl%>h0nqrl@9MuUMTE8}1b=?~B;-o*^_97rmydIAC}R6FwN1w3dX!Iaft8-IHY zxSV%G=som#I@+OB*9D!``eKXwu-$`39?d^sxDD%Rl#-7&@&5pGmvc)O3XJ&z9a0&~ zntGVpf&LXV0!Mr^vz{x}mij(kdnUi=HCj$nN&H;${Q3*SLQ7y>v73u`e_Hi)ng{xJ zapK|8pZm9{oCyy@%3j(wp4R-ad)ZS-i_<2&JW=p^B5^unXaD7`*xGlT#zSAT(s*1Y zHz$y;wqcK-kRX8-o&(2>=OSa7Bzd%R;*YZIp8XK?m-l#Y*mp1W`)Ib^r$0RuTczMt zE}mL-S!CcLv8LUlm2I1&LwDoIsh zH($J{4mk-UbQ;8xZCG_!H*DwfLhf}m&6&O-5=>4ucy>qjOSyUj{qPV(bCY@s5! zi2ML8TR<|wP;IP3uzU$-Dl?o9<1i~KDuZw(pk_39bVrRj<0r%&{6m_P4`pS0Z@mL! z#d`=bty=b%Eth^z=JrghU2Z=or5LR&_i*jhkoSj2U< z2`8z#$x5)X_3Y_&i{n5i=8qU%8vY{8K-5#N_KsiU7h zEPX4MG;=OQJZyH%iS4l+<(AX6#>I}#N>T4P-_Du9(Ra6E=K+6a*t3YwY{x#U!Ndm8KW!b$&B1ndw;tIm1dONp`MCySNT? zk=-EBK?sRG*y_{e;W^xN^#0LOx>y>f0uvn+Qc6~u?B;57=k08@1w?aazxfGu@>qIW zdRTbe9<%WA#XS6Fb%OQD?5pGDZ*aOHa0@tY(_d<;=!QD&zk+&J8Lls%y~FOX>1G3d=O=@)v+RYPK3|Drx}B78EX5cHW~J7-xQ*v zd!#XZ82S>8>td>6Z5&F@=e`d6NC4r9apTY|9}Ym%U+bv=2aIbC6TD)pDYJ+nzmsHOiqXslF)PD8m>mofe|n)onhhUUZ?H5Adpzp)Nz&5>3n55kcPE zC*ZlC=m+f&+b{r6em?4h(4F~o=TIE_(}1P3)6qxcc!5|LcUu|lmE;X!WijW_1`O1F zy8^cxPK<__Gc}ZE`hAZpgMsiVP+7PMt0@+J6byxsrWcz3?9e?2O!dw}iyQM(&tZrs z2JqCPNEyiwX+#GVgz9}9St=(BONIX#yY8K*JBeYpsG%1t`SqeLxS=G&_~ir4=8I(} z!finmIC=9Z+Dry{GKv%jA@Nx~k``u84at)PasV zNu0TH*Q0ET#s%AeV=_*#$XTi@8O8vJA5v^HTg@5q?fjOr%Z@ovo^CEDw>woGctc1r zW+9EMWZ>6}loH$AMJ`|NmEug&?>LlLrj*k{DM|T$Yx<-3KG>v&)?i>lR0GN`zONJ= zgLHG$WS|Ue<2NC)Fy~KFljC7`D|-FY}cA5eFOlVi()C!7_>oj9YLtn>KHQP|&fy4hqM1VI@2#^*8D84-R zvc4y9yKza$`UJvpBBE2Sn0q!D*!VIrv@POQic*7UrPc8kFEmJU=y$*{{Q4+dLIQKi z0qvx?54V`Zr#MvazxGj14bkh7dVg1QFv+o_ynF3JDr<02q==B?Yf0g#W-ds0Tzc3l zI-xboz=Qo`%pNPh*fav#N67Ste1tN2&FP}(dND-_c-+o3Zrbhw(zN&dN`lLq&%O)W zC%e56qu!iyQe~wmK)Ci|Jzn+IbV@>yYOWPc*}~W1*&xiU+$2DXBzqkM6u}JIA~t|F z<3C<%mpUtd)$c6#vd59*+`>hsL>YKMlO6l@inQ@#f}r5Vdx^sa%>2enrmJT9HAeSB zl%xbUH05?N3IxB1q$IN-C#)qZf($&mM{pqnSevsru-akbd5ZFJBhWDyivW6Lt^^3Y zXMtxOjx)^SV~&Fw7DJavv2WqYLa#mN;>qTFSHbfU2QXEhRa08yy3C904?~});&9-=JRy*uixMNYeFvx7JE)M zG=0J$ljTN90@KCoGQ`=u+V##)mrcO|>?^_DTel^f~aKNB=;_VXa5?s(%&v z93_+PO(`{!zjrKhidfmiSth1hphF$)Na;gQhzSHN`!8GUXrxfQfk@{^-P9CT2p&b81Qyi{8EAfq%O zmKpT3KU5ki8DEBLsp$w7-juaiXq&IsQK<3oe8jh@yJOM(Dqa{p#&{xz4}={Q%%$ZD zvNp`4a@B~gRIJk_`N$~XZgztwZ@qXzLh1-%N1XGqFqpQgE_AS;yAb{JbH5Fbs?e%H z>q9r#ey9EN{gx;@s}XPRBUV#+5xyv#tFF@ii&pXVGW`OP$v=D-%+DxTmW=9qWu#_g zWx8d~FxYC+yu0Hu=scaKU0r2HElB0N^&cAhhr8pMl7wA z2h)a2zl%M58(aIz-`!nGQ@tyXm2z?an4jMs_jl^zwrM0L%Q3^#o?-Y*krQxq`KmET zw8h%ycc4GG#+0=|U;-r+i4gVT(NH$gy29O*m(0<;I_BqjQ|Fdf<;o6tOF>4OhoSua zfLgK>>E~tF`q1bh|9j*Y%BF4qnazbJHDtoebl&y>)u`m5vYA0mtx|A=7&m{rF53|w zVvns-gE+e?;B*X+D8^XI$w$K9*A59NFTdJ@A_=)2)3Z2%dCEucg)}lg-)li+?BO&bRu5+p<<%{5TFftfK z*3S%F<|t-xok3=;F3(#Xbf&?+y59MK=+0`#Bu3O86dFjV` zMlBaw(R;c{s2)^yIQ`2HG>wh<9{#2>>*Y`$Cg0FWx>p^)TH8^tcUzfo-HI-BC7XKT z9V{#G5SFiPhFY$Aea6{IiHcL3%}(I9n+={z)&wJG#`ipPFV9#M$Gav&`8vdz6sNFi zSC3lNx;>iw$zAXm;Y|&<+;?VQWN1Dt4@~qJ94IaORCLILq!&&a_SF#AYS|F1+gr21TG7q+RiZK-NsF5Y zU)$h;L5i^s5v8Tu`tx&}-4{5eD4cbIV*}KgSM@d+6bE_bzGp1?>i*=|SVz}^wRCkB z>=rfB8$`B~pf>!a_|c5PULi~f0L}ja$qyD7L@w>)o<|^Qds; zr(VU`ENkza4Eco$MA_!SvMU~mh0b=WV>6Jl)#c|mGLU3A2689;&obJ9B3^cj$dChn zkHoB2;bvaVRKnoVe#rGSJ)D1xdd*RY56ephSg*_a0waOmPtm4m#4tTcl z9bHl({i{<6jn)AHWaB^?Y^eKNB8oFs5c9;^Iex-hr%T5oatN?w{bJ|*{!CRPg*vN` zezxIrHFivpc>QiWVM=O~-qf>}hkUl*%PYQfK3}x&tZHHUPoOS%Z;00NMJuOnj~@B1 zSsQ>6E)n2-LNtQ2tim$9Lc!i|O%iDQqN=2qQn6Ij>k40>a)hdf8Tj3Tre=#9zYL&x ziVb$o`L(icQ$H6ZM(6)H(-=B2cmED=e}?;xA2rWD_NAGVG{@JpjCpiAyA2(gMQ4T5 zq6cvzVwT~B`93kFZjAUM&e{h)hCtOy=wX1EmuIp-u1+x5WU;qvkbz zVe|EcKA&!+q_HD(d}!LzhA1~X`IzQoAiyrkPK%=T zV$lkT3o{;o1%_E%w0WECc4G?aUp-ao?pEiU%Cn-%cp!>*gE1gr{>m}PgMB|UE=}S` zg_RhnPg}j5I>wQBqt#h0PQSCJCwcoE6O%CLX@9-a2vlZ`u;JF-Vg4E;m z*@O@%jQbm~KNRdFtD^U5TEk3fUr}+HStBqcW=J69n-P8Z{!+W61RM|6r*uIj`V>2A zb|(i7H~4JP>;ZPKB3iUhg5e(@Sv0Sx&*;PYFh2CsYF=dD$s8Rp2grZG{8GCm)UMkk!vg$7oe3EE1f}aox@lbf;ebSyx#+PSW zY*}dRbYikFYfb9*1E9CzA;iK&D7I=2!ES3oP7}h5`OjrGlZpzoMTtcM?;)$|_eKk)bO?*7BhJ|WwIc_$*G@wF_@2r_u6 zgo?Z*GePmc66oc)M2J)HJ}-pc5dC~fv~_0s;(g+g?Rj^!h`bzumz6{FM$dJ!8>6BW z3yxgz+@+*Q{Eu$#T?_w@HDx-rM(aU01R+YeIiO$aS zXRrJ5*w%d}s-68bNgHf_ud24KVDed6>c)H>i|?PFla}q=bfmbNiT&RdTC`B98hsz9{S@n)*cE=_(N7!7k`qgNfnUn6MA|}RkqLuZGxg(qF&9or-zmg3MSqOVe zpo{EqQ~%U=5?6iLft_Gn(p0bXdLRxahCPK>p_7)GF`J(>?x$9hDsFE4pAN*nvwoh7 zaGqb$y*hC)CIYTmHfptYo^_A4;moEgH)g$?N&egI9Wtstav|SvelxHt=S{}8-bDY~ z_NI@VjGQUPf28PT|Gy4|aF);T|K8;nSBVU%B9c9sFbJ&!MmRx@NdgV}+ci4XGyD+g z>wtvs;ksXMzK{d7RemYl0;YJm?^s#EbtM2@f>JcY{c84-vrJX1sc{UJ?VeEn@cWL4JgM60Am`n_nK`_R z{Od6*E9=|~WVs*mK2}c}YM^aliB;Aes4XUAe&aa!PY}eHqvy4%x1QgVujW~#j(?YV zPhBYJ3Lp*cVE6!~koPM0$Hh~;(8ii;;=Xx)NxD2c{9`PxHa2NNMl;IOnXGja#g3%7 z;EV9xS)3Bwz?ORMJ6~&~c3`W+YQ%@L$y>SSMF?~54;?7X{9Q$q)je-bwg0?uZ!8+T zF{SE_XC~e>N%luU_>;c5?me7U;{{%x?~Lufdp~I|eh@~{o|g835a&n_wG4$@iBtxZ z0RuD=PzQ!^wtj5qS6DCzSdfNm0}0pwWSJ!1kdh!CSa~k;kb8tFsY>+olmHv3_*M+D z4N&EVGhhv{5q{GHqVb{5JITIbLQO{FBiX}|ec4zHU@H!u{@mUt>>mMBz@KcY&n&R) z&s5&{^P@D!!bFynU;}lDgB6Umy50Zw0#GN5Wwk(r=o<>MLRf1(>mjGY_v8D1ghs!G zBvS)`;*D!sczo#HhyZL|>Du~@VV^h(_~ayg48djP1Vd~qq+}|A4{7zj4s=Xkf;I?& zufm4DA1DRU-~nwfyV*~_V8}KO{c|*0n;227K>IKoxB_Vq5?p4+=SU>aP>dV+Acq|( zv`tKL2Z4*O8Q2?Z7mE<+EBIRbF?>}yK`i#oDMggMJEPkGgp&9%yJuvWqi-O6Kg+hi zh9PaRm6x4S$N!9+d(^nOUzjt`ez3O<$~n2K2?U*@Ir}!*wG(ko#Ax%D_egYHuzy@J z`!ZLmzy2&P_t^}b81eX-8EHsn_I2*nsL?Q1&9|?1oxtShE1@u zJO7z46}f*q6#=jcwx{e^sa;t=6nJ^R4tBbb00uUq(wbdnb-e@lKJf5L+m4Fd zt~UDI?ilw8+|Py$qudQA5m40eugSm4Ua4Cr!#`7nyl3H4eMi%P0&tB`atoVh=u(+8 z`QAUAA0aoBwf53>eWYRYzG6BQ8$^ujRka!c4x+uR5xA3Qkhumk67<2AD8{ZVBYS>ldv>Q?#i%#xtd3m_^ z4zEu!*CC>{+t^3xSVoGkYFr{xpeXx@FAuz;YO-`vw}AHQM%w zj}uVjD7h^0!j-0NmP{-F-(bqon^Bm$gH{Y*?1JOIV;H*r26L`cBg2hMA|321;|P49 z>gze<)PC8q&j+~J>~E2p}KJxXua<#Q~6t5#Cx!&6dRehvjkZ^OEL}M^v{JOQ{PZ z^}B&_v7S|0x{@sfn`oRDAyQ90z2oQSm(V@`=moYqz1p%2Kxa`a{fJD$OQYAlIWNI) zazDOH>inLop7u82-`7pIy7#Q`2~+7@zoH=UXZh1^2CR43t%T?N`k&#wMiDO`Vvp~M zi9FT9RF9t_&|2-!2Ao98AI@LfleV#nmUEDlY|DKro$jJH9_l0*NDX9Mi4NJy$F2r= zz0&c2@<^S0Jgk`hV>(C!E_kKNj%{=wLkR0QbZs%Jtxt9)8qya^aMaHtdrfZRaEquc&+ zuy?sMq;#^)339*ATqiT}I@icn1^d3fIDLVWNpY4=_x}~qceK!2go-kquatp=S1RNO z?Gv_=pSPFNk`HZW!8tUTmBDt_W~&86nsn)HB7(LXF5G?-55#x59e%3tb}y_{z4dz4}l*e8faS^mj&^_j**M=oo-MgCrWUu@`&$z9ka zS2g>nCTG;WG4{iv4?~9QpDUY_S;}^;|1k&NLaDW)6){D;TD(s1V*YpJ+a^08j()avC-*_TY>5X^|KEXU@6CE z5Ed+E-D@291x4f$D}QlfsyvrG*L^bzY0A7WkFqA#L3rQpt?u}=_o1%@efl%;9;Wrl zpRAr0C;<>g1euhd7`$!pu$8cbuc*@nEP$tcp;lyq=k%0)>t{-o$&FuC9z2#ua|UXZ zsbugGTUe0=uf`(kPcimrm3&Aa@_dPZ>16+s>W8kE+i)2*0QmL~Ni*5qx%aF8b`SU2 zY%5&f_dt+AUOkQAoHnS%8VICs0hO`ZH@Sn!*Mp|P#SIb$0S$&dytHlb9ubeB|E$>V z&x-z!C4tToT7r@?WML#WaxR!0Z{NUjpVSZood#)WcnnjVe;=1hoPFl2@}P%KpRCh$ zJT={rBo4&n9K&gKtT)5a>eZYA+@4>GweJosE-`~UYhL%t2jni{-7h7?Y1luW87g{1&cNgm zQyqB6Ig%02kO7xJ9pb#kM%WU>9AfH^S4A$5E2yL`6rHS1=NHNs={-$o%~E42=z|XV z@QamiPOP$setcd}@19io=!sU+^5*va-DvFfQGZ{l{<{!D_R}<~FDEw5Q(j6aD$4Fw zm^G;3PqHcO{SH$8AXevTCMklN1*oPy<8l4)6^=z$+40`D{UO1bl0S%uK^X**1N@59 z1p#G)QbHoBN)^sCihC*ddQT|Jr$&q*iCw;c)O$~Uc7in%6?vpeI!rh$4= zIE>xZV*K}^6oB!(W1M+UR~{l5(puSKRYXnZhc*{$^6~;L8<)vnC%qt%y-)SK)L8YS zFR=)WK>8iIMsr|6@u-R#r2b^|5(Y1n^1<&x3nlc$qW#6`4cY5#qXr*h_fesOr>ZIJ zCmkJY{3tvrd{o%HHziwB%9U>&=9L;zMi}z$(V%~3dcEC)e|{mMQM1=)>m5FCuXE5v z*&iPMo_3AhLECVHn-VPrAvR{rR)#s5HvUE{4v2r+ zqxxlNbQQECk5|t=oy?TYGf40_&@!k&g_hXtsgLMjIDa--1Xm3lr_e$cUdNBU?PQn!)$GHmhJaUos(z7~pjY%IIqO~XC_u(8RNZg2f2jw1u3e_8Z_%j{|m85-pujyVBtdQ{!Fp&`X3$Vx*05jiPNz_+s!96~AEwsZ@=s6S#4KdYaA z5nY;SNl$RT7TG)Jlr-9_8@Ek)^k6&{ak5WWHJ@*emwbEKvZi7A z9C7`~>(kK2XhN;m2d8Zv*{=-fBa;30fzWs0d;gD%Z@&O`v!(%?5!MZ!s}EYly3Oh= z_%Z2dPR}ah=2pX)6n7l8Yc+BhAzrW}yM;A}Xb`c1F~zLLIR(S_`FP-%k-gBRCz|YLV2}E|bCi61JV^U&_hXdq*C^5*BLc4*Sj-f zv%_ek(~ovUayf>zp5#-@hX-;A%!IQ-O#i7*8aqkEJUwO>*``Kwh0Z>u94<uKL*@*kbu;o(gbyq~ABUG3u0_@(q*xFxm`YsP!DuvDJjUqz43sR1nO}>DNcj z>d!)@rUawZtCE-VRG#LxmYfyh%1>Io<`ODW;0-=yTtt+q-biRw69QD;=5{Da4vlt4 zL!*R9aa7&$;CXdU1W8NCGT)!Ih^C`Sz)mz(AAMg zbz|5b#4?jPU28onbuehTTUe(i6aPfVqh!5#|97Sz&nzLz-K9Zg%LbS2)~%Qho*m5A z%!3OsAq2jl@Igi+`W`VoX#PP*2i?;~Q=Pjp(@FcoK)E9DEX*$-rRPVO2O}y(-T6_M z+iF>*U=If)!EqJbKavN388n})$$qH+5L#y;2$5WqeRXvVbC%(wdo9^nee73(oRU;( zkuAmEpz_NtgWoCbrJ-SfyIwKx2NHL~3#XI%)!#AKGFIqLNFG!+*9KNMhuyLEWT)?6 z33yfN>O~(<#%O|*LSQ*)I^8QZ53{~HBdC+NH2r#mf(P7dwc!wwFYxPadbaN1XaRO? znf@f}m2ME|-AnsEsNa6o62fQoW0L_Ei`98Fi3|)cuM7MFy6yL>DtuvR_E-i>7omEM zT@V*Y?c!OY*4vnH^j~BZ7o)5>l)>OLjI46yv@~ zj#Kz&L{GzuAis}{1yjk?tyxRQi+QnV7rnH+^jNHMhd4j0gH?SSLDRMqgn}MKT~@nv$hB zJP-n@$vGJz?%sxFGCReh6J$lTpzPyQ_vL5)Tm|bNeP#PH0!HoKRZW!1W^F@iYiUqF zW_ZV)cLn{=3@n=MFy;yW$oth${b>>9s}JeT$tpT}JHA9JWq*Nr0`)h`48;Sjv4=uA zqsCFCgnw*8y{j25b>*CTy`{4U%$F3IiEQP$`|%U*3Zm=+rGm9guFa3%)}S5u9dU%e zG~+f3bx@MzL6##HzCB9^xOSM8doBfTP9s025H8s2HPMaD1hlf=e>VaCnRMP#GuM8x z)J>%vFf;2Qfe<+nnt7;RwyQ#dUNl?2>wJbJc_Sj_YF^-M_7v+hi6~`YX!`!TPHe(x zm8~+CEolx zmV9dQ-|}mppIES}bEdtKh}=wB|M+3=8452~gQj;>_`WOk-INs;?u#jI?Cji-cKz2) z+c6dZi~3IExFh;~x!&4`^rfFF+xj z9wSQj|9Yy*n<(3qBV));`%D&VR}EzRq2rr0ld#+;Fg}SbHQBG`XwN{7)@?*&O++3` zfif#dHq>vn=LCY5FBk_;2Agn|5R=Vl9f2#pKD+$76!3o-2X7MVA~uLP@;BIutkbMM z1>SX8qH6A?s`zYuDv_D@&Y1od*DFW>(X$i|}02kL@`Gp2R}&zWhTk(kZf{n>7R07Y zNy@HU@E@W+x9cPj#BJN~e0m&OZqB=GnWeDgpGccWEI(_9@4PFmXt@Ynf<~vc;blA5 zRn+l+zIt7BD3@)UWjVmr)RQO{*hj7hn0$H>91&I`D0x~gt_#R~3+pWKV%a*guc zFA}chPNeTk^fJSnjjMlLe;2Plw7io**TxZ$*PHs#`xdVLwHz_a^FC&`Pi>e|uOl6U z>*{E8Txh&~ff*YO6uqBpY>k4G3fAK9s=_@Y*7H=>tD5tr<2incw>i6(@IQhOU+6Gz zNYK8y7_&Me^GI!hXvG458i&9JL*EZ8S5YVRIfE2SG*!+l;_5OfJ(?=Ao+^M%vPRt& zM1jNQ0x=A#^xHBE;_dZ~OuD_pSs@u3PN5?ji5+q5dZIU0KHPWd0%^+;&v$G&HQ;cI zJJON&sTG&GFQht{WGRkrz^AFRJtyYTBEjwCQgI}qfJlHTV)64TE=c&VzM{aF05C+n zMU%<{8XqJLREJ2@7_om2$fk*W6HXlc)!7vUx4HiAvMBoOsM+c%I4X73%?C83_!WLG$Eh7E;)+O25 z0GWpf_~Y*h=|)&C7uENSp8o&-*r{Lgx6vRZJz|fYmqaB_LES_d)>lr*lU_<-^ zH;LS732FDq9rc3S4ymh-Ci4BhS)DZjR8Z2Y4}($2-h%ehezpSu+$RLsD=Y$DJL?g> zY@(;f12$XRqAt`z?d>@NoGxCwRNr|j2~jP1YW=5cs_{gQ z{PqAlNpuA`1*&AE_ck4=@UK;x(n^ZWy9ct&&bbl^hAYsZlfqr}yT}9xpjF|@IXNQ2 zp1dr4;GkUJTQ+T4M1Qh0~?SVn{$Q+E4!n1RD&27DX5mci0QD zN$QQd!en5R^4&LF8VI9J$l_81_mpM}0;oLeo;Du|CrG8uL+z~+IILD-GMZ=rxJ@B% zV)rc*QA153mA-J@@$QUNStScPkid1H&(1~(*bzG19E@Uqx%wzUs>ggA1cSjbLYjMh zceGFoeTIJH)A3JaS%DdWackqc__WNncCqE{c^4%v)+jd7C9QJ%aEyYG>oLvC^W|$}`QxiSh;^PNkjZb1Y$6;`Jm=U=LNL=pwgG-LwJ-U=Z!B&o6WY-!N-M9C^ljQ;C zkh+Y3eD~d66x|XQUS4T70keUqM@bRUbnY(is-3}BSCWDWCNylxg2G4vO@jtP=h?T; z1m}@?;>-tdXu(%|L#dvP10Sn#H+;|UuDTAACaJp>ltk^FQzvi&qMV-asE^SF3w={W zK-~4l{P2NyS19L$=8u$2v1Yu*(KaN_9L4IHfOF@r_k+!4~4HOj>6i>YcmQLgCGhT(srYf`zqK-z852KUdd8-_n@Cw=#P_Y zkQ(CLGfKygu2WnV^Yj7l92C;L4<^E}qi36ZC))DMaK1KMqgzcb1Vtcm!& z`=Fc)A^;VgN2Sf_#M;ct-BHQR091cHa|&YG@~iZ;4U2r5c5w`FpY&8!|dZ={k<@V;3uQtxpU?UOA_tH4&%WqO+xe7re% z5=ApZf~|V}XxX9^3kh%J_ zvAUOEELjBkBYWl$Bfk2jfuB~mtz=pK=1+1k&^Kd=B5+QwzYu++wWG$~yj$YaXB%O5 z%98Xz^$fM~`ZxFm^~h7>HFxm^wzWr&lGobBYL3esiSNmW*!wfTQIC;j1vl7Zm88yrrJ;EBe534d%;^{(s=>pxwi3dMYa$QoqZ?-c&6LhHosZw3w)?^q&or}qlz`oG z+v?XeAtXJ#x;lO4+TV9Pk)$M*Ck_C6GN>BQ9|ae&5jfDXs19B;kxM>XZ*fK$R2l_HNI=CB!eX14=Vp9e)V(uVwFz z5wFOp6U}-&C8?=Js!BR4jAFUo@e;2_-4KJdT|R&~8hW;*#pL3S+Tp{z#4;tk9Ci%z z7P{4!NEdvZy94Lj3-I0D#%_|dW__l;d(zW0(xTsv#uu2s{JpdJ^SJ)EzbwKtB8^_R zRT=Luq1;5vAxZ={ds%#)Wr-z;MwwJUG(U6+>VV;IM^GbqspSyJO< zacc+n4JAyB?mD@RJjJ!M=IH7w33+vomXBoBh-$wE)P-oMZQVM~4Wq+X{B>g0nprD8 z(4rq$(d4eV^A>zI^x;0^KHKFxZU1!97ZS_IV-Tb#FKnJbMZVR@6F&)yqI0$H*?JU) zu_!ej&U0@wl^ju#uYH93<1+o|)PSZHy6DVOZ#-?~ z0<{CW({X~B9;_VZ612e6s#Z($y|!WOfzFghE&I??vq6M3vPP%eS_`SNyLaHKVSST! z!N`hi0&};ik$0)2UUkn{{oCV#>Ogu%21~~d>r>rJ z`IYF4B>>>sNeBxnKS)t0WQR*Vg#JEK%STn>#+ZHfQ|onlBf@9SIpd8EqUIGsTx#LZ!TJ^+#|K~!~nprW%Y%uZH^D!m7LZ<>vj8$ zNa+dJ?1SlUI>{?>HIw4qD7GXN^bU@LS+M}gA&>oYJiP<3_OSYPWjw!&Pm|9v44GV6 zY<(1*j!N9zXm>X0`ihDYY@B(X$(e;qED(0$XkugAL=xk|oVyDdSsb5=LOvX-XMg&0 zB(~%B)>Z&iDgnvn`F!|-2wNdpu+7TJf>l2I+08HFbEiLe!Tr833}?A%6p}&fu}tv#q|p#YviTT+>86D)mW5JMQ8SJOmxK--uVV4?l+vMdOxZCx+ z3yI#v0EN}TGTYH$L=*+R=G;53nyxjerU>ft>%spzg!5^k#ZOTmtJYJ zjv{ww4eWXS^7*5lBjs@fO3nz@df~nVs!Qj(t;^ zODGJ3+3fn!B@}?Un?`axtUs%c+EUhNDzE1OBOT@mzCa_*{284sx-&OE;Bmh&C|8Xe zp&_i}@WnONT4F%W#C+>$Fh3LVZV_ZptbgxE$H=Y}&LavZ;x;zvqU@dq)`&vAYP=Zu zvzZlIb}4?TSbHeF@-67W%pb+!o}u=#oLi`wn!*q%CXrb*_)mlNC0T#F}g zN>K+zK-3S;SI;awqAbsRh(kze(JmHsqDh!I#-3SAtF|p*nLx01IQT^;%jF z=g%TN%-RUzhX+>k840nBVob?f`-4egF)lL&F+ZW1TB9amh-hqmx)EFe@tT@5pw_*z zmJ!J-3Fs^Y+w#?j>ZC8UKXpb@N9qh{T*Kt)6r~x@vH&$LtgW0@H=7rZr(~=vCpF4p zkU%KG&^fq<;q->*qpcp*WNiI>J9gqud17$qP*?4BLspJ+PrzrkQzHn>VOc(0mBGRZ zgs3(|uI<`}vw4wrnY)CtW{Kc5RW2cg^6ykx0nR;^Viohr??z}1*F+BgA}jMeHEs}B zR^3DXCM4;FI~Ko*3%BuK-UI(^>(KeH$8phvHn|@ju7)h~F7SV+5MCsC-@YR;AI+}} z1fPsKg-+CO6WB|-t<;)yB-!XC7d#gg!T9p;j;-JKeqZStX(Pbgxo>Q@-U4q80GRI# zU*x5Uii@(&@x!MDQTXhJ-Pv_|dc3n$7G77cHS4)Af8TwBBA3B9lFf+-4r#V(=1FNk zhByr)lQr~f@|;xMKBShLL6LkBEBrGUL(`=02>i6&d`O`IWmRaN3ajo`cY=9BLY%~g zjZxFXkIicYd)AJI-%&C--PRhXT({%#-q^2iZt85nA|=|)jZSLQP7>;>DM*kx2=)h5 zjvc!ak{#3z!{5F*j4Tmjc2<@iJGc>UCv`FJ&rU-Cq3z94>O|9KOAJIb-1v?h1g(VA z!E|?>_b*#Se?`WAq`GM^o`IwmMRE%u0E^b@>q&CXV&Njgl!W4;Z_XV(w_FZvykgp| zZcRHIzwc~TCe5Y>nnHf$m6Gqkfy`(U=CI9=I{L4ZD1yFW>HUs9-Y<-w3xv7Eg#M1H z>=pNwQw(Wi|DGA#*vCq*f%Fx8E0r>+h~M7sE$g+XhN3iMUsMjzkXN(qJX^cWVwsui zVux1`O(LZ@Zql>fd0S3#fpw2yZ25$bxRMx5aaoZ8;sq92;|&c3G0HXlkxffO(caaJ zxN(|@4#rn?S8KYIpzY?@8)`?jC!wrz0mwlreU{<$Ii})CJ#JCD$|J_@VY<34)E25& zCgU`Tl02L)+xrt-P2-`#acAf3;jJ#g$Pf07)81u`?O}Kpd5+dm$ly1T6&LD`U z2z~a_`mA-6M(IJ5kpdF)GqRs4xyI>)*suqDOa3s7PW&VzCO9ZFfhQvtJWBE*1k_|u zeW@sM&FFPL56i$%WfYfRTRyygw&r`sbKbM}64L`;xI%8dF7ed%OW*TdI^wnd=^tyf z`0*!g`%+4{X-Kl)+7d}!Qk3)l@nNz4?9Vu?Z=srPYdc)zJ80Xi&s1%}Y)hJ(eHdddka;r%1Z%YI<9%7|*nxoaX7x)nXn7N*NX^}gqepKvOfSN|lvzy@i z+!GsR8Hewc!m-M510DfyK2{Lg$vWDCakV;lg=kJhe#Bc2Iz9ru|;ghtm)-3>{y0Q%jpAFsLx+MDo*zUcZ59? zd??7u$}?@M?j)SPfNV!Y&%0}vaKtEB5lBoDkiLPn$k0KX&yNx(@LA^CcA;i+3VX4G z>sCLC$Hx@syH1358NI!JWJzo(Ur+PE9eCz7*kDR$`$I*eAUcBPcGM^Vg^TAs>G9Ns z24XsbL&oUlM+bf42j0WYZL(Ebg{)DCybg2oPhzA-p}8IAigC@jbaio=l{*tZ-;uo9 zJFuJ?{+y|e-XFz)p?Em@zwG>x*S(Bm5FezM$EjrhXZw!dKsye9}g+9%2S6;y!L z9{JnDj2uFrf;T^Vs>_SYXsI>j{Y)S)(_i2{+J&IeOi6mse7$0&KO7`w>8y}nEDg}< zkrcGxp}&cEJa5ev2<7YZ`4zL9cYbPR@XRZN5TIgb=DRc-QYIU`t4eK(Yf9j|CzeF) zVe52Rfm>$!%xBxB%f?M0;4h$|BdAZJ1_ea(aCP8do^dj!iuaBTJI~v$jTn_4 zww2exGIYeKVTj862~WX7v9HLU|C_~?r421bYX|r7@59L^HI#yOU`Oru?|aS7mryF6 z9odSaNO;`69q<7hDvzv8m2N>kDEdp?O%mO!(5kVUguls0cTO$ybb-yi5+Nn8MKcd? zsfIkn`fMr`-;sNT3dCcZF+!4%B?|YBqmy!P-n1xwRHgW>DK3|QZwxQwA*+;;3$>=3 zZ*{JBAl6kMg3k53jHiuH?&CtaA(sT^e_|;R;j^=Q^B0iJnIh0+s{5)HYIsI@EIWpT zUgWJ3`^7E4G7tUQEut#w=iSS2^zm7-Ic-}lUz#A}tLU&P@Hl-*n{aQ;^x$829OrR4 z@9vP2Tv*TP#A^NlOT^=OdP~pG$Nl)2f8jB4h!l2-&wg$tSi=iTfBzV+ASbb2&o`d~ z!%v5HDXEa5+n?_>m_JUla&k5IF^Q9#xP@VTYp$l~qG`?P(8_|H*}{Y*wOzOo+mXL( z-E_ZuOp5~$(r#usd>t=#&kn^Pb~p$FPozE^1WX|}I~jefYV=O+R!U9K7+D5;Y%{v| z1ts&6fARaKyYlifQ}5|zHRur|^F3&Nye`f>>@^3c?8U&p!nSV$?V%&{d3>UHBlZ=U zl1cV?koANmODwg3zU7WP&LM#pb@Xo6k#Fx!z0EpOF6JPss-3kFUsuK5P228ZFYKYb zd`InD)xH5u@tx*w|3i0~jPd#evW923;rab0jcH)&dSPbPYd8L>_3E_c!EsidXV=7u z3^}Xh6u;`+dnWig1(N84tj2vG>S}OQgH1Ousl{?78td&n0Q`=)*)bN}ZDb`Ojy7pG{Mj8H$P{?3wIJvQYSnu8IR`6mO6 zHI(NK3g4{(pIS$v?~3NW{Yv1G8gle7wq7Emi6Ho| zsJ7IjxH?iD`z9wU8YFF^|5nkQPIm(9?r{Py)2IF{u@9ReB4!wcn#w*mq}@(sa8~-u zmac7@Tyke8G9$yDukBb4V zHPLx&blOlfbYRp5NRdFRp|m(fFCfk@kbLMsJV`1KA-1J}1qK%F73`O{4Ws)~)3)ZdBPFetjHl>r@Baa)jDYJC=z*R#EnE;mD3|F9p%A@2!HRE%fO_ zkhgp46ipE|j7Z%%;*yIkj?O0QTE8weHCY|wz+aKFA9F=}m!z(?l#p7Vt!Q2F?d`dG zf$atO2x930JfKPelwkul#K|39`R(f@fQJs{B<(X5CFJ6i(pqtyFpa=Q4toPFEk zZ&7zHRQES7Ir+~U6~SSgfCltpp$I7+HIg=8CD;(p$8JKE7`fO+f_jtX5{xEs0Q4h(w0 zFkMvj!3w{0{%vpSTO`(P4Xt(9>itw;1fn_Z?*9(irB76EmL7`Fk8psUtDzjpdh!I zwmq0u?nYHG!(&61_|&OILG0hfYuCp zY0Z9A0dof3w7;LK3WGgC?=?4T7iI5TzPof(mB)CqOVdR_=4+IR-9Na4B;VO?@Ugzk?17|rD3g{+1bN4pfn%M=GSS7$Ak2X2I1jWhd2HWtkjGRdCV7aEgNr zu-9bydls$5=&pHFgU4ZY;0cj_K?%y=)Bj^C1`I8lI?hZEMFOlP=%h7!b>c5nA&rHb z4C<4xZwkoZ;3)?K1Ox=+=il9zn3T!kp612XDw3AV{SX6YG#}y@7Gw36E zvNt_Y;XH?86`E?oHkfCFd)yHP+Ay%y#Ho(0n*^O1lmVw%2tZ#cnu$=P!f6(rBxonD z?kcdcvGMnxI_ska=`55g^pTYxBDA+OBb$&4xFz5ZB_3Xt`$lvlU@yz}5& z+pz7#QTL8?FS6%{&;I=OnNy<{oEf?HNVs>`=N~{oK)~I*caxHmp8nJqp1SBMDk`e& zKx)Ru#%Ai&sS6h9Uts(hQWueliHXk625vo7l{%WwS5QVqhNGh+%d!;@^oqzA%}_oaTAu&sM{xYALgJO9lsp3Qo`ZT%uZ`*LJTf^u}8J8!C6ktD}zQlb}*N z`$Z|)EEtTCQw2%LOT|Ql5pwjV3bHl~k-??*Do6nK(wC%y1YpV3$%A%xVJ7(hu$No|Kg2qAo^$QJ+r002ov JPDHLkV1g4){M`Tm literal 0 HcmV?d00001 diff --git a/doc/src/JPG/lammps-gui-running.png b/doc/src/JPG/lammps-gui-running.png new file mode 100644 index 0000000000000000000000000000000000000000..7df06156a4448566bedc2a799bcee64645a7e2d5 GIT binary patch literal 107209 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 IM6N<$f?;zW_W%F@ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index baa18c5e75..a259e25c51 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -207,6 +207,11 @@ void CodeEditor::contextMenuEvent(QContextMenuEvent *event) connect(action2, &QAction::triggered, this, &CodeEditor::open_help); } } + auto action3 = menu->addAction(QString("LAMMPS Manual")); + action3->setIcon(QIcon(":/help-browser.png")); + action3->setData(QString()); + connect(action3, &QAction::triggered, this, &CodeEditor::open_help); + menu->exec(event->globalPos()); delete menu; } diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index caf65ffc78..bbcd6eb7f7 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -8,6 +8,9 @@ system-help.png + + help-browser.png + gtk-zoom-in.png From f53991c107bb0c8eedd241a9e9cacb44f6539f5a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 17:37:30 -0400 Subject: [PATCH 0237/1002] include more icons link to Howto doc --- tools/lammps-gui/document-new.png | Bin 0 -> 2459 bytes tools/lammps-gui/document-open-recent.png | Bin 0 -> 4690 bytes tools/lammps-gui/document-open.png | Bin 0 -> 2237 bytes tools/lammps-gui/document-save-as.png | Bin 0 -> 3181 bytes tools/lammps-gui/document-save.png | Bin 0 -> 3469 bytes tools/lammps-gui/help-browser.png | Bin 0 -> 5073 bytes tools/lammps-gui/lammps-logo.png | Bin 0 -> 68913 bytes tools/lammps-gui/lammpsgui.cpp | 6 +++ tools/lammps-gui/lammpsgui.h | 1 + tools/lammps-gui/lammpsgui.qrc | 56 ++++++++-------------- tools/lammps-gui/lammpsgui.ui | 29 +++++++++++ 11 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 tools/lammps-gui/document-new.png create mode 100644 tools/lammps-gui/document-open-recent.png create mode 100644 tools/lammps-gui/document-open.png create mode 100644 tools/lammps-gui/document-save-as.png create mode 100644 tools/lammps-gui/document-save.png create mode 100644 tools/lammps-gui/help-browser.png create mode 100644 tools/lammps-gui/lammps-logo.png diff --git a/tools/lammps-gui/document-new.png b/tools/lammps-gui/document-new.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf38e87e001fa8724e83793547955782a5f7f77 GIT binary patch literal 2459 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 LNkvXXu0mjf8=)PIH6d0000NbVXQnL3MO! zZ*l-kVQ_CCLt$)TZDDR?a%E}Xks2xh000V>IRB3Hx05UKzIV~|U zEiy94!OSKA01JglL_t(&-ql)JY+ThD{_ZmSjF+*;b{r>8>`7ufBshkoCShM9QfMh4 zmI9SfQ9)F+R6^==pLnR$0umAw6^RO(Cj?0#YRCp5H6a8{(gqUSiDMI+#Ov5&&wiKw z|G9S-j1xQd(5hECKKI0J2c*}02ZW6=yqlCWg@?`!`pcD=U)1N{ToyyXVC2+t#9!;lFUk}Qj!y@f1WFnMF- zkxMh?d=(y#2dbio=wKKIOlrEJQ*R=bNu#H`3su!sc<`==@#)bHb5RU%kRvj&YAMm+T(VjB;e;kPWpy! z^_r#$m+LR_i?!yHr_IR#!^5Gd&~%-MSI8wg1R+_%xlbmONF)*jiOWMaIu*s#bQEra zk=vbjt(K%Mi8B*CG-&UlFd*5I&S>cz!P#EGh<;0^lBf!WFjwR(EiEJIml3mZAqY$Q zI`x(YbRs^TP76Vp#bW@1SjMMh$^!SYjrlAy=ljp&z=8d!TUvM7&3d}K(bLm~hQ|#K+U*`wD!7Vr6iowA_q%#?Mu8H56V7}L=W$3wKzds)h$n(*FY->O;V?)QxZeVh* zwe8Nk;Pv{1`(#OHG$uH0H%;I_Lk!F8o~ac9LJ)40 zT_tbA%nVKUeu|OwIk=?&HkUks5=RwMsT3576P9Nyk{4o_u*7;Jop|faa|ky!V(rQ> zCa1da*4g*5Qoa%X(Z``kY7Rmcp3}K8UrWhGmehvO?R*~tlSi<+aTV4DR$@99!@=I? zaaHUw#A0z`KoxryhXE0=Ah7w_gnJ=(&xEuE@`$K^Z zSP&{?z+Gmd!+Z(OKnxqhKf*H422?m#pilZ7(n>P&&cm3VUMe)tP@OBT%-aTp28fu` zV;_rDV!3Yv4h_CehL}Q={|>BQy$NOY65crTG(;${U0}`?QZvZCcStXyVud2!=XpGT zPyY+(i+(9$L&WGK4a5ZD>@cuc4Zuz%SQ=@vfqM5wL}LRO^q!y%fKP_sL{r&KSR335 zm*Pjj-;Lv)|F$DE%~R}jTIOKrL~C0U>dKqY;BCiOem>@yP zP;3pLIDw3N_9|cRj=^X@1@9IgR2OZNR?!_jjEVFhuB(0wJ~apr{bt1oNqCZM3US?* zcGBE>gq&e?T>Kk`lf6)66;*+H$hr&1k9T5XZxcM^)|^hK&^n6Yg)HKA{N|ZwkfM~K z3Y>qX+m?-afd)h)QFI?JBj0w_h~&1es?)Sp5+vo zd(n3yg7wPdSXRCUp{fuijuj&1X6+e^*MK3^pxJKG;c(!US6;OyDx1(V+KI8@6S%g0 z9Xt*{B8dw)KCugt%mCUd?h{083O#_66MN7f>l7ZX!dnNAREDGfJb|emH|pYdBd(Y@ zJAMYOt*s;^2OO$XXm9au6sB;8obGb!>nrhE6;`Mc(dZP?-K~%u6F4w>6kBdzkJ>;O z!|{HcPkf2!&_$tvgF`Rd3_DTftw(ZN!~T7rqI_~aHu-Nu#+4EAqO7cp;>1!!C!;C68frlI#Cfud zBe?0#YbY*MB9qXuZ}$<5o^ZqLZ9vM1(Tg!FijuESBom?-^80-vnG+c)^+l@(geMZj zYluX~@w;cA#nA9Y+9Y%Nm51}USGUohws{=Eoct0MWg&u4#?k)^lSHV4Naz z! zjD<5m8Km_38-K~!082_}z|d#aK!0C9e*W;I`1|%Z(bd&8>zWTf@DSeJ@ebPCuM>jE z*TWfcP#`p*S&DM{HzS4d^qBw`ol?D#=Uz>WQZ)I3;I4 zah{&CQWK)blDw5h@V!HIhu!_wBBhDHs z_whswd-v_ZsncJJ$U57_L9eB`MVxRHN}o?6*q8-`bjxcM9IGg7jzpSaKQm`#Uye#^EIooxB#7E~_P99>+D;USqpRyGd-sig2F{6Q|3Wm%fdEzIVAj z*7^mww@GzU%SKIOCZyC^YGgq?S9+qRmzeq{qN;6M8{0$_&p6|F>f=#&-mokPsB=G8L6rw2xp9P@Ades zb4|vx2>D!faqX<+z8NTT_TDw)c~u_C%gb{zGhW3hKGlR1fP29$shFlaJXSL0)arG4e&?mlno=@)_{3AFO=1W zN|K4}-n}cR(?XLIla#ZEbN@XcdnjJ;Coea%a5UTV@7}}A7f?HQ?tsr{6;2cgBQ}lF zrH;O(tgoGce-E`1uh$!-`m}`JQ3@6)SV)^wqS_Vw!1h_dw@x+^CC4z%pBC7M6lx(0 zp+W{`GU2qFI^zIL`T-GS&M;PHGi|r;KRQj00000NkvXXu0mjfO^NR3 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/document-save.png b/tools/lammps-gui/document-save.png new file mode 100644 index 0000000000000000000000000000000000000000..c7745e0abcc9c445427964f47deff599b8673b72 GIT binary patch literal 3469 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/help-browser.png b/tools/lammps-gui/help-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..f3edf2c430bdfaebd9565afc32e692b3a68dd3fe GIT binary patch literal 5073 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

2?;VM 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 z?p#%OactionImage, &QAction::triggered, this, &LammpsGui::render_image); connect(ui->actionAbout_LAMMPS_GUI, &QAction::triggered, this, &LammpsGui::about); connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); + connect(ui->actionLAMMPS_GUI_Howto, &QAction::triggered, this, &LammpsGui::howto); connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); connect(ui->actionPreferences, &QAction::triggered, this, &LammpsGui::preferences); connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); @@ -895,6 +896,11 @@ void LammpsGui::manual() QDesktopServices::openUrl(QUrl("https://docs.lammps.org/")); } +void LammpsGui::howto() +{ + QDesktopServices::openUrl(QUrl("https://docs.lammps.org/Howto_lammps_gui.html")); +} + void LammpsGui::defaults() { QSettings settings; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index f77ebcbbb9..d6e9ceb086 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -85,6 +85,7 @@ private slots: void about(); void help(); void manual(); + void howto(); void logupdate(); void modified(); void preferences(); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index bbcd6eb7f7..36b1ca1c2c 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -1,38 +1,20 @@ - - - lammps-icon-128x128.png - - - help_index.table - - - system-help.png - - - help-browser.png - - - gtk-zoom-in.png - - - gtk-zoom-out.png - - - gtk-zoom-fit.png - - - edit-delete.png - - - object-rotate-right.png - - - object-rotate-left.png - - - gtk-go-up.png - - - gtk-go-down.png - + + + lammps-icon-128x128.png + help_index.table + system-help.png + help-browser.png + gtk-zoom-in.png + gtk-zoom-out.png + gtk-zoom-fit.png + edit-delete.png + object-rotate-right.png + object-rotate-left.png + gtk-go-up.png + gtk-go-down.png + document-save-as.png + document-open-recent.png + document-open.png + document-new.png + diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index a062309fc4..fa1b3279d4 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -80,6 +80,7 @@ + @@ -395,26 +396,42 @@ + + + &1. + + + &2. + + + &3. + + + &4. + + + :/document-open-recent.png:/document-open-recent.png + &5. @@ -443,6 +460,18 @@ Ctrl+Shift+V + + + + :/system-help.png:/system-help.png + + + LAMMPS GUI Howto + + + Ctrl+Shift+G + + From 619623f0f6e9b915d1cf4314dd98bf741aeaac3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 13 Aug 2023 21:23:51 -0400 Subject: [PATCH 0238/1002] more icons --- tools/lammps-gui/application-exit.png | Bin 0 -> 2633 bytes tools/lammps-gui/document-revert.png | Bin 0 -> 3011 bytes tools/lammps-gui/edit-copy.png | Bin 0 -> 1295 bytes tools/lammps-gui/edit-cut.png | Bin 0 -> 2185 bytes tools/lammps-gui/edit-paste.png | Bin 0 -> 1913 bytes tools/lammps-gui/edit-redo.png | Bin 0 -> 2222 bytes tools/lammps-gui/edit-undo.png | Bin 0 -> 2128 bytes tools/lammps-gui/emblem-default.png | Bin 0 -> 3591 bytes tools/lammps-gui/emblem-photos.png | Bin 0 -> 4942 bytes tools/lammps-gui/help-about.png | Bin 0 -> 2978 bytes tools/lammps-gui/help-faq.png | Bin 0 -> 2421 bytes tools/lammps-gui/lammpsgui.qrc | 18 +++ tools/lammps-gui/lammpsgui.ui | 132 ++++-------------- tools/lammps-gui/preferences-desktop-font.png | Bin 0 -> 2413 bytes .../preferences-desktop-personal.png | Bin 0 -> 2180 bytes tools/lammps-gui/preferences-desktop.png | Bin 0 -> 2083 bytes tools/lammps-gui/preferences.cpp | 9 +- tools/lammps-gui/process-stop.png | Bin 0 -> 2287 bytes tools/lammps-gui/utilities-terminal.png | Bin 0 -> 2603 bytes tools/lammps-gui/x-office-drawing.png | Bin 0 -> 2998 bytes 20 files changed, 48 insertions(+), 111 deletions(-) create mode 100644 tools/lammps-gui/application-exit.png create mode 100644 tools/lammps-gui/document-revert.png create mode 100644 tools/lammps-gui/edit-copy.png create mode 100644 tools/lammps-gui/edit-cut.png create mode 100644 tools/lammps-gui/edit-paste.png create mode 100644 tools/lammps-gui/edit-redo.png create mode 100644 tools/lammps-gui/edit-undo.png create mode 100644 tools/lammps-gui/emblem-default.png create mode 100644 tools/lammps-gui/emblem-photos.png create mode 100644 tools/lammps-gui/help-about.png create mode 100644 tools/lammps-gui/help-faq.png create mode 100644 tools/lammps-gui/preferences-desktop-font.png create mode 100644 tools/lammps-gui/preferences-desktop-personal.png create mode 100644 tools/lammps-gui/preferences-desktop.png create mode 100644 tools/lammps-gui/process-stop.png create mode 100644 tools/lammps-gui/utilities-terminal.png create mode 100644 tools/lammps-gui/x-office-drawing.png diff --git a/tools/lammps-gui/application-exit.png b/tools/lammps-gui/application-exit.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0cd61bd36b7079449a4db87eacaa368667c2a8 GIT binary patch literal 2633 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 FV1l{HLSg^_ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-cut.png b/tools/lammps-gui/edit-cut.png new file mode 100644 index 0000000000000000000000000000000000000000..804d0cdb436319edc933dd54b76fea63de539535 GIT binary patch literal 2185 zcmV;42zK|0P)G^O1H9dMgU#9$P^smIBMLyBtGv|euz}Yz47|^aSvXEvc>R&+lcP9PUH!>8WzRD_1a`Xx z)Ee$~L;9u7kyP$S}^*CyB0waUpHwL%-&Hpqt6lmVhop*EM7sbuRS3LrZ>doia{jI`r7 zpv8JO#N}2Y3mupR>_~l|e)Qxk@(a~M^xf{k2kYBgZE)kpb^Hb>D`(^=fdC3FT{?Ha z8;f}=qEyh71(R9tHyBEO5~Lfa$LLQ`^rzNR#yUG3kXNAcDHK^7W&{A8XE>GI(~L#f z=CA~#>ac#A1#MoROeXtkfi}o}*WiEva*8^qPnC@z_YcnKaay6s{=T+2-`9oF6go<% zpeYOb(qs4Y3e+Fh)zt{mp90z0)&kYHZw9a{wI4WeAa2GlG&yRS{_MGvqrtvjD{y>p z;2vDP`XLk)<_0MG1N}XM^VGG7`TS}+>*P+wmo z9M~v3w&ptM?QW+o<-?=+A7|B-lH;UnbMrX9)oum5tpPr~auE&|7Yfc(W{CGxz*WJX zUt3mI7B%bc#0oC^9i8q7PmbzzhoS2FM^O2X3aGyIPdx9~;ck63o_Q1=EbNuD_EL|B zwQ`fWbW~fE2Y$aFhK5}5{*i;2l_oqcD0#eoZkyG=N*sFYt!Vr(^;cGY0994jz-qJL zN38&~Mfsq~%Q-YFepV@CEWyawduFk?9iQVU69&d6@fpA;=rZ^D>9%$L{An!Y5;$_S z7%pBs2ZwiTbJ2Wg9j%`r{g9pa$ZpsH;3kVrB2mMY<;zFyTeiSpX66HNq4e(D34cvY zgn#|v_d@ZWI#mWI{$hZe@4f@&2?@fyYnl!T*&%ymm+XfX07k32YSpSSpIi<%R<87) zh>i7|qoc=A#?2DR`-BC+ ziKwWG#*G`HY27+FAr{x5x@cGSkX z<4(+i32O!^6!nn)x5zHpr+vZ#z$6wsdtQANt}a61v;(BU(5RSR3A;~Ts%qw%2!YlQJ%u_W}0u>umP|E^dg8Kqim*Npwm5Mm+aF% zVF7>}z5Dm%}Tlk0+fX)i%^!L zEK_5Y&nG4Ew5~oq9nQtY`N|{`zGA_Gk^0nBAiG!4KJ6100D7W;)emGV7tZnE?Ot(qn@CTcIch#;yk~Nu@s`+69<5Q z^RgJrKoH)KpM7@1{>m%Rw`UL7UVa%W)6>UFMWVj#jBUkrD^b!=lBQFLfMhVX3D@<~ zdeS3(vP1UJdEeWNy~%cwIkI&=T1SZqOH$2Kyy6X(B% zl8&;30HefA6>=ye$=_w{n>mbWbz*TN>EqLZ^eRW?jA{Cm!RRLqKooL{qC;tZ24xk> z>d^C<&^S3NdD8k%^f--w;!vB63kgM9GQBm1Q-AK?taAY700iaVm+Qh7q7l(+00000 LNkvXXu0mjfh=({C literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-paste.png b/tools/lammps-gui/edit-paste.png new file mode 100644 index 0000000000000000000000000000000000000000..65ac12ed87b8d7c17526a7b0f0234f6f2bb446b3 GIT binary patch literal 1913 zcmV-<2Zs2GP)gn+?6As7aOaYp6%&wWdbQE zrheSMb-w5OJwNK!h?((T-rRfIdLSBig0pAOE>iNRos%zyOB!|)P&HEn70jFQxNplh zPM$pZpM3*BBLCP_ZR)NlDwn_j2{*vZkn9|2G#g)yseJ<=>2yxqy1Y`Ft5s@;G*aUL8>^8?A zes-c(Z%;o6eBDeJ)1ihcs2Oi13vA4OoI5`K8CtFQx(};XYdrn*la$wA;iJ*3I420{ z^9@79T}18My6Jv==Qp2;$7Z13tUg$o|G?=FE*zbz)aKF$nc>y=%WEyRT6I4Exl`0< z>I~yd5#h`CKfn`D{EB~GIl|q`bJV9IQZk{ry}o$qwZEQj__qMQKQ;r;|KOfC7LMMz zD9JiLUQe@$S6;j{%SPp9?z{I3l*?uIq685^z31Gszh~_qFLM9!2Bnfi1WL7ee5uZ> zFZ}M}T@U^7$k+@dzOz`Fo+bYG8^Qa~NtBJP2Az6~=l^sLMo_U~#M|4%jcww#XJ)Db zfRERy-LQa9+KUqjVpUD8&Oh9Yn`&2i?&7~#d;Lw!Y==D^NB$bcF_`j+8@Di<=|g9z zS0)6&lXtNQl%ogBBtj7=IiXT65k-=U%E%>&2{K^lH9=Z(j_Fzj8`}T20}Ik+BR{{{BpFb}REvgM zQ3}J0W&pH4Y^I9(i2?Avpc~$~V{It|lai44-ApoqN=8L6VF}qVfoc;2WTum2zz-v# zp)I@qMI-I8CKm%)rrdnOWhpCr(Z>uHCPH^UI$AqX5u7ODG%K?zF>iwL6chqL!v+4cF6qifS6X8iF_* zfAfcL!F!c4)9CQ-@S0W;&m%NKHYWCz}|mmLcAfDj|cj@=fVF>(xq zw6~`qPQ8`=F3Tic!waXDhX0Yxw|oGC6a;Q!Y_Jcxm%>1}|N> zkbZy=7g$LDN?;;e*6K3UH{bE)5Rlk~6jz!at`6te3uAUzip_HklB#Dzj+ zIA@p|njK?^35F3xQ2^j_394B967LZa*=aF25)nuGt*jIPMd4V|%9vHo;Xq^z2(Y@k zintOkGtfDl6C8m7=UDmJO3I9Ly_6anI}3#{I3*GhpOVu95(VSSKn4#|Mup?LKvTnd^E=`|-KF~ri3Y&oY?fi{qc2pNdX+ZlkVu-AcuFTdV- zYW}6?zI4m+PgQ0Q9Nu02p)E)*C*9ayT3*8C^q(C|?zr2HiXoxx&$?F&y-?EW2ry0W z1EOY<=nvwIjd|e6FaE5TuWrBj!YAK({Pw9RnI4pc%pmd5N+7xYkwOsW^{k|Af>T9Z zYKBP~48p)xZDf;YS|&nwd$r z2o_eU`&X_*%@}-cYin!Y35K`w@*&GKgVHF&uO4R7%VMY+oFgMTJu@(KZY!vw0kq9b z3jhWcvJp1d$J|5|l+(WT*8+L}pFQ3OFy8iGcI;2Rl5`cW00000NkvXXu0mjfVSR>F literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-redo.png b/tools/lammps-gui/edit-redo.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf329ad2369545207c9959632e5f97e88b59181 GIT binary patch literal 2222 zcmV;f2vPTmP)uP?9xgJTWW_}H1*dB6T)W4zwwFqpNF z_(?zQXm{o}pU=E`^WMB=M1%)9_)r7fYdjPf>UbzH)bUVYsN;bbP=bBJ@BEqB6q~jj zoUIVVmRTenfZY1YkIf@@Rgj2+nyYrI+u!_Z1C=!$rE5kDx!hmTD+ivS+@0!|-+K?y z1FaWS_{VoD^Iy$>%Iff5rWW%8x%G0oV%AWH)k^!$yh*Fx)rtlx5!60F;M*2Xd6KtT zb!hiCp-Z-*&D(&>MinxXp2Twtx2EfsmcRCW7Ja8RgWQRkK5|$r+O1aT)X|$=bQR5J z1r{c)!Ltju3`io#0#se$E`&t}blL8co$?Cmbr%*)T8(EiH{Y>Da0M819z`rS|#Cw^`J!N(NQHHca19T2pZHzombLjfcaOUH&a$ zwc?`ZIOZkg;)nBpH%kcZi(9n>3-$}m+V@$sZfW_CrF}O&EAeWB1Wl9X4U)>{(B({r9`Az?yd=Vx(d$B0?Gw(ilS;fU$!ilQn%cGE-OL8?*MN z5)k?cQc|$ky&p zt0mwSyI-O4Fr&%pXa`wha}tPZ+Wj zMc4KsW5OCZst%=BHMrgY@S|RVwI4AJ&~|@6>qWbwFq~}LjiJ8keM2x65y~j+Dcp+6 zI+w$=85@B<)9H>zb<3kE3umUpE3#jIyhdi4`rH5&bjs4N6gY65IL94fbi4dPSCkX>ldo$!(o5Ppm; z8HLUQI9#WSxMJkw{gkd;|Gm2fn9Q6QpUgU~R#bNu`W1;(#voc9kFys`QGKZjEv+r^ z8s}BaQr(~e$o4wFwhu=O5(-3D*#@DVAIGv>q@WAlB0wggh)EgC7@`fwQhk zloppcgkk37ZMr=?&~pnhi=C`*Xu#Nsao|k&?9ggfqr5X8&#&5y!m5KSiq9R-x>!@` zUi`A=1|v7X++frQVr~#~Lr6DBxRo}&@xbfk(?iK(`yHjHo?E(f2@I_Z*Q_Q)Dlr(Y z#-p^vi4up)p~^dl?-j5lKT==oCP5mDR7au1@;$zy^Dvst^GHcpj_DKTAdHUyfrFC- zF#zBo0>A+Q3y_3*PleyfY*EJkhD+`p`##NkVfxGz9zSLl>gwy@IR8Ifs%bo_!CXEN zc%aX0H2e43wh2iI8?&<)p}Ol7EV^m8ZD)X+2yVvUCNMWKYUD(2NzBa!cYDd}9@ZJ! z_=_1O{?AANS$|OHGs(6QpfiSQ5II}8cZYLRfYIzW(K{DvVdihByymg7i5F(Zk4r(l z?!2{mpKZ=II1cD7Aw>{$F6umF?-S⋘e#i-WS4>jdm3ya6oL!? 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/help-faq.png b/tools/lammps-gui/help-faq.png new file mode 100644 index 0000000000000000000000000000000000000000..1d57544fcfda07203ab62a1bb0f0bc87e716c83b GIT binary patch literal 2421 zcmV-*35xcKP)_O?|2fWbkhH`5;0jjp)m)ZtayBgX>V`;falG7tTyf-Cz#KgSOdvL9B;0b>_RC#?6=^7OiutvlJE`& z9}Wk{9RN~tm%UV~bvUjzLTZwckr4u&<|Mo}5{Zzjj;nQ|m8)RclGkJa9C(2W##-OO z?5TD#J1U$^8R=l^|JlRz-1DZq=F?9r4|jESHVzIB<{Wf74G#~J&dys6Rx8Ws0%+-e z$dsJ9$((caFxOr8WL1CF!xWUa$Uq2~e9eJF_L^8MMuI{AxC4YjeuDS5+W2D$0IV44 zBnOq^co}iY5Y8UYsB;#6znr_{9lR>Mx0y3GCID~{KZ|-EdYN67PIv=1mD2h2d8{1S z06bnV`KzOv!a#QNC#=S;wJ9<-mC!FhXx?5Ti3h2Oc4Z+X?4%*OW8&b zKugy{VyI~+UxHICQwo!;6+-Gi#)|NR+t8$BuszI{(FIu23j= zuD?G@w2~TK{W~{pGQSdS&^$oTEMqh&xA%#q5I*7WTO$h+I-9AIG3h(0duLUSO zWbcD&LW9A;xC4Yj0gCrNa`a&I@#Dt?h3SK}U)|59gq1)~4GV-Nf|dQ<<;$11;3R|q z7H+?s@Z%l4D%_wC99JY4^~d^&RpL%ef^9Nt)v8s~jjZv9Ry+R-Tw-G7$OZsYJ^kEq zhgust=&b9-lrelIkRh%U1!WfbtYgN9h3oFGIo0 z&_7@8p^nb`vZ}wjO$&~|+sQ2% z!s-4`+G|w+D6okoV>aO$prZ14Ez6sCZru3Gg-X0nQV29vIWSENfP?s1bo+sq?y7Q9 z@G=yPwe0s8xW0 zfdO3tFGGtU_w}~d04xA4RD>`uuUN5SnbBDC`%jJ@IE$Z9v=Cr%2rrt8l>DET_LH3o z0KP+)`hrmkUPgC&4Zu9me2rdGf9HRY{{ul_k2W=3IIDddoM@@Rc}q_BYyjw6^hksh zGS&V|cY6)M9MCru&D99^=PX*ZXs*HV@mr;3(ixA(BM%_wao=TQUH|u@mqe zx`gS2wO?<0#Y&7QgK?%(8k41-n^90u@G38{d|iF*nM+NV8u6ns)&74VS&~g~qZ7q7 zz(i;uHb7xEeW;f0G@7O;Pbn^wInMM3rVx0yV;KSPYx1qmj^QVZk?{>4H(1yV!YZv) zQ~jnWK~7Pm9-o{Xo84YK&%znDavZlLEr7{nS|C_CFD^dD8=||rYZ#oQmth#JI#cK~ z{68Q`lQTBhXWI8VKs>m7_6G|5Z#l=Uk8 z3B};8UAuO!(NwYn^7U_!cRo%q$FyR3(;#@60bD9(0>RDM-Zr$)u-B?o8PyJ8j!&H^ zfN4r6vz1QgD-#aRoZkfDQ(V4nTR|ZJMtbhJTiInjJpKbaJmzpk)2v&Q-WC;_dS-Z-)&a&orFomF;-gzMaDbh>pV^q_ndYY78hUbeHnK(l^ n*p=_TP=K)tJpEXFkgWd#=zh}tL(H{K00000NkvXXu0mjfj>wB7 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 36b1ca1c2c..59a34acc5e 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -16,5 +16,23 @@ document-open-recent.png document-open.png document-new.png + edit-undo.png + edit-redo.png + edit-paste.png + edit-cut.png + edit-copy.png + application-exit.png + utilities-terminal.png + x-office-drawing.png + document-save.png + document-revert.png + preferences-desktop.png + preferences-desktop-personal.png + preferences-desktop-font.png + help-faq.png + help-about.png + emblem-photos.png + process-stop.png + emblem-default.png diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index fa1b3279d4..06a366387f 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -100,248 +100,172 @@ - - .. + &New - - Start a New Input File - - - Start a New Input File - Ctrl+N - - .. + &Open - - Open an Input File - - - Open an Input File - Ctrl+O - - .. + &Save - - Save Input File - - - Save Input File - Ctrl+S - - .. + Save &As - - Save Input File As... - - - Save Input File As... - Ctrl+Shift+S - - .. + &Quit - - Quit LAMMPS-GUI - - - Quit LAMMPS-GUI - Ctrl+Q - - .. + Cu&t - - Cut Selected Text to Clipboard - Ctrl+X - - .. + &Copy - - Copy Selected Text to Clipboard - Ctrl+C - - .. + &Paste - - Paste Text from Clipboard - Ctrl+V - - .. + &Undo - - Undo Edit - Ctrl+Z - - .. + &Redo - - Redo Edit - Ctrl+Shift+Z - - .. + &Run LAMMPS - - Run LAMMPS with Input - Ctrl+Return - - .. + &Stop LAMMPS - - Stop LAMMPS Process - Ctrl+/ - - .. + View &Image - - View Snapshot image of current LAMMPS state - Ctrl+I - - .. + &About LAMMPS-GUI - - About LAMMPS-GUI - Ctrl+Shift+A - - .. + Quick &Help - - Quick Help - Ctrl+Shift+H - - .. + Pre&ferences... @@ -352,8 +276,7 @@ - - .. + LAMMPS &Manual @@ -364,8 +287,7 @@ - - .. + Reset to &Defaults @@ -373,8 +295,7 @@ - - .. + &Log Window @@ -385,8 +306,7 @@ - - .. + &Chart Window @@ -429,8 +349,7 @@ - - :/document-open-recent.png:/document-open-recent.png + &5. @@ -438,8 +357,7 @@ - - .. + &Image Window @@ -450,8 +368,7 @@ - - .. + Set &Variables... @@ -462,8 +379,7 @@ - - :/system-help.png:/system-help.png + LAMMPS GUI Howto diff --git a/tools/lammps-gui/preferences-desktop-font.png b/tools/lammps-gui/preferences-desktop-font.png new file mode 100644 index 0000000000000000000000000000000000000000..383eaa6ca1335a5bdf7646458e78ba51d502cc48 GIT binary patch literal 2413 zcmV-z36l1SP)#En#OeQtwqjAo@Kk|&{%sDfTcJGZA9L}D-*53Ph z*4}HKb>g{Mq@ZZVhFc!nL}s+Ku5# zg+c*Bi2rW+FA1d-cDo(_9v`!R_}BZl;F$FN`}dCtZ6pNh>+9LbO&eeS^)I_j8jXfH zolbBZ2cex@dnI>&`v@UWC=>_`48+{rEbZ)i(LX!$^>4zRki^#X}8<` z0{)|9{2|409A;)_uqkqriZI9$qLl;fd_zh@7`f_bQC!`If#yq#)b_W zFflQK_V#vkbadeM?c3<;>OxCP3s{zw09p+RIUHUI$nAhoQd3iL@8-baaSp zY&M(wvfJ$|N&udu0ofhk+yuOd@R+r>w&MBo=lJyL6Q-u7-0|?`%NGE^(9n<@fWzUy z)~#DbbM^G}ATTgc*4w_;_CWx$1Uv`6fBzo2xw#k{TY4~tg@r+<(?OwFn$}{mh&(9= z$d|KLLBMwm@EM8+pOuw`yu3W<^?In)YPU^OQxggc3w?T1IHxa=D@Lf_3KyE z)zwMnkeiDTg7NWjG&eV+r>6(O!NG`+k4IWsnk*5|EF^u9EgHyqjQ_oD+cpqFV6|Ft z2hV}LJxOMB62!jycvIK+!g#dUm#l^+AdGjU`5)u#`9E_o%A%up8 zqM)DvO-)URi;F`>Mg~$+Qru(Yc3}Pb^=N2l!0_-e>gwvSZrwV!uDZG!4u?ZT-tQRj zb%c0HNl8I!YN`Yj00adEp{lCN=Xd}(dh{q_V`BjT2?+^EOiV;WLjwTd^XJd#@9#%k zT%6z;Ax^ogIzrz1JauxHr^Ls{i{{$Bd$&kGIy&m}2>ILrIj?!kB>sq;T~t(*XsxKI zD3N}8dRjDY*(^jk?*xSHwzf7jHa22#a1d|ayaCIyh>VPc(P%_^dOA{4Qrwxz7lH2X zZs_%Tx8q*Ed@0iFbUHDC)y4qd9vK-yX=y2%o13v^%N86wco3&gpT_L$EFM38jK;=B zG&VLOBqRibgM*@DBX@*4Iy!Lp@L~7-9UUDa{pQV^!7$89in*m2@C5(i!v`cMC&OZ~ zATKWuWo2a|FX!as;QaaXsI9GqUayyw+HyN^_wHS2wOW|XW;}cL3{Rgvb?dfo-wu<> zwE8S0ywA?gB0D=97K;V3v9YMAsF3w&c6K&uYikh`6C=^f*+)i3qP)CZ(hmTaE?pA6 z49O9Y%*c5hA^s{UDRI{~m6erXSyndl=yW>l+qVzN$;pyA{k$5tyXt#HknK?nU>zGJ%L3;MBu@L2eN=wDizw>+eLkPy&f$sE$Hj( zLswT9LPJ9lA0LmfurT>zZrLm(bA%o}dW8A;c>q9qdish|tWa2%#m=2OMeFclHk)BK zn`L#r#4iG^t*vhTo;`cKW+*uk7Gj?Lp6jgy_=*V3&d$2^d|viOz@G=*YJhqZzX;6D z&AIhjtyV-p2+rYfU}k0pDwRs|jvy4Fw^!?VUcA;q{N#iX==FMc-}v~rZ2dziMMg#j z3OK+hrFhEiFY`TN@G+6Ooyj>9ff57qIZ| zjfBq~;0N#8wF@~pIRJp-;$l2}_z-h*bFf;iXl`ysVPPRED=U$hn27uL@5@%Ds|CDV zW?MD}_;yuQ70hNcN=iy_?AS3d3tXU(wu(z{LDHUZT zZ}H)ch=c&cF!PjBjU0gd{Cwo+=VN4K1Oo#DP%4!$7z~Jxj)w3nj;9AbO95XXeSxQx zf@Rrxp9BcY^xN(BzcUOY`ooD|m=FS^(Fmi_C^?(Hyy>f+krPSH!!WSh?O<89U)1k8 z@SFWx{p;7S?MkI`+3y4V2MD=7x&JnO+4~|!DTPw0#H&}Y>+2i7cJ12lgb+poYH^SffG#O1 zXIi1eo@$vCLDk>`KY&M${z!v}?DW!G* z5&{YUK>*YMSh-1mvbX?P0nAWJ7XT>%g72A$1@Qm>vc0@ed?&F$7lF%usVB=l{(hoR f55TenekJ)2+z-GXa*KJv00000NkvXXu0mjf5zTpQ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/preferences-desktop-personal.png b/tools/lammps-gui/preferences-desktop-personal.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4718435d9b3f2881d6c69a504e6cba3efcf3b3 GIT binary patch literal 2180 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 N002ovPDHLkV1j(k%W41s literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 0cd8b19a3a..a35d8713e4 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -182,9 +183,11 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath); #endif - auto *fontlayout = new QHBoxLayout; - auto *getallfont = new QPushButton("Select Default Font..."); - auto *gettextfont = new QPushButton("Select Text Font..."); + auto *fontlayout = new QHBoxLayout; + auto *getallfont = + new QPushButton(QIcon(":/preferences-desktop-font.png"), "Select Default Font..."); + auto *gettextfont = + new QPushButton(QIcon(":/preferences-desktop-font.png"), "Select Text Font..."); fontlayout->addWidget(getallfont); fontlayout->addWidget(gettextfont); connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont); diff --git a/tools/lammps-gui/process-stop.png b/tools/lammps-gui/process-stop.png new file mode 100644 index 0000000000000000000000000000000000000000..5f547cfee3f58ad10fd7f3ae211f5502aa488576 GIT binary patch literal 2287 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 N002ovPDHLkV1g(2#P$FH literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/x-office-drawing.png b/tools/lammps-gui/x-office-drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..e93899922eec0d2b67c7f6057617a9edda273291 GIT binary patch literal 2998 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 literal 0 HcmV?d00001 From ea965d3b2681d6d922edb27e7a0b98859d6c6fb3 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 13 Aug 2023 23:40:53 -0500 Subject: [PATCH 0239/1002] Working on exchange comm on device, and grow arrays for xoriginal --- src/KOKKOS/fix_spring_self_kokkos.cpp | 21 +++++++++++++++++++-- src/KOKKOS/fix_spring_self_kokkos.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_spring_self_kokkos.cpp b/src/KOKKOS/fix_spring_self_kokkos.cpp index 4e89ede2ba..8a576e2dea 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.cpp +++ b/src/KOKKOS/fix_spring_self_kokkos.cpp @@ -38,14 +38,20 @@ FixSpringSelfKokkos::FixSpringSelfKokkos(LAMMPS *lmp, int narg, char FixSpringSelf(lmp, narg, arg) { kokkosable = 1; + exchange_comm_device = 1; + maxexchange = 6; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; memory->destroy(xoriginal); - memoryKK->create_kokkos(k_xoriginal,xoriginal,atom->nmax,3,"spring/self:xoriginal"); - d_xoriginal = k_xoriginal.view(); + + int nmax = atom->nmax; + grow_arrays(nmax); + + d_count = typename AT::t_int_scalar("fix_shake:count"); + h_count = Kokkos::create_mirror_view(d_count); } /* ---------------------------------------------------------------------- */ @@ -133,6 +139,17 @@ void FixSpringSelfKokkos::post_force(int /*vflag*/) espring = 0.5*espring_kk; } +/* ---------------------------------------------------------------------- + allocate local atom-based arrays +------------------------------------------------------------------------- */ + +template +void FixSpringSelfKokkos::grow_arrays(int nmax) +{ + memoryKK->grow_kokkos(k_xoriginal,xoriginal,nmax,3,"spring/self:xoriginal"); + d_xoriginal = k_xoriginal.view(); +} + /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/fix_spring_self_kokkos.h b/src/KOKKOS/fix_spring_self_kokkos.h index b69d4edb4a..30b9eaf40a 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.h +++ b/src/KOKKOS/fix_spring_self_kokkos.h @@ -41,6 +41,7 @@ class FixSpringSelfKokkos : public FixSpringSelf, public KokkosBase { FixSpringSelfKokkos(class LAMMPS *, int, char **); ~FixSpringSelfKokkos() override; void init() override; + void grow_arrays(int) override; void post_force(int) override; KOKKOS_INLINE_FUNCTION From cdbbe3393384d1bf5861a9f607d7ad0cd3dd7956 Mon Sep 17 00:00:00 2001 From: Matt Bettencourt Date: Mon, 14 Aug 2023 09:36:56 +0200 Subject: [PATCH 0240/1002] Made check incase PyTorch didn't define the device --- python/lammps/mliap/pytorch.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/python/lammps/mliap/pytorch.py b/python/lammps/mliap/pytorch.py index 93df96d2e0..442494cb0c 100644 --- a/python/lammps/mliap/pytorch.py +++ b/python/lammps/mliap/pytorch.py @@ -18,6 +18,7 @@ import numpy as np import torch + def calc_n_params(model): """ Returns the sum of two decimal numbers in binary digits. @@ -132,22 +133,26 @@ class TorchWrapper(torch.nn.Module): descriptors = torch.as_tensor(descriptors,dtype=self.dtype, device=self.device).requires_grad_(True) elems = torch.as_tensor(elems,dtype=torch.int32, device=self.device) elems=elems-1 + device = self.device + if (use_gpu_data and device == None and str(beta.device).find('CUDA') == 1): + device = 'cuda' #Override device as it wasn't defined in the model with torch.autograd.enable_grad(): if (use_gpu_data): - energy_nn = torch.as_tensor(energy,dtype=self.dtype, device=self.device) + energy_nn = torch.as_tensor(energy,dtype=self.dtype, device=device) energy_nn[:] = self.model(descriptors, elems).flatten() else: energy_nn = self.model(descriptors, elems).flatten() energy[:] = energy_nn.detach().cpu().numpy().astype(np.float64) - + if (use_gpu_data): - beta_nn = torch.as_tensor(beta,dtype=self.dtype, device=self.device) + beta_nn = torch.as_tensor(beta,dtype=self.dtype, device=device) beta_nn[:] = torch.autograd.grad(energy_nn.sum(), descriptors)[0] else: beta_nn = torch.autograd.grad(energy_nn.sum(), descriptors)[0] beta[:] = beta_nn.detach().cpu().numpy().astype(np.float64) + class IgnoreElems(torch.nn.Module): """ A class to represent a NN model agnostic of element typing. From a10b1de5113e07e7eaa304c009f599d9936bb057 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 04:01:33 -0400 Subject: [PATCH 0241/1002] complete bundling and assigning icons to actions --- tools/lammps-gui/application-calc.png | Bin 0 -> 2774 bytes tools/lammps-gui/application-plot.png | Bin 0 -> 2293 bytes tools/lammps-gui/chartviewer.cpp | 4 ++++ tools/lammps-gui/imageviewer.cpp | 7 +++++-- tools/lammps-gui/lammpsgui.qrc | 3 +++ tools/lammps-gui/window-close.png | Bin 0 -> 1981 bytes 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 tools/lammps-gui/application-calc.png create mode 100644 tools/lammps-gui/application-plot.png create mode 100644 tools/lammps-gui/window-close.png diff --git a/tools/lammps-gui/application-calc.png b/tools/lammps-gui/application-calc.png new file mode 100644 index 0000000000000000000000000000000000000000..0c3bea28bba1041fc5a3ebde9538a4436ace6a9b GIT binary patch literal 2774 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 top->addWidget(columns); saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); + saveAsAct->setIcon(QIcon(":/document-save-as.png")); exportCsvAct = file->addAction("&Export data to CSV...", this, &ChartWindow::exportCsv); + exportCsvAct->setIcon(QIcon(":/application-calc.png")); exportDatAct = file->addAction("Export data to &Gnuplot...", this, &ChartWindow::exportDat); + exportDatAct->setIcon(QIcon(":/application-plot.png")); file->addSeparator(); closeAct = file->addAction("&Close", this, &QWidget::close); + closeAct->setIcon(QIcon(":/window-close.png")); auto *layout = new QVBoxLayout; layout->addLayout(top); setLayout(layout); diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index bef2589a2a..99825de6de 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -266,13 +266,16 @@ void ImageViewer::createActions() QMenu *fileMenu = menuBar->addMenu(tr("&File")); saveAsAct = fileMenu->addAction(tr("&Save As..."), this, &ImageViewer::saveAs); + saveAsAct->setIcon(QIcon(":/document-save-as.png")); saveAsAct->setEnabled(false); fileMenu->addSeparator(); copyAct = fileMenu->addAction(tr("&Copy"), this, &ImageViewer::copy); + copyAct->setIcon(QIcon(":/edit-copy.png")); copyAct->setShortcut(QKeySequence::Copy); copyAct->setEnabled(false); fileMenu->addSeparator(); QAction *exitAct = fileMenu->addAction(tr("&Close"), this, &QWidget::close); + exitAct->setIcon(QIcon(":/window-close.png")); exitAct->setShortcut(tr("Ctrl+W")); QMenu *viewMenu = menuBar->addMenu(tr("&View")); @@ -284,12 +287,12 @@ void ImageViewer::createActions() zoomOutAct = viewMenu->addAction(tr("Image Zoom &Out (25%)"), this, &ImageViewer::zoomOut); zoomOutAct->setShortcut(QKeySequence::ZoomOut); - zoomInAct->setIcon(QIcon(":/gtk-zoom-out.png")); + zoomOutAct->setIcon(QIcon(":/gtk-zoom-out.png")); zoomOutAct->setEnabled(false); normalSizeAct = viewMenu->addAction(tr("&Reset Image Size"), this, &ImageViewer::normalSize); normalSizeAct->setShortcut(tr("Ctrl+0")); - zoomInAct->setIcon(QIcon(":/gtk-zoom-fit.png")); + normalSizeAct->setIcon(QIcon(":/gtk-zoom-fit.png")); normalSizeAct->setEnabled(false); viewMenu->addSeparator(); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 59a34acc5e..818d24bb87 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -34,5 +34,8 @@ emblem-photos.png process-stop.png emblem-default.png + window-close.png + application-plot.png + application-calc.png diff --git a/tools/lammps-gui/window-close.png b/tools/lammps-gui/window-close.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf3eba2b13d2a1750d7fddab9d50bb1df0e1648 GIT binary patch literal 1981 zcmV;u2SWIXP)WAmF2-#?xS0hCx}x9S=kT4b z;FWT8Thb;^dfJ}v{hsIj-tYb1_cV+#7WRKeSV%xfKuADHKuExI7a)osZPjWs-w^~M zLMb9Dy=u2gr`j7978d@@1PHo}4@JH3V@~d|+5E!1DUGQ13Zjs=EaE!VTcS?${jr=Z zZ{dmjX;H8JlRg_17eL;AQ=g@sYH4j|!=r<2cw~@ucDFN3N%> zHp~VF``ExhFFSR*$SdkKXB8Eo(`&vlSsLzxbVXGetE?_(O-?%-93EgNiVD11oyNFS z@;W^^q^*g0dR?r}SS{H#TN_w^e=pN#i+`o2rmj^?0ENyCcTX3qsjKu0sH!nAdy`dK zjgyiHpR#mO(f!Hh(O551VA3wCQCg-XiQ9uv7(|A$RyT4@<;&KFV;qrUjW9! z1~zhMcLz4_G^Ojq&+H(RMby?+%^_q!1SCKn*A`m?d9jsUo1CDPIN{Zb!jMGX)y_u7 zhFGJ+;unB15Ya>AvA^`$x+Reh`Xv5GMD-j(282Kc)_R>(O5h|0Nke6sMA{Ed9yJtz z(DL-S6%nBb`6eRY*51Oa$#TE9rJ|3*X`Z-20tz<3)@Y{F*Ubt~=A(A9J$C_t zm%|3Xm+{#_;nYjHzT4GFwNAApMy@!4Mu(L)v`cD=f)x=w`79#u1o;*sRpIxnOc2#+ zD}~hYoa`A2DW98i{(R|N;jd(=rjjyK52e(CAVmaC9^UPM=c^YI2dS3UCWdAuD_ci3 zy-y^8MvkQYTk9eCJL zM)JYivIsepFdiElp_X5myCe}yc$AW!KsEl9)ozhIJfCe!7qpi+ah>!V9a1v_k;fwv z8JU@xaS%~je$|KK4rhYgM#`-ux;^v*d4;)C8jUJP>85`C;^i;q5E?Rh8Tf2(vM~n% z(hYoF{PU}WVX|b=1dV`wU$_H#g1nkg!x6{(nqJkE{J-32mB~5$_ zWdW573v)cdN+}U(QI{poq^GCq=>Et>h?1|9l9F~p#FdiEzP66})VtUozR%6iok~eb zNu)8WF@FG;@W%=WAik0hUQ1Yyrru;m15&?WGKXn|FLVIXU?~ZYPqj=&ArQ;ZG810$RGUR;3>LqJ7Fs!jti0TYQXzu!fU&B?Rr-us(-n3<-#0Jarw~-HZ#(# zMihRFj*i~JZEfTtRzFcdfQZ$65C(6KkB{FYh^kwkoj-dQZ6Ip;OT}N_qf%h@!2A0@ zp?h8@V8VC^=H6bv2rm;h5w_u8dL@&Ho1dOJeFqP;;E9^g41U^|TU$u371p^Vq z9TLlhZjXtH*?Tngh(n`Q|4z8A5;DI_OiWCr-*)nQuxinS7a#WE_whS?e!150i8pX# zahzy8$7W7wBcEt3ANMFkaB=dA#Bv*318m0exi)YIg8Yi0(`bN@bzDqz0HXN!5s#YW z5jIzGVv(F=G#3@kKS%QPyF&3=DDZ$%?2n2dZHE403JC}a2nh%YSQh>U2^?9uO&6-2 P00000NkvXXu0mjf=}(vr literal 0 HcmV?d00001 From e297800102a3332641977a8a7e0759510989344c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 10:11:58 -0400 Subject: [PATCH 0242/1002] get rid of tr() macros --- tools/lammps-gui/imageviewer.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 99825de6de..737c117360 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -209,7 +209,7 @@ void ImageViewer::createImage() if (newImage.isNull()) { QMessageBox::warning( this, QGuiApplication::applicationDisplayName(), - tr("Cannot load %1: %2").arg(dumpfile.fileName(), reader.errorString())); + QString("Cannot load %1: %2").arg(dumpfile.fileName(), reader.errorString())); return; } dumpfile.remove(); @@ -263,44 +263,44 @@ void ImageViewer::saveFile(const QString &fileName) void ImageViewer::createActions() { - QMenu *fileMenu = menuBar->addMenu(tr("&File")); + QMenu *fileMenu = menuBar->addMenu("&File"); - saveAsAct = fileMenu->addAction(tr("&Save As..."), this, &ImageViewer::saveAs); + saveAsAct = fileMenu->addAction("&Save As...", this, &ImageViewer::saveAs); saveAsAct->setIcon(QIcon(":/document-save-as.png")); saveAsAct->setEnabled(false); fileMenu->addSeparator(); - copyAct = fileMenu->addAction(tr("&Copy"), this, &ImageViewer::copy); + copyAct = fileMenu->addAction("&Copy", this, &ImageViewer::copy); copyAct->setIcon(QIcon(":/edit-copy.png")); copyAct->setShortcut(QKeySequence::Copy); copyAct->setEnabled(false); fileMenu->addSeparator(); - QAction *exitAct = fileMenu->addAction(tr("&Close"), this, &QWidget::close); + QAction *exitAct = fileMenu->addAction("&Close", this, &QWidget::close); exitAct->setIcon(QIcon(":/window-close.png")); - exitAct->setShortcut(tr("Ctrl+W")); + exitAct->setShortcut(QKeySequence::fromString("Ctrl+W")); - QMenu *viewMenu = menuBar->addMenu(tr("&View")); + QMenu *viewMenu = menuBar->addMenu("&View"); - zoomInAct = viewMenu->addAction(tr("Image Zoom &In (25%)"), this, &ImageViewer::zoomIn); + zoomInAct = viewMenu->addAction("Image Zoom &In (25%)", this, &ImageViewer::zoomIn); zoomInAct->setShortcut(QKeySequence::ZoomIn); zoomInAct->setIcon(QIcon(":/gtk-zoom-in.png")); zoomInAct->setEnabled(false); - zoomOutAct = viewMenu->addAction(tr("Image Zoom &Out (25%)"), this, &ImageViewer::zoomOut); + zoomOutAct = viewMenu->addAction("Image Zoom &Out (25%)", this, &ImageViewer::zoomOut); zoomOutAct->setShortcut(QKeySequence::ZoomOut); zoomOutAct->setIcon(QIcon(":/gtk-zoom-out.png")); zoomOutAct->setEnabled(false); - normalSizeAct = viewMenu->addAction(tr("&Reset Image Size"), this, &ImageViewer::normalSize); - normalSizeAct->setShortcut(tr("Ctrl+0")); + normalSizeAct = viewMenu->addAction("&Reset Image Size", this, &ImageViewer::normalSize); + normalSizeAct->setShortcut(QKeySequence::fromString("Ctrl+0")); normalSizeAct->setIcon(QIcon(":/gtk-zoom-fit.png")); normalSizeAct->setEnabled(false); viewMenu->addSeparator(); - fitToWindowAct = viewMenu->addAction(tr("&Fit to Window"), this, &ImageViewer::fitToWindow); + fitToWindowAct = viewMenu->addAction("&Fit to Window", this, &ImageViewer::fitToWindow); fitToWindowAct->setEnabled(false); fitToWindowAct->setCheckable(true); - fitToWindowAct->setShortcut(tr("Ctrl+=")); + fitToWindowAct->setShortcut(QKeySequence::fromString("Ctrl+=")); } void ImageViewer::updateActions() From 9fc54865cfc971521d44d9386884562da13452ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 14:31:30 -0400 Subject: [PATCH 0243/1002] improve desktop integration for Linux --- tools/lammps-gui/CMakeLists.txt | 2 ++ tools/lammps-gui/lammps-gui.desktop | 5 +++-- tools/lammps-gui/lammps-input.xml | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 tools/lammps-gui/lammps-input.xml diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index de1d28e21d..d807547a2f 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -192,6 +192,8 @@ elseif((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") install(TARGETS lammps-gui DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-gui.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-input.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-input.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/text/x-application-lammps.xml) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons/hicolor DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/) install(CODE [[ file(GET_RUNTIME_DEPENDENCIES diff --git a/tools/lammps-gui/lammps-gui.desktop b/tools/lammps-gui/lammps-gui.desktop index c6fd985b20..ffd903b1d9 100644 --- a/tools/lammps-gui/lammps-gui.desktop +++ b/tools/lammps-gui/lammps-gui.desktop @@ -1,10 +1,11 @@ [Desktop Entry] Version=1.0 Type=Application -Categories=Science;Engineering; +Categories=Education;Science +MimeType=text/x-application-lammps Exec=lammps-gui %f Name=The LAMMPS GUI Terminal=false -GenericName=MD Simulator +GenericName=LAMMPS MD Simulator GUI Keywords=MD Simulation;LAMMPS;Molecular Dynamics;N-Body Icon=lammps diff --git a/tools/lammps-gui/lammps-input.xml b/tools/lammps-gui/lammps-input.xml new file mode 100644 index 0000000000..20e1646316 --- /dev/null +++ b/tools/lammps-gui/lammps-input.xml @@ -0,0 +1,8 @@ + + + + LAMMPS input file + + + + From b53c564190b95ae130cdc470feced7f54f15f042 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 15:13:43 -0400 Subject: [PATCH 0244/1002] update clang-format detection for compatibility with Debian --- cmake/Modules/FindClangFormat.cmake | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/FindClangFormat.cmake b/cmake/Modules/FindClangFormat.cmake index 80c3b0d0ae..f3ad6269aa 100644 --- a/cmake/Modules/FindClangFormat.cmake +++ b/cmake/Modules/FindClangFormat.cmake @@ -1,5 +1,7 @@ # Find clang-format find_program(ClangFormat_EXECUTABLE NAMES clang-format + clang-format-17.0 + clang-format-16.0 clang-format-15.0 clang-format-14.0 clang-format-13.0 @@ -19,7 +21,7 @@ if(ClangFormat_EXECUTABLE) OUTPUT_VARIABLE clang_format_version ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - if(clang_format_version MATCHES "^(Ubuntu |)clang-format version .*") + if(clang_format_version MATCHES "^(Ubuntu |Debian |)clang-format version .*") # Arch Linux output: # clang-format version 10.0.0 # @@ -32,9 +34,12 @@ if(ClangFormat_EXECUTABLE) # Ubuntu 22.04 LTS output: # Ubuntu clang-format version 14.0.0-1ubuntu1 # + # Debian 12 output: + # Debian clang-format version 14.0.0 + # # Fedora 36 output: # clang-format version 14.0.5 (Fedora 14.0.5-1.fc36) - string(REGEX REPLACE "^(Ubuntu |)clang-format version ([0-9.]+).*" + string(REGEX REPLACE "^(Ubuntu |Debian |)clang-format version ([0-9.]+).*" "\\2" ClangFormat_VERSION "${clang_format_version}") From c11c51ba3cedaf07b4a32b628878856ce3214c95 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 16:55:47 -0400 Subject: [PATCH 0245/1002] complete lammps gui howto --- doc/src/Howto_lammps_gui.rst | 113 ++++++++++++++++++++++++----- doc/src/JPG/lammps-gui-running.png | Bin 107209 -> 32750 bytes 2 files changed, 95 insertions(+), 18 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 465f6e5864..b3ef4d8850 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -20,6 +20,8 @@ tutorials on LAMMPS and then makes it easier to switch to a full featured text editor and more sophisticated visualization and analysis tools. +----- + The following text provides a detailed tour of the features and functionality of the LAMMPS GUI. @@ -44,6 +46,73 @@ when starting again. The name of the current file in the buffer is shown in the window title and the text `*modified*` is added in case the buffer has modifications that are not yet saved to a file. +Opening Files +^^^^^^^^^^^^^ + +The LAMMPS GUI application will try to open the first command line +argument as input file; further arguments are ignored. When no +argument is given LAMMPS GUI will start with an empty buffer. +Files can also be opened via the ``File`` menu or by drag-and-drop +of a file from a file manager to the editor window. Only one +file can be open at a time, so opening a new file with a filled +buffer will close this buffer and in case the buffer has unsaved +modifications will ask to either cancel the load, discard the +changes or save them. + + +Running LAMMPS +^^^^^^^^^^^^^^ + +From within the LAMMPS GUI main window LAMMPS can be started either from +the ``Run`` menu or by the hotkey `Ctrl-Enter` (`Command-Enter` on macOS). +LAMMPS is running in a separate thread, so the GUI will stay responsive +yet is capable to interact with the calculation and access its data. +It is important to note, that LAMMPS is using the contents of the input +buffer for the run, **not** the file. Thus if there are unsaved changes +in the buffer, they will be used. + +.. image:: JPG/lammps-gui-running.png + :align: center + :scale: 75% + +While LAMMPS is running the contents of the status bar change: on the +left side there is a text indicating that LAMMPS is running, which will +contain the selected number of threads, if thread-parallel acceleration +was selected in the ``Preferences`` dialog. On the right side, a +progress bar is shown that displays the estimated progress on the +current :doc:`run command `. Additionally, two windows will open: +the log window with the captured screen output and the chart window +with a linegraph created from the thermodynamic output of the run. + +The run can be stopped cleanly by using either the ``Stop LAMMPS`` entry +in the ``Run`` menu or with the hotkey `Ctrl-/` (`Command-/` on macOS). +This will cause that the running LAMMPS process will complete the +current iteration and then stop. This is equivalent to the command +`timer timeout 0 ` and implemented by calling the +:cpp:func:`lammps_force_timeout()` function of the LAMMPS C-library +interface. + + +Viewing Snapshot Images +^^^^^^^^^^^^^^^^^^^^^^^ + +By selecting the ``View Image`` entry in the ``Run`` menu or by hitting +the `Ctrl-I` (`Command-I` on macOS) hotkey, LAMMPS gui will issue a +:doc:`write_dump image ` command and read the resulting +snapshot image into an image viewer window. + +.. image:: JPG/lammps-gui-image.png + :align: center + :scale: 50% + +The image size and some image quality settings can be changed in the +``Preferences`` dialog window. From the image viewer window further +adjustments can be made: the image can be rotated, one can zoom in +or out, and it is possible to only display the atoms within a predefined +group (default is "all"). After each change the image is rendered +again and the display updated. + + Editor Functions ^^^^^^^^^^^^^^^^ @@ -170,13 +239,13 @@ and looks of the LAMMPS GUI application. The settings are grouped and each group is displayed within a tab. .. |guiprefs1| image:: JPG/lammps-gui-prefs-general.png - :width: 32% + :width: 25% .. |guiprefs2| image:: JPG/lammps-gui-prefs-accel.png - :width: 32% + :width: 25% .. |guiprefs3| image:: JPG/lammps-gui-prefs-image.png - :width: 32% + :width: 25% |guiprefs1| |guiprefs2| |guiprefs3| @@ -238,7 +307,7 @@ Hotkeys Almost all functionality is accessible from the menu or via hotkeys. The following hotkeys are available (On macOS use the Command key -instead of Ctrl (aka Control)). +instead of Ctrl/Control). .. list-table:: :header-rows: 1 @@ -256,34 +325,42 @@ instead of Ctrl (aka Control)). - New File - Ctrl+Z - Undo edit - - Ctrl+V - - Paste text - - Ctrl+Q - - Quit (Main Window only) + - Ctrl+Enter + - Run LAMMPS + - Ctrl+Shift+A + - About LAMMPS GUI * - Ctrl+O - Open File - Ctrl+Shift+Z - Redo edit - - Ctrl+Enter - - Run LAMMPS - - Ctrl+W - - Close (Log and Image Window only) + - Ctrl+/ + - Stop Active Run + - Ctrl+Shift+H + - Quick Help * - CTRL+S - Save File - Ctrl+C - Copy text - - Ctrl+/ - - Stop Active Run - - Ctrl+P - - Preferences + - Ctrl+Shift+V + - Set Variables + - Ctrl+Shift+G + - LAMMPS GUI Howto * - Ctrl+Shift+S - Save File As - Ctrl+X - Cut text - Ctrl+I - Create Snapshot Image - - Ctrl+Shift+/ - - Quick Help + - Ctrl+Shift+M + - LAMMPS Manual + * - Ctrl+Q + - Quit + - Ctrl+V + - Paste text + - Ctrl+P + - Preferences + - Ctrl+? + - Context Help Further editing keybindings `are documented with the Qt documentation `_. In diff --git a/doc/src/JPG/lammps-gui-running.png b/doc/src/JPG/lammps-gui-running.png index 7df06156a4448566bedc2a799bcee64645a7e2d5..f35b467b082c8462e6967dc806283fbe14af21d5 100644 GIT binary patch literal 32750 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 IM6N<$f?;zW_W%F@ From 2728f6763e40ed0797aeb261ec3a3461ad1b55c4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 18:47:27 -0400 Subject: [PATCH 0246/1002] updated output and cross-check --- cmake/Modules/FindClangFormat.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/FindClangFormat.cmake b/cmake/Modules/FindClangFormat.cmake index f3ad6269aa..3f0257f34f 100644 --- a/cmake/Modules/FindClangFormat.cmake +++ b/cmake/Modules/FindClangFormat.cmake @@ -34,8 +34,11 @@ if(ClangFormat_EXECUTABLE) # Ubuntu 22.04 LTS output: # Ubuntu clang-format version 14.0.0-1ubuntu1 # + # Debian 11 output: + # Debian clang-format version 11.0.1-2 + # # Debian 12 output: - # Debian clang-format version 14.0.0 + # Debian clang-format version 14.0.6 # # Fedora 36 output: # clang-format version 14.0.5 (Fedora 14.0.5-1.fc36) From e51845776d03dc8cd2848561a7ff5d915533ffda Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 21:37:46 -0400 Subject: [PATCH 0247/1002] make box, axes, ssao, antialias checkable buttons in image viewer this reduces the antialias option to just 2x --- tools/lammps-gui/antialias.png | Bin 0 -> 4688 bytes tools/lammps-gui/axes-img.png | Bin 0 -> 5069 bytes tools/lammps-gui/chartviewer.cpp | 4 +- tools/lammps-gui/hd-img.png | Bin 0 -> 7700 bytes tools/lammps-gui/imageviewer.cpp | 72 +++++++++++++++++++++++++++---- tools/lammps-gui/imageviewer.h | 5 +++ tools/lammps-gui/lammpsgui.cpp | 7 +-- tools/lammps-gui/lammpsgui.qrc | 4 ++ tools/lammps-gui/preferences.cpp | 14 +++--- tools/lammps-gui/system-box.png | Bin 0 -> 6301 bytes 10 files changed, 83 insertions(+), 23 deletions(-) create mode 100644 tools/lammps-gui/antialias.png create mode 100644 tools/lammps-gui/axes-img.png create mode 100644 tools/lammps-gui/hd-img.png create mode 100644 tools/lammps-gui/system-box.png diff --git a/tools/lammps-gui/antialias.png b/tools/lammps-gui/antialias.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7403e11c7e0e65d7afc238805138961f30ee5f GIT binary patch literal 4688 zcmeHLdsGu=79XG#3_kD$>K2JXM9WSxlLtwr1bHM#gkTCOkLp>O%uHY;FOq>oz^%o% zi)pc2sfw>^D;C9WS(UA>zzUUZD{C#-YDH03aD8FX)rt@LO+ducp0meuw*QfHCNtlC z{O-NKd%y2wvPPRcXB1}&2ZEqc>I7v9xFhW4>jl2E&W$(#ZViRH3?>D4aIH3rfi_ZH zX0esxQcl_cLC&)#?GK}lA-<2Y*SfN%=G~Shzc;si`{h7S_2q+M59(jRh^!(-u+{F* zX%^?24g@R{)2;9~#=>CspvY{jePS(bJGWzdg$J< z`u1^>_yEgauTCtTyXj2qlbip6j(D8S$@G~Uwl5ljJeJXMaawg;+|yz}2^CAq6bZ+) z6IRSiZQ{K@y1;+z*V-*NKIFL$a8#B4i&mrsCHA#pgupos2Rb_brEhC!%1rl3 zkMV!xk(ZyB!jz5cPUOJ);@i&Pu6BEEcT{vv+D5~Fr$d@UCz4*B)!9>}zYrd~nhRy= z3>(leHT_fd{-Q(U9C=%>EWF<}Me7&f<;lw{nf$TlNK9l6{kw|$Yj*DaeN|&uaT^*X>zhk?L^U0@Ucc+Fm#jd>dUepu(J3(3Ev~=&%SNtktmfh%W z=Ya3gJ`0ZUQF4?uvG zf|tWER!kspI2?S3h;OlF3sAXSEPNOV<;&*VWX`KZ839M zOk8itXB0dh&~u;WXR>NEgYahi01JQ*ffKh1P(C6snFK>U?2M`afD9z`s~&b8*rI|I z%5KTG5tOQcGBY7VAxL7-- za#$)w4Y1gNS6bl8w`82?hMTmt$gg}6|42Q*X zF$LqOP!Ee`VlslH^rXR{9|AGYMuVxujYG3yp-2EFCI|_oH$=b^DGstBWfEA9A~+l& zCnOQ5oRFdj>4qW+EZ$->;h>$g3D2ekR&%yn!4i(eXw?dykdHi*XpJ~y01gUX5^c_R zK2zvu6P3!~ESqSAT!=)VLa7)L$wU&-Gov)hW(SkVVxkCNBz9}qwqT$bKrGJADFATG zK`mIEjlvm=O=qzf6+AX2F6%j{)`0Cq;ta0D847?RLJ@|@FjTA)q8NgL2N)4!$PjxA zNgEdbFKc%5a3lL$oc(OC#;xN?fjcQ(!pJUxFPkp!yjGSp6y@ z2RCO^;Pe<6*Qav&S4Kf1LqtLfm%|jrjsh-~!FnM|!a}_iMR6&r7t8vmX%O9RF)$9? zM#W?U9syTiJl$MzXSy3T%gx!KwIhdOy8sA-5gGhT!UO{a3)nN`X~mI(UvLuXHW+fq z0Ka}2IK04FC>T5p2RH*6{Fa}AUi_9JxZL3&FU0RKUBh&}5Cbn{JUm^)biEJ*FJwGC zUH><_IL}_EC^PsK%n8XFr+N=iCAJNbNmPEJmIe0)eqh|A?FEG$e* zOA87L+PrzQOeWjEe}7a|)T&jh7=|e?FE<*Eetv#|fr0t?`6o}F3=a?2YPBMfh~p?B zL2M5uB{>y}?))D7vjBPM6Xz(Q)!sn~U@^j)kZFe?zwzwl0d1<71cW|}TBGvm@*U&h zFCZccWilB+0ni*Vi%f(lY<(n{>e<*S}T# z<;8Sgypru3K&hg#0J%qUL3HgePc zZsnD}mW&ThPedm_423KUR<)sI@cMtQTyRm@65iELbKXB4RksoPqLy3lS65f;>7Te~ z-L{Q~-YOGzjAG73)4Y^=pX&7$J+F3zpQ-oFn0R}>6{_7a`s(*#W0p?e8xx!5y08~^ zc)Tm?4rq%SbGxz!QG3@nMmxN=&wKlrpIx-_$A$F7xS*3i&i=Nu#ly2=T5GXy&c(5@ zH`guozE^U$UgtsDmLA-pds&BVHVUgJP4yHd*AU*@j}tSNFWHJgwKtqw;wH_W)cnqu zid+2FJ1?C*h0Hj8DQAM09C8D7A*=Av>inh+5%Q7FZMTnk>d48>A&6q-gg81*VbgHz4v z2Aqmp2^EQCy{L^8zuHKh@ZH_@3&e4X4>l03C67OAf!>jA{Ko&^6u(2X!*x5|k6H{K zpDK{{ven`$g>IU9n|d`?)ZlFR;m*PxZaH6m6tPEj``4QT@V3}P^LG^d(Rb45S@rFS zY_CDd_1C@{S3PS9&nd$DsJQf3N^O$hL$vdxr_kN9?2=`XN4Cl5n>tRXe|*=JsRiT` z=g;1lvVC0AZ0~?GlM~`3K?5?4_wfD0tGoPf#GSkML16`nL|#KkB#|DIZgN2`a}WK#X&Y3t{?Gjr z-lW9O_AZG#RW=vz_CMY?wfp9Z+{D51A=9L);CwQO# z)ipKFwpZt_i#-3XC#NIqeAUJT?}bA?Zw#-yx%K-mimE9g8^--u zAx{0XTi<`|NDPtGx^R8vs^im756*CYl$Mj)mU8@)IeW64T*`BN>u&BpvZ^zpwR8nN z+eLaLC;#TY-M7eF{p%_B++SOaaMZYcu;s&0uz5;QdzVG6l#D`sS-v> zLq;h;PefCj%?2R^rKP1Y(%1~WF%e=41OfAn2xaof);#b*4A%6eAo`+=Lkk zgPG9lsCG^?L2ogOXf!ZReG;G6AeTR-*O^9D0D3@H)BrIVFr?K&V?9jf;8Z{|8qnW* zm=s{2LQ%L$Z!uzca4N1dzd4pdi9Pi=Gmr zT7$z2i2WSWOsJlT^;~TB5l1>>0|D+&d7nc+$=v}4D7joH)ngWWcrvMoW}jcE)MJEF z=xA~|92{dJ2%X1bv*`%JN}vl+7^dSafr_od69jyOJBCW8Gnr8xhTEwCIfDQ^N(5!` zI7%j+tx|I72!^6`l#{@w^I#sAi*c0#Ho_i55n&`iRic`)QQ4`KfQlpF2mqc52$V1# z1jD8ac%aMYvk(kpDpfFwI;fPGFhpLW@V6QM;N0>U_sS`8c!(7t;5oTrcH%Aq8Ft z{Ia@U%Jo7Dyb$<%XnLK#>wF&MdAHm_K<~|b1*&>sQ73!|u&J~N^$7i1&xGh-Q zdSOlcLSNHrx1jtY{*~s`>0c)Wf!n8g_gkuz>383&W6r#H(x#k#ZkzSXlLU%bkJdtAo5x=0qeS=x~>kHfzU!TRxRUp7NLP!xK)M?#;Num#(=Y_tZi+Y- znp+XSQs>S4-sco=a<}tBvbihw)WrH%e3{nX_aF8^(_^Eg6T{yl+7|51I;vV(*o2zG z=s!;@z(ZJPy#8a#UQUkf$ZXDJc**ZqrTi4k%bQHLR*0SVY>ez9?+XfW3w;#dyu{?9(a0SHgB&=w_ZkX&c#O;ldfUmGwFrbT&&@v%?ze{g%HcP7buSf3ay3_0TL| zSE0w}#sf7~XVF8yr1D=+iCnUHO-*shCudE&uG#dD8N-Vi{mm=Lu43-V)Ah5&MVIO$ z&X?v+A5T4oHf2HX@mEr0kf=H{tbJK~Wa2lx4#C|do@ynt3;@9?oC-T{wIDyB4J3Llq{^%|iIeq1JKwo-Uy{I~CMRasD z>uuTckGpBey)Wg%^wL0i#gT>>m-3eS=DD*UyXm}XG}^)9LFec?*4KsI_m0`OtSmTO Jx-Td`_rHorhwT6W literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 94a89c565d..6d9bb02302 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -31,14 +31,14 @@ ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : columns = new QComboBox; top->addWidget(menu); top->addWidget(columns); - saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); + saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); saveAsAct->setIcon(QIcon(":/document-save-as.png")); exportCsvAct = file->addAction("&Export data to CSV...", this, &ChartWindow::exportCsv); exportCsvAct->setIcon(QIcon(":/application-calc.png")); exportDatAct = file->addAction("Export data to &Gnuplot...", this, &ChartWindow::exportDat); exportDatAct->setIcon(QIcon(":/application-plot.png")); file->addSeparator(); - closeAct = file->addAction("&Close", this, &QWidget::close); + closeAct = file->addAction("&Close", this, &QWidget::close); closeAct->setIcon(QIcon(":/window-close.png")); auto *layout = new QVBoxLayout; layout->addLayout(top); diff --git a/tools/lammps-gui/hd-img.png b/tools/lammps-gui/hd-img.png new file mode 100644 index 0000000000000000000000000000000000000000..906e4d605dda7808c95efbd6d300a57c1ccba708 GIT binary patch literal 7700 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 xF%efSmA~*K@vTpl393rkg0A>qS|~setCheckable(true); + auto *doanti = new QPushButton(QIcon(":/antialias.png"), ""); + doanti->setCheckable(true); + auto *dobox = new QPushButton(QIcon(":/system-box.png"), ""); + dobox->setCheckable(true); + auto *doaxes = new QPushButton(QIcon(":/axes-img.png"), ""); + doaxes->setCheckable(true); auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); @@ -75,6 +83,10 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QHBoxLayout *menuLayout = new QHBoxLayout; menuLayout->addWidget(menuBar); + menuLayout->addWidget(dossao); + menuLayout->addWidget(doanti); + menuLayout->addWidget(dobox); + menuLayout->addWidget(doaxes); menuLayout->addWidget(zoomin); menuLayout->addWidget(zoomout); menuLayout->addWidget(rotleft); @@ -84,6 +96,10 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(new QLabel(" Group: ")); menuLayout->addWidget(combo); + connect(dossao, &QPushButton::released, this, &ImageViewer::toggle_ssao); + connect(doanti, &QPushButton::released, this, &ImageViewer::toggle_anti); + connect(dobox, &QPushButton::released, this, &ImageViewer::toggle_box); + connect(doaxes, &QPushButton::released, this, &ImageViewer::toggle_axes); connect(zoomin, &QPushButton::released, this, &ImageViewer::do_zoom_in); connect(zoomout, &QPushButton::released, this, &ImageViewer::do_zoom_out); connect(rotleft, &QPushButton::released, this, &ImageViewer::do_rot_left); @@ -99,9 +115,13 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QSettings settings; settings.beginGroup("snapshot"); - zoom = settings.value("zoom", 1.0).toDouble(); - hrot = settings.value("hrot", 60).toInt(); - vrot = settings.value("vrot", 30).toInt(); + zoom = settings.value("zoom", 1.0).toDouble(); + hrot = settings.value("hrot", 60).toInt(); + vrot = settings.value("vrot", 30).toInt(); + showbox = settings.value("box", true).toBool(); + dobox->setChecked(showbox); + showaxes = settings.value("axes", false).toBool(); + doaxes->setChecked(showaxes); settings.endGroup(); createActions(); @@ -117,6 +137,38 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge setLayout(mainLayout); } +void ImageViewer::toggle_ssao() +{ + QPushButton *button = qobject_cast(sender()); + usessao = !usessao; + button->setChecked(usessao); + createImage(); +} + +void ImageViewer::toggle_anti() +{ + QPushButton *button = qobject_cast(sender()); + antialias = !antialias; + button->setChecked(antialias); + createImage(); +} + +void ImageViewer::toggle_box() +{ + QPushButton *button = qobject_cast(sender()); + showbox = !showbox; + button->setChecked(showbox); + createImage(); +} + +void ImageViewer::toggle_axes() +{ + QPushButton *button = qobject_cast(sender()); + showaxes = !showaxes; + button->setChecked(showaxes); + createImage(); +} + void ImageViewer::do_zoom_in() { zoom = zoom * 1.1; @@ -175,7 +227,7 @@ void ImageViewer::createImage() dumpcmd += dumpfile.fileName(); settings.beginGroup("snapshot"); - int aa = settings.value("antialias", 0).toInt() + 1; + int aa = antialias ? 2 : 1; int xsize = settings.value("xsize", 800).toInt() * aa; int ysize = settings.value("ysize", 600).toInt() * aa; int hhrot = (hrot > 180) ? 360 - hrot : hrot; @@ -188,16 +240,18 @@ void ImageViewer::createImage() if (lammps->extract_setting("dimension") == 3) { dumpcmd += QString(" view ") + QString::number(hhrot) + blank + QString::number(vrot); } - if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); - if (settings.value("box", true).toBool()) - dumpcmd += QString(" box yes 0.02"); + if (usessao) dumpcmd += QString(" ssao yes 453983 0.75"); + if (showbox) + dumpcmd += QString(" box yes 0.025"); else dumpcmd += QString(" box no 0.0"); - if (settings.value("axes", true).toBool()) - dumpcmd += QString(" axes yes 0.2 0.02"); + + if (showaxes) + dumpcmd += QString(" axes yes 0.2 0.025"); else dumpcmd += QString(" axes no 0.0 0.0"); + dumpcmd += " modify boxcolor silver"; settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 5319ffc6b2..1a4327561b 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -45,6 +45,10 @@ private slots: void normalSize(); void fitToWindow(); + void toggle_ssao(); + void toggle_anti(); + void toggle_box(); + void toggle_axes(); void do_zoom_in(); void do_zoom_out(); void do_rot_left(); @@ -83,6 +87,7 @@ private: QString filename; int hrot, vrot; double zoom; + bool showbox, showaxes, antialias, usessao; }; #endif diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index ebbd563d7e..1a27b7c743 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -179,8 +179,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : #endif lammpsstatus = new QLabel(QString()); - auto pix = QPixmap(":/lammps-icon-128x128.png"); - lammpsstatus->setPixmap(pix.scaled(22,22,Qt::KeepAspectRatio)); + auto pix = QPixmap(":/lammps-icon-128x128.png"); + lammpsstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); ui->statusbar->addWidget(lammpsstatus); lammpsstatus->hide(); status = new QLabel("Ready."); @@ -935,9 +935,10 @@ void LammpsGui::preferences() if ((oldaccel != settings.value("accelerator", AcceleratorTab::None).toInt()) || (oldthreads != settings.value("nthreads", 1).toInt()) || (oldecho != settings.value("echo", 0).toInt()) || - (oldcite != settings.value("cite", 0).toInt())) + (oldcite != settings.value("cite", 0).toInt())) { lammps.close(); lammpsstatus->hide(); + } if (imagewindow) imagewindow->createImage(); } } diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 818d24bb87..d718634452 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -37,5 +37,9 @@ window-close.png application-plot.png application-calc.png + system-box.png + axes-img.png + hd-img.png + antialias.png diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index a35d8713e4..f003545764 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -112,9 +112,9 @@ void Preferences::accept() field = tabWidget->findChild("zoom"); if (field) if (field->hasAcceptableInput()) settings->setValue("zoom", field->text()); - QComboBox *combo = tabWidget->findChild("anti"); - if (combo) settings->setValue("antialias", combo->currentIndex()); - QCheckBox *box = tabWidget->findChild("ssao"); + QCheckBox *box = tabWidget->findChild("anti"); + if (box) settings->setValue("antialias", box->isChecked()); + box = tabWidget->findChild("ssao"); if (box) settings->setValue("ssao", box->isChecked()); box = tabWidget->findChild("box"); if (box) settings->setValue("box", box->isChecked()); @@ -371,17 +371,13 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); auto *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); - auto *aval = new QComboBox; + auto *aval = new QCheckBox; auto *sval = new QCheckBox; auto *bval = new QCheckBox; auto *eval = new QCheckBox; sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); sval->setObjectName("ssao"); - aval->addItem("1x", 1); - aval->addItem("2x", 2); - aval->addItem("3x", 3); - aval->addItem("4x", 4); - aval->setCurrentIndex(settings->value("antialias", "0").toInt()); + aval->setCheckState(settings->value("antialias", false).toBool() ? Qt::Checked : Qt::Unchecked); aval->setObjectName("anti"); bval->setCheckState(settings->value("box", true).toBool() ? Qt::Checked : Qt::Unchecked); bval->setObjectName("box"); diff --git a/tools/lammps-gui/system-box.png b/tools/lammps-gui/system-box.png new file mode 100644 index 0000000000000000000000000000000000000000..baa5595d27c93e13a16276568b50d50b5283e8e9 GIT binary patch literal 6301 zcmeHKc{G%58=oQBdD}(Hm?UD%VvLz#$eN{LvZbV&4HL64gF$vBl#~jkq*5VEp~X_! zq9oq3MHm!9Xtm6nzGt+b?>px^o%4PFHRn9@-1oKo?(6zp*L|Pojw9J^mX}eM0f9jB z)>h^Yz#AcYq!t4I+r(yKfmcnilPk}G90=j~u{{_*bOzd+%h`(B+fUcZc4Q1>1_e@GD;tVqR`^k`DibiZ>lzeNDn!sTCnsmQ;Oi z#?>k3@zA1^hx19s*-sbeUsyLA+ThdWwjo!1P<|y%?x21|SW>e#X+Vx_uU{{aOSJP* z{rs_bT?H7wWqS>jXy*?Cf%h}a%t+Q|X5aDwvPcg-MzE^hq;#P7(y|06e1}Pms+s@w zgm`S*#-*92SC;MYN8Em|cnYnisgoGxU0In?n-iT-l&_E<1(_D_AL+k13|$|VvUEoc zpYyyrWa`eoscx`o?tQe@@dfB^Owp_3sqm}up9-Yb$?RFBnzsFZx*AfF!mmrj;Z3wu%8|3+o#dV^Tgp|sm$ zhQ5bfwWkW7R9~g+t$AAG>-9T^M_x*v4OsxU-^eMoD}& zFf!n&@0}y7FNcaP$cWUc7%jLN@y!0oX?IxI0`r@Z38VR!#=t2C_a>87PhZ!PV8~=G zo(!{WasnM-MMmlsu+N018-Z{m&VviF*o%sem&W`vLSjRNA1Bi6K8Jw_b$&-fgT^I+ z#^W=926H8D!Bg2x9Wsqgq3iIO9H8?+AVXt5hfMXR^B@$uCxbxwlg=YU_)H%b7tbd^=W+4CSR{r+A@e3Y zZvxbnNP?KL{pb+14q68Rv*0rVP*5Woh@l_N1MgsN`4s|~5ujc?9tRJH2L=Y}1nTOr z{XF4F91aIZpx`JJ46uN4gIGK=AI9RY6G42zFsE~=ehdze!Dc~3m}CmupGSZ~0X^hf zd`u3J_#K|b{mKHs2b@plz>zu#IFkwg*@Mfo2mnC72J|02xK6-6g*(u>Y=1v0-6DX_ z;;s7`f=2!B&++&3nNNpCh0}fLOu&>2tcv_)$<5Y8(svIL1)dBhXWk1S`xi?d!{Y~8 zzr-fe%%}5nAb|UK++VD}-94eZE#L)CGFf0N` zfuWI9Gz^E+MZj=WI!+&fq#zJTkDnmy{TM)3l6`)TN(4m%py(6|N*9R&04TaN5fm0i z)+JM52pkHBK+>rQGL1YBMWf;^*?vqiP)-Ju>`8}nSf29=5#e|fk~IN}(n0)?kbKBI z55R!{-NIn`^M5Fu7)-h&k1S#niNT=|7$8~{Mh}NVVtyF8(EYeTCyFqU2pwJYyhcmy%mCxWM{B^P(?1%8~B-W%gz2!}$8Qs9yU=(PDb0jw`7su!8%Ne51kukHFx&iD_lKu035bPSdbqan#aH(}6Z z7*-!kfniY?eJV|lqN}I-rGDShxoi(!AlZ*@;tB8wa0RsIJXa8n`9f*_8cU!TT~q~t zFc<<0`**_NUlWFl&Wvvv8^ZsM6T^9fpAH$o?~4pLynwS1{{1lg${7&v|MT~?7XQyB zAdo+c{1(4|==wv~Z!z#&#(%o&4_&{-z;7A<>8}47T{1teQ*;*a6%+_umehT%G=PiN zLW=EX^Z6?mXvVB892iM+thRGOAcY#y13sappaKXbdDcV=$ss94kcOO)i9G}YNm*E% zn>cy(yiN-uB?l_k8MAe)T(l3Gw=8Gp-KZVE;gY-h#Jb8D+m4pbyzVt!n&WourLPa^ zI(wGB)_#p=)?G08u=fN_cCYu}R@SD7RU6~2KuZ+1Pj0Gp-fCiU6cRM080g`aC#h5v zaH-e$-Q3x!AS3qMRTE35E!x*hl`M)P;j1RXLb)naKG-uK=7jcI(NRlFh{W!;LxX!E{EESrq)S|_lH|C6t5`xqnZO2=4KQ87s z2*brRwng$}S2b6T&rCMKD_!TP5o`Cxi=qD>sIzb1psvs=AtA2}OU~{L4mM1jxbx1Z z;404mGTR#_#@TPyuF&y8E3{oq(v-m|NP}HjhfyWjpm% zzjzzLb$9Rn2y-jF(cb2=++=5hBIvoUV5dUINM;zu=dP-%P=<41S4ML|2Bv3^(h7Y_ zO@vpR+7?oFc}PM+mybcfQf5R@sOEz4ZIw@?W&Jj_Ph4(NY9P<;=xs}7C`wmtu(mhc z>RjOBX6{-za(~J7u3o_{5Ysku&aCjW_{f}CS;0&J@x;!hwXIK|kDF05^Cj`(!C=z) z2-(rhw^O9@zfdl-H|tz9BmGHp1{%RClwAjs_0Jr8UWHW>V-|LS3>^PiyYHnL2c{VB zSb228CFh$D+fUz#6bOnIt$?2`j5|+QnnT%Rn;jk z-NZEnkMf;!!>?>p@+&;hVat1-m*12cES^!F_RM5TcGy*CD%G<}lWU0}%K@-7R;#M& z{B`*Qi)M?9!EBqXICn63b(yTJ!8`4f>IoV~?xR9McT=_Ix(=IjES-+Wy@y-#j!iq* z+B(dRv|fx3J7<2rwJCk((bZQ^TN5sASveJF>N~^t&ea#@7CbiCvE!i(`SHt;eQy&4 zlc+*k)wT9}J)t*GUN=~KE&W|E>{682772;!tfaS(nlrDJ9zPzNyh2;4nDp1;QgJbS zz^N_cQa6P!Dtjb$sY*T=;vnQ#t=&{BDOfz=yL=Weo?g8tsO3zfqoj3KQSlBY?d^*P z;w26YK55UnW`4hUN+Ydw55t@LI;O?Vkm&iBRIe#Rdn`!&I*K*X;HnUkUTD-93-r+a z3X(5*dUC-wn}^LYVDT1vt1Oe%4vZt!KCHm8u0XZTOE0e$veOblM^?sLnpiCM(J6iR zDO`EeV42!+jdNu)9oKHvHl!3O4Jw>y(0dd7X+YZ7m;4Ifot%68VPa=>EFs9dt)*$1 zg}1(wvFtOwseb2x&o=#ogX80kqmMk=(i#U|A`JFEN*%@?_83m^3kpi9<8owDo1W*c zSQ)m}UBBg-in7rSeKhTW=>TH)g7DK@`-d*<28C&7Kk5Y;`3hP+neHg5bns$yN7Cq!M++y#g1VkHThD*sA#I1lh+={zBA19_InJrm#atY zBURGM+ukd7tFI^I+gd42Z>RJpdy9#8c`K__bZxohnE2RkNGEluLeV&L#OhY6?98q! zXJy=k_=P*)^LKrsjJn+EDD{sQD@Gn6EMKj%b}feerhhUEwSBLfebaiOelM?MXa0em zslIKJpjIR&K&3;$#9ijawAWU*kw^z`Vq_ow;U>dN*m}+9|O;N5q0LrnRdyc1Wok z7r3O`BzaUt(mM3kZt)H|DsG~B?zwcWy-7A0llDoa+)duS>zu~oj~lAgZQ;qcdd&;Z zNVLm!IE)VoHk-x1p4~Mpkej}7ejD9s<7-y2hCwT(|k5tZJoV zi0TxV(-%^>CN{h=W-K{$xCX>nVrGhdv#`43*5))#-FfRU7>f7hs z5!W2-GBaL3=UJOPyXOm64y?FUCISOVhL#Av_>hxiwQ+V=)eUj^$ zN`#M#YwB$KV(X;MI#YO`8+LBwzH1W}zEA!h1${_{RLV+JpMx&CqxrE9`&z4UjrNHV z4@SvR>*NiwwN_buCN^1|`aTUu*SrwRs3D~m2H89MNU!90thx<^H9Oh2HMpen0$i(s j89PX;Cp5rk(?*R^WhCg_Cml7>Cy2F$oq4|Lo~VBT^T!2Y literal 0 HcmV?d00001 From f0962f36f6d5c95d6242f5ef5b563c74f1d61419 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 21:48:10 -0400 Subject: [PATCH 0248/1002] make consistent and avoid segfaults --- tools/lammps-gui/lammpswrapper.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index de66f82f6e..63d95d71b2 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -23,13 +23,13 @@ LammpsWrapper::LammpsWrapper() : lammps_handle(nullptr), plugin_handle(nullptr) void LammpsWrapper::open(int narg, char **args) { - if (!lammps_handle) { + // since there may only be one LAMMPS instance in LAMMPS GUI we don't open a second + if (lammps_handle) return; #if defined(LAMMPS_GUI_USE_PLUGIN) - lammps_handle = ((liblammpsplugin_t *)plugin_handle)->open_no_mpi(narg, args, nullptr); + lammps_handle = ((liblammpsplugin_t *)plugin_handle)->open_no_mpi(narg, args, nullptr); #else - lammps_handle = lammps_open_no_mpi(narg, args, nullptr); + lammps_handle = lammps_open_no_mpi(narg, args, nullptr); #endif - } } int LammpsWrapper::extract_setting(const char *keyword) @@ -58,15 +58,14 @@ int LammpsWrapper::id_count(const char *keyword) return val; } -int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int buflen) +int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int len) { int val = 0; if (lammps_handle) { #if defined(LAMMPS_GUI_USE_PLUGIN) - val = - ((liblammpsplugin_t *)plugin_handle)->id_name(lammps_handle, keyword, idx, buf, buflen); + val = ((liblammpsplugin_t *)plugin_handle)->id_name(lammps_handle, keyword, idx, buf, len); #else - val = lammps_id_name(lammps_handle, keyword, idx, buf, buflen); + val = lammps_id_name(lammps_handle, keyword, idx, buf, len); #endif } return val; @@ -79,7 +78,7 @@ double LammpsWrapper::get_thermo(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->get_thermo(lammps_handle, keyword); #else - val = lammps_get_thermo(lammps_handle, keyword); + val = lammps_get_thermo(lammps_handle, keyword); #endif } return val; @@ -92,7 +91,7 @@ void *LammpsWrapper::last_thermo(const char *keyword, int index) #if defined(LAMMPS_GUI_USE_PLUGIN) ptr = ((liblammpsplugin_t *)plugin_handle)->last_thermo(lammps_handle, keyword, index); #else - ptr = lammps_last_thermo(lammps_handle, keyword, index); + ptr = lammps_last_thermo(lammps_handle, keyword, index); #endif } return ptr; @@ -105,7 +104,7 @@ bool LammpsWrapper::is_running() #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->is_running(lammps_handle); #else - val = lammps_is_running(lammps_handle); + val = lammps_is_running(lammps_handle); #endif } return val != 0; @@ -143,6 +142,7 @@ bool LammpsWrapper::has_error() const #endif } +// may be called with null handle. returns global error then. int LammpsWrapper::get_last_error_message(char *buf, int buflen) { #if defined(LAMMPS_GUI_USE_PLUGIN) @@ -155,9 +155,9 @@ int LammpsWrapper::get_last_error_message(char *buf, int buflen) void LammpsWrapper::force_timeout() { #if defined(LAMMPS_GUI_USE_PLUGIN) - ((liblammpsplugin_t *)plugin_handle)->force_timeout(lammps_handle); + if (lammps_handle) ((liblammpsplugin_t *)plugin_handle)->force_timeout(lammps_handle); #else - lammps_force_timeout(lammps_handle); + if (lammps_handle) lammps_force_timeout(lammps_handle); #endif } From 4e604c2ccd60798a9d33971f1733af38d79d8f8a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 14 Aug 2023 22:05:32 -0400 Subject: [PATCH 0249/1002] remove OpenMPI hack. We have disabled MPIIO testing altogether. --- unittest/formats/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 58c797b6e6..93ea2f3b32 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -41,8 +41,6 @@ set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${ add_executable(test_file_operations test_file_operations.cpp) target_link_libraries(test_file_operations PRIVATE lammps GTest::GMock) add_test(NAME FileOperations COMMAND test_file_operations) -# try to mitigate possible OpenMPI bug -set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "OMPI_MCA_sharedfp=\"^sm\"") add_executable(test_dump_atom test_dump_atom.cpp) target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock) From 8bfa0b2b048e4d28b4d1df4446dedc2a0913a321 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 01:03:25 -0400 Subject: [PATCH 0250/1002] add option to query Update::setupflag to see if thermo data is valid --- src/library.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/library.cpp b/src/library.cpp index 0d8711c520..abc2dc3e0b 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -773,6 +773,10 @@ argument string. - Description of return value - Data type - Uses index + * - setup + - 1 if setup is not completed and thus thermo data invalid, 0 otherwise + - pointer to int + - no * - step - timestep when the last thermo output was generated or -1 - pointer to bigint @@ -811,7 +815,10 @@ void *lammps_last_thermo(void *handle, const char *what, int index) BEGIN_CAPTURE { - if (strcmp(what, "step") == 0) { + if (strcmp(what, "setup") == 0) { + val = (void *) &lmp->update->setupflag; + + } else if (strcmp(what, "step") == 0) { val = (void *) th->get_timestep(); } else if (strcmp(what, "num") == 0) { From 3bf70c1b977e53ee685f64c66691ec40eef35a01 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 01:05:54 -0400 Subject: [PATCH 0251/1002] various chart window updates and improvements - charts are reset if the thermo style changes - charts are reset if the timestep is reset (to a lower value) - charts are not updated if thermo data is not valid (e.g. during setup) - use integer format for Steps on the x-axis --- tools/lammps-gui/chartviewer.cpp | 26 ++++++++++++++++++++++++++ tools/lammps-gui/chartviewer.h | 8 +++++++- tools/lammps-gui/lammpsgui.cpp | 32 +++++++++++++++++++++++++++++--- 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 6d9bb02302..0b269a80ec 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -49,6 +49,31 @@ ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : resize(settings.value("chartx", 500).toInt(), settings.value("charty", 320).toInt()); } +int ChartWindow::get_step() const +{ + if (charts.size() > 0) { + auto *v = charts[0]; + return (int)v->get_step(v->get_count()-1); + } else { + return -1; + } +} + +void ChartWindow::reset_charts() +{ + while (layout()->count() > 1) { + auto *item = layout()->takeAt(1); + if (item) { + layout()->removeItem(item); + delete item->widget(); + delete item; + } + } + charts.clear(); + columns->clear(); + active_chart = 0; +} + void ChartWindow::add_chart(const QString &title, int index) { auto *chart = new ChartViewer(title, index); @@ -182,6 +207,7 @@ ChartViewer::ChartViewer(const QString &title, int _index, QWidget *parent) : series->attachAxis(yaxis); xaxis->setTitleText("Time step"); xaxis->setTickCount(5); + xaxis->setLabelFormat("%d"); yaxis->setTickCount(5); xaxis->setMinorTickCount(5); yaxis->setMinorTickCount(5); diff --git a/tools/lammps-gui/chartviewer.h b/tools/lammps-gui/chartviewer.h index e440330b2b..22f52a82d6 100644 --- a/tools/lammps-gui/chartviewer.h +++ b/tools/lammps-gui/chartviewer.h @@ -31,7 +31,13 @@ class ChartWindow : public QWidget { public: ChartWindow(const QString &filename, QWidget *parent = nullptr); - bool has_charts() const { return !charts.isEmpty(); } + int num_charts() const { return charts.size(); } + bool has_title(const QString &title, int index) const + { + return (columns->itemText(index) == title); + } + int get_step() const; + void reset_charts(); void add_chart(const QString &title, int index); void add_data(int step, double data, int index); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 1a27b7c743..385e3331b4 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -558,7 +558,11 @@ void LammpsGui::logupdate() // extract cached thermo data if (chartwindow) { - void *ptr = lammps.last_thermo("step", 0); + // thermo data is not yet valid during setup + void *ptr = lammps.last_thermo("setup", 0); + if (ptr && *(int *)ptr) return; + + ptr = lammps.last_thermo("step", 0); if (ptr) { int step = 0; if (lammps.extract_setting("bigint") == 4) @@ -566,7 +570,29 @@ void LammpsGui::logupdate() else step = (int)*(int64_t *)ptr; int ncols = *(int *)lammps.last_thermo("num", 0); - if (!chartwindow->has_charts()) { + + // check if the column assignment has changed + // if yes, delete charts and start over + if (chartwindow->num_charts() > 0) { + int count = 0; + bool do_reset = false; + if (step < chartwindow->get_step()) do_reset = true; + for (int i = 0, idx = 0; i < ncols; ++i) { + QString label = (const char *)lammps.last_thermo("keyword", i); + // no need to store the timestep column + if (label == "Step") continue; + if (!chartwindow->has_title(label, idx)) { + do_reset = true; + } else { + ++count; + } + ++idx; + } + if (chartwindow->num_charts() != count) do_reset = true; + if (do_reset) chartwindow->reset_charts(); + } + + if (chartwindow->num_charts() == 0) { for (int i = 0; i < ncols; ++i) { QString label = (const char *)lammps.last_thermo("keyword", i); // no need to store the timestep column @@ -622,7 +648,7 @@ void LammpsGui::run_done() step = (int)*(int64_t *)ptr; int ncols = *(int *)lammps.last_thermo("num", 0); for (int i = 0; i < ncols; ++i) { - if (!chartwindow->has_charts()) { + if (chartwindow->num_charts() == 0) { QString label = (const char *)lammps.last_thermo("keyword", i); // no need to store the timestep column if (label == "Step") continue; From dedddee70af59461f8a0cb7e43c7e4fec12f0058 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 01:06:15 -0400 Subject: [PATCH 0252/1002] no point in removing a null pointer item --- tools/lammps-gui/setvariables.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/setvariables.cpp b/tools/lammps-gui/setvariables.cpp index 1e9b28ec6a..a63832fc57 100644 --- a/tools/lammps-gui/setvariables.cpp +++ b/tools/lammps-gui/setvariables.cpp @@ -101,8 +101,8 @@ void SetVariables::del_row() auto *row = layout->takeAt(delrow); while (row->layout()->count() > 0) { auto *item = row->layout()->takeAt(0); - row->layout()->removeItem(item); if (item) { + row->layout()->removeItem(item); delete item->widget(); delete item; } From 0c7f56e8818683afd3c02dcb423fb8ad4ad72414 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 02:21:05 -0400 Subject: [PATCH 0253/1002] imageviewer updates - new zoom icons - resetview option - properly track pushbutton checked state - add preferences options for selecting background and box color --- tools/lammps-gui/chartviewer.cpp | 2 +- tools/lammps-gui/gtk-zoom-fit.png | Bin 1405 -> 5153 bytes tools/lammps-gui/gtk-zoom-in.png | Bin 1224 -> 5006 bytes tools/lammps-gui/gtk-zoom-out.png | Bin 1172 -> 4829 bytes tools/lammps-gui/imageviewer.cpp | 58 +++++++++++++++++++++-------- tools/lammps-gui/imageviewer.h | 1 + tools/lammps-gui/lammpswrapper.cpp | 12 +++--- tools/lammps-gui/preferences.cpp | 38 +++++++++++++++++-- 8 files changed, 85 insertions(+), 26 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 0b269a80ec..d9fedd9129 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -53,7 +53,7 @@ int ChartWindow::get_step() const { if (charts.size() > 0) { auto *v = charts[0]; - return (int)v->get_step(v->get_count()-1); + return (int)v->get_step(v->get_count() - 1); } else { return -1; } diff --git a/tools/lammps-gui/gtk-zoom-fit.png b/tools/lammps-gui/gtk-zoom-fit.png index 35994e8bc76a0c7032bb4432a2986729c1f69c19..9132294eac62905f27d5ed0fe4c48228fa8c306e 100644 GIT binary patch literal 5153 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 literal 1405 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 diff --git a/tools/lammps-gui/gtk-zoom-out.png b/tools/lammps-gui/gtk-zoom-out.png index 72e6eb43c6884e051ef8858bf5e0f08189458983..42acdd993dbaf40352db43d488801ea9294bf7d3 100644 GIT binary patch literal 4829 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 literal 1172 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s%*9TgAsieWw;%dH0CG7CJR*yM z%CCbkqm#z$3ZS55iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vqAVndW zB{``KQTh3~dl*Btfud?4QODAfjQk=7uf*)qB!%FT)XcopA{_;v#DaVU=fs@E+{C<; zqSQ>0kdMn57#L3k_=LDtRDkTo5BBfh4^*)6$VU9iFl8kqB!Gglva*;`aFJd6wx_43 z?B2IEEi>83*ucO@Z|{L!`ws3-&rI8UU}t(pYH3BuzJnll$j-u3Pi+)r-WW_{8M+vWnu``l|Yd znwGZ4mbRwOp7!qEj{b=~lcw}fo;G2|?5Q*7Oq;u4)}p2Jm#ReC5*h>(_4GzIpr3tvh#b-@A9`-u=4|AKriX=>C%@ zkDfez{OtMD=g*%3t$y|D(?(|zkdDp?c4Y7K=l3lkMBQzeE<3L$IqWXfBpLT`}eQkzkmPv z14MuR{{8#!-@pI=|Nq(W?-npjy-I@of*BZ@m|0la*f}`4xOsSa`2_@pghfQf#3dwU zEamTas2HRYj0*pk=FBbZ=P-b!64tEAXJkexaO^nuFjSC>_pY5&aGyP6gtH0 z6jFSX%AUn>`)+!7M=<+q$>DkV=VtD<=Kk|KzoV=BnoH?iFSea8)5NU|wp#5rR(v?^ z=EcvUW>L33PCnbp{Ms^PX=!|QK*QOewTg>7HWWtJ^E6JiJ-vwg?CaeNbtM_M{!%cL zjQ1C0^4;-5M|<^h#e@fsFPnQcak&3g;$k?r*dcMX;Q^ubAsqT)MGnq|``xrStsBlW z{h!7hk;FN#%=@47`y|djMzg03hj}da3Ozo3{D&fUUuY6r&5Q^8Srhu}=NzzPj^I9i z%3<9;cKrjwA(f_#Y=N1aIgc6wwQJc|OwEzm5aqO6nB7XB>q7SVBYG~sj5L^8zO0{K z^=qzi?`J(mqmm|uO~setObjectName("group"); int ngroup = lammps->id_count("group"); @@ -93,6 +94,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(rotright); menuLayout->addWidget(rotup); menuLayout->addWidget(rotdown); + menuLayout->addWidget(reset); menuLayout->addWidget(new QLabel(" Group: ")); menuLayout->addWidget(combo); @@ -106,26 +108,20 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge connect(rotright, &QPushButton::released, this, &ImageViewer::do_rot_right); connect(rotup, &QPushButton::released, this, &ImageViewer::do_rot_up); connect(rotdown, &QPushButton::released, this, &ImageViewer::do_rot_down); + connect(reset, &QPushButton::released, this, &ImageViewer::reset_view); connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(change_group(int))); mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); - setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).completeBaseName()); - - QSettings settings; - settings.beginGroup("snapshot"); - zoom = settings.value("zoom", 1.0).toDouble(); - hrot = settings.value("hrot", 60).toInt(); - vrot = settings.value("vrot", 30).toInt(); - showbox = settings.value("box", true).toBool(); - dobox->setChecked(showbox); - showaxes = settings.value("axes", false).toBool(); - doaxes->setChecked(showaxes); - settings.endGroup(); - + setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).fileName()); createActions(); - createImage(); + + reset_view(); + dobox->setChecked(showbox); + doaxes->setChecked(showaxes); + dossao->setChecked(usessao); + doanti->setChecked(antialias); scaleFactor = 1.0; resize(image.width() + 20, image.height() + 50); @@ -137,6 +133,37 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge setLayout(mainLayout); } +void ImageViewer::reset_view() +{ + QSettings settings; + settings.beginGroup("snapshot"); + zoom = settings.value("zoom", 1.0).toDouble(); + hrot = settings.value("hrot", 60).toInt(); + vrot = settings.value("vrot", 30).toInt(); + showbox = settings.value("box", true).toBool(); + showaxes = settings.value("axes", false).toBool(); + usessao = settings.value("ssao", false).toBool(); + antialias = settings.value("antialias", false).toBool(); + settings.endGroup(); + + // reset state of checkable push buttons (only after main layout is set up) + auto *lo = layout(); + if (lo) { + lo = lo->itemAt(0)->layout(); + auto *button = qobject_cast(lo->itemAt(1)->widget()); + button->setChecked(usessao); + button = qobject_cast(lo->itemAt(2)->widget()); + button->setChecked(antialias); + button = qobject_cast(lo->itemAt(3)->widget()); + button->setChecked(showbox); + button = qobject_cast(lo->itemAt(4)->widget()); + button->setChecked(showaxes); + auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); + cb->setCurrentText("all"); + } + createImage(); +} + void ImageViewer::toggle_ssao() { QPushButton *button = qobject_cast(sender()); @@ -251,7 +278,8 @@ void ImageViewer::createImage() else dumpcmd += QString(" axes no 0.0 0.0"); - dumpcmd += " modify boxcolor silver"; + dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString(); + dumpcmd += " backcolor " + settings.value("background", "black").toString(); settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 1a4327561b..b81e5b0d59 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -45,6 +45,7 @@ private slots: void normalSize(); void fitToWindow(); + void reset_view(); void toggle_ssao(); void toggle_anti(); void toggle_box(); diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 63d95d71b2..8bc6173752 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -39,7 +39,7 @@ int LammpsWrapper::extract_setting(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->extract_setting(lammps_handle, keyword); #else - val = lammps_extract_setting(lammps_handle, keyword); + val = lammps_extract_setting(lammps_handle, keyword); #endif } return val; @@ -52,7 +52,7 @@ int LammpsWrapper::id_count(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->id_count(lammps_handle, keyword); #else - val = lammps_id_count(lammps_handle, keyword); + val = lammps_id_count(lammps_handle, keyword); #endif } return val; @@ -65,7 +65,7 @@ int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int len) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->id_name(lammps_handle, keyword, idx, buf, len); #else - val = lammps_id_name(lammps_handle, keyword, idx, buf, len); + val = lammps_id_name(lammps_handle, keyword, idx, buf, len); #endif } return val; @@ -78,7 +78,7 @@ double LammpsWrapper::get_thermo(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->get_thermo(lammps_handle, keyword); #else - val = lammps_get_thermo(lammps_handle, keyword); + val = lammps_get_thermo(lammps_handle, keyword); #endif } return val; @@ -91,7 +91,7 @@ void *LammpsWrapper::last_thermo(const char *keyword, int index) #if defined(LAMMPS_GUI_USE_PLUGIN) ptr = ((liblammpsplugin_t *)plugin_handle)->last_thermo(lammps_handle, keyword, index); #else - ptr = lammps_last_thermo(lammps_handle, keyword, index); + ptr = lammps_last_thermo(lammps_handle, keyword, index); #endif } return ptr; @@ -104,7 +104,7 @@ bool LammpsWrapper::is_running() #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->is_running(lammps_handle); #else - val = lammps_is_running(lammps_handle); + val = lammps_is_running(lammps_handle); #endif } return val != 0; diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index f003545764..45d7414140 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -120,6 +120,10 @@ void Preferences::accept() if (box) settings->setValue("box", box->isChecked()); box = tabWidget->findChild("axes"); if (box) settings->setValue("axes", box->isChecked()); + QComboBox *combo = tabWidget->findChild("background"); + if (combo) settings->setValue("background", combo->currentText()); + combo = tabWidget->findChild("boxcolor"); + if (combo) settings->setValue("boxcolor", combo->currentText()); settings->endGroup(); // general settings @@ -367,6 +371,8 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *ssao = new QLabel("HQ Image mode:"); auto *bbox = new QLabel("Show Box:"); auto *axes = new QLabel("Show Axes:"); + auto *cback = new QLabel("Background Color:"); + auto *cbox = new QLabel("Box Color:"); settings->beginGroup("snapshot"); auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); @@ -383,7 +389,6 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : bval->setObjectName("box"); eval->setCheckState(settings->value("axes", false).toBool() ? Qt::Checked : Qt::Unchecked); eval->setObjectName("axes"); - settings->endGroup(); auto *intval = new QIntValidator(100, 100000, this); xval->setValidator(intval); @@ -393,6 +398,26 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : zval->setValidator(new QDoubleValidator(0.01, 100.0, 100, this)); zval->setObjectName("zoom"); + auto *background = new QComboBox; + background->setObjectName("background"); + background->addItem("black"); + background->addItem("white"); + background->addItem("darkgray"); + background->addItem("gray"); + background->addItem("silver"); + background->setCurrentText(settings->value("background", "black").toString()); + + auto *boxcolor = new QComboBox; + boxcolor->setObjectName("boxcolor"); + boxcolor->addItem("yellow"); + boxcolor->addItem("silver"); + boxcolor->addItem("gray"); + boxcolor->addItem("red"); + boxcolor->addItem("green"); + boxcolor->addItem("blue"); + boxcolor->setCurrentText(settings->value("boxcolor", "yellow").toString()); + settings->endGroup(); + grid->addWidget(xsize, 0, 0, Qt::AlignTop); grid->addWidget(ysize, 1, 0, Qt::AlignTop); grid->addWidget(zoom, 2, 0, Qt::AlignTop); @@ -400,6 +425,8 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(ssao, 4, 0, Qt::AlignTop); grid->addWidget(bbox, 5, 0, Qt::AlignTop); grid->addWidget(axes, 6, 0, Qt::AlignTop); + grid->addWidget(cback, 7, 0, Qt::AlignTop); + grid->addWidget(cbox, 8, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); @@ -407,9 +434,12 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(sval, 4, 1, Qt::AlignVCenter); grid->addWidget(bval, 5, 1, Qt::AlignVCenter); grid->addWidget(eval, 6, 1, Qt::AlignVCenter); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 7, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 7, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 7, 2); + grid->addWidget(background, 7, 1, Qt::AlignVCenter); + grid->addWidget(boxcolor, 8, 1, Qt::AlignVCenter); + + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 9, 2); setLayout(grid); } From 263db3d13c18cbf8c0130bb9fb9694e580c7b9c7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 02:26:54 -0400 Subject: [PATCH 0254/1002] avoid lengthy accelerator details with Nvidia GPUs --- tools/lammps-gui/imageviewer.cpp | 7 +++++-- tools/lammps-gui/lammpsgui.cpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index d3db3e0d99..a6a661880d 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -146,10 +146,12 @@ void ImageViewer::reset_view() antialias = settings.value("antialias", false).toBool(); settings.endGroup(); - // reset state of checkable push buttons (only after main layout is set up) + // reset state of checkable push buttons and combo box (after main layout is set up) auto *lo = layout(); if (lo) { - lo = lo->itemAt(0)->layout(); + // grab layout manager for the top bar + lo = lo->itemAt(0)->layout(); + // grab the first 4 buttons after the menu bar auto *button = qobject_cast(lo->itemAt(1)->widget()); button->setChecked(usessao); button = qobject_cast(lo->itemAt(2)->widget()); @@ -158,6 +160,7 @@ void ImageViewer::reset_view() button->setChecked(showbox); button = qobject_cast(lo->itemAt(4)->widget()); button->setChecked(showaxes); + // grab the last entry -> group selector auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); cb->setCurrentText("all"); } diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 385e3331b4..0c76d65695 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -850,7 +850,7 @@ void LammpsGui::about() if (!lammps.is_running()) { start_lammps(); capturer->BeginCapture(); - lammps.command("info accel config"); + lammps.command("info config"); capturer->EndCapture(); info = capturer->GetCapture(); auto start = info.find("LAMMPS version:"); From 62547ccde5b6a3a10130e8bb06258dbe784b2d99 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 05:35:34 -0400 Subject: [PATCH 0255/1002] update quick help and TODO list --- tools/lammps-gui/TODO.md | 5 +-- tools/lammps-gui/lammpsgui.cpp | 70 ++++++++++++++++++---------------- tools/lammps-gui/lammpsgui.ui | 2 +- 3 files changed, 41 insertions(+), 36 deletions(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index ad98b29c87..d9581e3ae6 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,7 +2,6 @@ LAMMPS-GUI TODO list: # Short term goals -- write LAMMPS GUI Howto showing/explaining options -> simplify docs and readme - rewrite syntax highlighting to be line oriented instead of word oriented. handle first part of line based on regular expressions, then advance and only highlight strings and numbers. handle "&" continuation and multiline strings with """ like C style comments in Qt docs example @@ -11,7 +10,6 @@ LAMMPS-GUI TODO list: - need to handle "label" and "jump" commands from within ? - switch processing of input to line based commands or? - switch input file editor to read-only while loop is running -- embed all icons/graphics # Long term ideas - add feature to LAMMPS (to the LAMMPS class) to store current file name and line number, update while reading/parsing @@ -25,4 +23,5 @@ LAMMPS-GUI TODO list: - support single stepping, i.e. process input line by line (need to detect continuation chars!) with highlighting active line(s) - have command text input file in/above status bar where individual commands can be tested. have insert button to copy line into file at the current point - support text completion as done with lammps-shell -- add a "python" mode, where instead of launching LAMMPS, python is loaded that the LAMMPS python module is made available. +- add a "python" mode, where instead of launching LAMMPS, python is loaded where the LAMMPS python module is made available. +- support multiple tabs and multiple LAMMPS instances? diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 0c76d65695..93c3f1dc80 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -880,38 +880,44 @@ void LammpsGui::help() QMessageBox msg; msg.setWindowTitle("LAMMPS-GUI Quick Help"); msg.setText("

"); - msg.setInformativeText("Overview" - "
LAMMPS GUI is a graphical text editor that is " - "linked to the LAMMPS library and thus can run LAMMPS directly using " - "the contents of the text buffer as input through the LAMMPS C-library " - "interface. This makes it convenient to use for beginners and during " - "tutorials


" - "Features" - "
The main window of the LAMMPS GUI is a text " - "editor window with syntax highlighting. The output of a LAMMPS run is " - "captured and displayed in a log window. The log window is updated " - "regularly during the run, as is a progress bar in the main window. " - "After the simulation is finished, an image of the simulated system " - "can be created and shown (and saved) in image viewer window. Ongoing " - "runs can be stopped at the next run iteration.

" - "
When opening a file, the editor will determine " - "the directory where the input file resides and switch its current " - "working directory to that same folder. Many LAMMPS inputs contain " - "commands that read other files, typically from the folder as the " - "input file. The GUI will show its current working directory. " - "In addition to using the menu, the editor window also receive files " - "as the first command line argument or via drag-n-drop from a " - "graphical file manager GUI or a desktop environment.

" - "
Almost all commands are accessible via hotkeys. " - "Which those hotkeys are, is shown next to the entries in the menus. " - "Log and image viewer windows can be closed with CTRL-W (or Command-W " - "on macOS).

" - "
The 'About LAMMPS' dialog will show the " - "LAMMPS version and the features included into the LAMMPS library " - "linked to the LAMMPS GUI.

" - "Due to its nature as a graphical application, it is not " - "possible to use the LAMMPS GUI in parallel with MPI, but OpenMP " - "multi-threading is available.
"); + msg.setInformativeText("

LAMMPS GUI is a graphical text editor that is linked to the LAMMPS " + "library and thus can run LAMMPS directly using the contents of the " + "text buffer as input through the LAMMPS C-library interface.

" + "

The main window of the LAMMPS GUI is a text editor window with " + "LAMMPS specific syntax highlighting. When typing Ctrl-Enter " + "or clicking on 'Run LAMMMPS' in the 'Run' menu, LAMMPS will be run " + "with the contents of editor buffer as input. The output of the LAMMPS " + "run is captured and displayed in a log window. The thermodynamic data " + "is displayed in a chart window. Both are updated regularly during the " + "run, as is a progress bar in the main window. The running simulation " + "can be stopped cleanly by typing Ctrl-/ or by clicking on " + "'Stop LAMMPS' in the 'Run' menu. After the simulation is finished " + "or stopped, an image of the simulated system can be shown in an image " + "viewer window by typing Ctrl-i or by clicking on 'View Image' " + "in the 'Run' menu. Multiple image settings can be changed through the " + "buttons in the menu bar and the image will be re-renderd.

" + "

When opening a file, the editor will determine the directory " + "where the input file resides and switch its current working directory " + "to that same folder and thus enabling the run to read other files in " + "that folder, e.g. a data file .The GUI will show its current working " + "directory in the status bar. In addition to using the menu, the " + "editor window can also receive files as the first command line " + "argument or via drag-n-drop from a graphical file manager or a " + "desktop environment.

" + "

Almost all commands are accessible via hotkeys. Which those " + "hotkeys are, is typically shown next to their entries in the menus. " + "In addition, the documentation for the command in the current line " + "can be viewed by typing Ctrl-? or by choosing the respective " + "entry in the context menu, available by right-clicking the mouse. " + "Log, chart, and image windows can be closed with Ctrl-W, the " + "main window with Ctrl-Q.

" + "

The 'About LAMMPS' dialog will show the LAMMPS version and the " + "features included into the LAMMPS library linked to the LAMMPS GUI. " + "A number of settings can be adjusted in the 'Preferences' dialog (in " + "the 'Edit' menu or from Ctrl-P) which includes selecting " + "accelerator packages and number of OpenMP threads. Due to its nature " + "as a graphical application, it is not possible to use the " + "LAMMPS GUI in parallel with MPI.

"); msg.setIconPixmap(QPixmap(":/lammps-icon-128x128.png").scaled(64, 64)); msg.setStandardButtons(QMessageBox::Close); msg.exec(); diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 06a366387f..14fad503d7 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -246,7 +246,7 @@ - &About LAMMPS-GUI + &About LAMMPS Ctrl+Shift+A From afd5f6a818d7d8c943b4c658f1b410edcec8fefd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 06:08:39 -0400 Subject: [PATCH 0256/1002] some more image settings tweaks --- tools/lammps-gui/preferences.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 45d7414140..abee4eb6bb 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -401,10 +401,10 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *background = new QComboBox; background->setObjectName("background"); background->addItem("black"); - background->addItem("white"); background->addItem("darkgray"); background->addItem("gray"); background->addItem("silver"); + background->addItem("white"); background->setCurrentText(settings->value("background", "black").toString()); auto *boxcolor = new QComboBox; @@ -412,9 +412,9 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : boxcolor->addItem("yellow"); boxcolor->addItem("silver"); boxcolor->addItem("gray"); - boxcolor->addItem("red"); - boxcolor->addItem("green"); - boxcolor->addItem("blue"); + boxcolor->addItem("darkred"); + boxcolor->addItem("darkgreen"); + boxcolor->addItem("darkblue"); boxcolor->setCurrentText(settings->value("boxcolor", "yellow").toString()); settings->endGroup(); From a5b2461e362a6008c8aaa8c9188ebe225d87db4f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 06:08:57 -0400 Subject: [PATCH 0257/1002] update docs --- doc/src/Howto_lammps_gui.rst | 76 ++++++++++++----------- doc/src/JPG/lammps-gui-image.png | Bin 116597 -> 83305 bytes doc/src/JPG/lammps-gui-prefs-general.png | Bin 53214 -> 53003 bytes doc/src/JPG/lammps-gui-prefs-image.png | Bin 37740 -> 45469 bytes doc/src/Tools.rst | 18 +++--- 5 files changed, 48 insertions(+), 46 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index b3ef4d8850..dbc8baf5d3 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -1,29 +1,30 @@ Using the LAMMPS GUI ==================== -LAMMPS GUI is essentially a simple graphical text editor that is linked -to the :ref:`LAMMPS C-library interface ` and thus can run -LAMMPS directly using the contents of the editor's text buffer as input. +LAMMPS GUI is a simple graphical text editor that is linked to the +:ref:`LAMMPS C-library interface ` and thus can run LAMMPS +directly using the contents of the editor's text buffer as input. -This is similar to what people usually would do to run LAMMPS using a -regular text editor to edit the input and run the necessary command, -possibly including the text editor, from a command line terminal window. -That is quite effective when running LAMMPS on high-performance -computing facilities and when you are very proficient with using the -command line. The main benefit of a GUI application is that this -integrates very well with graphical desktop environments and many basic -tasks can be done directly from within the GUI without switching to a -text console and requiring external programs or scripts to extract data -from the generated output. This makes it easier for beginners to get -started running simple LAMMPS simulation and thus very suitable for -tutorials on LAMMPS and then makes it easier to switch to a full +This is similar to what people traditionally would do to run LAMMPS: +using a regular text editor to edit the input and run the necessary +commands, possibly including the text editor, too, from a command line +terminal window. That is quite effective when running LAMMPS on +high-performance computing facilities and when you are very proficient +in using the command line. The main benefit of a GUI application is +that this integrates well with graphical desktop environments and many +basic tasks can be done directly from within the GUI without switching +to a text console or requiring external programs or scripts to extract +data from the generated output. This makes it easier for beginners to +get started running simple LAMMPS simulations and thus very suitable for +tutorials on LAMMPS. But also makes it easier to switch to a full featured text editor and more sophisticated visualization and analysis tools. ----- The following text provides a detailed tour of the features and -functionality of the LAMMPS GUI. +functionality of the LAMMPS GUI. This document describes LAMMPS GUI +version 1.2. Main window ----------- @@ -38,19 +39,19 @@ the following: There is the menu bar at the top, then the main editor buffer with the input file contents in the center with line numbers on the left and the -input colored according to some LAMMPS syntax rules. At the bottom is -the status bar, which shows the status of LAMMPS execution on the right -("Ready." when idle) and the current working directory on the left. -The size of the main window will be stored when exiting and restored -when starting again. The name of the current file in the buffer is -shown in the window title and the text `*modified*` is added in case -the buffer has modifications that are not yet saved to a file. +input colored according to the LAMMPS input file syntax. At the bottom +is the status bar, which shows the status of LAMMPS execution on the +left ("Ready." when idle) and the current working directory on the +right. The size of the main window will be stored when exiting and +restored when starting again. The name of the current file in the +buffer is shown in the window title and the text `*modified*` is added +in case the buffer has modifications that are not yet saved to a file. Opening Files ^^^^^^^^^^^^^ The LAMMPS GUI application will try to open the first command line -argument as input file; further arguments are ignored. When no +argument as input file, further arguments are ignored. When no argument is given LAMMPS GUI will start with an empty buffer. Files can also be opened via the ``File`` menu or by drag-and-drop of a file from a file manager to the editor window. Only one @@ -64,18 +65,18 @@ Running LAMMPS ^^^^^^^^^^^^^^ From within the LAMMPS GUI main window LAMMPS can be started either from -the ``Run`` menu or by the hotkey `Ctrl-Enter` (`Command-Enter` on macOS). -LAMMPS is running in a separate thread, so the GUI will stay responsive -yet is capable to interact with the calculation and access its data. -It is important to note, that LAMMPS is using the contents of the input -buffer for the run, **not** the file. Thus if there are unsaved changes -in the buffer, they will be used. +the ``Run`` menu or by the hotkey `Ctrl-Enter` (`Command-Enter` on +macOS). LAMMPS is running in a separate thread, so the GUI will stay +responsive and thus is capable to interact with the calculation and +access its data. It is important to note, that LAMMPS is using the +contents of the input buffer for the run, **not** the file it was read +from. If there are unsaved changes in the buffer, they *will* be used. .. image:: JPG/lammps-gui-running.png :align: center :scale: 75% -While LAMMPS is running the contents of the status bar change: on the +While LAMMPS is running, the contents of the status bar change: on the left side there is a text indicating that LAMMPS is running, which will contain the selected number of threads, if thread-parallel acceleration was selected in the ``Preferences`` dialog. On the right side, a @@ -105,12 +106,13 @@ snapshot image into an image viewer window. :align: center :scale: 50% -The image size and some image quality settings can be changed in the -``Preferences`` dialog window. From the image viewer window further -adjustments can be made: the image can be rotated, one can zoom in -or out, and it is possible to only display the atoms within a predefined -group (default is "all"). After each change the image is rendered -again and the display updated. +The image size, some default image quality settings, and some colors +can be changed in the ``Preferences`` dialog window. From the image +viewer window further adjustments can be made: high-quality rendering, +antialiasing, display of box or axes, zoom factor. The the image can +be rotated horizontally and vertically and it is possible to only +display the atoms within a predefined group (default is "all"). +After each change, the image is rendered again and the display updated. Editor Functions diff --git a/doc/src/JPG/lammps-gui-image.png b/doc/src/JPG/lammps-gui-image.png index dd77ce43018580abb98d899ee805027c0ac1155d..34acdf12aa57b61d3467222801bbb1d1ed89ae0b 100644 GIT binary patch literal 83305 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 cO+^Ri2n`J=C}qEgg#Z8m07*qoM6N<$f@@fh` and thus can run -LAMMPS directly using the contents of the editor's text buffer as input. +LAMMPS GUI is a simple graphical text editor that is linked to the +:ref:`LAMMPS C-library interface ` and thus can run LAMMPS +directly using the contents of the editor's text buffer as input. -This is similar to what people usually would do to run LAMMPS using a -regular text editor to edit the input and running the necessary -commands, possibly including the text editor, from a command line -terminal window. And this similarity is a design goal, making it easy -for beginners to start with LAMMPS, but also making it easy to -transition to use LAMMPS like most experienced users do. +This is similar to what people traditionally would do to run LAMMPS: +using a regular text editor to edit the input and run the necessary +commands, possibly including the text editor, too, from a command line +terminal window. This similarity is a design goal. While making it easy +for beginners to start with LAMMPS, it is also the intention to simplify +the transition to workflows like most experienced LAMMPS users do. All features have been extensively exposed to hotkeys, so that there is also appeal for experienced LAMMPS users, too, especially for From cd9a5f8d8ca492f773b4666fa623c21b6df5bd26 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 06:09:34 -0400 Subject: [PATCH 0258/1002] make darkgray *really* dark gray, i.e. darker than gray --- src/image.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/image.cpp b/src/image.cpp index 582394706c..0f31ae9927 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -1384,7 +1384,7 @@ double *Image::color2rgb(const char *color, int index) {0/255.0, 0/255.0, 139/255.0}, {0/255.0, 139/255.0, 139/255.0}, {184/255.0, 134/255.0, 11/255.0}, - {169/255.0, 169/255.0, 169/255.0}, + {69/255.0, 69/255.0, 69/255.0}, {0/255.0, 100/255.0, 0/255.0}, {189/255.0, 183/255.0, 107/255.0}, {139/255.0, 0/255.0, 139/255.0}, From e886d0119029eb143938da677a903f9feb12e84a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 08:04:01 -0400 Subject: [PATCH 0259/1002] add View in OVITO and View in VMD entries to Run menu --- tools/lammps-gui/lammpsgui.cpp | 89 +++++++++++++++++++++++++++++++++ tools/lammps-gui/lammpsgui.h | 1 + tools/lammps-gui/lammpsgui.qrc | 2 + tools/lammps-gui/lammpsgui.ui | 24 +++++++++ tools/lammps-gui/ovito.png | Bin 0 -> 7080 bytes tools/lammps-gui/vmd.png | Bin 0 -> 4332 bytes 6 files changed, 116 insertions(+) create mode 100644 tools/lammps-gui/ovito.png create mode 100644 tools/lammps-gui/vmd.png diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 93c3f1dc80..254312ca67 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -32,10 +32,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -60,6 +62,34 @@ static char *mystrdup(const std::string &text) return tmp; } +// find if executable is in path +// https://stackoverflow.com/a/51041497 + +static bool has_exe(const QString &exe) +{ + QProcess findProcess; + QStringList arguments; + arguments << exe; +#if defined(_WIN32) + findProcess.start("where", arguments); +#else + findProcess.start("which", arguments); +#endif + findProcess.setReadChannel(QProcess::ProcessChannel::StandardOutput); + + if (!findProcess.waitForFinished()) return false; // Not found or which does not work + + QString retStr(findProcess.readAll()); + retStr = retStr.trimmed(); + + QFile file(retStr); + QFileInfo check_file(file); + if (check_file.exists() && check_file.isFile()) + return true; // Found! + else + return false; // Not found! +} + LammpsGui::LammpsGui(QWidget *parent, const char *filename) : QMainWindow(parent), ui(new Ui::LammpsGui), highlighter(nullptr), capturer(nullptr), status(nullptr), logwindow(nullptr), imagewindow(nullptr), chartwindow(nullptr), @@ -140,6 +170,12 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : update_recents(); + // check if we have OVITO and VMD installed and deacivate actions if not + ui->actionView_in_OVITO->setEnabled(has_exe("ovito")); + ui->actionView_in_OVITO->setData("ovito"); + ui->actionView_in_VMD->setEnabled(has_exe("vmd")); + ui->actionView_in_VMD->setData("vmd"); + connect(ui->actionNew, &QAction::triggered, this, &LammpsGui::new_document); connect(ui->actionOpen, &QAction::triggered, this, &LammpsGui::open); connect(ui->actionSave, &QAction::triggered, this, &LammpsGui::save); @@ -160,6 +196,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); connect(ui->actionPreferences, &QAction::triggered, this, &LammpsGui::preferences); connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); + connect(ui->actionView_in_OVITO, &QAction::triggered, this, &LammpsGui::start_exe); + connect(ui->actionView_in_VMD, &QAction::triggered, this, &LammpsGui::start_exe); connect(ui->actionView_Log_Window, &QAction::triggered, this, &LammpsGui::view_log); connect(ui->actionView_Graph_Window, &QAction::triggered, this, &LammpsGui::view_chart); connect(ui->actionView_Image_Window, &QAction::triggered, this, &LammpsGui::view_image); @@ -259,6 +297,57 @@ void LammpsGui::open_recent() if (act) open_file(act->data().toString()); } +void LammpsGui::start_exe() +{ + if (!lammps.extract_setting("box_exists")) return; + QAction *act = qobject_cast(sender()); + if (act) { + auto exe = act->data().toString(); + QString datacmd = "write_data "; + QDir datadir(QDir::tempPath()); + QFile datafile(datadir.absoluteFilePath(current_file + ".data")); + datacmd += datafile.fileName(); + if (exe == "vmd") { + QStringList args; + QFile vmdfile(datadir.absoluteFilePath(current_file + ".vmd")); + vmdfile.open(QIODevice::WriteOnly); + vmdfile.write("package require topotools\n"); + vmdfile.write("topo readlammpsdata "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write("\ntopo guessatom lammps data\n"); + vmdfile.write("animate write psf "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".psf\nanimate write dcd "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".dcd\nmol delete top\nmol new "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".psf type psf waitfor all\nmol addfile "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".dcd type dcd waitfor all\nfile delete "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(" "); + vmdfile.write(vmdfile.fileName().toLocal8Bit()); + vmdfile.write(" "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".dcd "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".psf\n"); + vmdfile.close(); + args << "-e" << vmdfile.fileName(); + lammps.command(datacmd.toLocal8Bit()); + auto *vmd = new QProcess(this); + vmd->start(exe, args); + } + if (exe == "ovito") { + QStringList args; + args << datafile.fileName(); + lammps.command(datacmd.toLocal8Bit()); + auto *ovito = new QProcess(this); + ovito->start(exe, args); + } + } +} + void LammpsGui::update_recents(const QString &filename) { QSettings settings; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index d6e9ceb086..5fed14d743 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -66,6 +66,7 @@ private slots: void new_document(); void open(); void open_recent(); + void start_exe(); void save(); void save_as(); void quit(); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index d718634452..88526719f0 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -41,5 +41,7 @@ axes-img.png hd-img.png antialias.png + ovito.png + vmd.png diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 14fad503d7..6bda61dbb4 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -73,6 +73,8 @@ + + @@ -293,6 +295,28 @@ Reset to &Defaults + + + + + + View in &OVITO + + + Ctrl+Shift+O + + + + + + + + View in VM&D + + + Ctrl+Shift+D + + diff --git a/tools/lammps-gui/ovito.png b/tools/lammps-gui/ovito.png new file mode 100644 index 0000000000000000000000000000000000000000..7b34660cf3bde4321e63ca71d1a105d7ed4d5ddc GIT binary patch literal 7080 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/vmd.png b/tools/lammps-gui/vmd.png new file mode 100644 index 0000000000000000000000000000000000000000..34b8e737a12efd14a498b098b660026212edfe5e GIT binary patch literal 4332 zcmeHKYj6|S6<%Y&j<6H#BsIZdycRS#E~{O=cefI@krb?gY(iFqV#7+^?ZXww>E7^f+uG{!cA+cc9G;b|zZKum#@yhsR%b9eo~o@A!u zndYB0vwQd6bIy0p`R=)Abf0jS%uiQMS0M*>R>U}zOYi{%NgR*3Ph@nVXl zW*f=|=CG-5t+lwT@ZJNr;^s0>DC6Az%7RlTSN85pZm9k(f1xn*9qG-U z?Oy-i+wv#>GQ&PGw|i~#^T&R_z9r3a@Q8KQs(nqL&iOcA|8(xFAzjDp%-M^(+8WJ` zLGzBu7wgXE{kbRq8g;FuC~Ma0^Lx*Jl6`S^*Mzs9n!e|q>0Ed91K_TaL`7wEUNExQ_jT0HfItxx1X()Pz!@+HqgmM{45 zOitC!%sqFBW&3+}t)UG)Pv_jcV|7i%bKC#W+Y(bvTea)TGnHuD6zSo=d{Y-bvH8x9 z{11A~Q?Vk2TNuN2xdO*)`YoH?~h8R!wO* z+4ltS=DMNM~C8z#9Xdn_-K5P1;_`U05M#vA@E29A88Sn z9MuqHFrXi_i2L9n#XVeHs1g~@QO!lAnIj=sX4pPfC5DxBSO(|9Tm-7dp;zrFm-C%2 z_ppUbL6DEc6e~#fC{2kE+#+jKY_dd2XJjDId>D6>_E7GMGSqUpXuH5v$>BNeR<-P( zW(9_4Y2}kKaug9@00v0Th#5>Ig^`Tei0K2AS?4G9CJN|BKslpv2}BuAhJxT49^z1X zQXeoe1g0}nBxd0BMvNqk0AmbBEyXYa#>^Q;K$MC+tV$3b8I=shLMUJ~0KW+aVqyV= z0s#*52PlAPNdwFJDPYoTfda)c^aFwz0dPC{2ncd`EE-e+;k*)%+0>dS9YLA&X3{_z^!kCA6}*QyF%BzH#?%s;L5aLAG)x8( z3*+tkOa{u2w|&QhCpS@VX+GyCl*M+4kQkO5;{FikhIq5BTTfxL~BWm zFwn#ZeSzfzEB=?Ze0WgHz?K*Dap-@AvNUj_yjp^Q~{S3)4jFB;oMvn^t zsRoE#Q4sP7xq{`XaE0b68+HF^?V1oL?*b$YBS`G~gyDk;<8sd!%GiQ`j}wccFrvvo zyMZ;>ykIZHhnwLbXL8&55r2bw@gsVG(Bn?V#P2v=<8+OQfiWqMSJyaQV`5-T%H!4b zf1^uv>pI0n;lH37cv(uz2AknUE7QHu=TNR(NIx8ur@y~n(^=99r%95h#ETSOI12Ck zNRofSd^^%OX+|-e+!iZd97m8Tcgjx^vT@TixR@e2U5=ECsduO}nGe4*`wh5M>9iO5 z$TzPv7pXeXw23L7=dR02UET3mf4z5o`=Q!U->U~4V$bROvdeG$+TMWfIXvOPibYha z-?8#`)ypS7#qZH+AIkgr*4MI|kDs~w(4@$gt#5anK`uR;^Q#@7WhU08CSU%~?TEK< k0XW$9)sgjczA4N8?902qAhZ8^2|7odjuQLMdCMRD4sNF#&;S4c literal 0 HcmV?d00001 From 185fa1bcdb178fb0fa0905a07786c750873018f3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 12:01:07 -0400 Subject: [PATCH 0260/1002] small documentation and spelling updates --- doc/src/Howto_lammps_gui.rst | 30 ++++++++++++++------- doc/src/Tools.rst | 2 +- doc/utils/sphinx-config/false_positives.txt | 1 + 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index dbc8baf5d3..3e510bb23f 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -83,7 +83,7 @@ was selected in the ``Preferences`` dialog. On the right side, a progress bar is shown that displays the estimated progress on the current :doc:`run command `. Additionally, two windows will open: the log window with the captured screen output and the chart window -with a linegraph created from the thermodynamic output of the run. +with a line graph created from the thermodynamic output of the run. The run can be stopped cleanly by using either the ``Stop LAMMPS`` entry in the ``Run`` menu or with the hotkey `Ctrl-/` (`Command-/` on macOS). @@ -109,7 +109,7 @@ snapshot image into an image viewer window. The image size, some default image quality settings, and some colors can be changed in the ``Preferences`` dialog window. From the image viewer window further adjustments can be made: high-quality rendering, -antialiasing, display of box or axes, zoom factor. The the image can +anti-aliasing, display of box or axes, zoom factor. The the image can be rotated horizontally and vertically and it is possible to only display the atoms within a predefined group (default is "all"). After each change, the image is rendered again and the display updated. @@ -215,6 +215,16 @@ The ``View Image`` entry will send a :doc:`dump image ` command to the LAMMPS instance, read the resulting file, and show it in an ``Image Viewer`` window. +The ``View in OVITO`` entry will launch `OVITO `_ +with a :doc:`data file ` of the current state of the system. +This option is only available, if the LAMMPS GUI can find the OVITO +executable in the system path. + +The ``View in VMD`` entry will instead launch VMD, also to load a +:doc:`data file ` of the current state of the system. This +option is only available, if the LAMMPS GUI can find the VMD executable +in the system path. + View ^^^^ @@ -295,13 +305,15 @@ Snapshot Image: This tab allows to set some defaults for the snapshot images displayed in the ``Image Viewer`` window, like its dimensions and the zoom factor -applied. The *Antialias* switch requests to render images at an up to 4 -times larger image size and then uses a bicubic scaling algorithm to -rescale them back to the requested size. This produces higher quality -images with smoother edges at the expense of requiring more CPU time to -render the image. The *HQ Image mode* option turns on using a screen -space ambient occlusion mode when rendering images. This is more time -consuming, but produces a more 'spatial' representation of the system. +applied. The *Antialias* switch requests to render images with twice +the number of pixels for width and height and then uses a bi-cubic +scaling algorithm to rescale them back to the requested size. This +produces higher quality images with smoother edges at the expense of +requiring more CPU time to render the image. The *HQ Image mode* option +turns on using a screen space ambient occlusion mode (SSAO) when +rendering images. This is also more time consuming, but produces a more +'spatial' representation of the system. Finally there are a couple of +drop down lists to select the background and box color. Hotkeys diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index a393d61323..160d04246b 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -806,7 +806,7 @@ command will automatically include a suitable CMake toolset file (the regular cmake command can be used after that). After building the libraries and executables, you can build the target 'zip' (i.e. ``cmake --build --target zip`` or ``make zip`` -to stage all installable files into a LAMMPS_GUI folder and then +to stage all installed files into a LAMMPS_GUI folder and then run a script to copy all required dependencies, some other files, and create a zip file from it. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index f7dcb6c524..3ed6fb8e42 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -2229,6 +2229,7 @@ monolayer monopole monovalent Montalenti +Monterey Montero Monti Mora From b3f045f5ae7a90cb507df8e8a55acd5292894408 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 15 Aug 2023 17:09:17 -0600 Subject: [PATCH 0261/1002] changes to make example script in ASPHERE/tri run --- examples/ASPHERE/tri/in.tri.srd | 18 +- .../ASPHERE/tri/log.15Aug23.tri.srd.g++.8 | 812 ++++++++++++++++++ examples/ASPHERE/tri/log.1Feb14.tri.srd.g++.8 | 243 ------ src/SRD/fix_srd.cpp | 3 +- 4 files changed, 822 insertions(+), 254 deletions(-) create mode 100644 examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 delete mode 100644 examples/ASPHERE/tri/log.1Feb14.tri.srd.g++.8 diff --git a/examples/ASPHERE/tri/in.tri.srd b/examples/ASPHERE/tri/in.tri.srd index 9bfc9d7b65..7878b9ecc2 100644 --- a/examples/ASPHERE/tri/in.tri.srd +++ b/examples/ASPHERE/tri/in.tri.srd @@ -2,7 +2,7 @@ units lj atom_style tri -atom_modify first big +atom_modify first big map yes read_data data.tri.srd @@ -52,12 +52,12 @@ pair_coeff 1 2 0.0 1.0 0.0 timestep 0.001 -fix 1 big rigid molecule #langevin 1.0 1.0 0.1 12398 -fix 2 small srd 20 big 1.0 0.25 49894 & +fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 +fix 2 small srd 20 big 1.0 1.0 49894 & search 0.2 cubic warn 0.0001 shift yes 49829 & - overlap yes collision noslip + overlap yes collision noslip inside ignore -fix 3 all deform 1 x scale 0.6 y scale 0.6 z scale 0.6 +fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 # diagnostics @@ -73,8 +73,8 @@ compute 2 all ke compute 3 all pe variable toteng equal (c_1+c_2+c_3)/atoms -thermo 1000 -thermo_style custom step f_1 c_tsmall f_2[9] temp press +thermo 100 +thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] thermo_modify temp tbig compute 10 all property/atom corner1x corner1y corner1z & @@ -93,9 +93,9 @@ unfix 3 change_box all triclinic -fix 2 small srd 20 big 1.0 0.25 49894 & +fix 2 small srd 20 big 1.0 1.0 49894 & search 0.2 cubic warn 0.0001 shift yes 49829 & - overlap yes collision noslip tstat yes + overlap yes collision noslip tstat yes inside ignore #dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz #dump 2 all custom 500 dump2.tri.srd id type & diff --git a/examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 b/examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 new file mode 100644 index 0000000000..6103a5c9c9 --- /dev/null +++ b/examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 @@ -0,0 +1,812 @@ +LAMMPS (2 Aug 2023 - Development - patch_2Aug2023-114-gdad8081d55-modified) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:537) +# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles + +units lj +atom_style tri +atom_modify first big map yes + +read_data data.tri.srd +Reading data file ... + orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) + 2 by 2 by 2 MPI processor grid + reading atoms ... + 1500 atoms + 1500 triangles + read_data CPU = 0.007 seconds + +# add small particles as hi density lattice + +lattice sc 0.4 +Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088 +region box block INF INF INF INF INF INF +lattice sc 20.0 +Lattice spacing in x,y,z = 0.36840315 0.36840315 0.36840315 +create_atoms 2 region box +Created 91125 atoms + using lattice units in orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) + create_atoms CPU = 0.002 seconds + +group big type 1 +1500 atoms in group big +group small type 2 +91125 atoms in group small +set group small mass 0.01 +Setting atom values ... + 91125 settings made for mass + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 1.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 + +delete_atoms overlap 1.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.8 + ghost atom cutoff = 1.8 + binsize = 0.9, bins = 19 19 19 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (../delete_atoms.cpp:312) +Deleted 76354 atoms, new total = 16271 + +# SRD run + +reset_timestep 0 + +velocity small create 1.44 87287 loop geom + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes +neigh_modify exclude molecule/intra big include big + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style tri/lj 3.5 +pair_coeff 1 1 0.1 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 + create bodies CPU = 0.000 seconds + 125 rigid bodies with 1500 atoms + 1.8601881 = max distance from body owner to body atom +fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip inside ignore + +fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 + +# diagnostics + +compute tsmall small temp/deform +compute tbig big temp +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) + +compute_modify tbig extra/dof -4500 + +compute 1 big erotate/asphere +compute 2 all ke +compute 3 all pe +variable toteng equal (c_1+c_2+c_3)/atoms + +thermo 100 +thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:527) + +compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z + +#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +WARNING: Using compute temp/deform with inconsistent fix deform remap option (../compute_temp_deform.cpp:71) +WARNING: Using fix srd with box deformation but no SRD thermostat (../fix_srd.cpp:405) +SRD info: + SRD/big particles = 14771 1500 + big particle diameter max/min = 2.9202881 0.87320391 + SRD temperature & lamda = 1 0.2 + SRD max distance & max velocity = 0.8 40 + SRD grid counts: 17 17 17 + SRD grid size: request, actual (xyz) = 1, 0.99262829 0.99262829 0.99262829 + SRD per actual grid cell = -3.9971745 + SRD viscosity = -34.162587 + big/SRD mass density ratio = -3.3753691 +WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2805) +WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2826) +WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2828) + # of rescaled SRD velocities = 0 + ave/max small velocity = 19.970837 35.150443 + ave/max big velocity = 0 0 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.8 + ghost atom cutoff = 3.8 + binsize = 16.874681, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tri/lj, perpetual + attributes: half, newton on + pair build: half/multi/newton + stencil: half/multi/3d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 125.9 | 126.4 | 126.7 Mbytes + Step f_1 c_tsmall Temp Press f_2[9] f_2[4] + 0 0 1.4401779 0 -0.15917996 0 0 + 100 0.36662911 1.1475389 0.24585067 1.0290503 1.1382325 18 + 200 0.73133134 1.0558153 0.49986673 0.73932383 1.049638 34 + 300 1.1229361 1.0218621 0.82641583 0.7589689 1.0205369 40 + 400 1.5826262 0.99541508 1.2201293 0.69171726 0.99190857 52 + 500 1.8834563 0.99351667 1.4778822 1.0147794 1.0005581 63 + 600 2.4225372 0.98954834 1.8740966 1.1362893 0.99760042 61 + 700 3.0172772 0.99153625 2.3351502 1.3284877 0.98731355 39 + 800 3.5307913 1.0012521 2.6477224 1.1404922 0.9846605 52 + 900 3.757064 0.99743944 2.7220653 1.4078087 0.97538456 55 + 1000 4.3165268 1.002214 3.055501 1.2252972 0.99123745 63 + 1100 4.2796945 1.0075233 3.1022956 1.1893685 1.0139864 69 + 1200 4.3719315 1.0037271 3.0054509 1.3886162 1.002661 64 + 1300 4.5628012 0.99368316 3.2690604 1.3621012 0.9810568 56 + 1400 4.6954389 0.99365088 3.1940001 1.8485712 0.99571089 71 + 1500 5.0270163 0.99455258 3.4120396 1.5992539 0.98294263 77 + 1600 5.5897797 1.0021621 3.647347 1.7796904 0.98967622 66 + 1700 5.5330194 1.0130853 3.6407996 1.8005429 1.0068955 62 + 1800 5.3606928 1.0090284 3.5863618 1.3308757 1.0214092 59 + 1900 5.6086195 1.0071865 3.7427101 1.5296314 0.99886937 55 + 2000 5.3726474 1.0064207 3.603621 1.9473142 0.99999816 54 + 2100 5.836183 1.0124553 3.7321841 1.7889397 1.0188986 59 + 2200 5.5090061 1.0113832 3.5884963 1.6617781 1.0071583 59 + 2300 5.4011211 1.0095947 3.520406 1.8937582 0.99689983 61 + 2400 5.2219281 1.0053246 3.3699458 1.7231672 0.99899754 59 + 2500 5.7695275 1.0141459 3.6211469 1.7767598 1.0143133 65 + 2600 5.4206253 1.0182828 3.521774 2.0800518 1.0081603 70 + 2700 5.1401099 1.0085209 3.4200563 2.4019836 1.0107652 59 + 2800 6.5420721 1.0159876 4.1996904 1.863842 1.0160738 61 + 2900 5.9082962 1.0106921 3.7223419 2.0586998 1.0073885 67 + 3000 5.6556123 1.0099021 3.6768976 1.921987 1.0068962 76 + 3100 5.2913762 1.0008567 3.4103831 1.9831969 0.99187526 80 + 3200 5.1032361 0.99756662 3.1967156 2.2448433 0.99743574 93 + 3300 5.2622386 1.0024934 3.3325614 2.0078097 1.0047789 86 + 3400 5.1247527 0.99810102 3.1363556 1.8907269 0.98936508 82 + 3500 4.9424333 1.0009344 3.2153968 1.9002728 0.99161849 71 + 3600 5.1243735 1.0037377 3.3117313 2.1267438 1.0078943 65 + 3700 5.5045819 1.0006119 3.5686193 2.3466538 0.99876164 68 + 3800 5.5355384 1.0022639 3.6701457 2.0383269 1.0008683 76 + 3900 6.4915796 1.0137733 4.3225864 2.6996933 1.0064787 79 + 4000 6.6631737 1.0236248 4.3057163 2.6352666 1.0255232 75 + 4100 6.2999507 1.0263876 4.0101385 2.5479077 1.0168303 79 + 4200 6.7902489 1.0247392 4.4616158 2.4926177 1.0191403 91 + 4300 6.505908 1.0182073 4.0675428 2.168754 1.0177101 74 + 4400 5.9554283 1.0115938 3.5787297 2.9258144 1.0133896 72 + 4500 6.2276609 1.0202416 3.8211204 2.5308249 1.0174385 74 + 4600 6.0485727 1.0195757 3.8217434 2.6421797 1.0201441 78 + 4700 6.511063 1.0220764 3.933486 2.8591093 1.0147269 83 + 4800 6.9478172 1.0106414 4.345402 3.3257663 1.00469 85 + 4900 6.7547045 1.0211842 4.1874576 3.6503845 1.022873 94 + 5000 7.2603949 1.0234313 4.5393985 3.4667806 1.0222306 105 + 5100 7.1899652 1.0256566 4.5421834 3.8137207 1.0317242 99 + 5200 7.1960739 1.026746 4.4288606 3.5523675 1.0242269 97 + 5300 7.1294458 1.017883 4.5799808 3.3917274 1.0145317 99 + 5400 6.2810892 1.0291953 4.0109229 2.8604571 1.0289438 97 + 5500 6.15246 1.0288734 3.8714587 3.2760394 1.0210757 89 + 5600 6.5860526 1.0192882 4.0272883 3.3124298 1.0096258 93 + 5700 7.0296116 1.0097293 4.2652722 3.6049788 1.012463 82 + 5800 6.8372302 1.0140065 4.2205065 4.3686183 1.0088542 93 + 5900 7.8887098 1.0090612 4.9724078 4.457317 1.0045137 92 + 6000 10.120663 1.0312443 6.3025192 4.72018 1.0374722 91 + 6100 9.1318265 1.0304199 5.7084296 4.244548 1.0259056 97 + 6200 8.9758903 1.0295285 5.1842704 4.870955 1.0178851 95 + 6300 9.0088218 1.022484 5.3742805 5.1554352 1.0138365 101 + 6400 10.470322 1.0287848 6.4602103 4.5461489 1.0335978 105 + 6500 11.100779 1.0347405 6.9630121 4.9840664 1.0339044 99 + 6600 10.139333 1.0476079 6.4284839 4.5523893 1.0433517 104 + 6700 8.9706766 1.0386262 5.8387485 4.247024 1.0408151 101 + 6800 7.7799532 1.0362651 4.9946283 4.6093924 1.0274763 102 + 6900 8.0866551 1.0337743 4.9942769 4.1679939 1.0454805 102 + 7000 8.0224277 1.0193598 4.9380527 3.9173115 1.0185001 109 + 7100 7.8361001 1.0211143 4.872673 5.3471479 1.024779 110 + 7200 7.8542147 1.0057183 4.8666653 4.668317 0.99980296 122 + 7300 7.9313852 1.0159181 5.0062527 4.1410294 1.0195705 114 + 7400 7.2769846 1.0155245 4.6349779 4.9138895 1.0005886 119 + 7500 7.5974523 1.0196295 4.7918247 4.2525935 1.0211412 124 + 7600 6.7835063 1.0203187 4.2674694 4.9251624 1.0218296 113 + 7700 6.4039017 1.0119494 4.1086667 5.5240525 1.0078246 118 + 7800 7.0715134 1.0149015 4.2450776 4.8796778 1.0164737 125 + 7900 6.3626535 1.02294 4.202778 4.482164 1.0235878 136 + 8000 6.2423869 1.0212553 4.0460303 5.2753307 1.0124884 132 + 8100 6.550891 1.0223318 4.2993545 5.2634985 1.0163244 143 + 8200 6.9122202 1.008347 4.3551124 5.4108909 1.0084913 142 + 8300 6.9104634 1.0103936 4.4622206 5.6762373 0.99559355 143 + 8400 6.4918879 1.0084381 4.1050732 5.8389788 1.0036021 135 + 8500 7.4377218 1.0216662 4.5229841 5.5431311 1.0260799 123 + 8600 7.572198 1.0228381 4.9058913 7.1028185 1.0015164 116 + 8700 8.204675 1.03457 5.2231696 6.4790244 1.0214635 132 + 8800 8.3118914 1.0381333 5.1795799 6.7437722 1.0290086 132 + 8900 8.2559198 1.0268665 5.218352 7.2191395 1.019804 138 + 9000 8.0403128 1.0339414 4.9310394 6.4942331 1.041527 156 + 9100 7.1773079 1.0397062 4.4993688 7.0272109 1.0388012 167 + 9200 7.1793935 1.0373589 4.3481663 7.4894459 1.0078785 157 + 9300 8.3705146 1.0248112 5.1036971 8.2173072 1.010168 156 + 9400 9.4935002 1.0252907 5.7846951 9.7466018 1.028941 170 + 9500 9.5208037 1.0371093 5.9635099 7.6444933 1.022673 165 + 9600 8.9992217 1.0292895 5.6224192 8.8071452 1.0101362 169 + 9700 8.682661 1.0422224 5.3997636 8.6827834 1.0337928 149 + 9800 7.6191562 1.0350948 4.7198842 8.6125595 1.0300395 151 + 9900 8.0910913 1.0319432 4.8843183 7.9013334 1.0272495 167 + 10000 7.4438347 1.0186098 4.7184985 8.999795 0.99762661 177 +Loop time of 162.325 on 8 procs for 10000 steps with 16271 atoms + +Performance: 5322.658 tau/day, 61.605 timesteps/s, 1.002 Matom-step/s +99.3% CPU use with 8 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 33.647 | 64.106 | 79.639 | 169.5 | 39.49 +Neigh | 0.30808 | 0.44033 | 0.50863 | 9.8 | 0.27 +Comm | 26.611 | 43.438 | 74.998 | 215.7 | 26.76 +Output | 0.0072573 | 0.0087791 | 0.0097993 | 0.9 | 0.01 +Modify | 53.171 | 54.121 | 55.362 | 12.3 | 33.34 +Other | | 0.2104 | | | 0.13 + +Nlocal: 2033.88 ave 2601 max 1413 min +Histogram: 1 2 0 0 0 0 2 1 1 1 +Nghost: 1647.25 ave 1714 max 1617 min +Histogram: 4 0 1 0 0 1 1 0 0 1 +Neighs: 12482.8 ave 17009 max 8679 min +Histogram: 1 1 1 0 1 1 2 0 0 1 + +Total # of neighbors = 99862 +Ave neighs/atom = 6.1374224 +Neighbor list builds = 562 +Dangerous builds = 0 + +#undump 1 +#undump 2 +unfix 3 + +change_box all triclinic +Changing box ... + triclinic box = (-6.7498724 -6.7498724 -6.7498724) to (6.7498724 6.7498724 6.7498724) with tilt (0 0 0) + +fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes inside ignore + +#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] + +fix 3 all deform 1 xy erate 0.05 units box remap v + +run 40000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14771 1500 + big particle diameter max/min = 2.9202881 0.87320391 + SRD temperature & lamda = 1 0.2 + SRD max distance & max velocity = 0.8 40 + SRD grid counts: 13 13 13 + SRD grid size: request, actual (xyz) = 1, 1.0384419 1.0384419 1.0384419 + SRD per actual grid cell = -2.775698 + SRD viscosity = -12.180602 + big/SRD mass density ratio = -5.5653033 +WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2805) +WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2826) +WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2828) + # of rescaled SRD velocities = 1 + ave/max small velocity = 16.14994 40 + ave/max big velocity = 1.6952661 5.2200074 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.8 + ghost atom cutoff = 3.8 + binsize = 13.499745, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tri/lj, perpetual + attributes: half, newton on + pair build: half/multi/newton/tri + stencil: half/multi/3d/tri + bin: multi +Per MPI rank memory allocation (min/avg/max) = 106.9 | 107.5 | 107.7 Mbytes + Step f_1 c_tsmall Temp Press f_2[9] f_2[4] + 10000 7.4438347 1.0189789 4.7184481 7.9505614 0 0 + 10100 7.0770142 1.0021471 4.4491455 6.606701 1 141 + 10200 6.7628072 1.002308 4.152988 8.5190386 1 125 + 10300 6.5333319 1.0007472 4.1295404 8.2341747 1 109 + 10400 6.3237519 1.0024029 3.8636034 9.4058128 1 95 + 10500 6.6411054 1.0026261 4.2975997 7.6122304 1 82 + 10600 5.7470775 1.0004827 3.7959947 7.3091777 1 67 + 10700 5.9744919 1.0014977 3.6885649 7.5517197 1 59 + 10800 5.8028731 1.0029627 3.7553961 6.2787087 1 49 + 10900 5.3755286 1.0019318 3.5334739 7.1318348 1 41 + 11000 5.3915962 1.001463 3.483172 7.6362496 1 40 + 11100 5.8683672 1.0022459 3.6697589 6.9711866 1 33 + 11200 5.4351801 0.99956703 3.4548447 7.0745257 1 29 + 11300 4.9397513 1.0008287 3.1990325 6.0917337 1 27 + 11400 4.9159845 1.0017862 3.0005677 7.653817 1 26 + 11500 4.9243103 1.0013135 3.1799841 7.744414 1 23 + 11600 5.2036357 1.0017984 3.2963749 7.540477 1 22 + 11700 4.8991892 1.0020757 3.1773032 8.7218471 1 27 + 11800 4.9489399 1.003438 3.1679764 7.1605486 1 26 + 11900 4.82398 1.0019946 3.1939566 7.1397869 1 21 + 12000 4.3531411 1.000532 2.8321416 7.6672501 1 23 + 12100 4.8226081 1.0018898 3.0382137 6.8343432 1 25 + 12200 4.7456418 1.0032116 2.9186038 7.3067818 1 20 + 12300 4.4280468 1.0005857 2.734593 8.0365684 1 22 + 12400 4.7311239 1.0000982 2.8898839 7.9231831 1 22 + 12500 4.7261054 1.0016127 2.9090517 7.6085854 1 24 + 12600 4.7719025 1.0016702 2.9736761 7.6101796 1 26 + 12700 4.386248 1.001394 2.8508378 6.4765102 1 28 + 12800 4.3313538 1.0019737 2.6258221 6.3164681 1 19 + 12900 4.2219861 1.0007469 2.5345699 7.0901077 1 22 + 13000 4.1775643 1.0011891 2.5807017 7.3579938 1 25 + 13100 4.3060837 1.0008671 2.5974066 6.9301328 1 22 + 13200 4.3529062 0.99996469 2.7571632 6.7806287 1 21 + 13300 4.2178709 1.000673 2.7819091 7.6449064 1 18 + 13400 4.2714169 1.0021294 2.7280794 8.0986691 1 18 + 13500 4.3430969 1.0037732 2.6768429 8.1267941 1 18 + 13600 4.3664374 1.0016083 2.6470186 6.2797727 1 20 + 13700 4.4904769 1.0008993 2.7885718 7.7410193 1 22 + 13800 4.2966193 1.001532 2.73862 7.9651302 1 21 + 13900 4.4003185 1.0009984 2.7484129 8.7160439 1 24 + 14000 4.5948292 1.0011748 2.9051777 7.842121 1 22 + 14100 4.6901122 1.0001265 2.9404111 8.9953816 1 20 + 14200 4.8517518 0.99998743 2.9647625 6.6450509 1 22 + 14300 4.889628 1.0018051 3.0891097 7.2671824 1 20 + 14400 4.578862 1.0010629 2.8239776 6.1317183 1 23 + 14500 4.0865406 1.0013917 2.5119661 6.864665 1 19 + 14600 4.30688 1.0009041 2.6817814 6.9007433 1 18 + 14700 4.1295726 1.002342 2.6032093 7.1441648 1 15 + 14800 4.2176021 1.0015157 2.7332903 6.8394683 1 16 + 14900 4.2012664 0.99986345 2.6498409 7.4568241 1 15 + 15000 4.6124269 1.0014751 2.9584178 7.9341875 1 16 + 15100 4.947327 1.0010615 3.0784409 7.6241305 1 21 + 15200 5.253281 1.002095 3.3093754 8.1872718 1 25 + 15300 5.2642369 1.0017799 3.1511136 7.4668389 1 25 + 15400 5.1967916 1.0029407 3.247548 8.0840111 1 23 + 15500 5.7465412 1.001896 3.468834 9.5990471 1 15 + 15600 6.2245772 1.0021086 3.6127689 7.8242016 1 19 + 15700 5.5626191 0.99984979 3.3893723 7.8124588 1 20 + 15800 5.5945727 1.0010291 3.3442448 7.0116922 1 17 + 15900 5.4450219 1.0006248 3.3132381 8.4803413 1 15 + 16000 5.7800459 1.001449 3.5002534 8.7989456 1 19 + 16100 6.1168718 1.0008109 3.8081142 8.0119729 1 18 + 16200 5.4901649 1.0020643 3.3673653 7.3483134 1 17 + 16300 5.4051694 1.0015652 3.3560012 7.4641983 1 19 + 16400 5.4237612 1.0012686 3.3816406 7.3845086 1 14 + 16500 5.1935593 1.001754 3.3340381 7.8607712 1 16 + 16600 5.539343 1.0021073 3.4164309 8.1541097 1 12 + 16700 5.8922923 1.0013792 3.553426 7.5220576 1 14 + 16800 5.956937 1.0005959 3.7630589 8.7417987 1 13 + 16900 5.469721 1.0016219 3.5531223 8.6721994 1 13 + 17000 5.3110154 1.001142 3.4167244 7.4644182 1 15 + 17100 5.9226035 0.99918238 4.0244287 6.5172028 1 16 + 17200 5.4897042 0.99981565 3.4350691 5.6840394 1 20 + 17300 5.4302636 1.0021571 3.421473 6.4317025 1 21 + 17400 5.5559131 1.0013807 3.4951403 6.874191 1 24 + 17500 5.4068006 1.0010448 3.4506835 7.7069504 1 22 + 17600 4.9283792 1.0007628 3.1736308 7.3098058 1 20 + 17700 4.9319722 0.99935896 3.0956257 8.2120111 1 15 + 17800 4.6842391 1.00037 2.9602433 7.4116352 1 17 + 17900 4.7714682 1.0009332 2.9666778 7.5925131 1 17 + 18000 4.7233188 1.0035687 3.0991778 7.1636357 1 10 + 18100 4.6487958 1.0020255 3.10781 6.8468658 1 12 + 18200 4.6284129 1.0012617 3.089724 6.3082275 1 13 + 18300 4.7136404 0.99962415 3.1261978 7.3359556 1 15 + 18400 5.0367681 1.0011016 3.2413493 8.3910633 1 14 + 18500 4.9658104 1.0025407 3.2420827 7.4701216 1 17 + 18600 4.6100059 1.0014508 3.0216884 6.553483 1 17 + 18700 4.3246452 1.0016721 2.7810363 6.7450293 1 19 + 18800 4.9415788 1.0012406 3.1661907 7.5544034 1 18 + 18900 5.3930915 1.000138 3.2557456 7.350955 1 21 + 19000 5.1938599 1.0007364 3.2398733 6.5397956 1 22 + 19100 5.4433048 1.0019191 3.2699245 8.3625772 1 22 + 19200 6.1303261 1.0004005 3.7823203 8.0537369 1 22 + 19300 5.5762518 1.0008117 3.5689121 8.3714373 1 22 + 19400 5.1316743 0.9999834 3.099381 7.405287 1 23 + 19500 5.2064799 1.0012007 3.3059455 7.3499127 1 25 + 19600 5.1650099 1.0023314 3.3759492 7.3637616 1 21 + 19700 5.8316278 1.0023317 3.601564 7.153887 1 19 + 19800 5.6435147 1.0010657 3.4967581 6.8899334 1 21 + 19900 5.4071193 0.99961357 3.4977894 6.1068438 1 20 + 20000 5.5058495 1.000982 3.5185057 8.5657603 1 19 + 20100 5.6551271 1.0025852 3.5672369 7.8242273 1 20 + 20200 5.7196886 1.002283 3.6010925 7.1449072 1 22 + 20300 5.5593553 1.0009987 3.4363398 8.4141755 1 21 + 20400 5.5550247 1.001081 3.3950874 8.0222131 1 20 + 20500 5.4510415 0.99997273 3.5505093 7.5243655 1 18 + 20600 5.8014064 1.0007611 3.8084579 7.6583499 1 18 + 20700 5.7337315 1.0020309 3.7973684 8.7376766 1 17 + 20800 5.2512898 0.99901254 3.5027763 7.8902791 1 14 + 20900 5.3245034 1.0014504 3.3354615 6.7030716 1 17 + 21000 5.2071731 1.0020459 3.3881369 5.8616999 1 20 + 21100 5.3187535 1.0010762 3.2845672 8.1422146 1 21 + 21200 5.5298545 0.99942313 3.4393978 7.1183144 1 22 + 21300 5.8430744 1.0008652 3.719408 7.8522038 1 20 + 21400 5.8190457 1.0017046 3.5624252 7.8150165 1 20 + 21500 6.004585 1.0035276 3.9161914 7.7719377 1 21 + 21600 6.7202635 0.99970072 3.9642141 8.7934294 1 18 + 21700 6.8590346 1.0007883 4.4285217 8.9014638 1 20 + 21800 6.627638 1.0012117 4.1154082 8.3153026 1 22 + 21900 7.8281047 1.0008299 4.8842343 8.4016227 1 20 + 22000 7.200038 1.0014681 4.4141419 9.4091956 1 18 + 22100 7.7442011 1.0018051 4.7850371 8.9885489 1 15 + 22200 7.4770203 1.0033558 4.7512643 8.4898148 1 17 + 22300 8.1080801 1.0000019 5.2725185 9.2314625 1 14 + 22400 7.8068311 1.0020672 4.9055683 8.4064748 1 12 + 22500 7.4594636 1.0008427 4.6586396 8.5102986 1 11 + 22600 6.9380609 1.0024634 4.2435619 10.395118 1 16 + 22700 6.9338066 1.001056 4.3436179 7.9126284 1 18 + 22800 6.8049493 1.0020052 4.1443407 7.8228868 1 18 + 22900 6.2280158 1.0021474 3.7695343 7.3179647 1 20 + 23000 5.649403 1.0017128 3.5941976 7.2964709 1 19 + 23100 5.3203116 1.001912 3.3807399 6.6454551 1 15 + 23200 5.8172882 1.0005742 3.6625896 8.4256312 1 15 + 23300 5.9647182 1.0015466 3.9106019 8.3303303 1 14 + 23400 5.9784055 1.0034542 3.7229235 7.7934273 1 14 + 23500 5.377627 1.00192 3.5481778 6.8195124 1 17 + 23600 5.4807136 1.0014662 3.563123 7.6356376 1 18 + 23700 5.8896329 1.0013553 3.7990694 8.5513408 1 13 + 23800 6.3463707 0.9999403 3.9609397 8.5741923 1 11 + 23900 6.656669 1.0014998 4.1993183 9.0862996 1 13 + 24000 7.583723 1.0025057 4.7628652 7.5007245 1 20 + 24100 6.9868359 1.0014089 4.4369841 7.692833 1 25 + 24200 7.1966062 1.0013149 4.4384528 9.5264821 1 18 + 24300 6.7765706 1.0007065 4.3500477 9.4974154 1 16 + 24400 7.0853466 1.0013246 4.409163 9.2215823 1 17 + 24500 6.9603823 1.0004247 4.4866051 7.7870058 1 20 + 24600 6.9208291 0.99953329 4.2298144 6.5732392 1 21 + 24700 6.5005518 1.0026848 4.0003505 7.8094715 1 22 + 24800 5.8421948 1.0012055 3.6686768 7.6078157 1 26 + 24900 5.8410604 1.0023428 3.746177 6.8971309 1 22 + 25000 5.8728511 1.0001747 3.7170134 7.4456816 1 19 + 25100 6.0217168 1.000624 3.7756108 6.6542452 1 20 + 25200 6.1939015 1.0017861 3.8943084 9.395821 1 25 + 25300 6.161998 1.0010373 3.9255122 6.2228884 1 28 + 25400 5.5850406 1.0018505 3.5129832 7.2551309 1 24 + 25500 6.0286276 1.0009028 3.8580887 6.8065265 1 24 + 25600 5.6262228 1.0005097 3.4574446 7.5061246 1 21 + 25700 6.1348187 1.0009828 3.8073512 7.4818375 1 17 + 25800 6.09781 1.0026426 3.9585383 9.0915939 1 21 + 25900 6.2673667 1.0002269 3.8182813 9.2134822 1 21 + 26000 6.6001776 1.0020444 4.041386 8.0403555 1 18 + 26100 6.3063025 1.0016633 3.8649839 8.8149734 1 19 + 26200 6.0046983 1.002332 3.5380766 8.6145656 1 17 + 26300 5.9627788 1.0005401 3.56864 6.7821213 1 15 + 26400 5.0547314 0.9998295 3.2106781 9.2935351 1 15 + 26500 5.256781 1.0013131 3.2946631 8.8590275 1 15 + 26600 5.6250355 1.0023929 3.5243033 8.8985058 1 17 + 26700 6.0197165 1.0018323 3.7973947 7.3093402 1 17 + 26800 5.4556541 1.0015309 3.4295107 8.2342049 1 18 + 26900 5.420428 1.0024996 3.4374201 7.1444636 1 16 + 27000 6.165624 1.0019174 3.8726016 8.6588275 1 20 + 27100 6.7131697 1.0006541 4.266264 8.7063389 1 24 + 27200 6.4855163 1.0016139 4.2029778 7.667611 1 29 + 27300 6.0525608 1.000478 3.9169723 7.4515279 1 25 + 27400 6.1426194 1.0014522 3.9176108 6.8689671 1 24 + 27500 6.5981349 1.0001143 4.0620686 8.6804552 1 27 + 27600 6.7827138 1.0016694 4.2764286 9.3912843 1 21 + 27700 6.6368902 1.0025149 4.1452128 9.1814523 1 24 + 27800 6.9791025 1.0019486 4.3989933 7.9446882 1 24 + 27900 6.617142 1.0015736 4.360571 9.3732108 1 26 + 28000 7.2818263 1.0014101 4.6041512 8.2398587 1 28 + 28100 7.2543709 1.0007625 4.5724787 7.7373488 1 22 + 28200 7.0631847 1.0023922 4.4021705 8.3290554 1 29 + 28300 7.2999952 1.0012593 4.4655563 8.612666 1 27 + 28400 7.4124538 1.0014043 4.5011335 8.379391 1 29 + 28500 7.0350937 1.0011392 4.3528091 7.8167375 1 24 + 28600 7.9659642 1.0031684 4.8732467 8.0661929 1 30 + 28700 7.2865919 1.0010958 4.6650146 8.0325989 1 32 + 28800 7.7039529 1.0027912 4.8299888 9.5471747 1 30 + 28900 8.3288847 1.0012438 5.0785288 8.8964877 1 31 + 29000 7.9348665 1.0021794 4.9393968 9.5531767 1 31 + 29100 8.2473389 1.0013795 4.9890359 9.7697184 1 29 + 29200 8.6383362 1.0018356 4.9856954 7.6402719 1 25 + 29300 8.2504592 1.0011048 4.9631793 7.9466724 1 24 + 29400 8.0502922 1.0010516 5.2521065 8.4515028 1 26 + 29500 7.9475896 1.0012951 4.8584644 9.1225463 1 19 + 29600 8.5641641 1.0016228 5.4361335 9.2045399 1 23 + 29700 8.9932021 1.0011848 5.5727205 8.6045729 1 23 + 29800 8.0320178 1.0019073 5.2837013 8.9335413 1 22 + 29900 8.2676522 1.0012734 5.2213798 8.8966896 1 24 + 30000 9.1848984 1.001747 5.9147628 12.096129 1 27 + 30100 10.184519 0.99977427 6.4260136 11.140491 1 27 + 30200 9.271472 1.0023983 6.0252189 9.6954338 1 30 + 30300 9.0751572 1.000851 5.6010295 9.734426 1 28 + 30400 9.4581261 1.0018449 5.6987258 9.70456 1 34 + 30500 9.1574751 0.99944001 5.582217 9.300318 1 27 + 30600 8.619312 1.001388 5.3503985 8.2759155 1 26 + 30700 7.9370031 1.0026674 5.0702831 8.5368014 1 28 + 30800 7.9221619 1.0019077 5.1278637 11.046922 1 26 + 30900 9.9722884 1.0025903 6.4055506 10.167311 1 25 + 31000 8.8648667 0.99962676 5.4777514 10.142102 1 21 + 31100 8.576344 1.000906 5.3216342 8.7984921 1 18 + 31200 7.8480974 1.0010341 4.9584917 9.0696437 1 16 + 31300 8.3536183 1.0005758 5.208516 9.7971514 1 15 + 31400 8.5301933 1.0007603 5.2241536 9.0257241 1 17 + 31500 8.5196226 1.0018215 5.0576064 8.8847294 1 19 + 31600 8.1470823 1.0023147 4.9182956 9.0205413 1 20 + 31700 8.1475888 1.0005764 5.1814113 9.0603162 1 16 + 31800 7.8629717 1.0014194 4.9221218 9.366291 1 16 + 31900 7.7206559 1.0021082 4.9167636 7.4136735 1 16 + 32000 7.5152809 1.0004752 4.6330638 8.830959 1 16 + 32100 8.2693974 1.0011751 4.9094804 9.427636 1 13 + 32200 8.3067661 0.9997006 4.9036865 9.0374633 1 17 + 32300 7.2068514 1.0007866 4.3580755 8.6445065 1 17 + 32400 6.885063 1.0011887 4.1528011 8.1199454 1 16 + 32500 6.9147014 1.0020825 4.160405 7.5398034 1 19 + 32600 6.8809668 1.000971 4.3312782 8.2157688 1 16 + 32700 6.4818892 1.0000885 3.9433899 7.309605 1 22 + 32800 6.6875555 1.0018674 4.1017504 7.2327183 1 22 + 32900 7.6118502 0.99975736 4.4498951 8.5072395 1 19 + 33000 7.7576909 1.0022061 4.7239551 9.2132467 1 22 + 33100 7.8616235 1.000482 5.0031322 9.349805 1 20 + 33200 8.2620563 1.0015059 5.2482188 10.286446 1 17 + 33300 8.0217099 1.0015466 5.1166876 9.1381844 1 20 + 33400 7.6565746 1.0024855 4.7594208 9.2646824 1 22 + 33500 7.9633887 1.0010334 4.6754116 9.1085184 1 23 + 33600 7.9566834 1.0024542 4.6712679 9.2046594 1 25 + 33700 8.2639384 1.0003021 5.1326892 8.0930215 1 24 + 33800 8.5648917 1.0000947 5.2099387 8.8127486 1 21 + 33900 8.3593557 1.0002488 5.1291354 8.5938391 1 25 + 34000 8.1922068 1.0030011 5.1441189 7.1529563 1 24 + 34100 8.4260308 1.0004639 5.5876122 9.0450303 1 28 + 34200 8.3014654 1.0002204 5.1964772 8.4920822 1 33 + 34300 7.4736545 1.0010306 4.7932244 7.8442244 1 30 + 34400 7.0023126 1.0024002 4.5665168 8.4702188 1 29 + 34500 7.3797703 1.000813 4.7224014 8.4098954 1 30 + 34600 7.7158761 0.99973161 4.7441628 8.5818592 1 29 + 34700 7.6135895 1.0015768 4.6612844 7.2195952 1 28 + 34800 7.0458078 0.99992638 4.2805357 7.4162305 1 32 + 34900 7.6190708 1.0007146 4.8064968 8.2709405 1 27 + 35000 7.4614294 1.0006051 4.7807207 7.7137359 1 28 + 35100 7.7008336 1.0008263 4.6823621 7.0208513 1 26 + 35200 8.1510766 1.000271 5.1781834 7.3231692 1 24 + 35300 7.5106275 1.0010438 4.6988185 8.9418343 1 25 + 35400 7.8116652 1.0009688 4.8622216 7.4624002 1 17 + 35500 7.2159785 1.0027484 4.543984 8.3177043 1 21 + 35600 7.6978875 1.0004834 4.7021203 8.3706905 1 20 + 35700 7.7827655 1.0019919 4.775879 8.6083292 1 15 + 35800 7.8433537 1.001844 4.7506574 7.3250009 1 15 + 35900 7.9456497 1.0004336 4.7925775 7.9824359 1 18 + 36000 8.1044513 1.0022261 5.1213755 9.211699 1 16 + 36100 7.6657532 1.0025661 4.751804 8.9770412 1 19 + 36200 7.909323 1.0035462 4.8435293 10.232493 1 21 + 36300 8.4188244 1.0016775 5.4337725 9.2060079 1 24 + 36400 8.7352689 1.0011274 5.6313351 8.6202832 1 24 + 36500 8.3459273 1.0005659 5.187336 6.9333716 1 21 + 36600 7.7118105 1.0018769 4.9293347 8.2789615 1 14 + 36700 7.8069879 1.0014021 4.7782709 8.4841233 1 15 + 36800 7.862085 1.0005342 4.8680692 8.1055023 1 16 + 36900 7.9469362 1.0027815 4.9339095 9.157722 1 16 + 37000 7.9085375 1.0024851 5.0921374 8.9374239 1 16 + 37100 8.9464869 1.0005734 5.6837772 8.806998 1 16 + 37200 8.1482632 1.0021175 5.1266453 8.5772094 1 18 + 37300 7.7958072 1.0026336 4.788431 8.3233372 1 19 + 37400 7.3647655 1.0015482 4.4786134 9.6606112 1 23 + 37500 7.3071882 1.0003912 4.681549 8.6319438 1 17 + 37600 7.8672509 1.0000478 4.7981944 8.3051478 1 14 + 37700 7.9306696 0.99923102 4.9316544 9.3672856 1 15 + 37800 7.7397949 0.99948557 5.1168552 8.5978047 1 17 + 37900 7.9121039 1.0020122 4.9866234 7.640888 1 14 + 38000 7.433451 1.0007901 4.6254894 8.0853539 1 14 + 38100 7.4636908 1.0021552 4.8472833 8.1975615 1 10 + 38200 7.4453077 1.0010305 4.6910943 7.8192603 1 13 + 38300 7.0488536 1.0012587 4.5490462 8.190036 1 16 + 38400 8.0686748 1.0016782 5.0747029 7.7242015 1 15 + 38500 7.9575875 1.0007137 4.8361776 8.05268 1 15 + 38600 7.6690498 1.0027522 4.8823286 9.1926516 1 20 + 38700 7.1567 1.002374 4.5600354 10.098089 1 19 + 38800 6.9100518 1.0008695 4.4101446 7.8832032 1 19 + 38900 6.8021882 1.0017647 4.1844125 8.1858761 1 21 + 39000 8.3996464 1.0010263 4.8183813 8.0997387 1 16 + 39100 8.4533834 1.0021643 5.074254 11.291904 1 19 + 39200 8.2406701 1.002062 5.0117425 8.778159 1 24 + 39300 8.3134114 1.0008218 5.0067136 7.9871787 1 22 + 39400 7.4307571 1.0014205 4.5858283 8.8596594 1 25 + 39500 7.1146821 1.0016367 4.5021057 7.4890018 1 22 + 39600 8.0048978 0.99992107 4.9235747 7.8770845 1 24 + 39700 8.070853 1.0029024 5.0842957 9.020664 1 21 + 39800 7.6939108 1.0012543 4.8986595 8.3306129 1 20 + 39900 7.2915444 1.00267 4.5038291 8.3844384 1 20 + 40000 7.3023994 1.0020441 4.4960911 8.1023709 1 18 + 40100 7.0221648 1.0033695 4.6374149 8.3756822 1 24 + 40200 7.4114756 1.0019246 4.6733475 7.6547258 1 23 + 40300 7.5323108 1.0005472 4.8284493 8.2820085 1 26 + 40400 7.3890772 1.0010491 4.6599273 8.9203575 1 19 + 40500 7.5786764 1.0016114 4.8166885 8.6760107 1 25 + 40600 8.165763 1.0006961 5.1488995 7.9321524 1 22 + 40700 8.1277597 0.99933464 5.0441567 10.069551 1 16 + 40800 8.1050904 1.0024705 5.4408599 8.3244459 1 21 + 40900 7.805318 1.0022992 4.9965408 9.7193723 1 21 + 41000 9.0130932 1.0006842 5.7931112 6.1646073 1 20 + 41100 8.0387975 1.0017359 5.3355655 9.6123191 1 21 + 41200 8.4484723 1.0014151 5.4461007 8.5146504 1 27 + 41300 8.6181909 1.0007562 5.2963876 9.1122306 1 30 + 41400 9.6762899 1.0010931 5.950456 9.2851025 1 25 + 41500 9.9414226 1.0016186 6.1433384 10.741453 1 24 + 41600 9.3348435 1.0003483 5.9291766 11.460717 1 20 + 41700 9.6125587 1.0013661 5.8530052 9.2105722 1 19 + 41800 11.383056 1.0032034 7.1988684 10.312945 1 22 + 41900 10.884524 1.0034888 6.9126707 10.775457 1 20 + 42000 11.071218 1.0026753 7.0004189 10.740627 1 20 + 42100 11.054304 1.0008347 6.9602414 8.9885498 1 22 + 42200 22.478691 1.0020466 14.997099 12.72513 1 19 + 42300 18.303508 1.0027626 11.336523 12.638769 1 18 + 42400 15.998712 1.0030312 9.4092725 11.070501 1 24 + 42500 15.034488 1.0024472 9.3543751 11.48052 1 28 + 42600 14.538257 1.0033153 9.2523745 10.909576 1 27 + 42700 13.986613 1.001458 8.5544184 10.765136 1 29 + 42800 13.240256 1.0027899 8.2014429 10.506497 1 32 + 42900 12.784336 1.0001406 8.0823431 12.258209 1 33 + 43000 13.374145 1.0012996 8.4207155 10.32817 1 31 + 43100 13.142334 1.0022503 8.5908808 10.152205 1 32 + 43200 12.669284 1.0018944 7.8511966 10.580104 1 32 + 43300 13.155032 1.001144 8.0337768 10.6652 1 39 + 43400 12.155928 1.0019472 7.5886584 11.234772 1 35 + 43500 12.385603 1.0007639 7.8865245 9.3868914 1 32 + 43600 12.236179 1.0027456 7.7521353 10.456701 1 42 + 43700 11.49535 1.0008758 7.3633144 8.8490079 1 40 + 43800 11.469157 1.0015845 7.0035577 10.594522 1 41 + 43900 11.228266 1.0013014 7.0137223 8.0653711 1 38 + 44000 10.56742 1.0016631 6.6908938 8.1094154 1 35 + 44100 9.8964699 1.0008351 6.3550438 8.6578181 1 36 + 44200 9.041539 1.0019541 5.6721401 8.6518043 1 38 + 44300 9.0767434 1.0034191 5.7446596 8.3838528 1 38 + 44400 9.2299608 1.0019526 5.7117964 8.3106491 1 37 + 44500 9.458981 1.0030409 5.7612138 7.7679755 1 37 + 44600 8.9611997 1.0014848 5.6490756 6.9224078 1 37 + 44700 8.0853184 1.0018894 5.2288749 8.0910912 1 32 + 44800 7.9999755 1.0015853 4.8088312 7.1854304 1 30 + 44900 7.6598023 1.0009751 4.6690664 7.1999858 1 28 + 45000 7.4939315 1.0010307 4.8119666 7.9615769 1 26 + 45100 7.4690079 0.99913423 4.9704428 7.6026835 1 32 + 45200 7.7001199 1.001626 4.9315953 7.4926686 1 25 + 45300 7.8794405 1.0011648 4.8624857 8.0804457 1 26 + 45400 7.493909 1.0016257 4.7631808 8.0330626 1 26 + 45500 7.5963141 1.0005825 4.7220659 7.0971298 1 23 + 45600 7.9028612 1.0017008 4.9561022 8.440428 1 23 + 45700 7.2285584 1.0006033 4.5521456 9.385579 1 23 + 45800 7.5687284 1.0024318 4.8557498 8.3052658 1 23 + 45900 7.8938604 1.0013937 5.1393944 5.5323667 1 26 + 46000 8.318466 1.0020803 5.4761811 8.2227801 1 25 + 46100 7.9169512 1.0024598 5.0406355 8.64365 1 27 + 46200 7.5535458 1.0016318 4.8010133 9.370726 1 26 + 46300 7.8926896 1.0001525 5.18463 7.9830196 1 27 + 46400 7.487145 1.002671 4.7718312 8.300134 1 29 + 46500 7.3564658 1.0006114 4.6762189 7.34947 1 26 + 46600 7.2261291 1.0005569 4.4751221 6.5847138 1 27 + 46700 7.2943203 1.0020164 4.3335327 7.7296507 1 25 + 46800 8.5849411 1.0014634 5.4501531 9.0933014 1 25 + 46900 10.176752 1.0023799 6.0456779 9.4050423 1 16 + 47000 9.1913098 1.0029076 5.7577256 9.1826215 1 22 + 47100 9.5479771 1.0022102 6.1100973 8.9440056 1 28 + 47200 9.9944172 1.0004924 6.3649417 9.1507264 1 25 + 47300 9.3543283 1.0013246 6.0873147 10.41657 1 24 + 47400 8.594101 1.0020068 5.6864295 9.2388304 1 24 + 47500 9.3191964 1.002411 6.0537511 9.3506828 1 23 + 47600 8.1615734 1.001364 5.3757905 10.303962 1 30 + 47700 8.3615046 1.0003075 5.2727936 9.3162209 1 32 + 47800 8.3566467 1.0026031 5.4379524 7.7644422 1 33 + 47900 8.4062556 1.0006471 5.3098736 8.0181121 1 33 + 48000 8.2233307 1.0012304 4.9650027 9.2644288 1 34 + 48100 8.4495256 1.000088 4.9940422 10.01023 1 27 + 48200 8.8068097 1.0014275 5.4732649 8.410093 1 31 + 48300 8.0008187 1.0017459 4.7732764 9.25726 1 27 + 48400 7.7242529 1.0026909 4.9084505 8.7147295 1 30 + 48500 8.3752816 1.001333 5.1071228 8.2267308 1 32 + 48600 9.0777805 1.0019328 5.7331841 9.6679383 1 29 + 48700 9.3623061 1.0001767 5.7117062 8.396895 1 25 + 48800 8.1186637 1.0013185 5.2697427 8.6058372 1 27 + 48900 7.3685497 1.0007173 4.6097553 7.8047228 1 24 + 49000 7.1661421 1.0023152 4.5389038 8.8759552 1 22 + 49100 6.9857144 1.0016394 4.6489319 8.2022359 1 24 + 49200 6.7160336 1.0018413 4.2488082 8.3393245 1 25 + 49300 7.9703755 1.0010628 5.2328567 7.968278 1 28 + 49400 8.2628465 1.0010877 5.2292977 8.0196533 1 27 + 49500 8.1436558 1.0015175 5.0344712 8.0712037 1 30 + 49600 8.5182498 1.0021589 5.1029028 8.6869789 1 28 + 49700 8.3604444 1.0015016 5.0333696 9.4861656 1 25 + 49800 7.336335 1.0020055 4.6365173 8.7210022 1 30 + 49900 7.432996 1.0016415 4.7090587 8.7033033 1 29 + 50000 7.4937053 1.001014 4.7212573 9.0890363 1 29 +Loop time of 999.576 on 8 procs for 40000 steps with 16271 atoms + +Performance: 3457.466 tau/day, 40.017 timesteps/s, 651.116 katom-step/s +99.3% CPU use with 8 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 293.48 | 403.7 | 545.29 | 357.5 | 40.39 +Neigh | 2.4176 | 3.2721 | 3.8303 | 25.2 | 0.33 +Comm | 163.58 | 305.88 | 419.83 | 416.7 | 30.60 +Output | 0.032483 | 0.034794 | 0.040514 | 1.2 | 0.00 +Modify | 281.15 | 285.67 | 293.8 | 24.3 | 28.58 +Other | | 1.023 | | | 0.10 + +Nlocal: 2033.88 ave 2657 max 1198 min +Histogram: 2 0 0 0 0 2 1 0 1 2 +Nghost: 1628.12 ave 1719 max 1569 min +Histogram: 2 0 1 1 2 1 0 0 0 1 +Neighs: 13566 ave 18212 max 8488 min +Histogram: 1 0 0 1 2 1 2 0 0 1 + +Total # of neighbors = 108528 +Ave neighs/atom = 6.6700264 +Neighbor list builds = 2447 +Dangerous builds = 2 +Total wall time: 0:19:22 diff --git a/examples/ASPHERE/tri/log.1Feb14.tri.srd.g++.8 b/examples/ASPHERE/tri/log.1Feb14.tri.srd.g++.8 deleted file mode 100644 index 135eecb1e5..0000000000 --- a/examples/ASPHERE/tri/log.1Feb14.tri.srd.g++.8 +++ /dev/null @@ -1,243 +0,0 @@ -LAMMPS (1 Feb 2014) -# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles - -units lj -atom_style tri -atom_modify first big - -read_data data.tri.srd - orthogonal box = (-8.43734 -8.43734 -8.43734) to (8.43734 8.43734 8.43734) - 2 by 2 by 2 MPI processor grid - reading atoms ... - 1500 atoms - 1500 triangles - -# add small particles as hi density lattice - -lattice sc 0.4 -Lattice spacing in x,y,z = 1.35721 1.35721 1.35721 -region box block INF INF INF INF INF INF -lattice sc 20.0 -Lattice spacing in x,y,z = 0.368403 0.368403 0.368403 -create_atoms 2 region box -Created 91125 atoms - -group big type 1 -1500 atoms in group big -group small type 2 -91125 atoms in group small -set group small mass 0.01 - 91125 settings made for mass - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 1.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 - -delete_atoms overlap 1.5 small big -Deleted 76354 atoms, new total = 16271 - -# SRD run - -reset_timestep 0 - -velocity small create 1.44 87287 loop geom - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule big include big - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style tri/lj 3.5 -pair_coeff 1 1 0.1 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big rigid molecule #langevin 1.0 1.0 0.1 12398 -125 rigid bodies with 1500 atoms -fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip - -fix 3 all deform 1 x scale 0.6 y scale 0.6 z scale 0.6 - -# diagnostics - -compute tsmall small temp/deform -compute tbig big temp -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) - -compute 1 big erotate/asphere -compute 2 all ke -compute 3 all pe -variable toteng equal (c_1+c_2+c_3)/atoms - -thermo 1000 -thermo_style custom step f_1 c_tsmall f_2[9] temp press -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) - -compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z - -#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] - -run 10000 -WARNING: Using fix srd with box deformation but no SRD thermostat (../fix_srd.cpp:385) -SRD info: - SRD/big particles = 14771 1500 - big particle diameter max/min = 1.46014 0.436602 - SRD temperature & lamda = 1 0.2 - SRD max distance & max velocity = 0.8 40 - SRD grid counts: 67 67 67 - SRD grid size: request, actual (xyz) = 0.25, 0.251861 0.251861 0.251861 - SRD per actual grid cell = 0.0647662 - SRD viscosity = -1.09837 - big/SRD mass density ratio = 24.668 -WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2853) -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875) -WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2877) - # of rescaled SRD velocities = 0 - ave/max small velocity = 19.9708 35.1504 - ave/max big velocity = 0 0 -WARNING: Using compute temp/deform with inconsistent fix deform remap option (../compute_temp_deform.cpp:76) -Memory usage per processor = 116.135 Mbytes -Step 1 tsmall 2[9] Temp Press - 0 0 1.4405441 0 0 -0.15917996 - 1000 1.0535509 1.1241378 1.1224038 0 0.15526438 - 2000 2.4635987 1.0240667 0.94231519 0 0.011069846 - 3000 3.1093028 1.0070585 1.0176028 0 0.34124888 - 4000 2.9524179 1.0101774 1.0311733 0 -0.22118101 - 5000 2.9175438 1.0109144 1.0284445 0 0.1839507 - 6000 3.3200928 0.99108983 0.95968219 0 1.0229339 - 7000 3.3020156 0.99661428 0.98000621 0 2.3333851 - 8000 4.1500999 0.99129645 0.99723707 0 4.3054414 - 9000 6.537028 1.0074533 1.0251098 0 18.782913 - 10000 16.233245 1.0145766 1.0219787 0 147.83787 -Loop time of 228.558 on 8 procs for 10000 steps with 16271 atoms - -Pair time (%) = 145.018 (63.4492) -Neigh time (%) = 32.6283 (14.2757) -Comm time (%) = 43.3283 (18.9572) -Outpt time (%) = 0.000848889 (0.00037141) -Other time (%) = 7.58254 (3.31755) - -Nlocal: 2033.88 ave 2092 max 1902 min -Histogram: 1 0 0 0 1 1 0 1 1 3 -Nghost: 2805 ave 2855 max 2751 min -Histogram: 1 0 2 1 0 0 0 2 1 1 -Neighs: 30026.5 ave 38700 max 24367 min -Histogram: 1 0 2 1 3 0 0 0 0 1 - -Total # of neighbors = 240212 -Ave neighs/atom = 14.7632 -Neighbor list builds = 501 -Dangerous builds = 0 - -#undump 1 -#undump 2 -unfix 3 - -change_box all triclinic - triclinic box = (-5.0624 -5.0624 -5.0624) to (5.0624 5.0624 5.0624) with tilt (0 0 0) - -fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes - -#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] - -fix 3 all deform 1 xy erate 0.05 units box remap v - -run 40000 -SRD info: - SRD/big particles = 14771 1500 - big particle diameter max/min = 1.46014 0.436602 - SRD temperature & lamda = 1 0.2 - SRD max distance & max velocity = 0.8 40 - SRD grid counts: 40 40 40 - SRD grid size: request, actual (xyz) = 0.25, 0.25312 0.25312 0.25312 - SRD per actual grid cell = -1.93929 - SRD viscosity = -0.36972 - big/SRD mass density ratio = -0.836253 -WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2853) -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875) -WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2877) - # of rescaled SRD velocities = 1 - ave/max small velocity = 16.0639 40 - ave/max big velocity = 2.05735 6.73052 -Memory usage per processor = 65.2471 Mbytes -Step 1 tsmall 2[9] Temp Press - 10000 16.233245 1.0144194 0 0 146.27032 - 11000 17.301043 1.0619209 1 0 84.226323 - 12000 13.481177 1.063945 1 0 80.42834 - 13000 12.616615 1.0536125 1 0 68.365053 - 14000 12.16592 1.0581344 1 0 59.709941 - 15000 10.811557 1.0650453 1 0 59.869798 - 16000 9.9303081 1.0641012 1 0 59.289126 - 17000 10.452639 1.0589904 1 0 52.680235 - 18000 9.2488947 1.0556713 1 0 51.044123 - 19000 8.7179788 1.0566791 1 0 50.927924 - 20000 7.8641299 1.0668891 1 0 53.961014 - 21000 8.4333975 1.0628003 1 0 54.677068 - 22000 8.554623 1.0591872 1 0 51.784737 - 23000 7.895462 1.0598512 1 0 53.26885 - 24000 7.7014869 1.055569 1 0 54.236941 - 25000 7.508138 1.0581539 1 0 53.297709 - 26000 8.0707381 1.0586451 1 0 51.411341 - 27000 8.224223 1.0585509 1 0 52.775784 - 28000 8.8720461 1.0648837 1 0 49.681447 - 29000 8.503895 1.0538278 1 0 52.478556 - 30000 8.2272425 1.0625583 1 0 52.795709 - 31000 8.4626161 1.0599557 1 0 52.905343 - 32000 7.7410527 1.0587681 1 0 57.464472 - 33000 7.2765481 1.0677531 1 0 59.46728 - 34000 7.036016 1.0640728 1 0 60.636828 - 35000 8.497203 1.0577458 1 0 55.257312 - 36000 8.9218761 1.0585038 1 0 55.668201 - 37000 8.0469115 1.0561193 1 0 58.711565 - 38000 8.6456966 1.0663818 1 0 53.691658 - 39000 8.566667 1.0616928 1 0 52.866468 - 40000 7.7081259 1.0577046 1 0 54.105829 - 41000 7.4051952 1.0570277 1 0 56.094997 - 42000 7.331432 1.0632261 1 0 55.661067 - 43000 7.5587053 1.0602077 1 0 54.30762 - 44000 7.4521497 1.0594391 1 0 52.993548 - 45000 7.6234559 1.0641992 1 0 53.352202 - 46000 8.0659693 1.0609367 1 0 50.302682 - 47000 7.5227882 1.0563543 1 0 50.43551 - 48000 8.0798684 1.0628968 1 0 48.419201 - 49000 7.130784 1.0594143 1 0 50.656081 - 50000 7.3219268 1.0608236 1 0 54.808358 -Loop time of 1651.84 on 8 procs for 40000 steps with 16271 atoms - -Pair time (%) = 1232.76 (74.6296) -Neigh time (%) = 171.893 (10.4061) -Comm time (%) = 193.625 (11.7218) -Outpt time (%) = 0.00338289 (0.000204795) -Other time (%) = 53.5578 (3.24231) - -Nlocal: 2033.88 ave 2229 max 1953 min -Histogram: 2 1 2 2 0 0 0 0 0 1 -Nghost: 2757.88 ave 2810 max 2692 min -Histogram: 1 1 1 0 1 0 0 1 1 2 -Neighs: 30098.6 ave 37369 max 25592 min -Histogram: 1 3 0 1 0 1 1 0 0 1 - -Total # of neighbors = 240789 -Ave neighs/atom = 14.7987 -Neighbor list builds = 2007 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index 74f9ea8241..86be5bab67 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -2645,7 +2645,6 @@ void FixSRD::parameterize() if (radius && radius[i] > 0.0) { double r = radfactor * radius[i]; volbig += 4.0 / 3.0 * MY_PI * r * r * r; - ; } else if (ellipsoid && ellipsoid[i] >= 0) { double *shape = ebonus[ellipsoid[i]].shape; volbig += 4.0 / 3.0 * MY_PI * shape[0] * shape[1] * shape[2] * radfactor * radfactor * @@ -2658,7 +2657,7 @@ void FixSRD::parameterize() MathExtra::sub3(c2, c1, c2mc1); MathExtra::sub3(c3, c1, c3mc1); MathExtra::cross3(c2mc1, c3mc1, cross); - volbig += 0.5 * MathExtra::len3(cross); + volbig += 0.5 * MathExtra::len3(cross) * WIDTH; } } } else { From 1e2db10252756a8eb73539c2f92bd450aaf13fbd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 20:54:28 -0400 Subject: [PATCH 0262/1002] whitespace --- src/compute_property_grid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compute_property_grid.cpp b/src/compute_property_grid.cpp index 58fe20bd86..20cb872213 100644 --- a/src/compute_property_grid.cpp +++ b/src/compute_property_grid.cpp @@ -331,7 +331,7 @@ void ComputePropertyGrid::pack_id(int n) void ComputePropertyGrid::pack_proc(int n) { int me = comm->me; - + if (dimension == 2) { if (nvalues == 1) { for (int iy = nylo_in; iy <= nyhi_in; iy++) From cbf463898df883e85f5b382106d8b5152a19c33d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 20:58:57 -0400 Subject: [PATCH 0263/1002] add versionadded tag --- doc/src/compute_property_grid.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/compute_property_grid.rst b/doc/src/compute_property_grid.rst index b14e315de3..20a4f19605 100644 --- a/doc/src/compute_property_grid.rst +++ b/doc/src/compute_property_grid.rst @@ -61,6 +61,8 @@ varying fastest, then Y, then Z slowest. For 2d grids (in 2d simulations), the grid IDs range from 1 to Nx*Ny, with X varying fastest and Y slowest. +.. versionadded:: TBD + The *proc* attribute is the ID of the processor which owns the grid cell. Processor IDs range from 0 to Nprocs - 1, where Nprocs is the number of processors the simulation is running on. Each grid cell is From 51cb6da4ca7557d3b3ee9715bdf39d77aecc904d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 21:33:35 -0400 Subject: [PATCH 0264/1002] must dynamically load liblammps.so before any library function calls --- tools/lammps-gui/lammpsgui.cpp | 42 +++++++++++++++++----------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 254312ca67..d4daf198e9 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -116,6 +116,27 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // restore and initialize settings QSettings settings; +#if defined(LAMMPS_GUI_USE_PLUGIN) + plugin_path.clear(); + std::string deffile = settings.value("plugin_path", "liblammps.so").toString().toStdString(); + for (const char *libfile : {deffile.c_str(), "./liblammps.so", "liblammps.dylib", + "./liblammps.dylib", "liblammps.dll"}) { + if (lammps.load_lib(libfile)) { + auto canonical = QFileInfo(libfile).canonicalFilePath(); + plugin_path = canonical.toStdString(); + settings.setValue("plugin_path", canonical); + break; + } + } + + if (plugin_path.empty()) { + // none of the plugin paths could load, remove key + settings.remove("plugin_path"); + QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); + exit(1); + } +#endif + // switch configured accelerator back to "none" if needed. int accel = settings.value("accelerator", AcceleratorTab::None).toInt(); if (accel == AcceleratorTab::Opt) { @@ -234,27 +255,6 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : dirstatus->show(); ui->statusbar->addWidget(progress); -#if defined(LAMMPS_GUI_USE_PLUGIN) - plugin_path.clear(); - std::string deffile = settings.value("plugin_path", "liblammps.so").toString().toStdString(); - for (const char *libfile : {deffile.c_str(), "./liblammps.so", "liblammps.dylib", - "./liblammps.dylib", "liblammps.dll"}) { - if (lammps.load_lib(libfile)) { - auto canonical = QFileInfo(libfile).canonicalFilePath(); - plugin_path = canonical.toStdString(); - settings.setValue("plugin_path", canonical); - break; - } - } - - if (plugin_path.empty()) { - // none of the plugin paths could load, remove key - settings.remove("plugin_path"); - QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); - exit(1); - } -#endif - if (filename) { open_file(filename); } else { From 65cd6a3f2a415a48f42bc59c942c1bf5cacf2bb7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 22:46:50 -0400 Subject: [PATCH 0265/1002] we cannot cleanly restart with a new plugin through loading. must relaunch. --- tools/lammps-gui/lammpswrapper.cpp | 5 +++- tools/lammps-gui/preferences.cpp | 37 +++++++++++++++++++++--------- tools/lammps-gui/preferences.h | 2 ++ 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 8bc6173752..ff5a4f2213 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -228,7 +228,10 @@ bool LammpsWrapper::has_plugin() const bool LammpsWrapper::load_lib(const char *libfile) { - if (plugin_handle) liblammpsplugin_release((liblammpsplugin_t *)plugin_handle); + if (plugin_handle) { + close(); + liblammpsplugin_release((liblammpsplugin_t *)plugin_handle); + } plugin_handle = liblammpsplugin_load(libfile); if (!plugin_handle) return false; if (((liblammpsplugin_t *)plugin_handle)->abiversion != LAMMPSPLUGIN_ABI_VERSION) { diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index abee4eb6bb..2c20a23514 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -44,10 +44,20 @@ #include #endif +#if defined(_WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#define execv(exe, args) _execv(exe, args) +#else +#include +#endif + Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) : QDialog(parent), tabWidget(new QTabWidget), buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)), - settings(new QSettings), lammps(_lammps) + settings(new QSettings), lammps(_lammps), need_relaunch(false) { tabWidget->addTab(new GeneralTab(settings, lammps), "&General Settings"); tabWidget->addTab(new AcceleratorTab(settings, lammps), "&Accelerators"); @@ -141,6 +151,16 @@ void Preferences::accept() if (box) settings->setValue("viewlog", box->isChecked()); box = tabWidget->findChild("viewchart"); if (box) settings->setValue("viewchart", box->isChecked()); + + if (need_relaunch) { + QMessageBox msg(QMessageBox::Information, QString("Relaunching LAMMPS-GUI"), + QString("LAMMPS library plugin path was changed.\n" + "LAMMPS-GUI must be relaunched."), + QMessageBox::Ok); + msg.exec(); + execv(QCoreApplication::applicationFilePath().toStdString().c_str(), nullptr); + fprintf(stderr, "after relaunch\n"); + } QDialog::accept(); } @@ -258,16 +278,11 @@ void GeneralTab::pluginpath() QFileDialog::getOpenFileName(this, "Select Shared LAMMPS Library to Load", field->text(), "Shared Objects (*.so *.dll *.dylib)"); if (!pluginfile.isEmpty() && pluginfile.contains("liblammps", Qt::CaseSensitive)) { - if (lammps->load_lib(pluginfile.toStdString().c_str())) { - auto canonical = QFileInfo(pluginfile).canonicalFilePath(); - field->setText(pluginfile); - settings->setValue("plugin_path", canonical); - } else { - // plugin did not load cannot continue - settings->remove("plugin_path"); - QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); - QCoreApplication::quit(); - } + auto canonical = QFileInfo(pluginfile).canonicalFilePath(); + field->setText(pluginfile); + settings->setValue("plugin_path", canonical); + // ugly hack + qobject_cast(parent()->parent()->parent())->need_relaunch = true; } } diff --git a/tools/lammps-gui/preferences.h b/tools/lammps-gui/preferences.h index b5529b0c46..1aa447e7b1 100644 --- a/tools/lammps-gui/preferences.h +++ b/tools/lammps-gui/preferences.h @@ -32,6 +32,8 @@ public: private slots: void accept() override; +public: + bool need_relaunch; private: QTabWidget *tabWidget; QDialogButtonBox *buttonBox; From 653f0c4d8a7bd96d1ac7f28fc90d2c45460d3794 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 23:13:31 -0400 Subject: [PATCH 0266/1002] correct re-launch implementation for windows --- tools/lammps-gui/preferences.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 2c20a23514..38631e6295 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -48,8 +48,8 @@ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include -#define execv(exe, args) _execv(exe, args) +#include +#define execl(exe, arg0, arg1) _execl(exe, arg0, arg1) #else #include #endif @@ -158,8 +158,9 @@ void Preferences::accept() "LAMMPS-GUI must be relaunched."), QMessageBox::Ok); msg.exec(); - execv(QCoreApplication::applicationFilePath().toStdString().c_str(), nullptr); - fprintf(stderr, "after relaunch\n"); + const char *path = QCoreApplication::applicationFilePath().toStdString().c_str(); + const char *arg0 = QCoreApplication::arguments().at(0).toStdString().c_str(); + execl(path, arg0, nullptr); } QDialog::accept(); } From 2cdb9c5c697be7c4c65e392583d917605b7634db Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 23:22:17 -0400 Subject: [PATCH 0267/1002] must make copies on Linux --- tools/lammps-gui/preferences.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 38631e6295..4858592dc3 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -54,6 +54,14 @@ #include #endif +// duplicate string +static char *mystrdup(const std::string &text) +{ + auto tmp = new char[text.size() + 1]; + memcpy(tmp, text.c_str(), text.size() + 1); + return tmp; +} + Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) : QDialog(parent), tabWidget(new QTabWidget), buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)), @@ -158,9 +166,9 @@ void Preferences::accept() "LAMMPS-GUI must be relaunched."), QMessageBox::Ok); msg.exec(); - const char *path = QCoreApplication::applicationFilePath().toStdString().c_str(); - const char *arg0 = QCoreApplication::arguments().at(0).toStdString().c_str(); - execl(path, arg0, nullptr); + const char *path = mystrdup(QCoreApplication::applicationFilePath().toStdString()); + const char *arg0 = mystrdup(QCoreApplication::arguments().at(0).toStdString()); + execl(path, arg0, (char *)NULL); } QDialog::accept(); } From b57f6d9b302bbc6f6c5e9b120cf18ba1c893459a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 23:44:14 -0400 Subject: [PATCH 0268/1002] dynamic loaded library crashes currently on macOS --- tools/lammps-gui/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index d807547a2f..28169adf36 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -53,6 +53,9 @@ endif() set(LAMMPS_PLUGINLIB_DIR ${LAMMPS_DIR}/examples/COUPLE/plugin) if(LAMMPS_GUI_USE_PLUGIN) + if(APPLE) + message(FATAL_ERROR "Dynamic loading of the LAMMPS library currently not supported on this platform") + endif() enable_language(C) set(PLUGIN_LOADER_SRC ${LAMMPS_PLUGINLIB_DIR}/liblammpsplugin.c) endif() From 7c9eda658f66e52e12ac445da74ddd4615cf9f1b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 03:38:05 -0400 Subject: [PATCH 0269/1002] fix typo --- doc/src/Howto_lammps_gui.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 3e510bb23f..c2de63b9f6 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -286,7 +286,7 @@ General Settings: chart window will be replaced when a new snapshot image is requested, otherwise each command will create a new image window. - *Select Default Font:* Opens a font selection dialog where the type - and size for the default font (used for everthing but the editor and + and size for the default font (used for everything but the editor and log) of the application can be set. - *Select Text Font:* Opens a font selection dialog where the type and size for the text editor and log font of the application can be set. From 44f725f61fcaf2b224c2331c44c9202cd522f4f7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 07:11:07 -0400 Subject: [PATCH 0270/1002] add tooltips, add run/stop/image buttons to status bar, replace run/stop icons --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/emblem-default.png | Bin 3591 -> 0 bytes tools/lammps-gui/imageviewer.cpp | 20 ++++++++++++++++---- tools/lammps-gui/lammpsgui.cpp | 16 ++++++++++++++++ tools/lammps-gui/lammpsgui.qrc | 2 +- tools/lammps-gui/lammpsgui.ui | 2 +- tools/lammps-gui/process-stop.png | Bin 2287 -> 3982 bytes tools/lammps-gui/system-run.png | Bin 0 -> 4065 bytes 8 files changed, 35 insertions(+), 7 deletions(-) delete mode 100644 tools/lammps-gui/emblem-default.png create mode 100644 tools/lammps-gui/system-run.png diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 28169adf36..0746a4fe33 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.2.0 LANGUAGES CXX) +project(lammps-gui VERSION 1.2.1 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/emblem-default.png b/tools/lammps-gui/emblem-default.png deleted file mode 100644 index 84fe175a0e00654a6707b2dddcbb7cb29984b816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3591 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 + dossao->setToolTip("Toggle SSAO rendering"); auto *doanti = new QPushButton(QIcon(":/antialias.png"), ""); doanti->setCheckable(true); + doanti->setToolTip("Toggle anti-aliasing"); auto *dobox = new QPushButton(QIcon(":/system-box.png"), ""); dobox->setCheckable(true); + dobox->setToolTip("Toggle displaying box"); auto *doaxes = new QPushButton(QIcon(":/axes-img.png"), ""); doaxes->setCheckable(true); + doaxes->setToolTip("Toggle displaying axes"); auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); + zoomin->setToolTip("Zoom in by 10 percent"); auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); + zoomout->setToolTip("Zoom out by 10 percent"); auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); + rotleft->setToolTip("Rotate left by 15 degrees"); auto *rotright = new QPushButton(QIcon(":/object-rotate-right.png"), ""); + rotright->setToolTip("Rotate right by 15 degrees"); auto *rotup = new QPushButton(QIcon(":/gtk-go-up.png"), ""); + rotup->setToolTip("Rotate up by 15 degrees"); auto *rotdown = new QPushButton(QIcon(":/gtk-go-down.png"), ""); + rotdown->setToolTip("Rotate down by 15 degrees"); auto *reset = new QPushButton(QIcon(":/gtk-zoom-fit.png"), ""); + reset->setToolTip("Reset view to defaults"); auto *combo = new QComboBox; combo->setObjectName("group"); + combo->setToolTip("Select group to display"); int ngroup = lammps->id_count("group"); char gname[64]; for (int i = 0; i < ngroup; ++i) { @@ -215,28 +227,28 @@ void ImageViewer::do_zoom_out() void ImageViewer::do_rot_left() { - vrot -= 15; + vrot -= 10; if (vrot < -180) vrot += 360; createImage(); } void ImageViewer::do_rot_right() { - vrot += 15; + vrot += 10; if (vrot > 180) vrot -= 360; createImage(); } void ImageViewer::do_rot_down() { - hrot -= 15; + hrot -= 10; if (hrot < 0) hrot += 360; createImage(); } void ImageViewer::do_rot_up() { - hrot += 15; + hrot += 10; if (hrot > 360) hrot -= 360; createImage(); } diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index d4daf198e9..e3b7979a53 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -241,7 +242,22 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : auto pix = QPixmap(":/lammps-icon-128x128.png"); lammpsstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); ui->statusbar->addWidget(lammpsstatus); + lammpsstatus->setToolTip("LAMMPS instance is active"); lammpsstatus->hide(); + + auto *lammpsrun = new QPushButton(QIcon(":/system-run.png"),""); + auto *lammpsstop = new QPushButton(QIcon(":/process-stop.png"), ""); + auto *lammpsimage = new QPushButton(QIcon(":/emblem-photos.png"), ""); + lammpsrun->setToolTip("Run LAMMPS on input"); + lammpsstop->setToolTip("Stop LAMMPS"); + lammpsimage->setToolTip("Create snapshot image"); + ui->statusbar->addWidget(lammpsrun); + ui->statusbar->addWidget(lammpsstop); + ui->statusbar->addWidget(lammpsimage); + connect(lammpsrun, &QPushButton::released, this, &LammpsGui::run_buffer); + connect(lammpsstop, &QPushButton::released, this, &LammpsGui::stop_run); + connect(lammpsimage, &QPushButton::released, this, &LammpsGui::render_image); + status = new QLabel("Ready."); status->setFixedWidth(300); ui->statusbar->addWidget(status); diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 88526719f0..826252ccd5 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -33,7 +33,7 @@ help-about.png emblem-photos.png process-stop.png - emblem-default.png + system-run.png window-close.png application-plot.png application-calc.png diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 6bda61dbb4..635ec25db6 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -212,7 +212,7 @@ - + &Run LAMMPS diff --git a/tools/lammps-gui/process-stop.png b/tools/lammps-gui/process-stop.png index 5f547cfee3f58ad10fd7f3ae211f5502aa488576..b85df6bcabe41b94dfdcdae2293ae3f73938f58d 100644 GIT binary patch literal 3982 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 YXm?e3rshHKSw(=pw#kh;Eti=80PVb6tN;K2 delta 2275 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 literal 0 HcmV?d00001 From 561f682afd8c845e9bf859ee3bb64e4b0d323421 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 08:48:31 -0400 Subject: [PATCH 0271/1002] support setting image dimensions, have render activity indicator --- tools/lammps-gui/emblem-photos.png | Bin 4942 -> 5406 bytes tools/lammps-gui/imageviewer.cpp | 96 ++++++++++++++++++++++------- tools/lammps-gui/imageviewer.h | 2 + tools/lammps-gui/lammpsgui.cpp | 6 +- tools/lammps-gui/preferences.h | 1 + tools/lammps-gui/system-run.png | Bin 4065 -> 4805 bytes 6 files changed, 81 insertions(+), 24 deletions(-) diff --git a/tools/lammps-gui/emblem-photos.png b/tools/lammps-gui/emblem-photos.png index d5b222fe4e0bcecf2d5f03f3e931c62a961a09b0..90e486420d74c05110a7ab903031b8c30eb4a247 100644 GIT binary patch literal 5406 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 aK_dQBO+xBdqVJ`bOiM!-TCVmo^nU>JcW?Co delta 4917 zcmV-56UywKD$XX5Bq9WJLP=Bz2nYy#2xN!=000SaNLh0L01ejw01ejxLMWSflb#eO ze-g_{L_t(&-pyKhbX@gy{@ylk_D#}QyJT6$n{3N036Mb8O)zHbX=!LrPI7ukPoex# z2*l(hC2rE#EM_Ss1rF^wJ#E6FP17bVg+L6U*bci5csH_a%d#X(nvrIIGxOf-_xrt( zEQ13y2~9@l`YrS3z3<-p-R<|RxUP%ef3?rucYk}Ct0^s3!T$MOcimO{uxs_-1;Cp& zt#7P4`lUYIcO?yac`Tj?YntxlwCq3e>#uy+Z>nN;-9CAy|xp(@H1 zkw7rszjBqmuy>)^(9i@`RSC8tEj=}z!APcp!SNFI3>Wd4MKPQa3ZuV&mA3hX=T?8B z3J9>=sB71*HP1L><=KX5T(;@{e|xTWT<5e!r!B55Th?c`G`A{#zh8jWtJNwBg*>vQ z3I@i?*gsmt;BgDOrlRILsM(N8tmvv@e)oJ`*Np3U|G)Z;#{h9_ciws1qChBeSs>_N z>pJea^HM2g#fpBtySqn=d9;8>iz=*21&1dsyfcxx zf(5Ur%a0z%-Xy-nYEQ05qGLQqVMQmd8TI>0S|hduZh` zx;f%E;P>eWnK~(=e|lV2>Nl_dqtvY~_SE`;*bY7SZA|Qb1~%^>YF>inH#`QnR)b{~ zFmUuZJ~Q8B996Mz-yVjTd&IV#Bn@bgZg+q6)^*=HNda=Y@TD*QNwBe@k$`J;&=urM zq{RfY#Yh@COZzjYuXN5sxKV2V#guA_#^;2nK@ivA|iDg~uNMo^|_e>-;BCNK>@& zU?9-N(uZT|BHkS;U@xs)s5)o}`Va{kSkax3oOWi+Okg$(PgQ^t0EJWvs4+O*N{PoM z`CYYQA;i4ie?VZ#h6W^>W6KO?%WX~WTU5GOE+Ey| zEZ~}?dSczWb(vWOY{&V@@Uh{WJ3Bhnqv;BE9V=sTTMW9DhEFEf=Mm ztGp?T6hvWa5Wwao5s!9BtA%JaKZ9Jf1-foXt_yIse^Z0Q+&Kf#;kF%-mf?g zB|i$aFebNJ?kLpkVd#Z%oMejkkJTo#nKr^cp#X3B%scPwxN$*GuYZ1%iJ$My zB71NvEtzFO=|Q|DL2&aCCa?glW}1E&h9OhpT&sB?y=_Ib1yok-yX9$u8iA40`L*D>pHaRnL_IsO^CjX;U1#cBO8u5g=CwmOBDv>M(%~!&f{G zr8Gr)`+#5!iXNo+>b&Jv>?d2f?dCP~6j+K~e|FH0=%U5G?d@mAIYV~98i|Pkc}1SQ+Z)YadWlWx7`L$D{{hk*KC9YPYN{bDOe4skC|f zjvW|0G=OWbz6MQA^H3}l7^uweu`Vdhe|^xFUJ145vrt?5pd{LXP!tG6pad!YFcqWt zL)=mr#F!PoCjqfF`JE8Ix8*q{XwIG&TLkLD^Wr;&v8R!mHP!`@(NsFc4;9+@R)*Nv<|io*bGR(idhHXqi|o5;`2nFe<$Zn zPZU~}Rgn8e{g@IsS>*RZkw_R?VMKZ$5Dba}*8YA9spI40JnsxI>+4%6PE1=0CNoo5 zNDnxnd2rKj@FCGzs<_TvR|^`5+MvpP#Z|ll=X&h~rBI46&tIuPzV{7#^BHJR1CYk8hlM0Jw4;QibZg^7Uo6Cwk+-fqbI&vbqv-nW=x z+hN0?7wL(J7)|v#Ly2ovz~)#i#&&p`3YeJ6q}h}S53mAekMUt;e_rWGFSv@A zHDs>lIWLd}(7I@{SD{X2;yeV`8liKhy-58!jvvzFZY3`t z;U~q*#az2S*ZOCle%ATD?7vxfOwo@UOoi$6ep%w(PzvtUFfX&}3eX~$QN-H{>v?HV zfUZE{K%&O}h@cO_9{DbFe|ef&O91kpu&ja;%FGoNA3P_5H$O(}FJixxtkAga>Kp|S zjmIxuwsg5qbe)68%Vjz4B>iG%O4Bv?W7ep~g!*GzTe}-2J*i*T*Z2R0S zq?m?pb!%IjB0ACcs6b0Ym|pOsQmIN8I>82(`*9DrUROXTZ}pmYY`;qvKg|b4PT9L_ zi949RL@E{FW`I$24Q1Zqwr}mi#n*1bpWeCyt;?RpcQ)B z9GF{YgZRdqZ)`Jkf4y0BhiSU{DCgJ3%afR*<;zxCwi7M`*|jEU(FV+>6Ty9Fn!vZy zD;!%*S}JtGhYZtx8Mtr0J%wHSa@e^ii*2u^}@( z^+FXFox2B1&a5I5iyDlZSq0qoRLg~Z%a&I;3z)-c3k^{de=)YvJ~PO^r+^@HuM=kV zF0$#8MbPz9X^m4=Wj9{mK8Y8%OyJMHJfHLK0Ihs#{4f7v47aR%6NiUN^0-*CCBRdC zEDrucad>1x4qTxii>Ib^>NCq2_uYT@1*z0Ll*=VKn4h zW4v%`Dnk!2h$D=F(G1>vYcDRo>iZI`ZGX^$g`!=j$M{FAEs0oG;M2U>vs`uLI#JZG zAQknYf3+cmuGU6$wzVSF(uSt?`DmWMNRGQ=P-2E`@M1u9E?w2X$`$GJ&;|crTSW#^&;rELkvBB@^t)Oh(P5CyBLY ze^bdv^oJjQ*tBc4Pcg3|pU+})!9m2R3qyj$KWfpP`^2WYID{jC39Hg3?k!q#Y zx)xww*AgUJdkDmkR+|C%0ifK#;x|rfZFdCYWYz|`k;XJ-_VLMvqrSRla|6JRrOr&DS!^pfN%>spNfmmVhHyY|TP&dj5Yk%^Hkj$S^=nNuRFDcf7-N>{cC(n@ z*~YC|k%`w>Fw-z&iEW-A8W!A&M4zmm}M;o76M0aCEdSK_S zclCh-gD<@gyyeb$sUg=!A9&z_fK{{3W50GegK{l>+9O`NEnd7Nf6&r=;-#Cn_Fu(h zK8>vhx8mL7FJdUS6^@oeDB;2vwU{bJu2w!)g;kktq(X|PP%&>qJ$en{r*6d-f?<+7n+Ur7a4OEIyi9% zTLw2{*Ti!eFTTmTf1)9jbl{JKo z{h8;Gwf4au3L+4%P*m<~zw}wd@9OyTRsV`lFZ>jqdG67$6-iK#F98ad>+o} zJ(~*Mfjq0}*1;`!>)2)-I=-2M%NWAZ0L(;%am37Jdht_ZLs%)5v9x8eoIUm*IN%!` z+_(8uwE2}^fAUcgy{@!T-)en*eX)x!`rK!e4T%dwq0l9|VKgsW+E-n4+G78_dCjt- z&V4~LmL0>EgD>Hov7chNu$A+41(AdfTPY({_$=M2?p8xtAf3IEQ^BLy_gW+KR%2jUff?lJc zp%IZt6kVxqTwnWwROrC*_ptTQ3)nsJQ=Hj$mCQbagZnu(*8csY!2i0hS(Um0q$lP` zeI?3U>A2yGH!SIFZ$Ceoh_B|8&TMIJapbGmu5K+FjmrLLCK-r!MZC3t@~Iz`hlUTY zS@+d%f4uOCDeyi;<|R*=YAK)3 nw2Otp4{y8mjz9i5&-`CmwKn3?+wv3u0000<2SrXqu0mjfY|^W7 diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index f661db8708..b38d45fa10 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +60,30 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QVBoxLayout *mainLayout = new QVBoxLayout; + QSettings settings; + + auto *renderstatus = new QLabel(QString()); + auto pix = QPixmap(":/emblem-photos.png"); + renderstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); + renderstatus->setEnabled(false); + renderstatus->setToolTip("Render status"); + settings.beginGroup("snapshot"); + auto *xval = new QSpinBox; + xval->setRange(100, 10000); + xval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType); + xval->setValue(settings.value("xsize", "800").toInt()); + xval->setObjectName("xsize"); + xval->setToolTip("Set rendered image width"); + auto *yval = new QSpinBox; + yval->setRange(100, 10000); + yval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType); + yval->setValue(settings.value("ysize", "600").toInt()); + yval->setObjectName("ysize"); + xval->setToolTip("Set rendered image height"); + settings.endGroup(); + connect(xval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); + connect(yval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); + auto *dossao = new QPushButton(QIcon(":/hd-img.png"), ""); dossao->setCheckable(true); dossao->setToolTip("Toggle SSAO rendering"); @@ -70,21 +96,21 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge auto *doaxes = new QPushButton(QIcon(":/axes-img.png"), ""); doaxes->setCheckable(true); doaxes->setToolTip("Toggle displaying axes"); - auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); + auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); zoomin->setToolTip("Zoom in by 10 percent"); - auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); + auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); zoomout->setToolTip("Zoom out by 10 percent"); - auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); + auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); rotleft->setToolTip("Rotate left by 15 degrees"); auto *rotright = new QPushButton(QIcon(":/object-rotate-right.png"), ""); rotright->setToolTip("Rotate right by 15 degrees"); - auto *rotup = new QPushButton(QIcon(":/gtk-go-up.png"), ""); + auto *rotup = new QPushButton(QIcon(":/gtk-go-up.png"), ""); rotup->setToolTip("Rotate up by 15 degrees"); - auto *rotdown = new QPushButton(QIcon(":/gtk-go-down.png"), ""); + auto *rotdown = new QPushButton(QIcon(":/gtk-go-down.png"), ""); rotdown->setToolTip("Rotate down by 15 degrees"); - auto *reset = new QPushButton(QIcon(":/gtk-zoom-fit.png"), ""); + auto *reset = new QPushButton(QIcon(":/gtk-zoom-fit.png"), ""); reset->setToolTip("Reset view to defaults"); - auto *combo = new QComboBox; + auto *combo = new QComboBox; combo->setObjectName("group"); combo->setToolTip("Select group to display"); int ngroup = lammps->id_count("group"); @@ -96,6 +122,11 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QHBoxLayout *menuLayout = new QHBoxLayout; menuLayout->addWidget(menuBar); + menuLayout->addWidget(renderstatus); + menuLayout->addWidget(new QLabel(" Width: ")); + menuLayout->addWidget(xval); + menuLayout->addWidget(new QLabel(" Height: ")); + menuLayout->addWidget(yval); menuLayout->addWidget(dossao); menuLayout->addWidget(doanti); menuLayout->addWidget(dobox); @@ -149,6 +180,8 @@ void ImageViewer::reset_view() { QSettings settings; settings.beginGroup("snapshot"); + xsize = settings.value("xsize", "800").toInt(); + ysize = settings.value("ysize", "600").toInt(); zoom = settings.value("zoom", 1.0).toDouble(); hrot = settings.value("hrot", 60).toInt(); vrot = settings.value("vrot", 30).toInt(); @@ -163,18 +196,35 @@ void ImageViewer::reset_view() if (lo) { // grab layout manager for the top bar lo = lo->itemAt(0)->layout(); - // grab the first 4 buttons after the menu bar - auto *button = qobject_cast(lo->itemAt(1)->widget()); + + auto *field = qobject_cast(lo->itemAt(3)->widget()); + field->setValue(xsize); + field = qobject_cast(lo->itemAt(5)->widget()); + field->setValue(ysize); + + auto *button = qobject_cast(lo->itemAt(6)->widget()); button->setChecked(usessao); - button = qobject_cast(lo->itemAt(2)->widget()); + button = qobject_cast(lo->itemAt(7)->widget()); button->setChecked(antialias); - button = qobject_cast(lo->itemAt(3)->widget()); + button = qobject_cast(lo->itemAt(8)->widget()); button->setChecked(showbox); - button = qobject_cast(lo->itemAt(4)->widget()); + button = qobject_cast(lo->itemAt(9)->widget()); button->setChecked(showaxes); // grab the last entry -> group selector auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); cb->setCurrentText("all"); + this->repaint(); + } + createImage(); +} + +void ImageViewer::edit_size() +{ + QSpinBox *field = qobject_cast(sender()); + if (field->objectName() == "xsize") { + xsize = field->value(); + } else if (field->objectName() == "ysize") { + ysize = field->value(); } createImage(); } @@ -262,6 +312,11 @@ void ImageViewer::change_group(int idx) void ImageViewer::createImage() { + auto *lo = layout(); + if (lo) lo = lo->itemAt(0)->layout(); + if (lo) qobject_cast(lo->itemAt(1)->widget())->setEnabled(true); + this->repaint(); + QSettings settings; QString dumpcmd = QString("write_dump ") + group + " image "; QDir dumpdir(QDir::tempPath()); @@ -269,14 +324,14 @@ void ImageViewer::createImage() dumpcmd += dumpfile.fileName(); settings.beginGroup("snapshot"); - int aa = antialias ? 2 : 1; - int xsize = settings.value("xsize", 800).toInt() * aa; - int ysize = settings.value("ysize", 600).toInt() * aa; - int hhrot = (hrot > 180) ? 360 - hrot : hrot; + int aa = antialias ? 2 : 1; + int tmpxsize = xsize * aa; + int tmpysize = ysize * aa; + int hhrot = (hrot > 180) ? 360 - hrot : hrot; dumpcmd += blank + settings.value("color", "type").toString(); dumpcmd += blank + settings.value("diameter", "type").toString(); - dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); + dumpcmd += QString(" size ") + QString::number(tmpxsize) + blank + QString::number(tmpysize); dumpcmd += QString(" zoom ") + QString::number(zoom); lammps->command(dumpcmd.toLocal8Bit()); if (lammps->extract_setting("dimension") == 3) { @@ -311,13 +366,12 @@ void ImageViewer::createImage() } dumpfile.remove(); - settings.beginGroup("snapshot"); - xsize = settings.value("xsize", 800).toInt(); - ysize = settings.value("ysize", 600).toInt(); - settings.endGroup(); // scale back to achieve antialiasing image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imageLabel->setPixmap(QPixmap::fromImage(image)); + imageLabel->adjustSize(); + if (lo) qobject_cast(lo->itemAt(1)->widget())->setEnabled(false); + this->repaint(); } void ImageViewer::saveAs() diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index b81e5b0d59..b804e5658d 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -45,6 +45,7 @@ private slots: void normalSize(); void fitToWindow(); + void edit_size(); void reset_view(); void toggle_ssao(); void toggle_anti(); @@ -86,6 +87,7 @@ private: LammpsWrapper *lammps; QString group; QString filename; + int xsize, ysize; int hrot, vrot; double zoom; bool showbox, showaxes, antialias, usessao; diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index e3b7979a53..e00a927776 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -245,8 +245,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : lammpsstatus->setToolTip("LAMMPS instance is active"); lammpsstatus->hide(); - auto *lammpsrun = new QPushButton(QIcon(":/system-run.png"),""); - auto *lammpsstop = new QPushButton(QIcon(":/process-stop.png"), ""); + auto *lammpsrun = new QPushButton(QIcon(":/system-run.png"), ""); + auto *lammpsstop = new QPushButton(QIcon(":/process-stop.png"), ""); auto *lammpsimage = new QPushButton(QIcon(":/emblem-photos.png"), ""); lammpsrun->setToolTip("Run LAMMPS on input"); lammpsstop->setToolTip("Stop LAMMPS"); @@ -257,7 +257,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(lammpsrun, &QPushButton::released, this, &LammpsGui::run_buffer); connect(lammpsstop, &QPushButton::released, this, &LammpsGui::stop_run); connect(lammpsimage, &QPushButton::released, this, &LammpsGui::render_image); - + status = new QLabel("Ready."); status->setFixedWidth(300); ui->statusbar->addWidget(status); diff --git a/tools/lammps-gui/preferences.h b/tools/lammps-gui/preferences.h index 1aa447e7b1..919bc48798 100644 --- a/tools/lammps-gui/preferences.h +++ b/tools/lammps-gui/preferences.h @@ -34,6 +34,7 @@ private slots: public: bool need_relaunch; + private: QTabWidget *tabWidget; QDialogButtonBox *buttonBox; diff --git a/tools/lammps-gui/system-run.png b/tools/lammps-gui/system-run.png index 3aad101a211d20ef015789350dc8d8582194522f..71d0c6d73270c4ba950c66b0f45d40243890bb26 100644 GIT binary patch delta 4649 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 From ebbce58da6ebcd3a1ca8df578a3a84ff4698f7be Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 12:07:43 -0400 Subject: [PATCH 0272/1002] fix typo --- tools/lammps-gui/imageviewer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index b38d45fa10..1738b9ad1f 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -79,7 +79,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge yval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType); yval->setValue(settings.value("ysize", "600").toInt()); yval->setObjectName("ysize"); - xval->setToolTip("Set rendered image height"); + yval->setToolTip("Set rendered image height"); settings.endGroup(); connect(xval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); connect(yval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); From 2c8a3d87a0c1c075981734a91d137833084708d6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 13:06:09 -0400 Subject: [PATCH 0273/1002] must stop running LAMMPS simulation before we can close the lammps object --- tools/lammps-gui/lammpsgui.cpp | 20 +++++++++++++++++++- tools/lammps-gui/lammpsgui.h | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index e00a927776..8c5886dd5e 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -296,6 +296,10 @@ void LammpsGui::new_document() current_file.clear(); ui->textEdit->document()->setPlainText(QString()); + if (lammps.is_running()) { + stop_run(); + runner->wait(); + } lammps.close(); lammpsstatus->hide(); setWindowTitle(QString("LAMMPS-GUI - *unknown*")); @@ -565,6 +569,10 @@ void LammpsGui::save_as() void LammpsGui::quit() { + if (lammps.is_running()) { + stop_run(); + runner->wait(); + } lammps.close(); lammpsstatus->hide(); lammps.finalize(); @@ -822,7 +830,7 @@ void LammpsGui::run_buffer() char *input = mystrdup(ui->textEdit->toPlainText().toStdString() + "\n"); is_running = true; - LammpsRunner *runner = new LammpsRunner(this); + runner = new LammpsRunner(this); runner->setup_run(&lammps, input); connect(runner, &LammpsRunner::resultReady, this, &LammpsGui::run_done); connect(runner, &LammpsRunner::finished, runner, &QObject::deleteLater); @@ -1051,6 +1059,11 @@ void LammpsGui::edit_variables() SetVariables vars(newvars); if (vars.exec() == QDialog::Accepted) { variables = newvars; + if (lammps.is_running()) { + stop_run(); + runner->wait(); + delete runner; + } lammps.close(); lammpsstatus->hide(); } @@ -1073,6 +1086,11 @@ void LammpsGui::preferences() (oldthreads != settings.value("nthreads", 1).toInt()) || (oldecho != settings.value("echo", 0).toInt()) || (oldcite != settings.value("cite", 0).toInt())) { + if (lammps.is_running()) { + stop_run(); + runner->wait(); + delete runner; + } lammps.close(); lammpsstatus->hide(); } diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 5fed14d743..a97a233883 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -26,6 +26,7 @@ // forward declarations class GeneralTab; +class LammpsRunner; QT_BEGIN_NAMESPACE namespace Ui { @@ -114,6 +115,7 @@ private: QList> variables; LammpsWrapper lammps; + LammpsRunner *runner; std::string plugin_path; bool is_running; std::vector lammps_args; From 3eb8fd219afbb97303efd4fcc5dcd85958dd7954 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 16 Aug 2023 16:19:11 -0600 Subject: [PATCH 0274/1002] update of a Howto_output doc page --- doc/src/Howto_output.rst | 140 ++++++++++++++++++++++++++------------- 1 file changed, 93 insertions(+), 47 deletions(-) diff --git a/doc/src/Howto_output.rst b/doc/src/Howto_output.rst index 851b7703fd..6fcd36ab56 100644 --- a/doc/src/Howto_output.rst +++ b/doc/src/Howto_output.rst @@ -1,7 +1,7 @@ Output from LAMMPS (thermo, dumps, computes, fixes, variables) ============================================================== -There are four basic kinds of LAMMPS output: +There are four basic forms of LAMMPS output: * :doc:`Thermodynamic output `, which is a list of quantities printed every few timesteps to the screen and logfile. @@ -20,18 +20,17 @@ output files, depending on what :doc:`dump ` and :doc:`fix ` commands you specify. As discussed below, LAMMPS gives you a variety of ways to determine -what quantities are computed and printed when the thermodynamics, +what quantities are calculated and printed when the thermodynamics, dump, or fix commands listed above perform output. Throughout this discussion, note that users can also :doc:`add their own computes and -fixes to LAMMPS ` which can then generate values that can then -be output with these commands. +fixes to LAMMPS ` which can generate values that can then be +output with these commands. The following subsections discuss different LAMMPS commands related to output and the kind of data they operate on and produce: * :ref:`Global/per-atom/local/per-grid data ` * :ref:`Scalar/vector/array data ` -* :ref:`Per-grid data ` * :ref:`Disambiguation ` * :ref:`Thermodynamic output ` * :ref:`Dump file output ` @@ -48,34 +47,65 @@ to output and the kind of data they operate on and produce: Global/per-atom/local/per-grid data ----------------------------------- -Various output-related commands work with four different styles of +Various output-related commands work with four different "styles" of data: global, per-atom, local, and per-grid. A global datum is one or more system-wide values, e.g. the temperature of the system. A per-atom datum is one or more values per atom, e.g. the kinetic energy of each atom. Local datums are calculated by each processor based on -the atoms it owns, but there may be zero or more per atom, e.g. a list +the atoms it owns, and there may be zero or more per atom, e.g. a list of bond distances. A per-grid datum is one or more values per grid cell, for a grid which -overlays the simulation domain. The grid cells and the data they -store are distributed across processors; each processor owns the grid -cells whose center point falls within its subdomain. +overlays the simulation domain. Similar to atoms and per-atom data, +the grid cells and the data they store are distributed across +processors; each processor owns the grid cells whose center points +fall within its subdomain. .. _scalar: Scalar/vector/array data ------------------------ -Global, per-atom, and local datums can come in three kinds: a single -scalar value, a vector of values, or a 2d array of values. The doc -page for a "compute" or "fix" or "variable" that generates data will -specify both the style and kind of data it produces, e.g. a per-atom -vector. +Global, per-atom, local, and per-grid datums can come in three +"kinds": a single scalar value, a vector of values, or a 2d array of +values. More specifically these are the valid kinds for each style: -When a quantity is accessed, as in many of the output commands -discussed below, it can be referenced via the following bracket -notation, where ID in this case is the ID of a compute. The leading -"c\_" would be replaced by "f\_" for a fix, or "v\_" for a variable: +* global scalar +* global vector +* global array +* per-atom vector +* per-atom array +* local vector +* local array +* per-grid vector +* per-grid array + +A per-atom vector means a single value per atom; the "vector" is the +length of the number of atoms. A per-atom array means multiple values +per atom. Similarly a local vector or array means one or multiple +values per entity (e.g. per bond in the system). And a per-grid +vector or array means one or multiple values per grid cell. + +The doc page for a compute or fix or variable that generates data will +specify both the styles and kinds of data it produces, e.g. a per-atom +vector. Note that a compute or fix may generate multiple styles and +kinds of output. However, for per-atom data only a vector or array is +output, never both. Likewise for per-local and per-grid data. An +example of a fix which generates multiple styles and kinds of data is +the :doc:`fix mdi/qm ` command. It outputs a global +scalar, global vector, and per-atom array for the quantum mechanical +energy and virial of the system and forces on each atom. + +By contrast, different variable styles generate only a single kind of +data: a global scalar for an equal-style variable, global vector for a +vector-style variable, and a per-atom vector for an atom-style +variable. + +When data is accessed by another command, as in many of the output +commands discussed below, it can be referenced via the following +bracket notation, where ID in this case is the ID of a compute. The +leading "c\_" would be replaced by "f\_" for a fix, or "v\_" for a +variable (and ID would be the name of the variable): +-------------+--------------------------------------------+ | c_ID | entire scalar, vector, or array | @@ -85,40 +115,56 @@ notation, where ID in this case is the ID of a compute. The leading | c_ID[I][J] | one element of array | +-------------+--------------------------------------------+ -In other words, using one bracket reduces the dimension of the data -once (vector -> scalar, array -> vector). Using two brackets reduces -the dimension twice (array -> scalar). Thus a command that uses -scalar values as input can typically also process elements of a vector -or array. +Note that using one bracket reduces the dimension of the data once +(vector -> scalar, array -> vector). Using two brackets reduces the +dimension twice (array -> scalar). Thus a command that uses scalar +values as input can also conceptually operate on an element of a +vector or array. -.. _grid: - -Per-grid data ------------------------- - -Per-grid data can come in two kinds: a vector of values (one per grid -cekk), or a 2d array of values (multiple values per grid ckk). The -doc page for a "compute" or "fix" that generates data will specify -names for both the grid(s) and datum(s) it produces, e.g. per-grid -vectors or arrays, which can be referenced by other commands. See the -:doc:`Howto grid ` doc page for more details. +Per-grid vectors or arrays are accessed similarly, except that the ID +for the compute or fix includes a grid name and a data name. This is +because a fix or compute can create multiple grids (of different +sizes) and multiple sets of data (for each grid). The fix or compute +defines names for each grid and for each data set, so that all of them +can be accessed by other commands. See the :doc:`Howto grid +` doc page for more details. .. _disambiguation: Disambiguation -------------- -Some computes and fixes produce data in multiple styles, e.g. a global -scalar and a per-atom vector. Usually the context in which the input -script references the data determines which style is meant. Example: -if a compute provides both a global scalar and a per-atom vector, the -former will be accessed by using ``c_ID`` in an equal-style variable, -while the latter will be accessed by using ``c_ID`` in an atom-style -variable. Note that atom-style variable formulas can also access -global scalars, but in this case it is not possible to do this -directly because of the ambiguity. Instead, an equal-style variable -can be defined which accesses the global scalar, and that variable can -be used in the atom-style variable formula in place of ``c_ID``. +When a compute or fix produces data in multiple styles, e.g. global +and per-atom, a reference to the data can sometimes be ambiguous. +Usually the context in which the input script references the data +determines which style is meant. + +For example, if a compute outputs a global vector and a per-atom +array, an element of the global vector will be accessed by using +``c_ID[I]`` in :doc:`thermodynamic output `, while a +column of the per-atom array will be accessed by using ``c_ID[I]`` in +a :doc:`dump custom ` command. + +However, if a :doc:`atom-style variable ` references +``c_ID[I]``, then it could be intended to refer to a single element of +the global vector or a column of the per-atom array. The doc page for +any command that has a potential ambiguity (variables are the most +common) will explain how to resolve the ambiguity. + +In this case, an atom-style variables references per-atom data if it +exists. If access to an element of a global vector is needed (as in +this example), an equal-style variable which references the value can +be defined and used in the atom-style variable formula instead. + +Similarly, :doc:`thermodynamic output ` can only +reference global data from a compute or fix. But you can indirectly +access per-atom data as follows. The reference ``c_ID[245][2]`` for +the ID of a :doc:`compute displace/atom ` +command, refers to the y-component of displacement for the atom with +ID 245. While you cannot use that reference directly in the +:doc:`thermo_style ` command, you can use it an +equal-style variable formula, and then reference the variable in +thermodynamic output. .. _thermo: @@ -389,7 +435,7 @@ output and input data types must match, e.g. global/per-atom/local data and scalar/vector/array data. Also note that, as described above, when a command takes a scalar as -input, that could be an element of a vector or array. Likewise a +input, that could also be an element of a vector or array. Likewise a vector input could be a column of an array. +--------------------------------------------------------+----------------------------------------------+----------------------------------------------------+ From 462819904194c835376886a59bf575a719f49924 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 19:10:14 -0400 Subject: [PATCH 0275/1002] update todo --- tools/lammps-gui/TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index d9581e3ae6..aa720a321c 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -10,6 +10,7 @@ LAMMPS-GUI TODO list: - need to handle "label" and "jump" commands from within ? - switch processing of input to line based commands or? - switch input file editor to read-only while loop is running +- triple quoted heredocs don't work with lammps_commands_string() # Long term ideas - add feature to LAMMPS (to the LAMMPS class) to store current file name and line number, update while reading/parsing From f91dc3e68ac01ea28a3c83d66d2cef1963dc66fd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 20:24:57 -0400 Subject: [PATCH 0276/1002] implement anti-aliasing for dump image (and dump movie) --- doc/src/dump_image.rst | 15 +++++++++++- src/dump_image.cpp | 29 ++++++++++++++++++++++ src/image.cpp | 55 +++++++++++++++++++++++++++++++++--------- src/image.h | 3 ++- 4 files changed, 89 insertions(+), 13 deletions(-) diff --git a/doc/src/dump_image.rst b/doc/src/dump_image.rst index 25d1efff7d..2aec55bb60 100644 --- a/doc/src/dump_image.rst +++ b/doc/src/dump_image.rst @@ -103,7 +103,7 @@ Syntax dump_modify dump-ID keyword values ... * these keywords apply only to the *image* and *movie* styles and are documented on this page -* keyword = *acolor* or *adiam* or *amap* or *gmap* or *backcolor* or *bcolor* or *bdiam* or *bitrate* or *boxcolor* or *color* or *framerate* or *gmap* +* keyword = *acolor* or *adiam* or *amap* or *gmap* or *backcolor* or *bcolor* or *bdiam* or *bitrate* or *boxcolor* or *color* or *framerate* or *fsaa* or *gmap* * see the :doc:`dump modify ` doc page for more general keywords .. parsed-literal:: @@ -151,6 +151,8 @@ Syntax R,G,B = red/green/blue numeric values from 0.0 to 1.0 *framerate* arg = fps fps = frames per second for movie + *fsaa* arg = yes/no + yes/no = do or do not apply anti-aliasing *gmap* args = identical to *amap* args Examples @@ -957,6 +959,17 @@ frequently. ---------- +.. versionadded:: TBD + +The *fsaa* keyword can be used with the dump image command to improve +the image quality by enabling full scene anti-aliasing. Internally the +image is rendered at twice the width and height and then scaled down by +computing the average of each 2x2 block of pixels to produce a single +pixel in the final image at the original size. This produces smoother, +less ragged edges. + +---------- + The *gmap* keyword can be used with the dump image command, with its *grid* keyword, to setup a color map. The color map is used to assign a specific RGB (red/green/blue) color value to an individual grid cell diff --git a/src/dump_image.cpp b/src/dump_image.cpp index 1ba433f93f..41d4671f95 100644 --- a/src/dump_image.cpp +++ b/src/dump_image.cpp @@ -1555,6 +1555,35 @@ int DumpImage::modify_param(int narg, char **arg) return n; } + // if antialias state changes, we need to increase the buffer space + // change the (internal) image dimensions and reset the view parameters + if (strcmp(arg[0],"fsaa") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + int aa = utils::logical(FLERR, arg[1], false, lmp); + if (image->fsaa == NO) { + if (aa == YES) { + image->width = image->width*2; + image->height = image->height*2; + // reallocate buffers to make room + image->buffers(); + } + } else { + if (aa == NO) { + image->width = image->width/2; + image->height = image->height/2; + box_bounds(); + box_center(); + view_params(); + } + } + image->fsaa = aa; + // reset size based parameters + box_bounds(); + box_center(); + view_params(); + return 2; + } + if (strcmp(arg[0],"bcolor") == 0) { if (narg < 3) error->all(FLERR,"Illegal dump_modify command"); if (atom->nbondtypes == 0) diff --git a/src/image.cpp b/src/image.cpp index 0f31ae9927..2516ae3fdc 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -55,7 +55,9 @@ enum{NO,YES}; /* ---------------------------------------------------------------------- */ -Image::Image(LAMMPS *lmp, int nmap_caller) : Pointers(lmp) +Image::Image(LAMMPS *lmp, int nmap_caller) : + Pointers(lmp), depthBuffer(nullptr), surfaceBuffer(nullptr), imageBuffer(nullptr), + depthcopy(nullptr),surfacecopy(nullptr),rgbcopy(nullptr) { MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); @@ -69,6 +71,7 @@ Image::Image(LAMMPS *lmp, int nmap_caller) : Pointers(lmp) persp = 0.0; shiny = 1.0; ssao = NO; + fsaa = NO; up[0] = 0.0; up[1] = 0.0; @@ -154,6 +157,13 @@ Image::~Image() void Image::buffers() { + memory->destroy(depthBuffer); + memory->destroy(surfaceBuffer); + memory->destroy(imageBuffer); + memory->destroy(depthcopy); + memory->destroy(surfacecopy); + memory->destroy(rgbcopy); + npixels = width * height; memory->create(depthBuffer,npixels,"image:depthBuffer"); memory->create(surfaceBuffer,2*npixels,"image:surfaceBuffer"); @@ -380,6 +390,26 @@ void Image::merge() } else { writeBuffer = imageBuffer; } + + // scale down image for antialiasing. can be done in place with simple averaging + if (fsaa) { + for (int h=0; h < height; h += 2) { + for (int w=0; w < width; w +=2) { + int idx1 = 3*height*h + 3*w; + int idx2 = 3*height*h + 3*(w+1); + int idx3 = 3*height*(h+1) + 3*w; + int idx4 = 3*height*(h+1) + 3*(w+1); + + int out = 3*(height/2)*(h/2) + 3*(w/2); + for (int i=0; i < 3; ++i) { + writeBuffer[out+i] = (unsigned char) (0.25*((int)writeBuffer[idx1+i] + +(int)writeBuffer[idx2+i] + +(int)writeBuffer[idx3+i] + +(int)writeBuffer[idx4+i])); + } + } + } + } } /* ---------------------------------------------------------------------- @@ -1037,6 +1067,7 @@ void Image::compute_SSAO() void Image::write_JPG(FILE *fp) { #ifdef LAMMPS_JPEG + int aafactor = fsaa ? 2 : 1; struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; JSAMPROW row_pointer; @@ -1044,8 +1075,8 @@ void Image::write_JPG(FILE *fp) cinfo.err = jpeg_std_error(&jerr); jpeg_create_compress(&cinfo); jpeg_stdio_dest(&cinfo,fp); - cinfo.image_width = width; - cinfo.image_height = height; + cinfo.image_width = width/aafactor; + cinfo.image_height = height/aafactor; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; @@ -1055,7 +1086,7 @@ void Image::write_JPG(FILE *fp) while (cinfo.next_scanline < cinfo.image_height) { row_pointer = (JSAMPROW) - &writeBuffer[(cinfo.image_height - 1 - cinfo.next_scanline) * 3 * width]; + &writeBuffer[(cinfo.image_height - 1 - cinfo.next_scanline) * 3 * (width/aafactor)]; jpeg_write_scanlines(&cinfo,&row_pointer,1); } @@ -1071,6 +1102,7 @@ void Image::write_JPG(FILE *fp) void Image::write_PNG(FILE *fp) { #ifdef LAMMPS_PNG + int aafactor = fsaa ? 2 : 1; png_structp png_ptr; png_infop info_ptr; @@ -1091,7 +1123,7 @@ void Image::write_PNG(FILE *fp) png_init_io(png_ptr, fp); png_set_compression_level(png_ptr,Z_BEST_COMPRESSION); - png_set_IHDR(png_ptr,info_ptr,width,height,8,PNG_COLOR_TYPE_RGB, + png_set_IHDR(png_ptr,info_ptr,width/aafactor,height/aafactor,8,PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); png_text text_ptr[2]; @@ -1111,9 +1143,9 @@ void Image::write_PNG(FILE *fp) png_set_text(png_ptr,info_ptr,text_ptr,1); png_write_info(png_ptr,info_ptr); - auto row_pointers = new png_bytep[height]; - for (int i=0; i < height; ++i) - row_pointers[i] = (png_bytep) &writeBuffer[(height-i-1)*3*width]; + auto row_pointers = new png_bytep[height/aafactor]; + for (int i=0; i < height/aafactor; ++i) + row_pointers[i] = (png_bytep) &writeBuffer[((height/aafactor)-i-1)*3*(width/aafactor)]; png_write_image(png_ptr, row_pointers); png_write_end(png_ptr, info_ptr); @@ -1129,11 +1161,12 @@ void Image::write_PNG(FILE *fp) void Image::write_PPM(FILE *fp) { - fprintf(fp,"P6\n%d %d\n255\n",width,height); + int aafactor = fsaa ? 2 : 1; + fprintf(fp,"P6\n%d %d\n255\n",width/aafactor,height/aafactor); int y; - for (y = height-1; y >= 0; y--) - fwrite(&writeBuffer[y*width*3],3,width,fp); + for (y = (height/aafactor)-1; y >= 0; y--) + fwrite(&writeBuffer[y*(width/aafactor)*3],3,width/aafactor,fp); } /* ---------------------------------------------------------------------- diff --git a/src/image.h b/src/image.h index 51a0acc61c..4f87e92b67 100644 --- a/src/image.h +++ b/src/image.h @@ -28,13 +28,14 @@ class Image : protected Pointers { double zoom; // zoom factor double persp; // perspective factor double shiny; // shininess of objects + int fsaa; // antialiasing on or off int ssao; // SSAO on or off int seed; // RN seed for SSAO double ssaoint; // strength of shading from 0 to 1 double *boxcolor; // color to draw box outline with int background[3]; // RGB values of background - double ambientColor[3]; // light color settings (adjustable by caller) + double ambientColor[3]; // light color settings (adjustable by caller) double keyLightColor[3]; double fillLightColor[3]; double backLightColor[3]; From 43347b87cebb0873790e21d26b277105b523de4f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 00:38:46 -0400 Subject: [PATCH 0277/1002] also recognize integer ranges with : or * as integer --- tools/lammps-gui/highlighter.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index c2afb28342..7ed4844c69 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -183,7 +183,7 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) } const QString number_keywords[] = { - QStringLiteral("(^|\\s+)[0-9]+"), // integer + QStringLiteral("(^|\\s+)[0-9:*]+"), // integer and integer ranges QStringLiteral("(^|\\s+)[0-9]+\\.[0-9]*[edED]?[-+]?[0-9]*"), // floating point 1 QStringLiteral("(^|\\s+)[0-9]*\\.[0-9]+[edED]?[-+]?[0-9]*"), // floating point 2 QStringLiteral("(^|\\s+)[0-9]+([edED][-+]?[0-9]+)?") // floating point 3 @@ -207,10 +207,12 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) void Highlighter::highlightBlock(const QString &text) { + // clang-format off auto style = QRegularExpression("^(fix|compute|dump|set)\\s+(\\w+)\\s+(\\S+)\\s+(\\S+)").match(text); auto force = QRegularExpression("^(atom_style|pair_style|bond_style|angle_style|dihedral_style|improper_style|kspace_style)\\s+(\\S+)").match(text); auto defs = QRegularExpression("^(group|variable)\\s+(\\S+)\\s+(\\S+)").match(text); auto undo = QRegularExpression("^(unfix|uncompute|undump)\\s+(\\w+)").match(text); + // clang-format on bool do_style = true; bool do_force = true; bool do_defs = true; From 3ac856cc922c7ae90dd04a6d6cf49286486d9477 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 00:39:10 -0400 Subject: [PATCH 0278/1002] add extract_global() and extract_atom() --- tools/lammps-gui/lammpswrapper.cpp | 26 ++++++++++++++++++++++++++ tools/lammps-gui/lammpswrapper.h | 6 ++++++ 2 files changed, 32 insertions(+) diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index ff5a4f2213..bb46d7c425 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -45,6 +45,32 @@ int LammpsWrapper::extract_setting(const char *keyword) return val; } +void *LammpsWrapper::extract_global(const char *keyword) +{ + void *val = nullptr; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->extract_global(lammps_handle, keyword); +#else + val = lammps_extract_global(lammps_handle, keyword); +#endif + } + return val; +} + +void *LammpsWrapper::extract_atom(const char *keyword) +{ + void *val = nullptr; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->extract_atom(lammps_handle, keyword); +#else + val = lammps_extract_atom(lammps_handle, keyword); +#endif + } + return val; +} + int LammpsWrapper::id_count(const char *keyword) { int val = 0; diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index 064e784981..555307960c 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -29,15 +29,21 @@ public: void force_timeout(); int extract_setting(const char *keyword); + void *extract_global(const char *keyword); + void *extract_atom(const char *keyword); + int id_count(const char *idtype); int id_name(const char *idtype, int idx, char *buf, int buflen); double get_thermo(const char *keyword); void *last_thermo(const char *keyword, int idx); + bool is_open() const { return lammps_handle != nullptr; } bool is_running(); + bool has_error() const; int get_last_error_message(char *errorbuf, int buflen); + bool config_accelerator(const char *package, const char *category, const char *setting) const; bool config_has_package(const char *pkg) const; bool has_gpu_device() const; From 37b0ba1d51f3e59d4b17245b7a53439879efaa47 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 00:40:00 -0400 Subject: [PATCH 0279/1002] import periodic table functions from VMD/molfile plugin --- tools/lammps-gui/imageviewer.cpp | 16 +++ tools/lammps-gui/periodic_table.h | 205 ++++++++++++++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100755 tools/lammps-gui/periodic_table.h diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 1738b9ad1f..d1e3b5a445 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -38,6 +38,22 @@ #include #include +#include + +extern "C" { +#include "periodic_table.h" +static int get_pte_from_mass(double mass) +{ + int idx = 0; + for (int i = 0; i < nr_pte_entries; ++i) + if (fabs(mass - pte_mass[i]) < 0.65) idx = i; + if ((mass > 0.0) && (mass < 2.2)) idx = 1; + // discriminate between Cobalt and Nickel. The loop will detect Nickel + if ((mass < 61.24) && (mass > 58.8133)) idx = 27; + return idx; +} +} + static const QString blank(" "); ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) : diff --git a/tools/lammps-gui/periodic_table.h b/tools/lammps-gui/periodic_table.h new file mode 100755 index 0000000000..42e56f3fdd --- /dev/null +++ b/tools/lammps-gui/periodic_table.h @@ -0,0 +1,205 @@ +/*************************************************************************** + * RCS INFORMATION: + * + * $RCSfile: periodic_table.h,v $ + * $Author: johns $ $Locker: $ $State: Exp $ + * $Revision: 1.12 $ $Date: 2009/01/21 17:45:41 $ + * + ***************************************************************************/ + +/* + * periodic table of elements and helper functions to convert + * ordinal numbers to labels and back. + * all tables and functions are declared static, so that it + * can be safely included by all plugins that may need it. + * + * 2002-2009 akohlmey@cmm.chem.upenn.edu, vmd@ks.uiuc.edu + */ + +#include +#include + +/* periodic table of elements for translation of ordinal to atom type */ +static const char *pte_label[] = { + "X", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", + "Na", "Mg", "Al", "Si", "P" , "S", "Cl", "Ar", "K", "Ca", "Sc", + "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", + "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", + "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", + "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", + "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", + "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", + "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", + "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", + "Ds", "Rg" +}; +static const int nr_pte_entries = sizeof(pte_label) / sizeof(char *); + +/* corresponding table of masses. */ +static const double pte_mass[] = { + /* X */ 0.00000, 1.00794, 4.00260, 6.941, 9.012182, 10.811, + /* C */ 12.0107, 14.0067, 15.9994, 18.9984032, 20.1797, + /* Na */ 22.989770, 24.3050, 26.981538, 28.0855, 30.973761, + /* S */ 32.065, 35.453, 39.948, 39.0983, 40.078, 44.955910, + /* Ti */ 47.867, 50.9415, 51.9961, 54.938049, 55.845, 58.9332, + /* Ni */ 58.6934, 63.546, 65.409, 69.723, 72.64, 74.92160, + /* Se */ 78.96, 79.904, 83.798, 85.4678, 87.62, 88.90585, + /* Zr */ 91.224, 92.90638, 95.94, 98.0, 101.07, 102.90550, + /* Pd */ 106.42, 107.8682, 112.411, 114.818, 118.710, 121.760, + /* Te */ 127.60, 126.90447, 131.293, 132.90545, 137.327, + /* La */ 138.9055, 140.116, 140.90765, 144.24, 145.0, 150.36, + /* Eu */ 151.964, 157.25, 158.92534, 162.500, 164.93032, + /* Er */ 167.259, 168.93421, 173.04, 174.967, 178.49, 180.9479, + /* W */ 183.84, 186.207, 190.23, 192.217, 195.078, 196.96655, + /* Hg */ 200.59, 204.3833, 207.2, 208.98038, 209.0, 210.0, 222.0, + /* Fr */ 223.0, 226.0, 227.0, 232.0381, 231.03588, 238.02891, + /* Np */ 237.0, 244.0, 243.0, 247.0, 247.0, 251.0, 252.0, 257.0, + /* Md */ 258.0, 259.0, 262.0, 261.0, 262.0, 266.0, 264.0, 269.0, + /* Mt */ 268.0, 271.0, 272.0 +}; + +/* + * corresponding table of VDW radii. + * van der Waals radii are taken from A. Bondi, + * J. Phys. Chem., 68, 441 - 452, 1964, + * except the value for H, which is taken from R.S. Rowland & R. Taylor, + * J.Phys.Chem., 100, 7384 - 7391, 1996. Radii that are not available in + * either of these publications have RvdW = 2.00 Å. + * The radii for Ions (Na, K, Cl, Ca, Mg, and Cs are based on the CHARMM27 + * Rmin/2 parameters for (SOD, POT, CLA, CAL, MG, CES) by default. + */ +static const double pte_vdw_radius[] = { + /* X */ 1.5, 1.2, 1.4, 1.82, 2.0, 2.0, + /* C */ 1.7, 1.55, 1.52, 1.47, 1.54, + /* Na */ 1.36, 1.18, 2.0, 2.1, 1.8, + /* S */ 1.8, 2.27, 1.88, 1.76, 1.37, 2.0, + /* Ti */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + /* Ni */ 1.63, 1.4, 1.39, 1.07, 2.0, 1.85, + /* Se */ 1.9, 1.85, 2.02, 2.0, 2.0, 2.0, + /* Zr */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + /* Pd */ 1.63, 1.72, 1.58, 1.93, 2.17, 2.0, + /* Te */ 2.06, 1.98, 2.16, 2.1, 2.0, + /* La */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + /* Eu */ 2.0, 2.0, 2.0, 2.0, 2.0, + /* Er */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + /* W */ 2.0, 2.0, 2.0, 2.0, 1.72, 1.66, + /* Hg */ 1.55, 1.96, 2.02, 2.0, 2.0, 2.0, 2.0, + /* Fr */ 2.0, 2.0, 2.0, 2.0, 2.0, 1.86, + /* Np */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + /* Md */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + /* Mt */ 2.0, 2.0, 2.0 +}; + +/* lookup functions */ + +static const char *get_pte_label(const int idx) +{ + if ((idx < 1) || (idx >= nr_pte_entries)) return pte_label[0]; + + return pte_label[idx]; +} + +static double get_pte_mass(const int idx) +{ + if ((idx < 1) || (idx >= nr_pte_entries)) return pte_mass[0]; + + return pte_mass[idx]; +} + +static double get_pte_vdw_radius(const int idx) +{ + if ((idx < 1) || (idx >= nr_pte_entries)) return pte_vdw_radius[0]; + +#if 1 + /* Replace with Hydrogen radius with an "all-atom" radius */ + if (idx == 1) + return 1.0; /* H */ +#else + /* Replace with old VMD atom radii values */ + switch (idx) { + case 1: return 1.0; /* H */ + case 6: return 1.5; /* C */ + case 7: return 1.4; /* N */ + case 8: return 1.3; /* O */ + case 9: return 1.2; /* F */ + case 15: return 1.5; /* P */ + case 16: return 1.9; /* S */ + } +#endif + + return pte_vdw_radius[idx]; +} + +static int get_pte_idx(const char *label) +{ + int i; + char atom[3]; + + /* zap string */ + atom[0] = (char) 0; + atom[1] = (char) 0; + atom[2] = (char) 0; + /* if we don't have a null-pointer, there must be at least two + * chars, which is all we need. we convert to the capitalization + * convention of the table above during assignment. */ + if (label != NULL) { + atom[0] = (char) toupper((int) label[0]); + atom[1] = (char) tolower((int) label[1]); + } + /* discard numbers in atom label */ + if (isdigit(atom[1])) atom[1] = (char) 0; + + for (i=0; i < nr_pte_entries; ++i) { + if ( (pte_label[i][0] == atom[0]) + && (pte_label[i][1] == atom[1]) ) return i; + } + + return 0; +} + +static int get_pte_idx_from_string(const char *label) { + int i, ind; + char atom[3]; + + if (label != NULL) { + /* zap string */ + atom[0] = atom[1] = atom[2] = '\0'; + + for (ind=0,i=0; (ind<2) && (label[i]!='\0'); i++) { + if (label[i] != ' ') { + atom[ind] = toupper(label[i]); + ind++; + } + } + + if (ind < 1) + return 0; /* no non-whitespace characters */ + + for (i=0; i < nr_pte_entries; ++i) { + if ((toupper(pte_label[i][0]) == atom[0]) && (toupper(pte_label[i][1]) == atom[1])) + return i; + } + } + + return 0; +} + +#if 0 +#include + +int main() { + int i; + + printf("Periodic table check/dump\n"); + printf(" Table contains data for %d elements\n", nr_pte_entries); + printf(" Mass table size check: %d\n", sizeof(pte_mass) / sizeof(double)); + printf(" VDW table size check: %d\n", sizeof(pte_vdw_radius) / sizeof(double)); + printf("\n"); + printf("Symbol Num Mass rVDW\n"); + for (i=0; i Date: Thu, 17 Aug 2023 00:41:30 -0400 Subject: [PATCH 0280/1002] color by element when units setting allows it --- tools/lammps-gui/imageviewer.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index d1e3b5a445..d7750f225d 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -333,6 +333,19 @@ void ImageViewer::createImage() if (lo) qobject_cast(lo->itemAt(1)->widget())->setEnabled(true); this->repaint(); + int ntypes = lammps->extract_setting("ntypes"); + double *masses = (double *)lammps->extract_atom("mass"); + QString units = (const char *)lammps->extract_global("units"); + QString elements = "element "; + QString adiams; + if ((units == "real") || (units == "metal")) { + for (int i = 1; i <= ntypes; ++i) { + int idx = get_pte_from_mass(masses[i]); + elements += QString(pte_label[idx]) + blank; + adiams += QString("adiam %1 %2 ").arg(i).arg(pte_vdw_radius[idx]); + } + } + QSettings settings; QString dumpcmd = QString("write_dump ") + group + " image "; QDir dumpdir(QDir::tempPath()); @@ -345,11 +358,15 @@ void ImageViewer::createImage() int tmpysize = ysize * aa; int hhrot = (hrot > 180) ? 360 - hrot : hrot; - dumpcmd += blank + settings.value("color", "type").toString(); + if (!adiams.isEmpty()) + dumpcmd += blank + "element"; + else + dumpcmd += blank + settings.value("color", "type").toString(); dumpcmd += blank + settings.value("diameter", "type").toString(); dumpcmd += QString(" size ") + QString::number(tmpxsize) + blank + QString::number(tmpysize); dumpcmd += QString(" zoom ") + QString::number(zoom); - lammps->command(dumpcmd.toLocal8Bit()); + dumpcmd += " shiny 0.5 "; + if (lammps->extract_setting("dimension") == 3) { dumpcmd += QString(" view ") + QString::number(hhrot) + blank + QString::number(vrot); } @@ -360,12 +377,13 @@ void ImageViewer::createImage() dumpcmd += QString(" box no 0.0"); if (showaxes) - dumpcmd += QString(" axes yes 0.2 0.025"); + dumpcmd += QString(" axes yes 0.5 0.025"); else dumpcmd += QString(" axes no 0.0 0.0"); dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString(); dumpcmd += " backcolor " + settings.value("background", "black").toString(); + if (!adiams.isEmpty()) dumpcmd += blank + elements + blank + adiams; settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); From b2a8bc07a0dbbc386e9c966b6b3b451ed6f6dc93 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 01:20:07 -0400 Subject: [PATCH 0281/1002] add option to toggle between VDW style representation and licorice style --- tools/lammps-gui/imageviewer.cpp | 54 ++++++++++++++++++++++---------- tools/lammps-gui/imageviewer.h | 3 +- tools/lammps-gui/lammpsgui.qrc | 1 + tools/lammps-gui/preferences.cpp | 20 ++++++++---- 4 files changed, 55 insertions(+), 23 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index d7750f225d..780af2115d 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -78,6 +78,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QSettings settings; + vdwfactor = 0.4; auto *renderstatus = new QLabel(QString()); auto pix = QPixmap(":/emblem-photos.png"); renderstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); @@ -106,6 +107,9 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge auto *doanti = new QPushButton(QIcon(":/antialias.png"), ""); doanti->setCheckable(true); doanti->setToolTip("Toggle anti-aliasing"); + auto *dovdw = new QPushButton(QIcon(":/vdw-style.png"), ""); + dovdw->setCheckable(true); + dovdw->setToolTip("Toggle VDW style representation"); auto *dobox = new QPushButton(QIcon(":/system-box.png"), ""); dobox->setCheckable(true); dobox->setToolTip("Toggle displaying box"); @@ -145,6 +149,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(yval); menuLayout->addWidget(dossao); menuLayout->addWidget(doanti); + menuLayout->addWidget(dovdw); menuLayout->addWidget(dobox); menuLayout->addWidget(doaxes); menuLayout->addWidget(zoomin); @@ -159,6 +164,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge connect(dossao, &QPushButton::released, this, &ImageViewer::toggle_ssao); connect(doanti, &QPushButton::released, this, &ImageViewer::toggle_anti); + connect(dovdw, &QPushButton::released, this, &ImageViewer::toggle_vdw); connect(dobox, &QPushButton::released, this, &ImageViewer::toggle_box); connect(doaxes, &QPushButton::released, this, &ImageViewer::toggle_axes); connect(zoomin, &QPushButton::released, this, &ImageViewer::do_zoom_in); @@ -178,6 +184,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge reset_view(); dobox->setChecked(showbox); + dovdw->setChecked(vdwfactor > 1.0); doaxes->setChecked(showaxes); dossao->setChecked(usessao); doanti->setChecked(antialias); @@ -201,6 +208,7 @@ void ImageViewer::reset_view() zoom = settings.value("zoom", 1.0).toDouble(); hrot = settings.value("hrot", 60).toInt(); vrot = settings.value("vrot", 30).toInt(); + vdwfactor = settings.value("vdwstyle", false).toBool() ? 1.6 : 0.5; showbox = settings.value("box", true).toBool(); showaxes = settings.value("axes", false).toBool(); usessao = settings.value("ssao", false).toBool(); @@ -223,8 +231,10 @@ void ImageViewer::reset_view() button = qobject_cast(lo->itemAt(7)->widget()); button->setChecked(antialias); button = qobject_cast(lo->itemAt(8)->widget()); - button->setChecked(showbox); + button->setChecked(vdwfactor > 1.0); button = qobject_cast(lo->itemAt(9)->widget()); + button->setChecked(showbox); + button = qobject_cast(lo->itemAt(10)->widget()); button->setChecked(showaxes); // grab the last entry -> group selector auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); @@ -261,6 +271,17 @@ void ImageViewer::toggle_anti() createImage(); } +void ImageViewer::toggle_vdw() +{ + QPushButton *button = qobject_cast(sender()); + if (vdwfactor > 1.0) + vdwfactor = 0.4; + else + vdwfactor = 1.6; + button->setChecked(vdwfactor > 1.0); + createImage(); +} + void ImageViewer::toggle_box() { QPushButton *button = qobject_cast(sender()); @@ -333,19 +354,6 @@ void ImageViewer::createImage() if (lo) qobject_cast(lo->itemAt(1)->widget())->setEnabled(true); this->repaint(); - int ntypes = lammps->extract_setting("ntypes"); - double *masses = (double *)lammps->extract_atom("mass"); - QString units = (const char *)lammps->extract_global("units"); - QString elements = "element "; - QString adiams; - if ((units == "real") || (units == "metal")) { - for (int i = 1; i <= ntypes; ++i) { - int idx = get_pte_from_mass(masses[i]); - elements += QString(pte_label[idx]) + blank; - adiams += QString("adiam %1 %2 ").arg(i).arg(pte_vdw_radius[idx]); - } - } - QSettings settings; QString dumpcmd = QString("write_dump ") + group + " image "; QDir dumpdir(QDir::tempPath()); @@ -358,6 +366,20 @@ void ImageViewer::createImage() int tmpysize = ysize * aa; int hhrot = (hrot > 180) ? 360 - hrot : hrot; + // determine elements from masses and set their covalent radii + int ntypes = lammps->extract_setting("ntypes"); + double *masses = (double *)lammps->extract_atom("mass"); + QString units = (const char *)lammps->extract_global("units"); + QString elements = "element "; + QString adiams; + if ((units == "real") || (units == "metal")) { + for (int i = 1; i <= ntypes; ++i) { + int idx = get_pte_from_mass(masses[i]); + elements += QString(pte_label[idx]) + blank; + adiams += QString("adiam %1 %2 ").arg(i).arg(vdwfactor * pte_vdw_radius[idx]); + } + } + if (!adiams.isEmpty()) dumpcmd += blank + "element"; else @@ -365,7 +387,7 @@ void ImageViewer::createImage() dumpcmd += blank + settings.value("diameter", "type").toString(); dumpcmd += QString(" size ") + QString::number(tmpxsize) + blank + QString::number(tmpysize); dumpcmd += QString(" zoom ") + QString::number(zoom); - dumpcmd += " shiny 0.5 "; + dumpcmd += " shiny 0.5 bond atom 0.4 "; if (lammps->extract_setting("dimension") == 3) { dumpcmd += QString(" view ") + QString::number(hhrot) + blank + QString::number(vrot); @@ -383,7 +405,7 @@ void ImageViewer::createImage() dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString(); dumpcmd += " backcolor " + settings.value("background", "black").toString(); - if (!adiams.isEmpty()) dumpcmd += blank + elements + blank + adiams; + if (!adiams.isEmpty()) dumpcmd += blank + elements + blank + adiams + blank; settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index b804e5658d..e5fb6c0a72 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -49,6 +49,7 @@ private slots: void reset_view(); void toggle_ssao(); void toggle_anti(); + void toggle_vdw(); void toggle_box(); void toggle_axes(); void do_zoom_in(); @@ -89,7 +90,7 @@ private: QString filename; int xsize, ysize; int hrot, vrot; - double zoom; + double zoom, vdwfactor; bool showbox, showaxes, antialias, usessao; }; #endif diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 826252ccd5..d6b941b2d0 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -43,5 +43,6 @@ antialias.png ovito.png vmd.png + vdw-style.png diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 4858592dc3..40bee82378 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -138,6 +138,8 @@ void Preferences::accept() if (box) settings->setValue("box", box->isChecked()); box = tabWidget->findChild("axes"); if (box) settings->setValue("axes", box->isChecked()); + box = tabWidget->findChild("vdwstyle"); + if (box) settings->setValue("vdwstyle", box->isChecked()); QComboBox *combo = tabWidget->findChild("background"); if (combo) settings->setValue("background", combo->currentText()); combo = tabWidget->findChild("boxcolor"); @@ -395,6 +397,7 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *ssao = new QLabel("HQ Image mode:"); auto *bbox = new QLabel("Show Box:"); auto *axes = new QLabel("Show Axes:"); + auto *vdw = new QLabel("VDW Style:"); auto *cback = new QLabel("Background Color:"); auto *cbox = new QLabel("Box Color:"); settings->beginGroup("snapshot"); @@ -405,6 +408,7 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *sval = new QCheckBox; auto *bval = new QCheckBox; auto *eval = new QCheckBox; + auto *vval = new QCheckBox; sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); sval->setObjectName("ssao"); aval->setCheckState(settings->value("antialias", false).toBool() ? Qt::Checked : Qt::Unchecked); @@ -413,6 +417,8 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : bval->setObjectName("box"); eval->setCheckState(settings->value("axes", false).toBool() ? Qt::Checked : Qt::Unchecked); eval->setObjectName("axes"); + vval->setCheckState(settings->value("vdwstyle", false).toBool() ? Qt::Checked : Qt::Unchecked); + vval->setObjectName("vdwstyle"); auto *intval = new QIntValidator(100, 100000, this); xval->setValidator(intval); @@ -449,8 +455,9 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(ssao, 4, 0, Qt::AlignTop); grid->addWidget(bbox, 5, 0, Qt::AlignTop); grid->addWidget(axes, 6, 0, Qt::AlignTop); - grid->addWidget(cback, 7, 0, Qt::AlignTop); - grid->addWidget(cbox, 8, 0, Qt::AlignTop); + grid->addWidget(vdw, 7, 0, Qt::AlignTop); + grid->addWidget(cback, 8, 0, Qt::AlignTop); + grid->addWidget(cbox, 9, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); @@ -458,12 +465,13 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(sval, 4, 1, Qt::AlignVCenter); grid->addWidget(bval, 5, 1, Qt::AlignVCenter); grid->addWidget(eval, 6, 1, Qt::AlignVCenter); - grid->addWidget(background, 7, 1, Qt::AlignVCenter); + grid->addWidget(vval, 7, 1, Qt::AlignVCenter); + grid->addWidget(background, 8, 1, Qt::AlignVCenter); grid->addWidget(boxcolor, 8, 1, Qt::AlignVCenter); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 9, 2); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 10, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 10, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 10, 2); setLayout(grid); } From 18aa89743016c88b52816631f1a7dcbb188ee0f5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 01:38:34 -0400 Subject: [PATCH 0282/1002] fix whitespace and include missing icon --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/periodic_table.h | 66 +++++++++++++++--------------- tools/lammps-gui/vdw-style.png | Bin 0 -> 3742 bytes 3 files changed, 34 insertions(+), 34 deletions(-) create mode 100644 tools/lammps-gui/vdw-style.png diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 0746a4fe33..eaef9bba7f 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.2.1 LANGUAGES CXX) +project(lammps-gui VERSION 1.2.2 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/periodic_table.h b/tools/lammps-gui/periodic_table.h index 42e56f3fdd..22138c19ad 100755 --- a/tools/lammps-gui/periodic_table.h +++ b/tools/lammps-gui/periodic_table.h @@ -20,10 +20,10 @@ #include /* periodic table of elements for translation of ordinal to atom type */ -static const char *pte_label[] = { +static const char *pte_label[] = { "X", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P" , "S", "Cl", "Ar", "K", "Ca", "Sc", - "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", + "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", @@ -36,22 +36,22 @@ static const char *pte_label[] = { static const int nr_pte_entries = sizeof(pte_label) / sizeof(char *); /* corresponding table of masses. */ -static const double pte_mass[] = { - /* X */ 0.00000, 1.00794, 4.00260, 6.941, 9.012182, 10.811, - /* C */ 12.0107, 14.0067, 15.9994, 18.9984032, 20.1797, +static const double pte_mass[] = { + /* X */ 0.00000, 1.00794, 4.00260, 6.941, 9.012182, 10.811, + /* C */ 12.0107, 14.0067, 15.9994, 18.9984032, 20.1797, /* Na */ 22.989770, 24.3050, 26.981538, 28.0855, 30.973761, /* S */ 32.065, 35.453, 39.948, 39.0983, 40.078, 44.955910, /* Ti */ 47.867, 50.9415, 51.9961, 54.938049, 55.845, 58.9332, - /* Ni */ 58.6934, 63.546, 65.409, 69.723, 72.64, 74.92160, - /* Se */ 78.96, 79.904, 83.798, 85.4678, 87.62, 88.90585, + /* Ni */ 58.6934, 63.546, 65.409, 69.723, 72.64, 74.92160, + /* Se */ 78.96, 79.904, 83.798, 85.4678, 87.62, 88.90585, /* Zr */ 91.224, 92.90638, 95.94, 98.0, 101.07, 102.90550, - /* Pd */ 106.42, 107.8682, 112.411, 114.818, 118.710, 121.760, - /* Te */ 127.60, 126.90447, 131.293, 132.90545, 137.327, + /* Pd */ 106.42, 107.8682, 112.411, 114.818, 118.710, 121.760, + /* Te */ 127.60, 126.90447, 131.293, 132.90545, 137.327, /* La */ 138.9055, 140.116, 140.90765, 144.24, 145.0, 150.36, - /* Eu */ 151.964, 157.25, 158.92534, 162.500, 164.93032, + /* Eu */ 151.964, 157.25, 158.92534, 162.500, 164.93032, /* Er */ 167.259, 168.93421, 173.04, 174.967, 178.49, 180.9479, - /* W */ 183.84, 186.207, 190.23, 192.217, 195.078, 196.96655, - /* Hg */ 200.59, 204.3833, 207.2, 208.98038, 209.0, 210.0, 222.0, + /* W */ 183.84, 186.207, 190.23, 192.217, 195.078, 196.96655, + /* Hg */ 200.59, 204.3833, 207.2, 208.98038, 209.0, 210.0, 222.0, /* Fr */ 223.0, 226.0, 227.0, 232.0381, 231.03588, 238.02891, /* Np */ 237.0, 244.0, 243.0, 247.0, 247.0, 251.0, 252.0, 257.0, /* Md */ 258.0, 259.0, 262.0, 261.0, 262.0, 266.0, 264.0, 269.0, @@ -60,24 +60,24 @@ static const double pte_mass[] = { /* * corresponding table of VDW radii. - * van der Waals radii are taken from A. Bondi, - * J. Phys. Chem., 68, 441 - 452, 1964, - * except the value for H, which is taken from R.S. Rowland & R. Taylor, - * J.Phys.Chem., 100, 7384 - 7391, 1996. Radii that are not available in - * either of these publications have RvdW = 2.00 Å. - * The radii for Ions (Na, K, Cl, Ca, Mg, and Cs are based on the CHARMM27 + * van der Waals radii are taken from A. Bondi, + * J. Phys. Chem., 68, 441 - 452, 1964, + * except the value for H, which is taken from R.S. Rowland & R. Taylor, + * J.Phys.Chem., 100, 7384 - 7391, 1996. Radii that are not available in + * either of these publications have RvdW = 2.00 \AA + * The radii for Ions (Na, K, Cl, Ca, Mg, and Cs are based on the CHARMM27 * Rmin/2 parameters for (SOD, POT, CLA, CAL, MG, CES) by default. */ -static const double pte_vdw_radius[] = { - /* X */ 1.5, 1.2, 1.4, 1.82, 2.0, 2.0, - /* C */ 1.7, 1.55, 1.52, 1.47, 1.54, +static const double pte_vdw_radius[] = { + /* X */ 1.5, 1.2, 1.4, 1.82, 2.0, 2.0, + /* C */ 1.7, 1.55, 1.52, 1.47, 1.54, /* Na */ 1.36, 1.18, 2.0, 2.1, 1.8, /* S */ 1.8, 2.27, 1.88, 1.76, 1.37, 2.0, /* Ti */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, /* Ni */ 1.63, 1.4, 1.39, 1.07, 2.0, 1.85, - /* Se */ 1.9, 1.85, 2.02, 2.0, 2.0, 2.0, + /* Se */ 1.9, 1.85, 2.02, 2.0, 2.0, 2.0, /* Zr */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - /* Pd */ 1.63, 1.72, 1.58, 1.93, 2.17, 2.0, + /* Pd */ 1.63, 1.72, 1.58, 1.93, 2.17, 2.0, /* Te */ 2.06, 1.98, 2.16, 2.1, 2.0, /* La */ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, /* Eu */ 2.0, 2.0, 2.0, 2.0, 2.0, @@ -123,7 +123,7 @@ static double get_pte_vdw_radius(const int idx) case 8: return 1.3; /* O */ case 9: return 1.2; /* F */ case 15: return 1.5; /* P */ - case 16: return 1.9; /* S */ + case 16: return 1.9; /* S */ } #endif @@ -134,13 +134,13 @@ static int get_pte_idx(const char *label) { int i; char atom[3]; - + /* zap string */ atom[0] = (char) 0; atom[1] = (char) 0; atom[2] = (char) 0; - /* if we don't have a null-pointer, there must be at least two - * chars, which is all we need. we convert to the capitalization + /* if we don't have a null-pointer, there must be at least two + * chars, which is all we need. we convert to the capitalization * convention of the table above during assignment. */ if (label != NULL) { atom[0] = (char) toupper((int) label[0]); @@ -148,12 +148,12 @@ static int get_pte_idx(const char *label) } /* discard numbers in atom label */ if (isdigit(atom[1])) atom[1] = (char) 0; - + for (i=0; i < nr_pte_entries; ++i) { if ( (pte_label[i][0] == atom[0]) && (pte_label[i][1] == atom[1]) ) return i; } - + return 0; } @@ -174,12 +174,12 @@ static int get_pte_idx_from_string(const char *label) { if (ind < 1) return 0; /* no non-whitespace characters */ - + for (i=0; i < nr_pte_entries; ++i) { - if ((toupper(pte_label[i][0]) == atom[0]) && (toupper(pte_label[i][1]) == atom[1])) + if ((toupper(pte_label[i][0]) == atom[0]) && (toupper(pte_label[i][1]) == atom[1])) return i; } - } + } return 0; } @@ -199,7 +199,7 @@ int main() { for (i=0; iO=6^j-x- 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 Date: Thu, 17 Aug 2023 02:23:00 -0400 Subject: [PATCH 0283/1002] use counter so that widgets are properly assigned to their grid slots --- tools/lammps-gui/preferences.cpp | 47 ++++++++++++++++---------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 40bee82378..7ce80261a9 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -448,30 +448,31 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : boxcolor->setCurrentText(settings->value("boxcolor", "yellow").toString()); settings->endGroup(); - grid->addWidget(xsize, 0, 0, Qt::AlignTop); - grid->addWidget(ysize, 1, 0, Qt::AlignTop); - grid->addWidget(zoom, 2, 0, Qt::AlignTop); - grid->addWidget(anti, 3, 0, Qt::AlignTop); - grid->addWidget(ssao, 4, 0, Qt::AlignTop); - grid->addWidget(bbox, 5, 0, Qt::AlignTop); - grid->addWidget(axes, 6, 0, Qt::AlignTop); - grid->addWidget(vdw, 7, 0, Qt::AlignTop); - grid->addWidget(cback, 8, 0, Qt::AlignTop); - grid->addWidget(cbox, 9, 0, Qt::AlignTop); - grid->addWidget(xval, 0, 1, Qt::AlignTop); - grid->addWidget(yval, 1, 1, Qt::AlignTop); - grid->addWidget(zval, 2, 1, Qt::AlignTop); - grid->addWidget(aval, 3, 1, Qt::AlignTop); - grid->addWidget(sval, 4, 1, Qt::AlignVCenter); - grid->addWidget(bval, 5, 1, Qt::AlignVCenter); - grid->addWidget(eval, 6, 1, Qt::AlignVCenter); - grid->addWidget(vval, 7, 1, Qt::AlignVCenter); - grid->addWidget(background, 8, 1, Qt::AlignVCenter); - grid->addWidget(boxcolor, 8, 1, Qt::AlignVCenter); + int i = 0; + grid->addWidget(xsize, i, 0, Qt::AlignTop); + grid->addWidget(xval, i++, 1, Qt::AlignTop); + grid->addWidget(ysize, i, 0, Qt::AlignTop); + grid->addWidget(yval, i++, 1, Qt::AlignTop); + grid->addWidget(zoom, i, 0, Qt::AlignTop); + grid->addWidget(zval, i++, 1, Qt::AlignTop); + grid->addWidget(anti, i, 0, Qt::AlignTop); + grid->addWidget(aval, i++, 1, Qt::AlignTop); + grid->addWidget(ssao, i, 0, Qt::AlignTop); + grid->addWidget(sval, i++, 1, Qt::AlignVCenter); + grid->addWidget(bbox, i, 0, Qt::AlignTop); + grid->addWidget(bval, i++, 1, Qt::AlignVCenter); + grid->addWidget(axes, i, 0, Qt::AlignTop); + grid->addWidget(eval, i++, 1, Qt::AlignVCenter); + grid->addWidget(vdw, i, 0, Qt::AlignTop); + grid->addWidget(vval, i++, 1, Qt::AlignVCenter); + grid->addWidget(cback, i, 0, Qt::AlignTop); + grid->addWidget(background, i++, 1, Qt::AlignVCenter); + grid->addWidget(cbox, i, 0, Qt::AlignTop); + grid->addWidget(boxcolor, i++, 1, Qt::AlignVCenter); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 10, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 10, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 10, 2); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), i, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), i, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), i, 2); setLayout(grid); } From 4ec5b5776cc487088efdf0b47aaecb6b0b056696 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 02:25:13 -0400 Subject: [PATCH 0284/1002] fix permissions --- tools/lammps-gui/periodic_table.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 tools/lammps-gui/periodic_table.h diff --git a/tools/lammps-gui/periodic_table.h b/tools/lammps-gui/periodic_table.h old mode 100755 new mode 100644 From 6e2a65c4c5cccf0d6fbc08f09f749f5a767917ad Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 17 Aug 2023 05:22:57 -0400 Subject: [PATCH 0285/1002] update docs for LAMMPS GUI --- doc/src/Howto_lammps_gui.rst | 105 ++++++++++++++--------- doc/src/JPG/lammps-gui-image.png | Bin 83305 -> 125560 bytes doc/src/JPG/lammps-gui-main.png | Bin 91027 -> 93426 bytes doc/src/JPG/lammps-gui-prefs-general.png | Bin 53003 -> 68120 bytes doc/src/JPG/lammps-gui-running.png | Bin 32750 -> 21391 bytes 5 files changed, 63 insertions(+), 42 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index c2de63b9f6..f7d4cffe13 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -65,12 +65,13 @@ Running LAMMPS ^^^^^^^^^^^^^^ From within the LAMMPS GUI main window LAMMPS can be started either from -the ``Run`` menu or by the hotkey `Ctrl-Enter` (`Command-Enter` on -macOS). LAMMPS is running in a separate thread, so the GUI will stay -responsive and thus is capable to interact with the calculation and -access its data. It is important to note, that LAMMPS is using the -contents of the input buffer for the run, **not** the file it was read -from. If there are unsaved changes in the buffer, they *will* be used. +the ``Run`` menu, by the hotkey `Ctrl-Enter` (`Command-Enter` on macOS), +or by clicking on the green button in the status bar. LAMMPS runs in a +separate thread, so the GUI stays responsive and thus it is able to +interact with the calculation and access its data. It is important to +note, that LAMMPS is using the contents of the input buffer for the run, +**not** the file it was read from. If there are unsaved changes in the +buffer, they *will* be used. .. image:: JPG/lammps-gui-running.png :align: center @@ -82,48 +83,59 @@ contain the selected number of threads, if thread-parallel acceleration was selected in the ``Preferences`` dialog. On the right side, a progress bar is shown that displays the estimated progress on the current :doc:`run command `. Additionally, two windows will open: -the log window with the captured screen output and the chart window -with a line graph created from the thermodynamic output of the run. +the log window with the captured screen output and the chart window with +a line graph created from the thermodynamic output of the run. The run can be stopped cleanly by using either the ``Stop LAMMPS`` entry -in the ``Run`` menu or with the hotkey `Ctrl-/` (`Command-/` on macOS). -This will cause that the running LAMMPS process will complete the -current iteration and then stop. This is equivalent to the command -`timer timeout 0 ` and implemented by calling the -:cpp:func:`lammps_force_timeout()` function of the LAMMPS C-library -interface. +in the ``Run`` menu, the hotkey `Ctrl-/` (`Command-/` on macOS), or +clicking on the red button in the status bar. This will cause that the +running LAMMPS process will complete the current iteration and then +stop. This is equivalent to the command `timer timeout 0 ` and +implemented by calling the :cpp:func:`lammps_force_timeout()` function +of the LAMMPS C-library interface. Viewing Snapshot Images ^^^^^^^^^^^^^^^^^^^^^^^ -By selecting the ``View Image`` entry in the ``Run`` menu or by hitting -the `Ctrl-I` (`Command-I` on macOS) hotkey, LAMMPS gui will issue a +By selecting the ``View Image`` entry in the ``Run`` menu, by hitting +the `Ctrl-I` (`Command-I` on macOS) hotkey or by clicking on the +"palette" button in the status bar, LAMMPS GUI will issue a :doc:`write_dump image ` command and read the resulting -snapshot image into an image viewer window. +snapshot image into an image viewer window. When possible, LAMMPS +GUI will try to detect which elements the atoms correspond to (via +their mass) and then colorize them accordingly. Otherwise just some +predefined sequence of colors are assigned to different atom types. .. image:: JPG/lammps-gui-image.png :align: center :scale: 50% -The image size, some default image quality settings, and some colors -can be changed in the ``Preferences`` dialog window. From the image -viewer window further adjustments can be made: high-quality rendering, -anti-aliasing, display of box or axes, zoom factor. The the image can -be rotated horizontally and vertically and it is possible to only -display the atoms within a predefined group (default is "all"). -After each change, the image is rendered again and the display updated. +The default image size, some default image quality settings, the view +style and some colors can be changed in the ``Preferences`` dialog +window. From the image viewer window further adjustments can be made: +actual image size, high-quality rendering, anti-aliasing, view style, +display of box or axes, zoom factor. The the image can be rotated +horizontally and vertically and it is possible to only display the atoms +within a predefined group (default is "all"). After each change, the +image is rendered again and the display updated. The small palette icon +on the top left will be colored while LAMMPS is running to render the +image and it will be grayed out again, when it is done. When there are +many items to show and high quality images with anti-aliasing are +requested, re-rendering can take several seconds. From the ``File`` +menu, the shown image can be saved to a file permanently or copied into +the cut-n-paste buffer for pasting into another application. Editor Functions ^^^^^^^^^^^^^^^^ -The editor has the usual functionality that similar programs have: text -selection via mouse or with cursor moves while holding the Shift key, -Cut, Copy, Paste, Undo, Redo. All of these editing functions are available -via hotkeys. When trying to exit the editor with a modified buffer, a -dialog will pop up asking whether to cancel the quit, or don't save or -save the buffer's contents to a file. +The editor has most the usual functionality that similar programs have: +text selection via mouse or with cursor moves while holding the Shift +key, Cut, Copy, Paste, Undo, Redo. All of these editing functions are +available via hotkeys. When trying to exit the editor with a modified +buffer, a dialog will pop up asking whether to cancel the quit, or don't +save or save the buffer's contents to a file. Context Specific Help ^^^^^^^^^^^^^^^^^^^^^ @@ -285,6 +297,13 @@ General Settings: - *Replace image window on new render:* when checked, an existing chart window will be replaced when a new snapshot image is requested, otherwise each command will create a new image window. +- *Path to LAMMPS Shared Library File:* this options is only available + when LAMMPS GUI was compiled to load the LAMMPS library at run time + instead of being linked to it directly. With the ``Browse..`` button + or by changing the text, a different shared library file with a + different compilation of LAMMPS with different settings or from a + different version can be loaded. After this setting was changed, + LAMMPS GUI needs to be re-launched. - *Select Default Font:* Opens a font selection dialog where the type and size for the default font (used for everything but the editor and log) of the application can be set. @@ -294,10 +313,10 @@ General Settings: Accelerators: ^^^^^^^^^^^^^ -This tab enables to select accelerator settings and is equivalent to -using the `-suffix` and `-package` flags on the command line. Only -settings supported by the LAMMPS library and local hardware are -available. The `Number of threads` field allows to set the maximum +This tab enables to select which accelerator package is used and is +equivalent to using the `-suffix` and `-package` flags on the command +line. Only settings supported by the LAMMPS library and local hardware +are available. The `Number of threads` field allows to set the maximum number of threads for the accelerator packages that use threads. Snapshot Image: @@ -306,14 +325,16 @@ Snapshot Image: This tab allows to set some defaults for the snapshot images displayed in the ``Image Viewer`` window, like its dimensions and the zoom factor applied. The *Antialias* switch requests to render images with twice -the number of pixels for width and height and then uses a bi-cubic -scaling algorithm to rescale them back to the requested size. This -produces higher quality images with smoother edges at the expense of -requiring more CPU time to render the image. The *HQ Image mode* option -turns on using a screen space ambient occlusion mode (SSAO) when -rendering images. This is also more time consuming, but produces a more -'spatial' representation of the system. Finally there are a couple of -drop down lists to select the background and box color. +the number of pixels for width and height and then smoothly scales the +image back to the requested size. This produces higher quality images +with smoother edges at the expense of requiring more CPU time to render +the image. The *HQ Image mode* option turns on using a screen space +ambient occlusion mode (SSAO) when rendering images. This is also more +time consuming, but produces a more 'spatial' representation of the +system. The *VDW Style* checkbox selects whether atoms are represented +by space filling spheres when checked or by smaller spheres and stick. +Finally there are a couple of drop down lists to select the background +and box color. Hotkeys diff --git a/doc/src/JPG/lammps-gui-image.png b/doc/src/JPG/lammps-gui-image.png index 34acdf12aa57b61d3467222801bbb1d1ed89ae0b..b383e914a523f814dbc93e22293901601e590361 100644 GIT binary patch literal 125560 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%0A#;A6J+1Yyvn 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 literal 116597 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 diff --git a/doc/src/JPG/lammps-gui-prefs-general.png b/doc/src/JPG/lammps-gui-prefs-general.png index 3951a030221db93a1640b188be159bdeafb8fb21..4de8d158bddf82e6a1b1f750c8e758498c640f32 100644 GIT binary patch delta 18054 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 delta 18267 zcmcG#byOT*yQtZ?1_Dl7wPBNM8MAOsM&JLh2x%?*cou(7F}YK2jbE6MUL zQa2@6uUcHH3d7PWs~*5*OIXUS-Veu@j{AJK@%cxtdKD78D2!O%(E7$%8$h^cDxpB} zcmMfM?AqD+7(Xk|eG^Bkvorb-V$yed>}Vyj`xY(NjaFL^&zony=-AeI94ON^r&SGV8I3?Dq>c|3(R@G8F z``n4bTZ3l`2V$YxP>^o_joYPhp<`0%ml*k$#f}RB1%kXk=W$P^IryCrq99E`L60c= z_3`PU0#O^nmDWFyjEqdj%?WwsiuchVFBxcG&7YEAnA<273fGBtU1jYuOl6<$wdw;| zE*Cjf!1YGT!hO->Q}^WNx4mTwr<;*)XCmIdf+Fv%*vd*_c$mGuo!R<<-aZHb> z*Q(<`1awSXA0GmPGVvim@CYByK30)idV;zja;BoD#2Gw3Tt_mosjzfO;B7k1Bmq7R z^q|C#)_xZ1DVpx%{~_BJ@Nd+=eH?MI*3S6XxR7*eXDAb0E2qp;xMl> z?D~v+TG|9eaQoZWbZRSmS+8)sI@@{`etw)sH1zfJ@KU-=bBJ>MRo&kqP+L1E7+!l+ z56H`_aB3I%;RFkNLMaL(JD);Yz$N7p$<};aB?#hsaXy5BhC96})s`aF#}s-J@&|Q|DkuA(&<(qm z*LurN5NmJ=Z0sMbeaoqptcfu4snRPL0V%6W)wR%Cgp0aziAJ&d0OeG;`6F)Rae2Bb zXCsa&0eUSzb!U%9*5@3pKNwm!1qG0t@%}P5Rd3qd9S;aQM7Z`fu=kbvwgXb086`kf zxmnTzd8?7^2DS+6#K-!VJoTuV*@HS5Qsus3eCpHnyn3jP7Kw$87e%SCPVDJzt9Q)V znN6rO*U(=yFQG+C1+D-w9R->O1oH@GjU8oLnYYrApd8v7#Kb2$iyfTB(;~N36kDFV z!J}j!b}b6fM^Ll^Te~s0lSRaywGG_Te%g@(3A#h#=xnTDuw-Y9`JQ{Ecn2E3fc8p9 z3pD5p`o(SqI==eQjDTP?it6KE78p!Bw4|`#B?ylGPA0+*!1D+S8V+|nHoiJ2svUsf zG-BG$^qz)MD&8u{hZisYT9}5sb#~%F^I}{VUv-yp&>n#%liMr35Omi;D}$ z*1;JGiLbC6$S*fKn(1rU8gDW$dHVJ5EGV7n|yB%WN( z-GWO$Qz{9-f}d}&CK4armQ|O()8X^DDu@UddBw>qa5VR&f$Rl|RbJixZO63Zqugz4 zEu;o)Xgwy%I!fg7UM1scCVJGZFkGL) z)~fV2kRRz;l;#!{vy}wAU7_$pQ;}17oyhnHpbk08-o}v=x2DT6tC6to6W27hcQ!1q z_dZ+g4Uixcy%O>W+c{U0JN+rpPy*^LoNn%h?r#z5Q+|2f%YJOMB7NJwr%r8sB|a*$ zvA*XwMs;+6$c@wk(y;dz*2`$gPr*(1tm&rZ@wYaG2fEGg6(!WwVk>EX#3;I9)Qb9G~i*wwB9 zKBTU3ppL-d@~QZDN`ZfJT88f&!P^uD{NFpl`l22}#cBNI*<@>K`W?z7P07 z1^Louzv1JLBB7cNv85t%HTyRgB19>*KK$C$ZgEFmZBU?>fUREM`c!l9v}%!kGQ%dd z-lIx^#c{fWDE`xkd8+UlWS8?9(J3|YZHCd@0z-|?;g-e;P~Zk#rb}emY1?g~M8*zR z$*=70w*!9hY0mP;`El9AD4>Hsou4FQrI#J4HsdjQ6b1&6n^?nqx$N791>D z0ny(sk1!fiY}DE8DIJO!9G9Zc`K!t?bG>P@(AT*E*x==&A1PV?9^BwJ@b+V2_(7c& z;q)TguWu`58-9Tp><5TKEPv&d#RkUGxD4;gG@2*#YtXG_IUV-DFIMQxTiWgngx_Cm zCN>#TP*9kd96%y5IY?5NroU07A#O!sszBS0O1UBMT91%X7g6{#r1DXpTwJ_8-IijQ z028`9QGLBa@U3ZI?c+tTeG+j&Gd{L>E?FV)1;`s8{YT}s;N7u78|b3;Tk!ay1{Gfx zQxQdnqrS&k|-nyrz$B0za$YoVHq4EG(QJX60d*yEE}!Dr?S<;TZzDHD;PQ; zJV$>sA?ArOM_4>Fm@I{OC*aLV+{lT`Y|1!*0h2*9C9ZAHi+RfgkAlMZ7hEcu2Hcyg zSK0nKkOS+5b#}g$s#Q*8fVnrP#T77b>*FYH)tY!bM&#Bow_`S~@5`ulpI>Hw4$bM{O?jdT&H0KV1AcFSA5`G=el}c0NkB{? zZXmljGw1WSovArF19*G`{qPXcf%@LR4%x_k9$=`s2HB)4o^s1# z;JHk|P&QNhBi3_3&Wxadi(I3F6}RQ>Qza36zEH>e{gwb9KcQ0JA3(;TUAbC27tj~;o}U`5qmpDl`UQK<9v z$O*?CHA7Je13k}}KZh&+@hZtLVXR%?xo}=~)hk`b?ku~!hi}3(KUn56F@tO((1%8A z_AZWTj|v0f2IKp-0+9SLJ>2?d-ogR~D3GsQyVay$;Lo}ihMl|p+F)=H$b*((em8$B zRvsc3`a)U;wa`#xUVYM9ifjSJDfkif(MpnA*b6C?6W*$80m{X8v8yw12+vnDA3jj< zFX-x7zf|ZDl9BK?ihuYwg2=D9Jx}^pHKj4cAT6Yxz-0>~6M(d6ty{LUT?KOr3X~^7 z`U_eMs|G&mdvF?QQSl5zNR*iGv`>>p_W5@R9GDn{Y%FyNLC_US%{5vhq#-!IsZR4B5{&MB-g9&sESLgedqC?vY6Hg%rt0m}I3w>;@zj zuPN3!MhAlBU{^vD<(E-o9R97@l5Yq$Sa1l^np~Tn4RNp2Y4+%kVjBgUZ0gRRxgYHL znOkY^?>+rFzUsj$5Tjq)Iv~_%^VAO)3rlhDKqN-^3A|P0lK-)t0u@HH`}CT7cDA?1 z@_IGebG<$7MjOcb)Jvci*FP*`%WS5nz+VPf5bHQAPtACOCSDy`x|}Xsr^EzY$8hx@ zpC@HfJcBoGb}Pwd@tN>Un}2v};fQVbqx(s<*Vz_J>}o3yYB?9zl)-s^GDCOg_!W!9A&H9KPU!}tE4?Znx7hh(IX#%|gZ7=PM`7@z#)yI$ZLA*S?992$T`&<%89GN*I zKweIv7l?!;1B6>0zzRC54I_Hlr=QYQKk17%m#CcBE<&N~_S_>n=oG)gU~1kWDc z6BX*QfVG@E$IqV!(_1mwlF8Fn`fqdqL*J_P+y{im)f36E3@s(=b2`FV=`z-=`c#b7Glp2X`F5IXS>S;6S6)Ik?_J{^JFQKQ;xmrxUsg zmMt4r&H8WY1RTLv^i9ft+nlbK3EZR}AIwdMszg=UrmLg;swqEBRW^L} zJ*38@5_=wp-EC;&(W5)myA3?x#^j{T;%|o2Bol+L?+bJsGM~3s_PLIC{>*N>-Dp;A{1QLAPW-f5d4psx>u$&7 z4%bhzh68CZ)%tt*P1>+wgAI?h(Ds_9#L{>oEjl?m<2g|=#`F2k&ODt9a0ra+NoF-c zOg!6YZ_O3?a1Pd61}+-%gJiFqr>0BS-;AgR?ba?>1FK-!C^kppR)gAxeu|18ylVH@ zX;{)LL*L zbUt}thv+>GcPplURr{F(SVykk6L)ktZp$SYsAjqrX=hOG(DKx$a^!jb*(y~o{$esg z7_rk}y*>hRC$9-Z&ioSgQIe7R=jY6Z3!b8K6Q$ekwB<*FUigT0X;tjUYfbXrs@@>f z1I~)Lzb`FkqKpjhPqz1nf>0%AvB>I*i9t z?mAxaxcc40leRP$6Ly;B4jONv$9C%hy2Q?CJ7W}vv$Hda|q8Detgp8y5iSn%ILT#Q1+wx}BYD1HGy>|ShBjt*05A6{b505qUFa2^hx)5mS=-WGgbSpzv^Q)La z2H6HOZJxJFzAVq&$p;fzTKJ){vs|F+`^6G`WV(2lzc+qi^nAM*pE)qNIFR=~|km9_IV02j<(&_V>kt z(vyu5$@a~K0exj|PQCLa+8J3Qh9~4AIYl)kwu!F&Y*v;|;c{P?&(G6uXV*S z02uMx_xR3;5E4ZTuk*X)qbE5+nYhSO{9yY;0t*)8sI+YP@|UylUgB4t8%SR$rze#P zN;KwBQZT77Xv?T%OfV>ZSDVoYB0Y_-#@?%Ke6l%S)Fk>R(I`4W4&7Kq7{o7s*F*z6 zZ)#CbW+}6@kPPPgrC{%4D$Qm-`4pF9KxMu{yHMjHUwWUdykbp8=U{<(KhRzMVR}NO zFfcISS!P3q#_KA@1DN-HUS1o$o+CNXp;a3Qd2FKU` z4YP1kZnuJKB6{Ar852w`|L6_xJyevU%SzPBHfZ122xaLoanp<%(mc9%BtBFU13D}8xLf_z`ejfsiR`*RDovSv4X8o>o4 zrGH8EOVNj383-N2^qy?S?X{y>w$b~BhYIEL{G^R2pj9gV!EdFaf$E2|b0gNOG2r3I zb8NR#*}?D)kFwMP(a2;!s-R;iq|aCS4a5%xsk4WE-YZ?5%>@ej76X*rt}zA#3AkN$ z_4Yz}r?zUTA97hSSTRT^QZ>NX%%~{M7b?vf8igx`C=}!Ao0se9%}+Bl?qhprhqwIg zK28~774VkqmIQ&?zOq&K$s?Wqj|7$A<03&~m!*7Y3z*|t?CZ|}JIybvY`DK9eq^OprP7I7GM5qJ607n5C z9j2$~0s@hOq(p_3p{gwAzQp#{mOj&`qC!MH9p3B<@wvS?^>56pB@DwLMiMNXBZ5dh zUNRwBEwbvCYdOt*tE(JbQ&Zyqp2k$GZu1H-2!waflv!hu1|H@i zA=#Avh;!aQ;Phzl8N|U6xk*hww=i>cWu@}ar{bxSDd`#cPCa}L7Rwo?fZ}QPJ;9(B z;*q-V8)*ULKGXO`1NS;Stvih&tigPB)fA*h{k~p%mn}(}~ z4RN*&dA+@QpEk#A5s25neQcGt1BTN-@t=>g>qU%swSv2+{!CU=U^?T_{lKwKVN+=} zmavI*E2*D1pLty85nF5U0bas3GcC`b-1Blfn%AF`_;$~vIujybZ-bZ!c{JR-2ys{( zWwxp^mE4Xw7c35pY?fSle6uNjew=-1iXR5@%}ln zXD4OVj(lv6fF>C4ixr+FIo@Nw(V}v#pRH5fwF@%0@apZ{z>?P=-^Bu9OB7wtqC40@ zpBlII&GKp8y7S8fT6Em%C9kbSPsi8AE`ixrjks&blRUfZbSlhvoH}mdLwJyH$~#%2 zqV7f{%9>}fVO5}z^q7ZJ>WncR(;F<GODE(1cSkPonDUHW6KtVF)p0&28q{Snn%dOx}=doM}ker zyi=mkO0XC3Jw`c(RA`{13Hi~NkPIgGQ-AYQ2JrhOa7nPniJ(WGqhl5h{qrrL5=P}zqp>0F0fM(O z^0S8dk*u-*24xCdMllf6gy^ogNK^9AV8uQWZ=UyF_xg%akTKd#LE<0uDgP{jdGg6o zhJk}ieBf6hpCGtJ!e)GVDSor~dw&ny9?vh=>fQ0Iyb=|YV7}gZv~U0{mvDf1j-x#| z!y2d_%aqkFg;Y2d6cn7#*JxgZbNmuYszM3s zG7ql{U*qC1nV6V_JF+ikvpcXD85zj{GO~cgSs`f^_5KelayO4kfW7?}PXq-l)o3N| zUsH-$%ZW)rFXRs38x>LT!IY4+8Kzqh>OUm!QBiN@g>53+Sct3ZMp z?>Vg`cAsvh0O8R`!31#9G^7R60_^8on^M|y!B;e4>MGT}Wp|p@eEgrp2$TTPNbM|Q zq`@5cSSWz^Z=#SFK`690gw}_i7VoBA;h9|haFbmqTJT+j9|9 zqf_7UeWmUsms3mHbG(Ef3oM{jdYKYkA5@qx*^SGL{HyNEX?Y$IHy8JB%|6_E`s#%; zY7@2FGq;0i*Ue_7)o=pch^DLhQh!nbY!@*+m6Ezwp=bM3Ob}_n4I$;(h}KK#Bcfje z<*w(${HNRqV&L{Po(sxV=DII}$b$XVfZ!L>Ymp;_;c>(b5qHkuZ!TbOt@`weH30uA6<=EAM zr@iLvlbQmERUnx=XGVLn=Y}O`E_BYHhQ5UceonmUcXdc}%oa-!45@@i5h z{UR`)iFw|s81<^+0<@DQQ33>NF(uj*f?`NEa98!eH-{J+<4veE&@oem`w>^qTaL`)XEkA)HQDTzy#+DgtieVirKn0Q6VFUp zhV_<6QJe-14DqeolmF54ZG{jAMI$AR^oyndd8WaRS6tF;3QZgHupST8)cHxYx7Q>Vl8YTD+L| zq>+AIpd4{;M$nKj$*1*Vv+fE@drV;o;bRalrZZV2ls_7mkUWDsNvK5BW?-Jh1b==M zaX=9l^uFsEEsbR5@fdBUZ>Md-BH4?BZ6k!BGO92BGJw=<0rDyOxT_%F25kXj;OXtN zt-JgFhsfBdeEbRSotK`?5!E6V|Pe1LBKv#+$sec1_?v-x(gMfkk7RT(2_2Dlm&bwfo{E z5KB8?1JL#cqKSQs9&QaX47BA;0$8c9le81(Iv< z2Qpfblp>;e62`X|t^YF=qk)JFkj#f4?9d``I zpePi5V0-wOSNSKM<&{nHttAB~h0R=drwwF*%c9J^{U!n_u?4-gioHocRAhU6Ex@D) zt<(r9^_hQtBP{Bd@X&H6V?-56ij(L3)q)}H@@blK<;7XO4uV2ljTqKi;?T^dYr2#AnZO2+w}wpakH%=EIr(Qt_hxb9qhSrlQ;@Ttgfl8- z&CkhFxEgr#Nuq;~AC)=t$e#_=3yn3<(h$PP{CTx%Et;?-^2gKgCN$jX zW|gU=8xNcTy6U^ zq+>C$qn%TcDJr39K^VZ3^#hS4iY*G@zekTK>AiZNv{mQhTLCmaH_u9? z9w=+LTjq9gLIoqkJQ52h#9gA5pxos30jy09Nbe3iP=kNv&Lc<4)~B=6qw#R5S})G< z90zCkm8Ya2#Zbwdvj5oawQd1)N`b#)&AKLh;(9K&wrpg(TuE7Rz|FKYdetA7R-V?2 zo44MJpzC5gHR;Wq&{OH3M>e}A%ZZi9r=truy6xR|kM^ixVhn4@Z7q*@b?MO26yE8; zY4ey`XPuF#ClsvUNw`mkle9P?@7A>Q59<&2jKq2bk6z1vNhDm&A#m9{n`db*Hi1n( zL$LEbW5yC%Y|HfsaIbS50`XOo&1me$;t_%`*?cmBcOe;T(>F7w?nU-lbaS)8b~n_m zgZS2d>-C69>#|8u!wNQ1!OP*rUMFdRNO&O5ufH*3-ds>y2I~bF6&d)7I}t1n$We&-Vc=evcW1@$ccu3+I1f56U8 zN2otRLE@K{>tbEkr;WThEP1O)_~H2IP5ee88=;K z21?AhH1iNTqMN)uLJ*|VZXr7bP9RqPR%#{C)p>=ou_AScaf%eg5xi%n8#2wYKaAD^kt>nNAj zV|AKg059t$d~z8bcG07^v6xc4-KpOvzM4Sg*e9rw66e&&*a>AkoUFvQN2(+?)!ii3 zE*@y_Qc#Dy9 zx6A(i&?4}(_J~s|LY{ES{iEG%oyiaNxf~Iu4v=Q`n)`iR8y$&1*Z2j;n8VHNg4^SQ z8yZF;0)LqREg(gbx3mfh(BLprl@?ASlV);JH9$h0=*bZHes0|;?--&^xqMx7(L5v( zb?9Vfnoa*1!UKOLZOx0n_2AFYfsyOStJY&b@=b;kgqbW)l9Mi@66q3rR{y9) zvnz8p|MzOhwU@vp9QAu)v8D>Y+HSp;sA}G>9h@K#ZIx zFU8VYQMYN!Ymuh}k?r2XHT$5H=6<;;IYiJa9Ce6HM@fA~RoqB=kwYD2I!H~rj22Mk z-I!b;MwP@Bgfq>Cx%Ww!ASjF6^jalA!%sP3n{LptV{Y_k&@aurSkD}q5-y^s`VTIxtdv2t}?M;rWaS$oGlpXE-Fv;-w+2Ko4YvG@_P%GOqhh3y0iro0-z; zgtDbwzcrue7?eZ5zJ8C~pd6SFKDR!n4IFM{`7<+$kLtaz0yDaXv?&9Toy~Pmrr?N> zm{6n^yFvQbW*Awitz}RX4ul38Kz74rWfW-mwc_tkeF5v9VE$5sH(%xjsAwFAwaG|v zKd9-KkK!9kQ6zUZS^DPKTX?5E8)+xPNJu+)R)?~O62_8?{L^m_Sm@>ZFLq`jKcKE_ z2EPAUKA&9IAEPvbw0A0M5AJf62PAYgqcWCsAm*nUF6-2-5}QzSPAEi!h(KoblR^pD3p3oR87&Fc4J51lU|S&!DLM(DHBy}HZk2sSM#PX78N{4k{f_H=2G10O4Fj|iy+Oi~m4J|^wb573uO02YPSr23mCjzb z7Dx5B-+oPKvkAhR?O0n(F<&M|8|EdN&~7hKUJ%TUI$MJx``KRe zT(uW&Rlqe!JkyTVndF;CRYUE|Uvoy|*AAAmm0vAMDOAG@6&~`l^;)O>RbzCuSauc@ zawmiex9-fABlYu?U{wYjrijD!2R+hZyWL)w0mDGmM^A^Txtr_W(Ix1Tvx6z_Uzl?dD_Gx%hf3g7)BM zS@=I#SMR$z%hlQRgO995obR{thFtMZE~f7 zqGt~@<3;BzLvP7B8+wKi(ii?RY&TIH*Eztk}Y# zoPC<@#R2-GU)(82Y)+ci-H^ARNia>P_XHNptyU$Qzd3%7dFid+ejt2og5T`X=xoMy zM;S|ND=-Y(!Wii6m&Uw^l_{@Vho#rp1WMA&qtLc>Wq5g9-VPt#EgU<@<3>r;olonE z_523n5y(X6aC4M}gMC0+cQ0S9GoC}b3%|4G?3B#a5PG(NlUn@I46#pMb-C>lo|nCm z$Xy3`7F|p4ZYwCMNNouk&4vTdfS`Or1gxawU7H%!pmmekh;$jqs85(isuw?5ft>4( z>f7}XwS}~U^^Gm9f7&Kfbn1cjcq;TxOJ>i3j*KTaNMU%<+h_+XGF!zrYg8EBO`WeS zLvgpdkDV|dJkd8IQyg5Qt&K~GRq)4o=iK)ujHOZAD`u-!nL1gr5i=_DRv5GVNkgWJ zhy3=eirH>6MSKJEmkNVVWMt4e;!#Nl3FN*bQ^()3WZ>;i?$&G4 z?POl`Zisrv9(*i4mb8ZuThJl53{sB9lJ4FoK5YLX*RkJbZz6Q=i@?38)_B!RBAivo zOIck)=9By15(gf&AmwkeyBc@p0j)+CFs%a|%!z2ia}gv`JUt5v0wwJhfVm7JH?P^N z9-VuiN0g~F_e=YAA+|r71hqx1YU$Gp;Yv}prHw5MPPP9B(&3YeZSv--^V5pNbks8< zMsnz`N+gM2cTI~{XLy}7BI`lpkB)5(T9Il3R{CJgy;Y=-Y(7om(Stqe!ME<%fWRVa z-i3z9Q5aACiZi$u@OL%>gyBD`3zyRQc>mP9!V)Z{`>2j>Jv}V?tY^3ahm9W#QVz1{ z{~HkaiPd5M_j0ZA9)IGR+EWeXDce>u-)C=US3|jlRySYS_WlJZ7Z1&F)Idi zEBg5|fQZR;EkQ(9pUMA2Dj55TJBS`KGR>y%3Dh_A?k|Rmd6Fpug#?=)MIGMN#$W}u zgD*m~LQTkS$ZLHtZ&-X(V%BOk-k*>p47#mcwtOJ%?1S;2$>$$BrcVnMfN+_hNPrs6 z>iAqauRu71&}QEQxc5@{iV(2W;emohtb)QC{e{i+!cSEwN&rJwWg%Jo0=2s~mt!|66L1g@G>J>`$ zDdoJly^0%rukL7k{k(s;7PS)(X{EyGh=n)IhC(8_!3=8)sKOG#j*CS>Wq+|1RQiZ~ zy=m_nFT(93_g7ExK7%x+R{~Ot?9^U&Xc8+pCO4MSo!Ac!MS5C37~irRdp&-~2U3Sp z@RbE&m!JYm!p=`s#n#rgRJD9=k>cY)csdLcju(;%_#6G!XK%xEgVA<5h9E8|2ZiqX zaDTzOGY}{XKy|@h5g*1K0$aMC-@yv<*iE-usJVc!Rstc+k>q(yM%TQ2_fh!h|I(hAUvBAK2`wyWOG>1K-etIeH z)NOZbwAqXZ330tYUpJ{t%NZH(`{$MSej-3^`u)=H|GM;@TI-R^hd$*TX61iHZ0`;F zpUl&LQ+D9LHBbMuvHBnA{QpW={r}kv`0oVS|GnYOYhzzutOzXjxYR|8XdunJ z8_Anl5|P9#$UA3e;P;l>IXOAR0$!GehD!R6E3DNTh?WF9_bNG09OKLGX6ws5J{=K8 zv|{gGv!~yCJk2^&A^67?9}m0tx(W`HE`8gJ*N@{&!xeL3)UmgU$E{oHQO(eI8Ttvf z-SZja-C6>HP?3RuWCB%;nheG0Sk1+4-Rri3o38q%FLLJ7|8$6ITncP%Doo9ctQ4X6 zZb`?%O3BJTxo>8al|_~y)z{a%-<}#8s~%a1-3DAjXVP7d?p;;yh#wLh?kz}qkBybx zc3Qpi@;pHANxi%`pW`U&;V&hy)WV;UU9Ga3+T~h;BZ8VX&GGL8CSpfB28+I1@ ziKgr`gfKOsRUGWc3mX&R&1sW;$}7oDN%Xp>b!K*4SY)H*)0dc*RwuwYRGyrA4i2JD zX#xJ)H`_N0ezvT0FVu2q1W-;-HtJ12F6;fJHyC^XuTE~Z(ZvmanlCl3voJhozr_)n zw|>*q0{t%LnQ=Z0CT87_>wtfIR1}!J7VIv8hp*J^e39yzxIle%d|lAV{*95UHf*_P zxX)$Bu4NH*HTQBuLhbbZ*$bQt&4;066atjN@tD*R5VA-Uha^TTn?_*&J3$2;VDz1)d{+&@I|(Ov6&%G|caJ|7xY5A-N0D=Xt`bp|eZ z<=~^g8C`7Tm%K{VHnquMNdc(W7TkX(5J%6<=yn2t0WswE4RGB1%eeQS56B;G z{e_LVDf|zs%7}W`2(h>7Tw}FZ8v)O^QzEt>->pAQ0}MnRC$1-0WCY^esm!3PONXTe zhkMS-2KH;F@uf9bP?v}u&K0L1d^861d<~MrA_!7}VkkGu1z`cP=ZTiOn0L1^%LP^l zD;OWba>M>zrrsfC_AdIErIn?Se*uxPD?rCYQLN1Ew8oqvsa0n=juG=I9x!Tqme==N zd#be7L3@x>9K1Cc1zQlXfVvv%`RAR%%$>ixvacKT&Jd)qblFONYYE)`6(B!)o2)ph zuOIFNn9$#!GPt!;lmU|nc-7U^@K4W;_xFhg8F58Wc(C_euR!|5E90}-Ms2356;5WT z%2bAVty)cGt?z%7h2_#v13<{tAM*)$_T*zf`GaN(SD!C5Nv^h%sIn>tHry(RMmoZm*G`S{|Jq{_Tqa>kl=nTk>9H}2L4-4VDs{IcP{=?zxFzv#X|+PyBRGi=(KW-X`YPEbQCf5vVHQq%bk;B?%^{PW0Rquc3z zuSz<6-{BWK;&6O`Q~BH)>fTuYdbh$w)DN;6XLkJaJJanI!|_L_^nt?2tb;IoG~eo% zvV$kli*o7&Hnyj^)u<7*B-sb~xkj4JG!V!;akL&+e8SE?`TP4@gwoI+Vt}vOXG+2I zQ^1;LIcV{~y8Rf~=+^0+nj5~CEz2Z>Cu6D*caH!(YjzA;XAS02#OR~Hqa3oPUncuU z;gT;A*pV^k)Sgw7UJyJxs~{2by0MWFlI;pz+E3c4^}q#aq&NLC{NA+qTZ_Yqk>dZG z&o|3_b{ojWYMPf1tD$fhle3NBLmDJ+bQK$kK593XNP4@vFL0Xo-wR{jBuRgN4&@sk z*B}BeESJ(~8#zIxJmv=HUzu-#zH^OVRg?^j|8G(Z{AX0`4%-y3OXDWxY+(h8dge&x zG}RbbrPNWnhADk(xIA&OAd?k8t-LtONYTT(MIAQfJZ|L`>5qNTc zWD1@xovtDbXV}!}{7yx{;-R0)XkDq80a2v5p7+f$wkI{6@7H5cF;YBmDpsg znWl}0f~+JZmG_%VBEeX_iim`b=hDichkiP}a2?X3w(6eyq~Jf3O={?O5Bms1Tv+5> z?eS~gO8L)|U=<`<5|7<_2uVzmIZAo0zp3oqo8>FlyGH~#&DsJ|(R~t&u_|`eW*Ph65omASB$*p>bV5}ptbJ?)T zA@sxjv>U_Ijgk6;GJ)En(fN7`{K(aE`{>*@c(5dnm;x6fHSo+}?rmSHoXY|5H_uvj6uqhIyxEy=x&m=D zJ>+pGb(s_I^J=3U`E+Pxq(zgbR-1ehW4!&yk=H*zyOFlctlU}C`-z7KP6meZHAUkV z%iBP!NfPA17Zo4GOkyDU@qFkf=mbSfqowr%&ys8C_fbJW;Kg|YE;3y-Gdjicvwxcy zCBh4k;(5@yjr^hf7` z-%01wJ!PI)7^IF%^8!yUw{)7n56dRh8zxos-9+wPa6 zcOVm7tG{F<@vm{F%;fKMGQ-D9&YRnieodm4X=Y~hx$^vqmrOMIKK*Se#o7wXi>A%u z;JgIp`FDoXpXisD9thEB!Qd+|`SYFj@ZJF{!e3n}XfdSo4$LoI#(LZ?&IXexApZl& z^L6@wia|s{z?|ECv;9|G)c5z|VJJrJ^I6JQ>Hmi*4i$327rbv8ok{fC^Gly|hgQC| zjcKjj9e=>*?ODz3-FcSF|5ALcm+?4ju4aXkI;<3~w~64i}u9Z{XpR_ODp zJDb$`fa<7G z^3|gpUvYAp6-Czra4>^oH157GU#GVG-TvoG2-=Lv+Sqy!I!W0XJ>LBGQHKC;8F4P-_H7UV8yuW&m8-;m);N3A*6)ezCB$jW;5_pILk`V0WuY3 z?%Fi^zl5J=L`oP8jM<1Y9uh9Mq4n|g3z-gtw1;JfTy1zXkWL$fzyBp5? ztl3rj*IQ{K@yiC&XYA{#uO}dcK+=w|bqc3BHHlAob7xumO`%Y59M`j_|A*A~S8kk9 z@bZxX6HQFb1OkR-*~FKL5`Qg;M4}}Ti-jUlZYcv`&x$T{+?$TyeTeT;D8nGE6(n7FBF>F!bn{BrrfizBa+7V7Gxps&l{Hi)hAB_#XJ*cvF?-gm z+~-mmSH9g-6jgDYIdjI(&yVN%0?XgNO+IuaI4dhlb)iI})umHcQ-4#l;%Xzn3m*66 zkP_5n;ULU+&X~v}nuERot|DjwaSGg%qlp;L9AXCbMW~W<_sVf8tXR}3bh0WC2u_?h(W+Ie0?V8Jbm07~ZVE-g z9w?EV<34`;n30holYdEf?A&_%=z&!$w`%L?2m}I=NF)@B#1gT#wziIru0&GsJM4HM zk;elCWCT?Na1^S3PaB>p5UW6IF+?g0-w|BqP=i5z5z2>U1uYjIxbkBOU#TP!=j~v@ z!iDs#pQ64^MNS2nn3xV8IIOts3oJ1*GE%>b_wU~WsLG(7GJnGn5Wq?RD=`3=3YFDn zZ(NB%XK~&V2B^=XKATrii2-U0P&+4O<`(x8=XU3dQ(w z(?*V%pin3nhGB)QNGKADL_(pEWm$${ax1T8UhKb`xt=5@*ASqF03cBP=g0`~69Fja z)mi`oI^jc6RDZ5=&jRO4Nl7Vj7oSr9XQ4jzmpek1Wm%RLi^V#+x{~`3OpQ5O2#>U1x&oc~D_)71$ zL?96GJa24lTzHjBO*1*q3m8WJP4|FMAdvICOU;rmHh&Z>_$8vDDC+AnG&H<>_imj! zb;|df-TxIl&)>a!*U-?g@T$7iOje$_IkBx1%QEHrmYe?ohA4Ql^5hMt8by4;oO(3% zQ`9%e*4Fmn!-vt)(IsB0{ZBJCHa0Xgw6(P@ylPzQx~os!p0)2v%+ut5Kd^sIgPLZ} zHB83%)_*N)L7Mt0>f2;zXZN*3_{t`Ej}WbBmDr&k$!;XNI$@Gejjr9{=^G_M^SS111x7xGRBxa1AseR!QYcqRd>(c z1HgZEcU2|Xk{rit_8tIka-Q!G`?Lv$zjJ5K00007bV*G`2j>V44JR>%Of!lA0000< KMNUMnLSTXPh^#2P7FJ7D?g|?L9w0LkSrC4$I;x576Dee^4;_edM-Q9w_2MC_a=li?A znfp9*pZWdyWRl73oORAw*>l$3>%G@&hsytwz{ViM0002kl0UyI0ssgvub-MXh_And z{rzVA`h{#NA}ay_R7Ybz8KAtjKRSx5J1W_lIJy`(7z5N*shy1-K<2hK)Eq3|SiUi{ zePv_+%E`tZ%&tBU08j%Yzl$ilrk`ZEs1r$$g!q6PXTaAu7}F>I{zZ$Nx4MR*WFE7N zN)cFv6&(mH)vo8&AD`v|Bjvn6jXPg3-0?rY7U*OCDz@DNC3^ zicH!~0Axfz;X5CrzOckT^NOpEAWRYtXUFU7>)Dx^$M2eWZ;%ml+TUQbr$ag?9ZxsqlMn$V|NcF33MV!r@`1D3 z)YJ8BE3yz0^d!=UjS0m=9oYJuMu@5bN?aYzae$&+pWPV$Ary6aQTdO)725ZTdHT>! zDUnOz;-ri`mq__CQk_{3Su7P4PKt#`MPGk4D-l8UBt=dXz5M`knzwK23tNxTgzf2c zWbxGZ);=oV(PcYg63T)ES4EVi99;Enr1$}hl{thueo9I^g?(#n*)rsOjd(|zZCZaP z_S4+2S#Lw%DKxU_4$#fauYa=mg6@mh#9z@6)sX6B_(mq2Gww6$fJE!yXi_bca$rJ3 zlKe!;w@N?5-8|*5hX#_d3iRgp`1B*&ikf7rs0G;HiN`wU$|m2q(W6Ulz5uStn@h=; zXM5#UlmhJAgvw~n=9~ZgZN6tx&n^ZJc1JaNBW@}w`W=(lRXf=W;OCMYg@yYC5u|4|Ag5eF#6E9;Eu6m7Qyf4k+WGUFz#)u;b)#yyl@XOlPFprpH4EI~R|Q(IDyg=a1ec^*45(mE>wVDbZqW8n1g z@{k*m^JZ6?C-KIS*<#}?`=lW$mjJWC7cR}wc@{^gh%y&THh>8!4CzhhKcxHYNKC3{ z^>2$zfNUq1BV1S-$ROqj-g!X00r_6V(_lnWJ`1BcCq{>7rjf5i;vOaW zCR#mGV-*i*QRRFKm4kBOa^ncuCMU^{dy*yUvGM8I>zyriSbaoQSmZ?U2g@IEwdV$l z=!moL$jUgt+LoMuktbJVLwYuihMnZ@e=yKAPlcw)A^<`)?g1y|oGTpo3fbyKQWRD- zMv0NWUKey9vryANrUzL4szcQ$ek{vjl^0%6)>@FmV-tLKv&X5$p!w5novq;E~k1sGL0Qk0snd}zJ z!K3G*aW>md{dx zu?Q0&Qg&$#i%hHr@RV!v>Ijka3_BS9-qs#&@g@=sDKyNyXZT1js0r!iXAmT!ATng% zUYOdYbRYYyKsYwFIXv4m&4k_?CK_Mki9I;Yo|ku}T&qk*I-QCt`U~kp<<uQPu~m-w6{92S2>QK zwLJnHEf!v5ttC#1Q~cd2o;kUu#U-}PXx#5C6;i0VnW+a%r59R6f-mW(j)25SZteHv zB#u3=9Vh87JoVEnBR&2LN_L6$zftZw`*06WsC9cc%qEUD!-zWDifJxFTT9Fg>#IJd zRBCo$3h;jTuBAG&W%^uNF&9dZMLz;8;XUGd|2ppcHXgar>I=;q?$4+Btj6-y#>N;@ zMXe`VU6Y2J3(_b`12^0{#?rrae3ANnn=`o{SA)mi7 zyeqY9IVEnNcMs5X+8p^Iy6soEDsbIwQd&rZ`9h3 zSodMl`_YeI7xXAjzp-=Y0Wd+(e~YF>{hn5`PUo0Tzt;=)cfTVhv}IWDmHxq4DQn)T zX2fHPneaytwp?yz*#2mCYLX=8H0Js~Cx)hg{r>R&1ZoN#r{~tXC5_3-AOh`++GEb2 zt>w$)U=mLUiedXfr(-AGDE%ZrkmSsa}4o9TW*_!eCC1bh1TwE`o zKJ2zL0xA_7^Lv;L1^}G*dw!=#URvxAf_P+3~lV`j0>nqS-G!j_9qOO^M=(yq&jLaao#;+2aHHB*y!*QJ>5Q#oS%zbGmdd~P-$ z4itt+tu0Y=GYBih==`3K>q(WF>YC{mHd)SM#F^ zblwg91NS!c@Qx56@i%RR#Z*P;;AFEyE#4cdM2D#aMs6fNgsg=U$m+Caa|_&ZLf3fw z?pvPa)Cia`urYTm@F$%&L+BYBD%S5@XsFM6#2c2@URl!QpI)%Lm(q12|!r*Z_S&^DodTh2G6l+ z`wvOG%Gcg{V>_>5bQ%7+&z8IfprZVDOb%%{u)M@33DXhQ;Bht2OHa?p&CUoPiywT# z>dX6k3dUQIyJPwj?d7(_Dx7k5a#}2-cZ+#&qSFS0yH<2m=&!F99OS;?)XPv|SN-8Z zmlK*^Sw31o_?zq8IOrRdlC@uIc_B|_c20)z9Oaz+bOLH&uCLogzObcIdr~tnze1eR zs6=v8YR>heETxJK+~l+AN@6`TSxaBw`e0m5*McpF^<2#SbRHoa-Ia7>alWnppDzIX z?z2U1+fgYRbcG27Ut;q^)sB00gN}2)3YV$r86;+8CH=}jW=5rGQYdA~V;+fV={?(Z zPj>gqD)hyrm1vsCv_fa*$<5Vd$h43 zKkSJo<%UQT|K|>g!_@Ax~Qh)tSrA1>ywIu{} zE;P)~sfvr+GzNt)rF~bEbTBik;W%3*pu{o4s=?H&VBnXwF`n8m_><57)#_C0$N!ln z6E7gQYi72}{9rCuxhj{puOw&rs1A?EBD-E{zuwZoDX28{-TjG;Caoe-wlW>30C{|_ zMga$=tQz5;;venAItits#U!%CB*I{mJvAO3_DmrUdRd>80zmn?x{;z+t+qiy@JP>z zveB-ev2d{+c`~@((bYB{|IJMg_!~6UL(O8d8zr2CnW24raM1JSwmvDzoydvd6Fd9B z?BsVXty1?X*q0QMbv_6aA_f+Z$$^SB8qMjuPSDw41IZEw!AuhjugNcktAlAdzc+M6f`my{P&2)HS3u>Oa zy>}$)U6v(G{Z`P2;m-}YrKzc<$_f$WHtoEBj=#K0)=HeM z2Xth_&CN)5hO>PWGCk{|}phSM~KO&yT48-!JihIGpDX`R|r0 z(5=4k^z`()x;nY?H#z(*EiI|3sq^#a@P&>Jw*S0Zk0xQ&o#a?+_j>%#;N2Olk6#q<* zOD`v|?x7i9esHDF*>&3WWc8=W>K-4G!4|mn*#!%5yy0u4Wdc8GW7|yy&}sG=m|V$7 z1=T&|drwWND#$kp6e}x)^gQ?Xx3@LNY=I7OJ*z<3fwOlznGP0P674sPJEtR!1SkCx z>mIryDO=X7LII7pS1Fqft~E2mS<4Zv{A)U~cCD!8QXkqh9X|UYinp=>2Mk|Q#)y1k z1i5jZzS{afySUuKHRMhq{5#xTHl7(=8uKSv*fsw)1lN@Y`s5_F;L{JwpAvgmotx6l zxPTk$QTJ3zk?JU(nAxrqL~0gBgGPmtM8u!jFPMcHfZP{BN}>ozg(LCwQ+Zj!hW2juWX++ z$x-oOZZ(yx$VB5jPFdPq?q+H*B1NOp&1gVbNF1Lk&SooFlTQwuOsVcxu%8|;?1dGm zbb5zhFZmZciT!cFuN=Yj*IH}LXeN-?=bW2CI?ax&etR7<-`q7>j(Of-qLE}=v*e%0 z6yL{YyX0S6w)1i1-`|q4sxTf^hfHRkq2V5NRfS~cXd}#DwM;$3qKp0nW!GFI!_srZ zhWXq}|Fuv@_ULLch)~tV3AOCv5+AC|{zc@5@ic5uXxT-n^b*}%U3X=8nPOrr`sbBB z-Gjv#t9|)fA_TAGlZ@3>$E9qmQNC#Ojj+unJE}TFGV^pv1*ofPnp9nxT6NK@I%gRZ zm0i;^g7r!`;uEzEU;Vh+XBttqg(>FIDvNmaJ%Dm6y}>)_+2<`I$HAKRA_zCjg)ke`AO zyMmqWxm!k@i7^}fTlmRjdutmpd(iyH5@C4k(ev(*VpyLGN z)NXbSKK=6r1Ew0}C5DG0&P3;Qu?ipp$bSz)rfU93?|aR}gCoz+hfl%Q+N_~f%yqX0 zKY5PHWkz^B>d*IOLbk$a!pUZ)7Qn0^H&X%#3%+_fBVz8ik5S~k_@pe;dH6|^|5(o_ z<#EL~PlFYa!@6yRko_`7!WZ9vp)3M1aZimyVmDUgmedNvOw2Ar%I4>xu^pNJR`$k+ z?>Zuv2=qqLU94CQ9J-)`$MVh<}9Qqh!8;2E|YS|W;T`r32?sCZ8z>Wq=KF5PI_5V-_Zgb zY?vQmg%GO1G-;!cXr)E=;Sc1uODOUrE;<5F&{a957;wX6Uedc_g7XnT% zo;PL((CtTDoOy2PAoqzKizZi`mdi z78eA!F`tgZ_UZS|bjs2Dj&yanS>FW7Oukz{q;rHeZ}q>9n?Vz$ai|)e-&j>=9~= zoNNKq_$Qqvw=poa#5Pwu9!+zB8-m^~a%9$(0|B&$)A#q=6M7`OLuiGZM#bZXofAEzT4rf9jb)zRq8?NO|R~k=4`ln!{&4dahvEO zA{9Hos;yzF`B=?M-3Q2{*vkD{o~$2GUXaCHHAQ8)Fac2^@iam&hnpAJ<9Z3wZ*|w9 zj=9kGi{xuBAxP@{mJk3WV3M`u+0tS^r2E2WVGb5i(&joR`&vZ(8`2w0aF*VJ2DoRn zVYca5G`up}XU5c$YX(+QrjhG%LzPkYE@JbnJ+MiS42J8?y!sa!9W~AZAn+rIcj~b% zRPz_6`Xs_up~}7*mxOUlpU{2VqvH8DCG7@gTcNGKETk?I25A$ICs#w*I{e2C*?G;! zFYHv)cN@ln(kqcEC#{zQNuY{Rs{s=M_k|OH!+H6GsXq8nR&~OxhUu42+=#kb4!NH=|kEM{X$+)I{$#&aavx$^9()g(G<_NS;x)|YgGcxtVn=f z#p|vJe}&^dvXF`!Py3UznC;VczKn+h8ec=pg`4ZSQOL{ask89Qt!W!;^O;tQL@~Oo z(##%O@EB%&+rvicgq~n+rD_-X7`1M;kBC|Y2a&Z-M2n7zo)+j zoCjl&A2`1OTiu@eGV~`4Pf1LJ3eSE={7Q#mw6!X%yLDGB5j^wquJJ6Lj7L&^BDc}2 zRibacd)$Tu-|n4y?BNq8R9#mugavK{tRQ^VQ1E(ST`8+we0dP)%j)v-E{qn!MmIJG z$QzBGv;SUfbAIxQ&Ok)O@yLK4!PI`3QOeDzNqaTFl)7|Nq;cENZzYU05_U?Ucu<6;+iAD74G( z_|}v~`w}?mF`d)e1Xi(JubMG}Ac;h)xhU}K;Vw~9N2BrBV>(4OH{~DCGLrD#^Jelz zV!wQPPKS-AV0_)ndpwRl`ZBp-e(ck0WX1|3N26gn*^{;MG8Xcc#^+bdKC=J34xIPM z)YET7ik!&u=HHyYP8pEft+k~m>s%^d3CU1pRR@h6KBf5Ai{w@CQQmLMuZ^jESeim0 zp=zb%vCGB?dXI!k1$0J`iK_W|#b7sCXdp(Ca@ z%O66syw>iwhKkJ9z?D*-b+-962fRH?aL8rA*lijm)<%)J?wVKIxzI!99vV-&z{CnM z&tZGddj1GP0y~&z&mC@%=1f*u&+k07bB@t(Mmz{Ae7DF5>5X_|qqX488~@Na8;0&9}AyKb}C?UOhKlqn^M z-3v;zPWU|0eQlfmm5aTM|8fJJ0>LdMHi9k*?_gj>f+T~~(NvfkcfHZJxv#OXH;X^$o1`>h((L>hc;$E6FJ)Q#O;~D9|qTZ2jl!Nk8NBP!!rf z``yq&-lfrS>LiS)N8(tq){2L68JLAjzk24d*Z_j$>v6R}(oLPNQle_6~Z4Pi#0i_o5=`}YBR#mAKnvOx)bY7luI+YPDH7!dO!n;fwF1- z>8FjeheZaU*Us00?mQ1^0)QCm%|VB^!Du;1)j9;g(+clZ@;g0E)QNBf%zp1ETf)C^ zAk`B0&Ic*4W_;wfzs%IiD5!wfW(lHrnws-`bez39C69{IMX=-HxcT09y2tc|2;ggW zaG=+6^Ekgl-&fG(ui~h(1Y)ql+9(T~Hi28hhYGdBee1oLg8&y}seZb@Mxv+$`L5Am z4zT`Aaz%P74>Ti(pngChbUtNat6;8Nz+7L=wx?RhN66ha2y$aeVuM=67~P=52RbfT z!In5z8+LTzWFh97+bG-{1{66Eic$H%&d&$9I;?1u4(QKQ8-J%L#-X%u*Qyj?yP6r< z-coN70m3tDD`XD5jQ)WBBAjxxwnSJj*75}QA&RY)CmaU1hyu*r*Z^u&t#%+wvri1l zO|fLg`}*53x`!3mJ6cRvJ`VW;+1Y!G<)PI8$s=~_;ZETA%Li5s78m(=)0iKCNo3x-x7uK$2QdZa ztp4C(WNgx6=rq&_@Fbd>kzP-ZSwSbp#>`>xyBu^X^8FYA&{=hGVp3d|->qsefJ^(i5awNevmk~$kHyY`Fu#6f@>s;++_B(hNVD?M}dx*G=1%;uo54eZ6u zm{*i_)}UW4Y&JsaS@*arYYVj;i&WZddjF%{8B{Y{fZ&T5>}V%&0m^AL-w#FeCUraF ztGsRFpIuwIV0!udzgYm>+Cwa<%DuI@H?)s~Q{e(=*Mz%S$dgjIdt+tMlt8w^)3<<^ zoGF$_=1A9|nvNUW!E0M}aql_MKN_}=53&g078TylZDkyN+{~c;r;LoO2hD$`IGsIn ziupemkzn~+v@Dk-|4g`*tDXk^iwISgzyTMyUWYqYrPq%DD;0W1z7Z{hYOzEyCMVnE z`oj;K6pPax3zJ>U*UPT;4JXT*9cMnl*u=C^J?5^0G&WKS82;6^f+t03qN0L6LfErF$SoG3!F5;qSi`>TyHu39OAY)dm5H~`5dhp2R&$rIS`>M!{J zLS@2PRiuK#!-PmBm%?_wT+Xb{6O-)j7x%6FhL6?lYAAATAo%lv-5gDd~TC->gE}FVkLK>#9m)q0|RR}2U z9=gcgx}rAh!TyOrwv=v|`Q3>MdP3OJidBlALg;i~RAJ4N#r_*%#RiJb%u6&m5Qfl^ zEl~_8L$7ey>INVzSKmvvvOlip1o?fJ1ozZd2}DfSY~*!2&vcQ9P5;Er#R!rnFS3sV zNk=gdLC7gjIEga_tB)&vBac~uOiPd%^V4MG*GXQcykF)VDeZxkaVkf)1!)6ukHbWL z#zLqrYtdFrS*As}ZTjc%CI}b5X?e;LoQ46QX03i|k7D9e$ku4`VxEvBPH91y%&sa0 z&zIPIdUp7c*_s4&zr83VFoiqt)?r|~rT(ZX>t$o!Z&j$jE*di{r8((}2VKS?J%->q zE3PwNaSl!7*aBYH?HPOD0hF%GY2x!c7?kBk0!zE=JBZa!3QiEb@87cJB+dRkcClPJ zy=rKV<9tMs%R)1lm(zPTuidPhi&xQsFBUR3;O6V5m>{rJW; zL0HRY^v$sddzj@YQabr;R}wn&wBnx`X~H2UpmfPEgN*3CxTpYs2Q;0FiPQ(^&LB`| zV(lEZnL!NNxrjv_b9aAfDCQYZ9)1EA-LHWpv~bh=6u1*i+8AO@KwUI`hAJA~^&n*5 zLUUyKJDmvqN##~rccd3z%eRVm%*lppAW7q~`!vOx zb#(3jq&^q$UiFtB+vzQDYW}gBDZyU&QGV6N{fBt&AYD#23ODK+s9yke?8`siAcptR z6(2$2opYOHnzhZg3Xb1v9MfKx{o;y_{?O1qc_tAdhFLy(qxBiS(}?|g^E8gWKduCz z7UH61t5N$K$}|!-A+y7CGhKhQq(}MuU`8fndk-rp6#6R=uF*o0WPFnbNv}l}km@HQ)Ajh3eX|N9K2P_e=BJ8{E*M$&!Z} zAwU;Y3{k0!E!G%u_~#*4Y)t}RSprs#c25e}QQ41ljYytavMKiOA%&zWwb+&`y;_7M z{3Eo@Ma1kG>&q+I{$eoOeDbnHHmc+4141cUAf((Jd zmFEh+_4YRr?pK6cX8BLGGvtjo$6w-eYMxR@W1T)}X&SA5*j_FBQKx8CpgSpZnuqFt zbtFlYj@8_$z^>&sWDm#|i ze%sw${byTfE?1)>p?xK$;9}BeQr7jl%_OsZ?s5mukioMjy0%-di@3cJZ}6f~H;$!% z0TB_irgwa1#h-QdIJbJ{+lloRf6BSY6E-p2YV*GUd5(JHwa3CYfs zY>2*(ujs|60jZ|~#*Yh9w&Opq*2>Nm#!6|#zC^guy9jWVhiu)GiQiqVL2e`$4!*ix z0|45b;j6Pdo*nPPl2cnp)v@ofjXyPXQNr| zmlOd_ylPG2)}2BP59I#H1jy7{E13mXR#>7L~_%s|c-0VDXWXnpg(~RlR8GN|c zMo#E{tteCa_N3Ir;xU@^TKUA&+eS#dm$xrmc7prnaNQUZFp%r=c`Vg=Y*e}T{X?eY z(-#BCppPioYtefggRjd(yRyt4JU+IaZYq=6^w~j7O=H7z=~=HPD)QM-zJpZ!I1}=^ zj;(*C4FO3`@u4#OZWzic;{}%Log;`WHH*IXPHk)5tbcY;*j+6Jj%+yA%=t;8kS@AL z%prDfbmT#&w=zu@2~yIl4G zp)k5Nw&?b3JxBY6yUjfd-CZMwbk*Z7203VZQzKwEI%!uY<9@}~C$lPfYn2mM3`6+kS#;AA4*NAS~;*hAWq8T$xpR4NT~Oz8aHo7-v@g?%KoVpye9c zY5P=<0%m8}bLmU{>LyR{<@FnL{-m}kBS_0B6yR%!z6p>QmzyC(>qgj6N4%)UXXbTr z6CG8SJ2x!{_cFa@)dd|Ig`@HVGLb@dH6}psVyZpid@TO+A$Go3KfUk!o1@+))o@kP zBMSn^4lmKpo4!6vJ&uo^)v2FOnv8T97K~&6d@1mOlbU+1Cm@mR2~bV-vzN^&=iE-T zbMX?65g<%%>BEN-B`9v2un8J1pC^q|WQXfIZA~6#Hz~ZvX16CA%g+oAtUxxfTgH{f zb=4u6cnr>+TP01F69>;KNp?JdnM0K|WNT?;wNj?FARflk-#Km7y~IL53Gh|)%O>H; z&uqWX+<1pz$Gtbf=U}!sY)FiB4%!JLQC$PuzS~)rp#qq(zj60tXw~p|Ts+ToEP^@c ztt94zS_hZwtr*Un74W%G8YwGz_#D3xVV&INmX5qz^f(x}Uje%adT4k^r27v2nyDsi zAZxHPd}QI$20&cu-P`Yf!>mJ2xdg{HFV|Z}GeOyv!Mtd~$F>i)JcP%bw>R17*Xckr z0k`9pju$?6#^XB`9AuqNbM>31V8<%K<_lN24-W5{d;0vS;qVnsBOhhXYlwt5FsIbl zEu|Fup>BPlKU#K}uwF?@aG9a%j#a|Pgqe>A?=GygwbW_nEW@{o0|nz#<%H}UU&6%F zLIlR~{vhkX;BAWp!hDzpLH8B^=7A77Xt_) z)dfX3XUfgvaF+KSW65zmA_4RV`)!3q@d{i-G&-l!Im=`?Rfp$T2%=Hy+2{rR*`KqW zVG8&Br$^xRUjAi0nWKEA$lvgN>3B+Ea5zft_rgQzm(#*$Z!NAlYGkfDHN6u7HW@*- zc)vgXlq5-xn-(LT+Hkw&4~=opnoJ$nX>2qF;+ykimD$F+Sd(#RIv5^*UD3v%4g1~a zl^IwgEEc76tac&^6#Wz&+r(UpJ%Kn72vRi zo!D5oAWR5c8r}Tlm5fD!QNd42B;LEMg@HuH?2+dyO^=<((_qh^?p%b|;otu_c6iKN zYg@e&DAbQj=e_~qTYVVM7MdpIxzv{x+xxwV4=dzFsdDq-;1l50w`-l8io!(O8{1r% z;w=~-*3==JjCO&!(w)ZkbtfRHv8*eE$V(T!qRvdZbwziYAInXqC@CmTj*d#?XRn#z z6x7;=56$fAI_wGaA-B2OvYp<(_lIq%$CaG#9hd*`e!gv?x20u`8|q>c$rY!RlYRk5=imO%*?DF>LiO{jUmhU zpsW+uogBaxAM%J@`PLziCxxtn zSV#I$k@M0l9{cWr5Pqrzkxth8Kvu2xR$bNS;Nal7;Z`rLCdxvDIt%%F zt3)vJB!jIcAM^?-EtkNU@$qdB3jr3lNNd_mVOkywQcit#(2_lApc0|}ubwB$Je8zq zsl7peq;SQ8ZG9CGcWG@FCwrtB36c<6+CMBG&WKdcUfY z1d8Cv2|NSs?F_}AYXz0*y%G|erT+(b;s12_$qc&iQ(ax% z#KgqH;;2wHP@enX@bK{9fQOe?l~sxwKwSZ6q+w!;Fd!u%`THN%z!Dl7ijIqGyV`X5 zYJOoXFI1uTf)!@^_PX?M|1tWKKo!b{hl)H+8-^yyD($(l8-NS#>6S_a%uB=0KC`m& zsAMTpWa#MV`1JJjN;w3w2D^veQ0Z**wRTlKm^HsFUavLex2Y+sb3i=S&z8U#tUJ-! ze^h8)WY*gM9dAYF>gb4W@xv=)Qa;b7yW2m@?eeI~Q(-TBa{I)+^XtB{JC_k3c?4sI z?+a72{YDF$mtNFyTy!4gfBP3c-}rP(IOEoUeX-ble*OxO1ORqK+==3#`ZLm@HTqj0 z+5kiJbeV|x@Pcf_8gNWHDghE8Zd-p#3L|A9COzc(Ja_l`CkPw2Tw@GMzX*D&oJ+giMasOE3}yOz^89v@RFh@ zdYXat8O8sImDnPeg$}pr+nc<<;wPlvdW@lF(0m`5P4_=-EbU3lnr*%9vc1f-Mf@wm ze53KxUA~r#{d_T z%ct?OalM0qz1F5&d#+%YuGSbc^;g)VEr&P}@AamMk6_fVXHXQp(HTw$;?Z6|-i{~c zBo~-A>Z)X3ReJVT+N08SGb>t;X=yZRi^0_Z(0ri=WB(i>-W7Gnj#H9v6~6CC)Dg#f zMRHb)T^8VPu5+@5mk0{XW{BV+M%3OA}~e z(V*3|al5P-YW4^>g7#l0W7u1nqeL*(S8$j)2oznEZk1)hgHYcOJO?EFZA3)+g`R86SBGNV1;MnY`$y>}m)1M78X-hRI`ipk&eOPaQ0zWWq4ip5xS_gI`vD zwzK!%t!`U0@rBwX~m1YD_PlVw_fL8 z)rrXYj!Vhj>7hp=#jwhsdq8W>qoPLAS(vK?-5hSy%+NiSgb+K=0{-^Wvh4r$7;o5p zTGNv78ob`>hryjT8oE!eh2oQVK;HJd@7FoUxJBODZMmAGH2JE9M2U!3K!m8X;dk_Y zA~1w^z5uwd$tkZz67K<_<7J6YoaewfgxO;BzAqANF;bT-lUZYyj)&4I9ZzQYlO80h zG`nz`+1$cu>%_R;O|MhYx4&CJi*#q-WZ4}Wdt*G)vOPh+&HI?TXX~^4@osNLWiwNY z6cVI_00^@t_;Jm%Mt2%b@?e^2Tm4d~G?92;tyaqT@$DNuRH|)jT|P!6LvMrS?-`KR z96t#;!1cT>0s zv|l$=n>)X$6%Eya8<=hU-D?_Ld2i@&Ga%_8ZnM-kT=XD`TE+AO8Y0G;b+a(>R z|H47>j|o|~y|ctS!5D%1vxJGMVs2r5 zMHNp*@@F}W(EE7@bNeVBHGz4B!gNH+6)-%e$Ai+Fm5Wz%Bqu*ja3UvYpgddHHg-5K zIekvh7-z3=XOKg=$seE6AiKZV$}F`NAGpiy>;L>45yB*%k6A|Mfa%gopB+nmnc0cj z$=Lx0Qq)VXr6=~V@8?;XMjNW({3@>b^NQosd$QO<-vddW!b&OY3&6zyz!iQLG0D_N zYjNEnKVyv_GWMy3#<}yFeKs@qTNHeqs%;4?r~sY=Osouk8x)kbKM__d4a|UOuJ?Wj z3*w@&ldY1{TBp<96e>E+Jmh7_2>?Ln&l>z=tMn`a!bzKx5=QVB*|XxFdix}Cek^|P zA&)B`K<4+)q{*c35*`p88@{bq?Q?djDj+8`^1t>f|Gl<0oG~;t>gR6;IzXWB)2MGE;N0J&!lO@lrpS82U{3G`~PExi3*YeN4idfO(B{usD}CZ&Upo5_%OPZRFyu4Si-c+sJ0xvNO}{qv6yKdD_JP zSzAgv9v@JOgY&fn2|UX>3Powd7b^}9(Oq0?vTZ!?8zI+_^Pxl*#$gGe2TjKJNNI${ zRkt#P36`9_rYlHAR0|VMfmJ>VEhxy8Qek(x8;uOjgpLRkD4m^WIJfK*ZmiQsTX?I? z`lGq!pp_^{)8)VCD`Uw#@N$E;bNS2}E#(@O`Di^c3b@v=35*wIob&FzWZeYBNI&=0`buO=K-*uPSA3U~j^v_K%U! zp_J~S>4@M>;Ia}c)q z!qV>@=}$CHD6jKe#8{MfzmcG!t!Gs;g{xQ&2QclB(rFHiN-lLr%c=xty@RO>{uNkiT=mEiFF}_3hPnM24ttzrpnE|!e&tg zsZybaXMvx!)6k^A)UCbA&Z;$k+3=*s$taQ~;Ge9Jb8Y9&hI0%pF(M2zwufkx+Aj}^ zth14kFe{$hWb<0%qc;HNF=fX8nXEAMe2+;G2YzS;W5elxAm9bj@*l)+i0V)yG%D^9R0V;0)Yhpmu z76OpjZFcXD$lpqLYyHK5oDncVB@MIX^4{V073PtZQXA#LGV0fxnY7)in4GAy|5q9z z+=NL|A{y$>jH3RpQ`q>%s|Auk@f9sS%^sLI*s;a8dQ5lCOC>-^bI=*Osy8xfV zBPQmh5{zARgi ztm3m9Qxx$=`PQ?AB!94RnTJC8A_{%xAOp)X&|oMMX#rBH_R6Fe`5eImqfg!&xgfkV zdU@3w@c_VJz%>KSepkU?eB-WOF?WR5jF}%LSy3Eg@J!T!Oa=?^Gb$jIk={sG%;EiX zxPE-ebYO00f#_>PTAzI+$ymglGLBvTJ3<*-X~^0NW}d&4IgB_C6tfPXk^e62UM(|1 z=X;GxV=6@$PXTfH!c#y^8W#`fq!Dw#l99S0e%)st=w7hi=*BI#%rYT&x|d($^(j8( z{Y-`NNpc6gt=?t~K@X|;PO>92?){2QKq)Tu{_Pc#5d4yQRfd6pv&QqAvw={LpbsJ; zwO6%Ar(OpdO#!#fSvtS>_Uh$(CEC-~V_+|$@7-o9oVc=u(n3}#LalT`Oto@%DXK)C zfB`mCtuQm8r?y>X@8x0PxZ*(IsRWRj&WB=lfbDeXSSBs4pjIbxpPYCr(GE&IDo--M z?dnHi`EK0=!3&~q!THRJbCldk&^UXjkb~3qcExZK(D5uFU(n+=3{*R_nr0IHc>Hz& z^j0kCf3pB(BX+eyRHg+lzyTrsrBa`*$H03bjdjaGx&2CB*M?Htv<_|=ETd?VVm}Cm zJflhs=Alki^9C2{0BW{{>i5^J3ob`qbN_!4GC`>)T5e`?;1SioXYHB}jpvy=*P+4r)TQE&WBDdUU;dI)uH4>HkVg! zDZU<{lE&8*@iiT|WHC8M&obyyGHMEXulv02R&$e$7hL;t;V_2tRNVBxMxOBObsZs; zz+G~i=ONQ%)FdvYYNrMv5%B5bx4h-QC@t#@*d@`uqNJ=G;4T?wvVRUA2I& zqS>pPwV(I*JnLQDx>^R_7h6Z16Msd-U_r|W%s=IHMwxGut%vTL>cSr)_j|%lUk}@@ z0~YpusTl2do;C*gn=KP<{m9n3&ym;%PWeuz-7b5+Bu7V=I9nZ!@dZO+th@Sb`v1bw zjw`)=J6f@+qj~b%X3h}&=OegwqwaT7Y2TOzi(yNgogT$#1##C?cWn-wh*R@e$@xQ1 zY*SH^)~#*x7ye)WY&Q?gjUiIqvL>krG0}hHZ_JkA=R1-ecQ& zRGd|*`T--cIv^<6%n!j!W zFFdQN<`#w3Lo@{6YMgKaFhtbEeRgX4C@JW5O66v225~E0>E6d=zZDsv6H9z3b@cJ| z0xP**;na;?+LJ~+@~1hktWLF@p5FV6?s|^OwwauESR(-#!O?S7H7!7NTm7oZu@0bUy?VF7+~nql`P`A|yY3!uyOddL+w(ng?W~W2cm?zWs#e9NG;zudxaXmk z`5XQH-^qg0IwBl)zjWQS2ztM5TRIhOTliBumZc{@q!_q_wVswNh5aw^PPa5}7>TEgD${8WD7V)40?*=DLqU9VhVP@`BrN&<_a z_yyy1b_}$@UM?Y}yL^8HqqvjERYm8ApPi{X{Xrie`D+7QNlK__zMMOm#!0Yd2!+NI=826`@y zR>n^DZYDDvE4$vwUwSKA^X{pH1w{oF=8%H@ztJ0|2Z!Bh)$H_b<&tz7T>6 zpSp!huCd}Jqoz+wxl`=gt(3Tsxc2pRIt)q9v@jmn_F;<@bFPq^DQJHHA{al$c3xxNf>7-S3=ZxQ}u# zxiYQr7y&B?p{hbIogq8wLEB-x(#ZfkI51jqVZy0*Zwc34(g|q`qW2N7;|w|8ZT&iu zEP4auG2!0u(srzD#XVdbrl={Si|a)1^rS_B^lVHQ`=r#+a-mKM{F-N>8`+Nz>T}Sy z)vuWd%F4RsVK~~DQ8#iuja6|j<8z=#(~50%jh(CmgrZg113jpRM3PGVPkxXjfAU1r zH~^kM@CE0XSs7RuT$NJn6T$ncW+v=wHFTQ zt$#W!;7@y9ZbEA|6r)+f+@h$ww9ZL;TA|~!quxglV}uLgbq4QJSAsW!v>rqWbxdeh^fC zMhIjz=#h_nF#e83fr1spB#k2)?uUv;uP$!4+=3w9!9R8T%+m~0e z*n(BZhj%KVm|nO7n0x;c-$Jn#Ie$KC2^!(LJ_7 zE%^*+fG83EToV-2!Oaom#rlXd7+9iT>n}g0{!AYg;bj`6%3&Z_Ul-rqV;_Y>DXwQJ zE+kut-3y1VlW)qI;A{O$-e*QeIvlai<@DFcFn zOifMaRub>t-u6E*^|<}DyHP?9~~brIaQsLW9*F}GMzI$J)NEXq0%buE)=qI-R}Y~ z>N$Mu)beLd1HcMG{EYb#=v`z3q8 z^$~K_9+a`uZG#mX(ORJ|MEob9M#r^>^KD~Uv>)j0*x!v{Yu$4K#GQD4`~=#q;r{qY zWpLqSe(rY@iUH1L>}1<*;Kngl5K`Wh;%Ee_`eRVG^`qpyvvP`Pg1f`Y%Y4326? zY-fdO65D>x6^=)gMr%d`LB~e~l!YHlGskOry%VvtI|hIrjNb1rz#po54iE#t;*OyM zS4Q8>-0q8hPm(SusUA1R`prQ=UJ#5f9iLdO{vBPi*5Z& zt?@DMPS3F{FN;O^@u|SWA@s6U_bEl;5$8AEVbWH0K(^uy8om>W&`S#F_(aXfkUgZ4y>?bkdt!T*+}e!a&1jw{XVDqa@2d_*%$$%UV+0rySofy zl{@EC#HI>PB@s@5#>>8-sPB|85uQLljHC5!i=JneXBke<{%>GKp?EV5DfdarGL3H+ z-_<-iA6!pf)hpp-j^k1}l2X2!$_{QdF^$zFl*3=Kn0gP~tOpgllw^lqc%mXbiW(b7 zv!QE=FA1zZ7hje?!xhv4*lmsLCzu#!xY?cprEZo=r_nr~c@gTh6=tnQl%Vk4TMZjs z=(TZK{kaw-%_5T8pRMPHGoo>V?tRZx&})udCU=eVjFkiU8-3Qtemn_g`4Fz8A{cBiAP*rgtHTB!T_?A>&Q-vcDvG4nRS*Gg z*2E_74qQLnZS~)O!9Eicx=rD0ZbO4xGej>EoYQT=V$CigfMdT28!cfL@cLMAF$$*J z2t%sD!q1grSIk1{3Gt>V<)Y17?AM16=^Os$q{gEDKJALl0p;aV($DI0Yox`g0l?l? zLnuX)dDkN*&u+oCRw9*2)zYq_NpVd3u#d^shdydp^q6oBCp1Rsa z^1uOh)m9e|({^yQBnv#Erb|dy`-iVS8l^M?YCmjs1AN_WN-iT68thG%=UjYlOWQqb zZ&7SlW7qeEoaG&<5jTRUTc*c8+a@$WP??H$YbiHeOqS1M_xImcS<@}V!0A}aF(31y zuX$L7#5yByPWF!A&`ja>VxsGZ$Dkl^)s07~?9*Lf6VTVqY)NrAW4ob;erA`T7{m4K zi{P!l+4?ihA?Ae&f{xVu0Bgs{(bGHmx$bJpd>O;hLvkjq_XAb#w~K@q7e>l~6ljlH zHhv|^yqs*skON@JI;>!_mq=*4j5N;!$Lnd~bdWHdlyI_Xzmy=6aXC?XA?)YM(PBKb zfA3}6Q{!k|-D*=@2#?7sqlzEdL1eX(ug}-BJ+Ztd#^x_hfdHhmc2o zIdy=Oa~c}cbDwb@>xabGRGHAre!dTag8Z(<5Fovvy`*$CVl@3UIRB^B^Wx~T??T0t zzpxP!K$Gqmof(UAU90dyoiO zyWt9NYNd;m>Pb^bSb+N}_OGLZ51B^0MyqxNdBrCaD)0c(YMj3RHqAbwKwccD@rAG{ zNY`ALT3rkQ#Bxh)povQ;bRLr=$x+lik`~}N)%MAVO{8suoqS^IQrp=1*g4EO8yiO$ zW0ERts5z5O#_Klk9o)&y+yh-je2p_L_J;M*{-j@L-h}$Fl`d3#&GEyQAz#SU2OKAx z&daU1s6yXURDEI9@Ku#ue1Hs%w;UH6?-wFS6U;PVAEBU8*-CkSS6IWuBtkAEbPH3g-ZUz@dcA(QF>1mNg2CB5 zX2JU+tZ2{Rv=U6}l6kh$Q|cThf3N0)4|M-k^@H#b?nYUQLI4(ZS}j}ajBoHs3MXLR za?sQf^HwM>4s{g!d59Xr?UDug|KyE#UH82zVq75aay_X(dO2L|osmN~rus~BGx>6M z=aTaIg#xn~mH2R-xR~>Ks}OSwR|xhTtLX7fny70m8~3w3X?S1tiM*yEjRWI;oYB=VJ`|Znj$!z#>aj_HR6Q@>caV)%xgwq%E!$RMz_v@(5o-N9 z<$5P|Rq9mC^KFfD{(SGa6IL?F=^FtvW23?y-1#xVOkK~8{m}UulgPNtjFGEN_=elm zqC?IUXUC!9SwLt&bQbxD%D74HDSzE@VRKQ%d4z{IUl96bYT4gYzBP~g^@6s|B}8x^ z1y2|Q00zfwSN!fThidPk4M&Jeb(?nf_ccZRO}~EdGHM7T##>|n`VBGYyYb*hxXgM> zKPkS1h-YG0A*tz@#i=#Fr4awo`jJv!DK+?92NpdcYLN@m!OZFY0QQMEj90|1Uud!% z2!0EKUv$h6U&r#Nfl7qfG^n{wZ4THxX9~4UY+>Tf7#>#D>wpmJnNTnT0gsi2BUwYa zcK2E)fTm*>>*N0*w3&MbH3Qc`l{)%NYHYDPvzX=%-H*wEQvTqXlLV*X>*i;2~zB5T}wR=7C} z^+^Dp0l(i%wLefefK|JEBC|7hgmdKw8uBweN)Ax3I$r=OPjYIo4f_4o)gMcgXprZ< zYa;V7Rn3`!PnxPSKGIjbAZQsvA)m+a#se#DUZ-V zH}rX^vL9gq;6{um`ek!3JA;A4v;B`H0KHSvKclp~Y=Q1<6p>!d+~@T{CUglYiOfg( z!!@TF%#K&9FEz3d=61tJ#3cVpU`ZN-kih7YO#&^69RM(%(sf7kypmQlaUN|Jb(hAP zNWM}bZmd!ivgZ3hN2>eDy-KRG1vmk1YG=|3bU#wm`IYw%?QS&$jSvh?s|nUJj00i0D1gkd^&a zSZLubA^h~IA1MvKZ)u5-mX?-}kB^tPsnv-5AP~}9rm(QE!F@&o1+%*@a(Wd*Q$u6g z6%ir^sXwlZV!%$UMNZ5A?*|+K)GsFm$`STvF0|Qo(IXn45>?ejG+}xLo$B!{L~mZ&t(_QoP8(&^fNM zh+0}}t^bU~2MPZBybcbhuNCuPFnDPxd2Dyil>s94;;@wkQIEV-l^g-CXsguhfD+jzRE=>JCBLw62Hg|qb{6p z_C-fW2cZ$uQHZ7vi(tIkE6F|^k_(@@nY>uyrZlCU-ruDH z?-W!n@o;K1BATLlAF{8%_WS+fuYK!(-Lmp-<@ISDtVj1C5txMYt~=e%%4%_3jMGSU5jPMcLs|dGoaAAP4S< zYccHj`4h=di42fT-)n>kG&kUx3esLGm4%LUW;&1c700BoEn4EnGvnOG%Tr|IlkRCP zj=ikUqSRaRE^ z(+UcI`ZTGvj`bG1o8#cfJP+NV`^-ldCbuP+%lKjl5%^2EHjTvZ84bc4u+Go@9Dj%A9%r#3sq4=D?jc7fm9_#NY|aGGU$miQb+E~o6(f~g8Nh8HDX{ z?NBNQN6)WBUS3`twkyrn;9AJzx3Z6)nL_r*_2{>_Z=bcU%tWt*mMLMJ<)01;!7#E2*M9-9(96@xS=(MUGM{zABW^IP(xHkAN>9Ns(G&tD{bU8f3^xW z4=jH=m?jT0^m#RCAIYeI4-cmnCzR}LIji^+TESjz+uN1%Ca|nmt|gUwTS2n$&}%OG zz_RJf>K%IK1G=4)Q!}2REiJzdt&W9X>}{ z?r6*wFDPI7oUqj|K+R^rZaA-8^br6REEdn+$gU(UIZmlG&k~+r^_nSXQ4w7ae7PGWZl}O)%USQN7Pv*~dY*4)$ zLLSmJH1T!`xOnZgk66fjPP>^W9F0HKbaIk5l<*_O$d9%-vm~n?bFEsuY8f}q zTn+OZ>UxHq%F`BXQFiYxM@*dQBa*R^f3%XajmyFNG(!A(&3cznke{#9=JQ+z=?3uk zx_cmSjX+Az;gD#QMWLOuR226N9YAg>GMR4kw;rON!zQfMGkEv^6f>Y=1g;$*_nD)z zkIm&#z|cZk%r8S5y`;9r^U?ik3GCaC_k9kkc?@V*`caIhk;q=VD=+A5c(vg#$8Usv zzrQbslK3SwnRWE7(1rwR+7QWHZlUGuJ?4FfhNkAs-**|d{}4KUiE4{Ly~}Z8UY;o` zD$_+quZX7&yQ=B^xKS2s06yl!V2sY!-0#X>^9}~>@Sslw=OTL*6M_DYUh(AI)qB`G*w zPs?!n1@cZ+K_rZ`vvWy97)lu*E%QGF$;oOflx*1~oj=mlK0~^108=0X{vR6;6`DCi z;k?e=H-uDHz&MRJZ-`2ced`Pfhy>ZAxv;{#lFpeL!rRa(^6FuQF;LN@p8q>TxKrvR zkHg{)4$y?i_H7f(HSi@cGPj4U(OD$S$LlS3(r%YuZYG28 zB@|+`_rQ<^dj%$?8D7ek`G30c|JFl+XbI*5*}EmoHKaC+bqNCUo__2&tDU9gX|PYo zZWzhL=7u}Mlwg@Wx>@Di;_XR+y{@qDgU2xXCy|ifx|jY$z7EjvsM%;EJ*+yjnKH~{vUOI?(g4UV?G0XEomp-Y*75i22YXGO<(3n?5KBRG zI1ui3Zom#-ht>Z5j`p*B`z%afuGdEJz;_ljSrQGcwMA$g8|sm7LKw(}m~Ji@c_PX1 zsh;M#Ot2LONFC--wdU7T3Z0$+j13{;Dd+{I6jj4Rh#b}x!r%@OrE8j5Q_u|G19sZq zbMy_dF@Lb8vvsf{6!Mv-2Hw5-%-pU7J%<~~%y^!xMfk5QzzeW0XP46cFzdMg#*fTG zNwDDcWdSQsAJ?|IF+EAkU0OA(+%-zB2!>>cgM@FtsxZ*@!>MwWsfK$QU+dA}tc+sC zL19>@&-H1J`HBhnSJlrkY?M!(xz@VrJ6s6B^Uc>ioz=rSf^8hLPl__693ra+b&duF zP#A43Zf1kQXW+2ytr;(gD*egX-+iUlUR!9O(Ppm>+oK+qh0L$c$kAI9p@Bs%+ON)h zNqx3h-UBBm(`I1ths(U_(c>xc6K*@t z9kUxf<&?@ey!S8w?3gS1QUld{io96o&UZx|q>;50c5$>L4^;9W5OIN;Fxz1AhwxlC1AwtR ze0a!qWMjJW;uhN9pY>&z$Mbm9-RbF&Wuu+vt+UZe(yMd5=hB+U)(^Xc0;VpGJ!|K1 z!S{8{OO~sTLAzg|{wrd*%6&1E9g68Kuf2*UuT8{jDD`z=jd}EG!hGv~il3>j73aHd z1Yg;_RT|6Nbf|9yTFH*f(Itx;r!R7lqToZe^K4q`MMsyDc~8_>b^4L>U{i#+hXvA% z_ld^4LOeFvho-R+mFuE{()5Debg@5tz>)B57y5W>SI`$W6R7?Z+ZMM;6Y=4^`HzgX zR;xk70tA=_7xzm9#3cf~eQ=IC>%R z=0>N?Xa*1~lnZWL6RZvQCtuSUnKJCiyPSanu~Htsbn7gvlB5*6uYyVQm6&TYa+|@m zqceBvv#Ik$+ea$#-{57*cEeu2vG1ADg}# zla~1`@L{!$vq$ryQGtP?4_gha7)}e_ZaSo{t^M0EG)gS9F@z6(Pp7dUtNro4Nh@|J z!N3s8UGruB>eKl-mAhCVO4le||L8Opw4_I(-e51pPZ#h?{bRz*`|~&VF3e}M5N{jvG>57k#cddw&aBX zXa_0A9C*qeixg(sEewN!R7#WRC^>b4XcdWds34v^|?XOC|Y*#9rWaZ`m`E{V+VA^32 zT_{!AAq7-u6K#TzZHjine^}bFCAAxuL{Q01#OLB_f)Df$;z5rq(fB_0T2$@>pxcJ` zwZW-hD~pTiO5+D?RJ{3&d1H_22B}6^fR7iSe|i1>fWlvMLB|*ng$@O! zpWJ2oes&eVh98R37GX^*&)ECgKnh}ow3YcVU1}{fk*-|#4H0(qGDXwPVJ|nhDGd$E zsW&wCHNMJ8RlM1qy6+GcMbMN~Dl{7jG990WZjZ7=5z>iAjh7-oc2uHduBU5E7ALB* zt2%+X(^{nQe%Le5;2Q#nv5bnYpN@Wa_m9rH!O#VbCVPo}tBHW) zkVPCYE7xCE27%cy*U{1s?mP}P#OhDA@dIxV;wLx!OcAJ38j{$(2K{&zhO}FuVKfT1 zq&cciY~(%kP{d({`lg|=PgO-Uq^6i@(cjxh>v34_zNdNnWkctx%HUD6{Fy<+kq~ZV zvgJCWi^URrJ<#QbohQYyzw~2wfO!N00zX;XBqib_Odv?9Ds8b2AafX4fopoeRX(^I zQ7p3huf4ipJ=KpgRPac^e%UL8EDIL;D79tqv0Ixe*oB-AkMggc-e8E2Z0SGf&wo1< zz#2V71#@}^tEL?Fv{#~1ntJ&jVn2-3`q5+Mjy7bhTKDgo*6q*vCKA$E)(|$F-m?37 zUUt*^65$Iz9P*RuurGzdKIMYe{s)tP<@ikW_$HR7uWB<7HV80y}tN zQoqf(4oh4wBQ?Uuy7s;!C*_$?oe*0F3!+a8U;s*VP3H2X7_|ZjO=IYZlB*T?)*@t| zSab<*-Sp|Yuqw&gscB~CCdpqyF46l^l$p6K?td93Ac5o+gaX3SmFXku<}LZF`x`c4 zine<-qit^z547YYlU*YBmDY86zt3fODfgo4$N;5*4nDg~5pqdKTggiU&)dzJa7D~1 z7I{5zEJt`SyUy#Wc`3Zyf)$$9>y`F`GiGEXdqDgIxZ8b<__1p_`Ixlk`1xgS3>hJn zyP&umKJwprg|LuxrTLrd@0|wE=1cRr=0NnMH>40qb zXq14n#9n@KKI3-yZlP)nQuFGa&R{rl3@XrjI9{gsF>-V0oX^`fg$zz>A-(P{UQD$i zTus`QO*(7efd-VsO2Z!E8g-JdKl)A2WcI<$v_DYBTdVhRpsF>^bUj$Nal$^6&tn(Y zkC&cJ8IarQLtxWrKdlww7E6AA+euyx!qWN)sQ>JB^e zS2lN1O|YF8aFyFmN;~LISMo0uEMhsYHOA?ezroz#_^m_RQTN?9x` z3%R3wiKX@+OD+bzcw-Xn9Z5Y8r?r!1#4o5eZ|6Uv3+TTepvnP4G^$#Y(rKj?p8OTjnI_*3C>FLcg32dCCaw&zJoy9fH#O`ugVPX00R$ zB3ziC_X=`@6frN^F%NKQWy4$*=LWKV(mubVqP*0aX7wM&-W6?Czcmme3ZEC~;H2SA zqo<%xX@P0qUXHsNNk;m^(Vj^|L%UUDPDyeF#^2U|FyBrCSx zNnx5#uE)Vbo}kh$?$g1vsiU5>#&OE)VNBclOp*F0IT^h<*Iy9G_ZtEc=8oGGr?G25$gE9E!n? zH}(^TIEWU0tmKUtAf5rumqvdfcz!rb!=K1+&ZJK)Fws(8>%8PmW7ZJu3(nVTFvla6;Sk z)ieuCJ|1&r&quQ>5I5eW?xvNu4d!kPN~f`%Fqi$n$SN{hb#{4Kv_@Q?s}IV~Y5RA_ z!OH7X{nLCnsbFeyGN03)Le%Y>4MBOjg4O2TACCiYecn7snI;=U?ko$yatKW9B)1E0 zXd(|Yo&Bh2bkS{D)6o$RJp<=838)hPEHN!mpe8y~(e&Vo(v+-6-F_}b)*J**^ z8P-o8xLc5~6Tl(HCNvgkKnE~RL+USkG7^=202-dK&MX?P_dcyR-8!W2swQ+jV)@h$ z|2K}e-O)0`sP%eg0W#SOqWw*$`HTHBE|+^Pa5i24%00(F$@TR*z)*T;x%=z+WRA@C z)|Saws%{%OBvC{xY20bLlaKa0VO=0;_8^68FaPa)1OHf0*B8?@Z0QAEho7+-=7$B2 zxz5VKcwd`mQ_Ju%Lcwwv&&jeg!*|OVj6G`x1VB$aNHg$(_>I8+$BzapcqgItX3=Q; zC#%1vYpu!(GDw^c)!P1qyO(W{=HM~7mIz!w*6LA+R^YF-Xn} zIcnQIZgb5uH9|7@MZkvMHw(=BaL!;oFzvd7y5pu#?=wm( z&&##!CGGyE)x%CtEZ<8cR5R~8X+2KmXt=Wq1;l@v*HSA8<2v6zS{o9bpXKC~HfvSg zDAr{GpT)&p4!+H0Wa& zs?6Bf*e5G3O;!sKP0HXf2!VuQ)oQatz_UtuU7XhiPtcxcXs=!qDMNJ%o2R!X3=Wej zEA)V@uXw7Ydc!2%@4wY5CbHeh##`q{4p4BvBmx2gujiw-;sodpa;8j5V|~B3QNs>2 z;pm`Ca_ljew$J*q=E8S&gW>*!CgDrA3y8WuDf*{j9W?@a2}^yGk4;{+blK)E;p^^x zk3+AvwY`1+_$c$`p889&85A zj;c<8%2FK5De+%UH300L#YT50o_v+NwH%^~(e-BR&gA9vd5nY|vdQk$m4$Hae|)Jgv^sZDB20i9&4H193ll{%@F;aOQ- zapgZBtM{>eJZ!C`Q;R}3^^r^Vru?z2jFn5HqW&NCG`0;F<~0v^>v_K!uF(YV8mDS_&CX^L?*m0Cr>)hp%~?&`n*EJU{_~zbbY&g5i>ufbFdC2&i9#% zjtuWVF3Rx0A1H`sjTL}P`TCcLh547V)O9jQx%4JainXXRxTZXH(bAFXV$zj3(x10cOB27EegzPD79IRkTHviChhm3 zI-K&W&)M=E?)=d#f%*ZbhwKBs9o+vJ#r-l;MD1K9ccbN-v)f$Jm&U2@zF=gRLR#s8 z^KWjg=;L#VJDjFpJA#L3d180G$SyBGrq!48-HAY6?581e+WXm=bHxn^Y>hK89mUT2$W8^^0jn0LVZtK@#K83XoPsXaX(%2 zz#@D%vd_4v#2m%kkzSokIPc?x>yYqV%Mi)rJ5odY-hT+4c%^>rQ1@2Cc4UMxVrVb^{0rd4?1 zUgw?W{!xn##9;eTE6UE^K$x2CKc%tQ^hgU?kQNpfXBQc$sCIZ^MKM0NL=L*UKGYl& zKc46pct*Co7M#y$_^e%WKi#MBb9i~U!M4*w2rUNN=GU!<^V5p9 zv>zAx3ahMdVadfHw-EihS8+v1i+E!G=?`@}wd>uksoPt0i?}&#tBuu|V&8qB4Bu;n zbsQtA)DKYqn~tIboirdgo4hFaPDGZTwT4)$kPTr|b+#PQU3g+1wr`!`<%a|v9UV|M zMlxV(k!0wE70}j7>en-Q|7Db9HON`5KkOlFbr!0xv6K9(P@c#gzCpYBn_8)Xr`SE# z?t#et*V70>VaW86$5y?>1q}8&g%Dh}7I#ZSDc0?LN!-)X5;{+Vw{^0Iqz(B>#Ky82 zTZU47lYBiVI5;i!DSY*fUae1N?_K`@8n1^5swA63;z_ogR+$NS@m~ja(l&RPZv@Vq z@o5doCv3U>;jalkeVbpey6tYDjk=J*bL*-W_x^<%Wo5Fw%&%g372rq&VC42N*1V1s zz9K%?Tv|WyEpNf+Zn<}I8(wleO}bRCM=8R~%(>K#G;*mb`TSFLy`*D8Y;;aYYITR7 zdP$y%>tsq1gB?qM)PDeePmL%)M!+?oCo^|6R66-`eCq%bm*;I7MH-T8K}bLA$tfji zvo#|y^I~7TlfLpe4m)X4!_JeKMANMm7yQ141^C=dmB@=B^oS?OpFmo{H@!dcvd`b4 zvr$lptZ-}#_XrETarWxtKoQiuIA5D@(o6<-iYem>Jz;Jf1x!6{HZs~>SV56ZpZcb7 zo4c)4*i9PuH*EY;0p!CT(;Sy6 z!n!0eV96;V7sn>yTz-Lm+pse|c%5EWp&pqx0M_MCSPB&yfE5&-npNICIw)PU?Rj%^ zno4P6BPa=1{&%!+qDScT9`^|HsL~GVL1d4BO>^4ch`bMYe9uJC{+#rC@y~GyxF)pG z8Chth=uToEuC!G3FVEj$Pxk6;T>#r4Ux@pL*oEvaa;qtT52N1j-~|t!^$~9cT*bmQ z;s)+DM*?xZj{G9V0`=$a;8Zml96VH>&T6jgi-k*}Kj99Y%oBEC8-#UfuU} z!|TAjHj^C0Em{I`bD93*5(yZV&Z-3NKFq(&hX!}3_qC;(3s8C|%dIxoFGs73|5>6V>OELc!8WPV3<>F683m>KA$o-*d()jSVs@kO{->3UhOeJ8q>s&B2bUq2F z!y5FZw~!}Cp{KdN59XRJtNJm*Zol{N$34j#Ow5?pk&Zy=Q#%n#`m8(ESP%Ly8kmqOb?ZblZ*Dj`&)~dR<)Fb zKr@s3C#8}2UaF~#akr}W4#>UX#d>bs4Tpt6j;`!XZsA2I(%573#mW~4h+7?^G^U6R zN*R;JZD(*mJ*pFMG+piOR68zFOeR96LJL1o)AOjdYl}xHUOCj$m{;m3kM>^qPU^V8 z*}84Mp7ju{-`dnD|9r~EC8~|^#PclDMkxW+6Qx8|G!YuAv+Tlt%Wer~x44zX&J&)+ z08*09`0lqOp+bRru7#I}->&YfRPJorY|ihHSpKEiRy^?f=r(`A!u|Zj029QiUU2s9 zrfSIt<|R47XScd_c`do#dy1oX7&XiYU-q)v{-92@ zsp!+6sB6qTU1m2Y$%fk-4kDW*+#}W`A{0Mkrta+s8w4Q$5eVSn@qx^{lKQRVv)1Cp z6DzN2af7dQ6zb~+zTuUv{%Dv0Yv%FqBEOfml7fcQwF(L)F*RzcTMR*MiZ5CfraG(t zZ()~}^$o3Wbj9az2j(BbPMsiN6qU!Rw9c% zD!1vN;6|Iva|s$dZ=bH5H$uC~W&dO>BMXv#d^#&=yC%76`&kC{BRjF0#EaJ0Tit#V z>3kC>!LlhdfPmoG6OiO;J}6h8p-27eV^rBFcxVbGF?W?XejwborVua=o3l~ZAWa8d zwCykY$Z(vC0y#anAJP(0Zup;`x*dDWC9kXdQ6|h`@+tB{u}TsI9J<#{(Iv>APC9qL zI6GLT@O?-^3%A*!`Gl>fpG4%GK8BHGgA-NJL^^YJZkBk zJI=Dy=@E_v%jekC%ia@|Goo~SL-yBTL$xFAoZjlg3~wl1sH^*)v;Nt9wC_Q(zP|7Z z%)dO*P)KH%wP4!McSqFqZt!(>`+k!lidfJHwz(tkj4^|Ekbkhd{?mak*_;&O3Cnx$ zWtcA8;fIVWeX*(j&s^a)o}2tRq=laFzG(+N!B3HLS`GUQ-SvlKN7fB7yETzeIDqus z4`hQ5;m|?TTl25oA>&~PJ%w{V=OVv?-kVjP1waIzAZhD+5FeZ;;%x`PzO;$>;d@|@rZ} z>cYMa$j-AAlooFE0qA=Q%az2q2BU%Z>dPbCEO9H(@;RUnPJU$l&kqnRM?e(ye>fzk z9rQ_lCYF+x9vm1L7#%G=6$);IL>@~ac|02%z18m+f~ZjsgvpRSEx#qF8yt5Z(0=60 zpp)>qJ>9Vmymae-NSS8-1^-;@%{$Tz-nVs z1Y%|%MjnJ$$#!tSwAwfQ41p}`98h`2#Nvt3(VJUa-7K=i;ZoDQgoH``{rwN&es|`Q z|FHj0_N&rAL6t95du)!S9B+FvzW5vQU8SKy&L)~!R;DH%E!&=TxTe|Ze6I0tspI!8 z$(-3b)S}|NmSg&RV{cP9$>DZgKAPyr=qQ!@ ztKiS!HB8?W6{gD-OfuOimFFwA>#4Dra6w-_YIn2ju(G}n!Iv)!AZ9T{+EOt7;k-7h zNQk12u6T~%@~z{(b(`jX{3E-?srE$aT+?Do&Gp#Ah-HcQInhq;T=z)M%;2m?} zJ+X^$z~s7oD!jc>tv0FfPIhlN%FTME44 zdm8RD9+lTCdV8eLZ`K+>O7Ptny`WLpI(7~5wKUi|Mh$q36*%AvGU9vT8u&2`Af5=3 z6hsT%hiG*fB`u2AuNvj6}} zt6il}&zeGfHf|O7Y4Xs*6t z1~%KM=}?h>)1KsMe-r(Y`MPnQfkErmYgl@LJFCUy`#p5}-3+R01W2fgZ28i@M?2ah zZF+&%+bh;^Y>b$NvUllt4_6iE;JBn~G`e)@jL+yD&bfg@^=W)pUr4+wHnI>Am+7X> zh?js4#V5s%6=J_)TJPRp-m~)SXQD&-XNN18E=IQ5KWu==_niYsRZ=}DA|dB$D1a@^ z?72MLrdmtROY`F9LPa0NjdKd|pEwWn_8C+e&l9?btH) zyWxBRG*uEp3Yg;kZtETxP@jalQzC}5QNLVKzFmMQ`fJ>hrHP>acr0~aEAcBKF7=l3 z`f$tr^vSoGpU6<3Yp$E7Tx{fglL?N~+HA%1-uZG~%a-HgRX*Ga%ISP2&cF7R_M@RF zd6UK|FNiX&3oV4QQ$QwBk@8Y76GqAVI9a%PRbM{gAyqidE%c3BoTb`Uc(!PcAaKO* zl`o16%;)aNtjh$5HOzc3>QWMqeWhj$Srzb@_A%Mdfq@Bg16)X3b+Rqp$=emf;CfY@ zy%w>%mtsB{SLNq_Iyfo${fEv9h+xvYVsmUaO?F&xCiPaHwD^F%#&kU?_S!Oiy`j#{18}1GzRgTFm|Fh!-tXuJ3uUYJ{YWM{|W#fo^B!Y%)3vW7j4dC}D;qt4xg8UuV2p0CQiJtr+B-WJsfGY=XJ@v%OL-z@a|RrfKKg zH)a;vlu`rF)cdt+R2B?CI_S5J_02F{1SF->UU@ZfWLQBP`TNvV+d)wn*RF=WrTWyX z#P$c2hsGa1XI=dS1hOWf{^0vtB>`DNlMnZk-OvwCEG?~7i6=e3h=6xIuSvWZ$ekPd z5xV1*R&x0gywPt^oG;g9u!1hs*!$$!_RKAHX6qY=C}LNq=cs?m!oyai6F^MTVz~jR z^i`o4SaBencAinXmG&cKry9dI;Ou(u@mca?ZapAIrI6m4n zznc&86^~RFA58kMozWZrM|E!*6~`BRiw+J!gNEP)g1ZMxkl-35xI~rLK+rcTxe6ImEK?m#873(-25K0ttcZ(q$We&{%;tCppw|ejd zpybno(Oc|-g0pL&sU*RP5xcQcPzT-;^=sfJ#MiR%tMvwjloWTuMfBbL0tT1#)oRohXULO#4tkB^Y) z{NwM>K8=gt7VzGfzVluwp`cNqdskH4cViORdDvw(E2_qPT05PU07?ite>ZR8t&)lg zv)r8N6Bm?hHfd_qocv21_e=20eP@If8V{>~g0Yb8^U~r>T!uG#FKL$vXe+2^j{)Dp z8~$Hn#%1HFeQk15U9GyrKrXaw8P*<{$;-vUpsY7V-uqwWv9j}s9l;gb$+Q%}Tn;e4 z;;j@93jbsGb97**a-qEyTP66fm-(+PD07ZIW5B{DTTlBBTeA?3|2X|6_lic%UTkG4ne{=lvK#PUcUGY{nR8M4Dthqu$)tYu zE2%^5)E!&6E!3T97tgm)arW<(_-JW zaVF7qOsPwt;q`*gQe^V-g)(w=jAh@Pv*C!k-`w(~jKoVYA5k&rc$d#Q%}D>=M$KaGic*wJUNp=KMptjehnAvup$pLyS4d zKHqIHPz$9OlP&SD+eh!A`w5`Y#%rq<7w2j;6SRp`x){vqLbYmGYRawCO5U;8JtQY8 zgIMyNAYxqPbKc=)po{;*Y51<8>BNJ<=%@J+B7nIj3$xSxm9JdZ#Pwi4fPDc;swecF zO$GCCXkG4Zs~tEFhaRVUy3w-7Lzh|>Gk(tl;VmccIt#Z4ug+veq+#hI%72c5O(K0+ z()$E8!R_}aC~Cn=V5ZiyGB1vraqO~nA&A#plYIF_<{)0HZW4Pc6m1`mO3LnnD{*cA zVdyl9`zi?*j{5t`vC3BdjXwT41gr)>e{vbC4W6XBKIL~mIGMCs#7wI&INlohl*#x# zuxjt|FfhY35VCQRX66rtIcrl<`|P_8oJ)WD?qvk-@lgYqD5#n)G>kx)zY?IJ91Xi& z4b`wOZ^BE2#)54T=``8X85Gf(s$zF_Kk@7kB4-0#WWQ>SFu>$0y~DFxLlM41pI@4; zUOa5Z;d*n$-T2lv&SWo@p6NV5CxA8e-ku}x zcD>uT=QU=Ct(&U{b$o{<3MJ4?hQL;%bJ z<0WY{;A{nv?hsJtNO-y-RsOw|gg5r&8JmuIH-2wMfJY(RnhChxZ5L2uLiMaL* zxCZQ67BT8E09S?MPkF4+2#ddhPlJb49e;h;;%G7bq~m1o)2rnX#b<}uWX8j6NgJaL zYJDBMjroQXk5cL;V9=DqN3hnymT~abKw8qMO{S&AZfa68DEs<)H2-G`@RUGW+Vdu$ za8$}<;cT^qhn_yfJvZQ`A2H%h5Z$`g-TA**SzW%-^YR8a9x;lxt^*sdsRD^3MRU}w zW$<%qNiYo?K(*X%=HT;Rd?8h_xzv*Ns_n%wpHD4wgZKn@Ue;Z+8}pzykxg%fJ7>+( zBGo_><3Po{_%(v~w6w|>=F>mFjvPK?*?-d8Z74z5c)?+Kla`_}+Q*3~!@=j@U+vsP z=4YVaN+@?OZL*<+M4G&IKAP6d@V<)EdApqadqxEhK=8J;e(vl~fHaw`8k<}Q@XwGX zCAVs6`6tqs`MS;tmBfW#vCEh~U_A93W>WsHwu{I#VHt9;=Pl!gZz-L zQd%|)xsrUfv};UPLRT`}yu8zcgM-V-;1q7QVg z)S8J3gVzZ?jU;`Oo5c2R1RwYTt*&~cN78|lOZYeM&|kQiYP@b~|56M!6*>X<+USOn zVQp0XTSoul_*;_o6hbCfX6|adZcYKf?d7R7H6TXOl`FeUjPkmCFT_`2^RSAoC~cd1 zW5-JTzA)ht{hvVAO`3NV>f~-NP+<)ygbp}uFnVc6&o%f8R3zBIua%nGZ8wfSowN2E zkQI*O&>zztDKPC4I2O@9W;$sgTp!$T7$h(%lKXkIn^^QPjEW_@avn1T2CK;ttL%u( zvOq76)X>S)X$q(YjjS6>1#a^2#zBi;K~@@IlYU@Y>3FB*^338o&f6j+^V7xCH;=X102UmS<)`=ceiaka5s zYNis0KPr?Ua4xH4ErB9#1VbVW+u^rwr-ZHk+)sg1HWY!KR%-CBe5^@dd=QB_sP?-^ zyISo0pX9J8^ua^;v%ss#1u^r5+9a$v&)bv0$%=2iJ{hxZ!ws|I8UjNrA|Ch1_KOoN zF5Vfh?^{146ki!l89|!_9kb1EtHykwy!K;v#B|!97eb?rDXmK0FJ*OeQ4Mp_Qc0b_ z+67XluqpSCz)!(?!W9K*saOUG@2BydIn(-mRbzSSKT8oF!%>_av#gha=`T_gT(XRY z-);Vp-MA%Or1_Ux`}btLH3R>|(rm%e+LecGrqDyiy~tca8bIqx(qG-%lkiCT*>t)=|VFm^^GCg?_F0%L&Ue}8>HAcs#w(C&TF~YFPlss-DrV33$2t@6wury-Ke|s*i@WC`u!cfdcUBs=NKS4eFU4TT5#u7hx2Jz1a zWplJ&s2UFwQd8DIK{4mH6;t{|>9Shx@`FXqr9rMVVi#M!hwmYS(BHAyb^8a-JmIyt zuFOlXp5&<2#^sGBpT9FRBBy@hE~EX!x(X9!Ff|-LdE*60=MU<92#a53I#;lp&8ni; zst=xxd>Q*wR`5?znzJ0W@7_+@@}b|&jvEfbN&QI?Ll6$>^{!Xbiov=e45e7y!-d8r z#SA}DCLWaHHLs~?+KjoeQHR|^=>yt@*sy(bD9}G}ryck(6!qpoMBcf#NxXZvGC!XJ zMduMj|L`q7z68ROn^3R;(Wy4P8H%GyOiV;}h`2Ywz31O`N8YQ}u*o5aLgoeD_aG}d z$`9WX3qfzO83rJl*CaCEW{^)FPE;s6qk+xvF{&V!NG6s5yk!;Zyxy6P+_?PX$N6DN z5&iGFy2P=)6b}8#Ga1FNA7)%Uk=M&-zPuK8{IwDBgXeHGg`>q8TyV{j%jQyG7Dy`- zu!2k5DZ~T~*-Mj(1uzg~7@0eKQ{oiH6Z{0ub<}e{KU+#dNDH@2Ar-{I!AXWk5La&|PNlKT(B=Ob zA&#ffeisq4?QqDf3ot}_QvS>_i|{%7*_k37+|`& zs&SdY=ZMpK>Fq{Of zKbY;G5XmTZKfF%!^UI4AjdYV=&nVt^xonFLRyVxt$t2j^)ZGh$vGspn$S#`sCL2KL zzY=-7>W;ySv5r`%L(CuGljl0}D4Fd~sR$eTH$DXBb;z$2vdF(TQ?S>*s~aVgU#4c1 zwOEM~_lXMfxsKfvk7%-5hS16evR@lx{Tkc=Nwt4G$Q4#K5aBzC8xMTCPtCM*ToD2d z4Ox5T?Yo94kVllP2Rc zWdtGW?5)ef2uX%-1)(&MC*wCryRSc;-`_XmBG5`Xw$)<>&kaR^*C_HQU)uoCvuuIe z-=n}8WN*J(^&s!-horpT2lDjpc?Ern7S16Xk8hsUx;&B1hl|f=xBFCYz>_%=3-`%B z&m=xRT!1{%m=-o(i^(nV4TV&LW~yEqcwS(4&%u1#!_m?Kr4F<8>PdENU124m58L{^ z04VYC=f;L!5&cM|!E>Sblz3`7>U&&og%q7e+xzT>YELY<)nF=Xw297VJJ2Tpw&@Dk zNgq<;CGP*cd8LM5S^b7Qo^~E+RJ~I8ajI6_(j@n_9_7cN$4A}osck7OllzcmYMG7w zhdMNl!k_v%G>e6)q`jLnx@!cDzi69J6Pl&ZsR8FVE463Vh46d+=1lmsGt>;SM*6Du zZLYo!KZdJW*y;DjnnYsmwYe_4K1yNJ!$PH!5hG|b3ao8AfW15CT{EKwcafhE#@+eR-8}Jh8pIMb#RNPd$w@lzmG+y06TTl{d+bK3`D?J+_$^6g67NTvM1 zt1|h6h@(m13YP=!=9EzB;>{~pVfKNdBCr&OqtKVMg`a$HUtmAkjF&J(w=nB*1Hwh> zdZ^pTCHy$89H+v+Zan5YbVDq&GlYZXC9Wu;EgHfzl^X>x#u);PrL{M&JeFsde-g7R zn05#FLD$;GSG&5ps;e7}u9%oWX2%y!N5MY}CNq++P&aoEeZ((clRiUkv1<#V^24Hj zhm23)KU-mR`jo!@$08aPcv<3}*q_O9#lbQ%2^+d}xhohloz5AAUr1YmPlZ^kR=tNc zXc$wH>}E-Ywt3FfSAV!4JZ|AR;gyB7JZ~eOeZX=0^4%6OVZ^eP^o`$H1N^OWt3}K* z^vCPnTvtn!s+P>KZXu>Q;;mQdD+Ql^_XvvxU4NhDiX<@FC?C)S1$`1(U6F*V8~?_b z{_aZvI0N5K5iGm`ANDbb6^_BW4i8&Meggf-5S)AEN7mo|JLMEd`91U zxwG2u zQ}C)lmgqaBEw|{mROU3+WV^eZ9e)C1h|qd;jh881$<#}Sn^wNnlW-Y1bOEWnzbt) zfpa5caANB!go#TZP(ZgQGfrzwz%(nw`vmQJNTv^6mmN}QEPrW=6fQRSl=p5Vc(7Z^ zkGAx9wKEcYu&yun4;TBt<8Dbs_WsdC{zY zy~0fIuOE&<_!nF_fGkSYPzLs5>Fos&w*Uc#=SWgg3L#$7ALUS?t*cEYc~G%O`PPdy5dYH<1~hu*Q}K6 z-!*%Uq01FJ6 zRzjrTyEtfNU1jdRya^kwgOe;E{N0c9ybrPnldm0;Yb)GXu43ZVJ=^(!|w_vGZ{y$LoO(3DC)B;Tm4otl-`a33tkkW5SMTZ6axX%ctilaffXWiN|K3nbo%}Tv^@~xs%e2pa=po{WG}xdq zqvIVkw_Ms;nVpQdS!_px;HLuQ0|Ao)>qA`P7IkNeMqBk&JiKb@gcru$JGgY;Vm7}# zHIc!GX@L9I-6r;fHC9sd1NW)Xe5P148Ph-dU=763U=nJ3CS8q?pHT#bJ}pJlKVgHe z0C$q1S7B_bEBxK)^1(R;vnuZ41shB004o3Fo>?!|DojAufGbh)`dt&`l2QC6K=5$g z*XdyBft!H5zzdcdBbF@unWK`vukH+76XydVlv1X zkOJVAY;Zo4Lia+c9}YwKquq4X#;cjCp7Z=3&7W^b5g!$}({Mw3-LmMhbDh;*pynK4 zeE2c8_n%+zA}tkf%$*P)@9pJPEZ&EU|ADBWu#oLxu)kx1HDrCxOg5-^~K6>PlH`bcEC3n8GB!RC8MiU=pN^kjX&`9E;UjEe-aw3TR4 zN$!Kr|AtZIr5VCs(R>g3|C;>&*9qS|X6zPgOw2k7WUv{`)Zz#M5C<7<|I_6RGj5q1Ys#6YWF##9d?U*Ei`&2bGe4Zf6$Gd zv(3#P7Vzyt5i-Ln%9C6kZr|(b(!PAvt#b(! z%s7*IplIS*3)Pt3J+7nzh~8ChbO+mR45H zP8-B?-TlL}W+6ma6I{Ib$Z)g+rCy@);Y~7}p*~7g@A%wd6!j?QeorcpQD z^Q+&Xr)S9p1~y@SH0GzTJUG!*<_{L7!k8I~e^CL4QE?R{<}M7tn-rI(Qlv3mM~MP( zaCp2=R`yMXS5GFv=PT=>9}8C}V+M1m7D0)jqecypgYQI9Zp5O|sfs9~HyUMW~# zU#x8?*le(s+D$+3_s# zl8j5QyttWp<6gMVo;M)0%#sH@_xSg0>v$+0yMw}oyJg`<^RX)^Am*!W9J#tl-$eko z$^^J7SL&a<;#S&^bIajLr**H+3Fvylk#wH(a{UAiO{PxS=BIYgrULoe8>p2xtlNj? zjHaWRnWD zlMQWF(oEqR67;WpB{~(vBxY1WY-C4-YE3-Cu$x-RlZDPpVA8?xcl}|x>w7bJznb_x zo}ZU}bd6GM#;MMGhN2r^?~@LKjZ=5(4X+sy>NGf`M@xl#19E*!=ZpaW$JM&xZlA!b zUrWb`?rLXydv5aM?N~lNIVSh**5g2UTlHtC$uQ{nmJ1C|xIpNRteo0#_JxR?UDu;P z-3b7VPbmxNE_fIAP~MxhJF*D?0JU*udH`UlxYnDdbXwJo&Z{Vq--dc>_3ebd#+Fx! zEH64#m>@t&Q37Qq>U3pwdLX1FWPpTs?7T$k84sHiQ6&+Tti0!gj9^L}mzFflRr7U< znYu@&-%CFY>drj^NBk)VIdY5BxndwsI^{CJpX zrGU5N_3$%}eBP)Ea%P*D+AeV(7shnhyQNGf7t8nl-rNa>Z&CUj-#`*0*aY5bpUSb< zZX*m~4hx>|1}!%i?_J)HB+%l<7f<2k2>fZEK?n49w0d>v@w_8}mt|E?^sl2;iW9Em zO%nS)TOYRo4`{kc^hf?Z`emkm5%ogTpL=s9K6*&`m#tWvlK9_LtrwzyD=M8{BKV1u z?}C{}1qO;TELWm3`_<;@G2(wp?&Be>Cay(2y@qKOL@Ukg3r{(xp{>R`DmjSdEBS7; zEFyZMRH(b<;XnazX<^u_5#YKb(iSZ?A^`xfU&rAL+s`?~DHm&13OO|C70x&`h3avj zT~|Iom{y2P#VbfUZB&@fsH(8MS(AH8HIJ2S_igH%wu?f&eMfU&IiB;)pk52{F2U-L z_|Rvjoff$)YT}udi{9psi{6f`0!6UAh}d#UtKhSYRr=jO%cjB05xE`0cU4n&Wx(SD z-XZ8|wo&a=pCs3pp%oL;PJk{oP1?UaMx=zr!Y7u>r9{ZQ1 z+qh#0U9 zT?fJr-@8orma0~?kP<^Puc^%z975U^9nbxcvX;TxNe35~7k~`srbt*u(&c4DdedoR zM5YS7WmSCO18N!ggi6Bn`55=GwpZgyM7e8~CTmkS8I4*^MT1JRJX52^K5>7~VRw6C z-+7@{yZj+|wZVYutW?Pjpq!eL#>p|YcCwUnwUKadAo3K(673Ko-=7I=(nK$Wq+bn597MpHMD^}_b6G!{+hw>@4uT-m2EFNw6&>J_D{!3GPTaSeT zm~I^x$xN(>ETfkdUi&qe(2zSm9Q1h*#+5*DPjSC)-HSH~S;g`xL}`1!E$fG%&n7{JG-1l;6-yCOfz>ec7j8*uQ%wJNt+@;>!Es2jt z_Wp>WyqNwGbn_^&owGhwGI777RT!yuSz%x#67(Ipk-Q=>b8kyEoD{<)Rrqk&$4I&L z@s+oye`ZV!92DUw*!nloC>Hr?#a2oZWA&>OH7FM(ixv$zd<`iutJDQ_ey%zzgNNy| z8L3;}?yjd)q3YwF11Rd;y;tq)@b`0Z@L26ECgpP_{YoY%!OYfxeM_jU*%06h`iFbd z>>~5Q3AqQ8w*Ww~%$4%UB&zejI&4fO4T}Xt3yP~Fpfsu^F_ZFhpwU!%Uc5l04uUJl&I;~MSMB?v)@&(Y z_fiUEwha2SL59aHMdwK)s>na5LzM{$2YHV!`+WOeP>OP)-m$xMx8lpGxMQSDzN)I~ zb(iC~oDEP=x(-Aks3CxNXKwaoyITv83T@NwHtkaD8iUnut)%CDw7h1Cc{yU8RrTu# zDafmKf)Os77@aJTm$rJ)sVR{1>`N$SQqn$1jiF z2deuJ!}BgnbHCH7*XG)_cN*Z$I5O^$D1`~Npz3Xj07D$k8-K?TE*{Iz67`7-pz%Bu zkK_b`y@JVDn*-|qd@N}zV%pnjB{xnqb9;OD30@&el0*ugH~C;5d+5G_fa$uNo=)b7 zuQq#u`s1^);w1evJhl&LRjHY$;|o&P$2?onwS6^9KZWiFtY zhh`j}*^YQhrealYuCqR@1r4q94ZWI;)PS^G>=H^?c?)H<5750bQW9t;mPVcnPcy6+ zsI``C2JyEeW1V!s+%D5DxJbpu(Ni{-a>~DRm3$pJlWqaXs+L-Y@Yr;O73Y`URy6%2 z=bEFb@HG3(CK;K#KWq(L6`oGZ)9JMxOY4bq757GOTLYml>4{c-R2=9 zlj(m7VaCohOBEB#-x}D|3Fa3cU$T&IV0xOlS=PZv$&f>KZzeG@8xzN>@da!?YuXH( za)2f~8k()Di|}d4;Bb@N^*oiU>9T+QGIscuvASi;(EakBb(3FtaR#22j>q4$-}FZR z1LBsHE)*9<*^^WV82 zE%b3^VC48`bB;|T1U~UBDy@{BZGOB#qgx9uB2R`nKPR0lra#7Z1@8iGjNy>x7(cNhnzwJ#k>5k`V+uaf%aMoz$a@IYQg8N;0 zSqH4tZ7&<%L>g-+^tbc+LS@buDurnYIX!E23t9)>U&Xj|qjua$5XN61cR13IdBN2> zcJIATU1s{f*cg3zvj@vyr~&kK<2Q%Is}kSP-V8ibF|2Ut4%TqWK|Q zdE3)thy}H#LMvH84M#QP6_+zmQ{}rT{yP6%k!1NvTL`vLhLS}E{5OZIY?vsQ^5yxD zfLEG;rv=83Xlzjq#L221puId|Z^l;JjH*isI$B!j@o}aF=#))d<8fNOa>5r=N~ut< zC-_;4nOVMAyT+*JX!9u>cfXdOOFR6)FItX~T&0M=yu92#krVP&^;q=dm7}V)XzfQaf_bLDG>P9_9#Ys=O@17y=46~D3p|YC zqSjOkcPJpF@e=Kgh*B}MKI(w0%yx~JIQE;gwYDWu#Kio{98*MUi;WG5hSfB7@tj|h}G(n;cJC~(xstsCyq7_}w-};H+6(l*bfJ_F` zJ&p~xkda=~W6Au*dJbAJqu)gm1Au%3X$Gbg#9L!Qu`{{KvR{@*b4|2s>{vJ*y)_xzFv3C<&kkxP%HEY6Xe2a~Qk@czT=Vch3_ z0HhGIGIGoEnLjo|_--{akt!QSfJ}shN5)V6&sYHSZ0XdUG{N0J?#S2s$d1hbEKemh cd8`9$LL5;%q~wn_atNR#uP#?3V;=gy0AS!NLI3~& literal 37740 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