Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
Functions
gaussiantypeintegrals.cpp File Reference
#include <unittest++/UnitTest++.h>
#include "math/vector3.h"
#include <basisfunctions/gaussian/integrals/gaussianoverlapintegral.h>
#include <basisfunctions/gaussian/integrals/gaussiankineticintegral.h>
#include <basisfunctions/gaussian/integrals/gaussiancoloumbattractionintegral.h>
#include <basisfunctions/gaussian/integrals/gaussianelectroninteractionintegral.h>
#include <basisfunctions/gaussian/gaussianprimitiveorbital.h>
#include <armadillo>
#include <iostream>
#include <fstream>
Include dependency graph for gaussiantypeintegrals.cpp:

Go to the source code of this file.

Functions

 SUITE (GaussianIntegral)
 

Function Documentation

SUITE ( GaussianIntegral  )

Definition at line 17 of file gaussiantypeintegrals.cpp.

17  {
18  TEST(GaussianOverlapIntegralTest) {
19  Vector3 posA = {1.2,2.3,3.4};
20  Vector3 posB = {-1.3,1.4,-2.4};
21 
22  GaussianPrimitiveOrbital primitiveA(1.0, 2, 2, 2, 0.2);
23  GaussianPrimitiveOrbital primitiveB(1.0, 2, 2, 2, 0.3);
24 
25  GaussianOverlapIntegral integrator(2);
26  integrator.set(posA, posB, primitiveA, primitiveB);
27 
28  CHECK_CLOSE(integrator.overlapIntegral(0,0,0,0,0,0), 0.119172363580852, 0.00001);
29  CHECK_CLOSE(integrator.overlapIntegral(0,0,0,0,0,1), 0.276479883507577, 0.00001);
30  CHECK_CLOSE(integrator.overlapIntegral(0,0,0,0,0,2), 0.760605693318432, 0.00001);
31  CHECK_CLOSE(integrator.overlapIntegral(0,0,0,0,1,0), 0.0429020508891068, 0.00001);
32  CHECK_CLOSE(integrator.overlapIntegral(0,0,0,0,1,1), 0.0995327580627279, 0.00001);
33 
34  }
35 
36  TEST(OverlapNew) {
37  Vector3 posA = {1.2,2.3,3.4};
38  Vector3 posB = {-1.3,1.4,-2.4};
39 
40  GaussianPrimitiveOrbital primitiveA(1.0, 2, 2, 2, 0.2);
41  GaussianPrimitiveOrbital primitiveB(1.0, 2, 2, 2, 0.3);
42 
43  GaussianOverlapIntegral integrator(2);
44  integrator.set(posA, posB, primitiveA, primitiveB);
45 
46  CHECK_CLOSE(2.979309089521e-01, integrator.overlapIntegral(2,0,0,2,0,0), 1e-7);
47  CHECK_CLOSE(1.072551272228e-02, integrator.overlapIntegral(2,0,0,1,1,0), 1e-7);
48  CHECK_CLOSE(6.911997087690e-02, integrator.overlapIntegral(2,0,0,1,0,1), 1e-7);
49  }
50 
51  TEST(KineticNew) {
52  Vector3 posA = {1.2,2.3,3.4};
53  Vector3 posB = {-1.3,1.4,-2.4};
54 
55  GaussianPrimitiveOrbital primitiveA(1.0, 2, 2, 2, 0.2);
56  GaussianPrimitiveOrbital primitiveB(1.0, 2, 2, 2, 0.3);
57 
58  GaussianKineticIntegral integrator(2*3);
59 
60  integrator.set(posA, posB, primitiveA, primitiveB);
61 
62  CHECK_CLOSE(-3.468392469657e-01, integrator.kineticIntegral(2,0,0,2,0,0), 1e-7);
63  CHECK_CLOSE(-3.562586305833e-03, integrator.kineticIntegral(2,0,0,1,1,0), 1e-7);
64  CHECK_CLOSE(-2.295888952647e-02, integrator.kineticIntegral(2,0,0,1,0,1), 1e-7);
65  CHECK_CLOSE(2.514020826620e-01, integrator.kineticIntegral(0,0,1,0,0,1), 1e-7);
66  }
67 
68  TEST(KineticNew2) {
69  Vector3 posA = {1.2,2.3,3.4};
70  Vector3 posB = {-1.3,1.4,-2.4};
71 
72  GaussianPrimitiveOrbital primitiveA(1.0, 2, 0, 0, 0.2);
73  GaussianPrimitiveOrbital primitiveB(1.0, 2, 0, 0, 0.3);
74 
75  GaussianKineticIntegral integrator(2);
76 
77  integrator.set(posA, posB, primitiveA, primitiveB);
78 
79  CHECK_CLOSE(-3.468392469657e-01, integrator.kineticIntegral(2,0,0,2,0,0), 1e-7);
80  }
81 
82  TEST(GaussianKineticIntegralTest) {
83  Vector3 posA = {1.2,2.3,3.4};
84  Vector3 posB = {-1.3,1.4,-2.4};
85 
86  GaussianPrimitiveOrbital primitiveA(1.0, 2, 2, 2, 0.2);
87  GaussianPrimitiveOrbital primitiveB(1.0, 2, 2, 2, 0.3);
88 
89  GaussianKineticIntegral integrator(2*3);
90 
91  integrator.set(posA, posB, primitiveA, primitiveB);
92 
93  CHECK_CLOSE(-0.0967870268058250, integrator.kineticIntegral(0,0,0,0,0,0), 0.00001);
94  CHECK_CLOSE(-0.158190730147696, integrator.kineticIntegral(0,0,0,0,0,1), 0.00001);
95  CHECK_CLOSE(-0.0245468374367114, integrator.kineticIntegral(0,0,0,0,1,0), 0.00001);
96  CHECK_CLOSE(-0.0330608009181156, integrator.kineticIntegral(0,0,0,0,1,1), 0.00001);
97  CHECK_CLOSE(-0.0681856595464203, integrator.kineticIntegral(0,0,0,1,0,0), 0.00001);
98  CHECK_CLOSE(-0.0918355581058773, integrator.kineticIntegral(0,0,0,1,0,1), 0.00001);
99  CHECK_CLOSE(-0.0142503452233260, integrator.kineticIntegral(0,0,0,1,1,0), 0.00001);
100  CHECK_CLOSE(-0.00917293898306074, integrator.kineticIntegral(0,0,0,1,1,1), 0.00001);
101  CHECK_CLOSE(0.251402082662018, integrator.kineticIntegral(0,0,1,0,0,1), 0.00001);
102  CHECK_CLOSE(0.0495912013771734, integrator.kineticIntegral(0,0,1,0,1,0), 0.00001);
103  CHECK_CLOSE(0.0176714824377215, integrator.kineticIntegral(0,0,1,0,1,1), 0.00001);
104  CHECK_CLOSE(0.137753337158815, integrator.kineticIntegral(0,0,1,1,0,0), 0.00001);
105  CHECK_CLOSE(0.0490874512158928, integrator.kineticIntegral(0,0,1,1,0,1), 0.00001);
106  CHECK_CLOSE(0.0137594084745900, integrator.kineticIntegral(0,0,1,1,1,0), 0.00001);
107  CHECK_CLOSE(-0.0551617848828804, integrator.kineticIntegral(0,0,1,1,1,1), 0.00001);
108  CHECK_CLOSE(-0.0604904731258242, integrator.kineticIntegral(0,1,0,0,1,0), 0.00001);
109  CHECK_CLOSE(-0.0868821710550227, integrator.kineticIntegral(0,1,0,0,1,1), 0.00001);
110  CHECK_CLOSE(0.0213755178349884, integrator.kineticIntegral(0,1,0,1,0,0), 0.00001);
111  CHECK_CLOSE(0.0137594084745909, integrator.kineticIntegral(0,1,0,1,0,1), 0.00001);
112  CHECK_CLOSE(-0.0374492116616455, integrator.kineticIntegral(0,1,0,1,1,0), 0.00001);
113  CHECK_CLOSE(-0.0334264444581330, integrator.kineticIntegral(0,1,0,1,1,1), 0.00001);
114  CHECK_CLOSE(0.0788748150526478, integrator.kineticIntegral(0,1,1,0,1,1), 0.00001);
115  CHECK_CLOSE(-0.0206391127118871, integrator.kineticIntegral(0,1,1,1,0,0), 0.00001);
116  CHECK_CLOSE(0.0827426773243232, integrator.kineticIntegral(0,1,1,1,0,1), 0.00001);
117  }
118 
119  TEST(GaussianColoumbAttractionIntegralTest) {
120  Vector3 posA = {1.2,2.3,3.4};
121  Vector3 posB = {-1.3,1.4,-2.4};
122  Vector3 posC = {2.3, 0.9, 3.2};
123 
124  GaussianColoumbAttractionIntegral integrator(6);
125 
126  GaussianPrimitiveOrbital primitiveA(1.0, 2, 2, 2, 0.2);
127  GaussianPrimitiveOrbital primitiveB(1.0, 2, 2, 2, 0.3);
128 
129  integrator.set(posA, posB, posC, primitiveA, primitiveB);
130  CHECK_CLOSE(2.788948987251e-02, integrator.coloumbAttractionIntegral(0,0,0,0,0,0), 1e-4);
131  CHECK_CLOSE(6.971203468743e-02, integrator.coloumbAttractionIntegral(0,0,0,0,0,1), 1e-4);
132  CHECK_CLOSE(2.024071525839e-01, integrator.coloumbAttractionIntegral(0,0,0,0,0,2), 1e-4);
133  CHECK_CLOSE(8.727033700014e-03, integrator.coloumbAttractionIntegral(0,0,0,0,1,0), 1e-4);
134  CHECK_CLOSE(2.134361291529e-02, integrator.coloumbAttractionIntegral(0,0,0,0,1,1), 1e-4);
135  CHECK_CLOSE(2.921666495443e-02, integrator.coloumbAttractionIntegral(0,0,0,0,2,0), 1e-4);
136  CHECK_CLOSE(3.185957751329e-02, integrator.coloumbAttractionIntegral(0,0,0,1,0,0), 1e-4);
137  CHECK_CLOSE(8.105746642202e-02, integrator.coloumbAttractionIntegral(0,0,0,1,0,1), 1e-4);
138  CHECK_CLOSE(9.596523510045e-03, integrator.coloumbAttractionIntegral(0,0,0,1,1,0), 1e-4);
139  CHECK_CLOSE(6.388444040338e-02, integrator.coloumbAttractionIntegral(0,0,0,2,0,0), 1e-4);
140  CHECK_CLOSE(-9.204700718547e-02, integrator.coloumbAttractionIntegral(0,0,1,0,0,0), 1e-4);
141  CHECK_CLOSE(-2.019226499202e-01, integrator.coloumbAttractionIntegral(0,0,1,0,0,1), 1e-4);
142  CHECK_CLOSE(-5.276399683274e-01, integrator.coloumbAttractionIntegral(0,0,1,0,0,2), 1e-4);
143  CHECK_CLOSE(-2.927318225377e-02, integrator.coloumbAttractionIntegral(0,0,1,0,1,0), 1e-4);
144  CHECK_CLOSE(-6.299787002318e-02, integrator.coloumbAttractionIntegral(0,0,1,0,1,1), 1e-4);
145  CHECK_CLOSE(-9.718105595370e-02, integrator.coloumbAttractionIntegral(0,0,1,0,2,0), 1e-4);
146  CHECK_CLOSE(-1.037280861539e-01, integrator.coloumbAttractionIntegral(0,0,1,1,0,0), 1e-4);
147  CHECK_CLOSE(-2.312309453843e-01, integrator.coloumbAttractionIntegral(0,0,1,1,0,1), 1e-4);
148  CHECK_CLOSE(-3.202910466576e-02, integrator.coloumbAttractionIntegral(0,0,1,1,1,0), 1e-4);
149  CHECK_CLOSE(-2.073449397904e-01, integrator.coloumbAttractionIntegral(0,0,1,2,0,0), 1e-4);
150  CHECK_CLOSE(3.319499900436e-01, integrator.coloumbAttractionIntegral(0,0,2,0,0,0), 1e-4);
151  CHECK_CLOSE(6.435114042344e-01, integrator.coloumbAttractionIntegral(0,0,2,0,0,1), 1e-4);
152  CHECK_CLOSE(1.536931448007e+00, integrator.coloumbAttractionIntegral(0,0,2,0,0,2), 1e-4);
153  CHECK_CLOSE(1.067865861209e-01, integrator.coloumbAttractionIntegral(0,0,2,0,1,0), 1e-4);
154  CHECK_CLOSE(2.033153544029e-01, integrator.coloumbAttractionIntegral(0,0,2,0,1,1), 1e-4);
155  CHECK_CLOSE(3.524622701603e-01, integrator.coloumbAttractionIntegral(0,0,2,0,2,0), 1e-4);
156  CHECK_CLOSE(3.703919381580e-01, integrator.coloumbAttractionIntegral(0,0,2,1,0,0), 1e-4);
157  CHECK_CLOSE(7.292169308884e-01, integrator.coloumbAttractionIntegral(0,0,2,1,0,1), 1e-4);
158  CHECK_CLOSE(1.162963233448e-01, integrator.coloumbAttractionIntegral(0,0,2,1,1,0), 1e-4);
159  CHECK_CLOSE(7.390872806284e-01, integrator.coloumbAttractionIntegral(0,0,2,2,0,0), 1e-4);
160  CHECK_CLOSE(-1.637350724302e-02, integrator.coloumbAttractionIntegral(0,1,0,0,0,0), 1e-4);
161  CHECK_CLOSE(-4.139721853567e-02, integrator.coloumbAttractionIntegral(0,1,0,0,0,1), 1e-4);
162  CHECK_CLOSE(-1.213713540367e-01, integrator.coloumbAttractionIntegral(0,1,0,0,0,2), 1e-4);
163  CHECK_CLOSE(2.136233458775e-02, integrator.coloumbAttractionIntegral(0,1,0,0,1,0), 1e-4);
164  CHECK_CLOSE(5.306634838230e-02, integrator.coloumbAttractionIntegral(0,1,0,0,1,1), 1e-4);
165  CHECK_CLOSE(-1.697963144320e-04, integrator.coloumbAttractionIntegral(0,1,0,0,2,0), 1e-4);
166  CHECK_CLOSE(-1.907709578263e-02, integrator.coloumbAttractionIntegral(0,1,0,1,0,0), 1e-4);
167  CHECK_CLOSE(-4.932098923684e-02, integrator.coloumbAttractionIntegral(0,1,0,1,0,1), 1e-4);
168  CHECK_CLOSE(2.414126847830e-02, integrator.coloumbAttractionIntegral(0,1,0,1,1,0), 1e-4);
169  CHECK_CLOSE(-3.842342257899e-02, integrator.coloumbAttractionIntegral(0,1,0,2,0,0), 1e-4);
170  CHECK_CLOSE(5.356912442721e-02, integrator.coloumbAttractionIntegral(0,1,1,0,0,0), 1e-4);
171  CHECK_CLOSE(1.187325132374e-01, integrator.coloumbAttractionIntegral(0,1,1,0,0,1), 1e-4);
172  CHECK_CLOSE(3.128036711345e-01, integrator.coloumbAttractionIntegral(0,1,1,0,0,2), 1e-4);
173  CHECK_CLOSE(-7.083519267815e-02, integrator.coloumbAttractionIntegral(0,1,1,0,1,0), 1e-4);
174  CHECK_CLOSE(-1.544897767601e-01, integrator.coloumbAttractionIntegral(0,1,1,0,1,1), 1e-4);
175  CHECK_CLOSE(-3.894393296797e-04, integrator.coloumbAttractionIntegral(0,1,1,0,2,0), 1e-4);
176  CHECK_CLOSE(6.132616876012e-02, integrator.coloumbAttractionIntegral(0,1,1,1,0,0), 1e-4);
177  CHECK_CLOSE(1.386353605834e-01, integrator.coloumbAttractionIntegral(0,1,1,1,0,1), 1e-4);
178  CHECK_CLOSE(-7.911527548440e-02, integrator.coloumbAttractionIntegral(0,1,1,1,1,0), 1e-4);
179  CHECK_CLOSE(1.229240947242e-01, integrator.coloumbAttractionIntegral(0,1,1,2,0,0), 1e-4);
180  CHECK_CLOSE(3.609849112824e-02, integrator.coloumbAttractionIntegral(0,2,0,0,0,0), 1e-4);
181  CHECK_CLOSE(9.032384498820e-02, integrator.coloumbAttractionIntegral(0,2,0,0,0,1), 1e-4);
182  CHECK_CLOSE(2.625292648498e-01, integrator.coloumbAttractionIntegral(0,2,0,0,0,2), 1e-4);
183  CHECK_CLOSE(-1.939589748931e-02, integrator.coloumbAttractionIntegral(0,2,0,0,1,0), 1e-4);
184  CHECK_CLOSE(-4.913397190183e-02, integrator.coloumbAttractionIntegral(0,2,0,0,1,1), 1e-4);
185  CHECK_CLOSE(6.878262296370e-02, integrator.coloumbAttractionIntegral(0,2,0,0,2,0), 1e-4);
186  CHECK_CLOSE(4.131065513841e-02, integrator.coloumbAttractionIntegral(0,2,0,1,0,0), 1e-4);
187  CHECK_CLOSE(1.052929737663e-01, integrator.coloumbAttractionIntegral(0,2,0,1,0,1), 1e-4);
188  CHECK_CLOSE(-2.267402937768e-02, integrator.coloumbAttractionIntegral(0,2,0,1,1,0), 1e-4);
189  CHECK_CLOSE(8.289710831960e-02, integrator.coloumbAttractionIntegral(0,2,0,2,0,0), 1e-4);
190  CHECK_CLOSE(-3.786414780578e-02, integrator.coloumbAttractionIntegral(1,0,0,0,0,0), 1e-4);
191  CHECK_CLOSE(-9.322262110550e-02, integrator.coloumbAttractionIntegral(1,0,0,0,0,1), 1e-4);
192  CHECK_CLOSE(-2.671155215998e-01, integrator.coloumbAttractionIntegral(1,0,0,0,0,2), 1e-4);
193  CHECK_CLOSE(-1.222106053447e-02, integrator.coloumbAttractionIntegral(1,0,0,0,1,0), 1e-4);
194  CHECK_CLOSE(-2.972830178046e-02, integrator.coloumbAttractionIntegral(1,0,0,0,1,1), 1e-4);
195  CHECK_CLOSE(-4.026352276293e-02, integrator.coloumbAttractionIntegral(1,0,0,0,2,0), 1e-4);
196  CHECK_CLOSE(-1.576450345257e-02, integrator.coloumbAttractionIntegral(1,0,0,1,0,0), 1e-4);
197  CHECK_CLOSE(-3.945885129414e-02, integrator.coloumbAttractionIntegral(1,0,0,1,0,1), 1e-4);
198  CHECK_CLOSE(-4.918734877201e-03, integrator.coloumbAttractionIntegral(1,0,0,1,1,0), 1e-4);
199  CHECK_CLOSE(-2.459437143524e-02, integrator.coloumbAttractionIntegral(1,0,0,2,0,0), 1e-4);
200  CHECK_CLOSE(1.263894353489e-01, integrator.coloumbAttractionIntegral(1,0,1,0,0,0), 1e-4);
201  CHECK_CLOSE(2.735756798558e-01, integrator.coloumbAttractionIntegral(1,0,1,0,0,1), 1e-4);
202  CHECK_CLOSE(7.071773603054e-01, integrator.coloumbAttractionIntegral(1,0,1,0,0,2), 1e-4);
203  CHECK_CLOSE(4.115384967585e-02, integrator.coloumbAttractionIntegral(1,0,1,0,1,0), 1e-4);
204  CHECK_CLOSE(8.802219023191e-02, integrator.coloumbAttractionIntegral(1,0,1,0,1,1), 1e-4);
205  CHECK_CLOSE(1.350111738398e-01, integrator.coloumbAttractionIntegral(1,0,1,0,2,0), 1e-4);
206  CHECK_CLOSE(5.197526800952e-02, integrator.coloumbAttractionIntegral(1,0,1,1,0,0), 1e-4);
207  CHECK_CLOSE(1.145639876363e-01, integrator.coloumbAttractionIntegral(1,0,1,1,0,1), 1e-4);
208  CHECK_CLOSE(1.638641395940e-02, integrator.coloumbAttractionIntegral(1,0,1,1,1,0), 1e-4);
209  CHECK_CLOSE(8.278875254192e-02, integrator.coloumbAttractionIntegral(1,0,1,2,0,0), 1e-4);
210  CHECK_CLOSE(2.185667243163e-02, integrator.coloumbAttractionIntegral(1,1,0,0,0,0), 1e-4);
211  CHECK_CLOSE(5.417205698627e-02, integrator.coloumbAttractionIntegral(1,1,0,0,0,1), 1e-4);
212  CHECK_CLOSE(1.560020091608e-01, integrator.coloumbAttractionIntegral(1,1,0,0,0,2), 1e-4);
213  CHECK_CLOSE(-2.926456829930e-02, integrator.coloumbAttractionIntegral(1,1,0,0,1,0), 1e-4);
214  CHECK_CLOSE(-7.176178735649e-02, integrator.coloumbAttractionIntegral(1,1,0,0,1,1), 1e-4);
215  CHECK_CLOSE(-5.223967979758e-04, integrator.coloumbAttractionIntegral(1,1,0,0,2,0), 1e-4);
216  CHECK_CLOSE(9.269318129877e-03, integrator.coloumbAttractionIntegral(1,1,0,1,0,0), 1e-4);
217  CHECK_CLOSE(2.337071697343e-02, integrator.coloumbAttractionIntegral(1,1,0,1,0,1), 1e-4);
218  CHECK_CLOSE(-1.203714316117e-02, integrator.coloumbAttractionIntegral(1,1,0,1,1,0), 1e-4);
219  CHECK_CLOSE(1.401501778682e-02, integrator.coloumbAttractionIntegral(1,1,0,2,0,0), 1e-4);
220  CHECK_CLOSE(7.889586550718e-02, integrator.coloumbAttractionIntegral(2,0,0,0,0,0), 1e-4);
221  CHECK_CLOSE(1.935977010010e-01, integrator.coloumbAttractionIntegral(2,0,0,0,0,1), 1e-4);
222  CHECK_CLOSE(5.534914541236e-01, integrator.coloumbAttractionIntegral(2,0,0,0,0,2), 1e-4);
223  CHECK_CLOSE(2.563391673303e-02, integrator.coloumbAttractionIntegral(2,0,0,0,1,0), 1e-4);
224  CHECK_CLOSE(6.217850538435e-02, integrator.coloumbAttractionIntegral(2,0,0,0,1,1), 1e-4);
225  CHECK_CLOSE(8.419480232293e-02, integrator.coloumbAttractionIntegral(2,0,0,0,2,0), 1e-4);
226  CHECK_CLOSE(1.481688684288e-02, integrator.coloumbAttractionIntegral(2,0,0,1,0,0), 1e-4);
227  CHECK_CLOSE(3.878852644576e-02, integrator.coloumbAttractionIntegral(2,0,0,1,0,1), 1e-4);
228  CHECK_CLOSE(4.176920693786e-03, integrator.coloumbAttractionIntegral(2,0,0,1,1,0), 1e-4);
229  CHECK_CLOSE(6.422210627967e-02, integrator.coloumbAttractionIntegral(2,0,0,2,0,0), 1e-4);
230  }
231 
232  TEST(GaussianElectronInteractionIntegralTest1) {
233  Vector3 posA = {-0.5, 0, 0};
234  Vector3 posB = {-0.5, 0, 0};
235  Vector3 posC = {-0.5, 0, 0};
236  Vector3 posD = {-0.5, 0, 0};
237  double a = 13.0077;
238  double b = 13.0077;
239  double c = 13.0077;
240  double d = 13.0077;
241 
242  GaussianPrimitiveOrbital primitiveA(1.0, 0, 0 ,0, a);
243  GaussianPrimitiveOrbital primitiveB(1.0, 0, 0 ,0, b);
244  GaussianPrimitiveOrbital primitiveC(1.0, 0, 0 ,0, c);
245  GaussianPrimitiveOrbital primitiveD(1.0, 0, 0 ,0, d);
246 
248  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
249  // regression test
250  CHECK_CLOSE(0.0071666040410096028615, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
251  }
252 
253  TEST(GaussianElectronInteractionIntegralTest2) {
254  Vector3 posA = {0.5, 0, 0};
255  Vector3 posB = {-0.5, 0, 0};
256  Vector3 posC = {-0.5, 0, 0};
257  Vector3 posD = {0.5, 0, 0};
258  double a = 13.0077;
259  double b = 0.121949;
260  double c = 0.444529;
261  double d = 13.0077;
262 
263  GaussianPrimitiveOrbital primitiveA(1.0, 0, 0 ,0, a);
264  GaussianPrimitiveOrbital primitiveB(1.0, 0, 0 ,0, b);
265  GaussianPrimitiveOrbital primitiveC(1.0, 0, 0 ,0, c);
266  GaussianPrimitiveOrbital primitiveD(1.0, 0, 0 ,0, d);
267 
269  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
270  // regression test
271  CHECK_CLOSE(0.022124581472837051566, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
272  }
273 
274  TEST(GaussianElectronInteractionIntegralTest3) {
275  Vector3 posA = {0.5, 0, 0};
276  Vector3 posB = {-0.5, 0, 0};
277  Vector3 posC = {-0.5, 0, 0};
278  Vector3 posD = {0.5, 0, 0};
279  double a = 13.0077;
280  double b = 0.121949;
281  double c = 0.444529;
282  double d = 13.0077;
283 
284  GaussianPrimitiveOrbital primitiveA(1.0, 0, 0 ,0, a);
285  GaussianPrimitiveOrbital primitiveB(1.0, 0, 1 ,0, b);
286  GaussianPrimitiveOrbital primitiveC(1.0, 0, 1 ,0, c);
287  GaussianPrimitiveOrbital primitiveD(1.0, 0, 0 ,0, d);
288 
289  GaussianElectronInteractionIntegral integrator(2*3);
290  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
291  // regression test
292  CHECK_CLOSE(0.0001385810300677682, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
293  }
294 
295  TEST(GaussianElectronInteractionIntegralTest4) {
296  Vector3 posA = {0.55, 1, 3};
297  Vector3 posB = {-0.52, 5, 6};
298  Vector3 posC = {-0.53, 1, 2};
299  Vector3 posD = {0.45, 2, 4};
300  double a = 13.0077;
301  double b = 0.121949;
302  double c = 0.444529;
303  double d = 10.0077;
304 
305  GaussianPrimitiveOrbital primitiveA(1.0, 1,0,0, a);
306  GaussianPrimitiveOrbital primitiveB(1.0, 0,1,0, b);
307  GaussianPrimitiveOrbital primitiveC(1.0, 0,1,0, c);
308  GaussianPrimitiveOrbital primitiveD(1.0, 0,1,0, d);
309 
311  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
312  // regression test
313  CHECK_CLOSE(-6.8145328932903484228e-08, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
314  }
315 
316 
317  TEST(GaussianElectronInteractionIntegralTest5)
318  {
319 
320  Vector3 posA = {1.2,2.3,3.4};
321  Vector3 posB = {-1.3,1.4,-2.4};
322  Vector3 posC = {2.3,0.9,3.2};
323  Vector3 posD = {5.0,1.9,1.2};
324 
325  GaussianPrimitiveOrbital primitiveA(1.0, 0,0,0, 0.2);
326  GaussianPrimitiveOrbital primitiveB(1.0, 0,0,0, 0.3);
327  GaussianPrimitiveOrbital primitiveC(1.0, 0,0,0, 0.4);
328  GaussianPrimitiveOrbital primitiveD(1.0, 0,0,0, 0.1);
329 
331 
332  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
333 
334  CHECK_CLOSE(1.624848e-01, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-5);
335  }
336 
337 
338  TEST(GaussianElectronInteractionIntegralTest6)
339  {
340 
341  Vector3 posA = {1.2,2.3,3.4};
342  Vector3 posB = {-1.3,1.4,-2.4};
343  Vector3 posC = {2.3,0.9,3.2};
344  Vector3 posD = {5.0,1.9,1.2};
345 
346  GaussianPrimitiveOrbital primitiveA(1.0, 0,0,0, 0.2);
347  GaussianPrimitiveOrbital primitiveB(1.0, 1,0,0, 0.3);
348  GaussianPrimitiveOrbital primitiveC(1.0, 0,0,0, 0.4);
349  GaussianPrimitiveOrbital primitiveD(1.0, 0,0,1, 0.1);
350 
352 
353  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
354 
355  CHECK_CLOSE(0.2667434785828074, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
356  }
357 
358 
359  TEST(GaussianElectronInteractionIntegralTest7)
360  {
361 
362  Vector3 posA = {1.2,2.3,3.4};
363  Vector3 posB = {-1.3,1.4,-2.4};
364  Vector3 posC = {2.3,0.9,3.2};
365  Vector3 posD = {5.0,1.9,1.2};
366 
367  GaussianPrimitiveOrbital primitiveA(1.0, 0,0,0, 0.2);
368  GaussianPrimitiveOrbital primitiveB(1.0, 1,0,0, 0.3);
369  GaussianPrimitiveOrbital primitiveC(1.0, 0,2,0, 0.4);
370  GaussianPrimitiveOrbital primitiveD(1.0, 0,0,1, 0.1);
371 
373 
374  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
375 
376  CHECK_CLOSE(0.2681206720738772, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
377  }
378 
379 
380  TEST(GaussianElectronInteractionIntegralTest8)
381  {
382 
383  Vector3 posA = {1.2,2.3,3.4};
384  Vector3 posB = {-1.3,1.4,-2.4};
385  Vector3 posC = {2.3,0.9,3.2};
386  Vector3 posD = {5.0,1.9,1.2};
387 
388  GaussianPrimitiveOrbital primitiveA(1.0, 1,1,0, 0.2);
389  GaussianPrimitiveOrbital primitiveB(1.0, 2,0,0, 0.3);
390  GaussianPrimitiveOrbital primitiveC(1.0, 2,0,0, 0.4);
391  GaussianPrimitiveOrbital primitiveD(1.0, 2,0,0, 0.1);
392 
394 
395  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
396 
397  CHECK_CLOSE(0.5266872995197744, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
398  }
399 
400 
401  TEST(GaussianElectronInteractionIntegralTest9)
402  {
403 
404  Vector3 posA = {1.2,2.3,3.4};
405  Vector3 posB = {-1.3,1.4,-2.4};
406  Vector3 posC = {2.3,0.9,3.2};
407  Vector3 posD = {5.0,1.9,1.2};
408 
409  GaussianPrimitiveOrbital primitiveA(1.0, 1,1,0, 0.2);
410  GaussianPrimitiveOrbital primitiveB(1.0, 0,2,0, 0.3);
411  GaussianPrimitiveOrbital primitiveC(1.0, 0,2,0, 0.4);
412  GaussianPrimitiveOrbital primitiveD(1.0, 2,0,0, 0.1);
413 
415 
416  integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
417 
418  CHECK_CLOSE(-0.1273045183436938, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
419  }
420 }