Scine::Sparrow  5.0.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
ChargeSeparationParameter.h
Go to the documentation of this file.
1 
8 #ifndef SPARROW_CHARGESEPARATIONPARAMETER_H
9 #define SPARROW_CHARGESEPARATIONPARAMETER_H
10 
12 #include <array>
13 
14 namespace Scine {
15 namespace Sparrow {
16 namespace nddo {
17 namespace multipole {
18 
30  public:
33 
41  void computeFromExponents(unsigned int ns, unsigned int np, double zs, double zp);
52  void computeFromExponents(unsigned int ns, unsigned int np, unsigned int nd, double zs, double zp, double zd);
59  void set(MultipolePair type, double value);
65  double get(MultipolePair type) const;
66 
67  private:
69  long long factorial(long long n) const;
71  double A(unsigned int n1, unsigned int n2, double z1, double z2, int L) const;
72  std::array<double, 5> D_;
73 };
74 
75 inline void ChargeSeparationParameter::set(nddo::multipole::MultipolePair type, double value) {
76  using Underlying = std::underlying_type<nddo::multipole::MultipolePair>::type;
77  D_[static_cast<Underlying>(type)] = value;
78 }
79 
80 inline double ChargeSeparationParameter::get(nddo::multipole::MultipolePair type) const {
81  using Underlying = std::underlying_type<nddo::multipole::MultipolePair>::type;
82  return D_[static_cast<Underlying>(type)];
83 }
84 
85 } // namespace multipole
86 } // namespace nddo
87 } // namespace Sparrow
88 } // namespace Scine
89 #endif // SPARROW_CHARGESEPARATIONPARAMETER_H
void computeFromExponents(unsigned int ns, unsigned int np, double zs, double zp)
calculates the charge separation from the main quantum numbers and the orbital exponents of s and p o...
Definition: ChargeSeparationParameter.cpp:24
void set(MultipolePair type, double value)
sets the value of a charge separation for a given multipole type
Definition: ChargeSeparationParameter.h:75
double get(MultipolePair type) const
gets the value corresponding to one of the multipolescharge configuration.
Definition: ChargeSeparationParameter.h:80
ChargeSeparationParameter()
constructor, resets the charge separation array to zero.
Definition: ChargeSeparationParameter.cpp:18
Charge separation D of semi-empirical models. It describes the separation between two charges of oppo...
Definition: ChargeSeparationParameter.h:29