Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
unrestricted.cpp
Go to the documentation of this file.
4 
5 #include <iostream>
6 
7 #include <unittest++/UnitTest++.h>
8 
9 using std::cout;
10 using std::endl;
11 
12 SUITE(Unrestricted) {
13  TEST(HydrogenMolecule) {
14  vector<GaussianCore> cores;
15  cores.push_back(GaussianCore({0,0,0}, "atom_1_basis_3-21G.tm"));
16  cores.push_back(GaussianCore({1.4,0.0,0}, "atom_1_basis_3-21G.tm"));
17  GaussianSystem system;
18  for(const GaussianCore &core : cores) {
19  system.addCore(core);
20  }
21  UnrestrictedHartreeFockSolver solver(&system);
22  solver.setConvergenceTreshold(1e-12);
23  solver.setNIterationsMax(1e3);
24  solver.setDensityMixFactor(0.5);
25  solver.solve();
26  CHECK_CLOSE(-1.122933363617109, solver.energy(), 1e-6);
27  }
28 
29  TEST(HydrogenMoleculeLongDistance) {
30  vector<GaussianCore> cores;
31  cores.push_back(GaussianCore({0,0,0}, "atom_1_basis_4-31G.tm"));
32  cores.push_back(GaussianCore({100.0,0,0}, "atom_1_basis_4-31G.tm"));
33  GaussianSystem system;
34  for(const GaussianCore &core : cores) {
35  system.addCore(core);
36  }
37  UnrestrictedHartreeFockSolver solver(&system);
38  solver.setConvergenceTreshold(1e-9);
39  solver.setNIterationsMax(1e3);
40  solver.setDensityMixFactor(0.5);
41  solver.solve();
42  CHECK_CLOSE(-0.9964658189712963, solver.energy(), 1e-6);
43  }
44  TEST(Water) {
45  vector<GaussianCore> cores;
46  cores.push_back(GaussianCore({0,0,0}, "atom_8_basis_4-31G.tm"));
47  cores.push_back(GaussianCore({-1.43,1.108,0}, "atom_1_basis_4-31G.tm"));
48  cores.push_back(GaussianCore({1.43,1.108,0}, "atom_1_basis_4-31G.tm"));
49  GaussianSystem system;
50  for(const GaussianCore &core : cores) {
51  system.addCore(core);
52  }
53  UnrestrictedHartreeFockSolver solver(&system);
54  solver.setConvergenceTreshold(1e-12);
55  solver.setNIterationsMax(1e3);
56  solver.setDensityMixFactor(0.5);
57  solver.solve();
58  CHECK_CLOSE(-75.90736859918989, solver.energy(), 1e-6);
59  }
60 }