Changes in / [3a0b38:ebbd3d]
- Files:
-
- 3 added
- 48 edited
Legend:
- Unmodified
- Added
- Removed
-
src/analysis_correlation.hpp
r3a0b38 rebbd3d 72 72 if (map == NULL) { 73 73 eLog() << Verbose(0) << "Nothing to min/max, map is NULL!" << endl; 74 performCriticalExit(); 74 75 return; 75 76 } … … 107 108 if (map == NULL) { 108 109 eLog() << Verbose(0) << "Nothing to bin, is NULL!" << endl; 110 performCriticalExit(); 109 111 return outmap; 110 112 } -
src/analyzer.cpp
r3a0b38 rebbd3d 94 94 if (!Hcorrection.ParseFragmentMatrix(argv[1], "", HCORRECTIONSUFFIX,0,0)) { 95 95 NoHCorrection = true; 96 Log() << Verbose(0) << "No HCorrection file found, skipping these." << endl;96 eLog() << Verbose(2) << "No HCorrection file found, skipping these." << endl; 97 97 } 98 98 … … 100 100 if (!Hessian.ParseFragmentMatrix(argv[1], dir, HessianSuffix,0,0)) { 101 101 NoHessian = true; 102 Log() << Verbose(0) << "No Hessian file found, skipping these." << endl;102 eLog() << Verbose(2) << "No Hessian file found, skipping these." << endl; 103 103 } 104 104 if (!Time.ParseFragmentMatrix(argv[1], dir, TimeSuffix, 10,1)) { 105 105 NoTime = true; 106 Log() << Verbose(0) << "No speed file found, skipping these." << endl;106 eLog() << Verbose(2) << "No speed file found, skipping these." << endl; 107 107 } 108 108 if (periode != NULL) { // also look for PAS values -
src/atom_bondedparticle.cpp
r3a0b38 rebbd3d 44 44 void BondedParticle::OutputBondOfAtom() const 45 45 { 46 Log() << Verbose(4) << "Atom " << Name << "/" << nr << " with " << ListOfBonds.size() << " bonds: " ;46 Log() << Verbose(4) << "Atom " << Name << "/" << nr << " with " << ListOfBonds.size() << " bonds: " << endl; 47 47 int TotalDegree = 0; 48 48 for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); ++Runner) { 49 Log() << Verbose( 0) << **Runner << "\t";49 Log() << Verbose(4) << **Runner << endl; 50 50 TotalDegree += (*Runner)->BondDegree; 51 51 } 52 Log() << Verbose( 0) << " -- TotalDegree: " << TotalDegree << endl;52 Log() << Verbose(4) << " -- TotalDegree: " << TotalDegree << endl; 53 53 }; 54 54 … … 75 75 status = true; 76 76 } else { 77 Log() << Verbose(1) << "ERROR: "<< *Binder << " does not contain " << *this << "." << endl;77 eLog() << Verbose(1) << *Binder << " does not contain " << *this << "." << endl; 78 78 } 79 79 } else { 80 Log() << Verbose(1) << "ERROR:Binder is " << Binder << "." << endl;80 eLog() << Verbose(1) << "Binder is " << Binder << "." << endl; 81 81 } 82 82 return status; … … 94 94 status = true; 95 95 } else { 96 Log() << Verbose(1) << "ERROR: "<< *Binder << " does not contain " << *this << "." << endl;96 eLog() << Verbose(1) << *Binder << " does not contain " << *this << "." << endl; 97 97 } 98 98 } else { 99 Log() << Verbose(1) << "ERROR:Binder is " << Binder << "." << endl;99 eLog() << Verbose(1) << "Binder is " << Binder << "." << endl; 100 100 } 101 101 return status; … … 121 121 bond *CandidateBond = NULL; 122 122 123 NoBonds = CountBonds(); 123 124 //Log() << Verbose(3) << "Walker " << *this << ": " << (int)this->type->NoValenceOrbitals << " > " << NoBonds << "?" << endl; 124 NoBonds = CountBonds();125 125 if ((int)(type->NoValenceOrbitals) > NoBonds) { // we have a mismatch, check all bonding partners for mismatch 126 126 for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); (++Runner)) { 127 127 OtherWalker = (*Runner)->GetOtherAtom(this); 128 128 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 candidate129 //Log() << Verbose(3) << "OtherWalker " << *OtherWalker << ": " << (int)OtherWalker->type->NoValenceOrbitals << " > " << OtherNoBonds << "?" << endl; 130 if ((int)(OtherWalker->type->NoValenceOrbitals) > OtherNoBonds) { // check if possible candidate 131 131 if ((CandidateBond == NULL) || (ListOfBonds.size() > OtherWalker->ListOfBonds.size())) { // pick the one with fewer number of bonds first 132 132 CandidateBond = (*Runner); … … 137 137 if ((CandidateBond != NULL)) { 138 138 CandidateBond->BondDegree++; 139 Log() << Verbose(2) << "Increased bond degree for bond " << *CandidateBond << "." << endl;139 //Log() << Verbose(2) << "Increased bond degree for bond " << *CandidateBond << "." << endl; 140 140 } 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; 142 142 FalseBondDegree++; 143 143 } -
src/atom_graphnode.cpp
r3a0b38 rebbd3d 29 29 Log() << Verbose(2) << "Atom " << Name << " is " << ((SeparationVertex) ? "a" : "not a") << " separation vertex, components are "; 30 30 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; 32 32 }; 33 33 … … 40 40 if (ComponentNr != NULL) { 41 41 for (int i=0; ComponentNr[i] != -1; i++) 42 Log() << Verbose( 0) << ComponentNr[i] << " ";42 Log() << Verbose(2) << ComponentNr[i] << " "; 43 43 } 44 44 }; -
src/atom_trajectoryparticle.cpp
r3a0b38 rebbd3d 203 203 U[d] = gsl_ran_gaussian (r, sigma); 204 204 } 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; 206 206 } 207 207 for (int d=0; d<NDIM; d++) -
src/bond.cpp
r3a0b38 rebbd3d 63 63 if(rightatom == Atom) 64 64 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; 66 66 return NULL; 67 67 }; … … 99 99 bool bond::MarkUsed(const enum Shading color) { 100 100 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; 102 102 return false; 103 103 } else { -
src/bondgraph.cpp
r3a0b38 rebbd3d 153 153 { 154 154 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; 156 156 CovalentMinMaxDistance(Walker, OtherWalker, MinDistance, MaxDistance, IsAngstroem); 157 157 } else { -
src/boundary.cpp
r3a0b38 rebbd3d 176 176 angle = 0.; // otherwise it's a vector in Axis Direction and unimportant for boundary issues 177 177 178 //Log() << Verbose( 0) << "Checking sign in quadrant : " << ProjectedVector.Projection(&AngleReferenceNormalVector) << "." << endl;178 //Log() << Verbose(2) << "Checking sign in quadrant : " << ProjectedVector.Projection(&AngleReferenceNormalVector) << "." << endl; 179 179 if (ProjectedVector.ScalarProduct(&AngleReferenceNormalVector) > 0) { 180 180 angle = 2. * M_PI - angle; … … 214 214 // for(Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++) { 215 215 // if (runner != BoundaryPoints[axis].begin()) 216 // Log() << Verbose( 0) << ", " << i << ": " << *runner->second.second;216 // Log() << Verbose(2) << ", " << i << ": " << *runner->second.second; 217 217 // else 218 // Log() << Verbose( 0) << i << ": " << *runner->second.second;218 // Log() << Verbose(2) << i << ": " << *runner->second.second; 219 219 // i++; 220 220 // } 221 // Log() << Verbose( 0) << endl;221 // Log() << Verbose(2) << endl; 222 222 // } 223 223 // 3c. throw out points whose distance is less than the mean of left and right neighbours … … 249 249 SideA.SubtractVector(MolCenter); 250 250 SideA.ProjectOntoPlane(&AxisVector); 251 // Log() << Verbose(0) << "SideA: "; 252 // SideA.Output(out); 253 // Log() << Verbose(0) << endl; 251 // Log() << Verbose(0) << "SideA: " << SideA << endl; 254 252 255 253 SideB.CopyVector(&right->second.second->x); 256 254 SideB.SubtractVector(MolCenter); 257 255 SideB.ProjectOntoPlane(&AxisVector); 258 // Log() << Verbose(0) << "SideB: "; 259 // SideB.Output(out); 260 // Log() << Verbose(0) << endl; 256 // Log() << Verbose(0) << "SideB: " << SideB << endl; 261 257 262 258 SideC.CopyVector(&left->second.second->x); 263 259 SideC.SubtractVector(&right->second.second->x); 264 260 SideC.ProjectOntoPlane(&AxisVector); 265 // Log() << Verbose(0) << "SideC: "; 266 // SideC.Output(out); 267 // Log() << Verbose(0) << endl; 261 // Log() << Verbose(0) << "SideC: " << SideC << endl; 268 262 269 263 SideH.CopyVector(&runner->second.second->x); 270 264 SideH.SubtractVector(MolCenter); 271 265 SideH.ProjectOntoPlane(&AxisVector); 272 // Log() << Verbose(0) << "SideH: "; 273 // SideH.Output(out); 274 // Log() << Verbose(0) << endl; 266 // Log() << Verbose(0) << "SideH: " << SideH << endl; 275 267 276 268 // calculate each length … … 335 327 for(Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++) { 336 328 if (runner != BoundaryPoints[axis].begin()) 337 Log() << Verbose( 0) << ", " << i << ": " << *runner->second.second;329 Log() << Verbose(2) << ", " << i << ": " << *runner->second.second; 338 330 else 339 Log() << Verbose( 0) << i << ": " << *runner->second.second;331 Log() << Verbose(2) << i << ": " << *runner->second.second; 340 332 i++; 341 333 } 342 Log() << Verbose( 0) << endl;334 Log() << Verbose(2) << endl; 343 335 } 344 336 … … 347 339 for (Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++) 348 340 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; 350 342 351 343 Log() << Verbose(2) << "I found " << TesselStruct->PointsOnBoundaryCount << " points on the convex boundary." << endl; … … 355 347 // Log() << Verbose(1) << "Listing PointsOnBoundary:"; 356 348 // for(PointMap::iterator runner = PointsOnBoundary.begin(); runner != PointsOnBoundary.end(); runner++) { 357 // Log() << Verbose( 0) << " " << *runner->second;349 // Log() << Verbose(1) << " " << *runner->second; 358 350 // } 359 // Log() << Verbose( 0) << endl;351 // Log() << Verbose(1) << endl; 360 352 361 353 // 3a. guess starting triangle … … 406 398 // flip the line 407 399 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; 409 401 else { 410 402 TesselStruct->FlipBaseline(line); … … 462 454 463 455 if ((TesselStruct == NULL) || (TesselStruct->PointsOnBoundary.empty())) { 464 Log() << Verbose(2) << "ERROR:TesselStruct is empty." << endl;456 eLog() << Verbose(1) << "TesselStruct is empty." << endl; 465 457 return false; 466 458 } … … 470 462 Log() << Verbose(2) << "Remaining points are: "; 471 463 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; 474 466 475 467 PointRunner = TesselStruct->PointsOnBoundary.begin(); … … 528 520 // check whether there is something to work on 529 521 if (TesselStruct == NULL) { 530 Log() << Verbose(1) << "ERROR:TesselStruct is empty!" << endl;522 eLog() << Verbose(1) << "TesselStruct is empty!" << endl; 531 523 return volume; 532 524 } … … 679 671 OutputName.append(TecplotSuffix); 680 672 ofstream *tecplot = new ofstream(OutputName.c_str()); 681 WriteTecplotFile(tecplot, TesselStruct, mol, 0);673 WriteTecplotFile(tecplot, TesselStruct, mol, -1); 682 674 tecplot->close(); 683 675 delete(tecplot); … … 756 748 Log() << Verbose(1) << "Minimum volume of the convex envelope contained in a rectangular box is " << minimumvolume << " atomicmassunit/" << (IsAngstroem ? "angstrom" : "atomiclength") << "^3." << endl; 757 749 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; 759 751 Log() << Verbose(0) << "Setting Box dimensions to minimum possible, the greatest diameters." << endl; 760 752 for (int i = 0; i < NDIM; i++) … … 849 841 for(int i=0;i<NDIM;i++) { 850 842 N[i] = (int) ceil(1./FillerDistance.x[i]); 851 Log() << Verbose( 0) << N[i];843 Log() << Verbose(1) << N[i]; 852 844 if (i != NDIM-1) 853 Log() << Verbose( 0)<< ", ";845 Log() << Verbose(1)<< ", "; 854 846 else 855 Log() << Verbose( 0) << "." << endl;847 Log() << Verbose(1) << "." << endl; 856 848 } 857 849 … … 870 862 // get linked cell list 871 863 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; 873 865 FillIt = false; 874 866 } else { … … 994 986 while ((baseline != TesselStruct->LinesOnBoundary.end()) || (OneLoopWithoutSuccessFlag)) { 995 987 if (baseline->second->triangles.size() == 1) { 988 CheckListOfBaselines(TesselStruct); 996 989 // 3. find next triangle 997 990 TesselationFailFlag = TesselStruct->FindNextSuitableTriangle(*(baseline->second), *(((baseline->second->triangles.begin()))->second), RADIUS, LCList); //the line is there, so there is a triangle, but only one. 998 991 OneLoopWithoutSuccessFlag = OneLoopWithoutSuccessFlag || TesselationFailFlag; 999 992 if (!TesselationFailFlag) 1000 eLog() << Verbose( 0) << "WARNING:FindNextSuitableTriangle failed." << endl;993 eLog() << Verbose(2) << "FindNextSuitableTriangle failed." << endl; 1001 994 1002 995 // write temporary envelope … … 1006 999 } 1007 1000 } 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 } 1010 1006 } else { 1011 1007 //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 } 1014 1012 } 1015 1013 -
src/boundary.hpp
r3a0b38 rebbd3d 35 35 36 36 #define DEBUG 1 37 #define DoSingleStepOutput 037 #define DoSingleStepOutput 1 38 38 #define SingleStepWidth 1 39 39 -
src/builder.cpp
r3a0b38 rebbd3d 95 95 switch (choice) { 96 96 default: 97 Log() << Verbose(0) << "Not a valid choice." << endl;97 eLog() << Verbose(2) << "Not a valid choice." << endl; 98 98 break; 99 99 case 'a': // absolute coordinates of atom … … 109 109 valid = true; 110 110 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; 112 112 Log() << Verbose(0) << "Enter reference coordinates." << endl; 113 113 x.AskPosition(mol->cell_size, true); … … 125 125 valid = true; 126 126 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; 128 128 second = mol->AskAtom("Enter atom number: "); 129 129 Log() << Verbose(0) << "Enter relative coordinates." << endl; … … 142 142 do { 143 143 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; 147 145 } 148 146 Log() << Verbose(0) << "First, we need two atoms, the first atom is the central, while the second is the outer one." << endl; … … 671 669 Log() << Verbose(0) << "===============================================" << endl; 672 670 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; 674 672 Log() << Verbose(0) << "INPUT: "; 675 673 cin >> choice; … … 794 792 Log() << Verbose(0) << "===============================================" << endl; 795 793 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; 797 795 Log() << Verbose(0) << "INPUT: "; 798 796 cin >> choice; … … 827 825 } 828 826 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; 830 828 x.Zero(); 831 829 y.Zero(); … … 1172 1170 else { 1173 1171 eLog() << Verbose(0) << "I don't have anything to test on ... "; 1172 performCriticalExit(); 1174 1173 return; 1175 1174 } … … 1248 1247 ofstream output; 1249 1248 molecule *mol = new molecule(periode); 1249 mol->SetNameFromFilename(ConfigFileName); 1250 1250 1251 1251 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; 1253 1253 } 1254 1254 … … 1354 1354 1355 1355 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; 1357 1357 } 1358 1358 … … 1386 1386 int argptr; 1387 1387 molecule *mol = NULL; 1388 string BondGraphFileName(""); 1388 string BondGraphFileName("\n"); 1389 int verbosity = 0; 1389 1390 strncpy(configuration.databasepath, LocalPath, MAXSTRINGSIZE-1); 1390 1391 … … 1432 1433 Log() << Verbose(0) << "\t-T x1 x2 x3\tTranslate periodically all atoms by this vector (x1,x2,x3)." << endl; 1433 1434 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; 1435 1437 Log() << Verbose(0) << "Note: config files must not begin with '-' !" << endl; 1436 1438 return (1); 1437 1439 break; 1438 1440 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; 1439 1447 case 'V': 1440 1448 Log() << Verbose(0) << argv[0] << " " << VERSIONSTRING << endl; … … 1445 1453 if ((argptr >= argc) || (argv[argptr][0] == '-')) { 1446 1454 eLog() << Verbose(0) << "Not enough or invalid arguments for specifying element db: -e <db file>" << endl; 1455 performCriticalExit(); 1447 1456 } else { 1448 1457 Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl; … … 1454 1463 if ((argptr >= argc) || (argv[argptr][0] == '-')) { 1455 1464 eLog() << Verbose(0) << "Not enough or invalid arguments for specifying bond length table: -g <table file>" << endl; 1465 performCriticalExit(); 1456 1466 } else { 1457 1467 BondGraphFileName = argv[argptr]; … … 1530 1540 mol = new molecule(periode); 1531 1541 mol->ActiveFlag = true; 1542 if (ConfigFileName != NULL) 1543 mol->SetNameFromFilename(ConfigFileName); 1532 1544 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 } 1533 1553 } 1534 1554 … … 1546 1566 ExitFlag = 255; 1547 1567 eLog() << Verbose(0) << "Not enough arguments for parsing: -p <xyz file>" << endl; 1568 performCriticalExit(); 1548 1569 } else { 1549 1570 SaveFlag = true; … … 1553 1574 else { 1554 1575 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 } 1555 1586 configPresent = present; 1556 1587 } … … 1562 1593 ExitFlag = 255; 1563 1594 eLog() << Verbose(0) << "Not enough or invalid arguments for adding atom: -a <element> <x> <y> <z>" << endl; 1595 performCriticalExit(); 1564 1596 } else { 1565 1597 SaveFlag = true; … … 1590 1622 ExitFlag = 255; 1591 1623 eLog() << Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl; 1624 performCriticalExit(); 1592 1625 } else { 1593 1626 configuration.basis = argv[argptr]; … … 1634 1667 ExitFlag = 255; 1635 1668 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <Z> <output> <bin output>" << endl; 1669 performCriticalExit(); 1636 1670 } else { 1637 1671 SaveFlag = false; … … 1680 1714 ExitFlag = 255; 1681 1715 eLog() << Verbose(0) << "Not enough or invalid arguments given for changing element: -E <atom nr.> <element>" << endl; 1716 performCriticalExit(); 1682 1717 } else { 1683 1718 SaveFlag = true; … … 1693 1728 ExitFlag = 255; 1694 1729 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(); 1695 1731 } else { 1696 1732 SaveFlag = true; … … 1731 1767 ExitFlag =255; 1732 1768 eLog() << Verbose(0) << "Missing source file for bonds in molecule: -A <bond sourcefile>" << endl; 1769 performCriticalExit(); 1733 1770 } else { 1734 1771 Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl; … … 1744 1781 ExitFlag = 255; 1745 1782 eLog() << Verbose(0) << "Not enough or invalid arguments given for non-convex envelope: -o <radius> <tecplot output file>" << endl; 1783 performCriticalExit(); 1746 1784 } else { 1747 1785 class Tesselation *T = NULL; 1748 1786 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."; 1752 1791 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; 1753 1802 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]); 1756 1805 //FindDistributionOfEllipsoids(T, &LCList, N, number, filename.c_str()); 1757 1806 end = clock(); … … 1766 1815 ExitFlag = 255; 1767 1816 eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -S <temperature file>" << endl; 1817 performCriticalExit(); 1768 1818 } else { 1769 1819 Log() << Verbose(1) << "Storing temperatures in " << argv[argptr] << "." << endl; … … 1783 1833 ExitFlag = 255; 1784 1834 eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl; 1835 performCriticalExit(); 1785 1836 } else { 1786 1837 SaveFlag = true; … … 1800 1851 ExitFlag = 255; 1801 1852 eLog() << Verbose(0) << "Not enough or invalid arguments given for parsing and integrating forces: -P <forces file>" << endl; 1853 performCriticalExit(); 1802 1854 } else { 1803 1855 SaveFlag = true; … … 1815 1867 ExitFlag = 255; 1816 1868 eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl; 1869 performCriticalExit(); 1817 1870 } else { 1818 1871 SaveFlag = true; … … 1830 1883 } 1831 1884 } 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; 1833 1886 } 1834 1887 argptr+=2; … … 1840 1893 ExitFlag = 255; 1841 1894 eLog() << Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl; 1895 performCriticalExit(); 1842 1896 } else { 1843 1897 if (ExitFlag == 0) ExitFlag = 1; … … 1855 1909 ExitFlag = 255; 1856 1910 eLog() << Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl; 1911 performCriticalExit(); 1857 1912 } else { 1858 1913 if (ExitFlag == 0) ExitFlag = 1; … … 1870 1925 ExitFlag = 255; 1871 1926 eLog() << Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl; 1927 performCriticalExit(); 1872 1928 } else { 1873 1929 SaveFlag = true; … … 1893 1949 ExitFlag = 255; 1894 1950 eLog() << Verbose(0) << "Not enough or invalid arguments given for centering in box: -b <xx> <xy> <xz> <yy> <yz> <zz>" << endl; 1951 performCriticalExit(); 1895 1952 } else { 1896 1953 SaveFlag = true; … … 1910 1967 ExitFlag = 255; 1911 1968 eLog() << Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl; 1969 performCriticalExit(); 1912 1970 } else { 1913 1971 SaveFlag = true; … … 1927 1985 ExitFlag = 255; 1928 1986 eLog() << Verbose(0) << "Not enough or invalid arguments given for centering with boundary: -c <boundary_x> <boundary_y> <boundary_z>" << endl; 1987 performCriticalExit(); 1929 1988 } else { 1930 1989 SaveFlag = true; … … 1960 2019 ExitFlag = 255; 1961 2020 eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -r <id>" << endl; 2021 performCriticalExit(); 1962 2022 } else { 1963 2023 SaveFlag = true; … … 1973 2033 ExitFlag = 255; 1974 2034 eLog() << Verbose(0) << "Not enough or invalid arguments for fragmentation: -f <max. bond distance> <bond order>" << endl; 2035 performCriticalExit(); 1975 2036 } else { 1976 2037 Log() << Verbose(0) << "Fragmenting molecule with bond distance " << argv[argptr] << " angstroem, order of " << argv[argptr+1] << "." << endl; … … 1991 2052 j = atoi(argv[argptr++]); 1992 2053 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; 1994 2055 j = 0; 1995 2056 } … … 2006 2067 ExitFlag = 255; 2007 2068 eLog() << Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl; 2069 performCriticalExit(); 2008 2070 } else { 2009 2071 class Tesselation *TesselStruct = NULL; … … 2030 2092 ExitFlag = 255; 2031 2093 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 again2094 performCriticalExit(); 2033 2095 } else { 2034 2096 volume = atof(argv[argptr++]); … … 2041 2103 ExitFlag = 255; 2042 2104 eLog() << Verbose(0) << "Not enough arguments given for suspension: -u <density>" << endl; 2105 performCriticalExit(); 2043 2106 } else { 2044 2107 double density; … … 2047 2110 density = atof(argv[argptr++]); 2048 2111 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; 2050 2113 density = 1.3; 2051 2114 } … … 2053 2116 // repetition[i] = atoi(argv[argptr++]); 2054 2117 // 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; 2056 2119 // repetition[i] = 1; 2057 2120 // } … … 2064 2127 ExitFlag = 255; 2065 2128 eLog() << Verbose(0) << "Not enough or invalid arguments given for repeating cells: -d <repeat_x> <repeat_y> <repeat_z>" << endl; 2129 performCriticalExit(); 2066 2130 } else { 2067 2131 SaveFlag = true; … … 2072 2136 Vector ** vectors; 2073 2137 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; 2075 2139 faktor = 1; 2076 2140 } … … 2089 2153 } 2090 2154 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; 2092 2156 x.Zero(); 2093 2157 y.Zero(); … … 2154 2218 int j; 2155 2219 2156 setVerbosity( 2);2220 setVerbosity(0); 2157 2221 2158 2222 // =========================== PARSE COMMAND LINE OPTIONS ==================================== -
src/config.cpp
r3a0b38 rebbd3d 72 72 file= new ifstream(filename); 73 73 if (file == NULL) { 74 eLog() << Verbose( 0) << "ERROR:config file " << filename << " missing!" << endl;74 eLog() << Verbose(1) << "config file " << filename << " missing!" << endl; 75 75 return; 76 76 } … … 87 87 // allocate buffer's 1st dimension 88 88 if (buffer != NULL) { 89 eLog() << Verbose( 0) << "ERROR:FileBuffer->buffer is not NULL!" << endl;89 eLog() << Verbose(1) << "FileBuffer->buffer is not NULL!" << endl; 90 90 return; 91 91 } else … … 143 143 if (LineMapping == NULL) { 144 144 eLog() << Verbose(0) << "map pointer is NULL: " << LineMapping << endl; 145 performCriticalExit(); 145 146 return; 146 147 } … … 156 157 if (CurrentLine+nr < NoLines) 157 158 LineMapping[CurrentLine+(nr++)] = runner->second; 158 else 159 else { 159 160 eLog() << Verbose(0) << "config::MapIonTypesInBuffer - NoAtoms is wrong: We are past the end of the file!" << endl; 161 performCriticalExit(); 162 } 160 163 } 161 164 } … … 653 656 { 654 657 if (FileBuffer != NULL) { 655 eLog() << Verbose( 1) << "WARNING:deleting present FileBuffer in PrepareFileBuffer()." << endl;658 eLog() << Verbose(2) << "deleting present FileBuffer in PrepareFileBuffer()." << endl; 656 659 delete(FileBuffer); 657 660 } … … 686 689 if (MaxTypes == 0) { 687 690 eLog() << Verbose(0) << "There are no atoms according to MaxTypes in this config file." << endl; 691 performCriticalExit(); 688 692 } else { 689 693 // prescan number of ions per type … … 704 708 if (!ParseForParameter(verbose,FileBuffer, (const char*)name, 1, 1, 1, int_type, &value[0], 1, critical)) { 705 709 eLog() << Verbose(0) << "There are no atoms in the config file!" << endl; 710 performCriticalExit(); 706 711 return; 707 712 } … … 847 852 ifstream *file = new ifstream(filename); 848 853 if (file == NULL) { 849 eLog() << Verbose( 0) << "ERROR:config file " << filename << " missing!" << endl;854 eLog() << Verbose(1) << "config file " << filename << " missing!" << endl; 850 855 return; 851 856 } … … 1051 1056 1052 1057 // 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 } 1058 1065 } 1059 1066 1060 1067 // 3. parse the molecule in 1061 1068 LoadMolecule(mol, FileBuffer, periode, FastParsing); 1069 mol->SetNameFromFilename(filename); 1062 1070 mol->ActiveFlag = true; 1063 1071 … … 1080 1088 ifstream *file = new ifstream(filename); 1081 1089 if (file == NULL) { 1082 eLog() << Verbose( 0) << "ERROR:config file " << filename << " missing!" << endl;1090 eLog() << Verbose(1) << "config file " << filename << " missing!" << endl; 1083 1091 return; 1084 1092 } -
src/ellipsoid.cpp
r3a0b38 rebbd3d 241 241 x = new Vector[PointsToPick]; 242 242 } 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; 244 244 } 245 245 … … 341 341 x = new Vector[PointsToPick]; 342 342 } 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; 344 344 } 345 345 -
src/errorlogger.cpp
r3a0b38 rebbd3d 82 82 l.nix->clear(); 83 83 if (v.DoOutput(verbosityLevel)) { 84 v.print(cout);85 84 switch(v.Verbosity) { 86 85 case 0: 87 c out<< "CRITICAL: ";86 cerr << "CRITICAL: "; 88 87 break; 89 88 case 1: 90 c out<< "ERROR: ";89 cerr << "ERROR: "; 91 90 break; 92 91 case 2: 93 c out<< "WARNING: ";92 cerr << "WARNING: "; 94 93 break; 95 94 default: 96 95 break; 97 96 } 97 v.print(cerr); 98 98 return cerr; 99 99 } else … … 105 105 l->nix->clear(); 106 106 if (v.DoOutput(verbosityLevel)) { 107 v.print(cout);108 107 switch(v.Verbosity) { 109 108 case 0: 110 c out<< "CRITICAL: ";109 cerr << "CRITICAL: "; 111 110 break; 112 111 case 1: 113 c out<< "ERROR: ";112 cerr << "ERROR: "; 114 113 break; 115 114 case 2: 116 c out<< "WARNING: ";115 cerr << "WARNING: "; 117 116 break; 118 117 default: 119 118 break; 120 119 } 120 v.print(cerr); 121 121 return cerr; 122 122 } else -
src/helpers.hpp
r3a0b38 rebbd3d 111 111 if (LookupTable == NULL) { 112 112 eLog() << Verbose(0) << "LookupTable memory allocation failed!" << endl; 113 performCriticalExit(); 113 114 status = false; 114 115 } else { -
src/linkedcell.cpp
r3a0b38 rebbd3d 47 47 Log() << Verbose(1) << "Begin of LinkedCell" << endl; 48 48 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; 50 50 return; 51 51 } … … 79 79 Log() << Verbose(2) << "Allocating cells ... "; 80 80 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; 82 82 return; 83 83 } … … 122 122 Log() << Verbose(1) << "Begin of LinkedCell" << endl; 123 123 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; 125 125 return; 126 126 } … … 151 151 Log() << Verbose(2) << "Allocating cells ... "; 152 152 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; 154 154 return; 155 155 } … … 199 199 status = status && ((n[i] >=0) && (n[i] < N[i])); 200 200 if (!status) 201 eLog() << Verbose( 0) << "ERROR:indices are out of bounds!" << endl;201 eLog() << Verbose(1) << "indices are out of bounds!" << endl; 202 202 return status; 203 203 }; … … 260 260 return status; 261 261 } 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; 263 263 return false; 264 264 } -
src/memoryusageobserver.cpp
r3a0b38 rebbd3d 88 88 89 89 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 " 91 91 << pointer << " is not registered by MemoryUsageObserver: "; 92 92 if (msg != NULL) -
src/molecule.cpp
r3a0b38 rebbd3d 192 192 BondRescale = TopOrigin->type->HBondDistance[TopBond->BondDegree-1]; 193 193 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; 195 195 return false; 196 196 BondRescale = bondlength; … … 235 235 SecondOtherAtom = (*Runner)->GetOtherAtom(TopOrigin); 236 236 } 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; 238 238 } 239 239 } … … 272 272 bondangle = TopOrigin->type->HBondAngle[1]; 273 273 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; 275 275 return false; 276 276 bondangle = 0; … … 394 394 break; 395 395 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; 397 397 AllWentWell = false; 398 398 break; … … 445 445 Walker->type = elemente->FindElement(shorthand); 446 446 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."; 448 448 Walker->type = elemente->FindElement(1); 449 449 } … … 541 541 add(Binder, last); 542 542 } 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; 544 544 } 545 545 return Binder; … … 619 619 AtomCount--; 620 620 } 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; 622 622 if (ElementsInMolecule[pointer->type->Z] == 0) // was last atom of this element? 623 623 ElementCount--; … … 637 637 ElementsInMolecule[pointer->type->Z]--; // decrease number of atom of this element 638 638 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; 640 640 if (ElementsInMolecule[pointer->type->Z] == 0) // was last atom of this element? 641 641 ElementCount--; -
src/molecule.hpp
r3a0b38 rebbd3d 106 106 107 107 // re-definition of virtual functions from PointCloud 108 const char * const GetName() const; 108 109 Vector *GetCenter() const ; 109 110 TesselPoint *GetPoint() const ; -
src/molecule_dynamics.cpp
r3a0b38 rebbd3d 307 307 if (Params.DoubleList[i] > 1) { 308 308 eLog() << Verbose(0) << "Failed to create an injective PermutationMap!" << endl; 309 exit(1);309 performCriticalExit(); 310 310 } 311 311 Log() << Verbose(1) << "done." << endl; … … 428 428 } 429 429 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; 431 431 exit(255); 432 432 } 433 433 //Log() << Verbose(0) << endl; 434 434 } 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; 436 436 exit(255); 437 437 } … … 569 569 if (!Force.ParseMatrix(file, 0,0,0)) { 570 570 eLog() << Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl; 571 performCriticalExit(); 571 572 return false; 572 573 } 573 574 if (Force.RowCounter[0] != AtomCount) { 574 575 eLog() << Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl; 576 performCriticalExit(); 575 577 return false; 576 578 } -
src/molecule_fragmentation.cpp
r3a0b38 rebbd3d 111 111 if (!testGraphInsert.second) { 112 112 eLog() << Verbose(0) << "KeySet file must be corrupt as there are two equal key sets therein!" << endl; 113 performCriticalExit(); 113 114 } 114 115 } … … 211 212 } else { 212 213 eLog() << Verbose(0) << "Unable to open " << line << " for writing keysets!" << endl; 214 performCriticalExit(); 213 215 status = false; 214 216 } … … 368 370 } else { 369 371 eLog() << Verbose(0) << "Atom No. " << (*runner).second.first << " was not found in this molecule." << endl; 372 performCriticalExit(); 370 373 } 371 374 } … … 441 444 // transmorph graph keyset list into indexed KeySetList 442 445 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; 444 447 return false; 445 448 } … … 449 452 map<int, pair<double,int> > *AdaptiveCriteriaList = ScanAdaptiveFileIntoMap(path, *IndexKeySetList); // (Root No., (Value, Order)) ! 450 453 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; 452 455 while (Walker->next != end) { 453 456 Walker = Walker->next; … … 638 641 MolecularWalker->Leaf->FragmentBOSSANOVA(FragmentList[FragmentCounter], RootStack[FragmentCounter], MinimumRingSize); 639 642 } else { 640 eLog() << Verbose( 0) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;643 eLog() << Verbose(1) << "Subgraph " << MolecularWalker << " has no atoms!" << endl; 641 644 } 642 645 FragmentCounter++; // next fragment list … … 898 901 } 899 902 } 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; 901 904 } 902 905 if ((LonelyFlag) && (Leaf->AtomCount > 1)) { … … 1133 1136 Log() << Verbose(0) << endl; 1134 1137 //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; 1136 1139 InsertFragmentIntoGraph(FragmentSearch); 1137 1140 } -
src/molecule_graph.cpp
r3a0b38 rebbd3d 926 926 break; // breaking here will not cause error! 927 927 } 928 if (i == vertex->ListOfBonds.size()) 928 if (i == vertex->ListOfBonds.size()) { 929 929 eLog() << Verbose(0) << "Error: All Component entries are already occupied!" << endl; 930 } else 930 performCriticalExit(); 931 } 932 } else { 931 933 eLog() << Verbose(0) << "Error: Given vertex is NULL!" << endl; 934 performCriticalExit(); 935 } 932 936 } 933 937 ; … … 1114 1118 if (ReferenceStack->IsEmpty()) { 1115 1119 eLog() << Verbose(0) << "ReferenceStack is empty!" << endl; 1120 performCriticalExit(); 1116 1121 return false; 1117 1122 } -
src/molecule_pointcloud.cpp
r3a0b38 rebbd3d 13 13 /************************************* Functions for class molecule *********************************/ 14 14 15 /** Returns a name for this point cloud, here the molecule's name. 16 * \return name of point cloud 17 */ 18 const char * const molecule::GetName() const 19 { 20 return name; 21 }; 15 22 16 23 /** Determine center of all atoms. -
src/moleculelist.cpp
r3a0b38 rebbd3d 311 311 Tesselation *TesselStruct = NULL; 312 312 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; 314 314 return false; 315 315 } … … 319 319 FindNonConvexBorder(mol, TesselStruct, (const LinkedCell *&)LCList, 4., NULL); 320 320 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; 322 322 return false; 323 323 } … … 402 402 input.open(line.c_str()); 403 403 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(); 406 406 return false; 407 407 } … … 442 442 if (input == NULL) { 443 443 eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl; 444 performCriticalExit(); 444 445 return false; 445 446 } … … 643 644 if (path != NULL) 644 645 strcpy(PathBackup, path); 645 else 646 else { 646 647 eLog() << Verbose(0) << "OutputConfigForListOfFragments: NULL default path obtained from config!" << endl; 648 performCriticalExit(); 649 } 647 650 648 651 // correct periodic … … 757 760 // 4a. create array of molecules to fill 758 761 const int MolCount = Subgraphs->next->Count(); 762 char number[MAXSTRINGSIZE]; 759 763 molecule **molecules = Malloc<molecule *>(MolCount, "config::Load() - **molecules"); 760 764 for (int i=0;i<MolCount;i++) { 761 765 molecules[i] = (molecule*) new molecule(mol->elemente); 762 766 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; 763 773 insert(molecules[i]); 764 774 } … … 797 807 } 798 808 } 799 // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintain edtheir ListOfBonds, but we have to remove them from first..last list809 // 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 800 810 bond *Binder = mol->first; 801 811 while (mol->first->next != mol->last) { -
src/parser.cpp
r3a0b38 rebbd3d 159 159 if (input == NULL) { 160 160 eLog() << Verbose(0) << endl << "Unable to open " << name << ", is the directory correct?" << endl; 161 performCriticalExit(); 161 162 return false; 162 163 } … … 179 180 //Log() << Verbose(0) << line.str() << endl; 180 181 //Log() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << "." << endl; 181 if (ColumnCounter[MatrixNr] == 0) 182 if (ColumnCounter[MatrixNr] == 0) { 182 183 eLog() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl; 184 performCriticalExit(); 185 } 183 186 184 187 // scan rest for number of rows/lines … … 193 196 } 194 197 //Log() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << "." << endl; 195 if (RowCounter[MatrixNr] == 0) 198 if (RowCounter[MatrixNr] == 0) { 196 199 eLog() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl; 200 performCriticalExit(); 201 } 197 202 198 203 // allocate matrix if it's not zero dimension in one direction … … 226 231 } 227 232 } 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; 229 234 } 230 235 input.close(); … … 428 433 if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 429 434 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(); 430 436 return false; 431 437 } … … 471 477 if (output == NULL) { 472 478 eLog() << Verbose(0) << "Unable to open output energy file " << line.str() << "!" << endl; 479 performCriticalExit(); 473 480 return false; 474 481 } … … 500 507 if (output == NULL) { 501 508 eLog() << Verbose(0) << "Unable to open output matrix file " << line.str() << "!" << endl; 509 performCriticalExit(); 502 510 return false; 503 511 } … … 656 664 if (j > RowCounter[MatrixCounter]) { 657 665 eLog() << Verbose(0) << "Current force index " << j << " is greater than " << RowCounter[MatrixCounter] << "!" << endl; 666 performCriticalExit(); 658 667 return false; 659 668 } … … 793 802 if (j > RowCounter[MatrixCounter]) { 794 803 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(); 795 805 return false; 796 806 } … … 800 810 if (k > ColumnCounter[MatrixCounter]) { 801 811 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(); 802 813 return false; 803 814 } … … 852 863 if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 853 864 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(); 854 866 return false; 855 867 } … … 869 881 if (n > ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 870 882 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(); 871 884 return false; 872 885 } -
src/periodentafel.cpp
r3a0b38 rebbd3d 313 313 314 314 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; 316 316 317 317 return status; -
src/stackclass.hpp
r3a0b38 rebbd3d 72 72 return true; 73 73 } 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; 75 75 return false; 76 76 } … … 87 87 Walker = StackList[CurrentFirstEntry]; 88 88 if (Walker == NULL) 89 eLog() << Verbose( 0) << "ERROR:Stack's field is empty!" << endl;89 eLog() << Verbose(1) << "Stack's field is empty!" << endl; 90 90 StackList[CurrentFirstEntry] = NULL; 91 91 if (CurrentFirstEntry != CurrentLastEntry) { // hasn't last item been popped as well? … … 96 96 } 97 97 } else 98 eLog() << Verbose( 0) << "ERROR:Stack is empty!" << endl;98 eLog() << Verbose(1) << "Stack is empty!" << endl; 99 99 return Walker; 100 100 }; … … 111 111 StackList[CurrentLastEntry] = NULL; 112 112 if (Walker == NULL) 113 eLog() << Verbose( 0) << "ERROR:Stack's field is empty!" << endl;113 eLog() << Verbose(1) << "Stack's field is empty!" << endl; 114 114 NextFreeField = CurrentLastEntry; 115 115 if (CurrentLastEntry != CurrentFirstEntry) // has there been more than one item on stack 116 116 CurrentLastEntry = (CurrentLastEntry + (EntryCount-1)) % EntryCount; // step back from current free field to last (modulo does not work in -1, thus go EntryCount-1 instead) 117 117 } else { 118 eLog() << Verbose( 0) << "ERROR:Stack is empty!" << endl;118 eLog() << Verbose(1) << "Stack is empty!" << endl; 119 119 } 120 120 return Walker; … … 151 151 } while (i!=NextFreeField); 152 152 else 153 eLog() << Verbose( 0) << "ERROR:Stack is already empty!" << endl;153 eLog() << Verbose(1) << "Stack is already empty!" << endl; 154 154 if (found) { 155 155 NextFreeField = CurrentLastEntry; -
src/tesselation.cpp
r3a0b38 rebbd3d 48 48 //Log() << Verbose(5) << "Erasing point nr. " << Nr << "." << endl; 49 49 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; 51 51 node = NULL; 52 52 }; … … 153 153 } 154 154 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; 156 156 }; 157 157 … … 188 188 // get the two triangles 189 189 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; 191 191 return true; 192 192 } … … 226 226 i++; 227 227 } 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; 229 229 return true; 230 230 } … … 333 333 if (Counter < 3) 334 334 { 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(); 338 337 } 339 338 Log() << Verbose(0) << "." << endl; … … 409 408 } while (CrossPoint.NormSquared() < MYEPSILON); 410 409 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; 412 411 exit(255); 413 412 } … … 634 633 runner->second = NULL; 635 634 } 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; 637 636 } 638 637 Log() << Verbose(1) << "This envelope was written to file " << TriangleFilesWritten << " times(s)." << endl; … … 1174 1173 if (NewLines[j]->IsConnectedTo(BLS[0])) { 1175 1174 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; 1177 1176 return false; 1178 1177 } else … … 1191 1190 } 1192 1191 } 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; 1194 1193 return false; 1195 1194 } … … 1243 1242 } 1244 1243 ; 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 */ 1250 void 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 }; 1245 1258 1246 1259 /** Function tries to add line from current Points in BPS to BoundaryLineSet. … … 1365 1378 triangle->lines[i] = NULL; // free'd or not: disconnect 1366 1379 } 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; 1368 1381 } 1369 1382 … … 1418 1431 line->endpoints[i] = NULL; // free'd or not: disconnect 1419 1432 } 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; 1421 1434 } 1422 1435 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; 1424 1437 1425 1438 if (LinesOnBoundary.erase(line->Nr)) … … 1451 1464 * triangles exist which is the maximum for three points 1452 1465 */ 1453 int Tesselation::CheckPresenceOfTriangle(TesselPoint *Candidates[3]) { 1466 int Tesselation::CheckPresenceOfTriangle(TesselPoint *Candidates[3]) const 1467 { 1454 1468 int adjacentTriangleCount = 0; 1455 1469 class BoundaryPointSet *Points[3]; … … 1458 1472 // builds a triangle point set (Points) of the end points 1459 1473 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); 1461 1475 if (FindPoint != PointsOnBoundary.end()) { 1462 1476 Points[i] = FindPoint->second; … … 1471 1485 for (int j = i; j < 3; j++) { 1472 1486 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); 1474 1488 for (; (FindLine != Points[i]->lines.end()) && (FindLine->first == Points[j]->node->nr); FindLine++) { 1475 1489 TriangleMap *triangles = &FindLine->second->triangles; 1476 1490 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++) { 1478 1492 if (FindTriangle->second->IsPresentTupel(Points)) { 1479 1493 adjacentTriangleCount++; … … 1589 1603 } 1590 1604 } 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; 1592 1606 } 1593 1607 } … … 1700 1714 }; 1701 1715 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 */ 1725 bool 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 }; 1702 1859 1703 1860 /** This function finds a triangle to a line, adjacent to an existing one. … … 1766 1923 if (fabs(OldSphereCenter.ScalarProduct(&SearchDirection)) > HULLEPSILON) { 1767 1924 // 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; 1769 1926 } 1770 1927 … … 1777 1934 1778 1935 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; 1780 1937 return false; 1781 1938 } 1782 1939 Log() << Verbose(1) << "Third Points are "; 1783 1940 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 } 1787 1943 1788 1944 BoundaryLineSet *BaseRay = &Line; … … 1800 1956 1801 1957 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) { 1831 1966 AddTesselationPoint((*it)->point, 0); 1832 1967 AddTesselationPoint(BaseRay->endpoints[0]->node, 1); 1833 1968 AddTesselationPoint(BaseRay->endpoints[1]->node, 2); 1834 1969 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)) { 1838 1971 AddTesselationLine(TPS[0], TPS[1], 0); 1839 1972 AddTesselationLine(TPS[0], TPS[2], 1); … … 1841 1974 1842 1975 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; 1852 1984 } else { 1853 Log() << Verbose(1) << "WARNING:This triangle consisting of ";1985 eLog() << Verbose(2) << "This triangle consisting of "; 1854 1986 Log() << Verbose(0) << *(*it)->point << ", "; 1855 1987 Log() << Verbose(0) << *BaseRay->endpoints[0]->node << " and "; … … 1858 1990 result = false; 1859 1991 } 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 } 1867 2025 } 1868 2026 … … 1870 2028 BaseRay = BLS[0]; 1871 2029 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; 1873 2031 exit(255); 1874 2032 } … … 2011 2169 BaseLineNormal.Zero(); 2012 2170 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; 2014 2172 return 0.; 2015 2173 } … … 2051 2209 BaseLineNormal.Zero(); 2052 2210 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; 2054 2212 return NULL; 2055 2213 } … … 2087 2245 // check whether everything is in place to create new lines and triangles 2088 2246 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; 2090 2248 return NULL; 2091 2249 } 2092 2250 for (int j=0;j<4;j++) 2093 2251 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; 2095 2253 return NULL; 2096 2254 } 2097 2255 for (int j=0;j<2;j++) 2098 2256 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; 2100 2258 return NULL; 2101 2259 } … … 2173 2331 N[i] = LC->n[i]; 2174 2332 } 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; 2176 2334 return; 2177 2335 } 2178 2336 // 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) << "] :";2184 2337 for (int i=0;i<NDIM;i++) { 2185 2338 Nlower[i] = ((N[i]-1) >= 0) ? N[i]-1 : 0; 2186 2339 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; 2191 2343 2192 2344 for (LC->n[0] = Nlower[0]; LC->n[0] <= Nupper[0]; LC->n[0]++) … … 2280 2432 * @param *LC LinkedCell structure with neighbouring points 2281 2433 */ 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)2434 void 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 2283 2435 { 2284 2436 Vector CircleCenter; // center of the circle, i.e. of the band of sphere's centers … … 2318 2470 // test whether old center is on the band's plane 2319 2471 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; 2321 2473 OldSphereCenter.ProjectOntoPlane(&CirclePlaneNormal); 2322 2474 } … … 2328 2480 //Log() << Verbose(2) << "INFO: SearchDirection is " << SearchDirection << "." << endl; 2329 2481 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; 2331 2483 } 2332 2484 … … 2337 2489 //Log() << Verbose(2) << "INFO: Center cell is " << N[0] << ", " << N[1] << ", " << N[2] << " with No. " << LC->index << "." << endl; 2338 2490 } 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; 2340 2492 return; 2341 2493 } … … 2442 2594 } 2443 2595 } 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; 2445 2597 } 2446 2598 } else { … … 2533 2685 triangles->unique(); 2534 2686 } 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; 2536 2688 return NULL; 2537 2689 } … … 2544 2696 for (int i=0;i<3;i++) { 2545 2697 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; 2547 2699 } 2548 2700 //Log() << Verbose(2) << "List of triangle points:" << endl; … … 2563 2715 2564 2716 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."; 2566 2718 delete(triangles); 2567 2719 return NULL; … … 2597 2749 Log() << Verbose(2) << "Normal Vector of this back side is " << result->NormalVector << "." << endl; 2598 2750 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; 2600 2752 } 2601 2753 } … … 2699 2851 2700 2852 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; 2702 2854 return NULL; 2703 2855 } … … 2822 2974 ReferencePoint = PointRunner->second; 2823 2975 } 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; 2825 2977 return NULL; 2826 2978 } … … 2839 2991 LineRunner = TouchedLine.find(runner->second); 2840 2992 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; 2842 2994 } else if (!LineRunner->second) { 2843 2995 LineRunner->second = true; … … 2869 3021 } 2870 3022 } 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; 2872 3024 triangle = NULL; 2873 3025 } … … 2886 3038 LineRunner = TouchedLine.find(CurrentLine); 2887 3039 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; 2889 3041 else 2890 3042 LineRunner->second = true; … … 2904 3056 } 2905 3057 } 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; 2907 3059 } 2908 3060 … … 2982 3134 2983 3135 if (Point == NULL) { 2984 Log() << Verbose(1) << "ERROR:Point given is NULL." << endl;3136 eLog() << Verbose(1) << "Point given is NULL." << endl; 2985 3137 } else { 2986 3138 // go through its lines and insert all triangles … … 3014 3166 3015 3167 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; 3017 3169 return 0.; 3018 3170 } else … … 3024 3176 // get list of connected points 3025 3177 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; 3027 3179 return 0.; 3028 3180 } … … 3124 3276 triangle = GetPresentTriangle(TriangleCandidates); 3125 3277 if (triangle != NULL) { 3126 Log() << Verbose(1) << "WARNING:New triangle already present, skipping!" << endl;3278 eLog() << Verbose(2) << "New triangle already present, skipping!" << endl; 3127 3279 StartNode++; 3128 3280 MiddleNode++; … … 3433 3585 } 3434 3586 delete(DegeneratedTriangles); 3587 if (count > 0) 3588 LastTriangle = NULL; 3435 3589 3436 3590 Log() << Verbose(1) << "RemoveDegeneratedTriangles() removed " << count << " triangles:" << endl; … … 3462 3616 NearestBoundaryPoint = PointRunner->second; 3463 3617 } else { 3464 Log() << Verbose(1) << "ERROR:I cannot find the boundary point." << endl;3618 eLog() << Verbose(1) << "I cannot find the boundary point." << endl; 3465 3619 return; 3466 3620 } -
src/tesselation.hpp
r3a0b38 rebbd3d 170 170 virtual ~PointCloud(); 171 171 172 virtual const char * const GetName() const { return "unknown"; }; 172 173 virtual Vector *GetCenter() const { return NULL; }; 173 174 virtual TesselPoint *GetPoint() const { return NULL; }; … … 177 178 virtual void GoToFirst() const {}; 178 179 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; }; 181 182 }; 182 183 … … 205 206 206 207 void AddTesselationPoint(TesselPoint* Candidate, const int n); 208 void SetTesselationPoint(TesselPoint* Candidate, const int n) const; 207 209 void AddTesselationLine(class BoundaryPointSet *a, class BoundaryPointSet *b, const int n); 208 210 void AlwaysAddTesselationTriangleLine(class BoundaryPointSet *a, class BoundaryPointSet *b, const int n); … … 217 219 void FindStartingTriangle(const double RADIUS, const LinkedCell *LC); 218 220 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; 220 222 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; 222 224 class BoundaryTriangleSet * GetPresentTriangle(TesselPoint *Candidates[3]); 223 225 … … 281 283 282 284 private: 283 class BoundaryPointSet *TPS[3]; //this is a Storage for pointers to triangle points, this and BPS[2] needed due to AddLine restrictions285 mutable class BoundaryPointSet *TPS[3]; //this is a Storage for pointers to triangle points, this and BPS[2] needed due to AddLine restrictions 284 286 285 287 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; 286 290 }; 287 291 -
src/tesselationhelpers.cpp
r3a0b38 rebbd3d 77 77 78 78 if (fabs(m11) < MYEPSILON) 79 eLog() << Verbose( 0) << "ERROR:three points are colinear." << endl;79 eLog() << Verbose(1) << "three points are colinear." << endl; 80 80 81 81 center->x[0] = 0.5 * m12/ m11; … … 84 84 85 85 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; 87 87 88 88 gsl_matrix_free(A); … … 187 187 gamma = M_PI - SideA.Angle(&SideB); 188 188 //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 } 191 192 192 193 Center->Zero(); … … 224 225 // test whether new center is on the parameter circle's plane 225 226 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; 227 228 helper.ProjectOntoPlane(&CirclePlaneNormal); 228 229 } … … 230 231 // test whether the new center vector has length of CircleRadius 231 232 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; 233 234 alpha = helper.Angle(&OldSphereCenter); 234 235 // make the angle unique by checking the halfplanes/search direction … … 461 462 for (int i=0;i<3;i++) 462 463 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 464 468 LineMap::const_iterator FindLine; 465 469 pair<LineMap::const_iterator,LineMap::const_iterator> FindPair; … … 491 495 Vector BaseLineVector, OrthogonalVector, helper; 492 496 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; 494 498 //return false; 495 499 exit(1); … … 574 578 } 575 579 } 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] << "," 577 581 << LC->n[2] << " is invalid!" << endl; 578 582 } … … 630 634 } 631 635 } 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] << "," 633 637 << LC->n[2] << " is invalid!" << endl; 634 638 } … … 738 742 } 739 743 } else { 740 eLog() << Verbose( 0) << "ERROR:Given vrmlfile is " << vrmlfile << "." << endl;744 eLog() << Verbose(1) << "Given vrmlfile is " << vrmlfile << "." << endl; 741 745 } 742 746 delete(center); … … 752 756 { 753 757 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 } 768 775 }; 769 776 … … 808 815 *rasterfile << "9\n# terminating special property\n"; 809 816 } else { 810 eLog() << Verbose( 0) << "ERROR:Given rasterfile is " << rasterfile << "." << endl;817 eLog() << Verbose(1) << "Given rasterfile is " << rasterfile << "." << endl; 811 818 } 812 819 IncludeSphereinRaster3D(rasterfile, Tess, cloud); … … 825 832 *tecplot << "TITLE = \"3D CONVEX SHELL\"" << endl; 826 833 *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 } 830 842 *tecplot << "\", N=" << TesselStruct->PointsOnBoundary.size() << ", E=" << TesselStruct->TrianglesOnBoundary.size() << ", DATAPACKING=POINT, ZONETYPE=FETRIANGLE" << endl; 831 843 int i=0; -
src/vector.cpp
r3a0b38 rebbd3d 229 229 factor = Direction.ScalarProduct(PlaneNormal); 230 230 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; 232 232 return false; 233 233 } … … 253 253 return true; 254 254 } 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; 256 256 return false; 257 257 } … … 747 747 x[i] = C.x[i]; 748 748 } 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; 750 750 } 751 751 }; … … 799 799 x2.SubtractVector(y2); 800 800 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; 802 802 return false; 803 803 } … … 833 833 Zero(); 834 834 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; 836 836 return false; 837 837 } -
tests/Tesselations/1_2-dimethoxyethane/NonConvexEnvelope-1_2-dimethoxyethane.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H10_ H15_ H16", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="1_2-dimethoxyethane", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 9.6489 7.0567 6.6101 2 5 5 6.8975 7.0567 5.9709 2 -
tests/Tesselations/1_2-dimethylbenzene/NonConvexEnvelope-1_2-dimethylbenzene.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- C07_ C08_ H09", N=14, E=25, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="1_2-dimethylbenzene", N=14, E=25, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 8.3296 6.7712 6.0321 3 5 5 8.3296 8.1534 6.0305 3 -
tests/Tesselations/2-methylcyclohexanone/NonConvexEnvelope-2-methylcyclohexanone.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H15_ H18_ H19", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="2-methylcyclohexanone", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 9.2731 9.0957 6.144 1 5 5 10.8392 7.1885 6.8694 0 -
tests/Tesselations/C16_0-Torus/NonConvexEnvelope-C16_0-Torus.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- C818_ C1839_ C1904", N=8208, E=16416, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="C16_0-Torus", N=8208, E=16416, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 57.0669 28.4968 10.0318 2 5 5 53.7124 30.5841 10.0363 2 -
tests/Tesselations/Makefile.am
r3a0b38 rebbd3d 2 2 1_2-dimethylbenzene.test \ 3 3 2-methylcyclohexanone.test \ 4 benzene.test \ 4 5 cholesterol.test \ 5 6 cluster.test \ -
tests/Tesselations/N_N-dimethylacetamide/NonConvexEnvelope-N_N-dimethylacetamide.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- C03_ O06_ H12", N=11, E=18, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="N_N-dimethylacetamide", N=11, E=18, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 6.4232 7.1074 8.3151 3 5 5 6.5832 7.8674 9.2351 1 -
tests/Tesselations/cholesterol/NonConvexEnvelope-cholesterol.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H49_ H50_ H51", N=44, E=86, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="cholesterol", N=44, E=86, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 19.4519 9.7871 8.0824 1 5 5 12.9054 5.0485 9.284 1 -
tests/Tesselations/cluster/NonConvexEnvelope-cluster.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- O4864_ O4865_ O5836", N=434, E=782, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="cluster", N=434, E=782, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 59.3961 67.9193 74.1709 1 5 5 60.8097 66.4885 71.9891 1 -
tests/Tesselations/cycloheptane/NonConvexEnvelope-cycloheptane.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H08_ H12_ H13", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="cycloheptane", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 5 8.6586 6.1486 0 5 5 5.8635 8.4046 7.6783 0 -
tests/Tesselations/dimethyl_bromomalonate/NonConvexEnvelope-dimethyl_bromomalonate.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H12_ H13_ H14", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="dimethyl_bromomalonate", N=12, E=20, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 8.1538 5 6.6665 1 5 5 6.8226 7.583 6.9158 4 -
tests/Tesselations/glucose/NonConvexEnvelope-glucose.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- C09_ O12_ H17", N=19, E=34, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="glucose", N=19, E=34, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 9.5866 5 7.577 1 5 5 8.4149 7.4116 8.4659 1 -
tests/Tesselations/heptan/NonConvexEnvelope-heptan.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H07_ H08_ H11", N=16, E=28, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="heptan", N=16, E=28, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 9.6377 5 6.78 0 5 5 9.6377 5 5 0 -
tests/Tesselations/isoleucine/NonConvexEnvelope-isoleucine.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H20_ H21_ H22", N=17, E=30, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="isoleucine", N=17, E=30, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 10.8909 7.216 6.6663 5 5 5 9.4763 5.271 6.3191 1 -
tests/Tesselations/neohexane/NonConvexEnvelope-neohexane.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H10_ H15_ H20", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="neohexane", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 7.1525 6.2503 8.0589 1 5 5 7.1525 8.0303 8.0578 1 -
tests/Tesselations/proline/NonConvexEnvelope-proline.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- H10_ H13_ H17", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="proline", N=13, E=22, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 9.2095 7.1856 6.6953 4 5 5 9.3187 7.948 7.6262 2 -
tests/Tesselations/putrescine/NonConvexEnvelope-putrescine.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- N06_ H17_ H18", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="putrescine", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 10.8857 5.9511 6.2964 1 5 5 5.5257 8.9311 6.4164 1 -
tests/Tesselations/round_cluster/NonConvexEnvelope-round_cluster.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- O633_ O960_ O1013", N=467, E=930, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="round_cluster", N=467, E=930, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 41.4883 31.1464 29.9646 2 5 5 35.0153 37.6127 31.0313 4 -
tests/Tesselations/tartaric_acid/NonConvexEnvelope-tartaric_acid.dat
r3a0b38 rebbd3d 1 1 TITLE = "3D CONVEX SHELL" 2 2 VARIABLES = "X" "Y" "Z" "U" 3 ZONE T=" 0- C05_ O09_ H12", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE3 ZONE T="tartaric_acid", N=14, E=24, DATAPACKING=POINT, ZONETYPE=FETRIANGLE 4 4 10.156 6.9295 6.2926 4 5 5 8.5078 5.7627 5 1
Note:
See TracChangeset
for help on using the changeset viewer.