Changes in / [3a0b38:ebbd3d]


Ignore:
Files:
3 added
48 edited

Legend:

Unmodified
Added
Removed
  • src/analysis_correlation.hpp

    r3a0b38 rebbd3d  
    7272  if (map == NULL) {
    7373    eLog() << Verbose(0) << "Nothing to min/max, map is NULL!" << endl;
     74    performCriticalExit();
    7475    return;
    7576  }
     
    107108  if (map == NULL) {
    108109    eLog() << Verbose(0) << "Nothing to bin, is NULL!" << endl;
     110    performCriticalExit();
    109111    return outmap;
    110112  }
  • src/analyzer.cpp

    r3a0b38 rebbd3d  
    9494  if (!Hcorrection.ParseFragmentMatrix(argv[1], "", HCORRECTIONSUFFIX,0,0)) {
    9595    NoHCorrection = true;
    96     Log() << Verbose(0) << "No HCorrection file found, skipping these." << endl;
     96    eLog() << Verbose(2) << "No HCorrection file found, skipping these." << endl;
    9797  }
    9898 
     
    100100  if (!Hessian.ParseFragmentMatrix(argv[1], dir, HessianSuffix,0,0)) {
    101101    NoHessian = true;
    102     Log() << Verbose(0) << "No Hessian file found, skipping these." << endl;
     102    eLog() << Verbose(2) << "No Hessian file found, skipping these." << endl;
    103103  }
    104104  if (!Time.ParseFragmentMatrix(argv[1], dir, TimeSuffix, 10,1)) {
    105105    NoTime = true;
    106     Log() << Verbose(0) << "No speed file found, skipping these." << endl;
     106    eLog() << Verbose(2) << "No speed file found, skipping these." << endl;
    107107  }
    108108  if (periode != NULL) { // also look for PAS values
  • src/atom_bondedparticle.cpp

    r3a0b38 rebbd3d  
    4444void BondedParticle::OutputBondOfAtom() const
    4545{
    46   Log() << Verbose(4) << "Atom " << Name << "/" << nr << " with " << ListOfBonds.size() << " bonds: ";
     46  Log() << Verbose(4) << "Atom " << Name << "/" << nr << " with " << ListOfBonds.size() << " bonds: " << endl;
    4747  int TotalDegree = 0;
    4848  for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); ++Runner) {
    49     Log() << Verbose(0) << **Runner << "\t";
     49    Log() << Verbose(4) << **Runner << endl;
    5050    TotalDegree += (*Runner)->BondDegree;
    5151  }
    52   Log() << Verbose(0) << " -- TotalDegree: " << TotalDegree << endl;
     52  Log() << Verbose(4) << " -- TotalDegree: " << TotalDegree << endl;
    5353};
    5454
     
    7575      status = true;
    7676    } else {
    77       Log() << Verbose(1) << "ERROR: " << *Binder << " does not contain " << *this << "." << endl;
     77      eLog() << Verbose(1) << *Binder << " does not contain " << *this << "." << endl;
    7878    }
    7979  } else {
    80     Log() << Verbose(1) << "ERROR: Binder is " << Binder << "." << endl;
     80    eLog() << Verbose(1) << "Binder is " << Binder << "." << endl;
    8181  }
    8282  return status;
     
    9494      status = true;
    9595    } else {
    96       Log() << Verbose(1) << "ERROR: " << *Binder << " does not contain " << *this << "." << endl;
     96      eLog() << Verbose(1) << *Binder << " does not contain " << *this << "." << endl;
    9797    }
    9898  } else {
    99     Log() << Verbose(1) << "ERROR: Binder is " << Binder << "." << endl;
     99    eLog() << Verbose(1) << "Binder is " << Binder << "." << endl;
    100100  }
    101101  return status;
     
    121121  bond *CandidateBond = NULL;
    122122
     123  NoBonds = CountBonds();
    123124  //Log() << Verbose(3) << "Walker " << *this << ": " << (int)this->type->NoValenceOrbitals << " > " << NoBonds << "?" << endl;
    124   NoBonds = CountBonds();
    125125  if ((int)(type->NoValenceOrbitals) > NoBonds) { // we have a mismatch, check all bonding partners for mismatch
    126126    for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); (++Runner)) {
    127127      OtherWalker = (*Runner)->GetOtherAtom(this);
    128128      OtherNoBonds = OtherWalker->CountBonds();
    129       //Log() << Verbose(3) << "OtherWalker " << *OtherWalker << ": " << (int)OtherWalker->type->NoValenceOrbitals << " > " << NoBonds << "?" << endl;
    130       if ((int)(OtherWalker->type->NoValenceOrbitals) > NoBonds) { // check if possible candidate
     129      //Log() << Verbose(3) << "OtherWalker " << *OtherWalker << ": " << (int)OtherWalker->type->NoValenceOrbitals << " > " << OtherNoBonds << "?" << endl;
     130      if ((int)(OtherWalker->type->NoValenceOrbitals) > OtherNoBonds) { // check if possible candidate
    131131        if ((CandidateBond == NULL) || (ListOfBonds.size() > OtherWalker->ListOfBonds.size())) { // pick the one with fewer number of bonds first
    132132          CandidateBond = (*Runner);
     
    137137    if ((CandidateBond != NULL)) {
    138138      CandidateBond->BondDegree++;
    139       Log() << Verbose(2) << "Increased bond degree for bond " << *CandidateBond << "." << endl;
     139      //Log() << Verbose(2) << "Increased bond degree for bond " << *CandidateBond << "." << endl;
    140140    } else {
    141       //Log() << Verbose(2) << "Could not find correct degree for atom " << *this << "." << endl;
     141      eLog() << Verbose(2) << "Could not find correct degree for atom " << *this << "." << endl;
    142142      FalseBondDegree++;
    143143    }
  • src/atom_graphnode.cpp

    r3a0b38 rebbd3d  
    2929  Log() << Verbose(2) << "Atom " << Name << " is " << ((SeparationVertex) ? "a" : "not a") << " separation vertex, components are ";
    3030  OutputComponentNumber();
    31   Log() << Verbose(0) << " with Lowpoint " << LowpointNr << " and Graph Nr. " << GraphNr << "." << endl;
     31  Log() << Verbose(3) << " with Lowpoint " << LowpointNr << " and Graph Nr. " << GraphNr << "." << endl;
    3232};
    3333
     
    4040  if (ComponentNr != NULL) {
    4141    for (int i=0; ComponentNr[i] != -1; i++)
    42       Log() << Verbose(0) << ComponentNr[i] << " ";
     42      Log() << Verbose(2) << ComponentNr[i] << " ";
    4343  }
    4444};
  • src/atom_trajectoryparticle.cpp

    r3a0b38 rebbd3d  
    203203        U[d] = gsl_ran_gaussian (r, sigma);
    204204      }
    205       Log() << Verbose(0) << sqrt(U[0]*U[0]+U[1]*U[1]+U[2]*U[2]) << endl;
     205      Log() << Verbose(2) << sqrt(U[0]*U[0]+U[1]*U[1]+U[2]*U[2]) << endl;
    206206    }
    207207    for (int d=0; d<NDIM; d++)
  • src/bond.cpp

    r3a0b38 rebbd3d  
    6363  if(rightatom == Atom)
    6464    return leftatom;
    65   eLog() << Verbose(0) << "Bond " << *this << " does not contain atom " << *Atom << "!" << endl;
     65  eLog() << Verbose(1) << "Bond " << *this << " does not contain atom " << *Atom << "!" << endl;
    6666  return NULL;
    6767};
     
    9999bool bond::MarkUsed(const enum Shading color) {
    100100  if (Used == black) {
    101     eLog() << Verbose(0) << "ERROR: Bond " << this << " was already marked black!." << endl;
     101    eLog() << Verbose(1) << "Bond " << this << " was already marked black!." << endl;
    102102    return false;
    103103  } else {
  • src/bondgraph.cpp

    r3a0b38 rebbd3d  
    153153{
    154154  if (BondLengthMatrix == NULL) {// safety measure if no matrix has been parsed yet
    155     eLog() << Verbose(1) << "WARNING:  BondLengthMatrixMinMaxDistance() called without having parsed the bond length matrix yet!" << endl;
     155    eLog() << Verbose(2) << "BondLengthMatrixMinMaxDistance() called without having parsed the bond length matrix yet!" << endl;
    156156    CovalentMinMaxDistance(Walker, OtherWalker, MinDistance, MaxDistance, IsAngstroem);
    157157  } else {
  • src/boundary.cpp

    r3a0b38 rebbd3d  
    176176        angle = 0.; // otherwise it's a vector in Axis Direction and unimportant for boundary issues
    177177
    178       //Log() << Verbose(0) << "Checking sign in quadrant : " << ProjectedVector.Projection(&AngleReferenceNormalVector) << "." << endl;
     178      //Log() << Verbose(2) << "Checking sign in quadrant : " << ProjectedVector.Projection(&AngleReferenceNormalVector) << "." << endl;
    179179      if (ProjectedVector.ScalarProduct(&AngleReferenceNormalVector) > 0) {
    180180        angle = 2. * M_PI - angle;
     
    214214    //      for(Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++) {
    215215    //        if (runner != BoundaryPoints[axis].begin())
    216     //          Log() << Verbose(0) << ", " << i << ": " << *runner->second.second;
     216    //          Log() << Verbose(2) << ", " << i << ": " << *runner->second.second;
    217217    //        else
    218     //          Log() << Verbose(0) << i << ": " << *runner->second.second;
     218    //          Log() << Verbose(2) << i << ": " << *runner->second.second;
    219219    //        i++;
    220220    //      }
    221     //      Log() << Verbose(0) << endl;
     221    //      Log() << Verbose(2) << endl;
    222222    //    }
    223223    // 3c. throw out points whose distance is less than the mean of left and right neighbours
     
    249249          SideA.SubtractVector(MolCenter);
    250250          SideA.ProjectOntoPlane(&AxisVector);
    251           //          Log() << Verbose(0) << "SideA: ";
    252           //          SideA.Output(out);
    253           //          Log() << Verbose(0) << endl;
     251          //          Log() << Verbose(0) << "SideA: " << SideA << endl;
    254252
    255253          SideB.CopyVector(&right->second.second->x);
    256254          SideB.SubtractVector(MolCenter);
    257255          SideB.ProjectOntoPlane(&AxisVector);
    258           //          Log() << Verbose(0) << "SideB: ";
    259           //          SideB.Output(out);
    260           //          Log() << Verbose(0) << endl;
     256          //          Log() << Verbose(0) << "SideB: " << SideB << endl;
    261257
    262258          SideC.CopyVector(&left->second.second->x);
    263259          SideC.SubtractVector(&right->second.second->x);
    264260          SideC.ProjectOntoPlane(&AxisVector);
    265           //          Log() << Verbose(0) << "SideC: ";
    266           //          SideC.Output(out);
    267           //          Log() << Verbose(0) << endl;
     261          //          Log() << Verbose(0) << "SideC: " << SideC << endl;
    268262
    269263          SideH.CopyVector(&runner->second.second->x);
    270264          SideH.SubtractVector(MolCenter);
    271265          SideH.ProjectOntoPlane(&AxisVector);
    272           //          Log() << Verbose(0) << "SideH: ";
    273           //          SideH.Output(out);
    274           //          Log() << Verbose(0) << endl;
     266          //          Log() << Verbose(0) << "SideH: " << SideH << endl;
    275267
    276268          // calculate each length
     
    335327      for(Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++) {
    336328        if (runner != BoundaryPoints[axis].begin())
    337           Log() << Verbose(0) << ", " << i << ": " << *runner->second.second;
     329          Log() << Verbose(2) << ", " << i << ": " << *runner->second.second;
    338330        else
    339           Log() << Verbose(0) << i << ": " << *runner->second.second;
     331          Log() << Verbose(2) << i << ": " << *runner->second.second;
    340332        i++;
    341333      }
    342       Log() << Verbose(0) << endl;
     334      Log() << Verbose(2) << endl;
    343335    }
    344336
     
    347339    for (Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++)
    348340        if (!TesselStruct->AddBoundaryPoint(runner->second.second, 0))
    349           Log() << Verbose(3) << "WARNING: Point " << *(runner->second.second) << " is already present!" << endl;
     341          eLog() << Verbose(2) << "Point " << *(runner->second.second) << " is already present!" << endl;
    350342
    351343  Log() << Verbose(2) << "I found " << TesselStruct->PointsOnBoundaryCount << " points on the convex boundary." << endl;
     
    355347  //  Log() << Verbose(1) << "Listing PointsOnBoundary:";
    356348  //  for(PointMap::iterator runner = PointsOnBoundary.begin(); runner != PointsOnBoundary.end(); runner++) {
    357   //    Log() << Verbose(0) << " " << *runner->second;
     349  //    Log() << Verbose(1) << " " << *runner->second;
    358350  //  }
    359   //  Log() << Verbose(0) << endl;
     351  //  Log() << Verbose(1) << endl;
    360352
    361353  // 3a. guess starting triangle
     
    406398        // flip the line
    407399        if (TesselStruct->PickFarthestofTwoBaselines(line) == 0.)
    408           Log() << Verbose(1) << "ERROR: Correction of concave baselines failed!" << endl;
     400          eLog() << Verbose(1) << "Correction of concave baselines failed!" << endl;
    409401        else {
    410402          TesselStruct->FlipBaseline(line);
     
    462454
    463455  if ((TesselStruct == NULL) || (TesselStruct->PointsOnBoundary.empty())) {
    464     Log() << Verbose(2) << "ERROR: TesselStruct is empty." << endl;
     456    eLog() << Verbose(1) << "TesselStruct is empty." << endl;
    465457    return false;
    466458  }
     
    470462    Log() << Verbose(2) << "Remaining points are: ";
    471463    for (PointMap::iterator PointSprinter = TesselStruct->PointsOnBoundary.begin(); PointSprinter != TesselStruct->PointsOnBoundary.end(); PointSprinter++)
    472       Log() << Verbose(0) << *(PointSprinter->second) << "\t";
    473     Log() << Verbose(0) << endl;
     464      Log() << Verbose(2) << *(PointSprinter->second) << "\t";
     465    Log() << Verbose(2) << endl;
    474466
    475467    PointRunner = TesselStruct->PointsOnBoundary.begin();
     
    528520  // check whether there is something to work on
    529521  if (TesselStruct == NULL) {
    530     Log() << Verbose(1) << "ERROR: TesselStruct is empty!" << endl;
     522    eLog() << Verbose(1) << "TesselStruct is empty!" << endl;
    531523    return volume;
    532524  }
     
    679671      OutputName.append(TecplotSuffix);
    680672      ofstream *tecplot = new ofstream(OutputName.c_str());
    681       WriteTecplotFile(tecplot, TesselStruct, mol, 0);
     673      WriteTecplotFile(tecplot, TesselStruct, mol, -1);
    682674      tecplot->close();
    683675      delete(tecplot);
     
    756748  Log() << Verbose(1) << "Minimum volume of the convex envelope contained in a rectangular box is " << minimumvolume << " atomicmassunit/" << (IsAngstroem ? "angstrom" : "atomiclength") << "^3." << endl;
    757749  if (minimumvolume > cellvolume) {
    758     eLog() << Verbose(0) << "ERROR: the containing box already has a greater volume than the envisaged cell volume!" << endl;
     750    eLog() << Verbose(1) << "the containing box already has a greater volume than the envisaged cell volume!" << endl;
    759751    Log() << Verbose(0) << "Setting Box dimensions to minimum possible, the greatest diameters." << endl;
    760752    for (int i = 0; i < NDIM; i++)
     
    849841  for(int i=0;i<NDIM;i++) {
    850842    N[i] = (int) ceil(1./FillerDistance.x[i]);
    851     Log() << Verbose(0) << N[i];
     843    Log() << Verbose(1) << N[i];
    852844    if (i != NDIM-1)
    853       Log() << Verbose(0)<< ", ";
     845      Log() << Verbose(1)<< ", ";
    854846    else
    855       Log() << Verbose(0) << "." << endl;
     847      Log() << Verbose(1) << "." << endl;
    856848  }
    857849
     
    870862          // get linked cell list
    871863          if (TesselStruct[i] == NULL) {
    872             Log() << Verbose(1) << "ERROR: TesselStruct of " << (*ListRunner) << " is NULL. Didn't we pre-create it?" << endl;
     864            eLog() << Verbose(1) << "TesselStruct of " << (*ListRunner) << " is NULL. Didn't we pre-create it?" << endl;
    873865            FillIt = false;
    874866          } else {
     
    994986  while ((baseline != TesselStruct->LinesOnBoundary.end()) || (OneLoopWithoutSuccessFlag)) {
    995987    if (baseline->second->triangles.size() == 1) {
     988      CheckListOfBaselines(TesselStruct);
    996989      // 3. find next triangle
    997990      TesselationFailFlag = TesselStruct->FindNextSuitableTriangle(*(baseline->second), *(((baseline->second->triangles.begin()))->second), RADIUS, LCList); //the line is there, so there is a triangle, but only one.
    998991      OneLoopWithoutSuccessFlag = OneLoopWithoutSuccessFlag || TesselationFailFlag;
    999992      if (!TesselationFailFlag)
    1000         eLog() << Verbose(0) << "WARNING: FindNextSuitableTriangle failed." << endl;
     993        eLog() << Verbose(2) << "FindNextSuitableTriangle failed." << endl;
    1001994
    1002995      // write temporary envelope
     
    1006999        }
    10071000      }
    1008       baseline = TesselStruct->LinesOnBoundary.end();
    1009       Log() << Verbose(2) << "Baseline set to end." << endl;
     1001      if (TesselationFailFlag) {
     1002        baseline = TesselStruct->LinesOnBoundary.begin();
     1003        OneLoopWithoutSuccessFlag = false;
     1004        Log() << Verbose(2) << "Baseline set to begin." << endl;
     1005      }
    10101006    } else {
    10111007      //Log() << Verbose(1) << "Line " << *baseline->second << " has " << baseline->second->triangles.size() << " triangles adjacent" << endl;
    1012       if (baseline->second->triangles.size() != 2)
    1013         Log() << Verbose(1) << "ERROR: TESSELATION FINISHED WITH INVALID TRIANGLE COUNT!" << endl;
     1008      if (baseline->second->triangles.size() != 2) {
     1009        eLog() << Verbose(0) << "TESSELATION FINISHED WITH INVALID TRIANGLE COUNT!" << endl;
     1010        performCriticalExit();
     1011      }
    10141012    }
    10151013
  • src/boundary.hpp

    r3a0b38 rebbd3d  
    3535
    3636#define DEBUG 1
    37 #define DoSingleStepOutput 0
     37#define DoSingleStepOutput 1
    3838#define SingleStepWidth 1
    3939
  • src/builder.cpp

    r3a0b38 rebbd3d  
    9595  switch (choice) {
    9696    default:
    97       Log() << Verbose(0) << "Not a valid choice." << endl;
     97      eLog() << Verbose(2) << "Not a valid choice." << endl;
    9898      break;
    9999      case 'a': // absolute coordinates of atom
     
    109109        valid = true;
    110110        do {
    111           if (!valid) Log() << Verbose(0) << "Resulting position out of cell." << endl;
     111          if (!valid) eLog() << Verbose(2) << "Resulting position out of cell." << endl;
    112112          Log() << Verbose(0) << "Enter reference coordinates." << endl;
    113113          x.AskPosition(mol->cell_size, true);
     
    125125        valid = true;
    126126        do {
    127           if (!valid) Log() << Verbose(0) << "Resulting position out of cell." << endl;
     127          if (!valid) eLog() << Verbose(2) << "Resulting position out of cell." << endl;
    128128          second = mol->AskAtom("Enter atom number: ");
    129129          Log() << Verbose(0) << "Enter relative coordinates." << endl;
     
    142142        do {
    143143          if (!valid) {
    144             Log() << Verbose(0) << "Resulting coordinates out of cell - ";
    145             first->x.Output();
    146             Log() << Verbose(0) << endl;
     144            eLog() << Verbose(2) << "Resulting coordinates out of cell - " << first->x << endl;
    147145          }
    148146          Log() << Verbose(0) << "First, we need two atoms, the first atom is the central, while the second is the outer one." << endl;
     
    671669  Log() << Verbose(0) << "===============================================" << endl;
    672670  if (molecules->NumberOfActiveMolecules() > 1)
    673     Log() << Verbose(0) << "WARNING: There is more than one molecule active! Atoms will be added to each." << endl;
     671    eLog() << Verbose(2) << "There is more than one molecule active! Atoms will be added to each." << endl;
    674672  Log() << Verbose(0) << "INPUT: ";
    675673  cin >> choice;
     
    794792  Log() << Verbose(0) << "===============================================" << endl;
    795793  if (molecules->NumberOfActiveMolecules() > 1)
    796     Log() << Verbose(0) << "WARNING: There is more than one molecule active! Atoms will be added to each." << endl;
     794    eLog() << Verbose(2) << "There is more than one molecule active! Atoms will be added to each." << endl;
    797795  Log() << Verbose(0) << "INPUT: ";
    798796  cin >> choice;
     
    827825          }
    828826          if (count != j)
    829             Log() << Verbose(0) << "ERROR: 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;
    830828          x.Zero();
    831829          y.Zero();
     
    11721170  else {
    11731171    eLog() << Verbose(0) << "I don't have anything to test on ... ";
     1172    performCriticalExit();
    11741173    return;
    11751174  }
     
    12481247  ofstream output;
    12491248  molecule *mol = new molecule(periode);
     1249  mol->SetNameFromFilename(ConfigFileName);
    12501250
    12511251  if (!strcmp(configuration->configpath, configuration->GetDefaultPath())) {
    1252     eLog() << Verbose(0) << "WARNING: 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;
    12531253  }
    12541254
     
    13541354
    13551355  if (!strcmp(configuration->configpath, configuration->GetDefaultPath())) {
    1356     eLog() << Verbose(0) << "WARNING: 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;
    13571357  }
    13581358
     
    13861386  int argptr;
    13871387  molecule *mol = NULL;
    1388   string BondGraphFileName("");
     1388  string BondGraphFileName("\n");
     1389  int verbosity = 0;
    13891390  strncpy(configuration.databasepath, LocalPath, MAXSTRINGSIZE-1);
    13901391
     
    14321433            Log() << Verbose(0) << "\t-T x1 x2 x3\tTranslate periodically all atoms by this vector (x1,x2,x3)." << endl;
    14331434            Log() << Verbose(0) << "\t-u rho\tsuspend in water solution and output necessary cell lengths, average density rho and repetition." << endl;
    1434             Log() << Verbose(0) << "\t-v/-V\t\tGives version information." << 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;
    14351437            Log() << Verbose(0) << "Note: config files must not begin with '-' !" << endl;
    14361438            return (1);
    14371439            break;
    14381440          case 'v':
     1441            while (argv[argptr-1][verbosity+1] == 'v') {
     1442              verbosity++;
     1443            }
     1444            setVerbosity(verbosity);
     1445            Log() << Verbose(0) << "Setting verbosity to " << verbosity << "." << endl;
     1446            break;
    14391447          case 'V':
    14401448            Log() << Verbose(0) << argv[0] << " " << VERSIONSTRING << endl;
     
    14451453            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    14461454              eLog() << Verbose(0) << "Not enough or invalid arguments for specifying element db: -e <db file>" << endl;
     1455              performCriticalExit();
    14471456            } else {
    14481457              Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl;
     
    14541463            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    14551464              eLog() << Verbose(0) << "Not enough or invalid arguments for specifying bond length table: -g <table file>" << endl;
     1465              performCriticalExit();
    14561466            } else {
    14571467              BondGraphFileName = argv[argptr];
     
    15301540       mol = new molecule(periode);
    15311541       mol->ActiveFlag = true;
     1542       if (ConfigFileName != NULL)
     1543         mol->SetNameFromFilename(ConfigFileName);
    15321544       molecules->insert(mol);
     1545     }
     1546     if (configuration.BG == NULL) {
     1547       configuration.BG = new BondGraph(configuration.GetIsAngstroem());
     1548       if ((BondGraphFileName.empty()) && (configuration.BG->LoadBondLengthTable(BondGraphFileName))) {
     1549         Log() << Verbose(0) << "Bond length table loaded successfully." << endl;
     1550       } else {
     1551         eLog() << Verbose(1) << "Bond length table loading failed." << endl;
     1552       }
    15331553     }
    15341554
     
    15461566                ExitFlag = 255;
    15471567                eLog() << Verbose(0) << "Not enough arguments for parsing: -p <xyz file>" << endl;
     1568                performCriticalExit();
    15481569              } else {
    15491570                SaveFlag = true;
     
    15531574                else {
    15541575                  Log() << Verbose(2) << "File found and parsed." << endl;
     1576                  mol->SetNameFromFilename(argv[argptr]);
     1577                  molecules->ListOfMolecules.remove(mol);
     1578                  molecules->DissectMoleculeIntoConnectedSubgraphs(mol,&configuration);
     1579                  if (molecules->ListOfMolecules.size() != 0) {
     1580                    for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
     1581                      if ((*ListRunner)->ActiveFlag) {
     1582                        mol = *ListRunner;
     1583                        break;
     1584                      }
     1585                  }
    15551586                  configPresent = present;
    15561587                }
     
    15621593                ExitFlag = 255;
    15631594                eLog() << Verbose(0) << "Not enough or invalid arguments for adding atom: -a <element> <x> <y> <z>" << endl;
     1595                performCriticalExit();
    15641596              } else {
    15651597                SaveFlag = true;
     
    15901622                ExitFlag = 255;
    15911623                eLog() << Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl;
     1624                performCriticalExit();
    15921625              } else {
    15931626                configuration.basis = argv[argptr];
     
    16341667                ExitFlag = 255;
    16351668                eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <Z> <output> <bin output>" << endl;
     1669                performCriticalExit();
    16361670              } else {
    16371671                SaveFlag = false;
     
    16801714                ExitFlag = 255;
    16811715                eLog() << Verbose(0) << "Not enough or invalid arguments given for changing element: -E <atom nr.> <element>" << endl;
     1716                performCriticalExit();
    16821717              } else {
    16831718                SaveFlag = true;
     
    16931728                ExitFlag = 255;
    16941729                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;
     1730                performCriticalExit();
    16951731              } else {
    16961732                SaveFlag = true;
     
    17311767                ExitFlag =255;
    17321768                eLog() << Verbose(0) << "Missing source file for bonds in molecule: -A <bond sourcefile>" << endl;
     1769                performCriticalExit();
    17331770              } else {
    17341771                Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl;
     
    17441781                ExitFlag = 255;
    17451782                eLog() << Verbose(0) << "Not enough or invalid arguments given for non-convex envelope: -o <radius> <tecplot output file>" << endl;
     1783                performCriticalExit();
    17461784              } else {
    17471785                class Tesselation *T = NULL;
    17481786                const LinkedCell *LCList = NULL;
    1749                 string filename(argv[argptr+1]);
    1750                 filename.append(".csv");
    1751                 Log() << Verbose(0) << "Evaluating non-convex envelope.";
     1787                molecule * Boundary = NULL;
     1788                //string filename(argv[argptr+1]);
     1789                //filename.append(".csv");
     1790                Log() << Verbose(0) << "Evaluating non-convex envelope of biggest molecule.";
    17521791                Log() << Verbose(1) << "Using rolling ball of radius " << atof(argv[argptr]) << " and storing tecplot data in " << argv[argptr+1] << "." << endl;
     1792                // find biggest molecule
     1793                int counter  = 0;
     1794                for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
     1795                  (*BigFinder)->CountAtoms();
     1796                  if ((Boundary == NULL) || (Boundary->AtomCount < (*BigFinder)->AtomCount)) {
     1797                    Boundary = *BigFinder;
     1798                  }
     1799                  counter++;
     1800                }
     1801                Log() << Verbose(1) << "Biggest molecule has " << Boundary->AtomCount << " atoms." << endl;
    17531802                start = clock();
    1754                 LCList = new LinkedCell(mol, atof(argv[argptr])*2.);
    1755                 FindNonConvexBorder(mol, T, LCList, atof(argv[argptr]), argv[argptr+1]);
     1803                LCList = new LinkedCell(Boundary, atof(argv[argptr])*2.);
     1804                FindNonConvexBorder(Boundary, T, LCList, atof(argv[argptr]), argv[argptr+1]);
    17561805                //FindDistributionOfEllipsoids(T, &LCList, N, number, filename.c_str());
    17571806                end = clock();
     
    17661815                ExitFlag = 255;
    17671816                eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -S <temperature file>" << endl;
     1817                performCriticalExit();
    17681818              } else {
    17691819                Log() << Verbose(1) << "Storing temperatures in " << argv[argptr] << "." << endl;
     
    17831833                ExitFlag = 255;
    17841834                eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl;
     1835                performCriticalExit();
    17851836              } else {
    17861837                SaveFlag = true;
     
    18001851                ExitFlag = 255;
    18011852                eLog() << Verbose(0) << "Not enough or invalid arguments given for parsing and integrating forces: -P <forces file>" << endl;
     1853                performCriticalExit();
    18021854              } else {
    18031855                SaveFlag = true;
     
    18151867                ExitFlag = 255;
    18161868                eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl;
     1869                performCriticalExit();
    18171870              } else {
    18181871                SaveFlag = true;
     
    18301883                  }
    18311884                } else {
    1832                   eLog() << Verbose(0) << "Removal failed due to missing atoms on molecule or wrong id." << endl;
     1885                  eLog() << Verbose(1) << "Removal failed due to missing atoms on molecule or wrong id." << endl;
    18331886                }
    18341887                argptr+=2;
     
    18401893                ExitFlag = 255;
    18411894                eLog() << Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl;
     1895                performCriticalExit();
    18421896              } else {
    18431897                if (ExitFlag == 0) ExitFlag = 1;
     
    18551909                ExitFlag = 255;
    18561910                eLog() << Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl;
     1911                performCriticalExit();
    18571912              } else {
    18581913                if (ExitFlag == 0) ExitFlag = 1;
     
    18701925                ExitFlag = 255;
    18711926                eLog() << Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl;
     1927                performCriticalExit();
    18721928              } else {
    18731929                SaveFlag = true;
     
    18931949                ExitFlag = 255;
    18941950                eLog() << Verbose(0) << "Not enough or invalid arguments given for centering in box: -b <xx> <xy> <xz> <yy> <yz> <zz>" << endl;
     1951                performCriticalExit();
    18951952              } else {
    18961953                SaveFlag = true;
     
    19101967                ExitFlag = 255;
    19111968                eLog() << Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl;
     1969                performCriticalExit();
    19121970              } else {
    19131971                SaveFlag = true;
     
    19271985                ExitFlag = 255;
    19281986                eLog() << Verbose(0) << "Not enough or invalid arguments given for centering with boundary: -c <boundary_x> <boundary_y> <boundary_z>" << endl;
     1987                performCriticalExit();
    19291988              } else {
    19301989                SaveFlag = true;
     
    19602019                ExitFlag = 255;
    19612020                eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -r <id>" << endl;
     2021                performCriticalExit();
    19622022              } else {
    19632023                SaveFlag = true;
     
    19732033                ExitFlag = 255;
    19742034                eLog() << Verbose(0) << "Not enough or invalid arguments for fragmentation: -f <max. bond distance> <bond order>" << endl;
     2035                performCriticalExit();
    19752036              } else {
    19762037                Log() << Verbose(0) << "Fragmenting molecule with bond distance " << argv[argptr] << " angstroem, order of " << argv[argptr+1] << "." << endl;
     
    19912052              j = atoi(argv[argptr++]);
    19922053              if ((j<0) || (j>1)) {
    1993                 eLog() << Verbose(1) << "ERROR: Argument of '-m' should be either 0 for no-rotate or 1 for rotate." << endl;
     2054                eLog() << Verbose(1) << "Argument of '-m' should be either 0 for no-rotate or 1 for rotate." << endl;
    19942055                j = 0;
    19952056              }
     
    20062067                ExitFlag = 255;
    20072068                eLog() << Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl;
     2069                performCriticalExit();
    20082070              } else {
    20092071                class Tesselation *TesselStruct = NULL;
     
    20302092                ExitFlag = 255;
    20312093                eLog() << Verbose(0) << "Not enough or invalid arguments given for suspension with specified volume: -U <volume> <density>" << endl;
    2032                 volume = -1; // for case 'u': don't print error again
     2094                performCriticalExit();
    20332095              } else {
    20342096                volume = atof(argv[argptr++]);
     
    20412103                  ExitFlag = 255;
    20422104                  eLog() << Verbose(0) << "Not enough arguments given for suspension: -u <density>" << endl;
     2105                  performCriticalExit();
    20432106              } else {
    20442107                double density;
     
    20472110                density = atof(argv[argptr++]);
    20482111                if (density < 1.0) {
    2049                   eLog() << Verbose(0) << "Density must be greater than 1.0g/cm^3 !" << endl;
     2112                  eLog() << Verbose(1) << "Density must be greater than 1.0g/cm^3 !" << endl;
    20502113                  density = 1.3;
    20512114                }
     
    20532116//                  repetition[i] = atoi(argv[argptr++]);
    20542117//                  if (repetition[i] < 1)
    2055 //                    eLog() << Verbose(0) << "ERROR: repetition value must be greater 1!" << endl;
     2118//                    eLog() << Verbose(1) << "repetition value must be greater 1!" << endl;
    20562119//                  repetition[i] = 1;
    20572120//                }
     
    20642127                ExitFlag = 255;
    20652128                eLog() << Verbose(0) << "Not enough or invalid arguments given for repeating cells: -d <repeat_x> <repeat_y> <repeat_z>" << endl;
     2129                performCriticalExit();
    20662130              } else {
    20672131                SaveFlag = true;
     
    20722136                  Vector ** vectors;
    20732137                  if (faktor < 1) {
    2074                     eLog() << Verbose(0) << "ERROR: Repetition faktor mus be greater than 1!" << endl;
     2138                    eLog() << Verbose(1) << "Repetition factor mus be greater than 1!" << endl;
    20752139                    faktor = 1;
    20762140                  }
     
    20892153                    }
    20902154                    if (count != j)
    2091                       Log() << Verbose(0) << "ERROR: AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl;
     2155                      eLog() << Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl;
    20922156                    x.Zero();
    20932157                    y.Zero();
     
    21542218  int j;
    21552219
    2156   setVerbosity(2);
     2220  setVerbosity(0);
    21572221
    21582222  // =========================== PARSE COMMAND LINE OPTIONS ====================================
  • src/config.cpp

    r3a0b38 rebbd3d  
    7272  file= new ifstream(filename);
    7373  if (file == NULL) {
    74     eLog() << Verbose(0) << "ERROR: config file " << filename << " missing!" << endl;
     74    eLog() << Verbose(1) << "config file " << filename << " missing!" << endl;
    7575    return;
    7676  }
     
    8787  // allocate buffer's 1st dimension
    8888  if (buffer != NULL) {
    89     eLog() << Verbose(0) << "ERROR: FileBuffer->buffer is not NULL!" << endl;
     89    eLog() << Verbose(1) << "FileBuffer->buffer is not NULL!" << endl;
    9090    return;
    9191  } else
     
    143143  if (LineMapping == NULL) {
    144144    eLog() << Verbose(0) << "map pointer is NULL: " << LineMapping << endl;
     145    performCriticalExit();
    145146    return;
    146147  }
     
    156157    if (CurrentLine+nr < NoLines)
    157158      LineMapping[CurrentLine+(nr++)] = runner->second;
    158     else
     159    else {
    159160      eLog() << Verbose(0) << "config::MapIonTypesInBuffer - NoAtoms is wrong: We are past the end of the file!" << endl;
     161      performCriticalExit();
     162    }
    160163  }
    161164}
     
    653656{
    654657  if (FileBuffer != NULL) {
    655     eLog() << Verbose(1) << "WARNING: deleting present FileBuffer in PrepareFileBuffer()." << endl;
     658    eLog() << Verbose(2) << "deleting present FileBuffer in PrepareFileBuffer()." << endl;
    656659    delete(FileBuffer);
    657660  }
     
    686689  if (MaxTypes == 0) {
    687690    eLog() << Verbose(0) << "There are no atoms according to MaxTypes in this config file." << endl;
     691    performCriticalExit();
    688692  } else {
    689693    // prescan number of ions per type
     
    704708    if (!ParseForParameter(verbose,FileBuffer, (const char*)name, 1, 1, 1, int_type, &value[0], 1, critical)) {
    705709      eLog() << Verbose(0) << "There are no atoms in the config file!" << endl;
     710      performCriticalExit();
    706711      return;
    707712    }
     
    847852  ifstream *file = new ifstream(filename);
    848853  if (file == NULL) {
    849     eLog() << Verbose(0) << "ERROR: config file " << filename << " missing!" << endl;
     854    eLog() << Verbose(1) << "config file " << filename << " missing!" << endl;
    850855    return;
    851856  }
     
    10511056
    10521057  // 2. parse the bond graph file if given
    1053   BG = new BondGraph(IsAngstroem);
    1054   if (BG->LoadBondLengthTable(BondGraphFileName)) {
    1055     Log() << Verbose(0) << "Bond length table loaded successfully." << endl;
    1056   } else {
    1057     Log() << Verbose(0) << "Bond length table loading failed." << endl;
     1058  if (BG == NULL) {
     1059    BG = new BondGraph(IsAngstroem);
     1060    if (BG->LoadBondLengthTable(BondGraphFileName)) {
     1061      Log() << Verbose(0) << "Bond length table loaded successfully." << endl;
     1062    } else {
     1063      eLog() << Verbose(1) << "Bond length table loading failed." << endl;
     1064    }
    10581065  }
    10591066
    10601067  // 3. parse the molecule in
    10611068  LoadMolecule(mol, FileBuffer, periode, FastParsing);
     1069  mol->SetNameFromFilename(filename);
    10621070  mol->ActiveFlag = true;
    10631071
     
    10801088  ifstream *file = new ifstream(filename);
    10811089  if (file == NULL) {
    1082     eLog() << Verbose(0) << "ERROR: config file " << filename << " missing!" << endl;
     1090    eLog() << Verbose(1) << "config file " << filename << " missing!" << endl;
    10831091    return;
    10841092  }
  • src/ellipsoid.cpp

    r3a0b38 rebbd3d  
    241241    x = new Vector[PointsToPick];
    242242  } else {
    243     eLog() << Verbose(2) << "WARNING: Given pointer to vector array seems already allocated." << endl;
     243    eLog() << Verbose(2) << "Given pointer to vector array seems already allocated." << endl;
    244244  }
    245245
     
    341341    x = new Vector[PointsToPick];
    342342  } else {
    343     eLog() << Verbose(2) << "WARNING: Given pointer to vector array seems already allocated." << endl;
     343    eLog() << Verbose(2) << "Given pointer to vector array seems already allocated." << endl;
    344344  }
    345345
  • src/errorlogger.cpp

    r3a0b38 rebbd3d  
    8282  l.nix->clear();
    8383  if (v.DoOutput(verbosityLevel)) {
    84     v.print(cout);
    8584    switch(v.Verbosity) {
    8685      case 0:
    87         cout << "CRITICAL: ";
     86        cerr << "CRITICAL: ";
    8887        break;
    8988      case 1:
    90         cout << "ERROR: ";
     89        cerr << "ERROR: ";
    9190        break;
    9291      case 2:
    93         cout << "WARNING: ";
     92        cerr << "WARNING: ";
    9493        break;
    9594      default:
    9695        break;
    9796    }
     97    v.print(cerr);
    9898    return cerr;
    9999  } else
     
    105105  l->nix->clear();
    106106  if (v.DoOutput(verbosityLevel)) {
    107     v.print(cout);
    108107    switch(v.Verbosity) {
    109108      case 0:
    110         cout << "CRITICAL: ";
     109        cerr << "CRITICAL: ";
    111110        break;
    112111      case 1:
    113         cout << "ERROR: ";
     112        cerr << "ERROR: ";
    114113        break;
    115114      case 2:
    116         cout << "WARNING: ";
     115        cerr << "WARNING: ";
    117116        break;
    118117      default:
    119118        break;
    120119    }
     120    v.print(cerr);
    121121    return cerr;
    122122  } else
  • src/helpers.hpp

    r3a0b38 rebbd3d  
    111111  if (LookupTable == NULL) {
    112112    eLog() << Verbose(0) << "LookupTable memory allocation failed!" << endl;
     113    performCriticalExit();
    113114    status = false;
    114115  } else {
  • src/linkedcell.cpp

    r3a0b38 rebbd3d  
    4747  Log() << Verbose(1) << "Begin of LinkedCell" << endl;
    4848  if (set->IsEmpty()) {
    49     eLog() << Verbose(0) << "ERROR: set contains no linked cell nodes!" << endl;
     49    eLog() << Verbose(1) << "set contains no linked cell nodes!" << endl;
    5050    return;
    5151  }
     
    7979  Log() << Verbose(2) << "Allocating cells ... ";
    8080  if (LC != NULL) {
    81     Log() << Verbose(1) << "ERROR: Linked Cell list is already allocated, I do nothing." << endl;
     81    eLog() << Verbose(1) << "Linked Cell list is already allocated, I do nothing." << endl;
    8282    return;
    8383  }
     
    122122  Log() << Verbose(1) << "Begin of LinkedCell" << endl;
    123123  if (set->empty()) {
    124     eLog() << Verbose(0) << "ERROR: set contains no linked cell nodes!" << endl;
     124    eLog() << Verbose(1) << "set contains no linked cell nodes!" << endl;
    125125    return;
    126126  }
     
    151151  Log() << Verbose(2) << "Allocating cells ... ";
    152152  if (LC != NULL) {
    153     Log() << Verbose(1) << "ERROR: Linked Cell list is already allocated, I do nothing." << endl;
     153    eLog() << Verbose(1) << "Linked Cell list is already allocated, I do nothing." << endl;
    154154    return;
    155155  }
     
    199199    status = status && ((n[i] >=0) && (n[i] < N[i]));
    200200  if (!status)
    201   eLog() << Verbose(0) << "ERROR: indices are out of bounds!" << endl;
     201  eLog() << Verbose(1) << "indices are out of bounds!" << endl;
    202202  return status;
    203203};
     
    260260    return status;
    261261  } else {
    262     eLog() << Verbose(1) << "ERROR: Node at " << *Walker << " is out of bounds." << endl;
     262    eLog() << Verbose(1) << "Node at " << *Walker << " is out of bounds." << endl;
    263263    return false;
    264264  }
  • src/memoryusageobserver.cpp

    r3a0b38 rebbd3d  
    8888
    8989  if (current == memoryUsers.end()) {
    90     Log() << Verbose(0) << "WARNING: There is non-tracked memory to be freed. Pointer "
     90    eLog() << Verbose(2) << "There is non-tracked memory to be freed. Pointer "
    9191      << pointer << " is not registered by MemoryUsageObserver: ";
    9292    if (msg != NULL)
  • src/molecule.cpp

    r3a0b38 rebbd3d  
    192192  BondRescale = TopOrigin->type->HBondDistance[TopBond->BondDegree-1];
    193193  if (BondRescale == -1) {
    194     eLog() << Verbose(3) << "ERROR: There is no typical hydrogen bond distance in replacing bond (" << TopOrigin->Name << "<->" << TopReplacement->Name << ") of degree " << TopBond->BondDegree << "!" << endl;
     194    eLog() << Verbose(1) << "There is no typical hydrogen bond distance in replacing bond (" << TopOrigin->Name << "<->" << TopReplacement->Name << ") of degree " << TopBond->BondDegree << "!" << endl;
    195195    return false;
    196196    BondRescale = bondlength;
     
    235235            SecondOtherAtom = (*Runner)->GetOtherAtom(TopOrigin);
    236236          } else {
    237             Log() << Verbose(3) << "WARNING: Detected more than four bonds for atom " << TopOrigin->Name;
     237            eLog() << Verbose(2) << "Detected more than four bonds for atom " << TopOrigin->Name;
    238238          }
    239239        }
     
    272272      bondangle = TopOrigin->type->HBondAngle[1];
    273273      if (bondangle == -1) {
    274         Log() << Verbose(3) << "ERROR: There is no typical hydrogen bond angle in replacing bond (" << TopOrigin->Name << "<->" << TopReplacement->Name << ") of degree " << TopBond->BondDegree << "!" << endl;
     274        eLog() << Verbose(1) << "There is no typical hydrogen bond angle in replacing bond (" << TopOrigin->Name << "<->" << TopReplacement->Name << ") of degree " << TopBond->BondDegree << "!" << endl;
    275275        return false;
    276276        bondangle = 0;
     
    394394      break;
    395395    default:
    396       eLog() << Verbose(0) << "ERROR: BondDegree does not state single, double or triple bond!" << endl;
     396      eLog() << Verbose(1) << "BondDegree does not state single, double or triple bond!" << endl;
    397397      AllWentWell = false;
    398398      break;
     
    445445    Walker->type = elemente->FindElement(shorthand);
    446446    if (Walker->type == NULL) {
    447       eLog() << Verbose(0) << "Could not parse the element at line: '" << line << "', setting to H.";
     447      eLog() << Verbose(1) << "Could not parse the element at line: '" << line << "', setting to H.";
    448448      Walker->type = elemente->FindElement(1);
    449449    }
     
    541541    add(Binder, last);
    542542  } else {
    543     eLog() << Verbose(1) << "ERROR: Could not add bond between " << atom1->Name << " and " << atom2->Name << " as one or both are not present in the molecule." << endl;
     543    eLog() << Verbose(1) << "Could not add bond between " << atom1->Name << " and " << atom2->Name << " as one or both are not present in the molecule." << endl;
    544544  }
    545545  return Binder;
     
    619619    AtomCount--;
    620620  } else
    621     eLog() << Verbose(0) << "ERROR: Atom " << pointer->Name << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl;
     621    eLog() << Verbose(1) << "Atom " << pointer->Name << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl;
    622622  if (ElementsInMolecule[pointer->type->Z] == 0)  // was last atom of this element?
    623623    ElementCount--;
     
    637637    ElementsInMolecule[pointer->type->Z]--; // decrease number of atom of this element
    638638  else
    639     eLog() << Verbose(0) << "ERROR: Atom " << pointer->Name << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl;
     639    eLog() << Verbose(1) << "Atom " << pointer->Name << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl;
    640640  if (ElementsInMolecule[pointer->type->Z] == 0)  // was last atom of this element?
    641641    ElementCount--;
  • src/molecule.hpp

    r3a0b38 rebbd3d  
    106106
    107107  // re-definition of virtual functions from PointCloud
     108  const char * const GetName() const;
    108109  Vector *GetCenter() const ;
    109110  TesselPoint *GetPoint() const ;
  • src/molecule_dynamics.cpp

    r3a0b38 rebbd3d  
    307307    if (Params.DoubleList[i] > 1) {
    308308      eLog() << Verbose(0) << "Failed to create an injective PermutationMap!" << endl;
    309       exit(1);
     309      performCriticalExit();
    310310    }
    311311  Log() << Verbose(1) << "done." << endl;
     
    428428            }
    429429            if (Potential > Params.PenaltyConstants[2]) {
    430               eLog() << Verbose(0) << "ERROR: The two-step permutation procedure did not maintain injectivity!" << endl;
     430              eLog() << Verbose(1) << "The two-step permutation procedure did not maintain injectivity!" << endl;
    431431              exit(255);
    432432            }
    433433            //Log() << Verbose(0) << endl;
    434434          } else {
    435             eLog() << Verbose(0) << "ERROR: " << *Runner << " was not the owner of " << *Sprinter << "!" << endl;
     435            eLog() << Verbose(1) << *Runner << " was not the owner of " << *Sprinter << "!" << endl;
    436436            exit(255);
    437437          }
     
    569569    if (!Force.ParseMatrix(file, 0,0,0)) {
    570570      eLog() << Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl;
     571      performCriticalExit();
    571572      return false;
    572573    }
    573574    if (Force.RowCounter[0] != AtomCount) {
    574575      eLog() << Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl;
     576      performCriticalExit();
    575577      return false;
    576578    }
  • src/molecule_fragmentation.cpp

    r3a0b38 rebbd3d  
    111111        if (!testGraphInsert.second) {
    112112          eLog() << Verbose(0) << "KeySet file must be corrupt as there are two equal key sets therein!" << endl;
     113          performCriticalExit();
    113114        }
    114115      }
     
    211212  } else {
    212213    eLog() << Verbose(0) << "Unable to open " << line << " for writing keysets!" << endl;
     214    performCriticalExit();
    213215    status = false;
    214216  }
     
    368370    } else {
    369371      eLog() << Verbose(0) << "Atom No. " << (*runner).second.first << " was not found in this molecule." << endl;
     372      performCriticalExit();
    370373    }
    371374  }
     
    441444    // transmorph graph keyset list into indexed KeySetList
    442445    if (GlobalKeySetList == NULL) {
    443       Log() << Verbose(1) << "ERROR: Given global key set list (graph) is NULL!" << endl;
     446      eLog() << Verbose(1) << "Given global key set list (graph) is NULL!" << endl;
    444447      return false;
    445448    }
     
    449452    map<int, pair<double,int> > *AdaptiveCriteriaList = ScanAdaptiveFileIntoMap(path, *IndexKeySetList); // (Root No., (Value, Order)) !
    450453    if (AdaptiveCriteriaList->empty()) {
    451       eLog() << Verbose(0) << "Unable to parse file, incrementing all." << endl;
     454      eLog() << Verbose(2) << "Unable to parse file, incrementing all." << endl;
    452455      while (Walker->next != end) {
    453456        Walker = Walker->next;
     
    638641        MolecularWalker->Leaf->FragmentBOSSANOVA(FragmentList[FragmentCounter], RootStack[FragmentCounter], MinimumRingSize);
    639642      } else {
    640         eLog() << Verbose(0) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;
     643        eLog() << Verbose(1) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;
    641644      }
    642645      FragmentCounter++;  // next fragment list
     
    898901      }
    899902    } else {
    900       Log() << Verbose(0) << "ERROR: Son " << Runner->Name << " has father " << FatherOfRunner->Name << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl;
     903      eLog() << Verbose(1) << "Son " << Runner->Name << " has father " << FatherOfRunner->Name << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl;
    901904    }
    902905    if ((LonelyFlag) && (Leaf->AtomCount > 1)) {
     
    11331136        Log() << Verbose(0) << endl;
    11341137        //if (!CheckForConnectedSubgraph(FragmentSearch->FragmentSet))
    1135           //Log() << Verbose(0) << "ERROR: The found fragment is not a connected subgraph!" << endl;
     1138          //eLog() << Verbose(1) << "The found fragment is not a connected subgraph!" << endl;
    11361139        InsertFragmentIntoGraph(FragmentSearch);
    11371140      }
  • src/molecule_graph.cpp

    r3a0b38 rebbd3d  
    926926        break; // breaking here will not cause error!
    927927    }
    928     if (i == vertex->ListOfBonds.size())
     928    if (i == vertex->ListOfBonds.size()) {
    929929      eLog() << Verbose(0) << "Error: All Component entries are already occupied!" << endl;
    930   } else
     930      performCriticalExit();
     931    }
     932  } else {
    931933    eLog() << Verbose(0) << "Error: Given vertex is NULL!" << endl;
     934    performCriticalExit();
     935  }
    932936}
    933937;
     
    11141118  if (ReferenceStack->IsEmpty()) {
    11151119    eLog() << Verbose(0) << "ReferenceStack is empty!" << endl;
     1120    performCriticalExit();
    11161121    return false;
    11171122  }
  • src/molecule_pointcloud.cpp

    r3a0b38 rebbd3d  
    1313/************************************* Functions for class molecule *********************************/
    1414
     15/** Returns a name for this point cloud, here the molecule's name.
     16 * \return name of point cloud
     17 */
     18const char * const molecule::GetName() const
     19{
     20  return name;
     21};
    1522
    1623/** Determine center of all atoms.
  • src/moleculelist.cpp

    r3a0b38 rebbd3d  
    311311  Tesselation *TesselStruct = NULL;
    312312  if ((srcmol == NULL) || (mol == NULL)) {
    313     Log() << Verbose(1) << "ERROR: Either fixed or variable molecule is given as NULL." << endl;
     313    eLog() << Verbose(1) << "Either fixed or variable molecule is given as NULL." << endl;
    314314    return false;
    315315  }
     
    319319  FindNonConvexBorder(mol, TesselStruct, (const LinkedCell *&)LCList, 4., NULL);
    320320  if (TesselStruct == NULL) {
    321     Log() << Verbose(1) << "ERROR: Could not tesselate the fixed molecule." << endl;
     321    eLog() << Verbose(1) << "Could not tesselate the fixed molecule." << endl;
    322322    return false;
    323323  }
     
    402402  input.open(line.c_str());
    403403  if (input == NULL) {
    404     eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?"
    405         << endl;
     404    eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl;
     405    performCriticalExit();
    406406    return false;
    407407  }
     
    442442    if (input == NULL) {
    443443      eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl;
     444      performCriticalExit();
    444445      return false;
    445446    }
     
    643644    if (path != NULL)
    644645      strcpy(PathBackup, path);
    645     else
     646    else {
    646647      eLog() << Verbose(0) << "OutputConfigForListOfFragments: NULL default path obtained from config!" << endl;
     648      performCriticalExit();
     649    }
    647650
    648651    // correct periodic
     
    757760  // 4a. create array of molecules to fill
    758761  const int MolCount = Subgraphs->next->Count();
     762  char number[MAXSTRINGSIZE];
    759763  molecule **molecules = Malloc<molecule *>(MolCount, "config::Load() - **molecules");
    760764  for (int i=0;i<MolCount;i++) {
    761765    molecules[i] = (molecule*) new molecule(mol->elemente);
    762766    molecules[i]->ActiveFlag = true;
     767    strncpy(molecules[i]->name, mol->name, MAXSTRINGSIZE);
     768    if (MolCount > 1) {
     769      sprintf(number, "-%d", i+1);
     770      strncat(molecules[i]->name, number, MAXSTRINGSIZE - strlen(mol->name) - 1);
     771    }
     772    cout << "MolName is " << molecules[i]->name << endl;
    763773    insert(molecules[i]);
    764774  }
     
    797807    }
    798808  }
    799   // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintained their ListOfBonds, but we have to remove them from first..last list
     809  // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintain their ListOfBonds, but we have to remove them from first..last list
    800810  bond *Binder = mol->first;
    801811  while (mol->first->next != mol->last) {
  • src/parser.cpp

    r3a0b38 rebbd3d  
    159159  if (input == NULL) {
    160160    eLog() << Verbose(0) << endl << "Unable to open " << name << ", is the directory correct?" << endl;
     161    performCriticalExit();
    161162    return false;
    162163  }
     
    179180  //Log() << Verbose(0) << line.str() << endl;
    180181  //Log() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << "." << endl;
    181   if (ColumnCounter[MatrixNr] == 0)
     182  if (ColumnCounter[MatrixNr] == 0) {
    182183    eLog() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl;
     184    performCriticalExit();
     185  }
    183186 
    184187  // scan rest for number of rows/lines
     
    193196  }
    194197  //Log() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << "." << endl;
    195   if (RowCounter[MatrixNr] == 0)
     198  if (RowCounter[MatrixNr] == 0) {
    196199    eLog() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl;
     200    performCriticalExit();
     201  }
    197202
    198203  // allocate matrix if it's not zero dimension in one direction
     
    226231    }
    227232  } else {
    228     eLog() << Verbose(0) << "ERROR: Matrix nr. " << MatrixNr << " has column and row count of (" << ColumnCounter[MatrixNr] << "," << RowCounter[MatrixNr] << "), could not allocate nor parse!" << endl;
     233    eLog() << Verbose(1) << "Matrix nr. " << MatrixNr << " has column and row count of (" << ColumnCounter[MatrixNr] << "," << RowCounter[MatrixNr] << "), could not allocate nor parse!" << endl;
    229234  }
    230235  input.close();
     
    428433              if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) {
    429434                eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment]   << " current force index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl;
     435                performCriticalExit();
    430436                return false;
    431437              }
     
    471477    if (output == NULL) {
    472478      eLog() << Verbose(0) << "Unable to open output energy file " << line.str() << "!" << endl;
     479      performCriticalExit();
    473480      return false;
    474481    }
     
    500507  if (output == NULL) {
    501508    eLog() << Verbose(0) << "Unable to open output matrix file " << line.str() << "!" << endl;
     509    performCriticalExit();
    502510    return false;
    503511  }
     
    656664      if (j > RowCounter[MatrixCounter]) {
    657665        eLog() << Verbose(0) << "Current force index " << j << " is greater than " << RowCounter[MatrixCounter] << "!" << endl;
     666        performCriticalExit();
    658667        return false;
    659668      }
     
    793802      if (j > RowCounter[MatrixCounter]) {
    794803        eLog() << Verbose(0) << "Current hessian index " << j << " is greater than " << RowCounter[MatrixCounter] << ", where i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl;
     804        performCriticalExit();
    795805        return false;
    796806      }
     
    800810          if (k > ColumnCounter[MatrixCounter]) {
    801811            eLog() << Verbose(0) << "Current hessian index " << k << " is greater than " << ColumnCounter[MatrixCounter] << ", where m=" << m << ", j=" << j << ", i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl;
     812            performCriticalExit();
    802813            return false;
    803814          }
     
    852863              if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) {
    853864                eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment]   << " current row index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl;
     865                performCriticalExit();
    854866                return false;
    855867              }
     
    869881                  if (n > ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) {
    870882                    eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment]   << " current column index " << n << " is greater than " << ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl;
     883                    performCriticalExit();
    871884                    return false;
    872885                  }
  • src/periodentafel.cpp

    r3a0b38 rebbd3d  
    313313
    314314  if (!otherstatus)
    315     eLog() << Verbose(0) << "WARNING: Something went wrong while parsing the other databases!" << endl;
     315    eLog() << Verbose(2) << "Something went wrong while parsing the other databases!" << endl;
    316316
    317317  return status;
  • src/stackclass.hpp

    r3a0b38 rebbd3d  
    7272    return true;
    7373  } else {
    74     eLog() << Verbose(0) << "ERROR: Stack is full, " << "Stack: CurrentLastEntry " << CurrentLastEntry<< "\tCurrentFirstEntry " << CurrentFirstEntry << "\tNextFreeField " << NextFreeField << "\tEntryCount " << EntryCount << "!" << endl;
     74    eLog() << Verbose(1) << "Stack is full, " << "Stack: CurrentLastEntry " << CurrentLastEntry<< "\tCurrentFirstEntry " << CurrentFirstEntry << "\tNextFreeField " << NextFreeField << "\tEntryCount " << EntryCount << "!" << endl;
    7575    return false;
    7676  }
     
    8787    Walker = StackList[CurrentFirstEntry];
    8888    if (Walker == NULL)
    89       eLog() << Verbose(0) << "ERROR: Stack's field is empty!" << endl;
     89      eLog() << Verbose(1) << "Stack's field is empty!" << endl;
    9090    StackList[CurrentFirstEntry] = NULL;
    9191    if (CurrentFirstEntry != CurrentLastEntry) { // hasn't last item been popped as well?
     
    9696    }
    9797  } else
    98     eLog() << Verbose(0) << "ERROR: Stack is empty!" << endl;
     98    eLog() << Verbose(1) << "Stack is empty!" << endl;
    9999  return Walker;
    100100};
     
    111111    StackList[CurrentLastEntry] = NULL;
    112112    if (Walker == NULL)
    113       eLog() << Verbose(0) << "ERROR: Stack's field is empty!" << endl;
     113      eLog() << Verbose(1) << "Stack's field is empty!" << endl;
    114114    NextFreeField = CurrentLastEntry;
    115115    if (CurrentLastEntry != CurrentFirstEntry)  // has there been more than one item on stack
    116116      CurrentLastEntry = (CurrentLastEntry + (EntryCount-1)) % EntryCount; // step back from current free field to last (modulo does not work in -1, thus go EntryCount-1 instead)
    117117  } else {
    118     eLog() << Verbose(0) << "ERROR: Stack is empty!" << endl;
     118    eLog() << Verbose(1) << "Stack is empty!" << endl;
    119119  }
    120120  return Walker;
     
    151151    } while (i!=NextFreeField);
    152152  else
    153     eLog() << Verbose(0) << "ERROR: Stack is already empty!" << endl;
     153    eLog() << Verbose(1) << "Stack is already empty!" << endl;
    154154  if (found) {
    155155    NextFreeField = CurrentLastEntry;
  • src/tesselation.cpp

    r3a0b38 rebbd3d  
    4848  //Log() << Verbose(5) << "Erasing point nr. " << Nr << "." << endl;
    4949  if (!lines.empty())
    50     eLog() << Verbose(0) << "WARNING: Memory Leak! I " << *this << " am still connected to some lines." << endl;
     50    eLog() << Verbose(2) << "Memory Leak! I " << *this << " am still connected to some lines." << endl;
    5151  node = NULL;
    5252};
     
    153153  }
    154154  if (!triangles.empty())
    155     eLog() << Verbose(0) << "WARNING: Memory Leak! I " << *this << " am still connected to some triangles." << endl;
     155    eLog() << Verbose(2) << "Memory Leak! I " << *this << " am still connected to some triangles." << endl;
    156156};
    157157
     
    188188  // get the two triangles
    189189  if (triangles.size() != 2) {
    190     Log() << Verbose(1) << "ERROR: Baseline " << *this << " is connected to less than two triangles, Tesselation incomplete!" << endl;
     190    eLog() << Verbose(1) << "Baseline " << *this << " is connected to less than two triangles, Tesselation incomplete!" << endl;
    191191    return true;
    192192  }
     
    226226      i++;
    227227    } else {
    228       //Log() << Verbose(2) << "ERROR: I cannot find third node in triangle, something's wrong." << endl;
     228      //eLog() << Verbose(1) << "I cannot find third node in triangle, something's wrong." << endl;
    229229      return true;
    230230    }
     
    333333  if (Counter < 3)
    334334    {
    335       eLog() << Verbose(0) << "ERROR! We have a triangle with only two distinct endpoints!"
    336           << endl;
    337       //exit(1);
     335      eLog() << Verbose(0) << "ERROR! We have a triangle with only two distinct endpoints!" << endl;
     336      performCriticalExit();
    338337    }
    339338  Log() << Verbose(0) << "." << endl;
     
    409408  } while (CrossPoint.NormSquared() < MYEPSILON);
    410409  if (i==3) {
    411     Log() << Verbose(1) << "ERROR: Could not find any cross points, something's utterly wrong here!" << endl;
     410    eLog() << Verbose(1) << "Could not find any cross points, something's utterly wrong here!" << endl;
    412411    exit(255);
    413412  }
     
    634633      runner->second = NULL;
    635634    } else
    636       eLog() << Verbose(1) << "ERROR: The triangle " << runner->first << " has already been free'd." << endl;
     635      eLog() << Verbose(1) << "The triangle " << runner->first << " has already been free'd." << endl;
    637636  }
    638637  Log() << Verbose(1) << "This envelope was written to file " << TriangleFilesWritten << " times(s)." << endl;
     
    11741173            if (NewLines[j]->IsConnectedTo(BLS[0])) {
    11751174              if (n>2) {
    1176                 Log() << Verbose(1) << "ERROR: " << BLS[0] << " connects to all of the new lines?!" << endl;
     1175                Log() << Verbose(1) << BLS[0] << " connects to all of the new lines?!" << endl;
    11771176                return false;
    11781177              } else
     
    11911190      }
    11921191    } else { // something is wrong with FindClosestTriangleToPoint!
    1193       Log() << Verbose(1) << "ERROR: The closest triangle did not produce an intersection!" << endl;
     1192      eLog() << Verbose(1) << "The closest triangle did not produce an intersection!" << endl;
    11941193      return false;
    11951194    }
     
    12431242}
    12441243;
     1244
     1245/** Sets point to a present Tesselation::PointsOnBoundary.
     1246 * Tesselation::TPS is set to the existing one or NULL if not found.
     1247 * @param Candidate point to set to
     1248 * @param n index for this point in Tesselation::TPS array
     1249 */
     1250void Tesselation::SetTesselationPoint(TesselPoint* Candidate, const int n) const
     1251{
     1252  PointMap::const_iterator FindPoint = PointsOnBoundary.find(Candidate->nr);
     1253  if (FindPoint != PointsOnBoundary.end())
     1254    TPS[n] = FindPoint->second;
     1255  else
     1256    TPS[n] = NULL;
     1257};
    12451258
    12461259/** Function tries to add line from current Points in BPS to BoundaryLineSet.
     
    13651378      triangle->lines[i] = NULL;  // free'd or not: disconnect
    13661379    } else
    1367       eLog() << Verbose(0) << "ERROR: This line " << i << " has already been free'd." << endl;
     1380      eLog() << Verbose(1) << "This line " << i << " has already been free'd." << endl;
    13681381  }
    13691382
     
    14181431      line->endpoints[i] = NULL;  // free'd or not: disconnect
    14191432    } else
    1420       eLog() << Verbose(0) << "ERROR: Endpoint " << i << " has already been free'd." << endl;
     1433      eLog() << Verbose(1) << "Endpoint " << i << " has already been free'd." << endl;
    14211434  }
    14221435  if (!line->triangles.empty())
    1423     eLog() << Verbose(0) << "WARNING: Memory Leak! I " << *line << " am still connected to some triangles." << endl;
     1436    eLog() << Verbose(2) << "Memory Leak! I " << *line << " am still connected to some triangles." << endl;
    14241437
    14251438  if (LinesOnBoundary.erase(line->Nr))
     
    14511464 *                 triangles exist which is the maximum for three points
    14521465 */
    1453 int Tesselation::CheckPresenceOfTriangle(TesselPoint *Candidates[3]) {
     1466int Tesselation::CheckPresenceOfTriangle(TesselPoint *Candidates[3]) const
     1467{
    14541468  int adjacentTriangleCount = 0;
    14551469  class BoundaryPointSet *Points[3];
     
    14581472  // builds a triangle point set (Points) of the end points
    14591473  for (int i = 0; i < 3; i++) {
    1460     PointMap::iterator FindPoint = PointsOnBoundary.find(Candidates[i]->nr);
     1474    PointMap::const_iterator FindPoint = PointsOnBoundary.find(Candidates[i]->nr);
    14611475    if (FindPoint != PointsOnBoundary.end()) {
    14621476      Points[i] = FindPoint->second;
     
    14711485      for (int j = i; j < 3; j++) {
    14721486        if (Points[j] != NULL) {
    1473           LineMap::iterator FindLine = Points[i]->lines.find(Points[j]->node->nr);
     1487          LineMap::const_iterator FindLine = Points[i]->lines.find(Points[j]->node->nr);
    14741488          for (; (FindLine != Points[i]->lines.end()) && (FindLine->first == Points[j]->node->nr); FindLine++) {
    14751489            TriangleMap *triangles = &FindLine->second->triangles;
    14761490            Log() << Verbose(3) << "Current line is " << FindLine->first << ": " << *(FindLine->second) << " with triangles " << triangles << "." << endl;
    1477             for (TriangleMap::iterator FindTriangle = triangles->begin(); FindTriangle != triangles->end(); FindTriangle++) {
     1491            for (TriangleMap::const_iterator FindTriangle = triangles->begin(); FindTriangle != triangles->end(); FindTriangle++) {
    14781492              if (FindTriangle->second->IsPresentTupel(Points)) {
    14791493                adjacentTriangleCount++;
     
    15891603          }
    15901604        } else {
    1591           eLog() << Verbose(0) << "ERROR: The current cell " << LC->n[0] << "," << LC->n[1] << "," << LC->n[2] << " is invalid!" << endl;
     1605          eLog() << Verbose(1) << "The current cell " << LC->n[0] << "," << LC->n[1] << "," << LC->n[2] << " is invalid!" << endl;
    15921606        }
    15931607      }
     
    17001714};
    17011715
     1716/** Checks for a given baseline and a third point candidate whether baselines of the found triangle don't have even better candidates.
     1717 * This is supposed to prevent early closing of the tesselation.
     1718 * \param *BaseRay baseline, i.e. not \a *OptCandidate
     1719 * \param *ThirdNode third point in triangle, not in BoundaryLineSet::endpoints
     1720 * \param ShortestAngle path length on this circle band for the current \a *ThirdNode
     1721 * \param RADIUS radius of sphere
     1722 * \param *LC LinkedCell structure
     1723 * \return true - there is a better candidate (smaller angle than \a ShortestAngle), false - no better TesselPoint candidate found
     1724 */
     1725bool Tesselation::HasOtherBaselineBetterCandidate(const BoundaryLineSet * const BaseRay, const TesselPoint * const ThirdNode, double ShortestAngle, double RADIUS, const LinkedCell * const LC) const
     1726{
     1727  bool result = false;
     1728  Vector CircleCenter;
     1729  Vector CirclePlaneNormal;
     1730  Vector OldSphereCenter;
     1731  Vector SearchDirection;
     1732  Vector helper;
     1733  TesselPoint *OtherOptCandidate = NULL;
     1734  double OtherShortestAngle = 2.*M_PI; // This will indicate the quadrant.
     1735  double radius, CircleRadius;
     1736  BoundaryLineSet *Line = NULL;
     1737  BoundaryTriangleSet *T = NULL;
     1738
     1739  Log() << Verbose(1) << "Begin of HasOtherBaselineBetterCandidate" << endl;
     1740
     1741  // check both other lines
     1742  PointMap::const_iterator FindPoint = PointsOnBoundary.find(ThirdNode->nr);
     1743  if (FindPoint != PointsOnBoundary.end()) {
     1744    for (int i=0;i<2;i++) {
     1745      LineMap::const_iterator FindLine = (FindPoint->second)->lines.find(BaseRay->endpoints[0]->node->nr);
     1746      if (FindLine != (FindPoint->second)->lines.end()) {
     1747        Line = FindLine->second;
     1748        Log() << Verbose(1) << "Found line " << *Line << "." << endl;
     1749        if (Line->triangles.size() == 1) {
     1750          T = Line->triangles.begin()->second;
     1751          // construct center of circle
     1752          CircleCenter.CopyVector(Line->endpoints[0]->node->node);
     1753          CircleCenter.AddVector(Line->endpoints[1]->node->node);
     1754          CircleCenter.Scale(0.5);
     1755
     1756          // construct normal vector of circle
     1757          CirclePlaneNormal.CopyVector(Line->endpoints[0]->node->node);
     1758          CirclePlaneNormal.SubtractVector(Line->endpoints[1]->node->node);
     1759
     1760          // calculate squared radius of circle
     1761          radius = CirclePlaneNormal.ScalarProduct(&CirclePlaneNormal);
     1762          if (radius/4. < RADIUS*RADIUS) {
     1763            CircleRadius = RADIUS*RADIUS - radius/4.;
     1764            CirclePlaneNormal.Normalize();
     1765            //Log() << Verbose(2) << "INFO: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << "." << endl;
     1766
     1767            // construct old center
     1768            GetCenterofCircumcircle(&OldSphereCenter, *T->endpoints[0]->node->node, *T->endpoints[1]->node->node, *T->endpoints[2]->node->node);
     1769            helper.CopyVector(&T->NormalVector);  // normal vector ensures that this is correct center of the two possible ones
     1770            radius = Line->endpoints[0]->node->node->DistanceSquared(&OldSphereCenter);
     1771            helper.Scale(sqrt(RADIUS*RADIUS - radius));
     1772            OldSphereCenter.AddVector(&helper);
     1773            OldSphereCenter.SubtractVector(&CircleCenter);
     1774            //Log() << Verbose(2) << "INFO: OldSphereCenter is at " << OldSphereCenter << "." << endl;
     1775
     1776            // construct SearchDirection
     1777            SearchDirection.MakeNormalVector(&T->NormalVector, &CirclePlaneNormal);
     1778            helper.CopyVector(Line->endpoints[0]->node->node);
     1779            helper.SubtractVector(ThirdNode->node);
     1780            if (helper.ScalarProduct(&SearchDirection) < -HULLEPSILON)// ohoh, SearchDirection points inwards!
     1781              SearchDirection.Scale(-1.);
     1782            SearchDirection.ProjectOntoPlane(&OldSphereCenter);
     1783            SearchDirection.Normalize();
     1784            Log() << Verbose(2) << "INFO: SearchDirection is " << SearchDirection << "." << endl;
     1785            if (fabs(OldSphereCenter.ScalarProduct(&SearchDirection)) > HULLEPSILON) {
     1786              // rotated the wrong way!
     1787              eLog() << Verbose(1) << "SearchDirection and RelativeOldSphereCenter are still not orthogonal!" << endl;
     1788            }
     1789
     1790            // add third point
     1791            CandidateList *OptCandidates = new CandidateList();
     1792            FindThirdPointForTesselation(T->NormalVector, SearchDirection, OldSphereCenter, Line, ThirdNode, OptCandidates, &OtherShortestAngle, RADIUS, LC);
     1793            for (CandidateList::iterator it = OptCandidates->begin(); it != OptCandidates->end(); ++it) {
     1794              if (((*it)->point == BaseRay->endpoints[0]->node) || ((*it)->point == BaseRay->endpoints[1]->node)) // skip if it's the same triangle than suggested
     1795                continue;
     1796              Log() << Verbose(1) << " Third point candidate is " << *(*it)->point
     1797              << " with circumsphere's center at " << (*it)->OptCenter << "." << endl;
     1798              Log() << Verbose(1) << " Baseline is " << *BaseRay << endl;
     1799
     1800              // check whether all edges of the new triangle still have space for one more triangle (i.e. TriangleCount <2)
     1801              TesselPoint *PointCandidates[3];
     1802              PointCandidates[0] = (*it)->point;
     1803              PointCandidates[1] = BaseRay->endpoints[0]->node;
     1804              PointCandidates[2] = BaseRay->endpoints[1]->node;
     1805              bool check=false;
     1806              int existentTrianglesCount = CheckPresenceOfTriangle(PointCandidates);
     1807              // If there is no triangle, add it regularly.
     1808              if (existentTrianglesCount == 0) {
     1809                SetTesselationPoint((*it)->point, 0);
     1810                SetTesselationPoint(BaseRay->endpoints[0]->node, 1);
     1811                SetTesselationPoint(BaseRay->endpoints[1]->node, 2);
     1812
     1813                if (CheckLineCriteriaForDegeneratedTriangle((const BoundaryPointSet ** const )TPS)) {
     1814                  OtherOptCandidate = (*it)->point;
     1815                  check = true;
     1816                }
     1817              } else if ((existentTrianglesCount >= 1) && (existentTrianglesCount <= 3)) { // If there is a planar region within the structure, we need this triangle a second time.
     1818                SetTesselationPoint((*it)->point, 0);
     1819                SetTesselationPoint(BaseRay->endpoints[0]->node, 1);
     1820                SetTesselationPoint(BaseRay->endpoints[1]->node, 2);
     1821
     1822                // We demand that at most one new degenerate line is created and that this line also already exists (which has to be the case due to existentTrianglesCount == 1)
     1823                // i.e. at least one of the three lines must be present with TriangleCount <= 1
     1824                if (CheckLineCriteriaForDegeneratedTriangle((const BoundaryPointSet ** const)TPS)) {
     1825                  OtherOptCandidate = (*it)->point;
     1826                  check = true;
     1827                }
     1828              }
     1829
     1830              if (check) {
     1831                if (ShortestAngle > OtherShortestAngle) {
     1832                  Log() << Verbose(1) << "There is a better candidate than " << *ThirdNode << " with " << ShortestAngle << " from baseline " << *Line << ": " << *OtherOptCandidate << " with " << OtherShortestAngle << "." << endl;
     1833                  result = true;
     1834                  break;
     1835                }
     1836              }
     1837            }
     1838            delete(OptCandidates);
     1839            if (result)
     1840              break;
     1841          } else {
     1842            Log() << Verbose(1) << "Circumcircle for base line " << *Line << " and base triangle " << T << " is too big!" << endl;
     1843          }
     1844        } else {
     1845          eLog() << Verbose(2) << "Baseline is connected to two triangles already?" << endl;
     1846        }
     1847      } else {
     1848        Log() << Verbose(2) << "No present baseline between " << BaseRay->endpoints[0] << " and candidate " << *ThirdNode << "." << endl;
     1849      }
     1850    }
     1851  } else {
     1852    eLog() << Verbose(1) << "Could not find the TesselPoint " << *ThirdNode << "." << endl;
     1853  }
     1854
     1855  Log() << Verbose(1) << "End of HasOtherBaselineBetterCandidate" << endl;
     1856
     1857  return result;
     1858};
    17021859
    17031860/** This function finds a triangle to a line, adjacent to an existing one.
     
    17661923    if (fabs(OldSphereCenter.ScalarProduct(&SearchDirection)) > HULLEPSILON) {
    17671924      // rotated the wrong way!
    1768       eLog() << Verbose(0) << "ERROR: SearchDirection and RelativeOldSphereCenter are still not orthogonal!" << endl;
     1925      eLog() << Verbose(1) << "SearchDirection and RelativeOldSphereCenter are still not orthogonal!" << endl;
    17691926    }
    17701927
     
    17771934
    17781935  if (OptCandidates->begin() == OptCandidates->end()) {
    1779     eLog() << Verbose(0) << "WARNING: Could not find a suitable candidate." << endl;
     1936    eLog() << Verbose(2) << "Could not find a suitable candidate." << endl;
    17801937    return false;
    17811938  }
    17821939  Log() << Verbose(1) << "Third Points are ";
    17831940  for (CandidateList::iterator it = OptCandidates->begin(); it != OptCandidates->end(); ++it) {
    1784     Log() << Verbose(0) << " " << *(*it)->point;
    1785   }
    1786   Log() << Verbose(0) << endl;
     1941    Log() << Verbose(1) << " " << *(*it)->point << endl;
     1942  }
    17871943
    17881944  BoundaryLineSet *BaseRay = &Line;
     
    18001956
    18011957    BTS = NULL;
    1802     // If there is no triangle, add it regularly.
    1803     if (existentTrianglesCount == 0) {
    1804       AddTesselationPoint((*it)->point, 0);
    1805       AddTesselationPoint(BaseRay->endpoints[0]->node, 1);
    1806       AddTesselationPoint(BaseRay->endpoints[1]->node, 2);
    1807 
    1808       if (CheckLineCriteriaForDegeneratedTriangle((const BoundaryPointSet ** const )TPS)) {
    1809         AddTesselationLine(TPS[0], TPS[1], 0);
    1810         AddTesselationLine(TPS[0], TPS[2], 1);
    1811         AddTesselationLine(TPS[1], TPS[2], 2);
    1812 
    1813         BTS = new class BoundaryTriangleSet(BLS, TrianglesOnBoundaryCount);
    1814         AddTesselationTriangle();
    1815         (*it)->OptCenter.Scale(-1.);
    1816         BTS->GetNormalVector((*it)->OptCenter);
    1817         (*it)->OptCenter.Scale(-1.);
    1818 
    1819         Log() << Verbose(0) << "--> New triangle with " << *BTS << " and normal vector " << BTS->NormalVector
    1820           << " for this triangle ... " << endl;
    1821       //Log() << Verbose(1) << "We have "<< TrianglesOnBoundaryCount << " for line " << *BaseRay << "." << endl;
    1822       } else {
    1823         Log() << Verbose(1) << "WARNING: This triangle consisting of ";
    1824         Log() << Verbose(0) << *(*it)->point << ", ";
    1825         Log() << Verbose(0) << *BaseRay->endpoints[0]->node << " and ";
    1826         Log() << Verbose(0) << *BaseRay->endpoints[1]->node << " ";
    1827         Log() << Verbose(0) << "exists and is not added, as it does not seem helpful!" << endl;
    1828         result = false;
    1829       }
    1830     } else if ((existentTrianglesCount >= 1) && (existentTrianglesCount <= 3)) { // If there is a planar region within the structure, we need this triangle a second time.
     1958    // check for present edges and whether we reach better candidates from them
     1959    //if (HasOtherBaselineBetterCandidate(BaseRay, (*it)->point, ShortestAngle, RADIUS, LC) ) {
     1960    if (0) {
     1961      result = false;
     1962      break;
     1963    } else {
     1964      // If there is no triangle, add it regularly.
     1965      if (existentTrianglesCount == 0) {
    18311966        AddTesselationPoint((*it)->point, 0);
    18321967        AddTesselationPoint(BaseRay->endpoints[0]->node, 1);
    18331968        AddTesselationPoint(BaseRay->endpoints[1]->node, 2);
    18341969
    1835         // We demand that at most one new degenerate line is created and that this line also already exists (which has to be the case due to existentTrianglesCount == 1)
    1836         // i.e. at least one of the three lines must be present with TriangleCount <= 1
    1837         if (CheckLineCriteriaForDegeneratedTriangle((const BoundaryPointSet ** const)TPS)) {
     1970        if (CheckLineCriteriaForDegeneratedTriangle((const BoundaryPointSet ** const )TPS)) {
    18381971          AddTesselationLine(TPS[0], TPS[1], 0);
    18391972          AddTesselationLine(TPS[0], TPS[2], 1);
     
    18411974
    18421975          BTS = new class BoundaryTriangleSet(BLS, TrianglesOnBoundaryCount);
    1843           AddTesselationTriangle();  // add to global map
    1844 
    1845           (*it)->OtherOptCenter.Scale(-1.);
    1846           BTS->GetNormalVector((*it)->OtherOptCenter);
    1847           (*it)->OtherOptCenter.Scale(-1.);
    1848 
    1849           Log() << Verbose(0) << "--> WARNING: Special new triangle with " << *BTS << " and normal vector " << BTS->NormalVector
    1850           << " for this triangle ... " << endl;
    1851           Log() << Verbose(1) << "We have "<< BaseRay->triangles.size() << " for line " << BaseRay << "." << endl;
     1976          AddTesselationTriangle();
     1977          (*it)->OptCenter.Scale(-1.);
     1978          BTS->GetNormalVector((*it)->OptCenter);
     1979          (*it)->OptCenter.Scale(-1.);
     1980
     1981          Log() << Verbose(0) << "--> New triangle with " << *BTS << " and normal vector " << BTS->NormalVector
     1982            << " for this triangle ... " << endl;
     1983        //Log() << Verbose(1) << "We have "<< TrianglesOnBoundaryCount << " for line " << *BaseRay << "." << endl;
    18521984        } else {
    1853           Log() << Verbose(1) << "WARNING: This triangle consisting of ";
     1985          eLog() << Verbose(2) << "This triangle consisting of ";
    18541986          Log() << Verbose(0) << *(*it)->point << ", ";
    18551987          Log() << Verbose(0) << *BaseRay->endpoints[0]->node << " and ";
     
    18581990          result = false;
    18591991        }
    1860     } else {
    1861       Log() << Verbose(1) << "This triangle consisting of ";
    1862       Log() << Verbose(0) << *(*it)->point << ", ";
    1863       Log() << Verbose(0) << *BaseRay->endpoints[0]->node << " and ";
    1864       Log() << Verbose(0) << *BaseRay->endpoints[1]->node << " ";
    1865       Log() << Verbose(0) << "is invalid!" << endl;
    1866       result = false;
     1992      } else if ((existentTrianglesCount >= 1) && (existentTrianglesCount <= 3)) { // If there is a planar region within the structure, we need this triangle a second time.
     1993          AddTesselationPoint((*it)->point, 0);
     1994          AddTesselationPoint(BaseRay->endpoints[0]->node, 1);
     1995          AddTesselationPoint(BaseRay->endpoints[1]->node, 2);
     1996
     1997          // We demand that at most one new degenerate line is created and that this line also already exists (which has to be the case due to existentTrianglesCount == 1)
     1998          // i.e. at least one of the three lines must be present with TriangleCount <= 1
     1999          if (CheckLineCriteriaForDegeneratedTriangle((const BoundaryPointSet ** const)TPS)) {
     2000            AddTesselationLine(TPS[0], TPS[1], 0);
     2001            AddTesselationLine(TPS[0], TPS[2], 1);
     2002            AddTesselationLine(TPS[1], TPS[2], 2);
     2003
     2004            BTS = new class BoundaryTriangleSet(BLS, TrianglesOnBoundaryCount);
     2005            AddTesselationTriangle();  // add to global map
     2006
     2007            (*it)->OtherOptCenter.Scale(-1.);
     2008            BTS->GetNormalVector((*it)->OtherOptCenter);
     2009            (*it)->OtherOptCenter.Scale(-1.);
     2010
     2011            eLog() << Verbose(2) << "--> WARNING: Special new triangle with " << *BTS << " and normal vector " << BTS->NormalVector << " for this triangle ... " << endl;
     2012            Log() << Verbose(1) << "We have "<< BaseRay->triangles.size() << " for line " << BaseRay << "." << endl;
     2013          } else {
     2014            eLog() << Verbose(2) << "This triangle consisting of " << *(*it)->point << ", " << *BaseRay->endpoints[0]->node << " and " << *BaseRay->endpoints[1]->node << " " << "exists and is not added, as it does not seem helpful!" << endl;
     2015            result = false;
     2016          }
     2017      } else {
     2018        Log() << Verbose(1) << "This triangle consisting of ";
     2019        Log() << Verbose(0) << *(*it)->point << ", ";
     2020        Log() << Verbose(0) << *BaseRay->endpoints[0]->node << " and ";
     2021        Log() << Verbose(0) << *BaseRay->endpoints[1]->node << " ";
     2022        Log() << Verbose(0) << "is invalid!" << endl;
     2023        result = false;
     2024      }
    18672025    }
    18682026
     
    18702028    BaseRay = BLS[0];
    18712029    if ((BTS != NULL) && (BTS->NormalVector.NormSquared() < MYEPSILON)) {
    1872       Log() << Verbose(1) << "CRITICAL: Triangle " << *BTS << " has zero normal vector!" << endl;
     2030      eLog() << Verbose(1) << "Triangle " << *BTS << " has zero normal vector!" << endl;
    18732031      exit(255);
    18742032    }
     
    20112169    BaseLineNormal.Zero();
    20122170    if (Base->triangles.size() < 2) {
    2013       Log() << Verbose(2) << "ERROR: Less than two triangles are attached to this baseline!" << endl;
     2171      eLog() << Verbose(1) << "Less than two triangles are attached to this baseline!" << endl;
    20142172      return 0.;
    20152173    }
     
    20512209  BaseLineNormal.Zero();
    20522210  if (Base->triangles.size() < 2) {
    2053     Log() << Verbose(2) << "ERROR: Less than two triangles are attached to this baseline!" << endl;
     2211    eLog() << Verbose(1) << "Less than two triangles are attached to this baseline!" << endl;
    20542212    return NULL;
    20552213  }
     
    20872245  // check whether everything is in place to create new lines and triangles
    20882246  if (i<4) {
    2089     Log() << Verbose(1) << "ERROR: We have not gathered enough baselines!" << endl;
     2247    eLog() << Verbose(1) << "We have not gathered enough baselines!" << endl;
    20902248    return NULL;
    20912249  }
    20922250  for (int j=0;j<4;j++)
    20932251    if (OldLines[j] == NULL) {
    2094       Log() << Verbose(1) << "ERROR: We have not gathered enough baselines!" << endl;
     2252      eLog() << Verbose(1) << "We have not gathered enough baselines!" << endl;
    20952253      return NULL;
    20962254    }
    20972255  for (int j=0;j<2;j++)
    20982256    if (OldPoints[j] == NULL) {
    2099       Log() << Verbose(1) << "ERROR: We have not gathered enough endpoints!" << endl;
     2257      eLog() << Verbose(1) << "We have not gathered enough endpoints!" << endl;
    21002258      return NULL;
    21012259    }
     
    21732331      N[i] = LC->n[i];
    21742332  } else {
    2175     eLog() << Verbose(0) << "ERROR: Point " << *a << " is not found in cell " << LC->index << "." << endl;
     2333    eLog() << Verbose(1) << "Point " << *a << " is not found in cell " << LC->index << "." << endl;
    21762334    return;
    21772335  }
    21782336  // then go through the current and all neighbouring cells and check the contained points for possible candidates
    2179   Log() << Verbose(3) << "LC Intervals from [";
    2180   for (int i=0;i<NDIM;i++) {
    2181   Log() << Verbose(0) << " " << N[i] << "<->" << LC->N[i];
    2182   }
    2183   Log() << Verbose(0) << "] :";
    21842337  for (int i=0;i<NDIM;i++) {
    21852338    Nlower[i] = ((N[i]-1) >= 0) ? N[i]-1 : 0;
    21862339    Nupper[i] = ((N[i]+1) < LC->N[i]) ? N[i]+1 : LC->N[i]-1;
    2187     Log() << Verbose(0) << " [" << Nlower[i] << "," << Nupper[i] << "] ";
    2188   }
    2189   Log() << Verbose(0) << endl;
    2190 
     2340  }
     2341  Log() << Verbose(3) << "LC Intervals from [" << N[0] << "<->" << LC->N[0] << ", " << N[1] << "<->" << LC->N[1] << ", " << N[2] << "<->" << LC->N[2] << "] :"
     2342    << " [" << Nlower[0] << "," << Nupper[0] << "], " << " [" << Nlower[1] << "," << Nupper[1] << "], " << " [" << Nlower[2] << "," << Nupper[2] << "], " << endl;
    21912343
    21922344  for (LC->n[0] = Nlower[0]; LC->n[0] <= Nupper[0]; LC->n[0]++)
     
    22802432 * @param *LC LinkedCell structure with neighbouring points
    22812433 */
    2282 void Tesselation::FindThirdPointForTesselation(Vector NormalVector, Vector SearchDirection, Vector OldSphereCenter, class BoundaryLineSet *BaseLine, class TesselPoint  *ThirdNode, CandidateList* &candidates, double *ShortestAngle, const double RADIUS, const LinkedCell *LC)
     2434void Tesselation::FindThirdPointForTesselation(Vector &NormalVector, Vector &SearchDirection, Vector &OldSphereCenter, class BoundaryLineSet *BaseLine, const class TesselPoint  * const ThirdNode, CandidateList* &candidates, double *ShortestAngle, const double RADIUS, const LinkedCell *LC) const
    22832435{
    22842436  Vector CircleCenter;  // center of the circle, i.e. of the band of sphere's centers
     
    23182470    // test whether old center is on the band's plane
    23192471    if (fabs(OldSphereCenter.ScalarProduct(&CirclePlaneNormal)) > HULLEPSILON) {
    2320       eLog() << Verbose(0) << "ERROR: Something's very wrong here: OldSphereCenter is not on the band's plane as desired by " << fabs(OldSphereCenter.ScalarProduct(&CirclePlaneNormal)) << "!" << endl;
     2472      eLog() << Verbose(1) << "Something's very wrong here: OldSphereCenter is not on the band's plane as desired by " << fabs(OldSphereCenter.ScalarProduct(&CirclePlaneNormal)) << "!" << endl;
    23212473      OldSphereCenter.ProjectOntoPlane(&CirclePlaneNormal);
    23222474    }
     
    23282480      //Log() << Verbose(2) << "INFO: SearchDirection is " << SearchDirection << "." << endl;
    23292481      if (fabs(OldSphereCenter.ScalarProduct(&SearchDirection)) > HULLEPSILON) {  // rotated the wrong way!
    2330         eLog() << Verbose(0) << "ERROR: SearchDirection and RelativeOldSphereCenter are not orthogonal!" << endl;
     2482        eLog() << Verbose(1) << "SearchDirection and RelativeOldSphereCenter are not orthogonal!" << endl;
    23312483      }
    23322484
     
    23372489        //Log() << Verbose(2) << "INFO: Center cell is " << N[0] << ", " << N[1] << ", " << N[2] << " with No. " << LC->index << "." << endl;
    23382490      } else {
    2339         eLog() << Verbose(0) << "ERROR: Vector " << CircleCenter << " is outside of LinkedCell's bounding box." << endl;
     2491        eLog() << Verbose(1) << "Vector " << CircleCenter << " is outside of LinkedCell's bounding box." << endl;
    23402492        return;
    23412493      }
     
    24422594          }
    24432595    } else {
    2444       eLog() << Verbose(2) << "ERROR: The projected center of the old sphere has radius " << radius << " instead of " << CircleRadius << "." << endl;
     2596      eLog() << Verbose(1) << "The projected center of the old sphere has radius " << radius << " instead of " << CircleRadius << "." << endl;
    24452597    }
    24462598  } else {
     
    25332685        triangles->unique();
    25342686      } else {
    2535         Log() << Verbose(1) << "ERROR: I cannot find a boundary point to the tessel point " << *trianglePoints[0] << "." << endl;
     2687        eLog() << Verbose(1) << "I cannot find a boundary point to the tessel point " << *trianglePoints[0] << "." << endl;
    25362688        return NULL;
    25372689      }
     
    25442696      for (int i=0;i<3;i++) {
    25452697        if (trianglePoints[i] == NULL) {
    2546           Log() << Verbose(1) << "ERROR: IsInnerPoint encounters serious error, point " << i << " not found." << endl;
     2698          eLog() << Verbose(1) << "IsInnerPoint encounters serious error, point " << i << " not found." << endl;
    25472699        }
    25482700        //Log() << Verbose(2) << "List of triangle points:" << endl;
     
    25632715 
    25642716  if ((triangles == NULL) || (triangles->empty())) {
    2565     Log() << Verbose(0) << "ERROR: There is no nearest triangle. Please check the tesselation structure.";
     2717    eLog() << Verbose(1) << "There is no nearest triangle. Please check the tesselation structure.";
    25662718    delete(triangles);
    25672719    return NULL;
     
    25972749      Log() << Verbose(2) << "Normal Vector of this back side is " << result->NormalVector << "." << endl;
    25982750      if (Center.ScalarProduct(&result->NormalVector) < 0) {
    2599         Log() << Verbose(1) << "ERROR: Front and back side yield NormalVector in wrong direction!" << endl;
     2751        eLog() << Verbose(1) << "Front and back side yield NormalVector in wrong direction!" << endl;
    26002752      }
    26012753    }
     
    26992851
    27002852  if (connectedPoints->size() == 0) { // if have not found any points
    2701     Log() << Verbose(1) << "ERROR: We have not found any connected points to " << *Point<< "." << endl;
     2853    eLog() << Verbose(1) << "We have not found any connected points to " << *Point<< "." << endl;
    27022854    return NULL;
    27032855  }
     
    28222974    ReferencePoint = PointRunner->second;
    28232975  } else {
    2824     Log() << Verbose(2) << "ERROR: GetPathOfConnectedPoints() could not find the BoundaryPoint belonging to " << *Point << "." << endl;
     2976    eLog() << Verbose(1) << "GetPathOfConnectedPoints() could not find the BoundaryPoint belonging to " << *Point << "." << endl;
    28252977    return NULL;
    28262978  }
     
    28392991      LineRunner = TouchedLine.find(runner->second);
    28402992      if (LineRunner == TouchedLine.end()) {
    2841         Log() << Verbose(2) << "ERROR: I could not find " << *runner->second << " in the touched list." << endl;
     2993        eLog() << Verbose(1) << "I could not find " << *runner->second << " in the touched list." << endl;
    28422994      } else if (!LineRunner->second) {
    28432995        LineRunner->second = true;
     
    28693021                }
    28703022              } else {
    2871                 Log() << Verbose(2) << "ERROR: I could not find " << *triangle << " in the touched list." << endl;
     3023                eLog() << Verbose(1) << "I could not find " << *triangle << " in the touched list." << endl;
    28723024                triangle = NULL;
    28733025              }
     
    28863038          LineRunner = TouchedLine.find(CurrentLine);
    28873039          if (LineRunner == TouchedLine.end())
    2888             Log() << Verbose(2) << "ERROR: I could not find " << *CurrentLine << " in the touched list." << endl;
     3040            eLog() << Verbose(1) << "I could not find " << *CurrentLine << " in the touched list." << endl;
    28893041          else
    28903042            LineRunner->second = true;
     
    29043056    }
    29053057  } else {
    2906     Log() << Verbose(1) << "ERROR: There are no lines attached to " << *ReferencePoint << "." << endl;
     3058    eLog() << Verbose(1) << "There are no lines attached to " << *ReferencePoint << "." << endl;
    29073059  }
    29083060
     
    29823134
    29833135  if (Point == NULL) {
    2984     Log() << Verbose(1) << "ERROR: Point given is NULL." << endl;
     3136    eLog() << Verbose(1) << "Point given is NULL." << endl;
    29853137  } else {
    29863138    // go through its lines and insert all triangles
     
    30143166
    30153167  if (point == NULL) {
    3016     Log() << Verbose(1) << "ERROR: Cannot remove the point " << point << ", it's NULL!" << endl;
     3168    eLog() << Verbose(1) << "Cannot remove the point " << point << ", it's NULL!" << endl;
    30173169    return 0.;
    30183170  } else
     
    30243176  // get list of connected points
    30253177  if (point->lines.empty()) {
    3026     Log() << Verbose(1) << "ERROR: Cannot remove the point " << *point << ", it's connected to no lines!" << endl;
     3178    eLog() << Verbose(1) << "Cannot remove the point " << *point << ", it's connected to no lines!" << endl;
    30273179    return 0.;
    30283180  }
     
    31243276        triangle = GetPresentTriangle(TriangleCandidates);
    31253277        if (triangle != NULL) {
    3126           Log() << Verbose(1) << "WARNING: New triangle already present, skipping!" << endl;
     3278          eLog() << Verbose(2) << "New triangle already present, skipping!" << endl;
    31273279          StartNode++;
    31283280          MiddleNode++;
     
    34333585  }
    34343586  delete(DegeneratedTriangles);
     3587  if (count > 0)
     3588    LastTriangle = NULL;
    34353589
    34363590  Log() << Verbose(1) << "RemoveDegeneratedTriangles() removed " << count << " triangles:" << endl;
     
    34623616    NearestBoundaryPoint = PointRunner->second;
    34633617  } else {
    3464     Log() << Verbose(1) << "ERROR: I cannot find the boundary point." << endl;
     3618    eLog() << Verbose(1) << "I cannot find the boundary point." << endl;
    34653619    return;
    34663620  }
  • src/tesselation.hpp

    r3a0b38 rebbd3d  
    170170  virtual ~PointCloud();
    171171
     172  virtual const char * const GetName() const { return "unknown"; };
    172173  virtual Vector *GetCenter() const { return NULL; };
    173174  virtual TesselPoint *GetPoint() const { return NULL; };
     
    177178  virtual void GoToFirst() const {};
    178179  virtual void GoToLast() const {};
    179   virtual bool IsEmpty() const { return false; };
    180   virtual bool IsEnd() const { return false; };
     180  virtual bool IsEmpty() const { return true; };
     181  virtual bool IsEnd() const { return true; };
    181182};
    182183
     
    205206
    206207    void AddTesselationPoint(TesselPoint* Candidate, const int n);
     208    void SetTesselationPoint(TesselPoint* Candidate, const int n) const;
    207209    void AddTesselationLine(class BoundaryPointSet *a, class BoundaryPointSet *b, const int n);
    208210    void AlwaysAddTesselationTriangleLine(class BoundaryPointSet *a, class BoundaryPointSet *b, const int n);
     
    217219    void FindStartingTriangle(const double RADIUS, const LinkedCell *LC);
    218220    void FindSecondPointForTesselation(class TesselPoint* a, Vector Oben, class TesselPoint*& OptCandidate, double Storage[3], double RADIUS, const LinkedCell *LC);
    219     void FindThirdPointForTesselation(Vector NormalVector, Vector SearchDirection, Vector OldSphereCenter, class BoundaryLineSet *BaseLine, class TesselPoint *ThirdNode, CandidateList* &candidates, double *ShortestAngle, const double RADIUS, const LinkedCell *LC);
     221    void FindThirdPointForTesselation(Vector &NormalVector, Vector &SearchDirection, Vector &OldSphereCenter, class BoundaryLineSet *BaseLine, const class TesselPoint * const ThirdNode, CandidateList* &candidates, double *ShortestAngle, const double RADIUS, const LinkedCell *LC) const;
    220222    bool FindNextSuitableTriangle(BoundaryLineSet &Line, BoundaryTriangleSet &T, const double& RADIUS, const LinkedCell *LC);
    221     int CheckPresenceOfTriangle(class TesselPoint *Candidates[3]);
     223    int CheckPresenceOfTriangle(class TesselPoint *Candidates[3]) const;
    222224    class BoundaryTriangleSet * GetPresentTriangle(TesselPoint *Candidates[3]);
    223225
     
    281283
    282284  private:
    283     class BoundaryPointSet *TPS[3]; //this is a Storage for pointers to triangle points, this and BPS[2] needed due to AddLine restrictions
     285    mutable class BoundaryPointSet *TPS[3]; //this is a Storage for pointers to triangle points, this and BPS[2] needed due to AddLine restrictions
    284286
    285287    mutable PointMap::const_iterator InternalPointer;
     288
     289    bool HasOtherBaselineBetterCandidate(const BoundaryLineSet * const BaseRay, const TesselPoint * const OptCandidate, double ShortestAngle, double RADIUS, const LinkedCell * const LC) const;
    286290};
    287291
  • src/tesselationhelpers.cpp

    r3a0b38 rebbd3d  
    7777
    7878  if (fabs(m11) < MYEPSILON)
    79     eLog() << Verbose(0) << "ERROR: three points are colinear." << endl;
     79    eLog() << Verbose(1) << "three points are colinear." << endl;
    8080
    8181  center->x[0] =  0.5 * m12/ m11;
     
    8484
    8585  if (fabs(a.Distance(center) - RADIUS) > MYEPSILON)
    86     eLog() << Verbose(0) << "ERROR: The given center is further way by " << fabs(a.Distance(center) - RADIUS) << " from a than RADIUS." << endl;
     86    eLog() << Verbose(1) << "The given center is further way by " << fabs(a.Distance(center) - RADIUS) << " from a than RADIUS." << endl;
    8787
    8888  gsl_matrix_free(A);
     
    187187  gamma = M_PI - SideA.Angle(&SideB);
    188188  //Log() << Verbose(3) << "INFO: alpha = " << alpha/M_PI*180. << ", beta = " << beta/M_PI*180. << ", gamma = " << gamma/M_PI*180. << "." << endl;
    189   if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON)
    190     eLog() << Verbose(0) << "GetCenterofCircumcircle: Sum of angles " << (alpha+beta+gamma)/M_PI*180. << " > 180 degrees by " << fabs(M_PI - alpha - beta - gamma)/M_PI*180. << "!" << endl;
     189  if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON) {
     190    eLog() << Verbose(1) << "GetCenterofCircumcircle: Sum of angles " << (alpha+beta+gamma)/M_PI*180. << " > 180 degrees by " << fabs(M_PI - alpha - beta - gamma)/M_PI*180. << "!" << endl;
     191  }
    191192
    192193  Center->Zero();
     
    224225  // test whether new center is on the parameter circle's plane
    225226  if (fabs(helper.ScalarProduct(&CirclePlaneNormal)) > HULLEPSILON) {
    226     eLog() << Verbose(0) << "ERROR: Something's very wrong here: NewSphereCenter is not on the band's plane as desired by " <<fabs(helper.ScalarProduct(&CirclePlaneNormal))  << "!" << endl;
     227    eLog() << Verbose(1) << "Something's very wrong here: NewSphereCenter is not on the band's plane as desired by " <<fabs(helper.ScalarProduct(&CirclePlaneNormal))  << "!" << endl;
    227228    helper.ProjectOntoPlane(&CirclePlaneNormal);
    228229  }
     
    230231  // test whether the new center vector has length of CircleRadius
    231232  if (fabs(radius - CircleRadius) > HULLEPSILON)
    232     eLog() << Verbose(1) << "ERROR: The projected center of the new sphere has radius " << radius << " instead of " << CircleRadius << "." << endl;
     233    eLog() << Verbose(1) << "The projected center of the new sphere has radius " << radius << " instead of " << CircleRadius << "." << endl;
    233234  alpha = helper.Angle(&OldSphereCenter);
    234235  // make the angle unique by checking the halfplanes/search direction
     
    461462  for (int i=0;i<3;i++)
    462463    for (int j=i+1; j<3; j++) {
    463       if (nodes[i]->lines.find(nodes[j]->node->nr) != nodes[i]->lines.end()) {  // there already is a line
     464      if (nodes[i] == NULL) {
     465        Log() << Verbose(1) << "Node nr. " << i << " is not yet present." << endl;
     466        result = true;
     467      } else if (nodes[i]->lines.find(nodes[j]->node->nr) != nodes[i]->lines.end()) {  // there already is a line
    464468        LineMap::const_iterator FindLine;
    465469        pair<LineMap::const_iterator,LineMap::const_iterator> FindPair;
     
    491495  Vector BaseLineVector, OrthogonalVector, helper;
    492496  if (candidate1->BaseLine != candidate2->BaseLine) {  // sanity check
    493     Log() << Verbose(0) << "ERROR: sortCandidates was called for two different baselines: " << candidate1->BaseLine << " and " << candidate2->BaseLine << "." << endl;
     497    eLog() << Verbose(1) << "sortCandidates was called for two different baselines: " << candidate1->BaseLine << " and " << candidate2->BaseLine << "." << endl;
    494498    //return false;
    495499    exit(1);
     
    574578          }
    575579        } else {
    576           eLog() << Verbose(0) << "ERROR: The current cell " << LC->n[0] << "," << LC->n[1] << ","
     580          eLog() << Verbose(1) << "The current cell " << LC->n[0] << "," << LC->n[1] << ","
    577581            << LC->n[2] << " is invalid!" << endl;
    578582        }
     
    630634          }
    631635        } else {
    632           eLog() << Verbose(0) << "ERROR: The current cell " << LC->n[0] << "," << LC->n[1] << ","
     636          eLog() << Verbose(1) << "The current cell " << LC->n[0] << "," << LC->n[1] << ","
    633637            << LC->n[2] << " is invalid!" << endl;
    634638        }
     
    738742    }
    739743  } else {
    740     eLog() << Verbose(0) << "ERROR: Given vrmlfile is " << vrmlfile << "." << endl;
     744    eLog() << Verbose(1) << "Given vrmlfile is " << vrmlfile << "." << endl;
    741745  }
    742746  delete(center);
     
    752756{
    753757  Vector helper;
    754   // include the current position of the virtual sphere in the temporary raster3d file
    755   Vector *center = cloud->GetCenter();
    756   // make the circumsphere's center absolute again
    757   helper.CopyVector(Tess->LastTriangle->endpoints[0]->node->node);
    758   helper.AddVector(Tess->LastTriangle->endpoints[1]->node->node);
    759   helper.AddVector(Tess->LastTriangle->endpoints[2]->node->node);
    760   helper.Scale(1./3.);
    761   helper.SubtractVector(center);
    762   // and add to file plus translucency object
    763   *rasterfile << "# current virtual sphere\n";
    764   *rasterfile << "8\n  25.0    0.6     -1.0 -1.0 -1.0     0.2        0 0 0 0\n";
    765   *rasterfile << "2\n  " << helper.x[0] << " " << helper.x[1] << " " << helper.x[2] << "\t" << 5. << "\t1 0 0\n";
    766   *rasterfile << "9\n  terminating special property\n";
    767   delete(center);
     758
     759  if (Tess->LastTriangle != NULL) {
     760    // include the current position of the virtual sphere in the temporary raster3d file
     761    Vector *center = cloud->GetCenter();
     762    // make the circumsphere's center absolute again
     763    helper.CopyVector(Tess->LastTriangle->endpoints[0]->node->node);
     764    helper.AddVector(Tess->LastTriangle->endpoints[1]->node->node);
     765    helper.AddVector(Tess->LastTriangle->endpoints[2]->node->node);
     766    helper.Scale(1./3.);
     767    helper.SubtractVector(center);
     768    // and add to file plus translucency object
     769    *rasterfile << "# current virtual sphere\n";
     770    *rasterfile << "8\n  25.0    0.6     -1.0 -1.0 -1.0     0.2        0 0 0 0\n";
     771    *rasterfile << "2\n  " << helper.x[0] << " " << helper.x[1] << " " << helper.x[2] << "\t" << 5. << "\t1 0 0\n";
     772    *rasterfile << "9\n  terminating special property\n";
     773    delete(center);
     774  }
    768775};
    769776
     
    808815    *rasterfile << "9\n#  terminating special property\n";
    809816  } else {
    810     eLog() << Verbose(0) << "ERROR: Given rasterfile is " << rasterfile << "." << endl;
     817    eLog() << Verbose(1) << "Given rasterfile is " << rasterfile << "." << endl;
    811818  }
    812819  IncludeSphereinRaster3D(rasterfile, Tess, cloud);
     
    825832    *tecplot << "TITLE = \"3D CONVEX SHELL\"" << endl;
    826833    *tecplot << "VARIABLES = \"X\" \"Y\" \"Z\" \"U\"" << endl;
    827     *tecplot << "ZONE T=\"" << N << "-";
    828     for (int i=0;i<3;i++)
    829       *tecplot << (i==0 ? "" : "_") << TesselStruct->LastTriangle->endpoints[i]->node->Name;
     834    *tecplot << "ZONE T=\"";
     835    if (N < 0) {
     836      *tecplot << cloud->GetName();
     837    } else {
     838      *tecplot << N << "-";
     839      for (int i=0;i<3;i++)
     840        *tecplot << (i==0 ? "" : "_") << TesselStruct->LastTriangle->endpoints[i]->node->Name;
     841    }
    830842    *tecplot << "\", N=" << TesselStruct->PointsOnBoundary.size() << ", E=" << TesselStruct->TrianglesOnBoundary.size() << ", DATAPACKING=POINT, ZONETYPE=FETRIANGLE" << endl;
    831843    int i=0;
  • src/vector.cpp

    r3a0b38 rebbd3d  
    229229  factor = Direction.ScalarProduct(PlaneNormal);
    230230  if (factor < MYEPSILON) { // Uniqueness: line parallel to plane?
    231     Log() << Verbose(2) << "WARNING: Line is parallel to plane, no intersection." << endl;
     231    eLog() << Verbose(2) << "Line is parallel to plane, no intersection." << endl;
    232232    return false;
    233233  }
     
    253253    return true;
    254254  } else {
    255     Log() << Verbose(2) << "WARNING: Intersection point " << *this << " is not on plane." << endl;
     255    eLog() << Verbose(2) << "Intersection point " << *this << " is not on plane." << endl;
    256256    return false;
    257257  }
     
    747747      x[i] = C.x[i];
    748748  } else {
    749     eLog() << Verbose(0) << "ERROR: inverse of matrix does not exists: det A = " << detA << "." << endl;
     749    eLog() << Verbose(1) << "inverse of matrix does not exists: det A = " << detA << "." << endl;
    750750  }
    751751};
     
    799799  x2.SubtractVector(y2);
    800800  if ((fabs(x1.Norm()) < MYEPSILON) || (fabs(x2.Norm()) < MYEPSILON) || (fabs(x1.Angle(&x2)) < MYEPSILON)) {
    801     Log() << Verbose(4) << "WARNING: Given vectors are linear dependent." << endl;
     801    eLog() << Verbose(2) << "Given vectors are linear dependent." << endl;
    802802    return false;
    803803  }
     
    833833  Zero();
    834834  if ((fabs(x1.Norm()) < MYEPSILON) || (fabs(x2.Norm()) < MYEPSILON) || (fabs(x1.Angle(&x2)) < MYEPSILON)) {
    835     Log() << Verbose(4) << "WARNING: Given vectors are linear dependent." << endl;
     835    eLog() << Verbose(2) << "Given vectors are linear dependent." << endl;
    836836    return false;
    837837  }
  • tests/Tesselations/1_2-dimethoxyethane/NonConvexEnvelope-1_2-dimethoxyethane.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H10_ H15_ H16", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="1_2-dimethoxyethane", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    449.6489 7.0567 6.6101 2
    556.8975 7.0567 5.9709 2
  • tests/Tesselations/1_2-dimethylbenzene/NonConvexEnvelope-1_2-dimethylbenzene.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- C07_ C08_ H09", N=14, E=25, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="1_2-dimethylbenzene", N=14, E=25, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    448.3296 6.7712 6.0321 3
    558.3296 8.1534 6.0305 3
  • tests/Tesselations/2-methylcyclohexanone/NonConvexEnvelope-2-methylcyclohexanone.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H15_ H18_ H19", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="2-methylcyclohexanone", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    449.2731 9.0957 6.144 1
    5510.8392 7.1885 6.8694 0
  • tests/Tesselations/C16_0-Torus/NonConvexEnvelope-C16_0-Torus.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- C818_ C1839_ C1904", N=8208, E=16416, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="C16_0-Torus", N=8208, E=16416, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4457.0669 28.4968 10.0318 2
    5553.7124 30.5841 10.0363 2
  • tests/Tesselations/Makefile.am

    r3a0b38 rebbd3d  
    221_2-dimethylbenzene.test \
    332-methylcyclohexanone.test \
     4benzene.test \
    45cholesterol.test \
    56cluster.test \
  • tests/Tesselations/N_N-dimethylacetamide/NonConvexEnvelope-N_N-dimethylacetamide.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- C03_ O06_ H12", N=11, E=18, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="N_N-dimethylacetamide", N=11, E=18, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    446.4232 7.1074 8.3151 3
    556.5832 7.8674 9.2351 1
  • tests/Tesselations/cholesterol/NonConvexEnvelope-cholesterol.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H49_ H50_ H51", N=44, E=86, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="cholesterol", N=44, E=86, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4419.4519 9.7871 8.0824 1
    5512.9054 5.0485 9.284 1
  • tests/Tesselations/cluster/NonConvexEnvelope-cluster.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- O4864_ O4865_ O5836", N=434, E=782, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="cluster", N=434, E=782, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4459.3961 67.9193 74.1709 1
    5560.8097 66.4885 71.9891 1
  • tests/Tesselations/cycloheptane/NonConvexEnvelope-cycloheptane.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H08_ H12_ H13", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="cycloheptane", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    445 8.6586 6.1486 0
    555.8635 8.4046 7.6783 0
  • tests/Tesselations/dimethyl_bromomalonate/NonConvexEnvelope-dimethyl_bromomalonate.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H12_ H13_ H14", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="dimethyl_bromomalonate", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    448.1538 5 6.6665 1
    556.8226 7.583 6.9158 4
  • tests/Tesselations/glucose/NonConvexEnvelope-glucose.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- C09_ O12_ H17", N=19, E=34, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="glucose", N=19, E=34, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    449.5866 5 7.577 1
    558.4149 7.4116 8.4659 1
  • tests/Tesselations/heptan/NonConvexEnvelope-heptan.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H07_ H08_ H11", N=16, E=28, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="heptan", N=16, E=28, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    449.6377 5 6.78 0
    559.6377 5 5 0
  • tests/Tesselations/isoleucine/NonConvexEnvelope-isoleucine.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H20_ H21_ H22", N=17, E=30, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="isoleucine", N=17, E=30, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4410.8909 7.216 6.6663 5
    559.4763 5.271 6.3191 1
  • tests/Tesselations/neohexane/NonConvexEnvelope-neohexane.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H10_ H15_ H20", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="neohexane", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    447.1525 6.2503 8.0589 1
    557.1525 8.0303 8.0578 1
  • tests/Tesselations/proline/NonConvexEnvelope-proline.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- H10_ H13_ H17", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="proline", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    449.2095 7.1856 6.6953 4
    559.3187 7.948 7.6262 2
  • tests/Tesselations/putrescine/NonConvexEnvelope-putrescine.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- N06_ H17_ H18", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="putrescine", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4410.8857 5.9511 6.2964 1
    555.5257 8.9311 6.4164 1
  • tests/Tesselations/round_cluster/NonConvexEnvelope-round_cluster.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- O633_ O960_ O1013", N=467, E=930, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="round_cluster", N=467, E=930, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4441.4883 31.1464 29.9646 2
    5535.0153 37.6127 31.0313 4
  • tests/Tesselations/tartaric_acid/NonConvexEnvelope-tartaric_acid.dat

    r3a0b38 rebbd3d  
    11TITLE = "3D CONVEX SHELL"
    22VARIABLES = "X" "Y" "Z" "U"
    3 ZONE T="0- C05_ O09_ H12", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
     3ZONE T="tartaric_acid", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
    4410.156 6.9295 6.2926 4
    558.5078 5.7627 5 1
Note: See TracChangeset for help on using the changeset viewer.