Introduction
Introduction Statistics Contact Development Disclaimer Help
tsmall fixes - sphere - GPU-based 3D discrete element method algorithm with opt…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit 5dbc0a8544a6dfa40505639271fb7ca1a1834be5
parent 63cf7ba3c83aac1a3f2b7836262fbc7b9052b84f
Author: Anders Damsgaard <[email protected]>
Date: Sun, 17 Mar 2013 21:22:39 +0100
small fixes
Diffstat:
M INSTALL.sh | 2 +-
M doc/html/_sources/introduction.txt | 16 ++++++++++------
M doc/html/genindex.html | 4 ++++
M doc/html/introduction.html | 30 ++++++++++++++++++++++--------
M doc/html/objects.inv | 0
M doc/html/python_api.html | 10 ++++++++--
M doc/html/searchindex.js | 4 ++--
M doc/pdf/sphere.pdf | 0
M doc/sphinx/conf.py | 8 ++++----
M doc/sphinx/introduction.rst | 16 ++++++++++------
D python/bondtest.py | 44 -----------------------------…
M python/shear-test.py | 12 ++++++------
M src/sphere.cpp | 13 ++++++++-----
D tests/tests.py | 114 -----------------------------…
14 files changed, 75 insertions(+), 198 deletions(-)
---
diff --git a/INSTALL.sh b/INSTALL.sh
t@@ -1,2 +1,2 @@
-export NVSDKCOMPUTE_ROOT=/home/adc/NVIDIA_GPU_Computing_SDK
+export NVSDKCOMPUTE_ROOT=/home/adc/NVIDIA_CUDA-5.0_Samples
cmake . && make
diff --git a/doc/html/_sources/introduction.txt b/doc/html/_sources/introductio…
t@@ -14,6 +14,7 @@ Requirements
The build requirements are:
* A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolki…
* `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-downlo…
t@@ -42,18 +43,21 @@ Optional tools, required for building the documentation:
Building *sphere*
-----------------
-All instructions required for building *sphere* are provided in a number of ``…
+All instructions required for building *sphere* are provided in a number of ``…
- $ cd src
- $ make
+ $ cmake . && make
-If successfull, the GNU Makefile will create the required data folders, object…
+If successfull, the Makefiles will create the required data folders, object fi…
- $ ./sphere_* --version
+ $ ./sphere --version
The output should look similar to this:
-.. program-output:: ../../sphere_linux_X86_64 --version
+.. program-output:: ../../sphere --version
+
+The build can be verified by running a number of automated tests::
+
+ $ make test
The documentation can be read in the `reStructuredText <http://docutils.source…
diff --git a/doc/html/genindex.html b/doc/html/genindex.html
t@@ -100,6 +100,10 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
+ <dt><a href="python_api.html#sphere.cleanup">cleanup() (in module sphere)</a>
+ </dt>
+
+
<dt><a href="python_api.html#sphere.Spherebin.consolidate">consolidate() (sp…
</dt>
diff --git a/doc/html/introduction.html b/doc/html/introduction.html
t@@ -72,6 +72,7 @@ The ultimate aim of the <em>sphere</em> software is to simul…
<dd><ul class="first last simple">
<li>A Nvidia CUDA-supported version of Linux or Mac OS X (see the <a class="re…
<li><a class="reference external" href="https://www.gnu.org/software/make/">GN…
+<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 …
<li>The <a class="reference external" href="https://developer.nvidia.com/cuda-…
</ul>
t@@ -107,17 +108,30 @@ The ultimate aim of the <em>sphere</em> software is to s…
</div>
<div class="section" id="building-sphere">
<h2>Building <em>sphere</em><a class="headerlink" href="#building-sphere" titl…
-<p>All instructions required for building <em>sphere</em> are provided in a nu…
-<div class="highlight-python"><pre>$ cd src
-$ make</pre>
+<p>All instructions required for building <em>sphere</em> are provided in a nu…
+<div class="highlight-python"><pre>$ cmake . &amp;&amp; make</pre>
</div>
-<p>If successfull, the GNU Makefile will create the required data folders, obj…
-<div class="highlight-python"><pre>$ ./sphere_* --version</pre>
+<p>If successfull, the Makefiles will create the required data folders, object…
+<div class="highlight-python"><pre>$ ./sphere --version</pre>
</div>
<p>The output should look similar to this:</p>
-<div class="system-message">
-<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">…
-Command u&#8217;../../sphere_linux_X86_64 &#8211;version&#8217; failed: [Errno…
+<div class="highlight-text"><div class="highlight"><pre>.---------------------…
+| _ Compiled for 3D |
+| | | |
+| ___ _ __ | |__ ___ _ __ ___ |
+| / __| &#39;_ \| &#39;_ \ / _ \ &#39;__/ _ \ |
+| \__ \ |_) | | | | __/ | | __/ |
+| |___/ .__/|_| |_|\___|_| \___| |
+| | | |
+| |_| Version: 0.35 |
+`-------------------------------------´
+ A discrete element method particle dynamics simulator.
+ Written by Anders Damsgaard Christensen, license GPLv3+.
+</pre></div>
+</div>
+<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="ht…
<div class="highlight-python"><pre>$ cd doc/sphinx
$ make html
diff --git a/doc/html/objects.inv b/doc/html/objects.inv
Binary files differ.
diff --git a/doc/html/python_api.html b/doc/html/python_api.html
t@@ -179,7 +179,7 @@ Returns porosity values and depth</p>
<dl class="method">
<dt id="sphere.Spherebin.run">
-<tt class="descname">run</tt><big>(</big><em>verbose=True</em>, <em>hideinputf…
+<tt class="descname">run</tt><big>(</big><em>verbose=True</em>, <em>hideinputf…
<dd><p>Execute sphere with target project</p>
</dd></dl>
t@@ -206,7 +206,7 @@ initial height per second.</p>
<dl class="method">
<dt id="sphere.Spherebin.thinsection_x1x3">
-<tt class="descname">thinsection_x1x3</tt><big>(</big><em>x2='center'</em>, <e…
+<tt class="descname">thinsection_x1x3</tt><big>(</big><em>x2='center'</em>, <e…
<dd><p>Produce a 2D image of particles on a x1,x3 plane, intersecting the seco…
Output is saved as &#8216;&lt;sid&gt;-ts-x1x3.txt&#8217; in the current folder…
<p>An upper limit to the pressure color bar range can be set by the cbmax para…
t@@ -258,6 +258,12 @@ velocity in m/s, default value is -0.001 m/s (i.e. downwa…
</dd></dl>
<dl class="function">
+<dt id="sphere.cleanup">
+<tt class="descclassname">sphere.</tt><tt class="descname">cleanup</tt><big>(<…
+<dd><p>Remove input/output files and images from simulation</p>
+</dd></dl>
+
+<dl class="function">
<dt id="sphere.convert">
<tt class="descclassname">sphere.</tt><tt class="descname">convert</tt><big>(<…
<dd><p>Converts all PPM images in img_out to graphicsformat, using ImageMagick…
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,""],con…
-\ No newline at end of file
+Search.setIndex({objects:{"":{sphere:[4,0,1,""]},sphere:{status:[4,2,1,""],con…
+\ No newline at end of file
diff --git a/doc/pdf/sphere.pdf b/doc/pdf/sphere.pdf
Binary files differ.
diff --git a/doc/sphinx/conf.py b/doc/sphinx/conf.py
t@@ -50,7 +50,7 @@ master_doc = 'index'
# General information about the project.
project = u'sphere'
-copyright = u'2012, Anders Damsgaard Christensen'
+copyright = u'2012, Anders Damsgaard'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
t@@ -193,7 +193,7 @@ latex_elements = {
# (source start file, target name, title, author, documentclass [howto/manual]…
latex_documents = [
('index', 'sphere.tex', u'sphere Documentation',
- u'Anders Damsgaard Christensen', 'manual'),
+ u'Anders Damsgaard', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
t@@ -223,7 +223,7 @@ latex_documents = [
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'sphere', u'sphere Documentation',
- [u'Anders Damsgaard Christensen'], 1)
+ [u'Anders Damsgaard'], 1)
]
# If true, show URL addresses after external links.
t@@ -237,7 +237,7 @@ man_pages = [
# dir menu entry, description, category)
texinfo_documents = [
('index', 'sphere', u'sphere Documentation',
- u'Anders Damsgaard Christensen', 'sphere', 'One line description of project…
+ u'Anders Damsgaard', 'sphere', 'One line description of project.',
'Miscellaneous'),
]
diff --git a/doc/sphinx/introduction.rst b/doc/sphinx/introduction.rst
t@@ -14,6 +14,7 @@ Requirements
The build requirements are:
* A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolki…
* `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-downlo…
t@@ -42,18 +43,21 @@ Optional tools, required for building the documentation:
Building *sphere*
-----------------
-All instructions required for building *sphere* are provided in a number of ``…
+All instructions required for building *sphere* are provided in a number of ``…
- $ cd src
- $ make
+ $ cmake . && make
-If successfull, the GNU Makefile will create the required data folders, object…
+If successfull, the Makefiles will create the required data folders, object fi…
- $ ./sphere_* --version
+ $ ./sphere --version
The output should look similar to this:
-.. program-output:: ../../sphere_linux_X86_64 --version
+.. program-output:: ../../sphere --version
+
+The build can be verified by running a number of automated tests::
+
+ $ make test
The documentation can be read in the `reStructuredText <http://docutils.source…
diff --git a/python/bondtest.py b/python/bondtest.py
t@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-
-from sphere import *
-
-sb = Spherebin(np=2, sid='bondtest')
-
-cleanup(sb)
-
-sb.x[0,:] = numpy.array((2,2,2))
-sb.x[1,:] = numpy.array((3.5,2,2))
-sb.radius = numpy.ones(sb.np)*0.5
-
-#sb.vel[1,2] = 1
-sb.angvel[1,1] = 0.01
-
-
-sb.initGridAndWorldsize(margin = 10, periodic = 1, contactmodel = 2, g = numpy…
-
-sb.bond(0, 1)
-
-sb.defaultParams()
-#sb.gamma_n[0] = 10000
-#sb.initTemporal(total=4.0)
-sb.initTemporal(total=0.01, file_dt=2e-4)
-
-sb.writebin()
-
-sb.run(dry=True)
-sb.run()
-
-sb.render(verbose=False)
-
-visualize(sb.sid, "energy")
-
-sb.readlast()
-print(sb.bonds_delta_n)
-print(sb.bonds_delta_t)
-print(sb.bonds_omega_n)
-print(sb.bonds_omega_t)
-print()
-print(sb.force)
-print(sb.torque)
-print(sb.vel)
-print(sb.angvel)
diff --git a/python/shear-test.py b/python/shear-test.py
t@@ -5,13 +5,13 @@ from sphere import *
### EXPERIMENT SETUP ###
initialization = True
-consolidation = True
-shearing = True
-rendering = True
-plots = True
+consolidation = False
+shearing = False
+rendering = False
+plots = False
# Number of particles
-np = 2e3
+np = 1e4
# Common simulation id
sim_id = "shear-test"
t@@ -35,7 +35,7 @@ init.defaultParams(gamma_n = 0.0, mu_s = 0.4, mu_d = 0.4)
init.initRandomGridPos(gridnum = numpy.array([12, 12, 1000]), periodic = 1, co…
# Set duration of simulation
-init.initTemporal(total = 5.0)
+init.initTemporal(total = 0.2)
if (initialization == True):
# Write input file for sphere
diff --git a/src/sphere.cpp b/src/sphere.cpp
t@@ -621,15 +621,18 @@ void DEM::forcechains(const std::string format, const in…
<< "# the forcechain utility in sphere. For more information,\n"
<< "# see https://github.com/anders-dc/sphere\n"
<< "set size ratio -1\n";
- if (format == "png")
- cout << "set term pngcairo size 50 cm,40 cm\n";
- else if (format == "epslatex") {
+ if (format == "png") {
+ cout << "set term pngcairo size 30 cm,20 cm\n";
+ cout << "set out '" << s << "-fc.png'\n";
+ } else if (format == "epslatex") {
cout << "set term epslatex size 8.6 cm, 5.6 cm\n";
- cout << "set out 'plots/" << s << "-fc.tex'\n";
+ //cout << "set out 'plots/" << s << "-fc.tex'\n";
+ cout << "set out '" << s << "-fc.tex'\n";
} else if (format == "epslatex-color") {
//cout << "set term epslatex color size 12 cm, 8.6 cm\n";
- cout << "set term epsla color size 8.6 cm, 5.6 cm\n";
+ cout << "set term epslatex color size 8.6 cm, 5.6 cm\n";
cout << "set out 'plots/" << s << "-fc.tex'\n";
+ //cout << "set out '" << s << "-fc.tex'\n";
}
cout << "set xlabel '\\sffamily $x_1$, [m]'\n";
if (threedim == 1) {
diff --git a/tests/tests.py b/tests/tests.py
t@@ -1,114 +0,0 @@
-#!/usr/bin/env python
-from sphere import *
-import subprocess
-
-def passed():
- return "\tPassed"
-
-def failed():
- return "\tFailed"
-
-def compare(first, second, string):
- if (first == second):
- print(string + passed())
- else:
- print(string + failed())
-
-def compareFloats(first, second, string, criterion=1e-5):
- if abs(first-second) < criterion:
- print(string + passed())
- else :
- print(string + failed())
-
-def cleanup(spherebin):
- 'Remove temporary files'
- subprocess.call("rm -f ../input/" + spherebin.sid + ".bin", shell=True)
- subprocess.call("rm -f ../output/" + spherebin.sid + ".*.bin", shell=True)
- print("")
-
-
-#### Input/output tests ####
-print("### Input/output tests ###")
-
-# Generate data in python
-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.writebin(verbose=False)
-
-# Test Python IO routines
-py = Spherebin()
-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()
-cpp = Spherebin()
-cpp.readbin("../output/" + orig.sid + ".output00000.bin", verbose=False)
-compare(orig, cpp, "C++ IO: ")
-
-# Test CUDA IO routines
-cuda = Spherebin()
-cuda.readbin("../output/" + orig.sid + ".output00001.bin", verbose=False)
-cuda.time_current = orig.time_current
-cuda.time_step_count = orig.time_step_count
-compare(orig, cuda, "CUDA IO: ")
-
-# Remove temporary files
-cleanup(orig)
-
-
-#### Porosity tests ####
-print("### porosity tests ###")
-
-def testPorosities(spherebin):
-
- # Number of vertical slices
- slicevals = [1, 2, 4]
- i = 1 # iterator var
- for slices in slicevals:
-
- # Find correct value of bulk porosity
- n_bulk = spherebin.bulkPorosity()
- #print("Bulk: " + str(n_bulk))
-
- porosity = spherebin.porosity(slices = slices)[0]
- #print("Avg: " + str(numpy.average(porosity)))
- #print(porosity)
-
- # Check if average of porosity function values matches the bulk porosi…
- compareFloats(n_bulk, numpy.average(porosity), \
- spherebin.sid + ": Porosity average to bulk porosity ("\
- + str(i) + "/" + str(len(slicevals)) + "):")
- i += 1
-
-# Test data from previous test
-testPorosities(orig)
-
-# Simple cubic packing of uniform spheres
-# The theoretical porosity is (4/3*pi*r^3)/(2r)^3 = 0.476
-sidelen = 10
-cubic = Spherebin(np = sidelen**3, sid='cubic')
-radius = 1.0
-cubic.generateRadii(psd='uni', radius_mean=radius, radius_variance=0.0, histog…
-for ix in range(sidelen):
- for iy in range(sidelen):
- for iz in range(sidelen):
- i = ix + sidelen * (iy + sidelen * iz) # linear index
- cubic.x[i,0] = ix*radius*2.0 + radius
- cubic.x[i,1] = iy*radius*2.0 + radius
- cubic.x[i,2] = iz*radius*2.0 + radius
-cubic.L[:] = 2.0 * radius * sidelen
-
-cubic.initTemporal(0.2)
-cubic.initGrid()
-
-testPorosities(cubic)
-
-cleanup(cubic)
-
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.