From 8586ddbb866a00bb32d9d2852bb3a62c889bd983 Mon Sep 17 00:00:00 2001 From: Matthieu Schaller <schaller@strw.leidenuniv.nl> Date: Mon, 10 Dec 2018 16:10:31 +0000 Subject: [PATCH] Add the Temperature to the output of the particles in the EAGLE cooling model. --- src/cooling/EAGLE/cooling_io.h | 17 +++++++++++++++-- src/parallel_io.c | 9 +++++---- src/serial_io.c | 9 +++++---- src/single_io.c | 9 +++++---- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/cooling/EAGLE/cooling_io.h b/src/cooling/EAGLE/cooling_io.h index 48c845c254..86b7067bdf 100644 --- a/src/cooling/EAGLE/cooling_io.h +++ b/src/cooling/EAGLE/cooling_io.h @@ -23,6 +23,7 @@ #include "../config.h" /* Local includes */ +#include "cooling.h" #include "io_properties.h" #ifdef HAVE_HDF5 @@ -40,9 +41,17 @@ __attribute__((always_inline)) INLINE static void cooling_write_flavour( } #endif +INLINE static void convert_part_T(const struct engine* e, const struct part* p, + const struct xpart* xp, float* ret) { + + ret[0] = cooling_get_temperature(e->physical_constants, e->internal_units, + e->cosmology, e->cooling_func, p, xp); +} + /** * @brief Specifies which particle fields to write to a dataset * + * @param parts The particle array. * @param xparts The extended data particle array. * @param list The list of i/o properties to write. * @param cooling The #cooling_function_data @@ -50,9 +59,13 @@ __attribute__((always_inline)) INLINE static void cooling_write_flavour( * @return Returns the number of fields to write. */ __attribute__((always_inline)) INLINE static int cooling_write_particles( - const struct xpart* xparts, struct io_props* list, + const struct part* parts, const struct xpart* xparts, struct io_props* list, const struct cooling_function_data* cooling) { - return 0; + + list[0] = io_make_output_field_convert_part("Temperature", FLOAT, 1, + UNIT_CONV_TEMPERATURE, parts, + xparts, convert_part_T); + return 1; } #endif /* SWIFT_COOLING_EAGLE_IO_H */ diff --git a/src/parallel_io.c b/src/parallel_io.c index febbb4a7db..5e616d52b9 100644 --- a/src/parallel_io.c +++ b/src/parallel_io.c @@ -1394,8 +1394,8 @@ void write_output_parallel(struct engine* e, const char* baseName, Nparticles = Ngas; hydro_write_particles(parts, xparts, list, &num_fields); num_fields += chemistry_write_particles(parts, list + num_fields); - num_fields += cooling_write_particles(xparts, list + num_fields, - e->cooling_func); + num_fields += cooling_write_particles( + parts, xparts, list + num_fields, e->cooling_func); } else { /* Ok, we need to fish out the particles we want */ @@ -1418,8 +1418,9 @@ void write_output_parallel(struct engine* e, const char* baseName, &num_fields); num_fields += chemistry_write_particles(parts_written, list + num_fields); - num_fields += cooling_write_particles( - xparts_written, list + num_fields, e->cooling_func); + num_fields += + cooling_write_particles(parts_written, xparts_written, + list + num_fields, e->cooling_func); } } break; diff --git a/src/serial_io.c b/src/serial_io.c index 059318df18..76f55897da 100644 --- a/src/serial_io.c +++ b/src/serial_io.c @@ -1071,8 +1071,8 @@ void write_output_serial(struct engine* e, const char* baseName, Nparticles = Ngas; hydro_write_particles(parts, xparts, list, &num_fields); num_fields += chemistry_write_particles(parts, list + num_fields); - num_fields += cooling_write_particles(xparts, list + num_fields, - e->cooling_func); + num_fields += cooling_write_particles( + parts, xparts, list + num_fields, e->cooling_func); } else { /* Ok, we need to fish out the particles we want */ @@ -1095,8 +1095,9 @@ void write_output_serial(struct engine* e, const char* baseName, &num_fields); num_fields += chemistry_write_particles(parts_written, list + num_fields); - num_fields += cooling_write_particles( - xparts_written, list + num_fields, e->cooling_func); + num_fields += + cooling_write_particles(parts_written, xparts_written, + list + num_fields, e->cooling_func); } } break; diff --git a/src/single_io.c b/src/single_io.c index 833c4a80cb..67c3250e37 100644 --- a/src/single_io.c +++ b/src/single_io.c @@ -890,8 +890,8 @@ void write_output_single(struct engine* e, const char* baseName, N = Ngas; hydro_write_particles(parts, xparts, list, &num_fields); num_fields += chemistry_write_particles(parts, list + num_fields); - num_fields += cooling_write_particles(xparts, list + num_fields, - e->cooling_func); + num_fields += cooling_write_particles( + parts, xparts, list + num_fields, e->cooling_func); } else { /* Ok, we need to fish out the particles we want */ @@ -914,8 +914,9 @@ void write_output_single(struct engine* e, const char* baseName, &num_fields); num_fields += chemistry_write_particles(parts_written, list + num_fields); - num_fields += cooling_write_particles( - xparts_written, list + num_fields, e->cooling_func); + num_fields += + cooling_write_particles(parts_written, xparts_written, + list + num_fields, e->cooling_func); } } break; -- GitLab