xfields 0.23.0__tar.gz → 0.23.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 (184) hide show
  1. {xfields-0.23.0/xfields.egg-info → xfields-0.23.2}/PKG-INFO +1 -1
  2. xfields-0.23.2/xfields/_version.py +1 -0
  3. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/spacecharge_src/spacechargebigaussian.h +1 -1
  4. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/temp_slicer.py +8 -0
  5. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/electroncloud_config_tools.py +3 -1
  6. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/interpolated.py +4 -2
  7. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/tricubicinterpolated.py +7 -0
  8. {xfields-0.23.0 → xfields-0.23.2/xfields.egg-info}/PKG-INFO +1 -1
  9. {xfields-0.23.0 → xfields-0.23.2}/xfields.egg-info/SOURCES.txt +0 -69
  10. xfields-0.23.0/.gitignore +0 -13
  11. xfields-0.23.0/contributors_and_credits.txt +0 -16
  12. xfields-0.23.0/examples/000_sphere/.gitignore +0 -1
  13. xfields-0.23.0/examples/000_sphere/000_sphere_xfields3D.py +0 -167
  14. xfields-0.23.0/examples/000_sphere/001_sphere_xfields2p5D.py +0 -170
  15. xfields-0.23.0/examples/001_spacecharge/000_spacecharge_example.py +0 -152
  16. xfields-0.23.0/examples/001_spacecharge/001_shared_fieldmap.py +0 -152
  17. xfields-0.23.0/examples/001_spacecharge/002_spacecharge_with_losses.py +0 -33
  18. xfields-0.23.0/examples/002_beambeam/000_beambeam.py +0 -191
  19. xfields-0.23.0/examples/002_beambeam/001_beambeam3d.py +0 -165
  20. xfields-0.23.0/examples/002_beambeam/002_beambeam3d_old_interface.py +0 -136
  21. xfields-0.23.0/examples/002_beambeam/003_beambeam3d_strongstrong_track.py +0 -188
  22. xfields-0.23.0/examples/002_beambeam/004_beambeam2d_strongstrong_pyheadtail.py +0 -215
  23. xfields-0.23.0/examples/002_beambeam/005_beambeam6d_strongstrong_pipeline.py +0 -201
  24. xfields-0.23.0/examples/002_beambeam/006_beambeam6d_strongstrong_pipeline_MPI2Procs.py +0 -221
  25. xfields-0.23.0/examples/002_beambeam/007_beambeam3d_beamstrahlung.py +0 -381
  26. xfields-0.23.0/examples/002_beambeam/008_beambeam6d_collective_beamstrahlung.py +0 -392
  27. xfields-0.23.0/examples/002_beambeam/009_constant_charge_slicing.py +0 -46
  28. xfields-0.23.0/examples/002_beambeam/010_beambeam2d_strongstrong_pipeline.py +0 -167
  29. xfields-0.23.0/examples/002_beambeam/010_beambeam2d_weakstrong.py +0 -115
  30. xfields-0.23.0/examples/002_beambeam/011a_inspect_kick_vs_zeta_hirata.py +0 -98
  31. xfields-0.23.0/examples/002_beambeam/011b_lhc_one_bb.py +0 -65
  32. xfields-0.23.0/examples/002_beambeam/011c_dev_pic.py +0 -313
  33. xfields-0.23.0/examples/002_beambeam/011d_pic_pipeline.py +0 -152
  34. xfields-0.23.0/examples/002_beambeam/011e_multiple_kicks_multiple_turns.py +0 -232
  35. xfields-0.23.0/examples/002_beambeam/011g_pic_pipeline_gpu.py +0 -164
  36. xfields-0.23.0/examples/003_electronlens/electronlens_interpolated_ideal.py +0 -88
  37. xfields-0.23.0/examples/004_fadeeva/000_check_fadeeva.py +0 -139
  38. xfields-0.23.0/examples/005_ibs/000_growth_rates_no_vdisp.py +0 -119
  39. xfields-0.23.0/examples/005_ibs/001_growth_rates_with_vdisp.py +0 -76
  40. xfields-0.23.0/examples/005_ibs/002_growth_rates_conventions.py +0 -79
  41. xfields-0.23.0/examples/005_ibs/003_tracking_with_kicks.py +0 -66
  42. xfields-0.23.0/examples/005_ibs/004_tracking_with_kicks_tbt_emittances.py +0 -94
  43. xfields-0.23.0/examples/longitudinal_kick_in_spacecharge/000_gaussian_3d.py +0 -140
  44. xfields-0.23.0/examples/longitudinal_kick_in_spacecharge/001_dev_spacecharge.py +0 -96
  45. xfields-0.23.0/examples/longitudinal_kick_in_spacecharge/002_sps_ion.py +0 -124
  46. xfields-0.23.0/examples/longitudinal_kick_in_spacecharge/003_sps_ion_with_builtin_z_kick.py +0 -118
  47. xfields-0.23.0/examples/longitudinal_kick_in_spacecharge/004_qgaussian_derivative.py +0 -63
  48. xfields-0.23.0/examples/longitudinal_kick_in_spacecharge/sps_ion_2021.json +0 -1
  49. xfields-0.23.0/examples/slicer/000_dev.py +0 -876
  50. xfields-0.23.0/examples/slicer/001_slicer_operations.py +0 -29
  51. xfields-0.23.0/examples/slicer/002a_example_slicer.py +0 -142
  52. xfields-0.23.0/examples/slicer/002b_example_slicer_gpu.py +0 -145
  53. xfields-0.23.0/examples/slicer/003_multilog.py +0 -22
  54. xfields-0.23.0/examples/slicer/004_log_moments.py +0 -151
  55. xfields-0.23.0/examples/slicer/005a_moment_profile.py +0 -75
  56. xfields-0.23.0/examples/slicer/005b_moment_profile_gpu.py +0 -89
  57. xfields-0.23.0/examples/slicer/005c_moment_profile_from_wake.py +0 -53
  58. xfields-0.23.0/examples/slicer/005d_moment_profile_from_wake_gpu.py +0 -59
  59. xfields-0.23.0/mktest +0 -1
  60. xfields-0.23.0/release.sh +0 -20
  61. xfields-0.23.0/requirements.txt +0 -2
  62. xfields-0.23.0/test_data/HLLHC_wake.dat +0 -2801
  63. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/.gitignore +0 -4
  64. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/000_buildup.py +0 -4
  65. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/001_pinch.py +0 -131
  66. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/beam.beam +0 -33
  67. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/filemanager.py +0 -54
  68. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/machine_parameters.input +0 -51
  69. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/secondary_emission_parameters.input +0 -16
  70. xfields-0.23.0/test_data/pyecloud_pinch/Pinch_creation/simulation_parameters.input +0 -81
  71. xfields-0.23.0/test_data/pyecloud_pinch/README.md +0 -35
  72. xfields-0.23.0/test_data/pyecloud_pinch/eclouds.json +0 -5838
  73. xfields-0.23.0/test_data/pyecloud_pinch/refined_Pinch_MTI1.0_MLI1.0_DTO2.0_DLO1.0.h5 +0 -0
  74. xfields-0.23.0/test_data/test_beamstrahlung/README.txt +0 -3
  75. xfields-0.23.0/test_data/test_beamstrahlung/test_beamstrahlung_guineapig_ttbar2_beamstrahlung_photon_hist.txt +0 -9
  76. xfields-0.23.0/tests/ibs_conftest.py +0 -168
  77. xfields-0.23.0/tests/pytest_onebyone.sh +0 -7
  78. xfields-0.23.0/update_cprght_statement.py +0 -48
  79. xfields-0.23.0/xfields/_version.py +0 -1
  80. {xfields-0.23.0 → xfields-0.23.2}/LICENSE +0 -0
  81. {xfields-0.23.0 → xfields-0.23.2}/MANIFEST.in +0 -0
  82. {xfields-0.23.0 → xfields-0.23.2}/README.md +0 -0
  83. {xfields-0.23.0 → xfields-0.23.2}/pyproject.toml +0 -0
  84. {xfields-0.23.0 → xfields-0.23.2}/setup.cfg +0 -0
  85. {xfields-0.23.0 → xfields-0.23.2}/setup.py +0 -0
  86. {xfields-0.23.0 → xfields-0.23.2}/tests/test_alpha_pi_setter.py +0 -0
  87. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeam2d.py +0 -0
  88. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeam3d_part1.py +0 -0
  89. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeam3d_part2.py +0 -0
  90. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeam_pic.py +0 -0
  91. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeamstrongstrong2d.py +0 -0
  92. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeamstrongstrong2d_pi.py +0 -0
  93. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeamstrongstrong3d.py +0 -0
  94. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beambeamstrongstrong3d_pi.py +0 -0
  95. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beamstrahlung.py +0 -0
  96. {xfields-0.23.0 → xfields-0.23.2}/tests/test_beamstrahlung_pic.py +0 -0
  97. {xfields-0.23.0 → xfields-0.23.2}/tests/test_bhabha.py +0 -0
  98. {xfields-0.23.0 → xfields-0.23.2}/tests/test_cerrf.py +0 -0
  99. {xfields-0.23.0 → xfields-0.23.2}/tests/test_compressed_profile_interp_result.py +0 -0
  100. {xfields-0.23.0 → xfields-0.23.2}/tests/test_constant_charge_slicing.py +0 -0
  101. {xfields-0.23.0 → xfields-0.23.2}/tests/test_electroncloud.py +0 -0
  102. {xfields-0.23.0 → xfields-0.23.2}/tests/test_electronlens_interpolated.py +0 -0
  103. {xfields-0.23.0 → xfields-0.23.2}/tests/test_element_with_slicer_filling_scheme.py +0 -0
  104. {xfields-0.23.0 → xfields-0.23.2}/tests/test_ibs_growth_rates.py +0 -0
  105. {xfields-0.23.0 → xfields-0.23.2}/tests/test_ibs_kicks.py +0 -0
  106. {xfields-0.23.0 → xfields-0.23.2}/tests/test_iptocp_strongstrong.py +0 -0
  107. {xfields-0.23.0 → xfields-0.23.2}/tests/test_lumi.py +0 -0
  108. {xfields-0.23.0 → xfields-0.23.2}/tests/test_mean_std.py +0 -0
  109. {xfields-0.23.0 → xfields-0.23.2}/tests/test_profiles.py +0 -0
  110. {xfields-0.23.0 → xfields-0.23.2}/tests/test_slicer.py +0 -0
  111. {xfields-0.23.0 → xfields-0.23.2}/tests/test_spacecharge.py +0 -0
  112. {xfields-0.23.0 → xfields-0.23.2}/tests/test_temp_slicer.py +0 -0
  113. {xfields-0.23.0 → xfields-0.23.2}/xfields/__init__.py +0 -0
  114. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/__init__.py +0 -0
  115. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam2d.py +0 -0
  116. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam3d.py +0 -0
  117. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam3dpic.py +0 -0
  118. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeam.h +0 -0
  119. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeam2d.h +0 -0
  120. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeam3d.h +0 -0
  121. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeam3d_methods_for_strongstrong.h +0 -0
  122. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeam3d_ref_frame_changes.h +0 -0
  123. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeam3d_transport_sigmas.h +0 -0
  124. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/beambeam_src/beambeampic_methods.h +0 -0
  125. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/electroncloud.py +0 -0
  126. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/electroncloud_src/electroncloud.h +0 -0
  127. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/electronlens_interpolated.py +0 -0
  128. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/electronlens_src/electronlens_interpolated.h +0 -0
  129. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/element_with_slicer.py +0 -0
  130. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/spacecharge.py +0 -0
  131. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/spacecharge_src/spacecharge3d.h +0 -0
  132. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/waketracker/__init__.py +0 -0
  133. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/waketracker/convolution.py +0 -0
  134. {xfields-0.23.0 → xfields-0.23.2}/xfields/beam_elements/waketracker/waketracker.py +0 -0
  135. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/__init__.py +0 -0
  136. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/beambeam_config_tools/__init__.py +0 -0
  137. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/beambeam_config_tools/_madpoint.py +0 -0
  138. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/beambeam_config_tools/config_tools.py +0 -0
  139. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/beambeam_config_tools/orbit_dependent_configuration_tools.py +0 -0
  140. {xfields-0.23.0 → xfields-0.23.2}/xfields/config_tools/spacecharge_config_tools.py +0 -0
  141. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/__init__.py +0 -0
  142. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian.py +0 -0
  143. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian_src/bigaussian.h +0 -0
  144. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian_src/bigaussian_fieldmap.h +0 -0
  145. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian_src/compute_gx_gy.h +0 -0
  146. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian_src/faddeeva.h +0 -0
  147. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian_src/faddeeva_cernlib.h +0 -0
  148. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/bigaussian_src/faddeeva_mit.h +0 -0
  149. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/interpolated_src/central_diff.h +0 -0
  150. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/interpolated_src/charge_deposition.h +0 -0
  151. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/interpolated_src/cubic_interpolators.h +0 -0
  152. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/interpolated_src/linear_interpolators.h +0 -0
  153. {xfields-0.23.0 → xfields-0.23.2}/xfields/fieldmaps/interpolated_src/tricubic_coefficients.h +0 -0
  154. {xfields-0.23.0 → xfields-0.23.2}/xfields/general.py +0 -0
  155. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/beamstrahlung_spectrum.h +0 -0
  156. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/beamstrahlung_spectrum_pic.h +0 -0
  157. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/bhabha_spectrum.h +0 -0
  158. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/compressed_profile.h +0 -0
  159. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/compute_slice_moments.h +0 -0
  160. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/constants.h +0 -0
  161. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/particle_states.h +0 -0
  162. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/power_n.h +0 -0
  163. {xfields-0.23.0 → xfields-0.23.2}/xfields/headers/sincos.h +0 -0
  164. {xfields-0.23.0 → xfields-0.23.2}/xfields/ibs/__init__.py +0 -0
  165. {xfields-0.23.0 → xfields-0.23.2}/xfields/ibs/_analytical.py +0 -0
  166. {xfields-0.23.0 → xfields-0.23.2}/xfields/ibs/_api.py +0 -0
  167. {xfields-0.23.0 → xfields-0.23.2}/xfields/ibs/_formulary.py +0 -0
  168. {xfields-0.23.0 → xfields-0.23.2}/xfields/ibs/_kicks.py +0 -0
  169. {xfields-0.23.0 → xfields-0.23.2}/xfields/longitudinal_profiles/__init__.py +0 -0
  170. {xfields-0.23.0 → xfields-0.23.2}/xfields/longitudinal_profiles/coasting.py +0 -0
  171. {xfields-0.23.0 → xfields-0.23.2}/xfields/longitudinal_profiles/qgaussian.py +0 -0
  172. {xfields-0.23.0 → xfields-0.23.2}/xfields/longitudinal_profiles/qgaussian_src/qgaussian.h +0 -0
  173. {xfields-0.23.0 → xfields-0.23.2}/xfields/slicers/__init__.py +0 -0
  174. {xfields-0.23.0 → xfields-0.23.2}/xfields/slicers/compressed_profile.py +0 -0
  175. {xfields-0.23.0 → xfields-0.23.2}/xfields/slicers/slicers_src/uniform_bin_slicer.h +0 -0
  176. {xfields-0.23.0 → xfields-0.23.2}/xfields/slicers/uniform.py +0 -0
  177. {xfields-0.23.0 → xfields-0.23.2}/xfields/solvers/__init__.py +0 -0
  178. {xfields-0.23.0 → xfields-0.23.2}/xfields/solvers/base.py +0 -0
  179. {xfields-0.23.0 → xfields-0.23.2}/xfields/solvers/fftsolvers.py +0 -0
  180. {xfields-0.23.0 → xfields-0.23.2}/xfields/test_support/__init__.py +0 -0
  181. {xfields-0.23.0 → xfields-0.23.2}/xfields/test_support/temp_makepart.py +0 -0
  182. {xfields-0.23.0 → xfields-0.23.2}/xfields.egg-info/dependency_links.txt +0 -0
  183. {xfields-0.23.0 → xfields-0.23.2}/xfields.egg-info/requires.txt +0 -0
  184. {xfields-0.23.0 → xfields-0.23.2}/xfields.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xfields
