: an Open-Source Python Package for Simulating Axion-Induced Spin Dynamics


Abstract

The interaction of ultralight bosonic dark matter with spins can be interpreted as a pseudomagnetic field acting on normal matter. Such interactions can be modeled as usual magnetic interactions using spin-evolution (Bloch) equations. , an open-source Python package for simulating spin dynamics induced by both usual and exotic interactions, is presented. The numerical simulations serve as a tool for deriving axion signal signatures, which are crucial for designing experimental searches and data analysis. Simulations are calibrated against theoretical expectations, ensuring the accuracy of the simulated signals. is available at https://github.com/Yuzhe98/AxionBloch, allowing researchers to simulate pseudomagnetic signals under specific configurations of the axion models and experimental setups. The package is documented at http://axionbloch.readthedocs.io/ and includes example scripts for application.

1 Introduction↩︎

The axion was originally proposed to resolve the strong \(CP\) problem in quantum chromodynamics [1][4]. Here \(C\) denotes charge conjugation and \(P\) denotes parity. Later, more general axionlike particles (ALPs) were proposed in various extensions of the Standard Model associated with spontaneously broken global symmetries [5][8]. Concerning the cosmological implications, axions and ALPs are also well-motivated dark matter candidates [9][11]. In this paper, axions and ALPs are referred to as “axions” for simplicity.

Axions may possess couplings to ordinary Standard Model particles [12], including photons, gluons, and fermions. Crucially, axion field gradients (\(\mathbf{\nabla}a\)) may couple to fermionic spins through a pseudoscalar interaction. The Hamiltonian for this interaction can be expressed as \[\mathcal{H}_{\mathrm{int}} = - g_\mathrm{aNN} \mathbf{\nabla}a \cdot \mathbf{S}\,,\] where \(g_\mathrm{aNN}\) is the axion-spin coupling strength, and \(\mathbf{S}\) is the spin operator. The axion field gradient can be regarded as a pseudomagnetic field that mimics the behavior of a real magnetic field, where the Hamiltonian can be written as \[\mathcal{H} = -\hbar \gamma \mathbf{B} \cdot \mathbf{S} \,,\] where \(\gamma\) is the gyromagnetic ratio of the spin, and \(\mathbf{B}\) is the magnetic field. The pseudomagnetic field induces spin dynamics, providing a pathway for detection in precision measurement experiments such as nuclear magnetic resonance (NMR) and comagnetometer-based searches [13][36]. There have been dedicated studies of the axion-induced spin dynamics [37][39], providing axion signal signatures and experimental sensitivity to axion fields. However, to our knowledge, there have not been studies taking advantage of numerical methods to verify the derived axion signal signatures. On the other hand, as more axion models and experiments are being proposed, such as cosmic axion background [40], [41], fine-grained axion [42], and quadratically coupled axion [43], [44], a tool is needed to systematically simulate the axion-induced spin dynamics under various physical conditions and axion field configurations.

In this work, , an open-source package designed to simulate spin dynamics induced by axion fields, is introduced. The interface is implemented in Python, a programming language known for its simplicity and readability, while the underlying numerical integration is implemented in C++ for efficiency. The package provides a flexible framework for modeling axion fields and experimental configurations. By numerically solving spin-evolution equations, enables the prediction and analysis of experimentally observable signals.

2 Capabilities↩︎

In this section, the main components of are described. The section starts with the units, physical quantities, and constants (2.1). Then, it continues with the physics and the algorithm for the numerical simulation (2.2), after which the calibration for the simulation follows (2.3). In the end, an example simulation of axion-induced signals is provided (2.4).

2.1 Units, physical quantities, and constants↩︎

The package takes advantage of astropy1[45] to deal with units and physical quantities. Using astropy.units, physical quantities are created by attaching units to Python scalars or NumPy2[46] arrays. Quantities can be converted between dimensionally equivalent units using the to() method. In astropy, unit definitions are included in both the International System of Units (SI) and the Centimeter-Gram-Second (CGS) systems. Values in SI or CGS units can be found in the quantity’s properties .si and .cgs. A code example can be found in 1.

In axionbloch.constants, a few commonly-used constants in axion and NMR research, such as gyromagnetic ratios, are defined. The constants are instances of astropy.units.Quantity; therefore, all operations on physical quantities are supported for the constants.

a

Figure 1: Examples of operations on physical quantities using astropy.units and axionbloch.constants..

