Changeset e2c2b1 for src/World.hpp


Ignore:
Timestamp:
Feb 7, 2016, 5:57:03 AM (9 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:
50c45f
Parents:
69a420
git-author:
Frederik Heber <heber@…> (12/14/15 09:57:37)
git-committer:
Frederik Heber <heber@…> (02/07/16 05:57:03)
Message:

World's ObservedContainer no longer observe.

  • This requires CodePatterns 1.3.1 from now on.
  • I had misunderstood what Till had planed with these ObservedContainers for a long time: I though they would cause an OBSERVE signal for every iterator step but this is not the case. Rather they accumulate all OBSERVE signals to have them fire AFTER the loop is done. This is achieved through the depth count of the observer protectors.
  • Sadly, this runs against what we do with the lastchangedatom. We need the information right away as we the Observer/Observable stuff does not transport any information and always updating all is way too costly.
  • Hence, in CodePatterns we have implemented an UnobservedIterator which is used in ObservedContainer and does not cause any OBSERVE signals.
  • The source of the problem was createAtom() in a loop over selectedAtoms and these atoms not getting created (w.r.t QtInstanceBoard) before the molecule's got note of it (cause they are at depth 1).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/World.hpp

    r69a420 re2c2b1  
    105105
    106106  // Types for Atom and Molecule structures
    107   typedef ObservedContainer< AtomSTLSet > AtomSet;
    108   typedef ObservedContainer< MoleculeSTLSet > MoleculeSet;
     107  typedef ObservedContainer< AtomSTLSet, UnobservedIterator<AtomSTLSet> > AtomSet;
     108  typedef ObservedContainer< MoleculeSTLSet, UnobservedIterator<MoleculeSTLSet> > MoleculeSet;
    109109
    110110  typedef ATOMSET(std::vector) AtomComposite;
Note: See TracChangeset for help on using the changeset viewer.