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) {
131 vtk_dump_add_patch_id(scheduler(), writer);
132 vtk_dump_add_worldrank(scheduler(), writer);
135 vtk_dump_add_field<Tscal>(scheduler(), writer, ihpart,
"h");
136 vtk_dump_add_field<Tscal>(scheduler(), writer, iuint,
"u");
137 vtk_dump_add_field<Tvec>(scheduler(), writer, ivxyz,
"v");
138 vtk_dump_add_field<Tvec>(scheduler(), writer, iaxyz,
"a");
140 if (solver_config.has_field_alphaAV()) {
142 vtk_dump_add_field<Tscal>(scheduler(), writer, ialpha_AV,
"alpha_AV");
145 if (solver_config.has_field_divv()) {
147 vtk_dump_add_field<Tscal>(scheduler(), writer, idivv,
"divv");
150 if (solver_config.has_field_dtdivv()) {
152 vtk_dump_add_field<Tscal>(scheduler(), writer, idtdivv,
"dtdivv");
155 if (solver_config.has_field_curlv()) {
157 vtk_dump_add_field<Tvec>(scheduler(), writer, icurlv,
"curlv");
160 if (solver_config.has_field_soundspeed()) {
162 vtk_dump_add_field<Tscal>(scheduler(), writer, isoundspeed,
"soundspeed");
165 if (solver_config.compute_luminosity) {
167 vtk_dump_add_field<Tscal>(scheduler(), writer, iluminosity,
"luminosity");
170 vtk_dump_add_compute_field(scheduler(), writer, density,
"rho");
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);
203 vtk_dump_add_compute_field(
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);
235 vtk_dump_add_compute_field(
236 scheduler(), writer, tmp_deltav,
"deltav_" + std::to_string(idust));