Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/builder.cpp

    ra67d19 r4fc93f  
    5050using namespace std;
    5151
    52 #include <cstring>
    53 
    54 #include "analysis_bonds.hpp"
    5552#include "analysis_correlation.hpp"
    5653#include "atom.hpp"
     
    6865#include "molecule.hpp"
    6966#include "periodentafel.hpp"
    70 #include "version.h"
    71 #include "World.hpp"
    7267
    7368/********************************************* Subsubmenu routine ************************************/
     
    8681  bool valid;
    8782
    88   cout << Verbose(0) << "===========ADD ATOM============================" << endl;
    89   cout << Verbose(0) << " a - state absolute coordinates of atom" << endl;
    90   cout << Verbose(0) << " b - state relative coordinates of atom wrt to reference point" << endl;
    91   cout << Verbose(0) << " c - state relative coordinates of atom wrt to already placed atom" << endl;
    92   cout << Verbose(0) << " d - state two atoms, two angles and a distance" << endl;
    93   cout << Verbose(0) << " e - least square distance position to a set of atoms" << endl;
    94   cout << Verbose(0) << "all else - go back" << endl;
    95   cout << Verbose(0) << "===============================================" << endl;
    96   cout << Verbose(0) << "Note: Specifiy angles in degrees not multiples of Pi!" << endl;
    97   cout << Verbose(0) << "INPUT: ";
     83  Log() << Verbose(0) << "===========ADD ATOM============================" << endl;
     84  Log() << Verbose(0) << " a - state absolute coordinates of atom" << endl;
     85  Log() << Verbose(0) << " b - state relative coordinates of atom wrt to reference point" << endl;
     86  Log() << Verbose(0) << " c - state relative coordinates of atom wrt to already placed atom" << endl;
     87  Log() << Verbose(0) << " d - state two atoms, two angles and a distance" << endl;
     88  Log() << Verbose(0) << " e - least square distance position to a set of atoms" << endl;
     89  Log() << Verbose(0) << "all else - go back" << endl;
     90  Log() << Verbose(0) << "===============================================" << endl;
     91  Log() << Verbose(0) << "Note: Specifiy angles in degrees not multiples of Pi!" << endl;
     92  Log() << Verbose(0) << "INPUT: ";
    9893  cin >> choice;
    9994
    10095  switch (choice) {
    10196    default:
    102       DoeLog(2) && (eLog()<< Verbose(2) << "Not a valid choice." << endl);
     97      eLog() << Verbose(2) << "Not a valid choice." << endl;
    10398      break;
    10499      case 'a': // absolute coordinates of atom
    105         cout << Verbose(0) << "Enter absolute coordinates." << endl;
     100        Log() << Verbose(0) << "Enter absolute coordinates." << endl;
    106101        first = new atom;
    107         first->x.AskPosition(World::get()->cell_size, false);
     102        first->x.AskPosition(mol->cell_size, false);
    108103        first->type = periode->AskElement();  // give type
    109104        mol->AddAtom(first);  // add to molecule
     
    114109        valid = true;
    115110        do {
    116           if (!valid) DoeLog(2) && (eLog()<< Verbose(2) << "Resulting position out of cell." << endl);
    117           cout << Verbose(0) << "Enter reference coordinates." << endl;
    118           x.AskPosition(World::get()->cell_size, true);
    119           cout << Verbose(0) << "Enter relative coordinates." << endl;
    120           first->x.AskPosition(World::get()->cell_size, false);
     111          if (!valid) eLog() << Verbose(2) << "Resulting position out of cell." << endl;
     112          Log() << Verbose(0) << "Enter reference coordinates." << endl;
     113          x.AskPosition(mol->cell_size, true);
     114          Log() << Verbose(0) << "Enter relative coordinates." << endl;
     115          first->x.AskPosition(mol->cell_size, false);
    121116          first->x.AddVector((const Vector *)&x);
    122           cout << Verbose(0) << "\n";
     117          Log() << Verbose(0) << "\n";
    123118        } while (!(valid = mol->CheckBounds((const Vector *)&first->x)));
    124119        first->type = periode->AskElement();  // give type
     
    130125        valid = true;
    131126        do {
    132           if (!valid) DoeLog(2) && (eLog()<< Verbose(2) << "Resulting position out of cell." << endl);
     127          if (!valid) eLog() << Verbose(2) << "Resulting position out of cell." << endl;
    133128          second = mol->AskAtom("Enter atom number: ");
    134           DoLog(0) && (Log() << Verbose(0) << "Enter relative coordinates." << endl);
    135           first->x.AskPosition(World::get()->cell_size, false);
     129          Log() << Verbose(0) << "Enter relative coordinates." << endl;
     130          first->x.AskPosition(mol->cell_size, false);
    136131          for (int i=NDIM;i--;) {
    137132            first->x.x[i] += second->x.x[i];
     
    147142        do {
    148143          if (!valid) {
    149             DoeLog(2) && (eLog()<< Verbose(2) << "Resulting coordinates out of cell - " << first->x << endl);
     144            eLog() << Verbose(2) << "Resulting coordinates out of cell - " << first->x << endl;
    150145          }
    151           cout << Verbose(0) << "First, we need two atoms, the first atom is the central, while the second is the outer one." << endl;
     146          Log() << Verbose(0) << "First, we need two atoms, the first atom is the central, while the second is the outer one." << endl;
    152147          second = mol->AskAtom("Enter central atom: ");
    153148          third = mol->AskAtom("Enter second atom (specifying the axis for first angle): ");
     
    160155          c *= M_PI/180.;
    161156          bound(&c, -M_PI, M_PI);
    162           cout << Verbose(0) << "radius: " << a << "\t phi: " << b*180./M_PI << "\t theta: " << c*180./M_PI << endl;
     157          Log() << Verbose(0) << "radius: " << a << "\t phi: " << b*180./M_PI << "\t theta: " << c*180./M_PI << endl;
    163158/*
    164159          second->Output(1,1,(ofstream *)&cout);
     
    172167
    173168          if (!z.SolveSystem(&x,&y,&n, b, c, a)) {
    174          coutg() << Verbose(0) << "Failure solving self-dependent linear system!" << endl;
     169            Log() << Verbose(0) << "Failure solving self-dependent linear system!" << endl;
    175170            continue;
    176171          }
    177           DoLog(0) && (Log() << Verbose(0) << "resulting relative coordinates: ");
     172          Log() << Verbose(0) << "resulting relative coordinates: ";
    178173          z.Output();
    179           DoLog(0) && (Log() << Verbose(0) << endl);
     174          Log() << Verbose(0) << endl;
    180175          */
    181176          // calc axis vector
     
    185180          Log() << Verbose(0) << "x: ",
    186181          x.Output();
    187           DoLog(0) && (Log() << Verbose(0) << endl);
     182          Log() << Verbose(0) << endl;
    188183          z.MakeNormalVector(&second->x,&third->x,&fourth->x);
    189184          Log() << Verbose(0) << "z: ",
    190185          z.Output();
    191           DoLog(0) && (Log() << Verbose(0) << endl);
     186          Log() << Verbose(0) << endl;
    192187          y.MakeNormalVector(&x,&z);
    193188          Log() << Verbose(0) << "y: ",
    194189          y.Output();
    195           DoLog(0) && (Log() << Verbose(0) << endl);
     190          Log() << Verbose(0) << endl;
    196191
    197192          // rotate vector around first angle
     
    200195          Log() << Verbose(0) << "Rotated vector: ",
    201196          first->x.Output();
    202           DoLog(0) && (Log() << Verbose(0) << endl);
     197          Log() << Verbose(0) << endl;
    203198          // remove the projection onto the rotation plane of the second angle
    204199          n.CopyVector(&y);
     
    206201          Log() << Verbose(0) << "N1: ",
    207202          n.Output();
    208           DoLog(0) && (Log() << Verbose(0) << endl);
     203          Log() << Verbose(0) << endl;
    209204          first->x.SubtractVector(&n);
    210205          Log() << Verbose(0) << "Subtracted vector: ",
    211206          first->x.Output();
    212           DoLog(0) && (Log() << Verbose(0) << endl);
     207          Log() << Verbose(0) << endl;
    213208          n.CopyVector(&z);
    214209          n.Scale(first->x.ScalarProduct(&z));
    215210          Log() << Verbose(0) << "N2: ",
    216211          n.Output();
    217           DoLog(0) && (Log() << Verbose(0) << endl);
     212          Log() << Verbose(0) << endl;
    218213          first->x.SubtractVector(&n);
    219214          Log() << Verbose(0) << "2nd subtracted vector: ",
    220215          first->x.Output();
    221           DoLog(0) && (Log() << Verbose(0) << endl);
     216          Log() << Verbose(0) << endl;
    222217
    223218          // rotate another vector around second angle
     
    226221          Log() << Verbose(0) << "2nd Rotated vector: ",
    227222          n.Output();
    228           DoLog(0) && (Log() << Verbose(0) << endl);
     223          Log() << Verbose(0) << endl;
    229224
    230225          // add the two linear independent vectors
     
    234229          first->x.AddVector(&second->x);
    235230
    236           DoLog(0) && (Log() << Verbose(0) << "resulting coordinates: ");
     231          Log() << Verbose(0) << "resulting coordinates: ";
    237232          first->x.Output();
    238           DoLog(0) && (Log() << Verbose(0) << endl);
     233          Log() << Verbose(0) << endl;
    239234        } while (!(valid = mol->CheckBounds((const Vector *)&first->x)));
    240235        first->type = periode->AskElement();  // give type
     
    249244          atoms[i] = NULL;
    250245        int i=0, j=0;
    251         cout << Verbose(0) << "Now we need at least three molecules.\n";
     246        Log() << Verbose(0) << "Now we need at least three molecules.\n";
    252247        do {
    253           cout << Verbose(0) << "Enter " << i+1 << "th atom: ";
     248          Log() << Verbose(0) << "Enter " << i+1 << "th atom: ";
    254249          cin >> j;
    255250          if (j != -1) {
     
    266261        } else {
    267262          delete first;
    268           cout << Verbose(0) << "Please enter at least two vectors!\n";
     263          Log() << Verbose(0) << "Please enter at least two vectors!\n";
    269264        }
    270265        break;
     
    280275  char choice;  // menu choice char
    281276
    282   cout << Verbose(0) << "===========CENTER ATOMS=========================" << endl;
    283   cout << Verbose(0) << " a - on origin" << endl;
    284   cout << Verbose(0) << " b - on center of gravity" << endl;
    285   cout << Verbose(0) << " c - within box with additional boundary" << endl;
    286   cout << Verbose(0) << " d - within given simulation box" << endl;
    287   cout << Verbose(0) << "all else - go back" << endl;
    288   cout << Verbose(0) << "===============================================" << endl;
    289   cout << Verbose(0) << "INPUT: ";
     277  Log() << Verbose(0) << "===========CENTER ATOMS=========================" << endl;
     278  Log() << Verbose(0) << " a - on origin" << endl;
     279  Log() << Verbose(0) << " b - on center of gravity" << endl;
     280  Log() << Verbose(0) << " c - within box with additional boundary" << endl;
     281  Log() << Verbose(0) << " d - within given simulation box" << endl;
     282  Log() << Verbose(0) << "all else - go back" << endl;
     283  Log() << Verbose(0) << "===============================================" << endl;
     284  Log() << Verbose(0) << "INPUT: ";
    290285  cin >> choice;
    291286
    292287  switch (choice) {
    293288    default:
    294       cout << Verbose(0) << "Not a valid choice." << endl;
     289      Log() << Verbose(0) << "Not a valid choice." << endl;
    295290      break;
    296291    case 'a':
    297       cout << Verbose(0) << "Centering atoms in config file on origin." << endl;
     292      Log() << Verbose(0) << "Centering atoms in config file on origin." << endl;
    298293      mol->CenterOrigin();
    299294      break;
    300295    case 'b':
    301       cout << Verbose(0) << "Centering atoms in config file on center of gravity." << endl;
     296      Log() << Verbose(0) << "Centering atoms in config file on center of gravity." << endl;
    302297      mol->CenterPeriodic();
    303298      break;
    304299    case 'c':
    305       cout << Verbose(0) << "Centering atoms in config file within given additional boundary." << endl;
     300      Log() << Verbose(0) << "Centering atoms in config file within given additional boundary." << endl;
    306301      for (int i=0;i<NDIM;i++) {
    307         cout << Verbose(0) << "Enter axis " << i << " boundary: ";
     302        Log() << Verbose(0) << "Enter axis " << i << " boundary: ";
    308303        cin >> y.x[i];
    309304      }
     
    316311      break;
    317312    case 'd':
    318       cout << Verbose(1) << "Centering atoms in config file within given simulation box." << endl;
     313      Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl;
    319314      for (int i=0;i<NDIM;i++) {
    320         cout << Verbose(0) << "Enter axis " << i << " boundary: ";
     315        Log() << Verbose(0) << "Enter axis " << i << " boundary: ";
    321316        cin >> x.x[i];
    322317      }
     
    339334  char choice;  // menu choice char
    340335
    341   cout << Verbose(0) << "===========ALIGN ATOMS=========================" << endl;
    342   cout << Verbose(0) << " a - state three atoms defining align plane" << endl;
    343   cout << Verbose(0) << " b - state alignment vector" << endl;
    344   cout << Verbose(0) << " c - state two atoms in alignment direction" << endl;
    345   cout << Verbose(0) << " d - align automatically by least square fit" << endl;
    346   cout << Verbose(0) << "all else - go back" << endl;
    347   cout << Verbose(0) << "===============================================" << endl;
    348   cout << Verbose(0) << "INPUT: ";
     336  Log() << Verbose(0) << "===========ALIGN ATOMS=========================" << endl;
     337  Log() << Verbose(0) << " a - state three atoms defining align plane" << endl;
     338  Log() << Verbose(0) << " b - state alignment vector" << endl;
     339  Log() << Verbose(0) << " c - state two atoms in alignment direction" << endl;
     340  Log() << Verbose(0) << " d - align automatically by least square fit" << endl;
     341  Log() << Verbose(0) << "all else - go back" << endl;
     342  Log() << Verbose(0) << "===============================================" << endl;
     343  Log() << Verbose(0) << "INPUT: ";
    349344  cin >> choice;
    350345
     
    359354      break;
    360355    case 'b': // normal vector of mirror plane
    361       cout << Verbose(0) << "Enter normal vector of mirror plane." << endl;
    362       n.AskPosition(World::get()->cell_size,0);
     356      Log() << Verbose(0) << "Enter normal vector of mirror plane." << endl;
     357      n.AskPosition(mol->cell_size,0);
    363358      n.Normalize();
    364359      break;
     
    379374        fscanf(stdin, "%3s", shorthand);
    380375      } while ((param.type = periode->FindElement(shorthand)) == NULL);
    381       cout << Verbose(0) << "Element is " << param.type->name << endl;
     376      Log() << Verbose(0) << "Element is " << param.type->name << endl;
    382377      mol->GetAlignvector(&param);
    383378      for (int i=NDIM;i--;) {
     
    386381      }
    387382      gsl_vector_free(param.x);
    388       cout << Verbose(0) << "Offset vector: ";
     383      Log() << Verbose(0) << "Offset vector: ";
    389384      x.Output();
    390       DoLog(0) && (Log() << Verbose(0) << endl);
     385      Log() << Verbose(0) << endl;
    391386      n.Normalize();
    392387      break;
    393388  };
    394   DoLog(0) && (Log() << Verbose(0) << "Alignment vector: ");
     389  Log() << Verbose(0) << "Alignment vector: ";
    395390  n.Output();
    396   DoLog(0) && (Log() << Verbose(0) << endl);
     391  Log() << Verbose(0) << endl;
    397392  mol->Align(&n);
    398393};
     
    407402  char choice;  // menu choice char
    408403
    409   DoLog(0) && (Log() << Verbose(0) << "===========MIRROR ATOMS=========================" << endl);
    410   DoLog(0) && (Log() << Verbose(0) << " a - state three atoms defining mirror plane" << endl);
    411   DoLog(0) && (Log() << Verbose(0) << " b - state normal vector of mirror plane" << endl);
    412   DoLog(0) && (Log() << Verbose(0) << " c - state two atoms in normal direction" << endl);
    413   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    414   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
    415   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     404  Log() << Verbose(0) << "===========MIRROR ATOMS=========================" << endl;
     405  Log() << Verbose(0) << " a - state three atoms defining mirror plane" << endl;
     406  Log() << Verbose(0) << " b - state normal vector of mirror plane" << endl;
     407  Log() << Verbose(0) << " c - state two atoms in normal direction" << endl;
     408  Log() << Verbose(0) << "all else - go back" << endl;
     409  Log() << Verbose(0) << "===============================================" << endl;
     410  Log() << Verbose(0) << "INPUT: ";
    416411  cin >> choice;
    417412
     
    426421      break;
    427422    case 'b': // normal vector of mirror plane
    428       DoLog(0) && (Log() << Verbose(0) << "Enter normal vector of mirror plane." << endl);
    429       n.AskPosition(World::get()->cell_size,0);
     423      Log() << Verbose(0) << "Enter normal vector of mirror plane." << endl;
     424      n.AskPosition(mol->cell_size,0);
    430425      n.Normalize();
    431426      break;
     
    439434      break;
    440435  };
    441   DoLog(0) && (Log() << Verbose(0) << "Normal vector: ");
     436  Log() << Verbose(0) << "Normal vector: ";
    442437  n.Output();
    443   DoLog(0) && (Log() << Verbose(0) << endl);
     438  Log() << Verbose(0) << endl;
    444439  mol->Mirror((const Vector *)&n);
    445440};
     
    455450  char choice;  // menu choice char
    456451
    457   DoLog(0) && (Log() << Verbose(0) << "===========REMOVE ATOMS=========================" << endl);
    458   DoLog(0) && (Log() << Verbose(0) << " a - state atom for removal by number" << endl);
    459   DoLog(0) && (Log() << Verbose(0) << " b - keep only in radius around atom" << endl);
    460   DoLog(0) && (Log() << Verbose(0) << " c - remove this with one axis greater value" << endl);
    461   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    462   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
    463   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     452  Log() << Verbose(0) << "===========REMOVE ATOMS=========================" << endl;
     453  Log() << Verbose(0) << " a - state atom for removal by number" << endl;
     454  Log() << Verbose(0) << " b - keep only in radius around atom" << endl;
     455  Log() << Verbose(0) << " c - remove this with one axis greater value" << endl;
     456  Log() << Verbose(0) << "all else - go back" << endl;
     457  Log() << Verbose(0) << "===============================================" << endl;
     458  Log() << Verbose(0) << "INPUT: ";
    464459  cin >> choice;
    465460
     
    468463    case 'a':
    469464      if (mol->RemoveAtom(mol->AskAtom("Enter number of atom within molecule: ")))
    470         DoLog(1) && (Log() << Verbose(1) << "Atom removed." << endl);
     465        Log() << Verbose(1) << "Atom removed." << endl;
    471466      else
    472         DoLog(1) && (Log() << Verbose(1) << "Atom not found." << endl);
     467        Log() << Verbose(1) << "Atom not found." << endl;
    473468      break;
    474469    case 'b':
    475470      second = mol->AskAtom("Enter number of atom as reference point: ");
    476       DoLog(0) && (Log() << Verbose(0) << "Enter radius: ");
     471      Log() << Verbose(0) << "Enter radius: ";
    477472      cin >> tmp1;
    478473      first = mol->start;
     
    486481      break;
    487482    case 'c':
    488       DoLog(0) && (Log() << Verbose(0) << "Which axis is it: ");
     483      Log() << Verbose(0) << "Which axis is it: ";
    489484      cin >> axis;
    490       DoLog(0) && (Log() << Verbose(0) << "Lower boundary: ");
     485      Log() << Verbose(0) << "Lower boundary: ";
    491486      cin >> tmp1;
    492       DoLog(0) && (Log() << Verbose(0) << "Upper boundary: ");
     487      Log() << Verbose(0) << "Upper boundary: ";
    493488      cin >> tmp2;
    494489      first = mol->start;
     
    520515  char choice;  // menu choice char
    521516
    522   DoLog(0) && (Log() << Verbose(0) << "===========MEASURE ATOMS=========================" << endl);
    523   DoLog(0) && (Log() << Verbose(0) << " a - calculate bond length between one atom and all others" << endl);
    524   DoLog(0) && (Log() << Verbose(0) << " b - calculate bond length between two atoms" << endl);
    525   DoLog(0) && (Log() << Verbose(0) << " c - calculate bond angle" << endl);
    526   DoLog(0) && (Log() << Verbose(0) << " d - calculate principal axis of the system" << endl);
    527   DoLog(0) && (Log() << Verbose(0) << " e - calculate volume of the convex envelope" << endl);
    528   DoLog(0) && (Log() << Verbose(0) << " f - calculate temperature from current velocity" << endl);
    529   DoLog(0) && (Log() << Verbose(0) << " g - output all temperatures per step from velocities" << endl);
    530   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    531   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
    532   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     517  Log() << Verbose(0) << "===========MEASURE ATOMS=========================" << endl;
     518  Log() << Verbose(0) << " a - calculate bond length between one atom and all others" << endl;
     519  Log() << Verbose(0) << " b - calculate bond length between two atoms" << endl;
     520  Log() << Verbose(0) << " c - calculate bond angle" << endl;
     521  Log() << Verbose(0) << " d - calculate principal axis of the system" << endl;
     522  Log() << Verbose(0) << " e - calculate volume of the convex envelope" << endl;
     523  Log() << Verbose(0) << " f - calculate temperature from current velocity" << endl;
     524  Log() << Verbose(0) << " g - output all temperatures per step from velocities" << endl;
     525  Log() << Verbose(0) << "all else - go back" << endl;
     526  Log() << Verbose(0) << "===============================================" << endl;
     527  Log() << Verbose(0) << "INPUT: ";
    533528  cin >> choice;
    534529
    535530  switch(choice) {
    536531    default:
    537       DoLog(1) && (Log() << Verbose(1) << "Not a valid choice." << endl);
     532      Log() << Verbose(1) << "Not a valid choice." << endl;
    538533      break;
    539534    case 'a':
     
    567562      x.SubtractVector((const Vector *)&second->x);
    568563      tmp1 = x.Norm();
    569       DoLog(1) && (Log() << Verbose(1) << "Distance vector is ");
     564      Log() << Verbose(1) << "Distance vector is ";
    570565      x.Output();
    571       DoLog(0) && (Log() << Verbose(0) << "." << endl << "Norm of distance is " << tmp1 << "." << endl);
     566      Log() << Verbose(0) << "." << endl << "Norm of distance is " << tmp1 << "." << endl;
    572567      break;
    573568
    574569    case 'c':
    575       DoLog(0) && (Log() << Verbose(0) << "Evaluating bond angle between three - first, central, last - atoms." << endl);
     570      Log() << Verbose(0) << "Evaluating bond angle between three - first, central, last - atoms." << endl;
    576571      first = mol->AskAtom("Enter first atom: ");
    577572      second = mol->AskAtom("Enter central atom: ");
     
    582577      y.CopyVector((const Vector *)&third->x);
    583578      y.SubtractVector((const Vector *)&second->x);
    584       DoLog(0) && (Log() << Verbose(0) << "Bond angle between first atom Nr." << first->nr << ", central atom Nr." << second->nr << " and last atom Nr." << third->nr << ": ");
    585       DoLog(0) && (Log() << Verbose(0) << (acos(x.ScalarProduct((const Vector *)&y)/(y.Norm()*x.Norm()))/M_PI*180.) << " degrees" << endl);
     579      Log() << Verbose(0) << "Bond angle between first atom Nr." << first->nr << ", central atom Nr." << second->nr << " and last atom Nr." << third->nr << ": ";
     580      Log() << Verbose(0) << (acos(x.ScalarProduct((const Vector *)&y)/(y.Norm()*x.Norm()))/M_PI*180.) << " degrees" << endl;
    586581      break;
    587582    case 'd':
    588       DoLog(0) && (Log() << Verbose(0) << "Evaluating prinicipal axis." << endl);
    589       DoLog(0) && (Log() << Verbose(0) << "Shall we rotate? [0/1]: ");
     583      Log() << Verbose(0) << "Evaluating prinicipal axis." << endl;
     584      Log() << Verbose(0) << "Shall we rotate? [0/1]: ";
    590585      cin >> Z;
    591586      if ((Z >=0) && (Z <=1))
     
    596591    case 'e':
    597592      {
    598         DoLog(0) && (Log() << Verbose(0) << "Evaluating volume of the convex envelope.");
     593        Log() << Verbose(0) << "Evaluating volume of the convex envelope.";
    599594        class Tesselation *TesselStruct = NULL;
    600595        const LinkedCell *LCList = NULL;
     
    602597        FindConvexBorder(mol, TesselStruct, LCList, NULL);
    603598        double clustervolume = VolumeOfConvexEnvelope(TesselStruct, configuration);
    604         DoLog(0) && (Log() << Verbose(0) << "The tesselated surface area is " << clustervolume << "." << endl);\
     599        Log() << Verbose(0) << "The tesselated surface area is " << clustervolume << "." << endl;\
    605600        delete(LCList);
    606601        delete(TesselStruct);
     
    613608      {
    614609        char filename[255];
    615         DoLog(0) && (Log() << Verbose(0) << "Please enter filename: " << endl);
     610        Log() << Verbose(0) << "Please enter filename: " << endl;
    616611        cin >> filename;
    617         DoLog(1) && (Log() << Verbose(1) << "Storing temperatures in " << filename << "." << endl);
     612        Log() << Verbose(1) << "Storing temperatures in " << filename << "." << endl;
    618613        ofstream *output = new ofstream(filename, ios::trunc);
    619614        if (!mol->OutputTemperatureFromTrajectories(output, 0, mol->MDSteps))
    620           DoLog(2) && (Log() << Verbose(2) << "File could not be written." << endl);
     615          Log() << Verbose(2) << "File could not be written." << endl;
    621616        else
    622           DoLog(2) && (Log() << Verbose(2) << "File stored." << endl);
     617          Log() << Verbose(2) << "File stored." << endl;
    623618        output->close();
    624619        delete(output);
     
    637632  clock_t start, end;
    638633
    639   DoLog(0) && (Log() << Verbose(0) << "Fragmenting molecule with current connection matrix ..." << endl);
    640   DoLog(0) && (Log() << Verbose(0) << "What's the desired bond order: ");
     634  Log() << Verbose(0) << "Fragmenting molecule with current connection matrix ..." << endl;
     635  Log() << Verbose(0) << "What's the desired bond order: ";
    641636  cin >> Order1;
    642637  if (mol->first->next != mol->last) {  // there are bonds
     
    644639    mol->FragmentMolecule(Order1, configuration);
    645640    end = clock();
    646     DoLog(0) && (Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl);
     641    Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl;
    647642  } else
    648     DoLog(0) && (Log() << Verbose(0) << "Connection matrix has not yet been generated!" << endl);
     643    Log() << Verbose(0) << "Connection matrix has not yet been generated!" << endl;
    649644};
    650645
     
    657652static void ManipulateAtoms(periodentafel *periode, MoleculeListClass *molecules, config *configuration)
    658653{
    659   atom *first, *second, *third;
     654  atom *first, *second;
    660655  molecule *mol = NULL;
    661656  Vector x,y,z,n; // coordinates for absolute point in cell volume
     
    665660  bool valid;
    666661
    667   DoLog(0) && (Log() << Verbose(0) << "=========MANIPULATE ATOMS======================" << endl);
    668   DoLog(0) && (Log() << Verbose(0) << "a - add an atom" << endl);
    669   DoLog(0) && (Log() << Verbose(0) << "r - remove an atom" << endl);
    670   DoLog(0) && (Log() << Verbose(0) << "b - scale a bond between atoms" << endl);
    671   DoLog(0) && (Log() << Verbose(0) << "t - turn an atom round another bond" << endl);
    672   DoLog(0) && (Log() << Verbose(0) << "u - change an atoms element" << endl);
    673   DoLog(0) && (Log() << Verbose(0) << "l - measure lengths, angles, ... for an atom" << endl);
    674   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    675   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
     662  Log() << Verbose(0) << "=========MANIPULATE ATOMS======================" << endl;
     663  Log() << Verbose(0) << "a - add an atom" << endl;
     664  Log() << Verbose(0) << "r - remove an atom" << endl;
     665  Log() << Verbose(0) << "b - scale a bond between atoms" << endl;
     666  Log() << Verbose(0) << "u - change an atoms element" << endl;
     667  Log() << Verbose(0) << "l - measure lengths, angles, ... for an atom" << endl;
     668  Log() << Verbose(0) << "all else - go back" << endl;
     669  Log() << Verbose(0) << "===============================================" << endl;
    676670  if (molecules->NumberOfActiveMolecules() > 1)
    677     DoeLog(2) && (eLog()<< Verbose(2) << "There is more than one molecule active! Atoms will be added to each." << endl);
    678   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     671    eLog() << Verbose(2) << "There is more than one molecule active! Atoms will be added to each." << endl;
     672  Log() << Verbose(0) << "INPUT: ";
    679673  cin >> choice;
    680674
    681675  switch (choice) {
    682676    default:
    683       DoLog(0) && (Log() << Verbose(0) << "Not a valid choice." << endl);
     677      Log() << Verbose(0) << "Not a valid choice." << endl;
    684678      break;
    685679
     
    688682        if ((*ListRunner)->ActiveFlag) {
    689683        mol = *ListRunner;
    690         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     684        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    691685        AddAtoms(periode, mol);
    692686      }
     
    697691        if ((*ListRunner)->ActiveFlag) {
    698692        mol = *ListRunner;
    699         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
    700         DoLog(0) && (Log() << Verbose(0) << "Scaling bond length between two atoms." << endl);
     693        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
     694        Log() << Verbose(0) << "Scaling bond length between two atoms." << endl;
    701695        first = mol->AskAtom("Enter first (fixed) atom: ");
    702696        second = mol->AskAtom("Enter second (shifting) atom: ");
     
    705699          minBond += (first->x.x[i]-second->x.x[i])*(first->x.x[i] - second->x.x[i]);
    706700        minBond = sqrt(minBond);
    707         DoLog(0) && (Log() << Verbose(0) << "Current Bond length between " << first->type->name << " Atom " << first->nr << " and " << second->type->name << " Atom " << second->nr << ": " << minBond << " a.u." << endl);
    708         DoLog(0) && (Log() << Verbose(0) << "Enter new bond length [a.u.]: ");
     701        Log() << Verbose(0) << "Current Bond length between " << first->type->name << " Atom " << first->nr << " and " << second->type->name << " Atom " << second->nr << ": " << minBond << " a.u." << endl;
     702        Log() << Verbose(0) << "Enter new bond length [a.u.]: ";
    709703        cin >> bond;
    710704        for (int i=NDIM;i--;) {
     
    720714        if ((*ListRunner)->ActiveFlag) {
    721715        mol = *ListRunner;
    722         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
    723        DoLog(0) && (Log() << Verbose(0) << "Angstroem -> Bohrradius: 1.8897261\t\tBohrradius -> Angstroem: 0.52917721" << endl);
    724        DoLog(0) && (Log() << Verbose(0) << "Enter three factors: ");
     716        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
     717       Log() << Verbose(0) << "Angstroem -> Bohrradius: 1.8897261\t\tBohrradius -> Angstroem: 0.52917721" << endl;
     718       Log() << Verbose(0) << "Enter three factors: ";
    725719       factor = new double[NDIM];
    726720       cin >> factor[0];
     
    737731        if ((*ListRunner)->ActiveFlag) {
    738732        mol = *ListRunner;
    739         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     733        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    740734        MeasureAtoms(periode, mol, configuration);
    741735      }
     
    746740        if ((*ListRunner)->ActiveFlag) {
    747741        mol = *ListRunner;
    748         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     742        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    749743        RemoveAtoms(mol);
    750744      }
    751       break;
    752 
    753     case 't': // turn/rotate atom
    754       for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
    755         if ((*ListRunner)->ActiveFlag) {
    756           mol = *ListRunner;
    757           DoLog(0) && (Log() << Verbose(0) << "Turning atom around another bond - first is atom to turn, second (central) and third specify bond" << endl);
    758           first = mol->AskAtom("Enter turning atom: ");
    759           second = mol->AskAtom("Enter central atom: ");
    760           third  = mol->AskAtom("Enter bond atom: ");
    761           cout << Verbose(0) << "Enter new angle in degrees: ";
    762           double tmp = 0.;
    763           cin >> tmp;
    764           // calculate old angle
    765           x.CopyVector((const Vector *)&first->x);
    766           x.SubtractVector((const Vector *)&second->x);
    767           y.CopyVector((const Vector *)&third->x);
    768           y.SubtractVector((const Vector *)&second->x);
    769           double alpha = (acos(x.ScalarProduct((const Vector *)&y)/(y.Norm()*x.Norm()))/M_PI*180.);
    770           cout << Verbose(0) << "Bond angle between first atom Nr." << first->nr << ", central atom Nr." << second->nr << " and last atom Nr." << third->nr << ": ";
    771           cout << Verbose(0) << alpha << " degrees" << endl;
    772           // rotate
    773           z.MakeNormalVector(&x,&y);
    774           x.RotateVector(&z,(alpha-tmp)*M_PI/180.);
    775           x.AddVector(&second->x);
    776           first->x.CopyVector(&x);
    777           // check new angle
    778           x.CopyVector((const Vector *)&first->x);
    779           x.SubtractVector((const Vector *)&second->x);
    780           alpha = (acos(x.ScalarProduct((const Vector *)&y)/(y.Norm()*x.Norm()))/M_PI*180.);
    781           cout << Verbose(0) << "new Bond angle between first atom Nr." << first->nr << ", central atom Nr." << second->nr << " and last atom Nr." << third->nr << ": ";
    782           cout << Verbose(0) << alpha << " degrees" << endl;
    783         }
    784745      break;
    785746
     
    789750        int Z;
    790751        mol = *ListRunner;
    791         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     752        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    792753        first = NULL;
    793754        do {
    794           DoLog(0) && (Log() << Verbose(0) << "Change the element of which atom: ");
     755          Log() << Verbose(0) << "Change the element of which atom: ";
    795756          cin >> Z;
    796757        } while ((first = mol->FindAtom(Z)) == NULL);
    797         DoLog(0) && (Log() << Verbose(0) << "New element by atomic number Z: ");
     758        Log() << Verbose(0) << "New element by atomic number Z: ";
    798759        cin >> Z;
    799760        first->type = periode->FindElement(Z);
    800         DoLog(0) && (Log() << Verbose(0) << "Atom " << first->nr << "'s element is " << first->type->name << "." << endl);
     761        Log() << Verbose(0) << "Atom " << first->nr << "'s element is " << first->type->name << "." << endl;
    801762      }
    802763      break;
     
    819780  MoleculeLeafClass *Subgraphs = NULL;
    820781
    821   DoLog(0) && (Log() << Verbose(0) << "=========MANIPULATE GLOBALLY===================" << endl);
    822   DoLog(0) && (Log() << Verbose(0) << "c - scale by unit transformation" << endl);
    823   DoLog(0) && (Log() << Verbose(0) << "d - duplicate molecule/periodic cell" << endl);
    824   DoLog(0) && (Log() << Verbose(0) << "f - fragment molecule many-body bond order style" << endl);
    825   DoLog(0) && (Log() << Verbose(0) << "g - center atoms in box" << endl);
    826   DoLog(0) && (Log() << Verbose(0) << "i - realign molecule" << endl);
    827   DoLog(0) && (Log() << Verbose(0) << "m - mirror all molecules" << endl);
    828   DoLog(0) && (Log() << Verbose(0) << "o - create connection matrix" << endl);
    829   DoLog(0) && (Log() << Verbose(0) << "t - translate molecule by vector" << endl);
    830   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    831   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
     782  Log() << Verbose(0) << "=========MANIPULATE GLOBALLY===================" << endl;
     783  Log() << Verbose(0) << "c - scale by unit transformation" << endl;
     784  Log() << Verbose(0) << "d - duplicate molecule/periodic cell" << endl;
     785  Log() << Verbose(0) << "f - fragment molecule many-body bond order style" << endl;
     786  Log() << Verbose(0) << "g - center atoms in box" << endl;
     787  Log() << Verbose(0) << "i - realign molecule" << endl;
     788  Log() << Verbose(0) << "m - mirror all molecules" << endl;
     789  Log() << Verbose(0) << "o - create connection matrix" << endl;
     790  Log() << Verbose(0) << "t - translate molecule by vector" << endl;
     791  Log() << Verbose(0) << "all else - go back" << endl;
     792  Log() << Verbose(0) << "===============================================" << endl;
    832793  if (molecules->NumberOfActiveMolecules() > 1)
    833     DoeLog(2) && (eLog()<< Verbose(2) << "There is more than one molecule active! Atoms will be added to each." << endl);
    834   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     794    eLog() << Verbose(2) << "There is more than one molecule active! Atoms will be added to each." << endl;
     795  Log() << Verbose(0) << "INPUT: ";
    835796  cin >> choice;
    836797
    837798  switch (choice) {
    838799    default:
    839       DoLog(0) && (Log() << Verbose(0) << "Not a valid choice." << endl);
     800      Log() << Verbose(0) << "Not a valid choice." << endl;
    840801      break;
    841802
     
    844805        if ((*ListRunner)->ActiveFlag) {
    845806        mol = *ListRunner;
    846         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
    847         DoLog(0) && (Log() << Verbose(0) << "State the axis [(+-)123]: ");
     807        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
     808        Log() << Verbose(0) << "State the axis [(+-)123]: ";
    848809        cin >> axis;
    849         DoLog(0) && (Log() << Verbose(0) << "State the factor: ");
     810        Log() << Verbose(0) << "State the factor: ";
    850811        cin >> faktor;
    851812
     
    864825          }
    865826          if (count != j)
    866             DoeLog(1) && (eLog()<< Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl);
     827            eLog() << Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl;
    867828          x.Zero();
    868829          y.Zero();
    869           y.x[abs(axis)-1] = World::get()->cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] * abs(axis)/axis; // last term is for sign, first is for magnitude
     830          y.x[abs(axis)-1] = mol->cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] * abs(axis)/axis; // last term is for sign, first is for magnitude
    870831          for (int i=1;i<faktor;i++) {  // then add this list with respective translation factor times
    871832            x.AddVector(&y); // per factor one cell width further
     
    890851            mol->Translate(&x);
    891852          }
    892           World::get()->cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] *= faktor;
     853          mol->cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] *= faktor;
    893854        }
    894855      }
     
    903864        if ((*ListRunner)->ActiveFlag) {
    904865        mol = *ListRunner;
    905         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     866        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    906867        CenterAtoms(mol);
    907868      }
     
    912873        if ((*ListRunner)->ActiveFlag) {
    913874        mol = *ListRunner;
    914         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     875        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    915876        AlignAtoms(periode, mol);
    916877      }
     
    921882        if ((*ListRunner)->ActiveFlag) {
    922883        mol = *ListRunner;
    923         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
     884        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
    924885        MirrorAtoms(mol);
    925886      }
     
    932893          double bonddistance;
    933894          clock_t start,end;
    934           DoLog(0) && (Log() << Verbose(0) << "What's the maximum bond distance: ");
     895          Log() << Verbose(0) << "What's the maximum bond distance: ";
    935896          cin >> bonddistance;
    936897          start = clock();
    937898          mol->CreateAdjacencyList(bonddistance, configuration->GetIsAngstroem(), &BondGraph::CovalentMinMaxDistance, NULL);
    938899          end = clock();
    939           DoLog(0) && (Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl);
     900          Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl;
    940901        }
    941902      break;
     
    945906        if ((*ListRunner)->ActiveFlag) {
    946907        mol = *ListRunner;
    947         DoLog(0) && (Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl);
    948         DoLog(0) && (Log() << Verbose(0) << "Enter translation vector." << endl);
    949         x.AskPosition(World::get()->cell_size,0);
     908        Log() << Verbose(0) << "Current molecule is: " << mol->IndexNr << "\t" << mol->name << endl;
     909        Log() << Verbose(0) << "Enter translation vector." << endl;
     910        x.AskPosition(mol->cell_size,0);
    950911        mol->Center.AddVector((const Vector *)&x);
    951912     }
     
    974935  molecule *mol = NULL;
    975936
    976   DoLog(0) && (Log() << Verbose(0) << "==========EDIT MOLECULES=====================" << endl);
    977   DoLog(0) && (Log() << Verbose(0) << "c - create new molecule" << endl);
    978   DoLog(0) && (Log() << Verbose(0) << "l - load molecule from xyz file" << endl);
    979   DoLog(0) && (Log() << Verbose(0) << "n - change molecule's name" << endl);
    980   DoLog(0) && (Log() << Verbose(0) << "N - give molecules filename" << endl);
    981   DoLog(0) && (Log() << Verbose(0) << "p - parse atoms in xyz file into molecule" << endl);
    982   DoLog(0) && (Log() << Verbose(0) << "r - remove a molecule" << endl);
    983   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    984   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
    985   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     937  Log() << Verbose(0) << "==========EDIT MOLECULES=====================" << endl;
     938  Log() << Verbose(0) << "c - create new molecule" << endl;
     939  Log() << Verbose(0) << "l - load molecule from xyz file" << endl;
     940  Log() << Verbose(0) << "n - change molecule's name" << endl;
     941  Log() << Verbose(0) << "N - give molecules filename" << endl;
     942  Log() << Verbose(0) << "p - parse atoms in xyz file into molecule" << endl;
     943  Log() << Verbose(0) << "r - remove a molecule" << endl;
     944  Log() << Verbose(0) << "all else - go back" << endl;
     945  Log() << Verbose(0) << "===============================================" << endl;
     946  Log() << Verbose(0) << "INPUT: ";
    986947  cin >> choice;
    987948
    988949  switch (choice) {
    989950    default:
    990       DoLog(0) && (Log() << Verbose(0) << "Not a valid choice." << endl);
     951      Log() << Verbose(0) << "Not a valid choice." << endl;
    991952      break;
    992953    case 'c':
     
    998959      {
    999960        char filename[MAXSTRINGSIZE];
    1000         DoLog(0) && (Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl);
     961        Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    1001962        mol = new molecule(periode);
    1002963        do {
    1003           DoLog(0) && (Log() << Verbose(0) << "Enter file name: ");
     964          Log() << Verbose(0) << "Enter file name: ";
    1004965          cin >> filename;
    1005966        } while (!mol->AddXYZFile(filename));
     
    1007968        // center at set box dimensions
    1008969        mol->CenterEdge(&center);
    1009         double * const cell_size = World::get()->cell_size;
    1010         cell_size[0] = center.x[0];
    1011         cell_size[1] = 0;
    1012         cell_size[2] = center.x[1];
    1013         cell_size[3] = 0;
    1014         cell_size[4] = 0;
    1015         cell_size[5] = center.x[2];
     970        mol->cell_size[0] = center.x[0];
     971        mol->cell_size[1] = 0;
     972        mol->cell_size[2] = center.x[1];
     973        mol->cell_size[3] = 0;
     974        mol->cell_size[4] = 0;
     975        mol->cell_size[5] = center.x[2];
    1016976        molecules->insert(mol);
    1017977      }
     
    1022982        char filename[MAXSTRINGSIZE];
    1023983        do {
    1024           DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule: ");
     984          Log() << Verbose(0) << "Enter index of molecule: ";
    1025985          cin >> nr;
    1026986          mol = molecules->ReturnIndex(nr);
    1027987        } while (mol == NULL);
    1028         DoLog(0) && (Log() << Verbose(0) << "Enter name: ");
     988        Log() << Verbose(0) << "Enter name: ";
    1029989        cin >> filename;
    1030990        strcpy(mol->name, filename);
     
    1036996        char filename[MAXSTRINGSIZE];
    1037997        do {
    1038           DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule: ");
     998          Log() << Verbose(0) << "Enter index of molecule: ";
    1039999          cin >> nr;
    10401000          mol = molecules->ReturnIndex(nr);
    10411001        } while (mol == NULL);
    1042         DoLog(0) && (Log() << Verbose(0) << "Enter name: ");
     1002        Log() << Verbose(0) << "Enter name: ";
    10431003        cin >> filename;
    10441004        mol->SetNameFromFilename(filename);
     
    10511011        mol = NULL;
    10521012        do {
    1053           DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule: ");
     1013          Log() << Verbose(0) << "Enter index of molecule: ";
    10541014          cin >> nr;
    10551015          mol = molecules->ReturnIndex(nr);
    10561016        } while (mol == NULL);
    1057         DoLog(0) && (Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl);
     1017        Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    10581018        do {
    1059           DoLog(0) && (Log() << Verbose(0) << "Enter file name: ");
     1019          Log() << Verbose(0) << "Enter file name: ";
    10601020          cin >> filename;
    10611021        } while (!mol->AddXYZFile(filename));
     
    10651025
    10661026    case 'r':
    1067       DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule: ");
     1027      Log() << Verbose(0) << "Enter index of molecule: ";
    10681028      cin >> nr;
    10691029      count = 1;
     
    10881048  char choice;  // menu choice char
    10891049
    1090   DoLog(0) && (Log() << Verbose(0) << "===========MERGE MOLECULES=====================" << endl);
    1091   DoLog(0) && (Log() << Verbose(0) << "a - simple add of one molecule to another" << endl);
    1092   DoLog(0) && (Log() << Verbose(0) << "b - count the number of bonds of two elements" << endl);
    1093   DoLog(0) && (Log() << Verbose(0) << "B - count the number of bonds of three elements " << endl);
    1094   DoLog(0) && (Log() << Verbose(0) << "e - embedding merge of two molecules" << endl);
    1095   DoLog(0) && (Log() << Verbose(0) << "h - count the number of hydrogen bonds" << endl);
    1096   DoLog(0) && (Log() << Verbose(0) << "b - count the number of hydrogen bonds" << endl);
    1097   DoLog(0) && (Log() << Verbose(0) << "m - multi-merge of all molecules" << endl);
    1098   DoLog(0) && (Log() << Verbose(0) << "s - scatter merge of two molecules" << endl);
    1099   DoLog(0) && (Log() << Verbose(0) << "t - simple merge of two molecules" << endl);
    1100   DoLog(0) && (Log() << Verbose(0) << "all else - go back" << endl);
    1101   DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
    1102   DoLog(0) && (Log() << Verbose(0) << "INPUT: ");
     1050  Log() << Verbose(0) << "===========MERGE MOLECULES=====================" << endl;
     1051  Log() << Verbose(0) << "a - simple add of one molecule to another" << endl;
     1052  Log() << Verbose(0) << "e - embedding merge of two molecules" << endl;
     1053  Log() << Verbose(0) << "m - multi-merge of all molecules" << endl;
     1054  Log() << Verbose(0) << "s - scatter merge of two molecules" << endl;
     1055  Log() << Verbose(0) << "t - simple merge of two molecules" << endl;
     1056  Log() << Verbose(0) << "all else - go back" << endl;
     1057  Log() << Verbose(0) << "===============================================" << endl;
     1058  Log() << Verbose(0) << "INPUT: ";
    11031059  cin >> choice;
    11041060
    11051061  switch (choice) {
    11061062    default:
    1107       DoLog(0) && (Log() << Verbose(0) << "Not a valid choice." << endl);
     1063      Log() << Verbose(0) << "Not a valid choice." << endl;
    11081064      break;
    11091065
     
    11141070        {
    11151071          do {
    1116             DoLog(0) && (Log() << Verbose(0) << "Enter index of destination molecule: ");
     1072            Log() << Verbose(0) << "Enter index of destination molecule: ";
    11171073            cin >> dest;
    11181074            destmol = molecules->ReturnIndex(dest);
    11191075          } while ((destmol == NULL) && (dest != -1));
    11201076          do {
    1121             DoLog(0) && (Log() << Verbose(0) << "Enter index of source molecule to add from: ");
     1077            Log() << Verbose(0) << "Enter index of source molecule to add from: ";
    11221078            cin >> src;
    11231079            srcmol = molecules->ReturnIndex(src);
     
    11291085      break;
    11301086
    1131     case 'b':
    1132       {
    1133         const int nr = 2;
    1134         char *names[nr] = {"first", "second"};
    1135         int Z[nr];
    1136         element *elements[nr];
    1137         for (int i=0;i<nr;i++) {
    1138           Z[i] = 0;
    1139           do {
    1140             cout << "Enter " << names[i] << " element: ";
    1141             cin >> Z[i];
    1142           } while ((Z[i] <= 0) && (Z[i] > MAX_ELEMENTS));
    1143           elements[i] = periode->FindElement(Z[i]);
    1144         }
    1145         const int count = CountBondsOfTwo(molecules, elements[0], elements[1]);
    1146         cout << endl << "There are " << count << " ";
    1147         for (int i=0;i<nr;i++) {
    1148           if (i==0)
    1149             cout << elements[i]->symbol;
    1150           else
    1151             cout << "-" << elements[i]->symbol;
    1152         }
    1153         cout << " bonds." << endl;
    1154       }
    1155     break;
    1156 
    1157     case 'B':
    1158       {
    1159         const int nr = 3;
    1160         char *names[nr] = {"first", "second", "third"};
    1161         int Z[nr];
    1162         element *elements[nr];
    1163         for (int i=0;i<nr;i++) {
    1164           Z[i] = 0;
    1165           do {
    1166             cout << "Enter " << names[i] << " element: ";
    1167             cin >> Z[i];
    1168           } while ((Z[i] <= 0) && (Z[i] > MAX_ELEMENTS));
    1169           elements[i] = periode->FindElement(Z[i]);
    1170         }
    1171         const int count = CountBondsOfThree(molecules, elements[0], elements[1], elements[2]);
    1172         cout << endl << "There are " << count << " ";
    1173         for (int i=0;i<nr;i++) {
    1174           if (i==0)
    1175             cout << elements[i]->symbol;
    1176           else
    1177             cout << "-" << elements[i]->symbol;
    1178         }
    1179         cout << " bonds." << endl;
    1180       }
    1181     break;
    1182 
    11831087    case 'e':
    11841088      {
     
    11861090        molecule *srcmol = NULL, *destmol = NULL;
    11871091        do {
    1188           DoLog(0) && (Log() << Verbose(0) << "Enter index of matrix molecule (the variable one): ");
     1092          Log() << Verbose(0) << "Enter index of matrix molecule (the variable one): ";
    11891093          cin >> src;
    11901094          srcmol = molecules->ReturnIndex(src);
    11911095        } while ((srcmol == NULL) && (src != -1));
    11921096        do {
    1193           DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule to merge into (the fixed one): ");
     1097          Log() << Verbose(0) << "Enter index of molecule to merge into (the fixed one): ";
    11941098          cin >> dest;
    11951099          destmol = molecules->ReturnIndex(dest);
     
    12001104      break;
    12011105
    1202     case 'h':
    1203       {
    1204         int Z;
    1205         cout << "Please enter interface element: ";
    1206         cin >> Z;
    1207         element * const InterfaceElement = periode->FindElement(Z);
    1208         cout << endl << "There are " << CountHydrogenBridgeBonds(molecules, InterfaceElement) << " hydrogen bridges with connections to " << (InterfaceElement != 0 ? InterfaceElement->name : "None") << "." << endl;
    1209       }
    1210       break;
    1211 
    12121106    case 'm':
    12131107      {
     
    12151109        molecule *mol = NULL;
    12161110        do {
    1217           DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule to merge into: ");
     1111          Log() << Verbose(0) << "Enter index of molecule to merge into: ";
    12181112          cin >> nr;
    12191113          mol = molecules->ReturnIndex(nr);
     
    12321126
    12331127    case 's':
    1234       DoLog(0) && (Log() << Verbose(0) << "Not implemented yet." << endl);
     1128      Log() << Verbose(0) << "Not implemented yet." << endl;
    12351129      break;
    12361130
     
    12411135        {
    12421136          do {
    1243             DoLog(0) && (Log() << Verbose(0) << "Enter index of destination molecule: ");
     1137            Log() << Verbose(0) << "Enter index of destination molecule: ";
    12441138            cin >> dest;
    12451139            destmol = molecules->ReturnIndex(dest);
    12461140          } while ((destmol == NULL) && (dest != -1));
    12471141          do {
    1248             DoLog(0) && (Log() << Verbose(0) << "Enter index of source molecule to merge into: ");
     1142            Log() << Verbose(0) << "Enter index of source molecule to merge into: ";
    12491143            cin >> src;
    12501144            srcmol = molecules->ReturnIndex(src);
     
    12751169    mol = (molecules->ListOfMolecules.front())->CopyMolecule();
    12761170  else {
    1277     DoeLog(0) && (eLog()<< Verbose(0) << "I don't have anything to test on ... ");
     1171    eLog() << Verbose(0) << "I don't have anything to test on ... ";
    12781172    performCriticalExit();
    12791173    return;
     
    12821176
    12831177  // generate some KeySets
    1284   DoLog(0) && (Log() << Verbose(0) << "Generating KeySets." << endl);
     1178  Log() << Verbose(0) << "Generating KeySets." << endl;
    12851179  KeySet TestSets[mol->AtomCount+1];
    12861180  i=1;
     
    12921186    i++;
    12931187  }
    1294   DoLog(0) && (Log() << Verbose(0) << "Testing insertion of already present item in KeySets." << endl);
     1188  Log() << Verbose(0) << "Testing insertion of already present item in KeySets." << endl;
    12951189  KeySetTestPair test;
    12961190  test = TestSets[mol->AtomCount-1].insert(Walker->nr);
    12971191  if (test.second) {
    1298     DoLog(1) && (Log() << Verbose(1) << "Insertion worked?!" << endl);
     1192    Log() << Verbose(1) << "Insertion worked?!" << endl;
    12991193  } else {
    1300     DoLog(1) && (Log() << Verbose(1) << "Insertion rejected: Present object is " << (*test.first) << "." << endl);
     1194    Log() << Verbose(1) << "Insertion rejected: Present object is " << (*test.first) << "." << endl;
    13011195  }
    13021196  TestSets[mol->AtomCount].insert(mol->end->previous->nr);
     
    13041198
    13051199  // constructing Graph structure
    1306   DoLog(0) && (Log() << Verbose(0) << "Generating Subgraph class." << endl);
     1200  Log() << Verbose(0) << "Generating Subgraph class." << endl;
    13071201  Graph Subgraphs;
    13081202
    13091203  // insert KeySets into Subgraphs
    1310   DoLog(0) && (Log() << Verbose(0) << "Inserting KeySets into Subgraph class." << endl);
     1204  Log() << Verbose(0) << "Inserting KeySets into Subgraph class." << endl;
    13111205  for (int j=0;j<mol->AtomCount;j++) {
    13121206    Subgraphs.insert(GraphPair (TestSets[j],pair<int, double>(counter++, 1.)));
    13131207  }
    1314   DoLog(0) && (Log() << Verbose(0) << "Testing insertion of already present item in Subgraph." << endl);
     1208  Log() << Verbose(0) << "Testing insertion of already present item in Subgraph." << endl;
    13151209  GraphTestPair test2;
    13161210  test2 = Subgraphs.insert(GraphPair (TestSets[mol->AtomCount],pair<int, double>(counter++, 1.)));
    13171211  if (test2.second) {
    1318     DoLog(1) && (Log() << Verbose(1) << "Insertion worked?!" << endl);
     1212    Log() << Verbose(1) << "Insertion worked?!" << endl;
    13191213  } else {
    1320     DoLog(1) && (Log() << Verbose(1) << "Insertion rejected: Present object is " << (*(test2.first)).second.first << "." << endl);
     1214    Log() << Verbose(1) << "Insertion rejected: Present object is " << (*(test2.first)).second.first << "." << endl;
    13211215  }
    13221216
    13231217  // show graphs
    1324   DoLog(0) && (Log() << Verbose(0) << "Showing Subgraph's contents, checking that it's sorted." << endl);
     1218  Log() << Verbose(0) << "Showing Subgraph's contents, checking that it's sorted." << endl;
    13251219  Graph::iterator A = Subgraphs.begin();
    13261220  while (A !=  Subgraphs.end()) {
    1327     DoLog(0) && (Log() << Verbose(0) << (*A).second.first << ": ");
     1221    Log() << Verbose(0) << (*A).second.first << ": ";
    13281222    KeySet::iterator key = (*A).first.begin();
    13291223    comp = -1;
    13301224    while (key != (*A).first.end()) {
    13311225      if ((*key) > comp)
    1332         DoLog(0) && (Log() << Verbose(0) << (*key) << " ");
     1226        Log() << Verbose(0) << (*key) << " ";
    13331227      else
    1334         DoLog(0) && (Log() << Verbose(0) << (*key) << "! ");
     1228        Log() << Verbose(0) << (*key) << "! ";
    13351229      comp = (*key);
    13361230      key++;
    13371231    }
    1338     DoLog(0) && (Log() << Verbose(0) << endl);
     1232    Log() << Verbose(0) << endl;
    13391233    A++;
    13401234  }
     
    13561250
    13571251  if (!strcmp(configuration->configpath, configuration->GetDefaultPath())) {
    1358     DoeLog(2) && (eLog()<< Verbose(2) << "config is found under different path then stated in config file::defaultpath!" << endl);
     1252    eLog() << Verbose(2) << "config is found under different path then stated in config file::defaultpath!" << endl;
    13591253  }
    13601254
     
    13651259  if (output == NULL)
    13661260    strcpy(filename,"main_pcp_linux");
    1367   DoLog(0) && (Log() << Verbose(0) << "Saving as pdb input ");
     1261  Log() << Verbose(0) << "Saving as pdb input ";
    13681262  if (configuration->SavePDB(filename, molecules))
    1369     DoLog(0) && (Log() << Verbose(0) << "done." << endl);
     1263    Log() << Verbose(0) << "done." << endl;
    13701264  else
    1371     DoLog(0) && (Log() << Verbose(0) << "failed." << endl);
     1265    Log() << Verbose(0) << "failed." << endl;
    13721266
    13731267  // then save as tremolo data file
     
    13761270  if (output == NULL)
    13771271    strcpy(filename,"main_pcp_linux");
    1378   DoLog(0) && (Log() << Verbose(0) << "Saving as tremolo data input ");
     1272  Log() << Verbose(0) << "Saving as tremolo data input ";
    13791273  if (configuration->SaveTREMOLO(filename, molecules))
    1380     DoLog(0) && (Log() << Verbose(0) << "done." << endl);
     1274    Log() << Verbose(0) << "done." << endl;
    13811275  else
    1382     DoLog(0) && (Log() << Verbose(0) << "failed." << endl);
     1276    Log() << Verbose(0) << "failed." << endl;
    13831277
    13841278  // translate each to its center and merge all molecules in MoleculeListClass into this molecule
     
    14001294  }
    14011295
    1402   DoLog(0) && (Log() << Verbose(0) << "Storing configuration ... " << endl);
     1296  Log() << Verbose(0) << "Storing configuration ... " << endl;
    14031297  // get correct valence orbitals
    14041298  mol->CalculateOrbitals(*configuration);
     
    14161310  output.close();
    14171311  output.clear();
    1418   DoLog(0) && (Log() << Verbose(0) << "Saving of config file ");
     1312  Log() << Verbose(0) << "Saving of config file ";
    14191313  if (configuration->Save(filename, periode, mol))
    1420     DoLog(0) && (Log() << Verbose(0) << "successful." << endl);
     1314    Log() << Verbose(0) << "successful." << endl;
    14211315  else
    1422     DoLog(0) && (Log() << Verbose(0) << "failed." << endl);
     1316    Log() << Verbose(0) << "failed." << endl;
    14231317
    14241318  // and save to xyz file
     
    14331327    output.open(filename, ios::trunc);
    14341328  }
    1435   DoLog(0) && (Log() << Verbose(0) << "Saving of XYZ file ");
     1329  Log() << Verbose(0) << "Saving of XYZ file ";
    14361330  if (mol->MDSteps <= 1) {
    14371331    if (mol->OutputXYZ(&output))
    1438       DoLog(0) && (Log() << Verbose(0) << "successful." << endl);
     1332      Log() << Verbose(0) << "successful." << endl;
    14391333    else
    1440       DoLog(0) && (Log() << Verbose(0) << "failed." << endl);
     1334      Log() << Verbose(0) << "failed." << endl;
    14411335  } else {
    14421336    if (mol->OutputTrajectoriesXYZ(&output))
    1443       DoLog(0) && (Log() << Verbose(0) << "successful." << endl);
     1337      Log() << Verbose(0) << "successful." << endl;
    14441338    else
    1445       DoLog(0) && (Log() << Verbose(0) << "failed." << endl);
     1339      Log() << Verbose(0) << "failed." << endl;
    14461340  }
    14471341  output.close();
     
    14531347  if (output == NULL)
    14541348    strcpy(filename,"main_pcp_linux");
    1455   DoLog(0) && (Log() << Verbose(0) << "Saving as mpqc input ");
     1349  Log() << Verbose(0) << "Saving as mpqc input ";
    14561350  if (configuration->SaveMPQC(filename, mol))
    1457     DoLog(0) && (Log() << Verbose(0) << "done." << endl);
     1351    Log() << Verbose(0) << "done." << endl;
    14581352  else
    1459     DoLog(0) && (Log() << Verbose(0) << "failed." << endl);
     1353    Log() << Verbose(0) << "failed." << endl;
    14601354
    14611355  if (!strcmp(configuration->configpath, configuration->GetDefaultPath())) {
    1462     DoeLog(2) && (eLog()<< Verbose(2) << "config is found under different path then stated in config file::defaultpath!" << endl);
     1356    eLog() << Verbose(2) << "config is found under different path then stated in config file::defaultpath!" << endl;
    14631357  }
    14641358
     
    14901384  enum ConfigStatus configPresent = absent;
    14911385  clock_t start,end;
    1492   double MaxDistance = -1;
    14931386  int argptr;
    14941387  molecule *mol = NULL;
     
    15021395    do {
    15031396      if (argv[argptr][0] == '-') {
    1504         DoLog(0) && (Log() << Verbose(0) << "Recognized command line argument: " << argv[argptr][1] << ".\n");
     1397        Log() << Verbose(0) << "Recognized command line argument: " << argv[argptr][1] << ".\n";
    15051398        argptr++;
    15061399        switch(argv[argptr-1][1]) {
     
    15081401          case 'H':
    15091402          case '?':
    1510             DoLog(0) && (Log() << Verbose(0) << "MoleCuilder suite" << endl << "==================" << endl << endl);
    1511             DoLog(0) && (Log() << Verbose(0) << "Usage: " << argv[0] << "[config file] [-{acefpsthH?vfrp}] [further arguments]" << endl);
    1512             DoLog(0) && (Log() << Verbose(0) << "or simply " << argv[0] << " without arguments for interactive session." << endl);
    1513             DoLog(0) && (Log() << Verbose(0) << "\t-a Z x1 x2 x3\tAdd new atom of element Z at coordinates (x1,x2,x3)." << endl);
    1514             DoLog(0) && (Log() << Verbose(0) << "\t-A <source>\tCreate adjacency list from bonds parsed from 'dbond'-style file." <<endl);
    1515             DoLog(0) && (Log() << Verbose(0) << "\t-b xx xy xz yy yz zz\tCenter atoms in domain with given symmetric matrix of (xx,xy,xz,yy,yz,zz)." << endl);
    1516             DoLog(0) && (Log() << Verbose(0) << "\t-B xx xy xz yy yz zz\tBound atoms by domain with given symmetric matrix of (xx,xy,xz,yy,yz,zz)." << endl);
    1517             DoLog(0) && (Log() << Verbose(0) << "\t-c x1 x2 x3\tCenter atoms in domain with a minimum distance to boundary of (x1,x2,x3)." << endl);
    1518             DoLog(0) && (Log() << Verbose(0) << "\t-C <type> [params] <output> <bin output> <BinWidth> <BinStart> <BinEnd>\tPair Correlation analysis." << endl);
    1519             DoLog(0) && (Log() << Verbose(0) << "\t-d x1 x2 x3\tDuplicate cell along each axis by given factor." << endl);
    1520             DoLog(0) && (Log() << Verbose(0) << "\t-D <bond distance>\tDepth-First-Search Analysis of the molecule, giving cycles and tree/back edges." << endl);
    1521             DoLog(0) && (Log() << Verbose(0) << "\t-e <file>\tSets the databases path to be parsed (default: ./)." << endl);
    1522             DoLog(0) && (Log() << Verbose(0) << "\t-E <id> <Z>\tChange atom <id>'s element to <Z>, <id> begins at 0." << endl);
    1523             DoLog(0) && (Log() << Verbose(0) << "\t-f <dist> <order>\tFragments the molecule in BOSSANOVA manner (with/out rings compressed) and stores config files in same dir as config (return code 0 - fragmented, 2 - no fragmentation necessary)." << endl);
    1524             DoLog(0) && (Log() << Verbose(0) << "\t-F <xyz of filler> <dist_x> <dist_y> <dist_z> <epsilon> <randatom> <randmol> <DoRotate>\tFilling Box with water molecules." << endl);
    1525             DoLog(0) && (Log() << Verbose(0) << "\t-FF <MaxDistance> <xyz of filler> <dist_x> <dist_y> <dist_z> <epsilon> <randatom> <randmol> <DoRotate>\tFilling Box with water molecules." << endl);
    1526             DoLog(0) && (Log() << Verbose(0) << "\t-g <file>\tParses a bond length table from the given file." << endl);
    1527             DoLog(0) && (Log() << Verbose(0) << "\t-h/-H/-?\tGive this help screen." << endl);
    1528             DoLog(0) && (Log() << Verbose(0) << "\t-I\t Dissect current system of molecules into a set of disconnected (subgraphs of) molecules." << endl);
    1529             DoLog(0) && (Log() << Verbose(0) << "\t-j\t<path> Store all bonds to file." << endl);
    1530             DoLog(0) && (Log() << Verbose(0) << "\t-J\t<path> Store adjacency per atom to file." << endl);
    1531             DoLog(0) && (Log() << Verbose(0) << "\t-L <step0> <step1> <prefix>\tStore a linear interpolation between two configurations <step0> and <step1> into single config files with prefix <prefix> and as Trajectories into the current config file." << endl);
    1532             DoLog(0) && (Log() << Verbose(0) << "\t-m <0/1>\tCalculate (0)/ Align in(1) PAS with greatest EV along z axis." << endl);
    1533             DoLog(0) && (Log() << Verbose(0) << "\t-M <basis>\tSetting basis to store to MPQC config files." << endl);
    1534             DoLog(0) && (Log() << Verbose(0) << "\t-n\tFast parsing (i.e. no trajectories are looked for)." << endl);
    1535             DoLog(0) && (Log() << Verbose(0) << "\t-N <radius> <file>\tGet non-convex-envelope." << endl);
    1536             DoLog(0) && (Log() << Verbose(0) << "\t-o <out>\tGet volume of the convex envelope (and store to tecplot file)." << endl);
    1537             DoLog(0) && (Log() << Verbose(0) << "\t-O\tCenter atoms in origin." << endl);
    1538             DoLog(0) && (Log() << Verbose(0) << "\t-p <file>\tParse given xyz file and create raw config file from it." << endl);
    1539             DoLog(0) && (Log() << Verbose(0) << "\t-P <file>\tParse given forces file and append as an MD step to config file via Verlet." << endl);
    1540             DoLog(0) && (Log() << Verbose(0) << "\t-r <id>\t\tRemove an atom with given id." << endl);
    1541             DoLog(0) && (Log() << Verbose(0) << "\t-R <id> <radius>\t\tRemove all atoms out of sphere around a given one." << endl);
    1542             DoLog(0) && (Log() << Verbose(0) << "\t-s x1 x2 x3\tScale all atom coordinates by this vector (x1,x2,x3)." << endl);
    1543             DoLog(0) && (Log() << Verbose(0) << "\t-S <file> Store temperatures from the config file in <file>." << endl);
    1544             DoLog(0) && (Log() << Verbose(0) << "\t-t x1 x2 x3\tTranslate all atoms by this vector (x1,x2,x3)." << endl);
    1545             DoLog(0) && (Log() << Verbose(0) << "\t-T x1 x2 x3\tTranslate periodically all atoms by this vector (x1,x2,x3)." << endl);
    1546             DoLog(0) && (Log() << Verbose(0) << "\t-u rho\tsuspend in water solution and output necessary cell lengths, average density rho and repetition." << endl);
    1547             DoLog(0) && (Log() << Verbose(0) << "\t-v\t\tsets verbosity (more is more)." << endl);
    1548             DoLog(0) && (Log() << Verbose(0) << "\t-V\t\tGives version information." << endl);
    1549             DoLog(0) && (Log() << Verbose(0) << "\t-X\t\tset default name of a molecule." << endl);
    1550             DoLog(0) && (Log() << Verbose(0) << "Note: config files must not begin with '-' !" << endl);
     1403            Log() << Verbose(0) << "MoleCuilder suite" << endl << "==================" << endl << endl;
     1404            Log() << Verbose(0) << "Usage: " << argv[0] << "[config file] [-{acefpsthH?vfrp}] [further arguments]" << endl;
     1405            Log() << Verbose(0) << "or simply " << argv[0] << " without arguments for interactive session." << endl;
     1406            Log() << Verbose(0) << "\t-a Z x1 x2 x3\tAdd new atom of element Z at coordinates (x1,x2,x3)." << endl;
     1407            Log() << Verbose(0) << "\t-A <source>\tCreate adjacency list from bonds parsed from 'dbond'-style file." <<endl;
     1408            Log() << Verbose(0) << "\t-b xx xy xz yy yz zz\tCenter atoms in domain with given symmetric matrix of (xx,xy,xz,yy,yz,zz)." << endl;
     1409            Log() << Verbose(0) << "\t-B xx xy xz yy yz zz\tBound atoms by domain with given symmetric matrix of (xx,xy,xz,yy,yz,zz)." << endl;
     1410            Log() << Verbose(0) << "\t-c x1 x2 x3\tCenter atoms in domain with a minimum distance to boundary of (x1,x2,x3)." << endl;
     1411            Log() << Verbose(0) << "\t-C\tPair Correlation analysis." << endl;
     1412            Log() << Verbose(0) << "\t-d x1 x2 x3\tDuplicate cell along each axis by given factor." << endl;
     1413            Log() << Verbose(0) << "\t-D <bond distance>\tDepth-First-Search Analysis of the molecule, giving cycles and tree/back edges." << endl;
     1414            Log() << Verbose(0) << "\t-e <file>\tSets the databases path to be parsed (default: ./)." << endl;
     1415            Log() << Verbose(0) << "\t-E <id> <Z>\tChange atom <id>'s element to <Z>, <id> begins at 0." << endl;
     1416            Log() << Verbose(0) << "\t-f/F <dist> <order>\tFragments the molecule in BOSSANOVA manner (with/out rings compressed) and stores config files in same dir as config (return code 0 - fragmented, 2 - no fragmentation necessary)." << endl;
     1417            Log() << Verbose(0) << "\t-g <file>\tParses a bond length table from the given file." << endl;
     1418            Log() << Verbose(0) << "\t-h/-H/-?\tGive this help screen." << endl;
     1419            Log() << Verbose(0) << "\t-L <step0> <step1> <prefix>\tStore a linear interpolation between two configurations <step0> and <step1> into single config files with prefix <prefix> and as Trajectories into the current config file." << endl;
     1420            Log() << Verbose(0) << "\t-m <0/1>\tCalculate (0)/ Align in(1) PAS with greatest EV along z axis." << endl;
     1421            Log() << Verbose(0) << "\t-M <basis>\tSetting basis to store to MPQC config files." << endl;
     1422            Log() << Verbose(0) << "\t-n\tFast parsing (i.e. no trajectories are looked for)." << endl;
     1423            Log() << Verbose(0) << "\t-N <radius> <file>\tGet non-convex-envelope." << endl;
     1424            Log() << Verbose(0) << "\t-o <out>\tGet volume of the convex envelope (and store to tecplot file)." << endl;
     1425            Log() << Verbose(0) << "\t-O\tCenter atoms in origin." << endl;
     1426            Log() << Verbose(0) << "\t-p <file>\tParse given xyz file and create raw config file from it." << endl;
     1427            Log() << Verbose(0) << "\t-P <file>\tParse given forces file and append as an MD step to config file via Verlet." << endl;
     1428            Log() << Verbose(0) << "\t-r <id>\t\tRemove an atom with given id." << endl;
     1429            Log() << Verbose(0) << "\t-R <id> <radius>\t\tRemove all atoms out of sphere around a given one." << endl;
     1430            Log() << Verbose(0) << "\t-s x1 x2 x3\tScale all atom coordinates by this vector (x1,x2,x3)." << endl;
     1431            Log() << Verbose(0) << "\t-S <file> Store temperatures from the config file in <file>." << endl;
     1432            Log() << Verbose(0) << "\t-t x1 x2 x3\tTranslate all atoms by this vector (x1,x2,x3)." << endl;
     1433            Log() << Verbose(0) << "\t-T x1 x2 x3\tTranslate periodically all atoms by this vector (x1,x2,x3)." << endl;
     1434            Log() << Verbose(0) << "\t-u rho\tsuspend in water solution and output necessary cell lengths, average density rho and repetition." << endl;
     1435            Log() << Verbose(0) << "\t-v\t\tsets verbosity (more is more)." << endl;
     1436            Log() << Verbose(0) << "\t-V\t\tGives version information." << endl;
     1437            Log() << Verbose(0) << "Note: config files must not begin with '-' !" << endl;
    15511438            return (1);
    15521439            break;
     
    15561443            }
    15571444            setVerbosity(verbosity);
    1558             DoLog(0) && (Log() << Verbose(0) << "Setting verbosity to " << verbosity << "." << endl);
     1445            Log() << Verbose(0) << "Setting verbosity to " << verbosity << "." << endl;
    15591446            break;
    15601447          case 'V':
    1561             DoLog(0) && (Log() << Verbose(0) << argv[0] << " " << VERSIONSTRING << endl);
    1562             DoLog(0) && (Log() << Verbose(0) << "Build your own molecule position set." << endl);
     1448            Log() << Verbose(0) << argv[0] << " " << VERSIONSTRING << endl;
     1449            Log() << Verbose(0) << "Build your own molecule position set." << endl;
    15631450            return (1);
    1564             break;
    1565           case 'B':
    1566             if (ExitFlag == 0) ExitFlag = 1;
    1567             if ((argptr+5 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) ) {
    1568               ExitFlag = 255;
    1569               DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl);
    1570               performCriticalExit();
    1571             } else {
    1572               SaveFlag = true;
    1573               j = -1;
    1574               DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl);
    1575               double * const cell_size = World::get()->cell_size;
    1576               for (int i=0;i<6;i++) {
    1577                 cell_size[i] = atof(argv[argptr+i]);
    1578               }
    1579               argptr+=6;
    1580             }
    15811451            break;
    15821452          case 'e':
    15831453            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    1584               DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments for specifying element db: -e <db file>" << endl);
     1454              eLog() << Verbose(0) << "Not enough or invalid arguments for specifying element db: -e <db file>" << endl;
    15851455              performCriticalExit();
    15861456            } else {
    1587               DoLog(0) && (Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl);
     1457              Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl;
    15881458              strncpy (configuration.databasepath, argv[argptr], MAXSTRINGSIZE-1);
    15891459              argptr+=1;
     
    15921462          case 'g':
    15931463            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    1594               DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments for specifying bond length table: -g <table file>" << endl);
     1464              eLog() << Verbose(0) << "Not enough or invalid arguments for specifying bond length table: -g <table file>" << endl;
    15951465              performCriticalExit();
    15961466            } else {
    15971467              BondGraphFileName = argv[argptr];
    1598               DoLog(0) && (Log() << Verbose(0) << "Using " << BondGraphFileName << " as bond length table." << endl);
     1468              Log() << Verbose(0) << "Using " << BondGraphFileName << " as bond length table." << endl;
    15991469              argptr+=1;
    16001470            }
    16011471            break;
    16021472          case 'n':
    1603             DoLog(0) && (Log() << Verbose(0) << "I won't parse trajectories." << endl);
     1473            Log() << Verbose(0) << "I won't parse trajectories." << endl;
    16041474            configuration.FastParsing = true;
    1605             break;
    1606           case 'X':
    1607             {
    1608               char **name = &(World::get()->DefaultName);
    1609               delete[](*name);
    1610               const int length = strlen(argv[argptr]);
    1611               *name = new char[length+2];
    1612               strncpy(*name, argv[argptr], length);
    1613               DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << *name << "." << endl);
    1614             }
    16151475            break;
    16161476          default:   // no match? Step on
     
    16241484    // 3a. Parse the element database
    16251485    if (periode->LoadPeriodentafel(configuration.databasepath)) {
    1626       DoLog(0) && (Log() << Verbose(0) << "Element list loaded successfully." << endl);
     1486      Log() << Verbose(0) << "Element list loaded successfully." << endl;
    16271487      //periode->Output();
    16281488    } else {
    1629       DoLog(0) && (Log() << Verbose(0) << "Element list loading failed." << endl);
     1489      Log() << Verbose(0) << "Element list loading failed." << endl;
    16301490      return 1;
    16311491    }
     
    16331493    if (argv[1][0] != '-') {
    16341494      // simply create a new molecule, wherein the config file is loaded and the manipulation takes place
    1635       DoLog(0) && (Log() << Verbose(0) << "Config file given." << endl);
     1495      Log() << Verbose(0) << "Config file given." << endl;
    16361496      test.open(argv[1], ios::in);
    16371497      if (test == NULL) {
     
    16391499        output.open(argv[1], ios::out);
    16401500        if (output == NULL) {
    1641           DoLog(1) && (Log() << Verbose(1) << "Specified config file " << argv[1] << " not found." << endl);
     1501          Log() << Verbose(1) << "Specified config file " << argv[1] << " not found." << endl;
    16421502          configPresent = absent;
    16431503        } else {
    1644           DoLog(0) && (Log() << Verbose(0) << "Empty configuration file." << endl);
     1504          Log() << Verbose(0) << "Empty configuration file." << endl;
    16451505          ConfigFileName = argv[1];
    16461506          configPresent = empty;
     
    16501510        test.close();
    16511511        ConfigFileName = argv[1];
    1652         DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
     1512        Log() << Verbose(1) << "Specified config file found, parsing ... ";
    16531513        switch (configuration.TestSyntax(ConfigFileName, periode)) {
    16541514          case 1:
    1655             DoLog(0) && (Log() << Verbose(0) << "new syntax." << endl);
     1515            Log() << Verbose(0) << "new syntax." << endl;
    16561516            configuration.Load(ConfigFileName, BondGraphFileName, periode, molecules);
    16571517            configPresent = present;
    16581518            break;
    16591519          case 0:
    1660             DoLog(0) && (Log() << Verbose(0) << "old syntax." << endl);
     1520            Log() << Verbose(0) << "old syntax." << endl;
    16611521            configuration.LoadOld(ConfigFileName, BondGraphFileName, periode, molecules);
    16621522            configPresent = present;
    16631523            break;
    16641524          default:
    1665             DoLog(0) && (Log() << Verbose(0) << "Unknown syntax or empty, yet present file." << endl);
     1525            Log() << Verbose(0) << "Unknown syntax or empty, yet present file." << endl;
    16661526            configPresent = empty;
    16671527       }
     
    16861546     if (configuration.BG == NULL) {
    16871547       configuration.BG = new BondGraph(configuration.GetIsAngstroem());
    1688        if ((!BondGraphFileName.empty()) && (configuration.BG->LoadBondLengthTable(BondGraphFileName))) {
    1689          DoLog(0) && (Log() << Verbose(0) << "Bond length table loaded successfully." << endl);
     1548       if ((BondGraphFileName.empty()) && (configuration.BG->LoadBondLengthTable(BondGraphFileName))) {
     1549         Log() << Verbose(0) << "Bond length table loaded successfully." << endl;
    16901550       } else {
    1691          DoeLog(1) && (eLog()<< Verbose(1) << "Bond length table loading failed." << endl);
     1551         eLog() << Verbose(1) << "Bond length table loading failed." << endl;
    16921552       }
    16931553     }
     
    16961556    argptr = 1;
    16971557    do {
    1698       DoLog(0) && (Log() << Verbose(0) << "Current Command line argument: " << argv[argptr] << "." << endl);
     1558      Log() << Verbose(0) << "Current Command line argument: " << argv[argptr] << "." << endl;
    16991559      if (argv[argptr][0] == '-') {
    17001560        argptr++;
     
    17051565              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    17061566                ExitFlag = 255;
    1707                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough arguments for parsing: -p <xyz file>" << endl);
     1567                eLog() << Verbose(0) << "Not enough arguments for parsing: -p <xyz file>" << endl;
    17081568                performCriticalExit();
    17091569              } else {
    17101570                SaveFlag = true;
    1711                 DoLog(1) && (Log() << Verbose(1) << "Parsing xyz file for new atoms." << endl);
     1571                Log() << Verbose(1) << "Parsing xyz file for new atoms." << endl;
    17121572                if (!mol->AddXYZFile(argv[argptr]))
    1713                   DoLog(2) && (Log() << Verbose(2) << "File not found." << endl);
     1573                  Log() << Verbose(2) << "File not found." << endl;
    17141574                else {
    1715                   DoLog(2) && (Log() << Verbose(2) << "File found and parsed." << endl);
     1575                  Log() << Verbose(2) << "File found and parsed." << endl;
     1576                  // @TODO rather do the dissection afterwards
     1577//                  mol->SetNameFromFilename(argv[argptr]);
     1578//                  molecules->ListOfMolecules.remove(mol);
     1579//                  molecules->DissectMoleculeIntoConnectedSubgraphs(mol,&configuration);
     1580//                  delete(mol);
     1581//                  if (molecules->ListOfMolecules.size() != 0) {
     1582//                    for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
     1583//                      if ((*ListRunner)->ActiveFlag) {
     1584//                        mol = *ListRunner;
     1585//                        break;
     1586//                      }
     1587//                  }
    17161588                  configPresent = present;
    17171589                }
     
    17221594              if ((argptr >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3]))) {
    17231595                ExitFlag = 255;
    1724                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments for adding atom: -a <element> <x> <y> <z>" << endl);
     1596                eLog() << Verbose(0) << "Not enough or invalid arguments for adding atom: -a <element> <x> <y> <z>" << endl;
    17251597                performCriticalExit();
    17261598              } else {
    17271599                SaveFlag = true;
    1728                 DoLog(1) && (Log() << Verbose(1) << "Adding new atom with element " << argv[argptr] << " at (" << argv[argptr+1] << "," << argv[argptr+2] << "," << argv[argptr+3] << "), ");
     1600                Log() << Verbose(1) << "Adding new atom with element " << argv[argptr] << " at (" << argv[argptr+1] << "," << argv[argptr+2] << "," << argv[argptr+3] << "), ";
    17291601                first = new atom;
    17301602                first->type = periode->FindElement(atoi(argv[argptr]));
    17311603                if (first->type != NULL)
    1732                   DoLog(2) && (Log() << Verbose(2) << "found element " << first->type->name << endl);
     1604                  Log() << Verbose(2) << "found element " << first->type->name << endl;
    17331605                for (int i=NDIM;i--;)
    17341606                  first->x.x[i] = atof(argv[argptr+1+i]);
     
    17381610                    configPresent = present;
    17391611                } else
    1740                   DoeLog(1) && (eLog()<< Verbose(1) << "Could not find the specified element." << endl);
     1612                  eLog() << Verbose(1) << "Could not find the specified element." << endl;
    17411613                argptr+=4;
    17421614              }
     
    17511623              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    17521624                ExitFlag = 255;
    1753                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl);
     1625                eLog() << Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl;
    17541626                performCriticalExit();
    17551627              } else {
    17561628                configuration.basis = argv[argptr];
    1757                 DoLog(1) && (Log() << Verbose(1) << "Setting MPQC basis to " << configuration.basis << "." << endl);
     1629                Log() << Verbose(1) << "Setting MPQC basis to " << configuration.basis << "." << endl;
    17581630                argptr+=1;
    17591631              }
     
    17621634              if (ExitFlag == 0) ExitFlag = 1;
    17631635              {
    1764                 DoLog(1) && (Log() << Verbose(1) << "Depth-First-Search Analysis." << endl);
     1636                Log() << Verbose(1) << "Depth-First-Search Analysis." << endl;
    17651637                MoleculeLeafClass *Subgraphs = NULL;      // list of subgraphs from DFS analysis
    17661638                int *MinimumRingSize = new int[mol->AtomCount];
     
    17921664              //argptr+=1;
    17931665              break;
    1794             case 'I':
    1795               DoLog(1) && (Log() << Verbose(1) << "Dissecting molecular system into a set of disconnected subgraphs ... " << endl);
    1796               // @TODO rather do the dissection afterwards
    1797               molecules->DissectMoleculeIntoConnectedSubgraphs(periode, &configuration);
    1798               mol = NULL;
    1799               if (molecules->ListOfMolecules.size() != 0) {
    1800                 for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
    1801                   if ((*ListRunner)->ActiveFlag) {
    1802                     mol = *ListRunner;
    1803                     break;
     1666            case 'C':
     1667              if (ExitFlag == 0) ExitFlag = 1;
     1668              if ((argptr+2 >= argc) || (!IsValidNumber(argv[argptr])) || (argv[argptr][0] == '-') || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-')) {
     1669                ExitFlag = 255;
     1670                eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <Z> <output> <bin output>" << endl;
     1671                performCriticalExit();
     1672              } else {
     1673                SaveFlag = false;
     1674                ofstream output(argv[argptr+1]);
     1675                ofstream binoutput(argv[argptr+2]);
     1676                const double radius = 5.;
     1677
     1678                // get the boundary
     1679                class molecule *Boundary = NULL;
     1680                class Tesselation *TesselStruct = NULL;
     1681                const LinkedCell *LCList = NULL;
     1682                // find biggest molecule
     1683                int counter  = 0;
     1684                for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
     1685                  if ((Boundary == NULL) || (Boundary->AtomCount < (*BigFinder)->AtomCount)) {
     1686                    Boundary = *BigFinder;
    18041687                  }
    1805               }
    1806               if ((mol == NULL) && (!molecules->ListOfMolecules.empty())) {
    1807                 mol = *(molecules->ListOfMolecules.begin());
    1808                 if (mol != NULL)
    1809                   mol->ActiveFlag = true;
    1810               }
    1811               break;
    1812             case 'C':
    1813               {
    1814                 int ranges[3] = {1, 1, 1};
    1815                 bool periodic = (argv[argptr-1][2] =='p');
    1816                 if (ExitFlag == 0) ExitFlag = 1;
    1817                 if ((argptr >= argc)) {
    1818                   ExitFlag = 255;
    1819                   DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C[p] <type: E/P/S> [more params] <output> <bin output> <BinStart> <BinEnd>" << endl);
    1820                   performCriticalExit();
    1821                 } else {
    1822                   switch(argv[argptr][0]) {
    1823                     case 'E':
    1824                       {
    1825                         if ((argptr+6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (!IsValidNumber(argv[argptr+2])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-')) {
    1826                           ExitFlag = 255;
    1827                           DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C E <Z1> <Z2> <output> <bin output>" << endl);
    1828                           performCriticalExit();
    1829                         } else {
    1830                           ofstream output(argv[argptr+3]);
    1831                           ofstream binoutput(argv[argptr+4]);
    1832                           const double BinStart = atof(argv[argptr+5]);
    1833                           const double BinEnd = atof(argv[argptr+6]);
    1834 
    1835                           element *elemental = periode->FindElement((const int) atoi(argv[argptr+1]));
    1836                           element *elemental2 = periode->FindElement((const int) atoi(argv[argptr+2]));
    1837                           PairCorrelationMap *correlationmap = NULL;
    1838                           if (periodic)
    1839                             correlationmap = PeriodicPairCorrelation(molecules, elemental, elemental2, ranges);
    1840                           else
    1841                             correlationmap = PairCorrelation(molecules, elemental, elemental2);
    1842                           //OutputCorrelationToSurface(&output, correlationmap);
    1843                           BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd );
    1844                           OutputCorrelation ( &binoutput, binmap );
    1845                           output.close();
    1846                           binoutput.close();
    1847                           delete(binmap);
    1848                           delete(correlationmap);
    1849                           argptr+=7;
    1850                         }
    1851                       }
    1852                       break;
    1853 
    1854                     case 'P':
    1855                       {
    1856                         if ((argptr+8 >= argc) || (!IsValidNumber(argv[argptr+1])) ||  (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+7])) || (!IsValidNumber(argv[argptr+8])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-') || (argv[argptr+5][0] == '-') || (argv[argptr+6][0] == '-')) {
    1857                           ExitFlag = 255;
    1858                           DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C P <Z1> <x> <y> <z> <output> <bin output>" << endl);
    1859                           performCriticalExit();
    1860                         } else {
    1861                           ofstream output(argv[argptr+5]);
    1862                           ofstream binoutput(argv[argptr+6]);
    1863                           const double BinStart = atof(argv[argptr+7]);
    1864                           const double BinEnd = atof(argv[argptr+8]);
    1865 
    1866                           element *elemental = periode->FindElement((const int) atoi(argv[argptr+1]));
    1867                           Vector *Point = new Vector((const double) atof(argv[argptr+1]),(const double) atof(argv[argptr+2]),(const double) atof(argv[argptr+3]));
    1868                           CorrelationToPointMap *correlationmap = NULL;
    1869                           if (periodic)
    1870                             correlationmap  = PeriodicCorrelationToPoint(molecules, elemental, Point, ranges);
    1871                           else
    1872                             correlationmap = CorrelationToPoint(molecules, elemental, Point);
    1873                           //OutputCorrelationToSurface(&output, correlationmap);
    1874                           BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd );
    1875                           OutputCorrelation ( &binoutput, binmap );
    1876                           output.close();
    1877                           binoutput.close();
    1878                           delete(Point);
    1879                           delete(binmap);
    1880                           delete(correlationmap);
    1881                           argptr+=9;
    1882                         }
    1883                       }
    1884                       break;
    1885 
    1886                     case 'S':
    1887                       {
    1888                         if ((argptr+6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-')) {
    1889                           ExitFlag = 255;
    1890                           DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C S <Z> <output> <bin output> <BinWidth> <BinStart> <BinEnd>" << endl);
    1891                           performCriticalExit();
    1892                         } else {
    1893                           ofstream output(argv[argptr+2]);
    1894                           ofstream binoutput(argv[argptr+3]);
    1895                           const double radius = 4.;
    1896                           const double BinWidth = atof(argv[argptr+4]);
    1897                           const double BinStart = atof(argv[argptr+5]);
    1898                           const double BinEnd = atof(argv[argptr+6]);
    1899                           double LCWidth = 20.;
    1900                           if (BinEnd > 0) {
    1901                             if (BinEnd > 2.*radius)
    1902                                 LCWidth = BinEnd;
    1903                             else
    1904                               LCWidth = 2.*radius;
    1905                           }
    1906 
    1907                           // get the boundary
    1908                           class molecule *Boundary = NULL;
    1909                           class Tesselation *TesselStruct = NULL;
    1910                           const LinkedCell *LCList = NULL;
    1911                           // find biggest molecule
    1912                           int counter  = 0;
    1913                           for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
    1914                             if ((Boundary == NULL) || (Boundary->AtomCount < (*BigFinder)->AtomCount)) {
    1915                               Boundary = *BigFinder;
    1916                             }
    1917                             counter++;
    1918                           }
    1919                           bool *Actives = Malloc<bool>(counter, "ParseCommandLineOptions() - case C -- *Actives");
    1920                           counter = 0;
    1921                           for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
    1922                             Actives[counter++] = (*BigFinder)->ActiveFlag;
    1923                             (*BigFinder)->ActiveFlag = (*BigFinder == Boundary) ? false : true;
    1924                           }
    1925                           LCList = new LinkedCell(Boundary, LCWidth);
    1926                           element *elemental = periode->FindElement((const int) atoi(argv[argptr+1]));
    1927                           FindNonConvexBorder(Boundary, TesselStruct, LCList, radius, NULL);
    1928                           CorrelationToSurfaceMap *surfacemap = NULL;
    1929                           if (periodic)
    1930                             surfacemap = PeriodicCorrelationToSurface( molecules, elemental, TesselStruct, LCList, ranges);
    1931                           else
    1932                             surfacemap = CorrelationToSurface( molecules, elemental, TesselStruct, LCList);
    1933                           OutputCorrelationToSurface(&output, surfacemap);
    1934                           // check whether radius was appropriate
    1935                           {
    1936                             double start; double end;
    1937                             GetMinMax( surfacemap, start, end);
    1938                             if (LCWidth < end)
    1939                               DoeLog(1) && (eLog()<< Verbose(1) << "Linked Cell width is smaller than the found range of values! Bins can only be correct up to: " << radius << "." << endl);
    1940                           }
    1941                           BinPairMap *binmap = BinData( surfacemap, BinWidth, BinStart, BinEnd );
    1942                           OutputCorrelation ( &binoutput, binmap );
    1943                           output.close();
    1944                           binoutput.close();
    1945                           for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++)
    1946                             (*BigFinder)->ActiveFlag = Actives[counter++];
    1947                           Free(&Actives);
    1948                           delete(LCList);
    1949                           delete(TesselStruct);
    1950                           delete(binmap);
    1951                           delete(surfacemap);
    1952                           argptr+=7;
    1953                         }
    1954                       }
    1955                       break;
    1956 
    1957                     default:
    1958                       ExitFlag = 255;
    1959                       DoeLog(0) && (eLog()<< Verbose(0) << "Invalid type given for pair correlation analysis: -C <type: E/P/S> [more params] <output> <bin output>" << endl);
    1960                       performCriticalExit();
    1961                       break;
    1962                   }
     1688                  counter++;
    19631689                }
    1964                 break;
    1965               }
     1690                bool *Actives = Malloc<bool>(counter, "ParseCommandLineOptions() - case C -- *Actives");
     1691                counter = 0;
     1692                for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
     1693                  Actives[counter] = (*BigFinder)->ActiveFlag;
     1694                  (*BigFinder)->ActiveFlag = (*BigFinder == Boundary) ? false : true;
     1695                }
     1696                LCList = new LinkedCell(Boundary, 2.*radius);
     1697                element *elemental = periode->FindElement((const int) atoi(argv[argptr]));
     1698                FindNonConvexBorder(Boundary, TesselStruct, LCList, radius, NULL);
     1699                int ranges[NDIM] = {1,1,1};
     1700                CorrelationToSurfaceMap *surfacemap = PeriodicCorrelationToSurface( molecules, elemental, TesselStruct, LCList, ranges );
     1701                BinPairMap *binmap = BinData( surfacemap, 0.5, 0., 0. );
     1702                OutputCorrelation ( &binoutput, binmap );
     1703                output.close();
     1704                binoutput.close();
     1705                for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++)
     1706                  (*BigFinder)->ActiveFlag = Actives[counter];
     1707                Free(&Actives);
     1708                delete(LCList);
     1709                delete(TesselStruct);
     1710                argptr+=3;
     1711              }
     1712              break;
    19661713            case 'E':
    19671714              if (ExitFlag == 0) ExitFlag = 1;
    19681715              if ((argptr+1 >= argc) || (!IsValidNumber(argv[argptr])) || (argv[argptr+1][0] == '-')) {
    19691716                ExitFlag = 255;
    1970                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for changing element: -E <atom nr.> <element>" << endl);
     1717                eLog() << Verbose(0) << "Not enough or invalid arguments given for changing element: -E <atom nr.> <element>" << endl;
    19711718                performCriticalExit();
    19721719              } else {
    19731720                SaveFlag = true;
    1974                 DoLog(1) && (Log() << Verbose(1) << "Changing atom " << argv[argptr] << " to element " << argv[argptr+1] << "." << endl);
     1721                Log() << Verbose(1) << "Changing atom " << argv[argptr] << " to element " << argv[argptr+1] << "." << endl;
    19751722                first = mol->FindAtom(atoi(argv[argptr]));
    19761723                first->type = periode->FindElement(atoi(argv[argptr+1]));
     
    19801727            case 'F':
    19811728              if (ExitFlag == 0) ExitFlag = 1;
    1982               MaxDistance = -1;
    1983               if (argv[argptr-1][2] == 'F') { // option is -FF?
    1984                 // fetch first argument as max distance to surface
    1985                 MaxDistance = atof(argv[argptr++]);
    1986                 DoLog(0) && (Log() << Verbose(0) << "Filling with maximum layer distance of " << MaxDistance << "." << endl);
    1987               }
    1988               if ((argptr+7 >=argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (!IsValidNumber(argv[argptr+7]))) {
     1729              if (argptr+5 >=argc) {
    19891730                ExitFlag = 255;
    1990                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for filling box with water: -F <xyz of filler> <dist_x> <dist_y> <dist_z> <boundary> <randatom> <randmol> <DoRotate>" << endl);
     1731                eLog() << Verbose(0) << "Not enough or invalid arguments given for filling box with water: -F <dist_x> <dist_y> <dist_z> <randatom> <randmol> <DoRotate>" << endl;
    19911732                performCriticalExit();
    19921733              } else {
    19931734                SaveFlag = true;
    1994                 DoLog(1) && (Log() << Verbose(1) << "Filling Box with water molecules." << endl);
     1735                Log() << Verbose(1) << "Filling Box with water molecules." << endl;
    19951736                // construct water molecule
    1996                 molecule *filler = new molecule(periode);
    1997                 if (!filler->AddXYZFile(argv[argptr])) {
    1998                   DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse filler molecule from " << argv[argptr] << "." << endl);
    1999                 }
    2000                 filler->SetNameFromFilename(argv[argptr]);
    2001                 configuration.BG->ConstructBondGraph(filler);
     1737                molecule *filler = new molecule(periode);;
    20021738                molecule *Filling = NULL;
     1739                atom *second = NULL, *third = NULL;
     1740                first = new atom();
     1741                first->type = periode->FindElement(1);
     1742                first->x.Init(0.441, -0.143, 0.);
     1743                filler->AddAtom(first);
     1744                second = new atom();
     1745                second->type = periode->FindElement(1);
     1746                second->x.Init(-0.464, 1.137, 0.0);
     1747                filler->AddAtom(second);
     1748                third = new atom();
     1749                third->type = periode->FindElement(8);
     1750                third->x.Init(-0.464, 0.177, 0.);
     1751                filler->AddAtom(third);
     1752                filler->AddBond(first, third, 1);
     1753                filler->AddBond(second, third, 1);
    20031754                // call routine
    20041755                double distance[NDIM];
    20051756                for (int i=0;i<NDIM;i++)
    2006                   distance[i] = atof(argv[argptr+i+1]);
    2007                 Filling = FillBoxWithMolecule(molecules, filler, configuration, MaxDistance, distance, atof(argv[argptr+4]), atof(argv[argptr+5]), atof(argv[argptr+6]), atoi(argv[argptr+7]));
     1757                  distance[i] = atof(argv[argptr+i]);
     1758                Filling = FillBoxWithMolecule(molecules, filler, configuration, distance, atof(argv[argptr+3]), atof(argv[argptr+4]), atoi(argv[argptr+5]));
    20081759                if (Filling != NULL) {
    2009                   Filling->ActiveFlag = false;
    20101760                  molecules->insert(Filling);
    20111761                }
     
    20181768              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    20191769                ExitFlag =255;
    2020                 DoeLog(0) && (eLog()<< Verbose(0) << "Missing source file for bonds in molecule: -A <bond sourcefile>" << endl);
     1770                eLog() << Verbose(0) << "Missing source file for bonds in molecule: -A <bond sourcefile>" << endl;
    20211771                performCriticalExit();
    20221772              } else {
    2023                 DoLog(0) && (Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl);
     1773                Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl;
    20241774                ifstream *input = new ifstream(argv[argptr]);
    20251775                mol->CreateAdjacencyListFromDbondFile(input);
     
    20281778              }
    20291779              break;
    2030 
    2031             case 'J':
    2032               if (ExitFlag == 0) ExitFlag = 1;
    2033               if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    2034                 ExitFlag =255;
    2035                 DoeLog(0) && (eLog()<< Verbose(0) << "Missing path of adjacency file: -j <path>" << endl);
    2036                 performCriticalExit();
    2037               } else {
    2038                 DoLog(0) && (Log() << Verbose(0) << "Storing adjacency to path " << argv[argptr] << "." << endl);
    2039                 configuration.BG->ConstructBondGraph(mol);
    2040                 mol->StoreAdjacencyToFile(NULL, argv[argptr]);
    2041                 argptr+=1;
    2042               }
    2043               break;
    2044 
    2045             case 'j':
    2046               if (ExitFlag == 0) ExitFlag = 1;
    2047               if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    2048                 ExitFlag =255;
    2049                 DoeLog(0) && (eLog()<< Verbose(0) << "Missing path of bonds file: -j <path>" << endl);
    2050                 performCriticalExit();
    2051               } else {
    2052                 DoLog(0) && (Log() << Verbose(0) << "Storing bonds to path " << argv[argptr] << "." << endl);
    2053                 configuration.BG->ConstructBondGraph(mol);
    2054                 mol->StoreBondsToFile(NULL, argv[argptr]);
    2055                 argptr+=1;
    2056               }
    2057               break;
    2058 
    20591780            case 'N':
    20601781              if (ExitFlag == 0) ExitFlag = 1;
    20611782              if ((argptr+1 >= argc) || (argv[argptr+1][0] == '-')){
    20621783                ExitFlag = 255;
    2063                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for non-convex envelope: -o <radius> <tecplot output file>" << endl);
     1784                eLog() << Verbose(0) << "Not enough or invalid arguments given for non-convex envelope: -o <radius> <tecplot output file>" << endl;
    20641785                performCriticalExit();
    20651786              } else {
     
    20691790                //string filename(argv[argptr+1]);
    20701791                //filename.append(".csv");
    2071                 DoLog(0) && (Log() << Verbose(0) << "Evaluating non-convex envelope of biggest molecule.");
    2072                 DoLog(1) && (Log() << Verbose(1) << "Using rolling ball of radius " << atof(argv[argptr]) << " and storing tecplot data in " << argv[argptr+1] << "." << endl);
     1792                Log() << Verbose(0) << "Evaluating non-convex envelope of biggest molecule.";
     1793                Log() << Verbose(1) << "Using rolling ball of radius " << atof(argv[argptr]) << " and storing tecplot data in " << argv[argptr+1] << "." << endl;
    20731794                // find biggest molecule
    20741795                int counter  = 0;
     
    20801801                  counter++;
    20811802                }
    2082                 DoLog(1) && (Log() << Verbose(1) << "Biggest molecule has " << Boundary->AtomCount << " atoms." << endl);
     1803                Log() << Verbose(1) << "Biggest molecule has " << Boundary->AtomCount << " atoms." << endl;
    20831804                start = clock();
    20841805                LCList = new LinkedCell(Boundary, atof(argv[argptr])*2.);
     
    20871808                //FindDistributionOfEllipsoids(T, &LCList, N, number, filename.c_str());
    20881809                end = clock();
    2089                 DoLog(0) && (Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl);
     1810                Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl;
    20901811                delete(LCList);
    20911812                delete(T);
     
    20971818              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    20981819                ExitFlag = 255;
    2099                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for storing tempature: -S <temperature file>" << endl);
     1820                eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -S <temperature file>" << endl;
    21001821                performCriticalExit();
    21011822              } else {
    2102                 DoLog(1) && (Log() << Verbose(1) << "Storing temperatures in " << argv[argptr] << "." << endl);
     1823                Log() << Verbose(1) << "Storing temperatures in " << argv[argptr] << "." << endl;
    21031824                ofstream *output = new ofstream(argv[argptr], ios::trunc);
    21041825                if (!mol->OutputTemperatureFromTrajectories(output, 0, mol->MDSteps))
    2105                   DoLog(2) && (Log() << Verbose(2) << "File could not be written." << endl);
     1826                  Log() << Verbose(2) << "File could not be written." << endl;
    21061827                else
    2107                   DoLog(2) && (Log() << Verbose(2) << "File stored." << endl);
     1828                  Log() << Verbose(2) << "File stored." << endl;
    21081829                output->close();
    21091830                delete(output);
     
    21151836              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    21161837                ExitFlag = 255;
    2117                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl);
     1838                eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl;
    21181839                performCriticalExit();
    21191840              } else {
    21201841                SaveFlag = true;
    2121                 DoLog(1) && (Log() << Verbose(1) << "Linear interpolation between configuration " << argv[argptr] << " and " << argv[argptr+1] << "." << endl);
     1842                Log() << Verbose(1) << "Linear interpolation between configuration " << argv[argptr] << " and " << argv[argptr+1] << "." << endl;
    21221843                if (atoi(argv[argptr+3]) == 1)
    2123                   DoLog(1) && (Log() << Verbose(1) << "Using Identity for the permutation map." << endl);
     1844                  Log() << Verbose(1) << "Using Identity for the permutation map." << endl;
    21241845                if (!mol->LinearInterpolationBetweenConfiguration(atoi(argv[argptr]), atoi(argv[argptr+1]), argv[argptr+2], configuration, atoi(argv[argptr+3])) == 1 ? true : false)
    2125                   DoLog(2) && (Log() << Verbose(2) << "Could not store " << argv[argptr+2] << " files." << endl);
     1846                  Log() << Verbose(2) << "Could not store " << argv[argptr+2] << " files." << endl;
    21261847                else
    2127                   DoLog(2) && (Log() << Verbose(2) << "Steps created and " << argv[argptr+2] << " files stored." << endl);
     1848                  Log() << Verbose(2) << "Steps created and " << argv[argptr+2] << " files stored." << endl;
    21281849                argptr+=4;
    21291850              }
     
    21331854              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    21341855                ExitFlag = 255;
    2135                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for parsing and integrating forces: -P <forces file>" << endl);
     1856                eLog() << Verbose(0) << "Not enough or invalid arguments given for parsing and integrating forces: -P <forces file>" << endl;
    21361857                performCriticalExit();
    21371858              } else {
    21381859                SaveFlag = true;
    2139                 DoLog(1) && (Log() << Verbose(1) << "Parsing forces file and Verlet integrating." << endl);
     1860                Log() << Verbose(1) << "Parsing forces file and Verlet integrating." << endl;
    21401861                if (!mol->VerletForceIntegration(argv[argptr], configuration))
    2141                   DoLog(2) && (Log() << Verbose(2) << "File not found." << endl);
     1862                  Log() << Verbose(2) << "File not found." << endl;
    21421863                else
    2143                   DoLog(2) && (Log() << Verbose(2) << "File found and parsed." << endl);
     1864                  Log() << Verbose(2) << "File found and parsed." << endl;
    21441865                argptr+=1;
    21451866              }
     
    21491870              if ((argptr+1 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])))  {
    21501871                ExitFlag = 255;
    2151                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl);
     1872                eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl;
    21521873                performCriticalExit();
    21531874              } else {
    21541875                SaveFlag = true;
    2155                 DoLog(1) && (Log() << Verbose(1) << "Removing atoms around " << argv[argptr] << " with radius " << argv[argptr+1] << "." << endl);
     1876                Log() << Verbose(1) << "Removing atoms around " << argv[argptr] << " with radius " << argv[argptr+1] << "." << endl;
    21561877                double tmp1 = atof(argv[argptr+1]);
    21571878                atom *third = mol->FindAtom(atoi(argv[argptr]));
     
    21661887                  }
    21671888                } else {
    2168                   DoeLog(1) && (eLog()<< Verbose(1) << "Removal failed due to missing atoms on molecule or wrong id." << endl);
     1889                  eLog() << Verbose(1) << "Removal failed due to missing atoms on molecule or wrong id." << endl;
    21691890                }
    21701891                argptr+=2;
     
    21751896              if ((argptr+2 >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
    21761897                ExitFlag = 255;
    2177                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl);
     1898                eLog() << Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl;
    21781899                performCriticalExit();
    21791900              } else {
    21801901                if (ExitFlag == 0) ExitFlag = 1;
    21811902                SaveFlag = true;
    2182                 DoLog(1) && (Log() << Verbose(1) << "Translating all ions by given vector." << endl);
     1903                Log() << Verbose(1) << "Translating all ions by given vector." << endl;
    21831904                for (int i=NDIM;i--;)
    21841905                  x.x[i] = atof(argv[argptr+i]);
     
    21911912              if ((argptr+2 >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
    21921913                ExitFlag = 255;
    2193                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl);
     1914                eLog() << Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl;
    21941915                performCriticalExit();
    21951916              } else {
    21961917                if (ExitFlag == 0) ExitFlag = 1;
    21971918                SaveFlag = true;
    2198                 DoLog(1) && (Log() << Verbose(1) << "Translating all ions periodically by given vector." << endl);
     1919                Log() << Verbose(1) << "Translating all ions periodically by given vector." << endl;
    21991920                for (int i=NDIM;i--;)
    22001921                  x.x[i] = atof(argv[argptr+i]);
     
    22071928              if ((argptr >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
    22081929                ExitFlag = 255;
    2209                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl);
     1930                eLog() << Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl;
    22101931                performCriticalExit();
    22111932              } else {
    22121933                SaveFlag = true;
    22131934                j = -1;
    2214                 DoLog(1) && (Log() << Verbose(1) << "Scaling all ion positions by factor." << endl);
     1935                Log() << Verbose(1) << "Scaling all ion positions by factor." << endl;
    22151936                factor = new double[NDIM];
    22161937                factor[0] = atof(argv[argptr]);
     
    22181939                factor[2] = atof(argv[argptr+2]);
    22191940                mol->Scale((const double ** const)&factor);
    2220                 double * const cell_size = World::get()->cell_size;
    22211941                for (int i=0;i<NDIM;i++) {
    22221942                  j += i+1;
    22231943                  x.x[i] = atof(argv[NDIM+i]);
    2224                   cell_size[j]*=factor[i];
     1944                  mol->cell_size[j]*=factor[i];
    22251945                }
    22261946                delete[](factor);
     
    22321952              if ((argptr+5 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) ) {
    22331953                ExitFlag = 255;
    2234                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for centering in box: -b <xx> <xy> <xz> <yy> <yz> <zz>" << endl);
     1954                eLog() << Verbose(0) << "Not enough or invalid arguments given for centering in box: -b <xx> <xy> <xz> <yy> <yz> <zz>" << endl;
    22351955                performCriticalExit();
    22361956              } else {
    22371957                SaveFlag = true;
    22381958                j = -1;
    2239                 DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl);
    2240                 double * const cell_size = World::get()->cell_size;
     1959                Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl;
    22411960                for (int i=0;i<6;i++) {
    2242                   cell_size[i] = atof(argv[argptr+i]);
     1961                  mol->cell_size[i] = atof(argv[argptr+i]);
    22431962                }
    22441963                // center
     
    22511970              if ((argptr+5 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) ) {
    22521971                ExitFlag = 255;
    2253                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl);
     1972                eLog() << Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl;
    22541973                performCriticalExit();
    22551974              } else {
    22561975                SaveFlag = true;
    22571976                j = -1;
    2258                 DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl);
    2259                 double * const cell_size = World::get()->cell_size;
     1977                Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl;
    22601978                for (int i=0;i<6;i++) {
    2261                   cell_size[i] = atof(argv[argptr+i]);
     1979                  mol->cell_size[i] = atof(argv[argptr+i]);
    22621980                }
    22631981                // center
     
    22701988              if ((argptr+2 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
    22711989                ExitFlag = 255;
    2272                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for centering with boundary: -c <boundary_x> <boundary_y> <boundary_z>" << endl);
     1990                eLog() << Verbose(0) << "Not enough or invalid arguments given for centering with boundary: -c <boundary_x> <boundary_y> <boundary_z>" << endl;
    22731991                performCriticalExit();
    22741992              } else {
    22751993                SaveFlag = true;
    22761994                j = -1;
    2277                 DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given additional boundary." << endl);
     1995                Log() << Verbose(1) << "Centering atoms in config file within given additional boundary." << endl;
    22781996                // make every coordinate positive
    22791997                mol->CenterEdge(&x);
     
    22811999                mol->SetBoxDimension(&x);
    22822000                // translate each coordinate by boundary
    2283                 double * const cell_size = World::get()->cell_size;
    22842001                j=-1;
    22852002                for (int i=0;i<NDIM;i++) {
    22862003                  j += i+1;
    22872004                  x.x[i] = atof(argv[argptr+i]);
    2288                   cell_size[j] += x.x[i]*2.;
     2005                  mol->cell_size[j] += x.x[i]*2.;
    22892006                }
    22902007                mol->Translate((const Vector *)&x);
     
    22952012              if (ExitFlag == 0) ExitFlag = 1;
    22962013              SaveFlag = true;
    2297               DoLog(1) && (Log() << Verbose(1) << "Centering atoms on edge and setting box dimensions." << endl);
     2014              Log() << Verbose(1) << "Centering atoms on edge and setting box dimensions." << endl;
    22982015              x.Zero();
    22992016              mol->CenterEdge(&x);
     
    23052022              if ((argptr >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])))  {
    23062023                ExitFlag = 255;
    2307                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for removing atoms: -r <id>" << endl);
     2024                eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -r <id>" << endl;
    23082025                performCriticalExit();
    23092026              } else {
    23102027                SaveFlag = true;
    2311                 DoLog(1) && (Log() << Verbose(1) << "Removing atom " << argv[argptr] << "." << endl);
     2028                Log() << Verbose(1) << "Removing atom " << argv[argptr] << "." << endl;
    23122029                atom *first = mol->FindAtom(atoi(argv[argptr]));
    23132030                mol->RemoveAtom(first);
     
    23192036              if ((argptr+1 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1]))) {
    23202037                ExitFlag = 255;
    2321                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments for fragmentation: -f <max. bond distance> <bond order>" << endl);
     2038                eLog() << Verbose(0) << "Not enough or invalid arguments for fragmentation: -f <max. bond distance> <bond order>" << endl;
    23222039                performCriticalExit();
    23232040              } else {
    2324                 DoLog(0) && (Log() << Verbose(0) << "Fragmenting molecule with bond distance " << argv[argptr] << " angstroem, order of " << argv[argptr+1] << "." << endl);
    2325                 DoLog(0) && (Log() << Verbose(0) << "Creating connection matrix..." << endl);
     2041                Log() << Verbose(0) << "Fragmenting molecule with bond distance " << argv[argptr] << " angstroem, order of " << argv[argptr+1] << "." << endl;
     2042                Log() << Verbose(0) << "Creating connection matrix..." << endl;
    23262043                start = clock();
    23272044                mol->CreateAdjacencyList(atof(argv[argptr++]), configuration.GetIsAngstroem(), &BondGraph::CovalentMinMaxDistance, NULL);
    2328                 DoLog(0) && (Log() << Verbose(0) << "Fragmenting molecule with current connection matrix ..." << endl);
     2045                Log() << Verbose(0) << "Fragmenting molecule with current connection matrix ..." << endl;
    23292046                if (mol->first->next != mol->last) {
    23302047                  ExitFlag = mol->FragmentMolecule(atoi(argv[argptr]), &configuration);
    23312048                }
    23322049                end = clock();
    2333                 DoLog(0) && (Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl);
     2050                Log() << Verbose(0) << "Clocks for this operation: " << (end-start) << ", time: " << ((double)(end-start)/CLOCKS_PER_SEC) << "s." << endl;
    23342051                argptr+=2;
    23352052              }
     
    23392056              j = atoi(argv[argptr++]);
    23402057              if ((j<0) || (j>1)) {
    2341                 DoeLog(1) && (eLog()<< Verbose(1) << "Argument of '-m' should be either 0 for no-rotate or 1 for rotate." << endl);
     2058                eLog() << Verbose(1) << "Argument of '-m' should be either 0 for no-rotate or 1 for rotate." << endl;
    23422059                j = 0;
    23432060              }
    23442061              if (j) {
    23452062                SaveFlag = true;
    2346                 DoLog(0) && (Log() << Verbose(0) << "Converting to prinicipal axis system." << endl);
     2063                Log() << Verbose(0) << "Converting to prinicipal axis system." << endl;
    23472064              } else
    2348                 DoLog(0) && (Log() << Verbose(0) << "Evaluating prinicipal axis." << endl);
     2065                Log() << Verbose(0) << "Evaluating prinicipal axis." << endl;
    23492066              mol->PrincipalAxisSystem((bool)j);
    23502067              break;
     
    23532070              if ((argptr+1 >= argc) || (argv[argptr][0] == '-')){
    23542071                ExitFlag = 255;
    2355                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl);
     2072                eLog() << Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl;
    23562073                performCriticalExit();
    23572074              } else {
    23582075                class Tesselation *TesselStruct = NULL;
    23592076                const LinkedCell *LCList = NULL;
    2360                 DoLog(0) && (Log() << Verbose(0) << "Evaluating volume of the convex envelope.");
    2361                 DoLog(1) && (Log() << Verbose(1) << "Storing tecplot convex data in " << argv[argptr] << "." << endl);
    2362                 DoLog(1) && (Log() << Verbose(1) << "Storing tecplot non-convex data in " << argv[argptr+1] << "." << endl);
     2077                Log() << Verbose(0) << "Evaluating volume of the convex envelope.";
     2078                Log() << Verbose(1) << "Storing tecplot convex data in " << argv[argptr] << "." << endl;
     2079                Log() << Verbose(1) << "Storing tecplot non-convex data in " << argv[argptr+1] << "." << endl;
    23632080                LCList = new LinkedCell(mol, 10.);
    23642081                //FindConvexBorder(mol, LCList, argv[argptr]);
     
    23672084                double volumedifference = ConvexizeNonconvexEnvelope(TesselStruct, mol, argv[argptr]);
    23682085                double clustervolume = VolumeOfConvexEnvelope(TesselStruct, &configuration);
    2369                 DoLog(0) && (Log() << Verbose(0) << "The tesselated volume area is " << clustervolume << " " << (configuration.GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl);
    2370                 DoLog(0) && (Log() << Verbose(0) << "The non-convex tesselated volume area is " << clustervolume-volumedifference << " " << (configuration.GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl);
     2086                Log() << Verbose(0) << "The tesselated volume area is " << clustervolume << " " << (configuration.GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl;
     2087                Log() << Verbose(0) << "The non-convex tesselated volume area is " << clustervolume-volumedifference << " " << (configuration.GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl;
    23712088                delete(TesselStruct);
    23722089                delete(LCList);
     
    23782095              if ((argptr+1 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) ) {
    23792096                ExitFlag = 255;
    2380                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for suspension with specified volume: -U <volume> <density>" << endl);
     2097                eLog() << Verbose(0) << "Not enough or invalid arguments given for suspension with specified volume: -U <volume> <density>" << endl;
    23812098                performCriticalExit();
    23822099              } else {
    23832100                volume = atof(argv[argptr++]);
    2384                 DoLog(0) && (Log() << Verbose(0) << "Using " << volume << " angstrom^3 as the volume instead of convex envelope one's." << endl);
     2101                Log() << Verbose(0) << "Using " << volume << " angstrom^3 as the volume instead of convex envelope one's." << endl;
    23852102              }
    23862103            case 'u':
     
    23892106                if (volume != -1)
    23902107                  ExitFlag = 255;
    2391                   DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for suspension: -u <density>" << endl);
     2108                  eLog() << Verbose(0) << "Not enough arguments given for suspension: -u <density>" << endl;
    23922109                  performCriticalExit();
    23932110              } else {
    23942111                double density;
    23952112                SaveFlag = true;
    2396                 DoLog(0) && (Log() << Verbose(0) << "Evaluating necessary cell volume for a cluster suspended in water.");
     2113                Log() << Verbose(0) << "Evaluating necessary cell volume for a cluster suspended in water.";
    23972114                density = atof(argv[argptr++]);
    23982115                if (density < 1.0) {
    2399                   DoeLog(1) && (eLog()<< Verbose(1) << "Density must be greater than 1.0g/cm^3 !" << endl);
     2116                  eLog() << Verbose(1) << "Density must be greater than 1.0g/cm^3 !" << endl;
    24002117                  density = 1.3;
    24012118                }
     
    24032120//                  repetition[i] = atoi(argv[argptr++]);
    24042121//                  if (repetition[i] < 1)
    2405 //                    DoeLog(1) && (eLog()<< Verbose(1) << "repetition value must be greater 1!" << endl);
     2122//                    eLog() << Verbose(1) << "repetition value must be greater 1!" << endl;
    24062123//                  repetition[i] = 1;
    24072124//                }
     
    24132130              if ((argptr+2 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
    24142131                ExitFlag = 255;
    2415                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for repeating cells: -d <repeat_x> <repeat_y> <repeat_z>" << endl);
     2132                eLog() << Verbose(0) << "Not enough or invalid arguments given for repeating cells: -d <repeat_x> <repeat_y> <repeat_z>" << endl;
    24162133                performCriticalExit();
    24172134              } else {
    24182135                SaveFlag = true;
    2419                 double * const cell_size = World::get()->cell_size;
    24202136                for (int axis = 1; axis <= NDIM; axis++) {
    24212137                  int faktor = atoi(argv[argptr++]);
     
    24242140                  Vector ** vectors;
    24252141                  if (faktor < 1) {
    2426                     DoeLog(1) && (eLog()<< Verbose(1) << "Repetition factor mus be greater than 1!" << endl);
     2142                    eLog() << Verbose(1) << "Repetition factor mus be greater than 1!" << endl;
    24272143                    faktor = 1;
    24282144                  }
     
    24412157                    }
    24422158                    if (count != j)
    2443                       DoeLog(1) && (eLog()<< Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl);
     2159                      eLog() << Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl;
    24442160                    x.Zero();
    24452161                    y.Zero();
    2446                     y.x[abs(axis)-1] = cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] * abs(axis)/axis; // last term is for sign, first is for magnitude
     2162                    y.x[abs(axis)-1] = mol->cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] * abs(axis)/axis; // last term is for sign, first is for magnitude
    24472163                    for (int i=1;i<faktor;i++) {  // then add this list with respective translation factor times
    24482164                      x.AddVector(&y); // per factor one cell width further
     
    24652181                      mol->Translate(&x);
    24662182                    }
    2467                     cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] *= faktor;
     2183                    mol->cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] *= faktor;
    24682184                  }
    24692185                }
     
    24822198  } else {  // no arguments, hence scan the elements db
    24832199    if (periode->LoadPeriodentafel(configuration.databasepath))
    2484       DoLog(0) && (Log() << Verbose(0) << "Element list loaded successfully." << endl);
     2200      Log() << Verbose(0) << "Element list loaded successfully." << endl;
    24852201    else
    2486       DoLog(0) && (Log() << Verbose(0) << "Element list loading failed." << endl);
     2202      Log() << Verbose(0) << "Element list loading failed." << endl;
    24872203    configuration.RetrieveConfigPathAndName("main_pcp_linux");
    24882204  }
     
    25052221  char *ConfigFileName = NULL;
    25062222  int j;
    2507 
    2508   cout << ESPACKVersion << endl;
    2509 
    2510   DoLog(1) && (Log() << Verbose(1) << "test" << endl);
    2511   DoLog(3) && (Log() << Verbose(1) << "test");
    25122223
    25132224  setVerbosity(0);
     
    25372248  if (molecules->ListOfMolecules.size() == 0) {
    25382249    mol = new molecule(periode);
    2539     double * const cell_size = World::get()->cell_size;
    2540     if (cell_size[0] == 0.) {
    2541       DoLog(0) && (Log() << Verbose(0) << "enter lower tridiagonal form of basis matrix" << endl << endl);
     2250    if (mol->cell_size[0] == 0.) {
     2251      Log() << Verbose(0) << "enter lower tridiagonal form of basis matrix" << endl << endl;
    25422252      for (int i=0;i<6;i++) {
    2543         DoLog(1) && (Log() << Verbose(1) << "Cell size" << i << ": ");
    2544         cin >> cell_size[i];
     2253        Log() << Verbose(1) << "Cell size" << i << ": ";
     2254        cin >> mol->cell_size[i];
    25452255      }
    25462256    }
     
    25522262
    25532263  // now the main construction loop
    2554   DoLog(0) && (Log() << Verbose(0) << endl << "Now comes the real construction..." << endl);
     2264  Log() << Verbose(0) << endl << "Now comes the real construction..." << endl;
    25552265  do {
    2556     DoLog(0) && (Log() << Verbose(0) << endl << endl);
    2557     DoLog(0) && (Log() << Verbose(0) << "============Molecule list=======================" << endl);
     2266    Log() << Verbose(0) << endl << endl;
     2267    Log() << Verbose(0) << "============Molecule list=======================" << endl;
    25582268    molecules->Enumerate((ofstream *)&cout);
    2559     DoLog(0) && (Log() << Verbose(0) << "============Menu===============================" << endl);
    2560     DoLog(0) && (Log() << Verbose(0) << "a - set molecule (in)active" << endl);
    2561     DoLog(0) && (Log() << Verbose(0) << "e - edit molecules (load, parse, save)" << endl);
    2562     DoLog(0) && (Log() << Verbose(0) << "g - globally manipulate atoms in molecule" << endl);
    2563     DoLog(0) && (Log() << Verbose(0) << "M - Merge molecules" << endl);
    2564     DoLog(0) && (Log() << Verbose(0) << "m - manipulate atoms" << endl);
    2565     DoLog(0) && (Log() << Verbose(0) << "-----------------------------------------------" << endl);
    2566     DoLog(0) && (Log() << Verbose(0) << "c - edit the current configuration" << endl);
    2567     DoLog(0) && (Log() << Verbose(0) << "-----------------------------------------------" << endl);
    2568     DoLog(0) && (Log() << Verbose(0) << "s - save current setup to config file" << endl);
    2569     DoLog(0) && (Log() << Verbose(0) << "T - call the current test routine" << endl);
    2570     DoLog(0) && (Log() << Verbose(0) << "q - quit" << endl);
    2571     DoLog(0) && (Log() << Verbose(0) << "===============================================" << endl);
    2572     DoLog(0) && (Log() << Verbose(0) << "Input: ");
     2269    Log() << Verbose(0) << "============Menu===============================" << endl;
     2270    Log() << Verbose(0) << "a - set molecule (in)active" << endl;
     2271    Log() << Verbose(0) << "e - edit molecules (load, parse, save)" << endl;
     2272    Log() << Verbose(0) << "g - globally manipulate atoms in molecule" << endl;
     2273    Log() << Verbose(0) << "M - Merge molecules" << endl;
     2274    Log() << Verbose(0) << "m - manipulate atoms" << endl;
     2275    Log() << Verbose(0) << "-----------------------------------------------" << endl;
     2276    Log() << Verbose(0) << "c - edit the current configuration" << endl;
     2277    Log() << Verbose(0) << "-----------------------------------------------" << endl;
     2278    Log() << Verbose(0) << "s - save current setup to config file" << endl;
     2279    Log() << Verbose(0) << "T - call the current test routine" << endl;
     2280    Log() << Verbose(0) << "q - quit" << endl;
     2281    Log() << Verbose(0) << "===============================================" << endl;
     2282    Log() << Verbose(0) << "Input: ";
    25732283    cin >> choice;
    25742284
     
    25762286      case 'a':  // (in)activate molecule
    25772287        {
    2578           DoLog(0) && (Log() << Verbose(0) << "Enter index of molecule: ");
     2288          Log() << Verbose(0) << "Enter index of molecule: ";
    25792289          cin >> j;
    25802290          for(MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
     
    26222332  // save element data base
    26232333  if (periode->StorePeriodentafel(configuration->databasepath)) //ElementsFileName
    2624     DoLog(0) && (Log() << Verbose(0) << "Saving of elements.db successful." << endl);
     2334    Log() << Verbose(0) << "Saving of elements.db successful." << endl;
    26252335  else
    2626     DoLog(0) && (Log() << Verbose(0) << "Saving of elements.db failed." << endl);
     2336    Log() << Verbose(0) << "Saving of elements.db failed." << endl;
    26272337
    26282338  delete(molecules); // also free's all molecules contained
Note: See TracChangeset for help on using the changeset viewer.