From bee5afcd0832cba5468696c8a8a5fa5cc7c4ba1f Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 21 Apr 2023 00:22:36 -0500 Subject: [PATCH 001/468] 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 002/468] 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 003/468] 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 004/468] 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 005/468] 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 006/468] 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 007/468] 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 008/468] 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 009/468] 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 010/468] 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 011/468] 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 012/468] 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 013/468] 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 014/468] 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 015/468] 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 016/468] 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 017/468] 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 018/468] 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 019/468] 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 020/468] 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 021/468] 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 022/468] 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 023/468] 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 f62a4c537258e6eab4c20df0237b607378963d37 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 17 Jul 2023 16:49:26 -0500 Subject: [PATCH 024/468] 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 025/468] 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 026/468] 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 027/468] 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 028/468] 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 029/468] 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 030/468] 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 031/468] 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 cf5cd9f977ee529058c7bea565bbe242ffff6c3f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Aug 2023 13:21:59 -0400 Subject: [PATCH 032/468] 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 4c68e3f5f379c5d93d67db6237477ab5162b6074 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Fri, 4 Aug 2023 13:29:22 -0600 Subject: [PATCH 033/468] 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 034/468] 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 035/468] 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 036/468] 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 037/468] 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 038/468] 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 039/468] 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 040/468] 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 dc8f17e8e6d75e795e93fd2b2d85e93324f6ec12 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 6 Aug 2023 00:04:46 -0500 Subject: [PATCH 041/468] 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 042/468] 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 043/468] 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 044/468] 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 045/468] 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 046/468] 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 047/468] 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 048/468] 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 049/468] 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 050/468] 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 051/468] 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 052/468] 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 053/468] 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 054/468] 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 055/468] 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 056/468] 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 057/468] 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 058/468] 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 059/468] 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 060/468] 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 061/468] 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 062/468] 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 063/468] 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 064/468] 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 065/468] 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 066/468] 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 067/468] 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 068/468] 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 069/468] 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 070/468] 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 071/468] 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 072/468] 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 073/468] 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 074/468] 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 075/468] 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 076/468] 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 077/468] 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 078/468] 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 079/468] 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 080/468] 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 081/468] 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 082/468] 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 083/468] 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 084/468] 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 085/468] 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 086/468] 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 087/468] 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 088/468] 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 089/468] 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 090/468] 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 091/468] 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 092/468] 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 093/468] 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 094/468] 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 095/468] 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 096/468] 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 097/468] 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 098/468] 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 099/468] 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 100/468] 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 101/468] 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 102/468] 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 103/468] 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 104/468] 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 105/468] 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 106/468] 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 107/468] 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 108/468] 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 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 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

