tfix grid height adaptation - 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 4b0e619db3245ce652c088d4c56f65adc8306ed7
 (DIR) parent 0a89b207e04b5030b5ee6fb42c2756a509d603d3
 (HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
       Date:   Thu,  8 Sep 2016 13:47:20 -0700
       
       fix grid height adaptation
       
       Diffstat:
         M src/device.cu                       |      36 ++++++++++++++++++++++++++------
       
       1 file changed, 30 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/src/device.cu b/src/device.cu
       t@@ -348,23 +348,47 @@ __host__ void DEM::transferToConstantDeviceMemory()
            checkConstantMemory();
        }
        
       +__global__ void printWorldSize(Float4* dev_walls_nx)
       +{
       +    printf("\nL = %f, %f, %f\n",
       +            devC_grid.L[0], devC_grid.L[1], devC_grid.L[2]);
       +    printf("\ndev_walls_nx[0] = %f, %f, %f, %f\n",
       +            dev_walls_nx[0].x,
       +            dev_walls_nx[0].y,
       +            dev_walls_nx[0].z,
       +            dev_walls_nx[0].w);
       +}
       +
        __host__ void DEM::updateGridSize()
        {
       -    Float Lz;
       +    //printf("\nDEM::updateGridSize() start\n");
       +    Float* Lz = new Float;
        
            // Get top wall position from dev_walls_nx[0].z
       -    cudaMemcpy(&Lz, &dev_walls_nx[0].z, sizeof(Float), cudaMemcpyDeviceToHost);
       +    cudaMemcpy(Lz, &dev_walls_nx[0].w, sizeof(Float), cudaMemcpyDeviceToHost);
       +    checkForCudaErrors("DEM::updateGridSize(): copying wall position");
       +
       +    //printWorldSize<<<1,1>>>(dev_walls_nx);
       +    //cudaThreadSynchronize();
       +    //checkForCudaErrors("DEM::updateGridSize(): first printWorldSize");
       +
       +    //printf("\nLz = %f\n", *Lz);
        
            // Write value to grid.L[2]
       -    grid.L[2] = Lz;
       +    grid.L[2] = *Lz;
        
            // Write value to devC_grid.L[2]
       -    cudaMemcpyToSymbol(devC_grid.L[2], &Lz, sizeof(Float)); 
       +    //cudaMemcpyToSymbol(devC_grid.L[2], &Lz, sizeof(Float)); 
       +    cudaMemcpyToSymbol(devC_grid, &grid, sizeof(Grid));
       +
       +    checkForCudaErrors("DEM::updateGridSize(): write to devC_grid.L[2]");
        
       -    checkForCudaErrors("After updating grid size");
       +    //printWorldSize<<<1,1>>>(dev_walls_nx);
       +    //cudaThreadSynchronize();
       +    //checkForCudaErrors("DEM::updateGridSize(): second printWorldSize");
        
            // check value only during debugging
       -    checkConstantMemory();
       +    //checkConstantMemory();
        }