Changeset 7daf73


Ignore:
Timestamp:
Feb 9, 2016, 7:11:37 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:
45b45d
Parents:
87cadb
git-author:
Frederik Heber <heber@…> (02/08/16 15:07:21)
git-committer:
Frederik Heber <heber@…> (02/09/16 07:11:37)
Message:

LinkedCell's LinkedList is now a vector and no longer a set.

  • this was causing conflicts in tests as the order of the atoms/TesselPoints in the LinkedList returned by getAllNeighbors() would depend on the order in memory and not on the geometrical ordering or on the ids.
  • TESTFIX: needed to replace use of insert() in (unit)tests by push_back. But all in all only Molecules Removal regression test's pdb file is affected.
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • src/Analysis/analysis_correlation.cpp

    r87cadb r7daf73  
    323323  }
    324324
    325   //!> typedef for an unsorted container, (output) compatible with STL algorithms
    326   typedef std::vector<const TesselPoint *> LinkedVector;
    327 
    328325  // create intersection (to know when to check for double-counting)
    329   LinkedVector intersected_atoms(atoms_second.size(), NULL);
    330   LinkedVector::iterator intersected_atoms_end =
     326  LinkedCell::LinkedList intersected_atoms(atoms_second.size(), NULL);
     327  LinkedCell::LinkedList::iterator intersected_atoms_end =
    331328      std::set_intersection(
    332329          atoms_first.begin(),atoms_first.end(),
    333330          atoms_second.begin(), atoms_second.end(),
    334331          intersected_atoms.begin());
    335   const LinkedCell::LinkedList intersected_atoms_set(intersected_atoms.begin(), intersected_atoms_end);
     332  intersected_atoms.erase(intersected_atoms_end, intersected_atoms.end());
     333  std::sort(intersected_atoms.begin(), intersected_atoms.end());
    336334
    337335  // get linked cell view
     
    340338  // convert second to _sorted_ set
    341339  LinkedCell::LinkedList atoms_second_set(atoms_second.begin(), atoms_second.end());
     340  std::sort(atoms_second_set.begin(), atoms_second_set.end());
    342341  LOG(2, "INFO: first set has " << atoms_first.size()
    343342      << " and second set has " << atoms_second_set.size() << " atoms.");
     
    353352        max_distance,
    354353        Walker->getPosition());
     354    std::sort(ListOfNeighbors.begin(), ListOfNeighbors.end());
    355355    LOG(2, "INFO: There are " << ListOfNeighbors.size() << " neighbors.");
    356356
     
    358358    // NOTE: STL algorithms do mostly not work on sorted container because reassignment
    359359    // of a value may also require changing its position.
    360     LinkedVector intersected_set(atoms_second.size(), NULL);
    361     LinkedVector::iterator intersected_end =
     360    LinkedCell::LinkedList intersected_set(atoms_second.size(), NULL);
     361    LinkedCell::LinkedList::iterator intersected_end =
    362362        std::set_intersection(
    363363            ListOfNeighbors.begin(),ListOfNeighbors.end(),
    364364            atoms_second_set.begin(), atoms_second_set.end(),
    365365            intersected_set.begin());
     366    intersected_set.erase(intersected_end, intersected_set.end());
     367    std::sort(intersected_set.begin(), intersected_set.end());
    366368    // count remaining elements
    367369    LOG(2, "INFO: Intersection with second set has " << int(intersected_end - intersected_set.begin()) << " elements.");
    368370    // we have some possible candidates, go through each
    369     for (LinkedVector::const_iterator neighboriter = intersected_set.begin();
     371    for (LinkedCell::LinkedList::const_iterator neighboriter = intersected_set.begin();
    370372        neighboriter != intersected_end;
    371373        ++neighboriter) {
    372374      const TesselPoint * const OtherWalker = (*neighboriter);
    373       LinkedCell::LinkedList::const_iterator equaliter = intersected_atoms_set.find(OtherWalker);
    374       if ((equaliter !=  intersected_atoms_set.end()) && (OtherWalker <= Walker)) {
     375      LinkedCell::LinkedList::const_iterator equaliter =
     376          std::lower_bound(intersected_atoms.begin(), intersected_atoms.end(), OtherWalker);
     377      if ((equaliter !=  intersected_atoms.end())
     378          && (*equaliter == OtherWalker) // cause we only check lower_bound not equal due to sort
     379          && (OtherWalker <= Walker)) {
    375380        // present in both sets, assure that we are larger
    376381        continue;
  • src/LinkedCell/LinkedCell.cpp

    r87cadb r7daf73  
    7272void LinkedCell::LinkedCell::addPoint(const TesselPoint *point)
    7373{
    74   insert(point);
     74  push_back(point);
    7575}
    7676
     
    8484void LinkedCell::LinkedCell::deletePoint(const TesselPoint *point)
    8585{
    86   LinkedList::iterator iter = find(point);
     86  LinkedList::iterator iter = std::find(begin(), end(), point);
    8787  ASSERT( iter != end(),
    8888      "LinkedCell::LinkedCell::deletePoint() - "+toString(*point)+" not present in this cell.");
  • src/LinkedCell/LinkedCell_View.cpp

    r87cadb r7daf73  
    137137          LCmodel->applyBoundaryConditions(absolute_n);
    138138        const LinkedCell &List = LCmodel->getCell(absolute_n);
    139         LOG(3, "INFO: Current cell is " << neighbors.first << " plus " << n << ", yielding " << absolute_n << ".");
    140         for (LinkedCell::const_iterator Runner = List.begin(); Runner != List.end(); Runner++)
    141           TesselList.insert(*Runner);
     139        LOG(4, "INFO: Current cell is " << neighbors.first << " plus " << n << ", yielding " << absolute_n << ".");
     140        for (LinkedCell::const_iterator Runner = List.begin(); Runner != List.end(); Runner++) {
     141          TesselList.push_back(*Runner);
     142          LOG(5, "INFO: Inserting " << **Runner);
     143        }
    142144      }
    143145  return TesselList;
     
    154156  for (LinkedList::const_iterator iter = TesselList.begin(); iter != TesselList.end(); ++iter) {
    155157    if (domain.periodicDistanceSquared(center, (*iter)->getPosition()) <= radius*radius)
    156       ReturnList.insert(*iter);
     158      ReturnList.push_back(*iter);
    157159  }
    158160
  • src/LinkedCell/types.hpp

    r87cadb r7daf73  
    3131
    3232  //!> linked list of tesselpoints
    33   typedef std::set<const TesselPoint *> LinkedList;
     33  typedef std::vector<const TesselPoint *> LinkedList;
    3434
    3535  //!> three-dimensional array of LinkedCell instances
  • src/LinkedCell/unittests/LinkedCellUnitTest.cpp

    r87cadb r7daf73  
    8181
    8282  // add a point
    83   cell->insert(Walker);
     83  cell->push_back(Walker);
    8484  CPPUNIT_ASSERT_EQUAL((size_t)1, cell->size());
    8585
  • src/LinkedCell/unittests/LinkedCell_ViewUnitTest.cpp

    r87cadb r7daf73  
    140140  for (PointSet::const_iterator iter = NodeList.begin(); iter != NodeList.end(); ++iter)
    141141    if (center.DistanceSquared((*iter)->getPosition()) <= distance*distance) {
    142       ComparisonList.insert(*iter);
     142      ComparisonList.push_back(*iter);
    143143      //std::cout << **iter << " is inside of " << center << " plus " << distance << "." << std::endl;
    144144    }
     
    177177  for (PointSet::const_iterator iter = NodeList.begin(); iter != NodeList.end(); ++iter)
    178178    if (center.DistanceSquared((*iter)->getPosition()) <= distance*distance) {
    179       ComparisonList.insert(*iter);
     179      ComparisonList.push_back(*iter);
    180180      //std::cout << **iter << " is inside of " << center << " plus " << distance << "." << std::endl;
    181181    }
  • tests/regression/Molecules/Remove/post/id0_2_missing.pdb

    r87cadb r7daf73  
    1 REMARK created by molecuilder on Fri Dec 12 18:59:48 2014, time step 0
     1REMARK created by molecuilder on Mon Feb  8 16:15:23 2016, time step 0
    22ATOM      1 O01 0non 01          1.590   2.000   6.000  0.00  0.00           O 0
    33ATOM      2 H01 0non 01          2.205   2.000   6.774  0.00  0.00           H 0
     
    1818ATOM     17 H01 0non 06          6.205   6.000   6.774  0.00  0.00           H 0
    1919ATOM     18 H02 0non 06          6.205   6.000   5.226  0.00  0.00           H 0
    20 CONECT    1    2    3                                                           
     20CONECT    1    3    2                                                           
    2121CONECT    2    1                                                               
    2222CONECT    3    1                                                               
    23 CONECT    4    5    6                                                           
     23CONECT    4    6    5                                                           
    2424CONECT    5    4                                                               
    2525CONECT    6    4                                                               
    26 CONECT    7    8    9                                                           
     26CONECT    7    9    8                                                           
    2727CONECT    8    7                                                               
    2828CONECT    9    7                                                               
    29 CONECT   10   11   12                                                           
     29CONECT   10   12   11                                                           
    3030CONECT   11   10                                                               
    3131CONECT   12   10                                                               
    32 CONECT   13   14   15                                                           
     32CONECT   13   15   14                                                           
    3333CONECT   14   13                                                               
    3434CONECT   15   13                                                               
    35 CONECT   16   17   18                                                           
     35CONECT   16   18   17                                                           
    3636CONECT   17   16                                                               
    3737CONECT   18   16                                                               
  • tests/regression/Molecules/Remove/post/water_box.pdb

    r87cadb r7daf73  
    1 REMARK created by molecuilder on Tue Feb 10 10:29:29 2015, time step 0
     1REMARK created by molecuilder on Mon Feb  8 16:15:26 2016, time step 0
    22ATOM      1 O01 0non 01          1.590   2.000   2.000  0.00  0.00           O 0
    33ATOM      2 H01 0non 01          2.205   2.000   2.774  0.00  0.00           H 0
     
    2727CONECT    2    1                                                               
    2828CONECT    3    1                                                               
    29 CONECT    4    5    6                                                           
     29CONECT    4    6    5                                                           
    3030CONECT    5    4                                                               
    3131CONECT    6    4                                                               
     
    3333CONECT    8    7                                                               
    3434CONECT    9    7                                                               
    35 CONECT   10   11   12                                                           
     35CONECT   10   12   11                                                           
    3636CONECT   11   10                                                               
    3737CONECT   12   10                                                               
    38 CONECT   13   14   15                                                           
     38CONECT   13   15   14                                                           
    3939CONECT   14   13                                                               
    4040CONECT   15   13                                                               
    41 CONECT   16   17   18                                                           
     41CONECT   16   18   17                                                           
    4242CONECT   17   16                                                               
    4343CONECT   18   16                                                               
    44 CONECT   19   20   21                                                           
     44CONECT   19   21   20                                                           
    4545CONECT   20   19                                                               
    4646CONECT   21   19                                                               
    47 CONECT   22   23   24                                                           
     47CONECT   22   24   23                                                           
    4848CONECT   23   22                                                               
    4949CONECT   24   22                                                               
Note: See TracChangeset for help on using the changeset viewer.