C++QED  v2 Milestone 10
a framework for simulating open quantum dynamics
C++QED Documentation
Note
C++QED is currently in the process of upgrade/streamlining by embracing the full potential of C++14/17, which will allow for the obsolation of much of the esotherics, since those things can now be implemented with more standard techniques. Development is being transferred to GitHub. The present page remains the main starting point of the documentation until further notice. The support for Milestone 10 version continues, so C++QED remains usable during the upgrade process.
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 online documentation reflects the master branch of the git version, which is basically equivalent to released packages.

Click here for the documentation of the Development branch

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.

Publications using/citing C++QED

  • Winterauer D J et al. Phys. Rev. A 91:053829 (2015)
  • Dombi A et al. Eur. Phys. J. D 69:60 (2015)
  • Gevorgyan T V. J. Contemp. Phys.–Armen. Acad. Sci. 50:44 (2015)
  • Wiśniewska J, Sawerwain M. In Kindratenko V (ed.): Numerical Computations with GPUs, Springer, 2014
  • Dombi A et al. J. Phys. B 46:224010 (2013)
  • Sandner R M et al. EPL 104:43001 (2013)
  • Fang Z et al. Opt. Commun. 306:83 (2013)
  • Ritsch H et al. Rev. Mod. Phys. 85:553 (2013)
  • Dalla Torre E G et al. Phys. Rev. A 87:023831 (2013)
  • Shahinyan A R J. Contemp. Phys.–Armen. Acad. Sci. 48:21 (2013)
  • Niedenzu W et al. J. Phys. B 45:245501 (2012)
  • Krämer S, Ritsch H AIP Conference Proceedings 1475:137 (2012)
  • Konya G et al. Phys. Rev. A 86:013641. (2012)
  • Nagy D et al. Phys. Rev. A 84:043637 (2011)
  • Niedenzu W et al. Phys. Rev. A 82:043605 (2010)
  • Fang Z et al. Phys. Rev. A 82:015601 (2010)
  • Schulze R J et al. Phys. Rev. A 81:063820 (2010)
  • Li P B et al. Eur. Phys. J. D 55:205 (2009)
  • Vukics A et al. Phys. Rev. A 79:013828 (2009)
  • Maschler C et al. Eur. Phys. J. D 46:545 (2008)