tStarted darcy flow implementation - 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 ca8bad69c8b6200751129a40c8526c87405688b5
 (DIR) parent 1cb4f6b13a8d8d7a4f23be5b744f818804de98b0
 (HTM) Author: Anders Damsgaard <adc@geo.au.dk>
       Date:   Tue, 28 May 2013 10:07:34 +0200
       
       Started darcy flow implementation
       
       Diffstat:
         M src/CMakeLists.txt                  |       1 +
         M src/darcy.cpp                       |       8 ++++----
         M src/sphere.cpp                      |      26 ++++++++++++++++++++++++++
         M src/sphere.h                        |       4 ++++
       
       4 files changed, 35 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
       t@@ -18,6 +18,7 @@ SET(CUDA_NVCC_FLAGS "--use_fast_math;-O3;-gencode=arch=compute_20,code=\"sm_20,c
        CUDA_ADD_EXECUTABLE(../sphere main.cpp file_io.cpp sphere.cpp device.cu utility.cu)
        CUDA_ADD_EXECUTABLE(../porosity porosity.cpp file_io.cpp sphere.cpp device.cu utility.cu)
        CUDA_ADD_EXECUTABLE(../forcechains forcechains.cpp file_io.cpp sphere.cpp device.cu utility.cu)
       +CUDA_ADD_EXECUTABLE(../darcy darcy.cpp file_io.cpp sphere.cpp device.cu utility.cu)
        
        #ADD_EXECUTABLE(unittests boost-unit-tests.cpp sphere.cpp)
        #TARGET_LINK_LIBRARIES(unittests
 (DIR) diff --git a/src/darcy.cpp b/src/darcy.cpp
       t@@ -29,6 +29,7 @@ int main(const int argc, const char *argv[])
            // Default values
            int verbose = 1;
            int dry = 0;
       +    int nfiles = 0;
        
        
            // Process input parameters
       t@@ -49,11 +50,11 @@ int main(const int argc, const char *argv[])
        
                else if (argvi == "-n" || argvi == "--dry")
                    dry = 1;
       -        }
       -
        
                // The rest of the values must be input binary files
                else {
       +            nfiles++;
       +
                    if (verbose == 1)
                        std::cout << argv[0] << ": processing input file: " << argvi <<
                            std::endl;
       t@@ -64,8 +65,7 @@ int main(const int argc, const char *argv[])
                    DEM dem(argvi, verbose, 0, dry, 0, 0);
        
                    // Otherwise, start iterating through time
       -            else
       -                dem.startDarcy();
       +            dem.startDarcy();
        
        
                }
 (DIR) diff --git a/src/sphere.cpp b/src/sphere.cpp
       t@@ -732,4 +732,30 @@ void DEM::forcechains(const std::string format, const int threedim,
        
        }
        
       +// Find hydraulic conductivities for each cell
       +
       +// Solve Darcy flow through particles
       +void DEM::startDarcy(
       +        const Float cellsizemultiplier)
       +{
       +    // Number of cells
       +    int nx = grid.L[0]/grid.num[0];
       +    int ny = grid.L[1]/grid.num[1];
       +    int nz = grid.L[2]/grid.num[2];
       +
       +    // Cell size 
       +    Float dx = grid.L[0]/nx;
       +    Float dy = grid.L[1]/nx;
       +    Float dz = grid.L[2]/nx;
       +
       +    if (verbose == 1) {
       +        std::cout << "Fluid grid dimensions: "
       +            << nx << " * "
       +            << ny << " * "
       +            << nz << std::endl;
       +    }
       +
       +
       +}
       +
        // vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
 (DIR) diff --git a/src/sphere.h b/src/sphere.h
       t@@ -136,6 +136,7 @@ class DEM {
        
                // Lattice-Boltzmann data arrays (D3Q19)
                Float  *f;          // Fluid distribution (f0..f18)
       +        Float  *f_new;      // t+deltaT fluid distribution (f0..f18)
                Float  *dev_f;      // Device equivalent
                Float  *dev_f_new;  // Device equivalent
                Float4 *v_rho;      // Fluid velocity v (xyz), and pressure rho (w) 
       t@@ -206,6 +207,9 @@ class DEM {
                        const double lower_cutoff = 0.0,
                        const double upper_cutoff = 1.0e9);
        
       +        // Calculate Darcy fluid flow through material
       +        void startDarcy(
       +                const Float cellsizemultiplier = 1.0);
        };