2.2 Algorithm↩︎

2.2.1 Spin dynamics↩︎

Considering the current experiments looking for axion-induced spin dynamics, focuses on spin-\(1/2\) magnetic resonance. Different spins may be addressed in future updates. Magnetization is used as the observable to characterize the spin ensemble. In the presence of magnetic fields or axion-induced pseudomagnetic fields, the magnetization \(\mathbf{M}\) evolves as \[\begin{align} \frac{d M_x}{dt} &= \gamma \left( \mathbf{M} \times \mathbf{B}_{\mathrm{eff}} \right)_x - \frac{M_x}{T_2}\,,\tag{1} \\ \frac{d M_y}{dt} &= \gamma \left( \mathbf{M} \times \mathbf{B}_{\mathrm{eff}} \right)_y - \frac{M_y}{T_2}\,,\tag{2} \\ \frac{d M_z}{dt} &= \gamma \left( \mathbf{M} \times \mathbf{B}_{\mathrm{eff}} \right)_z - \frac{M_z - M_0}{T_1}\,,\tag{3} \end{align}\] where \(\gamma\) is the gyromagnetic ratio, \(\mathbf{B}_{\mathrm{eff}}\) is the total effective field, \(T_1\) and \(T_2\) are relaxation times, and the subscripts \(x\), \(y\), \(z\) denote the Cartesian components. The bias field is usually much stronger than the pseudomagnetic field. Therefore, the rotating coordinate frame (RCF) is adopted to remove the Larmor precession due to the bias field, allowing efficient simulation of the slower axion-induced dynamics of interest.

The transverse relaxation time, characterized by time constant \(T_2^*\), includes the \(T_2\) relaxation and the dephasing due to the inhomogeneity of the bias field. Such inhomogeneity of the bias field is simulated by sampling the spread of the bias fields in the Magnet instance, and solving the Bloch equations for individual bias fields.

2.2.2 Numerical integration↩︎

To derive the time evolution of the magnetization, numerically integrates the Bloch equations using the fourth-order Runge–Kutta (RK4) method. Given a time step \(\Delta t\), an effective magnetic field, and initial magnetization \(\mathbf{M}^0\), the magnetization at the \((n+1)\)-th step can be found via \[\mathbf{M}^{n+1} = \mathbf{M}^n + \frac{\Delta t}{6} \left( \mathbf{k}_1 + 2\mathbf{k}_2 + 2\mathbf{k}_3 + \mathbf{k}_4 \right)\,.\] Here \[\begin{align} \mathbf{k}_1 &= \left.\frac{d\mathbf{M}}{dt}\right|_{\mathbf{M}=\mathbf{M}^n}\,, \\ \mathbf{k}_2 &= \left.\frac{d\mathbf{M}}{dt}\right|_{\mathbf{M}=\mathbf{M}^n + \frac{1}{2}\mathbf{k}_1\Delta t}\,, \\ \mathbf{k}_3 &= \left.\frac{d\mathbf{M}}{dt}\right|_{\mathbf{M}=\mathbf{M}^n + \frac{1}{2}\mathbf{k}_2\Delta t}\,, \\ \mathbf{k}_4 &= \left.\frac{d\mathbf{M}}{dt}\right|_{\mathbf{M}=\mathbf{M}^n + \mathbf{k}_3\Delta t}\,, \end{align}\] where \(d\mathbf{M}/dt\) can be found using the Bloch equations [Eqs. (13 )]. This fourth-order method yields a local truncation error of \(\mathcal{O}(\Delta t^5)\), while the accumulated error over \(N = 1/\Delta t\) steps is of order \(\mathcal{O}(\Delta t^4)\). The time step \(\Delta t\) is usually set to be at least one order of magnitude smaller than the characteristic timescales of the system, such as relaxation times.

2.2.3 Implementation↩︎

Using object-oriented programming, the algorithm is implemented in a modular way to separate experimental configuration, axion field modeling, and numerical integration, allowing for flexible configuration of simulations. A diagram of the architecture of is shown in 2.

a

Figure 2: Architecture of . Each Simulation instance imports parameters from Magnet, Sample, and MagField instances. For axion simulations, axion-model objects are required both for Simulation to configure the simulation and for MagField to generate the pseudomagnetic field. Simulations manages one or multiple Simulation instances. Numerical integration is performed via the blochSimulation API, which provides Python access to the underlying C++ implementation..

