36 auto &pdl = sched.pdl_old();
39 = tmp.get_field_buf_ref<Tvec>(pdl.get_field_idx<Tvec>(
"vxyz"));
44 for (
i32 id_a = 0; id_a < tmp.get_obj_cnt(); ++id_a) {
45 Tvec &xyz_a = acc_xyz[id_a];
46 Tvec &vxyz_a = acc_vxyz[id_a];
48 Tscal r = sycl::sqrt(sycl::dot(xyz_a, xyz_a));
50 Tvec k = k_profile(r);
51 Tscal psi = psi_profile(r);
52 Tscal effective_inc = inc_profile(r);
54 Tvec w = sycl::cross(k, xyz_a);
55 Tvec wv = sycl::cross(k, vxyz_a);
57 xyz_a = xyz_a * sycl::cos(effective_inc) + w * sycl::sin(effective_inc)
58 + k * sycl::dot(k, xyz_a) * (1. - sycl::cos(effective_inc));
59 vxyz_a = vxyz_a * sycl::cos(effective_inc) + wv * sycl::sin(effective_inc)
60 + k * sycl::dot(k, vxyz_a) * (1. - sycl::cos(effective_inc));
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...