Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/molecule_fragmentation.cpp

    ra67d19 re359a8  
    55 *      Author: heber
    66 */
    7 
    8 #include <cstring>
    97
    108#include "atom.hpp"
     
    1816#include "molecule.hpp"
    1917#include "periodentafel.hpp"
    20 #include "World.hpp"
    2118
    2219/************************************* Functions for class molecule *********************************/
     
    4441  }
    4542  FragmentCount = NoNonHydrogen*(1 << (c*order));
    46   DoLog(1) && (Log() << Verbose(1) << "Upper limit for this subgraph is " << FragmentCount << " for " << NoNonHydrogen << " non-H atoms with maximum bond degree of " << c << "." << endl);
     43  Log() << Verbose(1) << "Upper limit for this subgraph is " << FragmentCount << " for " << NoNonHydrogen << " non-H atoms with maximum bond degree of " << c << "." << endl;
    4744  return FragmentCount;
    4845};
     
    6865    } // else it's "-1" or else and thus must not be added
    6966  }
    70   DoLog(1) && (Log() << Verbose(1) << "The scanned KeySet is ");
     67  Log() << Verbose(1) << "The scanned KeySet is ";
    7168  for(KeySet::iterator runner = CurrentSet.begin(); runner != CurrentSet.end(); runner++) {
    72     DoLog(0) && (Log() << Verbose(0) << (*runner) << "\t");
    73   }
    74   DoLog(0) && (Log() << Verbose(0) << endl);
     69    Log() << Verbose(0) << (*runner) << "\t";
     70  }
     71  Log() << Verbose(0) << endl;
    7572  return (status != 0);
    7673};
     
    10097
    10198  // 1st pass: open file and read
    102   DoLog(1) && (Log() << Verbose(1) << "Parsing the KeySet file ... " << endl);
     99  Log() << Verbose(1) << "Parsing the KeySet file ... " << endl;
    103100  sprintf(filename, "%s/%s%s", path, FRAGMENTPREFIX, KEYSETFILE);
    104101  InputFile.open(filename);
     
    113110        testGraphInsert = FragmentList->insert(GraphPair (CurrentSet,pair<int,double>(NumberOfFragments++,1)));  // store fragment number and current factor
    114111        if (!testGraphInsert.second) {
    115           DoeLog(0) && (eLog()<< Verbose(0) << "KeySet file must be corrupt as there are two equal key sets therein!" << endl);
     112          eLog() << Verbose(0) << "KeySet file must be corrupt as there are two equal key sets therein!" << endl;
    116113          performCriticalExit();
    117114        }
     
    122119    InputFile.clear();
    123120    Free(&buffer);
    124     DoLog(1) && (Log() << Verbose(1) << "done." << endl);
     121    Log() << Verbose(1) << "done." << endl;
    125122  } else {
    126     DoLog(1) && (Log() << Verbose(1) << "File " << filename << " not found." << endl);
     123    Log() << Verbose(1) << "File " << filename << " not found." << endl;
    127124    status = false;
    128125  }
     
    154151
    155152  // 2nd pass: open TEFactors file and read
    156   DoLog(1) && (Log() << Verbose(1) << "Parsing the TEFactors file ... " << endl);
     153  Log() << Verbose(1) << "Parsing the TEFactors file ... " << endl;
    157154  sprintf(filename, "%s/%s%s", path, FRAGMENTPREFIX, TEFACTORSFILE);
    158155  InputFile.open(filename);
     
    164161        InputFile >> TEFactor;
    165162        (*runner).second.second = TEFactor;
    166         DoLog(2) && (Log() << Verbose(2) << "Setting " << ++NumberOfFragments << " fragment's TEFactor to " << (*runner).second.second << "." << endl);
     163        Log() << Verbose(2) << "Setting " << ++NumberOfFragments << " fragment's TEFactor to " << (*runner).second.second << "." << endl;
    167164      } else {
    168165        status = false;
     
    172169    // 4. Free and done
    173170    InputFile.close();
    174     DoLog(1) && (Log() << Verbose(1) << "done." << endl);
     171    Log() << Verbose(1) << "done." << endl;
    175172  } else {
    176     DoLog(1) && (Log() << Verbose(1) << "File " << filename << " not found." << endl);
     173    Log() << Verbose(1) << "File " << filename << " not found." << endl;
    177174    status = false;
    178175  }
     
    202199  line += KEYSETFILE;
    203200  output.open(line.c_str(), ios::out);
    204   DoLog(1) && (Log() << Verbose(1) << "Saving key sets of the total graph ... ");
     201  Log() << Verbose(1) << "Saving key sets of the total graph ... ";
    205202  if(output != NULL) {
    206203    for(Graph::iterator runner = KeySetList.begin(); runner != KeySetList.end(); runner++) {
     
    212209      output << endl;
    213210    }
    214     DoLog(0) && (Log() << Verbose(0) << "done." << endl);
     211    Log() << Verbose(0) << "done." << endl;
    215212  } else {
    216     DoeLog(0) && (eLog()<< Verbose(0) << "Unable to open " << line << " for writing keysets!" << endl);
     213    eLog() << Verbose(0) << "Unable to open " << line << " for writing keysets!" << endl;
    217214    performCriticalExit();
    218215    status = false;
     
    243240  line += TEFACTORSFILE;
    244241  output.open(line.c_str(), ios::out);
    245   DoLog(1) && (Log() << Verbose(1) << "Saving TEFactors of the total graph ... ");
     242  Log() << Verbose(1) << "Saving TEFactors of the total graph ... ";
    246243  if(output != NULL) {
    247244    for(Graph::iterator runner = KeySetList.begin(); runner != KeySetList.end(); runner++)
    248245      output << (*runner).second.second << endl;
    249     DoLog(1) && (Log() << Verbose(1) << "done." << endl);
     246    Log() << Verbose(1) << "done." << endl;
    250247  } else {
    251     DoLog(1) && (Log() << Verbose(1) << "failed to open " << line << "." << endl);
     248    Log() << Verbose(1) << "failed to open " << line << "." << endl;
    252249    status = false;
    253250  }
     
    293290        (*PresentItem).second.first = fabs(Value);
    294291        (*PresentItem).second.second = FragOrder;
    295         DoLog(2) && (Log() << Verbose(2) << "Updated element (" <<  (*PresentItem).first << ",[" << (*PresentItem).second.first << "," << (*PresentItem).second.second << "])." << endl);
     292        Log() << Verbose(2) << "Updated element (" <<  (*PresentItem).first << ",[" << (*PresentItem).second.first << "," << (*PresentItem).second.second << "])." << endl;
    296293      } else {
    297         DoLog(2) && (Log() << Verbose(2) << "Did not update element " <<  (*PresentItem).first << " as " << FragOrder << " is less than or equal to " << (*PresentItem).second.second << "." << endl);
     294        Log() << Verbose(2) << "Did not update element " <<  (*PresentItem).first << " as " << FragOrder << " is less than or equal to " << (*PresentItem).second.second << "." << endl;
    298295      }
    299296    } else {
    300       DoLog(2) && (Log() << Verbose(2) << "Inserted element (" <<  (*PresentItem).first << ",[" << (*PresentItem).second.first << "," << (*PresentItem).second.second << "])." << endl);
     297      Log() << Verbose(2) << "Inserted element (" <<  (*PresentItem).first << ",[" << (*PresentItem).second.first << "," << (*PresentItem).second.second << "])." << endl;
    301298    }
    302299  } else {
    303     DoLog(1) && (Log() << Verbose(1) << "No Fragment under No. " << No << "found." << endl);
     300    Log() << Verbose(1) << "No Fragment under No. " << No << "found." << endl;
    304301  }
    305302};
     
    360357  atom *Walker = mol->start;
    361358  map<double, pair<int,int> > *FinalRootCandidates = new map<double, pair<int,int> > ;
    362   DoLog(1) && (Log() << Verbose(1) << "Root candidate list is: " << endl);
     359  Log() << Verbose(1) << "Root candidate list is: " << endl;
    363360  for(map<int, pair<double,int> >::iterator runner = AdaptiveCriteriaList->begin(); runner != AdaptiveCriteriaList->end(); runner++) {
    364361    Walker = mol->FindAtom((*runner).first);
     
    366363      //if ((*runner).second.second >= Walker->AdaptiveOrder) { // only insert if this is an "active" root site for the current order
    367364      if (!Walker->MaxOrder) {
    368         DoLog(2) && (Log() << Verbose(2) << "(" << (*runner).first << ",[" << (*runner).second.first << "," << (*runner).second.second << "])" << endl);
     365        Log() << Verbose(2) << "(" << (*runner).first << ",[" << (*runner).second.first << "," << (*runner).second.second << "])" << endl;
    369366        FinalRootCandidates->insert( make_pair( (*runner).second.first, pair<int,int>((*runner).first, (*runner).second.second) ) );
    370367      } else {
    371         DoLog(2) && (Log() << Verbose(2) << "Excluding (" << *Walker << ", " << (*runner).first << ",[" << (*runner).second.first << "," << (*runner).second.second << "]), as it has reached its maximum order." << endl);
     368        Log() << Verbose(2) << "Excluding (" << *Walker << ", " << (*runner).first << ",[" << (*runner).second.first << "," << (*runner).second.second << "]), as it has reached its maximum order." << endl;
    372369      }
    373370    } else {
    374       DoeLog(0) && (eLog()<< Verbose(0) << "Atom No. " << (*runner).second.first << " was not found in this molecule." << endl);
     371      eLog() << Verbose(0) << "Atom No. " << (*runner).second.first << " was not found in this molecule." << endl;
    375372      performCriticalExit();
    376373    }
     
    397394    Walker = mol->FindAtom(No);
    398395    //if (Walker->AdaptiveOrder < MinimumRingSize[Walker->nr]) {
    399       DoLog(2) && (Log() << Verbose(2) << "Root " << No << " is still above threshold (10^{" << Order <<"}: " << runner->first << ", setting entry " << No << " of Atom mask to true." << endl);
     396      Log() << Verbose(2) << "Root " << No << " is still above threshold (10^{" << Order <<"}: " << runner->first << ", setting entry " << No << " of Atom mask to true." << endl;
    400397      AtomMask[No] = true;
    401398      status = true;
     
    413410void PrintAtomMask(bool *AtomMask, int AtomCount)
    414411{
    415   DoLog(2) && (Log() << Verbose(2) << "              ");
     412  Log() << Verbose(2) << "              ";
    416413  for(int i=0;i<AtomCount;i++)
    417     DoLog(0) && (Log() << Verbose(0) << (i % 10));
    418   DoLog(0) && (Log() << Verbose(0) << endl);
    419   DoLog(2) && (Log() << Verbose(2) << "Atom mask is: ");
     414    Log() << Verbose(0) << (i % 10);
     415  Log() << Verbose(0) << endl;
     416  Log() << Verbose(2) << "Atom mask is: ";
    420417  for(int i=0;i<AtomCount;i++)
    421     DoLog(0) && (Log() << Verbose(0) << (AtomMask[i] ? "t" : "f"));
    422   DoLog(0) && (Log() << Verbose(0) << endl);
     418    Log() << Verbose(0) << (AtomMask[i] ? "t" : "f");
     419  Log() << Verbose(0) << endl;
    423420};
    424421
     
    447444    // transmorph graph keyset list into indexed KeySetList
    448445    if (GlobalKeySetList == NULL) {
    449       DoeLog(1) && (eLog()<< Verbose(1) << "Given global key set list (graph) is NULL!" << endl);
     446      eLog() << Verbose(1) << "Given global key set list (graph) is NULL!" << endl;
    450447      return false;
    451448    }
     
    455452    map<int, pair<double,int> > *AdaptiveCriteriaList = ScanAdaptiveFileIntoMap(path, *IndexKeySetList); // (Root No., (Value, Order)) !
    456453    if (AdaptiveCriteriaList->empty()) {
    457       DoeLog(2) && (eLog()<< Verbose(2) << "Unable to parse file, incrementing all." << endl);
     454      eLog() << Verbose(2) << "Unable to parse file, incrementing all." << endl;
    458455      while (Walker->next != end) {
    459456        Walker = Walker->next;
     
    493490    if (!status) {
    494491      if (Order == 0)
    495         DoLog(1) && (Log() << Verbose(1) << "Single stepping done." << endl);
     492        Log() << Verbose(1) << "Single stepping done." << endl;
    496493      else
    497         DoLog(1) && (Log() << Verbose(1) << "Order at every site is already equal or above desired order " << Order << "." << endl);
     494        Log() << Verbose(1) << "Order at every site is already equal or above desired order " << Order << "." << endl;
    498495    }
    499496  }
     
    512509{
    513510  if (SortIndex != NULL) {
    514     DoLog(1) && (Log() << Verbose(1) << "SortIndex is " << SortIndex << " and not NULL as expected." << endl);
     511    Log() << Verbose(1) << "SortIndex is " << SortIndex << " and not NULL as expected." << endl;
    515512    return false;
    516513  }
     
    563560  bool *AtomMask = NULL;
    564561
    565   DoLog(0) && (Log() << Verbose(0) << endl);
     562  Log() << Verbose(0) << endl;
    566563#ifdef ADDHYDROGEN
    567   DoLog(0) && (Log() << Verbose(0) << "I will treat hydrogen special and saturate dangling bonds with it." << endl);
     564  Log() << Verbose(0) << "I will treat hydrogen special and saturate dangling bonds with it." << endl;
    568565#else
    569   DoLog(0) && (Log() << Verbose(0) << "Hydrogen is treated just like the rest of the lot." << endl);
     566  Log() << Verbose(0) << "Hydrogen is treated just like the rest of the lot." << endl;
    570567#endif
    571568
     
    593590    // fill the bond structure of the individually stored subgraphs
    594591  MolecularWalker->FillBondStructureFromReference(this, FragmentCounter, ListOfLocalAtoms, false);  // we want to keep the created ListOfLocalAtoms
    595     DoLog(0) && (Log() << Verbose(0) << "Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl);
     592    Log() << Verbose(0) << "Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl;
    596593    LocalBackEdgeStack = new StackClass<bond *> (MolecularWalker->Leaf->BondCount);
    597594//    // check the list of local atoms for debugging
     
    602599//      else
    603600//        Log() << Verbose(0) << "\t" << ListOfLocalAtoms[FragmentCounter][i]->Name;
    604     DoLog(0) && (Log() << Verbose(0) << "Gathering local back edges for subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl);
     601    Log() << Verbose(0) << "Gathering local back edges for subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl;
    605602    MolecularWalker->Leaf->PickLocalBackEdges(ListOfLocalAtoms[FragmentCounter++], BackEdgeStack, LocalBackEdgeStack);
    606     DoLog(0) && (Log() << Verbose(0) << "Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl);
     603    Log() << Verbose(0) << "Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl;
    607604    MolecularWalker->Leaf->CyclicStructureAnalysis(LocalBackEdgeStack, MinimumRingSize);
    608     DoLog(0) && (Log() << Verbose(0) << "Done with Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl);
     605    Log() << Verbose(0) << "Done with Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl;
    609606    delete(LocalBackEdgeStack);
    610607  }
     
    637634    while (MolecularWalker->next != NULL) {
    638635      MolecularWalker = MolecularWalker->next;
    639       DoLog(1) && (Log() << Verbose(1) << "Fragmenting subgraph " << MolecularWalker << "." << endl);
     636      Log() << Verbose(1) << "Fragmenting subgraph " << MolecularWalker << "." << endl;
    640637      //MolecularWalker->Leaf->OutputListOfBonds(out);  // output atom::ListOfBonds for debugging
    641638      if (MolecularWalker->Leaf->first->next != MolecularWalker->Leaf->last) {
    642639        // call BOSSANOVA method
    643         DoLog(0) && (Log() << Verbose(0) << endl << " ========== BOND ENERGY of subgraph " << FragmentCounter << " ========================= " << endl);
     640        Log() << Verbose(0) << endl << " ========== BOND ENERGY of subgraph " << FragmentCounter << " ========================= " << endl;
    644641        MolecularWalker->Leaf->FragmentBOSSANOVA(FragmentList[FragmentCounter], RootStack[FragmentCounter], MinimumRingSize);
    645642      } else {
    646         DoeLog(1) && (eLog()<< Verbose(1) << "Subgraph " << MolecularWalker << " has no atoms!" << endl);
     643        eLog() << Verbose(1) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;
    647644      }
    648645      FragmentCounter++;  // next fragment list
    649646    }
    650647  }
    651   DoLog(2) && (Log() << Verbose(2) << "CheckOrder is " << CheckOrder << "." << endl);
     648  Log() << Verbose(2) << "CheckOrder is " << CheckOrder << "." << endl;
    652649  delete[](RootStack);
    653650  delete[](AtomMask);
     
    680677  for(Graph::iterator runner = TotalGraph.begin(); runner != TotalGraph.end(); runner++) {
    681678    KeySet test = (*runner).first;
    682     DoLog(0) && (Log() << Verbose(0) << "Fragment No." << (*runner).second.first << " with TEFactor " << (*runner).second.second << "." << endl);
     679    Log() << Verbose(0) << "Fragment No." << (*runner).second.first << " with TEFactor " << (*runner).second.second << "." << endl;
    683680    BondFragments->insert(StoreFragmentFromKeySet(test, configuration));
    684681    k++;
    685682  }
    686   DoLog(0) && (Log() << Verbose(0) << k << "/" << BondFragments->ListOfMolecules.size() << " fragments generated from the keysets." << endl);
     683  Log() << Verbose(0) << k << "/" << BondFragments->ListOfMolecules.size() << " fragments generated from the keysets." << endl;
    687684
    688685  // ===== 9. Save fragments' configuration and keyset files et al to disk ===
     
    691688    CreateMappingLabelsToConfigSequence(SortIndex);
    692689
    693     DoLog(1) && (Log() << Verbose(1) << "Writing " << BondFragments->ListOfMolecules.size() << " possible bond fragmentation configs" << endl);
     690    Log() << Verbose(1) << "Writing " << BondFragments->ListOfMolecules.size() << " possible bond fragmentation configs" << endl;
    694691    if (BondFragments->OutputConfigForListOfFragments(configuration, SortIndex))
    695       DoLog(1) && (Log() << Verbose(1) << "All configs written." << endl);
     692      Log() << Verbose(1) << "All configs written." << endl;
    696693    else
    697       DoLog(1) && (Log() << Verbose(1) << "Some config writing failed." << endl);
     694      Log() << Verbose(1) << "Some config writing failed." << endl;
    698695
    699696    // store force index reference file
     
    704701
    705702    // store Adjacency file
    706     char *filename = Malloc<char> (MAXSTRINGSIZE, "molecule::FragmentMolecule - *filename");
    707     strcpy(filename, FRAGMENTPREFIX);
    708     strcat(filename, ADJACENCYFILE);
    709     StoreAdjacencyToFile(configuration->configpath, filename);
    710     Free(&filename);
     703    StoreAdjacencyToFile(configuration->configpath);
    711704
    712705    // store Hydrogen saturation correction file
     
    720713
    721714    // free memory for bond part
    722     DoLog(1) && (Log() << Verbose(1) << "Freeing bond memory" << endl);
     715    Log() << Verbose(1) << "Freeing bond memory" << endl;
    723716    delete(FragmentList); // remove bond molecule from memory
    724717    Free(&SortIndex);
    725718  } else {
    726     DoLog(1) && (Log() << Verbose(1) << "FragmentList is zero on return, splitting failed." << endl);
     719    Log() << Verbose(1) << "FragmentList is zero on return, splitting failed." << endl;
    727720  }
    728721  delete(BondFragments);
    729   DoLog(0) && (Log() << Verbose(0) << "End of bond fragmentation." << endl);
     722  Log() << Verbose(0) << "End of bond fragmentation." << endl;
    730723
    731724  return ((int)(!FragmentationToDo)+1);    // 1 - continue, 2 - stop (no fragmentation occured)
     
    746739  line << path << "/" << FRAGMENTPREFIX << ORDERATSITEFILE;
    747740  file.open(line.str().c_str());
    748   DoLog(1) && (Log() << Verbose(1) << "Writing OrderAtSite " << ORDERATSITEFILE << " ... " << endl);
     741  Log() << Verbose(1) << "Writing OrderAtSite " << ORDERATSITEFILE << " ... " << endl;
    749742  if (file != NULL) {
    750743    ActOnAllAtoms( &atom::OutputOrder, &file );
    751744    file.close();
    752     DoLog(1) && (Log() << Verbose(1) << "done." << endl);
     745    Log() << Verbose(1) << "done." << endl;
    753746    return true;
    754747  } else {
    755     DoLog(1) && (Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl);
     748    Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl;
    756749    return false;
    757750  }
     
    774767  ifstream file;
    775768
    776   DoLog(1) && (Log() << Verbose(1) << "Begin of ParseOrderAtSiteFromFile" << endl);
     769  Log() << Verbose(1) << "Begin of ParseOrderAtSiteFromFile" << endl;
    777770  line << path << "/" << FRAGMENTPREFIX << ORDERATSITEFILE;
    778771  file.open(line.str().c_str());
     
    795788    SetAtomValueToIndexedArray( MaxArray, &atom::nr, &atom::MaxOrder );
    796789
    797     DoLog(1) && (Log() << Verbose(1) << "done." << endl);
     790    Log() << Verbose(1) << "done." << endl;
    798791    status = true;
    799792  } else {
    800     DoLog(1) && (Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl);
     793    Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl;
    801794    status = false;
    802795  }
     
    804797  Free(&MaxArray);
    805798
    806   DoLog(1) && (Log() << Verbose(1) << "End of ParseOrderAtSiteFromFile" << endl);
     799  Log() << Verbose(1) << "End of ParseOrderAtSiteFromFile" << endl;
    807800  return status;
    808801};
     
    821814  int SP, Removal;
    822815
    823   DoLog(2) && (Log() << Verbose(2) << "Looking for removal candidate." << endl);
     816  Log() << Verbose(2) << "Looking for removal candidate." << endl;
    824817  SP = -1; //0;  // not -1, so that Root is never removed
    825818  Removal = -1;
     
    848841
    849842  Leaf->BondDistance = mol->BondDistance;
     843  for(int i=NDIM*2;i--;)
     844    Leaf->cell_size[i] = mol->cell_size[i];
    850845
    851846  // first create the minimal set of atoms from the KeySet
     
    906901      }
    907902    } else {
    908       DoeLog(1) && (eLog()<< Verbose(1) << "Son " << Runner->Name << " has father " << FatherOfRunner->Name << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl);
     903      eLog() << Verbose(1) << "Son " << Runner->Name << " has father " << FatherOfRunner->Name << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl;
    909904    }
    910905    if ((LonelyFlag) && (Leaf->AtomCount > 1)) {
    911       DoLog(0) && (Log() << Verbose(0) << *Runner << "has got bonds only to hydrogens!" << endl);
     906      Log() << Verbose(0) << *Runner << "has got bonds only to hydrogens!" << endl;
    912907    }
    913908#ifdef ADDHYDROGEN
     
    10561051    TouchedList[j] = -1;
    10571052  }
    1058   DoLog(2) && (Log() << Verbose(2) << "Remaining local nr.s on snake stack are: ");
     1053  Log() << Verbose(2) << "Remaining local nr.s on snake stack are: ";
    10591054  for(KeySet::iterator runner = FragmentSet->begin(); runner != FragmentSet->end(); runner++)
    1060     DoLog(0) && (Log() << Verbose(0) << (*runner) << " ");
    1061   DoLog(0) && (Log() << Verbose(0) << endl);
     1055    Log() << Verbose(0) << (*runner) << " ";
     1056  Log() << Verbose(0) << endl;
    10621057  TouchedIndex = 0; // set Index to 0 for list of atoms added on this level
    10631058};
     
    11361131        Log() << Verbose(1+verbosity) << "Enough items on stack for a fragment!" << endl;
    11371132        // store fragment as a KeySet
    1138         DoLog(2) && (Log() << Verbose(2) << "Found a new fragment[" << FragmentSearch->FragmentCounter << "], local nr.s are: ");
     1133        Log() << Verbose(2) << "Found a new fragment[" << FragmentSearch->FragmentCounter << "], local nr.s are: ";
    11391134        for(KeySet::iterator runner = FragmentSearch->FragmentSet->begin(); runner != FragmentSearch->FragmentSet->end(); runner++)
    1140           DoLog(0) && (Log() << Verbose(0) << (*runner) << " ");
    1141         DoLog(0) && (Log() << Verbose(0) << endl);
     1135          Log() << Verbose(0) << (*runner) << " ";
     1136        Log() << Verbose(0) << endl;
    11421137        //if (!CheckForConnectedSubgraph(FragmentSearch->FragmentSet))
    1143           //DoeLog(1) && (eLog()<< Verbose(1) << "The found fragment is not a connected subgraph!" << endl);
     1138          //eLog() << Verbose(1) << "The found fragment is not a connected subgraph!" << endl;
    11441139        InsertFragmentIntoGraph(FragmentSearch);
    11451140      }
     
    12211216{
    12221217  bond *Binder = NULL;
    1223   DoLog(0) && (Log() << Verbose(0) << "Free'ing all found lists. and resetting index lists" << endl);
     1218  Log() << Verbose(0) << "Free'ing all found lists. and resetting index lists" << endl;
    12241219  for(int i=Order;i--;) {
    1225     DoLog(1) && (Log() << Verbose(1) << "Current SP level is " << i << ": ");
     1220    Log() << Verbose(1) << "Current SP level is " << i << ": ";
    12261221    Binder = FragmentSearch.BondsPerSPList[2*i];
    12271222    while (Binder->next != FragmentSearch.BondsPerSPList[2*i+1]) {
     
    12341229    cleanup(FragmentSearch.BondsPerSPList[2*i], FragmentSearch.BondsPerSPList[2*i+1]);
    12351230    // also start and end node
    1236     DoLog(0) && (Log() << Verbose(0) << "cleaned." << endl);
     1231    Log() << Verbose(0) << "cleaned." << endl;
    12371232  }
    12381233};
     
    12641259  int SP = -1;
    12651260
    1266   DoLog(0) && (Log() << Verbose(0) << "Starting BFS analysis ..." << endl);
     1261  Log() << Verbose(0) << "Starting BFS analysis ..." << endl;
    12671262  for (SP = 0; SP < (Order-1); SP++) {
    1268     DoLog(1) && (Log() << Verbose(1) << "New SP level reached: " << SP << ", creating new SP list with " << FragmentSearch.BondsPerSPCount[SP] << " item(s)");
     1263    Log() << Verbose(1) << "New SP level reached: " << SP << ", creating new SP list with " << FragmentSearch.BondsPerSPCount[SP] << " item(s)";
    12691264    if (SP > 0) {
    1270       DoLog(0) && (Log() << Verbose(0) << ", old level closed with " << FragmentSearch.BondsPerSPCount[SP-1] << " item(s)." << endl);
     1265      Log() << Verbose(0) << ", old level closed with " << FragmentSearch.BondsPerSPCount[SP-1] << " item(s)." << endl;
    12711266      FragmentSearch.BondsPerSPCount[SP] = 0;
    12721267    } else
    1273       DoLog(0) && (Log() << Verbose(0) << "." << endl);
     1268      Log() << Verbose(0) << "." << endl;
    12741269
    12751270    RemainingWalkers = FragmentSearch.BondsPerSPCount[SP];
     
    12811276      Predecessor = CurrentEdge->leftatom;    // ... and leftatom is predecessor
    12821277      AtomKeyNr = Walker->nr;
    1283       DoLog(0) && (Log() << Verbose(0) << "Current Walker is: " << *Walker << " with nr " << Walker->nr << " and SP of " << SP << ", with " << RemainingWalkers << " remaining walkers on this level." << endl);
     1278      Log() << Verbose(0) << "Current Walker is: " << *Walker << " with nr " << Walker->nr << " and SP of " << SP << ", with " << RemainingWalkers << " remaining walkers on this level." << endl;
    12841279      // check for new sp level
    12851280      // go through all its bonds
    1286       DoLog(1) && (Log() << Verbose(1) << "Going through all bonds of Walker." << endl);
     1281      Log() << Verbose(1) << "Going through all bonds of Walker." << endl;
    12871282      for (BondList::const_iterator Runner = Walker->ListOfBonds.begin(); Runner != Walker->ListOfBonds.end(); (++Runner)) {
    12881283        OtherWalker = (*Runner)->GetOtherAtom(Walker);
     
    12921287  #endif
    12931288                                                              ) {  // skip hydrogens and restrict to fragment
    1294           DoLog(2) && (Log() << Verbose(2) << "Current partner is " << *OtherWalker << " with nr " << OtherWalker->nr << " in bond " << *(*Runner) << "." << endl);
     1289          Log() << Verbose(2) << "Current partner is " << *OtherWalker << " with nr " << OtherWalker->nr << " in bond " << *(*Runner) << "." << endl;
    12951290          // set the label if not set (and push on root stack as well)
    12961291          if ((OtherWalker != Predecessor) && (OtherWalker->GetTrueFather()->nr > RootKeyNr)) { // only pass through those with label bigger than Root's
    12971292            FragmentSearch.ShortestPathList[OtherWalker->nr] = SP+1;
    1298             DoLog(3) && (Log() << Verbose(3) << "Set Shortest Path to " << FragmentSearch.ShortestPathList[OtherWalker->nr] << "." << endl);
     1293            Log() << Verbose(3) << "Set Shortest Path to " << FragmentSearch.ShortestPathList[OtherWalker->nr] << "." << endl;
    12991294            // add the bond in between to the SP list
    13001295            Binder = new bond(Walker, OtherWalker); // create a new bond in such a manner, that bond::rightatom is always the one more distant
    13011296            add(Binder, FragmentSearch.BondsPerSPList[2*(SP+1)+1]);
    13021297            FragmentSearch.BondsPerSPCount[SP+1]++;
    1303             DoLog(3) && (Log() << Verbose(3) << "Added its bond to SP list, having now " << FragmentSearch.BondsPerSPCount[SP+1] << " item(s)." << endl);
     1298            Log() << Verbose(3) << "Added its bond to SP list, having now " << FragmentSearch.BondsPerSPCount[SP+1] << " item(s)." << endl;
    13041299          } else {
    13051300            if (OtherWalker != Predecessor)
    1306               DoLog(3) && (Log() << Verbose(3) << "Not passing on, as index of " << *OtherWalker << " " << OtherWalker->GetTrueFather()->nr << " is smaller than that of Root " << RootKeyNr << "." << endl);
     1301              Log() << Verbose(3) << "Not passing on, as index of " << *OtherWalker << " " << OtherWalker->GetTrueFather()->nr << " is smaller than that of Root " << RootKeyNr << "." << endl;
    13071302            else
    1308               DoLog(3) && (Log() << Verbose(3) << "This is my predecessor " << *Predecessor << "." << endl);
     1303              Log() << Verbose(3) << "This is my predecessor " << *Predecessor << "." << endl;
    13091304          }
    13101305        } else Log() << Verbose(2) << "Is not in the restricted keyset or skipping hydrogen " << *OtherWalker << "." << endl;
     
    13221317{
    13231318  bond *Binder = NULL;
    1324   DoLog(0) && (Log() << Verbose(0) << "Printing all found lists." << endl);
     1319  Log() << Verbose(0) << "Printing all found lists." << endl;
    13251320  for(int i=1;i<Order;i++) {    // skip the root edge in the printing
    13261321    Binder = FragmentSearch.BondsPerSPList[2*i];
    1327     DoLog(1) && (Log() << Verbose(1) << "Current SP level is " << i << "." << endl);
     1322    Log() << Verbose(1) << "Current SP level is " << i << "." << endl;
    13281323    while (Binder->next != FragmentSearch.BondsPerSPList[2*i+1]) {
    13291324      Binder = Binder->next;
    1330       DoLog(2) && (Log() << Verbose(2) << *Binder << endl);
     1325      Log() << Verbose(2) << *Binder << endl;
    13311326    }
    13321327  }
     
    13721367  int Counter = FragmentSearch.FragmentCounter; // mark current value of counter
    13731368
    1374   DoLog(0) && (Log() << Verbose(0) << endl);
    1375   DoLog(0) && (Log() << Verbose(0) << "Begin of PowerSetGenerator with order " << Order << " at Root " << *FragmentSearch.Root << "." << endl);
     1369  Log() << Verbose(0) << endl;
     1370  Log() << Verbose(0) << "Begin of PowerSetGenerator with order " << Order << " at Root " << *FragmentSearch.Root << "." << endl;
    13761371
    13771372  SetSPList(Order, FragmentSearch);
     
    13851380  // creating fragments with the found edge sets  (may be done in reverse order, faster)
    13861381  int SP = CountNumbersInBondsList(Order, FragmentSearch);
    1387   DoLog(0) && (Log() << Verbose(0) << "Total number of edges is " << SP << "." << endl);
     1382  Log() << Verbose(0) << "Total number of edges is " << SP << "." << endl;
    13881383  if (SP >= (Order-1)) {
    13891384    // start with root (push on fragment stack)
    1390     DoLog(0) && (Log() << Verbose(0) << "Starting fragment generation with " << *FragmentSearch.Root << ", local nr is " << FragmentSearch.Root->nr << "." << endl);
     1385    Log() << Verbose(0) << "Starting fragment generation with " << *FragmentSearch.Root << ", local nr is " << FragmentSearch.Root->nr << "." << endl;
    13911386    FragmentSearch.FragmentSet->clear();
    1392     DoLog(0) && (Log() << Verbose(0) << "Preparing subset for this root and calling generator." << endl);
     1387    Log() << Verbose(0) << "Preparing subset for this root and calling generator." << endl;
    13931388
    13941389    // prepare the subset and call the generator
     
    14001395    Free(&BondsList);
    14011396  } else {
    1402     DoLog(0) && (Log() << Verbose(0) << "Not enough total number of edges to build " << Order << "-body fragments." << endl);
     1397    Log() << Verbose(0) << "Not enough total number of edges to build " << Order << "-body fragments." << endl;
    14031398  }
    14041399
    14051400  // as FragmentSearch structure is used only once, we don't have to clean it anymore
    14061401  // remove root from stack
    1407   DoLog(0) && (Log() << Verbose(0) << "Removing root again from stack." << endl);
     1402  Log() << Verbose(0) << "Removing root again from stack." << endl;
    14081403  FragmentSearch.FragmentSet->erase(FragmentSearch.Root->nr);
    14091404
     
    14121407
    14131408  // return list
    1414   DoLog(0) && (Log() << Verbose(0) << "End of PowerSetGenerator." << endl);
     1409  Log() << Verbose(0) << "End of PowerSetGenerator." << endl;
    14151410  return (FragmentSearch.FragmentCounter - Counter);
    14161411};
     
    14581453  atom *Walker = NULL;
    14591454
    1460   DoLog(0) && (Log() << Verbose(0) << "Combining the lists of all orders per order and finally into a single one." << endl);
     1455  Log() << Verbose(0) << "Combining the lists of all orders per order and finally into a single one." << endl;
    14611456  if (FragmentList == NULL) {
    14621457    FragmentList = new Graph;
     
    14911486void FreeAllOrdersList(Graph ***FragmentLowerOrdersList, KeyStack &RootStack, molecule *mol)
    14921487{
    1493   DoLog(1) && (Log() << Verbose(1) << "Free'ing the lists of all orders per order." << endl);
     1488  Log() << Verbose(1) << "Free'ing the lists of all orders per order." << endl;
    14941489  int RootNr = 0;
    14951490  int RootKeyNr = 0;
     
    15441539  struct UniqueFragments FragmentSearch;
    15451540
    1546   DoLog(0) && (Log() << Verbose(0) << "Begin of FragmentBOSSANOVA." << endl);
     1541  Log() << Verbose(0) << "Begin of FragmentBOSSANOVA." << endl;
    15471542
    15481543  // FragmentLowerOrdersList is a 2D-array of pointer to MoleculeListClass objects, one dimension represents the ANOVA expansion of a single order (i.e. 5)
     
    15941589
    15951590      // create top order where nothing is reduced
    1596       DoLog(0) && (Log() << Verbose(0) << "==============================================================================================================" << endl);
    1597       DoLog(0) && (Log() << Verbose(0) << "Creating KeySets of Bond Order " << Order << " for " << *Walker << ", " << (RootStack.size()-RootNr) << " Roots remaining." << endl); // , NumLevels is " << NumLevels << "
     1591      Log() << Verbose(0) << "==============================================================================================================" << endl;
     1592      Log() << Verbose(0) << "Creating KeySets of Bond Order " << Order << " for " << *Walker << ", " << (RootStack.size()-RootNr) << " Roots remaining." << endl; // , NumLevels is " << NumLevels << "
    15981593
    15991594      // Create list of Graphs of current Bond Order (i.e. F_{ij})
     
    16051600
    16061601      // output resulting number
    1607       DoLog(1) && (Log() << Verbose(1) << "Number of resulting KeySets is: " << NumMoleculesOfOrder[RootNr] << "." << endl);
     1602      Log() << Verbose(1) << "Number of resulting KeySets is: " << NumMoleculesOfOrder[RootNr] << "." << endl;
    16081603      if (NumMoleculesOfOrder[RootNr] != 0) {
    16091604        NumMolecules = 0;
     
    16221617    }
    16231618  }
    1624   DoLog(0) && (Log() << Verbose(0) << "==============================================================================================================" << endl);
    1625   DoLog(1) && (Log() << Verbose(1) << "Total number of resulting molecules is: " << TotalNumMolecules << "." << endl);
    1626   DoLog(0) && (Log() << Verbose(0) << "==============================================================================================================" << endl);
     1619  Log() << Verbose(0) << "==============================================================================================================" << endl;
     1620  Log() << Verbose(1) << "Total number of resulting molecules is: " << TotalNumMolecules << "." << endl;
     1621  Log() << Verbose(0) << "==============================================================================================================" << endl;
    16271622
    16281623  // cleanup FragmentSearch structure
     
    16421637  Free(&NumMoleculesOfOrder);
    16431638
    1644   DoLog(0) && (Log() << Verbose(0) << "End of FragmentBOSSANOVA." << endl);
     1639  Log() << Verbose(0) << "End of FragmentBOSSANOVA." << endl;
    16451640};
    16461641
     
    16571652  atom *Walker = NULL;
    16581653  atom *OtherWalker = NULL;
    1659   double * const cell_size = World::get()->cell_size;
    16601654  double *matrix = ReturnFullMatrixforSymmetric(cell_size);
    16611655  enum Shading *ColorList = NULL;
     
    16661660  bool flag = true;
    16671661
    1668   DoLog(2) && (Log() << Verbose(2) << "Begin of ScanForPeriodicCorrection." << endl);
     1662  Log() << Verbose(2) << "Begin of ScanForPeriodicCorrection." << endl;
    16691663
    16701664  ColorList = Calloc<enum Shading>(AtomCount, "molecule::ScanForPeriodicCorrection: *ColorList");
     
    16841678          OtherBinder = Binder->next; // note down binding partner for later re-insertion
    16851679          unlink(Binder);   // unlink bond
    1686           DoLog(2) && (Log() << Verbose(2) << "Correcting at bond " << *Binder << "." << endl);
     1680          Log() << Verbose(2) << "Correcting at bond " << *Binder << "." << endl;
    16871681          flag = true;
    16881682          break;
     
    17001694      //Log() << Verbose(3) << "Translation vector is ";
    17011695      Translationvector.Output();
    1702       DoLog(0) && (Log() << Verbose(0) << endl);
     1696      Log() << Verbose(0) << endl;
    17031697      // apply to all atoms of first component via BFS
    17041698      for (int i=AtomCount;i--;)
     
    17221716      link(Binder, OtherBinder);
    17231717    } else {
    1724       DoLog(3) && (Log() << Verbose(3) << "No corrections for this fragment." << endl);
     1718      Log() << Verbose(3) << "No corrections for this fragment." << endl;
    17251719    }
    17261720    //delete(CompStack);
     
    17311725  Free(&ColorList);
    17321726  Free(&matrix);
    1733   DoLog(2) && (Log() << Verbose(2) << "End of ScanForPeriodicCorrection." << endl);
    1734 };
     1727  Log() << Verbose(2) << "End of ScanForPeriodicCorrection." << endl;
     1728};
Note: See TracChangeset for help on using the changeset viewer.