Releases: atcollab/at
PyAT 0.7.1
Main changes
- GPU tracking is now implemented, thanks to @JeanLucPons,
- The computation of diffusion matrices is now modular and is integrated in the C integrators,
- Full support (read/write) of MAD8 and MAD-X files,
- Preliminary support (read/write) of Elegant files,
- Introduction of
Observable
objects. Together withVariable
objects, they provide a unified and expandable set of objects which can be used in matching, response matrices, plots, parameter scans… - Full support of element rotations and translations,
- Computation of generic response matrices.
New matching:
in the next version the matching method will be replaced by a new incompatible one. The transition to the new matching can start with this version by using the following import sequence:
from at.future import RefptsVariable, VariableList, match
The new matching try to satisfy constraints expressed in an ObservableList
by varying the variables in a VariableList
.
New features
- Gpu tracking by @JeanLucPons in #920
- Load MAD-X files by @lfarv in #770
- Observable objects by @lfarv in #738
- Loading of MAD and Elegant files by @lfarv in #844
- Modular computation of diffusion matrices by @lfarv in #742
- Implementation of a new function to rotate an element by @SebastienJoly in #921
- Improved matching by @lfarv in #892
- Response matrices by @lfarv in #893
- RDT observables by @lfarv in #909
Bug fixes
- Bug issue792 by @ZeusMarti in #793
- New test of the average optics values by @lfarv in #794
- use _Complex_I instead of I by @swhite2401 in #802
- Introduction of the function plot_RF_bucket_hamiltonian by @SebastienJoly in #784
- Documentation improvement by @lfarv in #797
- Fix atpass error handling by @lfarv in #798
- Add tune resonances plot by @oscarxblanco in #809
- Always attempt to import at.plot by @lfarv in #812
- fix plot_tune_diagram from future import annotations by @oscarxblanco in #813
- Longitudinal aperture by @SebastienJoly in #782
- check len(refpts) > 2 after removing zero length elements in get_lifetime() by @swhite2401 in #801
- Track all refpts in one track function call in acceptance calculations by @swhite2401 in #811
- Bug Fix: Wiggler diffusion matrix by @joanarenillas in #759
- Add feeddown polba by @oscarxblanco in #815
- Fix error messages in load_madx by @lfarv in #824
- Fix wiggler radiation by @lfarv in #822
- Fix saving lattices in m-files by @lfarv in #832
- concat changed to concatenate in pyat/at/physics/avlinopt by @simoneliuzzo in #834
- Fix LatticeObservable by @lfarv in #842
- Fix the "repr" representation of Elements (after numpy2.0) by @lfarv in #843
- fix uninitialised random generators in elempass by @lfarv in #845
- turn off quantdiff in ohmi_envelope by @swhite2401 in #840
- Tune, chromaticity and detuning periodicty by @swhite2401 in #837
- Fix "fastring" by @lfarv in #849
- Access to the lattice energy in integrators by @lfarv in #816
- Fix a bug in load_madx by @lfarv in #851
- Suppress a wrong warning when using linopt in beamline mode by @lfarv in #853
- Documentation of plotting functions by @lfarv in #856
- Fix docstrings in the acceptance.py module by @lfarv in #855
- Update Documentation by @lfarv in #857
- Set "periodicity" to 1 by default by @lfarv in #859
- Update GitHub actions by @lfarv in #861
- Compute RDTs by @swhite2401 in #821
- Tune documentation for dark mode by @lfarv in #864
- New matching by @lfarv in #806
- Fix ohmienvelope with wigglers by @lfarv in #870
- Documentation: new figure for the AT coordinate system by @lfarv in #876
- Set the wiggler indivisible by @lfarv in #875
- Fix the energy loss computation by @lfarv in #877
- Upgrade tests for new GitHub runners by @lfarv in #878
- Fix OpenMP compilation by @lfarv in #882
- Improvement of AT build process by @lfarv in #889
- Improve radiation_parameters by @lfarv in #888
- Fix OpenMP compilation bug by @lfarv in #891
- New element properties: dx, dy, tilt by @lfarv in #902
- Fix the energyloss computation for simple ring by @lcarver in #911
- Add non-linear chromaticity to DeltaQPass by @lcarver in #912
- Allow setting the seed of random generators by @lfarv in #905
- Fix atlinopt with harmonic cavity by @lfarv in #917
- Setting the nominal frequency on 6d lattices by @lfarv in #923
- Reorganise the rotation and translation functions by @lfarv in #932
New Contributors
- @joanarenillas made their first contribution in #759
Full Changelog: pyat-0.6.1...pyat-0.7.1
AT 2.7
Main changes
- GPU tracking is now implemented, thanks to @JeanLucPons,
- Physical constants are updated to CODADA 2022. This may cause slight changes in the results,
- The computation of diffusion matrices is now modular and is integrated in the C integrators,
- The seed of random generators can now be set at the beginning of tracking, as an argument of ringpass and linepass.
New features
- Gpu tracking by @JeanLucPons in #920
- Update of Matlab physical constants to CODADA 2022 by @lfarv in #884
- Modular computation of diffusion matrices by @lfarv in #742
- Allow setting the seed of random generators by @lfarv in #905
Bug fixes
- Update momentum aperture matlab by @oscarxblanco in #786
- add check_6d in findorbit4 and atlinopt4 by @oscarxblanco in #789
- New test of the average optics values by @lfarv in #794
- use _Complex_I instead of I by @swhite2401 in #802
- update AT matlab help default pass method in atthinmultipole by @oscarxblanco in #819
- Bug Fix: Wiggler diffusion matrix by @joanarenillas in #759
- Bug fix in atavedata by @lfarv in #823
- add units and example of use to help by @oscarxblanco in #827
- matlab ohmienvelope add help message; add check_6d by @oscarxblanco in #830
- Fix wiggler radiation by @lfarv in #822
- Fix handling of JSON files when harmonic_number is undefined by @lfarv in #831
- Access to the lattice energy in integrators by @lfarv in #816
- Fix atplot for single-element lattices by @lfarv in #854
- Fix diffusion_matrix compilation on Linux by @lfarv in #863
- Tune documentation for dark mode by @lfarv in #864
- Fix ohmienvelope with wigglers by @lfarv in #870
- adds Multipole class to
atdisable_6d
atenable_6d
by @oscarxblanco in #874 - Documentation: new figure for the AT coordinate system by @lfarv in #876
- Fix the energy loss computation by @lfarv in #877
- Upgrade tests for new GitHub runners by @lfarv in #878
- Fix OpenMP compilation by @lfarv in #882
- remove seed from
atQuantumDiff.m
help by @oscarxblanco in #881 - Improvement of AT build process by @lfarv in #889
- Improve radiation_parameters by @lfarv in #888
- Fix OpenMP compilation bug by @lfarv in #891
- Fix the energyloss computation for simple ring by @lcarver in #911
- Add non-linear chromaticity to DeltaQPass by @lcarver in #912
- Fix atlinopt with harmonic cavity by @lfarv in #917
- Fix the display of element labels in atplot by @lfarv in #927
- Setting the nominal frequency on 6d lattices by @lfarv in #923
- Fix atmexall by @lcarver in #928
Full Changelog: 2.6...2.7
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