Ignore:
Timestamp:
Sep 12, 2016, 11:48:36 PM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, 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_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, GeometryObjects, Gui_displays_atomic_force_velocity, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, Ubuntu_1604_changes, stable
Children:
0983e6
Parents:
450adf
git-author:
Frederik Heber <heber@…> (06/30/14 09:35:42)
git-committer:
Frederik Heber <heber@…> (09/12/16 23:48:36)
Message:

SphericalPointDistribution is now working with bond degree weights.

  • recurseMatching() now works on IndexTupleList_t.
  • also rewrote calculatePairwiseDistances() and calculateErrorOfMatching().
  • L1THRESHOLD in recurseMatching() moved over to class body.
  • increased verbosity level of ...Matching() functions by one, added note on eventually chosen matching and why.
  • we assert that bestL2 is not too large.
  • FIX: calculateErrorOfMatching() did not use absolute value of gap for L1 error.
  • TESTFIX: Using limited accuracy on point coordinates.
  • TESTS: Regresssion test FragmentMolecule-cycles working again.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Exporters/SphericalPointDistribution.hpp

    r450adf r653cea  
    8181  //!> precalculated value for root of 3
    8282  static const double SQRT_3;
     83  //!> threshold for L1 error below which matching is immediately acceptable
     84  static const double L1THRESHOLD;
     85  //!> threshold for L2 error below which matching is acceptable
     86  static const double L2THRESHOLD;
    8387
    8488  //!> typedef for a full rotation specification consisting of axis and angle.
     
    9599  //!> typedef for a Vector of positions with weights
    96100  typedef std::vector< std::pair<Vector, int> > WeightedVectorArray_t;
     101  //!> typedef for a vector of degrees (or integral weights)
     102  typedef std::vector<unsigned int> WeightsArray_t;
    97103
    98104  //!> amplitude up to which deviations in checks of rotations are tolerated
     
    104110
    105111  static std::pair<double, double> calculateErrorOfMatching(
    106       const std::vector<Vector> &_old,
    107       const std::vector<Vector> &_new,
    108       const IndexList_t &_Matching);
     112      const VectorArray_t &_old,
     113      const VectorArray_t &_new,
     114      const IndexTupleList_t &_Matching);
    109115
    110116  static Polygon_t removeMatchingPoints(
     
    116122    bool foundflag;
    117123    double bestL2;
    118     IndexList_t bestmatching;
     124    IndexTupleList_t bestmatching;
    119125    VectorArray_t oldpoints;
    120126    VectorArray_t newpoints;
     127    WeightsArray_t weights;
    121128  };
    122129
    123130  static void recurseMatchings(
    124131      MatchingControlStructure &_MCS,
    125       IndexList_t &_matching,
     132      IndexTupleList_t &_matching,
    126133      IndexList_t _indices,
    127       unsigned int _matchingsize);
     134      WeightsArray_t &_remainingweights,
     135      WeightsArray_t::iterator _remainiter,
     136      const unsigned int _matchingsize
     137      );
    128138
    129139  static IndexList_t findBestMatching(
Note: See TracChangeset for help on using the changeset viewer.