- KHBogolyubov.mlx: Matlab livescript for the manuscript Bogolyubov’s averaging theorem applied to the Kramers-Henneberger Hamiltonian by E. Floriani, J. Dubois, C. Chandre
Reference: E. Floriani, J. Dubois, C. Chandre, Bogolyubov's averaging theorem applied to the Kramers-Henneberger Hamiltonian, Physica D 431, 133124 (2022); arxiv:2107.01946
@article{floriani2021,
title = {Bogolyubov's averaging theorem applied to the Kramers-Henneberger Hamiltonian},
author = {Floriani, E. and Dubois, J. and Chandre, C.},
journal = {Physica D},
volume = {431},
pages = {133124},
year = {2022},
doi = {10.1016/j.physd.2021.133124},
URL = {https://doi.org/10.1016/j.physd.2021.133124}
}
-
TDSE_dict.py
: to be edited to change the parameters of the TDSE computation (see below for a dictionary of parameters) -
TDSE_classes.py
: contains the TDSE class and main functions -
TDSE.py
: contains the methods to execute TDSE
Once TDSE_dict.py
has been edited with the relevant parameters, run the file as
python3 TDSE.py
or
nohup python3 -u TDSE.py &>TDSE.out < /dev/null &
The list of Python packages and their version are specified in requirements.txt
- Method: string; 'wavefunction', 'ionization', 'HHG', 'plot_potentials, 'plot_eigenstates'; choice of method
- 'wavefunction': displays the wavefunction as a function of time
- 'ionization': computes the ionization probability as well as displaying the wavefunction as a function of time
- 'plot_potentials': plots V(x) and VKH,2(x) and VKH,3(x) as a function of x in the range specified in L
- 'plot_eigenstates': plot the first k eigenstates and eigenvalues of the potential specified in InitialState[1], where k is equal to InitialState[0]+1
- laser_intensity: float or array floats; intensity of the laser field in W cm-2
- laser_wavelength: float or array of floats; wavelength of the laser field in nm
- laser_envelope: string; 'trapez', 'sinus', 'const'; envelope of the laser field during ramp-up and ramp-down
- laser_field: lambda function returning an array of n floats; n components (where n is the dimension of configuration space) of the electric field (dipole approximation); NB: even in dim=1, include brackets[]
- te: array of 3 floats; duration of the ramp-up, plateau and ramp-down in laser cycles
- V: lambda function; ionic potential
- InitialState: integer or array [integer or tuple of integers, string]; integer = index of the initial eigenstate (0 corresponds to the ground state, 1 is the first excited state...); string = potential with which the initial state is computed ('V', 'VKH2' or 'VKH3'); in case a tuple of integers is entered, the initial state is a linear combination of the various states in the tuple
- DisplayCoord: string; 'lab', 'KH2' or 'KH3'; if KH, the wave function is moved to the KH frame (for display and for saving) of order 2 or 3
- L: array of n floats; size of the box in each direction
- N: array of n integers; number of points in each direction
- delta: float or array of n floats; size of the absorbing boundary in each direction (if float, the size is taken equal in all dimensions)
- Lg: float or array of n floats; size of the box for the initial computation of the initial state along each dimension; if float, [-Lg, Lg] in each dimension
- nsteps_per_period: integer; number of steps per laser period for the integration; the time-step is then defined as 2π /ω / nsteps_per_period
- scale: string; 'linear' or 'log'; the axis scale type to apply for the representation of the wavefunction (if Method='wavefunction')
- SaveWaveFunction: boolean; if True, saves the animation of the wavefunction as an animated
.gif
image - PlotData: boolean; if True, displays the wavefunction on the screen as time increases (only for 1D and 2D)
- SaveData: boolean; if True, the time evolution of the wave function are saved in a
.mat
file - Parallelization: int or string; int is the number of cores to be used, 'all' for all of the cores
- dpi: integer; number of dots per inch for the movie frames (if SaveWaveFunction is True)
- refresh: integer; the wavefunction is displayed every refresh time steps
- darkmode: boolean; if True, plots are done in dark mode
The following options may be changed from default values in TDSE_dict.py
:
- tol: relative accuracy for eigenvalues (stopping criterion) (default=10-10, 0 implies machine precision); see eigsh
- maxiter: maximum number of Arnoldi update iterations allowed (default=1000); see eigsh
- ncv: number of Lanczos vectors generated (default=100); see eigsh
- Nphi_KH: integer; number of points in one period to compute the Kramers-Henneberger potentiel VKH(x) (default=212)
- ode_solver: string; choice of splitting symplectic integrator; for a list see pyHamSys (default='BM4')
Reference: E. Floriani, J. Dubois, C. Chandre, Scars of Kramers-Henneberger atoms, arxiv:2407.18575
@misc{floriani2024,
title={Scars of Kramers-Henneberger atoms},
author={Elena Floriani and Jonathan Dubois and Cristel Chandre},
year={2024},
eprint={2407.18575},
archivePrefix={arXiv},
primaryClass={nlin.CD},
url={https://arxiv.org/abs/2407.18575},
}
For more information: cristel.chandre@cnrs.fr