Welcome to GranOO, a robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method (DEM) distributed under the free GPLv3 license. Please, follow this link to get started. In addition, you can navigate in this site with the left sidebar.



The GranOO actualities can be followed thanks to the current page. In addition, you can subscribe to the rss feeds by following this link.

GranOO build and installation guides for macOS and Windows are available !
Visit the GranOO installation page for more informations.

Written: 2017/01/19

The first official version of GranOO is now available.
Go check all the new features included in this brand new platform dedicated to simulations using Discrete Element Method.

  \    /_ | _ _ ._ _  _  _|_ _ 
   \/\/(/_|(_(_)| | |(/_  |_(_)
  _|_|_|       	       	       	       	  _|_| 	    _|_|   
_|     	  _|  _|_|    _|_|_|  _|_|_|   	_|    _|  _|   	_| 
_|  _|_|  _|_| 	    _| 	  _|  _|    _| 	_|    _|  _|   	_| 
_|    _|  _|   	    _| 	  _|  _|    _| 	_|    _|  _|   	_| 
  _|_|_|  _|   	      _|_|_|  _|    _| 	  _|_| 	    _|_|   

Version 1.0.0

GranOO, is a Discrete Element Method workbench.
Copyright (C) 2011-2016 JLC, DA, JG, CH and IO.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.
For details about the license see http://www.gnu.org/licenses/.
Enjoy !

[INIT] Starting to read the input file ...

Written: 2016/10/24

GranOO becomes more multiphysic ! It is now possible to simulate the electrical conduction in a continuum DEM domain, and to simulate the heating of domains due to Joule effect. The implemented method, based on graph models, i.e. one iteration is needed (from the DEM solver point of view) to obtain the stabilized electrical state (the computation time may be high and it may required a high amount of memory – 5000 elements corresponds to a ~21000×21000 matrix). This method is suitable if the observed phenomena are fast (such as a crack propagation).

A simple example of electrical conduction is provided in the GranOO distribution. Two other examples are also provided to show how to take advantage of the electrical conduction to detect a crack onset in a DEM domain, and to predict the temperature rise by Joule heating of a notched specimen.

A last example (not yet provided in the distribution) is shown below: a ball with top cup set to 1V, boucing on a grounded, rigid plane. The contour plot represents the electrical potential, ranging from 0V to 1V. The graph underneath shows the time evolution of the global equivalent resistance (in red), the number of contacts (in green) and the contact surface (in blue).

Written: 2016/04/08

The Polyhedron shape recently implemented in the SimpleCooker example is now available in the regular Cooker. You can thus fill any arbitrary shape you want:

The file format currently supported is the Object File Format (.off), which can be obtained from many CAD softwares, or from an *.stl file (such as the frog below) files using the free meshconv tool:

wget http://www.patrickmin.com/meshconv/linux64/meshconv
chmod +x ./meshconv
./meshconv ./frog.stl -tri -c off -o ./

For instance, filling a frog-shaped polyhedron with 20000 discrete elements using the cooker can by achieved by issuing:

cooker --shape Polyhedron --offFile ./frog.off --num 20000

Written: 2016/04/06

A new multithread architecture is now implemented in GranOO and the scalability has been improved.

Now, the number of thread chosen in GranOO is specified only in the ComputeProblem tag using the attribute “ThreadNumber” :

<ComputeProblem TotIteration="8000" OutDir="Results" ThreadNumber="2"/>

The contact detection between a set of discrete elements and any shape available in GranOO is now multithreaded.

More multithreaded parts in the algorithm are coming soon !! Stay tuned !

Written: 2016/03/18

Now, analytical expressions can be used inside input files. These expressions can be used with four new plugins : ImposeDisplacement3D, ImposeOrientation3D, ApplyForce3D and ApplyTorque3D. In addition, you can use two mathematical variables with such expressions:

  • the variable t that corresponds to the simulated time and
  • the variable it that corresponds to the current number of iteration.

The following snippet shows an example of the mathematical expression usage inside an input files to impose a complex sinusoidal force (along X and Y) to a discrete element set named left.

    <PlugIn Id="ApplyForce3D" X="sin(2*pi*t*0.1) + cos(t/2*pi*0.1)" Y="0.05*t"  DiscreteElement3DSet="left"/>

It gives the following loading:

To learn more, you should :

  • visit this link that shows some examples of mathematical expressions and
  • you can take a look inside the granoo/trunk/Tests/Expression sources code to see some examples of mathematical expression usages inside granoo.

Written: 2016/02/15

The next GranOO training course will be held at ENSAM Bordeaux on 22nd and 23rd of March. To get more information about this training see training courses or send an email to
Written: 2016/01/27

See the new videos in the gallery: the fracture of a hollow sphere (epoxy shell) under compressive test Written: 2015/12/10

You can choose now the two new shapes EllipticalCylinder and/or SinusoidalCylinder to build an isotropic compacted discrete domain with cooker. The dim parameters specific for these geometrical shapes are detailed in ./cooker -h. Both shapes are based either on an elliptic or on a sinus function to compute the cylinder section.

Example : an EllipticalCylinder and a SinusoidalCylinder

./cooker --shape EllipticalCylinder --dim SemiMajorRadius SemiMinorRadius Length ....
./cooker --shape SinusoidalCylinder --dim Height Width Length ....

Written: 2015/12/08

The next GranOO training course will be held at ENSAM Bordeaux on October, 21, 22 and 23. To get more information about this training see training courses or send an email to
Written: 2015/01/27

Any arbitrary polyhedrons can be used as boundary shapes. Currently, only the "off" file format is supported.

The polyhedrons can be built with CAD softwares. You can use the meshconv program to convert a *.stl file, massively used in CAD softwares, to an *.off file, used by GranOO. The following terminal commands show how to download, apply permissions and convert an *.stl file to an off file.

wget http://www.cs.princeton.edu/~min/meshconv/linux64/meshconv
chmod +x ./meshconv
./meshconv /tmp/tux.stl -tri -c off -o /tmp/tux

The following video shows the filling of a rabbit. Be patient, the video is quite large (50 Mo). You can retrieve this simulation by launching the CookingBook-polyhedron.inp input file of the SimpleCooker program available in the Examples directory.

Written: 2015/09/05

You can choose now the shape SphericalShell to build an isotropic compacted disctete domain with cooker, that has the shape of a spherical shell. The dim parameters specific for this geometrical shape are the maximun radius and the minimum radius. The document InstallGranOO.pdf has been updated.

Examples of discrete doamins created with the command

./cooker --shape SphericalShell --dim rMax rMin ....

(section is shown to see inside the shape)

Written: 2015/03/20

Two New XML Tags are now available and called : “SetOfUnion” and “SetOfIntersection” They allow to do either a union of a list of SetOfs or the intersection between two SetOfs. For more details, see sections 3.4 and 3.5 in XmlTags.pdf

Union and intersection of SetOfs in a standard cylinder domain

intersection.jpeg union.jpeg

Written: 2015/03/13

Two regularization types of the standard Coulomb law are now included in GranOO. Fore more details, see Plugins.pdf at section 4 “List of libDEM given contact laws”.

Written: 2015/03/12

A tutorial section is now available on this wiki. Of course, you are invited to take part to this tutorial by adding, improving and correcting it ! This tutorial shows how to :

  1. build a very simple tensile test… and a lot of useful things !

Written: 2015/02/08

The english slides of the next GranOO training course are available
A4 Slides
Written: 2015/02/08

The next GranOO training course will be held at ENSAM Bordeaux on February 10 and 11. To get more information about this training see training courses or send an email to
Written: 2015/01/27

With the new Ubuntu 14.04 LTS (Long Time Support) the qglviewer library used by gddViewer has changed : the packet libqglviewer-qt4-dev is now replaced by packets libqglviewer2 and libqglviewer-dev.

To install the new packets you can :
- manually type the command sudo apt-get install libqglviewer-dev libqglviewer2
- or go in the directory granoo/trunk and just type sh installPackets

The GranOO distribution Makefiles have been updated : if you have installed a new computer or if you have upgraded your distribution from Ubuntu 12.04 to Ubuntu 14.04, you must update your distribution as usual :

$ svn update
$ make 

Remember that if you have more than one CPU core, you can use the command make -j n (where n is the number of core you want to use for compiling), followed by a final make.
Written: 2014/07/06

A new input file parser was implemented thanks to the tinyxml library parser. It allows a very high level of syntax checking. To run the tinyxml parser instead of the old parser, you must launch granoo with the -t option. For example :

$ cd $GRANOO_ROOT_PATH/Examples/HelloWorld
$ make
$ ./granoo ./Hello.inp -t

To use tinyxml with your custom plugins, you must implement the ParseXml() method. The HelloWorld source code give an example of this implementation. In addition, all the examples were updated to be ran with the tinyxml parser. Be aware, this parser is really paranoid. It may happen that an input file can be read by the old parser but raises exceptions with tinyxml.
Written: 2014/04/15

The GranOO's svn server changes its url. To keep update, you need to relocated your svn client. To do this, you just have to type in a terminal the following lines:

$ cd "$GRANOO_ROOT_PATH/../"
$ svn --username anonsvn switch --relocate https://gfplateformesn-m2p.ensam.eu/svn/granoo https://ffsn-m2p.cnrs.fr/svn/granoo

The password is anonsvn.
Written: 2014/03/22

A new set of tools devoted to elastic-brittle DEM calibration is now available in the folder
A simple svn update in granoo/trunk/Tools will download the new directory MicroBeamCalibration.
The complete documentation is included in a new chapter in the install document InstallGranOO.pdf
Written: 2014/02/26

The next GranOO training will be held at ENSAM Bordeaux on February 17-18-19.
To get more information about this training, you can send a mail to the team at granoo.org.
Written: 2014/01/27

The project-assistant.py tool helps and assists the users to start and manage their granoo's projects. This command-line tool avoids some boring copy-and-paste tasks. This tool is available in the Tools/Scripts directory. To get more information about it, you can read the associated readme file.
Written: 2014/01/27

Until today, GranOO required to be built and ran under the linux's Ubuntu 12.04 LTS distribution. The last commits allow for GranOO to support the current debian stable distribution a.k.a “wheezy”.
Written: 2014/01/14