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 if (solver_config.dust_config.has_s_j_field()) {
129 const u32 ndust = solver_config.dust_config.get_dust_nvar();
133 writer.add_field_data_section(fnum);
135 if (add_patch_world_id) {
145 if (solver_config.has_field_alphaAV()) {
150 if (solver_config.has_field_divv()) {
155 if (solver_config.has_field_dtdivv()) {
160 if (solver_config.has_field_curlv()) {
165 if (solver_config.has_field_soundspeed()) {
170 if (solver_config.compute_luminosity) {
177 if (solver_config.dust_config.has_epsilon_field()) {
179 const u32 ndust = solver_config.dust_config.get_dust_nvar();
181 for (
u32 idust = 0; idust < ndust; idust++) {
188 "compute extract epsilon field with idust =",
192 auto &buf_epsilon = pdat.get_field<Tscal>(iepsilon);
195 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
196 auto &q = sptr->get_queue();
203 [&, idust](
u32 i,
auto epsilon_field, Tscal *acc_epsilon) {
204 acc_epsilon[i] = epsilon_field(i, idust);
209 scheduler(), writer, tmp_epsilon,
"epsilon_" + std::to_string(idust));
213 if (solver_config.dust_config.has_deltav_field()) {
215 const u32 ndust = solver_config.dust_config.get_dust_nvar();
217 for (
u32 idust = 0; idust < ndust; idust++) {
222 "sph::vtk",
"compute extract deltav field with idust =", idust, p.id_patch);
224 auto &buf_deltav = pdat.get_field<Tvec>(ideltav);
227 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
228 auto &q = sptr->get_queue();
235 [&, idust](
u32 i,
auto deltav_field, Tvec *acc_deltav) {
236 acc_deltav[i] = deltav_field(i, idust);
241 scheduler(), writer, tmp_deltav,
"deltav_" + std::to_string(idust));
245 if (solver_config.dust_config.has_s_j_field()) {
247 const u32 ndust = solver_config.dust_config.get_dust_nvar();
249 for (
u32 idust = 0; idust < ndust; idust++) {
254 "sph::vtk",
"compute extract s_j field with idust =", idust, p.id_patch);
256 auto &buf_s_j = pdat.get_field<Tscal>(is_j);
259 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
260 auto &q = sptr->get_queue();
267 [&, idust](
u32 i,
auto s_j_field, Tscal *acc_s_j) {
268 acc_s_j[i] = s_j_field(i, idust);
273 scheduler(), writer, tmp_s_j,
"s_j_" + std::to_string(idust));
277 if (solver_config.dust_config.has_s_j_field()) {
279 const u32 ndust = solver_config.dust_config.get_dust_nvar();
281 for (
u32 idust = 0; idust < ndust; idust++) {
288 "compute extract ds_j_dt field with idust =",
292 auto &buf_ds_j_dt = pdat.get_field<Tscal>(ids_j_dt);
295 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
296 auto &q = sptr->get_queue();
303 [&, idust](
u32 i,
auto ds_j_dt_field, Tscal *acc_ds_j_dt) {
304 acc_ds_j_dt[i] = ds_j_dt_field(i, idust);
309 scheduler(), writer, tmp_ds_j_dt,
"ds_j_dt_" + std::to_string(idust));
313 if (solver_config.dust_config.has_s_j_field()) {
315 const u32 ndust = solver_config.dust_config.get_dust_nvar();
317 for (
u32 idust = 0; idust < ndust; idust++) {
323 "compute extract delta_v field with idust =",
327 auto &buf_delta_v = pdat.get_field<Tvec>(idelta_v);
330 auto sptr = shamsys::instance::get_compute_scheduler_ptr();
331 auto &q = sptr->get_queue();
338 [&, idust](
u32 i,
auto delta_v_field, Tvec *acc_delta_v) {
339 acc_delta_v[i] = delta_v_field(i, idust);
344 scheduler(), writer, tmp_delta_v,
"delta_v_" + std::to_string(idust));