23 std::vector<std::string> names = {};
25 template<
typename Kernel>
26 void bind_sph_kernel(py::module &m,
const std::string &name) {
31 auto get_name = [&](std::string suffix) ->
const char * {
32 return names.emplace_back(name + suffix).c_str();
35 m.def(get_name(
"_norm_1d"), []() {
36 return Kernel::Generator::norm_1d;
38 m.def(get_name(
"_norm_2d"), []() {
39 return Kernel::Generator::norm_2d;
41 m.def(get_name(
"_norm_3d"), []() {
42 return Kernel::Generator::norm_3d;
44 m.def(get_name(
"_Rkern"), []() {
47 m.def(get_name(
"_f"), &Kernel::f);
48 m.def(get_name(
"_df"), &Kernel::df);
49 m.def(get_name(
"_ddf"), &Kernel::ddf);
50 m.def(get_name(
"_phi_tilde_3d"), &Kernel::phi_tilde_3d);
51 m.def(get_name(
"_phi_tilde_3d_prime"), &Kernel::phi_tilde_3d_prime);
52 m.def(get_name(
"_W1d"), &Kernel::W_1d);
53 m.def(get_name(
"_W2d"), &Kernel::W_2d);
54 m.def(get_name(
"_W3d"), &Kernel::W_3d);
55 m.def(get_name(
"_dW3d"), &Kernel::dW_3d);
56 m.def(get_name(
"_ddW3d"), &Kernel::ddW_3d);
57 m.def(get_name(
"_dhW3d"), &Kernel::dhW_3d);
58 m.def(get_name(
"_f3d_integ_z"), &Kernel::f3d_integ_z);
65 void init_shamrock_math_sphkernels(py::module &m) {
67 py::module sphkernel_module = m.def_submodule(
"sphkernel",
"Shamrock sph kernels math lib");
69 bind_sph_kernel<shammath::M4<f64>>(sphkernel_module,
"M4");
70 bind_sph_kernel<shammath::M5<f64>>(sphkernel_module,
"M5");
71 bind_sph_kernel<shammath::M6<f64>>(sphkernel_module,
"M6");
72 bind_sph_kernel<shammath::M7<f64>>(sphkernel_module,
"M7");
73 bind_sph_kernel<shammath::M8<f64>>(sphkernel_module,
"M8");
74 bind_sph_kernel<shammath::M9<f64>>(sphkernel_module,
"M9");
75 bind_sph_kernel<shammath::M10<f64>>(sphkernel_module,
"M10");
76 bind_sph_kernel<shammath::C2<f64>>(sphkernel_module,
"C2");
77 bind_sph_kernel<shammath::C4<f64>>(sphkernel_module,
"C4");
78 bind_sph_kernel<shammath::C6<f64>>(sphkernel_module,
"C6");
79 bind_sph_kernel<shammath::M4DH<f64>>(sphkernel_module,
"M4DH");
80 bind_sph_kernel<shammath::M4DH3<f64>>(sphkernel_module,
"M4DH3");
81 bind_sph_kernel<shammath::M4DH5<f64>>(sphkernel_module,
"M4DH5");
82 bind_sph_kernel<shammath::M4DH7<f64>>(sphkernel_module,
"M4DH7");
83 bind_sph_kernel<shammath::M4Shift2<f64>>(sphkernel_module,
"M4Shift2");
84 bind_sph_kernel<shammath::M4Shift4<f64>>(sphkernel_module,
"M4Shift4");
85 bind_sph_kernel<shammath::M4Shift8<f64>>(sphkernel_module,
"M4Shift8");
86 bind_sph_kernel<shammath::M4Shift16<f64>>(sphkernel_module,
"M4Shift16");
87 bind_sph_kernel<shammath::TGauss3<f64>>(sphkernel_module,
"TGauss3");
88 bind_sph_kernel<shammath::TGauss5<f64>>(sphkernel_module,
"TGauss5");
Pybind11 include and definitions.