xtrack 0.83.5__tar.gz → 0.84.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. {xtrack-0.83.5/xtrack.egg-info → xtrack-0.84.2}/PKG-INFO +1 -1
  2. xtrack-0.84.2/xtrack/_version.py +1 -0
  3. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitpolygon.h +32 -33
  4. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/track.h +28 -0
  5. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/rng_src/particles_rng.h +9 -10
  6. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/twiss.py +187 -0
  7. {xtrack-0.83.5 → xtrack-0.84.2/xtrack.egg-info}/PKG-INFO +1 -1
  8. xtrack-0.83.5/xtrack/_version.py +0 -1
  9. {xtrack-0.83.5 → xtrack-0.84.2}/LICENSE +0 -0
  10. {xtrack-0.83.5 → xtrack-0.84.2}/MANIFEST.in +0 -0
  11. {xtrack-0.83.5 → xtrack-0.84.2}/README.md +0 -0
  12. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/__init__.py +0 -0
  13. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/base_classes.py +0 -0
  14. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/BB6D.py +0 -0
  15. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  16. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/__init__.py +0 -0
  17. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/beambeam.py +0 -0
  18. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/boost.py +0 -0
  19. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  20. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  21. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/qgauss.py +0 -0
  22. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/slicing.py +0 -0
  23. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/spacecharge.py +0 -0
  24. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/elements.py +0 -0
  25. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/line.py +0 -0
  26. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/mathlibs.py +0 -0
  27. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/particles.py +0 -0
  28. {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/temp_pyparticles.py +0 -0
  29. {xtrack-0.83.5 → xtrack-0.84.2}/pyproject.toml +0 -0
  30. {xtrack-0.83.5 → xtrack-0.84.2}/setup.cfg +0 -0
  31. {xtrack-0.83.5 → xtrack-0.84.2}/setup.py +0 -0
  32. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_acceleration.py +0 -0
  33. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_amplitude_detuning.py +0 -0
  34. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_aperture_table.py +0 -0
  35. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  36. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_apertures.py +0 -0
  37. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_attr_replicas_and_slices.py +0 -0
  38. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_bucket_with_ref_energy_change.py +0 -0
  39. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_cavity_absolute_time.py +0 -0
  40. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_chromatic_functions_vs_madx.py +0 -0
  41. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_coasting.py +0 -0
  42. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_collective_tracker.py +0 -0
  43. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_collimation.py +0 -0
  44. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_electron_cooler.py +0 -0
  45. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_element_characterization_functions.py +0 -0
  46. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_element_internal_record.py +0 -0
  47. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_elements.py +0 -0
  48. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_elements_classflags.py +0 -0
  49. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_elements_thick.py +0 -0
  50. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_environment.py +0 -0
  51. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  52. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  53. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_footprint.py +0 -0
  54. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_freeze_longitudinal.py +0 -0
  55. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_full_rings.py +0 -0
  56. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_h6_sps_beamline.py +0 -0
  57. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_hvkick.py +0 -0
  58. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_ions.py +0 -0
  59. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_legacy_multiline_to_env.py +0 -0
  60. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_lhc_env.py +0 -0
  61. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_lhc_match_phase_15.py +0 -0
  62. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_line.py +0 -0
  63. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_lumi.py +0 -0
  64. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_mad_writer.py +0 -0
  65. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_madloader.py +0 -0
  66. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_madnginterface.py +0 -0
  67. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_magnet.py +0 -0
  68. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_and_track_from_element.py +0 -0
  69. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_coupling_knob.py +0 -0
  70. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_nested.py +0 -0
  71. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_optics_and_ip_knob.py +0 -0
  72. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  73. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_orbit_bump.py +0 -0
  74. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_tune_chroma_cminus.py +0 -0
  75. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_monitor.py +0 -0
  76. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multi_bunch_gauss.py +0 -0
  77. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multiline.py +0 -0
  78. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multisetter.py +0 -0
  79. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multispecies.py +0 -0
  80. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_native_madloader.py +0 -0
  81. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_optimize_for_tracking.py +0 -0
  82. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_particles.py +0 -0
  83. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_particles_basics.py +0 -0
  84. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_particles_pdg.py +0 -0
  85. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
  86. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_pipeline.py +0 -0
  87. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_prebuild_kernels.py +0 -0
  88. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_ps_against_ptc.py +0 -0
  89. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_ps_multiturn_twiss.py +0 -0
  90. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_psb_chicane.py +0 -0
  91. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_pyht_interface.py +0 -0
  92. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radial_steering.py +0 -0
  93. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radiation.py +0 -0
  94. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radiation_equilibrium_emittances.py +0 -0
  95. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  96. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen.py +0 -0
  97. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen_exp.py +0 -0
  98. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen_gauss.py +0 -0
  99. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen_ruth.py +0 -0
  100. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_rbend_rbarc.py +0 -0
  101. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_rf_track.py +0 -0
  102. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_rotation_signs.py +0 -0
  103. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_second_order_taylor_map.py +0 -0
  104. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_seeds.py +0 -0
  105. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_slice_and_insert_with_replicas.py +0 -0
  106. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_slice_elements.py +0 -0
  107. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_slicing.py +0 -0
  108. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  109. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_spacecharge_in_ring.py +0 -0
  110. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_spin.py +0 -0
  111. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_sps_thick.py +0 -0
  112. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_survey.py +0 -0
  113. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_tapering.py +0 -0
  114. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_thick_lhc.py +0 -0
  115. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_tilt_shifts.py +0 -0
  116. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_tracker.py +0 -0
  117. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_trajectory_correcton.py +0 -0
  118. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_twiss.py +0 -0
  119. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_twiss_vs_madx_psb.py +0 -0
  120. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_vs_madx.py +0 -0
  121. {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_xmask_orbit_correction.py +0 -0
  122. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/__init__.py +0 -0
  123. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/__init__.py +0 -0
  124. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  125. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  126. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  127. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/__init__.py +0 -0
  128. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  129. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  130. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  131. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/aperture_meas.py +0 -0
  132. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/base_element.py +0 -0
  133. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/__init__.py +0 -0
  134. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures.py +0 -0
  135. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  136. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  137. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  138. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  139. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  140. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/beam_interaction.py +0 -0
  141. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements.py +0 -0
  142. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/bend.h +0 -0
  143. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  144. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  145. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  146. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift.h +0 -0
  147. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  148. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  149. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  150. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  151. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  152. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  153. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  154. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/elens.h +0 -0
  155. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  156. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  157. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  158. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet.h +0 -0
  159. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  160. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
  161. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  162. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/marker.h +0 -0
  163. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  164. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  165. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  166. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  167. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  168. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/rbend.h +0 -0
  169. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  170. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  171. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  172. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  173. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  174. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  175. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
  176. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  177. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  178. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
  179. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  180. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  181. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
  182. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  183. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
  184. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  185. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  186. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  187. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  188. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
  189. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
  190. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  191. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
  192. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
  193. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
  194. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
  195. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
  196. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  197. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
  198. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
  199. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
  200. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_cavity.h +0 -0
  201. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  202. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  203. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  204. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
  205. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
  206. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
  207. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
  208. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
  209. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  210. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  211. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
  212. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
  213. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
  214. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
  215. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  216. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  217. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  218. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  219. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  220. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  221. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  222. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/wire.h +0 -0
  223. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  224. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  225. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  226. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  227. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/exciter.py +0 -0
  228. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/magnets.py +0 -0
  229. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/rft_element.py +0 -0
  230. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/slice_elements.py +0 -0
  231. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  232. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/environment.py +0 -0
  233. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/footprint.py +0 -0
  234. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/general.py +0 -0
  235. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/atomicadd.h +0 -0
  236. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/checks.h +0 -0
  237. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/constants.h +0 -0
  238. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/particle_states.h +0 -0
  239. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/synrad_spectrum.h +0 -0
  240. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/internal_record.py +0 -0
  241. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/json.py +0 -0
  242. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/line.py +0 -0
  243. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/linear_normal_form.py +0 -0
  244. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/loss_location_refinement/__init__.py +0 -0
  245. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  246. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/lumi.py +0 -0
  247. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_loader.py +0 -0
  248. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/__init__.py +0 -0
  249. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/loader.py +0 -0
  250. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/madx.lark +0 -0
  251. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/parse.py +0 -0
  252. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_writer.py +0 -0
  253. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/madng_interface.py +0 -0
  254. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/match.py +0 -0
  255. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/__init__.py +0 -0
  256. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_position_monitor.h +0 -0
  257. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_position_monitor.py +0 -0
  258. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_profile_monitor.h +0 -0
  259. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_profile_monitor.py +0 -0
  260. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_size_monitor.h +0 -0
  261. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_size_monitor.py +0 -0
  262. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/last_turns_monitor.h +0 -0
  263. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/last_turns_monitor.py +0 -0
  264. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/particles_monitor.h +0 -0
  265. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/particles_monitor.py +0 -0
  266. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline.py +0 -0
  267. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline_legacy/__init__.py +0 -0
  268. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
  269. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  270. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multisetter/__init__.py +0 -0
  271. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multisetter/multisetter.py +0 -0
  272. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/__init__.py +0 -0
  273. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/constants.py +0 -0
  274. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/masses.py +0 -0
  275. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/particles.py +0 -0
  276. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/pdg.py +0 -0
  277. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/rng_src/base_rng.h +0 -0
  278. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/__init__.py +0 -0
  279. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/core.py +0 -0
  280. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/manager.py +0 -0
  281. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/multitracker.py +0 -0
  282. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/progress_indicator.py +0 -0
  283. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/__init__.py +0 -0
  284. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_generators.py +0 -0
  285. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/exponential.h +0 -0
  286. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  287. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/normal.h +0 -0
  288. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/rutherford.h +0 -0
  289. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/uniform.h +0 -0
  290. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/uniform_accurate.h +0 -0
  291. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/slicing.py +0 -0
  292. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/survey.py +0 -0
  293. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/__init__.py +0 -0
  294. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/parser.py +0 -0
  295. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/path.py +0 -0
  296. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/svgutils.py +0 -0
  297. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/synctime.py +0 -0
  298. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tapering.py +0 -0
  299. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/targets.py +0 -0
  300. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tracker.py +0 -0
  301. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tracker_data.py +0 -0
  302. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tracker_src/tracker.h +0 -0
  303. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/trajectory_correction.py +0 -0
  304. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/twissplot.py +0 -0
  305. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/SOURCES.txt +0 -0
  306. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/dependency_links.txt +0 -0
  307. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/requires.txt +0 -0
  308. {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.83.5
3
+ Version: 0.84.2
4
4
  Summary: Tracking library for particle accelerators
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xtrack
@@ -0,0 +1 @@
1
+ __version__ = '0.84.2'
@@ -56,30 +56,30 @@ void LimitPolygon_track_local_particle(LimitPolygonData el,
56
56
  GPUKERN
57
57
  void LimitPolygon_impact_point_and_normal(
58
58
  LimitPolygonData el,
59
- /*gpuglmem*/ const double* x_in,
60
- /*gpuglmem*/ const double* y_in,
61
- /*gpuglmem*/ const double* z_in,
62
- /*gpuglmem*/ const double* x_out,
63
- /*gpuglmem*/ const double* y_out,
64
- /*gpuglmem*/ const double* z_out,
65
- const int64_t n_impacts,
66
- /*gpuglmem*/ double* x_inters,
67
- /*gpuglmem*/ double* y_inters,
68
- /*gpuglmem*/ double* z_inters,
69
- /*gpuglmem*/ double* Nx_inters,
70
- /*gpuglmem*/ double* Ny_inters,
71
- /*gpuglmem*/ int64_t* i_found){
72
-
59
+ GPUGLMEM const double* x_in,
60
+ GPUGLMEM const double* y_in,
61
+ GPUGLMEM const double* z_in,
62
+ GPUGLMEM const double* x_out,
63
+ GPUGLMEM const double* y_out,
64
+ GPUGLMEM const double* z_out,
65
+ const int64_t n_impacts,
66
+ GPUGLMEM double* x_inters,
67
+ GPUGLMEM double* y_inters,
68
+ GPUGLMEM double* z_inters,
69
+ GPUGLMEM double* Nx_inters,
70
+ GPUGLMEM double* Ny_inters,
71
+ GPUGLMEM int64_t* i_found){
72
+
73
73
  double const tol = 1e-13;
74
74
 
75
75
  int64_t N_edg = LimitPolygonData_len_x_vertices(el);
76
- /*gpuglmem*/ const double* Vx = LimitPolygonData_getp1_x_vertices(el, 0);
77
- /*gpuglmem*/ const double* Vy = LimitPolygonData_getp1_y_vertices(el, 0);
78
- /*gpuglmem*/ const double* Nx = LimitPolygonData_getp1_x_normal(el, 0);
79
- /*gpuglmem*/ const double* Ny = LimitPolygonData_getp1_y_normal(el, 0);
76
+ GPUGLMEM const double* Vx = LimitPolygonData_getp1_x_vertices(el, 0);
77
+ GPUGLMEM const double* Vy = LimitPolygonData_getp1_y_vertices(el, 0);
78
+ GPUGLMEM const double* Nx = LimitPolygonData_getp1_x_normal(el, 0);
79
+ GPUGLMEM const double* Ny = LimitPolygonData_getp1_y_normal(el, 0);
80
80
  double resc_fac = LimitPolygonData_get_resc_fac(el);
81
81
 
82
- for (int64_t i_imp=0; i_imp<n_impacts; i_imp++){ //vectorize_over i_imp n_impacts
82
+ VECTORIZE_OVER(i_imp, n_impacts);
83
83
 
84
84
  double t_min_curr = 1.;
85
85
  int64_t i_found_curr = -1;
@@ -89,9 +89,8 @@ void LimitPolygon_impact_point_and_normal(
89
89
  double y_out_curr = y_out[i_imp];
90
90
 
91
91
  for (int64_t ii=0; ii<N_edg; ii++){
92
-
93
- double t_border;
94
- double t_ii;
92
+ double t_border;
93
+ double t_ii;
95
94
  double const den = ((y_out_curr-y_in_curr)*(Vx[ii+1]-Vx[ii])
96
95
  +(x_in_curr-x_out_curr)*(Vy[ii+1]-Vy[ii]));
97
96
  if (den == 0.){
@@ -99,23 +98,23 @@ void LimitPolygon_impact_point_and_normal(
99
98
  // the case case overlapping the edge is not possible (this would not allow Pin inside and Pout outside - a point on the edge is condidered outside)
100
99
  // the only case left is segment parallel to tue edge => no intersection
101
100
  t_border = -2.;
102
- }
101
+ }
103
102
  else{
104
103
  t_border=((y_out_curr-y_in_curr)*(x_in_curr-Vx[ii])
105
104
  +(x_in_curr-x_out_curr)*(y_in_curr-Vy[ii]))/den;
106
- }
105
+ }
107
106
 
108
107
  if (t_border>=0.-tol && t_border<=1.+tol){
109
108
  t_ii = (Nx[ii]*(Vx[ii]-x_in_curr)
110
- +Ny[ii]*(Vy[ii]-y_in_curr))
111
- /(Nx[ii]*(x_out_curr-x_in_curr)
112
- +Ny[ii]*(y_out_curr-y_in_curr));
109
+ +Ny[ii]*(Vy[ii]-y_in_curr))
110
+ /(Nx[ii]*(x_out_curr-x_in_curr)
111
+ +Ny[ii]*(y_out_curr-y_in_curr));
113
112
  if (t_ii>=0.-tol && t_ii<t_min_curr+tol){
114
- t_min_curr=t_ii;
113
+ t_min_curr = t_ii;
115
114
  i_found_curr = ii;
116
- }
115
+ }
117
116
  }
118
- }
117
+ }
119
118
 
120
119
  t_min_curr=resc_fac*t_min_curr;
121
120
  x_inters[i_imp]=t_min_curr*x_out_curr+(1.-t_min_curr)*x_in_curr;
@@ -125,10 +124,10 @@ void LimitPolygon_impact_point_and_normal(
125
124
  if (i_found_curr>=0){
126
125
  Nx_inters[i_imp] = Nx[i_found_curr];
127
126
  Ny_inters[i_imp] = Ny[i_found_curr];
128
- }
127
+ }
129
128
  i_found[i_imp] = i_found_curr;
130
- } //end_vectorize
131
-
129
+
130
+ END_VECTORIZE;
132
131
  }
133
132
 
134
133
  #endif
@@ -22,6 +22,12 @@
22
22
  #define END_PER_PARTICLE_BLOCK \
23
23
  } \
