diff --git a/src/atom.cpp b/src/atom.cpp index 91b72841f0..3b9a47918d 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -1900,6 +1900,18 @@ int Atom::find_molecule(char *id) return -1; } +/* ---------------------------------------------------------------------- + return vector of molecules which match template ID +------------------------------------------------------------------------- */ + +std::vectorAtom::get_molecule_by_id(const std::string &id) +{ + std::vector result; + for (int imol = 0; imol < nmolecule; ++imol) + if (id == molecules[imol]->id) result.push_back(molecules[imol]); + return result; +} + /* ---------------------------------------------------------------------- add info to current atom ilocal from molecule template onemol and its iatom offset = atom ID preceding IDs of atoms in this molecule @@ -1912,8 +1924,7 @@ void Atom::add_molecule_atom(Molecule *onemol, int iatom, int ilocal, tagint off if (onemol->radiusflag && radius_flag) radius[ilocal] = onemol->radius[iatom]; if (onemol->rmassflag && rmass_flag) rmass[ilocal] = onemol->rmass[iatom]; else if (rmass_flag) - rmass[ilocal] = 4.0*MY_PI/3.0 * - radius[ilocal]*radius[ilocal]*radius[ilocal]; + rmass[ilocal] = 4.0*MY_PI/3.0 * radius[ilocal]*radius[ilocal]*radius[ilocal]; if (onemol->bodyflag) { body[ilocal] = 0; // as if a body read from data file onemol->avec_body->data_body(ilocal,onemol->nibody,onemol->ndbody, @@ -1923,10 +1934,8 @@ void Atom::add_molecule_atom(Molecule *onemol, int iatom, int ilocal, tagint off // initialize custom per-atom properties to zero if present - for (int i = 0; i < nivector; ++i) - ivector[i][ilocal] = 0; - for (int i = 0; i < ndvector; ++i) - dvector[i][ilocal] = 0.0; + for (int i = 0; i < nivector; ++i) ivector[i][ilocal] = 0; + for (int i = 0; i < ndvector; ++i) dvector[i][ilocal] = 0.0; for (int i = 0; i < niarray; ++i) for (int j = 0; j < icols[i]; ++j) iarray[i][ilocal][j] = 0; diff --git a/src/atom.h b/src/atom.h index df43898dbf..b5b52d7421 100644 --- a/src/atom.h +++ b/src/atom.h @@ -345,6 +345,7 @@ class Atom : protected Pointers { void add_molecule(int, char **); int find_molecule(char *); + std::vectorget_molecule_by_id(const std::string &); void add_molecule_atom(class Molecule *, int, int, tagint); void first_reorder();