41 const double* XYZ = ct.
getcXYZ().data(0);
43 CHECK(XYZ[0] == Approx(0.282094791774));
44 CHECK(XYZ[1] == Approx(0.635183265474));
45 CHECK(XYZ[2] == Approx(0.586323014284));
46 CHECK(XYZ[3] == Approx(-0.244301255951));
47 CHECK(XYZ[4] == Approx(1.06602349055));
48 CHECK(XYZ[5] == Approx(0.908327707927));
49 CHECK(XYZ[6] == Approx(0.157695782626));
50 CHECK(XYZ[7] == Approx(1.70437555172));
51 CHECK(XYZ[8] == Approx(-0.710156479885));
52 CHECK(XYZ[9] == Approx(-0.655529058355));
53 CHECK(XYZ[10] == Approx(1.6397368054));
54 CHECK(XYZ[11] == Approx(1.28969740543));
55 CHECK(XYZ[12] == Approx(-0.0932940831475));
56 CHECK(XYZ[13] == Approx(3.38451965731));
57 CHECK(XYZ[14] == Approx(-1.41021652388));
58 CHECK(XYZ[15] == Approx(3.12417199136));
59 CHECK(XYZ[16] == Approx(-1.20160461206));
60 CHECK(XYZ[17] == Approx(0.542390970723));
61 CHECK(XYZ[18] == Approx(0.500668588359));
62 CHECK(XYZ[19] == Approx(-2.25467692526));
63 CHECK(XYZ[20] == Approx(2.41707280436));
64 CHECK(XYZ[21] == Approx(1.75485528067));
65 CHECK(XYZ[22] == Approx(0.0528927734576));
66 CHECK(XYZ[23] == Approx(5.90305249944));
67 CHECK(XYZ[24] == Approx(-2.4596052081));
68 CHECK(XYZ[25] == Approx(5.02981988118));
69 CHECK(XYZ[26] == Approx(-1.93454610815));
70 CHECK(XYZ[27] == Approx(-0.363846924275));
71 CHECK(XYZ[28] == Approx(-0.335858699331));
72 CHECK(XYZ[29] == Approx(7.03459200681));
73 CHECK(XYZ[30] == Approx(1.22128333452));
74 CHECK(XYZ[31] == Approx(1.04062011935));
75 CHECK(XYZ[32] == Approx(-5.07677948596));
76 CHECK(XYZ[33] == Approx(-4.68625798704));
77 CHECK(XYZ[34] == Approx(1.9526074946));
78 CHECK(XYZ[35] == Approx(3.47382688598));
79 CHECK(XYZ[36] == Approx(2.32807861094));
80 CHECK(XYZ[37] == Approx(-0.0292375806134));
81 CHECK(XYZ[38] == Approx(9.61982829963));
82 CHECK(XYZ[39] == Approx(-4.00826179151));
83 CHECK(XYZ[40] == Approx(7.56625548555));
84 CHECK(XYZ[41] == Approx(-2.91009826367));
85 CHECK(XYZ[42] == Approx(0.228053128784));
86 CHECK(XYZ[43] == Approx(0.210510580416));
87 CHECK(XYZ[44] == Approx(13.5641819555));
88 CHECK(XYZ[45] == Approx(2.35489270061));
89 CHECK(XYZ[46] == Approx(12.5207833436));
90 CHECK(XYZ[47] == Approx(1.85218688514));
91 CHECK(XYZ[48] == Approx(-0.905727961775));
92 CHECK(XYZ[49] == Approx(-0.771744535477));
93 CHECK(XYZ[50] == Approx(-9.78910512921));
94 CHECK(XYZ[51] == Approx(-8.34101265448));
95 CHECK(XYZ[52] == Approx(-1.44809247474));
96 CHECK(XYZ[53] == Approx(-11.6655511199));
97 CHECK(XYZ[54] == Approx(4.86064629996));
98 CHECK(XYZ[55] == Approx(4.48675043074));
99 CHECK(XYZ[56] == Approx(4.90938236205));
100 CHECK(XYZ[57] == Approx(3.03706593382));
101 CHECK(XYZ[58] == Approx(0.0158923005669));
102 CHECK(XYZ[59] == Approx(15.0300731514));
103 CHECK(XYZ[60] == Approx(-6.26253047974));
104 CHECK(XYZ[61] == Approx(10.9122088466));
105 CHECK(XYZ[62] == Approx(-4.19700340252));
106 CHECK(XYZ[63] == Approx(-0.137042874894));
107 CHECK(XYZ[64] == Approx(-0.126501115286));
108 CHECK(XYZ[65] == Approx(24.0303233904));
109 CHECK(XYZ[66] == Approx(4.17193114417));
110 CHECK(XYZ[67] == Approx(20.4755418238));
111 CHECK(XYZ[68] == Approx(3.0289263053));
112 CHECK(XYZ[69] == Approx(0.61714957754));
113 CHECK(XYZ[70] == Approx(0.525855261336));
114 CHECK(XYZ[71] == Approx(-17.3423920977));
115 CHECK(XYZ[72] == Approx(-13.6402610582));
116 CHECK(XYZ[73] == Approx(0.986708699234));
117 CHECK(XYZ[74] == Approx(26.2459034569));
118 CHECK(XYZ[75] == Approx(-1.89857519219));
119 CHECK(XYZ[76] == Approx(-1.49328080661));
120 CHECK(XYZ[77] == Approx(-24.4531767752));
121 CHECK(XYZ[78] == Approx(10.1888236563));
122 CHECK(XYZ[79] == Approx(-22.5721631771));
123 CHECK(XYZ[80] == Approx(8.68160122197));
124 CHECK(XYZ[81] == Approx(-3.91877832936));
125 CHECK(XYZ[82] == Approx(-3.61733384249));
126 CHECK(XYZ[83] == Approx(12.1418905657));
129 TEST_CASE(
"SoA Cartesian Tensor evaluateVGL subset",
"[numerics]")
138 const double* XYZ = ct.
getcXYZ().data(0);
139 const double* gr0 = ct.
getcXYZ().data(1);
140 const double* gr1 = ct.
getcXYZ().data(2);
141 const double* gr2 = ct.
getcXYZ().data(3);
142 const double* lap = ct.
getcXYZ().data(4);
144 CHECK(XYZ[0] == Approx(0.282094791774));
145 CHECK(gr0[0] == Approx(0));
146 CHECK(gr1[0] == Approx(0));
147 CHECK(gr2[0] == Approx(0));
148 CHECK(lap[0] == Approx(0));
150 CHECK(XYZ[1] == Approx(0.635183265474));
151 CHECK(gr0[1] == Approx(0.488602511903));
152 CHECK(gr1[1] == Approx(0));
153 CHECK(gr2[1] == Approx(0));
154 CHECK(lap[1] == Approx(0));
156 CHECK(XYZ[8] == Approx(-0.710156479885));
157 CHECK(gr0[8] == Approx(-0.546274215296));
158 CHECK(gr1[8] == Approx(0));
159 CHECK(gr2[8] == Approx(1.42031295977));
160 CHECK(lap[8] == Approx(0));
162 CHECK(XYZ[23] == Approx(5.90305249944));
163 CHECK(gr0[23] == Approx(13.6224288449));
164 CHECK(gr1[23] == Approx(4.9192104162));
165 CHECK(gr2[23] == Approx(0));
166 CHECK(lap[23] == Approx(20.9575828383));
168 CHECK(XYZ[34] == Approx(1.9526074946));
169 CHECK(gr0[34] == Approx(1.50200576508));
170 CHECK(gr1[34] == Approx(1.62717291217));
171 CHECK(gr2[34] == Approx(-7.81042997841));
172 CHECK(lap[34] == Approx(15.6208599568));
174 CHECK(XYZ[50] == Approx(-9.78910512921));
175 CHECK(gr0[50] == Approx(-22.5902426059));
176 CHECK(gr1[50] == Approx(-8.15758760768));
177 CHECK(gr2[50] == Approx(19.5782102584));
178 CHECK(lap[50] == Approx(-34.7542193937));
180 CHECK(XYZ[83] == Approx(12.1418905657));
181 CHECK(gr0[83] == Approx(18.6798316395));
182 CHECK(gr1[83] == Approx(20.2364842761));
183 CHECK(gr2[83] == Approx(-48.5675622627));
184 CHECK(lap[83] == Approx(128.367962683));
187 TEST_CASE(
"SoA Cartesian Tensor evaluateVGH subset",
"[numerics]")
196 const double* XYZ = ct.
getcXYZ().data(0);
197 const double* gr0 = ct.
getcXYZ().data(1);
198 const double* gr1 = ct.
getcXYZ().data(2);
199 const double* gr2 = ct.
getcXYZ().data(3);
200 const double* h00 = ct.
getcXYZ().data(4);
201 const double* h01 = ct.
getcXYZ().data(5);
202 const double* h02 = ct.
getcXYZ().data(6);
203 const double* h11 = ct.
getcXYZ().data(7);
204 const double* h12 = ct.
getcXYZ().data(8);
205 const double* h22 = ct.
getcXYZ().data(9);
207 CHECK(XYZ[0] == Approx(0.282094791774));
208 CHECK(gr0[0] == Approx(0));
209 CHECK(gr1[0] == Approx(0));
210 CHECK(gr2[0] == Approx(0));
212 CHECK(h00[0] == Approx(0));
213 CHECK(h01[0] == Approx(0));
214 CHECK(h02[0] == Approx(0));
215 CHECK(h11[0] == Approx(0));
216 CHECK(h12[0] == Approx(0));
217 CHECK(h22[0] == Approx(0));
220 CHECK(XYZ[1] == Approx(0.635183265474));
221 CHECK(gr0[1] == Approx(0.488602511903));
222 CHECK(gr1[1] == Approx(0));
223 CHECK(gr2[1] == Approx(0));
225 CHECK(h00[1] == Approx(0));
226 CHECK(h01[1] == Approx(0));
227 CHECK(h02[1] == Approx(0));
228 CHECK(h11[1] == Approx(0));
229 CHECK(h12[1] == Approx(0));
230 CHECK(h22[1] == Approx(0));
233 CHECK(XYZ[15] == Approx(3.12417199136));
234 CHECK(gr0[15] == Approx(2.40320922412));
235 CHECK(gr1[15] == Approx(5.20695331894));
236 CHECK(gr2[15] == Approx(0));
238 CHECK(h00[15] == Approx(0));
239 CHECK(h01[15] == Approx(4.00534870687));
240 CHECK(h02[15] == Approx(0));
241 CHECK(h11[15] == Approx(4.33912776578));
242 CHECK(h12[15] == Approx(0));
243 CHECK(h22[15] == Approx(0));
246 CHECK(XYZ[32] == Approx(-5.07677948596));
247 CHECK(gr0[32] == Approx(-7.81042997841));
248 CHECK(gr1[32] == Approx(-4.23064957164));
249 CHECK(gr2[32] == Approx(10.1535589719));
251 CHECK(h00[32] == Approx(-6.00802306031));
252 CHECK(h01[32] == Approx(-6.50869164867));
253 CHECK(h02[32] == Approx(15.6208599568));
254 CHECK(h11[32] == Approx(0));
255 CHECK(h12[32] == Approx(8.46129914327));
256 CHECK(h22[32] == Approx(0));
259 CHECK(XYZ[52] == Approx(-1.44809247474));
260 CHECK(gr0[52] == Approx(-1.11391728826));
261 CHECK(gr1[52] == Approx(-1.20674372895));
262 CHECK(gr2[52] == Approx(8.68855484841));
264 CHECK(h00[52] == Approx(0));
265 CHECK(h01[52] == Approx(-0.928264406882));
266 CHECK(h02[52] == Approx(6.68350372955));
267 CHECK(h11[52] == Approx(0));
268 CHECK(h12[52] == Approx(7.24046237368));
269 CHECK(h22[52] == Approx(-34.7542193937));
272 CHECK(XYZ[71] == Approx(-17.3423920977));
273 CHECK(gr0[71] == Approx(-53.3612064546));
274 CHECK(gr1[71] == Approx(-14.4519934148));
275 CHECK(gr2[71] == Approx(34.6847841955));
277 CHECK(h00[71] == Approx(-123.141245664));
278 CHECK(h01[71] == Approx(-44.4676720455));
279 CHECK(h02[71] == Approx(106.722412909));
280 CHECK(h11[71] == Approx(0));
281 CHECK(h12[71] == Approx(28.9039868295));
282 CHECK(h22[71] == Approx(0));
helper functions for EinsplineSetBuilder
TEST_CASE("complex_helper", "[type_traits]")
void evaluateV(T x, T y, T z, T *XYZ) const
compute Ylm
auto & getcXYZ() const
cXYZ accessor
void evaluateVGH(T x, T y, T z)
OHMMS_PRECISION real_type
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))
CartesianTensor according to Gamess order.
void evaluateVGL(T x, T y, T z)
makes a table of and their gradients up to Lmax.