tonly register contacts for enabled grains - granular - granular dynamics simulation
 (HTM) git clone git://src.adamsgaard.dk/granular
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b60ee39cf043b8660bf185e351259f9186c4c331
 (DIR) parent 6bfe4343c4a35003808fb1b3bdf94480a7c7d216
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Wed, 21 Apr 2021 10:32:39 +0200
       
       only register contacts for enabled grains
       
       Diffstat:
         M simulation.c                        |      21 ++++++++++++++++++---
       
       1 file changed, 18 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/simulation.c b/simulation.c
       t@@ -121,10 +121,13 @@ sim_check_add_contact(struct simulation *sim, size_t i, size_t j)
                overlap = euclidean_norm(centerdist, 3)
                                - (sim->grains[i].radius + sim->grains[j].radius);
        
       -        grain_register_contact(&sim->grains[i], j, i, centerdist, overlap);
       -        grain_register_contact(&sim->grains[j], i, j, centerdistinv, overlap);
       +        if (sim->grains[i].enabled)
       +                grain_register_contact(&sim->grains[i], j, i, centerdist, overlap);
       +        if (sim->grains[j].enabled)
       +                grain_register_contact(&sim->grains[j], i, j, centerdistinv, overlap);
        }
        
       +/* TODO: add grid sorting */
        void
        sim_detect_contacts(struct simulation *sim)
        {
       t@@ -137,12 +140,24 @@ sim_detect_contacts(struct simulation *sim)
        }
        
        void
       +sim_resolve_interactions(struct simulation *sim)
       +{
       +        size_t i;
       +        int ic;
       +
       +        for (i = 0; i < sim->ng; i++)
       +                for (ic = 0; ic < MAXCONTACTS; ic++)
       +                        if (sim->grains[i].contacts[ic].active)
       +                                continue;
       +}
       +
       +void
        sim_step_time(struct simulation *sim)
        {
                size_t i;
        
                sim_detect_contacts(sim);
       -        /* sim_resolve_interactions(sim); */
       +        sim_resolve_interactions(sim);
        
                for (i = 0; i < sim->ng; i++)
                        grain_temporal_integration(&sim->grains[i], sim->dt);