8 #ifndef SWOOSE_QMMM_INTERACTIONTERMELIMINATOR_H
9 #define SWOOSE_QMMM_INTERACTIONTERMELIMINATOR_H
12 #include <unordered_set>
17 namespace MolecularMechanics {
18 class MolecularMechanicsCalculator;
22 class ImproperDihedralTerm;
25 class ElectrostaticTerm;
26 class HydrogenBondTerm;
27 class LennardJonesTerm;
28 class InteractionTermBase;
42 std::shared_ptr<MolecularMechanics::MolecularMechanicsCalculator> calculator);
60 void eliminateBondedTerms(std::vector<MolecularMechanics::BondedTerm>& bondedTerms);
63 void eliminateAngleTerms(std::vector<MolecularMechanics::AngleTerm>& angleTerms);
71 void eliminateDihedralTerms(std::vector<MolecularMechanics::DihedralTerm>& dihedralTerms,
bool gaffImproper =
false);
74 void eliminateImproperDihedralTerms(std::vector<MolecularMechanics::ImproperDihedralTerm>& improperDihedralTerms);
77 void eliminateDispersionTerms(std::vector<MolecularMechanics::DispersionTerm>& dispersionTerms);
80 void eliminateRepulsionTerms(std::vector<MolecularMechanics::RepulsionTerm>& repulsionTerms);
83 void eliminateLennardJonesTerms(std::vector<MolecularMechanics::LennardJonesTerm>& ljTerms);
86 void eliminateHydrogenBondTerms(std::vector<MolecularMechanics::HydrogenBondTerm>& hydrogenBondTerms);
93 void eliminateElectrostaticTerms(std::vector<MolecularMechanics::ElectrostaticTerm>& electrostaticTerms,
94 bool electrostaticEmbedding);
104 bool isQmAtom(
int index);
108 void enableTerms(std::vector<T>& terms);
111 template<
typename CalculatorType>
112 void eliminateSharedInteractionTerms(
bool electrostaticEmbedding, CalculatorType& calculator);
115 template<
typename CalculatorType>
116 void enableSharedInteractionTerms(CalculatorType& calculator);
119 std::unordered_set<int> qmAtoms_;
122 std::shared_ptr<MolecularMechanics::MolecularMechanicsCalculator> calculator_;
125 bool eliminateEnvironmentOnlyTerms_ =
false;
131 #endif // SWOOSE_QMMM_INTERACTIONTERMELIMINATOR_H
InteractionTermEliminator(const std::vector< int > &listOfQmAtoms, std::shared_ptr< MolecularMechanics::MolecularMechanicsCalculator > calculator)
Constructor.
Definition: InteractionTermEliminator.cpp:15
This class handles the elimination of MM interaction terms, which are already covered by the QM calcu...
Definition: InteractionTermEliminator.h:38
Base class for all interaction terms.
Definition: InteractionTermBase.h:18
void eliminateInteractionTerms(bool electrostaticEmbedding, bool eliminateEnvironmentOnlyTerms=false)
Eliminates the interactions terms in an MM calculator for QM/MM, which are already covered by the QM ...
Definition: InteractionTermEliminator.cpp:20
void reset()
Enables all of the interactions terms (reverting elimination and therefore resetting the state of the...
Definition: InteractionTermEliminator.cpp:163