-
Notifications
You must be signed in to change notification settings - Fork 0
Spectral_function
The spectral function for the normalized state \psi is defined as (sometimes modulo a factor 2*pi):
where H is the Hamiltonian and the overline denotes averaging over disorder configurations. By construction, it is normalized to unity:
and its average value is:
In a previous version, the spectral function was computed by Fourier transform of the autocorrelation function <\psi(0)|\psi(t)>, with |\psi(t)\rangle computed using the temporal propagation. This is no longer the case, and the spectral function is computed directly using the Kernel Polynomial Method, an expansion of the spectral function in Chebyshev polynomials of the energy.
For the standard spectral function, \psi(0) is a plane wave, but the program allows any initial state.
From its definition, the spectral function computed for the state \psi(0) is exactly equal to the spectral function computed for the initial state \psi(t). In other words, it is preserved during the temporal evolution.
One has to specify the required energy resolution and the total energy range [Emin,Emax]. As explained in Kernel Polynomial Method, the interval [Emin,Emax] MUST contain all the energy spectrum of the Hamiltonian (for all disorder realizations), otherwise a disaster is guaranteed. This is contrast with the previous implementation using the Fourier transform of the temporal propagation, where the spectrum was folded in the requested energy range. Here, the spectrum is output in the energy range [Emin,Emax] chosen by the user. The and-python_ package has a naive check of the [Emin,Emax] values provided by the use and will stop the computation if it detects that the energy range is obviously too narrow.
The energy resolution is the elementary energy step over which the spectral function is computed. The smaller the energy resolution, the larger the order of the KPM method (the number of Chebyshev polynomials included in the expansion). By default, the order n_kpm of the expansion is chosen to be (Emax-Emin)/(2*energy_resolution), but can be overwritten by the use using the n_kpm parameter in the [Spectral] section of the parameter file. The default value makes the spectral function rather smooth, but still able to resolve structures with width of the order of the energy resolution. A smaller n_kpm will smooth such structures, while a larger n_kpm will be more expensive and more noisy. Your mileage will vary, depending on your specific problem.
The spectral function can be computed in the interacting case. In any case, in contrast with the Schroedinger equation, the spectral function is not preserved during the temporal evolution. There are several possible definitions of the spectral function, depending on how much it incorporates of the nonlinear interaction:
where \alpha is an arbitrary real number.
For \alpha=0, one is back to the original Schroedinger definition.
For \alpha=1, the nonlinear Hamitonian is the one of the Gross-Pitaevksii equation.
Both definitions have a drawback. While the spectral function is properly normalized, the average energy:
is not preserved during the temporal evolution.
Another solution is to choose \alpha=1/2, which ensures energy conservation...
Which choice is the best one is not clear|-(.