From f19f5582209c34363c3072b08bafc9de3ac0205b Mon Sep 17 00:00:00 2001 From: Stefan Paquay <stefanpaquay@gmail.com> Date: Mon, 10 Apr 2017 10:06:03 -0400 Subject: [PATCH] Removed changed bond_harmonic from wrong position. --- src/MOLECULE/bond_harmonic.cpp | 19 ++- src/MOLECULE/bond_harmonic.h | 1 + src/bond_harmonic.cpp | 215 --------------------------------- 3 files changed, 19 insertions(+), 216 deletions(-) delete mode 100644 src/bond_harmonic.cpp diff --git a/src/MOLECULE/bond_harmonic.cpp b/src/MOLECULE/bond_harmonic.cpp index f164a51de4..0763d7d3e2 100644 --- a/src/MOLECULE/bond_harmonic.cpp +++ b/src/MOLECULE/bond_harmonic.cpp @@ -13,6 +13,7 @@ #include <math.h> #include <stdlib.h> +#include <string.h> #include "bond_harmonic.h" #include "atom.h" #include "neighbor.h" @@ -26,7 +27,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -BondHarmonic::BondHarmonic(LAMMPS *lmp) : Bond(lmp) {} +BondHarmonic::BondHarmonic(LAMMPS *lmp) : Bond(lmp) +{ + reinitflag = 1; +} /* ---------------------------------------------------------------------- */ @@ -196,3 +200,16 @@ double BondHarmonic::single(int type, double rsq, int i, int j, if (r > 0.0) fforce = -2.0*rk/r; return rk*dr; } + +/* ---------------------------------------------------------------------- + Return ptr to internal members upon request. +------------------------------------------------------------------------ */ +void *BondHarmonic::extract( char *str, int &dim ) +{ + dim = 1; + if( strcmp(str,"kappa")==0) return (void*) k; + if( strcmp(str,"r0")==0) return (void*) r0; + return NULL; +} + + diff --git a/src/MOLECULE/bond_harmonic.h b/src/MOLECULE/bond_harmonic.h index 7c7125b04c..a0fd24577a 100644 --- a/src/MOLECULE/bond_harmonic.h +++ b/src/MOLECULE/bond_harmonic.h @@ -36,6 +36,7 @@ class BondHarmonic : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); + virtual void *extract(char *, int &); protected: double *k,*r0; diff --git a/src/bond_harmonic.cpp b/src/bond_harmonic.cpp deleted file mode 100644 index f0b6d96cc8..0000000000 --- a/src/bond_harmonic.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* ---------------------------------------------------------------------- - 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 <math.h> -#include <stdlib.h> -#include <string.h> -#include "bond_harmonic.h" -#include "atom.h" -#include "neighbor.h" -#include "domain.h" -#include "comm.h" -#include "force.h" -#include "memory.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -BondHarmonic::BondHarmonic(LAMMPS *lmp) : Bond(lmp) -{ - reinitflag = 1; -} - -/* ---------------------------------------------------------------------- */ - -BondHarmonic::~BondHarmonic() -{ - if (allocated && !copymode) { - memory->destroy(setflag); - memory->destroy(k); - memory->destroy(r0); - } -} - -/* ---------------------------------------------------------------------- */ - -void BondHarmonic::compute(int eflag, int vflag) -{ - int i1,i2,n,type; - double delx,dely,delz,ebond,fbond; - double rsq,r,dr,rk; - - ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; - - double **x = atom->x; - double **f = atom->f; - int **bondlist = neighbor->bondlist; - int nbondlist = neighbor->nbondlist; - int nlocal = atom->nlocal; - int newton_bond = force->newton_bond; - - for (n = 0; n < nbondlist; n++) { - i1 = bondlist[n][0]; - i2 = bondlist[n][1]; - type = bondlist[n][2]; - - delx = x[i1][0] - x[i2][0]; - dely = x[i1][1] - x[i2][1]; - delz = x[i1][2] - x[i2][2]; - - rsq = delx*delx + dely*dely + delz*delz; - r = sqrt(rsq); - dr = r - r0[type]; - rk = k[type] * dr; - - // force & energy - - if (r > 0.0) fbond = -2.0*rk/r; - else fbond = 0.0; - - if (eflag) ebond = rk*dr; - - // apply force to each of 2 atoms - - if (newton_bond || i1 < nlocal) { - f[i1][0] += delx*fbond; - f[i1][1] += dely*fbond; - f[i1][2] += delz*fbond; - } - - if (newton_bond || i2 < nlocal) { - f[i2][0] -= delx*fbond; - f[i2][1] -= dely*fbond; - f[i2][2] -= delz*fbond; - } - - if (evflag) ev_tally(i1,i2,nlocal,newton_bond,ebond,fbond,delx,dely,delz); - } -} - -/* ---------------------------------------------------------------------- */ - -void BondHarmonic::allocate() -{ - allocated = 1; - int n = atom->nbondtypes; - - memory->create(k,n+1,"bond:k"); - memory->create(r0,n+1,"bond:r0"); - - 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 BondHarmonic::coeff(int narg, char **arg) -{ - if (narg != 3) error->all(FLERR,"Incorrect args for bond coefficients"); - if (!allocated) allocate(); - - int ilo,ihi; - force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi); - - double k_one = force->numeric(FLERR,arg[1]); - double r0_one = force->numeric(FLERR,arg[2]); - - int count = 0; - for (int i = ilo; i <= ihi; i++) { - k[i] = k_one; - r0[i] = r0_one; - setflag[i] = 1; - count++; - } - - if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); -} - -/* ---------------------------------------------------------------------- - return an equilbrium bond length -------------------------------------------------------------------------- */ - -double BondHarmonic::equilibrium_distance(int i) -{ - return r0[i]; -} - -/* ---------------------------------------------------------------------- - proc 0 writes out coeffs to restart file -------------------------------------------------------------------------- */ - -void BondHarmonic::write_restart(FILE *fp) -{ - fwrite(&k[1],sizeof(double),atom->nbondtypes,fp); - fwrite(&r0[1],sizeof(double),atom->nbondtypes,fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads coeffs from restart file, bcasts them -------------------------------------------------------------------------- */ - -void BondHarmonic::read_restart(FILE *fp) -{ - allocate(); - - if (comm->me == 0) { - fread(&k[1],sizeof(double),atom->nbondtypes,fp); - fread(&r0[1],sizeof(double),atom->nbondtypes,fp); - } - MPI_Bcast(&k[1],atom->nbondtypes,MPI_DOUBLE,0,world); - MPI_Bcast(&r0[1],atom->nbondtypes,MPI_DOUBLE,0,world); - - for (int i = 1; i <= atom->nbondtypes; i++) setflag[i] = 1; -} - -/* ---------------------------------------------------------------------- - proc 0 writes to data file -------------------------------------------------------------------------- */ - -void BondHarmonic::write_data(FILE *fp) -{ - for (int i = 1; i <= atom->nbondtypes; i++) - fprintf(fp,"%d %g %g\n",i,k[i],r0[i]); -} - -/* ---------------------------------------------------------------------- */ - -double BondHarmonic::single(int type, double rsq, int i, int j, - double &fforce) -{ - double r = sqrt(rsq); - double dr = r - r0[type]; - double rk = k[type] * dr; - fforce = 0; - if (r > 0.0) fforce = -2.0*rk/r; - return rk*dr; -} - -/* ---------------------------------------------------------------------- - Return ptr to internal members upon request. ------------------------------------------------------------------------- */ -void *BondHarmonic::extract( char *str, int &dim ) -{ - dim = 1; - if( strcmp(str,"kappa") == 0 ) return (void*) k; - if( strcmp(str,"r0") == 0 ) return (void*) r0; - return NULL; -} - - -- GitLab