From c200e187b53b9729081797cc97c91c923d745651 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Mon, 22 Feb 2016 23:18:57 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14665 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/improper_zero.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++ src/improper_zero.h | 57 +++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 src/improper_zero.cpp create mode 100644 src/improper_zero.h diff --git a/src/improper_zero.cpp b/src/improper_zero.cpp new file mode 100644 index 0000000000..3931bf20a1 --- /dev/null +++ b/src/improper_zero.cpp @@ -0,0 +1,92 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "improper_zero.h" +#include "atom.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ImproperZero::ImproperZero(LAMMPS *lmp) : Improper(lmp) {} + +/* ---------------------------------------------------------------------- */ + +ImproperZero::~ImproperZero() +{ + if (allocated && !copymode) { + memory->destroy(setflag); + } +} + +/* ---------------------------------------------------------------------- */ + +void ImproperZero::compute(int eflag, int vflag) +{ + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = 0; +} + +/* ---------------------------------------------------------------------- */ + +void ImproperZero::allocate() +{ + allocated = 1; + int n = atom->nimpropertypes; + + memory->create(setflag,n+1,"improper:setflag"); + for (int i = 1; i <= n; i++) setflag[i] = 0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one type +------------------------------------------------------------------------- */ + +void ImproperZero::coeff(int narg, char **arg) +{ + if (narg != 1) error->all(FLERR,"Incorrect args for improper coefficients"); + if (!allocated) allocate(); + + int ilo,ihi; + force->bounds(arg[0],atom->nimpropertypes,ilo,ihi); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + setflag[i] = 1; + count++; + } + + if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients"); +} + +/* ---------------------------------------------------------------------- + proc 0 writes out coeffs to restart file +------------------------------------------------------------------------- */ + +void ImproperZero::write_restart(FILE *fp) {} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +void ImproperZero::read_restart(FILE *fp) +{ + allocate(); + for (int i = 1; i <= atom->nimpropertypes; i++) setflag[i] = 1; +} diff --git a/src/improper_zero.h b/src/improper_zero.h new file mode 100644 index 0000000000..7283e858fb --- /dev/null +++ b/src/improper_zero.h @@ -0,0 +1,57 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef IMPROPER_CLASS + +ImproperStyle(zero,ImproperZero) + +#else + +#ifndef LMP_IMPROPER_ZERO_H +#define LMP_IMPROPER_ZERO_H + +#include +#include "improper.h" + +namespace LAMMPS_NS { + +class ImproperZero : public Improper { + public: + ImproperZero(class LAMMPS *); + virtual ~ImproperZero(); + virtual void compute(int, int); + virtual void coeff(int, char **); + void write_restart(FILE *); + void read_restart(FILE *); + + protected: + virtual void allocate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +W: Improper problem: %d %ld %d %d %d %d + +Conformation of the 4 listed improper atoms is extreme; you may want +to check your simulation geometry. + +E: Incorrect args for improper coefficients + +Self-explanatory. Check the input script or data file. + +*/