Changeset 06865e for src/Actions
- Timestamp:
- Nov 21, 2012, 12:46:32 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:
- c5feef
- Parents:
- 358ddb
- git-author:
- Frederik Heber <heber@…> (08/10/12 16:37:46)
- git-committer:
- Frederik Heber <heber@…> (11/21/12 12:46:32)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
r358ddb r06865e 49 49 #include "Atom/atom.hpp" 50 50 #include "Box.hpp" 51 #include "Element/element.hpp" 51 52 #include "Fragmentation/EnergyMatrix.hpp" 52 53 #include "Fragmentation/ForceMatrix.hpp" … … 725 726 size_t FragmentCounter = 0; 726 727 createMatrixNrLookup(fragmentresults, MatrixNrLookup, FragmentCounter); 727 std::map< JobId_t, size_t > extraMatrixNrLookup;728 size_t extraFragmentCounter = 0;729 createMatrixNrLookup(longrangeresults, extraMatrixNrLookup, extraFragmentCounter);730 728 731 729 // initialise keysets … … 756 754 std::vector<JobId_t> jobids(fragmentresults.size(), JobId::IllegalJob); 757 755 std::transform(fragmentresults.begin(), fragmentresults.end(), jobids.begin(), 758 boost::bind(&FragmentResult::getId,759 boost::bind(&FragmentResult::ptr::operator->, _1)));760 // create a vector of all job ids from long-range761 std::vector<JobId_t> extrajobids(longrangeresults.size(), JobId::IllegalJob);762 std::transform(longrangeresults.begin(), longrangeresults.end(), extrajobids.begin(),763 756 boost::bind(&FragmentResult::getId, 764 757 boost::bind(&FragmentResult::ptr::operator->, _1))); … … 776 769 SumUpPerLevel<MPQCDataTimeMap_t, MPQCDataTimeVector_t>( 777 770 fragmentData, jobids, MatrixNrLookup, container, subsetmap)); 771 std::vector<MPQCDataFragmentMap_t> Result_Fragment_fused( 772 OrthogonalSumUpPerLevel<MPQCDataFragmentMap_t, MPQCDataFragmentVector_t>( 773 fragmentData, jobids, MatrixNrLookup, container, subsetmap)); 778 774 779 775 // force has extra converter … … 790 786 boost::mpl::for_each<MPQCDataForceVector_t>(boost::ref(forceSummer)); 791 787 788 // full solution has to treated extra and not used in summation 789 std::vector<VMGData> temp_longrangeData(longrangeData.begin(), --longrangeData.end()); 790 792 791 // obtain full grid 793 792 std::vector<VMGDataMap_t> VMGData_Potential_fused; 794 convertDataTo<VMGData, VMGDataMap_t>( longrangeData, VMGData_Potential_fused);793 convertDataTo<VMGData, VMGDataMap_t>(temp_longrangeData, VMGData_Potential_fused); 795 794 OrthogonalFullSummator<VMGDataMap_t, VMGDataFused::sampled_potential> potentialSummer( 796 795 subsetmap, 797 796 VMGData_Potential_fused, 798 extrajobids,797 jobids, 799 798 container->getContainer(), 800 extraMatrixNrLookup);799 MatrixNrLookup); 801 800 potentialSummer(subsetmap->getMaximumSubsetLevel()); 802 full_sample = potentialSummer.getFullContribution(); 801 SamplingGrid full_sample = longrangeData.back().sampled_potential; 802 full_sample -= potentialSummer.getFullContribution(); 803 803 LOG(0, "Remaining long-range energy from potential integral is " << full_sample.integral() << "."); 804 804 … … 806 806 subsetmap, 807 807 VMGData_Potential_fused, 808 extrajobids,808 jobids, 809 809 container->getContainer(), 810 extraMatrixNrLookup);810 MatrixNrLookup); 811 811 elongSummer(subsetmap->getMaximumSubsetLevel()); 812 const double e_long = elongSummer.getFullContribution(); 812 double e_long = longrangeData.back().e_long; 813 e_long -= elongSummer.getFullContribution(); 813 814 LOG(0, "Remaining long-range energy is " << e_long << "."); 814 815 … … 903 904 904 905 { 905 // const int level = LEVEL; 906 // const int GRID = pow(2, level); 907 // double begin[NDIM] = { 0., 0., 0. }; 908 // const RealSpaceMatrix& M = World::getInstance().getDomain().getM(); 909 // const double size = M.at(0,0); 910 // ASSERT( M.determinant() == size*size*size, 911 // "createLongRangeJobs() - current domain matrix "+toString(M)+" is not cubic."); 912 const std::vector< std::vector<double> > positions(full_fragment.getPositions()); 913 const std::vector<double> charges(full_fragment.getCharges()); 906 const World::AtomComposite &atoms = World::getInstance().getAllAtoms(); 907 std::vector< std::vector<double> > positions; 908 positions.reserve(atoms.size()); 909 std::vector<double> charges; 910 charges.reserve(atoms.size()); 911 std::vector<double> position(3, 0.); 912 for (World::AtomComposite::const_iterator iter = atoms.begin(); 913 iter != atoms.end(); ++iter) { 914 const Vector &pos = (*iter)->getPosition(); 915 for (size_t i=0;i<3;++i) position[i] = pos[i]; 916 positions.push_back(position); 917 charges.push_back((double)((*iter)->getElement().getAtomicNumber())); 918 } 914 919 const JobId_t next_id = controller.getAvailableId(); 915 920 LOG(1, "INFO: Creating full VMGJob with " << full_sampled_grid.sampled_grid.size() … … 977 982 #ifdef HAVE_VMG 978 983 if (params.DoLongrange.get()) { 984 ASSERT( World::getInstance().getAllAtoms().size() != 0, 985 "FragmentationFragmentationAutomationAction::performCall() - please load the full molecule into the World before."); 986 979 987 // obtain combined charge density 980 988 LOG(1, "INFO: Parsing fragment files from " << params.path.get() << ".");
Note:
See TracChangeset
for help on using the changeset viewer.