Changeset ac9ca4 for src/Fragmentation/Exporters/ExportGraph_ToJobs.cpp
- Timestamp:
- Apr 15, 2013, 10:28:22 AM (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:
- 4f44ae
- Parents:
- dd0c8f
- git-author:
- Frederik Heber <heber@…> (03/04/13 13:54:11)
- git-committer:
- Frederik Heber <heber@…> (04/15/13 10:28:22)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Exporters/ExportGraph_ToJobs.cpp
rdd0c8f rac9ca4 33 33 #endif 34 34 35 // boost asio required before MemDebug due to placement new 36 #include <boost/asio.hpp> 37 35 38 #include "CodePatterns/MemDebug.hpp" 36 39 37 40 #include "Fragmentation/Exporters/ExportGraph_ToJobs.hpp" 38 41 42 #include <algorithm> 43 44 #include "Box.hpp" 45 #include "Fragmentation/KeySet.hpp" 46 #include "Fragmentation/Automation/FragmentJobQueue.hpp" 47 #include "Fragmentation/Automation/MPQCFragmentController.hpp" 48 #include "Helpers/defs.hpp" 49 #include "Jobs/MPQCJob.hpp" 50 #include "LinearAlgebra/RealSpaceMatrix.hpp" 51 #include "Parser/FormatParserStorage.hpp" 39 52 #include "World.hpp" 40 53 … … 43 56 const enum HydrogenTreatment _treatment, 44 57 const enum HydrogenSaturation _saturation) : 45 ExportGraph(_graph, _treatment, _saturation) 58 ExportGraph(_graph, _treatment, _saturation), 59 level(5) 46 60 {} 47 61 … … 51 65 void ExportGraph_ToJobs::operator()() 52 66 { 53 ExportGraph::operator()(); 67 std::vector<FragmentJob::ptr> jobs; 68 KeySetsContainer KeySets; 69 KeySetsContainer FullKeySets; 70 jobs.reserve(TotalGraph.size()); 71 LOG(1, "INFO: Creating " << TotalGraph.size() << " possible bond fragmentation jobs."); 72 73 // gather info about the domain 74 double begin[NDIM] = { 0., 0., 0. }; 75 RealSpaceMatrix M = World::getInstance().getDomain().getM(); 76 M *= 1./AtomicLengthToAngstroem; // scale to atomic length units 77 const double size = M.at(0,0); 78 double end[NDIM] = { size, size, size }; 79 const ParserTypes jobtype = 80 FormatParserStorage::getInstance().getTypeFromName("mpqc"); 81 82 // go through all fragments, output to stream and create job therefrom 83 ExportGraph::SaturatedFragment_ptr CurrentFragment = getNextFragment(); 84 for (; (CurrentFragment != NULL) && (CurrentFragment->getKeySet() != ExportGraph::EmptySet); 85 CurrentFragment = getNextFragment()) { 86 const KeySet &set = CurrentFragment->getKeySet(); 87 LOG(2, "INFO: Creating bond fragment job for set " << set << "."); 88 // store config in stream 89 { 90 std::stringstream output; 91 // save to stream 92 CurrentFragment->OutputConfig(output, jobtype); 93 // create job and insert 94 FragmentJob::ptr testJob( new MPQCJob(JobId::IllegalJob, output.str(), begin, end, level) ); 95 jobs.push_back(testJob); 96 97 // order is the same as the number of non-hydrogen atoms 98 const KeySet &keyset = CurrentFragment->getKeySet(); 99 const size_t order = keyset.size(); 100 const KeySet &fullmolecule = CurrentFragment->getFullMolecule(); 101 const KeySet &saturationhydrogens = CurrentFragment->getSaturationHydrogens(); 102 KeySetsContainer::IntVector indices(keyset.begin(), keyset.end()); 103 KeySetsContainer::IntVector forceindices(fullmolecule.begin(), fullmolecule.end()); 104 { 105 // replace all saturated hydrogen indices by "-1" 106 for (KeySetsContainer::IntVector::iterator iter = forceindices.begin(); 107 iter != forceindices.end(); 108 ++iter) 109 if (saturationhydrogens.find(*iter) != saturationhydrogens.end()) 110 *iter = -1; 111 } 112 KeySets.insert(indices, order); 113 FullKeySets.insert(forceindices, order); 114 } 115 // store force index reference file 116 // explicitly release fragment 117 CurrentFragment.reset(); 118 } 119 if (CurrentFragment == NULL) { 120 ELOG(1, "Some error while obtaining the next fragment occured."); 121 return; 122 } 123 124 // push final jobs 125 FragmentJobQueue::getInstance().addJobs(jobs, KeySets, FullKeySets); 54 126 }
Note:
See TracChangeset
for help on using the changeset viewer.