News

  • Beta Update (Bug Fix CubeInsertionBoundaries)
    May 5th, 2017
    Read More …
  • Beta Update (New feature added)
    March 29th, 2017
    Read More …
  • Mercury @ Physics@Veldhoven
    January 18th, 2017
    Read More …

Archive

RSS Feed

Beta of version 1.0 available

March 11th, 2015

Recently (11th of March), MercuryDPM has been subjected to a massive upgrade. It has been revamped with some exciting features and possibilities which we hope you will find useful.

It can be downloaded, or checked out, by executing the following command in your terminal:
svn co https://svn.mercuryDPM.org/SourceCode/Beta
For users already working with the Beta version, the latest changes can be received by typing “svn up” in your current source directory.
The newest features of our Beta are:
1. A complete documentation of MercuryDPM’s core directory (Kernel/), previously known as src/.
2. Most importantly, new tests have been added to check if all the new features work.
3. MercuryDPM now supports Paraview. All your particle data can be viewed both in Paraview and XBalls. Please look into our documentation for further details http://docs.mercurydpm.org/Beta/d1/d6b/analysing.html
4. New tutorials have been added to showcase the features of our code. We are working on many more new tutorials for a comprehensive understanding of MercuryDPM.
5. A fully reorganised directory structure:
At the top level of the source directory you will find six main subdirectories:
  • ⁃Drivers/ This is the only directory you need to create new application codes or modify existing ones; all other directories contain either documentation or files required as input files in the codes contained in this directory.
    It has a series of subdirectories, for example Tutorials/, that contain a series of demo codes illustrating how to write applications in MercuryDPM.
  • ⁃Kernel/
    Contains the heart of the code. Users should not change the Kernel files. Instead, the classes and functions defined here are should be used (and possibly modified) in the Driver files.
  • ⁃Scripts/ Contains a script used by make test, and make fullTest to check if two output files are equal.
  • ⁃Tools/ Contains the source files required to use paraview.
  • ⁃Documentation/
    Contains the raw .dox files for creating documentation pages, like the one you are reading right now, as well as the images used in the documentation.
  • ⁃Configuration/
    These files specify how the documentation and the code is configured.
6. All source files now have the license prepended.
7. New Features
a) Complex wall geometries are now possible such as axisymmetric walls, screw feeder, coil and many more.
b) Support for Angled periodic boundaries, circular periodic boundaries, Lees Edwards boundary, periodic boundary.
Also introduced a deletion and insertion boundary.
c) Multiple types of interactions varying from adhesive to frictional, e.g. Hertzian Visco-elastic, linear plastic visco-elastic, linear visco-elastic, liquid bridge willet, reversible adhesive, sliding friction
d) Multiple species to account for variety of particle properties varying from adhesive to frictional.
9. In addition to the wallHandler and particleHandler, additional handlers have been introduced, please refer to the documentation
boundaryHandler
interactionHandler
speciesHandler
10. A new class Files has been introduced to read and write files. The files can be accesses by the following variables:
restartFile
dataFile
fstatFile
statFile
eneFile
11. New coding guidelines have been adopted. Please check the link http://mercurydpm.org/development/coding-style-of-the-kernel. As a result we have changed function names adhering to the new guidelines.
12. The following a few functions, e.g., changed their name (the line starting with a minus is the old version, the line starting with + is the new version)
-getWallHandler()
+wallHandler
-getParticleHandler()
+particleHandler
- set/get_Position
+set/getPosition
-set/get_Velocity
+set/getVelocity
-set/get_name
+set/getName
-set/get_{xmin, xmax, ymin, ymax, zmin, zmax}
+set/get{XMin, XMax, YMin, YMax, ZMin, ZMax}
-set/get_Radius
+set/getRadius
-set/get_species
+set/getSpecies
- setNormalStiffnessAndDissipation() to
+ setStiffnessAndDissipation(), to be compatible with the setStiffness() and setDissipation functions
Note that this list might not be complete; Most of the functions, in the old beta, which have an underscore in between the names have been modified such that they adhere to the new coding guidelines. If you find your code required more changes than listed here, please let us know. Also please look in /Source/Drivers/Tutorials.
13. Additionally, several functions have been deprecated (will soon disappear or take a much nicer form in the later versions), and should be replaced by different syntax. When compiling with the functions which are deprecated, one will receive warnings which shall soon disappear as well in the later versions.
The most important deprecated functions are:
(i) Walls should not be initialised by a normal vector and a scalar (representing the scaled distance from the origin) anymore. Use a vector position (point on the wall) instead.
E.g. In order to declare a wall on the right of your domain, replace the following line:
InfiniteWall w;
Vec3D normal=Vec3D(1,0,0);
- w.set(normal, getXMax())
+ w.set(normal,Vec3D(getXMax(),0,0));
KNOWN ISSUES:
- If you are using the gcc compiler you will get compiler warnings that the deprecated keyword is unknown. You can ignore these warnings, or turn them off using -Wnoattributes
FUTURE
We anticipate a full release of version 1.0 in the next few months which will be contain only a few additional changes.