Introduction
Introduction Statistics Contact Development Disclaimer Help
ttesting pressure gradient force - sphere - GPU-based 3D discrete element metho…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit ea7d8aa29788bcbca20557265e50c4247dfc4a26
parent 48692b733e6e121ddf0f6bd984db99ee677ba2cb
Author: Anders Damsgaard <[email protected]>
Date: Fri, 2 May 2014 13:14:46 +0200
ttesting pressure gradient force
Diffstat:
M src/device.cu | 1 +
M src/navierstokes.cuh | 23 ++++++++++++++++++-----
M tests/stokes_law.py | 2 +-
3 files changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/src/device.cu b/src/device.cu
t@@ -884,6 +884,7 @@ __host__ void DEM::startTime()
applyParticleInteractionForce<<<dimGridFluid, dimBlockFluid>>>(
dev_ns_fi,
dev_ns_phi,
+ dev_ns_p,
dev_gridParticleIndex,
dev_cellStart,
dev_cellEnd,
diff --git a/src/navierstokes.cuh b/src/navierstokes.cuh
t@@ -2632,6 +2632,7 @@ __global__ void findInteractionForce(
__global__ void applyParticleInteractionForce(
Float3* dev_ns_fi, // in
Float* dev_ns_phi, // in
+ Float* dev_ns_p, // in
unsigned int* dev_gridParticleIndex, // in
unsigned int* dev_cellStart, // in
unsigned int* dev_cellEnd, // in
t@@ -2643,13 +2644,24 @@ __global__ void applyParticleInteractionForce(
const unsigned int y = blockDim.y * blockIdx.y + threadIdx.y;
const unsigned int z = blockDim.z * blockIdx.z + threadIdx.z;
+ // Grid dimensions
+ const unsigned int nx = devC_grid.num[0];
+ const unsigned int ny = devC_grid.num[1];
+ const unsigned int nz = devC_grid.num[2];
+
+ // Cell sizes
+ const Float dx = devC_grid.L[0]/nx;
+ const Float dy = devC_grid.L[1]/ny;
+ const Float dz = devC_grid.L[2]/nz;
+
// Check that we are not outside the fluid grid
- if (x < devC_grid.num[0] && y < devC_grid.num[1] && z < devC_grid.num[2]) {
+ if (x < nx && y < ny && z < nz) {
const unsigned int cellidx = idx(x,y,z);
__syncthreads();
const Float3 fi = dev_ns_fi[cellidx];
+ const Float3 grad_p = gradient(dev_ns_p, x, y, z, dx, dy, dz);
// apply to all particle in the cell
// Calculate linear cell ID
t@@ -2675,10 +2687,11 @@ __global__ void applyParticleInteractionForce(
r = dev_x_sorted[i].w; // radius
//phi = dev_ns_phi[idx(x,y,z)];
- // this term could include the pressure gradient
- //fd = (-grad_p + fi/(1.0 - phi))*(4.0/3.0*M_PI*r*r*r);
- //fd = (fi/(1.0 - phi))*(4.0/3.0*M_PI*r*r*r);
- fd = fi*(4.0/3.0*M_PI*r*r*r);
+ // stokes drag force
+ //fd = fi*(4.0/3.0*M_PI*r*r*r);
+
+ // pressure gradient force + stokes drag force
+ fd = (-1.0*grad_p + fi)*(4.0/3.0*M_PI*r*r*r);
__syncthreads();
dev_force[origidx] += MAKE_FLOAT4(fd.x, fd.y, fd.z, 0.0);
diff --git a/tests/stokes_law.py b/tests/stokes_law.py
t@@ -31,7 +31,7 @@ orig.vel[0,2] = -0.1
#orig.vel[0,2] = -0.001
#orig.setBeta(0.5)
orig.setTolerance(1.0e-4)
-#orig.setDEMstepsPerCFDstep(100)
+orig.setDEMstepsPerCFDstep(100)
orig.run(dry=True)
orig.run(verbose=True)
py = sphere.sim(sid = orig.sid, fluid = True)
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.