Ignore:
Timestamp:
Feb 24, 2011, 6:51:32 PM (15 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, Candidate_v1.7.0, Candidate_v1.7.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:
a2bdbe
Parents:
c0d9eb
git-author:
Frederik Heber <heber@…> (02/24/11 14:41:13)
git-committer:
Frederik Heber <heber@…> (02/24/11 18:51:32)
Message:

BondedParticleInfo now has vector<BondList>

  • vector<BondList> ListOfBonds is private, getter for (non-)const access.
  • Access everywhere to ListOfBonds replaced by respective getter.
  • Access is as of now always to time step zero.
  • greatest impact is on molecule... files, and ListOfBondsUnitTest.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/atom_bondedparticle.cpp

    rc0d9eb r9d83b6  
    2727#include "CodePatterns/Log.hpp"
    2828#include "CodePatterns/Verbose.hpp"
     29#include "WorldTime.hpp"
    2930
    3031/** Constructor of class BondedParticle.
     
    3233BondedParticle::BondedParticle()
    3334{
     35  ListOfBonds.push_back(BondList());
    3436};
    3537
     
    3840BondedParticle::~BondedParticle()
    3941{
    40   BondList::const_iterator Runner;
    41   while (!ListOfBonds.empty()) {
    42     Runner = ListOfBonds.begin();
    43     removewithoutcheck(*Runner);
     42  BondList::iterator Runner;
     43  for (std::vector<BondList>::iterator iter = ListOfBonds.begin();
     44      !ListOfBonds.empty();
     45      iter = ListOfBonds.begin()) {
     46    while (!(*iter).empty()) {
     47      Runner = (*iter).begin();
     48      removewithoutcheck(*Runner);
     49    }
     50    ListOfBonds.erase(iter);
    4451  }
    4552};
     
    5865void BondedParticle::OutputBondOfAtom() const
    5966{
     67  const BondList& ListOfBonds = getListOfBonds();
    6068  DoLog(4) && (Log() << Verbose(4) << "Atom " << getName() << "/" << nr << " with " << ListOfBonds.size() << " bonds: " << endl);
    6169  int TotalDegree = 0;
     
    7280void BondedParticle::OutputAdjacency(ofstream * const AdjacencyFile) const
    7381{
     82  const BondList& ListOfBonds = getListOfBonds();
    7483  *AdjacencyFile << nr << "\t";
    7584  for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); (++Runner))
     
    8493void BondedParticle::OutputBonds(ofstream * const BondFile) const
    8594{
     95  const BondList& ListOfBonds = getListOfBonds();
    8696  for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); (++Runner))
    8797    if (nr < (*Runner)->GetOtherAtom(this)->nr)
     
    113123  if (Binder != NULL) {
    114124    if (Binder->Contains(this)) {
     125      BondList& ListOfBonds = getListOfBonds();
    115126      ListOfBonds.push_back(Binder);
    116127      status = true;
     
    125136
    126137/** Removes a given bond from atom::ListOfBonds.
     138 * @param _step time step to access
    127139 * \param *Binder bond to remove
    128140 */
     
    132144  if (Binder != NULL) {
    133145    if (Binder->Contains(this)) {
     146      BondList& ListOfBonds = getListOfBonds();
    134147      ListOfBonds.remove(Binder);
    135148      status = true;
     
    148161void BondedParticle::UnregisterAllBond()
    149162{
     163  BondList& ListOfBonds = getListOfBonds();
    150164  ListOfBonds.clear();
    151165};
     
    165179  //Log() << Verbose(3) << "Walker " << *this << ": " << (int)this->type->NoValenceOrbitals << " > " << NoBonds << "?" << endl;
    166180  if ((int)(getType()->getNoValenceOrbitals()) > NoBonds) { // we have a mismatch, check all bonding partners for mismatch
     181    const BondList& ListOfBonds = getListOfBonds();
    167182    for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); (++Runner)) {
    168183      OtherWalker = (*Runner)->GetOtherAtom(this);
     
    170185      //Log() << Verbose(3) << "OtherWalker " << *OtherWalker << ": " << (int)OtherWalker->type->NoValenceOrbitals << " > " << OtherNoBonds << "?" << endl;
    171186      if ((int)(OtherWalker->getType()->getNoValenceOrbitals()) > OtherNoBonds) { // check if possible candidate
    172         if ((CandidateBond == NULL) || (ListOfBonds.size() > OtherWalker->ListOfBonds.size())) { // pick the one with fewer number of bonds first
     187        const BondList& OtherListOfBonds = OtherWalker->getListOfBonds();
     188        if ((CandidateBond == NULL) || (ListOfBonds.size() > OtherListOfBonds.size())) { // pick the one with fewer number of bonds first
    173189          CandidateBond = (*Runner);
    174190          //Log() << Verbose(3) << "New candidate is " << *CandidateBond << "." << endl;
     
    194210{
    195211  int NoBonds = 0;
     212  const BondList& ListOfBonds = getListOfBonds();
    196213  for (BondList::const_iterator Runner = ListOfBonds.begin();
    197214      Runner != ListOfBonds.end();
     
    209226  bool status = false;
    210227
    211   for (BondList::iterator runner = ListOfBonds.begin(); runner != ListOfBonds.end(); runner++) {
     228  const BondList& ListOfBonds = getListOfBonds();
     229  for (BondList::const_iterator runner = ListOfBonds.begin(); runner != ListOfBonds.end(); runner++) {
    212230    status = status || ((*runner)->Contains(BondPartner));
    213231  }
Note: See TracChangeset for help on using the changeset viewer.