28 class SPHTreeUtilities {
31 using flt = shambase::VecComponent<vec>;
33 static constexpr flt Rkern = SPHKernel::Rkern;
36 using InterfBuildCache
43 static void iterate_smoothing_length_tree(
45 sycl::buffer<vec> &merged_r,
46 sycl::buffer<flt> &hnew,
47 sycl::buffer<flt> &hold,
48 sycl::buffer<flt> &eps_h,
49 sycl::range<1> update_range,
67 using flt = shambase::VecComponent<vec>;
69 static constexpr flt Rkern = SPHKernel::Rkern;
72 using InterfBuildCache
79 inline InterfBuildCache build_interf_cache(
82 using namespace shamrock::patch;
84 const u32 ihpart = sched.pdl_old().template get_field_idx<flt>(
"hpart");
86 PatchField<flt> interactR_patch = sched.map_owned_to_patch_field_simple<flt>(
88 if (!pdat.is_empty()) {
89 return pdat.get_field<flt>(ihpart).compute_max() * h_evol_max * Rkern;
91 return shambase::VectorProperties<flt>::get_min();
99 [](flt h0, flt h1, flt h2, flt h3, flt h4, flt h5, flt h6, flt h7) {
100 return sham::max_8points(h0, h1, h2, h3, h4, h5, h6, h7);
106 static void iterate_smoothing_length_cache(
112 sycl::range<1> update_range,
121 template<
class u_morton>
122 static void iterate_smoothing_length_tree(
124 sycl::buffer<vec> &merged_r,
125 sycl::buffer<flt> &hnew,
126 sycl::buffer<flt> &hold,
127 sycl::buffer<flt> &eps_h,
128 sycl::range<1> update_range,
136 SPHTreeUtilities<vec, SPHKernel, u_morton>::iterate_smoothing_length_tree(
148 static void compute_omega(
152 sycl::range<1> part_range,