24
24
  }
25
+
26
+ #define VECTORIZE_OVER(INDEX_NAME, COUNT) \
27
+ for (int INDEX_NAME = 0; INDEX_NAME < (COUNT); INDEX_NAME++) {
28
+
29
+ #define END_VECTORIZE \
30
+ }
25
31
  #endif // XO_CONTEXT_CPU_SERIAL
26
32
 
27
33
  #ifdef XO_CONTEXT_CPU_OPENMP
@@ -42,6 +48,14 @@
42
48
  } \
43
49
  } \
44
50
  }
51
+
52
+ #define VECTORIZE_OVER(INDEX_NAME, COUNT) \
53
+ _Pragma("omp parallel for") \
54
+ for (int INDEX_NAME = 0; INDEX_NAME < (COUNT); INDEX_NAME++) {
55
+
56
+ #define END_VECTORIZE \
57
+ }
58
+
45
59
  #endif // XO_CONTEXT_CPU_OPENMP
46
60
 
47
61
 
@@ -53,6 +67,13 @@
53
67
 
54
68
  #define END_PER_PARTICLE_BLOCK \
55
69
  }
70
+
71
+ #define VECTORIZE_OVER(INDEX_NAME, COUNT) \
72
+ { \
73
+ int INDEX_NAME = blockDim.x * blockIdx.x + threadIdx.x;
74
+
75
+ #define END_VECTORIZE \
76
+ }
56
77
  #endif // XO_CONTEXT_CUDA
