Changeset ff9963 for src/Fragmentation/Summation
- Timestamp:
- Nov 16, 2012, 2:13:45 PM (12 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:
- 3102010
- Parents:
- 8a0e78
- git-author:
- Frederik Heber <heber@…> (08/03/12 09:15:42)
- git-committer:
- Frederik Heber <heber@…> (11/16/12 14:13:45)
- Location:
- src/Fragmentation/Summation
- Files:
-
- 9 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/Fragmentation/Summation/AllLevelOrthogonalSummator.hpp ¶
r8a0e78 rff9963 1 1 /* 2 * printOrthogonalSum.hpp2 * AllLevelOrthogonalSummator.hpp 3 3 * 4 4 * Created on: 29.07.2012 … … 6 6 */ 7 7 8 #ifndef PRINTORTHOGONALSUM_HPP_9 #define PRINTORTHOGONALSUM_HPP_8 #ifndef ALLLEVELORTHOGONALSUMMATOR_HPP_ 9 #define ALLLEVELORTHOGONALSUMMATOR_HPP_ 10 10 11 11 // include config.h … … 16 16 #include <vector> 17 17 18 #include "CodePatterns/Assert.hpp" 19 18 20 #include "Fragmentation/Summation/IndexSetContainer.hpp" 19 21 #include "Fragmentation/Summation/SubsetMap.hpp" … … 22 24 #include "Fragmentation/Summation/printKeyNames.hpp" 23 25 24 /** Tiny template functor to use OrthogonalSummation, sum up and print the result. 26 /** Tiny template functor to use OrthogonalSummation, sum up each level, and store the 27 * result in a given vector. 25 28 * 26 29 */ 27 30 template <typename MapType> 28 struct printOrthogonalSum{31 struct AllLevelOrthogonalSummator { 29 32 /** Constructor takes the arguments that \a OrthogonalSummator also needs and stores 30 33 * them internally. … … 36 39 * to job id and hence to _data. 37 40 * \param _MatrixNrLookup lookup from job id to ordering in above vectors 41 * \param _results vector place results into 38 42 */ 39 printOrthogonalSum(43 AllLevelOrthogonalSummator( 40 44 SubsetMap::ptr &_subsetmap, 41 45 const std::vector<MapType> &_data, 42 46 const std::vector<JobId_t> &_jobids, 43 47 const IndexSetContainer::Container_t &_container, 44 std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */ 48 std::map< JobId_t, size_t > &_MatrixNrLookup, /* cannot make this const due to operator[] */ 49 std::vector<MapType> &_results) : 45 50 subsetmap(_subsetmap), 46 51 data(_data), 47 52 jobids(_jobids), 48 53 container(_container), 49 MatrixNrLookup(_MatrixNrLookup) 50 {} 54 MatrixNrLookup(_MatrixNrLookup), 55 results(_results) 56 { 57 ASSERT( results.size() >= subsetmap->getMaximumSubsetLevel(), 58 "AllLevelOrthogonalSummator() - result vector is not large enough."); 59 } 51 60 52 61 /** Operator that calls on OrthogonalSummator and prints the value. … … 63 72 subsetmap, data, jobids, container, MatrixNrLookup 64 73 ); 65 // sum up 66 MapValue value = sum_value(); 67 // print value 68 LOG(0, "STATUS: Resulting " << printKeyNames::printName<MapKey>() << " is " << value << "."); 74 const size_t MaxLevel = subsetmap->getMaximumSubsetLevel(); 75 for (size_t level=1; level <= MaxLevel; ++level) { 76 MapType &LevelResults = results[level-1]; 77 // sum up and store in results 78 const MapValue value = sum_value(level); 79 boost::fusion::at_key<MapKey>(LevelResults) = value; 80 // print value 81 //LOG(0, "STATUS: Level " << level << " resulting " << printKeyNames::printName<MapKey>() << " is " << value << "."); 82 } 69 83 } 70 84 … … 80 94 //!> lookup map from job ids to ordering in above vectors 81 95 std::map< JobId_t, size_t > MatrixNrLookup; 96 //!> vector of results 97 std::vector<MapType> &results; 82 98 }; 83 99 84 #endif /* PRINTORTHOGONALSUM_HPP_ */100 #endif /* ALLLEVELORTHOGONALSUMMATOR_HPP_ */ -
TabularUnified src/Fragmentation/Summation/AllLevelSummator.hpp ¶
r8a0e78 rff9963 1 1 /* 2 * printSum.hpp2 * AllLevelSummator.hpp 3 3 * 4 4 * Created on: 29.07.2012 … … 6 6 */ 7 7 8 #ifndef PRINTSUM_HPP_9 #define PRINTSUM_HPP_8 #ifndef ALLLEVELSUMMATOR_HPP_ 9 #define ALLLEVELSUMMATOR_HPP_ 10 10 11 11 // include config.h … … 16 16 #include <vector> 17 17 18 #include "CodePatterns/Assert.hpp" 19 18 20 #include "Fragmentation/Summation/IndexSetContainer.hpp" 19 21 #include "Fragmentation/Summation/SubsetMap.hpp" … … 22 24 #include "Fragmentation/Summation/printKeyNames.hpp" 23 25 24 /** Tiny template functor to use OrthogonalSummation, sum up and print the result. 26 /** Tiny template functor to use Summation, sum up each level, and store the 27 * result in a given vector. 25 28 * 26 29 */ 27 30 template <typename MapType> 28 struct printSum{31 struct AllLevelSummator { 29 32 /** Constructor takes the arguments that \a Summator also needs and stores 30 33 * them internally. … … 36 39 * to job id and hence to _data. 37 40 * \param _MatrixNrLookup lookup from job id to ordering in above vectors 41 * \param _results vector place results into 38 42 */ 39 printSum(43 AllLevelSummator( 40 44 SubsetMap::ptr &_subsetmap, 41 45 const std::vector<MapType> &_data, 42 46 const std::vector<JobId_t> &_jobids, 43 47 const IndexSetContainer::Container_t &_container, 44 std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */ 48 std::map< JobId_t, size_t > &_MatrixNrLookup, /* cannot make this const due to operator[] */ 49 std::vector<MapType> &_results) : 45 50 subsetmap(_subsetmap), 46 51 data(_data), 47 52 jobids(_jobids), 48 53 container(_container), 49 MatrixNrLookup(_MatrixNrLookup) 50 {} 54 MatrixNrLookup(_MatrixNrLookup), 55 results(_results) 56 { 57 ASSERT( results.size() >= subsetmap->getMaximumSubsetLevel(), 58 "AllLevelSummator() - result vector is not large enough."); 59 } 51 60 52 61 /** Operator that calls on Summator and prints the value. … … 63 72 subsetmap, data, jobids, container, MatrixNrLookup 64 73 ); 65 // sum up 66 MapValue value = sum_value(); 67 // print value 68 LOG(0, "STATUS: Resulting " << printKeyNames::printName<MapKey>() << " is " << value << "."); 74 const size_t MaxLevel = subsetmap->getMaximumSubsetLevel(); 75 for (size_t level=1; level <= MaxLevel; ++level) { 76 MapType &LevelResults = results[level-1]; 77 // sum up and store in results 78 const MapValue value = sum_value(level); 79 boost::fusion::at_key<MapKey>(LevelResults) = value; 80 // print value 81 //LOG(0, "STATUS: Level " << level << " resulting " << printKeyNames::printName<MapKey>() << " is " << value << "."); 82 } 69 83 } 70 84 … … 80 94 //!> lookup map from job ids to ordering in above vectors 81 95 std::map< JobId_t, size_t > MatrixNrLookup; 96 //!> vector of results 97 std::vector<MapType> &results; 82 98 }; 83 99 84 #endif /* PRINTSUM_HPP_ */100 #endif /* ALLLEVELSUMMATOR_HPP_ */ -
TabularUnified src/Fragmentation/Summation/Makefile.am ¶
r8a0e78 rff9963 8 8 9 9 FRAGMENTATIONSUMMATIONHEADER = \ 10 Fragmentation/Summation/AllLevelOrthogonalSummator.hpp \ 11 Fragmentation/Summation/AllLevelSummator.hpp \ 10 12 Fragmentation/Summation/IndexSet.hpp \ 11 13 Fragmentation/Summation/IndexSetContainer.hpp \ … … 14 16 Fragmentation/Summation/OrthogonalSummator.hpp \ 15 17 Fragmentation/Summation/printKeyNames.hpp \ 16 Fragmentation/Summation/printOrthogonalSum.hpp \17 Fragmentation/Summation/printSum.hpp \18 18 Fragmentation/Summation/SetValue.hpp \ 19 19 Fragmentation/Summation/SetValueMap.hpp \ -
TabularUnified src/Fragmentation/Summation/OrthogonalSummation.hpp ¶
r8a0e78 rff9963 40 40 /** Performs the orthogonal summation and returns result. 41 41 * 42 * @param level sum up to this level 42 43 * @return resulting value 43 44 */ 44 T operator()( ) const;45 T operator()(const size_t level) const; 45 46 46 47 private: 47 T Sum( ) const;48 T Sum(const size_t level) const; 48 49 49 50 private: -
TabularUnified src/Fragmentation/Summation/OrthogonalSummation_impl.hpp ¶
r8a0e78 rff9963 57 57 58 58 template <class T> 59 T OrthogonalSummation<T>::operator()( ) const59 T OrthogonalSummation<T>::operator()(const size_t level) const 60 60 { 61 return Sum( );61 return Sum(level); 62 62 } 63 63 64 64 template <class T> 65 T OrthogonalSummation<T>::Sum( ) const65 T OrthogonalSummation<T>::Sum(const size_t level) const 66 66 { 67 67 typename SetValueMap<T>::const_iterator iter = setvalues.begin(); 68 T sum = (iter->second)->getContribution(); 68 T sum; // we must assume here that cstor initializes to 0 69 if (iter->first->size() <= level) 70 sum = (iter->second)->getContribution(); 69 71 LOG(1, "DEBUG: Contribution from subset "+toString(*(iter->second->getIndexSet())) 70 72 +" is "+toString(sum)+"."); 71 for(++iter; iter != setvalues.end(); ++iter) {73 for(++iter;(iter != setvalues.end()) && (iter->first->size() <= level); ++iter) { 72 74 const T tempvalue = (iter->second)->getContribution(); 73 75 sum += tempvalue; -
TabularUnified src/Fragmentation/Summation/OrthogonalSummator.hpp ¶
r8a0e78 rff9963 92 92 * \return result of OrthogonalSummation for given type from MPQCDataMap_t. 93 93 */ 94 MapValue operator()( /* const size_t level */)94 MapValue operator()(const size_t level) 95 95 { 96 96 // evaluate 97 const MapValue result = OS( );97 const MapValue result = OS(level); 98 98 return result; 99 99 } -
TabularUnified src/Fragmentation/Summation/Summation.hpp ¶
r8a0e78 rff9963 42 42 /** Performs the summation and returns result. 43 43 * 44 * @param level sum up to this level 44 45 * @return resulting value 45 46 */ 46 T operator()( ) const;47 T operator()(const size_t level) const; 47 48 48 49 private: 49 T Sum( ) const;50 T Sum(const size_t level) const; 50 51 51 52 private: -
TabularUnified src/Fragmentation/Summation/Summation_impl.hpp ¶
r8a0e78 rff9963 57 57 58 58 template <class T> 59 T Summation<T>::operator()( ) const59 T Summation<T>::operator()(const size_t level) const 60 60 { 61 return Sum( );61 return Sum(level); 62 62 } 63 63 64 64 template <class T> 65 T Summation<T>::Sum( ) const65 T Summation<T>::Sum(const size_t level) const 66 66 { 67 67 typename SetValueMap<T>::const_iterator iter = setvalues.begin(); 68 T sum = (iter->second)->getValue(); 68 T sum; // we must assume here that cstor initializes to 0 69 if (iter->first->size() <= level) 70 sum = (iter->second)->getValue(); 69 71 LOG(1, "DEBUG: Value from subset "+toString(*(iter->second->getIndexSet())) 70 72 +" is "+toString(sum)+"."); 71 for(++iter; iter != setvalues.end(); ++iter) {73 for(++iter;(iter != setvalues.end()) && (iter->first->size() <= level); ++iter) { 72 74 const T tempvalue = (iter->second)->getValue(); 73 75 sum += tempvalue; -
TabularUnified src/Fragmentation/Summation/Summator.hpp ¶
r8a0e78 rff9963 92 92 * \return result of Summation for given type from MPQCDataMap_t. 93 93 */ 94 MapValue operator()( /* const size_t level */)94 MapValue operator()(const size_t level) 95 95 { 96 96 // evaluate 97 const MapValue result = OS( );97 const MapValue result = OS(level); 98 98 return result; 99 99 } -
TabularUnified src/Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.cpp ¶
r8a0e78 rff9963 105 105 106 106 // sum up, as full set is contained we must get value again 107 CPPUNIT_ASSERT_EQUAL( value, OS() ); 107 //CPPUNIT_ASSERT_EQUAL( 0, OS(0) ); /* zero value is not guaranteed to bet set to zero. */ 108 CPPUNIT_ASSERT_EQUAL( value*2, OS(1) ); 109 CPPUNIT_ASSERT_EQUAL( value*2, OS(2) ); 110 CPPUNIT_ASSERT_EQUAL( value*2, OS(3) ); 111 CPPUNIT_ASSERT_EQUAL( value, OS(4) ); 112 CPPUNIT_ASSERT_EQUAL( value, OS(5) ); 108 113 } 109 114 } -
TabularUnified src/Fragmentation/Summation/unittests/SummationUnitTest.cpp ¶
r8a0e78 rff9963 105 105 106 106 // sum up, as full set is contained we must get value again 107 CPPUNIT_ASSERT_EQUAL( (int)(value * _container.size()), OS() ); 107 //CPPUNIT_ASSERT_EQUAL( (int)0, OS(0) ); /* zero value is not guaranteed to bet set to zero. */ 108 CPPUNIT_ASSERT_EQUAL( (int)(value * container->countSetsTillLevel(1)), OS(1) ); 109 CPPUNIT_ASSERT_EQUAL( (int)(value * container->countSetsTillLevel(2)), OS(2) ); 110 CPPUNIT_ASSERT_EQUAL( (int)(value * container->countSetsTillLevel(3)), OS(3) ); 111 CPPUNIT_ASSERT_EQUAL( (int)(value * container->countSetsTillLevel(4)), OS(4) ); 112 CPPUNIT_ASSERT_EQUAL( (int)(value * container->countSetsTillLevel(5)), OS(5) ); 108 113 } 109 114 }
Note:
See TracChangeset
for help on using the changeset viewer.