Ignore:
Timestamp:
Apr 8, 2013, 11:56:08 AM (12 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:
c39675
Parents:
7d5fcd
git-author:
Frederik Heber <heber@…> (03/03/13 10:26:14)
git-committer:
Frederik Heber <heber@…> (04/08/13 11:56:08)
Message:

Extended ExportGraph to spill our molecular fragments one by one.

  • the biggest scaling issue with fragmentation is the number of hydrogen atoms that are created to saturate all (e.g. 200.000 fragments frm 3.000 atoms at order 6!) the molecular fragments.
  • hence, create one by one and have a controlled pool of hydrogens that are re-used.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Exporters/ExportGraph.hpp

    r7d5fcd r6cabaac  
    1414#endif
    1515
     16#include <boost/shared_ptr.hpp>
     17
    1618#include "Fragmentation/HydrogenSaturation_enum.hpp"
    1719#include "Fragmentation/Exporters/ExportGraph.hpp"
     20#include "Fragmentation/Exporters/HydrogenPool.hpp"
     21#include "Fragmentation/Exporters/SaturatedFragment.hpp"
    1822#include "MoleculeListClass.hpp"
    1923
     
    3842      const enum HydrogenTreatment _treatment,
    3943      const enum HydrogenSaturation _saturation);
    40         virtual ~ExportGraph();
     44  virtual ~ExportGraph();
    4145
    42         virtual void operator()();
     46  typedef boost::shared_ptr<SaturatedFragment> SaturatedFragment_ptr;
     47
     48  virtual void operator()();
     49
     50  /** Returns a saturated fragment for immediate use only.
     51   *
     52   * An empty KeySet indicates the end of all possible fragments
     53   * A shared_ptr containing NULL indicate an error
     54   *
     55   * \return RAII instance of a saturated fragment, NULL - failure, empty set - end
     56   */
     57  SaturatedFragment_ptr getNextFragment();
     58
     59  /** Sets the next fragment to the first graph again.
     60   *
     61   */
     62  void reset();
    4363
    4464private:
     65
     66  /** Helper function to create a fragment from a keyset and note down its in use.
     67   *
     68   * \param _set KeySet to create saturated fragment from
     69   * \return RAII instance of a saturated fragment
     70   */
     71   SaturatedFragment_ptr leaseFragment(const KeySet &_set);
     72
     73  /** Helper function to create a fragment from a keyset and note down its in use.
     74   *
     75   * \param _ptr RAII instance of a saturated fragment to release again
     76   */
     77  void releaseFragment(SaturatedFragment_ptr &_ptr);
    4578
    4679  void prepareMolecule();
     
    5083
    5184protected:
     85  //!> empty set to indicate last and one fragment
     86  const KeySet EmptySet;
     87
     88protected:
     89  //!> set of all KeySets that are leased as saturated fragments
     90  SaturatedFragment::KeySetsInUse_t KeySetsInUse;
     91
     92  //!> pool containing hydrogens for saturation
     93  HydrogenPool hydrogens;
     94
     95  //!> graph containing all keysets
    5296  const Graph &TotalGraph;
    5397  //!> internal list of created molecules
     
    57101  //!> whether to saturate dangling bonds or not
    58102  const enum HydrogenSaturation saturation;
     103
     104private:
     105  //!> iterator pointing at the CurrentKeySet to be exported
     106  Graph::const_iterator CurrentKeySet;
    59107};
    60108
Note: See TracChangeset for help on using the changeset viewer.