24namespace shamrock::sph {
27 inline sycl::vec<flt, 3> get_box_dim(flt r_particle,
u32 xcnt,
u32 ycnt,
u32 zcnt) {
29 using vec3 = sycl::vec<flt, 3>;
35 auto get_pos = [&](
u32 i,
u32 j,
u32 k) -> vec3 {
37 = {2 * i + ((j + k) % 2),
38 sycl::sqrt(3.) * (j + (1. / 3.) * (k % 2)),
39 2 * sycl::sqrt(6.) * k / 3};
46 return get_pos(im, jm, km);
50 inline std::tuple<sycl::vec<flt, 3>, sycl::vec<flt, 3>> get_ideal_fcc_box(
51 flt r_particle, std::tuple<sycl::vec<flt, 3>, sycl::vec<flt, 3>> box) {
53 using vec3 = sycl::vec<flt, 3>;
55 vec3 box_min = std::get<0>(box);
56 vec3 box_max = std::get<1>(box);
58 vec3 box_dim = box_max - box_min;
60 vec3 iboc_dim = (box_dim / vec3({2, sycl::sqrt(3.), 2 * sycl::sqrt(6.) / 3})) / r_particle;
72 vec3 m1 = get_box_dim(r_particle, i, j, k);
74 return {box_min, box_min + m1};
78 inline sycl::vec<Tscal, 3> get_fcc_pos(
u32 i,
u32 j,
u32 k) {
80 2 * i + ((j + k) % 2),
81 sycl::sqrt(3.) * (j + (1. / 3.) * (k % 2)),
82 2 * sycl::sqrt(6.) * k / 3};
std::uint32_t u32
32 bit unsigned integer