treset force balance on each iteration - granular - granular dynamics simulation
 (HTM) git clone git://src.adamsgaard.dk/granular
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit ac0900f4a7a870c7b5636bb32a0b5de012ba6736
 (DIR) parent fce305fb77886ba66ae39544d7f829048ec3da3a
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Fri, 23 Apr 2021 09:24:49 +0200
       
       reset force balance on each iteration
       
       Diffstat:
         M grain.c                             |       9 +++++++++
         M grain.h                             |       1 +
         M simulation.c                        |       9 +++++++++
         M simulation.h                        |       1 +
       
       4 files changed, 20 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/grain.c b/grain.c
       t@@ -291,6 +291,15 @@ grain_zero_kinematics(struct grain *g)
                }
        }
        
       +void
       +grain_force_reset(struct grain *g)
       +{
       +        int d;
       +
       +        for (d = 0; d < 3; d++)
       +                g->force[d] = 0.0;
       +}
       +
        double
        grain_translational_kinetic_energy(const struct grain *g)
        {
 (DIR) diff --git a/grain.h b/grain.h
       t@@ -52,6 +52,7 @@ double grain_volume(const struct grain *g);
        double grain_mass(const struct grain *g);
        double grain_moment_of_inertia(const struct grain *g);
        void grain_zero_kinematics(struct grain *g);
       +void grain_force_reset(struct grain *g);
        double grain_translational_kinetic_energy(const struct grain *g);
        double grain_rotational_kinetic_energy(const struct grain *g);
        double grain_kinetic_energy(const struct grain *g);
 (DIR) diff --git a/simulation.c b/simulation.c
       t@@ -143,6 +143,14 @@ sim_check_add_contact(struct simulation *sim, size_t i, size_t j)
        }
        
        void
       +sim_force_reset(struct simulation *sim)
       +{
       +        size_t i;
       +        for (i = 0; i < sim->ng; i++)
       +                grain_force_reset(&sim->grains[i]);
       +}
       +
       +void
        sim_add_acceleration_scalar(struct simulation *sim, double acc, int dimension)
        {
                size_t i;
       t@@ -202,6 +210,7 @@ sim_step_time(struct simulation *sim)
        {
                size_t i;
        
       +        sim_force_reset(sim);
                sim_detect_contacts(sim);
                sim_resolve_interactions(sim);
        
 (DIR) diff --git a/simulation.h b/simulation.h
       t@@ -42,6 +42,7 @@ void sim_print_grains(FILE *stream, const struct simulation *sim);
        void sim_print_grains_vtk(FILE *stream, const struct simulation *sim);
        void sim_write_output_files(struct simulation *sim);
        
       +void sim_force_reset(struct simulation *sim);
        void sim_add_acceleration_scalar(struct simulation *sim, double acc, int dimension);
        void sim_set_timestep(struct simulation *sim);
        void sim_detect_contacts(struct simulation *sim);