Scine::Swoose  1.0.0
This is the SCINE module Swoose.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
QmmmReferenceDataManager.h
Go to the documentation of this file.
1 
8 #ifndef SWOOSE_QMMM_QMMMREFERENCEDATAMANAGER_H
9 #define SWOOSE_QMMM_QMMMREFERENCEDATAMANAGER_H
10 
11 #include <Eigen/Dense>
12 #include <memory>
13 #include <vector>
14 
15 namespace Scine {
16 
17 namespace Core {
18 class Log;
19 } // namespace Core
20 
21 namespace Utils {
22 class Settings;
23 class AtomCollection;
24 class BondOrderCollection;
25 } // namespace Utils
26 
27 namespace Qmmm {
28 struct QmmmModel;
29 using ForcesCollection = Eigen::Matrix<double, Eigen::Dynamic, 3, Eigen::RowMajor>;
30 
35 struct QmmmData {
37  std::vector<ForcesCollection> forces;
39  std::vector<double> symmetryScores;
41  std::vector<int> linkAtomNumbers;
43  int nRef = 0;
44 };
45 
51  public:
55  QmmmReferenceDataManager(const Utils::Settings& settings, Core::Log& log, const Utils::AtomCollection& structure,
56  const Utils::BondOrderCollection& bondOrders, const std::vector<QmmmModel>& qmmmModelCandidates,
57  const std::vector<QmmmModel>& qmmmReferenceModels);
58 
64 
65  private:
66  // Calculates the symmetry scores and stores them in the QM/MM data
67  void calculateSymmetryScores(QmmmData& data) const;
68  // Calculates the number of link atoms for each QM/MM model and stores these values in the QM/MM data
69  void calculateLinkAtomNumbers(QmmmData& data) const;
70  // Perform reference calculations and store results in QmmmData object
71  void handleReferenceCalculations(QmmmData& data);
72  // The settings.
73  const Utils::Settings& settings_;
74  // Logger.
75  Core::Log& log_;
76  // Molecular structure of the whole system
77  const Utils::AtomCollection& structure_;
78  // QM/MM model candidates
79  const std::vector<QmmmModel>& qmmmModelCandidates_;
80  // QM/MM reference models
81  const std::vector<QmmmModel>& qmmmReferenceModels_;
82  // The bond orders of the system
83  const Utils::BondOrderCollection& bondOrders_;
84 };
85 
86 } // namespace Qmmm
87 } // namespace Scine
88 
89 #endif // SWOOSE_QMMM_QMMMREFERENCEDATAMANAGER_H
QmmmReferenceDataManager(const Utils::Settings &settings, Core::Log &log, const Utils::AtomCollection &structure, const Utils::BondOrderCollection &bondOrders, const std::vector< QmmmModel > &qmmmModelCandidates, const std::vector< QmmmModel > &qmmmReferenceModels)
Constructor.
Definition: QmmmReferenceDataManager.cpp:23
Definition: QmmmReferenceDataManager.h:35
Manages the calculation of all data contained in the QmmmData struct.
Definition: QmmmReferenceDataManager.h:50
std::vector< ForcesCollection > forces
Container for the atomic forces calculated with each QM/MM model.
Definition: QmmmReferenceDataManager.h:37
int nRef
Number of reference calculations. The last nRef data points in the objects above correspond to these...
Definition: QmmmReferenceDataManager.h:43
QmmmData calculateData()
Calculates the properties in the QmmmData struct for the QM/MM candidate models and reference models...
Definition: QmmmReferenceDataManager.cpp:36
std::vector< double > symmetryScores
Container for the symmetry scores for each QM/MM model.
Definition: QmmmReferenceDataManager.h:39
std::vector< int > linkAtomNumbers
Container for the number of link atoms for each QM/MM model.
Definition: QmmmReferenceDataManager.h:41