Ignore:
Timestamp:
Feb 17, 2012, 3:24:18 PM (13 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:
7d46e3
Parents:
3867a7
git-author:
Frederik Heber <heber@…> (01/06/12 14:37:36)
git-committer:
Frederik Heber <heber@…> (02/17/12 15:24:18)
Message:

Modified IdPool implementation to give either unique or continuous ids.

  • added two class uniqueId and continuousId that get the id type via a template and contain a getNextId_impl(). Also, contains typedef is is_IdPool_trait:
    • uniqueId always return a greater id.
    • continuousId implements the old way.
  • IdPool is now based on two templates, the second is the template that is inherited and its contained function used in getNextId().
  • for atoms the id is the sole identifier for which we can guarantee uniqueness. For molecules uniqueness does not make sense.
  • updated World's documentation on its id pools.
  • TESTFIX: Filling/FillVoidWithMolecule - both changed because the order of the ids has changed. In one case the bonding id flipped, in the other one atom changed places in .xyz file. (Actually, it's surprising that this is the only glitch occuring due to the changing of the id policy).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/documentation/constructs/world.dox

    r3867a7 rb97a60  
    112112 * \paragraph world-internals-notes-idpool
    113113 *
    114  * The World has an idpool to manage the ids of atoms and molecules, i.e. such
    115  * that they are:
    116  * -# unique
    117  * -# not loosely spread over the whole range of possible, but tightly packed
     114 * The World has an idpool to manage the ids of atoms and molecules. The IdPool
     115 * inherits policies, such that ids are given in a unique (uniqueId) or
     116 * continuous (continousId) fashion.
     117 * The id of an atom is the sole identifier for which we can guarantee
     118 * uniqueness. Due to undo and redo actions the memory address is not a good
     119 * identifier. This is however required for FormatParser's that need
     120 * to store their additionalAtomData at program exit and have to safely identify
     121 * the data with its atoms. This can only be accomplished via the id. Hence,
     122 * we use the unique policy there.
     123 * The id of a molecule however is more of a convenience, to distinguish it from
     124 * the currently present others. A molecule may change very often and it is also
     125 * a compound structure that may change slightly (when a new bond to another atom
     126 * occurs). Thus, the concept of the id as a unique identifier does not make
     127 * sense. Hence, we use the continuous policy here.
    118128 *
    119  * For the latter to work we have a class IdPool that manages the ids and
     129 * Note that IdPool::reserveId() has to ascertain that we may sweep through ids
     130 * available to (undone) AtomRemoveAction or (redone) AtomAddAction in sublinear
     131 * time. For this to work we have a class IdPool that manages the ids and
    120132 * defragments the pool from time to time by combining ranges of released ids.
    121133 *
    122  * \date 2011-10-31
     134 * \date 2012-01-06
    123135 *
    124136 */
Note: See TracChangeset for help on using the changeset viewer.