Changeset 0077b5 for src/boundary.cpp
- Timestamp:
- Aug 18, 2009, 8:42:39 AM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, Candidate_v1.7.0, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 99c484
- Parents:
- 093645
- File:
-
- 1 edited
-
src/boundary.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/boundary.cpp
r093645 r0077b5 620 620 } 621 621 622 //CalculateConcavityPerBoundaryPoint(out, TesselStruct); 623 StoreTrianglesinFile(out, mol, filename, "-first"); 624 622 625 // First step: RemovePointFromTesselatedSurface 623 626 PointRunner = TesselStruct->PointsOnBoundary.begin(); … … 641 644 } 642 645 643 644 // // print all lines 645 // LineRunner = TesselStruct->LinesOnBoundary.begin(); 646 // LineAdvance = LineRunner; // we need an advanced line, as the LineRunner might get removed 647 // *out << Verbose(1) << "Printing all boundary lines for debugging." << endl; 648 // while (LineRunner != TesselStruct->LinesOnBoundary.end()) { 649 // LineAdvance++; 650 // line = LineRunner->second; 651 // *out << Verbose(2) << "INFO: Current line is " << *line << "." << endl; 652 // if (LineAdvance != TesselStruct->LinesOnBoundary.end()) 653 // *out << Verbose(2) << "INFO: Next line will be " << *(LineAdvance->second) << "." << endl; 654 // LineRunner = LineAdvance; 655 // } 656 // 657 // // print all triangles 658 // TriangleRunner = TesselStruct->TrianglesOnBoundary.begin(); 659 // TriangleAdvance = TriangleRunner; // we need an advanced line, as the LineRunner might get removed 660 // *out << Verbose(1) << "Printing all boundary triangles for debugging." << endl; 661 // while (TriangleRunner != TesselStruct->TrianglesOnBoundary.end()) { 662 // TriangleAdvance++; 663 // *out << Verbose(2) << "INFO: Current triangle is " << *(TriangleRunner->second) << "." << endl; 664 // if (TriangleAdvance != TesselStruct->TrianglesOnBoundary.end()) 665 // *out << Verbose(2) << "INFO: Next triangle will be " << *(TriangleAdvance->second) << "." << endl; 666 // TriangleRunner = TriangleAdvance; 667 // } 646 //CalculateConcavityPerBoundaryPoint(out, TesselStruct); 647 StoreTrianglesinFile(out, mol, filename, "-second"); 668 648 669 649 // second step: PickFarthestofTwoBaselines … … 674 654 line = LineRunner->second; 675 655 *out << Verbose(1) << "INFO: Picking farthest baseline for line is " << *line << "." << endl; 676 if (LineAdvance != TesselStruct->LinesOnBoundary.end())677 656 // take highest of both lines 678 TesselStruct->PickFarthestofTwoBaselines(out, line); 657 if (TesselStruct->IsConvexRectangle(out, line) == NULL) 658 TesselStruct->PickFarthestofTwoBaselines(out, line); 679 659 LineRunner = LineAdvance; 680 660 } 681 661 682 // calculate remaining concavity 683 for (PointRunner = TesselStruct->PointsOnBoundary.begin(); PointRunner != TesselStruct->PointsOnBoundary.end(); PointRunner++) { 684 point = PointRunner->second; 685 *out << Verbose(1) << "INFO: Current point is " << *point << "." << endl; 686 point->value = 0; 687 for (LineMap::iterator LineRunner = point->lines.begin(); LineRunner != point->lines.end(); LineRunner++) { 688 line = LineRunner->second; 689 *out << Verbose(2) << "INFO: Current line of point " << *point << " is " << *line << "." << endl; 690 if (!line->CheckConvexityCriterion(out)) 691 point->value += 1; 692 } 693 } 694 695 // 4. Store triangles in tecplot file 696 if (filename != NULL) { 697 if (DoTecplotOutput) { 698 string OutputName(filename); 699 OutputName.append("_intermed"); 700 OutputName.append(TecplotSuffix); 701 ofstream *tecplot = new ofstream(OutputName.c_str()); 702 write_tecplot_file(out, tecplot, mol->TesselStruct, mol, 0); 703 tecplot->close(); 704 delete(tecplot); 705 } 706 if (DoRaster3DOutput) { 707 string OutputName(filename); 708 OutputName.append("_intermed"); 709 OutputName.append(Raster3DSuffix); 710 ofstream *rasterplot = new ofstream(OutputName.c_str()); 711 write_raster3d_file(out, rasterplot, mol->TesselStruct, mol); 712 rasterplot->close(); 713 delete(rasterplot); 714 } 715 } 662 //CalculateConcavityPerBoundaryPoint(out, TesselStruct); 663 StoreTrianglesinFile(out, mol, filename, "-third"); 716 664 717 665 // third step: IsConvexRectangle … … 735 683 } 736 684 685 CalculateConcavityPerBoundaryPoint(out, TesselStruct); 686 687 // end 688 *out << Verbose(0) << "End of ConvexizeNonconvexEnvelope" << endl; 689 return volume; 690 }; 691 692 /** Calculates the concavity for each of the BoundaryPointSet's in a Tesselation. 693 * Sets BoundaryPointSet::value equal to the number of connected lines that are not convex. 694 * \param *out output stream for debugging 695 * \param *TesselStruct pointer to Tesselation structure 696 */ 697 void CalculateConcavityPerBoundaryPoint(ofstream *out, class Tesselation *TesselStruct) 698 { 699 class BoundaryPointSet *point = NULL; 700 class BoundaryLineSet *line = NULL; 737 701 // calculate remaining concavity 738 for (Point Runner = TesselStruct->PointsOnBoundary.begin(); PointRunner != TesselStruct->PointsOnBoundary.end(); PointRunner++) {702 for (PointMap::iterator PointRunner = TesselStruct->PointsOnBoundary.begin(); PointRunner != TesselStruct->PointsOnBoundary.end(); PointRunner++) { 739 703 point = PointRunner->second; 740 704 *out << Verbose(1) << "INFO: Current point is " << *point << "." << endl; … … 747 711 } 748 712 } 749 713 }; 714 715 /** Stores triangles to file. 716 * \param *out output stream for debugging 717 * \param *mol molecule with atoms and bonds 718 * \param *filename prefix of filename 719 * \param *extraSuffix intermediate suffix 720 */ 721 void StoreTrianglesinFile(ofstream *out, molecule *mol, const char *filename, const char *extraSuffix) 722 { 750 723 // 4. Store triangles in tecplot file 751 724 if (filename != NULL) { 752 725 if (DoTecplotOutput) { 753 726 string OutputName(filename); 727 OutputName.append(extraSuffix); 754 728 OutputName.append(TecplotSuffix); 755 729 ofstream *tecplot = new ofstream(OutputName.c_str()); … … 760 734 if (DoRaster3DOutput) { 761 735 string OutputName(filename); 736 OutputName.append(extraSuffix); 762 737 OutputName.append(Raster3DSuffix); 763 738 ofstream *rasterplot = new ofstream(OutputName.c_str()); … … 767 742 } 768 743 } 769 770 // end771 *out << Verbose(0) << "End of ConvexizeNonconvexEnvelope" << endl;772 return volume;773 744 }; 774 745
Note:
See TracChangeset
for help on using the changeset viewer.
