Scine::Swoose  2.1.0
This is the SCINE module Swoose.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
ParametrizationData.h
Go to the documentation of this file.
1 
8 #ifndef MMPARAMETRIZATION_DATAMANAGER_H
9 #define MMPARAMETRIZATION_DATAMANAGER_H
10 
17 #include <Utils/Typenames.h>
18 #include <Eigen/Dense>
19 #include <Eigen/Sparse>
20 #include <list>
21 #include <memory>
22 
23 namespace Scine {
24 namespace MMParametrization {
37  int numberOfAtoms{0};
41  Eigen::SparseMatrix<double> fullHessian;
46  std::vector<std::unique_ptr<Utils::HessianMatrix>> vectorOfHessians;
51  std::vector<std::unique_ptr<Utils::AtomCollection>> vectorOfStructures;
56  std::vector<std::unique_ptr<Utils::AtomCollection>> vectorOfOptimizedStructures;
61  std::vector<std::pair<int, int>> vectorOfChargesAndMultiplicities;
66  std::vector<std::unique_ptr<Utils::BondOrderCollection>> vectorOfBondOrderCollections;
70  std::vector<double> atomicCharges;
74  std::vector<std::vector<double>> atomicChargesForEachFragment;
78  std::vector<std::list<int>> listsOfNeighbors;
95  std::vector<std::pair<int, int>> vectorOfHessianSubmatrixIndices;
99  std::vector<std::string> vectorOfAtomTypesForParameter;
107  std::map<int, int> formalCharges;
112  std::map<int, int> unpairedElectrons;
117  std::map<int, std::string> pHSensitiveSites;
121  std::vector<bool> siteIspHSensitive;
126  std::vector<std::vector<int>> atomIndexMapping;
131  std::vector<std::vector<int>> constrainedAtoms;
136  std::vector<int> superfluousFragments;
137 };
138 
139 struct TrainingData {
140  std::string groupType;
141  std::vector<double> eneryOfDeprotonation;
142  std::vector<double> pKas;
143 };
144 
145 // This struct holds all results from titration calculations
147  std::vector<std::string> requiredFunctionalGroups;
152  std::map<int, std::unique_ptr<Utils::AtomCollection>> vectorOfOptimizedNonRefStructures;
153  std::map<int, std::unique_ptr<Utils::HessianMatrix>> vectorOfHessiansForNonRefStates;
158  std::vector<StructurePreparation::TitrableSite> sites;
159  std::map<int, std::pair<double, double>> electronicEnergies;
160 
161  std::vector<TrainingData> trainingData;
162 };
163 
164 } // namespace MMParametrization
165 } // namespace Scine
166 
167 #endif // MMPARAMETRIZATION_DATAMANAGER_H
std::map< int, int > unpairedElectrons
A map containing the indices of atoms and the number of unpaired electrons that can be assigned to th...
Definition: ParametrizationData.h:112
Class containing the structural information about the connectivity of a system.
Definition: IndexedStructuralTopology.h:25
std::map< int, int > formalCharges
A map containing the indices of atoms and their formal charge in the full system. ...
Definition: ParametrizationData.h:107
std::map< int, std::string > pHSensitiveSites
A map containing the indices of atoms of which the protonation state can be changed and the correspon...
Definition: ParametrizationData.h:117
Utils::AtomCollection fullStructure
The structure of the entire system to parametrize.
Definition: ParametrizationData.h:33
std::vector< std::string > vectorOfAtomTypesForParameter
Vector that holds the atom types of the parameter currently optimized.
Definition: ParametrizationData.h:99
std::vector< std::unique_ptr< Utils::AtomCollection > > vectorOfOptimizedStructures
Vector of unique pointers to molecular structures that represent the optimized subsystems of the para...
Definition: ParametrizationData.h:56
std::vector< std::unique_ptr< Utils::HessianMatrix > > vectorOfHessians
Vector of unique pointers to dense Eigen matrices that represent the Hessians of the subsystems of th...
Definition: ParametrizationData.h:46
std::map< int, std::unique_ptr< Utils::AtomCollection > > vectorOfOptimizedNonRefStructures
Vector of unique pointers to molecular structures that represent the optimized subsystems of the pH s...
Definition: ParametrizationData.h:152
Definition: ParametrizationData.h:139
std::vector< int > superfluousFragments
A vector of fragment indices which are superfluous and for which the reference data does not need to ...
Definition: ParametrizationData.h:136
MolecularMechanics::AtomTypesHolder atomTypes
The atom types.
Definition: ParametrizationData.h:90
std::vector< std::vector< int > > atomIndexMapping
Vector of all fragments containing a vector of indices that correspond to the indices of the atoms in...
Definition: ParametrizationData.h:126
std::vector< std::unique_ptr< Utils::AtomCollection > > vectorOfStructures
Vector of unique pointers to molecular structures that represent the subsystems of the parametrizatio...
Definition: ParametrizationData.h:51
int numberOfAtoms
Number of atoms in the full structure.
Definition: ParametrizationData.h:37
std::vector< std::pair< int, int > > vectorOfHessianSubmatrixIndices
Vector that holds the pairs of atom indices corresponding to the partial Hessian blocks relevant for ...
Definition: ParametrizationData.h:95
Class containing the MM atom types of the atoms in a molecular system.
Definition: AtomTypesHolder.h:21
Definition: ParametrizationData.h:146
std::vector< std::unique_ptr< Utils::BondOrderCollection > > vectorOfBondOrderCollections
Vector of unique pointers to bond order matrices for for each molecular structure representing a subs...
Definition: ParametrizationData.h:66
std::vector< std::pair< int, int > > vectorOfChargesAndMultiplicities
Vector of charge and spin multiplicity pairs for each molecular structure representing a subsystem of...
Definition: ParametrizationData.h:61
MolecularMechanics::SfamParameters parameters
The SFAM molecular mechanics parameters.
Definition: ParametrizationData.h:86
std::vector< std::vector< int > > constrainedAtoms
Contains the indices of the atoms to be constrained during a geometry optimization for each fragment...
Definition: ParametrizationData.h:131
Eigen::SparseMatrix< double > fullHessian
Full Hessian matrix of the system that only contains the subblocks needed for the parametrization pro...
Definition: ParametrizationData.h:41
This struct holds all objects used inside the MM parametrization algorithm.
Definition: ParametrizationData.h:29
std::vector< bool > siteIspHSensitive
A vector that indicates whether a fragment is pH sensitive.
Definition: ParametrizationData.h:121
Utils::BondOrderCollection bondOrders
A bond order matrix of the full system.
Definition: ParametrizationData.h:103
std::vector< std::list< int > > listsOfNeighbors
The connectivity of the system. It is a vector of a list of neighbor atom indices for each atom...
Definition: ParametrizationData.h:78
Class containing the parameters for SFAM&#39;s MM model obtained after parsing a SFAM parameter file...
Definition: SfamParameters.h:37
std::vector< std::vector< double > > atomicChargesForEachFragment
Vector that holds the atomic charges for each fragment of the system.
Definition: ParametrizationData.h:74
MolecularMechanics::IndexedStructuralTopology topology
Topology of the system.
Definition: ParametrizationData.h:82
std::vector< double > atomicCharges
Atomic charges for the whole system calculated from fragments.
Definition: ParametrizationData.h:70
std::vector< StructurePreparation::TitrableSite > sites
This map stores a pair of electronic energies (reference state and (charged) non-reference state) cor...
Definition: ParametrizationData.h:158