18 TEST(GaussianOverlapIntegralTest) {
26 integrator.set(posA, posB, primitiveA, primitiveB);
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);
44 integrator.set(posA, posB, primitiveA, primitiveB);
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);
60 integrator.set(posA, posB, primitiveA, primitiveB);
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);
77 integrator.set(posA, posB, primitiveA, primitiveB);
79 CHECK_CLOSE(-3.468392469657e-01, integrator.kineticIntegral(2,0,0,2,0,0), 1e-7);
82 TEST(GaussianKineticIntegralTest) {
91 integrator.set(posA, posB, primitiveA, primitiveB);
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);
119 TEST(GaussianColoumbAttractionIntegralTest) {
121 Vector3 posB = {-1.3,1.4,-2.4};
122 Vector3 posC = {2.3, 0.9, 3.2};
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);
232 TEST(GaussianElectronInteractionIntegralTest1) {
248 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
250 CHECK_CLOSE(0.0071666040410096028615, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
253 TEST(GaussianElectronInteractionIntegralTest2) {
269 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
271 CHECK_CLOSE(0.022124581472837051566, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
274 TEST(GaussianElectronInteractionIntegralTest3) {
290 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
292 CHECK_CLOSE(0.0001385810300677682, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
295 TEST(GaussianElectronInteractionIntegralTest4) {
311 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
313 CHECK_CLOSE(-6.8145328932903484228e-08, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-9);
317 TEST(GaussianElectronInteractionIntegralTest5)
321 Vector3 posB = {-1.3,1.4,-2.4};
332 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
334 CHECK_CLOSE(1.624848e-01, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-5);
338 TEST(GaussianElectronInteractionIntegralTest6)
342 Vector3 posB = {-1.3,1.4,-2.4};
353 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
355 CHECK_CLOSE(0.2667434785828074, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
359 TEST(GaussianElectronInteractionIntegralTest7)
363 Vector3 posB = {-1.3,1.4,-2.4};
374 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
376 CHECK_CLOSE(0.2681206720738772, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
380 TEST(GaussianElectronInteractionIntegralTest8)
384 Vector3 posB = {-1.3,1.4,-2.4};
395 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
397 CHECK_CLOSE(0.5266872995197744, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);
401 TEST(GaussianElectronInteractionIntegralTest9)
405 Vector3 posB = {-1.3,1.4,-2.4};
416 integrator.set(posA, posB, posC, posD, primitiveA, primitiveB, primitiveC, primitiveD);
418 CHECK_CLOSE(-0.1273045183436938, integrator.electronInteractionIntegral(primitiveA, primitiveB, primitiveC, primitiveD), 1e-7);