Ignore:
Timestamp:
Sep 14, 2016, 6:43:45 PM (8 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, 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_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, GeometryObjects, Gui_displays_atomic_force_velocity, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, RotateToPrincipalAxisSystem_UndoRedo, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, Ubuntu_1604_changes, stable
Children:
3d444a
Parents:
f856ec
git-author:
Frederik Heber <heber@…> (06/12/16 06:57:47)
git-committer:
Frederik Heber <heber@…> (09/14/16 18:43:45)
Message:

BREAKS: Summation and OrthogonalSummation both now allow to set a specific "ZeroInstance".

  • this replaces then the default ZeroInstance<T> used and may be used to enforce specific parameters in the summation, e.g. a smaller grid when summing SamplingGrid.
  • Note that this breaks all long-range results for the moment. The reason is that so far the ZeroInstance was effectively the first result/contribution upon which all others were summed. This worked because each fragment used the same grid size, namely the one of the global grid. With the independent fragment grids this will no longer be possible, which is why we introduce the possibility to set a specific ZeroInstance, i.e. providing the global grid to sum onto externally.
  • to be absolutely precise: The reasons why the tests break is that the little change in ::Sum(): sum =.. -> sum +=..
  • TESTS: Setting regression tests AnalyseFragmentResults to failed.
Location:
src/Fragmentation/Summation
Files:
4 edited

Legend:

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

    rf856ec rff7ac6  
    5353  }
    5454
     55  /** Setter for the zero instance to use as the base in summation.
     56   *
     57   * This may be used to force some parameters in the summation. We
     58   * will use this value to set the initial value and all contributions
     59   * are added via operator+(). E.g. In summing SamplingGrid (charge
     60   * grids) we may use this instance to enforce a smaller grid size
     61   * in the summation of the contributions if fragments have been
     62   * calculated at a much higher grid level.
     63   *
     64   * \param _zeroinstance
     65   */
     66  void setZeroInstance(const T &_zeroinstance)
     67  {
     68    zeroinstance = _zeroinstance;
     69  }
     70
    5571private:
    5672  T Sum(const size_t level) const;
     
    6177  //!> set of all subset values
    6278  SetValueMap<T> setvalues;
     79  //!> base/"zero" instance to sum upon, defaults to ZeroInstance<T>
     80  T zeroinstance;
    6381};
    6482
  • src/Fragmentation/Summation/OrthogonalSummation_impl.hpp

    rf856ec rff7ac6  
    1818#include "CodePatterns/Log.hpp"
    1919
     20#include "Fragmentation/Summation/OrthogonalSummation.hpp"
     21
    2022#include "Fragmentation/Summation/ZeroInstance.hpp"
    2123#include "Fragmentation/Summation/printKeyNames.hpp"
     
    2931    InputValues_t& values,
    3032    SubsetMap::ptr _subsetmap) :
    31   subsetmap(_subsetmap)
     33  subsetmap(_subsetmap),
     34  zeroinstance(ZeroInstance<T>())
    3235{
    3336  ASSERT( indices.size() == values.size(),
     
    6972{
    7073  typename SetValueMap<T>::const_iterator iter = setvalues.begin();
    71   T sum(ZeroInstance<T>());
     74  T sum(zeroinstance);
    7275  if (iter->first->size() <= level)
    73     sum = (iter->second)->getContribution();
     76    sum += (iter->second)->getContribution();
    7477  LOG(3, "DEBUG: Contribution from subset "+toString(*(iter->second->getIndexSet()))
    7578      +" is "+toString(sum)+".");
  • src/Fragmentation/Summation/Summation.hpp

    rf856ec rff7ac6  
    5555  }
    5656
     57  /** Setter for the zero instance to use as the base in summation.
     58   *
     59   * This may be used to force some parameters in the summation. We
     60   * will use this value to set the initial value and all contributions
     61   * are added via operator+(). E.g. In summing SamplingGrid (charge
     62   * grids) we may use this instance to enforce a smaller grid size
     63   * in the summation of the contributions if fragments have been
     64   * calculated at a much higher grid level.
     65   *
     66   * \param _zeroinstance
     67   */
     68  void setZeroInstance(const T &_zeroinstance)
     69  {
     70    zeroinstance = _zeroinstance;
     71  }
     72
    5773private:
    5874  T Sum(const size_t level) const;
     
    6379  //!> set of all subset values
    6480  SetValueMap<T> setvalues;
     81  //!> base/"zero" instance to sum upon, defaults to ZeroInstance<T>
     82  T zeroinstance;
    6583};
    6684
  • src/Fragmentation/Summation/Summation_impl.hpp

    rf856ec rff7ac6  
    1515#endif
    1616
     17#include "CodePatterns/Assert.hpp"
    1718#include "CodePatterns/IteratorAdaptors.hpp"
    1819#include "CodePatterns/Log.hpp"
     20
     21#include "Fragmentation/Summation/Summation.hpp"
    1922
    2023#include "Fragmentation/Summation/printKeyNames.hpp"
     
    2932    InputValues_t& values,
    3033    SubsetMap::ptr _subsetmap) :
    31   subsetmap(_subsetmap)
     34  subsetmap(_subsetmap),
     35  zeroinstance(ZeroInstance<T>())
    3236{
    3337  ASSERT( indices.size() == values.size(),
     
    6973{
    7074  typename SetValueMap<T>::const_iterator iter = setvalues.begin();
    71   T sum = ZeroInstance<T>();
     75  T sum(zeroinstance);
    7276  if (iter->first->size() <= level)
    73     sum = (iter->second)->getValue();
     77    sum += (iter->second)->getValue();
    7478  LOG(3, "DEBUG: Value from subset "+toString(*(iter->second->getIndexSet()))
    7579      +" is "+toString(sum)+".");
Note: See TracChangeset for help on using the changeset viewer.