On the Python side, classes Sample, Magnet, and MagField encapsulate the relevant experimental parameters, including sample relaxation times, magnetic field strength, and inhomogeneity. The axion models are implemented by dedicated classes, such as MilkyWayAxionHalo, which carry the properties of the axion fields. Together with the method MagField.setAxionFields(), the pseudomagnetic fields can be generated. Different axion models can be incorporated as separate classes without modifying the simulation framework. Simulation is handled within the axionbloch.SimuTools module. In particular, the classes Simulation and Simulations manage the interaction between experimental configurations and axion models, organizing the parameters and execution of single or multiple simulation runs.

The RK4 algorithm is implemented in a dedicated C++ library. The application programming interface (API) for this library is blochSimulation. This C++ backend is interfaced with Python using pybind11,3 enabling cooperation between high-level Python workflow management and low-level efficient numerical computation.

2.3 Calibration↩︎

Accurate calibration is essential to ensure that the simulated signals reliably reflect the underlying physical system and can be compared with experimental observables. In particular, calibration examines the correspondence between the NMR signal and model parameters, including magnetic fields, nuclear spin gyromagnetic ratio \(\gamma\), and relaxation times (\(T_1\), \(T_2\), and \(T_2^*\)). It allows one to verify the correctness and stability of the numerical implementation. In this section, examples of calibration simulations are presented along with theoretical predictions, demonstrating the methodology of calibration. A quantitative analysis is included at the end of the section. For the examples in the section, an ethanol sample and an axial bias field \(\mathbf{B_{0}} = B_0 \mathbf{\hat{e}}_z\) are used.

2.3.1 Pulsed-NMR: free decay and spin echo↩︎

In the pulsed-NMR calibration, one \(\SI{90}{°}\) and one \(\SI{180}{°}\) magnetic-field pulse are applied in the simulation. The magnetization is expected to [47], [48]:

  • oscillate at the Larmor frequency;

  • be tipped by \(\SI{90}{°}\) to the x-y plane by the \(\SI{90}{°}\) pulse;

  • free decay with relaxation time \(T_2^*\) in the absence of pulses;

  • refocus (echo) after \(\SI{180}{°}\) pulses;

  • show decaying amplitude of echoes with relaxation time \(T_2\).

The behaviors described above can be found in the calibration example illustrated in 3 (a), indicating correct simulation behavior. With such a benchmark, magnetic pulses, Larmor precession, and transverse relaxations (\(T_2\) and \(T_2^*\)) can be calibrated.

Figure 3: Simulated magnetic fields in x and y directions (upper row) and induced NMR signals (lower row). The magnetizations plotted are normalized by equilibrium magnetization. (a) After \SI{90}{°} and \SI{180}{°} magnetic-field pulses in x-y plane, free decay (relaxation time T_2^*) and echo signals (relaxation time T_2) are generated. (b) Excited by a weak CW magnetic field, the NMR signals increase with \gamma B T_2^* (1 - e^{-t/T_2^*}), where B = \sqrt{B_x^2+B_y^2} is the magnitude of the excitation.

2.3.2 Continuous-wave NMR↩︎

In the continuous-wave (CW) NMR calibration, an oscillating magnetic field is applied. When the magnetic field strength \(B\) is weak (\(\gamma B T_2^*\ll 1\)) and on resonance, the transverse magnetization grows with \(\gamma B T_2^* (1 - e^{-t/T_2^*})\)[48]. One such example is illustrated in 3 (b). The simulation produces the expected results. With such a benchmark, the Larmor precession and \(T_2^*\) relaxation can be calibrated.

2.3.3 Hyperpolarized sample↩︎

To achieve better sensitivity to the axion field, hyperpolarization is favored in experiments. Compared to thermal polarization at room temperature, hyperpolarization techniques can boost the polarization by orders of magnitude to the order of unity. The package handles the polarization by the Sample class. A 1 %-polarization ethanol sample is used as an example demonstrating the evolution of polarization due to the \(T_1\) relaxation. At first (\(t\ll T_1\)), the polarization should exponentially decay with time constant \(T_1\), until it reaches equilibrium after many \(T_1\). As can be seen in 4, the simulated \(T_1\) relaxation agrees with the expected behavior. More of such simulations can be applied in calibrating \(T_1\) relaxation.

Figure 4: Simulated T_1 relaxation of a hyperpolarized sample in a static bias field. The axial magnetization M_z is normalized by the equilibrium magnetization M_\mathrm{eqb}.

