tgeneral updates - 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 31a7e78397358a6c7b91b5f037d61a71b928bc90
 (DIR) parent 3483d6d9a230229c803b778263b77fc5ac4fa5bf
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Fri, 16 Aug 2013 11:22:47 +0200
       
       general updates
       
       Diffstat:
         M README.rst                          |       2 +-
         M doc/html/_sources/dem.txt           |      12 +++++++++++-
         M doc/html/_sources/index.txt         |      17 ++++++++++++-----
         M doc/html/_sources/introduction.txt  |      60 +++++++++++++++++++++++---------
         M doc/html/_sources/sphere_internals… |       2 +-
         M doc/html/dem.html                   |      12 +++++++++++-
         M doc/html/genindex.html              |      65 +++++++++++++++++++++++++++++--
         M doc/html/index.html                 |      13 ++++++++++---
         M doc/html/introduction.html          |      61 ++++++++++++++++++++++---------
         M doc/html/objects.inv                |       0 
         M doc/html/python_api.html            |     106 +++++++++++++++++++++++++++++--
         M doc/html/searchindex.js             |       4 ++--
         M doc/html/sphere_internals.html      |      27 ++++++++++++++++++++++-----
         M doc/pdf/sphere.pdf                  |       0 
         M doc/sphinx/dem.rst                  |      12 +++++++++++-
         M doc/sphinx/index.rst                |      17 ++++++++++++-----
         M doc/sphinx/introduction.rst         |      60 +++++++++++++++++++++++---------
         M doc/sphinx/sphere_internals.rst     |       2 +-
         M python/darcy.py                     |       2 +-
         M tests/io_tests.py                   |      18 ++++++++----------
       
       20 files changed, 394 insertions(+), 98 deletions(-)
       ---
 (DIR) diff --git a/README.rst b/README.rst
       t@@ -24,7 +24,7 @@ The build requirements are:
        
        The runtime requirements are:
          * A `CUDA-enabled GPU <http://www.nvidia.com/object/cuda_gpus.html>`_ 
       -    with compute capability 1.1 or greater.
       +    with compute capability 2.0 or greater.
          * A Nvidia CUDA-enabled GPU and device driver
        
        Optional tools, required for simulation setup and data processing:
 (DIR) diff --git a/doc/html/_sources/dem.txt b/doc/html/_sources/dem.txt
       t@@ -1,6 +1,16 @@
        Discrete element method
        =======================
       -The discrete element method (or distinct element method) was initially formulated by \citet{Cundall:1979}. It simulates the physical behavior and interaction of discrete, unbreakable particles, with their own mass and inertia, under the influence of e.g. gravity and boundary conditions such as moving walls. By discretizing time into small time steps ($\Delta t \approx 10^{-8} \si{\second}$), explicit integration of Newton's second law of motion is used to predict the new position and kinematic values for each particle from the previous sums of forces. This Lagrangian approach is ideal for simulating discontinuous materials, such as granularities. The complexity of the computations is kept low by representing the particles as spheres, which keeps contact-searching algorithms simple.
       +The discrete element method (or distinct element method) was initially
       +formulated by Cundall and Strack (1979). It simulates the physical behavior and
       +interaction of discrete, unbreakable particles, with their own mass and inertia,
       +under the influence of e.g. gravity and boundary conditions such as moving
       +walls. By discretizing time into small time steps, explicit integration of
       +Newton's second law of motion is used to predict the new position and kinematic
       +values for each particle from the previous sums of forces. This Lagrangian
       +approach is ideal for simulating discontinuous materials, such as granular
       +matter.
       +The complexity of the computations is kept low by representing the particles as
       +spheres, which keeps contact-searching algorithms simple.
        
        
        
 (DIR) diff --git a/doc/html/_sources/index.txt b/doc/html/_sources/index.txt
       t@@ -5,11 +5,18 @@
        
        Welcome to sphere's documentation!
        ==================================
       -This is the official documentation for the *sphere* discrete element modelling software. It presents the theory behind the discrete element method (DEM), the structure of the software source code, and the Python API for handling simulation setup and data analysis.
       -
       -*sphere* is developed by Anders Damsgaard Christensen under supervision of David Lunbek Egholm and Jan A. Piotrowski, all of the department of Geology, Aarhus University, Denmark. This document is a work in progress, and is still in an early state. 
       -
       -Contact: Anders Damsgaard Christensen, `<http://cs.au.dk/~adc>`_, `<adc@geo.au.dk>`_
       +This is the official documentation for the *sphere* discrete element modelling
       +software. It presents the theory behind the discrete element method (DEM), the
       +structure of the software source code, and the Python API for handling
       +simulation setup and data analysis.
       +
       +*sphere* is developed by Anders Damsgaard Christensen under supervision of David
       +Lunbek Egholm and Jan A. Piotrowski, all of the department of Geoscience, Aarhus
       +University, Denmark. This document is a work in progress, and is still in an
       +early state. 
       +
       +Contact: Anders Damsgaard Christensen, `<http://cs.au.dk/~adc>`_,
       +`<anders.damsgaard@geo.au.dk>`_
        
        
        Contents:
 (DIR) diff --git a/doc/html/_sources/introduction.txt b/doc/html/_sources/introduction.txt
       t@@ -1,25 +1,39 @@
        Introduction
        ============
       -The *sphere*-software is used for three-dimensional discrete element method (DEM) particle simulations. The source code is written in C++, CUDA C and Python, and is compiled by the user. The main computations are performed on the graphics processing unit (GPU) using NVIDIA's general purpose parallel computing architecture, CUDA. Simulation setup and data analysis is performed with the included Python API.
       -The ultimate aim of the *sphere* software is to simulate soft-bedded subglacial conditions, while retaining the flexibility to perform simulations of granular material in other environments.
       -
       -The purpose of this documentation is to provide the user with a thorough walk-through of the installation, work-flow, data-analysis and visualization methods of *sphere*. In addition, the *sphere* internals are exposed to provide a way of understanding of the discrete element method numerical routines taking place.
       +The *sphere*-software is used for three-dimensional discrete element method 
       +(DEM) particle simulations. The source code is written in C++, CUDA C and
       +Python, and is compiled by the user. The main computations are performed on the
       +graphics processing unit (GPU) using NVIDIA's general purpose parallel computing
       +architecture, CUDA. Simulation setup and data analysis is performed with the
       +included Python API.
       +
       +The ultimate aim of the *sphere* software is to simulate soft-bedded subglacial
       +conditions, while retaining the flexibility to perform simulations of granular
       +material in other environments.
       +
       +The purpose of this documentation is to provide the user with a walk-through of
       +the installation, work-flow, data-analysis and visualization methods of
       +*sphere*. In addition, the *sphere* internals are exposed to provide a way of
       +understanding of the discrete element method numerical routines taking place.
        
        .. note:: Command examples in this document starting with the symbol ``$`` are meant to be executed in the shell of the operational system, and ``>>>`` means execution in Python. 
        
       -All numerical values in this document, the source code, and the configuration files are typeset with strict respect to the SI unit system.
       +All numerical values in this document, the source code, and the configuration
       +files are typeset with strict respect to the SI unit system.
        
        Requirements
        ------------
        The build requirements are:
       -  * A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolkit release notes <http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html>`_ for more information)
       +  * A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolkit
       +    release notes <http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html>`_ for more information)
          * `GNU Make <https://www.gnu.org/software/make/>`_
          * `CMake <http://www.cmake.org>`_
          * The `GNU Compiler Collection <http://gcc.gnu.org/>`_ (GCC)
          * The `Nvidia CUDA toolkit and SDK <https://developer.nvidia.com/cuda-downloads>`_
        
        The runtime requirements are:
       -  * A `CUDA-enabled GPU <http://www.nvidia.com/object/cuda_gpus.html>`_ with compute capability 1.1 or greater.
       +  * A `CUDA-enabled GPU <http://www.nvidia.com/object/cuda_gpus.html>`_ with
       +    compute capability 1.1 or greater.
          * A Nvidia CUDA-enabled GPU and device driver
        
        Optional tools, required for simulation setup and data processing:
       t@@ -38,16 +52,23 @@ Optional tools, required for building the documentation:
          * `Breathe <http://michaeljones.github.com/breathe/>`_
          * `dvipng <http://www.nongnu.org/dvipng/>`_
        
       -`Git <http://git-scm.com>`_ is used as the distributed version control system platform, and the source code is maintained at `Github <https://github.com/anders-dc/sphere/>`_. *sphere* is licensed under the `GNU Public License, v.3 <https://www.gnu.org/licenses/gpl.html>`_.
       +`Git <http://git-scm.com>`_ is used as the distributed version control system
       +platform, and the source code is maintained at `Github
       +<https://github.com/anders-dc/sphere/>`_. *sphere* is licensed under the `GNU
       +Public License, v.3 <https://www.gnu.org/licenses/gpl.html>`_.
        
        
        Building *sphere*
        -----------------
       -All instructions required for building *sphere* are provided in a number of ``Makefiles``. To generate the main *sphere* command-line executable, go to the root directory, and invoke CMake and GNU Make::
       +All instructions required for building *sphere* are provided in a number of
       +``Makefile``'s. To generate the main *sphere* command-line executable, go to the
       +root directory, and invoke CMake and GNU Make::
        
         $ cmake . && make
        
       -If successfull, the Makefiles will create the required data folders, object files, as well as the *sphere* executable in the root folder. Issue the following commands to check the executable::
       +If successfull, the Makefiles will create the required data folders, object
       +files, as well as the *sphere* executable in the root folder. Issue the
       +following commands to check the executable::
        
         $ ./sphere --version
        
       t@@ -59,7 +80,10 @@ The build can be verified by running a number of automated tests::
        
         $ make test
        
       -The documentation can be read in the `reStructuredText <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html>`_-format in the ``doc/sphinx/`` folder, or build into e.g. HTML or PDF format with the following commands::
       +The documentation can be read in the `reStructuredText
       +<http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html>`_-format in
       +the ``doc/sphinx/`` folder, or build into e.g. HTML or PDF format with the
       +following commands::
        
         $ cd doc/sphinx
         $ make html
       t@@ -72,9 +96,13 @@ To see all available output formats, execute::
        
        Work flow
        ---------
       -After compiling the *sphere* binary, the procedure of a creating and handling a simulation is typically arranged in the following order:
       -  * Setup of particle assemblage, physical properties and conditions using the Python API.
       -  * Execution of *sphere* software, which simulates the particle behavior as a function of time, as a result of the conditions initially specified in the input file.
       -  * Inspection, analysis, interpretation and visualization of *sphere* output in Python, and/or scene rendering using the built-in ray tracer.
       -
       +After compiling the *sphere* binary, the procedure of a creating and handling a
       +simulation is typically arranged in the following order:
       +  * Setup of particle assemblage, physical properties and conditions using the
       +    Python API.
       +  * Execution of *sphere* software, which simulates the particle behavior as a
       +    function of time, as a result of the conditions initially specified in the
       +    input file.
       +  * Inspection, analysis, interpretation and visualization of *sphere* output in
       +    Python, and/or scene rendering using the built-in ray tracer.
        
 (DIR) diff --git a/doc/html/_sources/sphere_internals.txt b/doc/html/_sources/sphere_internals.txt
       t@@ -3,7 +3,7 @@ sphere internals
        
        The *sphere* executable has the following options:
        
       -.. command-output:: ../../sphere_linux_X86_64 --help
       +.. command-output:: ../../sphere --help
        
        The most common way to invoke *sphere* is however via the Python API (e.g. :py:func:`sphere.run`, :py:func:`sphere.render`, etc.).
        
 (DIR) diff --git a/doc/html/dem.html b/doc/html/dem.html
       t@@ -57,7 +57,17 @@
                    
          <div class="section" id="discrete-element-method">
        <h1>Discrete element method<a class="headerlink" href="#discrete-element-method" title="Permalink to this headline">¶</a></h1>
       -<p>The discrete element method (or distinct element method) was initially formulated by citet{Cundall:1979}. It simulates the physical behavior and interaction of discrete, unbreakable particles, with their own mass and inertia, under the influence of e.g. gravity and boundary conditions such as moving walls. By discretizing time into small time steps ($Delta t approx 10^{-8} si{second}$), explicit integration of Newton&#8217;s second law of motion is used to predict the new position and kinematic values for each particle from the previous sums of forces. This Lagrangian approach is ideal for simulating discontinuous materials, such as granularities. The complexity of the computations is kept low by representing the particles as spheres, which keeps contact-searching algorithms simple.</p>
       +<p>The discrete element method (or distinct element method) was initially
       +formulated by Cundall and Strack (1979). It simulates the physical behavior and
       +interaction of discrete, unbreakable particles, with their own mass and inertia,
       +under the influence of e.g. gravity and boundary conditions such as moving
       +walls. By discretizing time into small time steps, explicit integration of
       +Newton&#8217;s second law of motion is used to predict the new position and kinematic
       +values for each particle from the previous sums of forces. This Lagrangian
       +approach is ideal for simulating discontinuous materials, such as granular
       +matter.
       +The complexity of the computations is kept low by representing the particles as
       +spheres, which keeps contact-searching algorithms simple.</p>
        </div>
        
        
 (DIR) diff --git a/doc/html/genindex.html b/doc/html/genindex.html
       t@@ -58,6 +58,7 @@
         | <a href="#C"><strong>C</strong></a>
         | <a href="#D"><strong>D</strong></a>
         | <a href="#E"><strong>E</strong></a>
       + | <a href="#F"><strong>F</strong></a>
         | <a href="#G"><strong>G</strong></a>
         | <a href="#I"><strong>I</strong></a>
         | <a href="#P"><strong>P</strong></a>
       t@@ -87,6 +88,10 @@
          <dt><a href="python_api.html#sphere.Spherebin.bond">bond() (sphere.Spherebin method)</a>
          </dt>
        
       +      
       +  <dt><a href="python_api.html#sphere.Spherebin.bondsRose">bondsRose() (sphere.Spherebin method)</a>
       +  </dt>
       +
          </dl></td>
          <td style="width: 33%" valign="top"><dl>
              
       t@@ -107,10 +112,18 @@
          <dt><a href="python_api.html#sphere.Spherebin.consolidate">consolidate() (sphere.Spherebin method)</a>
          </dt>
        
       +      
       +  <dt><a href="python_api.html#sphere.convert">convert() (in module sphere)</a>
       +  </dt>
       +
          </dl></td>
          <td style="width: 33%" valign="top"><dl>
              
       -  <dt><a href="python_api.html#sphere.convert">convert() (in module sphere)</a>
       +  <dt><a href="python_api.html#sphere.Spherebin.createBondPair">createBondPair() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +      
       +  <dt><a href="python_api.html#sphere.Spherebin.currentDevs">currentDevs() (sphere.Spherebin method)</a>
          </dt>
        
          </dl></td>
       t@@ -136,10 +149,32 @@
          </dl></td>
        </tr></table>
        
       +<h2 id="F">F</h2>
       +<table style="width: 100%" class="indextable genindextable"><tr>
       +  <td style="width: 33%" valign="top"><dl>
       +      
       +  <dt><a href="python_api.html#sphere.Spherebin.forcechains">forcechains() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +  </dl></td>
       +  <td style="width: 33%" valign="top"><dl>
       +      
       +  <dt><a href="python_api.html#sphere.Spherebin.forcechainsRose">forcechainsRose() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +  </dl></td>
       +</tr></table>
       +
        <h2 id="G">G</h2>
        <table style="width: 100%" class="indextable genindextable"><tr>
          <td style="width: 33%" valign="top"><dl>
              
       +  <dt><a href="python_api.html#sphere.Spherebin.generateBimodalRadii">generateBimodalRadii() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +  </dl></td>
       +  <td style="width: 33%" valign="top"><dl>
       +      
          <dt><a href="python_api.html#sphere.Spherebin.generateRadii">generateRadii() (sphere.Spherebin method)</a>
          </dt>
        
       t@@ -182,6 +217,12 @@
        <table style="width: 100%" class="indextable genindextable"><tr>
          <td style="width: 33%" valign="top"><dl>
              
       +  <dt><a href="python_api.html#sphere.Spherebin.porosities">porosities() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +  </dl></td>
       +  <td style="width: 33%" valign="top"><dl>
       +      
          <dt><a href="python_api.html#sphere.Spherebin.porosity">porosity() (sphere.Spherebin method)</a>
          </dt>
        
       t@@ -192,9 +233,15 @@
        <table style="width: 100%" class="indextable genindextable"><tr>
          <td style="width: 33%" valign="top"><dl>
              
       +  <dt><a href="python_api.html#sphere.Spherebin.random2bonds">random2bonds() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +      
          <dt><a href="python_api.html#sphere.Spherebin.readbin">readbin() (sphere.Spherebin method)</a>
          </dt>
        
       +  </dl></td>
       +  <td style="width: 33%" valign="top"><dl>
              
          <dt><a href="python_api.html#sphere.render">render() (in module sphere)</a>
          </dt>
       t@@ -205,8 +252,6 @@
          </dt>
        
              </dl></dd>
       -  </dl></td>
       -  <td style="width: 33%" valign="top"><dl>
              
          <dt><a href="python_api.html#sphere.run">run() (in module sphere)</a>
          </dt>
       t@@ -228,6 +273,10 @@
          </dt>
        
              
       +  <dt><a href="python_api.html#sphere.Spherebin.sheardisp">sheardisp() (sphere.Spherebin method)</a>
       +  </dt>
       +
       +      
          <dt><a href="python_api.html#sphere.Spherebin.shearstrain">shearstrain() (sphere.Spherebin method)</a>
          </dt>
        
       t@@ -263,10 +312,18 @@
          <dt><a href="python_api.html#sphere.thinsectionVideo">thinsectionVideo() (in module sphere)</a>
          </dt>
        
       +      
       +  <dt><a href="python_api.html#sphere.Spherebin.torqueScript">torqueScript() (sphere.Spherebin method)</a>
       +  </dt>
       +
          </dl></td>
          <td style="width: 33%" valign="top"><dl>
              
       -  <dt><a href="python_api.html#sphere.Spherebin.torqueScript">torqueScript() (sphere.Spherebin method)</a>
       +  <dt><a href="python_api.html#sphere.torqueScriptParallel3">torqueScriptParallel3() (in module sphere)</a>
       +  </dt>
       +
       +      
       +  <dt><a href="python_api.html#sphere.torqueScriptSerial3">torqueScriptSerial3() (in module sphere)</a>
          </dt>
        
          </dl></td>
 (DIR) diff --git a/doc/html/index.html b/doc/html/index.html
       t@@ -53,9 +53,16 @@
                    
          <div class="section" id="welcome-to-sphere-s-documentation">
        <h1>Welcome to sphere&#8217;s documentation!<a class="headerlink" href="#welcome-to-sphere-s-documentation" title="Permalink to this headline">¶</a></h1>
       -<p>This is the official documentation for the <em>sphere</em> discrete element modelling software. It presents the theory behind the discrete element method (DEM), the structure of the software source code, and the Python API for handling simulation setup and data analysis.</p>
       -<p><em>sphere</em> is developed by Anders Damsgaard Christensen under supervision of David Lunbek Egholm and Jan A. Piotrowski, all of the department of Geology, Aarhus University, Denmark. This document is a work in progress, and is still in an early state.</p>
       -<p>Contact: Anders Damsgaard Christensen, <a class="reference external" href="http://cs.au.dk/~adc">http://cs.au.dk/~adc</a>, <a class="reference external" href="mailto:adc&#37;&#52;&#48;geo&#46;au&#46;dk">mailto:adc<span>&#64;</span>geo<span>&#46;</span>au<span>&#46;</span>dk</a></p>
       +<p>This is the official documentation for the <em>sphere</em> discrete element modelling
       +software. It presents the theory behind the discrete element method (DEM), the
       +structure of the software source code, and the Python API for handling
       +simulation setup and data analysis.</p>
       +<p><em>sphere</em> is developed by Anders Damsgaard Christensen under supervision of David
       +Lunbek Egholm and Jan A. Piotrowski, all of the department of Geoscience, Aarhus
       +University, Denmark. This document is a work in progress, and is still in an
       +early state.</p>
       +<p>Contact: Anders Damsgaard Christensen, <a class="reference external" href="http://cs.au.dk/~adc">http://cs.au.dk/~adc</a>,
       +<a class="reference external" href="mailto:anders&#46;damsgaard&#37;&#52;&#48;geo&#46;au&#46;dk">mailto:anders<span>&#46;</span>damsgaard<span>&#64;</span>geo<span>&#46;</span>au<span>&#46;</span>dk</a></p>
        <p>Contents:</p>
        <div class="toctree-wrapper compound">
        <ul>
 (DIR) diff --git a/doc/html/introduction.html b/doc/html/introduction.html
       t@@ -57,20 +57,32 @@
                    
          <div class="section" id="introduction">
        <h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
       -<p>The <em>sphere</em>-software is used for three-dimensional discrete element method (DEM) particle simulations. The source code is written in C++, CUDA C and Python, and is compiled by the user. The main computations are performed on the graphics processing unit (GPU) using NVIDIA&#8217;s general purpose parallel computing architecture, CUDA. Simulation setup and data analysis is performed with the included Python API.
       -The ultimate aim of the <em>sphere</em> software is to simulate soft-bedded subglacial conditions, while retaining the flexibility to perform simulations of granular material in other environments.</p>
       -<p>The purpose of this documentation is to provide the user with a thorough walk-through of the installation, work-flow, data-analysis and visualization methods of <em>sphere</em>. In addition, the <em>sphere</em> internals are exposed to provide a way of understanding of the discrete element method numerical routines taking place.</p>
       +<p>The <em>sphere</em>-software is used for three-dimensional discrete element method
       +(DEM) particle simulations. The source code is written in C++, CUDA C and
       +Python, and is compiled by the user. The main computations are performed on the
       +graphics processing unit (GPU) using NVIDIA&#8217;s general purpose parallel computing
       +architecture, CUDA. Simulation setup and data analysis is performed with the
       +included Python API.</p>
       +<p>The ultimate aim of the <em>sphere</em> software is to simulate soft-bedded subglacial
       +conditions, while retaining the flexibility to perform simulations of granular
       +material in other environments.</p>
       +<p>The purpose of this documentation is to provide the user with a walk-through of
       +the installation, work-flow, data-analysis and visualization methods of
       +<em>sphere</em>. In addition, the <em>sphere</em> internals are exposed to provide a way of
       +understanding of the discrete element method numerical routines taking place.</p>
        <div class="admonition note">
        <p class="first admonition-title">Note</p>
        <p class="last">Command examples in this document starting with the symbol <tt class="docutils literal"><span class="pre">$</span></tt> are meant to be executed in the shell of the operational system, and <tt class="docutils literal"><span class="pre">&gt;&gt;&gt;</span></tt> means execution in Python.</p>
        </div>
       -<p>All numerical values in this document, the source code, and the configuration files are typeset with strict respect to the SI unit system.</p>
       +<p>All numerical values in this document, the source code, and the configuration
       +files are typeset with strict respect to the SI unit system.</p>
        <div class="section" id="requirements">
        <h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2>
        <dl class="docutils">
        <dt>The build requirements are:</dt>
        <dd><ul class="first last simple">
       -<li>A Nvidia CUDA-supported version of Linux or Mac OS X (see the <a class="reference external" href="http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html">CUDA toolkit release notes</a> for more information)</li>
       +<li>A Nvidia CUDA-supported version of Linux or Mac OS X (see the <a class="reference external" href="http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html">CUDA toolkit
       +release notes</a> for more information)</li>
        <li><a class="reference external" href="https://www.gnu.org/software/make/">GNU Make</a></li>
        <li><a class="reference external" href="http://www.cmake.org">CMake</a></li>
        <li>The <a class="reference external" href="http://gcc.gnu.org/">GNU Compiler Collection</a> (GCC)</li>
       t@@ -79,7 +91,8 @@ The ultimate aim of the <em>sphere</em> software is to simulate soft-bedded subg
        </dd>
        <dt>The runtime requirements are:</dt>
        <dd><ul class="first last simple">
       -<li>A <a class="reference external" href="http://www.nvidia.com/object/cuda_gpus.html">CUDA-enabled GPU</a> with compute capability 1.1 or greater.</li>
       +<li>A <a class="reference external" href="http://www.nvidia.com/object/cuda_gpus.html">CUDA-enabled GPU</a> with
       +compute capability 1.1 or greater.</li>
        <li>A Nvidia CUDA-enabled GPU and device driver</li>
        </ul>
        </dd>
       t@@ -104,14 +117,20 @@ The ultimate aim of the <em>sphere</em> software is to simulate soft-bedded subg
        </ul>
        </dd>
        </dl>
       -<p><a class="reference external" href="http://git-scm.com">Git</a> is used as the distributed version control system platform, and the source code is maintained at <a class="reference external" href="https://github.com/anders-dc/sphere/">Github</a>. <em>sphere</em> is licensed under the <a class="reference external" href="https://www.gnu.org/licenses/gpl.html">GNU Public License, v.3</a>.</p>
       +<p><a class="reference external" href="http://git-scm.com">Git</a> is used as the distributed version control system
       +platform, and the source code is maintained at <a class="reference external" href="https://github.com/anders-dc/sphere/">Github</a>. <em>sphere</em> is licensed under the <a class="reference external" href="https://www.gnu.org/licenses/gpl.html">GNU
       +Public License, v.3</a>.</p>
        </div>
        <div class="section" id="building-sphere">
        <h2>Building <em>sphere</em><a class="headerlink" href="#building-sphere" title="Permalink to this headline">¶</a></h2>
       -<p>All instructions required for building <em>sphere</em> are provided in a number of <tt class="docutils literal"><span class="pre">Makefiles</span></tt>. To generate the main <em>sphere</em> command-line executable, go to the root directory, and invoke CMake and GNU Make:</p>
       +<p>All instructions required for building <em>sphere</em> are provided in a number of
       +<tt class="docutils literal"><span class="pre">Makefile</span></tt>&#8216;s. To generate the main <em>sphere</em> command-line executable, go to the
       +root directory, and invoke CMake and GNU Make:</p>
        <div class="highlight-python"><pre>$ cmake . &amp;&amp; make</pre>
        </div>
       -<p>If successfull, the Makefiles will create the required data folders, object files, as well as the <em>sphere</em> executable in the root folder. Issue the following commands to check the executable:</p>
       +<p>If successfull, the Makefiles will create the required data folders, object
       +files, as well as the <em>sphere</em> executable in the root folder. Issue the
       +following commands to check the executable:</p>
        <div class="highlight-python"><pre>$ ./sphere --version</pre>
        </div>
        <p>The output should look similar to this:</p>
       t@@ -132,7 +151,9 @@ The ultimate aim of the <em>sphere</em> software is to simulate soft-bedded subg
        <p>The build can be verified by running a number of automated tests:</p>
        <div class="highlight-python"><pre>$ make test</pre>
        </div>
       -<p>The documentation can be read in the <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html">reStructuredText</a>-format in the <tt class="docutils literal"><span class="pre">doc/sphinx/</span></tt> folder, or build into e.g. HTML or PDF format with the following commands:</p>
       +<p>The documentation can be read in the <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html">reStructuredText</a>-format in
       +the <tt class="docutils literal"><span class="pre">doc/sphinx/</span></tt> folder, or build into e.g. HTML or PDF format with the
       +following commands:</p>
        <div class="highlight-python"><pre>$ cd doc/sphinx
        $ make html
        $ make latexpdf</pre>
       t@@ -143,15 +164,19 @@ $ make latexpdf</pre>
        </div>
        <div class="section" id="work-flow">
        <h2>Work flow<a class="headerlink" href="#work-flow" title="Permalink to this headline">¶</a></h2>
       -<dl class="docutils">
       -<dt>After compiling the <em>sphere</em> binary, the procedure of a creating and handling a simulation is typically arranged in the following order:</dt>
       -<dd><ul class="first last simple">
       -<li>Setup of particle assemblage, physical properties and conditions using the Python API.</li>
       -<li>Execution of <em>sphere</em> software, which simulates the particle behavior as a function of time, as a result of the conditions initially specified in the input file.</li>
       -<li>Inspection, analysis, interpretation and visualization of <em>sphere</em> output in Python, and/or scene rendering using the built-in ray tracer.</li>
       +<p>After compiling the <em>sphere</em> binary, the procedure of a creating and handling a
       +simulation is typically arranged in the following order:</p>
       +<blockquote>
       +<div><ul class="simple">
       +<li>Setup of particle assemblage, physical properties and conditions using the
       +Python API.</li>
       +<li>Execution of <em>sphere</em> software, which simulates the particle behavior as a
       +function of time, as a result of the conditions initially specified in the
       +input file.</li>
       +<li>Inspection, analysis, interpretation and visualization of <em>sphere</em> output in
       +Python, and/or scene rendering using the built-in ray tracer.</li>
        </ul>
       -</dd>
       -</dl>
       +</div></blockquote>
        </div>
        </div>
        
 (DIR) diff --git a/doc/html/objects.inv b/doc/html/objects.inv
       Binary files differ.
 (DIR) diff --git a/doc/html/python_api.html b/doc/html/python_api.html
       t@@ -76,6 +76,12 @@ setup and data analysis.</p>
        </dd></dl>
        
        <dl class="method">
       +<dt id="sphere.Spherebin.bondsRose">
       +<tt class="descname">bondsRose</tt><big>(</big><em>imgformat='pdf'</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.bondsRose" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Visualize strike- and dip angles of the bond pairs in a rose plot.</p>
       +</dd></dl>
       +
       +<dl class="method">
        <dt id="sphere.Spherebin.bulkPorosity">
        <tt class="descname">bulkPorosity</tt><big>(</big><big>)</big><a class="headerlink" href="#sphere.Spherebin.bulkPorosity" title="Permalink to this definition">¶</a></dt>
        <dd><p>Calculate and return the bulk porosity</p>
       t@@ -84,13 +90,29 @@ setup and data analysis.</p>
        <dl class="method">
        <dt id="sphere.Spherebin.consolidate">
        <tt class="descname">consolidate</tt><big>(</big><em>deviatoric_stress=10000.0</em>, <em>periodic=1</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.consolidate" title="Permalink to this definition">¶</a></dt>
       -<dd><p>Setup consolidation experiment. Specify the upper wall 
       +<dd><p>Setup consolidation experiment. Specify the upper wall
        deviatoric stress in Pascal, default value is 10 kPa.</p>
        </dd></dl>
        
        <dl class="method">
       +<dt id="sphere.Spherebin.createBondPair">
       +<tt class="descname">createBondPair</tt><big>(</big><em>i</em>, <em>j</em>, <em>spacing=-0.1</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.createBondPair" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Bond particles i and j. Particle j is moved adjacent to particle i,
       +and oriented randomly.
       +&#64;param spacing (float) The inter-particle distance prescribed. Positive
       +values result in a inter-particle distance, negative equal an overlap.
       +The value is relative to the sum of the two radii.</p>
       +</dd></dl>
       +
       +<dl class="method">
       +<dt id="sphere.Spherebin.currentDevs">
       +<tt class="descname">currentDevs</tt><big>(</big><big>)</big><a class="headerlink" href="#sphere.Spherebin.currentDevs" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Return current magnitude of the deviatoric normal stress</p>
       +</dd></dl>
       +
       +<dl class="method">
        <dt id="sphere.Spherebin.defaultParams">
       -<tt class="descname">defaultParams</tt><big>(</big><em>mu_s=0.4</em>, <em>mu_d=0.4</em>, <em>mu_r=0.0</em>, <em>rho=2600</em>, <em>k_n=1160000000.0</em>, <em>k_t=1160000000.0</em>, <em>k_r=0</em>, <em>gamma_n=0</em>, <em>gamma_t=0</em>, <em>gamma_r=0</em>, <em>gamma_wn=10000.0</em>, <em>gamma_wt=10000.0</em>, <em>capillaryCohesion=0</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.defaultParams" title="Permalink to this definition">¶</a></dt>
       +<tt class="descname">defaultParams</tt><big>(</big><em>mu_s=0.4</em>, <em>mu_d=0.4</em>, <em>mu_r=0.0</em>, <em>rho=2600</em>, <em>k_n=1160000000.0</em>, <em>k_t=1160000000.0</em>, <em>k_r=0</em>, <em>gamma_n=0</em>, <em>gamma_t=0</em>, <em>gamma_r=0</em>, <em>gamma_wn=10000.0</em>, <em>gamma_wt=10000.0</em>, <em>capillaryCohesion=0</em>, <em>nu=0.0</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.defaultParams" title="Permalink to this definition">¶</a></dt>
        <dd><p>Initialize particle parameters to default values.
        Radii must be set prior to calling this function.</p>
        </dd></dl>
       t@@ -102,6 +124,38 @@ Radii must be set prior to calling this function.</p>
        </dd></dl>
        
        <dl class="method">
       +<dt id="sphere.Spherebin.forcechains">
       +<tt class="descname">forcechains</tt><big>(</big><em>lc=200.0</em>, <em>uc=650.0</em>, <em>outformat='png'</em>, <em>disp='2d'</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.forcechains" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Visualizes the force chains in the system from the magnitude of the
       +normal contact forces, and produces an image of them.
       +&#64;param lc: Lower cutoff of contact forces. Contacts below are not
       +visualized (float)
       +&#64;param uc: Upper cutoff of contact forces. Contacts above are
       +visualized with this value (float)
       +&#64;param outformat: Format of output image. Possible values are
       +&#8216;interactive&#8217;, &#8216;png&#8217;, &#8216;epslatex&#8217;, &#8216;epslatex-color&#8217;
       +&#64;param disp: Display forcechains in &#8216;2d&#8217; or &#8216;3d&#8217;
       +Warning: Will segfault if no contacts are found.</p>
       +</dd></dl>
       +
       +<dl class="method">
       +<dt id="sphere.Spherebin.forcechainsRose">
       +<tt class="descname">forcechainsRose</tt><big>(</big><em>lower_limit=0.25</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.forcechainsRose" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Visualize strike- and dip angles of the strongest force chains in a
       +rose plot.</p>
       +</dd></dl>
       +
       +<dl class="method">
       +<dt id="sphere.Spherebin.generateBimodalRadii">
       +<tt class="descname">generateBimodalRadii</tt><big>(</big><em>r_small=0.005</em>, <em>r_large=0.05</em>, <em>ratio=0.2</em>, <em>verbose=True</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.generateBimodalRadii" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Draw radii from two sizes
       +&#64;param r_small: Radii of small population (float), in ]0;r_large[
       +&#64;param r_large: Radii of large population (float), in ]r_small;inf[
       +&#64;param ratio: Approximate volumetric ratio between the two
       +populations (large/small).</p>
       +</dd></dl>
       +
       +<dl class="method">
        <dt id="sphere.Spherebin.generateRadii">
        <tt class="descname">generateRadii</tt><big>(</big><em>psd='logn'</em>, <em>radius_mean=0.00044</em>, <em>radius_variance=8.8e-09</em>, <em>histogram=True</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.generateRadii" title="Permalink to this definition">¶</a></dt>
        <dd><p>Draw random particle radii from the selected probability distribution.
       t@@ -158,6 +212,12 @@ prior to these.</p>
        </dd></dl>
        
        <dl class="method">
       +<dt id="sphere.Spherebin.porosities">
       +<tt class="descname">porosities</tt><big>(</big><em>outformat='pdf'</em>, <em>zslices=16</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.porosities" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Plot porosities with depth</p>
       +</dd></dl>
       +
       +<dl class="method">
        <dt id="sphere.Spherebin.porosity">
        <tt class="descname">porosity</tt><big>(</big><em>slices=10</em>, <em>verbose=False</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.porosity" title="Permalink to this definition">¶</a></dt>
        <dd><p>Calculate the porosity as a function of depth, by averaging values
       t@@ -166,8 +226,20 @@ Returns porosity values and depth</p>
        </dd></dl>
        
        <dl class="method">
       +<dt id="sphere.Spherebin.random2bonds">
       +<tt class="descname">random2bonds</tt><big>(</big><em>ratio=0.3</em>, <em>spacing=-0.1</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.random2bonds" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Bond an amount of particles in two-particle clusters
       +&#64;param ratio: The amount of particles to bond, values in ]0.0;1.0] (float)
       +&#64;param spacing: The distance relative to the sum of radii between bonded
       +particles, neg. values denote an overlap. Values in ]0.0,inf[ (float).
       +The particles should be initialized beforehand.
       +Note: The actual number of bonds is likely to be somewhat smaller than
       +specified, due to the random selection algorithm.</p>
       +</dd></dl>
       +
       +<dl class="method">
        <dt id="sphere.Spherebin.readbin">
       -<tt class="descname">readbin</tt><big>(</big><em>targetbin</em>, <em>verbose=True</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.readbin" title="Permalink to this definition">¶</a></dt>
       +<tt class="descname">readbin</tt><big>(</big><em>targetbin</em>, <em>verbose=True</em>, <em>bonds=True</em>, <em>devsmod=True</em>, <em>fluid=True</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.readbin" title="Permalink to this definition">¶</a></dt>
        <dd><p>Reads a target SPHERE binary file</p>
        </dd></dl>
        
       t@@ -186,16 +258,22 @@ Returns porosity values and depth</p>
        <dl class="method">
        <dt id="sphere.Spherebin.shear">
        <tt class="descname">shear</tt><big>(</big><em>shear_strain_rate=1</em>, <em>periodic=1</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.shear" title="Permalink to this definition">¶</a></dt>
       -<dd><p>Setup shear experiment. Specify the upper wall 
       +<dd><p>Setup shear experiment. Specify the upper wall
        deviatoric stress in Pascal, default value is 10 kPa.
        The shear strain rate is the shear length divided by the
        initial height per second.</p>
        </dd></dl>
        
        <dl class="method">
       +<dt id="sphere.Spherebin.sheardisp">
       +<tt class="descname">sheardisp</tt><big>(</big><em>outformat='pdf'</em>, <em>zslices=32</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.sheardisp" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Show particle x-displacement vs. the z-pos</p>
       +</dd></dl>
       +
       +<dl class="method">
        <dt id="sphere.Spherebin.shearstrain">
        <tt class="descname">shearstrain</tt><big>(</big><big>)</big><a class="headerlink" href="#sphere.Spherebin.shearstrain" title="Permalink to this definition">¶</a></dt>
       -<dd><p>Calculates and returns the shear strain (gamma) value of the experiment</p>
       +<dd><p>Calculates and returns the current shear strain (gamma) value of the experiment</p>
        </dd></dl>
        
        <dl class="method">
       t@@ -220,14 +298,14 @@ gnuplot&gt; plot &#8216;&lt;sid&gt;-ts-x1x3.txt&#8217; with circles palette fs t
        
        <dl class="method">
        <dt id="sphere.Spherebin.torqueScript">
       -<tt class="descname">torqueScript</tt><big>(</big><em>email='adc&#64;geo.au.dk'</em>, <em>email_alerts='ae'</em>, <em>walltime='8:00:00'</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.torqueScript" title="Permalink to this definition">¶</a></dt>
       +<tt class="descname">torqueScript</tt><big>(</big><em>email='adc&#64;geo.au.dk'</em>, <em>email_alerts='ae'</em>, <em>walltime='24:00:00'</em>, <em>queue='qfermi'</em>, <em>cudapath='/com/cuda/4.0.17/cuda'</em>, <em>spheredir='/home/adc/code/sphere'</em>, <em>workdir='/scratch'</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.torqueScript" title="Permalink to this definition">¶</a></dt>
        <dd><p>Create job script for the Torque queue manager for the binary</p>
        </dd></dl>
        
        <dl class="method">
        <dt id="sphere.Spherebin.uniaxialStrainRate">
        <tt class="descname">uniaxialStrainRate</tt><big>(</big><em>wvel=-0.001</em>, <em>periodic=1</em><big>)</big><a class="headerlink" href="#sphere.Spherebin.uniaxialStrainRate" title="Permalink to this definition">¶</a></dt>
       -<dd><p>Setup consolidation experiment. Specify the upper wall 
       +<dd><p>Setup consolidation experiment. Specify the upper wall
        velocity in m/s, default value is -0.001 m/s (i.e. downwards).</p>
        </dd></dl>
        
       t@@ -296,6 +374,20 @@ This function will start off by rendering the images.</p>
        </dd></dl>
        
        <dl class="function">
       +<dt id="sphere.torqueScriptParallel3">
       +<tt class="descclassname">sphere.</tt><tt class="descname">torqueScriptParallel3</tt><big>(</big><em>obj1</em>, <em>obj2</em>, <em>obj3</em>, <em>email='adc&#64;geo.au.dk'</em>, <em>email_alerts='ae'</em>, <em>walltime='24:00:00'</em>, <em>queue='qfermi'</em>, <em>cudapath='/com/cuda/4.0.17/cuda'</em>, <em>spheredir='/home/adc/code/sphere'</em>, <em>workdir='/scratch'</em><big>)</big><a class="headerlink" href="#sphere.torqueScriptParallel3" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Create job script for the Torque queue manager for three binaries,
       +executed in parallel.
       +Returns the filename of the script</p>
       +</dd></dl>
       +
       +<dl class="function">
       +<dt id="sphere.torqueScriptSerial3">
       +<tt class="descclassname">sphere.</tt><tt class="descname">torqueScriptSerial3</tt><big>(</big><em>obj1</em>, <em>obj2</em>, <em>obj3</em>, <em>email='adc&#64;geo.au.dk'</em>, <em>email_alerts='ae'</em>, <em>walltime='24:00:00'</em>, <em>queue='qfermi'</em>, <em>cudapath='/com/cuda/4.0.17/cuda'</em>, <em>spheredir='/home/adc/code/sphere'</em>, <em>workdir='/scratch'</em><big>)</big><a class="headerlink" href="#sphere.torqueScriptSerial3" title="Permalink to this definition">¶</a></dt>
       +<dd><p>Create job script for the Torque queue manager for three binaries</p>
       +</dd></dl>
       +
       +<dl class="function">
        <dt id="sphere.video">
        <tt class="descclassname">sphere.</tt><tt class="descname">video</tt><big>(</big><em>project</em>, <em>out_folder='./'</em>, <em>video_format='mp4'</em>, <em>graphics_folder='../img_out/'</em>, <em>graphics_format='png'</em>, <em>fps=25</em>, <em>qscale=1</em>, <em>bitrate=1800</em>, <em>verbose=False</em><big>)</big><a class="headerlink" href="#sphere.video" title="Permalink to this definition">¶</a></dt>
        <dd><p>Use ffmpeg to combine images to animation. All images should be rendered beforehand.</p>
 (DIR) diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js
       t@@ -1 +1 @@
       -Search.setIndex({objects:{"":{sphere:[4,0,1,""]},sphere:{status:[4,2,1,""],convert:[4,2,1,""],visualize:[4,2,1,""],run:[4,2,1,""],render:[4,2,1,""],thinsectionVideo:[4,2,1,""],V_sphere:[4,2,1,""],Spherebin:[4,3,1,""],video:[4,2,1,""],cleanup:[4,2,1,""]},"sphere.Spherebin":{consolidate:[4,1,1,""],initGridAndWorldsize:[4,1,1,""],initGrid:[4,1,1,""],render:[4,1,1,""],energy:[4,1,1,""],initRandomPos:[4,1,1,""],zeroKinematics:[4,1,1,""],defaultParams:[4,1,1,""],initRandomGridPos:[4,1,1,""],porosity:[4,1,1,""],writebin:[4,1,1,""],shear:[4,1,1,""],thinsection_x1x3:[4,1,1,""],run:[4,1,1,""],voidRatio:[4,1,1,""],shearstrain:[4,1,1,""],readbin:[4,1,1,""],bulkPorosity:[4,1,1,""],torqueScript:[4,1,1,""],adjustUpperWall:[4,1,1,""],generateRadii:[4,1,1,""],uniaxialStrainRate:[4,1,1,""],initGridPos:[4,1,1,""],shearvel:[4,1,1,""],initTemporal:[4,1,1,""],bond:[4,1,1,""]}},terms:{all:[0,1,4,3],code:[0,1,3],global:3,mp4:4,per:[3,4],cundal:2,follow:[0,3],row:4,content:1,depend:3,graph:3,granular:[0,3,2],program:3,under:[0,1,2],"case":3,datafil:3,sourc:[0,1,3],string:3,fals:4,"void":[3,4],wave:3,verb:3,volum:4,geologi:1,readbin:[3,4],walltim:4,stiff:3,list:3,inittempor:[3,4],random:[3,4],item:3,adjust:4,small:[3,2],targetbin:4,calcparticlecellid:3,upper:4,gamma_wt:4,seper:3,direct:4,gamma_wn:4,second:[3,2,4],pressur:4,video:4,radius_mean:4,blue:4,supervis:1,sum:[2,4],"while":[0,3],current:[3,4],version:0,intersect:4,"new":2,net:3,boost:3,"public":[0,3],thin:4,make:[0,3],full:3,hash:3,consolid:4,gener:0,matplotlib:0,"const":3,sphere_:3,interpret:0,dry:[3,4],search:[3,1,2],initgridandworlds:4,step:[3,2],queue:4,prior:4,cbmax:4,sphere_linux_x86_64:3,typic:0,apx:3,torquescript:4,depart:1,appli:3,output0:3,releas:0,assemblag:0,api:[0,1,4,3],instal:0,total:[3,4],memorytyp:3,select:4,qscale:4,plot:4,from:[3,2,4],memori:3,distinct:2,liber:3,univers:1,predict:2,formul:2,call:[3,4],handl:[0,1,3],scope:3,type:3,start:[0,3,4],reorder:3,more:[0,3],sort:3,torqu:[3,4],sphere_darwin_i386:[],successful:0,relat:3,zerokinemat:4,xynum:4,spherealgo:3,damsgaard:[0,1],visual:[0,4],appendix:3,loopend:3,must:4,none:4,graphic:0,discontinu:2,setup:[0,1,4],work:[0,1],x1x3:4,histori:3,coalesc:3,dem:[0,1,3],capillarycohes:4,transferconstmem:3,purpos:0,root:[0,3],unnam:4,control:[0,3],thinsectionvideo:4,process:[0,3],aarhu:1,chip:3,img_width:3,indic:1,sphere:[0,1,2,3,4],thinsection_x1x3:4,citet:2,keep:2,unsign:3,ratio:4,alwai:3,scalar:3,end:3,programoutput:0,divid:4,rather:3,travel:3,mu_r:4,write:[3,4],how:3,sid:4,verifi:0,mu_d:4,simpl:2,minpo:3,updat:3,neighbor:3,arrowscal:4,max:4,after:[0,3],gcc:[0,3],thrustfootnot:3,befor:3,mac:0,plane:4,law:[3,2],dev_:3,parallel:0,averag:4,stabil:3,alloc:3,github:0,condit:[0,2],counter:3,explicit:2,element:[0,1,2],issu:0,inform:0,maintain:0,environ:0,gamma:4,nvidia:[0,3],order:[0,3],findoverlap:3,approx:2,help:[0,3],offici:1,move:2,veri:4,pascal:4,through:[0,3],flexibl:0,nobord:4,dynam:[0,4],paramet:[3,4],platform:0,html:0,fig:3,main:[0,3],shear:4,non:3,anim:4,"return":[3,4],greater:0,thei:3,python:[0,1,4,3],deviatoric_stress:4,initi:[0,3,2,4],number:[0,3,4],dat:[3,4],ppm:4,now:3,subsubsec:3,introduct:[0,1],workload:3,name:[],kpa:4,exampl:[0,3],sim:3,each:[3,2],found:3,initgridpo:4,tracer:0,mean:[0,4],compil:[0,3],individu:3,continu:3,procedur:0,wrap:3,file_dt:4,subsec:3,logn:4,energi:4,todo:3,event:3,variabl:3,grai:4,influenc:2,lagrangian:2,profil:3,vector:3,suitabl:4,rel:3,inaccess:3,subsubsect:3,ref:3,red:4,integr:[3,2],dvipng:0,christensen:[0,1],state:1,focallength:3,slipscal:4,bulkporos:4,base:3,theori:1,configuraion:3,thrust:3,"___":0,shearstrain:4,maxpo:3,architectur:[0,3],thread:3,launch:3,veloc:4,pageref:3,synchron:3,timer:3,david:1,motion:[3,2],length:[3,4],initrandompo:4,transfer:3,retain:0,interact:[3,2],oper:[0,3],softwar:[0,1,3],rang:4,render:[0,3,4],arrai:[3,4],scene:0,instruct:0,set:[3,4],done:3,open:3,size:4,avail:0,differ:3,varianc:4,script:4,data:[0,1,4,3],licens:0,z_adjust:4,system:[0,3],initrandomgridpo:4,physic:[0,3,2,4],circl:4,gpu:[0,3],locat:3,store:3,low:[2,4],shell:[0,3],option:[0,3],relationship:3,tool:0,stress:4,specifi:[0,4],max_val:4,termin:3,kept:[2,4],png:4,std:3,elast:3,k_r:4,ffmpeg:[0,4],graphics_format:4,deviator:4,bitrat:4,rate:4,bed:0,horizont:4,project:4,posit:[2,4],arrang:0,wvel:4,seri:3,pre:4,"function":[0,3,4],img_out:4,comput:[0,3,2],pass:3,beforehand:4,rai:0,fail:3,writeppm:3,have:3,tabl:1,need:4,slab:4,ldot:3,built:0,zero:[3,4],voidratio:4,thorough:0,note:[0,3],also:3,ideal:2,discret:[0,1,2],take:0,which:[0,3,2],combin:4,graviti:2,singl:3,sort_by_kei:3,even:3,radius_vari:4,unless:3,distribut:[0,4],index:1,previou:[3,2],reach:3,most:3,rho:4,"class":[3,4],adjustupperwal:4,placement:3,video_format:4,url:3,doc:0,flow:[0,1],lower_cutoff:[3,4],typeset:0,place:[0,3],determin:4,axi:4,section:[3,4],radix:3,email_alert:4,mainloop:3,consult:3,radiu:4,radii:4,dimension:[0,3],rotat:3,involv:3,cell:3,slow:3,layout:3,explain:3,configur:[0,3,4],behind:1,should:[0,3,4],jan:1,folder:[0,3,4],writebin:[3,4],meant:0,loopstart:3,contribut:3,palett:4,get:3,kinemat:[2,4],v_sphere:4,autom:[0,3],cannot:3,progress:[1,4],geo:[1,4],requir:[0,1,3],target:[3,4],bar:4,enabl:0,denmark:1,sourcecodevari:3,yield:3,method:[0,1,2,3,4],provid:0,common:3,contain:4,movement:3,where:[3,4],remov:4,kernel:3,transfertoconstantmemori:3,mu_:4,still:1,datatyp:3,see:[0,3],result:[0,3],float4:3,sphinxcontrib:0,particl:[0,3,2,4],float3:3,statu:[3,4],uniaxialstrainr:4,give:3,boundari:[2,4],label:3,written:[0,3],smallest:3,between:4,"import":3,experi:4,approach:2,email:4,imagemagick:[0,4],numer:[0,1,4,3],graphics_fold:4,job:4,subfold:3,inertia:2,addit:0,both:[3,4],doxygen:0,last:4,howev:3,reorderarrai:3,equal:3,tempor:4,etc:3,equat:3,pdf:0,com:3,restructuredtext:0,figur:3,wall:[3,2,4],format:[0,3],period:4,height:4,linux:0,respect:0,cudamemset:3,summat:3,mailto:1,ultim:0,gamma_n:4,numpi:0,three:[0,3],empti:3,sinc:3,compon:[3,4],spherebin:4,valu:[0,3,2,4],interest:4,gamma_t:4,gamma_r:4,ram:3,imag:4,convert:[3,4],bulk:4,understand:0,simulation_id:3,present:1,emploi:3,cudamemcheck:4,look:0,gnu:[0,3],solid:4,properti:0,strict:0,can:[0,3,4],aim:0,defin:[3,4],calcul:[3,4],behavior:[0,2],error:3,margin:4,loos:4,loop:3,subsect:3,earli:1,alon:3,texttt:3,toolkit:0,valgrind:4,strain:4,img_height:3,egholm:1,sever:3,subglaci:0,precis:3,develop:1,welcom:1,perform:[0,3],out_fold:4,belong:4,binari:[0,3,4],complex:2,document:[0,1,3],latexpdf:0,http:[3,1],structur:1,cubic:4,expans:3,driver:0,hand:3,capabl:0,user:0,improv:3,build:[0,1],chang:3,expand:3,off:[3,4],center:4,"0e3f":3,thu:3,well:[0,4],contact:[3,1,2],command:[0,3],thi:[0,1,2,3,4],model:[3,1],velarrowscal:4,distanc:4,identifi:3,execut:[0,3,4],savefig:4,sound:3,marginpar:3,newton:[3,2],via:3,outformat:4,speed:3,contactmodel:4,prefix:3,expos:0,point:3,makefil:[0,3],except:3,theoret:3,color:4,other:0,adc:[1,4],input:[0,3,4],save:4,unus:3,cuh:3,bin:3,applic:3,transpar:4,read:[0,3,4],psd:4,grid:[3,4],background:3,insert:3,guid:3,bit:[],characterist:3,maxval:3,resid:3,specif:3,cdot:3,gamma_dot:4,poros:[3,4],collect:0,shearvel:4,either:3,initgrid:4,output:[0,3,4],downward:4,initcuda:3,soft:0,page:[3,1],encount:3,often:3,integratewal:3,interv:3,compat:3,paragraph:3,begin:3,emph:3,resolv:3,intern:[0,1,3],slice:4,graphicsformat:4,raytrac:[3,4],nvcc:3,txt:4,piotrowski:1,though:3,definit:3,z_slice:3,unbreak:2,unit:0,necessari:3,refer:[3,1],object:0,run:[0,3,4],walk:0,inspect:0,host:3,starttim:3,file_io:3,src:3,about:3,greatli:3,freedom:3,materi:[0,2],gplv3:0,simul:[0,1,2,3,4],degre:3,ander:[0,1],cuda:[0,3],devc_:3,discard:3,bond:4,produc:4,block:3,step_count:4,routin:0,own:2,devic:[0,3],"float":3,automat:3,shear_strain_r:4,dram:3,ensur:3,hideinputfil:4,manag:4,breath:0,forcechain:3,git:0,wai:[0,3],gridnum:4,errno:3,support:0,fast:3,verbos:[3,4],topolog:3,includ:[0,3],contactsearch:3,analysi:[0,1,4],generateradii:4,form:3,forc:[3,2],checkval:3,histogram:4,delta:[3,2],line:0,"true":4,sdk:[0,3],suppli:3,inputbin:3,"default":[3,4],access:3,k_t:4,dens:3,"0xffffffff":3,limit:4,k_n:4,problem:3,similar:0,taylor:3,constant:3,creat:[0,4],"int":3,checkvalu:3,repres:2,"char":3,threedim:3,exist:3,file:[0,3,4],check:[0,3,4],probabl:4,cmake:0,googl:3,gnuplot:4,detail:3,defaultparam:4,cleanup:4,collis:3,spatial:3,test:0,runtim:0,draw:4,reportvalu:3,sequenc:3,symbol:0,lunbek:1,intent:3,previous:4,doubl:3,gpumain:3,sphinx:0,algorithm:[3,1,2],directori:[0,3],descript:3,depth:4,mass:[3,2],invok:[0,3],time:[0,3,2],cpp:3,delta_n_ij:3,cpu:3,mathrm:3},objtypes:{"0":"py:module","1":"py:method","2":"py:function","3":"py:class"},titles:["Introduction","Welcome to sphere&#8217;s documentation!","Discrete element method","sphere internals","Python API"],objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","function","Python function"],"3":["py","class","Python class"]},filenames:["introduction","index","dem","sphere_internals","python_api"]})
       -\ No newline at end of file
       +Search.setIndex({objects:{"":{sphere:[4,0,1,""]},sphere:{status:[4,2,1,""],torqueScriptSerial3:[4,2,1,""],convert:[4,2,1,""],visualize:[4,2,1,""],run:[4,2,1,""],render:[4,2,1,""],thinsectionVideo:[4,2,1,""],torqueScriptParallel3:[4,2,1,""],V_sphere:[4,2,1,""],Spherebin:[4,3,1,""],video:[4,2,1,""],cleanup:[4,2,1,""]},"sphere.Spherebin":{consolidate:[4,1,1,""],forcechains:[4,1,1,""],initGridAndWorldsize:[4,1,1,""],initRandomPos:[4,1,1,""],render:[4,1,1,""],energy:[4,1,1,""],currentDevs:[4,1,1,""],porosities:[4,1,1,""],initGrid:[4,1,1,""],generateBimodalRadii:[4,1,1,""],zeroKinematics:[4,1,1,""],defaultParams:[4,1,1,""],sheardisp:[4,1,1,""],initRandomGridPos:[4,1,1,""],createBondPair:[4,1,1,""],bondsRose:[4,1,1,""],porosity:[4,1,1,""],writebin:[4,1,1,""],shear:[4,1,1,""],thinsection_x1x3:[4,1,1,""],run:[4,1,1,""],voidRatio:[4,1,1,""],shearstrain:[4,1,1,""],readbin:[4,1,1,""],forcechainsRose:[4,1,1,""],bulkPorosity:[4,1,1,""],random2bonds:[4,1,1,""],torqueScript:[4,1,1,""],adjustUpperWall:[4,1,1,""],generateRadii:[4,1,1,""],uniaxialStrainRate:[4,1,1,""],initGridPos:[4,1,1,""],shearvel:[4,1,1,""],initTemporal:[4,1,1,""],bond:[4,1,1,""]}},terms:{disp:4,all:[0,1,4,3],code:[0,1,4,3],chain:4,scratch:4,global:3,mp4:4,z_slice:3,cundal:2,radius_mean:4,row:4,torquescriptserial3:4,depend:3,graph:3,granular:[0,3,2],program:3,under:[0,1,2],exit:3,vel:3,emploi:3,datafil:3,sourc:[0,1,3],string:3,fals:4,"void":[3,4],wave:3,verb:3,volum:4,geologi:[],veri:4,velarrowscal:4,common:3,walltim:4,stiff:3,list:3,inittempor:[3,4],item:3,adjust:4,small:[3,2,4],refer:[3,1],dip:4,targetbin:4,calcparticlecellid:3,upper:4,smaller:4,gamma_wt:4,seper:3,direct:4,gamma_wn:4,second:[3,2,4],pressur:4,video:4,follow:[0,3],append:3,blue:4,supervis:1,neg:4,sum:[2,4],calcul:[3,4],cell:3,version:[0,3],intersect:4,"new":2,net:3,boost:3,"public":[0,3],suppress:3,thin:4,full:3,hash:3,behavior:[0,2],usag:3,gener:0,matplotlib:0,lower_limit:4,"const":3,sphere_:3,interpret:0,dry:[3,4],search:[3,1,2],initgridandworlds:4,contactsearch:3,current:[3,4],host:3,queue:4,prior:4,cbmax:4,sphere_linux_x86_64:[],typic:0,magnitud:4,apx:3,torquescript:4,depart:1,appli:3,output0:3,thrust:3,assemblag:0,api:[0,1,4,3],volumetr:4,instal:0,total:[3,4],memorytyp:3,select:4,qscale:4,plot:4,from:[3,2,4],memori:3,distinct:2,liber:3,univers:1,two:4,predict:2,formul:2,call:[3,4],handl:[0,1,3],strike:4,scope:3,type:3,reorder:3,more:[0,3],sort:3,maxpo:3,texttt:3,sphere_darwin_i386:[],successful:0,relat:3,about:3,xynum:4,spherealgo:3,damsgaard:[0,1],visual:[0,3,4],appendix:3,loopend:3,must:4,none:4,graphic:0,strain:4,writebin:[3,4],setup:[0,1,4],work:[0,1],x1x3:4,histori:3,angl:4,coalesc:3,dem:[0,1,3],capillarycohes:4,transferconstmem:3,purpos:0,root:[0,3],veloc:4,control:[0,3],meant:0,thinsectionvideo:4,process:[0,3],synchron:3,chip:3,img_width:3,indic:1,sphere:[0,1,2,3,4],thinsection_x1x3:4,citet:[],david:1,unsign:3,ratio:4,generatebimodalradii:4,alwai:3,scalar:3,end:3,palett:4,divid:4,rather:3,travel:3,mu_r:4,write:[3,4],how:3,sid:4,verifi:0,mu_d:4,simpl:2,sim:3,updat:3,devc_:3,arrowscal:4,max:4,after:[0,3],gcc:[0,3],thrustfootnot:3,befor:3,mac:0,plane:4,devsmod:4,varianc:4,data:[0,1,4,3],parallel:[0,4],physic:[0,3,2,4],stabil:3,stress:4,github:0,flexibl:0,counter:3,explicit:2,element:[0,1,2],issu:0,inform:[0,3],maintain:0,environ:0,block:3,nvidia:[0,3],order:[0,3],findoverlap:3,approx:[],help:[0,3],routin:0,offici:1,move:[2,4],readbin:[3,4],pascal:4,own:2,through:[0,3],r_larg:4,nobord:4,dynam:[0,3,4],paramet:[3,4],geoscienc:1,platform:0,complex:2,transpar:4,fig:3,main:[0,3],shear:4,imgformat:4,non:3,anim:4,"return":[3,4],greater:0,thei:3,python:[0,1,4,3],deviatoric_stress:4,initi:[0,3,2,4],number:[0,3,4],dat:[3,4],automat:3,instead:3,now:3,subsubsec:3,introduct:[0,1],workload:3,name:[],kpa:4,minpo:3,each:[3,2],found:[3,4],initgridpo:4,tracer:0,mean:[0,4],compil:[0,3],individu:3,continu:3,procedur:0,ensur:3,yield:3,subsec:3,logn:4,energi:4,todo:3,orient:4,variabl:3,space:4,influenc:2,lagrangian:2,content:1,cuda:[0,3,4],vector:3,suitabl:4,rel:[3,4],inaccess:3,print:3,subsubsect:3,ref:3,red:4,forcechainsros:4,dvipng:0,christensen:[0,1],written:[0,3],focallength:3,slipscal:4,bulkporos:4,base:3,theori:1,configuraion:3,releas:0,"___":0,hand:3,torqu:[3,4],val:3,thread:3,launch:3,prescrib:4,unnam:4,pageref:3,aarhu:1,timer:3,keep:2,motion:[3,2],length:[3,4],initrandompo:4,transfer:3,retain:0,licens:0,oper:[0,3],softwar:[0,1,3],rang:4,dont:3,render:[0,3,4],arrai:[3,4],scene:0,evolut:3,instruct:0,transfertoconstantmemori:3,done:3,open:3,size:4,differ:3,law:[3,2],script:4,dev_:3,interact:[3,2,4],z_adjust:4,system:[0,3,4],messag:3,initrandomgridpo:4,averag:4,circl:4,termin:3,locat:3,store:3,includ:[0,3],shell:[0,3],option:[0,3],relationship:3,tool:0,alloc:3,specifi:[0,4],max_val:4,somewhat:4,consult:3,off:[3,4],than:4,png:4,std:3,datatyp:3,target:[3,4],provid:0,deviator:4,bitrat:4,rate:4,bed:0,horizont:4,project:4,matter:2,posit:[2,4],arrang:0,wvel:4,seri:3,pre:[3,4],analysi:[0,1,4],img_out:4,comput:[0,3,2],xdisp:3,pass:3,beforehand:4,rai:0,float4:3,writeppm:3,have:3,tabl:1,need:4,slab:4,ldot:3,built:0,zero:[3,4],voidratio:4,simul:[0,1,2,3,4],thorough:[],contact:[3,1,2,4],note:[0,3,4],also:3,ideal:2,discret:[0,1,2],take:0,which:[0,3,2],upper_cutoff:3,combin:4,graviti:2,singl:3,sort_by_kei:3,even:3,radius_vari:4,unless:3,distribut:[0,4],normal:[3,4],previou:[3,2],reach:3,most:3,rho:4,pair:4,"class":[3,4],adjustupperwal:4,placement:3,strack:2,video_format:4,url:3,doc:0,flow:[0,1],lower_cutoff:[3,4],typeset:0,place:[0,3],determin:4,axi:4,section:[3,4],contribut:3,radix:3,show:[3,4],email_alert:4,mainloop:3,random:[3,4],radiu:4,radii:4,rotat:3,involv:3,consolid:4,slow:3,layout:3,explain:3,configur:[0,3,4],behind:1,should:[0,3,4],jan:1,folder:[0,3,4],discontinu:2,obj1:4,obj3:4,loopstart:3,unus:3,programoutput:0,get:3,kinemat:[2,4],fluid:4,v_sphere:4,autom:[0,3],cannot:3,"import":3,geo:[1,4],requir:[0,1,3],ffmpeg:[0,4],bar:4,enabl:0,denmark:1,displac:4,sourcecodevari:3,file_dt:4,method:[0,1,2,3,4],graphics_format:4,integr:[3,2],contain:4,movement:3,where:[3,4],remov:4,kernel:3,set:[3,4],mu_:4,still:1,k_t:4,elast:3,see:[0,3],result:[0,3,4],fail:[],out_fold:4,sphinxcontrib:0,particl:[0,3,2,4],float3:3,statu:[3,4],uniaxialstrainr:4,give:3,boundari:[2,4],"0xffffffff":3,label:3,state:1,smallest:3,between:4,progress:[1,4],angpo:3,experi:[3,4],approach:2,email:4,imagemagick:[0,4],kei:3,numer:[0,1,4,3],graphics_fold:4,job:4,subfold:3,inertia:2,addit:0,verbos:[3,4],both:[3,4],doxygen:0,last:4,howev:3,reorderarrai:3,equal:[3,4],tempor:[3,4],etc:3,equat:3,pdf:[0,4],com:[3,4],randomli:4,restructuredtext:0,figur:3,wall:[3,2,4],period:4,currentdev:4,height:4,theoret:3,linux:0,respect:0,cudamemset:3,summat:3,mailto:1,quit:3,ultim:0,gamma_n:4,segfault:4,numpi:0,three:[0,3,4],empti:3,sinc:3,compon:[3,4],spherebin:4,valu:[0,3,2,4],interest:4,gamma_t:4,popul:4,gamma_r:4,ram:3,r_small:4,imag:4,convert:[3,4],bulk:4,understand:0,simulation_id:3,present:1,"case":3,cudamemcheck:4,look:0,gnu:[0,3],solid:4,properti:0,can:[0,3,4],aim:0,defin:[3,4],"while":[0,3],abov:4,error:3,cuh:3,margin:4,loos:4,loop:3,subsect:3,bin:3,stdout:3,alon:3,sheardisp:4,toolkit:0,valgrind:4,cluster:4,img_height:3,maxval:3,egholm:1,sever:3,subglaci:0,precis:3,develop:1,welcom:1,perform:[0,3],make:[0,3],belong:4,amount:4,access:3,binari:[0,3,4],html:0,document:[0,1,3],latexpdf:0,angvel:3,obj2:4,workdir:4,http:[3,1],structur:1,cubic:4,expans:3,driver:0,shearstrain:4,capabl:0,user:0,improv:3,chang:3,expand:3,lower:[3,4],kept:[2,4],center:4,"0e3f":3,thu:3,well:[0,4],exampl:[0,3],command:0,thi:[0,1,2,3,4],model:[3,1],dimension:[0,3],distanc:4,identifi:3,execut:[0,3,4],savefig:4,sound:3,marginpar:3,newton:[3,2],via:3,outformat:4,runtim:0,speed:3,contactmodel:4,prefix:3,"0e9":3,expos:0,rose:4,point:3,makefil:[0,3],except:3,param:4,bondsros:4,cleanup:4,adc:[1,4],input:[0,3,4],save:4,approxim:4,build:[0,1],earli:1,applic:3,format:[0,3,4],read:[0,3,4],psd:4,grid:[3,4],background:3,guid:3,bit:[],characterist:3,color:[3,4],insert:3,zslice:4,resid:3,like:4,specif:3,filenam:4,cdot:3,gamma_dot:4,poros:[3,4],collect:0,shearvel:4,either:3,initgrid:4,output:[0,3,4],downward:4,initcuda:3,soft:0,page:[3,1],encount:3,qfermi:4,often:3,integratewal:3,interv:3,compat:3,paragraph:3,begin:3,emph:3,resolv:3,strongest:4,slice:4,home:4,graphicsformat:4,raytrac:[3,4],nvcc:3,txt:4,cudapath:4,piotrowski:1,though:3,definit:3,overlap:4,larg:4,unit:0,condit:[0,2],topolog:3,mode:3,createbondpair:4,object:0,run:[0,3,4],walk:0,inspect:0,torquescriptparallel3:4,step:[3,2],starttim:3,file_io:3,src:3,zerokinemat:4,inter:4,actual:4,greatli:3,freedom:3,materi:[0,2],gplv3:0,manag:4,degre:3,ander:[0,1],unbreak:2,neighbor:3,discard:3,bond:4,produc:4,gamma:4,step_count:4,cutoff:[3,4],file1:3,random2bond:4,devic:[0,3],"float":[3,4],ppm:4,due:4,shear_strain_r:4,dram:3,wrap:3,hideinputfil:4,necessari:3,per:[3,4],breath:0,forcechain:[3,4],git:0,wai:[0,3],grai:4,errno:[],support:0,fast:3,avail:0,start:[0,3,4],adjac:4,quiet:3,low:[2,4],spheredir:4,strict:0,"function":[0,3,4],generateradii:4,form:3,forc:[3,2,4],checkval:3,histogram:4,intern:[0,1,3],delta:3,don:3,line:0,"true":4,sdk:[0,3],suppli:3,possibl:[3,4],"default":[3,4],k_r:4,displai:4,dens:3,below:[3,4],limit:4,k_n:4,problem:3,similar:0,taylor:3,constant:3,creat:[0,4],"int":3,checkvalu:3,repres:2,"char":3,threedim:3,exist:3,file:[0,3,4],inf:4,check:[0,3,4],gpu:[0,3],probabl:4,denot:4,cmake:0,googl:3,gnuplot:4,index:1,detail:3,event:3,defaultparam:4,other:0,collis:3,inputbin:3,spatial:3,test:0,architectur:[0,3],draw:4,reportvalu:3,sequenc:3,symbol:0,gridnum:4,lunbek:1,intent:3,previous:4,doubl:3,gpumain:3,warn:4,delta_n_ij:3,sphinx:0,algorithm:[3,1,2,4],directori:0,descript:3,them:4,depth:4,mass:[3,2],invok:[0,3],epslatex:4,time:[0,3,2],cpp:3,profil:3,cpu:3,mathrm:3},objtypes:{"0":"py:module","1":"py:method","2":"py:function","3":"py:class"},titles:["Introduction","Welcome to sphere&#8217;s documentation!","Discrete element method","sphere internals","Python API"],objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","function","Python function"],"3":["py","class","Python class"]},filenames:["introduction","index","dem","sphere_internals","python_api"]})
       +\ No newline at end of file
 (DIR) diff --git a/doc/html/sphere_internals.html b/doc/html/sphere_internals.html
       t@@ -54,9 +54,26 @@
          <div class="section" id="sphere-internals">
        <h1>sphere internals<a class="headerlink" href="#sphere-internals" title="Permalink to this headline">¶</a></h1>
        <p>The <em>sphere</em> executable has the following options:</p>
       -<div class="system-message">
       -<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/home/adc/code/sphere/doc/sphinx/sphere_internals.rst</tt>, line 6)</p>
       -Command u&#8217;../../sphere_linux_X86_64 &#8211;help&#8217; failed: [Errno 2] No such file or directory</div>
       +<div class="highlight-text"><div class="highlight"><pre>$ ../../sphere --help
       +../../sphere: particle dynamics simulator
       +Usage: ../../sphere [OPTION[S]]... [FILE1 ...]
       +Options:
       +-h, --help                print help
       +-V, --version                print version information and exit
       +-q, --quiet                suppress status messages to stdout
       +-n, --dry                show key experiment parameters and quit
       +-r, --render                render input files instead of simulating temporal evolution
       +-dc, --dont-check        don&#39;t check values before running
       +
       +Raytracer (-r) specific options:
       +-m &lt;method&gt; &lt;maxval&gt; [-l &lt;lower cutoff val&gt;], or
       +--method &lt;method&gt; &lt;maxval&gt; [-l &lt;lower cutoff val&gt;]
       +        color visualization method, possible values:
       +        normal, pres, vel, angvel, xdisp, angpos
       +        &#39;normal&#39; is the default mode
       +        if -l is appended, don&#39;t render particles with value below
       +</pre></div>
       +</div>
        <p>The most common way to invoke <em>sphere</em> is however via the Python API (e.g. <a class="reference internal" href="python_api.html#sphere.run" title="sphere.run"><tt class="xref py py-func docutils literal"><span class="pre">sphere.run()</span></tt></a>, <a class="reference internal" href="python_api.html#sphere.render" title="sphere.render"><tt class="xref py py-func docutils literal"><span class="pre">sphere.render()</span></tt></a>, etc.).</p>
        <p>subsection{The <em>sphere</em> algorithm}
        label{subsec:spherealgo}
       t@@ -334,8 +351,8 @@ An important note is that the texttt{C} examples of the NVIDIA CUDA SDK should b
        <div><p></p>
        <p></p>
        </div></blockquote>
       -<p id=""><span id="project0classDEM_1a0cb0fcf60594f664a9e593917c623767"></span><div class="line-block">
       -<div class="line">void <strong>forcechains</strong>(const std::string format = &#8220;interactive&#8221;, const int threedim = 1)</div>
       +<p id=""><span id="project0classDEM_1ad94250277dec22f68e096bbf149ff0a8"></span><div class="line-block">
       +<div class="line">void <strong>forcechains</strong>(const std::string format = &#8220;interactive&#8221;, const int threedim = 1, const double lower_cutoff = 0.0, const double upper_cutoff = 1.0e9)</div>
        </div>
        </p>
        <blockquote>
 (DIR) diff --git a/doc/pdf/sphere.pdf b/doc/pdf/sphere.pdf
       Binary files differ.
 (DIR) diff --git a/doc/sphinx/dem.rst b/doc/sphinx/dem.rst
       t@@ -1,6 +1,16 @@
        Discrete element method
        =======================
       -The discrete element method (or distinct element method) was initially formulated by \citet{Cundall:1979}. It simulates the physical behavior and interaction of discrete, unbreakable particles, with their own mass and inertia, under the influence of e.g. gravity and boundary conditions such as moving walls. By discretizing time into small time steps ($\Delta t \approx 10^{-8} \si{\second}$), explicit integration of Newton's second law of motion is used to predict the new position and kinematic values for each particle from the previous sums of forces. This Lagrangian approach is ideal for simulating discontinuous materials, such as granularities. The complexity of the computations is kept low by representing the particles as spheres, which keeps contact-searching algorithms simple.
       +The discrete element method (or distinct element method) was initially
       +formulated by Cundall and Strack (1979). It simulates the physical behavior and
       +interaction of discrete, unbreakable particles, with their own mass and inertia,
       +under the influence of e.g. gravity and boundary conditions such as moving
       +walls. By discretizing time into small time steps, explicit integration of
       +Newton's second law of motion is used to predict the new position and kinematic
       +values for each particle from the previous sums of forces. This Lagrangian
       +approach is ideal for simulating discontinuous materials, such as granular
       +matter.
       +The complexity of the computations is kept low by representing the particles as
       +spheres, which keeps contact-searching algorithms simple.
        
        
        
 (DIR) diff --git a/doc/sphinx/index.rst b/doc/sphinx/index.rst
       t@@ -5,11 +5,18 @@
        
        Welcome to sphere's documentation!
        ==================================
       -This is the official documentation for the *sphere* discrete element modelling software. It presents the theory behind the discrete element method (DEM), the structure of the software source code, and the Python API for handling simulation setup and data analysis.
       -
       -*sphere* is developed by Anders Damsgaard Christensen under supervision of David Lunbek Egholm and Jan A. Piotrowski, all of the department of Geology, Aarhus University, Denmark. This document is a work in progress, and is still in an early state. 
       -
       -Contact: Anders Damsgaard Christensen, `<http://cs.au.dk/~adc>`_, `<adc@geo.au.dk>`_
       +This is the official documentation for the *sphere* discrete element modelling
       +software. It presents the theory behind the discrete element method (DEM), the
       +structure of the software source code, and the Python API for handling
       +simulation setup and data analysis.
       +
       +*sphere* is developed by Anders Damsgaard Christensen under supervision of David
       +Lunbek Egholm and Jan A. Piotrowski, all of the department of Geoscience, Aarhus
       +University, Denmark. This document is a work in progress, and is still in an
       +early state. 
       +
       +Contact: Anders Damsgaard Christensen, `<http://cs.au.dk/~adc>`_,
       +`<anders.damsgaard@geo.au.dk>`_
        
        
        Contents:
 (DIR) diff --git a/doc/sphinx/introduction.rst b/doc/sphinx/introduction.rst
       t@@ -1,25 +1,39 @@
        Introduction
        ============
       -The *sphere*-software is used for three-dimensional discrete element method (DEM) particle simulations. The source code is written in C++, CUDA C and Python, and is compiled by the user. The main computations are performed on the graphics processing unit (GPU) using NVIDIA's general purpose parallel computing architecture, CUDA. Simulation setup and data analysis is performed with the included Python API.
       -The ultimate aim of the *sphere* software is to simulate soft-bedded subglacial conditions, while retaining the flexibility to perform simulations of granular material in other environments.
       -
       -The purpose of this documentation is to provide the user with a thorough walk-through of the installation, work-flow, data-analysis and visualization methods of *sphere*. In addition, the *sphere* internals are exposed to provide a way of understanding of the discrete element method numerical routines taking place.
       +The *sphere*-software is used for three-dimensional discrete element method 
       +(DEM) particle simulations. The source code is written in C++, CUDA C and
       +Python, and is compiled by the user. The main computations are performed on the
       +graphics processing unit (GPU) using NVIDIA's general purpose parallel computing
       +architecture, CUDA. Simulation setup and data analysis is performed with the
       +included Python API.
       +
       +The ultimate aim of the *sphere* software is to simulate soft-bedded subglacial
       +conditions, while retaining the flexibility to perform simulations of granular
       +material in other environments.
       +
       +The purpose of this documentation is to provide the user with a walk-through of
       +the installation, work-flow, data-analysis and visualization methods of
       +*sphere*. In addition, the *sphere* internals are exposed to provide a way of
       +understanding of the discrete element method numerical routines taking place.
        
        .. note:: Command examples in this document starting with the symbol ``$`` are meant to be executed in the shell of the operational system, and ``>>>`` means execution in Python. 
        
       -All numerical values in this document, the source code, and the configuration files are typeset with strict respect to the SI unit system.
       +All numerical values in this document, the source code, and the configuration
       +files are typeset with strict respect to the SI unit system.
        
        Requirements
        ------------
        The build requirements are:
       -  * A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolkit release notes <http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html>`_ for more information)
       +  * A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolkit
       +    release notes <http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html>`_ for more information)
          * `GNU Make <https://www.gnu.org/software/make/>`_
          * `CMake <http://www.cmake.org>`_
          * The `GNU Compiler Collection <http://gcc.gnu.org/>`_ (GCC)
          * The `Nvidia CUDA toolkit and SDK <https://developer.nvidia.com/cuda-downloads>`_
        
        The runtime requirements are:
       -  * A `CUDA-enabled GPU <http://www.nvidia.com/object/cuda_gpus.html>`_ with compute capability 1.1 or greater.
       +  * A `CUDA-enabled GPU <http://www.nvidia.com/object/cuda_gpus.html>`_ with
       +    compute capability 1.1 or greater.
          * A Nvidia CUDA-enabled GPU and device driver
        
        Optional tools, required for simulation setup and data processing:
       t@@ -38,16 +52,23 @@ Optional tools, required for building the documentation:
          * `Breathe <http://michaeljones.github.com/breathe/>`_
          * `dvipng <http://www.nongnu.org/dvipng/>`_
        
       -`Git <http://git-scm.com>`_ is used as the distributed version control system platform, and the source code is maintained at `Github <https://github.com/anders-dc/sphere/>`_. *sphere* is licensed under the `GNU Public License, v.3 <https://www.gnu.org/licenses/gpl.html>`_.
       +`Git <http://git-scm.com>`_ is used as the distributed version control system
       +platform, and the source code is maintained at `Github
       +<https://github.com/anders-dc/sphere/>`_. *sphere* is licensed under the `GNU
       +Public License, v.3 <https://www.gnu.org/licenses/gpl.html>`_.
        
        
        Building *sphere*
        -----------------
       -All instructions required for building *sphere* are provided in a number of ``Makefiles``. To generate the main *sphere* command-line executable, go to the root directory, and invoke CMake and GNU Make::
       +All instructions required for building *sphere* are provided in a number of
       +``Makefile``'s. To generate the main *sphere* command-line executable, go to the
       +root directory, and invoke CMake and GNU Make::
        
         $ cmake . && make
        
       -If successfull, the Makefiles will create the required data folders, object files, as well as the *sphere* executable in the root folder. Issue the following commands to check the executable::
       +If successfull, the Makefiles will create the required data folders, object
       +files, as well as the *sphere* executable in the root folder. Issue the
       +following commands to check the executable::
        
         $ ./sphere --version
        
       t@@ -59,7 +80,10 @@ The build can be verified by running a number of automated tests::
        
         $ make test
        
       -The documentation can be read in the `reStructuredText <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html>`_-format in the ``doc/sphinx/`` folder, or build into e.g. HTML or PDF format with the following commands::
       +The documentation can be read in the `reStructuredText
       +<http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html>`_-format in
       +the ``doc/sphinx/`` folder, or build into e.g. HTML or PDF format with the
       +following commands::
        
         $ cd doc/sphinx
         $ make html
       t@@ -72,9 +96,13 @@ To see all available output formats, execute::
        
        Work flow
        ---------
       -After compiling the *sphere* binary, the procedure of a creating and handling a simulation is typically arranged in the following order:
       -  * Setup of particle assemblage, physical properties and conditions using the Python API.
       -  * Execution of *sphere* software, which simulates the particle behavior as a function of time, as a result of the conditions initially specified in the input file.
       -  * Inspection, analysis, interpretation and visualization of *sphere* output in Python, and/or scene rendering using the built-in ray tracer.
       -
       +After compiling the *sphere* binary, the procedure of a creating and handling a
       +simulation is typically arranged in the following order:
       +  * Setup of particle assemblage, physical properties and conditions using the
       +    Python API.
       +  * Execution of *sphere* software, which simulates the particle behavior as a
       +    function of time, as a result of the conditions initially specified in the
       +    input file.
       +  * Inspection, analysis, interpretation and visualization of *sphere* output in
       +    Python, and/or scene rendering using the built-in ray tracer.
        
 (DIR) diff --git a/doc/sphinx/sphere_internals.rst b/doc/sphinx/sphere_internals.rst
       t@@ -3,7 +3,7 @@ sphere internals
        
        The *sphere* executable has the following options:
        
       -.. command-output:: ../../sphere_linux_X86_64 --help
       +.. command-output:: ../../sphere --help
        
        The most common way to invoke *sphere* is however via the Python API (e.g. :py:func:`sphere.run`, :py:func:`sphere.render`, etc.).
        
 (DIR) diff --git a/python/darcy.py b/python/darcy.py
       t@@ -9,7 +9,7 @@ initialization = True
        consolidation  = True
        #shearing       = True
        rendering      = False
       -#plots               = False
       +plots               = True
        
        
        
 (DIR) diff --git a/tests/io_tests.py b/tests/io_tests.py
       t@@ -5,13 +5,13 @@ from pytestutils import *
        print("### Input/output tests ###")
        
        # Generate data in python
       -orig = Spherebin(np = 100, nw = 1, sid = "test-initgrid")
       -orig.generateRadii(histogram = False)
       +orig = Spherebin(np=100, nw=1, sid="test-initgrid")
       +orig.generateRadii(histogram=False)
        orig.defaultParams()
       -orig.initRandomGridPos(g = numpy.zeros(orig.nd))
       -orig.initTemporal(current = 0.0, total = 0.0)
       -orig.time_total = 2.0*orig.time_dt;
       -orig.time_file_dt = orig.time_dt;
       +orig.initRandomGridPos(g=numpy.zeros(orig.nd))
       +orig.initTemporal(current=0.0, total=0.0)
       +orig.time_total=2.0*orig.time_dt
       +orig.time_file_dt = orig.time_dt
        orig.writebin(verbose=False)
        
        # Test Python IO routines
       t@@ -20,7 +20,8 @@ py.readbin("../input/" + orig.sid + ".bin", verbose=False)
        compare(orig, py, "Python IO:")
        
        # Test C++ IO routines
       -orig.run(verbose=False, hideinputfile=True)
       +#orig.run(verbose=False, hideinputfile=True)
       +orig.run(verbose=True, hideinputfile=True)
        cpp = Spherebin()
        cpp.readbin("../output/" + orig.sid + ".output00000.bin", verbose=False)
        compare(orig, cpp, "C++ IO:   ")
       t@@ -34,6 +35,3 @@ compare(orig, cuda, "CUDA IO:  ")
        
        # Remove temporary files
        cleanup(orig)
       -
       -
       -