Scine::Swoose  2.1.0
This is the SCINE module Swoose.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
MolecularSystemPartitioner.h
Go to the documentation of this file.
1 
8 #ifndef MMPARAMETRIZATION_MOLECULARSYSTEMPARTITIONER_H
9 #define MMPARAMETRIZATION_MOLECULARSYSTEMPARTITIONER_H
10 
12 #include <Utils/Typenames.h>
13 #include <deque>
14 #include <memory>
15 
16 namespace Scine {
17 
18 namespace Core {
19 struct Log;
20 } // namespace Core
21 
22 namespace Molassembler {
23 class InterpretResult;
24 } // namespace Molassembler
25 
26 namespace Utils {
27 class Settings;
28 class Atom;
29 class AtomCollection;
30 } // namespace Utils
31 
32 namespace MMParametrization {
33 struct ParametrizationData;
34 class FragmentAnalyzer;
35 
41  public:
45  MolecularSystemPartitioner(ParametrizationData& data, std::shared_ptr<Utils::Settings> settings, Core::Log& log);
51  void divideSystem();
52 
53  private:
54  /*
55  * @brief The function called when the number of atoms is smaller than the threshold given below.
56  *
57  * This function does not perform a system division, just prepares the data_ object accordingly.
58  */
59  void prepareDataForOneSubsystem();
60  /*
61  * @brief Performs the system division if the number of atoms is larger than the threshold given below.
62  */
63  void divideSystemIntoSubsystems();
64  /*
65  * @brief The maximum number of atoms for which there will be no division into subsystems.
66  */
67  int numberAtomsThreshold_;
68  /*
69  * @brief The radius of the spheres defining the subsystems.
70  */
71  double subsystemRadius_;
72  /*
73  * @brief Threshold of which bond order to still consider as a bond.
74  */
75  double bondOrderThreshold_;
76  // The data used within all MM parametrization classes
77  ParametrizationData& data_;
78  // The settings
79  std::shared_ptr<Utils::Settings> settings_;
80  // The class identifying which atoms have to be constrained during the geometry optimizations
81  std::unique_ptr<ConstrainedAtomsIdentifier> constrainedAtomsIdentifier_;
82  // Logger
83  Core::Log& log_;
84 };
85 
86 } // namespace MMParametrization
87 } // namespace Scine
88 
89 #endif // MMPARAMETRIZATION_MOLECULARSYSTEMPARTITIONER_H
MolecularSystemPartitioner(ParametrizationData &data, std::shared_ptr< Utils::Settings > settings, Core::Log &log)
Constructor.
Definition: MolecularSystemPartitioner.cpp:21
void divideSystem()
Divides the full system into subsystems and optionally saturates them with hydrogen atoms...
Definition: MolecularSystemPartitioner.cpp:32
Divides the full system into subsystems.
Definition: MolecularSystemPartitioner.h:40
This struct holds all objects used inside the MM parametrization algorithm.
Definition: ParametrizationData.h:29