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
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 #include <vector>
14 
15 namespace Scine {
16 namespace Sparrow {
17 namespace nddo {
18 
20 struct Parameters {
24  struct Atomic {
27 
33  struct Pack {
36  struct Spd {
37  double s = 0;
38  double p = 0;
39  double d = 0;
40 
41  template<class Archive>
42  void serialize(Archive& archive);
43  };
45 
57  double gss = 0;
59  double gpp = 0;
61  double gsp = 0;
63  double gp2 = 0;
65  double hsp = 0;
67  double pcore = 0;
69  double f0sd = 0;
71  double g2sd = 0;
73  double alpha = 0;
75 
76  template<class Archive>
77  void serialize(Archive& archive);
78  };
79 
81  double a = 0;
82  double b = 0;
83  double c = 0;
85  template<class Archive>
86  void serialize(Archive& archive);
87  };
89 
95  std::vector<GaussianRepulsion> gaussianRepulsion;
97 
98  template<class Archive>
99  void serialize(Archive& archive);
100  };
101 
103  struct Diatomic {
105  double exponent = 0;
107  double factor = 0;
108 
109  template<class Archive>
110  void serialize(Archive& archive);
111  };
112 
113  using DiatomicKey = std::pair<int, int>;
115 
119  static DiatomicKey key(int Z1, int Z2);
120  static DiatomicKey key(Utils::ElementType a, Utils::ElementType b);
122  static Parameters read(const std::string& filename);
124 
128  void write(const std::string& filename) const;
130 
134  std::unordered_map<int, Atomic> atomic;
136  std::unordered_map<DiatomicKey, Diatomic, boost::hash<DiatomicKey>> diatomic;
138 };
139 
141 Parameters rm1();
143 Parameters am1();
145 Parameters pm3();
147 Parameters pm6();
149 Parameters mndo();
150 
151 } // namespace nddo
152 } // namespace Sparrow
153 } // namespace Scine
154 
155 #endif
std::unordered_map< DiatomicKey, Diatomic, boost::hash< DiatomicKey > > diatomic
Map from two atomic numbers to diatomic parameters.
Definition: Parameters.h:136
Spd internalExponent
Internal exponent for each orbital, needed for Slater-Condon in bohr^(-1) (zsn, zpn, zdn)
Definition: Parameters.h:55
Pack of implicitly constexpr part of atomic parameters.
Definition: Parameters.h:33
double g2sd
Slater-Condon parameter G2sd (eV)
Definition: Parameters.h:71
static Parameters read(const std::string &filename)
Read parameters from a JSON file.
Definition: Parameters.cpp:76
double alpha
MNDO XXX.
Definition: Parameters.h:73
double gpp
One-center Coulomb integral p-p (eV)
Definition: Parameters.h:59
double exponent
Exponent of pairwise repulsion (A^(-1), for N-H / O-H / C-H A^(-2))
Definition: Parameters.h:105
Diatomic parameters.
Definition: Parameters.h:103
Spd orbitalExponent
Orbital exponent for each orbital in bohr^(-1) (zs, zp, zd)
Definition: Parameters.h:53
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:69
double factor
Factor of pairwise repulsion.
Definition: Parameters.h:107
double hsp
One-center exchange integral s-s (eV)
Definition: Parameters.h:65
Definition: Parameters.h:24
std::vector< GaussianRepulsion > gaussianRepulsion
Gaussian repulsion parameters (usually 0-3)
Definition: Parameters.h:95
double gss
One-center Coulomb integral s-s (eV)
Definition: Parameters.h:57
Pack pack
Gaussian repulsion parameters (usually 0-3)
Definition: Parameters.h:93
double gp2
One-center Coulomb integral p-p&#39; (eV)
Definition: Parameters.h:63
double gsp
One-center Coulomb integral s-p (eV)
Definition: Parameters.h:61
double pcore
Klopman-Ohno term for core-core repulsion, sometimes different to pss0 (bohr)
Definition: Parameters.h:67
Spd oneCenterEnergy
Beta parameter for each orbital in eV (bs, bp, bd)
Definition: Parameters.h:49
Nddo method parameters.
Definition: Parameters.h:20
std::unordered_map< int, Atomic > atomic
Map from two atomic numbers to diatomic parameters.
Definition: Parameters.h:134
Spd beta
Beta parameter for each orbital in eV (bs, bp, bd)
Definition: Parameters.h:51