C++QED
A framework for simulating open quantum dynamics
...The basic idea is to allow users to build arbitrarily complex interacting quantum systems out of free subsystems and interactions (elements), and simulate their time evolution with a number of available time-evolution drivers.
C++QEDv2 specifies a small grammar to describe composite quantum systems. Apart from providing a number of elements out of the box, there are tools which facilitate the implementation of new elements. These are being added continuously, as the need arises.
The principal concept of the design of C++QEDv2 is that all information available at compile time should be processed as such, with the help of TMP. ...