3
- Version: 0.23.0
3
+ Version: 0.23.2
4
4
  Summary: Field Maps and Particle In Cell
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xfields
@@ -0,0 +1 @@
1
+ __version__ = "0.23.2"
@@ -67,7 +67,7 @@ void SpaceChargeBiGaussian_track_local_particle(
67
67
  const double dy = fabs(y / (n_integ - 1));
68
68
 
69
69
  double phi = 0.0;
70
- double dphi_integ;
70
+ double dphi_integ = 0.0;
71
71
  for (int ii=0; ii<n_integ; ii++){
72
72
  double const x_integ = ii*dx;
73
73
  double const y_integ = ii*dy;
@@ -2,6 +2,7 @@ import numpy as np
2
2
  from scipy import special
3
3
  import xobjects as xo
4
4
  import xpart as xp
5
+ import xtrack as xt
5
6
  from ..general import _pkg_root
6
7
 
7
8
  _digitize_kernel = xo.Kernel(
@@ -106,6 +107,13 @@ class TempSlicer(xo.HybridClass):
106
107
 
107
108
  self.compile_kernels(only_if_needed=False)
108
109
 
110
+ def compile_kernels(self, *args, **kwargs):
111
+ extra_compile_args = kwargs.pop('extra_compile_args', [])
112
+ extra_compile_args.append(f'-I{xt.__path__[0]}')
113
+ kwargs['extra_compile_args'] = extra_compile_args
114
+
115
+ return super().compile_kernels(*args, **kwargs)
116
+
109
117
  def rho(self, z):
110
118
  """
111
119
  Gaussian charge density.
@@ -171,7 +171,9 @@ def full_electroncloud_setup(line=None, ecloud_info=None, filenames=None, contex
171
171
  zeta_max=None, subtract_dipolar_kicks=True, shift_to_closed_orbit=True,
172
172
  steps_r_matrix=None):
173
173
 
174
- buffer = context.new_buffer()
174
+ line.build_tracker(compile=False) # To move all elements to the same buffer
175
+ buffer = line._buffer
176
+ line.discard_tracker()
175
177
  fieldmaps = {
176
178
  ecloud_type: get_electroncloud_fieldmap_from_h5(
177
179
  filename=filename,
@@ -215,7 +215,10 @@ class TriLinearInterpolatedFieldMap(xo.HybridClass):
215
215
  dphi_dy = nelem,
216
216
  dphi_dz = nelem)
217
217
 
218
- self.compile_kernels(only_if_needed=True)
218
+ self.compile_kernels(
219
+ only_if_needed=True,
220
+ extra_compile_args=[f"-I{xt.__path__[0]}"],
221
+ )
219
222
 
220
223
  if isinstance(solver, str):
221
224
  self.solver = self.generate_solver(solver, fftplan)
@@ -237,7 +240,6 @@ class TriLinearInterpolatedFieldMap(xo.HybridClass):
237
240
  def _assert_updatable(self):
238
241
  assert self.updatable, 'This FieldMap is not updatable!'
239
242
 
240
- #@profile
241
243
  def get_values_at_points(self,
242
244
  x, y, z,
243
245
  return_rho=True,
@@ -233,6 +233,13 @@ class TriCubicInterpolatedFieldMap(xo.HybridClass):
233
233
  if solver is not None and rho is not None:
234
234
  self.update_phi_from_rho()
235
235
 
236
+ def compile_kernels(self, *args, **kwargs):
237
+ extra_compile_args = kwargs.pop('extra_compile_args', [])
238
+ extra_compile_args.append(f'-I{xt.__path__[0]}')
239
+ kwargs['extra_compile_args'] = extra_compile_args
240
+
241
+ return super().compile_kernels(*args, **kwargs)
242
+
236
243
  def _assert_updatable(self):
237
244
  assert self.updatable, 'This FieldMap is not updatable!'
238
245
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xfields
3
- Version: 0.23.0
3
+ Version: 0.23.2
4
4
  Summary: Field Maps and Particle In Cell
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xfields
@@ -1,77 +1,8 @@
1
- .gitignore
2
1
  LICENSE
3
2
  MANIFEST.in
4
3
  README.md
5
- contributors_and_credits.txt
6
- mktest
7
4
  pyproject.toml
8
- release.sh
9
- requirements.txt
10
5
  setup.py
11
- update_cprght_statement.py
12
- examples/000_sphere/.gitignore
13
- examples/000_sphere/000_sphere_xfields3D.py
14
- examples/000_sphere/001_sphere_xfields2p5D.py
15
- examples/001_spacecharge/000_spacecharge_example.py
16
- examples/001_spacecharge/001_shared_fieldmap.py
17
- examples/001_spacecharge/002_spacecharge_with_losses.py
18
- examples/002_beambeam/000_beambeam.py
19
- examples/002_beambeam/001_beambeam3d.py
20
- examples/002_beambeam/002_beambeam3d_old_interface.py
21
- examples/002_beambeam/003_beambeam3d_strongstrong_track.py
22
- examples/002_beambeam/004_beambeam2d_strongstrong_pyheadtail.py
23
- examples/002_beambeam/005_beambeam6d_strongstrong_pipeline.py
24
- examples/002_beambeam/006_beambeam6d_strongstrong_pipeline_MPI2Procs.py
25
- examples/002_beambeam/007_beambeam3d_beamstrahlung.py
26
- examples/002_beambeam/008_beambeam6d_collective_beamstrahlung.py
27
- examples/002_beambeam/009_constant_charge_slicing.py
28
- examples/002_beambeam/010_beambeam2d_strongstrong_pipeline.py
29
- examples/002_beambeam/010_beambeam2d_weakstrong.py
30
- examples/002_beambeam/011a_inspect_kick_vs_zeta_hirata.py
31
- examples/002_beambeam/011b_lhc_one_bb.py
32
- examples/002_beambeam/011c_dev_pic.py
33
- examples/002_beambeam/011d_pic_pipeline.py
34
- examples/002_beambeam/011e_multiple_kicks_multiple_turns.py
35
- examples/002_beambeam/011g_pic_pipeline_gpu.py
36
- examples/003_electronlens/electronlens_interpolated_ideal.py
37
- examples/004_fadeeva/000_check_fadeeva.py
38
- examples/005_ibs/000_growth_rates_no_vdisp.py
39
- examples/005_ibs/001_growth_rates_with_vdisp.py
40
- examples/005_ibs/002_growth_rates_conventions.py
41
- examples/005_ibs/003_tracking_with_kicks.py
42
- examples/005_ibs/004_tracking_with_kicks_tbt_emittances.py
43
- examples/longitudinal_kick_in_spacecharge/000_gaussian_3d.py
44
- examples/longitudinal_kick_in_spacecharge/001_dev_spacecharge.py
45
- examples/longitudinal_kick_in_spacecharge/002_sps_ion.py
46
- examples/longitudinal_kick_in_spacecharge/003_sps_ion_with_builtin_z_kick.py
47
- examples/longitudinal_kick_in_spacecharge/004_qgaussian_derivative.py
48
- examples/longitudinal_kick_in_spacecharge/sps_ion_2021.json
49
- examples/slicer/000_dev.py
50
- examples/slicer/001_slicer_operations.py
51
- examples/slicer/002a_example_slicer.py
52
- examples/slicer/002b_example_slicer_gpu.py
53
- examples/slicer/003_multilog.py
54
- examples/slicer/004_log_moments.py
55
- examples/slicer/005a_moment_profile.py
56
- examples/slicer/005b_moment_profile_gpu.py
57
- examples/slicer/005c_moment_profile_from_wake.py
58
- examples/slicer/005d_moment_profile_from_wake_gpu.py
59
- test_data/HLLHC_wake.dat
60
- test_data/pyecloud_pinch/README.md
61
- test_data/pyecloud_pinch/eclouds.json
62
- test_data/pyecloud_pinch/refined_Pinch_MTI1.0_MLI1.0_DTO2.0_DLO1.0.h5
63
- test_data/pyecloud_pinch/Pinch_creation/.gitignore
64
- test_data/pyecloud_pinch/Pinch_creation/000_buildup.py
65
- test_data/pyecloud_pinch/Pinch_creation/001_pinch.py
66
- test_data/pyecloud_pinch/Pinch_creation/beam.beam
67
- test_data/pyecloud_pinch/Pinch_creation/filemanager.py
68
- test_data/pyecloud_pinch/Pinch_creation/machine_parameters.input
69
- test_data/pyecloud_pinch/Pinch_creation/secondary_emission_parameters.input
70
- test_data/pyecloud_pinch/Pinch_creation/simulation_parameters.input
71
- test_data/test_beamstrahlung/README.txt
72
- test_data/test_beamstrahlung/test_beamstrahlung_guineapig_ttbar2_beamstrahlung_photon_hist.txt
73
- tests/ibs_conftest.py
74
- tests/pytest_onebyone.sh
75
6
  tests/test_alpha_pi_setter.py
76
7
  tests/test_beambeam2d.py
77
8
  tests/test_beambeam3d_part1.py
xfields-0.23.0/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- *.DS_Store
2
- *.swp
3
- *.so
4
- *.pyc
5
- .project
6
- .pydevproject
7
- *.png
8
- norepository_*
9
- *~
10
- build
11
- CyFPPS.cpp
12
- *.egg-info
13
- .idea/**
@@ -1,16 +0,0 @@
1
- The following people contributed to the development of this package:
2
-
3
- CERN contributors:
4
- - H. Bartosik
5
- - X. Buffat
6
- - R. De Maria
7
- - L. Giacomel
8
- - G. Iadarola
9
- - P. Kicsiny
10
- - S. Lopaciuk
11
- - K. Paraschou
12
- - M. Schwinzerl
13
- - F. Soubelet
14
- - E. Waagaard
15
-
16
- The Particle In Cell implementation is largely based on the PyPIC package (https://github.com/pycomplete/pypic)
@@ -1 +0,0 @@
1
- picsphere.pkl
@@ -1,167 +0,0 @@
1
- # copyright ################################# #
2
- # This file is part of the Xfields Package. #
3
- # Copyright (c) CERN, 2021. #
4
- # ########################################### #
5
-
6
- import time
7
-
8
- import numpy as np
9
- from numpy.random import rand
10
- from scipy.constants import epsilon_0
11
- from numpy import pi
12
-
13
- from xobjects import ContextCpu, ContextCupy, ContextPyopencl
14
- from xfields import TriLinearInterpolatedFieldMap
15
-
16
- context = ContextCpu()
17
- context = ContextCupy(default_block_size=256)
18
- #context = ContextPyopencl()
19
-
20
- print(repr(context))
21
-
22
- import matplotlib.pyplot as plt
23
- plt.close('all')
24
-
25
- center_xyz = np.array([0.1, 0.2, -0.3])
26
- radius = .5
27
- n_part_cube = 10000000
28
-
29
- x_cube = radius*(2. * rand(n_part_cube) - 1.) + center_xyz[0]
30
- y_cube = radius*(2. * rand(n_part_cube) - 1.) + center_xyz[1]
31
- z_cube = radius*(2. * rand(n_part_cube) - 1.) + center_xyz[2]
32
-
33
- mask_sphere = ((x_cube - center_xyz[0])**2
34
- + (y_cube - center_xyz[1])**2
35
- + (z_cube - center_xyz[2])**2) < radius**2
36
- x = x_cube[mask_sphere]
37
- y = y_cube[mask_sphere]
38
- z = z_cube[mask_sphere]
39
- pweights = 1. + 0*x
40
-
41
-
42
- # PIC
43
- x_lim = (-1.1, 1.)
44
- y_lim = (-1.2, 1.)
45
- z_lim = (-1.3, 1.)
46
-
47
- nx = 128
48
- ny = 128
49
- nz = 200
50
-
51
- theta_test = 70. * np.pi/360
52
- phi_test = 300 * np.pi/360.
53
- r_test = 2.5*radius*np.linspace(-1, 1., 1000)
54
-
55
- x0_test = r_test * np.sin(theta_test) * np.cos(phi_test)
56
- y0_test = r_test * np.sin(theta_test) * np.sin(phi_test)
57
- z0_test = r_test * np.cos(theta_test)
58
-
59
- x_test = center_xyz[0] + x0_test
60
- y_test = center_xyz[1] + y0_test
61
- z_test = center_xyz[2] + z0_test
62
-
63
- # Moving particles and test coordinates to GPU (if needed)
64
- np2platf = context.nparray_to_context_array
65
- x_dev = np2platf(x)
66
- y_dev = np2platf(y)
67
- z_dev = np2platf(z)
68
- pweights_dev = np2platf(pweights)
69
- x_test_dev = np2platf(x_test)
70
- y_test_dev = np2platf(y_test)
71
- z_test_dev = np2platf(z_test)
72
-
73
- ###############
74
- # Actual test #
75
- ###############
76
-
77
- # Build fieldmap object
78
- fmap = TriLinearInterpolatedFieldMap(
79
- _context=context,
80
- x_range=x_lim, nx=nx,
81
- y_range=y_lim, ny=ny,
82
- z_range=z_lim, nz=nz,
83
- solver='FFTSolver3D')
84
-
85
-
86
- # Compute potential
87
- n_rep = 4
88
- for _ in range(n_rep):
89
- t1 = time.time()
90
- fmap.update_from_particles(x_p=x_dev, y_p=y_dev, z_p=z_dev,
91
- ncharges_p=pweights_dev, q0_coulomb=1.)
92
-
93
- # Check on the x axis
94
- (rho_test_dev, phi_test_dev, dx_test_dev, dy_test_dev,
95
- dz_test_dev) = fmap.get_values_at_points(
96
- x=x_test_dev, y=y_test_dev, z=z_test_dev)
97
- context.synchronize()
98
- t2 = time.time()
99
- print(f'Time: {t2-t1:.2e}')
100
-
101
- # Copy back for plotting
102
- platf2np = context.nparray_from_context_array
103
- rho_test = platf2np(rho_test_dev)
104
- phi_test = platf2np(phi_test_dev)
105
- dx_test = platf2np(dx_test_dev)
106
- dy_test = platf2np(dy_test_dev)
107
- dz_test = platf2np(dz_test_dev)
108
-
109
- # pickle for other tests
110
- import pickle
111
- # with open('picsphere.pkl', 'wb') as fid:
112
- # pickle.dump({
113
- # 'fmap': fmap,
114
- # 'x_test': x_test,
115
- # 'y_test': y_test,
116
- # 'z_test': z_test,
117
- # }, fid)
118
-
119
- ####################
120
- # Plots and checks #
121
- ####################
122
-
123
- ex_test = -dx_test
124
- ey_test = -dy_test
125
- ez_test = -dz_test
126
-
127
- plt.figure(100)
128
- plt.plot(r_test, rho_test)
129
- plt.axhline(y=len(x)/(4/3*np.pi*radius**3))
130
-
131
- plt.figure(101)
132
- plt.plot(r_test, phi_test)
133
-
134
- e_ref = len(x)/(4*pi*epsilon_0) * (
135
- r_test/radius**3*(np.abs(r_test)<radius)
136
- + np.sign(r_test)/r_test**2*(np.abs(r_test)>=radius))
137
- plt.figure(102)
138
- plt.plot(r_test, ex_test*x0_test/r_test
139
- + ey_test*y0_test/r_test + ez_test*z0_test/r_test)
140
- plt.plot(r_test, e_ref)
141
- plt.grid(True)
142
-
143
- # Check integral
144
- int_rho = np.sum(platf2np(fmap.rho))*fmap.dx*fmap.dy*fmap.dz
145
- assert np.isclose(int_rho, len(x))
146
-
147
-
148
- fig1 = plt.figure(1)
149
- ax1 = fig1.add_subplot(111)
150
- ax1.pcolormesh(fmap.x_grid, fmap.y_grid,
151
- np.sum(platf2np(fmap.rho), axis=2).T, shading='gouraud')
152
- ax1.set_aspect('equal')
153
- ax1.add_patch(plt.Circle((center_xyz[0], center_xyz[1]), radius,
154
- color='w', fill=False))
155
- ax1.set_xlabel('x')
156
- ax1.set_ylabel('y')
157
-
158
- fig2 = plt.figure(2)
159
- ax2 = fig2.add_subplot(111)
160
- ax2.pcolormesh(fmap.y_grid, fmap.z_grid,
161
- np.sum(platf2np(fmap.rho), axis=0).T, shading='gouraud')
162
- ax2.set_aspect('equal')
163
- ax2.add_patch(plt.Circle((center_xyz[1], center_xyz[2]), radius,
164
- color='w', fill=False))
165
- ax2.set_xlabel('y')
166
- ax2.set_ylabel('z')
167
- plt.show()
@@ -1,170 +0,0 @@
1
- # copyright ################################# #
2
- # This file is part of the Xfields Package. #
3
- # Copyright (c) CERN, 2021. #
4
- # ########################################### #
5
-
6
- import time
7
-
8
- import numpy as np
9
- from numpy.random import rand
10
- from scipy.constants import epsilon_0
11
- from numpy import pi
12
-
13
- from xobjects import ContextCpu, ContextCupy, ContextPyopencl
14
- from xfields import TriLinearInterpolatedFieldMap
15
-
16
- context = ContextCpu()
17
- #context = ContextCupy(default_block_size=256)
18
- #context = ContextPyopencl()
19
-
20
- print(repr(context))
21
-
22
- import matplotlib.pyplot as plt
23
- plt.close('all')
24
-
25
- center_xyz = np.array([0.1, 0.2, -0.3])
26
- radius = .5
27
- n_part_cube = 10000000
28
-
29
- x_cube = radius*(2. * rand(n_part_cube) - 1.) + center_xyz[0]
30
- y_cube = radius*(2. * rand(n_part_cube) - 1.) + center_xyz[1]
31
- z_cube = radius*(2. * rand(n_part_cube) - 1.) + center_xyz[2]
32
-
33
- mask_sphere = ((x_cube - center_xyz[0])**2
34
- + (y_cube - center_xyz[1])**2
35
- + (z_cube - center_xyz[2])**2) < radius**2
36
- x = x_cube[mask_sphere]
37
- y = y_cube[mask_sphere]
38
- z = z_cube[mask_sphere]
39
- pweights = 1. + 0*x
40
-
41
-
42
- # PIC
43
- x_lim = (-1.1, 1.)
44
- y_lim = (-1.2, 1.)
45
- z_lim = (-1.3, 1.)
46
-
47
- nx = 256
48
- ny = 256
49
- nz = 50
50
-
51
- theta_test = 70. * np.pi/360
52
- r_test = 2.5*radius*np.linspace(-1, 1., 1000)
53
- z_test = 0.4
54
-
55
- x0_test = r_test * np.cos(theta_test)
56
- y0_test = r_test * np.sin(theta_test)
57
- z0_test = z_test + 0*r_test
58
-
59
- x_test = center_xyz[0] + x0_test
60
- y_test = center_xyz[1] + y0_test
61
- z_test = center_xyz[2] + z0_test
62
-
63
- # Moving particles and test coordinates to GPU (if needed)
64
- np2platf = context.nparray_to_context_array
65
- x_dev = np2platf(x)
66
- y_dev = np2platf(y)
67
- z_dev = np2platf(z)
68
- pweights_dev = np2platf(pweights)
69
- x_test_dev = np2platf(x_test)
70
- y_test_dev = np2platf(y_test)
71
- z_test_dev = np2platf(z_test)
72
-
73
- ###############
74
- # Actual test #
75
- ###############
76
-
77
- # Build fieldmap object
78
- fmap = TriLinearInterpolatedFieldMap(
79
- _context=context,
80
- x_range=x_lim, nx=nx,
81
- y_range=y_lim, ny=ny, z_range=z_lim, nz=nz,
82
- solver='FFTSolver2p5D')
83
-
84
-
85
- # Compute potential
86
- n_rep = 10
87
- for _ in range(n_rep):
88
- t1 = time.time()
89
- fmap.update_from_particles(x_p=x_dev, y_p=y_dev, z_p=z_dev,
90
- ncharges_p=pweights_dev, q0_coulomb=1.)
91
-
92
- # Check on the x axis
93
- (rho_test_dev, phi_test_dev, dx_test_dev, dy_test_dev,
94
- dz_test_dev) = fmap.get_values_at_points(
95
- x=x_test_dev, y=y_test_dev, z=z_test_dev)
96
- context.synchronize()
97
- t2 = time.time()
98
- print(f'Time: {t2-t1:.2e}')
99
-
100
- # Copy back for plotting
101
- platf2np = context.nparray_from_context_array
102
- rho_test = platf2np(rho_test_dev)
103
- phi_test = platf2np(phi_test_dev)
104
- dx_test = platf2np(dx_test_dev)
105
- dy_test = platf2np(dy_test_dev)
106
- dz_test = platf2np(dz_test_dev)
107
-
108
- # pickle for other tests
109
- import pickle
110
- # with open('picsphere.pkl', 'wb') as fid:
111
- # pickle.dump({
112
- # 'fmap': fmap,
113
- # 'x_test': x_test,
114
- # 'y_test': y_test,
115
- # 'z_test': z_test,
116
- # }, fid)
117
-
118
- ####################
119
- # Plots and checks #
120
- ####################
121
-
122
- ex_test = -dx_test
123
- ey_test = -dy_test
124
- ez_test = -dz_test
125
-
126
- plt.figure(100)
127
- plt.plot(r_test, rho_test)
128
- plt.axhline(y=len(x)/(4/3*np.pi*radius**3))
129
-
130
- plt.figure(101)
131
- plt.plot(r_test, phi_test)
132
-
133
- assert z0_test[0]<radius
134
- r_loc = np.sqrt(radius**2 - z0_test[0]**2)
135
- rho_ref = len(x)/(4/3*pi*radius**3)
136
- lam_loc = rho_ref*pi*r_loc**2
137
- e_ref = rho_ref/(epsilon_0) * (
138
- r_test/2*(np.abs(r_test)<r_loc)
139
- + r_loc**2/r_test/2*(np.abs(r_test)>=r_loc))
140
- plt.figure(102)
141
- plt.plot(r_test, ex_test*x0_test/r_test
142
- + ey_test*y0_test/r_test)
143
- plt.plot(r_test, e_ref)
144
- plt.grid(True)
145
-
146
- # Check integral
147
- int_rho = np.sum(platf2np(fmap.rho))*fmap.dx*fmap.dy*fmap.dz
148
- assert np.isclose(int_rho, len(x))
149
-
150
-
151
- fig1 = plt.figure(1)
152
- ax1 = fig1.add_subplot(111)
153
- ax1.pcolormesh(fmap.x_grid, fmap.y_grid,
154
- np.sum(platf2np(fmap.rho), axis=2).T, shading='gouraud')
155
- ax1.set_aspect('equal')
156
- ax1.add_patch(plt.Circle((center_xyz[0], center_xyz[1]), radius,
157
- color='w', fill=False))
158
- ax1.set_xlabel('x')
159
- ax1.set_ylabel('y')
160
-
161
- fig2 = plt.figure(2)
162
- ax2 = fig2.add_subplot(111)
163
- ax2.pcolormesh(fmap.y_grid, fmap.z_grid,
164
- np.sum(platf2np(fmap.rho), axis=0).T, shading='gouraud')
165
- ax2.set_aspect('equal')
166
- ax2.add_patch(plt.Circle((center_xyz[1], center_xyz[2]), radius,
167
- color='w', fill=False))
168
- ax2.set_xlabel('y')
169
- ax2.set_ylabel('z')
170
- plt.show()