Introduction
Introduction Statistics Contact Development Disclaimer Help
ttesting new porosity method, set fluid=true in initFluid - sphere - GPU-based …
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit 7b3d83163c41681083609c0eda3027c040a27611
parent 782153575a3498d8d86e9e4c5deda9c5d573b848
Author: Anders Damsgaard <[email protected]>
Date: Fri, 25 Apr 2014 09:07:50 +0200
ttesting new porosity method, set fluid=true in initFluid
Diffstat:
M python/sphere.py | 1 +
M src/device.cu | 3 ++-
M src/navierstokes.cuh | 46 +++++++++++++++--------------…
3 files changed, 25 insertions(+), 25 deletions(-)
---
diff --git a/python/sphere.py b/python/sphere.py
t@@ -2328,6 +2328,7 @@ class sim:
has been specified
:type hydrostatic: bool
'''
+ self.fluid = True
self.mu = numpy.ones(1, dtype=numpy.float64) * mu
self.rho_f = numpy.ones(1, dtype=numpy.float64) * rho
diff --git a/src/device.cu b/src/device.cu
t@@ -844,7 +844,8 @@ __host__ void DEM::startTime()
// velocities
if (PROFILING == 1)
startTimer(&kernel_tic);
- findPorositiesVelocitiesDiametersSpherical
+ //findPorositiesVelocitiesDiametersSpherical
+ findPorositiesVelocitiesDiametersSphericalGradient
<<<dimGridFluid, dimBlockFluid>>>(
dev_cellStart,
dev_cellEnd,
diff --git a/src/navierstokes.cuh b/src/navierstokes.cuh
t@@ -1123,8 +1123,12 @@ __global__ void findPorositiesVelocitiesDiametersSpheri…
// Normal vector pointing from cell center towards particle center
Float3 n_p;
+ // Normalized sphere-particle distance
+ Float q;
+
// Kernel function (2D disc)
- const Float dw_q = -1.0;
+ //const Float dw_q = -1.0;
+ Float dw_q;
// Iterate over 27 neighbor cells, R = 2*cell width
for (int z_dim=-2; z_dim<3; ++z_dim) { // z-axis
t@@ -1169,33 +1173,27 @@ __global__ void findPorositiesVelocitiesDiametersSpher…
xr.y - X.y,
xr.z - X.z);
d = length(x_p);
- n_p = x_p/length(x_p);
+ n_p = x_p/d;
+ q = d/R;
- // Lens shaped intersection
- if ((R - r) < d && d < (R + r)) {
- /*void_volume -=
- 1.0/(12.0*d) * (
- M_PI*(R + r - d)*(R + r - …
- *(d*d + 2.0*d*r - 3.0*r*r
- + 2.0*d*R + 6.0*r*R
- - 3.0*R*R) );*/
- v_avg += MAKE_FLOAT3(v.x, v.y, v.z);
- d_avg += 2.0*r;
- epsilon_ii +=
- dw_q*MAKE_FLOAT3(v.x, v.y, v.z)*n_…
- n++;
- }
- // Particle fully contained in cell sphere
- if (d <= R - r) {
- //void_volume -= 4.0/3.0*M_PI*r*r*r;
- v_avg += MAKE_FLOAT3(v.x, v.y, v.z);
- d_avg += 2.0*r;
- epsilon_ii +=
- dw_q*MAKE_FLOAT3(v.x, v.y, v.z)*n_…
- n++;
+ dw_q = 0.0;
+ if (0.0 < q && q < 1.0) {
+ // 2d disc approximation
+ //dw_q = -1.0;
+
+ // 3d sphere approximation
+ dw_q = -1.5*pow(-q + 1.0, 0.5)
+ *pow(q + 1.0, 0.5)
+ + 0.5*pow(-q + 1.0, 1.5)
+ *pow(q + 1.0, -0.5);
}
+ v_avg += MAKE_FLOAT3(v.x, v.y, v.z);
+ d_avg += 2.0*r;
+ epsilon_ii +=
+ dw_q*MAKE_FLOAT3(v.x, v.y, v.z)*n_p;
+ n++;
}
}
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.