tfix contact removal - granular - granular dynamics simulation
(HTM) git clone git://src.adamsgaard.dk/granular
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit fce305fb77886ba66ae39544d7f829048ec3da3a
(DIR) parent 01f75f59b3a0ddbaacdf66d98100c45300652fbd
(HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Fri, 23 Apr 2021 06:42:11 +0200
fix contact removal
Diffstat:
M grain.c | 2 +-
M simulation.c | 6 ++----
2 files changed, 3 insertions(+), 5 deletions(-)
---
(DIR) diff --git a/grain.c b/grain.c
t@@ -355,7 +355,7 @@ grain_register_contact(struct grain *g, size_t i, size_t j,
/* first pass: check if contact is already registered */
for (ic = 0; ic < MAXCONTACTS; ic++)
- if (g->contacts[ic].j == j) {
+ if (g->contacts[ic].active && g->contacts[ic].j == j) {
g->contacts[ic].overlap = overlap;
for (d = 0; d < 3; d++)
g->contacts[ic].centerdist[d] = centerdist[d];
(DIR) diff --git a/simulation.c b/simulation.c
t@@ -139,8 +139,7 @@ sim_check_add_contact(struct simulation *sim, size_t i, size_t j)
overlap = 0.5*(sim->grains[i].diameter + sim->grains[j].diameter)
- euclidean_norm(centerdist, 3);
- if (overlap > 0.0)
- grain_register_contact(&sim->grains[i], i, j, centerdist, overlap);
+ grain_register_contact(&sim->grains[i], i, j, centerdist, overlap);
}
void
t@@ -192,8 +191,7 @@ sim_resolve_interactions(struct simulation *sim)
for (i = 0; i < sim->ng; i++)
for (ic = 0; ic < MAXCONTACTS; ic++)
- if (sim->grains[i].contacts[ic].active &&
- i < sim->grains[i].contacts[ic].j)
+ if (sim->grains[i].contacts[ic].active && i < sim->grains[i].contacts[ic].j)
grains_interact(&sim->grains[i],
&sim->grains[sim->grains[i].contacts[ic].j],
ic, sim->dt);