2.3.4 Quantitative evaluation↩︎

The accuracy of simulations is evaluated by the discrepancy between the theoretically expected magnetization and simulation results, characterized by \[\chi^2 = \dfrac{\sum |M_\mathrm{expected} - M_\mathrm{simu}|^2}{\sum |M_\mathrm{simu}|^2} \,. \label{eq:chisq}\tag{4}\] Here \(M_\mathrm{expected}\) and \(M_\mathrm{simu}\) are magnetization expected and simulated, respectively. \(\sum\) denotes the sum over integration steps. A well-calibrated simulation should give \(\chi^2\ll 1\). Calibration scripts are stored in the test suite of . In each calibration, parameters such as Larmor frequency and relaxation times are varied over orders of magnitude to cover all possible cases in simulation. The results of the calibrations are summarized in ¿tbl:tab:calibration95summary?. The discrepancies are generally small (\(\chi^2 < 10^{-4}\)). If a certain simulation precision is required, the \(\chi^2\) value serves as a quantitative reference.

Summary of calibrations. \(\chi^2\) indicating the discrepancy is defined in [eq:chisq]; \(\chi^2\ll 1\) indicates a well-calibrated simulation. Here \(\nu_\mathrm{L}\) stands for Larmor frequency, determined by the bias magnetic field. \(\nu_\mathrm{RCF}\) is RCF frequency. \(\nu_\mathrm{L}\) and \(\nu_\mathrm{RCF}\) are varied from 1 kHz to 1 GHz. The bias field inhomogeneity is swept from 0.1 to 20. \(T_1\) ranges from 1 ms to 1 ks. The integration step size is chosen to be \(T_2^* / 500\). Finer step sizes yield lower \(\chi^2\) at increased computational cost. More technical details of the calibrations can be found in the test suite.
Calibration Parameters calibrated Varied parameters \(\bm{\chi^2}\) Dominant source of error
Pulsed NMR: free decay Pulse amplitude, \(\nu_\mathrm{L}\), \(T_2^*\), \(T_2\) \(\nu_\mathrm{RCF}\) \(<10^{-4}\) Finite number of steps for hard pulses.
CW-NMR \(\nu_\mathrm{L}\) and \(T_2^*\) \(\nu_\mathrm{RCF}\) \(<10^{-5}\) Finite integration step size.
\(T_1\) relaxation \(T_1\) \(\nu_\mathrm{RCF}\), \(\nu_\mathrm{L}\), initial polarization \(<10^{-7}\) Finite integration step size.

2.4 Axion simulation↩︎

Similar to the calibration examples, axion-induced NMR signals are generated by solving the Bloch equations with the axion-induced pseudomagnetic field as part of the effective magnetic field. An example of a commonly considered model – axion constituting the Milky Way galactic dark matter halo [49], [50] is implemented in the class MilkyWayAxionHalo. In this model, the axion field is treated as an oscillating field with a frequency determined by the axion mass, and a linewidth (characterizing the stochasticity) determined by the velocity dispersion of the virialized dark matter halo. The sample is chosen to be , polarized to \(\SI{50}{\%}\) initially, and the bias field is applied along the z direction. The details of the simulation configuration can be found in the code example in 5. Readers are referred to 2 which illustrates the relationship between the objects in the code example. The simulated pseudomagnetic fields and the amplitude of the induced transverse magnetization are shown in 6, in which the signal increases with time at the beginning of the simulation due to the pseudomagnetic field, and then decays due to the \(T_1\) relaxation. The efficiency of the simulation is limited by time consumption for the numerical integration of the Bloch equations. The total number of integration steps \(N\) can be found by \[\begin{align} N &= \text{\texttt{Simulation.rate}} \times \text{\texttt{Simulation.duration}} \nonumber\\ &\quad \times \text{\texttt{MagField.numFields}} \times \text{\texttt{Magnet.numPt}}\,, \end{align}\] where Simulation.rate and Simulation.duration are the simulation rate and duration, MagField.numFields is the number of random pseudomagnetic fields generated to account for the stochasticity of the axion field, and Magnet.numPt is the number of bias fields sampled to account for the inhomogeneity of the bias field. For the example in 5, the total number of integration steps is 7 × 108, and the runtime is 2.7 s on a personal computer (CPU: Intel® Core Ultra 7 155H; base speed: 1.40 GHz). Such moderate runtime allows users to explore different parameter regimes with many simulations.

