tmodulate fluid pressure at top wall - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
(HTM) git clone git://src.adamsgaard.dk/sphere
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 5fbc9d4c2cdfed9c7c9a308b784075808714f25f
(DIR) parent 51a9c589ead9a483532e430e76eae58cd49300e8
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Wed, 14 Jan 2015 15:06:58 +0100
modulate fluid pressure at top wall
Diffstat:
M src/darcy.cuh | 8 +++++---
M src/device.cu | 3 ++-
2 files changed, 7 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/src/darcy.cuh b/src/darcy.cuh
t@@ -654,17 +654,19 @@ __global__ void findDarcyPressureForce(
// Set the pressure at the top boundary to new_pressure
__global__ void setDarcyTopPressure(
- const Float new_pressure, Float* __restrict__ dev_darcy_p)
+ const Float new_pressure,
+ Float* __restrict__ dev_darcy_p,
+ const unsigned int wall0_iz)
{
// 3D thread index
const unsigned int x = blockDim.x * blockIdx.x + threadIdx.x;
const unsigned int y = blockDim.y * blockIdx.y + threadIdx.y;
const unsigned int z = blockDim.z * blockIdx.z + threadIdx.z;
- // check that the thread is located at the top boundary
+ // check that the thread is located at the top boundary or at the top wall
if (x < devC_grid.num[0] &&
y < devC_grid.num[1] &&
- z == devC_grid.num[2]-1) {
+ z == devC_grid.num[2]-1 || z == wall0_iz) {
const unsigned int cellidx = idx(x,y,z);
(DIR) diff --git a/src/device.cu b/src/device.cu
t@@ -1878,7 +1878,8 @@ __host__ void DEM::startTime()
startTimer(&kernel_tic);
setDarcyTopPressure<<<dimGridFluid, dimBlockFluid>>>(
new_pressure,
- dev_darcy_p);
+ dev_darcy_p,
+ wall0_iz);
if (PROFILING == 1)
stopTimer(&kernel_tic, &kernel_toc, &kernel_elapsed,
&t_setDarcyTopPressure);