57
78
 
58
79
 
@@ -64,6 +85,13 @@
64
85
 
65
86
  #define END_PER_PARTICLE_BLOCK \
66
87
  }
88
+
89
+ #define VECTORIZE_OVER(INDEX_NAME, COUNT) \
90
+ { \
91
+ int INDEX_NAME = get_global_id(0);
92
+
93
+ #define END_VECTORIZE \
94
+ }
67
95
  #endif // XO_CONTEXT_CL
68
96
 
69
97
 
@@ -12,20 +12,19 @@ GPUKERN
12
12
  void Particles_initialize_rand_gen(ParticlesData particles,
13
13
  GPUGLMEM uint32_t* seeds, int n_init){
14
14
 
15
- for (int ii=0; ii<n_init; ii++){//vectorize_over ii n_init
15
+ VECTORIZE_OVER(ii, n_init);
16
16
 
17
- uint32_t s1, s2, s3, s4, s;
18
- s = seeds[ii];
17
+ uint32_t s1, s2, s3, s4, s;
18
+ s = seeds[ii];
19
19
 
20
- rng_set(&s1, &s2, &s3, &s4, s);
20
+ rng_set(&s1, &s2, &s3, &s4, s);
21
21
 
22
- ParticlesData_set__rng_s1(particles, ii, s1);
23
- ParticlesData_set__rng_s2(particles, ii, s2);
24
- ParticlesData_set__rng_s3(particles, ii, s3);
25
- ParticlesData_set__rng_s4(particles, ii, s4);
26
-
27
- }//end_vectorize
22
+ ParticlesData_set__rng_s1(particles, ii, s1);
23
+ ParticlesData_set__rng_s2(particles, ii, s2);
24
+ ParticlesData_set__rng_s3(particles, ii, s3);
25
+ ParticlesData_set__rng_s4(particles, ii, s4);
28
26
 
27
+ END_VECTORIZE;
29
28
  }
