tgrains.c: fix and optimize grain-grain interaction - granular - granular dynam… | |
git clone git://src.adamsgaard.dk/granular | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b5116979a34a77b651a34b8e51665749e20dd2f0 | |
parent f457ddb46d693870cf3f73a76057f606e94415ec | |
Author: Anders Damsgaard <[email protected]> | |
Date: Thu, 22 Apr 2021 13:47:47 +0200 | |
grains.c: fix and optimize grain-grain interaction | |
Diffstat: | |
M grains.c | 16 +++++++++------- | |
1 file changed, 9 insertions(+), 7 deletions(-) | |
--- | |
diff --git a/grains.c b/grains.c | |
t@@ -135,7 +135,7 @@ grains_interact(struct grain *g_i, struct grain *g_j, int … | |
d_i, d_j, | |
r_ij[3], r_ij_norm, | |
m_i, m_j, m_ij, | |
- E_ij, nu_ij, mu_ij, | |
+ mu_ij, | |
gamma_n_ij, gamma_t_ij, | |
k_n_ij, k_t_ij, A_ij, | |
angvel_ij[3], u_t_dot_v_ij, | |
t@@ -171,14 +171,14 @@ grains_interact(struct grain *g_i, struct grain *g_j, in… | |
v_t_ij[d] = v_ij[d] - v_n_ij[d] - 0.5 * angvel_cross_r_ij[d]; | |
} | |
- E_ij = fmin(g_i->youngs_modulus, g_j->youngs_modulus); | |
- nu_ij = fmin(g_i->poissons_ratio, g_j->poissons_ratio); | |
mu_ij = fmin(g_i->friction_coeff, g_j->friction_coeff); | |
gamma_n_ij = fmin(g_i->damping_n, g_j->damping_n); | |
gamma_t_ij = fmin(g_i->damping_t, g_j->damping_t); | |
- k_n_ij = 2.0 / 3.0 * E_ij / (1.0 - pow(nu_ij, 2.0)); | |
- k_t_ij = 2.0 * E_ij / (1.0 + nu_ij) * (2.0 - nu_ij); | |
+ k_n_ij = fmin(grain_stiffness_normal(g_i), | |
+ grain_stiffness_normal(g_j)); | |
+ k_t_ij = fmin(grain_stiffness_tangential(g_i), | |
+ grain_stiffness_tangential(g_j)); | |
A_ij = sqrt(delta_ij) * sqrt(d_i * d_j / (2.0 * (d_i + d_j))); | |
t@@ -204,8 +204,10 @@ grains_interact(struct grain *g_i, struct grain *g_j, int… | |
g_i->contacts[ic].age += dt; | |
u_t_dot_v_ij = dot(g_i->contacts[ic].tandisp, v_ij, 3); | |
for (d = 0; d < 3; d++) | |
- g_i->contacts[ic].tandisp[d] += v_t_ij[d] * dt | |
- - u_t_dot_v_ij / (r_ij_norm * r_… | |
+ g_i->contacts[ic].tandisp[d] += (v_t_ij[d] | |
+ - u_t_dot_v_ij * r_ij[d] | |
+ / (r… | |
+ * dt; | |
free(angvel_cross_r_ij); | |
free(f_t_cross_r_ij); |