c++ program for high-precision atomic structure calculations of single-valence systems

Atomic Many-body Perturbation theory in the Screened Coulomb Interaction

ampsci is a c++ program for high-precision atomic structure calculations of single-valence systems, developed and maintained by Benjamin M. Roberts, University of Queensland, Australia

It solves the correlated Dirac equation using the Hartree-Fock + correlation potential method (based on Dzuba-Flambaum-Sushkov method) to produce a set of atomic wavefunctions and energies. The method is fully relativistic, includes electron correlations, all-orders screening and hole-particle interaction, finite-nuclear size, Breit interaction, radiative QED effects, RPA for matrix elements, and structure radiation/renormalisation. QED is included via the Flambaum-Ginges radiative potential method. Can solve for continuum states with high energy, and calculate ionisation cross sections with large energy/momentum transfer.

Designed to be fast, accurate, and easy to use. The "modules" system (see doc/ makes it simple to add your own routines to use the atomic wavefunctions to calculate whatever properties you may be interested in.

  • The code is on GitHub:
  • See for full documentation
  • A full description of the physics methods and approximations, including references, is given in the physics documentation: ampsci.pdf.
  • Important: this is a pre-release version of the code: not fully tested or documented, and should not be used for publishable calculations (without consultation)

github doxygen manual

tests build macOS cov

Compilation and usage

Full documentation available online: Divided into sections:

  1. Usage intructions, input options
    • Compilation instructions (for linux/mac/windows): doc/
    • Detailed info on all input options: doc/
    • A basic step-by-step tutorial: doc/
    • A more advanced tutorial: doc/
      • See also: doc/examples/ – an example/template input file
      • In doc/examples/ there are several example input files, with the expected output; use these to test if everything is working
  2. Physics documentation:
    • Description of physics/methods used in the code
    • Includes many references to the works where the methods implemented here were developed.
  3. Modules
    • The modules system allows the easy calculation of any atomic properties after the wavefunction has been calculated. See doc/ for description
    • The code is designed so that you can easily create your own modules. See doc/ for details
  4. Code documentation – details on classes/functions in the code
    • Available online:
    • This should only be required if you plan to edit the code or add new modules