If you need to get/install/configure siman, read the page you're on already. Otherwise you probably want to read Getting Started Interactively (python).
SimAn is a library for analysing astrophysical SPH simulations (with particular emphasis on cosmological
simulations). Currently it has no support for Eulierian-based simulations, but this may
be incorporated in the future.
SimAn incorporates a visualisation class which allows for real-time high frame rate rendering of data sets with particles number limited only by available memory(left).
SimAn is a python module and, if you're familiar with python, you can just import siman at the top of your code and run with it. It also comes with the script visiman.py which, assuming you compile with visualisation support, opens a view of your simulation in an OpenGL window and allows further interaction through an IPython shell (if IPython is available) or just a plain python prompt.
New — version 0.30 (26 Aug 09) with pilot NumPy integration and multi-file support in visualiser. Also many improvements under the hood. Download here.
Binary version now available; see the download page.
Installing SimAn is now much simpler thanks to python's distutils:
For visualisation, you need a GLUT distribution (including development headers) and a Python WX distribution. With a modern linux distribution such as ubuntu it's actually pretty straight forward: just open a terminal before starting the SimAn build and type
sudo apt-get install python-wxgtk2.8 sudo apt-get install freeglut sudo apt-get install freeglut-dev
python setup.py build sudo python setup.py install
SimAn is fully cross-platform. You should be able to compile it on any machine. However, life isn't always that simple; the libraries have most recently been developed on Mac OS X and Linux machines, and if you have something else you may have to tweak some files. If you find yourself doing this, please let me know so your changes can be incorporated into later releases.
SimAn minimally depends on the boost C++ libraries and Python 2.4 or higher. If either of these are not installed on your target system, it's worth asking your system administrator to do so. (Although you can build your own versions without having root access). Python is a very common interpreted language; the Boost libraries provide an excellent extension to the already useful STL included with all modern C++ compilers. SimAn also makes use of the bjam/boost.build system which is included with boost distributions.
For visualisation, you'll need an OpenGL compatible video card and drivers plus (currently) an implementation of GLUT and also wxPython. (That you require both of these libraries is an unfortunate historical accident, and to be fixed in a future release. However, note that you no longer require freeglut: any flavour of GLUT will do fine.) To enable use on as wide a range of platforms as possible, the visualisation module is entirely optional. If the installer can't find the required dependencies, it'll simply leave out the visualisation and compile everything else.
Doesn't tipsy already do this, and do it better?. The answer is no. Tipsy and SimAn are very different: the former does a great deal more "out of the box", whilst the latter is an extensible programming framework with interactive extras. In addition, SimAn benefits from being written more recently, and therefore being able to take advantage of the increasingly ubiquitous 3d acceleration hardware.
Will SimAn get a more extensive GUI? SimAn is intended primarily as a programming library, not an interactive tool. However, if time permits, I will add an interactive toolbox to access the most common functions.
SimAn is designed to be a quick, flexible way of analysing simulations. It is written in C++ and can either be included as a set of libraries for further C++ development or, more likely, used directly from Python.
Its main aim is to isolate the details from the fundamental processing being performed. It does this in three major ways:
In addition to these three fundamental ideas:
SimAn currently only supports particle-based simulations. Depending on time and need, I may eventually implement Eulerian support. If this happens, SimSnap will turn into SPHSimSnap, derived from a more general SimSnap interface which will continue to support higher-level functions (e.g. getTotalMass())
SimAn currently understands GADGET and TIPSY binary formats. The interpreters for both these formats detect and compensate for inconsistent endianness in the files (which may occur when transferring files from one system to another). It is written to be easily extensible to understand other formats, by deriving a class from SimSnap. If you write a file handler, please send it to me for inclusion in later versions, since other people are likely to find it useful!
If you make extensive use of SimAn libraries or visiman in work which leads to publication, I would be most grateful for a citation; for instance "The simulations were analysed with the aid of SimAn (http://www.ast.cam.ac.uk/~app26/siman/)".
Contact me at app26@ast... (remainder of domain name supressed to save me from spam).