diff --git a/src/hydro/Gizmo/hydro.h b/src/hydro/Gizmo/hydro.h index a97f684e49ea51916bca0e85f0d470273616e254..ae4bbfde8610f94853beca9ef94f122aa185c30d 100644 --- a/src/hydro/Gizmo/hydro.h +++ b/src/hydro/Gizmo/hydro.h @@ -343,13 +343,13 @@ __attribute__((always_inline)) INLINE static void hydro_end_force( this is indeed the case. */ if (p->force.dt) { p->a_hydro[0] = - (p->conserved.momentum[0] / p->conserved.mass - p->primitives.v[0]) / + (p->conserved.momentum[0] / p->conserved.mass - p->force.v_full[0]) / p->force.dt; p->a_hydro[1] = - (p->conserved.momentum[1] / p->conserved.mass - p->primitives.v[1]) / + (p->conserved.momentum[1] / p->conserved.mass - p->force.v_full[1]) / p->force.dt; p->a_hydro[2] = - (p->conserved.momentum[2] / p->conserved.mass - p->primitives.v[2]) / + (p->conserved.momentum[2] / p->conserved.mass - p->force.v_full[2]) / p->force.dt; p->du_dt = p->conserved.flux.energy / p->force.dt; diff --git a/src/hydro/Gizmo/hydro_io.h b/src/hydro/Gizmo/hydro_io.h index aaae075fe8b8614333a95032424cda746bc52313..8bd8f43626329d97764f527b3392945efdf58581 100644 --- a/src/hydro/Gizmo/hydro_io.h +++ b/src/hydro/Gizmo/hydro_io.h @@ -55,14 +55,45 @@ void hydro_read_particles(struct part* parts, struct io_props* list, UNIT_CONV_DENSITY, parts, primitives.rho); } +/** + * @brief Get the internal energy of a particle + * + * @param e #engine. + * @param p Particle. + * @return Internal energy of the particle + */ float convert_u(struct engine* e, struct part* p) { return p->primitives.P / hydro_gamma_minus_one / p->primitives.rho; } +/** + * @brief Get the entropic function of a particle + * + * @param e #engine. + * @param p Particle. + * @return Entropic function of the particle + */ float convert_A(struct engine* e, struct part* p) { return p->primitives.P / pow_gamma(p->primitives.rho); } +/** + * @brief Get the total energy of a particle + * + * @param e #engine. + * @param p Particle. + * @return Total energy of the particle + */ +float convert_Etot(struct engine* e, struct part* p) { + float momentum2; + + momentum2 = p->conserved.momentum[0] * p->conserved.momentum[0] + + p->conserved.momentum[1] * p->conserved.momentum[1] + + p->conserved.momentum[2] * p->conserved.momentum[2]; + + return p->conserved.energy + 0.5f * momentum2 / p->conserved.mass; +} + /** * @brief Specifies which particle fields to write to a dataset * @@ -101,8 +132,9 @@ void hydro_write_particles(struct part* parts, struct io_props* list, "Entropy", FLOAT, 1, UNIT_CONV_ENTROPY, parts, primitives.P, convert_A); list[11] = io_make_output_field("Pressure", FLOAT, 1, UNIT_CONV_PRESSURE, parts, primitives.P); - list[12] = io_make_output_field("TotEnergy", FLOAT, 1, UNIT_CONV_ENERGY, - parts, conserved.energy); + list[12] = + io_make_output_field_convert_part("TotEnergy", FLOAT, 1, UNIT_CONV_ENERGY, + parts, conserved.energy, convert_Etot); } /** diff --git a/src/task.c b/src/task.c index 37d6623e81d7f4585f9906aad03e1dcf0ee2e4c2..f80068d465802f75f952c1a6c02c76bc7aa0512c 100644 --- a/src/task.c +++ b/src/task.c @@ -48,10 +48,10 @@ /* Task type names. */ const char *taskID_names[task_type_count] = { - "none", "sort", "self", "pair", "sub_self", - "sub_pair", "init", "ghost", "extra_ghost", - "kick", "kick_fixdt", "send", "recv", "grav_gather_m", - "grav_fft", "grav_mm", "grav_up", "grav_external"}; + "none", "sort", "self", "pair", "sub_self", + "sub_pair", "init", "ghost", "extra_ghost", "kick", + "kick_fixdt", "send", "recv", "grav_gather_m", "grav_fft", + "grav_mm", "grav_up", "grav_external"}; const char *subtaskID_names[task_subtype_count] = { "none", "density", "gradient", "force", "grav", "tend"};