diff --git a/src/gravity.c b/src/gravity.c index 7e9c4d02f04bdbf20f12979bec6759c2ef44c6b3..d70617e96a0ab1a039a9d56643c68b49668382cb 100644 --- a/src/gravity.c +++ b/src/gravity.c @@ -717,7 +717,7 @@ void gravity_exact_force_check(struct space *s, const struct engine *e, gpi->a_grav_m2p[0], gpi->a_grav_m2p[1], gpi->a_grav_m2p[2], gpi->a_grav_m2l[0], gpi->a_grav_m2l[1], gpi->a_grav_m2l[2], gpi->num_interacted_p2p, gpi->num_interacted_m2p, - gpi->num_interacted_m2l, gpi->num_not_interacted); + gpi->num_interacted_m2l, gpi->num_interacted_pm); } } diff --git a/src/gravity/Default/gravity.h b/src/gravity/Default/gravity.h index 7830a9e064d8a8550d03fee932337dac01ed21ca..ca91265c54262badcb3ebde5b32bd7270be1080a 100644 --- a/src/gravity/Default/gravity.h +++ b/src/gravity/Default/gravity.h @@ -165,14 +165,11 @@ __attribute__((always_inline)) INLINE static void gravity_init_gpart( gp->num_interacted_m2p = 0; gp->num_interacted_m2l = 0; gp->num_interacted_p2p = 0; - gp->num_not_interacted = 0; -#endif - -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) - gp->num_interacted = 0; + gp->num_interacted_pm = 0; #endif #ifdef SWIFT_DEBUG_CHECKS + gp->num_interacted = 0; gp->initialised = 1; #endif } diff --git a/src/gravity/Default/gravity_part.h b/src/gravity/Default/gravity_part.h index 79459d0330f50f757738a4a4b0ce6990bcae6972..a533d966b6ed75f5b8866e6e8eb7a72fbbe5ef2c 100644 --- a/src/gravity/Default/gravity_part.h +++ b/src/gravity/Default/gravity_part.h @@ -67,9 +67,6 @@ struct gpart { /* Has this particle been initialised? */ int initialised; -#endif - -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) /* Total number of gparts this gpart interacted with */ long long num_interacted; #endif @@ -99,7 +96,7 @@ struct gpart { long long num_interacted_m2p; long long num_interacted_m2l; long long num_interacted_p2p; - long long num_not_interacted; + long long num_interacted_pm; #endif } SWIFT_STRUCT_ALIGN; diff --git a/src/gravity/MultiSoftening/gravity.h b/src/gravity/MultiSoftening/gravity.h index 178f820a738d02533075914b3c3bc1121998c719..07ed0e78b164e5ee3f01b8c9a62b940201b31aa4 100644 --- a/src/gravity/MultiSoftening/gravity.h +++ b/src/gravity/MultiSoftening/gravity.h @@ -175,14 +175,11 @@ __attribute__((always_inline)) INLINE static void gravity_init_gpart( gp->num_interacted_m2p = 0; gp->num_interacted_m2l = 0; gp->num_interacted_p2p = 0; - gp->num_not_interacted = 0; -#endif - -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) - gp->num_interacted = 0; + gp->num_interacted_pm = 0; #endif #ifdef SWIFT_DEBUG_CHECKS + gp->num_interacted = 0; gp->initialised = 1; #endif } diff --git a/src/gravity/MultiSoftening/gravity_part.h b/src/gravity/MultiSoftening/gravity_part.h index fcc212bbee9d30b1c1fe5c32f9a5311cc0f7ec92..2d6d0d9bfbb18040faa282b63a0aa573b751a182 100644 --- a/src/gravity/MultiSoftening/gravity_part.h +++ b/src/gravity/MultiSoftening/gravity_part.h @@ -68,9 +68,6 @@ struct gpart { /* Has this particle been initialised? */ int initialised; -#endif - -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) /* Total number of gparts this gpart interacted with */ long long num_interacted; #endif @@ -100,7 +97,7 @@ struct gpart { long long num_interacted_m2l; long long num_interacted_m2p; long long num_interacted_p2p; - long long num_not_interacted; + long long num_interacted_pm; #endif } SWIFT_STRUCT_ALIGN; diff --git a/src/multipole.h b/src/multipole.h index f2c1d535e04661587010187f9f77fd65b333310c..48c09e0c65cdc380362f491b433595d7e246b9db 100644 --- a/src/multipole.h +++ b/src/multipole.h @@ -92,14 +92,18 @@ struct grav_tensor { #if SELF_GRAVITY_MULTIPOLE_ORDER > 5 #error "Missing implementation for order >5" #endif -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) +#ifdef SWIFT_DEBUG_CHECKS /* Total number of gpart this field tensor interacted with */ long long num_interacted; +#endif - /* Total number of gpart this field tensor did not interact - * with. i.e., the distance to the cell was > r_cut_max. */ - long long num_not_interacted; +#ifdef SWIFT_GRAVITY_FORCE_CHECKS + /* Number of gparts interacted through the tree. */ + long long num_interacted_tree; + + /* Number of gparts interacted through the grid. */ + long long num_interacted_pm; #endif #ifdef SWIFT_DEBUG_CHECKS @@ -314,12 +318,14 @@ INLINE static void gravity_field_tensors_init(struct grav_tensor *l, INLINE static void gravity_field_tensors_add( struct grav_tensor *restrict la, const struct grav_tensor *restrict lb) { #ifdef SWIFT_DEBUG_CHECKS - if (lb->num_interacted + lb->num_not_interacted == 0) + if (lb->num_interacted == 0) error("Adding tensors that did not interact"); -#endif -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) + la->num_interacted += lb->num_interacted; - la->num_not_interacted += lb->num_not_interacted; +#endif +#ifdef SWIFT_GRAVITY_FORCE_CHECKS + la->num_interacted_tree += lb->num_interacted_tree; + la->num_interacted_pm += lb->num_interacted_pm; #endif la->interacted = 1; @@ -1605,11 +1611,15 @@ INLINE static void gravity_M2L_apply( struct grav_tensor *restrict l_b, const struct multipole *restrict m_a, const struct potential_derivatives_M2L *pot) { -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) +#ifdef SWIFT_DEBUG_CHECKS /* Count interactions */ l_b->num_interacted += m_a->num_gpart; #endif +#ifdef SWIFT_GRAVITY_FORCE_CHECKS + l_b->num_interacted_tree += m_a->num_gpart; +#endif + /* Record that this tensor has received contributions */ l_b->interacted = 1; @@ -2101,12 +2111,14 @@ INLINE static void gravity_L2L(struct grav_tensor *restrict la, gravity_field_tensors_init(la, 0); #ifdef SWIFT_DEBUG_CHECKS - if (lb->num_interacted + lb->num_not_interacted == 0) + if (lb->num_interacted == 0) error("Shifting tensors that did not interact"); -#endif -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) + la->num_interacted = lb->num_interacted; - la->num_not_interacted = lb->num_not_interacted; +#endif +#ifdef SWIFT_GRAVITY_FORCE_CHECKS + la->num_interacted_tree = lb->num_interacted_tree; + la->num_interacted_pm = lb->num_interacted_pm; #endif /* Distance to shift by */ @@ -2458,15 +2470,15 @@ INLINE static void gravity_L2P(const struct grav_tensor *lb, const double loc[3], struct gpart *gp) { #ifdef SWIFT_DEBUG_CHECKS - if (lb->num_interacted + lb->num_not_interacted == 0) + if (lb->num_interacted == 0) error("Interacting with empty field tensor"); + + gp->num_interacted += lb->num_interacted; #endif -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) - gp->num_interacted += lb->num_interacted + lb->num_not_interacted; -#endif + #ifdef SWIFT_GRAVITY_FORCE_CHECKS - gp->num_interacted_m2l += lb->num_interacted; - gp->num_not_interacted += lb->num_not_interacted; + gp->num_interacted_m2l += lb->num_interacted_tree; + gp->num_interacted_pm += lb->num_interacted_pm; #endif /* Local accumulator */ diff --git a/src/runner_doiact_grav.c b/src/runner_doiact_grav.c index a69652b138833b15f76d315a7cce1275e611f994..5e5cbaed193591a7aeed5d3f69647e10d3b4dcc8 100644 --- a/src/runner_doiact_grav.c +++ b/src/runner_doiact_grav.c @@ -1636,12 +1636,19 @@ void runner_dopair_recursive_grav(struct runner *r, struct cell *ci, /* Are we beyond the distance where the truncated forces are 0? */ if (periodic && r_lr_check > max_distance) { -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) +#ifdef SWIFT_DEBUG_CHECKS + if (cell_is_active_gravity(ci, e)) + multi_i->pot.num_interacted += multi_j->m_pole.num_gpart; + if (cell_is_active_gravity(cj, e)) + multi_j->pot.num_interacted += multi_i->m_pole.num_gpart; +#endif + +#ifdef SWIFT_GRAVITY_FORCE_CHECKS /* Need to account for the interactions we missed */ if (cell_is_active_gravity(ci, e)) - multi_i->pot.num_not_interacted += multi_j->m_pole.num_gpart; + multi_i->pot.num_interacted_pm += multi_j->m_pole.num_gpart; if (cell_is_active_gravity(cj, e)) - multi_j->pot.num_not_interacted += multi_i->m_pole.num_gpart; + multi_j->pot.num_interacted_pm += multi_i->m_pole.num_gpart; #endif return; } @@ -1845,9 +1852,14 @@ void runner_do_grav_long_range(struct runner *r, struct cell *ci, int timer) { /* Are we beyond the distance where the truncated forces are 0 ?*/ if (min_radius2 > max_distance2) { -#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS) +#ifdef SWIFT_DEBUG_CHECKS + /* Need to account for the interactions we missed */ + multi_i->pot.num_interacted += multi_j->m_pole.num_gpart; +#endif + +#ifdef SWIFT_GRAVITY_FORCE_CHECKS /* Need to account for the interactions we missed */ - multi_i->pot.num_not_interacted += multi_j->m_pole.num_gpart; + multi_i->pot.num_interacted_pm += multi_j->m_pole.num_gpart; #endif /* Record that this multipole received a contribution */