8 #ifndef SFAMMOLECULARMECHANICSCALCULATOR_H
9 #define SFAMMOLECULARMECHANICSCALCULATOR_H
11 #include "../Interactions/AnglesEvaluator.h"
12 #include "../Interactions/BondsEvaluator.h"
13 #include "../Interactions/DihedralsEvaluator.h"
14 #include "../Interactions/DispersionEvaluator.h"
15 #include "../Interactions/ElectrostaticEvaluator.h"
16 #include "../Interactions/HydrogenBondEvaluator.h"
17 #include "../Interactions/ImproperDihedralsEvaluator.h"
18 #include "../Interactions/RepulsionEvaluator.h"
19 #include "../MolecularMechanicsCalculator.h"
20 #include "../Topology/IndexedStructuralTopology.h"
26 namespace MMParametrization {
27 class UpdateFunctionManager;
31 class InteractionTermEliminator;
34 namespace MolecularMechanics {
36 class AtomTypesHolder;
40 class ImproperDihedralType;
52 static constexpr
const char* model =
"SFAM";
77 std::string
name()
const override;
84 void setListsOfNeighbors(std::vector<std::list<int>> listsOfNeighbors);
97 std::unique_ptr<BondsEvaluator> bondsEvaluator_;
98 std::unique_ptr<AnglesEvaluator> anglesEvaluator_;
99 std::unique_ptr<DihedralsEvaluator> dihedralsEvaluator_;
100 std::unique_ptr<ImproperDihedralsEvaluator> improperDihedralsEvaluator_;
101 std::unique_ptr<DispersionEvaluator> dispersionEvaluator_;
102 std::unique_ptr<RepulsionEvaluator> repulsionEvaluator_;
103 std::unique_ptr<ElectrostaticEvaluator> electrostaticEvaluator_;
104 std::unique_ptr<HydrogenBondEvaluator> hydrogenBondEvaluator_;
105 bool printContributionsMolecularMechanics_;
106 bool onlyCalculateBondedContribution_;
107 bool detectBondsWithCovalentRadii_;
108 bool includeHydrogenBonds_;
114 bool applyCutoffDuringInitialization_;
115 double nonCovalentCutoffRadius_;
116 SfamAtomTypeLevel sfamAtomTypeLevel_;
117 std::string connectivityFilePath_;
118 std::string parameterFilePath_;
125 bool parameterFilePathHasBeenChanged_ =
false;
128 bool parametersHaveBeenSetInternally_ =
false;
130 bool hessianMode_ =
false;
135 void generatePotentialTerms(
const std::string& parameterPath);
141 std::vector<int> atomsToConsiderForHessian_ = {};
143 void setAtomsToConsiderForHessian(std::vector<int> atomsToConsiderForHessian);
149 #endif // SFAMMOLECULARMECHANICSCALCULATOR_H
std::string name() const override
Getter for the name of the Calculator.
Definition: SfamMolecularMechanicsCalculator.cpp:25
Class containing the structural information about the connectivity of a system.
Definition: IndexedStructuralTopology.h:25
void setStructure(const Utils::AtomCollection &structure) override
Changes the molecular structure to calculate.
Definition: SfamMolecularMechanicsCalculator.cpp:92
SfamMolecularMechanicsCalculator()
Constructor.
Definition: SfamMolecularMechanicsCalculator.cpp:29
Calculator for the SFAM Molecular Mechanics method.
Definition: SfamMolecularMechanicsCalculator.h:49
const Utils::Results & calculate(std::string description) override
The main function running calculations.
Definition: SfamMolecularMechanicsCalculator.cpp:98
Class containing the MM atom types of the atoms in a molecular system.
Definition: AtomTypesHolder.h:21
This class handles the elimination of MM interaction terms, which are already covered by the QM calcu...
Definition: InteractionTermEliminator.h:38
~SfamMolecularMechanicsCalculator() override=default
Default Destructor.
Definition: UpdateFunctionManager.h:37
Class containing the parameters for SFAM's MM model obtained after parsing a SFAM parameter file...
Definition: SfamParameters.h:37