tadded capillary model from Richefeu 2008, untested, unused - sphere - GPU-base… | |
git clone git://src.adamsgaard.dk/sphere | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit f1f2215f38c14179d726466ae0d3790b9bc7011e | |
parent 42c93360b3a79ad65eb8e72511ccf7b7d677bbf8 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Mon, 1 Sep 2014 13:21:53 +0200 | |
added capillary model from Richefeu 2008, untested, unused | |
Diffstat: | |
M src/cohesion.cuh | 33 +++++++++++++++++++++++++++++… | |
M src/contactsearch.cuh | 3 ++- | |
2 files changed, 35 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/src/cohesion.cuh b/src/cohesion.cuh | |
t@@ -277,5 +277,38 @@ __device__ void capillaryCohesion_exp( | |
} // End of capillaryCohesion_exp | |
+// Capillary cohesion after Richefeu et al. (2008) | |
+__device__ void capillaryCohesion2_exp( | |
+ Float3* N, | |
+ const Float radius_a, | |
+ const Float radius_b, | |
+ const Float delta_ab, | |
+ const Float3 x_ab, | |
+ const Float x_ab_length, | |
+ const Float kappa) | |
+{ | |
+ | |
+ // Normal vector | |
+ const Float3 n_ab = x_ab/x_ab_length; | |
+ | |
+ // Determine the ratio; r = max{Ri/Rj;Rj/Ri} | |
+ Float r; | |
+ if ((radius_a/radius_b) > (radius_b/radius_a)) | |
+ r = radius_a/radius_b; | |
+ else | |
+ r = radius_b/radius_a; | |
+ | |
+ const Float lambda = 0.9/1.4142135623730951 * pow(devC_params.V_b, 2.0) * … | |
+ * pow(1.0/radius_a + 1.0/radius_b, 0.5); | |
+ | |
+ // Calculate cohesional force | |
+ const Float3 f_c = | |
+ -kappa * sqrtf(radius_a*radius_b) * expf(-delta_ab/lambda) * n_ab; | |
+ | |
+ // Add force components from this collision to total force for particle | |
+ *N += f_c; | |
+ | |
+} | |
+ | |
#endif | |
// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 | |
diff --git a/src/contactsearch.cuh b/src/contactsearch.cuh | |
t@@ -160,7 +160,8 @@ __device__ void findAndProcessContactsInCell( | |
x_ab, x_ab_length, | |
delta_ab, kappa); | |
} else if (delta_ab < devC_params.db) { | |
- // Check wether particle distance satisfies the capill… | |
+ // Check wether particle distance satisfies the | |
+ // capillary bond distance | |
capillaryCohesion_exp(F, radius_a, radius_b, delta_ab, | |
x_ab, x_ab_length, kappa); | |
} |