Releases: atcollab/at
AT 2.6
Main changes
- First release under the Apache 2.0 license
- Lattices may be loaded and saved in JSON format. AT files in JSON format can be used for exchanging lattices between Matlab and python, as an alternative to the proprietary
.mat
format.
New features
Bug fixes
- Update atsimplering in Matlab by @lfarv in #719
- Atavedata by @ZeusMarti in #678
- Bug in piwinski touschek scattering B2 term by @swhite2401 in #765
- Fix a regression bug in atavedata by @lfarv in #774
Full Changelog: 2.5...2.6
PyAT 0.6.1
PyAT 0.6
Main changes
- First release under the Apache 2.0 license
- Support of python 3.12
- Introduction of a beam slice monitor for simulation of collective effects
- Introduction of new "Variable" objects (still preliminary)
- Lattices may be loaded and saved in JSON format. AT files in JSON format can be used for exchanging lattices between Matlab and python, as an alternative to the proprietary
.mat
format.
New features
- Beam slice monitor by @swhite2401 in #692
- Added KStep and HStep keyword arguments to fit_tune and fit_chrom by @simoneliuzzo in #711
- return ZERO acceptance if no tracked particle survives in at/pyat/acceptance/boundary.py by @simoneliuzzo in #707
- Add vbeam vgen vbunch buffers for beam loading element by @lcarver in #699
- Support of python 3.12, 64-bit wheels only by @lfarv in #704
- Update GitHub actions by @lfarv in #734
- Upgrade the test sequence for pytest >= 8 by @lfarv in #735
- Update build system by @lfarv in #747
- Variables by @lfarv in #700
- Atavedata by @ZeusMarti in #678
- AT Licensing by @lfarv in #760
- Save and load lattices in JSON format by @lfarv in #766
- Adapted the get_mcf() function by @SebastienJoly in #768
- Also scaling families in tune and chromaticity fits by @swhite2401 in #783
- Add momap multirefpts by @oscarxblanco in #773
- numpy 2.0 support by @lfarv in #785
Bug fixes
- use np.float64 instead of np.float in function get_bunch_length_espread of pyat/at/acceptance/touschek.py module by @simoneliuzzo in #706
- Simple Ring modification to solve energy loss computation bug by @lcarver in #710
- set correct size for zero acceptance in grid and vector configuration by @swhite2401 in #716
- bugfix in rotation angles and improved help of rotate_elem by @swhite2401 in #713
- Fix a few "simple ring" problems by @lfarv in #720
- Corrected documentation errors on PolynomA/B by @lfarv in #723
- Better handling of Matlab RingParam element by @lfarv in #741
- Preserve the case of RingParam attribute names by @lfarv in #744
- Fix Lattice.reduce by @lfarv in #733
- Correct random generators for MPI by @lfarv in #737
- Fix .mat file loading by @lfarv in #750
- BugFix: normalization by 0 in get_timelag_fromU0 by @swhite2401 in #758
- make_copy decorator not working for lattice defined as list by @swhite2401 in #764
- BugFix: memory error incollective effects circular buffers by @swhite2401 in #771
- Bug in piwinski touschek scattering B2 term by @swhite2401 in #765
- Fix a regression bug in atavedata by @lfarv in #774
- Fix bug reading atM66 elements from matlab lattice by @pcsch in #779
- Regression bug from PR #774: beam_current lattice attribute not propagated correctly by @swhite2401 in #778
New Contributors
- @SebastienJoly made their first contribution in #768
Full Changelog: pyat-0.5.0...pyat-0.6
Matlab AT 2.5
Main changes
-
A new keyword
df
is introduced to specify to specify off-momentum computation, in addition todp
anddct
. It is available inatsetcavity
,findorbit*
,findm44
,atlinopt*
,tunechrom
, -
Radiation tapering can be set using
attapering
. Tapering is based on a new attributeFieldScaling
added to all magnet passmethods, -
A set of new "exact" integrators is introduced:
ExactDriftPass
,ExactMultipolePass
,ExactSectorBendPass
,ExactRectangularBendPass
. -
The physical constants used in the C integrators have been updated to the CODATA 2018 values. The values used in python come form scipy.constants and were already up-to-date. So because of an update of the Cγ constant,
results related to radiation and slightly different from the previous values.
New features
- "atsummary", "ringpara" and "atx" use "atlinopt6" for optics by @lfarv in #500
- Introduce an RF frequency shift input to specify off-momentum computation by @lfarv in #501
- Variable multipole by @swhite2401 in #510
- Correct Dipole tapering by @swhite2401 in #623
- Matlab frequency control by @lfarv in #560
- Introduction of an "energy loss" element by @lfarv in #632
- New Matlab function atsimplering by @lfarv in #657
- Create BndStrMPoleSymplectic4RadPass by @catohxb in #665
- New integrators: ExactDriftPass, ExactMultipolePass by @lfarv in #581
- feat: compute longitudinal RDT fluctuations. by @wei0852 in #685
- Update and centralize the C constants by @JeanLucPons in #691
Bug fixes
- quantpass bugfixes by @swhite2401 in #504
- Take "QuantPass" into account when checking 6D motion by @lfarv in #507
- Remove spurious printout by @lfarv in #509
- Secure the emittance computation in atsummary and ringpara by @lfarv in #511
- Failure of GitHub action for Matlab compilation error by @lfarv in #535
- Use the ct coordinate in the variable multipole pass method by @carmignani in #532
- Update quantum diffusion pass methods by @lfarv in #534
- do not split elements with IdTablePass method by @oscarxblanco in #563
- Bug fix on atrotatelattice by @lfarv in #569
- ringparam always returns an emittance by @swhite2401 in #583
- Fixes bug producing infrequent NaN from calcnaff by @pcsch in #587
- Correct return type of wakefunc_long_resonator by @lfarv in #591
- Fix compilation with OPENMP=1 by @lfarv in #607
- atreduce: check entrance and exit angles in bends by @lfarv in #604
- Process aperture and misalignment in CorrectorPass by @swhite2401 in #623
- Fix at disable_6d by @lfarv in #625
- Don't automatically cache the location of RF cavities by @lfarv in #640
- fix: ring phase advances in computeRDT.m by @wei0852 in #652
- Bug fix in atdisable_6d: keep the Energy field in cavities. by @lfarv in #654
- Fix atmaincavities by @lfarv in #656
- Correct the attribute name of solenoids in Matlab by @lfarv in #663
- Bug fix in atgeometry by @lfarv in #667
- Improve the performance of at summary by @lnadolski in #688
- removes ByError from sbend help in matlab by @oscarxblanco in #690
- Fix a regression bug in
AtGetRingProperties
by @lfarv in #701
New Contributors
- @oscarxblanco made their first contribution in #563
- @pcsch made their first contribution in #587
- @wei0852 made their first contribution in #652
- @catohxb made their first contribution in #665
- @JeanLucPons made their first contribution in #691
Full Changelog: 2.4...2.5
PyAT 0.5.0
Main changes
-
A new cleaner interface for tracking is introduced: the new functions
lattice_track
andelement_track
, and the equivalent methodsLattice.track
andElement.track
, replacelattice_pass
,element_pass
andpatpass
. The old functions are still available, -
Radiation tapering is corrected. It is based on a new attribute
FieldScaling
added to all magnet passmethods, -
New elements are available: "beamloading cavity", "energy loss".
-
A set of new "exact" integrators is introduced:
ExactDriftPass
,ExactMultipolePass
,ExactSectorBendPass
,ExactRectangularBendPass
. -
The physical constants used in the C integrators have been updated to the CODATA 2018 values. The values used in python come form scipy.constants and were already up-to-date. So because of an update of the Cγ constant,
results related to radiation and slightly different from the previous values.
New features
- Scattering rate by @swhite2401 in #624
- Introduction of an "energy loss" element by @lfarv in #632
- refpts offset for acceptance by @swhite2401 in #639
- New interface to tracking functions by @swhite2401 in #608
- Display the name of selected elements in plots by @lfarv in #641
- Chromatic functions extended by @swhite2401 in #644
- Correct Dipole tapering by @swhite2401 in #623
- Simple ring model by @lcarver in #643
- Add passive beamloading cavity by @lcarver in #586
- Optimize atimplib by @swhite2401 in #658
- New integrators: ExactDriftPass, ExactMultipolePass by @lfarv in #581
- Create BndStrMPoleSymplectic4RadPass by @catohxb in #665
- parallelize get_tunes_harmonic by @swhite2401 in #681
- Update and centralize the C constants by @JeanLucPons in #691
Bug fixes
- Fix the creation of .mat files by @lfarv in #627
- deprecates ncpu; use pool_size by @oscarxblanco in #631
- Remove a deprecation warning in numpy 1.25 by @lfarv in #626
- Remove the warning when calling plot_beta in transfer line mode by @lfarv in #638
- Correct the axis definition in plot_sigma by @lfarv in #648
- The DPStep keyword in linopt6 raises an error for 4D lattices by @lfarv in #651
- Remove collective passes from internal lattice_pass by @swhite2401 in #650
- Fix attribute names in Simple Ring by @lcarver in #655
- Error parsing args for twiss_in and r_4d by @lcarver in #662
- Collective bugfix by @lcarver in #664
- Parallel lattice_track bugfix and help by @swhite2401 in #675
New Contributors
- @oscarxblanco made their first contribution in #631
- @catohxb made their first contribution in #665
- @JeanLucPons made their first contribution in #691
Full Changelog: pyat-0.4.0...pyat-0.5.0
PyAT 0.4.0
Main modifications
This releases introduces:
- Time-dependent multipole strengths (sine wave, white noise, user-defined)
- Updated values of the physical constants
- Compatibility with python 3.11
- 3d element rotations (tilt, pitch, yaw)
- Plot of the Σ beam matrix
- Multibunch Wakefield
- Multibunch beamloading
- Beam monitor element (statistics on the particle distribution)
- Extend the definition of
refpts
to string patterns, regular expressions,None
,All
,End
special values - Improved documentation and examples
Bug fixes
- quantpass bugfixes by @swhite2401 in #504
- Take "QuantPass" into account when checking 6D motion by @lfarv in #507
- Failure of GitHub action for Matlab compilation error by @lfarv in #535
- at.sigma_matrix bug fix by @lfarv in #536
- Fix bug in convolve_wakefun by @lcarver in #550
- Bug fix on atrotatelattice by @lfarv in #569
- Fix circular imports by @lfarv in #570
- BugFix: refpts=None in get_lifetime by @swhite2401 in #580
- Fix bug in memory allocation of wake method by @lcarver in #579
- Correct return type of wakefunc_long_resonator by @lfarv in #591
- Fix compilation with OPENMP=1 by @lfarv in #607
- atreduce: check entrance and exit angles in bends by @lfarv in #604
- Fix the dtype of geometry data by @lfarv in #612
- Matching fixes by @swhite2401 in #615
New features
- Multibunch wakefieldpass by @swhite2401 in #493
- Introduce an RF frequency shift input to specify off-momentum computation by @lfarv in #505
- Variable multipole by @swhite2401 in #510
- Improve patpass by @lfarv in #515
- Upgrade scipy requirement to 1.4.0 by @lfarv in #520
- Python 3.11 by @lfarv in #523
- Element rotations by @swhite2401 in #519
- Multibunch Beamloading by @swhite2401 in #516
- Beam monitor by @swhite2401 in #521
- Update the python version spec by @lfarv in #526
- random generators compatibility with parallel processing by @lfarv in #513
- Unfold beam by @swhite2401 in #524
- Update at.beam by @lfarv in #531
- Use the ct coordinate in the variable multipole pass method by @carmignani in #532
- Update quantum diffusion pass methods by @lfarv in #534
- at.beam improvement by @lfarv in #537
- Collective unit tests by @swhite2401 in #539
- New plot_sigma() plotting function by @lfarv in #541
- Stub files for C extensions by @lfarv in #542
- relax chromaticity test for numpy 1.24 by @lfarv in #545
- Improvement of the "refpts" argument by @lfarv in #547
- Momentum offset for 6d orbit by @swhite2401 in #540
- do not split elements with IdTablePass method by @oscarxblanco in #563
- Frequency Analysis by @oscarxblanco in #556
- IdTablePass by @oscarxblanco in #558
- Axis definitions by @lfarv in #566
- Develop lattice by @lfarv in #565
- Improve the import order by @lfarv in #576
- zero length elements in lifetime calculation by @swhite2401 in #577
- Lattice operators by @swhite2401 in #573
- ringparam always returns an emittance by @swhite2401 in #583
- Acceptance shift zero + docs by @swhite2401 in #588
- Restore the standard behaviour of reversed(Lattice) by @lfarv in #589
- Energy loss relative tolerance by @swhite2401 in #596
- Relaxed passmethod coherence tests when loading files by @lfarv in #600
- Documentation for Collective Effects by @lcarver in #599
- regex option by @swhite2401 in #601
- Documentation of plot_beta by @lfarv in #617
- Harmonic analysis by @swhite2401 in #613
Incompatibilities
- None expected
New Contributors
- @oscarxblanco made their first contribution in #563
- @pcsch made their first contribution in #587
Full Changelog: pyat-0.3.0...pyat-0.4.0
PyAT 0.3.0
Main changes
-
The default passmethod for RF cavities is now
RFCavityPass
instead of CavityPass -
Introduction of wake elements:
WakeElement
,ResonatorElement
,LongResonatorElement
,ResWallElement
, -
Lifetime and dynamic aperture calculations,
-
new
Lattice.reduce
method, -
Some badly named functions and methods now have aliases with more meaningful names:
legacy name new name Lattice.radiation_on
Lattice.enable_6d
Lattice.radiation_off
Lattice.disable_6d
Lattice.radiation
Lattice.is_6d
@check_radiation
@check_6d
@set_radiation
@set_6d
From now on, it is recommended to use the new names.
-
Computation and plot of the lattice geometry
What's Changed
- Skip test_patpass on linux and MacOS by @lfarv in #357
- Documentation upgrade by @lfarv in #355
- Move the 'constants' module to the top by @lfarv in #365
- Default particle by @lfarv in #367
- Include the test lattices in the distribution by @lfarv in #366
- Test patpass re-enabled + flake8 clean-up by @swhite2401 in #369
- Custom elements by @swhite2401 in #371
- Haissinski solver for short range wake by @lcarver in #361
- Add a "turn" input to atpass by @lfarv in #376
- Set the default cavity PassMethod to RFCavityPass by @lfarv in #372
- Wake factory methods by @swhite2401 in #383
- add collimator element by @swhite2401 in #397
- Lifetime and DA calculations for pyAT by @swhite2401 in #351
- Added catch to sigma_matrix. Added AtErrors and AtWarnings by @lcarver in #387
- Improvement of RF frequency control by @lfarv in #414
- Silent atpass by @swhite2401 in #421
- Update of setuptools_scm by @lfarv in #422
- New Lattice.reduce method by @lfarv in #429
- Run Matlab tests in GitHub actions by @lfarv in #432
- Fix a build problem with numpy 1.23 by @lfarv in #431
- Fix crash in pickling / unpickling Lattice objects by @lfarv in #438
- Fix help on get_cells by @lfarv in #448
- Improve import from matlab by @lfarv in #442
- PyAT: improved timelag solver by @swhite2401 in #451
- Fill pattern by @swhite2401 in #452
- Fit integer tune by @swhite2401 in #458
- patpass poolsize as global DConstant option by @swhite2401 in #459
- Compute and plot 2D ring geometry by @swhite2401 in #460
- Fix and improve some doctrings by @lfarv in #478
- Handle diffusion element in radiation_off() by @swhite2401 in #453
- Update packaging and installation by @lfarv in #483
- Introduce missing aliases by @lfarv in #489
Bug fixes
- Fix bug in CavityPass.c by @lfarv in #358
- Fix WakeElement by @lfarv in #362
- correct fundamental cavity mask by @swhite2401 in #385
- Energy loss tracking by @swhite2401 in #393
- Avoid problems with GitHub Windows runners by @lfarv in #400
- Initialisation of the harmonic number by @lfarv in #401
- Multipole can be instantiated by @lfarv in #455
- Fix acceptance by @swhite2401 in #457
- pyAT Bugfix: 1D acceptance for recursive grid + help improve by @swhite2401 in #484
Full Changelog: pyat-0.2.2...pyat-0.3.0
Matlab AT 2.4
What's Changed
- Improvement of RF frequency control by @lfarv in #414
- fix empty orbit in atlinopt by @swhite2401 in #434
- Run Matlab tests in GitHub actions by @lfarv in #432
- Update of Matlab physical constants by @lfarv in #437
- Fix Matlab tests by @lfarv in #439
- Fix atcavityoff by @lfarv in #447
- Matlab ring properties by @lfarv in #443
- Matlab release 2.4 by @lfarv in #479
Full Changelog: 2.3...2.4
Matlab AT 2.3
Main changes
atlinopt6
replacesatlinopt
in some optics function:atplot
,atfittune
,atfitchrom
,…
This allows working with 6D lattices. However there are still many functions still usingatlinopt
. The transition will be continued,- 2 new functions
atGetRingProperties
andatSetRingProperties
handle global lattices parameters (energy, periodicity, particle, harmonic number). They are stored in the optional RingParam lattice element. Its use is now recommended since it avoids lengthy searches when a parameter is requested, - A new function
atloadlattice
makes reading lattice files easier, - The default passmethod for cavities is now
RFCavityPass
instead ofCavityPass
.CavityPass
is still available but should not be used: it is wrong for multi-tune tracking if the RF frequency is not the nominal one.
List of changes
- Linopt6 in plots and parameters by @lfarv in #297
- first look at PolynomB in *LinearPass by @swhite2401 in #290
- Updated plotAperture by @lfarv in #313
- Remove the dependency of RFCavityPass on harmonic number by @lfarv in #319
- Remove the dependency of find_orbit6 on the harmonic number by @lfarv in #318
- Added optional tolerances in "TouschekPiwinskiLifeTime" by @lfarv in #326
- New README.md file in the docs directory by @lfarv in #331
- New Lattice properties: energy, harmonic number and particle by @lfarv in #329
- Fix problems reading .mat files by @lfarv in #341
- allow fit chrom with radon by @swhite2401 in #349
- Cavity phase offset arg by @swhite2401 in #348
- atenergy computes the harmonic number from the RF frequency by @lfarv in #350
- atsetcavity accepts dp and dct arguments by @lfarv in #354
- Energy and particle available to C integrators by @lfarv in #368
- Allow setting "dp" in 6D linear optics by @lfarv in #364
- New Matlab function atloadlattice by @lfarv in #377
- Add a "turn" input to atpass by @lfarv in #376
- Set the default cavity PassMethod to RFCavityPass by @lfarv in #372
Bug fixes
- Fix on atfastring by @lfarv in #314
- Fit tunes and chromaticities by @lfarv in #327
- Fix WakeFieldPass in Matlab by @lfarv in #343
- Fix problems with transfer line mode by @lfarv in #342
- Fix bug in CavityPass.c by @lfarv in #358
- Fix WakeElement by @lfarv in #362
- Fix atplot when energy is undefined by @lfarv in #375
- Correct bug in plotbetadispcurlyh.m by @lfarv in #382
- Fix plCorrectorStrength by @lfarv in #392
Full Changelog: 2.0...2.3
PyAT 0.2.2
What's Changed
- Pyat docs by @willrogers in #300
- Use pyproject.toml to add numpy build dependency. by @willrogers in #306
- Remove useless files in at integrators by @lfarv in #309
- Updated plotAperture by @lfarv in #313
- Check keys on load by @swhite2401 in #312
- Fix on atfastring by @lfarv in #314
- Cleanup Lattice and cavity access by @lfarv in #316
- Remove the dependency of RFCavityPass on harmonic number by @lfarv in #319
- Remove the dependency of find_orbit6 on the harmonic number by @lfarv in #318
- Fix bug in at.c by @lfarv in #321
- Use the safer lattice_pass instead of atpass in tests by @lfarv in #322
- Pythonised the sigma matrix function by @lcarver in #307
- Added optional tolerances in "TouschekPiwinskiLifeTime" by @lfarv in #326
- Fit tunes and chromaticities by @lfarv in #327
- pypassmethods examples and tests adpated to new rin format by @swhite2401 in #330
- New README.md file in the docs directory by @lfarv in #331
- New Lattice properties: energy, harmonic number and particle by @lfarv in #329
- Restructure the web site by @lfarv in #333
- Website improvement by @lfarv in #336
- Website: Setup for bundler by @lfarv in #337
- Collective effects with MPI + improve interface to passmethod impedance by @swhite2401 in #320
- Set the default particle to "electron" by @lfarv in #339
- Fix problems reading .mat files by @lfarv in #341
- RF cavity tuning: introduce fundamental frequency by @swhite2401 in #334
- Fix WakeFieldPass in Matlab by @lfarv in #343
- Fix problems with transfer line mode by @lfarv in #342
- allow fit chrom with radon by @swhite2401 in #349
- Cavity phase offset arg by @swhite2401 in #348
- check/set multi-processing start method in patpass by @swhite2401 in #347
Full Changelog: pyat-0.2.1...pyat-0.2.2