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);