13.10 Highlights of What’s New in Version 2021.1
Here is a summary of what’s changed since release 2020.5. Historical change logs are collected in Section
13.
13.10.1 Bug Fixes for Elements
- The EDRIFT element was being modeled as a regular DRIFT element when the concat_order
parameter of run_setup was set to a non-zero value. This was reported by M. Venturini
(LBNL).
- The STICKY parameter on the APCONTOUR element was ignored and always set to 1.
13.10.2 Bug Fixes for Commands
- A bug was fixed for the touschek_scatter command that resulted in a crash when there
was a RECIRC element in the beamline. This was reported by M. Jebramicik (DESY). A. Xiao
(ANL) helped uncover the cause.
- The ramp_elements and modulate_elements commands now work correctly in conjunction
with load_parameters with change_defined_values=0.
- The final file, which is requested from run_setup, now contains additional parameters giving
the minimum and maximum values of the particle coordinates at the end of the system; e.g.,
xpMaximum gives the maximum x coordinate. These quantities, like (almost) all quantities in
the final file, are available for use in optimization_term expressions.
13.10.3 New and Modified Elements
- Several elements have a new parameter, N_SLICES, that replaces the inconsistently-used and
misleadingly-named N_KICKS parameter. The N_KICKS parameter is still available for use, but is
deprecated.
- CCBEND, CSBEND, CSRCSBEND, FMULT, MULT: The N_KICKS parameter was poorly named.
It actually gave the desired number of full integrator steps, or “slices.”
- KQUAD, KSEXT, KQUSE: The N_KICKS parameter was actually the number of total integrator
substeps. E.g., for the fourth-order integrator, dividing N_KICKS by 4 gave the number
of slices.
- CSBEND, KQUAD, KSEXT, and KOCT have a parameter MALIGN_METHOD that permits invoking new
misalignment methods based on work of M. Venturini [58]. Gregg Penn (LBNL) helped verify the
new methods. Based on the value of this parameter, misalignment calculations are changed as
follows:
- MALIGN_METHOD=0: use the existing method. The new YAW and PITCH (or EYAW and EPITCH
for CSBEND elements) parameters are ignored.
- MALIGN_METHOD=1: use M. Venturini’s method, with misalignment parameters
understood to be relative to the magnet entrance. The new YAW and PITCH (or EYAW and
EPITCH for CSBEND elements) parameters become active. This is presently incompatible
with the moments_output command.
- MALIGN_METHOD=2: use M. Venturini’s method, with misalignment parameters
understood to be relative to the magnet center. The new YAW and PITCH (or EYAW and
EPITCH for CSBEND elements) parameters become active. This is presently incompatible
with the moments_output command.
- The HMON, VMON, and MONI elements can be used to store turn-by-turn BPM readings by setting the
STORE_TURN_BY_TURN parameter to 1. This can be used, for example, to create position-based
triggers using modulate_elements.
- The GKICKMAP element was added, which provides a generalized kickmap that is not specific to
undulators or wigglers (unlike UKICKMAP).
- The SCATTER element now supports uniform distributions in addition to the default gaussian
distribution using the new DISTRIBUTION parameter.
- The CSBEND matrix no longer requires use of the relatively slow tracking-based matrix option
when the steering parameters are used. The element also supports the XSTEERING and
YSTEERING parameters to allow individual control of whether the element is used for
steering.
- The individual-element steering parameters for KSEXT elements are no longer ignored.
13.10.4 New and Modified Commands
- The parameters output of the run_setup command now includes string quantities in the
ParameterValueString column. Numerical quantities are stored in the ParameterValue
column, as before.
- The run_setup command has a new parameter suppress_parameter_defaults. If set to a
nonzero value, the data stored in the parameters output file will not contain data that match
the default values. This can result in much smaller files and faster loading, with the downside
that future changes to the defaults would impact the ability to reproduce a run using a saved
parameter file.
- The load_parameters command now makes consistent use of the ParameterValueString
column in any input files. If the ParameterValue column is present, it is used for numerical
quantities, while the ParameterValueString column is used for string quantities only. If only
ParameterValueString is present, elegant will attempt to scan the string values as needed
for numerical values; this is not the preferred approach as it will degrade performance.
- The losses output of the run_setup command now provides the global coordinate angle
in the horizontal plane when losses_include_global_coordinates=1. One can also now
control the range of s coordinates for recorded particles using the losses_s_limit array.
- The correct_tunes and chromaticity commands now accept lists giving lower and upper
strength limits for each family. In addition, the strength_log files are now compatible with
load_parameters.
- The closed_orbit and correct commands now have a control that allows accepting a closed
orbit results that exceeds the accuracy target, rather than considering this an error. This will
allow correction or other computations to proceed in spite of poor convergence of the closed
orbit.
13.10.5 Changes Specific to the MPI Parallel Version
- A problem was fixed with the particle-swarm optimizer that caused it to abort or return
invalid results when a function evaluation yielded an invalid result. This was in response to
issues raised by forum user marlibgin.
13.10.6 Changes to Related Programs and Files
The elegant distribution includes many programs and scripts that perform computations with elegant
output data, provide interfaces with other programs, or prepare data for use with elegant. These are
listed in Section 8.
Changes to these tools in this release include
- The program computeRBGGE, which allows computation of a generalized gradient
expansion[50] for use with BGGEXP based on field data on a rectangular boundary [57], was
improved to support automatic tuning of the number of gradients and multipoles. In addition,
output of the implied field map is supported.
- The program computeCBGGE was added, which allows computation of a generalized gradient
expansion based on field data on a circular-cylinder boundary [50]. It replaces the script
computeGeneralizedGradients, providing better performance and features.
- The script generateBunchTrain was added. It allows generating particle input files for a
fairly arbitrary multi-train bunch pattern.