Scine::Swoose  1.0.0
This is the SCINE module Swoose.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
SfamPotentialTermsGenerator.h
Go to the documentation of this file.
1 
8 #ifndef MOLECULARMECHANICS_SFAMPOTENTIALTERMSGENERATOR_H
9 #define MOLECULARMECHANICS_SFAMPOTENTIALTERMSGENERATOR_H
10 
11 #include "../Interactions/AngleTerm.h"
12 #include "../Interactions/BondedTerm.h"
13 #include "../Interactions/DihedralTerm.h"
14 #include "../Interactions/DispersionTerm.h"
15 #include "../Interactions/ElectrostaticTerm.h"
16 #include "../Interactions/HydrogenBondTerm.h"
17 #include "../Interactions/ImproperDihedralTerm.h"
18 #include "../Interactions/RepulsionTerm.h"
19 #include <vector>
20 
21 namespace Scine {
22 
23 namespace Core {
24 class Log;
25 } // namespace Core
26 
27 namespace MolecularMechanics {
28 class IndexedStructuralTopology;
29 class AtomTypesHolder;
30 class SfamParameters;
31 
40  public:
50  SfamPotentialTermsGenerator(int nAtoms, const AtomTypesHolder& atomTypes, const IndexedStructuralTopology& topology,
51  const SfamParameters& parameters, const Utils::PositionCollection& positions,
52  const double& nonCovalentCutoffRadius, Core::Log& log);
53 
55  std::vector<BondedTerm> getBondedTerms();
57  std::vector<AngleTerm> getAngleTerms();
59  std::vector<DihedralTerm> getDihedralTerms();
61  std::vector<ImproperDihedralTerm> getImproperDihedralTerms();
63  std::vector<DispersionTerm> getDispersionTerms(bool applyCutoff);
65  std::vector<RepulsionTerm> getRepulsionTerms(bool applyCutoff);
67  std::vector<ElectrostaticTerm> getElectrostaticTerms(bool applyCutoff);
69  std::vector<HydrogenBondTerm> getHydrogenBondTerms();
70 
71  private:
72  int nAtoms_;
73  const AtomTypesHolder& atomTypesHolder_;
74  const IndexedStructuralTopology& topology_;
75  const SfamParameters& parameters_;
76  const Utils::PositionCollection& positions_;
77  /*
78  * @brief The cutoff radius for the non-covalent interactions.
79  *
80  * It is a pointer so that it is updated with the settings.
81  * This is important since it is passed on from here to the actual DispersionTerms, etc.
82  * A reference does not work because then the assignment operator of DispersionTerms, etc. vanishes.
83  */
84  std::shared_ptr<double> cutoff_;
85  // The logger
86  Core::Log& log_;
87 
88  static constexpr double scalingFactorForElectrostaticOneFourTerms_ = 1.0;
89  static constexpr double scalingFactorForDispersionOneFourTerms_ = 1.0;
90  static constexpr double scalingFactorForRepulsionOneFourTerms_ = 1.0;
91 };
92 
93 } // namespace MolecularMechanics
94 } // namespace Scine
95 
96 #endif // MOLECULARMECHANICS_SFAMPOTENTIALTERMSGENERATOR_H
Class containing the structural information about the connectivity of a system.
Definition: IndexedStructuralTopology.h:25
std::vector< HydrogenBondTerm > getHydrogenBondTerms()
Getter for hydrogen bond terms.
Definition: SfamPotentialTermsGenerator.cpp:174
This class creates the actual potential terms that are employed during an SFAM molecular mechanics ca...
Definition: SfamPotentialTermsGenerator.h:39
std::vector< RepulsionTerm > getRepulsionTerms(bool applyCutoff)
Getter for Pauli repulsion terms with decision whether to use a cutoff radius.
Definition: SfamPotentialTermsGenerator.cpp:137
Class containing the MM atom types of the atoms in a molecular system.
Definition: AtomTypesHolder.h:21
std::vector< BondedTerm > getBondedTerms()
Getter for bonded terms.
Definition: SfamPotentialTermsGenerator.cpp:33
std::vector< DispersionTerm > getDispersionTerms(bool applyCutoff)
Getter for dispersion terms with decision whether to use a cutoff radius.
Definition: SfamPotentialTermsGenerator.cpp:100
std::vector< ImproperDihedralTerm > getImproperDihedralTerms()
Getter for improper dihedral terms.
Definition: SfamPotentialTermsGenerator.cpp:73
std::vector< DihedralTerm > getDihedralTerms()
Getter for dihedral terms.
Definition: SfamPotentialTermsGenerator.cpp:41
std::vector< ElectrostaticTerm > getElectrostaticTerms(bool applyCutoff)
Getter for electrostatic terms with decision whether to use a cutoff radius.
Definition: SfamPotentialTermsGenerator.cpp:167
SfamPotentialTermsGenerator(int nAtoms, const AtomTypesHolder &atomTypes, const IndexedStructuralTopology &topology, const SfamParameters &parameters, const Utils::PositionCollection &positions, const double &nonCovalentCutoffRadius, Core::Log &log)
Constructor.
Definition: SfamPotentialTermsGenerator.cpp:19
Class containing the parameters for SFAM&#39;s MM model obtained after parsing a SFAM parameter file...
Definition: SfamParameters.h:37
std::vector< AngleTerm > getAngleTerms()
Getter for angle terms.
Definition: SfamPotentialTermsGenerator.cpp:37