Changeset 6613ec for src/boundary.cpp


Ignore:
Timestamp:
Apr 21, 2010, 12:07:01 PM (16 years ago)
Author:
Frederik Heber <heber@…>
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:
a67d19
Parents:
bc84ffc
git-author:
Frederik Heber <heber@…> (04/21/10 11:51:53)
git-committer:
Frederik Heber <heber@…> (04/21/10 12:07:01)
Message:

Rewrite of tesselation: treatment of degenerated triangles and polygons

several tricks have been necessary to make it work for heptane:

  • AddDegeneratedTriangle() is not used, instead AddCandidateTriangle() gets told which OptCenter to use, i.e. which triangle side to add
  • afterwards, in the case of a polygon (multiple candidates for a baseline) we have to set the candidate of internal edges in the polygon to the next point, such that AddTesselationLine() picks the right one
  • The we fill other open lines, needed in case of a degenerated triangle
  • If CheckDegeneracy() - which removes all candidates from the ListOfPoints, not just the first - results in true
  • Then we call AddCandidateTriangle() for the other side of it
  • and again in the case of a polygon, set the candidate for the internal edge accordingly.

Signed-off-by: Frederik Heber <heber@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/boundary.cpp

    rbc84ffc r6613ec  
    960960  bool freeLC = false;
    961961  bool status = false;
    962   CandidateForTesselation *baseline;
    963   LineMap::iterator testline;
     962  CandidateForTesselation *baseline = NULL;
    964963  bool OneLoopWithoutSuccessFlag = true;  // marks whether we went once through all baselines without finding any without two triangles
    965964  bool TesselationFailFlag = false;
    966   BoundaryTriangleSet *T = NULL;
    967965
    968966  if (TesselStruct == NULL) {
     
    997995
    998996    // 2b. find best candidate for each OpenLine
    999     for (CandidateMap::iterator Runner = TesselStruct->OpenLines.begin(); Runner != TesselStruct->OpenLines.end(); Runner++) {
    1000       baseline = Runner->second;
    1001       if (baseline->pointlist.empty()) {
    1002         T = (((baseline->BaseLine->triangles.begin()))->second);
    1003         Log() << Verbose(1) << "Finding best candidate for open line " << *baseline->BaseLine << " of triangle " << *T << endl;
    1004         TesselationFailFlag = TesselStruct->FindNextSuitableTriangle(*baseline, *T, RADIUS, LCList); //the line is there, so there is a triangle, but only one.
    1005       }
    1006     }
     997    TesselationFailFlag = TesselStruct->FindCandidatesforOpenLines(RADIUS, LCList);
    1007998
    1008999    // 2c. print OpenLines with candidates again
     
    10621053  StoreTrianglesinFile(mol, (const Tesselation *&)TesselStruct, filename, "");
    10631054
    1064   // correct degenerated polygons
    1065   TesselStruct->CorrectAllDegeneratedPolygons();
    1066 
    1067   // check envelope for consistency
    1068   status = CheckListOfBaselines(TesselStruct);
     1055//  // correct degenerated polygons
     1056//  TesselStruct->CorrectAllDegeneratedPolygons();
     1057//
     1058//  // check envelope for consistency
     1059//  status = CheckListOfBaselines(TesselStruct);
    10691060
    10701061  // write final envelope
Note: See TracChangeset for help on using the changeset viewer.