Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
systems.cpp
Go to the documentation of this file.
1 #include <unittest++/UnitTest++.h>
2 
7 #include <iomanip>
8 
9 using namespace std;
10 
11 SUITE(Systems) {
12  TEST(Dummy) {
13 
14  }
15 
16  TEST(Water) {
17  vector<GaussianCore> cores;
18  cores.push_back(GaussianCore({0,0,0}, "atom_8_basis_4-31G.tm"));
19  cores.push_back(GaussianCore({-1.43,1.108,0}, "atom_1_basis_4-31G.tm"));
20  cores.push_back(GaussianCore({1.43,1.108,0}, "atom_1_basis_4-31G.tm"));
21  GaussianSystem system;
22  for(const GaussianCore &core : cores) {
23  system.addCore(core);
24  }
25  mat C;
26  RestrictedHartreeFockSolver solver(&system);
27  solver.setConvergenceTreshold(1e-12);
28  solver.setNIterationsMax(1e3);
29  solver.setDensityMixFactor(0.5);
30  solver.solve();
31  CHECK_CLOSE(solver.energy(), -75.90736859918989, 1e-6);
32  }
33  TEST(HydrogenMolecule) {
34  vector<GaussianCore> cores;
35  cores.push_back(GaussianCore({0,0,0}, "atom_1_basis_3-21G.tm"));
36  cores.push_back(GaussianCore({1.4,0.0,0}, "atom_1_basis_3-21G.tm"));
37  GaussianSystem system;
38  for(const GaussianCore &core : cores) {
39  system.addCore(core);
40  }
41  RestrictedHartreeFockSolver solver(&system);
42  solver.setConvergenceTreshold(1e-12);
43  solver.setNIterationsMax(1e3);
44  solver.setDensityMixFactor(0.5);
45  solver.solve();
46  CHECK_CLOSE(-1.122933363617109, solver.energy(), 1e-6);
47  }
48  TEST(HydrogenMolecule631Gdsds) {
49  vector<GaussianCore> cores;
50  cores.push_back(GaussianCore({0,0,0}, "atom_1_basis_6-31Gdsds.tm"));
51  cores.push_back(GaussianCore({1.4,0.0,0}, "atom_1_basis_6-31Gdsds.tm"));
52  GaussianSystem system;
53  for(const GaussianCore &core : cores) {
54  system.addCore(core);
55  }
56  RestrictedHartreeFockSolver solver(&system);
57  solver.setConvergenceTreshold(1e-12);
58  solver.setNIterationsMax(1e3);
59  solver.setDensityMixFactor(0.5);
60  solver.solve();
61  CHECK_CLOSE(-1.13128434930047, solver.energy(), 1e-6);
62  }
63  TEST(Neon321) {
64  vector<GaussianCore> cores;
65  cores.push_back(GaussianCore({0,0,0}, "atom_10_basis_3-21G.tm"));
66  GaussianSystem system;
67  for(const GaussianCore &core : cores) {
68  system.addCore(core);
69  }
70  mat C;
71  RestrictedHartreeFockSolver solver(&system);
72  solver.setConvergenceTreshold(1e-12);
73  solver.setNIterationsMax(1e3);
74  solver.setDensityMixFactor(0.5);
75  solver.solve();
76  CHECK_CLOSE(-127.8038245281864, solver.energy(), 1e-5);
77  }
78  TEST(OxygenSix) {
79  vector<GaussianCore> cores;
80  cores.push_back(GaussianCore({0,0,0}, "atom_8_basis_6-311G.tm"));
81  cores.push_back(GaussianCore({2.282,0,0}, "atom_8_basis_6-311G.tm"));
82  GaussianSystem system;
83  for(const GaussianCore &core : cores) {
84  system.addCore(core);
85  }
86  mat C;
87  RestrictedHartreeFockSolver solver(&system);
88  solver.setConvergenceTreshold(1e-12);
89  solver.setNIterationsMax(1e4);
90  solver.setDensityMixFactor(0.5);
91  solver.solve();
92  CHECK_CLOSE(-149.5117583638509, solver.energy(), 1e-5);
93  }
94  TEST(OxygenSixAsterisk) {
95  vector<GaussianCore> cores;
96  cores.push_back(GaussianCore({0,0,0}, "atom_8_basis_6-31Gds.tm"));
97  cores.push_back(GaussianCore({2.282,0,0}, "atom_8_basis_6-31Gds.tm"));
98  GaussianSystem system;
99  for(const GaussianCore &core : cores) {
100  system.addCore(core);
101  }
102  mat C;
103  UnrestrictedHartreeFockSolver solver(&system);
104  solver.setConvergenceTreshold(1e-8);
105  solver.setNIterationsMax(1e4);
106  solver.setDensityMixFactor(0.5);
107  solver.setDiisEnabled(false);
108  solver.solve();
109  CHECK_CLOSE(-149.5876095851103, solver.energy(), 1e-5);
110  }
111 }