diff --git a/src/engine_split_particles.c b/src/engine_split_particles.c index 6c5528bd4c06bc5d50ee4b6016cecfef3976ea51..2a9fae7efb5d55dd0f3308af85829241c5031a7a 100644 --- a/src/engine_split_particles.c +++ b/src/engine_split_particles.c @@ -351,7 +351,7 @@ void engine_split_gas_particles(struct engine *e) { /* We now need to correct all the pointers of the other particle arrays */ part_relink_all_parts_to_gparts(gparts_new, s->nr_gparts, s->parts, - s->sparts, s->bparts); + s->sparts, s->bparts, &e->threadpool); s->gparts = gparts_new; } diff --git a/src/part.c b/src/part.c index cb73aba1afa958e7a5e65919af819687ba9df863..94ea115fad57774a6f8eba92dea8d2ceeccf6c37 100644 --- a/src/part.c +++ b/src/part.c @@ -32,6 +32,7 @@ #include "error.h" #include "hydro.h" #include "part.h" +#include "threadpool.h" /** * @brief Re-link the #gpart%s associated with the list of #part%s. @@ -40,8 +41,8 @@ * @param N The number of particles to re-link; * @param offset The offset of #part%s relative to the global parts list. */ -void part_relink_gparts_to_parts(struct part *parts, size_t N, - ptrdiff_t offset) { +void part_relink_gparts_to_parts(struct part *parts, const size_t N, + const ptrdiff_t offset) { for (size_t k = 0; k < N; k++) { if (parts[k].gpart) { parts[k].gpart->id_or_neg_offset = -(k + offset); @@ -56,8 +57,8 @@ void part_relink_gparts_to_parts(struct part *parts, size_t N, * @param N The number of s-particles to re-link; * @param offset The offset of #spart%s relative to the global sparts list. */ -void part_relink_gparts_to_sparts(struct spart *sparts, size_t N, - ptrdiff_t offset) { +void part_relink_gparts_to_sparts(struct spart *sparts, const size_t N, + const ptrdiff_t offset) { for (size_t k = 0; k < N; k++) { if (sparts[k].gpart) { sparts[k].gpart->id_or_neg_offset = -(k + offset); @@ -72,8 +73,8 @@ void part_relink_gparts_to_sparts(struct spart *sparts, size_t N, * @param N The number of s-particles to re-link; * @param offset The offset of #bpart%s relative to the global bparts list. */ -void part_relink_gparts_to_bparts(struct bpart *bparts, size_t N, - ptrdiff_t offset) { +void part_relink_gparts_to_bparts(struct bpart *bparts, const size_t N, + const ptrdiff_t offset) { for (size_t k = 0; k < N; k++) { if (bparts[k].gpart) { bparts[k].gpart->id_or_neg_offset = -(k + offset); @@ -88,7 +89,7 @@ void part_relink_gparts_to_bparts(struct bpart *bparts, size_t N, * @param N The number of particles to re-link; * @param parts The global #part array in which to find the #gpart offsets. */ -void part_relink_parts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_parts_to_gparts(struct gpart *gparts, const size_t N, struct part *parts) { for (size_t k = 0; k < N; k++) { if (gparts[k].type == swift_type_gas) { @@ -104,7 +105,7 @@ void part_relink_parts_to_gparts(struct gpart *gparts, size_t N, * @param N The number of particles to re-link; * @param sparts The global #spart array in which to find the #gpart offsets. */ -void part_relink_sparts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_sparts_to_gparts(struct gpart *gparts, const size_t N, struct spart *sparts) { for (size_t k = 0; k < N; k++) { if (gparts[k].type == swift_type_stars) { @@ -120,7 +121,7 @@ void part_relink_sparts_to_gparts(struct gpart *gparts, size_t N, * @param N The number of particles to re-link; * @param bparts The global #bpart array in which to find the #gpart offsets. */ -void part_relink_bparts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_bparts_to_gparts(struct gpart *gparts, const size_t N, struct bpart *bparts) { for (size_t k = 0; k < N; k++) { if (gparts[k].type == swift_type_black_hole) { @@ -139,9 +140,10 @@ void part_relink_bparts_to_gparts(struct gpart *gparts, size_t N, * @param sparts The global #spart array in which to find the #gpart offsets. * @param bparts The global #bpart array in which to find the #gpart offsets. */ -void part_relink_all_parts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_all_parts_to_gparts(struct gpart *gparts, const size_t N, struct part *parts, struct spart *sparts, - struct bpart *bparts) { + struct bpart *bparts, + struct threadpool *tp) { for (size_t k = 0; k < N; k++) { if (gparts[k].type == swift_type_gas) { parts[-gparts[k].id_or_neg_offset].gpart = &gparts[k]; diff --git a/src/part.h b/src/part.h index d0ff99089526c223f148d32058003edaf474126d..3f2d6371156e5e259f095f88ac744be50be845eb 100644 --- a/src/part.h +++ b/src/part.h @@ -32,9 +32,10 @@ /* Local headers. */ #include "align.h" -#include "fof.h" #include "part_type.h" -#include "timeline.h" + +/* Pre-declarations */ +struct threadpool; /* Some constants. */ #define part_align 128 @@ -119,21 +120,22 @@ #error "Invalid choice of black hole particle" #endif -void part_relink_gparts_to_parts(struct part *parts, size_t N, - ptrdiff_t offset); -void part_relink_gparts_to_sparts(struct spart *sparts, size_t N, - ptrdiff_t offset); -void part_relink_gparts_to_bparts(struct bpart *bparts, size_t N, - ptrdiff_t offset); -void part_relink_parts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_gparts_to_parts(struct part *parts, const size_t N, + const ptrdiff_t offset); +void part_relink_gparts_to_sparts(struct spart *sparts, const size_t N, + const ptrdiff_t offset); +void part_relink_gparts_to_bparts(struct bpart *bparts, const size_t N, + const ptrdiff_t offset); +void part_relink_parts_to_gparts(struct gpart *gparts, const size_t N, struct part *parts); -void part_relink_sparts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_sparts_to_gparts(struct gpart *gparts, const size_t N, struct spart *sparts); -void part_relink_bparts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_bparts_to_gparts(struct gpart *gparts, const size_t N, struct bpart *bparts); -void part_relink_all_parts_to_gparts(struct gpart *gparts, size_t N, +void part_relink_all_parts_to_gparts(struct gpart *gparts, const size_t N, struct part *parts, struct spart *sparts, - struct bpart *bparts); + struct bpart *bparts, + struct threadpool *tp); void part_verify_links(struct part *parts, struct gpart *gparts, struct spart *sparts, struct bpart *bparts, size_t nr_parts, size_t nr_gparts, size_t nr_sparts, diff --git a/src/swift.h b/src/swift.h index d8221080b1179b8bddc5441cdd4ae19a3fca5b74..c7a5f8d5acbcc17dd467cbcfb914eac025894dae 100644 --- a/src/swift.h +++ b/src/swift.h @@ -43,6 +43,7 @@ #include "error.h" #include "feedback.h" #include "feedback_properties.h" +#include "fof.h" #include "gravity.h" #include "gravity_derivatives.h" #include "gravity_properties.h"