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.
- {xtrack-0.83.5/xtrack.egg-info → xtrack-0.84.2}/PKG-INFO +1 -1
- xtrack-0.84.2/xtrack/_version.py +1 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitpolygon.h +32 -33
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/track.h +28 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/rng_src/particles_rng.h +9 -10
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/twiss.py +187 -0
- {xtrack-0.83.5 → xtrack-0.84.2/xtrack.egg-info}/PKG-INFO +1 -1
- xtrack-0.83.5/xtrack/_version.py +0 -1
- {xtrack-0.83.5 → xtrack-0.84.2}/LICENSE +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/MANIFEST.in +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/README.md +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/base_classes.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/BB6D.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/beambeam.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/boost.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/qgauss.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/slicing.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/be_beamfields/spacecharge.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/elements.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/line.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/particles.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/pyproject.toml +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/setup.cfg +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/setup.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_acceleration.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_aperture_table.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_apertures.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_bucket_with_ref_energy_change.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_coasting.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_collimation.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_electron_cooler.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_elements.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_elements_thick.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_environment.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_footprint.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_full_rings.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_h6_sps_beamline.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_hvkick.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_ions.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_legacy_multiline_to_env.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_lhc_env.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_line.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_lumi.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_mad_writer.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_madloader.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_madnginterface.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_magnet.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_nested.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_match_tune_chroma_cminus.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multi_bunch_gauss.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multiline.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multisetter.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_multispecies.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_native_madloader.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_optimize_for_tracking.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_particles.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_particles_basics.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_particles_pdg.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_pipeline.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_psb_chicane.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radial_steering.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radiation.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radiation_equilibrium_emittances.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_rbend_rbarc.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_rf_track.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_seeds.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_slice_and_insert_with_replicas.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_slice_elements.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_slicing.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_spin.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_sps_thick.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_survey.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_tapering.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_tilt_shifts.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_tracker.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_twiss.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_vs_madx.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/tests/test_xmask_orbit_correction.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/_temp/lhc_match/var_limits.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/aperture_meas.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/base_element.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/beam_interaction.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/bend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/marker.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/multipole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/octupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/rbend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_cavity.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/exciter.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/magnets.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/rft_element.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/slice_elements.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/beam_elements/slice_elements_thick.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/environment.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/footprint.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/general.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/checks.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/constants.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/headers/synrad_spectrum.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/internal_record.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/json.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/line.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/loss_location_refinement/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/lumi.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_loader.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/loader.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/madx.lark +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_parser/parse.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/mad_writer.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/madng_interface.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/match.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_position_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_profile_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/beam_size_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/last_turns_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/monitors/particles_monitor.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline_legacy/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multiline_legacy/shared_knobs.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multisetter/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/multisetter/multisetter.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/constants.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/masses.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/particles.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/pdg.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/core.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/manager.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/pipeline/multitracker.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_generators.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/slicing.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/survey.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/__init__.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/parser.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/path.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/svgutils/svgutils.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/synctime.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tapering.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/targets.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tracker.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tracker_data.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack/twissplot.py +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/SOURCES.txt +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/requires.txt +0 -0
- {xtrack-0.83.5 → xtrack-0.84.2}/xtrack.egg-info/top_level.txt +0 -0
@@ -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
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
111
|
-
|
112
|
-
|
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
|
-
|
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
|
-
|
15
|
+
VECTORIZE_OVER(ii, n_init);
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
uint32_t s1, s2, s3, s4, s;
|
18
|
+
s = seeds[ii];
|
19
19
|
|
20
|
-
|
20
|
+
rng_set(&s1, &s2, &s3, &s4, s);
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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'
|
xtrack-0.83.5/xtrack/_version.py
DELETED
@@ -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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|