Difference between revisions of "Flow engines on ubuntu 12.04"

From Yade

Line 4: Line 4:
 
=== Release version ===
 
=== Release version ===
   
Releases can be downloaded from the download page, as compressed archive. Uncompressing the archive gives you a directory with the sources.
+
Releases can be downloaded from the download page[https://launchpad.net/yade/+download], as compressed archive. Uncompressing the archive gives you a directory with the sources.
 
==== Install prerequisities ====
 
==== Install prerequisities ====
 
Once you downloaded the sources, you have to install dependencies following the instructions from here: https://yade-dem.org/doc/installation.html#prerequisities
 
Once you downloaded the sources, you have to install dependencies following the instructions from here: https://yade-dem.org/doc/installation.html#prerequisities

Revision as of 14:42, 28 September 2012

Download Yade

You can install either a release (numbered version, which is frozen) or the current developement version (updated by the developers frequently).

Release version

Releases can be downloaded from the download page[1], as compressed archive. Uncompressing the archive gives you a directory with the sources.

Install prerequisities

Once you downloaded the sources, you have to install dependencies following the instructions from here: https://yade-dem.org/doc/installation.html#prerequisities

Current development version

Developement version (trunk) can be obtained from the code repository at github. Follow instructions from here to download: https://www.yade-dem.org/wiki/Yade_on_github#Setup

Install prerequisities

Once you downloaded the sources, you have to install dependencies following the instructions from here: https://yade-dem.org/doc/installation.html#prerequisities

Flow Engine

To add the flow engine and perform coupled fluid-particle simulations, follow the instructions below. Basically there are just a number of dependencies that need to be satisfied.

Openblas

Openblas is a packaged version of Kazushige Goto's gotoblas, which is recommended by most matrix library developpers. It is available precompiled in 12.04 but it breaks python's matplotlib because it provides a different version of lapack, which is a dependency of matplotlib.

== Download openblas and compile it

You should download the sources at github: https://github.com/xianyi/OpenBLAS/zipball/master

Prerequisites:

  • gfortran - type on a terminal "sudo apt-get install gfortran"

Optional:

  • pthread - type on a terminal "sudo apt-get install libpthread-stubs0-dev"

Open a terminal and place you into the folder where the openblas sources have been downloaded. Unpack the compacted file. To compile type "make FC=gfortran" so as to use the right compiler and keep the /path/to/libopenblas.so.0 in mind for the next steps.

Make a symlink to /path/to/openblas.so.0 in the standard path so that yade will find it at startup:

sudo ln -s /path/to/libopenblas.so.0 /usr/lib/libopenblas.so.0

Note for ubuntu 10.04 users: it may be easier on 10.04 to compile the ancestor of openblas: gotoblas

2. Compile taucs

Download taucs sources from the CGAL project or, simpler, download the version that I already configured for 12.04 + openblas here)

Configure the build by editing /config/linux.mk (you need at least to set the path to openblas, or to other libs you may want to use).

Compiling taucs may give harmless error messages even if it actually compiled (it failed at post-built test stages), ignore them and just check that /src/taucs.h and /lib/linux/libtaucs.a are present.

make
(sudo) make install

prerequisites:

  • openblas
  • metis or parmetis (you can just install parmetis from 12.04, or download and compile your own metis-4.0.1 (it doesn't really matter both ways should work)
  • ?

3. configure the compilation of yade/lib/triangulation

It should be possible to do it all in the scons.profile, but for the moment I just modified /trunk/lib/sconscript like this:

# vim: set filetype=python :
env.Install('$LIBDIR/lib',env.SharedLibrary('yade-support',[
   env.Combine('yade-support.cpp',['base/Math.cpp']+
       ['factory/ClassFactory.cpp','factory/DynLibManager.cpp','multimethods/Indexable.cpp','serialization/Serializable.cpp','pyutil/gil.cpp']
       # compile TesselationWrapper only if cgal is enabled in features
       +(Split('triangulation/KinematicLocalisationAnalyser.cpp triangulation/Timer.cpp triangulation/basicVTKwritter.cpp
triangulation/FlowBoundingSphere.cpp triangulation/PeriodicFlow.cpp triangulation/Tenseur3.cpp triangulation/TriaxialState.cpp')
if 'cgal' in env['features'] else [])
       +(['opengl/GLUtils.cpp'] if 'opengl' in env['features'] else [])
       ),
        ],LIBS=['dl','m']+(['taucs','metis','openblas','gomp','gfortran'] if 'cgal' in env['features'] else [])
+[l for l in env['LIBS'] if l!='yade-support']+(['glut','GL','GLU'] if 'opengl' in env['features'] else []),
LINKFLAGS=env['LINKFLAGS']+['-L/path/to/taucs_full/lib/linux','-L/path/to/metis-4.0 (if compiled) ',
'-L/path/to/lib/openblas/lib/','-pthread','-Wl','-Bsymbolic-function','-ansi'],CXXFLAGS=env['CXXFLAGS']+['-fPIC','-frounding-math','-ansi']
))

5. Compile Yade with linsolv enabled

As usual, get the "linsolv" version of flow engines and compile yade with cgal enabled, and -DFLOW_ENGINE, -DLINSOLV in Yade's compile flags.