26namespace shammath::details {
31 inline static constexpr Tscal
Rkern = 2;
33 inline static constexpr Tscal
hfactd = 1.2;
36 inline static constexpr Tscal
norm_1d = 2. / 3.;
38 inline static constexpr Tscal
norm_2d = 10. / (7. * shambase::constants::pi<Tscal>);
40 inline static constexpr Tscal
norm_3d = 1 / shambase::constants::pi<Tscal>;
42 inline static Tscal f(Tscal q) {
50 constexpr Tscal div1_4 = (1. / 4.);
62 inline static Tscal df(Tscal q) {
64 constexpr Tscal div9_4 = (9. / 4.);
65 constexpr Tscal div3_4 = (3. / 4.);
68 return -3 * q + div9_4 * q * q;
70 return -3 + 3 * q - div3_4 * q * q;
75 inline static Tscal ddf(Tscal q) {
77 return (9.0 / 2.0) * q - 3;
79 return 3 - (3.0 / 2.0) * q;
84 inline static Tscal phi_tilde_3d(Tscal q) {
91 return (1.0 / 30.0) * shambase::constants::pi<Tscal>
92 * (t1 * (3 * t2 - 9 * t1 + 20) - 42);
94 return (1.0 / 30.0) * shambase::constants::pi<Tscal>
95 * (-t5 + 9 * t4 - 30 * t3 + 40 * t2 - 48 * q + 2) / q;
97 return -shambase::constants::pi<Tscal> / q;
100 inline static Tscal phi_tilde_3d_prime(Tscal q) {
107 return (1.0 / 30.0) * shambase::constants::pi<Tscal>
108 * (t1 * (9 * t1 - 18 * q) + 2 * q * (3 * t2 - 9 * t1 + 20));
110 return (1.0 / 30.0) * shambase::constants::pi<Tscal>
111 * (-6 * t4 + 45 * t3 - 120 * t2 + 120 * t1 - 48) / q
112 - (1.0 / 30.0) * shambase::constants::pi<Tscal>
113 * (-t5 + 9 * t4 - 30 * t3 + 40 * t2 - 48 * q + 2) / t1;
115 return shambase::constants::pi<Tscal> / t1;
119 template<
class Tscal>
122 inline static constexpr Tscal
Rkern = 5. / 2.;
124 inline static constexpr Tscal
hfactd = 1.2;
127 inline static constexpr Tscal
norm_1d = 1. / 24.;
129 inline static constexpr Tscal
norm_2d = 96. / (1199 * shambase::constants::pi<Tscal>);
131 inline static constexpr Tscal
norm_3d = 1 / (20 * shambase::constants::pi<Tscal>);
133 inline static Tscal f(Tscal q) {
135 constexpr Tscal div5_2 = (5. / 2.);
136 constexpr Tscal div3_2 = (3. / 2.);
137 constexpr Tscal div1_2 = (1. / 2.);
139 Tscal t1 = div5_2 - q;
140 Tscal t2 = div3_2 - q;
141 Tscal t3 = div1_2 - q;
143 Tscal t1_2 = t1 * t1;
144 Tscal t2_2 = t2 * t2;
145 Tscal t3_2 = t3 * t3;
157 }
else if (q < div3_2) {
159 }
else if (q < div5_2) {
165 inline static Tscal df(Tscal q) {
167 constexpr Tscal div5_2 = (5. / 2.);
168 constexpr Tscal div3_2 = (3. / 2.);
169 constexpr Tscal div1_2 = (1. / 2.);
171 Tscal t1 = div5_2 - q;
172 Tscal t2 = div3_2 - q;
173 Tscal t3 = div1_2 - q;
175 Tscal t1_2 = t1 * t1;
176 Tscal t2_2 = t2 * t2;
177 Tscal t3_2 = t3 * t3;
189 }
else if (q < div3_2) {
191 }
else if (q < div5_2) {
197 inline static Tscal ddf(Tscal q) {
202 return 120 * t1 - 60 * t2 + 12 * t3;
203 }
else if (q < 3.0 / 2.0) {
204 return -60 * t2 + 12 * t3;
205 }
else if (q < 5.0 / 2.0) {
211 inline static Tscal phi_tilde_3d(Tscal q) {
219 return (1.0 / 336.0) * shambase::constants::pi<Tscal>
220 * (192 * t5 - 1008 * t3 + 3220 * t1 - 8393);
221 }
else if (q < 3.0 / 2.0) {
222 return (1.0 / 336.0) * shambase::constants::pi<Tscal>
223 * (-128 * t6 + 896 * t5 - 2016 * t4 + 560 * t3 + 3080 * t2 - 8386 * q - 1)
225 }
else if (q < 5.0 / 2.0) {
226 return (1.0 / 672.0) * shambase::constants::pi<Tscal>
227 * (64 * t6 - 896 * t5 + 5040 * t4 - 14000 * t3 + 17500 * t2 - 21875 * q
231 return -20 * shambase::constants::pi<Tscal> / q;
234 inline static Tscal phi_tilde_3d_prime(Tscal q) {
242 return (1.0 / 336.0) * shambase::constants::pi<Tscal>
243 * (1152 * t4 - 4032 * t2 + 6440 * q);
244 }
else if (q < 3.0 / 2.0) {
245 return (1.0 / 336.0) * shambase::constants::pi<Tscal>
246 * (-896 * t5 + 5376 * t4 - 10080 * t3 + 2240 * t2 + 9240 * t1 - 8386) / q
247 - (1.0 / 336.0) * shambase::constants::pi<Tscal>
248 * (-128 * t6 + 896 * t5 - 2016 * t4 + 560 * t3 + 3080 * t2 - 8386 * q
251 }
else if (q < 5.0 / 2.0) {
252 return (1.0 / 672.0) * shambase::constants::pi<Tscal>
253 * (448 * t5 - 5376 * t4 + 25200 * t3 - 56000 * t2 + 52500 * t1 - 21875)
255 - (1.0 / 672.0) * shambase::constants::pi<Tscal>
256 * (64 * t6 - 896 * t5 + 5040 * t4 - 14000 * t3 + 17500 * t2 - 21875 * q
260 return 20 * shambase::constants::pi<Tscal> / t1;
264 template<
class Tscal>
267 inline static constexpr Tscal
Rkern = 3;
269 inline static constexpr Tscal
hfactd = 1.0;
272 inline static constexpr Tscal
norm_1d = 1. / 120.;
274 inline static constexpr Tscal
norm_2d = 7. / (478 * shambase::constants::pi<Tscal>);
276 inline static constexpr Tscal
norm_3d = 1 / (120 * shambase::constants::pi<Tscal>);
278 inline static Tscal f(Tscal q) {
284 Tscal t1_2 = t1 * t1;
285 Tscal t2_2 = t2 * t2;
286 Tscal t3_2 = t3 * t3;
288 t1 = t1 * t1_2 * t1_2;
289 t2 = t2 * t2_2 * t2_2;
290 t3 = t3 * t3_2 * t3_2;
306 inline static Tscal df(Tscal q) {
312 Tscal t1_2 = t1 * t1;
313 Tscal t2_2 = t2 * t2;
314 Tscal t3_2 = t3 * t3;
334 inline static Tscal ddf(Tscal q) {
339 return 300 * t1 - 120 * t2 + 20 * t3;
341 return -120 * t2 + 20 * t3;
348 inline static Tscal phi_tilde_3d(Tscal q) {
357 return (1.0 / 7.0) * shambase::constants::pi<Tscal>
358 * (-5 * t6 + 20 * t5 - 84 * t3 + 308 * t1 - 956);
360 return (1.0 / 14.0) * shambase::constants::pi<Tscal>
361 * (5 * t7 - 60 * t6 + 280 * t5 - 588 * t4 + 350 * t3 + 476 * t2 - 1892 * q
365 return (1.0 / 14.0) * shambase::constants::pi<Tscal>
366 * (-t7 + 20 * t6 - 168 * t5 + 756 * t4 - 1890 * t3 + 2268 * t2 - 2916 * q
370 return -120 * shambase::constants::pi<Tscal> / q;
373 inline static Tscal phi_tilde_3d_prime(Tscal q) {
382 return (1.0 / 7.0) * shambase::constants::pi<Tscal>
383 * (-35 * t5 + 120 * t4 - 336 * t2 + 616 * q);
385 return (1.0 / 14.0) * shambase::constants::pi<Tscal>
386 * (40 * t6 - 420 * t5 + 1680 * t4 - 2940 * t3 + 1400 * t2 + 1428 * t1
389 - (1.0 / 14.0) * shambase::constants::pi<Tscal>
390 * (5 * t7 - 60 * t6 + 280 * t5 - 588 * t4 + 350 * t3 + 476 * t2
394 return (1.0 / 14.0) * shambase::constants::pi<Tscal>
395 * (-8 * t6 + 140 * t5 - 1008 * t4 + 3780 * t3 - 7560 * t2 + 6804 * t1
398 - (1.0 / 14.0) * shambase::constants::pi<Tscal>
399 * (-t7 + 20 * t6 - 168 * t5 + 756 * t4 - 1890 * t3 + 2268 * t2
403 return 120 * shambase::constants::pi<Tscal> / t1;
407 template<
class Tscal>
410 inline static constexpr Tscal
Rkern = 3.5;
412 inline static constexpr Tscal
hfactd = 1.0;
415 inline static constexpr Tscal
norm_1d = 1. / 720;
417 inline static constexpr Tscal
norm_2d = 256. / (113149 * shambase::constants::pi<Tscal>);
419 inline static constexpr Tscal
norm_3d = 6. / (5040. * shambase::constants::pi<Tscal>);
421 inline static Tscal f(Tscal q) {
423 constexpr Tscal div7_2 = (7. / 2.);
424 constexpr Tscal div5_2 = (5. / 2.);
425 constexpr Tscal div3_2 = (3. / 2.);
426 constexpr Tscal div1_2 = (1. / 2.);
428 Tscal t1 = div7_2 - q;
429 Tscal t2 = div5_2 - q;
430 Tscal t3 = div3_2 - q;
431 Tscal t4 = div1_2 - q;
445 return t1 + t2 + t3 + t4;
446 }
else if (q < div3_2) {
448 }
else if (q < div5_2) {
450 }
else if (q < div7_2) {
456 inline static Tscal df(Tscal q) {
458 constexpr Tscal div7_2 = (7. / 2.);
459 constexpr Tscal div5_2 = (5. / 2.);
460 constexpr Tscal div3_2 = (3. / 2.);
461 constexpr Tscal div1_2 = (1. / 2.);
463 Tscal t1 = div7_2 - q;
464 Tscal t2 = div5_2 - q;
465 Tscal t3 = div3_2 - q;
466 Tscal t4 = div1_2 - q;
477 t4 *= (-6.) * (-35.);
480 return t1 + t2 + t3 + t4;
481 }
else if (q < div3_2) {
483 }
else if (q < div5_2) {
485 }
else if (q < div7_2) {
491 inline static Tscal ddf(Tscal q) {
497 return -1050 * t1 + 630 * t2 - 210 * t3 + 30 * t4;
498 }
else if (q < 3.0 / 2.0) {
499 return 630 * t2 - 210 * t3 + 30 * t4;
500 }
else if (q < 5.0 / 2.0) {
501 return -210 * t3 + 30 * t4;
502 }
else if (q < 7.0 / 2.0) {
508 inline static Tscal phi_tilde_3d(Tscal q) {
518 return (1.0 / 1152.0) * shambase::constants::pi<Tscal>
519 * (-1280 * t7 + 11520 * t5 - 66528 * t3 + 282576 * t1 - 1018341);
520 }
else if (q < 3.0 / 2.0) {
521 return (1.0 / 4608.0) * shambase::constants::pi<Tscal>
522 * (3840 * t8 - 34560 * t7 + 103680 * t6 - 53760 * t5 - 235872 * t4
523 - 10080 * t3 + 1131984 * t2 - 4073409 * q + 5)
525 }
else if (q < 5.0 / 2.0) {
526 return (1.0 / 2304.0) * shambase::constants::pi<Tscal>
527 * (-768 * t8 + 13824 * t7 - 103680 * t6 + 408576 * t5 - 852768 * t4
528 + 729792 * t3 + 198576 * t2 - 1948131 * q - 29522)
530 }
else if (q < 7.0 / 2.0) {
531 return (1.0 / 4608.0) * shambase::constants::pi<Tscal>
532 * (256 * t8 - 6912 * t7 + 80640 * t6 - 526848 * t5 + 2074464 * t4
533 - 4840416 * t3 + 5647152 * t2 - 7411887 * q + 1894081)
536 return -840 * shambase::constants::pi<Tscal> / q;
539 inline static Tscal phi_tilde_3d_prime(Tscal q) {
549 return (1.0 / 1152.0) * shambase::constants::pi<Tscal>
550 * (-10240 * t6 + 69120 * t4 - 266112 * t2 + 565152 * q);
551 }
else if (q < 3.0 / 2.0) {
552 return (1.0 / 4608.0) * shambase::constants::pi<Tscal>
553 * (34560 * t7 - 276480 * t6 + 725760 * t5 - 322560 * t4 - 1179360 * t3
554 - 40320 * t2 + 3395952 * t1 - 4073409)
556 - (1.0 / 4608.0) * shambase::constants::pi<Tscal>
557 * (3840 * t8 - 34560 * t7 + 103680 * t6 - 53760 * t5 - 235872 * t4
558 - 10080 * t3 + 1131984 * t2 - 4073409 * q + 5)
560 }
else if (q < 5.0 / 2.0) {
561 return (1.0 / 2304.0) * shambase::constants::pi<Tscal>
562 * (-6912 * t7 + 110592 * t6 - 725760 * t5 + 2451456 * t4 - 4263840 * t3
563 + 2919168 * t2 + 595728 * t1 - 1948131)
565 - (1.0 / 2304.0) * shambase::constants::pi<Tscal>
566 * (-768 * t8 + 13824 * t7 - 103680 * t6 + 408576 * t5 - 852768 * t4
567 + 729792 * t3 + 198576 * t2 - 1948131 * q - 29522)
569 }
else if (q < 7.0 / 2.0) {
570 return (1.0 / 4608.0) * shambase::constants::pi<Tscal>
571 * (2304 * t7 - 55296 * t6 + 564480 * t5 - 3161088 * t4 + 10372320 * t3
572 - 19361664 * t2 + 16941456 * t1 - 7411887)
574 - (1.0 / 4608.0) * shambase::constants::pi<Tscal>
575 * (256 * t8 - 6912 * t7 + 80640 * t6 - 526848 * t5 + 2074464 * t4
576 - 4840416 * t3 + 5647152 * t2 - 7411887 * q + 1894081)
579 return 840 * shambase::constants::pi<Tscal> / t1;
583 template<
class Tscal>
586 inline static constexpr Tscal
Rkern = 4.0;
588 inline static constexpr Tscal
hfactd = 1.0;
591 inline static constexpr Tscal
norm_1d = 1.0 / 5040.0;
593 inline static constexpr Tscal
norm_2d = (9.0 / 29740.0) / shambase::constants::pi<Tscal>;
595 inline static constexpr Tscal
norm_3d = (1.0 / 6720.0) / shambase::constants::pi<Tscal>;
597 inline static Tscal f(Tscal q) {
615 return t1 + t2 + t3 + t4;
626 inline static Tscal df(Tscal q) {
641 t4 *= (-7.) * (-56.);
644 return t1 + t2 + t3 + t4;
655 inline static Tscal ddf(Tscal q) {
661 return -2352 * t1 + 1176 * t2 - 336 * t3 + 42 * t4;
663 return 1176 * t2 - 336 * t3 + 42 * t4;
665 return -336 * t3 + 42 * t4;
672 inline static Tscal phi_tilde_3d(Tscal q) {
683 return (2.0 / 9.0) * shambase::constants::pi<Tscal>
684 * (t2 * (7 * t7 - 35 * t6 + 240 * t4 - 1512 * t2 + 7248) - 29740);
686 return (2.0 / 45.0) * shambase::constants::pi<Tscal>
687 * (-21 * t1 + 315 * t9 - 1890 * t8 + 5400 * t7 - 5880 * t6 - 2268 * t5
688 - 2940 * t4 + 37080 * t3 - 148770 * q + 14)
691 return (2.0 / 45.0) * shambase::constants::pi<Tscal>
692 * (7 * t1 - 175 * t9 + 1890 * t8 - 11400 * t7 + 41160 * t6 - 86940 * t5
693 + 91140 * t4 - 16680 * t3 - 130850 * q - 7154)
696 return (2.0 / 45.0) * shambase::constants::pi<Tscal>
697 * (-t1 + 35 * t9 - 540 * t8 + 4800 * t7 - 26880 * t6 + 96768 * t5
698 - 215040 * t4 + 245760 * t3 - 327680 * q + 110944)
701 return -6720 * shambase::constants::pi<Tscal> / q;
704 inline static Tscal phi_tilde_3d_prime(Tscal q) {
715 return (2.0 / 9.0) * shambase::constants::pi<Tscal>
716 * (t2 * (49 * t6 - 210 * t5 + 960 * t3 - 3024 * q)
717 + 2 * q * (7 * t7 - 35 * t6 + 240 * t4 - 1512 * t2 + 7248));
719 return (2.0 / 45.0) * shambase::constants::pi<Tscal>
720 * (-210 * t9 + 2835 * t8 - 15120 * t7 + 37800 * t6 - 35280 * t5
721 - 11340 * t4 - 11760 * t3 + 111240 * t2 - 148770)
723 - (2.0 / 45.0) * shambase::constants::pi<Tscal>
724 * (-21 * t1 + 315 * t9 - 1890 * t8 + 5400 * t7 - 5880 * t6 - 2268 * t5
725 - 2940 * t4 + 37080 * t3 - 148770 * q + 14)
728 return (2.0 / 45.0) * shambase::constants::pi<Tscal>
729 * (70 * t9 - 1575 * t8 + 15120 * t7 - 79800 * t6 + 246960 * t5
730 - 434700 * t4 + 364560 * t3 - 50040 * t2 - 130850)
732 - (2.0 / 45.0) * shambase::constants::pi<Tscal>
733 * (7 * t1 - 175 * t9 + 1890 * t8 - 11400 * t7 + 41160 * t6 - 86940 * t5
734 + 91140 * t4 - 16680 * t3 - 130850 * q - 7154)
737 return (2.0 / 45.0) * shambase::constants::pi<Tscal>
738 * (-10 * t9 + 315 * t8 - 4320 * t7 + 33600 * t6 - 161280 * t5
739 + 483840 * t4 - 860160 * t3 + 737280 * t2 - 327680)
741 - (2.0 / 45.0) * shambase::constants::pi<Tscal>
742 * (-t1 + 35 * t9 - 540 * t8 + 4800 * t7 - 26880 * t6 + 96768 * t5
743 - 215040 * t4 + 245760 * t3 - 327680 * q + 110944)
746 return 6720 * shambase::constants::pi<Tscal> / t2;
750 template<
class Tscal>
753 inline static constexpr Tscal
Rkern = 4.5;
755 inline static constexpr Tscal
hfactd = 1.0;
758 inline static constexpr Tscal
norm_1d = 1. / 40320;
760 inline static constexpr Tscal
norm_2d = 512. / (14345663 * shambase::constants::pi<Tscal>);
762 inline static constexpr Tscal
norm_3d = 6. / (362880. * shambase::constants::pi<Tscal>);
764 inline static Tscal f(Tscal q) {
766 constexpr Tscal div9_2 = (9. / 2.);
767 constexpr Tscal div7_2 = (7. / 2.);
768 constexpr Tscal div5_2 = (5. / 2.);
769 constexpr Tscal div3_2 = (3. / 2.);
770 constexpr Tscal div1_2 = (1. / 2.);
772 Tscal t1 = div9_2 - q;
773 Tscal t2 = div7_2 - q;
774 Tscal t3 = div5_2 - q;
775 Tscal t4 = div3_2 - q;
776 Tscal t5 = div1_2 - q;
791 return t1 + t2 + t3 + t4 + t5;
792 }
else if (q < div3_2) {
793 return t1 + t2 + t3 + t4;
794 }
else if (q < div5_2) {
796 }
else if (q < div7_2) {
798 }
else if (q < div9_2) {
804 inline static Tscal df(Tscal q) {
806 constexpr Tscal div9_2 = (9. / 2.);
807 constexpr Tscal div7_2 = (7. / 2.);
808 constexpr Tscal div5_2 = (5. / 2.);
809 constexpr Tscal div3_2 = (3. / 2.);
810 constexpr Tscal div1_2 = (1. / 2.);
812 Tscal t1 = div9_2 - q;
813 Tscal t2 = div7_2 - q;
814 Tscal t3 = div5_2 - q;
815 Tscal t4 = div3_2 - q;
816 Tscal t5 = div1_2 - q;
827 t4 *= (-8.) * (-84.);
828 t5 *= (-8.) * (126.);
831 return t1 + t2 + t3 + t4 + t5;
832 }
else if (q < div3_2) {
833 return t1 + t2 + t3 + t4;
834 }
else if (q < div5_2) {
836 }
else if (q < div7_2) {
838 }
else if (q < div9_2) {
844 inline static Tscal ddf(Tscal q) {
851 return 7056 * t1 - 4704 * t2 + 2016 * t3 - 504 * t4 + 56 * t5;
852 }
else if (q < 3.0 / 2.0) {
853 return -4704 * t2 + 2016 * t3 - 504 * t4 + 56 * t5;
854 }
else if (q < 5.0 / 2.0) {
855 return 2016 * t3 - 504 * t4 + 56 * t5;
856 }
else if (q < 7.0 / 2.0) {
857 return -504 * t4 + 56 * t5;
858 }
else if (q < 9.0 / 2.0) {
864 inline static Tscal phi_tilde_3d(Tscal q) {
876 return (1.0 / 2816.0) * shambase::constants::pi<Tscal>
877 * (7168 * t1 - 98560 * t9 + 908160 * t7 - 6408864 * t5 + 34283436 * t3
879 }
else if (q < 3.0 / 2.0) {
880 return (1.0 / 14080.0) * shambase::constants::pi<Tscal>
881 * (-28672 * t2 + 315392 * t1 - 1182720 * t10 + 887040 * t9 + 3801600 * t8
882 + 413952 * t7 - 32199552 * t6 + 36960 * t5 + 171412560 * t4
885 }
else if (q < 5.0 / 2.0) {
886 return (1.0 / 14080.0) * shambase::constants::pi<Tscal>
887 * (14336 * t2 - 315392 * t1 + 2956800 * t10 - 15079680 * t9 + 43718400 * t8
888 - 66646272 * t7 + 43243200 * t6 - 53850720 * t5 + 191620440 * t4
889 - 792042570 * q + 826679)
891 }
else if (q < 7.0 / 2.0) {
892 return (1.0 / 14080.0) * shambase::constants::pi<Tscal>
893 * (-4096 * t2 + 135168 * t1 - 1971200 * t10 + 16600320 * t9 - 88281600 * t8
894 + 302953728 * t7 - 649756800 * t6 + 771149280 * t5 - 324004560 * t4
895 - 577198820 * q - 96829571)
897 }
else if (q < 9.0 / 2.0) {
898 return (1.0 / 28160.0) * shambase::constants::pi<Tscal>
899 * (1024 * t2 - 45056 * t1 + 887040 * t10 - 10264320 * t9 + 76982400 * t8
900 - 387991296 * t7 + 1309470624 * t6 - 2806008480 * t5 + 3156759540 * t4
901 - 4261625379 * q + 1783667601)
904 return -60480 * shambase::constants::pi<Tscal> / q;
907 inline static Tscal phi_tilde_3d_prime(Tscal q) {
919 return (1.0 / 2816.0) * shambase::constants::pi<Tscal>
920 * (71680 * t10 - 788480 * t8 + 5448960 * t6 - 25635456 * t4 + 68566872 * q);
921 }
else if (q < 3.0 / 2.0) {
922 return (1.0 / 14080.0) * shambase::constants::pi<Tscal>
923 * (-315392 * t1 + 3153920 * t10 - 10644480 * t9 + 7096320 * t8
924 + 26611200 * t7 + 2483712 * t6 - 160997760 * t5 + 147840 * t4
925 + 514237680 * t3 - 789011388)
927 - (1.0 / 14080.0) * shambase::constants::pi<Tscal>
928 * (-28672 * t2 + 315392 * t1 - 1182720 * t10 + 887040 * t9
929 + 3801600 * t8 + 413952 * t7 - 32199552 * t6 + 36960 * t5
930 + 171412560 * t4 - 789011388 * q - 7)
932 }
else if (q < 5.0 / 2.0) {
933 return (1.0 / 14080.0) * shambase::constants::pi<Tscal>
934 * (157696 * t1 - 3153920 * t10 + 26611200 * t9 - 120637440 * t8
935 + 306028800 * t7 - 399877632 * t6 + 216216000 * t5 - 215402880 * t4
936 + 574861320 * t3 - 792042570)
938 - (1.0 / 14080.0) * shambase::constants::pi<Tscal>
939 * (14336 * t2 - 315392 * t1 + 2956800 * t10 - 15079680 * t9
940 + 43718400 * t8 - 66646272 * t7 + 43243200 * t6 - 53850720 * t5
941 + 191620440 * t4 - 792042570 * q + 826679)
943 }
else if (q < 7.0 / 2.0) {
944 return (1.0 / 14080.0) * shambase::constants::pi<Tscal>
945 * (-45056 * t1 + 1351680 * t10 - 17740800 * t9 + 132802560 * t8
946 - 617971200 * t7 + 1817722368 * t6 - 3248784000 * t5 + 3084597120 * t4
947 - 972013680 * t3 - 577198820)
949 - (1.0 / 14080.0) * shambase::constants::pi<Tscal>
950 * (-4096 * t2 + 135168 * t1 - 1971200 * t10 + 16600320 * t9
951 - 88281600 * t8 + 302953728 * t7 - 649756800 * t6 + 771149280 * t5
952 - 324004560 * t4 - 577198820 * q - 96829571)
954 }
else if (q < 9.0 / 2.0) {
955 return (1.0 / 28160.0) * shambase::constants::pi<Tscal>
956 * (11264 * t1 - 450560 * t10 + 7983360 * t9 - 82114560 * t8
957 + 538876800 * t7 - 2327947776 * t6 + 6547353120 * t5
958 - 11224033920 * t4 + 9470278620 * t3 - 4261625379)
960 - (1.0 / 28160.0) * shambase::constants::pi<Tscal>
961 * (1024 * t2 - 45056 * t1 + 887040 * t10 - 10264320 * t9
962 + 76982400 * t8 - 387991296 * t7 + 1309470624 * t6 - 2806008480 * t5
963 + 3156759540 * t4 - 4261625379 * q + 1783667601)
966 return 60480 * shambase::constants::pi<Tscal> / t3;
970 template<
class Tscal>
973 inline static constexpr Tscal
Rkern = 5;
975 inline static constexpr Tscal
hfactd = 1.0;
978 inline static constexpr Tscal
norm_1d = 1. / 362880;
980 inline static constexpr Tscal
norm_2d = 11. / (2922230 * shambase::constants::pi<Tscal>);
982 inline static constexpr Tscal
norm_3d = 6. / (3628800. * shambase::constants::pi<Tscal>);
984 inline static Tscal f(Tscal q) {
1005 return t1 + t2 + t3 + t4 + t5;
1007 return t1 + t2 + t3 + t4;
1009 return t1 + t2 + t3;
1018 inline static Tscal df(Tscal q) {
1033 t2 *= (-9.) * (-10.);
1034 t3 *= (-9.) * (45.);
1035 t4 *= (-9.) * (-120.);
1036 t5 *= (-9.) * (210.);
1039 return t1 + t2 + t3 + t4 + t5;
1041 return t1 + t2 + t3 + t4;
1043 return t1 + t2 + t3;
1052 inline static Tscal ddf(Tscal q) {
1059 return 15120 * t1 - 8640 * t2 + 3240 * t3 - 720 * t4 + 72 * t5;
1061 return -8640 * t2 + 3240 * t3 - 720 * t4 + 72 * t5;
1063 return 3240 * t3 - 720 * t4 + 72 * t5;
1065 return -720 * t4 + 72 * t5;
1072 inline static Tscal phi_tilde_3d(Tscal q) {
1085 return (2.0 / 33.0) * shambase::constants::pi<Tscal>
1086 * (-63 * t2 + 378 * t1 - 3850 * t10 + 37620 * t8 - 291060 * t6 + 1718090 * t4
1089 return (2.0 / 33.0) * shambase::constants::pi<Tscal>
1090 * (42 * t3 - 756 * t2 + 5544 * t1 - 20020 * t11 + 31185 * t10 - 3960 * t9
1091 + 38808 * t8 - 316008 * t7 + 10395 * t6 + 1715780 * t5 - 8766564 * q - 21)
1094 return (2.0 / 33.0) * shambase::constants::pi<Tscal>
1095 * (-18 * t3 + 540 * t2 - 7128 * t1 + 53900 * t11 - 253935 * t10 + 756360 * t9
1096 - 1380456 * t8 + 1508760 * t7 - 1510245 * t6 + 2391620 * t5 - 8914020 * q
1100 return (1.0 / 33.0) * shambase::constants::pi<Tscal>
1101 * (9 * t3 - 378 * t2 + 7128 * t1 - 79310 * t11 + 574695 * t10 - 2817540 * t9
1102 + 9363816 * t8 - 20365884 * t7 + 26208765 * t6 - 14702930 * t5
1103 - 8262102 * q - 4684707)
1106 return (1.0 / 33.0) * shambase::constants::pi<Tscal>
1107 * (-t3 + 54 * t2 - 1320 * t1 + 19250 * t11 - 185625 * t10 + 1237500 * t9
1108 - 5775000 * t8 + 18562500 * t7 - 38671875 * t6 + 42968750 * t5
1109 - 58593750 * q + 28869725)
1112 return -604800 * shambase::constants::pi<Tscal> / q;
1115 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1128 return (2.0 / 33.0) * shambase::constants::pi<Tscal>
1129 * (-693 * t1 + 3780 * t11 - 30800 * t9 + 225720 * t7 - 1164240 * t5
1132 return (2.0 / 33.0) * shambase::constants::pi<Tscal>
1133 * (504 * t2 - 8316 * t1 + 55440 * t11 - 180180 * t10 + 249480 * t9
1134 - 27720 * t8 + 232848 * t7 - 1580040 * t6 + 41580 * t5 + 5147340 * t4
1137 - (2.0 / 33.0) * shambase::constants::pi<Tscal>
1138 * (42 * t3 - 756 * t2 + 5544 * t1 - 20020 * t11 + 31185 * t10
1139 - 3960 * t9 + 38808 * t8 - 316008 * t7 + 10395 * t6 + 1715780 * t5
1143 return (2.0 / 33.0) * shambase::constants::pi<Tscal>
1144 * (-216 * t2 + 5940 * t1 - 71280 * t11 + 485100 * t10 - 2031480 * t9
1145 + 5294520 * t8 - 8282736 * t7 + 7543800 * t6 - 6040980 * t5
1146 + 7174860 * t4 - 8914020)
1148 - (2.0 / 33.0) * shambase::constants::pi<Tscal>
1149 * (-18 * t3 + 540 * t2 - 7128 * t1 + 53900 * t11 - 253935 * t10
1150 + 756360 * t9 - 1380456 * t8 + 1508760 * t7 - 1510245 * t6
1151 + 2391620 * t5 - 8914020 * q + 49131)
1154 return (1.0 / 33.0) * shambase::constants::pi<Tscal>
1155 * (108 * t2 - 4158 * t1 + 71280 * t11 - 713790 * t10 + 4597560 * t9
1156 - 19722780 * t8 + 56182896 * t7 - 101829420 * t6 + 104835060 * t5
1157 - 44108790 * t4 - 8262102)
1159 - (1.0 / 33.0) * shambase::constants::pi<Tscal>
1160 * (9 * t3 - 378 * t2 + 7128 * t1 - 79310 * t11 + 574695 * t10
1161 - 2817540 * t9 + 9363816 * t8 - 20365884 * t7 + 26208765 * t6
1162 - 14702930 * t5 - 8262102 * q - 4684707)
1165 return (1.0 / 33.0) * shambase::constants::pi<Tscal>
1166 * (-12 * t2 + 594 * t1 - 13200 * t11 + 173250 * t10 - 1485000 * t9
1167 + 8662500 * t8 - 34650000 * t7 + 92812500 * t6 - 154687500 * t5
1168 + 128906250 * t4 - 58593750)
1170 - (1.0 / 33.0) * shambase::constants::pi<Tscal>
1171 * (-t3 + 54 * t2 - 1320 * t1 + 19250 * t11 - 185625 * t10
1172 + 1237500 * t9 - 5775000 * t8 + 18562500 * t7 - 38671875 * t6
1173 + 42968750 * t5 - 58593750 * q + 28869725)
1176 return 604800 * shambase::constants::pi<Tscal> / t4;
1180 template<
class Tscal>
1183 inline static constexpr Tscal
Rkern = 2;
1190 inline static constexpr Tscal
norm_2d = 7. / (4 * shambase::constants::pi<Tscal>);
1192 inline static constexpr Tscal
norm_3d = 21 / (16 * shambase::constants::pi<Tscal>);
1194 inline static Tscal f(Tscal q) {
1196 constexpr Tscal div1_2 = (1. / 2.);
1198 Tscal p1 = (1 - q * div1_2);
1199 Tscal p2 = (1 + q * 2);
1210 inline static Tscal df(Tscal q) {
1212 constexpr Tscal div1_2 = (1. / 2.);
1213 constexpr Tscal div1_8 = (1. / 8.);
1214 constexpr Tscal div1_4 = (1. / 4.);
1216 Tscal p1 = (1 - q * div1_2);
1217 Tscal p2 = (1 + q * 2);
1219 Tscal p3 = p1 * p1 * p1;
1222 return 2 * (p3 * p1 - p3 * p2);
1227 inline static Tscal ddf(Tscal q) {
1231 return -8 * t2 + 3 * t1 * (2 * q + 1);
1236 inline static Tscal phi_tilde_3d(Tscal q) {
1242 return (1.0 / 336.0) * shambase::constants::pi<Tscal>
1243 * (t1 * (3 * t4 - 30 * t3 + 112 * t2 - 168 * t1 + 224) - 384);
1245 return -(16.0 / 21.0) * shambase::constants::pi<Tscal> / q;
1248 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1254 return (1.0 / 336.0) * shambase::constants::pi<Tscal>
1255 * (t1 * (15 * t3 - 120 * t2 + 336 * t1 - 336 * q)
1256 + 2 * q * (3 * t4 - 30 * t3 + 112 * t2 - 168 * t1 + 224));
1258 return (16.0 / 21.0) * shambase::constants::pi<Tscal> / t1;
1262 template<
class Tscal>
1265 inline static constexpr Tscal
Rkern = 2;
1270 inline static constexpr Tscal
norm_1d = 27. / 32.;
1272 inline static constexpr Tscal
norm_2d = 9. / (4 * shambase::constants::pi<Tscal>);
1274 inline static constexpr Tscal
norm_3d = 495. / (256. * shambase::constants::pi<Tscal>);
1276 inline static Tscal f(Tscal q) {
1278 constexpr Tscal div1_2 = (1. / 2.);
1279 constexpr Tscal div35_12 = (35. / 12.);
1281 Tscal p1 = (1 - q * div1_2);
1282 Tscal p2 = (1 + q * 3 + div35_12 * q * q);
1293 inline static Tscal df(Tscal q) {
1295 constexpr Tscal div7_96 = (7. / 96.);
1297 Tscal p1 = (-2 + q);
1298 Tscal p2 = (2 + 5 * q);
1300 Tscal p14 = p1 * p1;
1304 return div7_96 * p14 * p1 * q * p2;
1309 inline static Tscal ddf(Tscal q) {
1315 return (35.0 / 6.0) * t4 - 6 * t3 * ((35.0 / 6.0) * q + 3)
1316 + (15.0 / 2.0) * t2 * ((35.0 / 12.0) * t1 + 3 * q + 1);
1321 inline static Tscal phi_tilde_3d(Tscal q) {
1329 return (1.0 / 63360.0) * shambase::constants::pi<Tscal>
1331 * (105 * t6 - 1408 * t5 + 7700 * t4 - 21120 * t3 + 26400 * t2
1332 - 29568 * t1 + 42240)
1335 return -(256.0 / 495.0) * shambase::constants::pi<Tscal> / q;
1338 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1347 return (1.0 / 63360.0) * shambase::constants::pi<Tscal>
1349 * (840 * t6 - 9856 * t5 + 46200 * t4 - 105600 * t3 + 105600 * t2
1352 * (105 * t7 - 1408 * t6 + 7700 * t5 - 21120 * t4 + 26400 * t3
1353 - 29568 * t1 + 42240));
1355 return (256.0 / 495.0) * shambase::constants::pi<Tscal> / t1;
1359 template<
class Tscal>
1362 inline static constexpr Tscal
Rkern = 2;
1367 inline static constexpr Tscal
norm_1d = 15. / 16.;
1369 inline static constexpr Tscal
norm_2d = 39. / (14. * shambase::constants::pi<Tscal>);
1371 inline static constexpr Tscal
norm_3d = 1365. / (512. * shambase::constants::pi<Tscal>);
1373 inline static Tscal f(Tscal q) {
1375 constexpr Tscal div1_2 = (1. / 2.);
1376 constexpr Tscal div25_4 = (25. / 4.);
1378 Tscal p1 = (1 - q * div1_2);
1379 Tscal p2 = (1 + q * 4 + div25_4 * q * q + 4 * q * q * q);
1391 inline static Tscal df(Tscal q) {
1393 constexpr Tscal div11_512 = (11. / 512.);
1395 Tscal p1 = (-2 + q);
1396 Tscal p2 = 2 + 7 * q + 8 * q * q;
1398 Tscal p12 = p1 * p1;
1399 Tscal p14 = p12 * p12;
1400 Tscal p17 = p12 * p14 * p1;
1403 return div11_512 * p17 * q * p2;
1408 inline static Tscal ddf(Tscal q) {
1415 return t5 * (24 * q + 25.0 / 2.0) - 8 * t4 * (12 * t1 + (25.0 / 2.0) * q + 4)
1416 + 14 * t3 * (4 * t2 + (25.0 / 4.0) * t1 + 4 * q + 1);
1421 inline static Tscal phi_tilde_3d(Tscal q) {
1431 return (1.0 / 1397760.0) * shambase::constants::pi<Tscal>
1433 * (480 * t2 - 8085 * t1 + 58240 * t8 - 229320 * t7 + 512512 * t6
1434 - 560560 * t5 + 549120 * t4 - 768768 * t3 + 931840)
1437 return -(512.0 / 1365.0) * shambase::constants::pi<Tscal> / q;
1440 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1452 return (1.0 / 1397760.0) * shambase::constants::pi<Tscal>
1454 * (5280 * t1 - 80850 * t10 + 524160 * t9 - 1834560 * t8 + 3587584 * t7
1455 - 3363360 * t6 + 2196480 * t4 - 1537536 * q)
1457 * (480 * t2 - 8085 * t1 + 58240 * t10 - 229320 * t9 + 512512 * t8
1458 - 560560 * t7 + 549120 * t5 - 768768 * t3 + 931840));
1460 return (512.0 / 1365.0) * shambase::constants::pi<Tscal> / t3;
1472 template<
class Tscal>
1475 inline static constexpr Tscal
Rkern = 3;
1479 inline static constexpr Tscal
norm_1d = 0.564202047051383;
1481 inline static constexpr Tscal
norm_2d = 0.318349173592935;
1483 inline static constexpr Tscal
norm_3d = 0.179666148218087;
1485 inline static Tscal f(Tscal q) {
1488 return sycl::exp(-t1);
1493 inline static Tscal df(Tscal q) {
1496 return -2 * q * sycl::exp(-t1);
1501 inline static Tscal ddf(Tscal q) {
1504 return (4 * t1 - 2) * sycl::exp(-t1);
1509 inline static Tscal phi_tilde_3d(Tscal q) {
1511 return -6.282409900511787;
1513 return 2 * shambase::constants::pi<Tscal> * sycl::exp(Tscal{-9})
1514 - sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(q) / q;
1516 return (-sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(Tscal{3})
1517 + 6 * shambase::constants::pi<Tscal> * sycl::exp(Tscal{-9}))
1521 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1526 return -2 * shambase::constants::pi<Tscal> * sycl::exp(-t1) / q
1527 + sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(q) / t1;
1529 return -(-sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(Tscal{3})
1530 + 6 * shambase::constants::pi<Tscal> * sycl::exp(Tscal{-9}))
1543 template<
class Tscal>
1546 inline static constexpr Tscal
Rkern = 5;
1550 inline static constexpr Tscal
norm_1d = 0.564189583548624;
1552 inline static constexpr Tscal
norm_2d = 0.318309886188211;
1554 inline static constexpr Tscal
norm_3d = 0.179587122139514;
1556 inline static Tscal f(Tscal q) {
1559 return sycl::exp(-t1);
1564 inline static Tscal df(Tscal q) {
1567 return -2 * q * sycl::exp(-t1);
1572 inline static Tscal ddf(Tscal q) {
1575 return (4 * t1 - 2) * sycl::exp(-t1);
1580 inline static Tscal phi_tilde_3d(Tscal q) {
1582 return -6.283185307092326;
1584 return 2 * shambase::constants::pi<Tscal> * sycl::exp(Tscal{-25})
1585 - sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(q) / q;
1587 return (-sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(Tscal{5})
1588 + 10 * shambase::constants::pi<Tscal> * sycl::exp(Tscal{-25}))
1592 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1597 return -2 * shambase::constants::pi<Tscal> * sycl::exp(-t1) / q
1598 + sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(q) / t1;
1600 return -(-sycl::pow(shambase::constants::pi<Tscal>, 3.0 / 2.0) * sycl::erf(Tscal{5})
1601 + 10 * shambase::constants::pi<Tscal> * sycl::exp(Tscal{-25}))
1606 template<
class Tscal>
1609 inline static constexpr Tscal
Rkern = 2;
1617 = (49. / 31.) * 10. / (7. * shambase::constants::pi<Tscal>);
1619 inline static constexpr Tscal
norm_3d = (10. / 9.) * 1 / shambase::constants::pi<Tscal>;
1621 inline static Tscal f(Tscal q) {
return KernelDefM4<Tscal>::f(q) * q * q; }
1623 inline static Tscal df(Tscal q) {
1624 return KernelDefM4<Tscal>::df(q) * q * q + 2 * KernelDefM4<Tscal>::f(q) * q;
1627 inline static Tscal ddf(Tscal q) {
1634 return t3 * ((9.0 / 2.0) * q - 3) + 4 * q * (3 * t1 - (3.0 / 4.0) * t2) - 2 * t4
1637 return -(3.0 / 4.0) * t3 * (2 * q - 4) - 3 * q * t2 + (1.0 / 2.0) * t5;
1642 inline static Tscal phi_tilde_3d(Tscal q) {
1651 return (1.0 / 280.0) * shambase::constants::pi<Tscal>
1652 * (t3 * (15 * t2 - 40 * t1 + 56) - 248);
1654 return (1.0 / 280.0) * shambase::constants::pi<Tscal>
1655 * (-5 * t7 + 40 * t6 - 112 * t5 + 112 * t4 - 256 * q + 4) / q;
1657 return -(9.0 / 10.0) * shambase::constants::pi<Tscal> / q;
1660 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1669 return (1.0 / 280.0) * shambase::constants::pi<Tscal>
1670 * (t3 * (45 * t1 - 80 * q) + 4 * t2 * (15 * t2 - 40 * t1 + 56));
1672 return (1.0 / 280.0) * shambase::constants::pi<Tscal>
1673 * (-40 * t6 + 280 * t5 - 672 * t4 + 560 * t3 - 256) / q
1674 - (1.0 / 280.0) * shambase::constants::pi<Tscal>
1675 * (-5 * t7 + 40 * t6 - 112 * t5 + 112 * t4 - 256 * q + 4) / t1;
1677 return (9.0 / 10.0) * shambase::constants::pi<Tscal> / t1;
1681 template<
class Tscal>
1684 inline static constexpr Tscal
Rkern = 2;
1689 inline static constexpr Tscal
norm_1d = (105. / 31.) * 2. / 3.;
1692 = (14. / 9.) * 10. / (7. * shambase::constants::pi<Tscal>);
1694 inline static constexpr Tscal
norm_3d = (126. / 127.) * 1 / shambase::constants::pi<Tscal>;
1696 inline static Tscal f(Tscal q) {
return KernelDefM4<Tscal>::f(q) * q * q * q; }
1698 inline static Tscal df(Tscal q) {
1699 return KernelDefM4<Tscal>::df(q) * q * q * q + 3 * KernelDefM4<Tscal>::f(q) * q * q;
1702 inline static Tscal ddf(Tscal q) {
1710 return t6 * ((9.0 / 2.0) * q - 3) + 6 * t3 * (3 * t1 - (3.0 / 4.0) * t2)
1711 + 6 * q * (-t4 + (1.0 / 4.0) * t5);
1713 return -(3.0 / 4.0) * t6 * (2 * q - 4) - (9.0 / 2.0) * t3 * t2
1714 + (3.0 / 2.0) * q * t5;
1719 inline static Tscal phi_tilde_3d(Tscal q) {
1728 return (1.0 / 840.0) * shambase::constants::pi<Tscal>
1729 * (t3 * (35 * t2 - 90 * t1 + 112) - 756);
1731 return (1.0 / 2520.0) * shambase::constants::pi<Tscal>
1732 * (-35 * t7 + 270 * t6 - 720 * t5 + 672 * t4 - 2304 * q + 20) / q;
1734 return -(127.0 / 126.0) * shambase::constants::pi<Tscal> / q;
1737 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1747 return (1.0 / 840.0) * shambase::constants::pi<Tscal>
1748 * (t4 * (105 * t1 - 180 * q) + 5 * t3 * (35 * t2 - 90 * t1 + 112));
1750 return (1.0 / 2520.0) * shambase::constants::pi<Tscal>
1751 * (-315 * t7 + 2160 * t6 - 5040 * t5 + 4032 * t4 - 2304) / q
1752 - (1.0 / 2520.0) * shambase::constants::pi<Tscal>
1753 * (-35 * t8 + 270 * t7 - 720 * t6 + 672 * t5 - 2304 * q + 20) / t1;
1755 return (127.0 / 126.0) * shambase::constants::pi<Tscal> / t1;
1759 template<
class Tscal>
1762 inline static constexpr Tscal
Rkern = 2;
1767 inline static constexpr Tscal
norm_1d = 252.0 / 127.0;
1769 inline static constexpr Tscal
norm_2d = (28.0 / 17.0) / shambase::constants::pi<Tscal>;
1771 inline static constexpr Tscal
norm_3d = (330.0 / 511.0) / shambase::constants::pi<Tscal>;
1773 inline static Tscal f(Tscal q) {
1777 inline static Tscal df(Tscal q) {
1782 inline static Tscal ddf(Tscal q) {
1791 return t7 * ((9.0 / 2.0) * q - 3) + 10 * t6 * (3 * t1 - (3.0 / 4.0) * t2)
1792 + 20 * t5 * (-t3 + (1.0 / 4.0) * t4);
1794 return -(3.0 / 4.0) * t7 * (2 * q - 4) - (15.0 / 2.0) * t6 * t2 + 5 * t5 * t4;
1799 inline static Tscal phi_tilde_3d(Tscal q) {
1808 return (1.0 / 2310.0) * shambase::constants::pi<Tscal>
1809 * (t5 * (63 * t4 - 154 * t3 + 165) - 2805);
1811 return (1.0 / 2310.0) * shambase::constants::pi<Tscal>
1812 * (-21 * t2 + 154 * t1 - 385 * t7 + 330 * t6 - 2816 * q + 7) / q;
1814 return -(511.0 / 330.0) * shambase::constants::pi<Tscal> / q;
1817 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1827 return (1.0 / 2310.0) * shambase::constants::pi<Tscal>
1828 * (t6 * (189 * t3 - 308 * q) + 7 * t5 * (63 * t4 - 154 * t3 + 165));
1830 return (1.0 / 2310.0) * shambase::constants::pi<Tscal>
1831 * (-231 * t1 + 1540 * t8 - 3465 * t7 + 2640 * t6 - 2816) / q
1832 - (1.0 / 2310.0) * shambase::constants::pi<Tscal>
1833 * (-21 * t2 + 154 * t1 - 385 * t8 + 330 * t7 - 2816 * q + 7) / t3;
1835 return (511.0 / 330.0) * shambase::constants::pi<Tscal> / t3;
1839 template<
class Tscal>
1842 inline static constexpr Tscal
Rkern = 2;
1847 inline static constexpr Tscal
norm_1d = 660.0 / 511.0;
1849 inline static constexpr Tscal
norm_2d = (30.0 / 31.0) / shambase::constants::pi<Tscal>;
1851 inline static constexpr Tscal
norm_3d = (715.0 / 2047.0) / shambase::constants::pi<Tscal>;
1853 inline static Tscal f(Tscal q) {
1857 inline static Tscal df(Tscal q) {
1862 inline static Tscal ddf(Tscal q) {
1871 return t7 * ((9.0 / 2.0) * q - 3) + 14 * t6 * (3 * t1 - (3.0 / 4.0) * t2)
1872 + 42 * t5 * (-t3 + (1.0 / 4.0) * t4);
1874 return -(3.0 / 4.0) * t7 * (2 * q - 4) - (21.0 / 2.0) * t6 * t2
1875 + (21.0 / 2.0) * t5 * t4;
1880 inline static Tscal phi_tilde_3d(Tscal q) {
1889 return (1.0 / 25740.0) * shambase::constants::pi<Tscal>
1890 * (t7 * (495 * t6 - 1170 * t5 + 1144) - 53196);
1892 return (1.0 / 25740.0) * shambase::constants::pi<Tscal>
1893 * (-165 * t4 + 1170 * t3 - 2808 * t2 + 2288 * t1 - 53248 * q + 36) / q;
1895 return -(2047.0 / 715.0) * shambase::constants::pi<Tscal> / q;
1898 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1908 return (1.0 / 25740.0) * shambase::constants::pi<Tscal>
1909 * (t8 * (1485 * t5 - 2340 * q) + 9 * t7 * (495 * t6 - 1170 * t5 + 1144));
1911 return (1.0 / 25740.0) * shambase::constants::pi<Tscal>
1912 * (-2145 * t3 + 14040 * t2 - 30888 * t1 + 22880 * t8 - 53248) / q
1913 - (1.0 / 25740.0) * shambase::constants::pi<Tscal>
1914 * (-165 * t4 + 1170 * t3 - 2808 * t2 + 2288 * t1 - 53248 * q + 36)
1917 return (2047.0 / 715.0) * shambase::constants::pi<Tscal> / t5;
1921 template<
class Tscal>
1924 inline static constexpr Tscal
Rkern = 2;
1929 inline static constexpr Tscal
norm_1d = 4.0 / 11.0;
1931 inline static constexpr Tscal
norm_2d = (40.0 / 77.0) / shambase::constants::pi<Tscal>;
1933 inline static constexpr Tscal
norm_3d = (120.0 / 439.0) / shambase::constants::pi<Tscal>;
1935 inline static Tscal f(Tscal q) {
1939 return KernelDefM4<Tscal>::f((q - 1) * 2);
1943 inline static Tscal df(Tscal q) {
1947 return 2 * KernelDefM4<Tscal>::df((q - 1) * 2);
1951 inline static Tscal ddf(Tscal q) {
1955 return 4 * KernelDefM4<Tscal>::ddf((q - 1) * 2);
1959 inline static Tscal phi_tilde_3d(Tscal q) {
1966 return (1.0 / 60.0) * shambase::constants::pi<Tscal> * (40 * t1 - 231);
1967 }
else if (q < 3.0 / 2.0) {
1968 return (1.0 / 60.0) * shambase::constants::pi<Tscal>
1969 * (48 * t5 - 288 * t4 + 600 * t3 - 440 * t2 - 39 * q - 72) / q;
1971 return (1.0 / 120.0) * shambase::constants::pi<Tscal>
1972 * (-32 * t5 + 288 * t4 - 960 * t3 + 1280 * t2 - 1536 * q + 585) / q;
1974 return -(439.0 / 120.0) * shambase::constants::pi<Tscal> / q;
1977 inline static Tscal phi_tilde_3d_prime(Tscal q) {
1984 return (4.0 / 3.0) * shambase::constants::pi<Tscal> * q;
1985 }
else if (q < 3.0 / 2.0) {
1986 return (1.0 / 60.0) * shambase::constants::pi<Tscal>
1987 * (288 * t4 - 1440 * t3 + 2400 * t2 - 1320 * t1 - 39) / q
1988 - (1.0 / 60.0) * shambase::constants::pi<Tscal>
1989 * (48 * t5 - 288 * t4 + 600 * t3 - 440 * t2 - 39 * q - 72) / t1;
1991 return (1.0 / 120.0) * shambase::constants::pi<Tscal>
1992 * (-192 * t4 + 1440 * t3 - 3840 * t2 + 3840 * t1 - 1536) / q
1993 - (1.0 / 120.0) * shambase::constants::pi<Tscal>
1994 * (-32 * t5 + 288 * t4 - 960 * t3 + 1280 * t2 - 1536 * q + 585) / t1;
1996 return (439.0 / 120.0) * shambase::constants::pi<Tscal> / t1;
2000 template<
class Tscal>
2003 inline static constexpr Tscal
Rkern = 2;
2008 inline static constexpr Tscal
norm_1d = 8.0 / 27.0;
2010 inline static constexpr Tscal
norm_2d = (160.0 / 457.0) / shambase::constants::pi<Tscal>;
2012 inline static constexpr Tscal
norm_3d = (320.0 / 2069.0) / shambase::constants::pi<Tscal>;
2014 inline static Tscal f(Tscal q) {
2018 return KernelDefM4<Tscal>::f((q - 1.5) * 4);
2022 inline static Tscal df(Tscal q) {
2026 return 4 * KernelDefM4<Tscal>::df((q - 1.5) * 4);
2030 inline static Tscal ddf(Tscal q) {
2034 return 16 * KernelDefM4<Tscal>::ddf((q - 1.5) * 4);
2038 inline static Tscal phi_tilde_3d(Tscal q) {
2044 if (q < 3.0 / 2.0) {
2045 return (1.0 / 240.0) * shambase::constants::pi<Tscal> * (160 * t1 - 1371);
2046 }
else if (q < 7.0 / 4.0) {
2047 return (1.0 / 240.0) * shambase::constants::pi<Tscal>
2048 * (1536 * t5 - 11520 * t4 + 31680 * t3 - 34400 * t2 + 25845 * q - 14580) / q;
2050 return (1.0 / 960.0) * shambase::constants::pi<Tscal>
2051 * (-2048 * t5 + 18432 * t4 - 61440 * t3 + 81920 * t2 - 98304 * q + 59329)
2054 return -(2069.0 / 320.0) * shambase::constants::pi<Tscal> / q;
2057 inline static Tscal phi_tilde_3d_prime(Tscal q) {
2063 if (q < 3.0 / 2.0) {
2064 return (4.0 / 3.0) * shambase::constants::pi<Tscal> * q;
2065 }
else if (q < 7.0 / 4.0) {
2066 return (1.0 / 240.0) * shambase::constants::pi<Tscal>
2067 * (9216 * t4 - 57600 * t3 + 126720 * t2 - 103200 * t1 + 25845) / q
2068 - (1.0 / 240.0) * shambase::constants::pi<Tscal>
2069 * (1536 * t5 - 11520 * t4 + 31680 * t3 - 34400 * t2 + 25845 * q
2073 return (1.0 / 960.0) * shambase::constants::pi<Tscal>
2074 * (-12288 * t4 + 92160 * t3 - 245760 * t2 + 245760 * t1 - 98304) / q
2075 - (1.0 / 960.0) * shambase::constants::pi<Tscal>
2076 * (-2048 * t5 + 18432 * t4 - 61440 * t3 + 81920 * t2 - 98304 * q
2080 return (2069.0 / 320.0) * shambase::constants::pi<Tscal> / t1;
2084 template<
class Tscal>
2087 inline static constexpr Tscal
Rkern = 2;
2092 inline static constexpr Tscal
norm_1d = 16.0 / 59.0;
2094 inline static constexpr Tscal
norm_2d = (640.0 / 2177.0) / shambase::constants::pi<Tscal>;
2096 inline static constexpr Tscal
norm_3d = (7680.0 / 64303.0) / shambase::constants::pi<Tscal>;
2098 inline static Tscal f(Tscal q) {
2102 return KernelDefM4<Tscal>::f((q - 1.75) * 8);
2106 inline static Tscal df(Tscal q) {
2110 return 8 * KernelDefM4<Tscal>::df((q - 1.75) * 8);
2114 inline static Tscal ddf(Tscal q) {
2118 return 64 * KernelDefM4<Tscal>::ddf((q - 1.75) * 8);
2122 inline static Tscal phi_tilde_3d(Tscal q) {
2128 if (q < 7.0 / 4.0) {
2129 return (1.0 / 960.0) * shambase::constants::pi<Tscal> * (640 * t1 - 6531);
2130 }
else if (q < 15.0 / 8.0) {
2131 return (1.0 / 960.0) * shambase::constants::pi<Tscal>
2132 * (49152 * t5 - 405504 * t4 + 1236480 * t3 - 1504640 * t2 + 1491693 * q
2136 return (1.0 / 7680.0) * shambase::constants::pi<Tscal>
2137 * (-131072 * t5 + 1179648 * t4 - 3932160 * t3 + 5242880 * t2 - 6291456 * q
2141 return -(64303.0 / 7680.0) * shambase::constants::pi<Tscal> / q;
2144 inline static Tscal phi_tilde_3d_prime(Tscal q) {
2150 if (q < 7.0 / 4.0) {
2151 return (4.0 / 3.0) * shambase::constants::pi<Tscal> * q;
2152 }
else if (q < 15.0 / 8.0) {
2153 return (1.0 / 960.0) * shambase::constants::pi<Tscal>
2154 * (294912 * t4 - 2027520 * t3 + 4945920 * t2 - 4513920 * t1 + 1491693)
2156 - (1.0 / 960.0) * shambase::constants::pi<Tscal>
2157 * (49152 * t5 - 405504 * t4 + 1236480 * t3 - 1504640 * t2 + 1491693 * q
2161 return (1.0 / 7680.0) * shambase::constants::pi<Tscal>
2162 * (-786432 * t4 + 5898240 * t3 - 15728640 * t2 + 15728640 * t1 - 6291456)
2164 - (1.0 / 7680.0) * shambase::constants::pi<Tscal>
2165 * (-131072 * t5 + 1179648 * t4 - 3932160 * t3 + 5242880 * t2
2166 - 6291456 * q + 4130001)
2169 return (64303.0 / 7680.0) * shambase::constants::pi<Tscal> / t1;
2173 template<
class Tscal>
2176 inline static constexpr Tscal
Rkern = 2;
2181 inline static constexpr Tscal
norm_1d = 32.0 / 123.0;
2183 inline static constexpr Tscal
norm_2d = (2560.0 / 9457.0) / shambase::constants::pi<Tscal>;
2185 inline static constexpr Tscal
norm_3d = (4096.0 / 38785.0) / shambase::constants::pi<Tscal>;
2187 inline static Tscal f(Tscal q) {
2191 return KernelDefM4<Tscal>::f((q - 1.875) * 16);
2195 inline static Tscal df(Tscal q) {
2199 return 16 * KernelDefM4<Tscal>::df((q - 1.875) * 16);
2203 inline static Tscal ddf(Tscal q) {
2207 return 256 * KernelDefM4<Tscal>::ddf((q - 1.875) * 16);
2211 inline static Tscal phi_tilde_3d(Tscal q) {
2217 if (q < 15.0 / 8.0) {
2218 return (1.0 / 3840.0) * shambase::constants::pi<Tscal> * (2560 * t1 - 28371);
2219 }
else if (q < 31.0 / 16.0) {
2220 return (1.0 / 3840.0) * shambase::constants::pi<Tscal>
2221 * (1572864 * t5 - 13565952 * t4 + 43315200 * t3 - 55293440 * t2
2222 + 60721629 * q - 38728125)
2225 return (1.0 / 61440.0) * shambase::constants::pi<Tscal>
2226 * (-8388608 * t5 + 75497472 * t4 - 251658240 * t3 + 335544320 * t2
2227 - 402653184 * q + 267853681)
2230 return -(38785.0 / 4096.0) * shambase::constants::pi<Tscal> / q;
2233 inline static Tscal phi_tilde_3d_prime(Tscal q) {
2239 if (q < 15.0 / 8.0) {
2240 return (4.0 / 3.0) * shambase::constants::pi<Tscal> * q;
2241 }
else if (q < 31.0 / 16.0) {
2242 return (1.0 / 3840.0) * shambase::constants::pi<Tscal>
2243 * (9437184 * t4 - 67829760 * t3 + 173260800 * t2 - 165880320 * t1
2246 - (1.0 / 3840.0) * shambase::constants::pi<Tscal>
2247 * (1572864 * t5 - 13565952 * t4 + 43315200 * t3 - 55293440 * t2
2248 + 60721629 * q - 38728125)
2251 return (1.0 / 61440.0) * shambase::constants::pi<Tscal>
2252 * (-50331648 * t4 + 377487360 * t3 - 1006632960 * t2 + 1006632960 * t1
2255 - (1.0 / 61440.0) * shambase::constants::pi<Tscal>
2256 * (-8388608 * t5 + 75497472 * t4 - 251658240 * t3 + 335544320 * t2
2257 - 402653184 * q + 267853681)
2260 return (38785.0 / 4096.0) * shambase::constants::pi<Tscal> / t1;
2268 template<
typename T,
typename Tscal,
typename =
void>
2271 template<
typename T,
typename Tscal>
2272 struct has_phi_tilde_3d<T, Tscal, std::void_t<decltype(T::phi_tilde_3d(std::declval<Tscal>()))>>
2273 : std::true_type {};
2276 template<
typename T,
typename Tscal,
typename =
void>
2279 template<
typename T,
typename Tscal>
2283 std::void_t<decltype(T::phi_tilde_3d_prime(std::declval<Tscal>()))>> : std::true_type {};
2285 template<
class Tscal_,
class BaseKernel>
2288 using Generator = BaseKernel;
2289 using Tscal = Tscal_;
2290 inline static constexpr Tscal
Rkern = BaseKernel::Rkern;
2292 = BaseKernel::hfactd;
2302 inline static Tscal
f(Tscal q) {
return BaseKernel::f(q); }
2310 inline static Tscal
df(Tscal q) {
return BaseKernel::df(q); }
2312 inline static Tscal ddf(Tscal q) {
return BaseKernel::ddf(q); }
2314 inline static Tscal W_1d(Tscal r, Tscal h) {
return BaseKernel::norm_1d *
f(r / h) / (h); }
2316 inline static Tscal W_2d(Tscal r, Tscal h) {
2317 return BaseKernel::norm_2d *
f(r / h) / (h * h);
2329 inline static Tscal
W_3d(Tscal r, Tscal h) {
2330 return BaseKernel::norm_3d *
f(r / h) / (h * h * h);
2333 inline static Tscal dW_3d(Tscal r, Tscal h) {
2334 return BaseKernel::norm_3d *
df(r / h) / (h * h * h * h);
2337 inline static Tscal ddW_3d(Tscal r, Tscal h) {
2338 return BaseKernel::norm_3d * ddf(r / h) / (h * h * h * h * h);
2341 inline static Tscal dhW_3d(Tscal r, Tscal h) {
2342 return -(BaseKernel::norm_3d) * (3 *
f(r / h) + (r / h) *
df(r / h)) / (h * h * h * h);
2345 inline static Tscal f3d_integ_z(Tscal x,
int np = 32) {
2346 return integ_riemann_sum<Tscal>(-
Rkern,
Rkern,
Rkern / np, [&](Tscal z) {
2347 return f(sqrt(x * x + z * z));
2351 inline static Tscal Y_3d(Tscal r, Tscal h,
int np = 32) {
2352 return BaseKernel::norm_3d * f3d_integ_z(r / h, np) / (h * h);
2355 static constexpr bool has_3d_phi_soft
2356 = ::shammath::has_phi_tilde_3d<BaseKernel, Tscal>::value;
2358 inline static Tscal phi_tilde_3d(Tscal q) {
2359 if constexpr (has_3d_phi_soft) {
2360 return BaseKernel::phi_tilde_3d(q);
2362 return std::numeric_limits<Tscal>::quiet_NaN();
2366 static constexpr bool has_3d_phi_soft_prime
2367 = ::shammath::has_phi_tilde_3d_prime<BaseKernel, Tscal>::value;
2369 inline static Tscal phi_tilde_3d_prime(Tscal q) {
2370 if constexpr (has_3d_phi_soft_prime) {
2371 return BaseKernel::phi_tilde_3d_prime(q);
2373 return std::numeric_limits<Tscal>::quiet_NaN();
2377 inline static Tscal phi_3D(Tscal r, Tscal h) {
2378 return BaseKernel::norm_3d * phi_tilde_3d(r / h) / h;
2381 inline static Tscal phi_3D_prime(Tscal r, Tscal h) {
2382 return BaseKernel::norm_3d * phi_tilde_3d_prime(r / h) / (h * h);
2392 template<
class flt_type>
2401 template<
class flt_type>
2410 template<
class flt_type>
2419 template<
class flt_type>
2428 template<
class flt_type>
2437 template<
class flt_type>
2446 template<
class flt_type>
2455 template<
class flt_type>
2464 template<
class flt_type>
2473 template<
class flt_type>
2481 template<
class flt_type>
2489 template<
class flt_type>
2498 template<
class flt_type>
2507 template<
class flt_type>
2516 template<
class flt_type>
2525 template<
class flt_type>
2534 template<
class flt_type>
2543 template<
class flt_type>
2552 template<
class flt_type>
2561 template<
class flt_type>
2568 template<
class flt_type>
2570 inline static const std::string name =
"M4<" + get_type_name<flt_type>() +
">";
2572 template<
class flt_type>
2574 inline static const std::string name =
"M5<" + get_type_name<flt_type>() +
">";
2576 template<
class flt_type>
2578 inline static const std::string name =
"M6<" + get_type_name<flt_type>() +
">";
2580 template<
class flt_type>
2582 inline static const std::string name =
"M7<" + get_type_name<flt_type>() +
">";
2584 template<
class flt_type>
2586 inline static const std::string name =
"M8<" + get_type_name<flt_type>() +
">";
2588 template<
class flt_type>
2590 inline static const std::string name =
"M9<" + get_type_name<flt_type>() +
">";
2592 template<
class flt_type>
2594 inline static const std::string name =
"M10<" + get_type_name<flt_type>() +
">";
2597 template<
class flt_type>
2599 inline static const std::string name =
"C2<" + get_type_name<flt_type>() +
">";
2601 template<
class flt_type>
2603 inline static const std::string name =
"C4<" + get_type_name<flt_type>() +
">";
2605 template<
class flt_type>
2607 inline static const std::string name =
"C6<" + get_type_name<flt_type>() +
">";
2610 template<
class flt_type>
2612 inline static const std::string name =
"TGauss3<" + get_type_name<flt_type>() +
">";
2615 template<
class flt_type>
2617 inline static const std::string name =
"TGauss5<" + get_type_name<flt_type>() +
">";
2620 template<
class flt_type>
2622 inline static const std::string name =
"M4DH<" + get_type_name<flt_type>() +
">";
2625 template<
class flt_type>
2627 inline static const std::string name =
"M4DH3<" + get_type_name<flt_type>() +
">";
2630 template<
class flt_type>
2632 inline static const std::string name =
"M4DH5<" + get_type_name<flt_type>() +
">";
2635 template<
class flt_type>
2637 inline static const std::string name =
"M4DH7<" + get_type_name<flt_type>() +
">";
2640 template<
class flt_type>
2642 inline static const std::string name =
"M4Shift2<" + get_type_name<flt_type>() +
">";
2645 template<
class flt_type>
2647 inline static const std::string name =
"M4Shift4<" + get_type_name<flt_type>() +
">";
2650 template<
class flt_type>
2652 inline static const std::string name =
"M4Shift8<" + get_type_name<flt_type>() +
">";
2655 template<
class flt_type>
2657 inline static const std::string name =
"M4Shift16<" + get_type_name<flt_type>() +
">";
static Tscal W_3d(Tscal r, Tscal h)
compute the normed & resized version of the kernel :
static constexpr Tscal hfactd
static Tscal f(Tscal q)
the base function for this SPH kernel
static constexpr Tscal Rkern
static Tscal df(Tscal q)
derivative of M4::f
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
static constexpr Tscal Rkern
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal Rkern
static constexpr Tscal hfactd
default hfact to be used for this kernel
Truncated Gaussian kernel with compact support R=3h.
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal norm_2d
2D norm of the kernel (accounts for truncation at q=3)
static constexpr Tscal hfactd
default hfact to be used for this kernel
static constexpr Tscal Rkern
Compact support radius of the kernel.
Truncated Gaussian kernel with compact support R=5h.
static constexpr Tscal norm_2d
2D norm of the kernel
static constexpr Tscal norm_1d
1D norm of the kernel
static constexpr Tscal Rkern
Compact support radius of the kernel.
static constexpr Tscal norm_3d
3D norm of the kernel
static constexpr Tscal hfactd
default hfact to be used for this kernel
Class holding the value of numerous constants generated from the following source.
constexpr T pow_constexpr(T a) noexcept
generalized pow constexpr
namespace for basic c++ utilities
namespace for math utility
SPHKernelGen< flt_type, details::KernelDefTGauss5< flt_type > > TGauss5
Truncated Gaussian kernel with compact support R=5h.
SPHKernelGen< flt_type, details::KernelDefM4Shift8< flt_type > > M4Shift8
The M4Shift8 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefTGauss3< flt_type > > TGauss3
Truncated Gaussian kernel with compact support R=3h.
SPHKernelGen< flt_type, details::KernelDefM4< flt_type > > M4
The M4 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM10< flt_type > > M10
The M8 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4Shift2< flt_type > > M4Shift2
The M4Shift2 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefC4< flt_type > > C4
The C4 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4Shift4< flt_type > > M4Shift4
The M4Shift4 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4DoubleHump3< flt_type > > M4DH3
The M4DoubleHump3 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM9< flt_type > > M9
The M8 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefC6< flt_type > > C6
The C6 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM6< flt_type > > M6
The M6 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4Shift16< flt_type > > M4Shift16
The M4Shift16 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4DoubleHump5< flt_type > > M4DH5
The M4DoubleHump5 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4DoubleHump< flt_type > > M4DH
The M4DoubleHump SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM7< flt_type > > M7
The M7 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM8< flt_type > > M8
The M8 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM5< flt_type > > M5
The M5 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefM4DoubleHump7< flt_type > > M4DH7
The M4DoubleHump7 SPH kernel.
SPHKernelGen< flt_type, details::KernelDefC2< flt_type > > C2
The C2 SPH kernel.