a

Figure 5: Example code of an axion simulation..

a

b

Figure 6: Simulations of local virialized axion dark matter halo. From top to bottom: pseudomagnetic fields in the transverse plane (\(B_x\) and \(B_y\)) and the transverse magnetization normalized by the equilibrium magnetization (\(M_{xy}/M_\mathrm{eqb}\)). Left: one single simulation. Right: 1000 simulations to account for the stochasticity. The solid lines indicate the value (left column) or mean value (right column) of \(B_x\), \(B_y\), and \(M_{xy}\), while the gray shadows indicate the \(\pm \sigma\) (standard deviation) range. The sample for the simulations is assumed to be polarized to \(\SI{50}{\%}\) initially..

3 Development↩︎

Development of is managed using git,4 with the code hosted on a public GitHub repository.5 Changes to the main codebase follow a pull request workflow, allowing contributions to be reviewed before being merged. Users can participate by forking the repository, making modifications in their fork, and submitting pull requests for review by the developers. As is intended as a collaborative resource, user contributions and suggestions are encouraged and appreciated.

includes a suite of automated tests to ensure correctness and reliability. The tests are implemented using the pytest framework,6 which allows for calibration of physical processes and testing of functions, classes, and modules. The test suite covers core functionalities such as:

  • initialization and manipulation of classes;

  • numerical integration of the Bloch equations;

  • magnetic fields and relaxations;

  • handling of each axion field configuration.

Tests can be executed locally. In the future, tools may be added for online testing considering the demand of testing.

Documentation for is available on Read the Docs.7 It is built using Sphinx8 and provides detailed explanations of the API, along with instructions for installation, configuration, and usage.

As numerous new axion models and experiments are emerging, the functionality of may extend so that it can be a tool for updating our knowledge of the induced spin dynamics. Furthermore, capabilities for simulating zero-to-ultra-low-field (ZULF) NMR will be implemented in future versions.

4 Conclusions↩︎

has been presented as a framework for simulating spin dynamics induced by magnetic fields or axion fields under a variety of physical scenarios. The package adopts SI units so that the inputs and outputs are directly comparable to experimental parameters and observables. Numerical integration of the Bloch equations is performed using a fourth-order Runge–Kutta method in the rotating coordinate frame, enabling stable and efficient simulation. Comprehensive calibrations have been performed to ensure the accuracy of the simulations. An example simulation of axion-induced signals from a local virialized axion dark matter halo is presented to demonstrate the package’s capabilities.

By providing an open-source, well-documented, and tested tool, aims to facilitate the study of axion-induced spin dynamics in precision measurement experiments and to serve as a platform for further method development and incorporation of new axion models.

Note that this package can be of interest to the NMR community for its applications in, for example, educational purposes. For example, students can specify pulse sequences for the simulation and see the visualized simulation results.

Data Availability↩︎

The data and code that generate this manuscript are available at https://github.com/Yuzhe98/AxionBloch-paper.

The author acknowledges helpful discussions with Hendrik Bekker, Dmitry Budker, and Alexander Sushkov, and thanks the CASPEr Collaboration for its support. The author is grateful to the communities supporting the open-source software and tools: git, NumPy, SciPy9[51], matplotlib10, astropy, pybind11, IPython11[52], Jupyter12[53], pytest, Sphinx, GitHub13 and Read the Docs14. This work has been supported by the Cluster of Excellence “Precision Physics, Fundamental Interactions, and Structure of Matter” (PRISMA++ EXC 2118/2) funded by the German Research Foundation (DFG) within the German Excellence Strategy (Project ID 390831469).

References↩︎

