add new api to access molecules.
This commit is contained in:
21
src/atom.cpp
21
src/atom.cpp
@ -1900,6 +1900,18 @@ int Atom::find_molecule(char *id)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
return vector of molecules which match template ID
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
std::vector<Molecule *>Atom::get_molecule_by_id(const std::string &id)
|
||||
{
|
||||
std::vector<Molecule *> 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;
|
||||
|
||||
@ -345,6 +345,7 @@ class Atom : protected Pointers {
|
||||
|
||||
void add_molecule(int, char **);
|
||||
int find_molecule(char *);
|
||||
std::vector<Molecule *>get_molecule_by_id(const std::string &);
|
||||
void add_molecule_atom(class Molecule *, int, int, tagint);
|
||||
|
||||
void first_reorder();
|
||||
|
||||
Reference in New Issue
Block a user