Changeset 8a91f5


Ignore:
Timestamp:
Oct 20, 2016, 8:52:32 PM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Fix_IndependentFragmentGrids
Children:
8d6a44
Parents:
1e6cf0
git-author:
Frederik Heber <heber@…> (09/22/16 05:46:50)
git-committer:
Frederik Heber <heber@…> (10/20/16 20:52:32)
Message:

FIX: (Orthogonal)Summation::Sum() summed small fragments then large ones.

  • added rbegin() and rend() to SetValueMap's interface.
  • this fails for the new individual fragment SamplingGrids because there we assume that we always sum a grid of smaller extension onto a larger one. now, we go in reverse order through the list of setvalues and sum from largest down to smallest.
Location:
src/Fragmentation/Summation
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Summation/OrthogonalSummation_impl.hpp

    r1e6cf0 r8a91f5  
    7272{
    7373  T sum(zeroinstance);
    74   for(typename SetValueMap<T>::const_iterator iter = setvalues.begin();
    75       (iter != setvalues.end()) && (iter->first->size() <= level); ++iter) {
     74  // go from largest fragments to smallest
     75  for(typename SetValueMap<T>::const_reverse_iterator iter = setvalues.rbegin();
     76      iter != setvalues.rend(); ++iter) {
     77    if (iter->first->size() > level)
     78      continue;
    7679    const T tempvalue = (iter->second)->getContribution();
    7780    sum += tempvalue;
  • src/Fragmentation/Summation/SetValueMap.hpp

    r1e6cf0 r8a91f5  
    111111  //!> typedef to const iterator of internal map such that easy const traversal is possible
    112112  typedef typename Lookup_t::const_iterator const_iterator;
     113  //!> typedef to const iterator of internal map such that easy const traversal is possible
     114  typedef typename Lookup_t::const_reverse_iterator const_reverse_iterator;
    113115
    114   /** Getter for first node of iternal map.
     116  /** Getter for first node of internal map.
    115117   *
    116118   * @return Lookup::begin()
     
    120122  }
    121123
    122   /** Getter for last and one node of iternal map.
     124  /** Getter for last and one node of internal map.
    123125   *
    124126   * @return Lookup::end()
     
    127129    return Lookup.end();
    128130  }
     131
     132  /** Getter for last node of internal map.
     133   *
     134   * @return Lookup::rbegin()
     135   */
     136  const_reverse_iterator rbegin() const {
     137    return Lookup.rbegin();
     138  }
     139
     140  /** Getter for one before first node of internal map.
     141   *
     142   * @return Lookup::rend()
     143   */
     144  const_reverse_iterator rend() const {
     145    return Lookup.rend();
     146  }
    129147};
    130148
  • src/Fragmentation/Summation/Summation_impl.hpp

    r1e6cf0 r8a91f5  
    7373{
    7474  T sum(zeroinstance);
    75   for(typename SetValueMap<T>::const_iterator iter = setvalues.begin();
    76       (iter != setvalues.end()) && (iter->first->size() <= level); ++iter) {
     75  for(typename SetValueMap<T>::const_reverse_iterator iter = setvalues.rbegin();
     76      iter != setvalues.rend(); ++iter) {
     77    if (iter->first->size() > level)
     78      continue;
    7779    const T tempvalue = (iter->second)->getValue();
    7880    sum += tempvalue;
Note: See TracChangeset for help on using the changeset viewer.