#Iv078}b=@)c)67BCV)2xBnRwuP+vJ~b8F7%cgoW58 z7m#wU=1L-!4Rdxp>pGR%*!Z9$cQ+|>%)e>P5`;&ePHB=hdegN@O)Qz6+lT93q>1KA zW4ID9Lt8p6uT(L}th$i;H_}Y9QmUCRfDNJH=~PiVpvI-GrhCNP=JpL6Luy8a64PgJ z4(dQqIDoRx%(5w;5kzFC4N16Oc5}T~&f=`Ae!03q? zJ{xsW%d0*j>H#5{r0GA}If-l-2nNa~0!226K;RDbaO&rEvCz>T{m|(~bp#T1xRQwJ zk)CWSYTnT7=-ib+NGxsHHjoN*pS05CmC;MHzC%Z)<#A!8{zccx=hz_iwJM}S6g`$AO&%-!KlHTDtXwZOr*|05MdSr;eHpUfzlf!VDQxLq$E$Z} zDuYTES5Q|C{0scXd)-UYR>TF zG@!)S&Pk=PsrZDdV!omugn95JT>Oqtx>oHl)Z9%c^j-;EGDD4rqQQ9kuHGnDtuVf5 z!+YoE)eF;`IBQKU+NFoO%<;Zdq-;t|6~d;L-d`Rson_xJ7>+m{Jrd4>L`GG>iY;yU zRjGNsC37i+Ee7cu77=cQwQRvsba`F#wTE$$W;#%6hqU!iztcAM$RiwR6k+R5gm!oR zq%z8eTw}k78q?9fhz8xPxOCArI1JkE9q#^vgqPc!H_&j{fCg~Ey!B?$EJTZ?AFJl{ z9H?PcdW$7jty+cz%9ItdxfVV@RxB#y#of@sIbVUX32PeA1AKkSNfv1xyXE>{`Y_;`T>-3Z{juUYUqic>)(it>M-vSBvhk7kpBiq@8Xb`*_3P0h-c=ld-Vz_J5jOgm7@U%(j%RcB#(_`~V+ zM6)4CDoWy@qgb+GA&xcWDpI~BqK7-%xywZ;I<=0Or7cpRukr5lLx~m;2q~m(Wb$7T zT+(V$aW3!L`jA)gp?|e0w$#WkCjfzKs8~fEb!cU#itgCSskdh{+wF9O^e_^gmV;@? zlIz1Pu#U)%RT8P~sl`3T$D_&{U6JlN=! z)f!hTn9mCUhF7G(rc})?lJ1~mmhjbJu1Zx+N6TgY07u}=J>v6;E6N0R@_m*?YRBQU z!cw8I_?fynwX>#YZTfyUNE~ zk92r{<|sZVw%sRTpV1u2oRzvwEHFj=rXweuS-KvsJ-G_IIVRXu0< zXGyq-?dDp-&M?p8#%tZi7LT8qC}^W5Wx@DOgcg-#=2ib=9|9SS_Wd9H+q0{yp(I3y zF-xWB4Pkjg@X)PpQ5Gu3b@0*rIwh2rOq;M=pYsb3ec_YWpr?1v(e+CzR0MYyvbB#;4=wIE2A^gWPBo!8|j0t`F zht_qtqVk3Uf0EX?Z4c9LGnj8^)tJFzx;^F zFIf2_I^&d6mwELS$Z&nhoBMu1>qYXT{e22@n3=T6-*xQE&&2C>iFodjD+!GwPd-UA zQ51Z{w=iC746iEh!v~M62k>93XM;Vk)*MR@AGW?2>+fubE<8TG*R`<|kR+sv#3ffm zDs=-=<7jy*z$_ZE`6`AUNOq_Y9uYG)lqDJG;ak%R>%D3<9D0BH(LJco@g|>R`Ps$b zF7DM7f;C?QHW!XuMZ!koFwDfix5n%66Qg`-e-;|simx1Bh`hS2yIfjYK{a66r-d3p z&O9iG3@Dt9i?semApr;x$x=NoudH?*0+-0g9kALfCuh}i5IsAeg^sU(5wRPE6+Jj% z%pM8`DH8?)DfD!k=S?`p1o+p6$p5sa8X`}SuH)`p}MVS7!> z;Euai7)`_5!7P5-_}wsSy_{{Sa`%oVZXviT;JTGm4R}jvIDit_slUYOOA_67D_^m}y46^>%n8jfN3b1t>6sLRezS?a4a(i-q4wSvr zp$*rmke(_~Dy|6znDlRU9-Mg|_<1RSup(jss6q9-Uep9e)t(Xa+!VEr?J zHeh{!DMXv2T)|r5;OY%LDWWw6B9D!%OhOUj$5;o~!-t`ut`;(f>VPBbO>k)gTY^PY zD$e7J|J2nR$SaxS$GWoWH!*qeVN#*Y=;ZhER)ixaUkWQaLM1)qBTWkFl!mVi53;c^q96`P)M#p^d=eD=Rk$ zD|ZNPpJ z?s!*sd41<~`%wApT=4hdQ33aj-Csb+l`Ot; zj&bJP+mlzBM{fN<6l;H7_Y_aq;J61$lk|OWGijvg>Rg_|6ueC!yyII~^cyzkTc?Ct ztlj?N{`zqzLB~h$vyG(C*45S3HgvXaTZ4y{+L=s{k^B;$7?~zsKbTQ`_D#_bIeSfd zy(d2#=K5>Yqy$HDfnR2W3~5#yEP7((Ay)zwQWZ|)_GI>U^B3=o?sgU^&(1Ua-a{nB za>MeO)sCzxVvPkHGD&Q>Wn%FoqoUb$588O*IYQwYReE);#Lm3#oM;WC&EVbc@(+D# zLk&4j{m2!Eg&f|7=sGQn-62D!Z0Bv50#!LxNrv2-QB!$MGNh_qITe%8n)ZV-Sfyq= z#x;L7{!122Z`dMF1wa6rSju-b+Bqe8(Q!*}ll_OrC#Pm1UaAeMQ*JuXW0%#*H!Q^RF{VddetUusCL&Z$RB&xI%hcc~gS5pRa)H6z+{@H&@8_o-FTQe&Y(Xwb zuvL)2Tz^co7U)jU6#nd%RX2`Z)lpnQdO8{!GNc4FQRer!iC~U!{-fPvyJOJEvNiGGiOR z(+gGtjjjuiWq(>|MaJRB+M#vll7d72<$5*I3RG(@`l(MS>k-L6u752>wKSvVJY;eT z&vZrfyVPbYqUm4GV6z$$oDv(*j`ElirUcLR9{lzuKxicKpv;v(J_Uf{ul~r{IED6? zY|>Op`s#|^5IW@-#EZ6y6Sre8L*6@kilsmYO7{Y#LabrrB;4PzrZx=hgkvRk)D9ZG z-gPq@L!60w8`&XjPkc{n`#&I2NlU!?+KR2!;_~H6Y-f>{g3Fvv&W|h(E8jn$n#bu5 zcm1;-QD|hIDBVM@tO^IJk36HluVg`XBq(wv@JRviE$6T~m=mK7*5Y8{habzZ z*B1Y}G%2PQQ=89Mwmk0V3{yRMV@}txp4yWqt?3L}`?B(x_O+5zl@7bTEam z?!&QZu)EsP_d7Vs&sYOHN-+Lw^h|iVzegKjA^(Y-EHymWlio4Qj-<*h8IATpuh~Q=NP&N}ZB; zy;mi1lu0${1a$Y!&#I%P^Tvg>8(o#ieRBtuCvB2?`fiecgWF?;c$S<|G+Njc!T9M{ z@6K7Tc7c*eJa4>=Arhcij!1|ELln>sVW>RLGgG*^9Ni% zy$-5g@1?V>tDB-$$9e5kffja*c!x)i*k^$n#2~XRNRT^R%i+TsVb6TMc0s-%8zK@R(H0}{Z;S=T(^z~QTkkIYAQ~{# z-gUb}#mp1|=2x7JekPEKWE+%V_Q#sI!=)kCYlay(*ES zPv}BNSWy{KfFa^fp!IG4;EIEO#;#La0Pk+hrG0Ad=ju+M;Hym;*JpNYy@ex5u_mQa zYLrMP4kR!8&D8)68lFe@_cIrtJBBF1HXuxHTz8Gu8S;5g(L%J~RR}QE9N(ZFozGi4 zMj`vss47el!DgowmemR{wo4Lk@gYJe&CNq$V?&O2KNAgg)X0L|$+i?6y}NYp9sf-O zR_V|7pjt!#II`M_p%If3BaE_izixZYb8LE+g!SIEw@TAEKvE9Y?Z@nt){mt5zL~n0 z-_L!I4lh4VCNTm1G!HtY-7L6kdkTsoU*%a6a2{sQ`~!oj#G%`y?81 ze)6_bqC$Iz2LVO1FR;^bs$_g?qTVRD$tmfy%P73g=D8nppchoo(-(b4X6xp(Nc>_& zN40yho^VAI8=QDSalIoL$nz0{G+41Rx^_19zTTSkJp1GQx~eK8%TN8?!B$dR2S((r z(!yEZqk9~_+j_lSWJqm+SlN3z_WKA_|< zxf!KLVBF)e$vj?o$=l^@rs9M9h#Ys*NgQ1qxhEtjS$pUSNcFcW=TK{`IA}q^Zdb*`=c558bTx^zDO!Qgq zumo6Ps3@)bhP=;Qd}^8?#&y-h&KE9D*8LIFXT`tusQ_i?_k+fVsBO#fl|uWmP~$5n zwE#2j))*yOEK_%vq+#w(vT=96POt5#OYnTMy1&eg zj`&qAm7oyEG<$C}Di}p~k;)M9I<`Rfb zrWLeTqq)OF$bhMbNEyuXp1(gk;SJUmxuyTQEbpV%v#DuW$kyzNp;HOA0iZh#;|F^H zNAc274DHFAaq|#4!|E{Z#+&(`alk%Q0CByRHipN2NU&MnP<5T$w{PkS?!<$#q?;Rn zW|+T+p&l?-OSQ9mwc4Oe7mEl)5O(lFXX~y@qItr;HaHmXelfnN@2+WcJ95WT!aQ`{ zt#I@eqQ=hOK3(cFLFe=Ns*K)gs17ab)vJMIA{d7P&;DfW;}l8qacX93&!q0^&08*} zCCQ$m4%9GdLY=n^no#AZ2qD`fjYv}0kQ(AGV>X6h@r=IgRO&E#DF0ff>6^(OS3FSI zgoDh<+o(gsM(2A(TF_!SK33ohl3(h(`sn=T%4@R!wXyR-uKPp=fU?7S?KgKnOVxsW z0~d6IJU&~*oG40&Dpfo>W{pv{CE1Ece1?K!D3f_j!t>s5YtJ_zLsyN z7+W_#+KT`9H5-Xnht0C|7qA717q<*$pn{o`aol&-_^u~?J={})-0s~?cmp9ZpY~_+iw=f*DXZ( z?24u&kd9`X)j(fm(qYOIuC3PH6W0wJW}+U4RZo1nmEu|BhvvW0*u# zaOfMfKC{vP-QA>dr}AjUk^npD)iw=W51z|T*%^-sx6$0m=OFfpzuJ6RCB!WpI1=~} zepq_|tl77oNNpD5y5s>kJs;F;{RALNS$O?|*V!mNHMY)yShy@Aa*hze0m`+aV1MBoC}$Zx5s)hVYNLTNJv9%G85!`1VCCRPtAa59o#2Xdt74Sp|= zc&CRnQ=-9&ZW8#6gBLPb8mvlwDrrXabdyQ zJ9>(N5c*U}{a;(Gz9p;}f22!;=Yb5&Od4oMYW8THmYZlMuPdZwl0crwoonXvMm zki?ToE0z00Lv$@0#aa-XT3D(!FuAaWN)l1|evHkMT>Jib-(>lMq<`VZ55gBI+n?hh zN|hy3z z+|@S7hDWrM+jtZ1)SBFA@FW5lArWl0Kb<(>fiR0eZ^C3Egf%OYKBRnOvtOJx;)rsx zgIGb7fk3e%VLcYpKbT{Tm}}uQ0R!PUFAty8Rrs&jxS+}z0>01$9639EgL?K|Tn(|; zX>iETq3?dX5C8I$er;fR;FnwlD^Q4j>_;Q_@OM612^3_KqC?uj3~+@krlrE->Ej=y zzC{UO6KGD&Qa_)*OamjBEejoI9U~C>P#Bg@nCBsF7 z@J!UT0FUOVugPFznPzzdXdnH`0I_Oj`Mc?#7OgBsx*ffZ&F3o9|sV8baUDhX$dQw)^G$T%Ub88RKU}aYXA7q3q&*!&RX~HQo z2qI0+LDE=NQ_`?O2ShjZvlfl{Z%rXqA~HMvecVEUHALBwd^WjB36#isPc2KGhwN9j zFKgq2dB6rtmx!Ipy;z?)7|Bt*zs<@NXYZ@_p640DGJi)d1PU~ zw`z+79pdjT-^`NVGFZqCKpLk{ZPl2Lg7(@^8PtvPXc^WGug>4=Sjz&h?T2rN7dM~2 zu*IL*iX515E>G<6awYDz>0hf~N*MIS9lr31qc5zZn|-n?!+4cd?&pwUO!gBm{!59a z0QQqL48C_0=Yu!Bq{E2EEH@E^(hXg@|G3VSkqaj4$)dypJ7dcOERc+PKjgM;Zc)Hi z-K(d1m}fWF(=#0HnHeXr=&Ly5i{fnt@0dk6*|sDVW~uih%98=JC1_3=utMCh<;3tu zf{z1cHVOoepJtL{VE zX)nrk3yma?^}3AhMRfeYp$H>6BkdM*3r+0yGkkpqzP|d@Ty>(K@zr5*R4J8IIfXvb zK?yXUzY#6SO$gk@;EeotHJ<=oLRl65w+JoNZ`H=NiY9C~3jff}x=l!ck$)RfKWa4~ z#8c=dN=Qq7DrOBcPpvJZ4<*><#fS<~JA#NT*jZHM5QCXyQ8@a`Ag{C(lNLS(4$<}} zz9W_98s!aM&bsZBhs;ztf>-!nVTG8s8?}EN8B~zz3eoz4N^vEzWm|=WNbN_(qM%RQ zNW0WKS4=D9;BN%A{B6}Pm(@BH4n2E(Zt@(&DzYN%TYK%w1S(aA9pzGj)G6z-x={%- zF3oKX7#+@31zbMQvuQ90*x{&=F^|2zSwgjcmWJ2}x<1l8Cc(|-4F&~kv zOtO+cDSimNd*UXGTDrsP<>Q?fWV?O*Fmg*S<~F@3X`w6)|Enz67N2@OAzN;03v)fU zymq}Ol4eRR&WQ98A@jkm4%V^!yM+GSH_|a;=)UK36^*~~JRk5ed#9z?IgS}o1)?5*2S)c}(8yD1vNxO9lVWSnZH+i_%+Htc#oj&8`IhmV|KQ_4zpENlCv7rqUpnIZ zaa;pv%;VBGWvtIj^Crw@ z|FPutN?*DpQ~q%T+kJo5f`iZY?S3!BB&T8(g5vY6U&-$tEo$kuwBlNZlhVY=ged%V zPbXTD^8ck2|4@f<3G`e;{-Xu0IyQ6UPh84^Ilx!OcQ)`#q0&>`NS9uxj_N<@-upt>w%V9x0>;X` z5OknsTxkVN?B*kSA|^YyX|cXdN)dYwLgZOFDo_ywZ2)H`9O~h=|7l<&+fd{`4rY8j zecUR&t9%&k?&)CRk$Gv>z^0S9n7aJS%yL^dE+G_B;99ROEto)-y1;Vvg6L5~k=)_t zkNxO6paIJh6?{8ihQKiMQ^Py%;$IgK&4!Wtrh<}=*$Y{3e$(#dLaXYS3xb$R-`ug_ zA$)uJhg9b$V+b~+)PtYKc%$BX{1L96;!k{Q7=&)D z#RLE$UaY?DcZl$CuCP;5J<7yIuSA`V(W;QGq2(ZkU#NYs6cq5qH* zLG8OSJMm`|8^xayi~^Iipxmwfd}<-+1|t#&UlL>El0%`m3409H^kY^v4(r2JJcuNu z8f&~f@6Nh}^Q_|MH6%biVB zF#FLg>rMx8Ko)Z&!MbNcjC~rhc~lI_Gza;pn^JIXy&=_81{#xeYvo;!T%B($-x~G* z>KTL?bj=Kz=Rs{cPF}Bp_?6UBe2$axD(R)#s%fLXTdY^^W39~j^M=gL^$kS_QMDfs z4@6>R`MzL(`qa$1d6w)iaA@97g$_0Wp{e*4?LPQFxV@8nOzRr>qMN17NOBIUmcM`k z+z;GkGrmNv7yswsnz+CW)a*%#5b8g`JNFKqmm%{bND-$I3jBWBBQWK7lf8H?l^L=R z(EB7M9P+ulE2etAYjTlgM*kHaB1W1uC0n`xO4Bj*rc4wQ<()#+-Dw&yCmc`o|LvqN zUz9K#gXexUEIF~+wjhXE91WTg8ABYo7nE0vavk|lF*xA zC*dT;hQ1h5@Upi4gH4;*pfoCFtJGE7N`B&2U<*e!>LFKe*M`+wTbS3}vDQe^0ZoCcD zGkG&rw@okwYDQb9&SAsRJ+Oz6UuEI`d=2#JSf%qtZgCUrG0gSS6+^%4O3U;{Jsu^f zQ$q%{E~qEqIpnfNJ@%FxrjG7K6v`jyV)&9SpEL%UQw%n$Bo9yr9ZA*=3ujp({Q|0K z3}1oVmE$@g>p5Qwm=quR7Z&ytXk~HGsI<4_x5HhB?BtQk`!jNY=%cP5^|zSfvD{Pa zb>1J;`wUP3`2)-1k!t~n#&%sFSvOUlyYXOZGuoCpnCj=H)PVmztyVZ!z&;}MUoQ1&gf)o|hbCzf zSkGMwh|Oe#G*+O9W@a#>-Y&lG3)IP9;zpvG-h3A^KNWa@IE3R`5u`F)mrHfs%Q%s= zAn7gZJwVrqhph(7i)7frs8^YS?G$?L$I-2b6r>D_{iTd{BG@5o3bUG1NSv9^AtXsc@OUb17f*%CV);(r-BW2Q4$#< zZM~EkG7>bVVK^@#n5Z4Hx>*_NLW>NL6}ZYifpDT0dRVxkHPc!M$+?m%O}n9D)u=ZH zaDQ~510+2mE7AzSb$$B2^y?#$zx&#B{?;mE`#H zM3;PK#>zWzGbLc;r>iKEmS%3sKvlo-i|MOg5Q`5PL^w)tpOF0(OQezU5lYVC%l+;{q!{C@$jKGN5$m2L>K;n|Qde~r z_KbgnRuM)sj&p;Ss$Otr@rABJb6>KiGP+>@{^hqIVbs*d@W>E?g19a9SjxjmKZjzj z37SbB7$KvFa;!pGYre^O2NmT=5_-Z)kR`8!QZUxd(fbT<`#I@F{Na_@P;CXa3q;&3N-VBiJjriv1T;u@pRVwfo+O9e@v-r2vZ za#!aGLWdz4Zxp7e9p*~&5P}J?Zr&xWK%P2x(AY$c5uEA5S z+PdPI=+4M$v|1_Z>{~vstM#&MN}>H-DYv>RAXe*u*)1UHIZrTe=0aKRJyX7@003=U z(&lj9&(kYyFFBMZPGvnupY^n6gi!Wt;^|t+VVY~8O|{6lEqq!kSE0Ux_=SUUZB2$g zKSPue(V}Ux9Mvc|Gt!#=h_xYAPG`ep%vOvE*_3V7vZMv9fuFf>zvsF%`7-F(($>PH zj~GAuHa%1GJMkMLiun+fHezHsmE`%ri+3V;yTrEhzOBi0s1U3n7ODg%daEe*-)BY} zod-T?!PuLgV+Qz$aYYTDmCG-6bRRt={W%Zi3{v!{BX9UADs@SXPPn1`X;=Y zVI#vS6R6bDo6A_D*B#)9Osypj14u$>k;82W#ZBKEWD)g%?`nTw&8vWEA$s8_+mLo% z#UnJi5~~7aB7V;IOSy!7rydau1kPM+&+LAxkX*U9kFb?uPvo$Nv_iT&P};EsMrb`tgR?1 zt5sA^Y7{wXnCG-x{K!t}R<=(iStifzK0S_1qP6TFo;FRhu$EEey76`V+sd3oW={;QoREE?D9Lz@`I#cCaxlM`rY z%**(~mDo{uMcN^HzWI^Cc%S;54Ea%sq)0`-Z+J$X*zG<~;9+$(6sPl|#ez_{qH_#0 zgdi$YL<~f$=u~<0EX*YbjQ%-o1=2@dtbhW>U}LExoD|~GmQnNm@Q5gJnl$V2ayAD+ zf(4{4d1nSMhwl)yRawmgsr?8guLX}H8;+~FT#7R}bimFokWlmAP!$=!6x5!r4(3n+ zsDn^zX!MS7Am$~uKlaQRuUb{t5L0Q$btq}irDBYjpjrDO6Z`&gU#{YR@RiHQwSbgD9}p2VfiQHqU{%gtLg6> z8;+k^TSE*Vmu5xs2G{BP^x1bSMV`sUq>G6cHS(yK_Ltq-KgjX z;H@=_s%tI&{Q$zcs%|zkz+UKNH36w|F+b5Ef4&U3Z)fc01*p}I|4 zA|XM;UBR0RuvSaD{!&D-wLaYOsgj4axaqG9EktRijJ6)?{42kvdwk4ffBp$EWuSal zuv3FCN=7aWm z_ndmV33T81?Ao<*2c4_&i_3$8arreHF;a1Nq)Z5!hsVOk=}3Ju^9SJ^vyiZXZ(OGj zhZ1xH)U1+>ftHn)t!AoE5vBtr{~eXV9qt@gtvE-_+u^|xFEdOH>vJmJOKS$k3fQ{% zfR!?&#azWN(E4>-Nz0FP6h!#0h@S9unw=C=Q&t#3x|W1O{YmyZ(kMi;TR?)(ClB~> zueAOlLjf_E3^solP=LoFcDlk_BNuqv`X!|6b4ZDf-NT{V6G5$4ywyLwOPd%3|4?-} z?)by6ElDei3`-@a8(%|)zdCL7q(7}~c;>IDj9;xMQe;ucz`}B_ojJrkJo`$d(HZ&9 z-Mqgf!8Xrx9(R2D)Sv_%Tk`Z%Epc?+UodS{1SkvrRX@7>wQ;9qLG&ote2D3*H*{&2 zhda{6q+Cb$L_jg5Du!Y4g*2E$rVB3=^pcB=gWbbu4-;cz-2o|0i{4m*w7Ph91$hjYy_* z(ejI4X5)dm3yjxPI}!c3e3?u*{vH}JI?Y>4Luw(Y+`RU(2Ubk{7Dp|{xp0x<{EIDs z-w+1UH=#(4?%y7l14LoCVGx~H`QsCIPrQa}zUYxfL>~I^l(`LZ_qtiqnOtZWg^jWIP z9OoH7(NHkjv9{puD&O?OC$SV433LtB18NY<%HIrSq^vm+Y9TSYHy$1-hRbphfxt#2A341kE|346U7UI!ujwB6Jk{%$zz=#3G73Ef#sSw9YYZhbtyS4c@ zClC`ZvRqh_l8ECD!S={f4`xX|cgUvF?EMQDkcufhNJW_&yICq~C&Pvb5N0iO%B*SS zuh*g%m*R*ZmKfT9Wp()qnwO*V|Bs`y4vMnv;xH*8-5}jv(%s$C3J41b(nz^6n^qf8tYWVmu zkp;QKRPv_q(f1@k_-Y4tY?~-85(C%|2AhC4QJ zS>QQj4_b!t3|YU6ebqEMF~%VAFO&avHTAzs`4_Hwr)EAv#ovieqPD5C+aF(g!`5R( z3G^5mtxh{$d0ncHoo_-_aOfF7);vD{Wr$YBD16dML`ZNQ2^$1QMy|p;+&n-hzqjnFd9-FeJif%!D83|IVSbwZ;okY*@3;0&3N4Q5KBPSIk;>v{6>57qFGzO`FyjOU4Uxo(YE@!33Fe6&1B{_XVJ2%-58 z<`&aF;Aa~L3*GplM85?gtKk*U%E_Bl1A$1ol^Z#DZB!ENGbNVY>~|X^pPRSmYQNl8 z>(py7JpYRc5hFXOLJjyPRyIEuuk3qOx)UQP#?^V0$d^{Um_;9rV^P7})=2dE$$jvW zi{1Hrn5AK8=)$U2YB0}TjR_UKR`K-^iCn>tL2IV7c@_)ugxL?0ec2DaBTL_#v+^Gd z-@5!rve2XVC?YTUlB+d9e=&m~(1{3cb#7GP+rqzVZV-fi2L&}tZqY#Ipv-um$x&*; z)QrI?ghUyEDy#2(61}b)6=aXI*Zpe$8XMz zXB><4u7xSzG{SWbaPNR-hd~AXYh1UQ4ct|)zlya;p4TbgpD~jSJhk$Ic^)h~JrR}m zJA5Mx6r0%osesdDmEy`gsXF0%HOp0r{{E=QbuA=mZ1QojC%4fzn*D`%^iDH-XpJ8p zSxaWykt?BZ)I@mJwa^=Q3^NNFzCU&gI-By$=t4;yu-^X$0fZ#2KPhn0^Gx5o^iXl_ z7BWoGk`3(=S>xw)A|T^(-%;acMnLR|_44=c6Da{nmZujwliCVCG)d#(F+8PxyG~a~ zG6CVZMuOf1$A46N-4w_pCdDuQi05ZFq{8|6nje{e{iFl)F#V}x5$B-3k%VG#jAt=Q zPxdi|@?F%7Z-Z&yDm6U0SZQMNt!1^O!y}LS_EQZ#_xckXv|Xta`_(H8#Kt!E_xYYH zxQjK|Q0^Zm`J=R7p{^Q~6s-Hm#&$!z@C|pls1n7o9t7R$Sw-UB*ua{STKz}p1_i%J zATSiKRfDFubjGHEC#3XD14B<1H6pMqB%y*BynB_YAJpKA)g>0+#i8aiy$6{^+n-Lm z2sHFSZ?ZZIRn{#!GRLLJ3LG!IPRLdK;Ku*VJn(KL9ni6$4^fwU4+H42b z=HBZT@T7vSipV)uo>hd#(ot%EnGs9aq-j+(f=ZEp z6y_oK_}&qVNv@hd7{t#PN{^$a^SQ0;+*1}H8uR-^_FY6{UUC#Oz8v zjx6$Z1l{IwRD#Bk?eM)PO>RE#j&r_l z+2Ys3g(yTDllZ;iRHngN4B@fE*Fe>NQvpq?#jG9h7Oo)1L{2Qv>f6PRFd_}(kQ4o_ zwuQbg&ZwtY07oGcQLV>|`lB*m8$(%_UYPV{Hnp(ASRs>=1$}ISU*BUkTvrsl`g`~F#@2Zg$F@$|HjqZf7al+e>MxL2Q8iG@C>TZ061z`G2@txj8uK_e z+&s7)62(SWeIuwR&p6ypDMP@4h?ir=n#8KUva^us<>_KAQfpXIjjrm(1^;;8^Yc^l z0p{06td}w@G2mx7-$!=G`3<&h0qg68A*wJhPb-6bJUhFdW>F6{ZN2iMErFXg>czmJ zLMMV?M&H0MV`j6p*XV|3#P8z_Ls38^TI?bmCmJgL*_H!sce1E!O4HlazrANVmB(Y% zk|9Rc?Khfq2q%PoKKMgoXgSAJf8o?aRP+7s-w>)L!Zy)3frp5XQo8seJj_ApWxt&a zlVjv>OWQrvbWhUp;pkn*SXH=iWaE?yT$EZGn-K>sF?dH0l7{@{#b_%$nvKG#wUCV7ux-m+VXW_mzkYuD zdg@cMk@GzDvd#aTc@l{*Z;}L^mXwA z-JZ@i9npT3PonFUSbbH1dh>yL`2_=dR_tbyOxX^B!cw5sW5x?}x>6Uy|A<3V73$o~ za6^!XW}G(5*3EL4Th}Vj#(Qnsr@;X0tKpPkyf&)6jjfMLhwF1@AuW8StjUCA##w{o zk`|hU2w|-S-yOV)=PyxQ3cK2HeG0ON69M=>?ThfvjN#5Ee74_ConK6Qc9?$Efk=9E za(JBXhtE&f^5)%}Tsv%T*jW1@=_;zI)dg54UEPwnJxJ&wEJji-Q=vxE7(4kcEh}0qHdN|3E|) zjKvYB^{G{jmCs0!xbVj^vwl4%t(ctUor6~pW#LCOW6vRUVRfw*A{7@rlCMd_)>Tc6W*>D+T$jRT4C{7^c`1-{)JM5}MF(+jub%_B+0k# zAj2r)CAxV+taFTI^Pd?G=&$+Xe947st~BwP+I;GjhVY`u>V(rq`!8+1g5AdBr{t4F z&l9H8rLZ4NH86*|WK`R+BTk^I+x1@cPhWHt9W?R$ykCWqzGi{Z;@cxYO+)k4r~gY< z|M^#c)K}jJzS|YHhK;8OtJBr}(isLXvXA5tS>cqAn~jSI|MphJMw&w;pHrDoO&i5n zW08m`iVZ9jQ4s;-=X%Arl9fre^sVg^6)3+Fh_NFD0>qQf#QAByYh!heIdA4@$7VYW zO5C~Ej$lD9HY6J675~0PD}+q8rRiLq8!!)!y}|NtQCCsROzzwLhxd6G_hN%G>15=9 z;!E?riNag|9_P)@`IH9auC2W*iI`DMyiHnGHyz~ojIPSuUoWblKtnSqTG+=Y&>3^m zlga|kp=YC{9?^W+CNd+}sch2m>-|%wrP!UmYQZyg@AT(LVHLPZ8#X8v#2oox0v8O7 z?Wi_L1V|iwUm3Ks;R}g!;+X%|Me(8=df%>L($Rl)P;iXf@}vnG4UI$-QV6XfNEt&s z^AdkdeBvcx^~e{G{Ek2S-{|q0zw%tmitHLCdT-owcwxozl$y$ay95#PP^!QA zF9q5X1u(*g;I4pA!YR0Nl<=F+-;A)dXpX{Ebw+Pf2j}bv~i_4ZX-gXF)QDy?^EyX0PJP^&U0uI((QH~I@f~om@_wzH zS>+GGgYN5q2(-%}#pK>wqpyzsbj+?Cv$<%~8!x{nhfE!IAD673K4x) z(ZCQ+)IWpot}MobW{j;Cw4QwiW)nu0(}XTdJ*o-Kz4zZ0rn*VB4$LPkb&(4yJG*Af zBEuQ3@8sXXh!#$I(-3WzHH8rOg}pjGM&}lf=%0#K=}sjW?|e9-HEIwl1Sq0oaYBbk zHV5HQhPfB+M_4$*^nmjRT=4zYVfZ@ZGT$v1*Et#5y4`vw#`ndQo%Wk*V9UI)(a1A4 z>YuWNHYRIXduV)xWzr!=OW_jbJZ5N8EZ>j662Iv2Me+~LZ|b)>Y+Z~yw*bTAHBXne zBDb7BJs*CF-j<*^qv=9mTlfw7ObFVF<&lQ?q?bpZ6z3LLVUxRK&JV}q#|m|7!EUAKh+M_fE>LG@#gvw8a11v zW~9V2-}xtMM2AIhgZ&kgppQ`o7O_Jbxd28d^$w!$JUFAl3BqWeiL$8=szu?sao%u0 zl~D7m2$w2H{#vWDor9`E(r_cCaQ1>&HRvQ)mNd8GQI0C5xkLO;V_G~yykG#+RjYF#+-432CL{lTk^MlPN zlA=}MvdUMG%!&B(GNr9qbUtx6{%=B3Mh5_oLvYS%7=v|_{i*#;sG3Eq0_sFG)BT~zgz2G79zY&VAaWHp2l2b$t5WJ zS{4zWQA=LJ&lP}SmGGQ1kNvtQ;)i&e+`EiRC=UxE>nFM>PQoNRWcducR}Ck{b|Z}( z_sdLhMWP!Ab5_`WNta!W}^{5UaH_57XnAN$Scy#-UaBQ;;1Tc1j~8v|&XJw&-3 z@L$+}Li_kk;5x~9-0jY!F7fmBi;k-6aPk9INU0WI(!xN7xXXQ}iqhDx-NE<2Ra(mU z;7eeSe{HtkToUG)8*5|T##U!tCX@jg-lmPK>k3}^O=O+hDaqj=8TW0;Z4@|{Z%1R z?-<(F9W;JpXO&E(Rx1)RLSS#YdG5H^7csn$Qd5Tz^};_wlkH#^x%OS*-4jHe8Fuu(gt3VtIHbfh?XSMh-2TjYCV{pGVu{&{oz61Jq}> zs?>4t70T%IKF0~G!7+sBkelEaZ~-spm?PG~@BeaoEakFN)%eD80y8^ zua8M?cNRa`G+@rmQn?DRbMx>uE&DU3Z6;r(RUu^{ZTNn3Ma@uyPGCmcA6qcXkdH*B zp1f_;*JvPkB+;{LtAF&7Ho7I_~pDYyBJJK!DC?T0{N> zQ}>=L?8#eBA3w*SF{&PFy+q!hdU%*<9R$8b@h9S}7N{ZPx>BRpD9Y+yey;+!4bXDa z$!RU~Hl)HC%*E$JM_15pPH4NGa<3)wDRG0zpK{41Xi)`1WKU$3!x^ac2IWjEYB3WD z->`r%1E=(iN`wRn>h|q{9?zAbF`n01Lvg?-e0Lfbtc8{B9A_-KB)M?;h71JEKWoFu z%X7ilsD8mVgZt8srIQRaB;VdJPoKdOWw8iDB1up{=^?P}=Z;P$+B+u*MS#jo>DSV} zaA8W3dt3Yv`-bqBkWoV=t}NnNdL=yRCdnx$PA>(pNo5D9LlM5>9Bf6>LlFueh!r+p z(7bCOptqs~Mv8zCANWiuDC#3?l>`@RCuwi%Cm~M-GUYrjC_-REXB^T;B|HP3X#AWu z+Aq9MO>*-*Wjxm}M}^6uH&Q92wu! z>cZHX@7bSa=aXi!4YImtcgL;MNxb{UX_(nOa%pn&A^C6i-k@=o_K*mmp5U#R6;-Wl z-M2hb5dmXqR@-I3p3)vCkF~NYEnd>mKPzv71(m#?eyA0;=Z4GIH>U+;m#J_TbtrL% z5&BT0*nif3sFsA^6~@fph8iW87Al|dv?N`RG%m%Mt3|&ZqJ7s$)3of7tm(_Ux#Eq< z#x}Wkc#FK)SwpSY1!&{_5{lC{{AOnw`W{WojejL)5{|El92(%8*sup1&zY7Gl;Obp znrtAJnc3RfMOerJ4LMSgx!+$dedM|CYDroOEJx1}zn} z%M%l-X_@1699xH9`6j8VYW|`BU5$mg^v(Hb$J01Xe~-*S zPtfMFC*p^(7a|mRL-G<)dZ)VYD+(ud2(0ysZ%_t zRZbX6)9tq{CyOsFs!idj?P#u|VHbs?kM_)~2fGL>MN3E8a`C~jt0LY@)P`y80W=X31~*YmBny-&MXRYc$2)vR9R_BP1kF48!`xI>P3Yor^{m0-?H33a0VQXs* zs#wkATvfUm*J9W3PXY5+YAwAOQXT$VJQ8FkrehT2T^@_*+@Akx573jPHfx6a-hIbB*@TTV0Cx*4s^FRY97%Vr*C9VcplKoG~c9F1KDQW8YefdAt?{#BWe+JOD>P+ zkeB7ra>%~07KQ5#f?;oKeRP;6lftfU>9@A#xcpmsBNyTYa{2+DD!{a#h3Rg7XoOMU z-(&ngHa@PbnXC4zF9}XdS*NNNWmTyK$BCEhF}(le`ZL)j!KY+6+OIe>&L3Uc1acxuD*X;yGGIIOdmI9M!@Hz!t zjzuT8A~}zJi$2#QsY0%DKPF9dW?mMXF`n^JNyP_xuAsR)aKBjbmpohXrg>@|5Z=3G zD$KR5?p8*oZrEUiSK6oYdN{`7YI~$tedtv4T!%3KNXV^^aS1DV`}Cqe;B&(MzXfo*Fmgi zyyG8!Hsf8oa{_IXzp?E?y#IuG?Bm@}QvIS2=##AI+)r`|c|XUU?|t~YIh!{A6Vu3r z3A6%$&c1J_DRH|bke1(86{_l=IWa@^dg;+XcawObPcO9^4+8Y&EcPBcH8djU)Vk$x z#vI-J|E0y(-^lsn3SAs#<8?X%Ac0z;{5%Rn@R@%i2jtM5>hRr&B@|OuV+6wRela12 zOfYU&4)*nKFxlJy=(Mv4Z?L8xpcDW152>=}>q#oF3MS2f2PXGiaY?E6b?>W%fT<0? zVk~M)buH>xT|~HI0TFu$Mfc;Xuc!Uk!PvL2^wbCik#+W0a3O22mr>3-gfDZBo@Qqd zKCF(x&c`HF_p>csV4Mv`1H!?R0>ad!K-1}n*byrb1t!>;LdSKZ;QqC7aJiKQtf)M- zSX1(39*U@M?+S~k$s!YXQb#qX-rm0@SRS0%aV~FBDpjGAqOH_!j~g+ZLj;eo9P4{l zfzi|ZX11`N$3XLq>#r+ zjj513B4@-EtR(@EzNM5NUa?}iRuxa|nc#kcH^MWG%j}9re}2O24m;p4m%F6AOoltl zr{7#%xoH}p%xgU>>N^l!(t#r9T1poZFeyv%xL0__nl2NpQ;Dkv~a(^(f- z0~C4B>iYbZTVz7DkML$=A}IyflcwhLVcs2C@#--8l3%N}P;^M{=hODCMJJRO zh%~rp;?464;jQYQ)C^}gUQrkMueINbJgyB=Z9ZL=FpD7b5D762Ff#|wP}u8-%V#88 zl58^ja?(}gk$d1i5&~WWeO;L=e>A8W^Tqn#LA$%F_w{c9cg_K1t3&zT{&sU^T7UzO zRw%=O(485IG=dA~-?iltB#Ut_)25z1R=iv)M2#MH@|PDUFl}(3^O>=+`4t2UU0dmT zYeJvQ?o%{NxO5(2Sr`xXKn6&E@I@(M9D6R(8vJNM zoN-F3d{Z^cY-N_)sbu)vRF{7}Ml8AZ_o|QOtiY0B!HqM!8iOe;4nF38y0}^XZSQGj z_&K%V!eI5c&Q{kXMl&>h$mQh-+uFtq%$4#L7A1e0^Fx`xJJd5pJ8p6I0KY~IbQV%`u`%B3#GjHMdX4!q(UcEZN$5*nQG=I?2u`z z@m0EIv5f%VObA_Ia)x&L72J*+H@<9I$~SzQSod#Fd-VMpn1zo`CRqFf#=PJ}1q;21 zgtPhjKm)VuHt!u&X$qPV@7$C#)Ayqba=Jn6ihML5+njuGUN(pajB4Qa0`-ITmrQ@G z*FCmYN2g39r&5RV+BiB{eVEKTXv@?vq*E#jEH{9ZsQCu9eUb#Bu@)cO9XqyZ<(adl z!id%MGXy-vT4ib0S2Q>G3K&or8r(`YMr;7{>04IwdcDlV@w*Q|k@0hk0{z zX%}#$`1Gc>4I>QOj?*Oa@v0=-bgbSfrTP`t=pH*pJwm>8K^v_qq5}wW8R-Lo?8<=~}_h!T*Xaqshk9U6Smv56&3fjJu zksyTFBxHA?0in0)lDtU=*6$a)KVS})^JRcl=jMOc-$s5%LUE|xU>X&A+|_Gld|q?ko{HiDU%sC zsCSl)I*<(`P>kKPvuq`El3b5E@#$eU z-(d~f)G9Z@F*x~0yL31)^pf>dMF!kAYCIwB9KBU*UkXrP z@PD$@l#ngOu#2NN_DG}Ihn`Ep%`m(>)-^WbTP+4;1RikJ1d zW5hr05?!jJnT1NT!_cBGIU_2ql}F4y#Niul;X-aY`fu74)+g(!2fuOmL;FgOWq9^) z>b(^}q%4chO#$&fju;?ths&zome zy=eGFy&kspT2-*K>eah{a;Ocp&#WURH84C;4Skv{Q-t(uzkupbESkx5NU~><<8=pp zMJ0LMBZWWbH9YEDij^rHf*MF+l=AzcVh%lcK~GX|Mv{pw5CSPHyM zOiAsW2o3fhn`t#KwMVYqao5gF)z9xBY#H-5gaSjk!Z(?*5pT2#+4Z2EbF7ci3Kr6S zz20#$nln6^v^lE%5ThrjhF(d=?*>QokDmmO3zI3 z(S!^TjPJ20@O$}k{G)Ib@g1Mlh&_W|zCUPDuAvL5Q?p%h==`w%FB7;{#6 zM;e}g@V*(-y`F{Pe;H@8^!0-dSo_p(Z$j=_H0nF|gA4v>@r(?Sbg`Y`;JP8owy%i^ zguGwydYCJbXt&l6R5?UWdN+m%*B4iz6~*jDwt~`!LvlF-NWTPV8ZB}#Q_cQdA^&Nu zrEy*vRTtiQ6+;^*ZVhm>`Ud(~>4#f85sJ@oFNqPxBo1LGo_3t3B3u&T<#M65LWmXL za4h}HX_*NbN6SfQB8>U^h|D_u6D?SQV`q`XJDx;TSxp{_K$D)RvDY9`IfGgDF>8(U zB~A$xlBquLSWvan)B0(Hsx-3i^Z4WmYIcOEvzl^lSwbJh!h@=p=U343y+Ps9|GUlB zcLwK;wl+%!$_hRsKWI76=9G~?Br<*PTb`QLVNKEX7w)cyiq^(b%9u6St~j=&{hkLT z;mMKAua0nz<&uM8Pp+nZ|0r&dcKJsKXT|e$h0LM2`!ML0WSIn!-~~s^!s!w;t<1F1&Rd2JFfN(^>HY6fBTG@RC?f5M zh&{ioIyoplz@R*6j&GREY2dssZ`N#J_H=m(3CWy3)(qUR<)#hu>4um%;9}NF`JRW- zGAB%EnqPu>xuAn4=eKarw4eTGxKYBIaBGL4CR;68)bN_sQF+A?@I{@dS4(9zzOe6c z+A`_0IDMMNV5CR+2d&Gisq8U-33}U8>$-}@wod)uuN`~O1@C=hl=l{lw|bE0jlW4$ z{ygODb!gh>JD<14TL>^FB6`0nF+$;qbkcq+{#^f0Z1;fmS7gZqCW4MIZPB-6Sz}~H z<=>XctT1NNe=ErE=-k#=lZX5U!P+e0`v~#^)~^?n#`^bY8Xb9;#pjxC7N>uJruGqW z*gvu5Qohw;Zl47eZ0P`nG{Lgs*I0k4&4~Xd17#(u}FN@!T;!X zG<^QDnZklr1x=U#bV=59iK~ai<(t>qsSE7D&gaxSRoIQ0J|PNZf-!@!qazmG9vNjQ z8?d^A1J#}Z!%$K2RrD03E{@WytwK{?*1RF6M%ueB{A@^&(Ru4BxOcm{Cixhr@d>6< z;Bu-}i!safaLDvzAu6mR^B++KxEP}?0gy57wdiC zSw5l4JY6vLK(e3|I^p#Y(WYdBubBw3YI!N;anXzX;9Nz%te~Sw= z{#{za#B*I`=KA!U-e7eOdYz@d>Ek)OhNZs>r}_ax*ttodlCgr0h?h^?CgN+sk#C=U z0MEAMmgjrB)y6rBLsQycIM-`ZunJ@!-d;s0bW}s0m^()cm&>+ZQ;uwznWYW^G1t#ctllh7;6q%NfO$?v zGC7;>i}U?^x~_Jp`3WQXcl&RShtojruWV}RoWqEJdU)*GY}xQ^>0q@zq{;SE{KA&}gjr(FA=Y9&-y-!JY(IgklET3|3?hLi{&x-CE)-j&R{oLup|gd_K_qj@Eno zjK@>;n0Cg)B~_<$uwNq%0{&XBaZcbAY!uVFqEv;xkhEtDTQdOGHe?$6c;Z`z7as)6 zXw;c<*OTIhrWP6NbSS`OHg59x!pM({Q8ac`lePpE3z}0n^$#d~Xu!c)j^FRRg>Xo0 z0K^gCitc+zn_dE-0$Am;8PNb%e0D8d_vm5oM+UiN=!({~ATn@{n3AZ(KuiH)08lgX z%yUF6P15A!8_G+uX-B;MZ38CePdn`dS;SsvfgHm+Q-|`A`RA}qC8%Zvj1SNB)hk|D z(UIViOW4jh&FJK$<;5=S$NPM=N)oB6>0|WvJHd|HKlNi(=S=@ThO$dW3q0VxQD-zq zm9Q=|#~DzZ8vs%Fw7zI?iqYT60ATl@Cp*6eQ8@f!#ewk>N8V zpql))#sx34P2u1d26PKXE+~wmj1h2I4Hz%HJmC%6^$3qDOEXpyJJABF&2d`JSE_hKF{jvRGT(4f2 zpTDfUP9~R5jtJ}cG*$wJz5sI&V{GLRZ#H3M-Vb?gKp0ORZqeUA67?7**%Ewyhe-)_ zW>a5E(?4m(T$nWJroB5q}}lrCu6R8BucsHN|NnNv)cuMVpbIy9aLX2X0tWm3h?%R|ckrrjrZYd%EX&C{1l*z0 z*dx#Yt&})YSjB4Z^aq`PxjB~02Y-FY>*~!*t`ORbs^45m#?>#cKFM8Syugyyn+!ru%0nr!%l+gE+ z#u7u%+OZ9I_IzMdSx;ZW%hZ&+>VN$l@7nHI<0Li=O=k$?)e?mq?Ut1Hu~WHFUIhP& zz=sagwrS&MkbKd=>*7n1`r*&SDvJ*3LuVgbKWXIvgW+xLe>Exi*pB1N1{D8kkdFk? z@1QK|a6BsVstDS{`7u3pN@ri&n#0!gK|cH|88o%A)9E|v^8iB~NMV5bdw>#O#mNqL z#R1tQBUQk};_B{^#K`wnPV@ccTYJp|7th<+;yrQBw^(4(n7VZz!LTsr$5NzC7JXnI z%*1sv&^of^7xg{OU+C<=4(?n@SiW4Q6=;68eZmH}$Mh$q0Z^Fs?vxZ>y=JpWUCw5{ zW0@YDeS$k>my>T;`iOZl!}=ryKk97jlG(ZfIUYY~z?(sakp~f7%>&P* zQ`2-w)}+Hj{k4mr`4LUzpG})~F5eP-@xYzwX4>^FHwJ~wcgdQY2T@xluU~)N1J<}C zINJQX)({;!0*a)Ayz7K;|5&q?nYnp&67TTu&4S4tQDu)uMZTR1ESk}zJceQ#j7od? ze^IlN?0yJ%b>_^P`R6pPxPJfc1v)Je!pw>F>_wYY2x2#B>*IM~G0EQ$k7_pVGE|RA z;v~GHJm6P*`&Llt3oG4-MkD6yqB^&CHi?lMUnYA}qT#>IU9SbdNH#xmX%kjW$;s!_ z#CMV^>hL(i1|Ej}W(Nz+*g6|4c~$POF+Q?PSU3gJ`;-Hebax{lliqw_Vy*t%*erWA z#`mU)%h;hsyT56qca9F>82gDRa%$(i2#SpP}=tks}q0Q zCvdFu$-cLu@&l?@PS*}QTPucULssn;J6BsI^*G-&ht~kO001jKCxfppvfJe9;dHxh zEtbwRpQn3cRd!{+S4%ozSr<2`M7%)EoKqkpzz=gU=GnUSs6rGKevFD@Rev5br6P0c znu8(<)NEj@V2o~gayBYPgN2zSd5g=)Swj1(1!^KycJE^GOC+v|ERcu`3`6C|`t%Hb zEWU6^v3@2hic9PgL93v`k1^N}n4ooFEUXyF5^7gUdS_C&wVciZ&zG{pTFd;ZTJfjn zD&x-3Ey?7QpjoM{X56BtoEynlj92v22bg(zu+3z#T1Q^E|K*U&@c)~wCvxWuECRJx7^N}lncjlkuHB5 zO0&O`dF-}2fF{iNz|Q{hm7u@iSFMyvh*rKpSY+uS&L`T&A`{gOTMT2ynZ`{2v> zO1ucFK1VGWZT+HgRH7ePhQ#xO*Vj;2uTX=@9KUY7@9K?B552ngbWe0iqEs)VJ)V?a z8PR*)l-eJdt>;4e`>(_Jx-*qcL78Rb<_&V4mT?@AcvNv0I2Vk&OsU>bH+s=5!-K6( zt&L?kdAWVDb1E^OJIk?b?kAUT9WMue->lW*MZuUWB!-ILaU(*0dRqFQA}Xu)s2dg~ zv6%n4J-`MXL=}rtEw#r5S=zhbWGj^_VUq6mdf&q*WTcL|Wj9epi9GZAM4iftgc$$u z2>PJ{j&Qn(ok_qfrYa!mU(mW!yx(jSN}L0-mLBUlI$4yn3+l?kLX7ww_k>LaJ-g_hX_thjMUXJVc-q%4tjvj4 zn2{(vks+}-S2%>NIC4UAzokCPyrheDDEh1O@rkwDOu1n}Rj_S^A9Bix_eiF4jn)!{ zg;^wsXTkAZVcLcy#N$UQx)s}Jl>cKe&i84_;0~3dtFNmJ~f3=BB;3NP&Lfg zSVQgEFQ1P2Eu8H$|M*6?l>XDG`UIPe291OdwcWdGN&(T>3yPrO33W|6k)W!tgLFJE z7oYxd3tyRbgH-x~NjmE5xF^6JXLtFvAHj-#>=_eTPi4h9M67)8I`r~1y?f-KvTQ6J z5d6w;+YdrvsP5&(NOnw2+EKUq2zm5SSI@&7US#nD(o_kOdasjMEJxFO2M$-5>slzW z*rti&kjXVAXQw>lw^a7ObHO7570PhxFmV+;W83TMRj`r=ng}t|237VP;xVP-`UILg z8mTse2V@b+eksBVVP@N|nRNSi=Gh6t^qti?fHnN3zIstPs@T;|h^Y~on`fhxme`5$xir&DjZq8tC=h|5AxAW5(w||MIT|C+0l9+{EQL*wLDw>51t8;&+ zJm@o;YE~p6rBjFY$|7lhkX)>}Td)Hf%S0KLOgPfvTTXb+92xQ285KZas;ViD2Io7O z*{Z1sAI1_IF1PEwxMtQiL~)vU&`bD%^SIIb`HQ~Kw#wS5pm=o~Z3+FxaT5}2qC;e> zYs{HqG+p_`OXlV7Mr;=;d81HB1^r*O4!II6JFxh}^%1YztmDtz?YM_o)CoR(Jliba zAy@_J`Y0Bv^B#fqTHjc}jCa?*nksDHn?UCczu&&d;|tK{#%AD@QFcy!lVfq;imh8v z!s8KYA1T6)z`E?#!&j?DYy-2rt{xcE-aX~6#_x;(n*|C9*LZnQD;qe?Aor?TP-UUx ztgs;w>|A#)_v=}(OBM_@0bQxaGl{UhXQTz#N#%SBCQhl8n=SVTxJc<8#%^q3H|ONe zOK+!(wcxi$t6b<3igD;=B{Wxj_|55U%bbA1Ncv&K_~2eCd$_bIE_&2IC9YVk?{7=1 zfgvNWz4srPF-8zwK4>U>MOybKnEA&X@5Q?(PB7?W4wF=>YSR($2Cnuya<}ec9kczs zZ!Q&X3acNnRM3uqYT%r$*;RBw>5%Z^zXN)Q+KTVHVeg`Tz0X&Cy`z$OWRl`PK48mK z_D8k9{Vt7-d{F7C)VMP>+Jn>Rd@Y*P`@s{g69WXSHBJ-38f-cJB`!4TB%p?Oy^{U% z${*kxD~vHX0;HIJQqh5JIF)imC^GbuQwbKMGZ6e!F0fe@oCEt`c`N(;g;as%sFBfn zFxsle&p`nKM$7a(QE^dbS@UtVVdK{RA}wU*bp>-r^hSOeu6K!LPXz_!&)?PrK|a8| zjt*^$##<_16}=I$ZI!y|18l%xb!$RV@o3el`C6ana?b;KRx%4N!$$vfbI^SeCdlZ# zE~E4SRW}jr%bmMV7&>x3`$OJg$hgE1_2-p z2eQ0LFgxV=A3s;1tR38f*!{{+;>^{^nI{&0dYi2QSrYKuvcYPG&2cpD;yno!&+|je z{$LVs5)f5QlXXDk;W}YF6$ANbO%m)5x*l4Vb=`tgR6p=AuOM-NV}l$sxNR203{ssy zWWoLr#@sIFxgG`HnCQ_{xlGx)Mu z{r#RIa2w&u=N=VmLEWive8q}H&^9;6t&PNv-2%yobT?CN8@3NG^uR_f0nu#69(0vO zdbW;GPXpkvlDH1llekvy?+(siY^vj>x!QsO$BwVxDm@YeAn2p_(E94xZ=%G^BVC}7 z=$9`eU?hi!J?$KIvKO5<0r98w#O$h2-zP3VG>4P?J@Su5%>?Pr2kt3d@{}8caB=$L z1HDv@6)tB6AZQR>wvrLFKg`M=sq_j^oPSIf@@Or=f~S(sE3hL6D@izDas&tYy`>sT zB?8Y!f+qaUUHlDRCjv<@T4N5fPL&a zj5TM2{q4-ots{*oWvB&&d4Fo>JLk24^)7fI@N&NEXMDU*q+;CbV1IK3bsnUM99360 zK^fL@Ir%mof=xBU&Z$DkUHKAhNuIn*EZ#Vn?y9J!TK`Eb(e2!(RI*r9MOUh0*_EVl zh>+>dt$^Q#d)!fz497vZSxGgnQEC{a;_QoM6o|~hoDn%IOU!cdC-}e1tZ@)O?<3Fo zc_>544-kkW9Y6}djYI*P-7WH&sOOLj+8H!PV|L$1qd{C8noP<#K{Egd4&@emE5(1> zn{7=rHg=KJB2J0m_4bC;NJsPc#ziuIaAJ((+T|Q!}h&s0WD8FSiNu+>W&yZ zbL2^Z?W!kE~ox3WeO1>N_YuKOA>Goc4AH)1o*|3DQ?dJA-e~<0eE9!6Qj& z(sH{ozm(4n#-=QwyEn`NZ^81heDbGgBc`tcY+G4j_+`vaEK7CUuaAYF8&Dvq z|D)&{x*rI@+B7Cqy9QqQ8fPV^Ow3IbH)TqM z>)@z_Zl`E!$!IZc;y8JGz-#sd49Wt@?YlR&o5yeC(LMTP@9{IWWyb&i+p%U6j0ljT zdZhN3PQ=A)s||5-1~X#*Vq+cKf|8IQl@13-xwKQ$+%HPTHf#>RjFVl`VE60Lr&5af z=UE?w6w;B^5MWl(p{x4R}55PsF@`MJ^c!2Hhw~cVl zW;FXV&S!_{X?X{RDLHwB!|n%hZXY;3Rsib*t0BE0TL>0}XI7Ju=_&mG++1_OwKi8O zl2KZr8NZAmtsl!yPb$?;fOW58AxVSAEtOAXDNo-h=|-LpgF%)WUXZ(>jN@arQMvLo zSlP8eIcutWw6a3I$x@RDM9lI?mSa8`0_o- zUfo}gEQL{K7mF;uzl{Dv?YEivh3z+VIjB6|HWqtQme{`biIjqehQ+QGQFDUPZ*RC& zWqX)n2fNj*rmZPzu;3pT z=|XX=$SzUIvi{(9Ty%kcQs0cEoDBmO%|T>hmxnu?R6WYgcxO96Ho2PR-nVWv8^P2O zD1X-~V^uLc*s3LeeS>eU({Pv!{CSBYOrAM#t?c!FMi;q(BOO~z^<_Q4Zbd&@`Z9g- zh{AhE@#2XzSgVkcp;ID{FivywFl8%2L4niiBaMt(DNbZzG1Rt z8gbJ6?Kb1R(MYS46~HQIHBJVi^3f7}=R72Z0~ZnLCuwb^8fI+V$lZ*LKN=a!aFOdT z*wq+{rG@58lZ`ZS6&M#zF_~iHo4$7&`Ce$|5*KOc_#4KfMh!8_^na|;9`HxrNLVK` zV0*nHsybQ0xk!7dAt=#agsD;MlK-_FDZ~rhw*}i@c*)scDRtXbA5LRnxb>7Zeq!|e z$_lFQ#|dfP zt2!~c!sNFB(tt#~1Z+^a@#2~#yeI?-S5+m$Ec?KO@h7H~SB5 z(*9VND881e|CWP!v8-QR6I2WhV*im>!i91&&4OSUgtmy1I3~*!55`_JNtL~3L5YV? z(GvNXcszU|JVFzjW*4MV4DPynVqV^)s?>f(tK%dKQI7`S6zvGW7wpdM=td$JZh;Dq z|M~mh?agdrFSCS!>Rl3GOiSp3ju|z*#Uja_P?Y-;>=URFh%2k{rt!GSnplWmDZFMj zyUr-P)PK*QURvEd*?q3{koZ*b_%iRG4n30-`{Zxu&`?)B2Ht{Bo+vBO=ld#ga4cko zXr;ZJ?@t0~jO6w0lRk6dlttW<=X9Yeuk&ROvDROkM53iYy{6@3D^VUJ8T-|Cb(fbm zV3PXsOJ*+a#1GB>{mFRGE%&ZVX&~c*OuJ_LwBfYCkSYaJrDvd1p$XpZYtrx%KZ;9C zLufNkNckYPF3R&i&IG~Y$Hj6q-+Q|b!^(yy|CuzVc%H4MuE+oON6-_Powpl=*J*yr zk;JL?`^;UagQ?a-WnwsFVZ@aCm{rmaO!HEWpiisE*btF{{{$}R2qCu&GSFlTB)ID@ z$ajmimY8IlKTD2(v(>M|HU6$qNz+ckxZ5-jfVkdO?*U4ZjU+FI#?Eg;vSsPVGkZZY;?%O|S6eHhP#=#%> z*wl-LHQ$Yj48nf+w-vy7;lGkc?y!n_Jlsb9az3Y|6sT1iB-xAULQr* z1yUchA7I~|#e5s1Z4Zv^?LZ;-GXYEp@^4plwJxrgM7Fe324{HFvg%6SOtI3W*g*+i ziTIV}9r)D~(?WeI)(qhyqib}lV-yst+sH5`oV;Smq>_|4M#M42siB{=MT(oWb8jZa zR!u9z10l*9ctC*EaN|t&2JOd4F0UMfRhBL4WM#QPhIef(iz}H7lY{Lf88jfi-g0$1 zFFPvgQdTGZJCIy+U7+lBIV}9X^WHw?z@vq8Q@nP@%nlbQp^Q^j-KNd^I?1r8b zyyA6uJ`O?C1k)=i=0GfG`>L!zf-%=ZKQ`a6`89f6bd9;m#-x1Tc9~wv03?6fCM2m zDw;grCpEBi%32Bvr8N=iJ}|OWOnw?Su)!^4MVB%)I|N~Z`1pbutdoBOuf{{oM~O1F zowRGPkS=deZhS7zoCp8B$-iK}t4|O+I}JW#pG{^*B+O5dEp_(UknH|RRI=_1ymX$v ztb5yM#K95AKXwb9{&S|*i8C54T`PsHn?G2RVE4B1{@>q=B+N(Sw^y;+EqeBzzUQd# zL+PQepCeFG%?Q2>)DZu&zQ^vpXPvp$FYr8FHOvtq48;t35Z4Qp>LhvRS>NdfkW4a<&&N_0r+D=;b6|N)g{f%F)1AXF%iKSAILCSVrmp_FP0E)J+)38B_#2 z&8&t7Fc`^J_S{`#gV{i=P)`pPhTVe#r&tn@-*x7f>f zNep#*hzNX$faygSgnsdRk4Vpn5n!XmVW0T!cd)6JSC%%vHGp&4|k>U^J7rv~6; z6`LEgT(RTcnOyVkc^O81NvWHTQ0i28%lf>u%RBUIPirKhKfjqw1a6a0pqQ}c`)(*U zL=1hFfrvYg)y3&s{-3`aTODHuB0Odr+-p!}C2;-IC`4jNa(0(9Hi0}vJlP9_OlRi? ziOKIF3AvZNY_B9)mHfa-HSHkS^(N{Uc&79@EAw$hK_M`r`uRvy77{go^_XKpEXz;F zA~~V5cH*^S{o_Y6)bBt*K~WL5>%+?t`Rg1xu=%YFfBj;F5k1NG6aA;Ff;_mCG0J-u zk``D>_?8RGLA5kM;>*_W*IN0tFXiB#!riTYWXq3JKnD#Va5y z=pbW#fB3kmG@jApmBy@3(w$$taA~0ne>Y}7+F&RtI85nf+V64;*7%qpL~AGB@Sc99 ze+Ox;>zM@wN0OYnS={&3dN>vH6|>&Y$ylqE)^4qH?qzNf0hEd08r znIAC0#%_A(2AXSb#+`3cEO!#1PT2Zj{#V$OKf0Z7Ch*O<_Ig@ir9Hqu9JCqFtq(^j z8~@YMJp|n4Mtndqj=|3U$~x9DgBWw+SWL5HIIE^&lV_?Jw#$&K51ZHMa{?7Ps=Q!| zLQjWDwXp0)@RLd>AMMl(ud16P*LOj&cGn0`HK$r!vFyqYZu$!?t7LUuzZcZ^Edv2Cyjv?M_c;lO1gq=BFT`# zsAe3M<`L&)(e!@c0^52eh)xkPw($1GnmFW#pX;-}|0;EeXTC(@%}%DUxo=82MW`k%m~pzWJYefZYAP6@Rn7$nP1YwwLG z9OcU7Mu%kM8XVVgpYW?68|J6v*C-Ui3(mk$aMuqcC4sRB*Lx1g7ZGU)YKq7jS*l5J zqK%<6zS)Pf4sm`pK&1c5$p3Ot=I`g_lQiS+G&Wa4%l1&*m_UJ8B}WuEIa&M%_4{dN z8~kYF9WQ0}e=D03KhBlX96Q1Su;mvJ>dw8zozZUwKaawMUnr`yO zc^!m`>`MX!g#;3I5+ShnUR?UVHWR=n*wHx&ts|S%kZ*Zisd_%>N>p)66Ga%m{g^O* zcgOR?I&bDt9`~I|{x_;(Wp9!c{U2;UZ61+mDcpE90cgK=2k2qOa0oKIF*FaMfuR|| z>4>?KNX;L~JhR9%H+>h;+p4N$(Y?1-XdrNGK}2S=C6jwJ4)b>izGn9QE+p>#vw)wc z|JmB(`}v;;5H?4tRczf7X8Aw>)|PRw-artf2*IN|8beTlA~$t z|NA)bKvRp6!`L|nu)P2k)m8y-khpfxhD^4|7nA`o0WWM^W)#X$!{GqvZW~b}UKX=B zMc$%a`UHcx9c5J%Sv1wq!nqZNQRW%LNEyEFF6&u%rjAuOhk7c$_@-$r@+eA_dHV0p zJj*r`C)+?Li_yJG!0cEUgJQOm`D||=V8DCXC8%|>QBxe7(HF|O1p2?{s zhCa`BjHRHsDQr5g(E@XZ%gg>ELmO*zG7~~ z<~zE`-wx+|BO8%_{pb7qz!@LNBNXQKx_5E>uXm$jJRvZYh^QWA{vcSpLPaMPpB)E? zX)AG2b@HJQnkD7N>8s;1bEOj=#W(iialy~peAyre!)NxEov*Az4Ot&tc%O~ge-@EpY%i198$BsJH&E|VzWkj>x zc)_SXEw{?kd-kFU`VR%5UB+FGw*LQSNX-Tfe_q^$J+m43j1A$p~_Wd7%>WRsFWkq|G@V_2eoZ6_iG|VSv z!~9o{u<|Ko$Yi_SMIykH(@rJ%?4-42PW|D5wycgRs95E8C_!ob`ud#vEOaBE(l`>= zdplz6U@K_`LbEEjms@=`zwIz2X>%#trEf)D0Mi#P2jlW1Ql51Pvkn+jN4l(FWi_p` zHzWV|Lg?=SNH>1&j{{&1eBbi@2w2C2O79zuc?90_Re&F)?4o zYK`wt*Y+~A*l&D#xN+y!Bhs{*`Tt&hkAwOyt-=GXXI~#JgZ*DmkX>D~vp)Y~5DA31 z+*Mn8f37w5JpEIdnR|m40sfCm=95w>*Ql_#f-riGt}5twfKg&%%2zM{Vm-qjF3~UMuvJTlVR^-keM4flcn=+0yUe*h z-Mn60Gi$meaf-xan6U|Srsv^!v+Y+ca~#+SemnbQV2FxHm*WG|yBwMQgTf%d+F2F< zV40Z-eftz{_^@;=cw?KUFj$9{Od0F@sn`e@AEJXU$6ci(P`uDSjx%GI?>$m)oq$ol zjcB}eHqdOJ&$Cq>%v7(CswC4oCNbrr*ZA)Ak>BMuBdu-+4-jG2{9ilFz1J=m)x%$( z73*mULN`;CeU$RP=JH#%dnlTWac}@*TPuqjZBIPFjVk25;2TMEf7Q^JO@J?`UF&sa zaG6#II$bXt>B7nPW!X7vWtz@)`NBNjotgOwzTi7qwq(kGNm6_Pe^()l&0C`;6icJW z;DZ5#ONF)q`j|$Geaoa|Pj#=fJ+}E7cMJ^$nAl1gKBio3(~m|d9pUN@i*hD=G(i-H z+qz)K;>o!P%qKhC5YKOo5h_`^NA`wtG(qA)q9xff=bH`RWY=isa0|D`iV%9PHvENe zD`Ssr`GRxu@c5m}7kHn4Pa#{q<#{r)7+&RyK7IstYn)ui9yQ5FdTDblWvVvPllgg zTp1gCxW{sy_4t;~oakrB>+HRc7jvx-G|-sO3(;>5>Qnwq8%AoT{vO-F8}ivn>gX`k zpvW(39wAyKUGg)#NMC3DQ^vvPTjTNxf;B&5)*;s$FWt$*mF&K9C|NGO>as=f6aWE`rZY2U_2q z`qY&T_C+4G3D&wdewjzu96E0NH?rt(4l2D|HO~eor#(*KjXqw-RkynW^@qu#jdad( z7prF(OCol-{C8&yB*G4vd1;W4)U7GsNIJB<_}wTvG%Bg{HjgQnqhtw&O*t*Fu(C5< z5WU&D(W^7WO(X4s=-)p#Hl?U|X+^Ur+5N*got?fg)UPcs@lJ7N0~QJXNtYm^oWS`H zNlSsI{a42)`ntz~>1+PRv?qe-3fov|X3%ilk`%P`_hi-gB}BG=F@>lmX}ct(OiOB?|55bGf( zwzZhA3!hYir?o|~2@Mg=TiE0vAIW>@2ekIRpX382mc3&+MTq2pu=$S}hHf|DANgx% z)(`)9Y8#vj+8)n0t4@SGLF-L?ClsMskv~NO3^+(8Py&yV5B~7QxDp+ZXfA=0bizmd zoecmM#BwHZFWh{Cd+P0#)&^+;zjPxGSu#%1%zik#Ys*=~gVor>H2J6l&NkB)r823H-1`IK(AAOE8-5 zN4;IA?e3G8%TfMa*XJu)>sPqm_oiJ1L+iLQjD0K|Ke=a2euHE?BKjvp)Z&FjC!VoN z-jwV20fUJ;XicL3wv{?s&M4Nx(LDwH5;?bhww>R_e*a=`E$xNL#I)vr##UwdZR-y0v;-;Fe&gLC9iJH+CNqJwff0eWIF=U6o_6+h(tu@BG9(-B01Iw+vhI^q8 zR5m5{GJhj_}Qlu1YCTU9{#c!Wm}B-lTN0JB;_w*%C=$j^5{iCq#DDAGba8GghidpwZkr?GmTt7d@f?0Q)j}6e5}%bbUSVcH;JN1A|oS)rGXT z8CvA1D9p!zY~#%r90fwg3$wm=8vGq=gEkau>evYF_0g1j_kVV)vHXM=D~Ww}H@+4A zP8((R>@oExmqg-xt%TQi`FbZJevTf@P&rFZL4rJTB@zwxsx@qUxv}2xzT7|1Idi6g zIu(J@CbYyb)uM!Qj}k%ssA`|Pe9^2k4i#{DI|(iN_hgKtO@8}lhyC|x+H~HKRP_^J z9h?$41r#8!xe9L<+$uhuqIww#5CL42GAVM=XB1~d8xe{r3^hE0xNqk4Odp>!(H)pi&fS@r@wKwX>-315 zjF1`q>$~}(?62p+KhBt#{NmYD2s*GTmGT=OxoWr)d0{aOU>>JW3Z_ZF^Dg1F22K`)m3EC z{lDGTY)3}FKCbA0sNumJB2&G^`XC?YflEOSy>#XQ+?VYS{m7?(7y@8|L8(Z9F?QyrX*Wrxbc0+o zbXlp#S5dSK-it$^s?A4}osiz+^i$52=T>vBz`<&>e6naMhjBNfP-M5SJNi|WX!%B( z-?>mg9TFh?q^FZuRsuJ_%W>*KxkycB-qI=L%uX?^A+=|;-8DXij+s2*kPyG~Nb!tL zwxwthKA&wav+i#CWn|l5S5ZPY><<3q9=`D)Ao* zHwn5R(3)&EsnkhU-w{x0!lJitlUJxn|7ytK$6{Qh5so=s|KrcfaH+tY6}GkWrhAuR zXXy@)@D7prJh#`r)7f|U7^n2k&ZgtiMUWW$(0O>LubFmwPH_gQx{;lb8mjK7(T*LIF#IDVC z1AhN)G$QMBzcd8H(f8}~N24T}FggVkMA}uX^KjWTkAd_^yMur;Cm{HLv z&or5ZAN<678RKF^`E`fXtpU~0ka8SDB_3jJI6VfYUd38^)fAcUy<43{7Nrw7cIuuN zqZ2Ko&ns4xP6nd$bgH5pSp7<|%f)7?k*O$zw$G6%xYwyh-aVAMgLKYYh+3B1#E1eG z764~WKUC&sd#$nO?xRBjxn&de1j~TuMxB4__{tk;P37c+k_`WYev3_NL-T)PvE#C` z`1-BK-+v=H!p`0Kv)xlzjch5Z5C4v}c2S)>lXGwMZT)wp`$X0tuFb~=9E$B$5h%FdqF@>-(uHrp#YbGxXYsn@}+W8+kF>y!0oZiFB z9t-Ccn@ygH0^Z8~jqjMduN9-S=pF&1eOl~$o_ zz`f_$r6)x^UE==70;TijFAStNgt%sZk`ZghaBCJW)`*)_5A_UrReJruhhb#HtScbC z_C90U(tB`s5q)yFKze?D=k!Uhy4=H-ZaYd|k@FsgIW zEzy`j`QKwbd%r5!7jz>%bZ#{Piv(uH`QgO~*Ki2-Ka@o^0<8+h?;RyxNIS6Ko1M2` zQ-PB|zTu{|=7$TFz)Jo7x)qr{*FBL!CuYiWYpT~G=~1;y@F;c9Sgt)?i%lM0^X z&SeMjZBYf%_Q_UU%A=Cs6K^}s#EYJAXv;f4Ya(6=W#-UMO>dj~S<@OQzzpTNAj& z`j>Y6LyM!p%7%#H6O;pfdHMru`@Zq54OHlrye>74gIc4X{g)v|4AqJ-Qj{3tiu)8y z*Lionm-O`vHU4>CR6j@BU4(vKUT&lsWxW)m&RVS_FMMZf^M6^=)KhE==UR1o;afRG zZqk0^u4(swwPb)6)tt39{e?0g{v6i2E>#6aGz+|;DiBjc29|L!TwNKRy)1Y`=I59|NLE~Gwv z&@BTyAx2+rnwyF}ytul?VHoN2ArWm<-<5`3+V%5kio8&jFWq2LO}{C*ymq_<=)*VF z#H>``vA<+nV97gcF4!XY?G3hw9(ITHpP6US7YvWsK(HJf(T zq`g9>8_8y>z{sCJt8vdY%Bhgw#ZPm0O>jgeTWB}E=Iq16o*v>J%1B)Pw#oJhsHvWU zqTm@>_Kn=^w}ADmK26G4odU*Zp@ivX@d!2_2&BFjrGO_y^qGQo)*-_>IV zfO?}Nv2@9v+l~|cle8yX7Sg5dFHORbH>d)~vU^GeVOC4a_`dY&J>-ii@))(xWQ-*i zLvN3#4Y(`go^P5ZbDRC{Dvnm5lY#foUty)mKPYs%qXLK&Fl@Ig>MP^=6=#m}rql}s z;9ke3t}kiAKH!Fd@;R)91Gr+_UWI(!m@ht$k`v&3?!CK|D^q2U_ptqi?ep$GnZ|T4 zQ1qpwA6cP;7_W;&bng>BWi1s-07^k%sHZ%$@Viv>jsVwZhwhzCMF93*zKN7=ny=Xa z(n65<5#%AkumAfkUaH)9=gh84KN-IoKh9suk4;9cfb-(l9sls5fAkJ3q46u8oN|&? zgzU8hecE34@OqBMuuLwWYa01$g~>|omrSqtlYhgq_1v&c+C3F!OgN&9K|8aqm&N-b znAmO&d0zxRRZm!nT8ahjayoapq|NwGe-)}3X`xgsQQTyQ9ZKs}tc*Jy*!hI$KQo?^ z{uo9k+mZv?h*(~r%J>(dF|3O?h}v~CuNhD7sh}i>9gTf(>9ax`bP11Jx5YtJnfL<2 z+H5oRex)NjXiav%kFgHPhfRygdp`UC-uFKqQ;%F}S(0 zI1Sixxic6M5DAQgEDl;c22iA>;P400%6b4Q`Ti?M`NQ~(u*GD${@->Z34uFvnZnEU zjc956#~1Mv_m_tyTNYy>;5SEQ=lywE#TnL5CFy)!Jd#x3Edf!PJ{(GozYX|k4q1UB zFEhz(^1&0+ijN)1FkP7Xy_A3~jaUA;wnvtf3-pa|btx{U6AM4S+fil>)M=8&mqPFzc59Xs2%pU_0GrE9lLJO2C5t}1Q0XCg?Tk}>R_W}1Mv^;79M zV^jWa4UTeytMvrb?^#^Fy?hNSuWVKWg}GfWsoCl6IOg@Nos3}>8mV8M{JZF+lA>W5 z=1LVNH9I*<$9`utm0iVYAvG=`nTjaT$gM?Sbtfp3qm$*pTJIn)N zc6ruV?}tHq@nZx5#`WF`M$rxK`e|Q>MxXoyd`$;R!U%&YN4n;~eNSL0r~Avbvmuq7 zrM4!=+xl0*^QFBO>f^&a;f0;Lo@aXU08aUQX9OLfdU-8!Z?w@mkRYYN~=eLnBx7N<5+ns^W^dURAdFL3p(6LpU)Oi~rv2;hNoLum6 zP#`u`hCYo=#~*JXy|0}n{FR)8D1QjFF=v(I7v3|lE|uH;xsB`$Z)5hzKOeFvGF*x@ zYejn@M++0T%r{bMv*)74C^Q%U9ag>JK~_1!n4en*PNhG>naN8gnGEPKK?A;Lh4u#+ zzn?X=W>r=9eo~Gtvso{W^QWeik%vb?j5rinUVKVwWjA;?sZB&R`%5dB^<95~-bg;+ zwrkgmwr3VAuQ}o&;!4&7V4cy!jwvMI;Nt^^ZI3+Jk7PDvLAk0RBMuv)Z6#ISp6AvG zT_d8a8fPPGr|Ctu%{x%&<&wyR%@jZr_{d+sk_(TN$qRf-X69|#0c&&|eHyt7&Ru|O zn%m9jU%TFT+Q&~J%ku-S7H%!et3QVIbxSAd@`oxHm#MBB(Wc|VOs zw_Fo*+m#5qz*pSHb8lGYvNDN)@m#qJezS9<3Z1=fK(XU5I>moS_4 z0LQ-;wag(-!=qjl2vRY2R7;lpiB-|woUjAVaic}dyiw$Ch3WmL0@n9@?EakeH$ryu z8aIT8{P4D6de8IzQNJfRb>qq1b4t$;|?<{Z#k^j86wo|s~$ zmAWKrecx2*wtu{KlnHaL!ifC}*Zb&uGa$p}?#dg>0b;YHnwe`;4HBXDTMmy9w8!52 z(ehz?P@=Fk86*%?WBL*$dWt=tE^Bq^=3)d%oKGn|!ZP4ehIr?KyCQvIls}ePAKv6k zOQ4E4M*w;+4J0&5SJ2$3#BY?bGH0VgH3Kp%zT36n^ z)oOSl+&}!#rLVifWY-v1eT_@IMp;&nC0&K={m>-V3IkGN5X6hdK4XqY*(XID-K}|j zc`PvAix6od5vl#ZnezEgYNA#lxT56#?KvHQ&)Ri9ZazWhLu3rvw~~hjGQL+Jm@Hf} zx@k$q;VSq8P9kOiKc}mcJM7;aO`dKUUp@dF;wWchV+ZXSZrE6)VcRw@(C7KoWEntN zCg2iUjYG58F_ob-XMUk~1j`G$v_YG;ja7|}_V2nFi0HaoPXtEf6GWVN{Z{MUs|-4u z8+Nzac6bAgXy0YX`J?R!x{pG{0_;&V2+C+n2T*ZTD#`e>hSxwQPwIlCscZ4F2j88- zI0b$m!eWbN1G6&7LRcfyA)g%ZYmF<0r^1cCCXW$%j?L2}B4n#x+Rd8TgI)5}cNq~bI>aDGwOmWc_q zecGjKEEB2;IXv3lM>LZOfeuF=m6qMPDOSe%u{de-;|Zp}xm8GQxsUR@FgN=%NgOTQ zU0V9qDV1n=-9))zcscQGTQXGNQLLvUTTHT1rg-JjG}A;KWJ(aT%2Sw2A0?6>H0TWO z;q^S{I%3#A>y`65yJ)>&sUou^R&tUZ7*o4`J`D|Myk4BO_^IrSdo>(F#e` zM{NY7>APu?oq|bnF?OyttQHHhs7@&kVIy&w7E~EwpNAJX>?kabNWNXp)#`gn!08l- zMap_a`ejaxYQfZ$KAK~PsbM%GsM5mc5cc3iH6W&skV&?i{IQu>Q$03 z>Wng#$W8emS=w*&7$YEF>q;QC13F}sFU<;bNqO{uC6*43M`qz$~>DgrFXYi~m} zV6DU%Dat=ge9vuQuJYiykza1b)MiA!7hDgK_>_lK4f3Zscxh?DX!WWFQHdWJ^ThBt zIn={%>tnW)cis=6=sQ=4QhQ9u z!M1v!15Pt4DAtt>3T79ACI2#f0^jrV|F)ljsf7IVq`#D@klXOaT_^z;LRV`cXhXmJ zVANeCvAQ41zl#)uXxP49S z7ht?&Na6Yz@IVx9Z6-uOuH@mjWFzZEAZZ~7{_$!05q&zuv!#q~mOwZP>OB8bBZayCPu1U!E|D2x`*7>2Dj+-tx3gZSt`&`61wRf=%dJo zvYS&yrWhwDG-LjN)=U6j&OUPpjjkb%boZdEipNcBMt*YH9j7rOW72QRA8yM&IW zb_H0z|JIXB&_JS#eCOq(HEM23ZEtlwcQw9djOlVY@r#V9lkcflf>Cu0h*B)i$!V4=c%bkmiwu=ZgnlIGkGWWSgDo z>wQmGY%@> z?brt>d_L~fx#WxDR1g-FytWQ}l`_nR+n1>*bS>DAjEa8?cO!m@virQllEGa#h0Sd% z^2PrUs&6N0U{G1#(Zt5LB#;}fpu!~|(R6TUj+Cnw0q^&qS{Ii;{pJ5eZ!s&J3;d{kD(8G6(2f?Q) zc>^EUDC^NBkwz-56QhPhS~kIEY??1v1_lIdT2fyQ{l1me8d`cm}+E z32GYH{*&gTGYD;4x{&fegD~%$!3|#sfv@IA4LULCa9CpfpWzw8p=R?!e|_NgeTsTb z#C`k20%9=l13)XJ4BbmKfbO<)x|=8RNRNFyDFE?>MxZ^5h~=yWg&cky5vT4$Pn&2q zAAIGVqaVCd^kD#s)i7N?#3uRKflFC4 z_dmk!2p=rhs|nb#sa330pdbO!mo-lxQoyNK}2Ft^_bYmnRSbw#{gav(VgH&wTKXG?v-X&8L5KwpBL(_C{$oAd zq=X6{Ih%ohl-UEz6iOl6k#NIwN$DDFY}T-aZ$Diek?OrI_=>9JZH8V3y0nr0!;J`v z(vebCnm0Q4-$$H!RlekaLB?gHGQuu^X&N;T2$ysJb`=ping81?IWN<~dUYnF^pRT4 zgTR{bE)e+lu(Vfpj;nZE>Nt zZ||S^w`*!Qx?ZJaZ|s!mr2kwCJJdWMu=Nei+pb#Cw0a0qgLb!Tff4YX_WQQ{bQDCIYC@fZ27< z3Q12nii;Onj?Rm&kj&hp&}XJFg&8f~xR8+*Mx5@f?&X8!C8h2G^8AZw>{|SM-go#W z60#tiSVX$-cO$Eg3Idn_gTnj@FGPb`PjFX!#V}niDwn*!`z2-itHGS25xs;tegJXjS@6-RIca)b3{CmRcl_AGvxcq+ z?v4NZI0*AWj39!L*7_wbV3c4=h;xA+cly?434LN$LtehW<@{Cn>O2M5LrwXBNkK45 zv?^`%8AHkan}#-htChgu5;~yVCXTh!_46+ym8A}A6n>V4*l=}R@$$I2Re&9y0K0` z2IMgrV3-kCLGTIr;dcDSh5BDtGNN? zMOn)>P!o33h-%OcJWqcZV6&l;UKFF6ZpjDw8OSal=F&3`Gcr`4q?*=(+4WT!``axY z+)1r7bWnM}jyv&pAHe;xqNRAE4JOei3zEWH$GjxO&FA#}cmeES2b%fs&=?LIA=2vB zuWJFTmeqz`d)+g>1w{gnTnZhSWvzu%%M>)rVkfvM79hl2oL2e)2299TombUv{~IT% z#c)LD!W2@%MjC|#ID3N9IsTRm8WB%re zXmNj$pKLn$;2KSI|AzSr%`Qzw$j##BK%#p=qCL-sijTCG$r5sfuxwC+UQYHxT|J@s zc&G9XSl@o+Qthm5pJ?md1z?LFhpfNNfB1U&TcIL=N|49vo>Er(2qt$R+2Z-=Ccmin zD#V2oSw1m3E<-Vrn*^K zO(ZP6T73&V3owY%h_B&cxGmra6RNL)%!;YnLR?N#wq4tpN<4}oB@IIoGD|tmvdBOy z8HRA@I$sAMg}vKaN>SPw71N{+t2DOM2MU*>2!=EC%wX0%;MH{5=^=Y)PAYvK6Hqq$ zU9IACo31w^hhPj3rS7AXcxsuTf<=K8sEfRC#Dy)0GS_SLGAWvJkjqeF;rcQi=Vli{V%;x*m%6z zsh~G-((XEJqUtGU-oWVIFVy$%^bzyJ(hG?}o|~#+tn|HL=mtN~e>X&c)uC$hC9$y- zBiNSl;-ESc6leEw&P!GM)&PWUCb4^jbHDy4aQnHJjiSBgk_j${v~{6Sv34{&=+s%K*W2&Rm_At++-dM}zn(>+k%>1Yjy z=Ul^H{ASIl%dQ|#IgV{9{X9##PZriqU!PG325f5ghpO5b%Yr|Sp|=;HWbsln14 z7yFB4lNA!?ng~_Z0|qSBI_rTI&IyG=O#;V;z5@bHgA+yv%}{BJL?Q{DxOFu4@o9Hp zCf`cpDhoL!5R8BQiPkh+i|9aTS&Nski-!`{2N!=h5|k&AQ^V`)NLpe){}LH%IO$pT zbJ%v4mJ%7;jKzyv+9-q<`5@DRr=y`=l-t|`dk%?g(lnzPKo*1F^7DXkYza+n zRgV#%&np7d_R@agPPAFQ7&@%dylGY8i`lr;`V)DWa8Mp9dY#b&N>$x->0|0QH~@f_ zgz0Y!>IvjJ>$ub6;pw;jQ+RixyxAlbla%afIxcoYs&P#Qje?>?y(ZzH=sIx=Dz1tJHH(vAX9X;-Bnefx=u}QOQ+<5o*2h+Qje(SMzG1Z4eZ|Xl| zcgw-Q4BX$MSMB*tw)P$L(CSu&>V37f@u}vcp4od^dZgUIwoff=c}c6{UnDI&UTJj6 z;Q4o_OsqFyMAOes_IUTB)=zyk=7*s{C8vg$Zj`pV%KYw25)OwQ@B3#`@TlcQTK2lK zZr#(9x<%9(a%0Ar>-)DIG31KEb?;pF`?J4gu6^*}iU}##XYO0^;Z@C7#&-TP^TSua zx~@uc`otY21`gXf*@UFOHF$H-I~&)JRqgj@oj(8kkH)F@FYP?0+nV+TBPwOqdbiZT zkO3JxPV^e~K!f2e=XII8{_sl=b=Z?!>(U+{mM%E_q4@{b-hFlX_%$;hD>tT1>Wr@s zzIf`k#O6&8wdgW5Zs>Kd7mYmFdgRpN!AH`67*@X2^orN~QSq8VS2la%v%?uvT5jKX z#gSuWN{tHH^+)iYL+SUoOML3pQ}2bn8vk?VP3_fZ@{@{dSL`^t>8(Q{@9ix+xqJQo ze;m*Iz(aZGJ=-E^X{8sUpGm*DL){fUwHbQrb#+tj|G8?b{okiuk-VktiNvLqYHWUT zO+tkyMjRbB^yB<{N{ni;;NZz`I}fN_xsK@-dvM^OCQYKADLHAz{^K2PxcT}PZ5r*l zw9<`_4ZZr&VvTOxky>KUsr_$3!-KkRy>&zSz+Y}nIQGipnJ+Gg>166& znmVcbB|XaBe|Oi9S4OXUvF!uzwwc&xa>=i6efoUVmP1Pi3=I!y-sA0(V{4hBO24aF{=k`8Er;#-`H`|+C-m+= zBj141$zRMJ*Eq9(%_-(khtX3fcYo;3DSPC*y!y(bxBmS8=!kdcjhg?}@!spVoNAO@ ze&oVq^?qtIr|vuZ2X>iSsQ48@!PTte1)tpoJZ2RPR!CiZ&1{HYjg-PYRoe1AI z`t^k+kDThda?XP%=TAKtp1%CCu4BTIpMHP9{$9r(KeYY(qEiPP{Gi&0@5R&_vbjL} zTl=Or8#CePv8@Z9==H(uVe5Kt+5W?c)jKyeD)-WJ4e~BraVl-m-tXHd&+7g4nrll< zn*40f!t)~DpZaq0uOmtpzkOWmciPKFA2RE%wh#Vv^0)oFTv0Y?WT7ur zhQB%DvHNb^IQXWk=l_0XYTtK8^z52&SJk$+-nqW-i^uNX*FPib#Xr6Zd#TSg4L&KA zGQG^tFAN?$DWPHK zZ~vI}b?k%p{CeN;XKuKr`U{m0_GooaxrnO!TBqKgZ^My1AI%(<&|vF{HGO{HzG&W^ z=~bfM&4_w*QnRYs8(e1FuTNAxQLgpL#FVMw>a`G*{B)8GiyLpBd^&x7qnF#=c-@#% z+sgNU>*`52RR~G{yhLiLqJQq1{z0KBiG{k%YP2bH(6c3;IsA6h+Y&b4J?coFr-x4O z+wp^YS^5mm++uiu#hEIFF zJi2y?e{R^FcyLQT{^84$DzwyeS_rA9D)!nbJzWT!n zLC?0UUMo1Z_Tb}nCyr}1r*G3SHBSV6Fr>_q-W^|y{CL%Mg|=?))F*UW$>Blow|wcn zSsSkit~O=b@#R0Bs&v<#&4xU&|M9exZ|<3UJnWUn503tzs9=cce>OVaVQ%l?57oY_ zR_pik{J3@MvXKi1j(o1~sS&-49eU{dVxNAR@5#Y0A53~V_Vu7C#|w2)mE*KSRX4Az zci@9{!;XzTn!2pVXZV>ui{IOTz0x|zT-z5jh=q+>#B37zdzQP2M-Q?XHJ7bRd$w5O(`9G`rwS) z`mF5Hxq7XgmBzM6UvS60bN@g6@7A3rG~3?|t-JS3M$$0;9?zjKBIsN|s zIo`cnPWScx%{{O8lYjqb#%nIO>9}6U|1mZH_1p1`%a$!`JZsjhlj_TD8aHWT?z*mp zncU$fv#4V`v%FJ#v!Zi*v$Rt?Gv~IO%~!XyHCl}A4?>q2Jt*&XVXKZce>-=R|&mJJ)HVxx2l6doyd=v@^?=FK-tp^k2SwdE;r*rkyNRs+7qS6l5OA7h`6n7ci?z z6f_%47BZW3tkE%Fe;ZpY*>sGLGI@2Lxb2)HE>Ex-R3P5W)w!#)#&Zp>HAjE@A|=T* zjSfF&oV!-hki6!t!ii>{9bd@ae}l%a(D)zH3YZUykN`OQGRTT3*`+qBZ}oWOG_0oTgnzSKb1>0Kb222oAiB|{`Ot*Lgt0S zNv444s-cc*Z6HZ)|Dx07V2-~(+iqM3nZ8*@riew``#or%8b)F zi*)V=jo+%VTXd``lVawTENs5kzjetMYx&fT@qXTt7-J^s8JB4MMvdQAF3oJtC}zj= zOyBC?u8WJ#@!nyR4rq+Y95yAZ_M8-MUqT%bKH=OPXKGi;u+v{M%Krk>`x%84By2hE^_T76$P8 zFBX!=yj?WeED-%RYyS6UmN0uogH2ik^EIbmYHpdM+}3{;t^aq5<~P$y6gJB>=NmQm z>vSwCUDV1BWXs*6Uvw_(|MHkf-9Nvj(|pljmBy|pU);Jo(pKj*seV{$pZY&w&#&|y?#8dDV?}+@{T_N2ZuU5vK6#WlZ zNVD{3ZPdtR{pUmXWtI(C`H%h&(;VKbIrv6$4tcp&JkPO2v_SSVe>ZFXk(J)LbKhCl z4@tg%s(Jce=g-nLW@gR(C;Hp7h4Y!qMB|*+AJ<5gTzORd^`2;m9+;vv`@MLH@9<8) zLitSfT;`wg6(hn-U+H*w;2ZJFRPpRojpu#%+he+RiSXR*2lx;EMgDA+{Q9+Gy7^u7 zKcr)Y_^F?+og43C6Ll<8!psZM^$+Zagz2sO zyjmpL(u`|xEqLdKgy?M9fele4G{h9u5iQxxy}9PqaZ#p^?msjo*?g?ApJ$DKO1yKW z)_!Of@5X8jV|j+iEP0fm=eRpL&WzE!V?&_(4^}B{c2p{5KGNTKHlCA%b9wec8t>La z`JyRi%EXChmIsjiCts!Uyy??V-c_}dwf}gx(&B-8BnRFR-Nt9p{{H;&rmX(XzZcWI zbrdaM6iwffzJNB@OLw#W;e!fVhqp@?57xgA&!S!X#8}OBh#g_#_iJ^1<{TcWCLVi8wi+~kL&qcHm)cPg2A<>^^<;b6CV^VT-c1CFyYLK0HXgA(SOm5=_fzGw3fL?G-W-omRM7j zq|c#CRei>5?)iH$WVGg+H8NeYb(W6F;*od7E4PTotYyyQ{7j95E+s|ph^#e+jArhz zuL=mOOWX^HI{?#@M3*EEBwL1x@0&F5yR3g-+APs`Y;>@JJG8!? zjpt7XWCQfK>t8!IsMi3Z<` z1{`1LJJ;=9Akj3Fezy82Jlq85%V&aXrl4hBG?Y_;8(>9n<*J-=G!vG%xB^U z^#22rT@BDb&|hQhSUp3Ku7yl#Bi?|=@Fl-3DcN74gxRI%XAL9I_=P8b|p6P zXx$5ZXrIRYA$;JJe8Z!{2exSZ=K;F@t^RLR$GojMWc{J%bDIPFBi0GF6Eb|NWWi@z zd-wo%Nj}yqkYvIxyUav9_LzwpKHNmV^Nxvp{&^GHv7;$awv6ehbNY*hti!j96)N&?Sfro{z4lrY`P5S;>aDj-^xJQn$N>XPNSn4My?C0rQ{!3ZL&O7bX*~V~ zG<`s8v%SU_*EykW+nUIM1MR(|-gv`AJo%&vQQWC=(ITd&Xow6Mp=bVDdSDe8v1HI} z$slZtf?4*j|NA30hj%86f`*o3E$l{Wj6AQD%9QG-!~C(YbMp7yHI?jRgzrHDh0V z(bQ;oskx(2lIdTxfO$%E=UKq4u*+-Kzr@6g-mx=hnz$uPeB+lbGja3gnV1O^OyV=o zm_{|Kng*y`b;S-`?vy_6SXurNDcGfHtw{oS4-?YiZZ{6xUHg2@M5IcRkiGBY)Q?bd_rbEFb z(@S)CSnIy4u622-;-=tp&zacSvrXKpRVMz&AAMuDY%y^gHki1jOHIu8-<$X$Lrk^0 zwbh?6$@CN-z&joEtaXK7_^hYy-CxiD zuIP^LxkR*w$B6@6C7cK!7hCf=??@;=j`s z|E*BEwB>R5{XxAuxEnb76dl-h!}X50iB8Tx!kz*r!e>s?oWxvvjiryJy=WHy(@!RT z&mI%Md$)<-vBSheL#@e}Nt3K>k1t%vl+yYlW{?^lW@0*YFfreLYx%^|Zr85A#&6qZ z;-KNeg(ha)I1|ycr^y!|XOKmeM3*8l!UZ3E(8Nxg=Hngs&W-2Ojh9S{89&}ccD>yc zhzK|M_}t(7PWb#o#1GhcygR-gG7j4YJOeoZMwOv^UoCx5Pxb<`g1?t6Qp8LSF#N|G z{|6(%e?zWg<0Iqn@9}rw0c>}CF#q^J_FbgbE;8S)TWJ2vFDCxL0pI7oeLi|2Z$PS%%&iEroO#I%x zRu4qI`KAfE^wMnlg*0g3yT9xNt8<`zPWKldqDP|Nf8XS-Q6qai&wzi>QaTO{1G%?M z@4Q9tPYwhA{Q|84{EkXl7@>Q2_Zcgnqj&kz0UQ4z|D%NBzhK(fx5U5p%dXuk`(}+W z65?q58(6oKm+sy3YAwcm`K3?qvi3Fii6>8*#6SNuiD%CEj?<@2f_NZq?OHqkp*P-W zg7W&X=DZavT3-R(9}oQx9z1vasZ%E5&>^csqJ|DNAq^X5(=Vh^BNP4c$5!`S`s=(L z?=K!g2SvU6t_i7IH+wwq0p@UvWFHvD1kr!3Xn&wuS#wza-9GWaM)3oB06W3GxA!wy zI^gMwWzGBmjsLO!$^YT~k$2?JkOQ$@IL9*CIKeYSYb&b3=YnrInUbFfG`XhI8yubL;j+YIXw@MWsz98Kb6y?JlT1xlh$Bx3s z*E{bM|Nkc2{-FGOWWc+!b)601-rar1N`5?AzD&Tbf8zf(hAsMnaiH_je_*>mWa&Tr zfks&|7WdxvGdkMRgtdk4PB?!2FS6B* zdYI^uBdvT$Kz<-M+}JGo$M4)}*E#2gb?$5;9)H|KJn@7HyYo&H@$kbYX6#rKFB`$~ zPfp{-8|a>J*@|2PnUK0bV)Sc;83f2egnNAJH`>z>&Eui}Hn@)N=T{!ah5 zln*mU>p#%+KlXq5Ec+kqkM{)AVa*fY0&mAAX6-xKkGv$-f-hK5vM;J}V{5-7zY`>9 z{nu~8i4(rHFCQM7M}PRC^~tgMV@8j*7!f#8?2H+fhphbe(BH}q`H!sq2>J2RpM7Rx zCQh{e1m7c{eby%fWM9H(iPAS-{(+}BpYf4;hM2FvHr5}NJ%~(*{^~1}*uTGNR;!vB zmR88j)cRj59k@s9|3}HdH?;PNhr;jpiNs0EDi;;J#Kk+X|Gx_```^X?dsM4r(zE<~ zcmO=*W#KcQOBTE?Yy&(1JP11%zpHb;I2%JJ*W-5aMZ-e*O~HqInHbRse-C;#hMrW5)RWeA!}g4xf=<7WMk;)()_Kglsh{NB;Q3>XTTV%UZRx(>jlvJJ&Z> zxq-jk% z9w$Er+yhL&<+x<%H@@)4!cBO z(o_P!T3UPuKLK2T1AiSFh%VqeVE5>D z?0jMf;rHC*vk$N_k?+vXJD%^12VasdiBRkyLb4p6GD@~)Sf@_b*5Kd3l{wem6F-xK zXW$yTE?6`C7c5zBZ5z?ueG*%KReErOXpfHsHiC^r{=z851)h=pKP|xUe;5Csds$uc zq2xT+ANa3(XYVKRKk#5|g4MzY@C)ZkPZGa-UVq0o1Rsi&ehgyGDDK9Qr)W{T{;=;^ zt9I^x{ngrO+4z9;GngUt!Iukd-rQ&3$HkdE<;z?Bj{XKeu-G2s!55@k>^0nY=m)-Z z$tAw=vQ6{Ws^zl{h$|p>;5Yf0=qNj$Yv@`QGm`y?O%hV4&RKIn{J*o_kF{?7Bfa}> z`A56uCsH474P{8R7x{9T^hZq)9gYLaw^XM7{T(wK=Tp5${<0((5B|fBCJ*0b~sR zse67ti3<>CBKH8FXrFAtKWdaSCl&uYsQQ4-HvV5R;Nt(Rf9O9?>wkpS|NXN4v2ncb z?!IFiu>Nh0jMhIG$s)y1iRBZMy-n+*zSh6Z^^;E>T%dr(cA-Bp*jVB>qJK{Qfwk3T zuQC5%w3hx^vNvyq3MT5+SFN3njJD&ww9E1n@G;Qm+y|Pw=LR1F^Rf7nY?2)D39ca? zg14|QLL@)jcs^b38?kS41rB8vH)j<8KU1ZoIi@)9kNO+=KR*N*{_E5KGfqyF{(n`q zcjVc+Sg-f}`Hl@p3fT)GrFKpnXc)*AUey=LrS99@X0OtRB?f*OFVT0 z0L=e&{{KCm{D1QN$#o(x2h0~tl=sFiU>@KRaw+?gAE1AKK zS~k7Qzla((>@Pb&>pa05BaojSk6sr3lW}|6TmAZ0S-~-m&JX|G~#2 z_RWFK1OC@V`rXwBkYfoJ2u6^oI8KCet}L!1oCXZm`u0wrDQ8#aMppCce5yvWA?})|&G=)hnCCS6(*o7rsBT+S>5gZMsh4 zs8Ob7y*d`3!55*{kb|7FYgM;ixpoZ`H*|;(n~96%0PyFud%C^zNGDizJ0;&t+p z;C*V*Y>kTMg!~}*p932SY@mc}BIhp$V*QV!Klp#B-pkd{g8$>+lIw`CkKF^#(?C9O zh+lp!aU8G}eCKT69KYJd|FzbU>#SXP0RKF+b!(qrt~^0(gizW01xggRwKdR=I>2Xz zt)W}U>jr1+B>hx2Injg&YmNj1mY#_g<^!%6D*aGArLeh4d_o>5_9$bKVdVT%yLPkI zbg`5oCbU&66Q$>k79Ic|6{Vb_&>LF$JH0)W*ZYbxm9vw zZUEx{^nW1!TR1EJM?D4czn!Xq-Kt}W%>OT>pnjHD| z!NLb@uCeBy+8|^$H2*|0YkVm^x5j^|@#OZBcUsrw_miKjvB9yiCP>!`6;D%pK>aAR zpQw8;QGPLX`tbGOc?)A~K{Cjfyz}G@sw8)PCyK7Oe#r2WBpUJ0OpuF6* z=4GbMZOk#=tI#zH~R4$mr6GwBY4)8l3zc|E&*9oSJe|K8`-7$?{pz9Im^XGl!Mf4|0Vx(t#tmc%KJHqf3N!!-*9zt zU?If7SqtQhI-W{Z{`aH+i~qU&|2{RV82V>157g-*XYm8U`-ye)o4hanoto?(^2?|T zKqi0{G}pRKy}h%=d*X!Q+Z-Hh039~|?v3Az=J0}z!BgiUyq(yP#fg+3Q2xrx&0{I~ zEv`%-4|H-JddI;pbr(}iFYG+;2khBdpHGV)dOmA#i_kL&BBQ6|S{ZK=%i4boDo^ zPh`L&q6c^ceMLB+1GI#$u6C49unF)(=bt0H$??U$z?LV+>0^zjhXi`V>)Z0q&>H;E z*_+52VnB=~CyKr()Dn{${;bB6|2;9l*1yC5zin9C4As1l=i}zvtK0YvKTv0fd_+fb zkShxhAPdMDsw9~hnwDz)yD-&s5c>~p+0w@EV}#Gx96{(#43@Y%IDzZ}8`G8U04pS) z%Rm0c{hV1w94uKstO?DGY( z%SKB^gSAi}-#~IWn}4*17-!@E()+}3sRJU9KRye?b@&^;fsMb52gt_@>(V7V{_CCv zeT(d2y-}~ZR<^;9I@ZdzC;ozsiVyE(l^e$=dI9^M9Cm0=e*b3q7WB3ww;NdxMnH|a zcbxl9&$8}X`|t_<1~$n*u>H|wpYBke;0oP;bah|+H<0o_UHsR@|LKv%I&<&s{ls2k z{=kR4@&9p}4@dtT7;)gbeM6`3yfb7Q(L-wu| z-|eqj)*O+2wof#q-z0rxZW4`It8R?@M1~W?07oLXcbn*TtVV`8uKrHHYCQfOI5$1O z+!*gCvX58**nqA7mS1_QW;t8`dsu!3_21)a1aAC)w$}f9vSrY3uAa^N{(MIl57znv z3nB*sTxg!^_eW|@z}BdrxI}TAaGgg@7r2l;%9S$_iVK4M{%!mpj7TvYa(u$ObvuU+ z#3Iq%_;>3>uLJV$>CbjVaoFuzgXHb!Mn7c2wdyZ~y}(-EE1FZgP5l0MjR)^SuX7Lo z_vSY~1M-btLHGs-wDb&@lD}RVpH_}p+D^r=&u+&yommXN8S1UpCx3&Bd3sG+r>XeB?JDH{PFi1$NlcmRKqo^Rm2=tFoP82~

