Ignore:
Timestamp:
Oct 13, 2015, 8:12:54 PM (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:
6e73f5
Parents:
20bb3b
git-author:
Frederik Heber <heber@…> (02/07/15 11:21:09)
git-committer:
Frederik Heber <heber@…> (10/13/15 20:12:54)
Message:

Added gathering of full and longrange forces into extra file.

  • added new structs to VMGDataFusedMap for summation.
  • tempcommit: we do not have the full index set available, hence it just accumulated all indices from all fragments into a sorted set and use this in lieu of the full index set. We need to check how the full solution is constructed and how indices to the particles and their force vectors can be assigned.
  • extended printFullSolution() by another table with short- and long-range forces.
Location:
src/Fragmentation/Summation/Containers
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.cpp

    r20bb3b rff347f  
    127127        Result_LongRange_fused, Result_perIndexSet_LongRange);
    128128
     129    IndexedVectors::indices_t fullindices;
    129130    if (hasLongRangeForces()) {
    130131      // force has extra data converter (this is similar to MPQCData's forces
     
    141142                  Result_perIndexSet_LongRange_Force);
    142143      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());
    143152    }
    144153
     
    224233          + boost::fusion::at_key<VMGDataFused::nuclei_shortrange>(instance);
    225234      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      }
    226248    }
    227249//    {
  • src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp

    r20bb3b rff347f  
    117117  //!> results per level of summed up long range true energy
    118118  std::vector<VMGDataLongRangeMap_t> Result_LongRangeIntegrated_fused;
     119  //!> results per level of summed up long range true forces
     120  std::vector<VMGDataLongRangeForceMap_t> Result_ForcesLongRangeIntegrated_fused;
    119121
    120122  //!> results per IndexSet of summed up sampled grid charge
  • src/Fragmentation/Summation/Containers/VMGDataFused.hpp

    r20bb3b rff347f  
    4242  struct total_shortrange {};
    4343
     44  struct forces_longrange {};
     45  struct forces_shortrange {};
    4446};
    4547
  • src/Fragmentation/Summation/Containers/VMGDataMap.hpp

    r20bb3b rff347f  
    9696> VMGDataLongRangeVector_t;
    9797
     98typedef boost::fusion::map<
     99    boost::fusion::pair<VMGDataFused::forces_longrange, IndexedVectors >,
     100    boost::fusion::pair<VMGDataFused::forces_shortrange, IndexedVectors >
     101> VMGDataLongRangeForceMap_t;
     102
     103typedef boost::mpl::list<
     104    VMGDataFused::forces_longrange,
     105    VMGDataFused::forces_shortrange
     106> VMGDataLongRangeForceVector_t;
     107
    98108
    99109#endif /* VMGDATAMAP_HPP_ */
  • src/Fragmentation/Summation/Containers/VMGData_printKeyNames.hpp

    r20bb3b rff347f  
    4646  (nuclei_shortrange) \
    4747  (total_longrange) \
    48   (total_shortrange)
     48  (total_shortrange) \
     49  (forces_longrange) \
     50  (forces_shortrange)
    4951
    5052/// we take note of the number of keys in tokensequence as (local) loop bounds below
Note: See TracChangeset for help on using the changeset viewer.