-
qpfk_dict.py
: to be edited to change the parameters of the qpFK computation (see below for a dictionary of parameters) -
qpfk.py
: contains the qpFK classes and main functions defining the qpFK map -
qpfk_modules.py
: contains the methods to execute the qpFK map
Once qpfk_dict.py
has been edited with the relevant parameters, run the file as
python3 qpfk.py
- Method: 'line_norm', 'region'; choice of method
- Nxy: integer; number of points along each line in computations
- r: integer; order of the Sobolev norm used in
compute_line_norm()
- omega: floats; frequency ω
- alpha: array of n floats; vector α defining the perturbation
- alpha_perp (optional): array of n floats; vector α⊥ perpendicular to α
- Dv: function; derivative of the n-d potential along a line
- CoordRegion: array of floats; min and max values of the amplitudes for each mode of the potential (see Dv); used in
compute_region()
- IndxLine: tuple of integers; indices of the modes to be varied in
compute_region()
parallelization incompute_region()
is done along the IndxLine[0] axis - PolarAngles: array of two floats; min and max value of the angles in 'polar'
- CoordLine: 1d array of floats; min and max values of the amplitudes of the potential used in
compute_line_norm()
- ModesLine: tuple of 0 and 1; specify which modes are being varied (1 for a varied mode)
- DirLine: 1d array of floats; direction of the one-parameter family used in
compute_line_norm()
- AdaptSize: boolean; if True, changes the dimension of arrays depending on the tail of the FFT of h(ψ)
- Lmin: integer; minimum and default value of the dimension of arrays for h(ψ)
- Lmax: integer; maximum value of the dimension of arrays for h(ψ) if AdaptSize is True
- TolMax: float; value of norm for divergence
- TolMin: float; value of norm for convergence
- Threshold: float; threshold value for truncating Fourier series of h(ψ)
- MaxIter: integer; maximum number of iterations for the Newton method
- Type: 'cartesian', 'polar'; type of computation for 2d plots
- ChoiceInitial: 'fixed', 'continuation'; method for the initial conditions of the Newton method
- MethodInitial: 'zero', 'one_step'; method to generate the initial conditions for the Newton iteration
- AdaptEps: boolean; if True adapt the increment of eps in
compute_line_norm()
- MinEps: float; minimum value of the increment of eps if AdaptEps=True
- MonitorGrad: boolean; if True, monitors the gradient of h(ψ)
- Precision: 32, 64 or 128; precision of calculations (default=64)
- SaveData: boolean; if True, the results are saved in a
.mat
file - PlotResults: boolean; if True, the results are plotted right after the computation
- Parallelization: tuple (boolean, int); True for parallelization, int is the number of cores to be used (set int='all' for all of the cores)
For more information: cristel.chandre@cnrs.fr
References:
- R. Calleja, R. de la Llave, Fast numerical computation of quasi-periodic equilibrium states in 1D statistical mechanics, including twist maps, Nonlinearity 22, 1311 (2009)
- R. Calleja, R. de la Llave, Computation of the breakdown of analyticity in statistical mechanics models: numerical results and a renormalization group explanation, Journal of Statistical Physics 141, 940 (2010)
- X. Su, R. de la Llave, KAM theory for quasi-periodic equilibria in one-dimensional quasi-periodic media, SIAM Journal on Mathematical Analysis 44, 3901 (2012)
- T. Blass, R. de la Llave, The analyticity breakdown for Frenkel-Kontorova models in quasi-periodic media: numerical explorations, Journal of Statistical Physics 150, 1183 (2013)
Example: Figure 3(A) of Ref.[4]