xtrack 0.78.0__tar.gz → 0.79.0__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.78.0/xtrack.egg-info → xtrack-0.79.0}/PKG-INFO +1 -1
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_elements_thick.py +112 -7
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_environment.py +82 -56
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_line.py +2 -1
- xtrack-0.79.0/tests/test_magnet.py +1827 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_nested.py +4 -4
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_tune_chroma_cminus.py +16 -16
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_psb_chicane.py +16 -16
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_radiation.py +29 -19
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_radiation_equilibrium_emittances.py +21 -21
- xtrack-0.79.0/tests/test_radiation_equilibrium_emittances_thick.py +230 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_slice_elements.py +60 -18
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_slicing.py +71 -54
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_sps_thick.py +32 -30
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_tapering.py +15 -15
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_tilt_shifts.py +2 -2
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_twiss.py +5 -5
- xtrack-0.79.0/xtrack/_version.py +1 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/__init__.py +6 -2
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements.py +403 -172
- xtrack-0.79.0/xtrack/beam_elements/elements_src/bend.h +55 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/dipoleedge.h +1 -1
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -17
- xtrack-0.79.0/xtrack/beam_elements/elements_src/magnet.h +86 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/magnet_drift.h +27 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/magnet_edge.h +52 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/magnet_kick.h +39 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/multipole.h +62 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/multipoleedge.h +33 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/octupole.h +67 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/quadrupole.h +67 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/rbend.h +63 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/sextupole.h +67 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/solenoid.h +0 -3
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thick_slice_bend.h +66 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thick_slice_octupole.h +81 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +81 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thick_slice_rbend.h +66 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +81 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_bend.h +68 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_octupole.h +70 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +43 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +44 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +69 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +44 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +44 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_rbend.h +68 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +70 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +44 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +44 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/track_magnet.h +507 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/track_magnet_drift.h +375 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/track_magnet_edge.h +123 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/track_magnet_kick.h +197 -0
- xtrack-0.79.0/xtrack/beam_elements/elements_src/track_magnet_radiation.h +100 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_mult_fringe.h +34 -20
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_multipole.h +16 -5
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_quadrupole.h +18 -8
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_solenoid.h +11 -2
- xtrack-0.79.0/xtrack/beam_elements/magnets.py +687 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/slice_elements.py +319 -32
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/slice_elements_thick.py +23 -37
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/environment.py +2 -1
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/headers/synrad_spectrum.h +26 -16
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/line.py +34 -15
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/twiss.py +23 -28
- {xtrack-0.78.0 → xtrack-0.79.0/xtrack.egg-info}/PKG-INFO +1 -1
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack.egg-info/SOURCES.txt +19 -0
- xtrack-0.78.0/xtrack/_version.py +0 -1
- xtrack-0.78.0/xtrack/beam_elements/elements_src/bend.h +0 -144
- xtrack-0.78.0/xtrack/beam_elements/elements_src/multipole.h +0 -83
- xtrack-0.78.0/xtrack/beam_elements/elements_src/octupole.h +0 -82
- xtrack-0.78.0/xtrack/beam_elements/elements_src/quadrupole.h +0 -44
- xtrack-0.78.0/xtrack/beam_elements/elements_src/rbend.h +0 -145
- xtrack-0.78.0/xtrack/beam_elements/elements_src/sextupole.h +0 -79
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -47
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -54
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -46
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -47
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -54
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -91
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -88
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -87
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -90
- xtrack-0.78.0/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -88
- {xtrack-0.78.0 → xtrack-0.79.0}/LICENSE +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/MANIFEST.in +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/README.md +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/base_classes.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/BB6D.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/beambeam.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/boost.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/qgauss.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/slicing.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/be_beamfields/spacecharge.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/elements.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/line.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/particles.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/pyproject.toml +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/setup.cfg +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/setup.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_acceleration.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_apertures.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_bucket_with_ref_energy_change.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_coasting.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_collimation.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_elements.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_footprint.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_full_rings.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_h6_sps_beamline.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_hvkick.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_ions.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_legacy_multiline_to_env.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_lhc_env.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_lumi.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_mad_writer.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_madloader.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_madnginterface.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_multi_bunch_gauss.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_multiline.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_multisetter.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_multispecies.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_native_madloader.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_particles.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_pipeline.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_radial_steering.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_random_gen.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_rbend_rbarc.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_rf_track.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_seeds.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_slice_and_insert_with_replicas.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_survey.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_tracker.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_vs_madx.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/tests/test_xmask_orbit_correction.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/lhc_match/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/_temp/lhc_match/var_limits.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/base_element.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/beam_interaction.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_elem.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/exciter.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/beam_elements/rft_element.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/footprint.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/general.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/headers/checks.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/headers/constants.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/internal_record.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/json.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/loss_location_refinement/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/lumi.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/mad_loader.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/mad_parser/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/mad_parser/loader.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/mad_parser/madx.lark +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/mad_parser/parse.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/mad_writer.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/madng_interface.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/match.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/beam_position_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/beam_profile_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/beam_size_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/last_turns_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/monitors/particles_monitor.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/multiline.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/multiline_legacy/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/multiline_legacy/shared_knobs.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/multisetter/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/multisetter/multisetter.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/particles/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/particles/constants.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/particles/particles.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/particles/rng_src/particles_rng.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/pipeline/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/pipeline/core.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/pipeline/manager.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/pipeline/multitracker.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/__init__.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_generators.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/slicing.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/survey.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/synctime.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/tapering.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/targets.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/tracker.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/tracker_data.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack/twissplot.py +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack.egg-info/requires.txt +0 -0
- {xtrack-0.78.0 → xtrack-0.79.0}/xtrack.egg-info/top_level.txt +0 -0
@@ -61,7 +61,7 @@ def test_combined_function_dipole_against_ptc(test_context, k0, k1, k2, length,
|
|
61
61
|
line_thick = ml.make_line()
|
62
62
|
line_thick.config.XTRACK_USE_EXACT_DRIFTS = True # to be consistent with mad
|
63
63
|
line_thick.build_tracker(_context=test_context)
|
64
|
-
line_thick.configure_bend_model(core=model, edge='
|
64
|
+
line_thick.configure_bend_model(core=model, edge='dipole-only')
|
65
65
|
|
66
66
|
if use_multipole:
|
67
67
|
line_thick['b'].knl[1] = k1 * length
|
@@ -144,7 +144,7 @@ def test_combined_function_dipole_expanded(test_context):
|
|
144
144
|
line_thick.build_tracker(_context=test_context)
|
145
145
|
|
146
146
|
line_thick.configure_bend_model(core='expanded', num_multipole_kicks=100)
|
147
|
-
assert line_thick['b'].model == '
|
147
|
+
assert line_thick['b'].model == 'mat-kick-mat'
|
148
148
|
p_test = p0.copy(_context=test_context)
|
149
149
|
line_thick.track(p_test)
|
150
150
|
p_test.move(_context=xo.context_default)
|
@@ -230,7 +230,8 @@ def test_thick_bend_survey():
|
|
230
230
|
def test_thick_multipolar_component(test_context, element_type, h):
|
231
231
|
bend_length = 1.0
|
232
232
|
k0 = h
|
233
|
-
knl = np.array([0.0, 0.
|
233
|
+
knl = np.array([0.0, 0.0, -0.02, 0.03]) # I need to keep knl[1] = 0 because
|
234
|
+
# the bend with hxl = 0 would not apply the corretion h*k1
|
234
235
|
ksl = np.array([0.0, -0.03, 0.02, -0.01])
|
235
236
|
num_kicks = 2
|
236
237
|
|
@@ -243,12 +244,13 @@ def test_thick_multipolar_component(test_context, element_type, h):
|
|
243
244
|
ksl=ksl,
|
244
245
|
num_multipole_kicks=num_kicks,
|
245
246
|
)
|
247
|
+
bend_with_mult.integrator = 'uniform'
|
246
248
|
|
247
249
|
# Separate bend and a corresponding multipole
|
248
250
|
bend_no_mult = element_type(
|
249
251
|
k0=k0,
|
250
252
|
h=h,
|
251
|
-
length=bend_length /
|
253
|
+
length=bend_length / num_kicks / 2,
|
252
254
|
num_multipole_kicks=0,
|
253
255
|
)
|
254
256
|
multipole = xt.Multipole(
|
@@ -264,7 +266,7 @@ def test_thick_multipolar_component(test_context, element_type, h):
|
|
264
266
|
line_no_slices.configure_bend_model(core='expanded')
|
265
267
|
line_with_slices = xt.Line(
|
266
268
|
elements={'bend_no_mult': bend_no_mult, 'multipole': multipole},
|
267
|
-
element_names=(['bend_no_mult', 'multipole'] * num_kicks)
|
269
|
+
element_names=(['bend_no_mult', 'multipole', 'bend_no_mult'] * num_kicks)
|
268
270
|
)
|
269
271
|
|
270
272
|
# Track some particles
|
@@ -622,7 +624,7 @@ def test_import_thick_bend_from_madx(use_true_thick_bends, with_knobs, bend_type
|
|
622
624
|
elem = line['elem']
|
623
625
|
|
624
626
|
# Check that the line has correct values to start with
|
625
|
-
assert elem.model == {False: '
|
627
|
+
assert elem.model == {False: 'mat-kick-mat', True: 'full'}[use_true_thick_bends]
|
626
628
|
|
627
629
|
# Element:
|
628
630
|
xo.assert_allclose(elem.length, 2.0, atol=1e-16)
|
@@ -1862,6 +1864,7 @@ def test_skew_quadrupole(test_context):
|
|
1862
1864
|
length = 0.5
|
1863
1865
|
|
1864
1866
|
quad = xt.Quadrupole(k1=k1, k1s=k1s, length=length, _context=test_context)
|
1867
|
+
quad.num_multipole_kicks = 1000
|
1865
1868
|
|
1866
1869
|
n_slices = 1000
|
1867
1870
|
ele_thin = []
|
@@ -2044,4 +2047,106 @@ def test_knl_knl_kick_present_with_default_num_kicks():
|
|
2044
2047
|
env['rb1'].knl[2] = 0.1
|
2045
2048
|
p = p0.copy()
|
2046
2049
|
l5.track(p)
|
2047
|
-
assert np.abs(p.px[0]) > 1e-7
|
2050
|
+
assert np.abs(p.px[0]) > 1e-7
|
2051
|
+
|
2052
|
+
def test_sextupole_num_kicks():
|
2053
|
+
|
2054
|
+
line = xt.Line(elements={
|
2055
|
+
's1': xt.Sextupole(k2=0.1, length=9.0, integrator='teapot')
|
2056
|
+
})
|
2057
|
+
line.particle_ref = xt.Particles(p0c=7000e9)
|
2058
|
+
|
2059
|
+
line_1slice = line.copy(shallow=True)
|
2060
|
+
line_1slice.slice_thick_elements(
|
2061
|
+
slicing_strategies=[
|
2062
|
+
xt.Strategy(slicing=xt.Teapot(1), element_type=xt.Sextupole),
|
2063
|
+
])
|
2064
|
+
|
2065
|
+
line_3slices = line.copy(shallow=True)
|
2066
|
+
line_3slices.slice_thick_elements(
|
2067
|
+
slicing_strategies=[
|
2068
|
+
xt.Strategy(slicing=xt.Teapot(3), element_type=xt.Sextupole),
|
2069
|
+
])
|
2070
|
+
|
2071
|
+
tw_1slice = line_1slice.twiss(betx=1, bety=1, x=1e-2)
|
2072
|
+
tw_3slices = line_3slices.twiss(betx=1, bety=1, x=1e-2)
|
2073
|
+
|
2074
|
+
tw_1kick = line.twiss(betx=1, bety=1, x=1e-2)
|
2075
|
+
|
2076
|
+
line.configure_sextupole_model(num_multipole_kicks=3)
|
2077
|
+
|
2078
|
+
assert line['s1'].num_multipole_kicks == 3
|
2079
|
+
tw_3kicks = line.twiss(betx=1, bety=1, x=1e-2)
|
2080
|
+
|
2081
|
+
assert np.abs(tw_1slice.x[-1] - tw_3slices.x[-1]) > 1e-6
|
2082
|
+
|
2083
|
+
xo.assert_allclose(tw_1slice.s[-1], tw_1kick.s[-1], atol=1e-15, rtol=0)
|
2084
|
+
xo.assert_allclose(tw_1slice.x[-1], tw_1kick.x[-1], atol=1e-15, rtol=0)
|
2085
|
+
xo.assert_allclose(tw_1slice.px[-1], tw_1kick.px[-1], atol=1e-15, rtol=0)
|
2086
|
+
xo.assert_allclose(tw_1slice.y[-1], tw_1kick.y[-1], atol=1e-15, rtol=0)
|
2087
|
+
xo.assert_allclose(tw_1slice.py[-1], tw_1kick.py[-1], atol=1e-15, rtol=0)
|
2088
|
+
xo.assert_allclose(tw_1slice.zeta[-1], tw_1kick.zeta[-1], atol=1e-15, rtol=0)
|
2089
|
+
xo.assert_allclose(tw_1slice.ptau[-1], tw_1kick.ptau[-1], atol=1e-15, rtol=0)
|
2090
|
+
xo.assert_allclose(tw_1slice.betx[-1], tw_1kick.betx[-1], atol=1e-10, rtol=0)
|
2091
|
+
xo.assert_allclose(tw_1slice.bety[-1], tw_1kick.bety[-1], atol=1e-10, rtol=0)
|
2092
|
+
|
2093
|
+
xo.assert_allclose(tw_3slices.s[-1], tw_3kicks.s[-1], atol=1e-15, rtol=0)
|
2094
|
+
xo.assert_allclose(tw_3slices.x[-1], tw_3kicks.x[-1], atol=1e-15, rtol=0)
|
2095
|
+
xo.assert_allclose(tw_3slices.px[-1], tw_3kicks.px[-1], atol=1e-15, rtol=0)
|
2096
|
+
xo.assert_allclose(tw_3slices.y[-1], tw_3kicks.y[-1], atol=1e-15, rtol=0)
|
2097
|
+
xo.assert_allclose(tw_3slices.py[-1], tw_3kicks.py[-1], atol=1e-15, rtol=0)
|
2098
|
+
xo.assert_allclose(tw_3slices.zeta[-1], tw_3kicks.zeta[-1], atol=1e-15, rtol=0)
|
2099
|
+
xo.assert_allclose(tw_3slices.ptau[-1], tw_3kicks.ptau[-1], atol=1e-15, rtol=0)
|
2100
|
+
xo.assert_allclose(tw_3slices.betx[-1], tw_3kicks.betx[-1], atol=1e-10, rtol=0)
|
2101
|
+
xo.assert_allclose(tw_3slices.bety[-1], tw_3kicks.bety[-1], atol=1e-10, rtol=0)
|
2102
|
+
|
2103
|
+
def test_octupole_num_kicks():
|
2104
|
+
|
2105
|
+
line = xt.Line(elements={
|
2106
|
+
's1': xt.Octupole(k3=100., length=9.0, integrator='teapot')
|
2107
|
+
})
|
2108
|
+
line.particle_ref = xt.Particles(p0c=7000e9)
|
2109
|
+
|
2110
|
+
line_1slice = line.copy(shallow=True)
|
2111
|
+
line_1slice.slice_thick_elements(
|
2112
|
+
slicing_strategies=[
|
2113
|
+
xt.Strategy(slicing=xt.Teapot(1), element_type=xt.Octupole),
|
2114
|
+
])
|
2115
|
+
|
2116
|
+
line_3slices = line.copy(shallow=True)
|
2117
|
+
line_3slices.slice_thick_elements(
|
2118
|
+
slicing_strategies=[
|
2119
|
+
xt.Strategy(slicing=xt.Teapot(3), element_type=xt.Octupole),
|
2120
|
+
])
|
2121
|
+
|
2122
|
+
tw_1slice = line_1slice.twiss(betx=1, bety=1, x=1e-2)
|
2123
|
+
tw_3slices = line_3slices.twiss(betx=1, bety=1, x=1e-2)
|
2124
|
+
|
2125
|
+
tw_1kick = line.twiss(betx=1, bety=1, x=1e-2)
|
2126
|
+
|
2127
|
+
line.configure_octupole_model(num_multipole_kicks=3)
|
2128
|
+
tw_3kicks = line.twiss(betx=1, bety=1, x=1e-2)
|
2129
|
+
|
2130
|
+
assert line['s1'].num_multipole_kicks == 3
|
2131
|
+
|
2132
|
+
assert np.abs(tw_1slice.x[-1] - tw_3slices.x[-1]) > 1e-6
|
2133
|
+
|
2134
|
+
xo.assert_allclose(tw_1slice.s[-1], tw_1kick.s[-1], atol=1e-15, rtol=0)
|
2135
|
+
xo.assert_allclose(tw_1slice.x[-1], tw_1kick.x[-1], atol=1e-15, rtol=0)
|
2136
|
+
xo.assert_allclose(tw_1slice.px[-1], tw_1kick.px[-1], atol=1e-15, rtol=0)
|
2137
|
+
xo.assert_allclose(tw_1slice.y[-1], tw_1kick.y[-1], atol=1e-15, rtol=0)
|
2138
|
+
xo.assert_allclose(tw_1slice.py[-1], tw_1kick.py[-1], atol=1e-15, rtol=0)
|
2139
|
+
xo.assert_allclose(tw_1slice.zeta[-1], tw_1kick.zeta[-1], atol=1e-15, rtol=0)
|
2140
|
+
xo.assert_allclose(tw_1slice.ptau[-1], tw_1kick.ptau[-1], atol=1e-15, rtol=0)
|
2141
|
+
xo.assert_allclose(tw_1slice.betx[-1], tw_1kick.betx[-1], atol=1e-10, rtol=0)
|
2142
|
+
xo.assert_allclose(tw_1slice.bety[-1], tw_1kick.bety[-1], atol=1e-10, rtol=0)
|
2143
|
+
|
2144
|
+
xo.assert_allclose(tw_3slices.s[-1], tw_3kicks.s[-1], atol=1e-15, rtol=0)
|
2145
|
+
xo.assert_allclose(tw_3slices.x[-1], tw_3kicks.x[-1], atol=1e-15, rtol=0)
|
2146
|
+
xo.assert_allclose(tw_3slices.px[-1], tw_3kicks.px[-1], atol=1e-15, rtol=0)
|
2147
|
+
xo.assert_allclose(tw_3slices.y[-1], tw_3kicks.y[-1], atol=1e-15, rtol=0)
|
2148
|
+
xo.assert_allclose(tw_3slices.py[-1], tw_3kicks.py[-1], atol=1e-15, rtol=0)
|
2149
|
+
xo.assert_allclose(tw_3slices.zeta[-1], tw_3kicks.zeta[-1], atol=1e-15, rtol=0)
|
2150
|
+
xo.assert_allclose(tw_3slices.ptau[-1], tw_3kicks.ptau[-1], atol=1e-15, rtol=0)
|
2151
|
+
xo.assert_allclose(tw_3slices.betx[-1], tw_3kicks.betx[-1], atol=1e-10, rtol=0)
|
2152
|
+
xo.assert_allclose(tw_3slices.bety[-1], tw_3kicks.bety[-1], atol=1e-10, rtol=0)
|
@@ -1412,7 +1412,7 @@ def test_assemble_ring_repeated_elements():
|
|
1412
1412
|
xo.assert_allclose(twarc.s[0], 0, atol=1e-12, rtol=0)
|
1413
1413
|
xo.assert_allclose(twarc.s[-1], 228, atol=1e-10, rtol=0)
|
1414
1414
|
twarc_start_end = arc.twiss4d(start=xt.START, end=xt.END, init=twarc)
|
1415
|
-
xo.assert_allclose(twarc_start_end.betx, twarc.betx, atol=1e-
|
1415
|
+
xo.assert_allclose(twarc_start_end.betx, twarc.betx, atol=1e-11, rtol=0)
|
1416
1416
|
|
1417
1417
|
tw_one_cell_ref = twarc.rows['mid::2':'mid::3']
|
1418
1418
|
tw_one_cell = arc.twiss4d(start='mid::2', end='mid::3', init='periodic')
|
@@ -2185,11 +2185,11 @@ def test_insert_anchors_special_cases():
|
|
2185
2185
|
|
2186
2186
|
assert np.all(tt.name == np.array(
|
2187
2187
|
['drift_1', 'm5.0', 'm5.1', 'q5', 'm5.2', 'm5.3', 'drift_2',
|
2188
|
-
|
2189
|
-
|
2188
|
+
'q0_entry', 'q0..entry_map', 'q0..0', 'q4', 'drift_3..1', 'mr.0',
|
2189
|
+
'mr.1', 'q6', 'mr.2', 'mr.3', 'drift_4', 'end', '_end_point']))
|
2190
2190
|
xo.assert_allclose(tt.s_center, np.array(
|
2191
|
-
np.array([ 4.5, 9. , 9. , 10. , 11. , 11. , 15. , 19. , 19.5, 21. ,
|
2192
|
-
|
2191
|
+
np.array([ 4.5, 9. , 9. , 10. , 11. , 11. , 15. , 19. , 19. , 19.5, 21. ,
|
2192
|
+
25.5, 29. , 29. , 30. , 31. , 31. , 40.5, 50. , 50. ])),
|
2193
2193
|
rtol=0., atol=1e-14)
|
2194
2194
|
|
2195
2195
|
def test_insert_providing_object():
|
@@ -2306,10 +2306,10 @@ def test_individual_insertions_anchors():
|
|
2306
2306
|
|
2307
2307
|
assert np.all(tt.name == np.array(
|
2308
2308
|
['drift_1', 'm5.0', 'm5.1', 'q5', 'm5.2', 'm5.3', 'drift_2',
|
2309
|
-
|
2310
|
-
|
2309
|
+
'q0_entry', 'q0..entry_map', 'q0..0', 'q4', 'drift_3..1', 'mr.0',
|
2310
|
+
'mr.1', 'q6', 'mr.2', 'mr.3', 'drift_4', 'end', '_end_point']))
|
2311
2311
|
xo.assert_allclose(tt.s_center, np.array(
|
2312
|
-
np.array([ 4.5, 9. , 9. , 10. , 11. , 11. , 15. , 19. , 19.5, 21. , 25.5,
|
2312
|
+
np.array([ 4.5, 9. , 9. , 10. , 11. , 11. , 15. , 19., 19. , 19.5, 21. , 25.5,
|
2313
2313
|
29. , 29. , 30. , 31. , 31. , 40.5, 50. , 50.])),
|
2314
2314
|
rtol=0., atol=1e-14)
|
2315
2315
|
|
@@ -3072,64 +3072,90 @@ def test_enviroment_from_two_lines():
|
|
3072
3072
|
# _end_point None
|
3073
3073
|
|
3074
3074
|
assert np.all(tt1.name == np.array([
|
3075
|
-
|
3076
|
-
|
3077
|
-
|
3078
|
-
|
3079
|
-
|
3080
|
-
|
3081
|
-
|
3082
|
-
|
3083
|
-
|
3084
|
-
|
3075
|
+
'drift_1', 'qq1_thick_entry', 'qq1_thick..entry_map',
|
3076
|
+
'qq1_thick..0', 'qq1_thick..1', 'qq1_thick..exit_map',
|
3077
|
+
'qq1_thick_exit', 'drift_2', 'qq1_thin_entry',
|
3078
|
+
'qq1_thin..entry_map', 'drift_qq1_thin..0', 'qq1_thin..0',
|
3079
|
+
'drift_qq1_thin..1', 'qq1_thin..1', 'drift_qq1_thin..2',
|
3080
|
+
'qq1_thin..exit_map', 'qq1_thin_exit', 'drift_3',
|
3081
|
+
'qq_shared_thick_entry', 'qq_shared_thick..entry_map/line1',
|
3082
|
+
'qq_shared_thick..0/line1', 'qq_shared_thick..1/line1',
|
3083
|
+
'qq_shared_thick..exit_map/line1', 'qq_shared_thick_exit',
|
3084
|
+
'drift_4', 'qq_shared_thin_entry',
|
3085
|
+
'qq_shared_thin..entry_map/line1', 'drift_qq_shared_thin..0/line1',
|
3086
|
+
'qq_shared_thin..0/line1', 'drift_qq_shared_thin..1/line1',
|
3087
|
+
'qq_shared_thin..1/line1', 'drift_qq_shared_thin..2/line1',
|
3088
|
+
'qq_shared_thin..exit_map/line1', 'qq_shared_thin_exit',
|
3089
|
+
'_end_point']))
|
3085
3090
|
|
3086
3091
|
assert np.all(tt1.element_type == np.array([
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3091
|
-
|
3092
|
-
|
3093
|
-
|
3094
|
-
|
3092
|
+
'Drift', 'Marker', 'ThinSliceQuadrupoleEntry',
|
3093
|
+
'ThickSliceQuadrupole', 'ThickSliceQuadrupole',
|
3094
|
+
'ThinSliceQuadrupoleExit', 'Marker', 'Drift', 'Marker',
|
3095
|
+
'ThinSliceQuadrupoleEntry', 'DriftSliceQuadrupole',
|
3096
|
+
'ThinSliceQuadrupole', 'DriftSliceQuadrupole',
|
3097
|
+
'ThinSliceQuadrupole', 'DriftSliceQuadrupole',
|
3098
|
+
'ThinSliceQuadrupoleExit', 'Marker', 'Drift', 'Marker',
|
3099
|
+
'ThinSliceQuadrupoleEntry', 'ThickSliceQuadrupole',
|
3100
|
+
'ThickSliceQuadrupole', 'ThinSliceQuadrupoleExit', 'Marker',
|
3101
|
+
'Drift', 'Marker', 'ThinSliceQuadrupoleEntry',
|
3102
|
+
'DriftSliceQuadrupole', 'ThinSliceQuadrupole',
|
3103
|
+
'DriftSliceQuadrupole', 'ThinSliceQuadrupole',
|
3104
|
+
'DriftSliceQuadrupole', 'ThinSliceQuadrupoleExit', 'Marker', '']))
|
3095
3105
|
|
3096
3106
|
assert np.all(tt1.parent_name == np.array([
|
3097
|
-
|
3098
|
-
|
3099
|
-
|
3100
|
-
|
3101
|
-
|
3102
|
-
|
3107
|
+
None, None, 'qq1_thick', 'qq1_thick', 'qq1_thick', 'qq1_thick',
|
3108
|
+
None, None, None, 'qq1_thin', 'qq1_thin', 'qq1_thin', 'qq1_thin',
|
3109
|
+
'qq1_thin', 'qq1_thin', 'qq1_thin', None, None, None,
|
3110
|
+
'qq_shared_thick/line1', 'qq_shared_thick/line1',
|
3111
|
+
'qq_shared_thick/line1', 'qq_shared_thick/line1', None, None, None,
|
3112
|
+
'qq_shared_thin/line1', 'qq_shared_thin/line1',
|
3113
|
+
'qq_shared_thin/line1', 'qq_shared_thin/line1',
|
3114
|
+
'qq_shared_thin/line1', 'qq_shared_thin/line1',
|
3115
|
+
'qq_shared_thin/line1', None, None]))
|
3103
3116
|
|
3104
3117
|
assert np.all(tt2.name == np.array([
|
3105
|
-
'drift_5', 'qq2_thick_entry', 'qq2_thick..
|
3106
|
-
|
3107
|
-
|
3108
|
-
|
3109
|
-
|
3110
|
-
|
3111
|
-
|
3112
|
-
|
3113
|
-
|
3114
|
-
|
3118
|
+
'drift_5', 'qq2_thick_entry', 'qq2_thick..entry_map',
|
3119
|
+
'qq2_thick..0', 'qq2_thick..1', 'qq2_thick..exit_map',
|
3120
|
+
'qq2_thick_exit', 'drift_6', 'qq2_thin_entry',
|
3121
|
+
'qq2_thin..entry_map', 'drift_qq2_thin..0', 'qq2_thin..0',
|
3122
|
+
'drift_qq2_thin..1', 'qq2_thin..1', 'drift_qq2_thin..2',
|
3123
|
+
'qq2_thin..exit_map', 'qq2_thin_exit', 'drift_7',
|
3124
|
+
'qq_shared_thick_entry', 'qq_shared_thick..entry_map/line2',
|
3125
|
+
'qq_shared_thick..0/line2', 'qq_shared_thick..1/line2',
|
3126
|
+
'qq_shared_thick..exit_map/line2', 'qq_shared_thick_exit',
|
3127
|
+
'drift_8', 'qq_shared_thin_entry',
|
3128
|
+
'qq_shared_thin..entry_map/line2', 'drift_qq_shared_thin..0/line2',
|
3129
|
+
'qq_shared_thin..0/line2', 'drift_qq_shared_thin..1/line2',
|
3130
|
+
'qq_shared_thin..1/line2', 'drift_qq_shared_thin..2/line2',
|
3131
|
+
'qq_shared_thin..exit_map/line2', 'qq_shared_thin_exit',
|
3132
|
+
'_end_point']))
|
3115
3133
|
|
3116
3134
|
assert np.all(tt2.element_type == np.array([
|
3117
|
-
'Drift', 'Marker', '
|
3118
|
-
|
3119
|
-
|
3120
|
-
|
3121
|
-
|
3122
|
-
|
3123
|
-
|
3124
|
-
|
3135
|
+
'Drift', 'Marker', 'ThinSliceQuadrupoleEntry',
|
3136
|
+
'ThickSliceQuadrupole', 'ThickSliceQuadrupole',
|
3137
|
+
'ThinSliceQuadrupoleExit', 'Marker', 'Drift', 'Marker',
|
3138
|
+
'ThinSliceQuadrupoleEntry', 'DriftSliceQuadrupole',
|
3139
|
+
'ThinSliceQuadrupole', 'DriftSliceQuadrupole',
|
3140
|
+
'ThinSliceQuadrupole', 'DriftSliceQuadrupole',
|
3141
|
+
'ThinSliceQuadrupoleExit', 'Marker', 'Drift', 'Marker',
|
3142
|
+
'ThinSliceQuadrupoleEntry', 'ThickSliceQuadrupole',
|
3143
|
+
'ThickSliceQuadrupole', 'ThinSliceQuadrupoleExit', 'Marker',
|
3144
|
+
'Drift', 'Marker', 'ThinSliceQuadrupoleEntry',
|
3145
|
+
'DriftSliceQuadrupole', 'ThinSliceQuadrupole',
|
3146
|
+
'DriftSliceQuadrupole', 'ThinSliceQuadrupole',
|
3147
|
+
'DriftSliceQuadrupole', 'ThinSliceQuadrupoleExit', 'Marker', '']))
|
3125
3148
|
|
3126
3149
|
assert np.all(tt2.parent_name == np.array([
|
3127
|
-
|
3128
|
-
|
3129
|
-
|
3130
|
-
|
3131
|
-
|
3132
|
-
|
3150
|
+
None, None, 'qq2_thick', 'qq2_thick', 'qq2_thick', 'qq2_thick',
|
3151
|
+
None, None, None, 'qq2_thin', 'qq2_thin', 'qq2_thin', 'qq2_thin',
|
3152
|
+
'qq2_thin', 'qq2_thin', 'qq2_thin', None, None, None,
|
3153
|
+
'qq_shared_thick/line2', 'qq_shared_thick/line2',
|
3154
|
+
'qq_shared_thick/line2', 'qq_shared_thick/line2', None, None, None,
|
3155
|
+
'qq_shared_thin/line2', 'qq_shared_thin/line2',
|
3156
|
+
'qq_shared_thin/line2', 'qq_shared_thin/line2',
|
3157
|
+
'qq_shared_thin/line2', 'qq_shared_thin/line2',
|
3158
|
+
'qq_shared_thin/line2', None, None]))
|
3133
3159
|
|
3134
3160
|
assert 'qq1_thick' in env.element_dict
|
3135
3161
|
assert 'qq1_thin' in env.element_dict
|
@@ -943,7 +943,8 @@ def test_insert_thin_elements_at_s_lhc(test_context):
|
|
943
943
|
'drift_mb.a29r3.b1..1..1', 'mb.a29r3.b1..1']))
|
944
944
|
|
945
945
|
assert np.all(tt.rows['mq.29r3.b1_exit<<3':'mq.29r3.b1_exit'].name
|
946
|
-
== np.array(
|
946
|
+
== np.array(
|
947
|
+
['m1_at_c', 'm2_at_c', 'mq.29r3.b1..exit_map', 'mq.29r3.b1_exit']))
|
947
948
|
|
948
949
|
assert np.all(tt.rows['m0_at_d':'m0_at_d>>4'].name
|
949
950
|
== np.array(['m0_at_d', 'm1_at_d', 'm2_at_d',
|