Skip to content

List_of_parameters

Dominique Delande edited this page Apr 29, 2022 · 49 revisions

Back to Parameter file

Back to List of sections


This page describes the available parameters in a parameter file, listed by section (see List of sections). This list should be exhaustive. If there is some unexpected error/problem dealing with parameters or sections, the code is contained in anderson/io.py in the routine parse_parameter_file at the beginning of the file.

Each parameter has a type (integer, float, boolean or string) and is either mandatory (if the section exists) or optional (there is then a default value). Each parameter is specified in the parameter file, in the relevant section, by:

parameter_name = value

[System] section

  • dimension: int, optional (default: 1). The dimension of the system. Can be any positive integer. Well tested for dimension=1, 2 and 3. Only hyper-rectangular grids and hyper-rectangular geometries are supported.
  • size_1, size_2...: float, mandatory. The size of the system along each axis, for the dimension dimensions. Sizes beyond dimension are ignored.
  • delta_1, delta_2...: float, mandatory. The spatial discretisation step along each axis.
  • boundary_condition_1, boundary_condition_2...: string, mandatory. The boundary condition along each axis. Can be either periodic or open.
  • one_over_mass: float, optional (default: 1.0). The inverse of the mass is the kinetic energy of the system p^2/2m. one_over_mass=2.0 together wtith delta_i=1.0 might be useful for simulating the Anderson model
  • use_mkl_fft: boolean, optional (default: True). Whether to use the MKL library for Fast Fourier transforms. If False, or if the MKL library is not found, the numpy.fft routines are used.
  • use_mkl_random: boolean, optional (default: True). Whether to use the MKL library for Random Number generation. If False, or if the MKL library is not found, the numpy.random routines are used.

[Disorder] section

  • type: string, optional (default: anderson_gaussian). The disorder type. The known types are:
anderson_gaussian: Gaussian distribution on each site, uncorrelated.
anderson_uniform: Uniform distribution on each site, uncorrelated.
anderson_cauchy: Cauchy (Lorentzian) distribution on each site, uncorrelated (not tested).
regensburg: Gaussian distribution on each site, with Gaussian spatial correlation function.
konstanz: speckle (Rayleigh) distribution on each site, with Gaussian spatial correlation function.
nice: same as anderson_uniform, with additional non-diagonal disorder. Works only in dimension 1, without spin.

Other types, such as speckle or singapore, are not yet implemented.

  • correlation_length: float, optional (defautl:0.0). The correlation length for correlated disorder types. Isotropic in the current version, but anistropic should be added. For Gaussian correlation, the spatial correlation function is proportional to exp(-0.5*r^2/(correlation_length)^2).
  • V0: float, optional (default: 0.0). The disorder strength. For uniform distribution, the random disorder is chosen uniformly in [-V0/2,V0/2]. For Gaussian distribution, it is a normal distribution with zero mean and V0^2 variance, i.e. P(V)=exp(-0.5V^2/V0^2)/sqrt(2pi*V0^2). Takes automatically into account the correlation length for correlated potentials.
  • non_diagonal_disorder_strength: float, optional (default: 0.0). The non diagonal disorder strength for the nice disorder type.
  • b: int, optional (default: 1). The number of lower diagonals for the nice disorder type.
  • randomize_hamiltonian: boolean, optional (default: True). Whether to use a different disorder realization for each configuration.

[Averaging] section

  • n_config: int, optional (default: 1). Total number of disorder configurations over which the averaging is performed. For a MPI run, the code performs the same number of configurations per process, so that the total number of configurations is the smallest integer multiple of the number of processes, larger or equal to n_config.

[Spin] section

  • spin_one_half: boolean, optional (default: False). If False, the code will not use any internal degree of freedom. If True, each site has a 2-component spinor. Currently tested only in dimension 1.
  • gamma: float, optional (default: 0).
  • Omega: float, optional (default: 0).
  • beta: float, optional (default: 0).
  • delta: float, optional (default: 0).
  • h: float, optional (default: 0). These 5 parameters refer to the strength of various operators in the Hamiltonian: spin-orbit coupling, spin components, etc. Refer to the anderson/hamiltonian.py file for the definition of the parameters and operators.

[Nonlinearity] section

  • g_over_volume: float, optional (no default). As the wavefunction is normalized to unity over the volume of the system, 1/volume is the average density rho0. Thus this parameter, if present, is g*rho0. Used in the simulations of the Gross-Pitaevskii equation.
  • g: float, optional (default: 0.0). If g_over_volume is not present, the parameter g is used as the nonlinear strength in the Gross-Pitaevskii equation.

