From 341421c38d0379cd33ff50ad740a352a10cc002c Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <schaller@strw.leidenuniv.nl>
Date: Mon, 21 Jan 2019 14:31:40 +0800
Subject: [PATCH] When running with VELOCIraptor, collect the DM particle in
 group for i/o alongside the regular gpart data.

---
 src/common_io.c | 14 +++++++++-----
 src/common_io.h |  5 ++++-
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/common_io.c b/src/common_io.c
index e5da5838ca..edb116e604 100644
--- a/src/common_io.c
+++ b/src/common_io.c
@@ -1357,10 +1357,12 @@ void io_collect_sparts_to_write(const struct spart* restrict sparts,
  * @param Ngparts The total number of #part.
  * @param Ngparts_written The total number of #part to write.
  */
-void io_collect_gparts_to_write(const struct gpart* restrict gparts,
-                                struct gpart* restrict gparts_written,
-                                const size_t Ngparts,
-                                const size_t Ngparts_written) {
+void io_collect_gparts_to_write(
+    const struct gpart* restrict gparts,
+    const struct velociraptor_gpart_data* restrict vr_data,
+    struct gpart* restrict gparts_written,
+    struct velociraptor_gpart_data* restrict vr_data_written,
+    const size_t Ngparts, const size_t Ngparts_written, const int with_stf) {
 
   size_t count = 0;
 
@@ -1372,6 +1374,8 @@ void io_collect_gparts_to_write(const struct gpart* restrict gparts,
         (gparts[i].time_bin != time_bin_not_created) &&
         (gparts[i].type == swift_type_dark_matter)) {
 
+      if (with_stf) vr_data_written[count] = vr_data[i];
+
       gparts_written[count] = gparts[i];
       count++;
     }
@@ -1379,7 +1383,7 @@ void io_collect_gparts_to_write(const struct gpart* restrict gparts,
 
   /* Check that everything is fine */
   if (count != Ngparts_written)
-    error("Collected the wrong number of s-particles (%zu vs. %zu expected)",
+    error("Collected the wrong number of g-particles (%zu vs. %zu expected)",
           count, Ngparts_written);
 }
 
diff --git a/src/common_io.h b/src/common_io.h
index bdff3e37d1..eb1ee0a804 100644
--- a/src/common_io.h
+++ b/src/common_io.h
@@ -36,6 +36,7 @@
 struct cell;
 struct part;
 struct gpart;
+struct velociraptor_gpart_data;
 struct spart;
 struct xpart;
 struct io_props;
@@ -113,9 +114,11 @@ void io_collect_sparts_to_write(const struct spart* restrict sparts,
                                 const size_t Nsparts,
                                 const size_t Nsparts_written);
 void io_collect_gparts_to_write(const struct gpart* restrict gparts,
+                                const struct velociraptor_gpart_data* vr_data,
                                 struct gpart* restrict gparts_written,
+                                struct velociraptor_gpart_data* vr_data_written,
                                 const size_t Ngparts,
-                                const size_t Ngparts_written);
+                                const size_t Ngparts_written, int with_stf);
 void io_prepare_dm_gparts(struct threadpool* tp, struct gpart* const gparts,
                           size_t Ndm);
 void io_duplicate_hydro_gparts(struct threadpool* tp, struct part* const parts,
-- 
GitLab