Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
helium-tests.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include <unittest++/UnitTest++.h>
3 #include <unittest++/Test.h>
4 #include <unittest++/TestReporterStdout.h>
5 #include <unittest++/TestRunner.h>
11 
12 #include <armadillo>
13 #include <iostream>
14 #include <fstream>
15 
16 using namespace std;
17 using namespace arma;
18 
20 
21  TEST(MatrixElement) {
22  Helium basisFunction;
23  int p = 0;
24  int q = 1;
25  int r = 2;
26  int s = 3;
27 
28  double value = basisFunction.coupledIntegral(p,r,q,s);
29 
30  CHECK_CLOSE(0.075820496873881579, value, 1e-9);
31  }
32 
33  TEST(KineticIntegral) {
34  Helium basisFunction;
35  int p = 0;
36  int q = 3;
37 
38  double value = basisFunction.kineticIntegral(p,q);
39 
40  CHECK_CLOSE(0.0204654960291562, value, 1e-9);
41  }
42 
43  TEST(NuclearAttractionIntegral) {
44  Helium basisFunction;
45  int p = 1;
46  int q = 2;
47 
48  double value = basisFunction.nuclearAttractionIntegral(p,q);
49 
50  CHECK_CLOSE(-1.78867607774792, value, 1e-9);
51  }
52 
53  TEST(OverlapIntegral) {
54  Helium basisFunction;
55  int p = 3;
56  int q = 2;
57 
58  double value = basisFunction.overlapIntegral(p, q);
59 
60  CHECK_CLOSE(0.01891203832678, value, 1e-9);
61  }
62 
63  TEST(HeliumAdvanceMany) {
64  Helium basisFunction;
65  HartreeSolver solver(&basisFunction);
66  solver.reset();
67  for(int i = 0; i < 500; i++) {
68  solver.advance();
69  }
70  double value = solver.energy();
71  CHECK_CLOSE(-2.855160382370257377, value, 1e-7);
72  }
73 
74 }