33 using Tscal = shambase::VecComponent<Tvec>;
35 using Kernel = SPHKernel<Tscal>;
45 : context(context), solver_config(solver_config), storage(storage) {}
54 std::function<field_getter_t> field_getter,
58 std::function<field_getter_t> field_getter,
62 std::string field_name,
64 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
68 std::string field_name,
70 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
74 std::string field_name,
76 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
80 std::function<field_getter_t> field_getter,
88 std::function<field_getter_t> field_getter,
96 std::string field_name,
102 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
106 std::string field_name,
112 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
116 std::string field_name,
117 const std::vector<Tvec> &positions,
118 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
121 positions.size(), shamsys::instance::get_compute_scheduler_ptr()};
122 positions_buf.copy_from_stdvec(positions);
123 return compute_slice(field_name, positions_buf, custom_getter);
127 std::string field_name,
129 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
132 rays.size(), shamsys::instance::get_compute_scheduler_ptr()};
133 rays_buf.copy_from_stdvec(rays);
134 return compute_column_integ(field_name, rays_buf, custom_getter);
138 std::string field_name,
140 std::optional<std::function<pybind11::array_t<Tfield>(
size_t, pybind11::dict &)>>
143 ring_rays.size(), shamsys::instance::get_compute_scheduler_ptr()};
144 ring_rays_buf.copy_from_stdvec(ring_rays);
145 return compute_azymuthal_integ(field_name, ring_rays_buf, custom_getter);
T & get_check_ref(const std::unique_ptr< T > &ptr, SourceLocation loc=SourceLocation())
Takes a std::unique_ptr and returns a reference to the object it holds. It throws a std::runtime_erro...