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 struct ImproperDihedralType;
50 :
public Utils::CloneInterface<SfamMolecularMechanicsCalculator, MolecularMechanicsCalculator, Core::Calculator> {
52 static constexpr
const char* model =
"SFAM";
82 std::string
name()
const override;
89 void setListsOfNeighbors(std::vector<std::list<int>> listsOfNeighbors);
102 std::unique_ptr<BondsEvaluator> bondsEvaluator_;
103 std::unique_ptr<AnglesEvaluator> anglesEvaluator_;
104 std::unique_ptr<DihedralsEvaluator> dihedralsEvaluator_;
105 std::unique_ptr<ImproperDihedralsEvaluator> improperDihedralsEvaluator_;
106 std::unique_ptr<DispersionEvaluator> dispersionEvaluator_;
107 std::unique_ptr<RepulsionEvaluator> repulsionEvaluator_;
108 std::unique_ptr<ElectrostaticEvaluator> electrostaticEvaluator_;
109 std::unique_ptr<HydrogenBondEvaluator> hydrogenBondEvaluator_;
112 bool printContributionsMolecularMechanics_;
113 bool onlyCalculateBondedContribution_;
114 bool detectBondsWithCovalentRadii_;
115 bool includeHydrogenBonds_;
121 bool applyCutoffDuringInitialization_;
122 double nonCovalentCutoffRadius_;
123 SfamAtomTypeLevel sfamAtomTypeLevel_;
124 std::string connectivityFilePath_;
125 std::string parameterFilePath_;
132 bool parameterFilePathHasBeenChanged_ =
false;
135 bool parametersHaveBeenSetInternally_ =
false;
137 bool hessianMode_ =
false;
142 void generatePotentialTerms(
const std::string& parameterPath);
148 std::vector<int> atomsToConsiderForHessian_ = {};
150 void setAtomsToConsiderForHessian(std::vector<int> atomsToConsiderForHessian);
156 #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:95
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:112
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:39
~SfamMolecularMechanicsCalculator() override=default
Default Destructor.
Definition: UpdateFunctionManager.h:37
void modifyPositions(Utils::PositionCollection newPositions) override
Allows to modify the positions of the underlying Utils::AtomCollection.
Definition: SfamMolecularMechanicsCalculator.cpp:101
Class containing the parameters for SFAM's MM model obtained after parsing a SFAM parameter file...
Definition: SfamParameters.h:37