[1]
R. D. Peccei and H. R. Quinn, Constraints imposed by \(\mathrm{CP}\) conservation in the presence of pseudoparticles,” Phys. Rev. D, vol. 16, pp. 1791–1797, Sep. 1977, [Online]. Available: https://link.aps.org/doi/10.1103/PhysRevD.16.1791.
[2]
S. Weinberg, A New Light Boson? Phys. Rev. Lett., vol. 40, pp. 223–226, Jan. 1978, [Online]. Available: https://link.aps.org/doi/10.1103/PhysRevLett.40.223.
[3]
R. D. Peccei and H. R. Quinn, \(\mathrm{CP}\) Conservation in the Presence of Pseudoparticles,” Phys. Rev. Lett., vol. 38, pp. 1440–1443, Jun. 1977, [Online]. Available: https://link.aps.org/doi/10.1103/PhysRevLett.38.1440.
[4]
F. Wilczek, Problem of Strong \(P\) and \(T\) Invariance in the Presence of Instantons,” Phys. Rev. Lett., vol. 40, pp. 279–282, Jan. 1978, [Online]. Available: https://link.aps.org/doi/10.1103/PhysRevLett.40.279.
[5]
P. Svrcek and E. Witten, “Axions in string theory,” Journal of High Energy Physics, vol. 2006, no. 6, p. 051, 2006.
[6]
J. E. Kim, “Light pseudoscalars, particle physics and cosmology,” Physics Reports, vol. 150, no. 1–2, pp. 1–177, 1987, doi: 10.1016/0370-1573(87)90017-2.
[7]
J. Jaeckel and A. Ringwald, “The low-energy frontier of particle physics,” Annual Review of Nuclear and Particle Science, vol. 60, no. 1, pp. 405–437, 2010, doi: 10.1146/annurev.nucl.012809.104433.
[8]
A. Arvanitaki, S. Dimopoulos, S. Dubovsky, N. Kaloper, and J. March-Russell, “String axiverse,” Phys. Rev. D, vol. 81, p. 123530, Jun. 2010, doi: 10.1103/PhysRevD.81.123530.
[9]
J. Preskill, M. B. Wise, and F. Wilczek, “Cosmology of the invisible axion,” Physics Letters B, vol. 120, no. 1, pp. 127–132, 1983, doi: https://doi.org/10.1016/0370-2693(83)90637-8.
[10]
L. F. Abbott and P. Sikivie, “A cosmological bound on the invisible axion,” Physics Letters B, vol. 120, no. 1, pp. 133–136, 1983, doi: https://doi.org/10.1016/0370-2693(83)90638-X.
[11]
D. J. E. Marsh, “Axion cosmology,” Physics Reports, vol. 643, pp. 1–79, 2016, doi: 10.1016/j.physrep.2016.06.005.
[12]
P. W. Graham and S. Rajendran, New observables for direct detection of axion dark matter,” Phys. Rev. D, vol. 88, p. 035023, Aug. 2013, doi: 10.1103/PhysRevD.88.035023.
[13]
J. L. Ouellet et al., “First results from ABRACADABRA-10 cm: A search for sub-\(\ensuremath{\mu}\mathrm{eV}\) axion dark matter,” Phys. Rev. Lett., vol. 122, p. 121802, Mar. 2019, doi: 10.1103/PhysRevLett.122.121802.
[14]
N. Du et al., “Search for invisible axion dark matter with the axion dark matter experiment,” Phys. Rev. Lett., vol. 120, p. 151301, Apr. 2018, doi: 10.1103/PhysRevLett.120.151301.
[15]
A. J. Millar et al., “Searching for dark matter with plasma haloscopes,” Phys. Rev. D, vol. 107, p. 055013, Mar. 2023, doi: 10.1103/PhysRevD.107.055013.
[16]
B. Aja et al., The canfranc axion detection experiment (CADEx): Search for axions at 90 GHz with kinetic inductance detectors,” Journal of Cosmology and Astroparticle Physics, vol. 2022, no. 11, p. 044, 2022.
[17]
S. Ahn et al., Extensive Search for Axion Dark Matter over 1 GHz with CAPP’S Main Axion Experiment,” Phys. Rev. X, vol. 14, p. 031023, Aug. 2024, doi: 10.1103/PhysRevX.14.031023.
[18]
L. Brouwer et al., “Projected sensitivity of \({\text{DMRadio-m}}^{3}\): A search for the QCD axion below \(1\text{ }\text{ }\mathrm{\ensuremath{\mu}}\mathrm{eV}\),” Phys. Rev. D, vol. 106, p. 103008, Nov. 2022, doi: 10.1103/PhysRevD.106.103008.
[19]
D. Alesini et al., The future search for low-frequency axions and new physics with the FLASH resonant cavity experiment at Frascati National Laboratories,” Physics of the Dark Universe, vol. 42, p. 101370, 2023.
[20]
L. Zhong et al., “Results from phase 1 of the HAYSTAC microwave cavity axion experiment,” Phys. Rev. D, vol. 97, p. 092001, May 2018, doi: 10.1103/PhysRevD.97.092001.
[21]
J. Egge et al., “First search for dark photon dark matter with a madmax prototype,” Phys. Rev. Lett., vol. 134, p. 151004, Apr. 2025, doi: 10.1103/PhysRevLett.134.151004.
[22]
A. P. Quiskamp et al., “Near-quantum-limited axion dark matter search with the ORGAN experiment around \(26\text{ }\text{ }\mathrm{\ensuremath{\mu}}\mathrm{eV}\),” Phys. Rev. D, vol. 111, p. 095007, May 2025, doi: 10.1103/PhysRevD.111.095007.
[23]
A. Rettaroli et al., Search for axion dark matter with the QUAX–LNF tunable haloscope,” Phys. Rev. D, vol. 110, p. 022008, Jul. 2024, doi: 10.1103/PhysRevD.110.022008.
[24]
A. V. Gramolin, D. Aybas, D. Johnson, J. Adam, and A. O. Sushkov, “Search for axion-like dark matter with ferromagnets,” Nature Physics, vol. 17, no. 1, pp. 79–84, Jan. 2021, doi: 10.1038/s41567-020-1006-6.
[25]
D. Gavilan-Martin et al., “Searching for dark matter with a spin-based interferometer,” Nature Communications, vol. 16, no. 1, p. 4953, May 2025, doi: 10.1038/s41467-025-60178-6.
[26]
I. M. Bloch, G. Ronen, R. Shaham, O. Katz, T. Volansky, and O. Katz, New constraints on axion-like dark matter using a Floquet quantum detector,” Science Advances, vol. 8, no. 5, p. eabl8919, 2022, doi: 10.1126/sciadv.abl8919.
[27]
C. Abel et al., Search for ultralight axion dark matter in a side-band analysis of a \({}^{199}\)Hg free-spin precession signal,” SciPost Phys., vol. 15, p. 058, 2023, doi: 10.21468/SciPostPhys.15.2.058.
[28]
S. Karanth et al., “First search for axionlike particles in a storage ring using a polarized deuteron beam,” Phys. Rev. X, vol. 13, p. 031004, Jul. 2023, doi: 10.1103/PhysRevX.13.031004.
[29]
J. Lee, M. Lisanti, W. A. Terrano, and M. Romalis, “Laboratory constraints on the neutron-spin coupling of feV-scale axions,” Phys. Rev. X, vol. 13, p. 011050, Mar. 2023, doi: 10.1103/PhysRevX.13.011050.
[30]
F. Capozzi et al., “New constraints on ALP couplings to electrons and photons from ArgoNeuT and the MiniBooNE beam dump,” Phys. Rev. D, vol. 108, p. 075019, Oct. 2023, doi: 10.1103/PhysRevD.108.075019.
[31]
D. Budker, P. W. Graham, M. Ledbetter, S. Rajendran, and A. O. Sushkov, Proposal for a Cosmic Axion Spin Precession Experiment (CASPEr),” Phys. Rev. X, vol. 4, p. 021030, May 2014, doi: 10.1103/PhysRevX.4.021030.
[32]
D. F. Jackson Kimball et al., “Overview of the cosmic axion spin precession experiment (CASPEr),” in Microwave cavities and detectors for axion research, 2020, pp. 105–121.
[33]
T. Wang et al., “Application of spin-exchange relaxation-free magnetometry to the cosmic axion spin precession experiment,” Physics of the dark universe, vol. 19, pp. 27–35, 2018.
[34]
D. Aybas et al., “Search for axionlike dark matter using solid-state nuclear magnetic resonance,” Phys. Rev. Lett., vol. 126, p. 141802, Apr. 2021, doi: 10.1103/PhysRevLett.126.141802.
[35]
A. Garcon et al., “Constraints on bosonic dark matter from ultralow-field nuclear magnetic resonance,” Science Advances, vol. 5, no. 10, p. eaax4539, 2019.
[36]
J. Walter et al., “Search for axionlike dark matter using liquid-state nuclear magnetic resonance,” Phys. Rev. D, vol. 112, p. 052008, Sep. 2025, doi: 10.1103/39nc-vr9m.
[37]
D. Aybas et al., “Quantum sensitivity limits of nuclear magnetic resonance experiments searching for new fundamental physics,” Quantum Science and Technology, vol. 6, no. 3, p. 034007, Jun. 2021, doi: 10.1088/2058-9565/abfbbc.
[38]
J. A. Dror, S. Gori, J. M. Leedom, and N. L. Rodd, “Sensitivity of spin-precession axion experiments,” Phys. Rev. Lett., vol. 130, p. 181801, May 2023, doi: 10.1103/PhysRevLett.130.181801.
[39]
Y. Zhang et al., Frequency-Scanning Considerations in Axionlike Dark Matter Spin-Precession Experiments,” Annalen der Physik, vol. 536, no. 1, p. 2300223, 2024, [Online]. Available: https://onlinelibrary.wiley.com/doi/abs/10.1002/andp.202300223.
[40]
J. A. Dror, H. Murayama, and N. L. Rodd, “Cosmic axion background,” Phys. Rev. D, vol. 103, p. 115004, Jun. 2021, doi: 10.1103/PhysRevD.103.115004.
[41]
T. Nitta et al., “Search for a dark-matter-induced cosmic axion background with ADMX,” Phys. Rev. Lett., vol. 131, p. 101002, Sep. 2023, doi: 10.1103/PhysRevLett.131.101002.
[42]
C. A. O’Hare and G. Pierobon, “Fine-grained dark matter substructure and axion haloscopes.” 2025, [Online]. Available: https://arxiv.org/abs/2509.14874.
[43]
X. Gan, H. Kim, and A. Mitridate, “Probing quadratically coupled ultralight dark matter with pulsar timing arrays,” Phys. Rev. D, vol. 113, p. 063034, Mar. 2026, doi: 10.1103/15g1-gklx.
[44]
X. Huang, X. Ma, Z. Xu, I. M. Bloch, and K. Wei, “Earth matter enhanced axion dark matter search.” 2026, [Online]. Available: https://arxiv.org/abs/2602.20260.
[45]
The Astropy Collaboration et al., “Astropy: A community python package for astronomy,” A&A, vol. 558, p. A33, 2013, doi: 10.1051/0004-6361/201322068.
[46]
C. R. Harris et al., “Array programming with NumPy,” Nature, vol. 585, no. 7825, pp. 357–362, Sep. 2020, doi: 10.1038/s41586-020-2649-2.
[47]
H. Y. Carr and E. M. Purcell, Effects of Diffusion on Free Precession in Nuclear Magnetic Resonance Experiments,” Phys. Rev., vol. 94, pp. 630–638, May 1954, [Online]. Available: https://link.aps.org/doi/10.1103/PhysRev.94.630.
[48]
A. Abragam and H. Y. Carr, “The principles of nuclear magnetism,” Physics Today, vol. 14, pp. 56–58, 1961.
[49]
N. W. Evans, C. A. J. O’Hare, and C. McCabe, Refinement of the standard halo model for dark matter searches in light of the Gaia Sausage,” Phys. Rev. D, vol. 99, p. 023012, Jan. 2019, doi: 10.1103/PhysRevD.99.023012.
[50]
A. V. Gramolin et al., Spectral signatures of axionlike dark matter,” Phys. Rev. D, vol. 105, p. 035029, Feb. 2022, [Online]. Available: https://link.aps.org/doi/10.1103/PhysRevD.105.035029.
[51]
P. Virtanen et al., SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python,” Nature Methods, vol. 17, pp. 261–272, 2020, doi: 10.1038/s41592-019-0686-2.
[52]
F. Perez and B. E. Granger, “IPython: A system for interactive scientific computing,” Computing in Science & Engineering, vol. 9, no. 3, pp. 21–29, 2007, doi: 10.1109/MCSE.2007.53.
[53]
B. E. Granger and F. Pérez, “Jupyter: Thinking and storytelling with code and data,” Computing in Science & Engineering, vol. 23, no. 2, pp. 7–14, 2021, doi: 10.1109/MCSE.2021.3059263.

  1. https://astropy.org/↩︎

  2. https://numpy.org/↩︎

  3. http://pybind11.readthedocs.io/↩︎

  4. http://git-scm.com↩︎

  5. https://github.com/Yuzhe98/AxionBloch↩︎

  6. https://docs.pytest.org/↩︎

  7. http://axionbloch.readthedocs.io↩︎

  8. http://www.sphinx-doc.org↩︎

  9. https://docs.scipy.org/↩︎

  10. https://matplotlib.org/↩︎

  11. https://ipython.org/↩︎

  12. https://jupyter.org/↩︎

  13. https://github.com/↩︎

  14. https://about.readthedocs.com/↩︎