Changeset 0763ce for src/Graph


Ignore:
Timestamp:
Feb 10, 2015, 2:09:38 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:
c17aa8
Parents:
cd5aa0
git-author:
Frederik Heber <heber@…> (01/25/15 13:31:53)
git-committer:
Frederik Heber <heber@…> (02/10/15 14:09:38)
Message:

Added BondGraph::checkBondDegree, FragmentationAction only resets degrees when incorrect.

  • this fixes the bug where the molecular dynamics actions would flip the double bonds in an aromatic ring during the simulation steps because the bond degrees are reset even though the bond graph is present and should be re-used.
Location:
src/Graph
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Graph/BondGraph.cpp

    rcd5aa0 r0763ce  
    473473}
    474474
     475bool BondGraph::checkBondDegree(const deltaatoms_t &allatoms) const
     476{
     477  deltaatoms_t deltaatoms;
     478  return (gatherAllDeltaAtoms(allatoms, deltaatoms) == 0);
     479}
     480
    475481
    476482int BondGraph::calculateBondDegree(const deltaatoms_t &allatoms) const
  • src/Graph/BondGraph.hpp

    rcd5aa0 r0763ce  
    359359  }
    360360
     361  /** Checks whether the bond degree for each atom on the set matches with its valency.
     362   *
     363   * @param Set Range with atoms
     364   * @return true - bond degrees match valency, false - bond degree correction is needed
     365   */
     366  template <class container_type,
     367            class iterator_type,
     368            class const_iterator_type>
     369  bool checkBondDegree(
     370      AtomSetMixin<container_type,iterator_type,const_iterator_type> &Set) const
     371  {
     372    std::set<atom *> allatoms;
     373    for(iterator_type AtomRunner = Set.begin(); AtomRunner != Set.end(); ++AtomRunner)
     374      allatoms.insert(*AtomRunner);
     375    return checkBondDegree(allatoms);
     376  }
     377
    361378  /** correct bond degree by comparing valence and bond degree.
    362379   * correct Bond degree of each bond by checking both bond partners for a mismatch between valence and current sum of bond degrees,
     
    472489  }
    473490
     491  bool checkBondDegree(const std::set<atom *> &allatoms) const;
     492
    474493  /** Calculates the bond degree for each atom on the set.
    475494   *
Note: See TracChangeset for help on using the changeset viewer.