- Timestamp:
- Feb 2, 2016, 5:50:29 PM (9 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:
- 9ae11c
- Parents:
- d1831e (diff), 62d092 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.cpp
rd1831e r3690e4 65 65 const KeySetsContainer& _ForceKeySet) : 66 66 KeySet(_KeySet), 67 ForceKeySet(_ForceKeySet) 67 ForceKeySet(_ForceKeySet), 68 hasForces((!longrangeData.empty()) && (longrangeData.begin()->second.hasForces)) 68 69 { 69 70 initLookups(fragmentData, longrangeData); … … 126 127 Result_LongRange_fused, Result_perIndexSet_LongRange); 127 128 129 IndexedVectors::indices_t fullindices; 130 if (hasLongRangeForces()) { 131 // force has extra data converter (this is similar to MPQCData's forces 132 std::map<JobId_t, VMGDataForceMap_t> VMGData_Force_fused; 133 convertDatatoForceMap<VMGData, VMGDataForceMap_t, VMGDataFused>( 134 longrangeData, ForceKeySet, VMGData_Force_fused); 135 Result_ForceLongRange_fused.resize(MaxLevel); // we need the results of correct size already 136 AllLevelOrthogonalSummator<VMGDataForceMap_t> forceSummer( 137 subsetmap, 138 VMGData_Force_fused, 139 container->getContainer(), 140 VMGMatrixNrLookup, 141 Result_ForceLongRange_fused, 142 Result_perIndexSet_LongRange_Force); 143 boost::mpl::for_each<VMGDataForceVector_t>(boost::ref(forceSummer)); 144 // build full force index set 145 KeySetsContainer::ArrayOfIntVectors::const_iterator arrayiter = ForceKeySet.KeySets.begin(); 146 std::set<IndexedVectors::index_t> sorted_indices; 147 for (;arrayiter != ForceKeySet.KeySets.end(); ++arrayiter) { 148 sorted_indices.insert(arrayiter->begin(), arrayiter->end()); 149 } 150 sorted_indices.erase(-1); 151 fullindices.insert(fullindices.begin(), sorted_indices.begin(), sorted_indices.end()); 152 } 153 154 // then sum up 155 OrthogonalSumUpPerLevel<VMGDataGridMap_t, VMGData, VMGDataGridVector_t>( 156 longrangeData, VMGMatrixNrLookup, container, subsetmap, 157 Result_GridLongRange_fused, Result_perIndexSet_LongRange_Grid); 158 128 159 Result_LongRangeIntegrated_fused.reserve(MaxLevel); 129 160 // NOTE: potential for level 1 is wrongly calculated within a molecule … … 146 177 // the full solution. 147 178 const SamplingGrid &short_range_correction = 148 boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_ LongRange_fused[level-1]);179 boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_GridLongRange_fused[level-1]); 149 180 double electron_short_range_energy = short_range_correction.integral(); 150 181 full_sample_solution -= short_range_correction; … … 202 233 + boost::fusion::at_key<VMGDataFused::nuclei_shortrange>(instance); 203 234 Result_LongRangeIntegrated_fused.push_back(instance); 235 236 if (hasLongRangeForces()) { 237 VMGDataLongRangeForceMap_t forceinstance; 238 IndexedVectors fullforces( fullindices, fullsolutionData[level-1].forces); 239 IndexedVectors longrangeforces = 240 boost::fusion::at_key<VMGDataFused::forces>(Result_ForceLongRange_fused[level-1]); 241 boost::fusion::at_key<VMGDataFused::forces_shortrange>(forceinstance) = 242 fullforces; 243 fullforces -= longrangeforces; 244 boost::fusion::at_key<VMGDataFused::forces_longrange>(forceinstance) = 245 fullforces; 246 Result_ForcesLongRangeIntegrated_fused.push_back(forceinstance); 247 } 204 248 } 205 249 // { … … 207 251 // SamplingGrid full_sample_solution = fullsolutionData.back().sampled_potential; 208 252 // const SamplingGrid &short_range_correction = 209 // boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_ LongRange_fused.back()).getFullContribution();253 // boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_GridLongRange_fused.back()).getFullContribution(); 210 254 // full_sample_solution -= short_range_correction; 211 255 // // multiply element-wise with charge distribution
Note:
See TracChangeset
for help on using the changeset viewer.