Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] aeun_v1_0.tar.gz(4855 Kbytes)
Manuscript Title: pyCTQW: A continuous-time quantum walk simulator on distributed memory computer
Authors: Josh A. Izaac, Jingbo B. Wang
Program title: pyCTQW
Catalogue identifier: AEUN_v1_0
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 186(2015)92
Programming language: Fortran and Python.
Computer: Workstation or cluster implementing MPI.
Operating system: Any operating system with Fortran, python, and MPI installed.
RAM: Depends on graph size and number of walkers
Keywords: Continuous-time quantum walk, Multiple walkers, Padé approximant, Krylov subspace method, Chebyshev expansion, Matrix expansion.
Classification: 4.15, 14.

External routines: PETSc [1-3], SLEPc [4-6], MPI, NumPy and SciPy [7-9], Matplotlib [10], NetworkX [11]

Nature of problem:
Simulates, visualises and analyzes continuous-time quantum walks on arbitrary undirected graphs.

Solution method:
Distributed memory implementations of the matrix exponential, via a choice of Krylov-subspace and Chebyshev expansion techniques, are used to simulate the continuous-time quantum walkers. Visualisation ability is provided via the supplied Python module and Matplotlib.

The size of the quantum walking system is limited by the amount of available memory. The current package implements up to 3 simultaneous walkers with interactions, but it can be readily extended.

Unusual features:
In addition to utilising a parallelized Krylov subspace method and Chebyshev approximation scheme to maximise effciency, pyCTQW also provides functions for visualisation of the quantum walk dynamics and calculation of multi-particle entanglement, and allows for arbitrary diagonal defects to be placed on graph nodes to explore transmission and resonance structures.

Running time:
Runtime varies depending on the size of the graph, number of processors used, and number of simultaneous walkers.

[1] S. Balay, W. D. Gropp, L. C. McInnes, B. F. Smith, Effcient management of parallelism in object oriented numerical software libraries, in: E. Arge, A. M. Bruaset, H. P. Langtangen (Eds.), Modern Software Tools in Scientific Computing, Birkhäuser Press, 1997, p. 163-202.
[2] S. Balay, J. Brown, K. Buschelman, W. D. Gropp, D. Kaushik, M. G. Knepley, L. C. McInnes, B. F. Smith, H. Zhang, PETSc Web page, 2013. http://www.mcs.anl.gov/petsc.
[3] S. Balay, J. Brown, Buschelman, Kris, V. Eijkhout, W. D. Gropp, D. Kaushik, M. G. Knepley, L. C. McInnes, B. F. Smith, H. Zhang, PETSc Users Manual, Technical Report ANL-95/11 - Revision 3.4, Argonne National Laboratory, 2013.
[4] V. Hernandez, J. E. Roman, V. Vidal, SLEPc: scalable library for eigenvalue problem computations, Lecture Notes in Computer Science 2565 (2003) 377-391.
[5] V. Hernandez, J. E. Roman, V. Vidal, SLEPc: a scalable and flexible toolkit for the solution of eigenvalue problems, ACM Trans. Math. Software 31 (2005) 351-362.
[6] C. Campos, J. E. Roman, E. Romero, A. Tomas, SLEPc Users Manual, Technical Report DSIC-II/24/02 - Revision 3.3, D. Sistemes Informàtics i Computació, Universitat Politècnica de València, 2012.
[7] E. Jones, T. Oliphant, P. Peterson, et al., SciPy: Open source scientific tools for Python 2001.
[8] P. Peterson, F2PY: a tool for connecting fortran and python programs, International Journal of Computational Science and Engineering 4 (2009) 296.
[9] T. E. Oliphant, Python for scientific computing, Computing in Science and Engineering 9 (2007) 10-20.
[10] J. D. Hunter, Matplotlib: A 2D graphics environment, Computing in Science and Engineering 9 (2007) 90-95.
[11] A. A. Hagberg, D. A. Schult, P. J. Swart, Exploring network structure, dynamics, and function using NetworkX, in: ps-G. Varoquaux, T. Vaught, J. Millman (Eds.), Proceedings of the 7th Python in Science Conference, Pasadena, CA USA, pp. 11 - 15.