wU06s+i*Lv9?z2y&AEhd~a!1{j?|DU7&e>YdEV5nilPNHWUb^v}Awlu!- z58nto2@C+a-$izRwK645qHtYm>}`HGv459aubf}_0F1}x|0^eic%Y5JBL}qZE$y}T zla+f}vrbLZO7U8H_>otH&3}XB4*nPPWgXwE=fMsn7xyVWEA`m?8(0oKV(~}F&nFhd zyO7s}{D24G=l=Q|c0X|~dbc^dpMDp_K#>#FyyIu$|I-ryyB0g5f!-Y~9GsZ@b3XlF z3l}P6CIp!O=Z*iu`>Y|}ogQiAcri!FTh=?6i`O<}oyCb4!Z?&OA0rxP=hpA^<=#VQ zn^(O;{=Mu!i}ML9rnifY`iex0YY-;Vyoe59s}wH*kOAp5(W~=gcR*GxmX-Z{~r6K2PLl zvhHpCAK#uDY~^RzSTH_5`StjA!i6H`3x=v64{?0*Ji!U_s-CxSQa<%(kFt0o^rj9E z{11B%+x!*Tr@6)7cn;!+jDue2<3;ijc@Ho=>=gJ3yx2Xr|0nnn{tY>e;KwVo-kDvHv)JlRI%o*^&Vr|1TdfImfVtZmY*F8;^5YOgiOn(@v-9`TN?`N6g$ z=ZCx;#rtg>h#W5+$a;8z91wD`$?x~~@4#;GA;|T3SG1p^-d@CEp#yY8Cf%y_&D!_g zpYO`&;2ZLmV|o*nWJ_V5m}?XefZE1|LfSbme=Pp%Mr4!_VFklt|nq~r1L=~MZE z>;`P2oW>J7eJX(Kzlr~+`^EpMf8H(Ic7<$fFfVi=xm5oB{m8Gi*dBd*$g84$Tlsuv z*?0K&!g#O=Ed8nfm%R4QCF_?O3u5@ARe!fCQ}W3a2JB3K`NK7!|Bccc z*yrGq+hp7QF8`h$ZHE=dA)bc}pvSEDp6)xky{BX!*d}`&5Ia6C|NfNxgTuNO`(eO8 zsLTL0L2VEf^{dYSNh@3lF6 z)a2q9hABTgu2DmCU6BH2koatz)<5xo@;~-T2CWo5u|J%h?&jV5iO)(Lhi9i>1GpaR z_jmc|^svCT^VeP8@#H;I>kK}$TQdK5$$n})e$(-TYzg{XqbIy$yx%WNPYpQy2m5cP z;{WwB%32wU97K*H>yd@*zrZK96TE@_j17z*Kpgf8{jG{(=mn})F)^YocD${<_ToFp ze&qww7tqB4=@&#Vu2|~-^=V_j%EL_Uc$?{7rns4?_&+%t8zqC*3a1$+{`30x#3}LR zFPA-v-Qe;v;7|I>gVFC2&-^BwcB^uj@bBqW0KMP=upDFw?*yiROv8@H=l@u_-QId4q}lT(#fS_+SH)TTN{xn4aSO`2M#3Uj9FEKJ*26 zpv?_e?;mPKB83qYYu(axESOKdn)6#()LYjF&q3CZd&oWz+#esDdR*iJYtz~0^liLb z&x5|kp1WVq?_yeD2fP}ja-wnJ?ULn_p2j~m;m~aPl-YAXlESm#gkNdO76>$Kt z5&T5#P43@Vd{a`n#es(ZK!4)@^#6ZS`EWx5qc+S*&d;I)PuZ#-SrJ!L4il1`UbfVaGETdlDZXJP&$e+rZzP%R7T}ArGyN z)8EkjU_tPejUP)kqHBmnzbGEMrF4ma%l~ol|7i{Dm=8o(a=)A`Wgff-Sc_X1*jV$V zCnxLunNRZV!DrYjA~Z3<_E*BjvwpsOdwTA`6PEV$g&^kd#R&LKpT?{n0Q3O%-ka}b zq-VhLutl&*uuG}Gp;iI^1pl;_S?>Uzo12Y=o@1SmAI!UNlwMve z-AFHPd;@IvhSClG`+LzJ(DwEr{!49;Xl-k6$P;xrV(1F#33!0sAJ~WV{Pxm--U8@x zZ~)>p)ZOjTLF|uQ4AwDn+~INFvB)y=wvZdPzCpeP{_O$z2D>yKeb2f^zIn&F@8Epo zdD(l5-uRbxe>~Zzc6=$xfdG#GZ@jXenXP>;sqtZ-2lw9IPp~umEBx#Avah#N|1TeX zoN6VY3w1k}iT*K?nci{qhr`Z~h5pEW>VLrpTqGFwc@|@2=m7W$j`#&0H32S zj0#`>;J#CaRW0$^e4XRbf|lG_epH!Dd7XiPv#JxYPQxP`y){c zO6^W)VIau5I#isMjVwAN@OQe>V97XJJE*{#kwkK1BE(cbr29;!oIG&;b7X zRW!uMKPDT0hirZF`H1Iwg9KoKj3D=3% z2Zqd!Uu@|ACU}VF76cm|80Q9|6Kmpw~gwWmRcV^dq3Fv%J|3Rdl2`c z_8S|B`60)SI15f?aS$FHOR2EIQyvCRR>sYfUB zU$LWn&p&TU#K$UjA8z$AK8d3%x`{dt_zxMdUov2$Y!LRE!#;s_*s0*O#QX3U!0a9F zLp}i*5B&3sWB_Y_y*}~pUEd>WoY4d562^lm@ZP*XHYE1v8m;#uk^$r&Em02C?eae} z)H5Q`{681}zqVpI8^gl?VUJX3%APJ9_{!AO*4CV2M-e+^Ef9+#2jGS{`M#AZnppa_ ziQd$B+SosN-NFK_e@~A^_1**nu(2Zgc%TQc|F8wf{ZpK<@TZ@c1{E^QE%NcXC-nvR z`mB40-{8lwSFqhbQ0wsyty^dY?ZKt)l)sNp%CqC+Q@g@=mm9=>ZuF}dp?`ZvvaG%6 zOe`6B1FhjNWE^-gK0Y=FyZ{d&6R1;rQ19)_9ZynTnbwW|&i;Ra9{(q=0~?=QO5(ow zx8UyR#_qyl@WH(Dk-FJD!hgfmqs{hbA_ho*HR6E8eEHOGTl+1Hhnj8nhOxB(^z#D$ z5ii8j*G)NN^)gDETSa@;Bl#Qnme2tmLwt@L5O;rgk;CaHXh{7aHY$30ntVhKWCe9B z}cYp?AwlyjJ;1>1gsC8;BqM3dz0%)pFUgv2kr6YiT%sYw+Hp${7tzY+4Y}I zn%ExB5arlAYztnuttF8;4rukEphYw)-4CR4#*vF znqP#`Z4*C&^XG=o@GQ^5B{{waXyZV1}D6oH!cYBoMPHn|ut)cJKO9lVhi;wthAlX8)yTZD4 z^Yv^d{x4hp9BfbPA8eQ2%+&u=6F^TsixJQhN_~Q3)B~VtiB$8f_zX~D)-;ru`RP%sc|5n@8*%SVY1 z>HijJ{vYw*1&aT^TBo{cu6ZDKgHMBh&sxIAeng+Hejfjcd8ZBxdl284xg~G2@)eCN z55&@An-~xMndz&%Z(sJ_3pVeY8UgD5#VZykSh2#;JIvMy$UjW#+{s*}K419Z(DG*8 z&(XK2)+qB1{)9h3t`a!_;ExXfNs=76Ui5uI&q!PryB^xH=IQZ4ekr;DIfqS$Z%ORR z9`t_;H2eqrkNE$X`n6QUo?!cT zBiEgb_c(Um!5t?<772l-Fb)qoA*BM^U|D!oWd1-ua3yq4xDOnWB;E9RHCa%Jn|v)7W{ zpGSEh)<@W>+7QVEixCj>COQ)~VK`j?p6@7?v ztKa5Y@Gh7jJcECaO}9aIJ@!5r19%hn@V_s=(fjBN?hVaXNjGkijX<9~eA8*-0pdS_ zSpP}k9RJ}lVk0Ji-EoWD7#>p{PVB%8{CCHo#f;B=a1O@;})BVesI;`nPMn zpMwwJCyEcS6TygV{9kL%`wZlNU~iDCLw&|k`6cA{GeZIeq0Fi%o-kC!Y`7 z4xje4@PRYp0q_Chfzbc&@;{(Ivd`9k<6G7gzM%Lo`2$7s`3dP4vEW8Z-dp|6p<)Zm|#k4_E%@qcVG@>KoDx!+(1#1ee* z|5WpbXh{4XeBej%5Axr|nA{lm3IAa0gDv~w|KJ0@@y8`YR%h;f?>l zDZdB*$GtN;54+d-y!@T@fz6EV#CiiS#r~!@Uen|RQ?&6_hT4DZKii*I{(hwVJ?rml z4-Xq7P@K=Z{l7%;R3$H716*^y`1eJ=J(eK$TO{JURuWk-c?;opM|k@p1M zGZf?Gow0=(PwltMKVW^}6C?i)iGL1j{8aG+{$>gFG7U8U&*4Ayh2OBgvE6ugVrAI% z9K?Q+@6drY0UeOVUBw^N&R;9NoLakwf47d`x^r-XC6aJXAH|A_qYJJ$m2f_bX0B{GWb6>;cLc_GDn+y@Wfun#+n7vi&5;`ydtx z4YAq5YgpsC<)-o+tbb}zh~Z)*V5f5MF68X6p4~b=>-ja7-(cJD8?qc52S0&1z~1Ej z!MMEnVgA>+vUp(Df6@P)_)mglANieNBlyI`UDrv^q3_W3*#2OD{&SE=d`~}D+uIM? z%fGX6f93L#&u8p{$#gg>1=_n&|2!N4T(1F7L#uV=?cCszwTpjL+*CjW8#M(($lZGpVQKA`4&ll00a z%>n*Bf5XRh7^D9+=>Oa+!1sTr{(HFQkN5}uu<)%9%E#RyUzr>VFu!{xFa6h$fB$!A zZ+p9t+l6nR)!zkPumWHxF7d}&gY(K4w|npMEZE$vWAwDw9(8m; zFTk7NJ77VZhg0ydp&L}E@sY`K-J$tp9}Vnk=OelI4^Bw1*gm~}t#8ko z_oKa~zhXhL!T{L^%whw|0b?(gP~`#yOAn+Z#AWqX_Qn6fcd7qBq&2u*G6-8PxBd$} z3w@p7U-s(Qoz_&+_m=;u!kUs>7z?z#Oxn@Bf&CLef}`0UrRDdx2J&Qwy3f%s>Q z>U;X-kF$H7`;X%{_Fv~x=>ePn{|{?FLbV|5-$Ty`Y(V;fP%jYOt($3(S>E*5zT@os0=~3M_ox1U zzVt8{gR4zJUxQQOuef|5a7W^_*lU|K_Mmu%`kvq9-%qE0zkvD|sZV`V@mmw|p7&_1 z-?v`V+ zMlscPOO`AVTU^-x@r?L?v(^8tO=blXr#VHBqT}AwTEXr)q;>z3=J8F*J}?0O9sdbi zi+Bi_ZwvWf6-$>iNmHkogj2b!ec6A}%KfL;12JG*`>$S579Y?jwLwwB2okjyR7>si zHB$K|OBMg$C>v~nXh|P9{4V$o9z+h={lO%&@mI+W;Ms`(k;jFtK;GYBt=&Z$f4gkE zvhvTzssEsSo_~0(&^g}YAB|b2y4A&sTWC&C>u4P)^e6tmQ1Rd4m-zZWQad58wR3%g zFqod2OZLrjv2o@X8w~p#dzw$|wJ!N$Or2(pP4dD8*50@FUsmoX_CI~!ssA7rY?!3biz-)E}iS3FTPBe$P^dk&MP?*n<7*!k#Vut?&5U>7B^W7d~gUNlyJNJ7ur@(|`BiI=kiLuF*S)=4W(_)R7!0^!L?&`})7W zEZ@)WuO&GE5BMM0-C+FWSP}gU`azXLpu8Z7KId@^E@taWSy@QK`FSG)`T`P84? z?9lxVNFM#7nDf7LaE*QPb=T`1J+v8Hp zVyD7L_Q*ygp9Y*3{cukFANmvbkdXU9LIKj*yvh4r5s?U~a+`VTqf=)YU_-!nCTos}blU#Ist z=fKwkg9jT29{^W5C42ykZKLRcU4UPJZ{{6u>%&wR9H)3tPWV7}{8v0+Wq@P^J>xcWZ}YIy1Va|{<00y zRRhpKFChE^o)2u8JY9OdJX*k)L(X%Q(X-K? zPx<*~=l{U||4*Ymd;tB0Ycyv6$7)&oKjPn$Ux6)0J{$*_I{AI*c8C45&Rd8^_~+!u zGxyM*_$;^#wPNIHV^0vfr(VDMHBC*jYDA&4qq+AJ-CuU_K+`g%pv7>=H72*7>yWcg z?h!lyjmbr9C%(8v2l02-IJ`?O2fRpLK7InRTyjzKy6aW8T_5X6CJ#!ey|2g^- z{{{cWZep#u7$|WdVkyL3uKkxtlr_vt2_0pgCe}2&q{~r5}+Am@z^nfPEo>~Xi68rqP zweC*?Fj)LY>~MGoxjZ`yAHX+fU0x?W63*W3st*XMU*FdLlLHVGBi_*dqv#x0`#(jP z{X$)XemnS_@F2ZubK^g1yRkvx*A;sH&3bm~M%mwu+~!fr&z=1**#EiFo_YIE_|Hp! z;=k|TiJh=N8vU(K%Esq6`B2zY{`nt{4&>g! zKg_?&A2=od{8!m%@DFl<*g!#M|ffjm)*&uGn`(7d0~cxbpw^!Qx*gZi4B@ENWL?!@{BOJu(V zYS&z5oB;LVL~ES?j+{ z=~8xH$!`N=qyGP(;Mfqmj1?!R8NC#KK!$@Rd$C-;E5bNoVbv#D3WF2J_H_lE}# z>$y*4rkjQ0<+kc8W%KiM@&EtZXb&Gie;5BBQLm=CNAu?5r_3X9cVhpS>C@T#<@&UkDM5z19^jQ;jm|T1YZPu;6`1eq@I~;7RieL`{O^k(cZgO{u94L ze;5D%u3;VXP8JOv-l}&#OV@&}V!vTylOsruH3xnH@%UGjJ4gONZvGi~EPJp(FKj{l za^y0(1lVo#kpH{-J#-Iz!u|0D*qa6)pJ#y&kul&x{?F}x*HM2K^=B9U|Cj&&-%5M< z+0lQg;{PjD|4j`$HIUS~xjFNGg0Em3KsSdE;AdgmV{;RK?JtbRVT9hXd`Cu;tAl?| z&He`I1?qUg7s$D$wwfH=-1x7Fo1xd*dI{pF#bZ zjPw6;qdoKT-|!#rN&Jua{|?oEuT_pKzE^I0WRXV&riXovPCqK!>_qhpTLVY@m7G!5 zvC9$lr@?i?XKekv##66L{XBaw(@UFrO8P7gl?-t@#5*3E;`{S_w)RuBColDcu7RGX z2S0y*QZ-pFAJjXZ+~%h$mNAPae{1pI-12t*TWAk|JNmB>{eNxJ!2Bf4jI~us`qn#l z?mK_St^$j}H?aGoi3WeF4*HmAz&?p!wfF>XjQ5i|J?e0X-O*bKzmE9*pTv;$n;w7U zo%-hwxNFd}7aWrDVvp-Yc3T4bv(SNJ*|8mOP(S81_ z{`1oRw`PsZuae;(6iL*czB&8%@%sCRMe><_;**oYV@!oq<;SZBx_s=@q5*#&DE*#O zeTF91q>C>mrzV>N!eUNkkN5fLe}K{G{&&jW>eb`Q>&0it-Ps!Posy z=vg+FEM%I=KFnz>f4g4wc?%`~S17+o@9uIn114Wj@9@9+pQZn@WsR53opW+epI&Ci z?YEf0t#33v~H&wKJVtT$}TF-TMaZ89V;gw&v$Mb>F*maQ}O{ zm;?89HT(5_T8EoVn`@fe{Qh&Ey-8DZTf25fd)=9(OP8KSd*MM*|(3mMmGk zeaYg*+ZX9j9(%3_|IT?Dqa*9P`|fdtQ#;|7I-L%yEqO{{QCq+@9O--Z6TP|600V zeDRAjaB&7M&cMYPxHtnBXW-%tT%3W6GjMSRF3!Nk8MyFgK&kWp$NwGrYf>6=>x;j$ zC*mhqN1YKMY=XX8y)$P6f$WPDjV87pa{eFl0{f_tho#ywuq2KSme!uO{ zzwYn5{a?R*xBu(6@AiNF_TB!k-)Vl=Yv}j8uitOq&+PG8x6l5ab^Gk!S+~#ropt-{ z-)Vl=Ynb)>|Mnw8tF5Ds89IW4()IuP@0FmSS#iF@_lJxBe{lvb&cMYPxHtnBXW-%t z1kwx;msXxa?5b6((l%|}n6^&G()AnCmUxck8#bhE(BC)aaID#I_W6umq4RS(m%pvn zzj?3E_f>y$KL6%@7S87yxm|x{4(IcXIi0^j=cXM@v;5BIU3fBtYn&(EN%*^pJ$P*qp&{H zwTJMts_|c>^EsDep}vo-o@p8sPdn%QGTN7FsP=5*nw-l$xYv8tDwt}j72ulQ>sQv_ zKG44{y~KC^DxE*KP8IW-u2D|C1-<9wZ2bP4)(pu#r4ng zETOuAFO;9ZT6yH`uS1^ha($nq8l85k#gQC7>!_|eu5rp2U#WAb_xw>g{Y#bK%io%) zcF6zy%az;tt**s0aQ-Icn=aG&6ZE$_In;%=R?XK8^|V{Byi#(L+2d=S#(t$fhZ%l# zBIFF;r~R8*yUQfg&iDL3p!rW%4Hf&9Q46_W^_TlpOTSj{K>s`X@=z<~og@07(4&Do z{Ovk_tM+DFtnbuCkUQ^cG~F2Lr8u8+e$@FJRp(DV4LSboh2+k2pY&Fv&WC-OH>)T2 zCgtr@|3gmxRm$yl=kdvWb`g*8tn9%+uK!WxdGFPC>OcHz45&SRykc2{e7X?kAO26! z{L+hp{u5hOXR<{#tjrbr!sOIvklH!=)lkz!z3L(z^va|rKBvBv)GE>2W}?oStNje; zh|UvK3q?I#ogDI*sg0ulA?MQ%o8Fsz=NdWfTiICkGSGLOc;>L?o_*5xDo>t%IQ}&n z(5q8f?O!h4hP`mU`Tt?{2#1f@vyJDa#*6*~@ESGZ^r+;SsWqbBfVyD#o4!@lD2>v4 zQxir%in~=)M6ED&Y1A7R()rXF*;-TaG`(i%Q)Bn~(O7Cr>03q}iK{WD{*XFjdLS|1 z)VaV1)G<;EOMN5tr_>`;`^dBK>FVLBmpP>MyI6fI+0U5kv3_}WYNC0UOz9VN^IF+Q z=X3s7NdJEH#N(!h^6hy>`hm0WA9MMz`oB=a$y~7C0_)=)@i+Ub(I1p~pg$P9MV zp3nJTs`>xnsVB_~s-)|u_vb}0^ zM{7OMCzt*%tRrZ|dVu$sSLPAEb$#^dv&Z#0sOzE5n(K0Z&SebWsq19l2=?8fcL?Vr zcj&tY|8V~zqMf^!ug`;TpCM%Hd_B{rTH|+@D{Uso-d=y6=YNUjf5|ibtewCfc+4Sl z>JHX8_0H%@`rOcinEp1@Hd6n}e7bY_q@I%AS=3IgkSt!QgB}~m`JDEXL6%cXiym1i zIZvNu^eFeF_T77JzH<%kP2UanYeL^Luhi`4v|kZ>pCP-b!K6PD`|DtLjg+m5?_qtm z^OPUWx?}!V59nuYJ?e#B&jiL;Z`U?2h|Irha`5!0U zx==ctgYU?F`WE=p3;9JIEb?Np_Pv;&k!JTkq4#u7^rB9kz9Z~~y-9Y_UOf}`DYlY- zJu~ZtK1Hk*_9*&IHEhSEn|JH{DYYw`Sr>r*b^Jd{b4)$0|9rBJ=@SOOtq_0C6@Pvx zeaQZ}mnOuTyz1Q<+MN9thD(EBB?t0cymJe4Zh z{h-2HwzPfUGm`U}$0SeQ6#ssqb3e_Z6}|k+BqiE&I5+gV>+INCNeSjD$-WQt4AW#2 zZINBdz7gnxoNAe=BgV%4QP2LH=Kc@aMf5lNT>L*>{BJRi^T_|p#Q)PI|DRSZtFv>E z<;YEX@WMmbMZ6y}8a?og-oI7xVkSksGo!WF0{g77*J_OR-i#eQ*fgkH%kS{D_1ay+Pf!a z$`pI;IQ3~|-@fGDz0LI%%9;VX_FL+^I7|C>OqD&$T10lDvylJJE<%s7&m8g-d-QkJ zfzHudzFqzoxC+?T`P9EFSFh>uw&sPsf{;Dflmj#euS+Ilci6p9^>=(2_6&pfT54~Z zv|bOH*!c^5dtb5--qx*lzq8mmb4=opA*QZ+taO&$gC1>MxPVD{@(B~WK<97VXyV=Z z+D9TrdmtnY9%LGnEoINgk7|@&%oKP@d#Ep2V)xOp=d))5=W7qeg8loMrlSA-dcHxD zb?k+PZAHyK`yL|CUeMpMRngt_QeaJDH+-%2#U3ujg-L(|op1XG{GpfpFXTP46w(8U8TcNo4b}v96z5l!{Xa!`Ao%F{@^&I*Im9n<+7fMe(~&0 zGD~`yJ`-DH=PVZ%g#UpJ;hvpOY=92x4*|A&A^5-G4@K3Fkv=!V z2Q2yw9}Hg=8Ou6}SN}S@2c_iCS@S9WWY5vamtL~_4l=JXUwvhwUVF_%z9@Yv{cHCm zV68Bx;{Uj%OHJgUK_>Er7fj6P(I#fh7(1SQYwf<(>RIgO9$LrB4zl}N4;yA;WIwU4 zqBSmA_CSZsa^~w2Ma)|9J^Q81mR*ESz_ZFPH>AVK3=su)^o{Ui2BOp!vTL@E>RY z57yk$_ulGP(E(cozQG@(4=QVc-dXg^#h$()Il&Ze)X+p|kG<$GzqGsvU&8zBvu$l7 z^fQNSPGmNFFh&g>YWr_9$L!ITeZFX6&(-KOZJ{# z*ioWQwD$E2le~)+e>*=OpA2jetQ$NE+is+2^Pu{(OcMTczWE>gZQ(P0&1c1u?S8Z1 zS6*8I%ockZ{{?)8y(RHg*`Km9dniN+Q&6wDJi-&%=Q!r;uYG&nNjKR2u(5O0>mJ*b zb--RXc_pv$o5OCt*~%Q|&hDkl{#f4gMWgWU-A&%iOvAp*VYlCI_fmvD=pMU{SQ{D> zzkk2AWg{Mb_^iE_Sp)FSQt4&-chQT97#y+6A1)C5XZe7B=1axt*n0vS-#h>KG^}Ot zt1XIIEfGfZK6*hiiXOtO5qEy5Fo;<3DSDPUv3pG+>#QF}m^2mh&9 z!Gvm0)R3#MHlc0Xn&{6yv-^IXvp1~vhhz;zzWlNY)|%nkp>5jOy+HAA{p}on^Y@4+ zp77cEn$s}Z{Kzfjj=$Xntyu$hFDYHy@dR;C@E>Br>|aBV+P$L1N9qqhP5e(j%lXv5 z$p7#AKWQEo?_;MS@6oyRv;=#D9_(*P+yWezy$>IkF1uR$TO{3guZfZ_#KwskHOgn_ z$c{liBXg`zkYzh2NI$bDQ%r|jh2g88uhv;imCAO%M%G0l`*&uY%cnhG{2!w}JV|-9 zPmIowZqUGImtx0e*`@61VaLffvT~_m15-rj@-EmD;19%$==XL+SRFmWr|J96Wl9?I zWX?POBl~mcV~?6*vMcF>imoNDODqao2N}bAWJuQ2lbHBYGdBoJ#eQQC4&p%A%)G2cR5&xXx7||~`v&X> zoJMjS>>>L7_f5oOkC~|9!z~sRtvlbh6w+QKQL;7h z1-NF6WPE{p?=j7b7Bcq=zhf>r?$-AvMGKmwP90@)eP#76Hf*%8qSV_voAyP7x9U9R zn7O9sZ5Qonge}DTq1&8&LB7z1Ab%YGgFJXmd{19R_5#_c9Eh2s0sa{Hk5|uzb?j*O z@U`}$_}1Di*dgFE;5o7vv0L(p$AXpX6qKk~rD#Z;mU#XM*@B~l^%F-JsNXeZp9e`N z=Pg^-U?qo`U)o}CLNTNWY6XN;CzbJh^PB$?mtN_ zX#FnYZeUr&j*z8JAMlAx?JE5FLc$+XB!A!=daZ*0?9hG~bERvE>s>EdaTfm5t($Lu zMerZ_QP$2u4rkdpvGe9x3@11)F8jU7Keqy5{~$&Om2>th?zr{6n2e6Jii-CrZymP6D{?I@$SlpHt;7p$qD%$GP|ULxmNC1LTVT$Oi}$h6DB!s$O<^YSl6Y z3l=bUNXNe;8ne&MPR-|!!f8e*hT`J>-g~hBCV1>z;Zfi?M`Sndl>Wr`$SKZ+jllX? zCH^_AYoEf-(fRl;=m77v`F>-m3j_aIE&ba^vY9mrpAe@d&xx2hyvCmM*r4cO@RQOy z@~5Ynm=8bn;ghm!vh5b|9O>c6=bz8se>{5RNbAE!$}g&~xY%38wO5ho3qQ{n#&?T! zB-bW>!u2`Gzd%l7yAw0Pc08u}T%hyO#n@=r3dAMI!9cz<{$9}+ANPRhby9Jz8H!I5 zyF+$@{X=KyN`KmtMN`bg3n2di{O9v0``CT^&`-tnPUOuzCYz0SC0_~qfxof88~xbH znaXT(m5CGX1x9c28SotZD~IP`8!3Ke?IYQv(ZVxhg;iWuxuWgeO)e4F2j^f8$-O|= zqnG(kER=a|5*uanh>$IOr!RR~%_BKN{q-!YS?nB#Q?-?>d|zt>y+u!ZXiI(_*XA1F zxm~1(s-+2=z5whW{I3~`|GuQTb$ODk1s8{h51DW53G$kVkCB^jlkAFO+FvcaXHU!D zU}X_cK52ab8#|G$@9-SE-@4XCjPRLI;l_F8OSybrus!x&d_!|X9uIguIuqO#o<&xm zd))J2*VEG<+Xlaud{g>#Lk}=c&gYrk_1VLXd<>r5*>z*&>p!9VPw>yR=NbPb|6!5v zpU;K=FwgLdS5}he32sQP(`v2%nUdXa>wU>HtQsl&M{`M>1x&%>Kf?Yk_9lDW#;w@% z&V$c@MO*wq^Td6yWr*QU(EKdZ_1Eg)UhK1wQ~nA2B4QK#Aic0oHX6AP*lfste?5!M zN$iMRuw~Kt$z~D%J(A@9-b4kKAT22kb8FoMW1wecA^G-S2O=b3Xfn!0Q{d4v*=)GwKJuUwlFA zv9PY?=H7i07bb6pdIt73V-I2WD|=V99a9y5zYy@BZ~H$XKQq?qS#&VAdR6ff`K-uY zas-(pupj2-5&8FxWIyNY)5pdFk?S$a&0%h_eZVLaG}mYGKNy7KGl}hPHfh4Nu|x7n zzH@!@;?OJWG^Ym?H=L)O9`;^F?xX*aE7&ezImkzN8a$9ad)OBqJLhuEGuI-%#k2Fw z*hu6@kpGJ>c3AS~gyw&oc9Ql8Ca$;iuC6On`Xir*msTnjL;#( ze5{Qk`<DJknS`8#cppI_kzWZyKW)E92@lG5TL;smNCAr}yr#KfEwMKZcA?wn z40+9g>_C=ai(+@-i*WEf&;xszb2!(@OV%uM(bjiJM)Lf~9rieJc9Hk|hN@8`|Mq<6 zA3FS}fG}Y&PvR_gpBMS2GxQGp4ZYySf5H`q!nU{e<)K5__CGNZa87(orJuCFz<^e2BrCqi;&4*m@ac0&|p8y$t( zS-_05aCm-a=l>Arl3ZX6a)Z6P-_Z3ImoIMi==wj&ZuvocO^ndZjr&AzGI#8~!`?3^ zCFl1^Z{iQwuEBWxB(mwp>JjY+0{0Y|_f$h8fhL-ES zspn#kQh$CU)@5VhioyEFp@_*6k0GBbRC&u`x7=d#Dn3@AWC_zn*!;VaIg4~{XuMnY z%V*+Qi)ZToZtnRcXN|Q7&$Ist`>*_>^YLNbzHQ#~$vwv|r55wJwTnudJsLMy`hk36 z@40+$Ub48EeF5bEfdBOC{jkOLd1rJWGJ*YH@hhpl1CK$5q7SRdt|*pL*u)9jkHgOQ z+L?-B!TUB3LUBf7V%SCG0YyFcoT<_DYBQvSPxg>EK2!NQ$PIKSG96!lJx9qm!uDwq z7j1c(b@H3+QtTXj0@fllAYX}jXDogT{v&zvziNM*-$k$Sl3n~e=i|q)pItTGgIYuC zmoJ3+m*w)mzU~ z)z`E8uT%KyZrO|E6_Xc7ts^;1V5{=g%u4|ad%)B#mp7Wfi z7wKX_#8OEPa&c?;Xz=f17s~(g%hq4z-T_U+$FN%Pp>HlWn$INzFyE{{cc0sX%lK@N zbB;>R`C9j*3lkeau7bOdJ+dkJNATs{;tTK`axlJBT=Y`ef3k!9Ve78l_wJcI&ZLOm zBP(aL|KRH&Z!=ZjydR&HU^GWQ6MD;IFU?8(5AimN8^5MY7wZ=W_icQRM=r8Hc=2mu zJdsNsoPZhn0I}|;W&1&&JuSVKymf5%?mo9iR>G%6-rWz1Ww3l%c!B)~z1Q8x9(f<0 zz`7;w>OZpo{0I9+MadR*W3z?*4fyY!I>F)}a=6oH+&HkollQ`UM;8A`epu|eimVhV|;a?gj?!t>#q*k%5uIiUUla?+*z zT*&hHNx}K==?f>>^rY4S^xfI3-Lu)lbD1yfKR+NBsfQf-+0Uqs2l>~3cK(HpKb$nq z3>Q9Qi^s+SUW0q^Md%T-12Hu4J8WObsr75cnV{*@Z9Goks#PXXacl+T6SHy5ih&Cj z{kh;52L9N8ltWa!OJ`F_YpRCc5vDz|3G)10@kM%bo)PRnk(@(~2V@}VAAAYh0{j5} zi{ECs@cpFL3HCbV9Asqf$7aX3^GxOzo=hAudIo&}&+2~kiW|z6%@+I@`E&Zn5vHK% z2;(ES*}<8-$F`D%7z1`NWDDe^>XJW$XUfhddykFX6uuL8Zgc8HUx+a*sF)LCQY`H! zHc+;Sn1@H0E{YwxU+<_Cob z;0>~mlXH;K;N|#duwSrV@R=cN;nTZY@1WKQ_MfHMApg$kU(^I){ODZthlL)qZW%K? z(z~W}H*c8<%fsnBj?!sFZtVZ zDDKDdX6X=-f+zO9naVT$SoCF=d{?{lF8B(uBN^d?p9`D^_Skcv@$~#eE@E9|yq{VU zT*F>L{LD#>fm%A$`N(L0!2U!2k&Qpe2KEQ?ze))H$T^m;$u{#(@wF|25BY1eT>$@SPe1|F&|Gl^b}px3!mK0n%R5`=*~qv7WhlXAwP?JM&u#r&^7Xlh1RTL`V=p0<(kc! z*W<#`W7@!R7vJc82Qd-Y{8=O4377w?IY2H#R)w#6@8y^r7wA5<2>yj!Bsu4p)(kOm z_+c{Me`7YGKk(m4;=cvNfAM!=uYv}Bt1(bNhnP_KFLnud<@MSslqhCGr0*6YZr^MF z5e*{GC7oGW>$0=lOns%mzvv;6sy+UFX!MVLEnPM6MF*x zeU_v^Ko7^x$m3 zf3g289y{9HuDBWa6tPzH?xtP?--_%2e;g%Qg}N8W*<5Q_v$_d>a<&PC4oR=V-$>jE zd3N|;s2AYP&mtxiyHIrFMy9*q)JJ+LensdSG7WwhWPW5F;#;skGY9xph+V!@8#Zj< z486iugw6|nCoTy)8~4Wv&d50Z^!#w)6Z#7{1RaInvql~*7G&km?2!MC{J(B|y8r!B z`WH4i0sn*S>KG}vaC#`xv{a)iU&eo z&7-(z%M(O1pb5n#%a9ufEb&=kpFv+G4iCK}Bi#V+fj#yda*C)uLu>#!BA22|@M`om z^gDb@(ASSOhFP(dvqkx_8G0nNkmy4lD6^Tp(GW}C*3P3=brk zD|Y!M!5>+sw$^%1<#FXGP{3~1{)XO#{fD?{^j^0qHk6zR@_W7UKj;?lRCw~YvOVDE z`d0Id91jih!jog_>=7e(Ks@0`#sB=*FBf4my_EfpSP9k#aaaEjxyago%2@bkhx|M2 zKl`RlG%NLu$b1>c3;icgg7u62hgwS5-ft28DO*{!eYT2t09ra3@Hof%sxJ^pa-pPPRT{a-(Etc^*9R}nu0AHXk#O$Gl8a?u3QSJv@- z(P`{IwHr4yg^+P%_kp*P7l)q)7_; zyTCr*?AaIUJ-FPMAlW6V-Z8-3CSFd=GO;4yEH&hS5pi(HkGBeT)Ye6oAufw=Am)J$ z*^7DO8u42_^=;jCKXxl%kDNnoICug49QzgXfsDmGA~ST>`^e>^{!e!BKRWvlG4a$W zg6=}=@wXuJFlHAQ?bdc~)x7}cZ4SD0V0l>pE3i45rx^+xv z$&lElo9TfkT9sKVu{)hMz><`2nAcG)VU=N0`brarPWPcc>{3GOk?3?7Qql5Y5+@SIJ zd&$G~<{yF6p24}bZvB{ zz3@%tb0Oy-7qKSmh+lZ&$#ECam1Tl8xiaJ){Z~Bvw2rCukkP)1Tsm0!ciF}MM*Jb) zgr14r7W>bSlGDD`IOd6#I{P!eG49LNu%QV|OS{bO<$hc8QZMbR3k$Pb2GM6NJ- z^3nbJn(;Bx;Y4@HZzTs68OzBz$SLr9{4cx{n*zB+)J*+GzC-+0O~OikllG z{b#6f9~&FCw)z@(H^Bm13Ur^iC}e*0cx1PSqz^QYuVso+qe}J#Xb$o|bjQk{^1r|X zYO}wM$z_ml5Mch@O*6j$STkq!fhwhk2&YPhvWUy&(-(hd%=CU`j6!LGvSZ?zd`vIZ;SU{ zs{RIYCw@F^GV7&(p#vai43`bATB#D|TIIZ8@64xI=R9}aW$g>pT%y*7m5GpzkdcUu zrY;=yOjOIn(Qjl&Vyy9e|E|Kvq^F%b};bYjg>t%FyM_$N4(8fRm<7jE6yRi!w;POhZ=5H zE)}e8OdN6%bv3jR3q<|}`KURH6}#{bXbgNGKi6^bgKxz*;i1g;rTB6;$&Fh+S(PdH zXD8S@_*?tKl<}%bRLbTYvgW<;2S2ep6B9-KUg9dhlHQ3Ol)40tU-BFLE!OslUk12) z+{slVI9`OWXf5<2LPW%?R^ipzWd-+W^E8gO_;(vC7y%+xbW&c4x zcYalH+R6Lqn&iZwkNr(@k&R!Ho$N*N0_V4~G7-PQFDALv>yx2AjH?mD8bCMBsaP#* zH`Q^Z=+)p8-T78D4!;#Xb7&!PJjAe(yFs0fvZYE|c?Ldu zIkZ2!!rs9j`_E{9{Q=}0>@wJQ*`N!=K?8s6pz)&B$Rg2_MZtM&WY}=vmH4a%3r0=q z)i%W>_YrU9U~lnXGDqD$y;K7t$krJpR)lv^Hyb!(yKE}^E3y%O6y#6vfNwwthd&b| z+)s6rK9THsIq=WUuy^ox_8{ID=@|B;cLhu0ZQ-%_7LfOOrguZ)<*lCcp-joe1gROXXMM+f{9(g&P88_gW8Z` zu$$f_+TxXqfGe^1tQGk7PQ~#a@&ij`b*Fe;(z|7vBC$>iWZ{_Lw_Crb8t$Ji}vS1i(md*^M$?W6T!3nCE&?? z;b$bS?u?$#{lt|3|4YR=Bl{4$Lmh4IMJ|H>uMzw={et}eSAo43{@8zjD>)VPv-!Km zNu9tSTt_Bi9YBlNQ}2bkc4v`W1RwI`=u6?`BIXSFiQnSKA$Jsi`FENp z=J)S<2f8k{9`4~@cRxIbT;P4ehabfAO|A0gl`K=OvM*jIL!CvFF`WN<}r~LKz zkOj#V->z7Ha{E*L_8)jJ@iVLgY?#E+03Z0|W6BG{j?DekX2q5O@5HBtKZG7$4aHaS z;jm_A3Z@6C-JtsyiJrsrk%5qNh*KV*=VNK1}Ql>P>Xu?1uIK@P#j4&5hr-O5FR9sKhK!8lBK%>B(I zi^6BI=U_9#hs8VqQ*zPi-`G^o_!bZhcSk%y6s8tGoPLV9)?>^~Xg zpT8pP9sIFBP=98L-~|3Ty-U|EO~5}sS$s2HE()_g8SFIpHLzD^l#8$>BUhro;-NO+z<1yS$T_>UK?AuT+l0H%?VBoZZlj0(|5ahH@mTtU{ek!sdWDkb zl`&Qu-yk{6&=_iCoRu%+r04UbxTo{~$*RrvDcI zJf`2@FWTY= z)IYhg>il`1kMF8^t(qoT@{jx`*}{gLDZu-GWbM!DKfYsK@{zRVANf93J;028y2(+d z5BRPX%Y3`t_VIGxcJ&S?ek0@k{JliL@-oz3dg z?cKKOetK7W?{&x2bobuN@iyf-Q0v;=@?C|=Z}pdk{qLQ- ztG~YrfvXU>3W2K-xC(*)>kyD@FZ2J-JLu^VSC0jZt8hrih^uh;ML6W}z$cgIIFIKz z$a5UwId0-P9^*OIp<9DI-W~IJcg*A6F^_l05uW2Fp5rl|V-EfI+sFHl?c?pWO#W9< zfVy7WSZz51%IbgpyFMTwxlsCM|GxU)RR~;#z%N1odxVx?z|NgJLysRn9ipPMwN4efqTBPHF%7*C#Gq-=*WPJ=ag_`e&Z&yLGJC*bBcuaq4sg=iKx6 z==h}0x##n&oq8wNw;li5zKeId>&J9%$IhKa7QFDBwWIvvz%KJ5VzSL=xeA~5sI%R@y>gY#(qehLg+oO*>;`?CYID3ujt0qtIO?>pH>yPRB(n;g( zb)KiPzQ2Nrfs3#HQImuVSU5&$&-&J zty%M=<|_x^eI@?6=e)acVM49)F}7CW0mZ5Bm%n(8e48!s>&t(ZLtCjl*P3~XdD*Ay zd*zQo%t#~DOy^4-MlF!FpSDgj!El(Vb|M&5- zi_@p=fZn}Nzh9ttmC-wSH}S5m%d5Zbd+)xL72{v<-g^lR^!)eKlYv?^hvj=E4hMgi z;A}VYSr*C%wpZi(OdCEI>Snv^#IF&*K%JR1jgOpZ;9GGya8||4LEi%wYL{=x0v82=QXPA0H|{LHwxH5hw0x ziToYZ`5=doS|8MV#g9b~k9Rb#g&HS$6~y|Dbyj8C4}YWIBZ#qUmC0rLKcrE_s9 z+(Y~YK4;q-UB1lu^6{+9g8BbWFH2jpC}B;bx~7BT2;BFP3;w3Y482R$dZk9ctwThQ zGu4?Y3vS3yPVG82YU5XDy{k71z2z$CI`g_lF(n_1meOz8(mQHo>lrmg4`0$Vx2nFw zQPCXY3c)G&e&R}qGyE1Gu>6Ue8q_q2?=86E^Z%w^xMlH&2?_BvOpNfC`X9_KdtzVc z6GQ#aK@p`)nf`rEe)XFquO{UF;ih|)3T9U6qPB+4ZDqquiNS+R{x{yVy$y>fH>9`x zb+a_aNg8|Cn6jqGeZx$C{g!8xyz>q-NatQt|GdqD?_+``F*DE-=mG14SeUQH56Fdj zre;<1!8`9<@$qZ;0V_UuKcPv57!xb_6Z^nicU7J<@jf;OTkAba-%Gt=o9CihC)A-S zuAU6nt2aZ7Al1gb=dPcwD<6Zp&?S}U-Lz<7(@cFg!$ys?c}e#7{_Ekx?ltYySDRc? z>Ms#zL|#1W4qU6G@1f4^Q1$AlCHgl%3)Vm5e^>l3Hag18P;3)xk=m`S_X~N5>V24h z{`~a1F3M@J{iT%;RY1AtIm?%~^+od2hei1&L0s2Hu5NyEPt>P6XLz_NpgI_K?4IBA z%pCIf>Jw~CxT6Q;MnE&+A6#Q=QZCZ0e)r1bzn&cc|BsJ}Hg5>_hlOv{#ic(9Fa&xF&pOGezT5PSq(;|8*Oi+< zZjS9g85n44=v{M#?*|mC`knBd{0MJ7Qs{qH$v^M=`F|hbJaNkOdZNCLP-;+8o50m43sOxKa`SAi*o+yrk30GEu15?#d-#og zhT^76sK>*oisek2V&$k)Mr<~+hm|4p4b_xyx@7*9=l}7V;G_>fNElSTip}?HF1kzK zQ1}z_8+9;7NmgkTU)uyL2h`&Dkt4S63iaM?&2iv*7ebcWeB&7Fmrf!jP_{kY8uw<#pQKpPtbMSv^k9?sxna}kN3st{(RTixO zLmK}M@&9EF>zG!GDP+B~kq1isc66E5;_nZsjz$dmiRvYuGa|zFK7z)%^-j$tXnwAm zHBAoD3+A6S;;!2~dF7<$RL|L*(b4I+pfS7arA*P@y=;9`+wW3!PN{wB);s$`%7reZ zby_G;v6s`Q+ghoPUXVLoNVSp*sV`|E@son8C1Y#GNTGB01bwvBgcb?4{R)6TJb>N? z--;eSt~`i^S;YUBzyH4UzZg?jGC#G>kVT0fMGj&fTEm|u+ptFIIZ1vowfSfvUkceidP_pP^@@|7!EopPygev{;7bSket&|I-xS%LqIAO2rg{Qoua zfBOD>p^Z3Vda>)W$)OlvXtnKe=C1)j{yFqKS6rM4P(84cvQ$fuYONVGx5vR!TpE$ANl|~r2Bmb!7{7({|Dm#m7~g;ZjwJ;eiJ$1 zz&}*j+xH8e&7AM7RA? z{GGa@VTwTvhRZ z^=_43M(#iFrG_>2LC5M_Zj7sDLSA^@@+@e;1^%w}505V>+E+q(1zps`y@%E-{F{1i z)Z-yEdW~rbq=_WzDIq6{))-&p?jdg^a^GjKBaqZQ~i>xkpGi3 ze)#{w2DMFN^jAN=V)G$Rd#mtyvDPHGUAAbb$r&4KayM;i@;~#8rG=Kh!M`Q@7F@kr z*R>w>489-OB?%vpA*kix)o-b@Nvj?Yp8TpsmS1b1x(^rR7xD3+b;+h!WLYamv$nAp zrfF{J12SH?06k!iSsUONvNd%IztQ-~Rf0yK^Kc#7^OR`FY0=V?l7A+|RyOZt5&!>4 z{J*y7KlqQlP0t?snDC9%Bxx-DzNBRHKx&LgZ$W0K4qpB_bJF{AQI|@xU!9w~*fF!_ zu_IzXAb+>3ju{X3Ja_;(Sj6EYBr$JXD{TBr9C>m8kzp7S~D)UoqUy{*@@W|Ot%u^D;o zh44D+pz&;KX2I*c_>QgBt#^8zkPiYLxb@I7T5Bi^>|c7m<^Odw|KtN46u#{dkLLZZ z4qOh!fzwYMJ?4VEE18bIYq{#yH391H3y-9i!Wz*E>O)dH#hd3#-V5V9t+o7v)-U}BxjNTW0ClORoO7Gf0BCwEut?4x_4>eWn_VT zCS=T*ba~z1!yAn!Tw!3WJPwc}JPpp>nfI!?HREsxrDtZCN%2t9MZ=KhrE z!3fD0_zd6)T<2X=Bon~@sZ~Y37xVxah3i@s;eS@x|9S|(>&5>^)~IIb7BrgtRA>9c zhCNm5xozbNrtpmECNMSC%KWT-tH0B4Om+`+gCeqp+*qcRX)8D~9@aQ{Z0HlvQqE!H zgC_8N);oAc9yC4yXfHIPjn+Q&06zqFsF(B&{Z+p{E9CzajUW5}iiUN}jUN7oJjQo# z7k~apxD5Y`3<@+kgeTy9e)U$feV5S(Wb2~;OF`A+&Lvs^&Vsv7>ASbd{*4a*zI1uk zfWv3>dulK36@R6+E%d@G@1l1hi{g(wAf04+e4JU61^kZ?v|URUCv3UCo@wLJ|CuZJ z9zEDUjt;Z_s;EHaze%^pW|v>}-7WujHNnttW#7u(xUn50V}XX!UyGhK^gZzQg@FH4 zTj@LTK6-Ss=IB}B;L}*&LJeGg`=e;aI`RLk82=u zeSjJu)PKZx2#p~B4Vu9EnC7Pk*km8BRw+yHU&9Yr`u@U%8sdM*f5?1qgcmgf#mo3c zzPEOvf~Kf!`GJ!4p?lQ)43w-(?el`4e3IT5Ky}|5v}tK`?x-b$?9Li$qG#em;FxpR zl-TGq$vOHeV{>HfBQH@q7@FYZ2j&2|1pVjzERuiFf02J)ELGU-7ryV-oKPFz^`W4y zV}bYIxAq)(zg_RDd4x?Lc{hh_TE$c&ka~v12+(ho++AcRhtCzIA2Y7c^?Z8MYY)AhJ}#9M=TTHW%jtdO^nY|6Xn?JGqWY5sRS&N7b@66}e*c-~@FD+t zrw#;b8b3a^EPB4vC**GN6V4%HLT^|Lqy6;YuzVo!My^v&y8<*x_@5Q_zag5OjpF~~ zYE`%N55GUPji5jDrGSRx+wCm+7dm>h?ZHmp3C2yGM{5Jeey>{0A<~KBRSTw}aG7t% zevdp4E|F^uJjp9Zw}Zd1-oXiYA29`7Cr+S&WI^~pIuUlHx5S6;s!}0Kcfp}Z0+Cm>tEo1*bngM zu->Vo>*asUEAcSI`w;VieBjjwfDt?qd)y)M|5eJ_%nJRNkKHZ)w@v)NrDy!$qpeRP zTDU^`4E~RD^5f=+jyAb!)k>FtuNobKnvKAGvWW# znW4rR$6omd`|kz*uRP?$`Zcn|{(=0rUGmQpb!*t3P{?TLJ>VjCF!X_!MHkyvt!P5V zjk7clzb5t{WL|GQ;84{`h%QswRMt4be_P)~`T)I;@0RQjKSd{E?tw2brQWYk*ZUSO zWZwxNfNp|+)Y?EkKt{Z`YK1JZe`)vui>3cmmt5OX>z=iUT#BulHHr_uw&dO-kBv^R zflQwh*#H8QlB_L+`hM8|g0*jYeIxUTdcA=6)bRp_H8d9dh#Yf{7%|rT0MP^BLG4rO z8#CSq1ta(-_W-+4!4NzkE&=}kVHVgw89)3F{dbP!7S<|jlJ9W-?;IscngSnwXmx(e z`&sYud078;LZyKG;xsKU*uwKS^1n z|0Dm_5?!NC-&)lsfM$(X3<_%$I#pBpf5}M`O)#+!et#V{Fnsp~hzF7!SWxi+t(!Hm zJ*$Xsq+bmNi%nL5=xHGP^{_w;OY;Q6PGFX36U z@~J1xjA>Ji;&Scv=boHx)~{Xrie7(3<9|m9xSPcPv44ik{z=_<)+D+LaXHB9&k8SY zQ>}s$Pd{Y><O1z z@5P^2Xl-J%;F{G3um?&Pa`b?8QAj>9;v={R{!jcMu{_kW|5W_nYwxS2x)ocK5--gE zrC^YiW7jv@@vqQ6Rr5bp{(t(!q4Qw>g7%=dCTrZpCnC=S6JQXl>&3M$vHiQ6lZ?NZ z_z(yO9pi(d>D0M`$Kex0KCT?5{uXOL{n_zn_1N9`*?%bhUq$}U?y8B3 zybW){e~tYedO+WG>>3eZmF$F0GHRZgwUonKOR+ z=kWiJ8oPJ=@PFbTo|m3Sy<2)8?37%J4&uhoTw)93Iz79RCD$Uyy6dbL?4`#AJNi+q z({-=C6I~yf>U+rs)cx61FIMy~@uKnnkz@Ccf0_JW^^{+Lo#|7}+bNB4viLtbD0W!t z0yF>Er8kO>eXTKKzehesM&cgUHnwZ(4MH!l-*XPXwu^nI2jge*!!y)GtM}zSNJzN`%U1(j^HeS~fC+HJ{`ok#kg9_R3H6&8+qFwJXR^A8Brtj_UH2Vl=)D z;%)YNtqOMCw~?RNT_>J5Rkkj79XMU*@}-o|)F?8-Y*F3jox65tiEQ(W1NUEK{NLZ& zF(55DdFtoSKYjGs$42|eH6tgD+_N>xfjc~Fs_*a<(|w=Moa%eRbA61iub(_@*ge&i#IZa^E&9kL~cRX}-g=XZTX5PxejnAC*|Y~7I-nsVrHgzw}}`HJKol8?CI=<$dRM~+3LXn(|Wo!rIk%1Pw z)%_m;2UU=;a8~sQyN~eioA~!*{CiCm*Qpf2o+=US^>e$Y_ym7P`1egbdmUctA9W() zwDr+;p-x2f)jAOZ$6w-~WP^b1si}GQANVRf?eLL^ExyAMsp8XL9X%Rx?AWo0!`koA z-<;pB{XzfvL)!DVJMZ(KXV355dG6ym{LY={c|4c%UmZFWk-Bqdkm@C73SJvFYzWw} zabp9?N_!U!?0abUJ%fB}hu-14x94rXZr!{4`t-Qfw`kA+ALlIR z2l#gB{EEQ?eRtf}!`{z+rS9YWQeEdho-}n%#7LlXLIOHgHTb?0VUQoL)@*ZEP9zN22~S{jv2TYcoOiCytL= z!&Ur!y|9I>RNr%VKIYnVe;D?a4bm&=*Skj7BcyxqoM!5Ml=%9qW8NP;FjL>3r0-8m zN@~`oN#k=9iYgXW@;JU&{0`W2&|itYUM)GF{A6NZIFBAj4CgY9l|FIkgq+78PhR>8 z^(&qveGvVa^VmAE^L{Jco_hQ|H%KymE$KLmUYR>)#(=(=`u@$yNdeo}uWL50^^NB$ z>RrT*;Zs2m!?sB6dSYd$Lx6vUxN*+oXX2Zvzm1-T-pzS>{NQsyALl&xaUQ!C@t4Hw zpttc{>^t|$=KcDdIb-gYLi1Yv9KLbYNnN@iF0RLszE01288S zeyeOt#Ng2LhV$s5)WPR`g0Ay7=VNr;JqMebixt7n^r_|(T-v0XzN>{l3o?m6Ta(kj z|E-Q~Ec}USLa(Rx0sfmu%a$_Xw{|yq6!%wTKz}o|LOI)C^RBX`P08Lp?fK$;Za2e} z=lq<;aEE*z#rpL#d6Y|0y60`?;plK{FXI|G<8bL+>DAbo7RASzg~Ffd{WFI@@-GBz zOipfgbJHg0I?K0BEW$mSTX2AS_~mc!W#|)4Tt^}KHNuqB9WNVyWWPQ(x67WFZPg#&6JKaS z<+BkN6sR~r;>GA!PEKs#s#WRdII4CCZ3)1+Jc{d&IHTm1rKB`d@p+!Ik)f5ojYbyCh3ptI{_O+e>!XZc9$;+{{eH$ zJLt&~*{64UUvK=U>aSivab)yu4OzC#G?Fj5uV_fiTCpbd%{NS-@G5lqGIK+t`lcVW zrA|!~qBxX7ip40VywRJkt1I72u#KZ)4!ROIDf!{|;E$s}eE&SrAAA?@S$Rfs4)jO) z>%=`ddcyk55gBQUC>G)YjdQtT2woFyk1DL1AM%@q6)9|E$&w_8kn3M2w6F;%8);&6 z{uTYbPdtmbe@B1#e(>k5L7A6-k|h7Mmi+U8c>8+UXk9;fOCv;U91h^aVm$Pa4pRR1 zed1;K@n6s~3^gie`k^UjD#vUG;nT+yAfs;$vV_FCi|{E+1J z_Ldxk>_=P^z8UQMmgvtzeKINk{0#j;?%AfE^p^f; zOaY3iv-F2NB0oK$wnjkV!s?So9$GQ$LnS`M#f&m8XuxsF2_I|kVr7uusNe97=4k76 ziWwLFyf@^IOwoVjAL!2u?OR#+ld}l@q;?ZA4R=O{nWDXV+MeU^SYja@Jz;GYRUSCG zn-j$=;7#QHg4^UmAybp%OFYc;!Wm>~d}!pJAxk6wyj`cdnLl^Vm~olJAL!3|(Vvc5 zzqiY`3*G12fmN*Lxy*om=`mf@V^K_}&FNHLSBQ97%O=;^`9ZD$=JZJf=EQ6g$4qS; z{-$pnxHLjEnR%smDS8gI1R6+wcw689U?%a$OMl)8OQ$~z1a})pnfn?m&)A$K^&uxV zDZg^+iA4tPBat_RW8@Hm(?S3%_brzEL|-rJo1r6c9+`QqaE7^{M01f>!Gj{|S?_ogat<+tc_q&T4H#hVmVcbsQRolf!~JaNX{Uu7 zFK7<<+xg_s5%_-U4S`E#gs0G-1>#?i_Psq*`0w}U zWR%SfBMu6=hx#9ZX=x@*=NpF^DJ#1hM@4+80{drfk z`m}K1gADqY&55AjxMW~*qNv|Oy`WLDw}4~F94_vg?^-JQ0?vR-jLXp<;wgxQ2B#eT zX(IUt{xvVt^d~7`U2;;hwvvDDD_qdVwmzr1W$uaVDXx5GSJMc+ioE80Q>U3A)hQcX zqpEV(!mK>Q{piem*L2Y@VmzJ{&VWn69(*Ea_mpsHisB}?51kVG&pTSbBQv>vw}}5@ z|9QGyt8*2E_qDZF`3`sxawYg*RB{eESvD6rIoSj$CJ&q{F@Bt>6++=?_-&ypN{@)^3WgFBleAp=#T1)So%Z# zEc&R61{ILbNM0@UXP)R4d9(C;_0k_=>cAOd>%H_RMS3vzdN+x+zBRoQ=_ zKjbhmx9Bh*=$merj2tRl!LDHIAy5y;Pk)NOGS@_k{!sIQHNRgrQs@ld3GIZIkyipP zO%+cA$5 zQ(d-!WZ9k1YA#l3UP}q*INw+?8mndhdF#&p`t!H{1OCXL?FIiKqW|R9%~ica;8;=b zE)>19 zN$}r$h5x0-j`>Oc*|^b;0~=6L@#HF^Kllj9V*>a1cE(UeTb$xwQzUZ}2c4e z()au=|BF$t?v$;msg+ZA?8wyjZ};1ux8Bn6TvLzyL+;@z(FeY%5_X}2>WQxSbt_8~ zVVsC-?C*(HT-WWDP#y`?w^zY;lJ1)$Zw>k9595>z(2_=N8Y+iwg18t z?_V$}$rOF@1=Cmgc-Tbnvp|2)+u5T(tkJx^6j#ZlZV>)>zW+*oJ0o`V2m3Sf&p(x$ zv0FNc%Zou4C0>|(4`g6lFH1H+YGu#Wx&di&i7+~fd0H8{##w&L~JGaJX&_XMA2_#F7N{W1OJ3Kv8Jgb#kT@)=nXi8 z9*pgZu~6qWR`KVXMSo66=3uQ}34G_9z5k#;*iXLf-sxOd*#mSik!p*kfpJioTuuzZ5@kKGwS7VP?B*rhC5lB1^uVactkTDPTuR zN`o(EPT4!Ach5t&$k*IgzU6gy-RV2?;N8Bjh7a|P?A_DH`GN9HZ@xSI{FnC)^$qWp zetz(6xB0fqUw!7mdwib_8{)f5zUo`#o4$AOpu@>))~r!J%kQQ$eCwtDDY!5|{3Gw? zFZYG-JMvS^z_vq&BQ_p96p`XP6tQ3DkIUCjEWlRJd14GWPs{-E0^Gk@_Y*6?`Gdp; zq@_V_e;19s)OTM!_s2p&bI3H(3&ZZI2|{4-)&2j%fo{pb1qqow84&DM_1x|w{QD;U z{TTlq`074Icl`us2XErE%4)k_+l4r-;Orfzg-o|QZAXsvn>H0+zkYp$;&>yHwP)L? z<6rulYuw|#pJ&*=H*5%BzjU?vW4p#A$~m)>u}yL2|;H+QjqVshBa$#+~!a{wHWk?KoFY8@GI{)HLSd(3#~ z!OMDoU(J7lY*CD(oaR1IaV@qcgna0ECQUYZ{B^^~7tf>m0eMs>gj!MjeXZhPO15la z=2wceaUI}JwXo9XUlIJDy3F~1s(aT&WK(i-9@TsglTKPhdNsBT@^pz)AqFA8Y^wI} zw6yfUsoksNpnYGOsy(`!`uhD7n*W#MDxH5*?|<&^1@S?S8 zk*6Nrudi~tt})cKC65a`DmVkq13Uhv?(5Ua^M18P<@0YpKBLD=50Cg&{Qpt!e?{}p z`e$7Dn8%kZZHlyNnU43eVGxTEBzq3HO>7|bjnQM-7HiB)R4)PD1ziO?xS?L$`30K) z*DrJa2WbA$iP3Ga(UjJj4wC)F=I5(ERmiA^%^jNGi5k1By#cOpKYybKQj?OuYY0Zl z%R2v(=6}|R%Uu7RIwTU)M7=0{^o6^3ORs6o{L2OuELu3VVx;WPC9F=yd=o?A;J~=a zt!DnI^H-xx>GN}EPVe#LWxW3f!T+TmwFt_T&d+;%W{)|SG5`P6`{(!So=7b>^iuTB$3)+u^?60- zY^;{%KSc8nAAChR_F~O9x+&kgNMmLL7qCNNS51nKJ^zm0|H`Oe$3N&l>;G}h9d!oF z>m4P!-ke^eOuqPh^2daT_6)67(e^Pyw}(zLX8QFICj%UqJAPj^k7^c2lsW&h=708O zz~AzJ&Hu~#{X)$z?=N~wI-P^Q=T%Hnu<&tm?~-@ETJsP6nR^-d2mD$8_@amrf&Q1!`ojl=9~%33$l$?dm~z$WMZ`Pc zRltCFol3eNx#%^~y%$P`n3!Cue=YfI&h%+LW-(T;4LC>PMn|;4vA3}W? z*+Ge04AS2ds+PBX!I&d(fZDGgRVr&b-Pqjp5x?3w@OHCpKyTAc>t;aDp8s#@>#ucN z_}nwU`hMiEw|aI<#ODkQu`NDXNjB*_2AaIGr9%U$Szl5DW<#|nTLQbt4UdC*Z z{r05do=(VKiyeqOT-kz_Y)VNfxmmR)e(4|bC-eWd}4z0WEtCW?6oQID6x zTL07qN6v*uGXItJ{&>AVb#scfzhX1yJNE6{w?xkk+aY^5w%1?!=j3nT4;_0?YYLnO z4#Y^z797Il-wA#20W-dOMb#}RV&|SYcumJE>Q*6f{Q2{L z>DBg{dq4OGEmUn*p_n$g->Nmfe58(Z0 z1pkGaf8(;N2VB5NJV?^qvjrN$o zx9RU~8UE%Td%yHg>8^#=Z{7Br-|hX5Kk``g#(WnL5Rt`O6Fq;7HoYr{wp`jsLNf+C zMXEtI_ZD*vvmHGDHEfnO`I6{_8YI~ zedo1T_2l$_gKEYGOz734S3>RTzAoh=4$iI;bFgz{#KFh4@1*@K?Kv+$$idFltL~mS z?B1Fa@1mMv`oDqUr2-~(Y&WE>Vj%BTPmcPv;>-Z$AH>&)wflNC+1{g?}J4nz%NtOn>PxHQKc?!zJ(CRJz33aeDvg zjPKX@TPp@D{r!_nknH_+Rio`8`9i3vK1zMnsQLCpg~+pS{mlCxQa`3Tb!(a6Gk(2a{?T~FH9yRI^;`7zPKrgH zt@mdffA=ya14eadJLEC>?Ckjc?;oVNIKCZU2Q{O|NawlK`-kfN)Ajxis#!P?_^WnOOq(xRyueB%v&pE+_w-5C!Izkok?M}`H==-gpQr_f+CB3wLg-~baMeZ1a{ z&CKY~f~I@4;yE;@U;BLjRgT|_A1zrDxO(Nv3%~CkRw7`O@Nbg%H8?u5OmS2HhNk90 z;V|F)Y+PltKXu!Gj~+jsu;=s7gTL6j7kku&-_NdJJK&A}xA*E@sl0DajmigmM@Jrf zsapAiy|jNhw$j0V_2Ye?e*E#XM^2mw-m`})$QS?HG<#;ime=M6JvCu`RNBm`QO}GU p8@2QC^gVyinlibZ`lc3qciy~ Date: Sat, 12 Aug 2023 23:33:06 -0400 Subject: [PATCH 109/468] 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 110/468] 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 111/468] 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 112/468] 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 113/468] 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 114/468] 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 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 cO+^Ri2n`J=C}qEgg#Z8m07*qoM6N<$f@@fh Date: Sun, 13 Aug 2023 17:13:19 -0400 Subject: [PATCH 115/468] 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 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 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 116/468] 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! 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 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 117/468] 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 118/468] 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 119/468] 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 120/468] 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 121/468] 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 122/468] 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 123/468] 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 124/468] 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 125/468] 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 126/468] 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 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 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 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 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 127/468] 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 128/468] 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 129/468] 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 130/468] 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 131/468] 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 132/468] 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 133/468] 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 134/468] 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 135/468] 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 136/468] 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 137/468] 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 138/468] 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 139/468] 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 140/468] 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 141/468] 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 142/468] 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 143/468] 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 144/468] 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 145/468] 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 146/468] 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 147/468] 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 148/468] 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 149/468] 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 zcmai%cTkhd8pcBnh7JN!q=}IhNOBO64oa_5q}Px@1Oh?`HB@QRM5Rbkiu5W72r7ac z2pT|$G(kZ`2uKI1p9%=&sa%+D11 zyED+Ajn>o$31>p@W~h7POwZcE^;eN+a?VfBHUI!%qz7tufbc+6;=uz62@VKaTh&Mk{w=3YOaW&m#{ZnLLaQX zDI)WJ9`PPOu-3nt&~&}-mf_9Dhg32Pg9!4I(~zT&ZF_Yav#b(eeqEb=BV5-hI~X5^`ayGM}nlbT=0w7eZjCQH+XY1xRnG;K%QVt6Rhb zSu@6M&%_)!UyG9M9)t`p`tI3}@d&Xk$)_QBi6mCuSeVXRbV^He2CX!sH~(|#*iz_g zhrw4U+x2qCy{Sz9gHp1{u@udQ?$9TWFIQQygXSVQBe?8i4msY=J}m5M1RrI? zwPw_+#-EqC-4O07gb1$B9RK>{c2S9TyiOC`RCn;rVMaj*!e%3~2-I~Jn(kv5pTUna z*^dDkMI+z5Y!5wjl73!Ecf#q`l+pL_z1d>AP;!s?@zcXc6S`@gK%t6_==$*%jm1Jb z>T!7@i3)`h&g)SMzTe_$nOj~q32%6NAxT>8d;6S6(MAzfeoQc}ps7xYbC{Tb;Frj) zXIx4+re1<82IJVh0|BtVP+oBw?O5;rDe2y1Ch5w|G{l{15PrK#b&f&_&rzSHd{q*-SVOac7tbuT`IGO0 zFmI~Crx8m^zFs5?DSiLshfbC!LuV9TkpBAf32VWYnk(sQhZUTvAsm>mq+3LJe%m5$ z4G8C`U6Dh4xKsT_;5}{e%myI6XFB1s8f-X&{j+s^TdIZ}wF}{!X7RAP%A(@ikd>kY z(arKFF$W3dGWpPIo~0b;L42%fG%dAz4m``9RFiXe^o>k#((jy{#qbl` zWv8rLK{PIJ0m@RF`$8+62erBumBGYHi=QQ&oXf8xWOLu|AY4~d z`p!;sP{eLiB24o2GNxwd)z|u<$CI~YqyQPc0B`%5JB~G$_jYe+6?1YrG7infb*~?# zFAq}p(g)MKh2`c&B7ouZ&)3$TOn=0)B=xvp&vP<3m!m&38C}Y*R0XbCEGwl(JtBHV ze?_H8r=_f@y&+JEYgl~A8MFy%wV7(IUPvBQ zeC}f;2g*o{s4>^v3h5)mdPL1DU2Z#;fy{m$s|JIMWo%{Y8ABCjW1C?kwS>BGLOHFk?qAn}nncI9BoOgsa##wM3*E3Te!!o=Y2I=CFk5H({`|pMqEQLiDH=L!8SV zMl3UC4bz`2`_q>m*!*UfZ{fT4GxM88G>o)lH}<*qMC4MF9aS~fjuGtXHEhXmO$9K^ z(}P5nfffB}C#N#TofDFIt_me;z|Se;Dq0+QIFmYCd~%K{8N}?2a2u;xqGTOVA-jBqORzGxcff%ozCYvws3abwJ0PbE#i)MZ@89Yr6o4NghzS`>d^B30th{)}4@ z#}uD1o2nozn810(a^Ko1I)Hq?3>^IZT>o%M--`6nuW~jP#5-4aq;_QX`_93F9DPzL%5jwpf<1nO2 zCUf0@TO|Kr`T@(DCD?z3r?C!zJ_I3 zS{>bblaSmMd4R>{nO&c31BkxSC5C2Y;@K*?fJK0}6Qmti6A+ zf?7H|GlYb;vC){Ed?bDYTjRhYkvaAt|MAmt00z^mn6{9a>Lv`tN!bLATpg{ED1CtH z#`4uU6H-!ydqfvz6EX^vVVs;^DzZ`g9rVTJURI5^#h^u)O=Sg7i`wkf#;6fe#riUF zxB@ll#(u|&vyHqk&4yabslCj$CB}(iC1$h}Uv3AcB`Ajw0 zvJFD(&CH7R%A3ddgvR$dhlN=TQbGZAejL3v=CxLRsH?U}cYf!x<}ImcIFiw&I957>Reby`Varx%!Hd}X|WR7qhCRE%vw`p6kH(OGbQb&j92DQ z%Ar%B)}@_(x<|`Yk3{TYC~)gbPopB?MxUwB4R4%f^QFL1ghrUTGhu|mUBwilpj5?O zOJ6-g@@9^^Cpn_m=3vV&=)#L?+}N7xaYL=W*~79lM4nz;m}KijJ?12wfk~VI_{LBy+f-f&B>f3GIMVQt;YkuwEL7=u85}h0 zMQ%t7pzxUuvn&{}d+=fWa9sUV3hW1yRj@g?$&T<}Cz+lvDUWD4|jB`TURDR*KR0Oq? zvU|Hj5S$aV>c`EE!}@%7`;5ou7CP)re<5S2F}o4gJiRTC_ow$1mF4B}j81(&woiAm zp#cdz3jV87X6OX0N1Mt+mN*sR8}PbK^uPxgl6W)=(TWRCoDmj3VvKK?oS z>(TnDago{nnsb+BH}p%QOPvOi4fQVT>eFa^(!oI;L>ZTuX;h`$rL_H}KG~brjmT|e z$k^%>mO3kCy`ZCgf`MgIT74@v7CHd5zd}d0N%UD+Dc6SD8-}vNH#9SDXc1FF`HsaS zX2#-|7KM+yh5UEF_w)xMPSnoM?4xtSxwXb~9ZQ0rZN>99j+eZ}Uo@_?)A&e9)j}wH zmx}JAK1QY9<|&F<)(JGi&oo-@51K3_B!nCn1ZAmh97jr%{ZD_Xd~ttx@hEH(b^eVS)cAf@S=r2T!pyocSlLLd@nk&4 z#g%D{hhAQ(YFW%J<*~$h?)vVa0`Fa+4%$n5+k|x1Z4Xw8X^{d4i~557m>LWWPP+sc z!>=4szVSkPw?S#^&R6Rw3*&2DSIQ{$%{c zQ&uaWjZ3h3;P2PoWvsRh7U7R{#Udf@X9EBZg636Rw_Gm?eN zKxMse(^vc(_;=R-*^)=6s_7YU;dh{gZ=gQ{3DC!2{m~wQNMU`1FGkn`iLJX*q<-en z`LD;>%G~JRbp@b({JfE948|AdibeZkWH3mqEE?mE43_cp^i%h9^+2k^;oyM3imSrG 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 150/468] 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 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 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 151/468] 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 152/468] 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 462819904194c835376886a59bf575a719f49924 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 19:10:14 -0400 Subject: [PATCH 153/468] 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 154/468] 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 155/468] 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 156/468] 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 157/468] 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 158/468] 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 159/468] 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 160/468] 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 161/468] 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 162/468] 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 163/468] 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 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 literal 37740 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