Introduction
Introduction Statistics Contact Development Disclaimer Help
tdetermine bond total tension/compression and tension/compression rate - slider…
git clone git://src.adamsgaard.dk/slidergrid
Log
Files
Refs
README
LICENSE
---
commit 4d51c127fcf39c33d6a85637b5cb51b321fe320a
parent 1cbb23226d339f3e3ef3d13fef3ab0141148fcbe
Author: Anders Damsgaard <[email protected]>
Date: Wed, 16 Mar 2016 10:56:21 -0700
determine bond total tension/compression and tension/compression rate
Diffstat:
M slider.c | 31 +++++++++++++++++++++++++++++…
M slider.h | 5 +++--
M vector_math.c | 5 +++++
M vector_math.h | 1 +
4 files changed, 38 insertions(+), 4 deletions(-)
---
diff --git a/slider.c b/slider.c
t@@ -62,12 +62,17 @@ void update_kinematics(slider s, Float dt, long int iterat…
}
// Find the relative displacement and velocity between two sliders
-void slider_displacement(slider s1, const slider s2, const Float dt)
+void slider_displacement(slider s1, const slider s2, const Float dt, const int…
{
+ // vector pointing from neighbor (s2) position to this slider position (s1)
const Float3 dist = subtract_float3(s1.pos, s2.pos);
+
+ // length of inter-slider vector
const Float dist_norm = norm_float3(dist);
+ // unit vector pointing from neighbor (s2) to slider s1
+ const Float3 n = divide_float3_scalar(dist, dist_norm);
// relative contact interface velocity w/o rolling
const Float3 vel_linear = subtract_float3(s1.vel, s2.vel);
t@@ -80,12 +85,34 @@ void slider_displacement(slider s1, const slider s2, const…
multiply_scalar_float3(dist_norm/2.,
cross_float3(dist, s2.angvel))));
+ // Normal component of the relative contact interface velocity
+ const Float vel_n = multiply_scalar_float3(-1.0, dot_float3(vel_linear, n)…
+
+ // Tangential component of the relative contact interface velocity
+ // Hinrichsen and Wolf 2004, eq. 13.9
+ const Float3 = subtract_float3(vel, multiply_float3(n, dot_float3(n, vel))…
+
+ // read previous inter-slider distance vector
+ const Float3 dist0 = s1.neighbor_distance[i];
+
+ // increment in inter-slider distance
+ const Float3 ddist = subtract_float3(dist, dist0);
+
+ // save current inter-slider distance
+ s1.neighbor_distance[i] = dist;
+
+ // total relative displacement in inter-slider distance
+ s1.neighbor_relative_distance_displacement[i] =
+ add_float3(s1.neighbor_relative_distance_displacement[i], ddist);
+ // total relative displacement in inter-slider distance
+ s1.neighbor_relative_distance_velocity[i] = vel_n;
}
-// Resolve bond mechanics between a slider and one of its neighbors
+// Resolve bond mechanics between a slider and one of its neighbors based on t…
+// incremental linear-elastic model by Potyondy and Cundall 2004
// Resolve interaction between a slider and all of its neighbors
diff --git a/slider.h b/slider.h
t@@ -41,8 +41,9 @@ typedef struct {
int neighbors[MAX_NEIGHBORS];
// relative spatial movement between this slider and its neighbors
- Float3 neighbor_relative_displacement[MAX_NEIGHBORS];
- Float3 neighbor_relative_contact_velocity[MAX_NEIGHBORS];
+ Float3 neighbor_distance[MAX_NEIGHBORS];
+ Float3 neighbor_relative_distance_displacement[MAX_NEIGHBORS];
+ Float neighbor_relative_distance_velocity[MAX_NEIGHBORS];
} slider;
diff --git a/vector_math.c b/vector_math.c
t@@ -51,6 +51,11 @@ inline Float3 cross_float3(Float3 v1, Float3 v2)
v1.x*v2.y - v1.y*v2.x);
}
+inline Float dot_float3(Float3 v1, Float3 v2)
+{
+ return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;
+}
+
// vector-scalar operations
inline Float3 add_float3_scalar(Float3 v, Float s)
{
diff --git a/vector_math.h b/vector_math.h
t@@ -13,6 +13,7 @@ Float3 subtract_float3(Float3 v1, Float3 v2);
Float3 multiply_float3(Float3 v1, Float3 v2);
Float3 divide_float3(Float3 v1, Float3 v2);
Float3 cross_float3(Float3 v1, Float3 v2);
+Float dot_float3(Float3 v1, Float3 v2)
// vector-scalar operations
Float3 multiply_float3_scalar(Float3 v, Float s);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.