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] aesd_v1_0.tar.gz(1924 Kbytes)
Manuscript Title: Automatic code generator for higher order integrators
Authors: Asif Mushtaq, Kåre Olaussen
Program title: HOMsPy
Catalogue identifier: AESD_v1_0
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 185(2014)1461
Programming language: Python 2.7.
Computer: PCs or higher performance computers.
Operating system: Linux, MacOS, MSWindows.
RAM: Kilobytes to a several gigabytes (problem dependent).
Keywords: Splitting methods, Modified integrators, Higher order methods, Automatic code generation.
Classification: 4.3, 5.

External routines: SymPy library [1] for generating the code. NumPy library [2], and optionally mpmath [3] library for running the generated code. The matplotlib [4] library for plotting results.

Nature of problem:
We have developed algorithms [5] for numerical solution of Hamilton's equations.

qdota = δH(q,p)/δpa, pdota= -δH(q,p)/δqa, a=1.....,N     (1)

for Hamiltonians of the form

H(q,p)= T(p) + V(q) = 1/2pTMp+V(q),                           (2)

with M a symmetric positive definite matrix. The algorithms preserve the symplectic property of the time evolution exactly, and are of orders τN (for 2 ≤N ≤ 8) in the timestep τ. Although explicit, the algorithms are time-consuming and error-prone to implement numerically by hand, in particular for larger N

Solution method:
We use computer algebra to perform all analytic calculations required for a specific model, and to generate the Python code for numerical solution of this model, including example programs using that code.

In our implementation the mass matrix is assumed to be equal to the unit matrix, and V(q) must be sufficiently differentiable.

Running time:
Subseconds to eons (problem dependent). See discussion in the main article.

[1] SymPy Developement Team, http://sympy.org/
[2] NumPy Developers, http://numpy.org/
[3] F. Johansson et. al., Python library for arbitrary-precision floating-point arithmetic, http://code.google.code/p/mpmath/ (2010)
[4] J.D. Hunter, Matplotlib: A 2D graphics environment, Computing in Science and Engineering 9, 90-95 (2007)
[5] A. Mushtaq, A. Kværnø, K. Olaussen, Higher order Geometric Integrators for a class of Hamiltonian systems, International Journal of Geometric Methods in Modern Physics, vol 11, no. 1 (2014), 1450009-1-1450009-20. DOI: 10.1142/S0219887814500091.arXiv.org:1301.7736