Frequently asked questions
From espressopp
Can I use ESPResSo++ without Python?
The short answer is no. In principle you can use the C++ classes, but as a significant part of the functionality (e.g. the decomposition, I/O etc.) is implemented in Python, you will lose that part.
But Python is not available on my machine!
If you really think you have found a platform where it is not possible to compile Python, we would be very keen to hear of that. The only machine that we know of is the (outdated) BlueGene/L. The BlueGene/P supports Python.
Do I need to learn Python when using ESPResSo++?
The short answer is "yes". If you want to take advantage of all the nice features of ESPResSo++ you need a certain understanding of the Python scripting language.
But don't be afraid of learning Python:
- Python is easy to learn
- Looking at the ESPResSo++ simulation scripts gives you a very fast understanding of how Python works.
- Writing programs in Python is much easier than writing programs in C++.
- Python programs are easier to understand than Tcl or Perl programs.
And here are some arguments why it is worth while:
- A lot of Python programs are available that you can use in your applications.
- Python gives you a very flexible way of running MD simulations with ESPResSo++.
Do you support other script languages, e.g. Tcl/Tk?
Certainly it might be possible to support also other script languages to access the ESPResSo++ software, but we restricted ourselves to one script language to make it easier to exchange scripts in the user community.
Can ESPResSo-scripts (in Tcl) be converted to ESPResSo++-scripts (in Python) automatically?
No. The reason for this is, that a direct translation would not only mean to translate ESPResSo-commands into the corresponding ESPResSo++-commands, but also to translate the pure Tcl-code into corresponding Python code. And this would mean no less than implementing a Tcl interpreter in Python, which we cannot do.
Why should I use Python if C++ programs are much faster?
Our experience has also shown that Python programs are a factor of 30 up to 50 slower than equivalent C++ programs.
Within ESPResSo++, the use of Python is only intended to set up and control the simulation while the time-critical simulation core is efficient C++ code.
Do I need to write parallel scripts on parallel machines?
No. The Python scripts are executed only by the first processor that will broadcast the ESPResSo++ commands to all other processors automatically via a so called PMI interface (Parallel Method Invocation).
Can I write parallel scripts?
Yes, you can. You can write parallel scripts where each processor executes the code on its own, asynchronously and independently, unless the script calls routines that involve communication.
And there is another situation where it is useful and necessary to write parallel scripts. Usually and especially in the PMI mode, your Python script only calls C++ methods and functions. But ESPResSo++ also supports so-called callbacks where Python code is called from C++ code. As the C++ code executes such Python code on each processor, this Python code must be defined on all processors.
This sounds a little bit complicated, but it isn't. You must only be aware that in such scripts you only can loop over particles that are available on this processor.
Let us consider an example script where you want to compute the average of all velocities. If you do not like parallel programming, just write a serial script where you loop over all particles of the system. If you prefer it to be faster, you write a parallel script where you sum up all local velocities, sum it up between all processors by a global reduction and then divide it by the number of particles.
How efficient is ESPResSo++?
Efficiency got a very high priority but a less one than the extensibility of the system. So you should expect a good performance but might be that ESPResSo++ is less efficient than some other simulation programs that are around.
But if you see that ESPResSo++ is more than a factor of 2 slower than other simulation systems you have detected a performance bug.
Do I need to compile ESPResSo++ myself, or will a binary distribution be available?
We are not yet sure about this. Most probably, binary distributions will be available. Note, however, that ESPResSo++ has a number of dependencies that might not easily be satisfied by a binary package. Therefore, we do provide a simple-to-use build system, so that building ESPResSo++ will hopefully be easy.
Furthermore, when you want to develop extensions to ESPResSo++ that involve C++ code, you have to be able to compile ESPResSo++. Only if we are able to provide a plugin system, it might be possible that you can add extensions dynamically. Most probably, this will not be possible initially, but it might become available at a later stage.
Can ESPResSo++ be used to perform quantum simulations?
ESPResSo++ is a classical simulation package. However, it can be used for semi-classical simulations using such techniques as path integral molecular dynamics, path integral Monte Carlo, or centroid molecular dynamics. Also, the software has been written in a such a way that it can be interfaced with quantum simulation packages such as CPMD.
What is the relationship between ESPResSo, ESPRESSO, and ESPResSo++?
ESPResSo is a software package developed at the MPI for Polymer Research (Mainz, Germany) to perform classical simulations of soft matter systems. ESPResSo++ is the successor of ESPResSo; it is being developed by members of the MPI for Polymer Research and the Fraunhofer Institute for Algorithms and Scientific Computing (Sankt Augustin, Germany). ESPRESSO is a software package that is completely independent of ESPResSo/ESPResSo++. According to its website, ESPRESSO is a quantum package developed for "electronic-structure calculations and materials modeling at the nanoscale."
How do I cite ESPResSo++ in a research publication?
Until an article on the package has been published the best way to cite ESPResSo++ is through its URL: www.espresso-pp.de



