---
title: 'arckit Python Library: Atomic Physics Tool'
url: https://www.emergentmind.com/topics/arckit-python-library
type: topic
---

# arckit Python Library: Atomic Physics Tool

The arckit Python library, also referred to in the literature as ARC or ARC 3.0, is an open-source, object-oriented Python toolbox for atomic physics computations. Designed primarily for precision work with alkali and divalent atom species, it provides a consistent and extensible application programming interface (API) to calculate atomic energies, matrix elements, Stark maps, polarizabilities, lattice properties, and long-range interaction coefficients. Its utility spans atomic, quantum optics, and quantum information, facilitating reproducible workflows for researchers handling Rydberg and related neutral-atom systems [2007.12016, 1612.05529]. The toolkit integrates experimental and model-potential data, semi-classical and numerical methods, and is structured for modularity and community extension.

## 1. Supported Atomic Species and Data Structures

ARC 3.0 supports a broad range of atomic systems. Alkali species are handled with quantum defect expansions and NIST data—classes include `Rubidium87()`, `Caesium()`, `Hydrogen()`, `Sodium23()`, and potassium/rubidium/cesium isotopes. Divalent atoms, such as `Strontium88()` and `Ytterbium174()`, use a single-active-electron approximation with singlet/triplet specification via a quantum number $s=0$ or $1$. Atomic constants, quantum defects, ionisation energies, and model-potential coefficients are encoded in the data modules [2007.12016]:
- `alkali_atom_data`, `divalent_atom_data` for species-specific parameters.
- Literature dipole matrix elements and level data, extendable through local `.csv` tables.

Atomic properties, such as state energies, transition wavelengths, and reduced matrix elements, are accessible via high-level class methods:
```python
from arc import Rubidium87
rb = Rubidium87()
E = rb.getEnergy(n=60, l=0, j=0.5)
λ = rb.getTransitionWavelength(60,0,0.5,61,1,1.5)
d_me = rb.getReducedMatrixElementJ(60,0,0.5,61,1,1.5)
```
This design enables straightforward extension when adding new atomic species, requiring only subclassing and data provision [2007.12016].

## 2. Single-Atom Calculations and Methods

The toolkit rigorously implements single-body atomic calculations relevant for high-lying (Rydberg) and ground electronic states:
- **Radial Wave Functions:** Numerov integration of model potentials ($R_{n\ell}(r)$) for alkalis; semi-classical analytic integrals for divalents.
- **Dipole and Quadrupole Matrix Elements:** Automated Wigner-Eckart decomposition and numerical or literature-driven evaluation, including fallback mechanisms [1612.05529].
- **State Energies and Transition Rates:** Direct computation of excited-state lifetimes, radiative and black-body-induced decay rates, and Rabi frequencies using model potential and experimental data [1612.05529].
- **Stark Maps:** Static electric field Hamiltonian construction and exact diagonalization in a truncated $|n\ell j m_j\rangle$ basis, supporting Fӧrster resonance identification and polarizability extraction [1612.05529, 2007.12016].

Tabulated atomic data assure high accuracy (1–2% relative error for $n \ge 20$) and cross-checks with NIST reference values; rapid recalculation is facilitated by memoisation schemes [1612.05529].

| Quantity                   | Core Module/Class        | Calculation Principle                    |
|----------------------------|-------------------------|------------------------------------------|
| Level Energies             | AlkaliAtom, DivalentAtom| Quantum-defect + NIST tables             |
| Dipole Matrix Elements     | AlkaliAtom              | Numerov integration, Wigner-Eckart       |
| Radiative Lifetimes        | AlkaliAtom              | Einstein $A$-coefficients, summations    |
| Stark Map                  | StarkMap                | Basis diagonalization                    |
| Radial Integrals           | arc_c_extensions        | C-accelerated Numerov/Python fallback    |

## 3. Two-Atom and Many-Body Interaction Modules

