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

Quick start:

  • The bash script should install all required dependencies and build ampsci
    • It uses only defaults, and may not work on all systems. See above instructions for full guide to compilation.
  • See which ampsci input options are available: ./ampsci -a
    • See available input options for each input block by following with its name
    • e.g., ./ampsci -a HartreeFock
  • Check which Modules are aviable: ./ampsci -m
    • See available input options for each module by following with its name
    • e.g., ./ampsci -m MatrixElements
  • Check which operators are aviable: ./ampsci -o
    • See available input options for each operator by following with its name
    • e.g., ./ampsci -o hfs

Looking for atomic ionisation form-factors for dark-matter-electron scattering?

  • See Kionisation module (./ampsci -m Kionisation)