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);