diff --git a/src/engine.c b/src/engine.c index 753918af08483345421bb0b3f808f168b283ce0a..c1b5e6df46cb63df77c3ffc6eb60cd1b408357d8 100644 --- a/src/engine.c +++ b/src/engine.c @@ -5214,8 +5214,8 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs, space_init_sparts(s, e->verbose); #ifdef WITH_LOGGER - logger_write_timestamp(e->log); - logger_ensure_size(e->total_nr_parts, e->logger_buffer_size); + logger_log_timestamp(e->log, e->ti_current, &e->log->timestamp_offset); + logger_ensure_size(e->total_nr_parts, e->log->buffer_size); #endif /* Now, launch the calculation */ @@ -6518,7 +6518,7 @@ void engine_dump_index(struct engine *e) { #endif /* Dump... */ - write_index_single(e, e->loggerBaseName, e->internal_units, + write_index_single(e, e->log->base_name, e->internal_units, e->snapshotUnits); e->dump_snapshot = 0; @@ -6700,7 +6700,7 @@ void engine_init(struct engine *e, struct space *s, struct swift_params *params, #if defined(WITH_LOGGER) e->log = (struct logger *) malloc(sizeof(struct logger)); - logger_init(e->log); + logger_init(e->log, params); #endif /* Make the space link back to the engine. */ @@ -7310,7 +7310,7 @@ void engine_config(int restart, struct engine *e, struct swift_params *params, } #ifdef WITH_LOGGER - logger_write_file_header(e->logger_dump, e); + logger_write_file_header(e->log->dump, e); #endif /* Free the affinity stuff */ diff --git a/src/hydro/Gadget2/hydro_io.h b/src/hydro/Gadget2/hydro_io.h index 2bdcee1a5c9fc11191c4d15d1b51d25f429f1440..0f8dc9e664d5fb3bb0dae0c2a67a4f1fbe6ff7d1 100644 --- a/src/hydro/Gadget2/hydro_io.h +++ b/src/hydro/Gadget2/hydro_io.h @@ -199,7 +199,8 @@ INLINE static void hydro_write_particles(const struct part* parts, * In this version, we only want the ids and the offset. */ __attribute__((always_inline)) INLINE static void hydro_write_index( - struct part* parts, struct io_props* list, + const struct part* parts, const struct xpart* xparts, + struct io_props* list, int* num_fields) { #ifdef WITH_LOGGER @@ -210,7 +211,7 @@ __attribute__((always_inline)) INLINE static void hydro_write_index( UNIT_CONV_NO_UNITS, parts, id); list[1] = io_make_output_field("Offset", ULONGLONG, 1, - UNIT_CONV_NO_UNITS, parts, last_offset); + UNIT_CONV_NO_UNITS, xparts, logger.last_offset); #else error("Cannot write index without logger"); #endif diff --git a/src/logger.c b/src/logger.c index d484a024e9021f778079976964734855d84e6dcf..7860468a2266e323cfd1f4656a03d3be22567618 100644 --- a/src/logger.c +++ b/src/logger.c @@ -396,7 +396,7 @@ void logger_ensure_size(struct logger *log, size_t total_nr_parts) { * * @param log The #logger */ -void logger_init(struct logger *log) { +void logger_init(struct logger *log, struct swift_params *params) { /* read parameters */ log->delta_step = parser_get_param_int(params, "Logger:delta_step"); log->buffer_size = parser_get_param_float(params, "Logger:mmaped_buffer_size") * 1e9; diff --git a/src/logger.h b/src/logger.h index 6b75fda2e055eaa35bf46a2a586fab8f1f9fcf3f..eb9be96a3a1c326866e7a7b8d2c7b52972406085 100644 --- a/src/logger.h +++ b/src/logger.h @@ -128,8 +128,9 @@ void logger_log_part(const struct part *p, const unsigned int mask, size_t *offs struct dump *dump); void logger_log_gpart(const struct gpart *p, const unsigned int mask, size_t *offset, struct dump *dump); -void logger_log_timestamp(integertime_t t, size_t *offset, - struct dump *dump); +void logger_init(struct logger *log, const struct swift_params *params); +void logger_clean(struct logger *log); +void logger_log_timestamp(struct logger *log, integertime_t t, size_t *offset); int logger_read_part(struct part *p, size_t *offset, const char *buff); int logger_read_gpart(struct gpart *p, size_t *offset, const char *buff); int logger_read_timestamp(unsigned long long int *t, size_t *offset, diff --git a/src/logger_io.c b/src/logger_io.c index e877e7533091f41668b2fc02dd2f05d74ae127fe..d90577b2c95c0408aa15e4fc78c97dacf4177a21 100644 --- a/src/logger_io.c +++ b/src/logger_io.c @@ -248,7 +248,7 @@ void write_index_single(struct engine* e, const char* baseName, case swift_type_gas: N = Ngas; - hydro_write_index(parts, list, &num_fields); + hydro_write_index(parts, xparts, list, &num_fields); break; case swift_type_dark_matter: diff --git a/src/runner.c b/src/runner.c index ae1489bcb256faa3badd31a2b54c634aff0ec239..91afb92027505c09d0b79ff06b93f24e1fbbc84c 100644 --- a/src/runner.c +++ b/src/runner.c @@ -2738,14 +2738,14 @@ void runner_do_logger(struct runner *r, struct cell *c, int timer) { logger_log_part(p, logger_mask_x | logger_mask_v | logger_mask_a | logger_mask_u | logger_mask_h | logger_mask_rho | logger_mask_consts, - &p->last_offset, e->logger_dump); + &xp->logger.last_offset, e->log->dump); //message("Offset: %lu", p->last_offset); /* Set counter back to zero */ - xp->last_output = 0; + xp->logger.last_output = 0; } else /* Update counter */ - xp->last_output += 1; + xp->logger.last_output += 1; } }