Scine::Swoose  2.1.0
This is the SCINE module Swoose.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
RepulsionParameters.h
Go to the documentation of this file.
1 
8 #ifndef MOLECULARMECHANICS_REPULSIONPARAMETERS_H
9 #define MOLECULARMECHANICS_REPULSIONPARAMETERS_H
10 
11 #include <Utils/Typenames.h>
12 #include <Eigen/Core>
13 #include <memory>
14 
15 namespace Scine {
16 namespace MolecularMechanics {
17 
23  public:
29  explicit RepulsionParameters(const Eigen::MatrixXd& R0, const double& betaRepulsion);
33  double getEffectiveCharge(Utils::ElementType element) const;
37  double getR0(int atom1Index, int atom2Index) const;
41  double getBetaRepulsion();
42 
43  private:
44  int getValenceElectronNumbers(Utils::ElementType element) const;
45  double getValenceElectronScalingFactor(Utils::ElementType element) const;
46 
47  // The matrix of D3 cutoff radii.
48  const Eigen::MatrixXd& R0_;
49 
50  // The global beta parameter for the Pauli repulsion.
51  double betaRepulsion_;
52 
53  // Taken from J. Chem. Theory Comput. 2014, 10, 4497-4514
54  double valenceElectronScalingFactors_[94] = {
55  2.35, 2.35, 1.7, 5.5, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 2.5, 3.0, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 3.0,
56  3.0, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 3.0, 3.0,
57  0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 0.63, 3.0, 3.0, 0.6,
58  0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,
59  0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 3.0, 3.0, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6};
60 
61  // Taken from wikipedia: https://en.wikipedia.org/wiki/List_of_elements_by_atomic_properties
62  int valenceElectrons_[94] = {1, 2, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 2, 2, 2, 1,
63  2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2,
64  3, 4, 5, 6, 7, 8, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
65  2, 2, 2, 2, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 2, 2, 2, 2, 2, 2};
66 };
67 
68 } // namespace MolecularMechanics
69 } // namespace Scine
70 
71 #endif // MOLECULARMECHANICS_REPULSIONPARAMETERS_H
RepulsionParameters(const Eigen::MatrixXd &R0, const double &betaRepulsion)
Constructor.
Definition: RepulsionParameters.cpp:14
double getR0(int atom1Index, int atom2Index) const
Getter for the D3 cutoff radius R0 for two atoms.
Definition: RepulsionParameters.cpp:22
double getEffectiveCharge(Utils::ElementType element) const
Getter for the effective charge of a certain element.
Definition: RepulsionParameters.cpp:18
Class handling the parameters needed for the repulsive non-bonded interaction term.
Definition: RepulsionParameters.h:22
double getBetaRepulsion()
Getter for beta parameter.
Definition: RepulsionParameters.cpp:26