Evaluating long- and short-range interatomic potentials is central to quantum information and simulation tasks. ARC 3.0 allows:
- **Multipole Expansion:** Dipole–dipole ($V_{dd}/R^3$), dipole–quadrupole, and quadrupole–quadrupole terms are calculated, including all relevant angular dependencies via Wigner D-matrices [1612.05529].
- **Van der Waals $C_6$ Coefficients:** Computed perturbatively or via full diagonalization, supporting degenerate/interspecies interactions.
- **Two-Body Eigenvalue Problems:** Short-range spectra (“spaghetti” curves), resonance finding, and derived parameters (blockade radius, Fӧrster resonance fields) [2007.12016].
- **Atom–Surface Interactions:** Non-retarded van der Waals (surface $C_3/z^3$ potentials) and support for real optical materials, e.g., `Sapphire()` via the `AtomSurfaceVdW` class.

These methods enable prediction and analysis of interacting Rydberg ensembles for gate design, quantum simulation, and metrological schemes.

## 4. Optical Lattice and Polarizability Computations

ARC 3.0 incorporates substantial capability for lattice physics and AC field interactions, including:
- **1D Optical Lattice Band Structures:** Hamiltonian diagonalization in the $e^{i(q + mk_\ell)x}$ basis, Bloch-band diagramming, and Wannier function generation.
- **Dynamic (AC) Polarizabilities:** Scalar, tensor, and core contributions are computed via sum-over-states formulas using reduced dipole matrix elements and transition energies. The tool identifies magic wavelengths critical for neutral-atom trapping and state-insensitive clock operation:
  
\[
\alpha_0(\omega)  = \frac{2}{3(2J+1)}\sum_b \frac{|\langle b||er||a\rangle|^2\,(E_b-E_a)}{(E_b-E_a)^2 - (\hbar\omega)^2}
\]
[2007.12016]

Such routines are critical in contemporary neutral-atom quantum engineering and atomic clock development.

## 5. Workflow Examples and Application Domains

ARC 3.0 workflows are tailored for experimental and theoretical investigations in atomic, molecular, and optical (AMO) physics:
- **Quantum Gate Design:** Calculation of $C_6$, blockade radii, and fidelity metrics for Rydberg-mediated two-qubit gates.
- **Metrology and Magic Trap Design:** Determination of state-insensitive trapping conditions by equating dynamic polarizabilities ($\alpha_a(\omega) = \alpha_b(\omega)$) [2007.12016].
- **Quantum Many-Body Simulation:** Long-range interaction matrix generation for input to simulation codes.
- **Atom–Surface Physics:** $C_3$ coefficient estimation for atom-surface proximity sensors.
  
All routines are supported by an extensive documentation suite and online code examples, with additional IPython notebook support and a web-based calculator for rapid prototyping [1612.05529, 2007.12016].

## 6. Installation, Extensibility, and Community Support

ARC 3.0 is distributed via PyPI, requiring only standard Python (3.6+) and common scientific packages (numpy, scipy, matplotlib, sympy, lmfit). Fast C extensions are optional but recommended for high-performance Numerov integration:
```bash
pip install ARC-Alkali-Rydberg-Calculator
```
`arc` can be imported directly in Python scripts or notebooks [2007.12016]. Extension is enabled through subclassing of `AlkaliAtom` or `DivalentAtom` and inclusion of appropriate empirical data. Advanced routines reside in `arc.advanced`, and a caching infrastructure improves repeated computation for large basis sizes (controlled by files in `~/.arc-data`).

Community contributions are centrally managed at https://github.com/nikolasibalic/ARC-Alkali-Rydberg-Calculator, and a full API reference is available online. Built-in support for additional routines is furthered by design choices emphasizing modular architectures and minimal coupling between subsystems [1612.05529, 2007.12016].

---

**Principal references:** [1612.05529], [2007.12016]

Source: https://www.emergentmind.com/topics/arckit-python-library