69 const auto& coefs_row =
70 libint2::solidharmonics::SolidHarmonicsCoefficients<double>::instance(
72 const auto& coefs_col =
73 libint2::solidharmonics::SolidHarmonicsCoefficients<double>::instance(
75 int npure_row = 2 * int(l_row) + 1;
76 int npure_col = 2 * int(l_col) + 1;
77 Matrix spherical = Matrix::Zero(npure_row, npure_col);
79 for (
auto s1 = 0; s1 != npure_row; ++s1) {
83 coefs_row.row_idx(s1);
84 const auto* c1_vals = coefs_row.row_values(
87 for (
auto s2 = 0; s2 != npure_col; ++s2) {
90 const auto* c2_idxs = coefs_col.row_idx(s2);
92 const auto* c2_vals = coefs_col.row_values(
94 for (
size_t ic1 = 0; ic1 != nc1;
96 auto c1 = c1_idxs[ic1];
97 auto s1_c1_coeff = c1_vals[ic1];
98 for (
size_t ic2 = 0; ic2 != nc2;
100 auto c2 = c2_idxs[ic2];
101 auto s2_c2_coeff = c2_vals[ic2];
102 spherical(s1, s2) += cartesian(c1, c2) * s1_c1_coeff * s2_c2_coeff;
182 return {0, 1, 0, 0, 2, 1, 1, 0, 0, 0, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0, 4,
183 3, 3, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 5, 4, 4, 3, 3, 3, 2,
184 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 6, 5, 5, 4, 4, 4, 3,
185 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
186 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
187 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 7, 6, 6, 6,
188 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
189 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
193 return {0, 0, 1, 0, 0, 1, 0, 2, 1, 0, 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 0,
194 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 0, 1, 0, 2, 1, 0, 3,
195 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 0, 1, 0, 2, 1, 0, 3,
196 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0,
197 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0,
198 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 0, 2, 1, 0,
199 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1,
200 0, 7, 6, 5, 4, 3, 2, 1, 0, 8, 7, 6, 5, 4, 3, 2, 1, 0};
204 return {0, 0, 0, 1, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0,
205 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 0, 1, 0, 1, 2, 0,
206 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 0, 1, 0, 1, 2, 0,
207 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6,
208 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5,
209 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 1, 0, 1, 2,
210 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
211 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8};
215 return {0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 4, 5, 6, 7,
216 8, 9, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17,
217 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
218 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0,
219 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
220 49, 50, 51, 52, 53, 54, 55, 0, 0, 0, 0, 0, 0, 0,
221 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
222 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
223 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 86, 87, 88, 89,
224 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
225 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
226 118, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0};
229 return {0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 0, 4, 0, 5,
230 6, 0, 7, 8, 9, 0, 0, 10, 0, 11, 12, 0, 13, 14,
231 15, 0, 16, 17, 18, 19, 0, 0, 20, 0, 21, 22, 0, 23,
232 24, 25, 0, 26, 27, 28, 29, 0, 30, 31, 32, 33, 34, 0,
233 0, 35, 0, 36, 37, 0, 38, 39, 40, 0, 41, 42, 43, 44,
234 0, 45, 46, 47, 48, 49, 0, 50, 51, 52, 53, 54, 55, 0,
235 0, 56, 0, 57, 58, 0, 59, 60, 61, 0, 62, 63, 64, 65,
236 0, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0,
237 77, 78, 79, 80, 81, 82, 83, 0, 0, 84, 0, 85, 86, 0,
238 87, 88, 89, 0, 90, 91, 92, 93, 0, 94, 95, 96, 97, 98,
239 0, 99, 100, 101, 102, 103, 104, 0, 105, 106, 107, 108, 109, 110,
240 111, 0, 112, 113, 114, 115, 116, 117, 118, 119, 0};
244 return {0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 0, 4, 0,
245 5, 6, 0, 7, 8, 9, 0, 0, 10, 0, 11, 12, 0, 13,
246 14, 15, 0, 16, 17, 18, 19, 0, 0, 20, 0, 21, 22, 0,
247 23, 24, 25, 0, 26, 27, 28, 29, 0, 30, 31, 32, 33, 34,
248 0, 0, 35, 0, 36, 37, 0, 38, 39, 40, 0, 41, 42, 43,
249 44, 0, 45, 46, 47, 48, 49, 0, 50, 51, 52, 53, 54, 55,
250 0, 0, 56, 0, 57, 58, 0, 59, 60, 61, 0, 62, 63, 64,
251 65, 0, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 76,
252 0, 77, 78, 79, 80, 81, 82, 83, 0, 0, 84, 0, 85, 86,
253 0, 87, 88, 89, 0, 90, 91, 92, 93, 0, 94, 95, 96, 97,
254 98, 0, 99, 100, 101, 102, 103, 104, 0, 105, 106, 107, 108, 109,
255 110, 111, 0, 112, 113, 114, 115, 116, 117, 118, 119};
259 return {1, 4, 5, 6, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23,
260 24, 25, 26, 27, 28, 29, 35, 36, 37, 38, 39, 40, 41, 42,
261 43, 44, 45, 46, 47, 48, 49, 56, 57, 58, 59, 60, 61, 62,
262 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
263 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
264 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
265 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
266 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
267 148, 149, 150, 151, 152, 153, 154, 155};
271 return {2, 5, 7, 8, 11, 13, 14, 16, 17, 18, 21, 23, 24, 26,
272 27, 28, 30, 31, 32, 33, 36, 38, 39, 41, 42, 43, 45, 46,
273 47, 48, 50, 51, 52, 53, 54, 57, 59, 60, 62, 63, 64, 66,
274 67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82,
275 85, 87, 88, 90, 91, 92, 94, 95, 96, 97, 99, 100, 101, 102,
276 103, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118,
277 121, 123, 124, 126, 127, 128, 130, 131, 132, 133, 135, 136, 137, 138,
278 139, 141, 142, 143, 144, 145, 146, 148, 149, 150, 151, 152, 153, 154,
279 156, 157, 158, 159, 160, 161, 162, 163};
283 return {3, 6, 8, 9, 12, 14, 15, 17, 18, 19, 22, 24, 25, 27,
284 28, 29, 31, 32, 33, 34, 37, 39, 40, 42, 43, 44, 46, 47,
285 48, 49, 51, 52, 53, 54, 55, 58, 60, 61, 63, 64, 65, 67,
286 68, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83,
287 86, 88, 89, 91, 92, 93, 95, 96, 97, 98, 100, 101, 102, 103,
288 104, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119,
289 122, 124, 125, 127, 128, 129, 131, 132, 133, 134, 136, 137, 138, 139,
290 140, 142, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155,
291 157, 158, 159, 160, 161, 162, 163, 164};