Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/moleculelist.cpp

    r24a5e0 read4e6  
    141141void MoleculeListClass::Enumerate(ostream *out)
    142142{
    143   element* Elemental = NULL;
    144143  atom *Walker = NULL;
    145   int Counts[MAX_ELEMENTS];
     144  periodentafel *periode = World::getInstance().getPeriode();
     145  std::map<atomicNumber_t,unsigned int> counts;
    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;
    160157      // count atoms per element and determine size of bounding sphere
    161158      size=0.;
     
    163160      while (Walker->next != (*ListRunner)->end) {
    164161        Walker = Walker->next;
    165         Counts[Walker->type->Z]++;
     162        counts[Walker->type->getNumber()]++;
    166163        if (Walker->x.DistanceSquared(&Origin) > size)
    167164          size = Walker->x.DistanceSquared(&Origin);
     
    169166      // output Index, Name, number of atoms, chemical formula
    170167      (*out) << ((*ListRunner)->ActiveFlag ? "*" : " ") << (*ListRunner)->IndexNr << "\t" << (*ListRunner)->name << "\t\t" << (*ListRunner)->AtomCount << "\t";
    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];
     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;
    176173      }
    177174      // Center and size
     
    215212  // remove src
    216213  ListOfMolecules.remove(srcmol);
    217   World::get()->destroyMolecule(srcmol);
     214  World::getInstance().destroyMolecule(srcmol);
    218215  return true;
    219216};
     
    580577  stringstream line;
    581578  atom *Walker = NULL;
    582   element *runner = NULL;
     579  periodentafel *periode=World::getInstance().getPeriode();
    583580
    584581  // open file for the force factors
     
    590587    //output << prefix << "Forces" << endl;
    591588    for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) {
    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
     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
    596592          Walker = (*ListRunner)->start;
    597593          while (Walker->next != (*ListRunner)->end) { // go through every atom of this element
    598594            Walker = Walker->next;
    599             if (Walker->type->Z == runner->Z) {
     595            if (Walker->type->getNumber() == (*elemIter).first) {
    600596              if ((Walker->GetTrueFather() != NULL) && (Walker->GetTrueFather() != Walker)) {// if there is a rea
    601597                //Log() << Verbose(0) << "Walker is " << *Walker << " with true father " << *( Walker->GetTrueFather()) << ", it
     
    750746void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration)
    751747{
    752   molecule *mol = World::get()->createMolecule();
     748  molecule *mol = World::getInstance().createMolecule();
    753749  atom *Walker = NULL;
    754750  atom *Advancer = NULL;
     
    775771    }
    776772    // remove the molecule
    777     World::get()->destroyMolecule(*MolRunner);
     773    World::getInstance().destroyMolecule(*MolRunner);
    778774    ListOfMolecules.erase(MolRunner);
    779775  }
     
    797793  molecule **molecules = Malloc<molecule *>(MolCount, "config::Load() - **molecules");
    798794  for (int i=0;i<MolCount;i++) {
    799     molecules[i] = World::get()->createMolecule();
     795    molecules[i] = World::getInstance().createMolecule();
    800796    molecules[i]->ActiveFlag = true;
    801797    strncpy(molecules[i]->name, mol->name, MAXSTRINGSIZE);
     
    895891  OBSERVE;
    896892  molecule *mol = NULL;
    897   mol = World::get()->createMolecule();
     893  mol = World::getInstance().createMolecule();
    898894  insert(mol);
    899895};
     
    904900  char filename[MAXSTRINGSIZE];
    905901  Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    906   mol = World::get()->createMolecule();
     902  mol = World::getInstance().createMolecule();
    907903  do {
    908904    Log() << Verbose(0) << "Enter file name: ";
     
    962958      mol = *ListRunner;
    963959      ListOfMolecules.erase(ListRunner);
    964       World::get()->destroyMolecule(mol);
     960      World::getInstance().destroyMolecule(mol);
    965961      break;
    966962    }
     
    10091005  // remove the leaf itself
    10101006  if (Leaf != NULL) {
    1011     World::get()->destroyMolecule(Leaf);
     1007    World::getInstance().destroyMolecule(Leaf);
    10121008    Leaf = NULL;
    10131009  }
Note: See TracChangeset for help on using the changeset viewer.