From fee57df5b3a93d1b836f40939d87fd3f1e6b8b44 Mon Sep 17 00:00:00 2001 From: rttw52 <stuart.mcalpine@helsink.fi> Date: Sat, 14 Mar 2020 16:47:56 +0000 Subject: [PATCH] debugging and force_checks no longer share the num_interacted var --- src/gravity.c | 2 +- src/gravity/Default/gravity.h | 7 +--- src/gravity/Default/gravity_part.h | 5 +-- src/gravity/MultiSoftening/gravity.h | 7 +--- src/gravity/MultiSoftening/gravity_part.h | 5 +-- src/multipole.h | 50 ++++++++++++++--------- src/runner_doiact_grav.c | 22 +++++++--- 7 files changed, 55 insertions(+), 43 deletions(-) diff --git a/src/gravity.c b/src/gravity.c index 7e9c4d02f0..d70617e96a 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 7830a9e064..ca91265c54 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 79459d0330..a533d966b6 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 178f820a73..07ed0e78b1 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 fcc212bbee..2d6d0d9bfb 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 f2c1d535e0..48c09e0c65 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 a69652b138..5e5cbaed19 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 */ -- GitLab