42 using namespace shamrock::patch;
55 shamlog_debug_ln(
"sph::vtk",
"compute rho field for patch ", p.id_patch);
57 auto &buf_hpart = pdat.get_field<Tscal>(ihpart).get_buf();
59 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
60 auto &q = sptr->get_queue();
63 const Tscal *acc_h = buf_hpart.get_read_access(depends_list);
64 auto acc_rho = density.get_buf(p.id_patch).get_write_access(depends_list);
66 auto e = q.submit(depends_list, [&](sycl::handler &cgh) {
67 const Tscal part_mass = solver_config.gpart_mass;
69 cgh.parallel_for(sycl::range<1>{pdat.get_obj_cnt()}, [=](sycl::item<1> item) {
70 u32 gid = (
u32) item.get_id();
71 using namespace shamrock::sph;
72 Tscal rho_ha = rho_h(part_mass, acc_h[gid], Kernel::hfactd);
73 acc_rho[gid] = rho_ha;
77 buf_hpart.complete_event_state(e);
78 density.get_buf(p.id_patch).complete_event_state(e);
82 writer.add_point_data_section();
85 if (add_patch_world_id) {
94 if (solver_config.has_field_alphaAV()) {
98 if (solver_config.has_field_divv()) {
102 if (solver_config.has_field_curlv()) {
106 if (solver_config.has_field_soundspeed()) {
110 if (solver_config.has_field_dtdivv()) {
114 if (solver_config.compute_luminosity) {
118 if (solver_config.dust_config.has_epsilon_field()) {
119 const u32 ndust = solver_config.dust_config.get_dust_nvar();
123 if (solver_config.dust_config.has_deltav_field()) {
124 const u32 ndust = solver_config.dust_config.get_dust_nvar();
128 writer.add_field_data_section(fnum);
130 if (add_patch_world_id) {
140 if (solver_config.has_field_alphaAV()) {
145 if (solver_config.has_field_divv()) {
150 if (solver_config.has_field_dtdivv()) {
155 if (solver_config.has_field_curlv()) {
160 if (solver_config.has_field_soundspeed()) {
165 if (solver_config.compute_luminosity) {
172 if (solver_config.dust_config.has_epsilon_field()) {
174 const u32 ndust = solver_config.dust_config.get_dust_nvar();
176 for (
u32 idust = 0; idust < ndust; idust++) {
183 "compute extract epsilon field with idust =",
187 auto &buf_epsilon = pdat.get_field<Tscal>(iepsilon);
190 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
191 auto &q = sptr->get_queue();
198 [&, idust](
u32 i,
auto epsilon_field, Tscal *acc_epsilon) {
199 acc_epsilon[i] = epsilon_field(i, idust);
204 scheduler(), writer, tmp_epsilon,
"epsilon_" + std::to_string(idust));
208 if (solver_config.dust_config.has_deltav_field()) {
210 const u32 ndust = solver_config.dust_config.get_dust_nvar();
212 for (
u32 idust = 0; idust < ndust; idust++) {
217 "sph::vtk",
"compute extract deltav field with idust =", idust, p.id_patch);
219 auto &buf_deltav = pdat.get_field<Tvec>(ideltav);
222 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
223 auto &q = sptr->get_queue();
230 [&, idust](
u32 i,
auto deltav_field, Tvec *acc_deltav) {
231 acc_deltav[i] = deltav_field(i, idust);
236 scheduler(), writer, tmp_deltav,
"deltav_" + std::to_string(idust));