Direct solver

Introduction

Calculates transitions in a 1D NMR spectrum through a direct resolvent approach. The solver may be specified as "direct_nmr_solver" or "direct_nmr_solver (conserved)". Here, the second option allows the solver to exploit -conservation, which improves the runtime as well as the maximum system size that can be evaluated.

The method takes a struqture Hamiltonian (in rotating frame) and computes the spectral functions for the function, where corresponds to the spin operator including the gyromagnetic factors gamma, , .

The spectral function is evaluated via the resolvent representation detailed in chapter math. This is done through brute-force diagonalization of either the full Hamiltonian or each block associated with an quantum number in the conserved approach. It returns a spin-resolved array of spectral functions as a numpy array where is the number of spins and the number of frequency points.

Math

Extra Arguments

eta: float Artificial broadening.

The broadening is formally necessary to ensure the convergence of the Fourier integral. In practice it corresponds to the unknown or neglected noise, being intrinsic to the resolution limitation of the spectrometer. Note that the complete spectral function is positive, . However, the spin resolved spectral functions can be negative.

beta: float Inverse temperature

.

Due to the low energy of nuclear spin excitations the temperature in real measurements is practically infinite, i.e. . For theoretical studies or comparison to very low temperature NMR measurements one can apply finite temperatures.

threshold_matrix_elements: float

In the final evaluation, many matrix elements evaluate to zero and hence do not need to be included, when performing the summation for each frequency. We therefore remove all matrix elements below this threshold beforehand.