Changeset f01769 for src/Tesselation


Ignore:
Timestamp:
Jul 24, 2015, 4:44:34 PM (10 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, 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:
a58c16
Parents:
1259df
git-author:
Frederik Heber <heber@…> (06/01/15 16:57:36)
git-committer:
Frederik Heber <heber@…> (07/24/15 16:44:34)
Message:

Replaced World::getAtom() wherever possible by const version.

  • some AtomSet member functions now have const atom ptr instead of atom ptr.
  • molecule can return const and non-const AtomSet.
  • added FromIdToConstAtom to allow iterate through atoms in molecule (which are stored by id, not by ptr) in const fashion.
  • in molecule::isInMolecule() is now const, ::CopyMolecule..() is non-const (because copying involves father atom who is stored non-const).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/Tesselation/boundary.cpp

    r1259df rf01769  
    173173 * and looks at triples: if the middle has less a distance than the allowed maximum height of the triangle formed by the plane's
    174174 * center and first and last point in the triple, it is thrown out.
     175 *
     176 * \todo When storing const ptrs in tesselation structures, remove const_cast
     177 *
    175178 * \param *out output stream for debugging
    176179 * \param *mol molecule structure representing the cluster
     
    206209    // 3b. construct set of all points, transformed into cylindrical system and with left and right neighbours
    207210    // Boundaries stores non-const TesselPoint ref, hence we need iterator here
    208     for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) {
     211    for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
    209212      ProjectedVector = (*iter)->getPosition() - (MolCenter);
    210213      ProjectedVector.ProjectOntoPlane(AxisVector);
     
    222225      }
    223226    LOG(1, "Inserting " << **iter << ": (r, alpha) = (" << radius << "," << angle << "): " << ProjectedVector);
    224       BoundaryTestPair = BoundaryPoints[axis].insert(BoundariesPair(angle, TesselPointDistancePair (radius, (*iter))));
     227      BoundaryTestPair = BoundaryPoints[axis].insert(
     228          BoundariesPair(angle, TesselPointDistancePair (radius, const_cast<atom *>(*iter))));
    225229      if (!BoundaryTestPair.second) { // same point exists, check first r, then distance of original vectors to center of gravity
    226230        LOG(2, "Encountered two vectors whose projection onto axis " << axis << " is equal: ");
     
    230234        if ((ProjectedVectorNorm - BoundaryTestPair.first->second.first) > MYEPSILON) {
    231235          BoundaryTestPair.first->second.first = ProjectedVectorNorm;
    232           BoundaryTestPair.first->second.second = (*iter);
     236          BoundaryTestPair.first->second.second = const_cast<atom *>(*iter);
    233237          LOG(2, "Keeping new vector due to larger projected distance " << ProjectedVectorNorm << ".");
    234238        } else if (fabs(ProjectedVectorNorm - BoundaryTestPair.first->second.first) < MYEPSILON) {
     
    237241          helper = BoundaryTestPair.first->second.second->getPosition() - (MolCenter);
    238242          if (helper.NormSquared() < oldhelperNorm) {
    239             BoundaryTestPair.first->second.second = (*iter);
     243            BoundaryTestPair.first->second.second = const_cast<atom *>(*iter);
    240244            LOG(2, "Keeping new vector due to larger distance to molecule center " << helper.NormSquared() << ".");
    241245          } else {
Note: See TracChangeset for help on using the changeset viewer.