Introduction
Introduction Statistics Contact Development Disclaimer Help
tresolve twist on bond - slidergrid - grid of elastic sliders on a frictional s…
git clone git://src.adamsgaard.dk/slidergrid
Log
Files
Refs
README
LICENSE
---
commit bbf7010bcf7ceae41f9d8bf35c2f7d1f1e66ae78
parent d852181baa63f618bea35aa6d8d6053763688920
Author: Anders Damsgaard Christensen <[email protected]>
Date: Mon, 18 Apr 2016 16:06:46 -0700
resolve twist on bond
Diffstat:
M slidergrid/slider.c | 63 ++++++++++++++++++++++++++++-…
1 file changed, 57 insertions(+), 6 deletions(-)
---
diff --git a/slidergrid/slider.c b/slidergrid/slider.c
t@@ -135,7 +135,7 @@ void update_kinematics(slider* s, Float dt, long int itera…
// determine time step increment bond-parallel deformation (tension or
// compression)
-void bond_parallel_deformation(slider* s1, const slider s2,
+void bond_tensile_deformation(slider* s1, const slider s2,
const int idx_neighbor, const int iteration)
{
// vector pointing from neighbor (s2) position to this slider position (s1)
t@@ -192,9 +192,8 @@ void bond_parallel_deformation(slider* s1, const slider s2,
}
-// determine time step increment bond-oblique deformation (shear, bending,
-// and/or twist)
-void bond_normal_deformation(slider* s1, const slider s2,
+// determine time step increment bond-shear deformation
+void bond_shear_deformation(slider* s1, const slider s2,
const int idx_neighbor, const int iteration, const Float dt)
{
// vector pointing from neighbor (s2) position to this slider position (s1)
t@@ -287,13 +286,65 @@ void bond_normal_deformation(slider* s1, const slider s2,
#endif
}
+// determine time step increment bond twist deformation
+void bond_twist_deformation(slider* s1, const slider s2,
+ const int idx_neighbor, const int iteration, const Float dt)
+{
+ // 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);
+
+ // Get the relative angular velocity
+ const Float3 angvel_rel = subtract_float3(s2.angvel, s1->angvel);
+
+ // Isolate the relative angular velocity component parallel to the bond
+ const Float twist_vel = dot_float3(angvel_rel, n);
+
+ // Twist displacement happening in one time step
+ const Float dtwist = twist_vel*dt;
+
+ // total relative displacement in inter-slider distance
+ if (iteration == 0)
+ s1->neighbor_relative_twist[idx_neighbor] = dtwist;
+ else
+ s1->neighbor_relative_twist[idx_neighbor] += dtwist;
+
+ // total relative displacement in inter-slider distance
+ s1->neighbor_relative_twist_velocity[idx_neighbor] = twist_vel;
+
+#ifdef DEBUG_BOND_DEFORMATION
+ printf("\t------\n"
+ "\ttwist = %f %f %f\n"
+ "\tdtwist = %f %f %f\n"
+ "\ttwist_vel = %f %f %f\n"
+ "\t------\n"
+ ,
+ twist.x,
+ twist.y,
+ twist.z,
+ dtwist.x,
+ dtwist.y,
+ dtwist.z,
+ twist_vel.x,
+ twist_vel.y,
+ twist_vel.z);
+#endif
+}
+
+
// Find the bond deformation
void bond_deformation(slider* s1, const slider s2,
const int idx_neighbor, const int iteration, const Float dt)
{
- bond_parallel_deformation(s1, s2, idx_neighbor, iteration);
- bond_normal_deformation(s1, s2, idx_neighbor, iteration, dt);
+ bond_tensile_deformation(s1, s2, idx_neighbor, iteration);
+ bond_shear_deformation(s1, s2, idx_neighbor, iteration, dt);
+ bond_twist_deformation(s1, s2, idx_neighbor, iteration, dt);
}
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.