[Wavefunction] section

  • initial_state: string, mandatory. The initial wavefucntion before temporal propagation or for the calculation of a spectral function. The following types are supported:
plane_wave: a plane wave characterized by its momentum (=wave vector).
gaussian_wave_packet: a Gaussian wave packet charaterized by its average momentum and its width along each spatial dimension.
chirped_wave_apcket: lile a Gaussian wave packet, but with additional chirp along each direction.
point: a state localized on a single site, at the origin (useful for computing a density of states).
random: a state with complex Gaussian random amplitude on eahc site. Should be used for computing the density of states.
gaussian_randomized: a spatially Gaussian enveloppe, but with complex Gaussian random amplitude on each site. Work in progress.
multi_point: for debugging only. A state localized on a sub-grid. Do not use, unless you know exactly what you are doing.
  • k0_over_2_pi_1, k0_over_2_pi_2...: float, mandatory for plane_wave, gaussian_wave_packet and chirped_wave_packet. This is the wavevector (divided by 2pi) along each axis. It should be compatible with periodic boundary conditions, that is k0_over_2_pisize should be an integer along each axis. It is rounded (i.e. modified) so that this condition is met.
  • sigma_0_1, sigma_0_2...: float, mandatory for gaussian_wave_packet, chirped_wave_packet and gaussian_randomized. This is the size of the wavepacket along each direction, so that the modulus (not squared) of the wavefunction is proportional to exp(-0.5*x^2/sigma_0^2) along each axis.
  • chirp_1, chirp_2...: float, optional (default: 0.0). This is the chirp factor along each axis, for chirp_wave_wacket. It corresponds to a Gaussian wave packet multiplied by exp(ichirpx^2) along each axis.
  • randomize_initial_state: boolean, optional (default: False). Whether to take a different initial state fro each configuration. Meaningful only for gaussian_randomized and random types.
  • minimum_distance: float, optional (default:0.0). For debugging by experts only. Step of the sub-grid when using multi_point type. Do not use, unless you know exactly what you are doing.
  • teta: float, optional (default: 0.0). For spin systems, the angle defining the internal spin-1/2 state.
  • teta_measurement: float, optional (default: 0.0). For spin systems, the angle of the spin-1/2 state avec which to project after propagation.

[Propagation] section

  • method: string, optional (default: che). This is the numerical method to use for temporal propagation. Can be either che (Chebyshev method) or ode (using the scipy.integrate.ode routine). che is usually faster (roughly one order of magnitude), except for Gross_Pitaevskii with strong nolinearity.
  • accuracy: float, optional (default: 1.e-6). The accuracy of the integrator. 1.e-6 is usually a good compromise. Larger values can produce bullshit. Smaller values slightly increase the CPU time, although the cost is usually modest.
  • data_layout: string, optional (default: complex). The wavefunction is represented by a complex multi-dimensional array. Internally, t can be stored as a complex numpy array (if data_layout=complex) or as two consecutive real numpy arrays storing the real and imaginary parts (if data_layout=real). It should not affect the results, but the speed can be slightly different because of it uses the cache. The differences in speed is most often very small, so that this parameter can be safely omitted.
  • t_max: float, optional (default: 0.0). The total propagation time. Should not be needed for the calculation of the spectral function. Bug to be fixed.
  • delta_t: float, optional (default: 0.0). The time step for the temporal propgation. Note that the default value 0.0 is very stupid, as it crashes the program (bug to be fixed). Internally, the program may use smaller time steps, but it is guaranteed to pause at each mutiple of delta_t, restarting until t_max. This is an important parameter, especially for the Chebyshev method. A too small value will produce a small maximum Chebyshev order (printed at the end of the calculation), reducing efficiency. A too large value for the Gross-Pitaevskii equation using the Chebyshev method will produce a too large maximal nonlinear phase (printed at the end of the calculation). A nonlinear phase below 1.e-2 means that the calculation is ok. Between 1.e-2 and 1.e-1, be careful. Above 1.e-1, the results are almost surely rotten.
  • want_ctypes: boolean, optional (default: True). Most routines are written in Python, with the help of Numpy and Scipy (whose internal routines may be written in C). For the most computationally intensive routines, one can use instead a specific C code using the ctypes library.

[Measurement] section

[Spectral] section

[Diagonalization] section

[Lyapounov] section

Clone this wiki locally