C++QEDv2 Milestone 10: A C/Python application-programming framework for simulating open quantum dynamics
详细信息    查看全文
文摘
The v2 Milestone 10 release of C++QED is primarily a feature release, which also corrects some problems of the previous release, especially as regards the build system. The adoption of C++11 features has led to many simplifications in the codebase. A full doxygen-based API manual [1] is now provided together with updated user guides. A largely automated, versatile new testsuite directed both towards computational and physics features allows for quickly spotting arising errors. The states of trajectories are now savable and recoverable with full binary precision, allowing for trajectory continuation regardless of evolution method (single/ensemble Monte Carlo wave-function or Master equation trajectory). As the main new feature, the framework now presents Python bindings to the highest-level programming interface, so that actual simulations for given composite quantum systems can now be performed from Python.

New version program summary

Program title:   C++QED

Catalogue identifier: AELU_v2_0

Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AELU_v2_0.html

Program obtainable from: CPC Program Library, Queen’s University, Belfast, N. Ireland

Licensing provisions: yes

No. of lines in distributed program, including test data, etc.: 492422

No. of bytes in distributed program, including test data, etc.: 8070987

Distribution format: tar.gz

Programming language:   C++/Python.

Computer: i386-i686, x86 64.

Operating system: In principle cross-platform, as yet tested only on UNIX-like systems (including Mac OS X).

RAM: The framework itself takes about 60MB, which is fully shared. The additional memory taken by the program which defines the actual physical system (script) is typically less than 1MB. The memory storing the actual data scales with the system dimension for state-vector manipulations, and the square of the dimension for density-operator manipulations. This might easily be GBs, and often the memory of the machine limits the size of the simulated system.

Classification: 4.3, 4.13, 6.2.

External routines:   Boost C++ libraries, GNU Scientific Library, Blitz++, FLENS, NumPy, SciPy

Catalogue identifier of previous version: AELU_v1_0

Journal reference of previous version: Comput. Phys. Comm. 183 (2012) 1381

Does the new version supersede the previous version?: Yes

Nature of problem:

Definition of (open) composite quantum systems out of elementary building blocks [2,3]. Manipulation of such systems, with emphasis on dynamical simulations such as Master-equation evolution [4] and Monte Carlo wave-function simulation [5].

Solution method:

Master equation, Monte Carlo wave-function method

Reasons for new version:

The new version is mainly a feature release, but it does correct some problems of the previous version, especially as regards the build system.

Summary of revisions:

We give an example for a typical Python script implementing the ring-cavity system presented in Sec. 3.3 of Ref. [2]:

CView the MathML source codePython code
invoking the framework#include “EvolutionComposite.h”
#include “ParticleTwoModes.h”

int main(int argc, char* argv[])
{
import sys from cpypyqed import *
command-line parametersParameterTable p;

evolution::Pars pe(p);

particle::Pars pp(p);
mode::ParsLossy  pmP(p,“P”);
mode::ParsPumpedLossy pmM(p,“M”);
particlecavity::ParsAlong ppcP(p,“P”);
particlecavity::ParsAlong ppcM(p,“M”);

ppcP.modeCav=MFT_PLUS;
ppcM.modeCav=MFT_MINUS;

auto qmp=updateWithPicture(p,argc,argv,“- -”);
p=parameters.ParameterTable()

pe=evolution.Pars(p)

pp=particle.Pars(p)
pmP=mode.ParsLossy(p,“P”)
pmM=mode.ParsLossy(p,“M”)
ppcP=particlecavity.ParsAlong(p,“P”)
ppcM=particlecavity.ParsAlong(p,“M”)

ppcP.modeCav=ModeFunctionType.PLUS
ppcM.modeCav=ModeFunctionType.MINUS
qmp=updateWithPicture(p,sys.argv,“- -”)
defining free elementsparticle::Ptr part (make(pp,qmp));
mode  ::Ptr plus (make(pmP,qmp));
mode  ::Ptr minus(make(pmM,qmp));
part=particle.make(pp,qmp)
plus  =  mode.make(pmP,qmp)
minus=  mode.make(pmM,qmp)
initial conditionsauto psi(wavePacket(pp)*
 init(pmP)*init(pmM));
psi=particle.wavePacket(pp)**
 mode.init(pmP)**mode.init(pmM)
defining interactions & composite on the fly, and evolving the systemevolve<0>(
 psi,
 composite::make(
 _<1,0>(ParticleAlongCavity(plus,part,ppcP)),
 _<2,0>(ParticleAlongCavity(minus,part,ppcM)),
 _<1,2,0>(ParticleTwoModes(plus,minus,part, ppcP,ppcM))),
 pe);}
evolve(
 psi,
 makeComposite({
 (1,0):ParticleAlongCavity(plus,part,ppcP),
 (2,0):ParticleAlongCavity(minus,part,ppcM),
 (1,2,0):ParticleTwoModes(plus,minus,part, ppcP,ppcM)}),
 pe)
Full-size table

Restrictions:

Total dimensionality of the system. Master equation—few thousands. Monte Carlo wave-function trajectory—several millions.

Unusual features:

Because of the heavy use of compile-time algorithms, compilation of programs written in the framework may take a long time and much memory (up to several GBs).

Additional comments:

The framework is not a program, but provides and implements an application-programming interface for developing simulations in the indicated problem domain.

We use several C++11 features which limits the range of supported compilers (g++ 4.7, clang++ 3.1)

Documentation, http://cppqed.sourceforge.net/

Running time:

Depending on the magnitude of the problem, can vary from a few seconds to weeks.

References:

[1] Entry point: http://cppqed.sf.net

[2] A. Vukics, C++QEDv2: The multi-array concept and compile-time algorithms in the definition of composite quantum systems, Comp. Phys. Comm. 183(2012)1381.

[3] A. Vukics, H. Ritsch, C++QED: an object-oriented framework for wave-function simulations of cavity QED systems, Eur. Phys. J. D 44 (2007) 585.

[4] H. J. Carmichael, An Open Systems Approach to Quantum Optics, Springer, 1993.

[5] J. Dalibard, Y. Castin, K. Molmer, Wave-function approach to dissipative processes in quantum optics, Phys. Rev. Lett. 68 (1992) 580.

© 2004-2018 中国地质图书馆版权所有 京ICP备05064691号 京公网安备11010802017129号

地址:北京市海淀区学院路29号 邮编:100083

电话:办公室:(+86 10)66554848;文献借阅、咨询服务、科技查新:66554700