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 -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
|
add info to current atom ilocal from molecule template onemol and its iatom
|
||||||
offset = atom ID preceding IDs of atoms in this molecule
|
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->radiusflag && radius_flag) radius[ilocal] = onemol->radius[iatom];
|
||||||
if (onemol->rmassflag && rmass_flag) rmass[ilocal] = onemol->rmass[iatom];
|
if (onemol->rmassflag && rmass_flag) rmass[ilocal] = onemol->rmass[iatom];
|
||||||
else if (rmass_flag)
|
else if (rmass_flag)
|
||||||
rmass[ilocal] = 4.0*MY_PI/3.0 *
|
rmass[ilocal] = 4.0*MY_PI/3.0 * radius[ilocal]*radius[ilocal]*radius[ilocal];
|
||||||
radius[ilocal]*radius[ilocal]*radius[ilocal];
|
|
||||||
if (onemol->bodyflag) {
|
if (onemol->bodyflag) {
|
||||||
body[ilocal] = 0; // as if a body read from data file
|
body[ilocal] = 0; // as if a body read from data file
|
||||||
onemol->avec_body->data_body(ilocal,onemol->nibody,onemol->ndbody,
|
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
|
// initialize custom per-atom properties to zero if present
|
||||||
|
|
||||||
for (int i = 0; i < nivector; ++i)
|
for (int i = 0; i < nivector; ++i) ivector[i][ilocal] = 0;
|
||||||
ivector[i][ilocal] = 0;
|
for (int i = 0; i < ndvector; ++i) dvector[i][ilocal] = 0.0;
|
||||||
for (int i = 0; i < ndvector; ++i)
|
|
||||||
dvector[i][ilocal] = 0.0;
|
|
||||||
for (int i = 0; i < niarray; ++i)
|
for (int i = 0; i < niarray; ++i)
|
||||||
for (int j = 0; j < icols[i]; ++j)
|
for (int j = 0; j < icols[i]; ++j)
|
||||||
iarray[i][ilocal][j] = 0;
|
iarray[i][ilocal][j] = 0;
|
||||||
|
|||||||
@ -345,6 +345,7 @@ class Atom : protected Pointers {
|
|||||||
|
|
||||||
void add_molecule(int, char **);
|
void add_molecule(int, char **);
|
||||||
int find_molecule(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 add_molecule_atom(class Molecule *, int, int, tagint);
|
||||||
|
|
||||||
void first_reorder();
|
void first_reorder();
|
||||||
|
|||||||
Reference in New Issue
Block a user