Changeset 90c4280
- Timestamp:
- Jul 15, 2010, 3:30:55 PM (14 years ago)
- 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:
- 61d655e
- Parents:
- c084cc
- Location:
- src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/World.cpp
rc084cc r90c4280 9 9 10 10 #include "World.hpp" 11 #include "Patterns/ObservedContainer_impl.hpp" 11 12 #include <functional> 12 13 13 14 #include "atom.hpp" … … 28 29 29 30 #include "Patterns/Singleton_impl.hpp" 31 #include "Patterns/ObservedContainer_impl.hpp" 30 32 31 33 using namespace std; … … 485 487 } 486 488 489 /************************** Selection of Atoms and molecules ******************/ 490 491 // Atoms 492 493 void World::clearAtomSelection(){ 494 selectedAtoms.clear(); 495 } 496 497 void World::selectAtom(atom *atom){ 498 ASSERT(atom,"Invalid pointer in selection of atom"); 499 selectedAtoms[atom->getId()]=atom; 500 } 501 502 void World::selectAtom(atomId_t id){ 503 ASSERT(atoms.count(id),"Atom Id selected that was not in the world"); 504 selectedAtoms[id]=atoms[id]; 505 } 506 507 void World::selectAllAtoms(AtomDescriptor descr){ 508 internal_AtomIterator begin = getAtomIter_internal(descr); 509 internal_AtomIterator end = atomEnd_internal(); 510 void (World::*func)(atom*) = &World::selectAtom; // needed for type resolution of overloaded function 511 for_each(begin,end,bind1st(mem_fun(func),this)); // func is select... see above 512 } 513 514 void World::selectAtomsOfMolecule(molecule *_mol){ 515 ASSERT(_mol,"Invalid pointer to molecule in selection of Atoms of Molecule"); 516 // need to make it const to get the fast iterators 517 const molecule *mol = _mol; 518 void (World::*func)(atom*) = &World::selectAtom; // needed for type resolution of overloaded function 519 for_each(mol->begin(),mol->end(),bind1st(mem_fun(func),this)); // func is select... see above 520 } 521 522 void World::selectAtomsOfMolecule(moleculeId_t id){ 523 ASSERT(molecules.count(id),"No molecule with the given id upon Selection of atoms from molecule"); 524 selectAtomsOfMolecule(molecules[id]); 525 } 526 527 // Molecules 528 529 void World::clearMoleculeSelection(){ 530 selectedMolecules.clear(); 531 } 532 533 void World::selectMolecule(molecule *mol){ 534 ASSERT(mol,"Invalid pointer to molecule in selection"); 535 selectedMolecules[mol->getId()]=mol; 536 } 537 538 void World::selectMolecule(moleculeId_t id){ 539 ASSERT(molecules.count(id),"Molecule Id selected that was not in the world"); 540 selectedMolecules[id]=molecules[id]; 541 } 542 543 void World::selectAllMoleculess(MoleculeDescriptor descr){ 544 internal_MoleculeIterator begin = getMoleculeIter_internal(descr); 545 internal_MoleculeIterator end = moleculeEnd_internal(); 546 void (World::*func)(molecule*) = &World::selectMolecule; // needed for type resolution of overloaded function 547 for_each(begin,end,bind1st(mem_fun(func),this)); // func is select... see above 548 } 549 550 void World::selectMoleculeOfAtom(atom *atom){ 551 ASSERT(atom,"Invalid atom pointer in selection of MoleculeOfAtom"); 552 molecule *mol=atom->getMolecule(); 553 // the atom might not be part of a molecule 554 if(mol){ 555 selectMolecule(mol); 556 } 557 } 558 559 void World::selectMoleculeOfAtom(atomId_t id){ 560 ASSERT(atoms.count(id),"No such atom with given ID in selection of Molecules of Atom");\ 561 selectMoleculeOfAtom(atoms[id]); 562 } 563 487 564 /******************************* Singleton Stuff **************************/ 488 565 … … 494 571 ExitFlag(0), 495 572 atoms(this), 573 selectedAtoms(this), 496 574 currAtomId(0), 497 575 lastAtomPoolSize(0), 498 576 numAtomDefragSkips(0), 499 577 molecules(this), 578 selectedMolecules(this), 500 579 currMoleculeId(0), 501 580 molecules_deprecated(new MoleculeListClass(this)) -
src/World.hpp
rc084cc r90c4280 222 222 * All these iterators are observed to track changes. 223 223 * There is a corresponding protected section with unobserved iterators, 224 * which ca be used internally when the extra speed is needed224 * which can be used internally when the extra speed is needed 225 225 */ 226 226 … … 239 239 typedef SelectiveIterator<molecule*,MoleculeSet,MoleculeDescriptor> MoleculeIterator; 240 240 241 /** 242 * returns an iterator over all Molecules matching a given descriptor. 243 * This iterator is observed, so don't keep it around unnecessary to 244 * avoid unintended blocking. 245 */ 241 246 MoleculeIterator getMoleculeIter(MoleculeDescriptor descr); 242 247 MoleculeIterator getMoleculeIter(); 243 248 244 249 MoleculeIterator moleculeEnd(); 250 251 /******** Selections of molecules and Atoms *************/ 252 void clearAtomSelection(); 253 void selectAtom(atom*); 254 void selectAtom(atomId_t); 255 void selectAllAtoms(AtomDescriptor); 256 void selectAtomsOfMolecule(molecule*); 257 void selectAtomsOfMolecule(moleculeId_t); 258 259 void clearMoleculeSelection(); 260 void selectMolecule(molecule*); 261 void selectMolecule(moleculeId_t); 262 void selectAllMoleculess(MoleculeDescriptor); 263 void selectMoleculeOfAtom(atom*); 264 void selectMoleculeOfAtom(atomId_t); 245 265 246 266 protected: … … 311 331 312 332 AtomSet atoms; 333 AtomSet selectedAtoms; 313 334 typedef std::set<std::pair<atomId_t, atomId_t> > atomIdPool_t; 314 335 /** … … 323 344 324 345 MoleculeSet molecules; 346 MoleculeSet selectedMolecules; 325 347 typedef std::set<std::pair<moleculeId_t, moleculeId_t> > moleculeIdPool_t; 326 348 /**
Note:
See TracChangeset
for help on using the changeset viewer.