30
29
 
31
30
  #endif /* XTRACK_PARTICLES_RNG_H */
@@ -8,6 +8,8 @@ import logging
8
8
  import io
9
9
  import json
10
10
  from functools import partial
11
+ from typing import Literal
12
+
11
13
  import numpy as np
12
14
  from scipy.constants import c as clight
13
15
  from scipy.constants import hbar
@@ -3241,6 +3243,191 @@ class TwissTable(Table):
3241
3243
  **kwargs,
3242
3244
  )
3243
3245
 
3246
+ def get_ibs_and_synrad_emittance_evolution(
3247
+ self,
3248
+ formalism: Literal["Nagaitsev", "Bjorken-Mtingwa", "B&M"],
3249
+ total_beam_intensity: int,
3250
+ gemitt_x: float | None = None,
3251
+ nemitt_x: float | None = None,
3252
+ gemitt_y: float | None = None,
3253
+ nemitt_y: float | None = None,
3254
+ gemitt_zeta: float | None = None,
3255
+ nemitt_zeta: float | None = None,
3256
+ overwrite_sigma_zeta: float | None = None,
3257
+ overwrite_sigma_delta: float | None = None,
3258
+ emittance_coupling_factor: float = 0,
3259
+ emittance_constraint: Literal["coupling", "excitation"] | None = "coupling",
3260
+ rtol: float = 1e-6,
3261
+ tstep: float | None = None,
3262
+ max_steps: float | None = None,
3263
+ verbose: bool = True,
3264
+ **kwargs,
3265
+ ) -> Table:
3266
+ """
3267
+ Compute the evolution of emittances due to Synchrotron Radiation
3268
+ and Intra-Beam Scattering until convergence to equilibrium values.
3269
+ The equilibrium state is determined by an iterative process which
3270
+ consists in computing the IBS growth rates and the emittance time
3271
+ derivatives, then computing the emittances at the next time step,
3272
+ potentially including the effect of transverse constraints, and
3273
+ checking for convergence. The convergence criteria can be chosen
3274
+ by the user.
3275
+
3276
+ Transverse emittances can be constrained to follow two scenarios:
3277
+ - An emittance exchange originating from betatron coupling.
3278
+ - A vertical emittance originating from an excitation.
3279
+
3280
+ The impact from the longitudinal impedance (e.g. bunch lengthening
3281
+ or microwave instability) can be accounted for by specifying the RMS
3282
+ bunch length and momentum spread.
3283
+
3284
+ Notes
3285
+ -----
3286
+ It is required that radiation has been configured in the line,
3287
+ and that this `TwissTable` holds information on the equilibrium
3288
+ state from Synchrotron Radiation. This means calling first
3289
+ `line.configure_radiation(model="mean")` and then the `.twiss()`
3290
+ method with `eneloss_and_damping=True`.
3291
+
3292
+ Warning
3293
+ -------
3294
+ If the user does not provide a starting emittance, the program
3295
+ defaults to using the SR equilibrium value from this `TwissTable`,
3296
+ which is a reasonable defaults for light sources. If a constraint
3297
+ is provided via `emittance_constraint` the starting emittances are
3298
+ re-computed to respect that constraint (this is logged to the user).
3299
+
3300
+ If the user does provide starting emittances **and** a constraint, it
3301
+ is up to the user to make sure these provided values are consistent
3302
+ with the provided constraint!
3303
+
3304
+ Parameters
3305
+ ----------
3306
+ formalism : str
3307
+ Which formalism to use for the computation of the IBS growth rates.
3308
+ Can be ``Nagaitsev`` or ``Bjorken-Mtingwa`` (also accepts ``B&M``),
3309
+ case-insensitively.
3310
+ total_beam_intensity : int
3311
+ The bunch intensity, in [particles per bunch].
3312
+ gemitt_x : float, optional
3313
+ Starting horizontal geometric emittance, in [m]. If neither this nor
3314
+ the normalized one is provided, the SR equilibrium value from this
3315
+ `TwissTable` is used.
3316
+ nemitt_x : float, optional
3317
+ Starting horizontal normalized emittance, in [m]. If neither this nor
3318
+ the geometric one is provided, the SR equilibrium value from this
3319
+ `TwissTable` is used.
3320
+ gemitt_y : float, optional
3321
+ Starting vertical geometric emittance, in [m]. If neither this nor
3322
+ the normalized one is provided, the SR equilibrium value from this
3323
+ `TwissTable` is used.
3324
+ nemitt_y : float, optional
3325
+ Starting vertical normalized emittance, in [m]. If neither this nor
3326
+ the geometric one is provided, the SR equilibrium value from this
3327
+ `TwissTable` is used.
3328
+ gemitt_zeta : float, optional
3329
+ Starting longitudinal geometric emittance, in [m]. If neither this
3330
+ nor the normalized one is provided, the SR equilibrium value from
3331
+ this `TwissTable` is used.
3332
+ nemitt_zeta : float, optional
3333
+ Starting longitudinal normalized emittance, in [m]. If neither this
3334
+ nor the geometric one is provided, the SR equilibrium value from this
3335
+ `TwissTable` is used.
3336
+ emittance_coupling_factor : float, optional
3337
+ The ratio of perturbed transverse emittances due to betatron coupling.
3338
+ If a value is provided, it is taken into account for the evolution of
3339
+ emittances and induces an emittance sharing between the two planes.
3340
+ See the next parameter for possible scenarios and how this value is
3341
+ used. Defaults to 0.
3342
+ emittance_constraint : str, optional
3343
+ If an accepted value is provided, enforces constraints on the transverse
3344
+ emittances. Can be either "coupling" or "excitation", case-insensitively.
3345
+ Defaults to "coupling".
3346
+ - If `coupling`, vertical emittance is the result of linear coupling. In
3347
+ this case both the vertical and horizontal emittances are altered and
3348
+ determined based on the value of `emittance_coupling_factor` and the
3349
+ damping partition numbers. If the horizontal and vertical partition
3350
+ numbers are equal then the total transverse emittance is preserved.
3351
+ - If `excitation`, vertical emittance is the result of an excitation
3352
+ (e.g. from a feedback system) and is determined from the horizontal
3353
+ emittance based on the value of `emittance_coupling_factor`. In this
3354
+ case the total transverse emittance is NOT preserved.
3355
+ Providing `None` allows one to study a scenario without constraint. Note
3356
+ that as `emittance_coupling_factor` defaults to 0, the constraint has no
3357
+ effect unless a non-zero factor is provided.
3358
+ overwrite_sigma_zeta : float, optional
3359
+ The RMS bunch length, in [m]. If provided, overwrites the one computed from
3360
+ the longitudinal emittance and forces a recompute of the longitudinal
3361
+ emittance. Defaults to `None`.
3362
+ overwrite_sigma_delta : float, optional
3363
+ The RMS momentum spread of the bunch. If provided, overwrites the one
3364
+ computed from the longitudinal emittance and forces a recompute of the
3365
+ longitudinal emittance. Defaults to `None`.
3366
+ rtol : float, optional
3367
+ Relative tolerance to determine when convergence is reached: if the relative
3368
+ difference between the computed emittances and those at the previous step is
3369
+ below `rtol`, then convergence is considered achieved. Defaults to 1e-6.
3370
+ tstep : float, optional
3371
+ Time step to use for each iteration, in [s]. If not provided, an
3372
+ adaptive time step is computed based on the IBS growth rates and
3373
+ the damping constants. Defaults to `None`.
3374
+ max_steps : float, optional
3375
+ The maximum number of iterations to perform before stopping the iterative
3376
+ process. If not provided, the process continues until it reaches convergence
3377
+ (according to the provided `rtol`). Defaults to `None`.
3378
+ verbose : bool, optional
3379
+ Whether to print out information on the current iteration step and estimated
3380
+ convergence progress. Defaults to `True`.
3381
+ **kwargs : dict
3382
+ Keyword arguments are passed to the growth rates computation method of
3383
+ the chosen IBS formalism implementation. See the formalism classes in
3384
+ the ``xfields.ibs._analytical`` for more details.
3385
+
3386
+ Returns
3387
+ -------
3388
+ xtrack.Table
3389
+ The convergence calculations results. The table contains the following
3390
+ columns, as time-step by time-step quantities:
3391
+ - time: time values at which quantities are computed, in [s].
3392
+ - gemitt_x: horizontal geometric emittances, in [m].
3393
+ - nemitt_x: horizontal normalized emittances, in [m].
3394
+ - gemitt_y: vertical geometric emittances, in [m].
3395
+ - nemitt_y: vertical normalized emittances, in [m].
3396
+ - gemitt_zeta: longitudinal geometric emittances, in [m].
3397
+ - nemitt_zeta: longitudinal normalized emittances, in [m].
3398
+ - sigma_zeta: bunch lengths, in [m].
3399
+ - sigma_delta: momentum spreads, in [-].
3400
+ - Kx: horizontal IBS amplitude growth rates, in [s^-1].
3401
+ - Ky: vertical IBS amplitude growth rates, in [s^-1].
3402
+ - Kz: longitudinal IBS amplitude growth rates, in [s^-1].
3403
+ The table also contains the following global quantities:
3404
+ - damping_constants_s: radiation damping constants used, in [s].
3405
+ - partition_numbers: damping partition numbers used.
3406
+ - eq_gemitt_x: horizontal equilibrium geometric emittance from synchrotron radiation used, in [m].
3407
+ - eq_gemitt_y: vertical equilibrium geometric emittance from synchrotron radiation used, in [m].
3408
+ - eq_gemitt_zeta: longitudinal equilibrium geometric emittance from synchrotron radiation used, in [m].
3409
+ - eq_sr_ibs_gemitt_x: final horizontal equilibrium geometric emittance converged to, in [m].
3410
+ - eq_sr_ibs_nemitt_x: final horizontal equilibrium normalized emittance converged to, in [m].
3411
+ - eq_sr_ibs_gemitt_y: final vertical equilibrium geometric emittance converged to, in [m].
3412
+ - eq_sr_ibs_gemitt_y: final vertical equilibrium normalized emittance converged to, in [m].
3413
+ - eq_sr_ibs_gemitt_zeta: final longitudinal equilibrium geometric emittance converged to, in [m].
3414
+ - eq_sr_ibs_gemitt_zeta: final longitudinal equilibrium normalized emittance converged to, in [m].
3415
+ """
3416
+ try:
3417
+ from xfields.ibs import get_ibs_and_synrad_emittance_evolution
3418
+ except ImportError:
3419
+ raise ImportError("Please install xfields to use this feature.")
3420
+ return get_ibs_and_synrad_emittance_evolution(
3421
+ self, formalism=formalism, total_beam_intensity=total_beam_intensity,
3422
+ gemitt_x=gemitt_x, nemitt_x=nemitt_x, gemitt_y=gemitt_y, nemitt_y=nemitt_y,
3423
+ gemitt_zeta=gemitt_zeta, nemitt_zeta=nemitt_zeta,
3424
+ overwrite_sigma_zeta=overwrite_sigma_zeta,
3425
+ overwrite_sigma_delta=overwrite_sigma_delta,
3426
+ emittance_coupling_factor=emittance_coupling_factor,
3427
+ emittance_constraint=emittance_constraint,
3428
+ rtol=rtol, tstep=tstep, max_steps=max_steps, verbose=verbose, **kwargs,
3429
+ )
3430
+
3244
3431
  def get_R_matrix(self, start, end):
3245
3432
 
3246
3433
  assert self.values_at == 'entry', 'Not yet implemented for exit'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.83.5
3
+ Version: 0.84.2
4
4
  Summary: Tracking library for particle accelerators
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xtrack
@@ -1 +0,0 @@
1
- __version__ = '0.83.5'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes