Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/moleculelist.cpp

    read4e6 r24a5e0  
    141141void MoleculeListClass::Enumerate(ostream *out)
    142142{
     143  element* Elemental = NULL;
    143144  atom *Walker = NULL;
    144   periodentafel *periode = World::getInstance().getPeriode();
    145   std::map<atomicNumber_t,unsigned int> counts;
     145  int Counts[MAX_ELEMENTS];
    146146  double size=0;
    147147  Vector Origin;
     
    155155    Origin.Zero();
    156156    for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) {
     157      // reset element counts
     158      for (int j = 0; j<MAX_ELEMENTS;j++)
     159        Counts[j] = 0;
    157160      // count atoms per element and determine size of bounding sphere
    158161      size=0.;
     
    160163      while (Walker->next != (*ListRunner)->end) {
    161164        Walker = Walker->next;
    162         counts[Walker->type->getNumber()]++;
     165        Counts[Walker->type->Z]++;
    163166        if (Walker->x.DistanceSquared(&Origin) > size)
    164167          size = Walker->x.DistanceSquared(&Origin);
     
    166169      // output Index, Name, number of atoms, chemical formula
    167170      (*out) << ((*ListRunner)->ActiveFlag ? "*" : " ") << (*ListRunner)->IndexNr << "\t" << (*ListRunner)->name << "\t\t" << (*ListRunner)->AtomCount << "\t";
    168 
    169       std::map<atomicNumber_t,unsigned int>::reverse_iterator iter;
    170       for(iter=counts.rbegin(); iter!=counts.rend();++iter){
    171         atomicNumber_t Z =(*iter).first;
    172         (*out) << periode->FindElement(Z)->getSymbol() << (*iter).second;
     171      Elemental = (*ListRunner)->elemente->end;
     172      while(Elemental->previous != (*ListRunner)->elemente->start) {
     173        Elemental = Elemental->previous;
     174        if (Counts[Elemental->Z] != 0)
     175          (*out) << Elemental->symbol << Counts[Elemental->Z];
    173176      }
    174177      // Center and size
     
    212215  // remove src
    213216  ListOfMolecules.remove(srcmol);
    214   World::getInstance().destroyMolecule(srcmol);
     217  World::get()->destroyMolecule(srcmol);
    215218  return true;
    216219};
     
    577580  stringstream line;
    578581  atom *Walker = NULL;
    579   periodentafel *periode=World::getInstance().getPeriode();
     582  element *runner = NULL;
    580583
    581584  // open file for the force factors
     
    587590    //output << prefix << "Forces" << endl;
    588591    for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) {
    589       periodentafel::const_iterator elemIter;
    590       for(elemIter=periode->begin();elemIter!=periode->end();++elemIter){
    591           if ((*ListRunner)->ElementsInMolecule[(*elemIter).first]) { // if this element got atoms
     592      runner = (*ListRunner)->elemente->start;
     593      while (runner->next != (*ListRunner)->elemente->end) { // go through every element
     594        runner = runner->next;
     595        if ((*ListRunner)->ElementsInMolecule[runner->Z]) { // if this element got atoms
    592596          Walker = (*ListRunner)->start;
    593597          while (Walker->next != (*ListRunner)->end) { // go through every atom of this element
    594598            Walker = Walker->next;
    595             if (Walker->type->getNumber() == (*elemIter).first) {
     599            if (Walker->type->Z == runner->Z) {
    596600              if ((Walker->GetTrueFather() != NULL) && (Walker->GetTrueFather() != Walker)) {// if there is a rea
    597601                //Log() << Verbose(0) << "Walker is " << *Walker << " with true father " << *( Walker->GetTrueFather()) << ", it
     
    746750void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration)
    747751{
    748   molecule *mol = World::getInstance().createMolecule();
     752  molecule *mol = World::get()->createMolecule();
    749753  atom *Walker = NULL;
    750754  atom *Advancer = NULL;
     
    771775    }
    772776    // remove the molecule
    773     World::getInstance().destroyMolecule(*MolRunner);
     777    World::get()->destroyMolecule(*MolRunner);
    774778    ListOfMolecules.erase(MolRunner);
    775779  }
     
    793797  molecule **molecules = Malloc<molecule *>(MolCount, "config::Load() - **molecules");
    794798  for (int i=0;i<MolCount;i++) {
    795     molecules[i] = World::getInstance().createMolecule();
     799    molecules[i] = World::get()->createMolecule();
    796800    molecules[i]->ActiveFlag = true;
    797801    strncpy(molecules[i]->name, mol->name, MAXSTRINGSIZE);
     
    891895  OBSERVE;
    892896  molecule *mol = NULL;
    893   mol = World::getInstance().createMolecule();
     897  mol = World::get()->createMolecule();
    894898  insert(mol);
    895899};
     
    900904  char filename[MAXSTRINGSIZE];
    901905  Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    902   mol = World::getInstance().createMolecule();
     906  mol = World::get()->createMolecule();
    903907  do {
    904908    Log() << Verbose(0) << "Enter file name: ";
     
    958962      mol = *ListRunner;
    959963      ListOfMolecules.erase(ListRunner);
    960       World::getInstance().destroyMolecule(mol);
     964      World::get()->destroyMolecule(mol);
    961965      break;
    962966    }
     
    10051009  // remove the leaf itself
    10061010  if (Leaf != NULL) {
    1007     World::getInstance().destroyMolecule(Leaf);
     1011    World::get()->destroyMolecule(Leaf);
    10081012    Leaf = NULL;
    10091013  }
Note: See TracChangeset for help on using the changeset viewer.