Quantum dynamics of the kicked rotor
Numerical experiments » Kicked rotor » Quantum dynamics of the kicked rotor
The quantum dynamics of the kicked rotor can be easily numerically studied. Indeed, the evolution operator over one cycle is simply the product of the free evolution operator between two kicks (which is diagonal in momentum representation) and the of the kick operator which is diagonal in x representation. Passing from x to p representation is performed by a Fourier transform. By chaining evolution operators, one can compute the evolution over long times.
kicked_rotor_quantum.py K hbar final_time basis_size number_of_configurations
K: kick strength
hbar: effective Plancks's constant
final_time: time over which the propagation is performed
basis_size: size of the basis used. In momentum space, because of spatail periodicity, the momentum is an integer multiple of hbar. This integer runs from -basis_size/2 to basis_size/2
number_of_configurations: number of initial states used for averaging.
This script computes the quantum dynamics of the periodically kicked rotor by iteration of the evolution operator over one period. The latter is computed using a "split" technique where the kick operator is computed in configuration space (where it is diagonal) and the free propagation is computed in momentum space (where it is diagonal). Passing from configuration to momentum representation is done with a Fast Fourier Transform. For this reason, it is more efficient to use a basis size which is a power of 2. The initial state is chosen randomly near zero momentum, in a band defined by the half_width_initial_state parameter. Averaging is performed over the initial state and the quasi-momentum. The expectation value <p**2> is printed at each kick in the file "p2_vs_time_quantum.dat".
Also the (average) density in momentum space is printed at the final time in the file "density_momentum.dat"
I suggest to perform the following numerical experiments:
- Run a single configuration with K=8.0, hbar=1.0. Observe the diffusive dynamics at short time, followed by dynamical localization and an approximately exponential localization at long time. Give a rough estimate of the localization time and the localization length.
- Increase the number of configurations (say 10 or 100) to reduce fluctuations. Observe the exponential localization at large distance. Compare <p**2(t)> with the classical result obtained previously.
- Decrease the hbar value to 0.5, 0.25, 0.125 (increasing at the same time the basis size) keeping K=8.0 and observe how the results tend to the classical result.
- Use K=11.6, hbar=2.0 as in the experiment of M. Raizen (copy of the paper below). Compare your results with the experimental ones.
______________________________________________________________________________________________
One can also look at the Floquet eigenstates, eigenstates of the evolution operator over one period:
kicked_rotor_Floquet.py K hbar basis_size number_of_printed_eigenstates
K: kick strength
hbar: effective Plancks's constant
basis_size: size of the basis used. In momentum space, because of spatial periodicity, the momentum is an integer multiple of hbar. This integer runs from -basis_size/2 to basis_size/2
number_of_printed eigenstates: number of Floquet states printed in the file "Floquet_eigenstates.dat"
This script computes the Floquet eigenstates of the periodically kicked rotor by diagonalization of the evolution operator over one period. The latter is computed directly in momentum space, using Bessel functions (hopefully with the correct phase factors). It could also be computed using a "split" technique where the kick operator is computed in configuration space (where it is diagonal) and the free propagation is computed in momentum space (where it is diagonal). Passing from configuration to momentum representation is done with a Fast Fourier Transform. Because of truncation of the momentum eigenbasis, the matrix is not exactly unitary and some eigenvalues are not on the unit circle, but inside (worse for large K/hbar). This script prints the spectrum of the evolution operator truncated at -basis_size/2 and basis_size/2-1, thus basis_size eigenvalues in the file "Floquet_eigenvalues.dat". It also prints few eigenstates (more precisely |psi[p)|**2) in the momentum basis, in the file "Floquet_eigenstates.dat". States are chosen completely randomly and can thus be "unconverged" (eigenvalue of modulus smaller than unity) if they touch one of the boundaries. Execution time is dominated by the diagonalization itself, it scales as basis_size**3.
Use e.g. K=11.6, hbar=2.0. Observe that the spectrum of the evolution operator is mostly on the unit circle in the complex plane and that eigenstates are more or less exponentially localized (although with large fluctuations), all with similar localization length. Compare with the localization length observed with temporal propagation.
______________________________________________________________________________________________
Bonus for future lecture. One can add some noise on the kick amplitudes, that is choose for each kick a kick amplitude uniformly distributed in [K-noise_level,K+noise_level].
The corresponding script is:
kicked_rotor_quantum_with_noise.py K hbar final_time basis_size number_of_configurations noise_level
K: kick strength
hbar: effective Plancks's constant
final_time: time over which the propagation is performed
basis_size: size of the basis used. In momentum space, because of spatail periodicity, the momentum is an integer multiple of hbar. This integer runs from -basis_size/2 to basis_size/2
number_of_configurations: number of initial states used for averaging.
noise_level: noise on the kick amplitude
The data are written in files "p2_vs_time_quantum_with_noise.dat" and "density_momentum_with_noise.dat".
I suggest:
- Run the script with 0 noise: kicked_rotor_quantum_with_noise.py 8.0 1.0 500 1024 100 0.
- Increase the noise level to 0.1, 0.2, then 0.5. Observe that a residual diffusion takes place at long time, even for relative nosie as small as 1%. Observe that a Gaussian momentum distribution is restored at sufficiently long time or sufficiently large noise (still small in relative strength).
____________________________________________________________________________________
Warning: For some stupid reason, the CMS of this Web site refuses files with the .py extension. Thus, you have to manually rename the file, changing the final _py to .py




