Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
hydrogen.cpp
Go to the documentation of this file.
1 #include <unittest++/UnitTest++.h>
2 
5 
9 
10 #include <armadillo>
11 #include <iostream>
12 #include <fstream>
13 
14 using namespace std;
15 using namespace arma;
16 
17 SUITE(Hydrogen) {
18  TEST(HydrogenOverlapIntegral) {
19  HydrogenMolecule basisFunction;
20  double value = basisFunction.overlapIntegral(6,2);
21  // Recursion test
22  CHECK_CLOSE(4.296692816768918, value, 1e-9);
23  }
24 
25  TEST(HydrogenElectronInteractionIntegral) {
26  HydrogenMolecule basisFunction;
27  double value = basisFunction.coupledIntegral(1,7,5,2);
28  // Recursion test
29  CHECK_CLOSE(0.9066377680574234, value, 1e-9);
30  }
31 
32  TEST(HydrogenNuclearAttractionIntegral) {
33  HydrogenMolecule basisFunction;
34  double value = basisFunction.nuclearAttractionIntegral(3,7);
35  // Recursion test
36  CHECK_CLOSE(-43.96134564895876, value, 1e-9);
37  }
38 
39 // TEST(HydrogenAdvanceMany) {
40 // HydrogenMolecule basisFunction(1.0);
41 // HartreeSolver solver(&basisFunction);
42 // for(int i = 0; i < 100; i++) {
43 // solver.advance();
44 // }
45 // // Recursion test
46 // CHECK_CLOSE(-2.0785476087914549481, solver.energy(), 1e-9);
47 // }
48 
49  TEST(HydrogenAdvanceManyHF) {
50  HydrogenMolecule basisFunction(1.0);
51  RestrictedHartreeFockSolver solver(&basisFunction);
52  for(int i = 0; i < 100; i++) {
53  solver.advance();
54  }
55  // Recursion test
56 // CHECK_CLOSE(-1.0785476087914718235, solver.energy(), 1e-9);
57  }
58 
59  TEST(MultiHydrogenAdvanceManyHF) {
60  mat nucleiPositions {0,0,0,
61  1,0,0,
62  0,1,0};
63  nucleiPositions.reshape(3,3);
64  nucleiPositions = nucleiPositions.t();
65  MultiHydrogen basisFunction(nucleiPositions);
66  RestrictedHartreeFockSolver solver(&basisFunction);
67  for(int i = 0; i < 100; i++) {
68  solver.advance();
69  }
70  // Recursion test
71 // CHECK_CLOSE(-1.1186501652973053211, solver.energy(), 1e-9);
72  }
73 }