From 3fc4650fb5dd1a200168fb16ed9ed8f292caa351 Mon Sep 17 00:00:00 2001 From: Matthieu Schaller <schaller@strw.leidenuniv.nl> Date: Mon, 12 Nov 2018 17:56:59 +0100 Subject: [PATCH] Modify the i/o routines to make sure we do not write out particles that do not exist. --- src/common_io.c | 7 +++++-- src/parallel_io.c | 9 ++++++--- src/serial_io.c | 9 ++++++--- src/single_io.c | 9 ++++++--- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/common_io.c b/src/common_io.c index 5ea80f6519..46cf7077fe 100644 --- a/src/common_io.c +++ b/src/common_io.c @@ -811,7 +811,8 @@ void io_collect_parts_to_write(const struct part* restrict parts, for (size_t i = 0; i < Nparts; ++i) { /* And collect the ones that have not been removed */ - if (parts[i].time_bin != time_bin_inhibited) { + if (parts[i].time_bin != time_bin_inhibited && + parts[i].time_bin != time_bin_not_created) { parts_written[count] = parts[i]; xparts_written[count] = xparts[i]; @@ -845,7 +846,8 @@ void io_collect_sparts_to_write(const struct spart* restrict sparts, for (size_t i = 0; i < Nsparts; ++i) { /* And collect the ones that have not been removed */ - if (sparts[i].time_bin != time_bin_inhibited) { + if (sparts[i].time_bin != time_bin_inhibited && + sparts[i].time_bin != time_bin_not_created) { sparts_written[count] = sparts[i]; count++; @@ -879,6 +881,7 @@ void io_collect_gparts_to_write(const struct gpart* restrict gparts, /* And collect the ones that have not been removed */ if ((gparts[i].time_bin != time_bin_inhibited) && + (gparts[i].time_bin != time_bin_not_created) && (gparts[i].type == swift_type_dark_matter)) { gparts_written[count] = gparts[i]; diff --git a/src/parallel_io.c b/src/parallel_io.c index 510b637c67..74b06f919d 100644 --- a/src/parallel_io.c +++ b/src/parallel_io.c @@ -1204,9 +1204,12 @@ void write_output_parallel(struct engine* e, const char* baseName, // const size_t Ndm = Ntot > 0 ? Ntot - Nbaryons : 0; /* Number of particles that we will write */ - const size_t Ntot_written = e->s->nr_gparts - e->s->nr_inhibited_sparts; - const size_t Ngas_written = e->s->nr_parts - e->s->nr_inhibited_parts; - const size_t Nstars_written = e->s->nr_sparts - e->s->nr_inhibited_gparts; + const size_t Ntot_written = + e->s->nr_gparts - e->s->nr_inhibited_gparts - e->s->nr_extra_gparts; + const size_t Ngas_written = + e->s->nr_parts - e->s->nr_inhibited_parts - e->s->nr_extra_parts; + const size_t Nstars_written = + e->s->nr_sparts - e->s->nr_inhibited_sparts - e->s->nr_extra_sparts; const size_t Nbaryons_written = Ngas_written + Nstars_written; const size_t Ndm_written = Ntot_written > 0 ? Ntot_written - Nbaryons_written : 0; diff --git a/src/serial_io.c b/src/serial_io.c index 66d19b2291..fec7dffc24 100644 --- a/src/serial_io.c +++ b/src/serial_io.c @@ -775,9 +775,12 @@ void write_output_serial(struct engine* e, const char* baseName, // const size_t Ndm = Ntot > 0 ? Ntot - Nbaryons : 0; /* Number of particles that we will write */ - const size_t Ntot_written = e->s->nr_gparts - e->s->nr_inhibited_sparts; - const size_t Ngas_written = e->s->nr_parts - e->s->nr_inhibited_parts; - const size_t Nstars_written = e->s->nr_sparts - e->s->nr_inhibited_gparts; + const size_t Ntot_written = + e->s->nr_gparts - e->s->nr_inhibited_gparts - e->s->nr_extra_gparts; + const size_t Ngas_written = + e->s->nr_parts - e->s->nr_inhibited_parts - e->s->nr_extra_parts; + const size_t Nstars_written = + e->s->nr_sparts - e->s->nr_inhibited_sparts - e->s->nr_extra_sparts; const size_t Nbaryons_written = Ngas_written + Nstars_written; const size_t Ndm_written = Ntot_written > 0 ? Ntot_written - Nbaryons_written : 0; diff --git a/src/single_io.c b/src/single_io.c index 99f016809d..3ba58aa55e 100644 --- a/src/single_io.c +++ b/src/single_io.c @@ -639,9 +639,12 @@ void write_output_single(struct engine* e, const char* baseName, // const size_t Ndm = Ntot > 0 ? Ntot - Nbaryons : 0; /* Number of particles that we will write */ - const size_t Ntot_written = e->s->nr_gparts - e->s->nr_inhibited_sparts; - const size_t Ngas_written = e->s->nr_parts - e->s->nr_inhibited_parts; - const size_t Nstars_written = e->s->nr_sparts - e->s->nr_inhibited_gparts; + const size_t Ntot_written = + e->s->nr_gparts - e->s->nr_inhibited_gparts - e->s->nr_extra_gparts; + const size_t Ngas_written = + e->s->nr_parts - e->s->nr_inhibited_parts - e->s->nr_extra_parts; + const size_t Nstars_written = + e->s->nr_sparts - e->s->nr_inhibited_sparts - e->s->nr_extra_sparts; const size_t Nbaryons_written = Ngas_written + Nstars_written; const size_t Ndm_written = Ntot_written > 0 ? Ntot_written - Nbaryons_written : 0; -- GitLab