7.28 global_settings
- type: action command.
- sequence: should precede run_setup.
- function: change global settings.
- Command syntax, including use of equations and subcommands, is discussed in 7.2. One way
to use the global_settings command is in a configuration file, which can be supplied via
the -configuration option or ELEGANT_CONFIGURATION environment variable; an example
of using this would be to set MPI I/O options an a per-system basis. N.B.: unlike other
commands, values given for parameters in global_settings commands become the new
default for subsequent invocations of the command during the same run. Hence multiple
commands can be used to set individual values without overriding previously-given settings.
&global_settings
long inhibit_fsync = 0;
long allow_overwriting = 1;
long echo_namelists = 1;
long mpi_randomization_mode = 3;
long exact_normalized_emittance = 0;
double SR_gaussian_limit = 3.0;
long inhibit_seed_permutation = 0;
STRING log_file = NULL;
STRING error_log_file = NULL;
long mpi_io_force_file_sync = 0;
long usleep_mpi_io_kludge = 0;
long mpi_io_read_buffer_size = 0;
long mpi_io_write_buffer_size = 0;
long parallel_tracking_based_matrices = 1;
long share_tracking_based_matrices = 1;
long tracking_based_matrices_store_limit = 5000;
double tracking_matrix_step_factor = 1;
double tracking_matrix_points = 9;
double tracking_matrix_step_size[6] = {5e-5, 5e-5, 5e-5, 5e-5, 5e-5, 5e-5};
long warning_limit = 10;
short malign_method = 0;
double slope_limit = 1.0;
double coord_limit = 10.0;
&end
- inhibit_fsync — By default, elegant forces file synchronization across a network file system
to ensure that users see up-to-date files as soon as possible. In cases where a great deal of
output is generated, this can degrade performance. Setting this parameter to 1 will turn off
synchronization until the end of the run.
- allow_overwriting — By default, elegant will overwrite existing output files. If this
parameter is set to 0, it will instead exit if an output file already exists.
- echo_namelists — By default, elegant echoes all namelist input to the terminal. If this
parameter is set to 0, this output will be inhibited.
- SR_gaussian_limit — By default, elegant uses a 3-σ cutoff for the gaussian random
numbers used in simulation of synchrotron radiation from CSBEND, CSRCSBEND, KQUAD, KSEXT,
and SREFFECTS. This parameter allows changing the cutoff.
- inhibit_seed_permutation — If nonzero, randomization of the user-supplied random
number seed is not performed. This feature is useful in that it provides a higher degree
of apparent randomness, in that small changes in the seed result in very different random
sequences.
- log_file — By default, elegant writes status information to the terminal. If a filename is
supplied for this parameter, the output will instead go to the file. On Linux and Unix, using
/dev/null will result in the output being discarded.
- error_log_file — By default, elegant writes error messages to the terminal. If a filename
is supplied for this parameter, the output will instead go to the file. On Linux and Unix, using
/dev/null will result in the output being discarded.
- share_tracking_based_matrices — If non-zero, then the matrices determined by tracking
for various elements (e.g., BRAT, BGGEXP, CCBEND) are computed only once for a set of identical
elements, then shared. This can save considerable computation time.
- mpi_randomization_mode — Controls how the random numbers are seeded on multiple
processors
- 1 — This is the original default, which showed issues in some simulations. The seed on
the ith processor is s0 + 2 * i.
- 2 — The seed on the ith processor is s0 + 2 * i2.
- 3 — This is the new default. The seed on the ith processor is s0 + i * (i + 1).
- 4 — The seed on the ith processor is s0+Ri, where Ri is the ith random integer returned
by the system rand() function.
- exact_normalized_emittance — By default, elegant uses an approximate computation for the
normalized emittance, namely, ϵn = ϵ⟨βγ⟩, where ϵ is the geometric emittance computed from the
trace-space coordinates. If this variable is set to a non-zero value, elegant instead uses a slower but
more accurate method, namely, using the momentum coordinates. [43]. The results will
show up in the sigma and final output files, if these are requested in the run_setup
command.
- mpi_io_force_file_sync — If non-zero, Pelegant will perform a file synchronization after writing
each row of an SDDS file. This can significantly degrade performance, but can solve problems on
some filesystems that result in corrupted files or files in which zeros appear in place of the expected
data.
- mpi_io_read_buffer_size — If non-zero, Pelegant will change the read buffer size
to the given value. May allow improving read performance, but should be used with
care.
- mpi_io_write_buffer_size — If non-zero, Pelegant will change the write buffer size
to the given value. May allow improving write performance, but should be used with
care.
- usleep_mpi_io_kludge — If non-zero, Pelegant will sleep for the given number of
microseconds after writing each row of an SDDS file. This can degrade performance, but
can solve problems on some filesystems that result in corrupted files or files in which
zeros appear in place of the expected data. It may give better performance than setting
mpi_io_force_file_sync=1. A value of 100 is suggested as a starting point, but this will be highly
system-dependent.
- parallel_tracking_based_matrices — If non-zero, then the matrices determined by tracking for
various elements (e.g., BRAT, BGGEXP, CCBEND) are computed using parallel resources in
Pelegant. This can save considerable wall clock time. N.B.: This is set to zero when using
parallel_optimization_setup.
- share_tracking_based_matrices — If non-zero, then the matrices determined by tracking for
various elements (e.g., BRAT, BGGEXP, CCBEND) are computed only once for a set of identical elements,
then shared.
- tracking_based_matrices_store_limit — The maximum number of matrices that will be stored
for possible sharing.
- tracking_matrix_step_factor — The default step size for tracking-based matrices is 5 × 10-5 (in
the appropriate units for each corodinate). This can be increased or decreased by supplying a value
for tracking_matrix_step_factor.
- tracking_matrix_points — By default, five grid points are used in each dimension for
tracking-based matrix determination. This can be increased by setting tracking_matrix_points to
a larger, odd value, at the expense of longer running time. (The run time scales approximately as
the sixth power of this value.)
- tracking_matrix_step_size — Sets the step sizes, in each of the six coordinates, used for
tracking-based matrix determination
- warning_limit — Allows setting a limit on the number of similar warnings that are printed in
detail. Set to 0 to see no detailed warnings, only the summary; this is not recommended. Set to -1 to
see all detailed warnings; this is suggested for debugging only, since it may create large log files and
reduce performance.
- malign_method — Allows globally setting the default misalignment method for those elements that
lack the MALIGN_METHOD parameter.. Five values are recognized:
- 0 — Indicates the original misalignment method that is entrance-centered and includes
three position offsets and roll (TILT).
- 1 — Indicates the new method [58] in entrance-centered mode in the linear
approximation. This includes the possibility of pitch and yaw errors on elements that
support it.
- 2 — Indicates the new method in body-centered mode in the linear approximation. This
includes the possibility of pitch and yaw errors on elements that support it.
- 3 — Indicates the new method [58] in entrance-centered mode using an exact form. This
includes the possibility of pitch and yaw errors on elements that support it.
- 4 — Indicates the new method in body-centered mode using an exact form. This includes
the possibility of pitch and yaw errors on elements that support it.
- slope_limit, coord_limit — By default, elegant limits the maximum slopes (x′ and y′) and
coordinates (x and y) in order to avoid potential overflows and unreasonable values. These
parameters allow users to change those limits.