diff --git a/src/angle_zero.cpp b/src/angle_zero.cpp index 3cf403b228..a63f787840 100644 --- a/src/angle_zero.cpp +++ b/src/angle_zero.cpp @@ -82,7 +82,7 @@ void AngleZero::coeff(int narg, char **arg) double AngleZero::equilibrium_angle(int i) { - return 0; + return 0.0; } /* ---------------------------------------------------------------------- @@ -105,5 +105,5 @@ void AngleZero::read_restart(FILE *fp) double AngleZero::single(int type, int i1, int i2, int i3) { - return 0; + return 0.0; } diff --git a/src/bond_zero.cpp b/src/bond_zero.cpp new file mode 100644 index 0000000000..8dbec61cc9 --- /dev/null +++ b/src/bond_zero.cpp @@ -0,0 +1,108 @@ +/* ---------------------------------------------------------------------- + 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 "bond_zero.h" +#include "atom.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +BondZero::BondZero(LAMMPS *lmp) : Bond(lmp) {} + +/* ---------------------------------------------------------------------- */ + +BondZero::~BondZero() +{ + if (allocated && !copymode) { + memory->destroy(setflag); + } +} + +/* ---------------------------------------------------------------------- */ + +void BondZero::compute(int eflag, int vflag) +{ + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = 0; +} + +/* ---------------------------------------------------------------------- */ + +void BondZero::allocate() +{ + allocated = 1; + int n = atom->nbondtypes; + + memory->create(setflag,n+1,"bond:setflag"); + for (int i = 1; i <= n; i++) setflag[i] = 0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more types +------------------------------------------------------------------------- */ + +void BondZero::coeff(int narg, char **arg) +{ + if (narg != 1) error->all(FLERR,"Incorrect args for bond coefficients"); + if (!allocated) allocate(); + + int ilo,ihi; + force->bounds(arg[0],atom->nbondtypes,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 bond coefficients"); +} + +/* ---------------------------------------------------------------------- + return an equilbrium bond length +------------------------------------------------------------------------- */ + +double BondZero::equilibrium_distance(int i) +{ + return 0.0; +} + +/* ---------------------------------------------------------------------- + proc 0 writes out coeffs to restart file +------------------------------------------------------------------------- */ + +void BondZero::write_restart(FILE *fp) {} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +void BondZero::read_restart(FILE *fp) +{ + allocate(); + for (int i = 1; i <= atom->nbondtypes; i++) setflag[i] = 1; +} + +/* ---------------------------------------------------------------------- */ + +double BondZero::single(int type, double rsq, int i, int j, + double &fforce) +{ + return 0.0; +} diff --git a/src/bond_zero.h b/src/bond_zero.h new file mode 100644 index 0000000000..b9c9a06d98 --- /dev/null +++ b/src/bond_zero.h @@ -0,0 +1,54 @@ +/* -*- 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 BOND_CLASS + +BondStyle(zero,BondZero) + +#else + +#ifndef LMP_BOND_ZERO_H +#define LMP_BOND_ZERO_H + +#include +#include "bond.h" + +namespace LAMMPS_NS { + +class BondZero : public Bond { + public: + BondZero(class LAMMPS *); + virtual ~BondZero(); + virtual void compute(int, int); + void coeff(int, char **); + double equilibrium_distance(int); + void write_restart(FILE *); + void read_restart(FILE *); + double single(int, double, int, int, double &); + + protected: + virtual void allocate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Incorrect args for bond coefficients + +Self-explanatory. Check the input script or data file. + +*/