C++QED  2.100.2 (v2 Milestone 10 Development branch)
a framework for simulating open quantum dynamics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Modules Pages
C++QED Documentation
Abstract

C++QED is a highly flexible framework for simulating open quantum dynamics. It allows users to build arbitrarily complex interacting quantum systems from elementary free subsystems and interactions, and simulate their time evolution with a number of available time-evolution drivers.

The framework is very sensitive to performance, which can be increased by physics and computational ways. Among the physics ways to increase performance, the most notable is the maximal use of interaction picture, which may help to get rid of very separate timescales in the problem. Among the computational ones we can mention

  • Maximal exploitation of special operator structures, i.e., sparse and tridiagonal matrices.
  • The use of adaptive-stepsize methods for evolving ordinary differential equations.
  • Judicious use of memory. Guideline: if it is necessary to copy something, ask first whether it is really necessary.

The SourceForge.net project summary page.

Note
C++QED is a free open-source project, the only thing the developers ask is to please cite all three of our papers in publications where C++QED has any role, as this is the only way for us to obtain credit for this work.

Documentation

Installation of the framework
Installation guide
Background and fundamental design principles
Introduction
A quick start on writing and running actual physical simulations in C++
User Guide – the level-1 interface of C++QED
The Python frontend to the framework
CpypyQED
The out-of-the-box physical elements
Table of supported general-purpose elements
How to implement new physical systems
Implementing new physical elements – the level-2 interface of C++QED
Walkthrough for the API documentation
Some technical terms used throughout the documentation
Glossary
Note
This version of the online documentation reflects the Development branch of the git version, but delays compared to the actual state are possible.

Click here for the documentation of the master branch & released packages

Click here for the Milestone 9 documentation

Download

Click here for the Milestone 9 downloads

Support

We offer full support for the framework both in terms of writing and testing new elements and scripts on demand from the quantum optics community, and of advising with the use of the existing software in the framework or with the development of new software (elements, scripts, time-evolution drivers). In the first case we may require to become co-author in the publications stemming from the work.

Developers

C++QED has been originally conceived and created by András Vukics, who developed v1 between 2006–2008, and has developed and maintained v2 since 2008.

Raimar Sandner joined the project in early 2012, and has since made substantial contributions. The CpypyQED Python frontend to C++QED is his work. He contributed the elaborate build system and testsuite of the framework. In addition, he made many important contributions in the design and implementation of the C++ codebase, such as the trajectory-state input/output feature. He is the maintainer of the Debian and AUR packages.

Publications

  • Raimar Sandner, András Vukics. C++QEDv2 Milestone 10: A C++/Python application-programming framework for simulating open quantum dynamics. Comp. Phys. Comm., 185(9):2380–2382, 2014. (link)
  • András Vukics. C++QEDv2: The multi-array concept and compile-time algorithms in the definition of composite quantum systems. Comp. Phys. Comm., 183(6):1381–1396, 2012. (link)
  • A. Vukics and H. Ritsch. C++QED: an object-oriented framework for wave-function simulations of cavity QED systems. Eur. Phys. J. D, 44:585–599, 2007. (link)

Links

Acknowledgement

First of all, we acknowledge the developers of Boost for making C++ an even more powerful language than it originally was. Without the Boost libraries, the framework could not have taken form.

We would like to thank the developers of GSL, LAPACK, Blitz++, and FLENS for their effort, without which scientific computing in C++ in general, and the present framework in particular would not look as nice as it looks today.