Scine::Sparrow  3.1.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Parameters.h
Go to the documentation of this file.
1 
7 #ifndef INCLUDE_SPARROW_NDDO_PARAMETERS_H
8 #define INCLUDE_SPARROW_NDDO_PARAMETERS_H
9 
11 #include "boost/functional/hash.hpp"
12 #include <unordered_map>
13 
14 namespace Scine {
15 namespace Sparrow {
16 namespace nddo {
17 
19 struct Parameters {
23  struct Atomic {
26 
32  struct Pack {
35  struct Spd {
36  double s = 0;
37  double p = 0;
38  double d = 0;
39 
40  template<class Archive>
41  void serialize(Archive& archive);
42  };
44 
56  double gss = 0;
58  double gpp = 0;
60  double gsp = 0;
62  double gp2 = 0;
64  double hsp = 0;
66  double pcore = 0;
68  double f0sd = 0;
70  double g2sd = 0;
72  double alpha = 0;
74 
75  template<class Archive>
76  void serialize(Archive& archive);
77  };
78 
80  double a = 0;
81  double b = 0;
82  double c = 0;
84  template<class Archive>
85  void serialize(Archive& archive);
86  };
88 
94  std::vector<GaussianRepulsion> gaussianRepulsion;
96 
97  template<class Archive>
98  void serialize(Archive& archive);
99  };
100 
102  struct Diatomic {
104  double exponent = 0;
106  double factor = 0;
107 
108  template<class Archive>
109  void serialize(Archive& archive);
110  };
111 
112  using DiatomicKey = std::pair<int, int>;
114 
118  static DiatomicKey key(int Z1, int Z2);
119  static DiatomicKey key(Utils::ElementType a, Utils::ElementType b);
121  static Parameters read(const std::string& filename);
123 
127  void write(const std::string& filename) const;
129 
133  std::unordered_map<int, Atomic> atomic;
135  std::unordered_map<DiatomicKey, Diatomic, boost::hash<DiatomicKey>> diatomic;
137 };
138 
140 Parameters rm1();
142 Parameters am1();
144 Parameters pm3();
146 Parameters pm6();
148 Parameters mndo();
149 
150 } // namespace nddo
151 } // namespace Sparrow
152 } // namespace Scine
153 
154 #endif
std::unordered_map< DiatomicKey, Diatomic, boost::hash< DiatomicKey > > diatomic
Map from two atomic numbers to diatomic parameters.
Definition: Parameters.h:135
Spd internalExponent
Internal exponent for each orbital, needed for Slater-Condon in bohr^(-1) (zsn, zpn, zdn)
Definition: Parameters.h:54
Pack of implicitly constexpr part of atomic parameters.
Definition: Parameters.h:32
double g2sd
Slater-Condon parameter G2sd (eV)
Definition: Parameters.h:70
static Parameters read(const std::string &filename)
Read parameters from a JSON file.
Definition: Parameters.cpp:76
double alpha
MNDO XXX.
Definition: Parameters.h:72
double gpp
One-center Coulomb integral p-p (eV)
Definition: Parameters.h:58
double exponent
Exponent of pairwise repulsion (A^(-1), for N-H / O-H / C-H A^(-2))
Definition: Parameters.h:104
Diatomic parameters.
Definition: Parameters.h:102
Spd orbitalExponent
Orbital exponent for each orbital in bohr^(-1) (zs, zp, zd)
Definition: Parameters.h:52
static DiatomicKey key(int Z1, int Z2)
Read parameters from a JSON file.
Definition: Parameters.cpp:64
double f0sd
Slater-Condon parameter F0sd (eV)
Definition: Parameters.h:68
double factor
Factor of pairwise repulsion.
Definition: Parameters.h:106
double hsp
One-center exchange integral s-s (eV)
Definition: Parameters.h:64
Definition: Parameters.h:23
std::vector< GaussianRepulsion > gaussianRepulsion
Gaussian repulsion parameters (usually 0-3)
Definition: Parameters.h:94
double gss
One-center Coulomb integral s-s (eV)
Definition: Parameters.h:56
Pack pack
Gaussian repulsion parameters (usually 0-3)
Definition: Parameters.h:92
double gp2
One-center Coulomb integral p-p&#39; (eV)
Definition: Parameters.h:62
double gsp
One-center Coulomb integral s-p (eV)
Definition: Parameters.h:60
double pcore
Klopman-Ohno term for core-core repulsion, sometimes different to pss0 (bohr)
Definition: Parameters.h:66
Spd oneCenterEnergy
Beta parameter for each orbital in eV (bs, bp, bd)
Definition: Parameters.h:48
Nddo method parameters.
Definition: Parameters.h:19
std::unordered_map< int, Atomic > atomic
Map from two atomic numbers to diatomic parameters.
Definition: Parameters.h:133
Spd beta
Beta parameter for each orbital in eV (bs, bp, bd)
Definition: Parameters.h:50