tadd fix for elevated porosities at frictionless side boundaries - 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 2d6d6b6937b1b3894180194600a3ffdaa24f0e37
 (DIR) parent b0e5f3b5ebb17b6639a2464a9deea444dee67e50
 (HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
       Date:   Wed, 15 Jun 2016 16:05:44 -0700
       
       add fix for elevated porosities at frictionless side boundaries
       
       Diffstat:
         M src/contactsearch.cuh               |      10 ++++++----
         M src/darcy.cuh                       |      10 ++++++----
       
       2 files changed, 12 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/src/contactsearch.cuh b/src/contactsearch.cuh
       t@@ -41,8 +41,9 @@ __device__ int findDistMod(int3* targetCell, Float3* distmod)
                }
        
        
       -        // Only x-boundaries are periodic
       -    } else if (devC_grid.periodic == 2) {
       +    }
       +    // Only x-boundaries are periodic
       +    if (devC_grid.periodic == 2) {
        
                // Periodic x-boundary
                if (targetCell->x < 0) {
       t@@ -61,8 +62,9 @@ __device__ int findDistMod(int3* targetCell, Float3* distmod)
                    return -1;
        
        
       -        // No periodic boundaries
       -    } else {
       +    }
       +    // No periodic boundaries
       +    if (devC_grid.periodic > 2 || devC_grid.periodic < 1) {
        
                // Don't modify targetCell or distmod.
        
 (DIR) diff --git a/src/darcy.cuh b/src/darcy.cuh
       t@@ -464,12 +464,14 @@ __global__ void findDarcyPorositiesLinear(
                                    targetCell.z = 1;
        
                                // Mirror particle grid at frictionless boundaries
       -                        /*if (devC_grid.periodic == 2) {
       -                            if (targetCell.y == -1)
       +                        if (devC_grid.periodic == 2) {
       +                            if (targetCell.y == -1) {
                                        targetCell.y = 1;
       -                            else if (targetCell.y == devC_grid.num[1])
       +                            }
       +                            if (targetCell.y == devC_grid.num[1]) {
                                        targetCell.y = devC_grid.num[1] - 2;
       -                        }*/
       +                            }
       +                        }
        
                                // Get distance modifier for interparticle
                                // vector, if it crosses a periodic boundary